This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: basic VRP min/max range overflow question



On Jun 17, 2005, at 5:59 PM, Paul Schlie wrote:


From: Andrew Pinski <pinskia@physics.uc.edu>
On Jun 17, 2005, at 8:20 PM, Paul Schlie wrote:

["undefined" only provides liberties within the constrains of what
is specifically specified as being undefined, but none beyond that.]

That is not true. Undefined means it can run "rm /" if you ever invoke
the undefined code.

- If the semantics of an operation are "undefined", I'd agree; but if control is returned to the program, the program's remaining specified semantics must be correspondingly obeyed, including the those which may utilize the resulting value of the "undefined" operation.

- If the result value is "undefined", just the value is undefined.

(Unless one advocates that any undefined result implies undefined semantics,
which enables anything to occur, including the arbitrary corruption of
the remaining program's otherwise well defined semantics; in which case any
invocation of implementation specific behavior may then validly result in
arbitrary remaining program behavior.)


Which I'd hope isn't advocated.

You are wrong, and this really isn't a matter of opinion. The standard defines exactly
what it means by "undefined behavior":


3.4.3 1 undefined behavior
behavior, upon use of a nonportable or erroneous program construct or of erroneous data,
for which this International Standard imposes no requirements
2 NOTE Possible 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).



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]