simplify code by using Value::takeName

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34177 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2007-02-11 01:37:51 +00:00
parent 6934a04a8c
commit 86cc423555
4 changed files with 26 additions and 32 deletions

View File

@ -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);
}

View File

@ -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<InvokeInst>(BB->getTerminator())) {
// Insert a normal call instruction...
std::string Name = II->getName(); II->setName("");
CallInst *NewCall = new CallInst(II->getCalledValue(),
std::vector<Value*>(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<Value*>(II->op_begin()+3,
II->op_end()), Name,
II->op_end()), "",
II);
NewCall->takeName(II);
NewCall->setCallingConv(II->getCallingConv());
II->replaceAllUsesWith(NewCall);

View File

@ -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);

View File

@ -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<PHINode>(&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;
}