diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2011-12-17 02:24:21 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2011-12-17 02:24:21 +0000 |
commit | 79281d1df95acaab053ea7ae50450173737e9e0c (patch) | |
tree | 04d73e07c7f419b040b7e4c0434f72bfd0f1a9ea /clang/lib/AST/ExprConstant.cpp | |
parent | 290fa41bf63cd2f06805224a435389e08098e76d (diff) | |
download | bcm5719-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.cpp | 3 |
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(); |