diff options
author | John McCall <rjmccall@apple.com> | 2011-07-13 07:37:11 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2011-07-13 07:37:11 +0000 |
commit | dd376cae98ce4d0ab92c90d3e9c01ee19e919f44 (patch) | |
tree | 7770885667c74b97acb92201b35d12ab1c661c5f /lib/CodeGen/CGExprCXX.cpp | |
parent | 862ff87c0d306af8dfdbe7ac59f181a5815546e5 (diff) |
Arrays are permitted to be zero-length in some situations.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135036 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGExprCXX.cpp')
-rw-r--r-- | lib/CodeGen/CGExprCXX.cpp | 26 |
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))) { |