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