So in effect the standard committee have chosen to allow any program which
invokes any undefined behavior to behave arbitrarily without diagnosis?

This is a good thing?

[ curiously can't find any actual reference stating that integer overflow
  is specifically results in undefined behavior, although it's obviously ill
  defined?

  although can find reference that a dereference of an overflowed pointer
  is undefined? ]


> From: "Joseph S. Myers" <[EMAIL PROTECTED]>
> On Sat, 18 Jun 2005, Paul Schlie wrote:
> 
>>        [#1] Behavior,  upon  use  of  a  nonportable  or  erroneous
>>        program  construct, of erroneous data, or of indeterminately
>>        valued  objects,  for  which  this  International   Standard
>>        imposes  no  requirements.   Permissible  undefined behavior
>>        ranges  from  ignoring   the   situation   completely   with
>>        unpredictable  results,  to  behaving  during translation or
>>        program execution in a documented manner  characteristic  of
>>        the   environment   (with  or  without  the  issuance  of  a
>>        diagnostic  message),  to  terminating  a   translation   or
>>        execution (with the issuance of a diagnostic message).
> 
> You appear to have chosen to misquote again.  In this case, you've taken
> the C90 version of the wording but with a paragraph number from C99 (C90
> did not have paragraph numbers).  Perhaps you cannot grasp the generality
> of "no requirements"?  A few examples are given, but "no requirements"
> means that the program can behave completely inconsistently if it involves
> undefined behavior.
> 
>>        [#3] The implementation must successfully translate a  given
>>        program  unless  a syntax error is detected, a constraint is
>>        violated, or it can determine that every possible  execution
>>        of that program would result in undefined behavior.
> 
> This looks like a completely fabricated quote to me.  If it comes from
> C99, state the subclause and paragraph numbers (in C99 as amended by TC1
> and TC2).  It certainly doesn't seem to be in the plain text version of
> C99+TC1.  In general, state where you are quoting rather than just
> claiming particular text you've just written is relevant.
> 
>> Which again is specific to that which is defined, as it requires the
>> successful (and presumably conformant) translation of the program unless
>> the implementation can prove the whole program is itself would have an
>> undefined behavior (reinforcing the notion that the language's semantics
>> remain in force even in the presence of a expression with undefined
>> semantics).
> 
> "no requirements" means that *any* translation conforms in the case of
> undefined behavior.  Only those executions not involving undefined
> behavior have any requirements.
> 
> -- 
> Joseph S. Myers               http://www.srcf.ucam.org/~jsm28/gcc/
>     [EMAIL PROTECTED] (personal mail)
>     [EMAIL PROTECTED] (CodeSourcery mail)
>     [EMAIL PROTECTED] (Bugzilla assignments and CCs)


Reply via email to