On Mon, Apr 6, 2015 at 8:36 PM, Richard Smith <[email protected]> wrote: > On Mon, Apr 6, 2015 at 4:35 PM, Aaron Ballman <[email protected]> > wrote: >> >> On Mon, Apr 6, 2015 at 7:30 PM, Richard Smith <[email protected]> >> wrote: >> > ================ >> > 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)]; >> > }; >> > >> >> Out of curiosity, why do you think that should be rejected? > > > For the same reason we're rejecting anything here: we'd otherwise create a > non-dependent type that has a dependent alignment.
Huh, I guess I thought this type was dependent because of the sizeof(N) in the type. Thanks! ~Aaron _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
