General note, please, this list is for developers of gcc to develop gcc. Using it as a way to teach yourself how to read the C standard, isn't ok, please stop.

On Saturday, June 18, 2005, at 07:15  AM, Paul Schlie wrote:
Maybe I didn't phrase my statement well;

I think you did, you are just wrong. Please quote the sentence that says the the program behaves in accordance with 5.1.2.3, if you can find none, then, trivially, there is no such requirement. If you can find it, you can quote it. Failure to find it, means either, you didn't look hard enough, or there is none.

Here, let me try again, in a slightly different way:

--If a program contains no violations of the rules in this Interna- tional Standard, a conforming implementation shall, within its
    resource limits, accept and correctly execute2) that program.

--If a program contains a violation of a rule for which no diagnostic is required, this International Standard places no requirement on
    implementations with respect to that program.

1.4.12 undefined behavior [defns.undefined] behavior, such as might arise upon use of an erroneous program con- struct or of erroneous data, for which the Standard imposes no requirements. Undefined behavior may also be expected when the stan- dard omits the description of any explicit definition of behavior.

Read it slowly, carefully, then instead of replying, go ask 100 programmers not on this list what they think the words mean, listen to them. Come back here and summarize, if the result is different from what we represent.

I fully agree with the cited paragraph above which specifically says a program containing unspecified behavior "shall be a correct program and act in accordance with 5.1.2.3". Which specifies program execution, in terms of an abstract machine model, which correspondingly requires:

I love it, you quote 5.1.2.3, but that section has no relevance to the program, if you can't find something that gives it relevance. Go back and try again.

Therefore regardless of the result of an "undefined" result/ operation at it's enclosing sequence point, the remaining program must continue to abide
by the specified semantics of the language.

Nope. You have failed to grasp that `can do anything' actually means can do anything. If the standard mean to say that all preceding semantics must be observable, the standard would say that, if you can find where it says that all observable semantics are required in all sequence points before the one containing the undefined behavior, then, maybe that standard doesn't say that.

Reply via email to