[PATCH] [Sema] Don't permit dependent alignments on non-dependent typedef-names
Aaron Ballman
aaron at aaronballman.com
Mon Apr 6 16:35:51 PDT 2015
On Mon, Apr 6, 2015 at 7:30 PM, Richard Smith <richard at metafoo.co.uk> 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?
~Aaron
> http://reviews.llvm.org/D8693
>
> EMAIL PREFERENCES
> http://reviews.llvm.org/settings/panel/emailpreferences/
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list