summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2010-08-12 02:40:37 +0000
committerJohn McCall <rjmccall@apple.com>2010-08-12 02:40:37 +0000
commitbdb989eca4dcf1e50dc5b151b861b7dcd4684390 (patch)
tree6b507486477c02150b536c96e3a5d516fc2f6312 /clang/lib
parent398dc37d1f52788b2cd9835bd2e51458d579045d (diff)
downloadbcm5719-llvm-bdb989eca4dcf1e50dc5b151b861b7dcd4684390.tar.gz
bcm5719-llvm-bdb989eca4dcf1e50dc5b151b861b7dcd4684390.zip
Bail out of MaybeBindToTemporary if the record type is invalid. Test case
is 8.5MB, sorry. llvm-svn: 110901
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Sema/SemaExprCXX.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp
index 14f4cd10e7f..5e43574e009 100644
--- a/clang/lib/Sema/SemaExprCXX.cpp
+++ b/clang/lib/Sema/SemaExprCXX.cpp
@@ -2619,7 +2619,7 @@ Sema::OwningExprResult Sema::MaybeBindToTemporary(Expr *E) {
// That should be enough to guarantee that this type is complete.
// If it has a trivial destructor, we can avoid the extra copy.
CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl());
- if (RD->hasTrivialDestructor())
+ if (RD->isInvalidDecl() || RD->hasTrivialDestructor())
return Owned(E);
CXXTemporary *Temp = CXXTemporary::Create(Context, LookupDestructor(RD));
OpenPOWER on IntegriCloud