| // RUN: clang-cc -parse-noop -verify %s |
| |
| void test1() { |
| if (sizeof (int){ 1}); // sizeof compound literal |
| if (sizeof (int)); // sizeof type |
| |
| (int)4; // cast. |
| (int){4}; // compound literal. |
| |
| // FIXME: change this to the struct version when we can. |
| //int A = (struct{ int a;}){ 1}.a; |
| int A = (int){ 1}.a; |
| } |
| |
| int test2(int a, int b) { |
| return a ? a,b : a; |
| } |
| |
| int test3(int a, int b, int c) { |
| return a = b = c; |
| } |
| |
| int test4() { |
| test4(); |
| } |
| |
| int test_offsetof() { |
| // FIXME: change into something that is semantically correct. |
| __builtin_offsetof(int, a.b.c[4][5]); |
| } |
| |
| void test_sizeof(){ |
| int arr[10]; |
| sizeof arr[0]; |
| sizeof(arr[0]); |
| sizeof(arr)[0]; |
| } |
| |
| // PR3418 |
| int test_leading_extension() { |
| __extension__ (*(char*)0) = 1; |
| } |
| |
| // PR3972 |
| int test5(int); |
| int test6(void) { |
| return test5( // expected-note {{to match}} |
| test5(1) |
| ; // expected-error {{expected ')'}} |
| } |