[llvm] [CodeGen] Expose the extensibility of PassConfig to plugins (PR #139059)
Stefan Gränitz via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 3 03:47:03 PDT 2025
================
@@ -531,6 +532,39 @@ class LLVM_ABI TargetMachine {
}
};
+using PassConfigCallback =
+ std::function<void(TargetMachine &, PassManagerBase &, TargetPassConfig *)>;
+
+class TargetPassConfigCallbackRegistry : public PassConfigCallback {
+protected:
+ static SmallVector<PassConfigCallback *, 1> Callbacks;
+
+ explicit TargetPassConfigCallbackRegistry(PassConfigCallback &&C)
+ : PassConfigCallback(std::move(C)) {}
+
+public:
+ static void invokeCallbacks(TargetMachine &TM, PassManagerBase &PM,
+ TargetPassConfig *PassConfig) {
+ for (const PassConfigCallback *C : Callbacks)
+ (*C)(TM, PM, PassConfig);
+ }
+};
+
+class RegisterTargetPassConfigCallback
+ : public TargetPassConfigCallbackRegistry {
----------------
weliveindetail wrote:
This is just a RAII wrapper right? Let's make the callback a member and not inherit from std::function
https://github.com/llvm/llvm-project/pull/139059
More information about the llvm-commits
mailing list