aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-10-28 19:01:16 +0000
committerChris Lattner <sabre@nondot.org>2002-10-28 19:01:16 +0000
commitfcffe865f9003e592e09f1eea13da213eb1781e3 (patch)
tree6ef8a0d1306b0c2544a8e498e4e76835a7e42e45 /lib/CodeGen
parentfb3a0aed9b4225c653eb20313c4411dbb6c1c8c4 (diff)
Remove usage of MachineBasicBlock::get
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4342 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen')
-rw-r--r--lib/CodeGen/InstrSelection/InstrSelection.cpp32
1 files changed, 18 insertions, 14 deletions
diff --git a/lib/CodeGen/InstrSelection/InstrSelection.cpp b/lib/CodeGen/InstrSelection/InstrSelection.cpp
index 677bef7d04..a2e9bb642e 100644
--- a/lib/CodeGen/InstrSelection/InstrSelection.cpp
+++ b/lib/CodeGen/InstrSelection/InstrSelection.cpp
@@ -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());
}