Iterate over the Machine CFG that Brian added instead of the LLVM CFG.

Look at all of the pretty minuses. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13303 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2004-05-01 21:27:53 +00:00
parent 015959ee38
commit 2268684f6f
2 changed files with 8 additions and 42 deletions

View File

@ -37,8 +37,6 @@
#include "llvm/CodeGen/Passes.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Function.h" // FIXME: remove when using MBB CFG!
#include "llvm/Support/CFG.h" // FIXME: remove when using MBB CFG!
#include "Support/Debug.h"
#include "Support/DepthFirstIterator.h"
#include "Support/Statistic.h"
@ -161,31 +159,16 @@ bool FPS::runOnMachineFunction(MachineFunction &MF) {
LV = &getAnalysis<LiveVariables>();
StackTop = 0;
// Figure out the mapping of MBB's to BB's.
//
// FIXME: Eventually we should be able to traverse the MBB CFG directly, and
// we will need to extend this when one llvm basic block can codegen to
// multiple MBBs.
//
// FIXME again: Just use the mapping established by LiveVariables!
//
std::map<const BasicBlock*, MachineBasicBlock *> MBBMap;
for (MachineFunction::iterator I = MF.begin(), E = MF.end(); I != E; ++I)
MBBMap[I->getBasicBlock()] = I;
// Process the function in depth first order so that we process at least one
// of the predecessors for every reachable block in the function.
std::set<const BasicBlock*> Processed;
const BasicBlock *Entry = MF.getFunction()->begin();
std::set<MachineBasicBlock*> Processed;
MachineBasicBlock *Entry = MF.begin();
bool Changed = false;
for (df_ext_iterator<const BasicBlock*, std::set<const BasicBlock*> >
for (df_ext_iterator<MachineBasicBlock*, std::set<MachineBasicBlock*> >
I = df_ext_begin(Entry, Processed), E = df_ext_end(Entry, Processed);
I != E; ++I)
Changed |= processBasicBlock(MF, *MBBMap[*I]);
assert(MBBMap.size() == Processed.size() &&
"Doesn't handle unreachable code yet!");
Changed |= processBasicBlock(MF, **I);
return Changed;
}

View File

@ -37,8 +37,6 @@
#include "llvm/CodeGen/Passes.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Function.h" // FIXME: remove when using MBB CFG!
#include "llvm/Support/CFG.h" // FIXME: remove when using MBB CFG!
#include "Support/Debug.h"
#include "Support/DepthFirstIterator.h"
#include "Support/Statistic.h"
@ -161,31 +159,16 @@ bool FPS::runOnMachineFunction(MachineFunction &MF) {
LV = &getAnalysis<LiveVariables>();
StackTop = 0;
// Figure out the mapping of MBB's to BB's.
//
// FIXME: Eventually we should be able to traverse the MBB CFG directly, and
// we will need to extend this when one llvm basic block can codegen to
// multiple MBBs.
//
// FIXME again: Just use the mapping established by LiveVariables!
//
std::map<const BasicBlock*, MachineBasicBlock *> MBBMap;
for (MachineFunction::iterator I = MF.begin(), E = MF.end(); I != E; ++I)
MBBMap[I->getBasicBlock()] = I;
// Process the function in depth first order so that we process at least one
// of the predecessors for every reachable block in the function.
std::set<const BasicBlock*> Processed;
const BasicBlock *Entry = MF.getFunction()->begin();
std::set<MachineBasicBlock*> Processed;
MachineBasicBlock *Entry = MF.begin();
bool Changed = false;
for (df_ext_iterator<const BasicBlock*, std::set<const BasicBlock*> >
for (df_ext_iterator<MachineBasicBlock*, std::set<MachineBasicBlock*> >
I = df_ext_begin(Entry, Processed), E = df_ext_end(Entry, Processed);
I != E; ++I)
Changed |= processBasicBlock(MF, *MBBMap[*I]);
assert(MBBMap.size() == Processed.size() &&
"Doesn't handle unreachable code yet!");
Changed |= processBasicBlock(MF, **I);
return Changed;
}