From 6be56729a8a2a97e2a62e4567bc6a21efb8ba53d Mon Sep 17 00:00:00 2001 From: Jay Foad Date: Wed, 30 Mar 2011 11:19:06 +0000 Subject: [PATCH] (Almost) always call reserveOperandSpace() on newly created PHINodes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128534 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/CGBuiltin.cpp | 1 + lib/CodeGen/CGObjC.cpp | 2 ++ lib/CodeGen/CGObjCGNU.cpp | 4 ++++ 3 files changed, 7 insertions(+) diff --git a/lib/CodeGen/CGBuiltin.cpp b/lib/CodeGen/CGBuiltin.cpp index e6b6ee92c0..c998372d99 100644 --- a/lib/CodeGen/CGBuiltin.cpp +++ b/lib/CodeGen/CGBuiltin.cpp @@ -475,6 +475,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD, PHINode *Result = Builder.CreatePHI(ConvertType(E->getArg(0)->getType()), "fpclassify_result"); + Result->reserveOperandSpace(4); // if (V==0) return FP_ZERO Builder.SetInsertPoint(Begin); diff --git a/lib/CodeGen/CGObjC.cpp b/lib/CodeGen/CGObjC.cpp index dcdd81d1f8..386fd95593 100644 --- a/lib/CodeGen/CGObjC.cpp +++ b/lib/CodeGen/CGObjC.cpp @@ -831,10 +831,12 @@ void CodeGenFunction::EmitObjCForCollectionStmt(const ObjCForCollectionStmt &S){ // The current index into the buffer. llvm::PHINode *index = Builder.CreatePHI(UnsignedLongLTy, "forcoll.index"); + index->reserveOperandSpace(3); index->addIncoming(zero, LoopInitBB); // The current buffer size. llvm::PHINode *count = Builder.CreatePHI(UnsignedLongLTy, "forcoll.count"); + count->reserveOperandSpace(3); count->addIncoming(initialBufferLimit, LoopInitBB); // Check whether the mutations value has changed from where it was diff --git a/lib/CodeGen/CGObjCGNU.cpp b/lib/CodeGen/CGObjCGNU.cpp index bea6f3a94c..8611c5f910 100644 --- a/lib/CodeGen/CGObjCGNU.cpp +++ b/lib/CodeGen/CGObjCGNU.cpp @@ -1145,6 +1145,7 @@ CGObjCGNU::GenerateMessageSend(CodeGenFunction &CGF, if (msgRet.isScalar()) { llvm::Value *v = msgRet.getScalarVal(); llvm::PHINode *phi = Builder.CreatePHI(v->getType()); + phi->reserveOperandSpace(2); phi->addIncoming(v, messageBB); phi->addIncoming(llvm::Constant::getNullValue(v->getType()), startBB); msgRet = RValue::get(phi); @@ -1156,16 +1157,19 @@ CGObjCGNU::GenerateMessageSend(CodeGenFunction &CGF, CGF.CreateTempAlloca(RetTy->getElementType(), "null"); CGF.InitTempAlloca(NullVal, llvm::Constant::getNullValue(RetTy->getElementType())); + phi->reserveOperandSpace(2); phi->addIncoming(v, messageBB); phi->addIncoming(NullVal, startBB); msgRet = RValue::getAggregate(phi); } else /* isComplex() */ { std::pair v = msgRet.getComplexVal(); llvm::PHINode *phi = Builder.CreatePHI(v.first->getType()); + phi->reserveOperandSpace(2); phi->addIncoming(v.first, messageBB); phi->addIncoming(llvm::Constant::getNullValue(v.first->getType()), startBB); llvm::PHINode *phi2 = Builder.CreatePHI(v.second->getType()); + phi2->reserveOperandSpace(2); phi2->addIncoming(v.second, messageBB); phi2->addIncoming(llvm::Constant::getNullValue(v.second->getType()), startBB); -- 2.50.1