CallGraphSCCPass.cpp (206083) | CallGraphSCCPass.cpp (206124) |
---|---|
1//===- CallGraphSCCPass.cpp - Pass that operates BU on call graph ---------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// --- 73 unchanged lines hidden (view full) --- 82 83private: 84 bool RunPassOnSCC(Pass *P, std::vector<CallGraphNode*> &CurSCC, 85 CallGraph &CG, bool &CallGraphUpToDate); 86 void RefreshCallGraph(std::vector<CallGraphNode*> &CurSCC, CallGraph &CG, 87 bool IsCheckingMode); 88}; 89 | 1//===- CallGraphSCCPass.cpp - Pass that operates BU on call graph ---------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// --- 73 unchanged lines hidden (view full) --- 82 83private: 84 bool RunPassOnSCC(Pass *P, std::vector<CallGraphNode*> &CurSCC, 85 CallGraph &CG, bool &CallGraphUpToDate); 86 void RefreshCallGraph(std::vector<CallGraphNode*> &CurSCC, CallGraph &CG, 87 bool IsCheckingMode); 88}; 89 |
90/// PrintCallGraphPass - Print a Module corresponding to a call graph. 91/// 92class PrintCallGraphPass : public CallGraphSCCPass { 93private: 94 std::string Banner; 95 raw_ostream &Out; // raw_ostream to print on. 96 97public: 98 static char ID; 99 PrintCallGraphPass() : CallGraphSCCPass(&ID), Out(dbgs()) {} 100 PrintCallGraphPass(const std::string &B, raw_ostream &o) 101 : CallGraphSCCPass(&ID), Banner(B), Out(o) {} 102 103 virtual void getAnalysisUsage(AnalysisUsage &AU) const { 104 AU.setPreservesAll(); 105 } 106 107 bool runOnSCC(std::vector<CallGraphNode *> &SCC) { 108 Out << Banner; 109 for (std::vector<CallGraphNode *>::iterator n = SCC.begin(), ne = SCC.end(); 110 n != ne; 111 ++n) { 112 (*n)->getFunction()->print(Out); 113 } 114 return false; 115 } 116}; 117 |
|
90} // end anonymous namespace. 91 92char CGPassManager::ID = 0; 93 | 118} // end anonymous namespace. 119 120char CGPassManager::ID = 0; 121 |
122char PrintCallGraphPass::ID = 0; 123 |
|
94bool CGPassManager::RunPassOnSCC(Pass *P, std::vector<CallGraphNode*> &CurSCC, 95 CallGraph &CG, bool &CallGraphUpToDate) { 96 bool Changed = false; 97 PMDataManager *PM = P->getAsPMDataManager(); 98 99 if (PM == 0) { 100 CallGraphSCCPass *CGSP = (CallGraphSCCPass*)P; 101 if (!CallGraphUpToDate) { --- 289 unchanged lines hidden (view full) --- 391 Changed |= ((FPPassManager*)PM)->doFinalization(CG.getModule()); 392 } else { 393 Changed |= ((CallGraphSCCPass*)getContainedPass(i))->doFinalization(CG); 394 } 395 } 396 return Changed; 397} 398 | 124bool CGPassManager::RunPassOnSCC(Pass *P, std::vector<CallGraphNode*> &CurSCC, 125 CallGraph &CG, bool &CallGraphUpToDate) { 126 bool Changed = false; 127 PMDataManager *PM = P->getAsPMDataManager(); 128 129 if (PM == 0) { 130 CallGraphSCCPass *CGSP = (CallGraphSCCPass*)P; 131 if (!CallGraphUpToDate) { --- 289 unchanged lines hidden (view full) --- 421 Changed |= ((FPPassManager*)PM)->doFinalization(CG.getModule()); 422 } else { 423 Changed |= ((CallGraphSCCPass*)getContainedPass(i))->doFinalization(CG); 424 } 425 } 426 return Changed; 427} 428 |
429Pass *CallGraphSCCPass::createPrinterPass(raw_ostream &O, 430 const std::string &Banner) const { 431 return new PrintCallGraphPass(Banner, O); 432} 433 |
|
399/// Assign pass manager to manage this pass. 400void CallGraphSCCPass::assignPassManager(PMStack &PMS, 401 PassManagerType PreferredType) { 402 // Find CGPassManager 403 while (!PMS.empty() && 404 PMS.top()->getPassManagerType() > PMT_CallGraphPassManager) 405 PMS.pop(); 406 --- 36 unchanged lines hidden --- | 434/// Assign pass manager to manage this pass. 435void CallGraphSCCPass::assignPassManager(PMStack &PMS, 436 PassManagerType PreferredType) { 437 // Find CGPassManager 438 while (!PMS.empty() && 439 PMS.top()->getPassManagerType() > PMT_CallGraphPassManager) 440 PMS.pop(); 441 --- 36 unchanged lines hidden --- |