From: Eli Friedman Date: Fri, 27 Feb 2009 04:46:32 +0000 (+0000) Subject: Some additional ICE tests. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f04ec6774f88d3c0d486eba04803e34a9513037f;p=clang Some additional ICE tests. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65614 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/Sema/i-c-e.c b/test/Sema/i-c-e.c index 8fa840d465..d8770755a1 100644 --- a/test/Sema/i-c-e.c +++ b/test/Sema/i-c-e.c @@ -1,5 +1,8 @@ // RUN: clang %s -fsyntax-only -verify -pedantic -fpascal-strings +#include +#include + int a() {int p; *(1 ? &p : (void*)(0 && (a(),1))) = 10;} // rdar://6091492 - ?: with __builtin_constant_p as the operand is an i-c-e. @@ -46,3 +49,18 @@ int expr; char y[__builtin_constant_p(expr) ? -1 : 1]; char z[__builtin_constant_p(4) ? 1 : -1]; +// Comma tests +int comma1[0?1,2:3]; +int comma2[1||(1,2)]; +int comma3[(1,2)]; // expected-warning {{size of static array must be an integer constant expression}} + +// Pointer + __builtin_constant_p +char pbcp[__builtin_constant_p(4) ? (intptr_t)&expr : 0]; // expected-error {{variable length array declaration not allowed at file scope}} + +int illegaldiv1[1 || 1/0]; +int illegaldiv2[1/0]; // expected-error {{variable length array declaration not allowed at file scope}} +int illegaldiv3[INT_MIN / -1]; // expected-error {{variable length array declaration not allowed at file scope}} + +int chooseexpr[__builtin_choose_expr(1, 1, expr)]; // expected-warning {{extension used}} +int realop[(__real__ 4) == 4 ? 1 : -1]; // expected-warning {{extension used}} +int imagop[(__imag__ 4) == 0 ? 1 : -1]; // expected-warning {{extension used}}