GCC warnings for unused global variables

Gabriel Dos Reis gdr@integrable-solutions.net
Fri May 2 16:39:00 GMT 2003


Fergus Henderson <fjh@cs.mu.OZ.AU> writes:

| On 02-May-2003, Gabriel Dos Reis <gdr@integrable-solutions.net> wrote:
| > prj@po.cwru.edu (Paul Jarc) writes:
| > 
| > | Gabriel Dos Reis <gdr@integrable-solutions.net> wrote:
| > | > Fergus Henderson <fjh@cs.mu.OZ.AU> writes:
| > | >| I don't think the committee ever intended to allow implementations
| > | >| to optimize away volatile variables,
| > | >
| > | > Why not?  The C standard clearly says:
| > | >
| > | >        [#3] In the abstract machine, all expressions are  evaluated
| > | >        as  specified  by  the  semantics.  An actual implementation
| > | >        need not evaluate part of an expression  if  it  can  deduce
| > | >        that  its  value is not used and that no needed side effects
| >                                                  ^^^^^^^^^
| > | >        are produced (including any caused by calling a function  or
| > | >        accessing a volatile object).
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

| > | 
| > | Accessing a volatile object includes writing, and writing includes
| > | initializing.  So the initialization cannot be optimized out.
| > 
| > Why? the last part of the paragraph quoted above does specifically
| > permit that optimization where applicable.
| 
| In the case of accesses to volatile objects, it is never applicable.

Even when the standard writes it?  Hugh. 

| I think you are misinterpreting the intent of the parenthetical
| phrase in the quote above.

I'm not misinterpretating.  And that the phrase is in parenthesis does
not diminush its value: It still is normative.

-- Gaby



More information about the Gcc mailing list