------- Additional Comments From pinskia at gcc dot gnu dot org 2004-11-20 17:56 ------- Hmm, this is 3.4 and 4.0 Regression, 3.3.3 produced: flow_bb_inside_loop_p: pushl %ebp movl %esp, %ebp movl 8(%ebp), %ecx pushl %ebx movl 12(%ebp), %eax xorl %ebx, %ebx cmpl %eax, %ecx je .L5 movl (%ecx), %edx cmpl %edx, (%eax) jle .L4 movl 4(%eax), %eax cmpl %ecx, (%eax,%edx,4) je .L5 .p2align 4,,15 .L4: movl %ebx, %eax popl %ebx popl %ebp ret .p2align 4,,7 .L5: movl $1, %ebx jmp .L4
But 4.0 and 3.4.0 produces: flow_bb_inside_loop_p: pushl %ebp movl %esp, %ebp subl $8, %esp movl %esi, 4(%esp) movl 8(%ebp), %ecx xorl %esi, %esi movl %ebx, (%esp) movl 12(%ebp), %eax cmpl %eax, %ecx je .L3 movl (%ecx), %edx xorl %ebx, %ebx cmpl %edx, (%eax) jle .L5 movl 4(%eax), %eax cmpl %ecx, (%eax,%edx,4) je .L7 .L5: testb %bl, %bl je .L2 .L3: movl $1, %esi .L2: movl %esi, %eax movl (%esp), %ebx movl 4(%esp), %esi movl %ebp, %esp popl %ebp ret .L7: movl $1, %ebx jmp .L5 -- What |Removed |Added ---------------------------------------------------------------------------- Severity|enhancement |minor Known to fail| |3.4.0 4.0.0 Known to work| |3.3.3 Summary|missing jump threading |[3.4/4.0 Regression] missing |because of type changes |jump threading because of | |type changes Target Milestone|--- |3.4.4 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18576