summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX/attr-declspec-ignored.cpp
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2011-12-17 00:36:09 +0000
committerEli Friedman <eli.friedman@gmail.com>2011-12-17 00:36:09 +0000
commite321795c60c58756a58da7fadb180747d1c9d632 (patch)
tree2812295c698ecf390a4417304ae20fa7eb3df844 /clang/test/SemaCXX/attr-declspec-ignored.cpp
parent0f79160bb739fbab6030fa0857a3e663d64e51eb (diff)
downloadbcm5719-llvm-e321795c60c58756a58da7fadb180747d1c9d632.tar.gz
bcm5719-llvm-e321795c60c58756a58da7fadb180747d1c9d632.zip
Remove a non-gcc-compatible extension that would apply attributes on declarations without a declarator to structs. Add a warning for ignored attributes. Patch by Michael Han.
llvm-svn: 146796
Diffstat (limited to 'clang/test/SemaCXX/attr-declspec-ignored.cpp')
-rw-r--r--clang/test/SemaCXX/attr-declspec-ignored.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/attr-declspec-ignored.cpp b/clang/test/SemaCXX/attr-declspec-ignored.cpp
new file mode 100644
index 00000000000..c6745c4e647
--- /dev/null
+++ b/clang/test/SemaCXX/attr-declspec-ignored.cpp
@@ -0,0 +1,19 @@
+// RUN: %clang_cc1 %s -verify -fsyntax-only
+
+namespace test1 {
+ __attribute__((visibility("hidden"))) __attribute__((aligned)) class A; // expected-warning{{attribute 'visibility' is ignored, place it after "class" to apply attribute to type declaration}} \
+ // expected-warning{{attribute 'aligned' is ignored, place it after "class" to apply attribute to type declaration}}
+ __attribute__((visibility("hidden"))) __attribute__((aligned)) struct B; // expected-warning{{attribute 'visibility' is ignored, place it after "struct" to apply attribute to type declaration}} \
+ // expected-warning{{attribute 'aligned' is ignored, place it after "struct" to apply attribute to type declaration}}
+ __attribute__((visibility("hidden"))) __attribute__((aligned)) union C; // expected-warning{{attribute 'visibility' is ignored, place it after "union" to apply attribute to type declaration}} \
+ // expected-warning{{attribute 'aligned' is ignored, place it after "union" to apply attribute to type declaration}}
+ __attribute__((visibility("hidden"))) __attribute__((aligned)) enum D {D}; // expected-warning{{attribute 'visibility' is ignored, place it after "enum" to apply attribute to type declaration}} \
+ // expected-warning{{attribute 'aligned' is ignored, place it after "enum" to apply attribute to type declaration}}
+}
+
+namespace test2 {
+ __attribute__((visibility("hidden"))) __attribute__((aligned)) class A {} a;
+ __attribute__((visibility("hidden"))) __attribute__((aligned)) struct B {} b;
+ __attribute__((visibility("hidden"))) __attribute__((aligned)) union C {} c;
+ __attribute__((visibility("hidden"))) __attribute__((aligned)) enum D {D} d;
+}
OpenPOWER on IntegriCloud