linux-mips
[Top] [All Lists]

Re: [patch] Prevent dead code/data removal with gcc 3.4

To: David Daney <ddaney@avtrex.com>
Subject: Re: [patch] Prevent dead code/data removal with gcc 3.4
From: Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de>
Date: Fri, 13 Feb 2004 23:50:00 +0100
Cc: Ralf Baechle <ralf@linux-mips.org>, "Maciej W. Rozycki" <macro@ds2.pg.gda.pl>, linux-mips@linux-mips.org
In-reply-to: <402D513F.8080205@avtrex.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <Pine.LNX.4.55.0402131453360.15042@jurand.ds.pg.gda.pl> <20040213145316.GA23810@linux-mips.org> <20040213222253.GA20118@rembrandt.csv.ica.uni-stuttgart.de> <402D513F.8080205@avtrex.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.5.5.1i
David Daney wrote:
> Thiemo Seufer wrote:
> 
> >Ralf Baechle wrote:
> > 
> >
> >>On Fri, Feb 13, 2004 at 03:20:27PM +0100, Maciej W. Rozycki wrote:
> >>
> >>   
> >>
> >>>2. It changes inline-assembly function prologues to be embedded within 
> >>>the
> >>>functions, which makes them a bit safer as they can now explicitly refer
> >>>to the "regs" struct and assures the code won't be removed or reordered.
> >>>     
> >>>
> >>It is possible that gcc changes one of the registers before save_static
> >>and I can't imagine there's a reliable way to fix this in the inline
> >>version.
> >
> >As long as __asm__ __volatile__ works as documented, this can't happen.
> >
> My understanding is that with gcc-3.4 that __asm__ __volatile__ does not 
> protect against dead code removal.  If the code is not dead __volatile__ 
> works as documented, but dead code removal still happens.

The inline version isn't dead code, and gcc isn't allowed to reschedule
code around a __asm__ __volatile__, so the patch should be ok.


Thiemo

<Prev in Thread] Current Thread [Next in Thread>