mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-18 11:24:01 +00:00
Move FunctionPass::doesNotModifyCFG to AnalysisUsage::preservesCFG()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2384 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -138,18 +138,6 @@ struct FunctionPass : public Pass {
|
|||||||
//
|
//
|
||||||
bool run(Function *F);
|
bool run(Function *F);
|
||||||
|
|
||||||
protected:
|
|
||||||
// doesNotModifyCFG - This function should be called by our subclasses to
|
|
||||||
// implement the getAnalysisUsage virtual function, iff they do not:
|
|
||||||
//
|
|
||||||
// 1. Add or remove basic blocks from the function
|
|
||||||
// 2. Modify terminator instructions in any way.
|
|
||||||
//
|
|
||||||
// This function annotates the AnalysisUsage info object to say that analyses
|
|
||||||
// that only depend on the CFG are preserved by this pass.
|
|
||||||
//
|
|
||||||
void doesNotModifyCFG(AnalysisUsage &Info);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class PassManagerT<Module>;
|
friend class PassManagerT<Module>;
|
||||||
friend class PassManagerT<Function>;
|
friend class PassManagerT<Function>;
|
||||||
@ -277,6 +265,17 @@ public:
|
|||||||
void setPreservesAll() { PreservesAll = true; }
|
void setPreservesAll() { PreservesAll = true; }
|
||||||
bool preservesAll() const { return PreservesAll; }
|
bool preservesAll() const { return PreservesAll; }
|
||||||
|
|
||||||
|
// preservesCFG - This function should be called to by the pass, iff they do
|
||||||
|
// not:
|
||||||
|
//
|
||||||
|
// 1. Add or remove basic blocks from the function
|
||||||
|
// 2. Modify terminator instructions in any way.
|
||||||
|
//
|
||||||
|
// This function annotates the AnalysisUsage info object to say that analyses
|
||||||
|
// that only depend on the CFG are preserved by this pass.
|
||||||
|
//
|
||||||
|
void preservesCFG();
|
||||||
|
|
||||||
const std::vector<AnalysisID> &getRequiredSet() const { return Required; }
|
const std::vector<AnalysisID> &getRequiredSet() const { return Required; }
|
||||||
const std::vector<AnalysisID> &getPreservedSet() const { return Preserved; }
|
const std::vector<AnalysisID> &getPreservedSet() const { return Preserved; }
|
||||||
const std::vector<AnalysisID> &getProvidedSet() const { return Provided; }
|
const std::vector<AnalysisID> &getProvidedSet() const { return Provided; }
|
||||||
|
@ -24,6 +24,21 @@ void AnalysisResolver::setAnalysisResolver(Pass *P, AnalysisResolver *AR) {
|
|||||||
P->Resolver = AR;
|
P->Resolver = AR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// preservesCFG - This function should be called to by the pass, iff they do
|
||||||
|
// not:
|
||||||
|
//
|
||||||
|
// 1. Add or remove basic blocks from the function
|
||||||
|
// 2. Modify terminator instructions in any way.
|
||||||
|
//
|
||||||
|
// This function annotates the AnalysisUsage info object to say that analyses
|
||||||
|
// that only depend on the CFG are preserved by this pass.
|
||||||
|
//
|
||||||
|
void AnalysisUsage::preservesCFG() {
|
||||||
|
// FIXME: implement preservesCFG
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// PassManager implementation - The PassManager class is a simple Pimpl class
|
// PassManager implementation - The PassManager class is a simple Pimpl class
|
||||||
// that wraps the PassManagerT template.
|
// that wraps the PassManagerT template.
|
||||||
@ -142,20 +157,6 @@ void FunctionPass::addToPassManager(PassManagerT<Function> *PM,
|
|||||||
PM->addPass(this, AU);
|
PM->addPass(this, AU);
|
||||||
}
|
}
|
||||||
|
|
||||||
// doesNotModifyCFG - This function should be called by our subclasses to
|
|
||||||
// implement the getAnalysisUsage virtual function, iff they do not:
|
|
||||||
//
|
|
||||||
// 1. Add or remove basic blocks from the function
|
|
||||||
// 2. Modify terminator instructions in any way.
|
|
||||||
//
|
|
||||||
// This function annotates the AnalysisUsage info object to say that analyses
|
|
||||||
// that only depend on the CFG are preserved by this pass.
|
|
||||||
//
|
|
||||||
void FunctionPass::doesNotModifyCFG(AnalysisUsage &Info) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// BasicBlockPass Implementation
|
// BasicBlockPass Implementation
|
||||||
//
|
//
|
||||||
|
Reference in New Issue
Block a user