------- Comment #13 from ubizjak at gmail dot com 2009-02-12 13:59 ------- GCC: (GNU) 4.4.0 20090129 (experimental) [trunk revision 143750]:
foo: movl 4(%rdi), %eax #, s .L2: movl %eax, %ecx # s, s.29 addl (%rsi), %ecx #* d, s.29 addq $4, %rsi #, d movl %eax, %r8d # s, s.30 cmpl %edx, %ecx # g, s movl %ecx, %eax # s.29, s jl .L2 #, movl %r8d, (%rdi) # s.30,* v ret GCC: (GNU) 4.3.4 20090211 (prerelease) [gcc-4_3-branch revision 144096]: foo: movl 4(%rdi), %ecx #, s .L2: movl %ecx, %eax # s, s.19 addl (%rsi), %eax #* d, s.19 addq $4, %rsi #, d movl %ecx, %r8d # s, s.20 cmpl %edx, %eax # g, s movl %eax, %ecx # s.19, s jl .L2 #, movl %r8d, (%rdi) # s.20,* v ret Fixed for 4.3 and 4.4 branch. -- ubizjak at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- Known to work|3.4.0 |3.4.0 4.3.4 4.4.0 Summary|[4.2/4.3/4.4 Regression] |[4.2 Regression] jump to |jump to middle of loop on |middle of loop on entry with |entry with using old version|using old version of an |of an variable |variable http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27986