diff options
| -rw-r--r-- | llvm/include/llvm/Passes/PassBuilder.h | 7 | ||||
| -rw-r--r-- | llvm/unittests/IR/PassBuilderCallbacksTest.cpp | 3 |
2 files changed, 10 insertions, 0 deletions
diff --git a/llvm/include/llvm/Passes/PassBuilder.h b/llvm/include/llvm/Passes/PassBuilder.h index 7fe03f72305..e7db8fd421f 100644 --- a/llvm/include/llvm/Passes/PassBuilder.h +++ b/llvm/include/llvm/Passes/PassBuilder.h @@ -631,6 +631,13 @@ public: std::string ProfileFile, std::string ProfileRemappingFile); + + /// Returns PIC. External libraries can use this to register pass + /// instrumentation callbacks. + PassInstrumentationCallbacks *getPassInstrumentationCallbacks() const { + return PIC; + } + private: static Optional<std::vector<PipelineElement>> parsePipelineText(StringRef Text); diff --git a/llvm/unittests/IR/PassBuilderCallbacksTest.cpp b/llvm/unittests/IR/PassBuilderCallbacksTest.cpp index 7306257851a..3f800b308e2 100644 --- a/llvm/unittests/IR/PassBuilderCallbacksTest.cpp +++ b/llvm/unittests/IR/PassBuilderCallbacksTest.cpp @@ -418,6 +418,9 @@ protected: PB(nullptr, PipelineTuningOptions(), None, &CallbacksHandle.Callbacks), PM(true), LAM(true), FAM(true), CGAM(true), AM(true) { + EXPECT_TRUE(&CallbacksHandle.Callbacks == + PB.getPassInstrumentationCallbacks()); + /// Register a callback for analysis registration. /// /// The callback is a function taking a reference to an AnalyisManager |

