summaryrefslogtreecommitdiffstats
path: root/clang/test/Parser/cxx-attributes.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2013-10-24 01:07:54 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2013-10-24 01:07:54 +0000
commit66e7168f8da55c7e250a0db5b9f2789ffa76b171 (patch)
tree76184918972f0e598840b363eb8a14d7c8df4441 /clang/test/Parser/cxx-attributes.cpp
parent66605d40a74aa26664050d41f900c37ad5fbbfe9 (diff)
downloadbcm5719-llvm-66e7168f8da55c7e250a0db5b9f2789ffa76b171.tar.gz
bcm5719-llvm-66e7168f8da55c7e250a0db5b9f2789ffa76b171.zip
PR17666: Instead of allowing an initial identifier argument in any attribute
which we don't think can't have one, only allow it in the tiny number of attributes which opts into this weird parse rule. I've manually checked that the handlers for all these attributes can in fact cope with an identifier as the argument. This is still somewhat terrible; we should move more fully towards picking the parsing rules based on the attribute, and make the Parse -> Sema interface more type-safe. llvm-svn: 193295
Diffstat (limited to 'clang/test/Parser/cxx-attributes.cpp')
-rw-r--r--clang/test/Parser/cxx-attributes.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/test/Parser/cxx-attributes.cpp b/clang/test/Parser/cxx-attributes.cpp
index 97380521f87..3c99ccdb3a7 100644
--- a/clang/test/Parser/cxx-attributes.cpp
+++ b/clang/test/Parser/cxx-attributes.cpp
@@ -11,3 +11,9 @@ template <typename T> class X {
template <typename S> void X<S>::f() __attribute__((locks_excluded())); // expected-error{{nested name specifier 'X<S>::' for declaration does not refer into a class, class template or class template partial specialization}} \
// expected-warning{{attribute locks_excluded ignored, because it is not attached to a declaration}}
};
+
+namespace PR17666 {
+ const int A = 1;
+ typedef int __attribute__((__aligned__(A))) T1;
+ int check1[__alignof__(T1) == 1 ? 1 : -1];
+}
OpenPOWER on IntegriCloud