Re: BUG: GCC-4.4.x changes the function frame on some functions

From: Andrew Haley
Date: Fri Nov 20 2009 - 07:06:41 EST


Thomas Gleixner wrote:

> While testing various kernel configs we found out that the problem
> comes and goes. Finally I started to compare the gcc command line
> options and after some fiddling it turned out that the following
> minimal deltas change the code generator behaviour:
>
> Bad: -march=pentium-mmx -Wa,-mtune=generic32
> Good: -march=i686 -mtune=generic -Wa,-mtune=generic32
> Good: -march=pentium-mmx -mtune-generic -Wa,-mtune=generic32
>
> I'm not supposed to understand the logic behind that, right ?

I don't either. I'm seeing:

timer_stats_update_stats: timer_stats_update_stats:
pushl %edi <
leal 8(%esp), %edi <
andl $-16, %esp <
pushl -4(%edi) <
pushl %ebp pushl %ebp
movl %esp, %ebp movl %esp, %ebp
pushl %edi | andl $-16, %esp
pushl %esi | subl $112, %esp
pushl %ebx | movl %ebx, 100(%esp)
subl $108, %esp | movl %esi, 104(%esp)
> movl %edi, 108(%esp)
call mcount call mcount

where the only difference is -mtune=generic. I'm investigating.

Andrew.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/