summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ExprConstant.cpp
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2011-12-17 02:24:21 +0000
committerEli Friedman <eli.friedman@gmail.com>2011-12-17 02:24:21 +0000
commit79281d1df95acaab053ea7ae50450173737e9e0c (patch)
tree04d73e07c7f419b040b7e4c0434f72bfd0f1a9ea /clang/lib/AST/ExprConstant.cpp
parent290fa41bf63cd2f06805224a435389e08098e76d (diff)
downloadbcm5719-llvm-79281d1df95acaab053ea7ae50450173737e9e0c.tar.gz
bcm5719-llvm-79281d1df95acaab053ea7ae50450173737e9e0c.zip
Add a missing check before trying to evaluate a temporary. PR11595.
llvm-svn: 146813
Diffstat (limited to 'clang/lib/AST/ExprConstant.cpp')
-rw-r--r--clang/lib/AST/ExprConstant.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/AST/ExprConstant.cpp b/clang/lib/AST/ExprConstant.cpp
index 31b211eff6c..0d32ebf1c67 100644
--- a/clang/lib/AST/ExprConstant.cpp
+++ b/clang/lib/AST/ExprConstant.cpp
@@ -2066,6 +2066,9 @@ public:
return false;
BaseTy = E->getBase()->getType()->getAs<PointerType>()->getPointeeType();
} else if (E->getBase()->isRValue()) {
+ if (!E->getBase()->getType()->isRecordType() ||
+ !E->getBase()->getType()->isLiteralType())
+ return false;
if (!EvaluateTemporary(E->getBase(), Result, this->Info))
return false;
BaseTy = E->getBase()->getType();
OpenPOWER on IntegriCloud