mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-16 14:31:59 +00:00
The code extractor needs dominator info. Provide it
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12483 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
268316ee14
commit
369287bab5
@ -18,6 +18,7 @@
|
||||
#include "llvm/iTerminators.h"
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/Pass.h"
|
||||
#include "llvm/Analysis/Dominators.h"
|
||||
#include "llvm/Analysis/LoopInfo.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils/FunctionUtils.h"
|
||||
@ -35,6 +36,7 @@ namespace {
|
||||
virtual bool runOnFunction(Function &F);
|
||||
|
||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
AU.addRequired<DominatorSet>();
|
||||
AU.addRequired<LoopInfo>();
|
||||
AU.addRequiredID(LoopSimplifyID);
|
||||
}
|
||||
@ -59,6 +61,8 @@ bool LoopExtractor::runOnFunction(Function &F) {
|
||||
if (LI.begin() == LI.end())
|
||||
return false;
|
||||
|
||||
DominatorSet &DS = getAnalysis<DominatorSet>();
|
||||
|
||||
// If there is more than one top-level loop in this function, extract all of
|
||||
// the loops.
|
||||
bool Changed = false;
|
||||
@ -66,7 +70,7 @@ bool LoopExtractor::runOnFunction(Function &F) {
|
||||
for (LoopInfo::iterator i = LI.begin(), e = LI.end(); i != e; ++i) {
|
||||
if (NumLoops == 0) return Changed;
|
||||
--NumLoops;
|
||||
Changed |= (ExtractLoop(*i) != 0);
|
||||
Changed |= ExtractLoop(DS, *i) != 0;
|
||||
}
|
||||
} else {
|
||||
// Otherwise there is exactly one top-level loop. If this function is more
|
||||
@ -93,7 +97,7 @@ bool LoopExtractor::runOnFunction(Function &F) {
|
||||
if (ShouldExtractLoop) {
|
||||
if (NumLoops == 0) return Changed;
|
||||
--NumLoops;
|
||||
Changed |= (ExtractLoop(TLL) != 0);
|
||||
Changed |= ExtractLoop(DS, TLL) != 0;
|
||||
} else {
|
||||
// Okay, this function is a minimal container around the specified loop.
|
||||
// If we extract the loop, we will continue to just keep extracting it
|
||||
@ -102,7 +106,7 @@ bool LoopExtractor::runOnFunction(Function &F) {
|
||||
for (Loop::iterator i = TLL->begin(), e = TLL->end(); i != e; ++i) {
|
||||
if (NumLoops == 0) return Changed;
|
||||
--NumLoops;
|
||||
Changed |= (ExtractLoop(*i) != 0);
|
||||
Changed |= ExtractLoop(DS, *i) != 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user