linux-mips
[Top] [All Lists]

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

To: Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de>
Subject: Re: [patch] Prevent dead code/data removal with gcc 3.4
From: David Daney <ddaney@avtrex.com>
Date: Fri, 13 Feb 2004 14:35:43 -0800
Cc: Ralf Baechle <ralf@linux-mips.org>, "Maciej W. Rozycki" <macro@ds2.pg.gda.pl>, linux-mips@linux-mips.org
In-reply-to: <20040213222253.GA20118@rembrandt.csv.ica.uni-stuttgart.de>
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>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4.1) Gecko/20031030
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.

David Daney.


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