summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2017-07-09 07:23:27 +0000
committerChandler Carruth <chandlerc@gmail.com>2017-07-09 07:23:27 +0000
commit9c3506547e37cb2a9ab2dd3696c3eb681fa70642 (patch)
tree6c891d20fb729a1b71caee9d07b41f8cd75de11a
parentfde4723ebead58f0342ae88abd1cc5ad795a5e5b (diff)
downloadbcm5719-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.h8
-rw-r--r--llvm/unittests/IR/PassManagerTest.cpp7
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) {
OpenPOWER on IntegriCloud