------- Comment #13 from pinskia at gmail dot com 2007-06-26 21:59 ------- Subject: Re: [4.3 Regression] attribute always_inline -> sorry, unimplemented: recursive inlining
On 26 Jun 2007 21:55:34 -0000, rguenther at suse dot de <[EMAIL PROTECTED]> wrote: > I have a hard time deciding if 3.4 or 4.1 is better: > > 3.4: > > f: > pushl %ebp > movl %esp, %ebp > movl 8(%ebp), %edx > movzbl 12(%ebp), %eax > testl %edx, %edx > je .L2 > movb $1, %al > .L2: > movsbl %al,%eax <---- unconditional movsbl. > movl %eax, 8(%ebp) > popl %ebp > jmp g > > 4.1 (same as 4.2): > > f: > pushl %ebp > movl $1, %edx > movl %esp, %ebp > movl 8(%ebp), %ecx > movzbl 12(%ebp), %eax > testl %ecx, %ecx > je .L7 > movl %edx, 8(%ebp) > popl %ebp > jmp g > .p2align 4,,7 > .L7: > movsbl %al,%edx // <--- condtional movsbl > movl %edx, 8(%ebp) > popl %ebp > jmp g It is easier to see the diference between 3.4 and the trunk where we don't duplicate the tail call to g. Thanks, Andrew Pinski -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32492