Revert "[LLVM][NFC] Move PassPlugin from Passes to Extensions lib" and subsequent commit

This reverts commit d87b47d3a893b849cfd1ee5309b9fec2b0aec8cd.
This reverts commit f7ed3d44a198bfe689a1aa284452e875d5bb8a55.
This commit is contained in:
Alexis Engelke 2025-12-22 15:50:28 +00:00
parent 3cfe144f99
commit 2634a2bda1
38 changed files with 41 additions and 82 deletions

View File

@ -36,7 +36,6 @@
namespace llvm {
class raw_fd_ostream;
class PassPlugin;
class Timer;
class TimerGroup;
}
@ -132,9 +131,6 @@ class CompilerInstance : public ModuleLoader {
/// The semantic analysis object.
std::unique_ptr<Sema> TheSema;
/// Back-end pass plugins.
std::vector<std::unique_ptr<llvm::PassPlugin>> PassPlugins;
/// The frontend timer group.
std::unique_ptr<llvm::TimerGroup> timerGroup;
@ -648,14 +644,6 @@ public:
/// the compiler instance takes ownership of \p Value.
void setCodeCompletionConsumer(CodeCompleteConsumer *Value);
/// }
/// @name Back-end Pass Plugins
/// @{
llvm::ArrayRef<std::unique_ptr<llvm::PassPlugin>> getPassPlugins() const {
return PassPlugins;
}
/// @}
/// @name Frontend timer
/// @{

View File

@ -27,7 +27,6 @@
#include "llvm/Bitcode/BitcodeWriterPass.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/Frontend/Driver/CodeGenOptions.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DebugInfo.h"
@ -42,6 +41,7 @@
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Object/OffloadBinary.h"
#include "llvm/Passes/PassBuilder.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Passes/StandardInstrumentations.h"
#include "llvm/ProfileData/InstrProfCorrelator.h"
#include "llvm/Support/BuryPointer.h"
@ -1019,9 +1019,16 @@ void EmitAssemblyHelper::RunOptimizationPipeline(
}
#endif
}
// Register plugin callbacks with PB.
for (const std::unique_ptr<PassPlugin> &Plugin : CI.getPassPlugins())
Plugin->registerPassBuilderCallbacks(PB);
// Attempt to load pass plugins and register their callbacks with PB.
for (auto &PluginFN : CodeGenOpts.PassPlugins) {
auto PassPlugin = PassPlugin::Load(PluginFN);
if (PassPlugin) {
PassPlugin->registerPassBuilderCallbacks(PB);
} else {
Diags.Report(diag::err_fe_unable_to_load_plugin)
<< PluginFN << toString(PassPlugin.takeError());
}
}
for (const auto &PassCallback : CodeGenOpts.PassBuilderCallbacks)
PassCallback(PB);
#define HANDLE_EXTENSION(Ext) \

View File

