================
@@ -233,6 +234,20 @@ bool ExecuteCompilerInvocation(CompilerInstance *Clang) {
 
   Clang->LoadRequestedPlugins();
 
+  // Load and store pass plugins for the back-end. Store the loaded pass 
plugins
+  // here and store references to these in CodeGenOpts to avoid pulling in the
+  // entire PassPlugin dependency chain in CodeGenOpts.
+  std::vector<std::unique_ptr<llvm::PassPlugin>> PassPlugins;
+  for (const std::string &Path : Clang->getCodeGenOpts().PassPluginNames) {
----------------
weliveindetail wrote:

> It seems the motivation was to add pass callbacks without loading a plugin 
> shared library and without recompiling Clang

Not sure. The LLVMPrintFunctionNames example builds a .so and the test loads it 
with `-load`. To me this looks like a parallel mechanism.

> Clang should not have multiple ways to deal with plugins

Clang should handle its own frontend plugins. And it should accept and forward 
LLVM pass plugins. Rust and Swift do that as well. (BTW this patch doesn't 
anything in that regard, it just moves things around to improve parameter 
handling.)

https://github.com/llvm/llvm-project/pull/171868
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to