------- Comment #2 from pinskia at gcc dot gnu dot org 2006-09-03 07:18 ------- Confirmed, Out of SSA should have created split the variable's range so that the conflicting parts are not changed inside the loop. before Out of SSA: # s_2 = PHI <s_5(0), s_9(1)>; # d_1 = PHI <d_6(0), d_10(1)>; <L0>:; D.1287_8 = MEM[base: d_1]; s_9 = s_2 + D.1287_8; d_10 = d_1 + 4B; if (s_9 < g_11) goto <L0>; else goto <L1>;
# s_7 = PHI <s_2(1)>; <L1>:; *v_3 = s_7; We should have changed s_7 into s.1 and added a move inside the loop before s_2 gets clobbered. I don't know the way of fixing out of SSA though. -- pinskia at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|minor |normal Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Known to fail| |4.0.0 4.1.0 4.2.0 Known to work| |3.4.0 Last reconfirmed|0000-00-00 00:00:00 |2006-09-03 07:18:51 date| | Summary|jump to middle of loop on |[4.0/4.1/4.2 Regression] |entry with using old version|jump to middle of loop on |of an variable |entry with using old version | |of an variable Target Milestone|--- |4.0.4 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27986