https://github.com/wsmoses updated https://github.com/llvm/llvm-project/pull/70171
>From bb04e157dcd667b9baf261f07f8081a52c5481a0 Mon Sep 17 00:00:00 2001 From: "William S. Moses" <g...@wsmoses.com> Date: Wed, 25 Oct 2023 02:10:32 -0500 Subject: [PATCH] [Clang] Add codegen option to add passbuilder callback functions --- clang/include/clang/Basic/CodeGenOptions.h | 6 ++++++ clang/lib/CodeGen/BackendUtil.cpp | 3 +++ 2 files changed, 9 insertions(+) diff --git a/clang/include/clang/Basic/CodeGenOptions.h b/clang/include/clang/Basic/CodeGenOptions.h index 12be4e0025a7054..c8e2544f891cc2b 100644 --- a/clang/include/clang/Basic/CodeGenOptions.h +++ b/clang/include/clang/Basic/CodeGenOptions.h @@ -26,6 +26,9 @@ #include <string> #include <vector> +namespace llvm { +class PassBuilder; +} namespace clang { /// Bitfields of CodeGenOptions, split out from CodeGenOptions to ensure @@ -408,6 +411,9 @@ class CodeGenOptions : public CodeGenOptionsBase { /// List of dynamic shared object files to be loaded as pass plugins. std::vector<std::string> PassPlugins; + /// List of pass builder callbacks. + std::vector<std::function<void(llvm::PassBuilder &)>> PassBuilderCallbacks; + /// Path to allowlist file specifying which objects /// (files, functions) should exclusively be instrumented /// by sanitizer coverage pass. diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index 70accce456d3c07..a8db38fce6425fb 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -906,6 +906,9 @@ void EmitAssemblyHelper::RunOptimizationPipeline( << PluginFN << toString(PassPlugin.takeError()); } } + for (auto PassCallback : CodeGenOpts.PassBuilderCallbacks) { + PassCallback(PB); + } #define HANDLE_EXTENSION(Ext) \ get##Ext##PluginInfo().RegisterPassBuilderCallbacks(PB); #include "llvm/Support/Extension.def" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits