[llvm] 2e6ac54 - [LegacyPM] Remove ThinLTO/LTO pipelines
Arthur Eubanks via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 18 10:12:18 PDT 2022
Author: Arthur Eubanks
Date: 2022-04-18T10:09:41-07:00
New Revision: 2e6ac54cf48aa04f7b05c382c33135b16d3f01ea
URL: https://github.com/llvm/llvm-project/commit/2e6ac54cf48aa04f7b05c382c33135b16d3f01ea
DIFF: https://github.com/llvm/llvm-project/commit/2e6ac54cf48aa04f7b05c382c33135b16d3f01ea.diff
LOG: [LegacyPM] Remove ThinLTO/LTO pipelines
Using the legacy PM for the optimization pipeline was deprecated in 13.0.0.
Following recent changes to remove non-core features of the legacy
PM/optimization pipeline, remove the (Thin)LTO pipelines.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D123882
Added:
Modified:
llvm/include/llvm-c/Transforms/PassManagerBuilder.h
llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h
llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
llvm/tools/bugpoint/bugpoint.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm-c/Transforms/PassManagerBuilder.h b/llvm/include/llvm-c/Transforms/PassManagerBuilder.h
index 6e13e18e063be..3ba75440129ae 100644
--- a/llvm/include/llvm-c/Transforms/PassManagerBuilder.h
+++ b/llvm/include/llvm-c/Transforms/PassManagerBuilder.h
@@ -72,12 +72,6 @@ void
LLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB,
LLVMPassManagerRef PM);
-/** See llvm::PassManagerBuilder::populateLTOPassManager. */
-void LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB,
- LLVMPassManagerRef PM,
- LLVMBool Internalize,
- LLVMBool RunInliner);
-
/**
* @}
*/
diff --git a/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h b/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h
index d4aa7ac2f92f9..2676f2705424f 100644
--- a/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h
+++ b/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h
@@ -224,8 +224,6 @@ class PassManagerBuilder {
/// populateModulePassManager - This sets up the primary pass manager.
void populateModulePassManager(legacy::PassManagerBase &MPM);
- void populateLTOPassManager(legacy::PassManagerBase &PM);
- void populateThinLTOPassManager(legacy::PassManagerBase &PM);
};
/// Registers a function for adding a standard set of passes. This should be
diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
index 7267145291623..4f8570040ae60 100644
--- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
+++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
@@ -1092,80 +1092,6 @@ void PassManagerBuilder::addLateLTOOptimizationPasses(
PM.add(createMergeFunctionsPass());
}
-void PassManagerBuilder::populateThinLTOPassManager(
- legacy::PassManagerBase &PM) {
- PerformThinLTO = true;
- if (LibraryInfo)
- PM.add(new TargetLibraryInfoWrapperPass(*LibraryInfo));
-
- if (VerifyInput)
- PM.add(createVerifierPass());
-
- if (ImportSummary) {
- // This pass imports type identifier resolutions for whole-program
- // devirtualization and CFI. It must run early because other passes may
- // disturb the specific instruction patterns that these passes look for,
- // creating dependencies on resolutions that may not appear in the summary.
- //
- // For example, GVN may transform the pattern assume(type.test) appearing in
- // two basic blocks into assume(phi(type.test, type.test)), which would
- // transform a dependency on a WPD resolution into a dependency on a type
- // identifier resolution for CFI.
- //
- // Also, WPD has access to more precise information than ICP and can
- // devirtualize more effectively, so it should operate on the IR first.
- PM.add(createWholeProgramDevirtPass(nullptr, ImportSummary));
- PM.add(createLowerTypeTestsPass(nullptr, ImportSummary));
- }
-
- populateModulePassManager(PM);
-
- if (VerifyOutput)
- PM.add(createVerifierPass());
- PerformThinLTO = false;
-}
-
-void PassManagerBuilder::populateLTOPassManager(legacy::PassManagerBase &PM) {
- if (LibraryInfo)
- PM.add(new TargetLibraryInfoWrapperPass(*LibraryInfo));
-
- if (VerifyInput)
- PM.add(createVerifierPass());
-
- addExtensionsToPM(EP_FullLinkTimeOptimizationEarly, PM);
-
- if (OptLevel != 0)
- addLTOOptimizationPasses(PM);
- else {
- // The whole-program-devirt pass needs to run at -O0 because only it knows
- // about the llvm.type.checked.load intrinsic: it needs to both lower the
- // intrinsic itself and handle it in the summary.
- PM.add(createWholeProgramDevirtPass(ExportSummary, nullptr));
- }
-
- // Create a function that performs CFI checks for cross-DSO calls with targets
- // in the current module.
- PM.add(createCrossDSOCFIPass());
-
- // Lower type metadata and the type.test intrinsic. This pass supports Clang's
- // control flow integrity mechanisms (-fsanitize=cfi*) and needs to run at
- // link time if CFI is enabled. The pass does nothing if CFI is disabled.
- PM.add(createLowerTypeTestsPass(ExportSummary, nullptr));
- // Run a second time to clean up any type tests left behind by WPD for use
- // in ICP (which is performed earlier than this in the regular LTO pipeline).
- PM.add(createLowerTypeTestsPass(nullptr, nullptr, true));
-
- if (OptLevel != 0)
- addLateLTOOptimizationPasses(PM);
-
- addExtensionsToPM(EP_FullLinkTimeOptimizationLast, PM);
-
- PM.add(createAnnotationRemarksLegacyPass());
-
- if (VerifyOutput)
- PM.add(createVerifierPass());
-}
-
LLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate() {
PassManagerBuilder *PMB = new PassManagerBuilder();
return wrap(PMB);
@@ -1231,18 +1157,3 @@ LLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB,
legacy::PassManagerBase *MPM = unwrap(PM);
Builder->populateModulePassManager(*MPM);
}
-
-void LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB,
- LLVMPassManagerRef PM,
- LLVMBool Internalize,
- LLVMBool RunInliner) {
- PassManagerBuilder *Builder = unwrap(PMB);
- legacy::PassManagerBase *LPM = unwrap(PM);
-
- // A small backwards compatibility hack. populateLTOPassManager used to take
- // an RunInliner option.
- if (RunInliner && !Builder->Inliner)
- Builder->Inliner = createFunctionInliningPass();
-
- Builder->populateLTOPassManager(*LPM);
-}
diff --git a/llvm/tools/bugpoint/bugpoint.cpp b/llvm/tools/bugpoint/bugpoint.cpp
index 937ec23231b07..7c4325541fa2e 100644
--- a/llvm/tools/bugpoint/bugpoint.cpp
+++ b/llvm/tools/bugpoint/bugpoint.cpp
@@ -67,10 +67,6 @@ static cl::opt<bool>
static cl::list<const PassInfo *, bool, PassNameParser>
PassList(cl::desc("Passes available:"), cl::ZeroOrMore);
-static cl::opt<bool>
- StandardLinkOpts("std-link-opts",
- cl::desc("Include the standard link time optimizations"));
-
static cl::opt<bool>
OptLevelO1("O1", cl::desc("Optimization level 1. Identical to 'opt -O1'"));
@@ -203,12 +199,6 @@ int main(int argc, char **argv) {
AddToDriver PM(D);
- if (StandardLinkOpts) {
- PassManagerBuilder Builder;
- Builder.Inliner = createFunctionInliningPass();
- Builder.populateLTOPassManager(PM);
- }
-
if (OptLevelO1)
AddOptimizationPasses(PM, 1, 0);
else if (OptLevelO2)
More information about the llvm-commits
mailing list