mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-04 18:06:49 +00:00
Add Machine-CFG edges to SparcV9 MachineBasicBlocks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14806 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
64116f980e
commit
d94b6d3fa5
@ -24,6 +24,7 @@
|
||||
#include "llvm/CodeGen/MachineCodeForInstruction.h"
|
||||
#include "llvm/CodeGen/MachineFunction.h"
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
#include "llvm/Support/CFG.h"
|
||||
#include "../SparcV9RegInfo.h"
|
||||
#include "Support/CommandLine.h"
|
||||
#include "Support/LeakDetector.h"
|
||||
@ -185,17 +186,30 @@ bool InstructionSelection::runOnFunction(Function &F) {
|
||||
SelectInstructionsForTree(basicNode, /*goalnt*/1);
|
||||
}
|
||||
|
||||
// Create the MachineBasicBlock records and add all of the MachineInstrs
|
||||
// defined in the MachineCodeForInstruction objects to also live in the
|
||||
// MachineBasicBlock objects.
|
||||
// Create the MachineBasicBlocks and add all of the MachineInstrs
|
||||
// defined in the MachineCodeForInstruction objects to the MachineBasicBlocks.
|
||||
MachineFunction &MF = MachineFunction::get(&F);
|
||||
std::map<const BasicBlock *, MachineBasicBlock *> MBBMap;
|
||||
for (Function::iterator BI = F.begin(), BE = F.end(); BI != BE; ++BI) {
|
||||
MachineBasicBlock *MCBB = new MachineBasicBlock(BI);
|
||||
MF.getBasicBlockList().push_back(MCBB);
|
||||
MachineBasicBlock *MBB = new MachineBasicBlock(BI);
|
||||
MF.getBasicBlockList().push_back(MBB);
|
||||
MBBMap[BI] = MBB;
|
||||
|
||||
for (BasicBlock::iterator II = BI->begin(); II != BI->end(); ++II) {
|
||||
MachineCodeForInstruction &mvec = MachineCodeForInstruction::get(II);
|
||||
MCBB->insert(MCBB->end(), mvec.begin(), mvec.end());
|
||||
MBB->insert(MBB->end(), mvec.begin(), mvec.end());
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize Machine-CFG for the function.
|
||||
for (MachineFunction::iterator i = MF.begin (), e = MF.end (); i != e; ++i) {
|
||||
MachineBasicBlock &MBB = *i;
|
||||
const BasicBlock *BB = MBB.getBasicBlock ();
|
||||
// for each successor S of BB, add MBBMap[S] as a successor of MBB.
|
||||
for (succ_const_iterator si = succ_begin(BB), se = succ_end(BB); si != se; ++si) {
|
||||
MachineBasicBlock *succMBB = MBBMap[*si];
|
||||
assert (succMBB && "Can't find MachineBasicBlock for this successor");
|
||||
MBB.addSuccessor (succMBB);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user