From bffed8a98cf5775cd39dc1765abc75c914513012 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Wed, 27 May 2009 16:38:58 +0000 Subject: [PATCH] Fix another test case. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72478 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaInit.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/Sema/SemaInit.cpp b/lib/Sema/SemaInit.cpp index 951aaa3bc0..5dc40a4593 100644 --- a/lib/Sema/SemaInit.cpp +++ b/lib/Sema/SemaInit.cpp @@ -156,6 +156,14 @@ bool Sema::CheckInitializerTypes(Expr *&Init, QualType &DeclType, // class of the destination, constructors are considered. if ((DeclTypeC.getUnqualifiedType() == InitTypeC.getUnqualifiedType()) || IsDerivedFrom(InitTypeC, DeclTypeC)) { + const CXXRecordDecl *RD = + cast(DeclType->getAsRecordType()->getDecl()); + + // No need to make a CXXConstructExpr if both the ctor and dtor are + // trivial. + if (RD->hasTrivialConstructor() && RD->hasTrivialDestructor()) + return false; + CXXConstructorDecl *Constructor = PerformInitializationByConstructor(DeclType, &Init, 1, InitLoc, Init->getSourceRange(), -- 2.40.0