gcc 3.3 / i386 / -O2 question

Steven Bosscher stevenb@suse.de
Wed Nov 17 12:17:00 GMT 2004

On Nov 17, 2004 12:13 PM, Luca Benini <lbenini@csr.unibo.it> wrote:

> Dave Korn wrote:
> >   Excuse me for butting in, but I don't understand what makes
> > anyone think this code _ought_ to produce the same results at
> > different -O levels[*].  The C
> > language spec is explicit that this is undefined behaviour.
> As every software that do data-processing you need it will
> reproduce the 
> same behavior with any not-altering-semantic-option.

Hah, but there you are.  Define "non-altering-semantic-option"
for something that according to the standard does not *have* 

> If the code is syntattical garbage ===> compiler don't compile it


> if the code is semantical garbage ===> same compiler must generate the 
> same output (in .s or in .o) ==> you must obtain the same result.

Wrong, IMHO.

Remember, "Undefined behavior" is not the same thing as "Unspecified
behavior".  In the latter case, perhaps you're right.  Unspecified
behavior should be consistent independent of the compiler options
(and this behavior should be documented).  But for undefined behavior
you shouldn't expect anything.


More information about the Gcc-help mailing list