[PATCH] [Sema] Don't permit dependent alignments on non-dependent typedef-names
Richard Smith
richard at metafoo.co.uk
Mon Apr 6 16:30:19 PDT 2015
================
Comment at: lib/Sema/SemaDeclAttr.cpp:2866
@@ -2865,1 +2865,3 @@
+ if (E->isTypeDependent() || E->isValueDependent()) {
+ if (const auto *TND = dyn_cast<TypedefNameDecl>(D)) {
----------------
The 'type dependent' check here is redundant.
================
Comment at: lib/Sema/SemaDeclAttr.cpp:2869
@@ +2868,3 @@
+ QualType T = TND->getUnderlyingType();
+ if (!T->isDependentType() && !T->isInstantiationDependentType()) {
+ S.Diag(Attr.getLoc(), diag::err_alignment_dependent_typedef_name)
----------------
I don't think you should check instantiation-dependence here. I think you should reject this, for instance:
template<int N> struct X {
typedef __attribute__((aligned(N))) int X[sizeof(N)];
};
http://reviews.llvm.org/D8693
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
More information about the cfe-commits
mailing list