Douglas Gregor | 67ca40c | 2010-07-26 04:08:02 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -fsyntax-only -verify %s |
Chris Lattner | e66218b | 2006-08-12 17:19:28 +0000 | [diff] [blame] | 2 | |
3 | void test1() { | ||||
Douglas Gregor | 67ca40c | 2010-07-26 04:08:02 +0000 | [diff] [blame] | 4 | if (sizeof (int){ 1}) {} // sizeof compound literal |
5 | if (sizeof (int)) {} // sizeof type | ||||
Chris Lattner | e66218b | 2006-08-12 17:19:28 +0000 | [diff] [blame] | 6 | |
Douglas Gregor | 67ca40c | 2010-07-26 04:08:02 +0000 | [diff] [blame] | 7 | (void)(int)4; // cast. |
8 | (void)(int){4}; // compound literal. | ||||
Chris Lattner | e66218b | 2006-08-12 17:19:28 +0000 | [diff] [blame] | 9 | |
Douglas Gregor | 67ca40c | 2010-07-26 04:08:02 +0000 | [diff] [blame] | 10 | int A = (struct{ int a;}){ 1}.a; |
Chris Lattner | e66218b | 2006-08-12 17:19:28 +0000 | [diff] [blame] | 11 | } |
12 | |||||
13 | int test2(int a, int b) { | ||||
Douglas Gregor | 67ca40c | 2010-07-26 04:08:02 +0000 | [diff] [blame] | 14 | return a ? (void)a,b : a; |
Chris Lattner | e66218b | 2006-08-12 17:19:28 +0000 | [diff] [blame] | 15 | } |
16 | |||||
Chris Lattner | 2c5c421 | 2006-08-12 18:11:24 +0000 | [diff] [blame] | 17 | int test3(int a, int b, int c) { |
Chris Lattner | e66218b | 2006-08-12 17:19:28 +0000 | [diff] [blame] | 18 | return a = b = c; |
19 | } | ||||
Chris Lattner | 2c5c421 | 2006-08-12 18:11:24 +0000 | [diff] [blame] | 20 | |
21 | int test4() { | ||||
22 | test4(); | ||||
Douglas Gregor | 67ca40c | 2010-07-26 04:08:02 +0000 | [diff] [blame] | 23 | return 0; |
Chris Lattner | 2c5c421 | 2006-08-12 18:11:24 +0000 | [diff] [blame] | 24 | } |
Chris Lattner | 5b6032a | 2006-08-12 19:15:40 +0000 | [diff] [blame] | 25 | |
Douglas Gregor | 67ca40c | 2010-07-26 04:08:02 +0000 | [diff] [blame] | 26 | struct X0 { struct { struct { int c[10][9]; } b; } a; }; |
27 | |||||
Chris Lattner | 5b6032a | 2006-08-12 19:15:40 +0000 | [diff] [blame] | 28 | int test_offsetof() { |
Douglas Gregor | 67ca40c | 2010-07-26 04:08:02 +0000 | [diff] [blame] | 29 | (void)__builtin_offsetof(struct X0, a.b.c[4][5]); |
30 | return 0; | ||||
Chris Lattner | 5b6032a | 2006-08-12 19:15:40 +0000 | [diff] [blame] | 31 | } |
Chris Lattner | 47791a4 | 2007-11-13 20:50:37 +0000 | [diff] [blame] | 32 | |
33 | void test_sizeof(){ | ||||
34 | int arr[10]; | ||||
Douglas Gregor | 67ca40c | 2010-07-26 04:08:02 +0000 | [diff] [blame] | 35 | (void)sizeof arr[0]; |
36 | (void)sizeof(arr[0]); | ||||
37 | (void)sizeof(arr)[0]; | ||||
Chris Lattner | 47791a4 | 2007-11-13 20:50:37 +0000 | [diff] [blame] | 38 | } |
39 | |||||
Eli Friedman | eb3a9b0 | 2009-01-27 08:43:38 +0000 | [diff] [blame] | 40 | // PR3418 |
41 | int test_leading_extension() { | ||||
Abramo Bagnara | 932e393 | 2010-10-15 07:51:18 +0000 | [diff] [blame] | 42 | __extension__ (*(char*)0) = 1; // expected-warning {{indirection of non-volatile null pointer}} \ |
43 | // expected-note {{consider using __builtin_trap}} | ||||
Douglas Gregor | 67ca40c | 2010-07-26 04:08:02 +0000 | [diff] [blame] | 44 | return 0; |
Eli Friedman | eb3a9b0 | 2009-01-27 08:43:38 +0000 | [diff] [blame] | 45 | } |
Chris Lattner | 47791a4 | 2007-11-13 20:50:37 +0000 | [diff] [blame] | 46 | |
Chris Lattner | 0d6c061 | 2009-04-13 00:10:38 +0000 | [diff] [blame] | 47 | // PR3972 |
48 | int test5(int); | ||||
49 | int test6(void) { | ||||
50 | return test5( // expected-note {{to match}} | ||||
51 | test5(1) | ||||
52 | ; // expected-error {{expected ')'}} | ||||
53 | } |