From 79b7faac9615a29fc9baf92e083d2da385e051b8 Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Sun, 9 Jul 2017 07:23:27 +0000 Subject: [PATCH] [PM] Teach PreservedAnalyses to have an `allInSet` static factory function template to simplify building a quick object with a set marked as preserved. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307493 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/IR/PassManager.h | 8 ++++++++ unittests/IR/PassManagerTest.cpp | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/include/llvm/IR/PassManager.h b/include/llvm/IR/PassManager.h index d03b7b65f81..ab9b1e84401 100644 --- a/include/llvm/IR/PassManager.h +++ b/include/llvm/IR/PassManager.h @@ -162,6 +162,14 @@ public: return PA; } + /// \brief Construct a preserved analyses object with a single preserved set. + template + static PreservedAnalyses allInSet() { + PreservedAnalyses PA; + PA.preserveSet(); + return PA; + } + /// Mark an analysis as preserved. template void preserve() { preserve(AnalysisT::ID()); } diff --git a/unittests/IR/PassManagerTest.cpp b/unittests/IR/PassManagerTest.cpp index ad06cc4778f..0131bce3d2b 100644 --- a/unittests/IR/PassManagerTest.cpp +++ b/unittests/IR/PassManagerTest.cpp @@ -210,6 +210,13 @@ TEST(PreservedAnalysesTest, Basic) { EXPECT_FALSE(PAC.preserved()); EXPECT_FALSE(PAC.preservedSet>()); } + auto PA5 = PreservedAnalyses::allInSet>(); + { + auto PAC = PA5.getChecker(); + EXPECT_FALSE(PAC.preserved()); + EXPECT_TRUE(PAC.preservedSet>()); + EXPECT_FALSE(PAC.preservedSet>()); + } } TEST(PreservedAnalysesTest, Preserve) { -- 2.11.0