diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-07-25 01:12:44 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-07-25 01:12:44 +0000 |
commit | fc291269d1683418613e7ef05d9f780733f5111c (patch) | |
tree | 569f539904f8b7564ef43b63ac9742cf3a8f845a /lib/Sema/SemaExprCXX.cpp | |
parent | fd8641ce34f7bf2e5ec9873aa9182ec70aa1f8c6 (diff) |
PR20445: Properly transform the initializer in a CXXNewExpr rather than running
it through the normal TreeTransform logic for Exprs (which will strip off
implicit parts of the initialization and never re-create them).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213913 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaExprCXX.cpp')
-rw-r--r-- | lib/Sema/SemaExprCXX.cpp | 11 |
1 files changed, 1 insertions, 10 deletions
diff --git a/lib/Sema/SemaExprCXX.cpp b/lib/Sema/SemaExprCXX.cpp index 2745a8cbe3..425297cdb3 100644 --- a/lib/Sema/SemaExprCXX.cpp +++ b/lib/Sema/SemaExprCXX.cpp @@ -1184,14 +1184,6 @@ Sema::BuildCXXNew(SourceRange Range, bool UseGlobal, NumInits = List->getNumExprs(); } - // Determine whether we've already built the initializer. - bool HaveCompleteInit = false; - if (Initializer && isa<CXXConstructExpr>(Initializer) && - !isa<CXXTemporaryObjectExpr>(Initializer)) - HaveCompleteInit = true; - else if (Initializer && isa<ImplicitValueInitExpr>(Initializer)) - HaveCompleteInit = true; - // C++11 [dcl.spec.auto]p6. Deduce the type which 'auto' stands in for. if (TypeMayContainAuto && AllocType->isUndeducedType()) { if (initStyle == CXXNewExpr::NoInit || NumInits == 0) @@ -1481,8 +1473,7 @@ Sema::BuildCXXNew(SourceRange Range, bool UseGlobal, // do it now. if (!AllocType->isDependentType() && !Expr::hasAnyTypeDependentArguments( - llvm::makeArrayRef(Inits, NumInits)) && - !HaveCompleteInit) { + llvm::makeArrayRef(Inits, NumInits))) { // C++11 [expr.new]p15: // A new-expression that creates an object of type T initializes that // object as follows: |