Skip the check whether ifconv is allowed, if both phi operands are identical.
authorChristoph Mallon <christoph.mallon@gmx.de>
Fri, 31 Aug 2012 08:28:56 +0000 (10:28 +0200)
committerChristoph Mallon <christoph.mallon@gmx.de>
Fri, 31 Aug 2012 08:36:24 +0000 (10:36 +0200)
In particular this allows ifconv when a PhiM is present, but nothing happens with the memory on the two paths.

ir/opt/ifconv.c

index c39e1a2..d56b723 100644 (file)
@@ -333,6 +333,8 @@ restart:
                                                mux_true  = get_Phi_pred(p, i);
                                                mux_false = get_Phi_pred(p, j);
                                        }
+                                       if (mux_true == mux_false)
+                                               continue;
                                        ir_mode *mode = get_irn_mode(mux_true);
                                        if (mode == mode_M
                                                || !env->allow_ifconv(sel, mux_false, mux_true)) {