aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGExprCXX.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/CodeGen/CGExprCXX.cpp')
-rw-r--r--lib/CodeGen/CGExprCXX.cpp26
1 files changed, 0 insertions, 26 deletions
diff --git a/lib/CodeGen/CGExprCXX.cpp b/lib/CodeGen/CGExprCXX.cpp
index 49aab66268..e3c6a8f978 100644
--- a/lib/CodeGen/CGExprCXX.cpp
+++ b/lib/CodeGen/CGExprCXX.cpp
@@ -798,36 +798,10 @@ static void EmitNewInitializer(CodeGenFunction &CGF, const CXXNewExpr *E,
RequiresZeroInitialization = true;
}
- // It's legal for NumElements to be zero, but
- // EmitCXXAggrConstructorCall doesn't handle that, so we need to.
- llvm::BranchInst *br = 0;
-
- // Optimize for a constant count.
- llvm::ConstantInt *constantCount
- = dyn_cast<llvm::ConstantInt>(NumElements);
- if (constantCount) {
- // Just skip out if the constant count is zero.
- if (constantCount->isZero()) return;
-
- // Otherwise, emit the check.
- } else {
- llvm::BasicBlock *loopBB = CGF.createBasicBlock("new.ctorloop");
- llvm::Value *iszero = CGF.Builder.CreateIsNull(NumElements, "isempty");
- br = CGF.Builder.CreateCondBr(iszero, loopBB, loopBB);
- CGF.EmitBlock(loopBB);
- }
-
CGF.EmitCXXAggrConstructorCall(Ctor, NumElements, NewPtr,
E->constructor_arg_begin(),
E->constructor_arg_end(),
RequiresZeroInitialization);
-
- // Patch the earlier check to skip over the loop.
- if (br) {
- assert(CGF.Builder.GetInsertBlock()->empty());
- br->setSuccessor(0, CGF.Builder.GetInsertBlock());
- }
-
return;
} else if (E->getNumConstructorArgs() == 1 &&
isa<ImplicitValueInitExpr>(E->getConstructorArg(0))) {