mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-19 23:29:20 +00:00
Set AnalysisResolver for the passes when they are inserted into
pass manager queuer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32385 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
186bf2bc54
commit
145e83dc12
@ -393,6 +393,15 @@ public:
|
||||
~FunctionPassManagerImpl_New() { /* TODO */ };
|
||||
|
||||
inline void addTopLevelPass(Pass *P) {
|
||||
|
||||
if (dynamic_cast<ImmutablePass *> (P)) {
|
||||
|
||||
// P is a immutable pass then it will be managed by this
|
||||
// top level manager. Set up analysis resolver to connect them.
|
||||
AnalysisResolver_New *AR = new AnalysisResolver_New(*this);
|
||||
P->setResolver(AR);
|
||||
}
|
||||
|
||||
addPass(P);
|
||||
}
|
||||
|
||||
@ -488,6 +497,15 @@ public:
|
||||
}
|
||||
|
||||
inline void addTopLevelPass(Pass *P) {
|
||||
|
||||
if (dynamic_cast<ImmutablePass *> (P)) {
|
||||
|
||||
// P is a immutable pass and it will be managed by this
|
||||
// top level manager. Set up analysis resolver to connect them.
|
||||
AnalysisResolver_New *AR = new AnalysisResolver_New(*this);
|
||||
P->setResolver(AR);
|
||||
}
|
||||
|
||||
addPass(P);
|
||||
}
|
||||
|
||||
@ -577,6 +595,11 @@ void PMDataManager::removeDeadPasses(Pass *P) {
|
||||
void PMDataManager::addPassToManager(Pass *P,
|
||||
bool ProcessAnalysis) {
|
||||
|
||||
// This manager is going to manage pass P. Set up analysis resolver
|
||||
// to connect them.
|
||||
AnalysisResolver_New *AR = new AnalysisResolver_New(*this);
|
||||
P->setResolver(AR);
|
||||
|
||||
if (ProcessAnalysis) {
|
||||
|
||||
// At the moment, this pass is the last user of all required passes.
|
||||
@ -1055,6 +1078,12 @@ bool PassManagerImpl_New::addPass(Pass *P) {
|
||||
|
||||
if (!activeManager || !activeManager->addPass(P)) {
|
||||
activeManager = new ModulePassManager_New(getDepth() + 1);
|
||||
|
||||
// This top level manager is going to manage activeManager.
|
||||
// Set up analysis resolver to connect them.
|
||||
AnalysisResolver_New *AR = new AnalysisResolver_New(*this);
|
||||
activeManager->setResolver(AR);
|
||||
|
||||
addPassManager(activeManager);
|
||||
return activeManager->addPass(P);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user