diff options
| author | Chandler Carruth <chandlerc@gmail.com> | 2017-07-09 07:23:27 +0000 |
|---|---|---|
| committer | Chandler Carruth <chandlerc@gmail.com> | 2017-07-09 07:23:27 +0000 |
| commit | 9c3506547e37cb2a9ab2dd3696c3eb681fa70642 (patch) | |
| tree | 6c891d20fb729a1b71caee9d07b41f8cd75de11a | |
| parent | fde4723ebead58f0342ae88abd1cc5ad795a5e5b (diff) | |
| download | bcm5719-llvm-9c3506547e37cb2a9ab2dd3696c3eb681fa70642.tar.gz bcm5719-llvm-9c3506547e37cb2a9ab2dd3696c3eb681fa70642.zip | |
[PM] Teach PreservedAnalyses to have an `allInSet` static factory
function template to simplify building a quick object with a set marked
as preserved.
llvm-svn: 307493
| -rw-r--r-- | llvm/include/llvm/IR/PassManager.h | 8 | ||||
| -rw-r--r-- | llvm/unittests/IR/PassManagerTest.cpp | 7 |
2 files changed, 15 insertions, 0 deletions
diff --git a/llvm/include/llvm/IR/PassManager.h b/llvm/include/llvm/IR/PassManager.h index d03b7b65f81..ab9b1e84401 100644 --- a/llvm/include/llvm/IR/PassManager.h +++ b/llvm/include/llvm/IR/PassManager.h @@ -162,6 +162,14 @@ public: return PA; } + /// \brief Construct a preserved analyses object with a single preserved set. + template <typename AnalysisSetT> + static PreservedAnalyses allInSet() { + PreservedAnalyses PA; + PA.preserveSet<AnalysisSetT>(); + return PA; + } + /// Mark an analysis as preserved. template <typename AnalysisT> void preserve() { preserve(AnalysisT::ID()); } diff --git a/llvm/unittests/IR/PassManagerTest.cpp b/llvm/unittests/IR/PassManagerTest.cpp index ad06cc4778f..0131bce3d2b 100644 --- a/llvm/unittests/IR/PassManagerTest.cpp +++ b/llvm/unittests/IR/PassManagerTest.cpp @@ -210,6 +210,13 @@ TEST(PreservedAnalysesTest, Basic) { EXPECT_FALSE(PAC.preserved()); EXPECT_FALSE(PAC.preservedSet<AllAnalysesOn<Function>>()); } + auto PA5 = PreservedAnalyses::allInSet<AllAnalysesOn<Function>>(); + { + auto PAC = PA5.getChecker<TestFunctionAnalysis>(); + EXPECT_FALSE(PAC.preserved()); + EXPECT_TRUE(PAC.preservedSet<AllAnalysesOn<Function>>()); + EXPECT_FALSE(PAC.preservedSet<AllAnalysesOn<Module>>()); + } } TEST(PreservedAnalysesTest, Preserve) { |

