------- Additional Comments From steven at gcc dot gnu dot org 2005-05-10 13:29 ------- Actually, GCC 4.0 has this problem also. GCC 3.3: foo: pushq %rbp movl $1, %ebp pushq %rbx movl $5, %ebx subq $8, %rsp .p2align 4,,7 .L6: movl %ebx, %edi incl %ebp addl $3, %ebx call bar cmpl $29, %ebp jbe .L6 addq $8, %rsp movl $89, %eax popq %rbx popq %rbp ret GCC 4.0: foo: pushq %rbx movl $5, %ebx jmp .L2 .p2align 4,,7 .L7: movl %eax, %ebx .L2: movl %ebx, %edi call bar leal 3(%rbx), %eax cmpl $92, %eax jne .L7 movl %ebx, %eax popq %rbx ret GCC CVS head as of today: foo: pushq %rbx movl $5, %ebx jmp .L2 .p2align 4,,7 .L7: movl %eax, %ebx .L2: movl %ebx, %edi call bar leal 3(%rbx), %eax cmpl $92, %eax jne .L7 movl %ebx, %eax popq %rbx ret
-- What |Removed |Added ---------------------------------------------------------------------------- Summary|[4.1 regression] Not copy |[4.0/4.1 regression] Not |propagating single-argument |copy propagating single- |PHIs causes out-of-ssa |argument PHIs causes out-of- |coalescing failure |ssa coalescing failure http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21488