http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47892
--- Comment #4 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-02-25 10:31:49 UTC --- Ok, we vectorize on trunk only if I only make the PIO6 float. Otherwise if-conversion does not handle (even with -fno-tree-pre) if (or_10 > 5.2359879016876220703125e-1) goto <bb 5>; else goto <bb 6>; <bb 5>: orig_14 = or_10 * 3.333333432674407958984375e-1; sqr_15 = __builtin_powf (orig_14, 2.0e+0); D.2699_19 = sqr_15 * 2.742018523349543102085590362548828125e-6; D.2700_20 = D.2699_19 + -1.98410343728028237819671630859375e-4; D.2701_21 = D.2700_20 * sqr_15; D.2702_22 = D.2701_21 + 8.333332836627960205078125e-3; D.2703_23 = D.2702_22 * sqr_15; D.2704_24 = D.2703_23 + -1.6666667163372039794921875e-1; D.2705_25 = D.2704_24 * sqr_15; D.2706_26 = D.2705_25 + 1.0e+0; D.2707_27 = D.2706_26 * orig_14; <bb 6>: # iftmp.1_3 = PHI <1.0e+0(5), 0.0(4)> # D.2707_59 = PHI <D.2707_27(5), 0.0(4)> D.2713_41 = __builtin_powf (D.2707_59, 2.0e+0); D.2714_42 = D.2713_41 * 4.0e+0; D.2715_43 = 2.0e+0 - D.2714_42; D.2716_44 = D.2715_43 * iftmp.1_3; I think if-conversion does not handle multiple PHIs in the merge block at all.