mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
Identify Analysis pass.
Do not run analysis pass again if analysis info is still available. This fixes PR1441. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48476 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -300,6 +300,9 @@ public:
|
||||
// FIXME: Should remove this
|
||||
virtual bool runOnFunction(Function &F) { return false; }
|
||||
|
||||
/// isAnalysis - Return true if this pass is implementing an analysis pass.
|
||||
virtual bool isAnalysis() const { return true; }
|
||||
|
||||
virtual void releaseMemory() { reset(); }
|
||||
|
||||
/// getNode - return the (Post)DominatorTree node for the specified basic
|
||||
@@ -691,6 +694,9 @@ public:
|
||||
return DT->getRootNode();
|
||||
}
|
||||
|
||||
/// isAnalysis - Return true if this pass is implementing an analysis pass.
|
||||
virtual bool isAnalysis() const { return true; }
|
||||
|
||||
virtual bool runOnFunction(Function &F);
|
||||
|
||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
@@ -910,6 +916,9 @@ public:
|
||||
return Roots[0];
|
||||
}
|
||||
|
||||
/// isAnalysis - Return true if this pass is implementing an analysis pass.
|
||||
virtual bool isAnalysis() const { return true; }
|
||||
|
||||
virtual bool runOnFunction(Function &) {
|
||||
Frontiers.clear();
|
||||
DominatorTree &DT = getAnalysis<DominatorTree>();
|
||||
|
@@ -50,6 +50,10 @@ private:
|
||||
void IncorporateValue(const Value *V);
|
||||
|
||||
public:
|
||||
|
||||
/// isAnalysis - Return true if this pass is implementing an analysis pass.
|
||||
virtual bool isAnalysis() const { return true; }
|
||||
|
||||
/// run - This incorporates all types used by the specified module
|
||||
bool runOnModule(Module &M);
|
||||
|
||||
|
@@ -49,6 +49,9 @@ public:
|
||||
|
||||
IntervalPartition() : FunctionPass((intptr_t)&ID), RootInterval(0) {}
|
||||
|
||||
/// isAnalysis - Return true if this pass is implementing an analysis pass.
|
||||
virtual bool isAnalysis() const { return true; }
|
||||
|
||||
// run - Calculate the interval partition for this function
|
||||
virtual bool runOnFunction(Function &F);
|
||||
|
||||
|
@@ -580,6 +580,9 @@ public:
|
||||
LoopInfoBase() { }
|
||||
~LoopInfoBase() { releaseMemory(); }
|
||||
|
||||
/// isAnalysis - Return true if this pass is implementing an analysis pass.
|
||||
virtual bool isAnalysis() const { return true; }
|
||||
|
||||
void releaseMemory() {
|
||||
for (typename std::vector<LoopBase<BlockT>* >::iterator I =
|
||||
TopLevelLoops.begin(), E = TopLevelLoops.end(); I != E; ++I)
|
||||
|
@@ -68,6 +68,9 @@ class MemoryDependenceAnalysis : public FunctionPass {
|
||||
static char ID; // Class identification, replacement for typeinfo
|
||||
MemoryDependenceAnalysis() : FunctionPass((intptr_t)&ID) {}
|
||||
|
||||
/// isAnalysis - Return true if this pass is implementing an analysis pass.
|
||||
virtual bool isAnalysis() const { return true; }
|
||||
|
||||
/// Pass Implementation stuff. This doesn't do any analysis.
|
||||
///
|
||||
bool runOnFunction(Function &) {return false; }
|
||||
|
@@ -29,6 +29,9 @@ struct PostDominatorTree : public FunctionPass {
|
||||
DT = new DominatorTreeBase<BasicBlock>(true);
|
||||
}
|
||||
|
||||
/// isAnalysis - Return true if this pass is implementing an analysis pass.
|
||||
virtual bool isAnalysis() const { return true; }
|
||||
|
||||
virtual bool runOnFunction(Function &F);
|
||||
|
||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
@@ -69,6 +72,9 @@ struct PostDominanceFrontier : public DominanceFrontierBase {
|
||||
PostDominanceFrontier()
|
||||
: DominanceFrontierBase((intptr_t) &ID, true) {}
|
||||
|
||||
/// isAnalysis - Return true if this pass is implementing an analysis pass.
|
||||
virtual bool isAnalysis() const { return true; }
|
||||
|
||||
virtual bool runOnFunction(Function &) {
|
||||
Frontiers.clear();
|
||||
PostDominatorTree &DT = getAnalysis<PostDominatorTree>();
|
||||
|
@@ -291,6 +291,9 @@ namespace llvm {
|
||||
/// that no dangling references are left around.
|
||||
void deleteValueFromRecords(Value *V) const;
|
||||
|
||||
/// isAnalysis - Return true if this pass is implementing an analysis pass.
|
||||
virtual bool isAnalysis() const { return true; }
|
||||
|
||||
virtual bool runOnFunction(Function &F);
|
||||
virtual void releaseMemory();
|
||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const;
|
||||
|
@@ -130,6 +130,11 @@ public:
|
||||
return Resolver;
|
||||
}
|
||||
|
||||
/// isAnalysis - Return true if this pass is implementing an analysis pass.
|
||||
virtual bool isAnalysis() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
/// getAnalysisUsage - This function should be overriden by passes that need
|
||||
/// analysis information to do their job. If a pass specifies that it uses a
|
||||
/// particular analysis result to this function, it can then use the
|
||||
|
Reference in New Issue
Block a user