Remove usage of MachineBasicBlock::get
authorChris Lattner <sabre@nondot.org>
Mon, 28 Oct 2002 19:01:16 +0000 (19:01 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 28 Oct 2002 19:01:16 +0000 (19:01 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4342 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/InstrSelection/InstrSelection.cpp
lib/Target/SparcV9/InstrSelection/InstrSelection.cpp

index 677bef7d04ad14741819d5fcdae80f1a810379f1..a2e9bb642e4eb585e45da8752cd391a2d5f5b0cc 100644 (file)
@@ -176,9 +176,9 @@ InstructionSelection::InsertCodeForPhis(Function &F)
 {
   // for all basic blocks in function
   //
-  for (Function::iterator BB = F.begin(); BB != F.end(); ++BB) {
-    BasicBlock::InstListType &InstList = BB->getInstList();
-    for (BasicBlock::iterator IIt = InstList.begin();
+  MachineFunction &MF = MachineFunction::get(&F);
+  for (MachineFunction::iterator BB = MF.begin(); BB != MF.end(); ++BB) {
+    for (BasicBlock::iterator IIt = BB->getBasicBlock()->begin();
          PHINode *PN = dyn_cast<PHINode>(&*IIt); ++IIt) {
       // FIXME: This is probably wrong...
       Value *PhiCpRes = new PHINode(PN->getType(), "PhiCp:");
@@ -208,11 +208,7 @@ InstructionSelection::InsertCodeForPhis(Function &F)
       
       vector<MachineInstr*> mvec;
       Target.getRegInfo().cpValue2Value(PhiCpRes, PN, mvec);
-      
-      // get an iterator to machine instructions in the BB
-      MachineBasicBlock& bbMvec = MachineBasicBlock::get(BB);
-      
-      bbMvec.insert(bbMvec.begin(), mvec.begin(), mvec.end());
+      BB->insert(BB->begin(), mvec.begin(), mvec.end());
     }  // for each Phi Instr in BB
   } // for all BBs in function
 }
@@ -229,21 +225,29 @@ InstructionSelection::InsertPhiElimInstructions(BasicBlock *BB,
   Instruction *TermInst = (Instruction*)BB->getTerminator();
   MachineCodeForInstruction &MC4Term = MachineCodeForInstruction::get(TermInst);
   MachineInstr *FirstMIOfTerm = MC4Term.front();
-  
   assert (FirstMIOfTerm && "No Machine Instrs for terminator");
-  
-  MachineBasicBlock &bbMvec = MachineBasicBlock::get(BB);
+
+  MachineFunction &MF = MachineFunction::get(BB->getParent());
+  MachineBasicBlock *MBB;
+
+  // FIXME: if PHI instructions existed in the machine code, this would be
+  // unnecesary.
+  for (MachineFunction::iterator I = MF.begin(), E = MF.end(); I != E; ++I)
+    if (I->getBasicBlock() == BB) {
+      MBB = I;
+      break;
+    }
 
   // find the position of first machine instruction generated by the
   // terminator of this BB
   MachineBasicBlock::iterator MCIt =
-    std::find(bbMvec.begin(), bbMvec.end(), FirstMIOfTerm);
+    std::find(MBB->begin(), MBB->end(), FirstMIOfTerm);
 
-  assert( MCIt != bbMvec.end() && "Start inst of terminator not found");
+  assert(MCIt != MBB->end() && "Start inst of terminator not found");
   
   // insert the copy instructions just before the first machine instruction
   // generated for the terminator
-  bbMvec.insert(MCIt, CpVec.begin(), CpVec.end());
+  MBB->insert(MCIt, CpVec.begin(), CpVec.end());
 }
 
 
index 677bef7d04ad14741819d5fcdae80f1a810379f1..a2e9bb642e4eb585e45da8752cd391a2d5f5b0cc 100644 (file)
@@ -176,9 +176,9 @@ InstructionSelection::InsertCodeForPhis(Function &F)
 {
   // for all basic blocks in function
   //
-  for (Function::iterator BB = F.begin(); BB != F.end(); ++BB) {
-    BasicBlock::InstListType &InstList = BB->getInstList();
-    for (BasicBlock::iterator IIt = InstList.begin();
+  MachineFunction &MF = MachineFunction::get(&F);
+  for (MachineFunction::iterator BB = MF.begin(); BB != MF.end(); ++BB) {
+    for (BasicBlock::iterator IIt = BB->getBasicBlock()->begin();
          PHINode *PN = dyn_cast<PHINode>(&*IIt); ++IIt) {
       // FIXME: This is probably wrong...
       Value *PhiCpRes = new PHINode(PN->getType(), "PhiCp:");
@@ -208,11 +208,7 @@ InstructionSelection::InsertCodeForPhis(Function &F)
       
       vector<MachineInstr*> mvec;
       Target.getRegInfo().cpValue2Value(PhiCpRes, PN, mvec);
-      
-      // get an iterator to machine instructions in the BB
-      MachineBasicBlock& bbMvec = MachineBasicBlock::get(BB);
-      
-      bbMvec.insert(bbMvec.begin(), mvec.begin(), mvec.end());
+      BB->insert(BB->begin(), mvec.begin(), mvec.end());
     }  // for each Phi Instr in BB
   } // for all BBs in function
 }
@@ -229,21 +225,29 @@ InstructionSelection::InsertPhiElimInstructions(BasicBlock *BB,
   Instruction *TermInst = (Instruction*)BB->getTerminator();
   MachineCodeForInstruction &MC4Term = MachineCodeForInstruction::get(TermInst);
   MachineInstr *FirstMIOfTerm = MC4Term.front();
-  
   assert (FirstMIOfTerm && "No Machine Instrs for terminator");
-  
-  MachineBasicBlock &bbMvec = MachineBasicBlock::get(BB);
+
+  MachineFunction &MF = MachineFunction::get(BB->getParent());
+  MachineBasicBlock *MBB;
+
+  // FIXME: if PHI instructions existed in the machine code, this would be
+  // unnecesary.
+  for (MachineFunction::iterator I = MF.begin(), E = MF.end(); I != E; ++I)
+    if (I->getBasicBlock() == BB) {
+      MBB = I;
+      break;
+    }
 
   // find the position of first machine instruction generated by the
   // terminator of this BB
   MachineBasicBlock::iterator MCIt =
-    std::find(bbMvec.begin(), bbMvec.end(), FirstMIOfTerm);
+    std::find(MBB->begin(), MBB->end(), FirstMIOfTerm);
 
-  assert( MCIt != bbMvec.end() && "Start inst of terminator not found");
+  assert(MCIt != MBB->end() && "Start inst of terminator not found");
   
   // insert the copy instructions just before the first machine instruction
   // generated for the terminator
-  bbMvec.insert(MCIt, CpVec.begin(), CpVec.end());
+  MBB->insert(MCIt, CpVec.begin(), CpVec.end());
 }