This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: GCC warnings for unused global variables
- From: Richard Henderson <rth at redhat dot com>
- To: Kean Johnston <jkj at sco dot com>
- Cc: "'Gabriel Dos Reis'" <gdr at integrable-solutions dot net>, "'Fergus Henderson'" <fjh at cs dot mu dot OZ dot AU>, "'Geoff Keating'" <geoffk at geoffk dot org>, jbuck at synopsys dot com, espie at quatramaran dot ens dot fr, gcc at gcc dot gnu dot org
- Date: Fri, 2 May 2003 13:08:55 -0700
- Subject: Re: GCC warnings for unused global variables
- References: <m3fznxl66l.fsf@uniton.integrable-solutions.net> <008e01c310c0$ead022a0$03419384@shrike>
On Fri, May 02, 2003 at 08:38:44AM -0700, Kean Johnston wrote:
> I don't know if such code exists, but it wouldn't surprise me terribly
> if some smart bloke somewhere has organised, through link editor
> trickery or other object-file manipulation, that code like:
>
> static volatile int foo;
>
> void doit (void)
> {
> foo = 1;
> foo = 2;
> }
>
> actually orchestrates that because the symbol is marked as volatile,
> whether static or not, that it is mapped to some I/O port or special
> memory location or any number of possible things, and that the mere act
> of assigning a value to it writes data to the port.
I suppose it's not impossible, however, that it's one of the
least straightforward ways to accomplish this. If I were going
to have the link-editor place foo on some I/O port, then I'd
declare it "extern", not "static".
> I belive that THAT
> kind of trickery was the intent behind volatile.
We'll have to disagree then. No one's come up with anything
convincing so far.
r~