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