[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