xref: /llvm-project/clang/test/Sema/attr-declspec-ignored.c (revision 8c7b64b5ae2a09027c38db969a04fc9ddd0cd6bb)
1 // RUN: %clang_cc1 %s -verify -fsyntax-only
2 
3 __attribute__((visibility("hidden")))  __attribute__((aligned)) struct A; // expected-warning{{attribute 'visibility' is ignored, place it after "struct" to apply attribute to type declaration}} \
4 // expected-warning{{attribute 'aligned' is ignored, place it after "struct" to apply attribute to type declaration}}
5 __attribute__((visibility("hidden")))  __attribute__((aligned)) union B; // expected-warning{{attribute 'visibility' is ignored, place it after "union" to apply attribute to type declaration}} \
6 // expected-warning{{attribute 'aligned' is ignored, place it after "union" to apply attribute to type declaration}}
7 __attribute__((visibility("hidden")))  __attribute__((aligned)) enum C {C}; // expected-warning{{attribute 'visibility' is ignored, place it after "enum" to apply attribute to type declaration}} \
8 // expected-warning{{attribute 'aligned' is ignored, place it after "enum" to apply attribute to type declaration}}
9 
10 // Make sure that we produce the same warnings on block declarations.
func()11 void func() {
12   __attribute__((visibility("hidden")))  __attribute__((aligned)) struct A; // expected-warning{{attribute 'visibility' is ignored, place it after "struct" to apply attribute to type declaration}} \
13   // expected-warning{{attribute 'aligned' is ignored, place it after "struct" to apply attribute to type declaration}}
14   __attribute__((visibility("hidden")))  __attribute__((aligned)) union B; // expected-warning{{attribute 'visibility' is ignored, place it after "union" to apply attribute to type declaration}} \
15   // expected-warning{{attribute 'aligned' is ignored, place it after "union" to apply attribute to type declaration}}
16   __attribute__((visibility("hidden")))  __attribute__((aligned)) enum C {C}; // expected-warning{{attribute 'visibility' is ignored, place it after "enum" to apply attribute to type declaration}} \
17   // expected-warning{{attribute 'aligned' is ignored, place it after "enum" to apply attribute to type declaration}}
18 }
19 
20 __attribute__((visibility("hidden")))  __attribute__((aligned)) struct D {} d;
21 __attribute__((visibility("hidden")))  __attribute__((aligned)) union E {} e;
22 __attribute__((visibility("hidden")))  __attribute__((aligned)) enum F {F} f;
23