|
39 | 39 | #include "llvm/Transforms/IPO.h"
|
40 | 40 | #include "llvm/Transforms/IPO/AlwaysInliner.h"
|
41 | 41 | #include "llvm/Transforms/IPO/GlobalDCE.h"
|
| 42 | +#include "llvm/Transforms/IPO/StripDeadPrototypes.h" |
| 43 | +#include "llvm/Transforms/IPO/StripSymbols.h" |
42 | 44 | #include "llvm/Transforms/InstCombine/InstCombine.h"
|
43 | 45 | #include "llvm/Transforms/Scalar.h"
|
44 | 46 | #include "llvm/Transforms/Utils/Cloning.h"
|
@@ -490,13 +492,14 @@ extractCallGraph(const Module &M, const EntryPointGroup &ModuleEntryPoints) {
|
490 | 492 | std::unique_ptr<Module> MClone = CloneModule(
|
491 | 493 | M, VMap, [&](const GlobalValue *GV) { return GVs.count(GV); });
|
492 | 494 |
|
493 |
| - // TODO: Use the new PassManager instead? |
494 |
| - legacy::PassManager Passes; |
| 495 | + ModuleAnalysisManager MAM; |
| 496 | + MAM.registerPass([&] { return PassInstrumentationAnalysis(); }); |
| 497 | + ModulePassManager MPM; |
495 | 498 | // Do cleanup.
|
496 |
| - Passes.add(createGlobalDCEPass()); // Delete unreachable globals. |
497 |
| - Passes.add(createStripDeadDebugInfoPass()); // Remove dead debug info. |
498 |
| - Passes.add(createStripDeadPrototypesPass()); // Remove dead func decls. |
499 |
| - Passes.run(*MClone.get()); |
| 499 | + MPM.addPass(GlobalDCEPass()); // Delete unreachable globals. |
| 500 | + MPM.addPass(StripDeadDebugInfoPass()); // Remove dead debug info. |
| 501 | + MPM.addPass(StripDeadPrototypesPass()); // Remove dead func decls. |
| 502 | + MPM.run(*MClone.get(), MAM); |
500 | 503 |
|
501 | 504 | return MClone;
|
502 | 505 | }
|
|
0 commit comments