[LLVMdev] Is this a bug in clang?

Johannes Schaub (litb)
2011-04-20T18:16:12Z

Ahmed Charles wrote:

> Technically, it could've sent the mail before you even thought about
> writing it. Undefined is undefined, there are no requirements. From:
> Dustin Laurence
> Sent: Wednesday, April 20, 2011 6:50 AM
> To: llvmdev at cs.uiuc.edu
> Subject: Re: [LLVMdev] Is this a bug in clang?
> On 04/19/2011 10:50 PM, John Regehr wrote:
>
>> The compiler is perfectly within its rights to send a rude email to
your
>> department chair if you compile that code.
>
> Wouldn't it technically be only within its rights to compile code that
> sends the rude email when executed, but not send the email itself?  Or
> are the undefined results of compilation not confined to the contents of
> the executable file?
>

It's the evaluation of the expression "i++ + i++" that result in
undefined
behavior. If you merely compile a program that contains the expression, the
expression is never evaluated. You need to execute the program to have the
expression be evaluated and behavior be undefined.

For example, also, if you do `sizeof(i++ + i++)`, this behavior is perfectly
fine, and not undefined behavior. Because the `i++` is not evaluated.