From 507384f0074498b658cc1455dbb912dd95455512 Mon Sep 17 00:00:00 2001 From: John McCall Date: Thu, 12 Aug 2010 02:40:37 +0000 Subject: [PATCH] Bail out of MaybeBindToTemporary if the record type is invalid. Test case is 8.5MB, sorry. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110901 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaExprCXX.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Sema/SemaExprCXX.cpp b/lib/Sema/SemaExprCXX.cpp index 14f4cd10e7..5e43574e00 100644 --- a/lib/Sema/SemaExprCXX.cpp +++ b/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(RT->getDecl()); - if (RD->hasTrivialDestructor()) + if (RD->isInvalidDecl() || RD->hasTrivialDestructor()) return Owned(E); CXXTemporary *Temp = CXXTemporary::Create(Context, LookupDestructor(RD));