Pass *P = NULL;
// Check pass managers
- for (std::vector<Pass *>::iterator I = PassManagers.begin(),
+ for (std::vector<PMDataManager *>::iterator I = PassManagers.begin(),
E = PassManagers.end(); P == NULL && I != E; ++I) {
- PMDataManager *PMD = dynamic_cast<PMDataManager *>(*I);
- assert(PMD && "This is not a PassManager");
+ PMDataManager *PMD = *I;
P = PMD->findAnalysisPass(AID, false);
}
ImmutablePasses[i]->dumpPassStructure(0);
}
- for (std::vector<Pass *>::const_iterator I = PassManagers.begin(),
+ // Every class that derives from PMDataManager also derives from Pass
+ // (sometimes indirectly), but there's no inheritance relationship
+ // between PMDataManager and Pass, so we have to dynamic_cast to get
+ // from a PMDataManager* to a Pass*.
+ for (std::vector<PMDataManager *>::const_iterator I = PassManagers.begin(),
E = PassManagers.end(); I != E; ++I)
- (*I)->dumpPassStructure(1);
+ dynamic_cast<Pass *>(*I)->dumpPassStructure(1);
}
void PMTopLevelManager::dumpArguments() const {
return;
cerr << "Pass Arguments: ";
- for (std::vector<Pass *>::const_iterator I = PassManagers.begin(),
+ for (std::vector<PMDataManager *>::const_iterator I = PassManagers.begin(),
E = PassManagers.end(); I != E; ++I) {
- PMDataManager *PMD = dynamic_cast<PMDataManager *>(*I);
- assert(PMD && "This is not a PassManager");
+ PMDataManager *PMD = *I;
PMD->dumpPassArguments();
}
cerr << "\n";
void PMTopLevelManager::initializeAllAnalysisInfo() {
- for (std::vector<Pass *>::iterator I = PassManagers.begin(),
+ for (std::vector<PMDataManager *>::iterator I = PassManagers.begin(),
E = PassManagers.end(); I != E; ++I) {
- PMDataManager *PMD = dynamic_cast<PMDataManager *>(*I);
- assert(PMD && "This is not a PassManager");
+ PMDataManager *PMD = *I;
PMD->initializeAnalysisInfo();
}
/// Destructor
PMTopLevelManager::~PMTopLevelManager() {
- for (std::vector<Pass *>::iterator I = PassManagers.begin(),
+ for (std::vector<PMDataManager *>::iterator I = PassManagers.begin(),
E = PassManagers.end(); I != E; ++I)
delete *I;