From: John McCall Date: Thu, 12 Aug 2010 02:40:37 +0000 (+0000) Subject: Bail out of MaybeBindToTemporary if the record type is invalid. Test case X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=507384f0074498b658cc1455dbb912dd95455512;p=clang 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 --- 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));