15f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// RUN: %clang_cc1 -fsyntax-only -verify %s -DNONE -Wno-gnu 25f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// RUN: %clang_cc1 -fsyntax-only -verify %s -DALL -Wgnu 35f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// RUN: %clang_cc1 -fsyntax-only -verify %s -DALL -Wno-gnu \ 45f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// RUN: -Wgnu-anonymous-struct -Wredeclared-class-member \ 55f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// RUN: -Wgnu-flexible-array-union-member -Wgnu-folding-constant \ 65f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// RUN: -Wgnu-empty-struct 75f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// RUN: %clang_cc1 -fsyntax-only -verify %s -DNONE -Wgnu \ 85f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// RUN: -Wno-gnu-anonymous-struct -Wno-redeclared-class-member \ 95f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// RUN: -Wno-gnu-flexible-array-union-member -Wno-gnu-folding-constant \ 105f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// RUN: -Wno-gnu-empty-struct 115f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// Additional disabled tests: 125f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// %clang_cc1 -fsyntax-only -verify %s -DANONYMOUSSTRUCT -Wno-gnu -Wgnu-anonymous-struct 135f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// %clang_cc1 -fsyntax-only -verify %s -DREDECLAREDCLASSMEMBER -Wno-gnu -Wredeclared-class-member 145f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// %clang_cc1 -fsyntax-only -verify %s -DFLEXIBLEARRAYUNIONMEMBER -Wno-gnu -Wgnu-flexible-array-union-member 155f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// %clang_cc1 -fsyntax-only -verify %s -DFOLDINGCONSTANT -Wno-gnu -Wgnu-folding-constant 165f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// %clang_cc1 -fsyntax-only -verify %s -DEMPTYSTRUCT -Wno-gnu -Wgnu-empty-struct 175f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman 185f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman#if NONE 195f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// expected-no-diagnostics 205f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman#endif 215f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman 225f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman 235f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman#if ALL || ANONYMOUSSTRUCT 245f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// expected-warning@+5 {{anonymous structs are a GNU extension}} 255f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman#endif 265f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman 275f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedmanstruct as { 285f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman int x; 295f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman struct { 305f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman int a; 315f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman float b; 325f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman }; 335f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman}; 345f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman 355f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman 365f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman#if ALL || REDECLAREDCLASSMEMBER 375f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// expected-note@+6 {{previous declaration is here}} 385f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// expected-warning@+6 {{class member cannot be redeclared}} 395f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman#endif 405f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman 415f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedmannamespace rcm { 425f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman class A { 435f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman class X; 445f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman class X; 455f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman class X {}; 465f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman }; 475f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman} 485f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman 495f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman 505f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman#if ALL || FLEXIBLEARRAYUNIONMEMBER 515f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// expected-warning@+6 {{flexible array member 'c1' in a union is a GNU extension}} 525f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman#endif 535f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman 545f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedmanstruct faum { 555f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman int l; 565f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman union { 575f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman int c1[]; 585f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman }; 595f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman}; 605f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman 615f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman 625f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman#if ALL || FOLDINGCONSTANT 635f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// expected-warning@+4 {{in-class initializer for static data member is not a constant expression; folding it to a constant is a GNU extension}} 645f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman#endif 655f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman 665f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedmanstruct fic { 675f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman static const int B = int(0.75 * 1000 * 1000); 685f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman}; 695f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman 705f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman 715f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman#if ALL || EMPTYSTRUCT 725f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman// expected-warning@+3 {{flexible array member 'a' in otherwise empty struct is a GNU extension}} 735f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman#endif 745f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman 755f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedmanstruct ofam {int a[];}; 765f33c37f8fe476602d9a1cc968060f6113ec8aaaEli Friedman 77