Re: [new-ra] GCC-3.3.2/x86: some suspicious behaviour

Paul Brook <[email protected]> Thu, 8 Jul 2004 17:52:57 +0100
Newsgroups org.kernel.vger.linux-gcc
Message-ID <[email protected]>
On Thursday 08 July 2004 17:31, Denis Zaitsev wrote:
> On Thu, Jul 08, 2004 at 04:46:33PM +0200, Michael Matz wrote:
> > Hi,
> >
> > On Thu, 8 Jul 2004, Denis Zaitsev wrote:
> > > So, what does these two commands mean:
> > >
> > >
> > > 	movl	%ecx, 16(%esp)
> > > 	movl	%esi, 20(%esp)
> >
> > It means that the compiler wasn't able to optimize them away.  They do no
> > harm.  FWIW gcc 3.4 or the new-regalloc-branch don't have this problem.
>
> They don't harm.  But to optimize _what_?  So, what is the initial
> meaning of these assignments?  And why they appear only for the double
> asm statement?

They're storing the modified values of s and d back into their stack slots 
after the first asm. The compiler wasn't able to determine that these were 
dead stores.

Remove the "extern inline" and compile with -O0. This will show you 
approximately what the code looks like before optimization.

Paul