Clean up code due to auto-insert constructors
authorChris Lattner <sabre@nondot.org>
Tue, 10 Sep 2002 22:38:47 +0000 (22:38 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 10 Sep 2002 22:38:47 +0000 (22:38 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3665 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/IPO/RaiseAllocations.cpp
lib/Transforms/Scalar/ADCE.cpp
lib/Transforms/Scalar/LICM.cpp
lib/Transforms/Scalar/PiNodeInsertion.cpp
lib/Transforms/Utils/LowerAllocations.cpp
lib/Transforms/Utils/PromoteMemoryToRegister.cpp

index 0f10dad3c417a146f3c8640939067b5462e8101a..cc4573586dcfde68e4fbdf6fffecc3532a0edf34 100644 (file)
@@ -108,7 +108,7 @@ bool RaiseAllocations::runOnBasicBlock(BasicBlock &BB) {
   bool Changed = false;
   BasicBlock::InstListType &BIL = BB.getInstList();
 
-  for (BasicBlock::iterator BI = BB.begin(); BI != BB.end();) {
+  for (BasicBlock::iterator BI = BB.begin(); BI != BB.end(); ++BI) {
     Instruction *I = BI;
 
     if (CallInst *CI = dyn_cast<CallInst>(I)) {
@@ -118,19 +118,14 @@ bool RaiseAllocations::runOnBasicBlock(BasicBlock &BB) {
         
         // If no prototype was provided for malloc, we may need to cast the
         // source size.
-        if (Source->getType() != Type::UIntTy) {
-          CastInst *New = new CastInst(Source, Type::UIntTy, "MallocAmtCast");
-          BI = ++BIL.insert(BI, New);
-          Source = New;
-        }
-
-        MallocInst *MallocI = new MallocInst(PtrSByte, Source, CI->getName());
-                                             
-        CI->setName("");
-        ReplaceInstWithInst(BIL, BI, MallocI);
+        if (Source->getType() != Type::UIntTy)
+          Source = new CastInst(Source, Type::UIntTy, "MallocAmtCast", BI);
+
+        std::string Name(CI->getName()); CI->setName("");
+        BI = new MallocInst(PtrSByte, Source, Name, BI);
+        BIL.erase(I);
         Changed = true;
         ++NumRaised;
-        continue;  // Skip the ++BI
       } else if (CI->getCalledValue() == FreeFunc) { // Replace call to free?
         // If no prototype was provided for free, we may need to cast the
         // source pointer.  This should be really uncommon, but it's neccesary
@@ -138,21 +133,15 @@ bool RaiseAllocations::runOnBasicBlock(BasicBlock &BB) {
         //   free((long)ptr);
         //
         Value *Source = CI->getOperand(1);
-        if (!isa<PointerType>(Source->getType())) {
-          CastInst *New = new CastInst(Source, PointerType::get(Type::SByteTy),
-                                       "FreePtrCast");
-          BI = ++BIL.insert(BI, New);
-          Source = New;
-        }
-
-        ReplaceInstWithInst(BIL, BI, new FreeInst(Source));
+        if (!isa<PointerType>(Source->getType()))
+          Source = new CastInst(Source, PointerType::get(Type::SByteTy),
+                                "FreePtrCast", BI);
+        BI = new FreeInst(Source, BI);
+        BIL.erase(I);
         Changed = true;
-        continue;  // Skip the ++BI
         ++NumRaised;
       }
     }
-
-    ++BI;
   }
 
   return Changed;
index 15b71fdf55ff7310aab707c3d195ab8339f302bd..3aca4a2d4cd6362feda04f0688cd2918c12cf634 100644 (file)
@@ -240,7 +240,7 @@ bool ADCE::doADCE() {
     //
     if (!AliveBlocks.count(&Func->front())) {
       BasicBlock *NewEntry = new BasicBlock();
-      NewEntry->getInstList().push_back(new BranchInst(&Func->front()));
+      new BranchInst(&Func->front(), NewEntry->end());
       Func->getBasicBlockList().push_front(NewEntry);
       AliveBlocks.insert(NewEntry);    // This block is always alive!
     }
@@ -353,9 +353,8 @@ bool ADCE::doADCE() {
         // Delete the old terminator instruction...
         BB->getInstList().pop_back();
         const Type *RetTy = Func->getReturnType();
-        Instruction *New = new ReturnInst(RetTy != Type::VoidTy ?
-                                          Constant::getNullValue(RetTy) : 0);
-        BB->getInstList().push_back(New);
+        new ReturnInst(RetTy != Type::VoidTy ? Constant::getNullValue(RetTy) :0,
+                       BB->end());
       }
 
       BB->dropAllReferences();
index 37333db1115d30023e7259cc9d84d3a54f7cdd08..7bae9fd18a5a5b7ff8167f3f3b521c3d5cf8e7b6 100644 (file)
@@ -241,10 +241,8 @@ void LICM::hoist(Instruction &Inst) {
     // No loop pre-header, insert a PHI node into header to capture all of the
     // incoming versions of the value.
     //
-    PHINode *LoopVal = new PHINode(Inst.getType(), InstName+".phi");
-
-    // Insert the new PHI node into the loop header...
-    Header->getInstList().push_front(LoopVal);
+    PHINode *LoopVal = new PHINode(Inst.getType(), InstName+".phi",
+                                   Header->begin());
 
     // Insert cloned versions of the instruction into all of the loop preds.
     for (unsigned i = 0, e = LoopPreds.size(); i != e; ++i) {
index bf0119f2f3c359984eaf66d67d41064d639de800..940b56fd29b8100b8ec3795984066f66d6e950f1 100644 (file)
@@ -148,13 +148,8 @@ bool PiNodeInserter::insertPiNodeFor(Value *V, BasicBlock *Succ, Value *Rep) {
     
   // Create the Pi node...
   Value *Pi = Rep;
-  if (Rep == 0) {
-    PHINode *Phi = new PHINode(V->getType(), V->getName() + ".pi");
-    
-    // Insert the Pi node in the successor basic block...
-    Succ->getInstList().push_front(Phi);
-    Pi = Phi;
-  }
+  if (Rep == 0)      // Insert the Pi node in the successor basic block...
+    Pi = new PHINode(V->getType(), V->getName() + ".pi", Succ->begin());
     
   // Loop over all of the uses of V, replacing ones that the Pi node
   // dominates with references to the Pi node itself.
index bdb4f9c491d9a763221e663804d24dcd86dfc092..001028eb21ae60918389219d301d4eac3126bcde 100644 (file)
@@ -87,8 +87,6 @@ bool LowerAllocations::runOnBasicBlock(BasicBlock &BB) {
   // Loop over all of the instructions, looking for malloc or free instructions
   for (BasicBlock::iterator I = BB.begin(), E = BB.end(); I != E; ++I) {
     if (MallocInst *MI = dyn_cast<MallocInst>(&*I)) {
-      BBIL.remove(I);   // remove the malloc instr...
-
       const Type *AllocTy = MI->getType()->getElementType();
       
       // Get the number of bytes to be allocated for one element of the
@@ -101,39 +99,32 @@ bool LowerAllocations::runOnBasicBlock(BasicBlock &BB) {
         MallocArg = MI->getOperand(0);         // Operand * 1 = Operand
       } else if (MI->getNumOperands()) {
         // Multiply it by the array size if neccesary...
-        MallocArg = BinaryOperator::create(Instruction::Mul,MI->getOperand(0),
-                                           MallocArg);
-        I = ++BBIL.insert(I, cast<Instruction>(MallocArg));
+        MallocArg = BinaryOperator::create(Instruction::Mul, MI->getOperand(0),
+                                           MallocArg, "", I);
       }
       
       // Create the call to Malloc...
       CallInst *MCall = new CallInst(MallocFunc,
-                                     vector<Value*>(1, MallocArg));
-      I = BBIL.insert(I, MCall);
+                                     vector<Value*>(1, MallocArg), "", I);
       
       // Create a cast instruction to convert to the right type...
-      CastInst *MCast = new CastInst(MCall, MI->getType());
-      I = BBIL.insert(++I, MCast);
+      CastInst *MCast = new CastInst(MCall, MI->getType(), "", I);
       
       // Replace all uses of the old malloc inst with the cast inst
       MI->replaceAllUsesWith(MCast);
-      delete MI;                          // Delete the malloc inst
+      I = --BBIL.erase(I);         // remove and delete the malloc instr...
       Changed = true;
       ++NumLowered;
     } else if (FreeInst *FI = dyn_cast<FreeInst>(&*I)) {
-      BBIL.remove(I);
-      
       // Cast the argument to free into a ubyte*...
       CastInst *MCast = new CastInst(FI->getOperand(0), 
-                                     PointerType::get(Type::UByteTy));
-      I = ++BBIL.insert(I, MCast);
+                                     PointerType::get(Type::UByteTy), "", I);
       
       // Insert a call to the free function...
-      CallInst *FCall = new CallInst(FreeFunc, vector<Value*>(1, MCast));
-      I = BBIL.insert(I, FCall);
+      CallInst *FCall = new CallInst(FreeFunc, vector<Value*>(1, MCast), "", I);
       
       // Delete the old free instruction
-      delete FI;
+      I = --BBIL.erase(I);
       Changed = true;
       ++NumLowered;
     }
index 5fcab9703523eaf55de06a20263ecf269bd52301..b84f1a378fa2970409e05a66e87ced6e050f01d7 100644 (file)
@@ -196,14 +196,12 @@ bool PromotePass::QueuePhiNode(BasicBlock *BB, unsigned AllocaNo) {
   // If the BB already has a phi node added for the i'th alloca then we're done!
   if (BBPNs[AllocaNo]) return false;
 
-  // Create a PhiNode using the dereferenced type...
+  // Create a PhiNode using the dereferenced type... and add the phi-node to the
+  // BasicBlock
   PHINode *PN = new PHINode(Allocas[AllocaNo]->getAllocatedType(),
-                            Allocas[AllocaNo]->getName()+".mem2reg");
+                            Allocas[AllocaNo]->getName()+".mem2reg",
+                            BB->begin());
   BBPNs[AllocaNo] = PN;
-
-  // Add the phi-node to the basic-block
-  BB->getInstList().push_front(PN);
-
   PhiNodes[AllocaNo].push_back(BB);
   return true;
 }