From bdb604a80649754a8385b84f20744f1f0a890b03 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Tue, 18 May 2010 23:01:22 +0000 Subject: Protect isIntegerConstantExpr from seeing type- or value-dependent expressions in attributes, pragmas. llvm-svn: 104083 --- clang/lib/Sema/SemaAttr.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'clang/lib/Sema/SemaAttr.cpp') diff --git a/clang/lib/Sema/SemaAttr.cpp b/clang/lib/Sema/SemaAttr.cpp index 095f537f710..dc7815fa643 100644 --- a/clang/lib/Sema/SemaAttr.cpp +++ b/clang/lib/Sema/SemaAttr.cpp @@ -106,7 +106,9 @@ void Sema::ActOnPragmaPack(PragmaPackKind Kind, IdentifierInfo *Name, // pack(0) is like pack(), which just works out since that is what // we use 0 for in PackAttr. - if (!Alignment->isIntegerConstantExpr(Val, Context) || + if (Alignment->isTypeDependent() || + Alignment->isValueDependent() || + !Alignment->isIntegerConstantExpr(Val, Context) || !(Val == 0 || Val.isPowerOf2()) || Val.getZExtValue() > 16) { Diag(PragmaLoc, diag::warn_pragma_pack_invalid_alignment); -- cgit v1.2.3