simplify code by using Value::takeName
authorChris Lattner <sabre@nondot.org>
Sun, 11 Feb 2007 01:37:51 +0000 (01:37 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 11 Feb 2007 01:37:51 +0000 (01:37 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34177 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Utils/BasicBlockUtils.cpp
lib/Transforms/Utils/LowerInvoke.cpp
lib/Transforms/Utils/LowerSelect.cpp
lib/Transforms/Utils/SimplifyCFG.cpp

index 769d1b2d78e747cbe1592cb6c3db6ca75852b4a9..f9bcd39e41c55f4dff3bdb1a38cc2061b4884307 100644 (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);
 }
 
 
index 62eec75160a38ac2c5dfb586cbf41a7e446685a9..0da30e2428acdb893ace70a05d85f3087b9656e0 100644 (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);
   
index 5f9f593f9d154456dd1888560cc4997843b444b5..27e1866eaf074ea8911f1877c0670935ad138b37 100644 (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);
 
index c94c41b2169b1b52f40699656304ff9a55a33004..b3a9f1d744c76fca01e919167d35d8221f18908d 100644 (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;
   }