|  | // RUN: %clang_cc1 -fsyntax-only -verify %s -DNONE -Wno-gnu | 
|  | // RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s -DNONE -Wno-gnu | 
|  | // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s -DNONE -Wno-gnu | 
|  |  | 
|  | // RUN: %clang_cc1 -fsyntax-only -verify %s -DALL -Wgnu | 
|  | // RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s -DALL -Wgnu | 
|  | // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s -DALL -Wgnu | 
|  |  | 
|  | // RUN: %clang_cc1 -fsyntax-only -verify %s -DALL -Wno-gnu \ | 
|  | // RUN:   -Wgnu-anonymous-struct -Wredeclared-class-member \ | 
|  | // RUN:   -Wgnu-flexible-array-union-member -Wgnu-folding-constant \ | 
|  | // RUN:   -Wgnu-empty-struct | 
|  | // RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s -DALL -Wno-gnu \ | 
|  | // RUN:   -Wgnu-anonymous-struct -Wredeclared-class-member \ | 
|  | // RUN:   -Wgnu-flexible-array-union-member -Wgnu-folding-constant \ | 
|  | // RUN:   -Wgnu-empty-struct | 
|  | // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s -DALL -Wno-gnu \ | 
|  | // RUN:   -Wgnu-anonymous-struct -Wredeclared-class-member \ | 
|  | // RUN:   -Wgnu-flexible-array-union-member -Wgnu-folding-constant \ | 
|  | // RUN:   -Wgnu-empty-struct | 
|  |  | 
|  | // RUN: %clang_cc1 -fsyntax-only -verify %s -DNONE -Wgnu \ | 
|  | // RUN:   -Wno-gnu-anonymous-struct -Wno-redeclared-class-member \ | 
|  | // RUN:   -Wno-gnu-flexible-array-union-member -Wno-gnu-folding-constant \ | 
|  | // RUN:   -Wno-gnu-empty-struct | 
|  | // RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s -DNONE -Wgnu \ | 
|  | // RUN:   -Wno-gnu-anonymous-struct -Wno-redeclared-class-member \ | 
|  | // RUN:   -Wno-gnu-flexible-array-union-member -Wno-gnu-folding-constant \ | 
|  | // RUN:   -Wno-gnu-empty-struct | 
|  | // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s -DNONE -Wgnu \ | 
|  | // RUN:   -Wno-gnu-anonymous-struct -Wno-redeclared-class-member \ | 
|  | // RUN:   -Wno-gnu-flexible-array-union-member -Wno-gnu-folding-constant \ | 
|  | // RUN:   -Wno-gnu-empty-struct | 
|  |  | 
|  | // Additional disabled tests: | 
|  | // %clang_cc1 -fsyntax-only -verify %s -DANONYMOUSSTRUCT -Wno-gnu -Wgnu-anonymous-struct | 
|  | // %clang_cc1 -fsyntax-only -verify %s -DREDECLAREDCLASSMEMBER -Wno-gnu -Wredeclared-class-member | 
|  | // %clang_cc1 -fsyntax-only -verify %s -DFLEXIBLEARRAYUNIONMEMBER -Wno-gnu -Wgnu-flexible-array-union-member | 
|  | // %clang_cc1 -fsyntax-only -verify %s -DFOLDINGCONSTANT -Wno-gnu -Wgnu-folding-constant | 
|  | // %clang_cc1 -fsyntax-only -verify %s -DEMPTYSTRUCT -Wno-gnu -Wgnu-empty-struct | 
|  |  | 
|  | #if NONE | 
|  | // expected-no-diagnostics | 
|  | #endif | 
|  |  | 
|  |  | 
|  | #if ALL || ANONYMOUSSTRUCT | 
|  | // expected-warning@+5 {{anonymous structs are a GNU extension}} | 
|  | #endif | 
|  |  | 
|  | struct as { | 
|  | int x; | 
|  | struct { | 
|  | int a; | 
|  | float b; | 
|  | }; | 
|  | }; | 
|  |  | 
|  |  | 
|  | #if ALL || REDECLAREDCLASSMEMBER | 
|  | // expected-note@+6 {{previous declaration is here}} | 
|  | // expected-warning@+6 {{class member cannot be redeclared}} | 
|  | #endif | 
|  |  | 
|  | namespace rcm { | 
|  | class A { | 
|  | class X; | 
|  | class X; | 
|  | class X {}; | 
|  | }; | 
|  | } | 
|  |  | 
|  |  | 
|  | #if ALL || FLEXIBLEARRAYUNIONMEMBER | 
|  | // expected-warning@+6 {{flexible array member 'c1' in a union is a GNU extension}} | 
|  | #endif | 
|  |  | 
|  | struct faum { | 
|  | int l; | 
|  | union { | 
|  | int c1[]; | 
|  | }; | 
|  | }; | 
|  |  | 
|  |  | 
|  | #if (ALL || FOLDINGCONSTANT) && (__cplusplus <= 199711L) // C++03 or earlier modes | 
|  | // expected-warning@+4 {{in-class initializer for static data member is not a constant expression; folding it to a constant is a GNU extension}} | 
|  | #endif | 
|  |  | 
|  | struct fic { | 
|  | static const int B = int(0.75 * 1000 * 1000); | 
|  | }; | 
|  |  | 
|  |  | 
|  | #if ALL || EMPTYSTRUCT | 
|  | // expected-warning@+3 {{flexible array member 'a' in otherwise empty struct is a GNU extension}} | 
|  | #endif | 
|  |  | 
|  | struct ofam {int a[];}; | 
|  |  |