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