[cfe-commits] r60331 - /cfe/trunk/test/Sema/i-c-e3.c

Anders Carlsson andersca at mac.com
Mon Dec 1 22:10:52 PST 2008


1 dec 2008 kl. 21.41 skrev Eli Friedman:

> On Mon, Dec 1, 2008 at 9:25 PM, Anders Carlsson <andersca at mac.com>  
> wrote:
>>
>> 1 dec 2008 kl. 14.26 skrev Neil Booth:
>>
>>> Anders Carlsson wrote:-
>>>
>>>>
>>>> 1 dec 2008 kl. 04.33 skrev Eli Friedman:
>>>>
>>>>> On Sun, Nov 30, 2008 at 10:27 PM, Anders Carlsson <andersca at mac.com 
>>>>> >
>>>>> wrote:
>>>>>>
>>>>>> Author: andersca
>>>>>> Date: Mon Dec  1 00:27:38 2008
>>>>>> New Revision: 60331
>>>>>>
>>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=60331&view=rev
>>>>>> Log:
>>>>>> Fix test. (0 && (a(),1)) is a valid I-C-E according to C99.
>>>>>
>>>>> No, it isn't.  Note the requirement about operands; "a" is a  
>>>>> global,
>>>>> which isn't allowed.
>>>>>
>>>>
>>>> Ah, I see - I got ICEs and regular constant expressions mixed up.
>>>
>>> The 'a' is not permitted in a "regular constant expression" either.
>>
>> Hmm, why not?
>
> Well, "a" itself is a legal constant expression, but the expression as
> a whole isn't in one of the four forms allowed in C99 6.6p7.

You mean

"Constant expressions shall not contain assignment, increment,  
decrement, function-call,
or comma operators, except when they are contained within a  
subexpression that is not
evaluated"

Since (a(), 1) is not evaluated because of the 0 &&, it's allowed to  
have the function call and comma operator there, unless I'm missing  
something trivial :)

Anders

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2415 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20081201/f210eb68/attachment.bin>


More information about the cfe-commits mailing list