diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2014-03-09 11:49:53 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2014-03-09 11:49:53 +0000 |
commit | 15903b7dc5cc31c529010b659eab326fd7565671 (patch) | |
tree | 82d81575fa271917df863d8a10455deacc7e37e7 /unittests/IR | |
parent | fee1963538a3148f3f31dd91dc9a2cc4ffb40a2d (diff) | |
download | llvm-15903b7dc5cc31c529010b659eab326fd7565671.tar.gz llvm-15903b7dc5cc31c529010b659eab326fd7565671.tar.bz2 llvm-15903b7dc5cc31c529010b659eab326fd7565671.tar.xz |
[PM] Switch new pass manager from polymorphic_ptr to unique_ptr now that
it is available. Also make the move semantics sufficiently correct to
tolerate move-only passes, as the PassManagers *are* move-only passes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203391 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests/IR')
-rw-r--r-- | unittests/IR/PassManagerTest.cpp | 56 |
1 files changed, 33 insertions, 23 deletions
diff --git a/unittests/IR/PassManagerTest.cpp b/unittests/IR/PassManagerTest.cpp index 75ba02b3a4..157c881ea5 100644 --- a/unittests/IR/PassManagerTest.cpp +++ b/unittests/IR/PassManagerTest.cpp @@ -207,59 +207,69 @@ TEST_F(PassManagerTest, Basic) { ModulePassManager MPM; // Count the runs over a Function. - FunctionPassManager FPM1; int FunctionPassRunCount1 = 0; int AnalyzedInstrCount1 = 0; int AnalyzedFunctionCount1 = 0; - FPM1.addPass(TestFunctionPass(FunctionPassRunCount1, AnalyzedInstrCount1, - AnalyzedFunctionCount1)); - MPM.addPass(createModuleToFunctionPassAdaptor(FPM1)); + { + FunctionPassManager FPM; + FPM.addPass(TestFunctionPass(FunctionPassRunCount1, AnalyzedInstrCount1, + AnalyzedFunctionCount1)); + MPM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM))); + } // Count the runs over a module. int ModulePassRunCount = 0; MPM.addPass(TestModulePass(ModulePassRunCount)); // Count the runs over a Function in a separate manager. - FunctionPassManager FPM2; int FunctionPassRunCount2 = 0; int AnalyzedInstrCount2 = 0; int AnalyzedFunctionCount2 = 0; - FPM2.addPass(TestFunctionPass(FunctionPassRunCount2, AnalyzedInstrCount2, - AnalyzedFunctionCount2)); - MPM.addPass(createModuleToFunctionPassAdaptor(FPM2)); + { + FunctionPassManager FPM; + FPM.addPass(TestFunctionPass(FunctionPassRunCount2, AnalyzedInstrCount2, + AnalyzedFunctionCount2)); + MPM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM))); + } // A third function pass manager but with only preserving intervening passes // and with a function pass that invalidates exactly one analysis. MPM.addPass(TestPreservingModulePass()); - FunctionPassManager FPM3; int FunctionPassRunCount3 = 0; int AnalyzedInstrCount3 = 0; int AnalyzedFunctionCount3 = 0; - FPM3.addPass(TestFunctionPass(FunctionPassRunCount3, AnalyzedInstrCount3, - AnalyzedFunctionCount3)); - FPM3.addPass(TestInvalidationFunctionPass("f")); - MPM.addPass(createModuleToFunctionPassAdaptor(FPM3)); + { + FunctionPassManager FPM; + FPM.addPass(TestFunctionPass(FunctionPassRunCount3, AnalyzedInstrCount3, + AnalyzedFunctionCount3)); + FPM.addPass(TestInvalidationFunctionPass("f")); + MPM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM))); + } // A fourth function pass manager but with a minimal intervening passes. MPM.addPass(TestMinPreservingModulePass()); - FunctionPassManager FPM4; int FunctionPassRunCount4 = 0; int AnalyzedInstrCount4 = 0; int AnalyzedFunctionCount4 = 0; - FPM4.addPass(TestFunctionPass(FunctionPassRunCount4, AnalyzedInstrCount4, - AnalyzedFunctionCount4)); - MPM.addPass(createModuleToFunctionPassAdaptor(FPM4)); + { + FunctionPassManager FPM; + FPM.addPass(TestFunctionPass(FunctionPassRunCount4, AnalyzedInstrCount4, + AnalyzedFunctionCount4)); + MPM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM))); + } // A fifth function pass manager but which uses only cached results. - FunctionPassManager FPM5; int FunctionPassRunCount5 = 0; int AnalyzedInstrCount5 = 0; int AnalyzedFunctionCount5 = 0; - FPM5.addPass(TestInvalidationFunctionPass("f")); - FPM5.addPass(TestFunctionPass(FunctionPassRunCount5, AnalyzedInstrCount5, - AnalyzedFunctionCount5, - /*OnlyUseCachedResults=*/true)); - MPM.addPass(createModuleToFunctionPassAdaptor(FPM5)); + { + FunctionPassManager FPM; + FPM.addPass(TestInvalidationFunctionPass("f")); + FPM.addPass(TestFunctionPass(FunctionPassRunCount5, AnalyzedInstrCount5, + AnalyzedFunctionCount5, + /*OnlyUseCachedResults=*/true)); + MPM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM))); + } MPM.run(M.get(), &MAM); |