------- Comment #6 from rguenth at gcc dot gnu dot org 2006-03-07 10:39 ------- With -fno-ivopts -fno-tree-vrp tree-optimizers produce the same for both 4.1.0 and 4.2.0 until tree loop-invariant-motion, which does the wrong transformation because of bogus alias information:
<L11>:; # TMT.6_23 = PHI <TMT.6_24(3), TMT.6_25(5)>; # ptr_3 = PHI <&BF_current.P[0](3), ptr_9(5)>; # L_2 = PHI <0(3), L_14(5)>; <L7>:; ptr_9 = ptr_3 + 8B; # VUSE <BF_current_21>; D.1297_10 = BF_current.P[0]; L_11 = L_2 ^ D.1297_10; tmp4_12 = L_11 >> 24; # VUSE <BF_current_21>; D.1298_13 = BF_current.P[17]; L_14 = tmp4_12 ^ D.1298_13; D.1299_15 = ptr_9 - 8B; # TMT.6_25 = V_MAY_DEF <TMT.6_23>; *D.1299_15 = L_14; if (ptr_9 < &BF_current.P[18]) goto <L12>; else goto <L4>; the store to *D.1299_15 kills BF_current_21, which we don't notice. -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dberlin at gcc dot gnu dot | |org Component|rtl-optimization |tree-optimization Keywords| |alias http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26587