1 // RUN: %clang_cc1 -fsyntax-only -verify %s -DNONE -Wno-gnu 2 // RUN: %clang_cc1 -fsyntax-only -verify %s -DALL -Wgnu 3 // RUN: %clang_cc1 -fsyntax-only -verify %s -DALL -Wno-gnu \ 4 // RUN: -Wgnu-anonymous-struct -Wredeclared-class-member \ 5 // RUN: -Wgnu-flexible-array-union-member -Wgnu-folding-constant \ 6 // RUN: -Wgnu-empty-struct 7 // RUN: %clang_cc1 -fsyntax-only -verify %s -DNONE -Wgnu \ 8 // RUN: -Wno-gnu-anonymous-struct -Wno-redeclared-class-member \ 9 // RUN: -Wno-gnu-flexible-array-union-member -Wno-gnu-folding-constant \ 10 // RUN: -Wno-gnu-empty-struct 11 // Additional disabled tests: 12 // %clang_cc1 -fsyntax-only -verify %s -DANONYMOUSSTRUCT -Wno-gnu -Wgnu-anonymous-struct 13 // %clang_cc1 -fsyntax-only -verify %s -DREDECLAREDCLASSMEMBER -Wno-gnu -Wredeclared-class-member 14 // %clang_cc1 -fsyntax-only -verify %s -DFLEXIBLEARRAYUNIONMEMBER -Wno-gnu -Wgnu-flexible-array-union-member 15 // %clang_cc1 -fsyntax-only -verify %s -DFOLDINGCONSTANT -Wno-gnu -Wgnu-folding-constant 16 // %clang_cc1 -fsyntax-only -verify %s -DEMPTYSTRUCT -Wno-gnu -Wgnu-empty-struct 17 18 #if NONE 19 // expected-no-diagnostics 20 #endif 21 22 23 #if ALL || ANONYMOUSSTRUCT 24 // expected-warning@+5 {{anonymous structs are a GNU extension}} 25 #endif 26 27 struct as { 28 int x; 29 struct { 30 int a; 31 float b; 32 }; 33 }; 34 35 36 #if ALL || REDECLAREDCLASSMEMBER 37 // expected-note@+6 {{previous declaration is here}} 38 // expected-warning@+6 {{class member cannot be redeclared}} 39 #endif 40 41 namespace rcm { 42 class A { 43 class X; 44 class X; 45 class X {}; 46 }; 47 } 48 49 50 #if ALL || FLEXIBLEARRAYUNIONMEMBER 51 // expected-warning@+6 {{flexible array member 'c1' in a union is a GNU extension}} 52 #endif 53 54 struct faum { 55 int l; 56 union { 57 int c1[]; 58 }; 59 }; 60 61 62 #if ALL || FOLDINGCONSTANT 63 // expected-warning@+4 {{in-class initializer for static data member is not a constant expression; folding it to a constant is a GNU extension}} 64 #endif 65 66 struct fic { 67 static const int B = int(0.75 * 1000 * 1000); 68 }; 69 70 71 #if ALL || EMPTYSTRUCT 72 // expected-warning@+3 {{flexible array member 'a' in otherwise empty struct is a GNU extension}} 73 #endif 74 75 struct ofam {int a[];}; 76 77