@ -3,7 +3,6 @@ add_subdirectory(Rewrite)
set(LLVM_LINK_COMPONENTS
BitReader
BitstreamReader
Extensions
Option
ProfileData
Support

View File

@ -46,7 +46,6 @@
#include "llvm/ADT/ScopeExit.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/Support/AdvisoryLock.h"
#include "llvm/Support/BuryPointer.h"
#include "llvm/Support/CrashRecoveryContext.h"
@ -1077,16 +1076,6 @@ void CompilerInstance::LoadRequestedPlugins() {
<< Path << Error;
}
// Load and store pass plugins for the back-end.
for (const std::string &Path : getCodeGenOpts().PassPlugins) {
if (auto PassPlugin = llvm::PassPlugin::Load(Path)) {
PassPlugins.emplace_back(std::make_unique<llvm::PassPlugin>(*PassPlugin));
} else {
getDiagnostics().Report(diag::err_fe_unable_to_load_plugin)
<< Path << toString(PassPlugin.takeError());
}
}
// Check if any of the loaded plugins replaces the main AST action
for (const FrontendPluginRegistry::entry &Plugin :
FrontendPluginRegistry::entries()) {

View File

@ -13,6 +13,7 @@ llvm_canonicalize_cmake_booleans(
CLANG_ENABLE_OBJC_REWRITER
CLANG_LINK_CLANG_DYLIB
ENABLE_BACKTRACES
LLVM_BUILD_EXAMPLES
LLVM_BYE_LINK_INTO_TOOLS
LLVM_ENABLE_PLUGINS
LLVM_ENABLE_ZLIB
@ -20,7 +21,6 @@ llvm_canonicalize_cmake_booleans(
LLVM_ENABLE_PER_TARGET_RUNTIME_DIR
LLVM_ENABLE_THREADS
LLVM_ENABLE_REVERSE_ITERATION
LLVM_INCLUDE_EXAMPLES
LLVM_LINK_LLVM_DYLIB
LLVM_WITH_Z3
PPC_LINUX_DEFAULT_IEEELONGDOUBLE
@ -134,12 +134,6 @@ if(CLANG_BUILD_EXAMPLES AND CLANG_PLUGIN_SUPPORT)
)
endif ()
if(LLVM_INCLUDE_EXAMPLES AND NOT WIN32 AND NOT CYGWIN)
list(APPEND CLANG_TEST_DEPS
Bye
)
endif()
if(LLVM_INCLUDE_SPIRV_TOOLS_TESTS)
list(APPEND CLANG_TEST_DEPS
spirv-dis

View File

@ -1,10 +0,0 @@
// RUN: %clang_cc1 -S < %s -fpass-plugin=%llvmshlibdir/Bye%pluginext -O2 2>&1 | FileCheck %s --check-prefix=CHECK-INACTIVE
// RUN: %clang_cc1 -S < %s -fpass-plugin=%llvmshlibdir/Bye%pluginext -O2 -mllvm -wave-goodbye 2>&1 | FileCheck %s --check-prefix=CHECK-ACTIVE
// REQUIRES: plugins, llvm-examples
// UNSUPPORTED: target={{.*windows.*}}
// CHECK-INACTIVE-NOT: Bye
// CHECK-ACTIVE: Bye: f
int f(int x) {
return x;
}

View File

@ -126,8 +126,6 @@ tools = [
if config.clang_examples:
config.available_features.add("examples")
if config.llvm_examples:
config.available_features.add("llvm-examples")
def have_host_out_of_process_jit_feature_support():

View File

@ -28,7 +28,6 @@ config.clang_staticanalyzer_z3 = @LLVM_WITH_Z3@
config.clang_staticanalyzer_z3_mock = @TEST_WITH_Z3_MOCK@
config.clang_enable_cir = @CLANG_ENABLE_CIR@
config.clang_examples = @CLANG_BUILD_EXAMPLES@
config.llvm_examples = @LLVM_INCLUDE_EXAMPLES@
config.enable_shared = @ENABLE_SHARED@
config.enable_backtrace = @ENABLE_BACKTRACES@
config.enable_threads = @LLVM_ENABLE_THREADS@

View File

@ -4,7 +4,6 @@ set(LLVM_LINK_COMPONENTS
Core
BinaryFormat
MC
Extensions
Target
TransformUtils
Analysis

View File

@ -20,7 +20,6 @@
#include "llvm/BinaryFormat/Magic.h"
#include "llvm/Bitcode/BitcodeWriter.h"
#include "llvm/CodeGen/CommandFlags.h"
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/Frontend/Offloading/OffloadWrapper.h"
#include "llvm/Frontend/Offloading/Utility.h"
#include "llvm/IR/Constants.h"
@ -39,6 +38,7 @@
#include "llvm/Option/ArgList.h"
#include "llvm/Option/OptTable.h"
#include "llvm/Option/Option.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Remarks/HotnessThresholdParser.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Errc.h"

View File

@ -47,7 +47,6 @@
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/Bitcode/BitcodeWriterPass.h"
#include "llvm/CodeGen/MachineOptimizationRemarkEmitter.h"
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/IR/LLVMRemarkStreamer.h"
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/IR/Verifier.h"
@ -56,6 +55,7 @@
#include "llvm/Linker/Linker.h"
#include "llvm/Object/OffloadBinary.h"
#include "llvm/Passes/PassBuilder.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Passes/StandardInstrumentations.h"
#include "llvm/ProfileData/InstrProfCorrelator.h"
#include "llvm/Support/AMDGPUAddrSpace.h"

View File

@ -1,8 +1,8 @@
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/Pass.h"
#include "llvm/Passes/PassBuilder.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/raw_ostream.h"

View File

@ -33,12 +33,12 @@
//===----------------------------------------------------------------------===//
#include "llvm/Analysis/DomTreeUpdater.h"
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/PatternMatch.h"
#include "llvm/Passes/PassBuilder.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Support/CommandLine.h"
using namespace llvm;

View File

@ -1,4 +1,4 @@
//===----------------------------------------------------------------------===//
//===- llvm/Passes/PassPlugin.h - Public Plugin API -----------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
@ -10,8 +10,8 @@
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_EXTENSIONS_PASSPLUGIN_H
#define LLVM_EXTENSIONS_PASSPLUGIN_H
#ifndef LLVM_PASSES_PASSPLUGIN_H
#define LLVM_PASSES_PASSPLUGIN_H
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/CodeGen.h"
@ -112,7 +112,7 @@ private:
sys::DynamicLibrary Library;
PassPluginLibraryInfo Info;
};
} // namespace llvm
}
// The function returns a struct with default initializers.
#ifdef __clang__
@ -139,4 +139,4 @@ llvmGetPassPluginInfo();
#pragma clang diagnostic pop
#endif
#endif /* LLVM_EXTENSIONS_PASSPLUGIN_H */
#endif /* LLVM_PASSES_PASSPLUGIN_H */

View File

@ -1,6 +1,5 @@
add_llvm_component_library(LLVMExtensions
Extensions.cpp
PassPlugin.cpp
LINK_COMPONENTS
Support

View File

@ -1,4 +1,4 @@
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/Passes/PassPlugin.h"
#define HANDLE_EXTENSION(Ext) \
llvm::PassPluginLibraryInfo get##Ext##PluginInfo();
#include "llvm/Support/Extension.def"

View File

@ -22,7 +22,6 @@
#include "llvm/Bitcode/BitcodeReader.h"
#include "llvm/Bitcode/BitcodeWriter.h"
#include "llvm/CGData/CodeGenData.h"
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/IR/LLVMRemarkStreamer.h"
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/IR/PassManager.h"
@ -31,6 +30,7 @@
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Object/ModuleSymbolTable.h"
#include "llvm/Passes/PassBuilder.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Passes/StandardInstrumentations.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/FileSystem.h"

View File

@ -4,6 +4,7 @@ add_llvm_component_library(LLVMPasses
PassBuilder.cpp
PassBuilderBindings.cpp
PassBuilderPipelines.cpp
PassPlugin.cpp
StandardInstrumentations.cpp
ADDITIONAL_HEADER_DIRS

View File

@ -1,4 +1,4 @@
//===----------------------------------------------------------------------===//
//===- lib/Passes/PassPluginLoader.cpp - Load Plugins for New PM Passes ---===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
@ -6,7 +6,7 @@
//
//===----------------------------------------------------------------------===//
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Support/raw_ostream.h"
#include <cstdint>

View File

@ -15,13 +15,13 @@
#include "BugDriver.h"
#include "ToolRunner.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/IR/LegacyPassNameParser.h"
#include "llvm/InitializePasses.h"
#include "llvm/LinkAllIR.h"
#include "llvm/LinkAllPasses.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Support/AlwaysTrue.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/InitLLVM.h"

View File

@ -8,7 +8,6 @@ set(LLVM_LINK_COMPONENTS
CodeGen
CodeGenTypes
Core
Extensions
IRPrinter
IRReader
MC

View File

@ -26,7 +26,6 @@
#include "llvm/CodeGen/MachineModuleInfo.h"
#include "llvm/CodeGen/TargetPassConfig.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/IR/AutoUpgrade.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DiagnosticInfo.h"
@ -41,6 +40,7 @@
#include "llvm/MC/MCTargetOptionsCommandFlags.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Pass.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Remarks/HotnessThresholdParser.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"

View File

@ -6,7 +6,6 @@ set(LLVM_LINK_COMPONENTS
BitReader
CodeGen
Core
Extensions
Linker
LTO
MC

View File

@ -18,9 +18,9 @@
#include "llvm/ADT/ScopeExit.h"
#include "llvm/Bitcode/BitcodeReader.h"
#include "llvm/CodeGen/CommandFlags.h"
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/IR/DiagnosticPrinter.h"
#include "llvm/LTO/LTO.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Remarks/HotnessThresholdParser.h"
#include "llvm/Support/Caching.h"
#include "llvm/Support/CommandLine.h"

View File

@ -23,7 +23,6 @@
#include "llvm/Bitcode/BitcodeWriterPass.h"
#include "llvm/CodeGen/LibcallLoweringInfo.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
@ -31,6 +30,7 @@
#include "llvm/IR/Verifier.h"
#include "llvm/IRPrinter/IRPrintingPasses.h"
#include "llvm/Passes/PassBuilder.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Passes/StandardInstrumentations.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/Timer.h"

View File

@ -24,7 +24,6 @@
#include "llvm/CodeGen/CommandFlags.h"
#include "llvm/CodeGen/TargetPassConfig.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/LLVMContext.h"
@ -40,6 +39,7 @@
#include "llvm/LinkAllPasses.h"
#include "llvm/MC/MCTargetOptionsCommandFlags.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Remarks/HotnessThresholdParser.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"

View File

@ -3,7 +3,6 @@ set(LLVM_LINK_COMPONENTS
AsmParser
CodeGen
Core
Extensions
Instrumentation
Passes
Support

View File

@ -1,8 +1,8 @@
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Module.h"
#include "llvm/Pass.h"
#include "llvm/Passes/PassBuilder.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/raw_ostream.h"

View File

@ -1,8 +1,8 @@
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Module.h"
#include "llvm/Pass.h"
#include "llvm/Passes/PassBuilder.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/raw_ostream.h"

View File

@ -1,9 +1,9 @@
#include "llvm/Analysis/CallGraph.h"
#include "llvm/AsmParser/Parser.h"
#include "llvm/Config/config.h"
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/IR/Module.h"
#include "llvm/Passes/PassBuilder.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Testing/Support/Error.h"

View File

@ -1,9 +1,9 @@
#include "llvm/Analysis/CallGraph.h"
#include "llvm/AsmParser/Parser.h"
#include "llvm/Config/config.h"
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/IR/Module.h"
#include "llvm/Passes/PassBuilder.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Testing/Support/Error.h"

View File

@ -3,7 +3,7 @@
# work with DLLs on Windows (where a shared library can't have undefined
# references), so just skip this testcase on Windows.
if (NOT WIN32 AND NOT CYGWIN)
set(LLVM_LINK_COMPONENTS Support Extensions Passes Core AsmParser)
set(LLVM_LINK_COMPONENTS Support Passes Core AsmParser)
add_llvm_unittest(PluginsTests
PluginsTest.cpp

View File

@ -7,9 +7,9 @@
//
//===----------------------------------------------------------------------===//
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/IR/Module.h"
#include "llvm/Passes/PassBuilder.h"
#include "llvm/Passes/PassPlugin.h"
using namespace llvm;

View File

@ -9,11 +9,11 @@
#include "llvm/Analysis/CGSCCPassManager.h"
#include "llvm/AsmParser/Parser.h"
#include "llvm/Config/config.h"
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/PassManager.h"
#include "llvm/Passes/PassBuilder.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/SourceMgr.h"

View File

@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/Passes/PassBuilder.h"
#include "llvm/Passes/PassPlugin.h"
#include "../TestPlugin.h"

View File

@ -23,7 +23,6 @@ set(POLLY_COMPONENTS
Analysis
ipo
MC
Extensions
Passes
Linker
IRReader

View File

@ -9,8 +9,8 @@
//===----------------------------------------------------------------------===//
#include "polly/RegisterPasses.h"
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/PassRegistry.h"
#include "llvm/Passes/PassPlugin.h"
// Pass Plugin Entrypoints

View File

@ -42,11 +42,11 @@
#include "polly/Support/DumpModulePass.h"
#include "llvm/Analysis/CFGPrinter.h"
#include "llvm/Config/llvm-config.h" // for LLVM_VERSION_STRING
#include "llvm/Extensions/PassPlugin.h"
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/Verifier.h"
#include "llvm/Passes/PassBuilder.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/TargetSelect.h"