------- Comment #3 from ebotcazou at gcc dot gnu dot org 2008-09-04 20:36 ------- In the assembly file:
.L871: movl %ebx, %eax movl %edx, 20(%ebx) call T.911 movl df, %esi movl 60(%esi), %eax movl %esi, 36(%esp) <-- save df movl (%eax), %eax movl %eax, 44(%esp) testl %eax, %eax je .L1052 [...] L895: movl 4(%ecx), %esi cmpb $0, 22(%esp) je .L896 movl 144(%edi), %eax movl (%eax,%esi,4), %eax movl 4(%eax), %edx movl (%edx), %eax testl %eax, %eax je .L896 movl 16(%esp), %ebp movl 8(%ebp), %ebp movl %ebp, 36(%esp) <-- overwrite df .p2align 4,,7 .p2align 3 .L897: movl 28(%eax), %eax addl $4, %edx incl (%ebp,%eax,4) movl (%edx), %eax testl %eax, %eax jne .L897 .L896: cmpb $0, 23(%esp) je .L898 movl 144(%edi), %eax movl (%eax,%esi,4), %eax movl 8(%eax), %edx movl (%edx), %eax testl %eax, %eax je .L898 movl 16(%esp), %ebp movl 8(%ebp), %ebp movl %ebp, 36(%esp) <-- overwrite df [...] .L995: movl 36(%esp), %ecx <-- load df movl 60(%ecx), %eax movl (%eax), %eax <-- segv (eax == 0) movl %eax, 60(%esp) testl %eax, %eax je .L1059 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377