From: Chris Lattner Date: Sun, 11 Feb 2007 01:37:51 +0000 (+0000) Subject: simplify code by using Value::takeName X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=86cc42355593dd1689f7d58d56695c451215b02b;p=oota-llvm.git simplify code by using Value::takeName git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34177 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Utils/BasicBlockUtils.cpp b/lib/Transforms/Utils/BasicBlockUtils.cpp index 769d1b2d78e..f9bcd39e41c 100644 --- a/lib/Transforms/Utils/BasicBlockUtils.cpp +++ b/lib/Transforms/Utils/BasicBlockUtils.cpp @@ -29,14 +29,12 @@ void llvm::ReplaceInstWithValue(BasicBlock::InstListType &BIL, // Replaces all of the uses of the instruction with uses of the value I.replaceAllUsesWith(V); - std::string OldName = I.getName(); + // Make sure to propagate a name if there is one already. + if (I.hasName() && !V->hasName()) + V->takeName(&I); // Delete the unnecessary instruction now... BI = BIL.erase(BI); - - // Make sure to propagate a name if there is one already. - if (!OldName.empty() && !V->hasName()) - V->setName(OldName); } diff --git a/lib/Transforms/Utils/LowerInvoke.cpp b/lib/Transforms/Utils/LowerInvoke.cpp index 62eec75160a..0da30e2428a 100644 --- a/lib/Transforms/Utils/LowerInvoke.cpp +++ b/lib/Transforms/Utils/LowerInvoke.cpp @@ -201,10 +201,10 @@ bool LowerInvoke::insertCheapEHSupport(Function &F) { for (Function::iterator BB = F.begin(), E = F.end(); BB != E; ++BB) if (InvokeInst *II = dyn_cast(BB->getTerminator())) { // Insert a normal call instruction... - std::string Name = II->getName(); II->setName(""); CallInst *NewCall = new CallInst(II->getCalledValue(), std::vector(II->op_begin()+3, - II->op_end()), Name, II); + II->op_end()), "", II); + NewCall->takeName(II); NewCall->setCallingConv(II->getCallingConv()); II->replaceAllUsesWith(NewCall); @@ -258,11 +258,11 @@ void LowerInvoke::rewriteExpensiveInvoke(InvokeInst *II, unsigned InvokeNo, CatchSwitch->addCase(InvokeNoC, II->getUnwindDest()); // Insert a normal call instruction. - std::string Name = II->getName(); II->setName(""); CallInst *NewCall = new CallInst(II->getCalledValue(), std::vector(II->op_begin()+3, - II->op_end()), Name, + II->op_end()), "", II); + NewCall->takeName(II); NewCall->setCallingConv(II->getCallingConv()); II->replaceAllUsesWith(NewCall); diff --git a/lib/Transforms/Utils/LowerSelect.cpp b/lib/Transforms/Utils/LowerSelect.cpp index 5f9f593f9d1..27e1866eaf0 100644 --- a/lib/Transforms/Utils/LowerSelect.cpp +++ b/lib/Transforms/Utils/LowerSelect.cpp @@ -85,8 +85,8 @@ bool LowerSelect::runOnFunction(Function &F) { new BranchInst(NewTrue, NewCont, SI->getCondition(), BB); // Create a new PHI node in the cont block with the entries we need. - std::string Name = SI->getName(); SI->setName(""); - PHINode *PN = new PHINode(SI->getType(), Name, NewCont->begin()); + PHINode *PN = new PHINode(SI->getType(), "", NewCont->begin()); + PN->takeName(SI); PN->addIncoming(SI->getTrueValue(), NewTrue); PN->addIncoming(SI->getFalseValue(), BB); diff --git a/lib/Transforms/Utils/SimplifyCFG.cpp b/lib/Transforms/Utils/SimplifyCFG.cpp index c94c41b2169..b3a9f1d744c 100644 --- a/lib/Transforms/Utils/SimplifyCFG.cpp +++ b/lib/Transforms/Utils/SimplifyCFG.cpp @@ -213,12 +213,9 @@ static bool TryToSimplifyUncondBranchFromEmptyBlock(BasicBlock *BB, } // Everything that jumped to BB now goes to Succ. - std::string OldName = BB->getName(); BB->replaceAllUsesWith(Succ); + if (!Succ->hasName()) Succ->takeName(BB); BB->eraseFromParent(); // Delete the old basic block. - - if (!OldName.empty() && !Succ->hasName()) // Transfer name if we can - Succ->setName(OldName); return true; } @@ -881,7 +878,7 @@ HoistTerminator: if (NT->getType() != Type::VoidTy) { I1->replaceAllUsesWith(NT); I2->replaceAllUsesWith(NT); - NT->setName(I1->getName()); + NT->takeName(I1); } // Hoisting one of the terminators from our successor is a great thing. @@ -1154,9 +1151,10 @@ static bool FoldTwoEntryPHINode(PHINode *PN) { Value *FalseVal = PN->getIncomingValue(PN->getIncomingBlock(0) == IfTrue); - std::string Name = PN->getName(); PN->setName(""); - PN->replaceAllUsesWith(new SelectInst(IfCond, TrueVal, FalseVal, - Name, AfterPHIIt)); + Value *NV = new SelectInst(IfCond, TrueVal, FalseVal, "", AfterPHIIt); + PN->replaceAllUsesWith(NV); + NV->takeName(PN); + BB->getInstList().erase(PN); } return true; @@ -1474,9 +1472,9 @@ bool llvm::SimplifyCFG(BasicBlock *BB) { // Clone Cond into the predecessor basic block, and or/and the // two conditions together. Instruction *New = Cond->clone(); - New->setName(Cond->getName()); - Cond->setName(Cond->getName()+".old"); PredBlock->getInstList().insert(PBI, New); + New->takeName(Cond); + Cond->setName(New->getName()+".old"); Instruction::BinaryOps Opcode = PBI->getSuccessor(0) == TrueDest ? Instruction::Or : Instruction::And; @@ -1800,28 +1798,26 @@ bool llvm::SimplifyCFG(BasicBlock *BB) { // while (PHINode *PN = dyn_cast(&BB->front())) { PN->replaceAllUsesWith(PN->getIncomingValue(0)); - BB->getInstList().pop_front(); // Delete the phi node... + BB->getInstList().pop_front(); // Delete the phi node. } - // Delete the unconditional branch from the predecessor... + // Delete the unconditional branch from the predecessor. OnlyPred->getInstList().pop_back(); - // Move all definitions in the successor to the predecessor... + // Move all definitions in the successor to the predecessor. OnlyPred->getInstList().splice(OnlyPred->end(), BB->getInstList()); // Make all PHI nodes that referred to BB now refer to Pred as their - // source... + // source. BB->replaceAllUsesWith(OnlyPred); - std::string OldName = BB->getName(); - - // Erase basic block from the function... + // Inherit predecessors name if it exists. + if (!OnlyPred->hasName()) + OnlyPred->takeName(BB); + + // Erase basic block from the function. M->getBasicBlockList().erase(BB); - // Inherit predecessors name if it exists... - if (!OldName.empty() && !OnlyPred->hasName()) - OnlyPred->setName(OldName); - return true; }