summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaAttr.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-05-18 23:01:22 +0000
committerDouglas Gregor <dgregor@apple.com>2010-05-18 23:01:22 +0000
commitbdb604a80649754a8385b84f20744f1f0a890b03 (patch)
treea209ebcf5a9e773b3ea630e1cbb2cc39f30db292 /clang/lib/Sema/SemaAttr.cpp
parenta4eca0517472ea463af49ae313a6ede15255446a (diff)
downloadbcm5719-llvm-bdb604a80649754a8385b84f20744f1f0a890b03.tar.gz
bcm5719-llvm-bdb604a80649754a8385b84f20744f1f0a890b03.zip
Protect isIntegerConstantExpr from seeing type- or value-dependent
expressions in attributes, pragmas. llvm-svn: 104083
Diffstat (limited to 'clang/lib/Sema/SemaAttr.cpp')
-rw-r--r--clang/lib/Sema/SemaAttr.cpp4
1 files changed, 3 insertions, 1 deletions
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);
OpenPOWER on IntegriCloud