diff options
Diffstat (limited to '0008-PassManagerBuilder-Remove-PassManagerBuilder.patch')
-rw-r--r-- | 0008-PassManagerBuilder-Remove-PassManagerBuilder.patch | 634 |
1 files changed, 0 insertions, 634 deletions
diff --git a/0008-PassManagerBuilder-Remove-PassManagerBuilder.patch b/0008-PassManagerBuilder-Remove-PassManagerBuilder.patch deleted file mode 100644 index e199859ee81b..000000000000 --- a/0008-PassManagerBuilder-Remove-PassManagerBuilder.patch +++ /dev/null @@ -1,634 +0,0 @@ -From d623b2f95fd559901f008a0588dddd0949a8db01 Mon Sep 17 00:00:00 2001 -From: Arthur Eubanks <aeubanks@google.com> -Date: Fri, 10 Mar 2023 17:24:19 -0800 -Subject: [PATCH] [PassManagerBuilder] Remove PassManagerBuilder - -PassManagerBuilder is dead, long live PassBuilder! - -bugpoint's -O# are now useless (and probably have been for a while given the number of passes we've removed from PassManagerBuilder). Perhaps they'll be revived if bugpoint ever works with the new PM. - -Reviewed By: nikic, MaskRay - -Differential Revision: https://reviews.llvm.org/D145835 ---- - llvm/docs/WritingAnLLVMPass.rst | 1 - - .../llvm/Transforms/IPO/PassManagerBuilder.h | 125 ------- - llvm/lib/Transforms/IPO/CMakeLists.txt | 1 - - .../lib/Transforms/IPO/PassManagerBuilder.cpp | 343 ------------------ - llvm/tools/bugpoint/bugpoint.cpp | 47 --- - .../llvm/lib/Transforms/IPO/BUILD.gn | 1 - - polly/lib/Support/RegisterPasses.cpp | 1 - - 7 files changed, 519 deletions(-) - delete mode 100644 llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h - delete mode 100644 llvm/lib/Transforms/IPO/PassManagerBuilder.cpp - -diff --git a/llvm/docs/WritingAnLLVMPass.rst b/llvm/docs/WritingAnLLVMPass.rst -index 771185614a49..1e92be87e2e9 100644 ---- a/llvm/docs/WritingAnLLVMPass.rst -+++ b/llvm/docs/WritingAnLLVMPass.rst -@@ -194,7 +194,6 @@ As a whole, the ``.cpp`` file looks like: - #include "llvm/Support/raw_ostream.h" - - #include "llvm/IR/LegacyPassManager.h" -- #include "llvm/Transforms/IPO/PassManagerBuilder.h" - - using namespace llvm; - -diff --git a/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h b/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h -deleted file mode 100644 -index a727ffed33cd..000000000000 ---- a/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h -+++ /dev/null -@@ -1,125 +0,0 @@ --// llvm/Transforms/IPO/PassManagerBuilder.h - Build Standard Pass -*- C++ -*-=// --// --// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. --// See https://llvm.org/LICENSE.txt for license information. --// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception --// --//===----------------------------------------------------------------------===// --// --// This file defines the PassManagerBuilder class, which is used to set up a --// "standard" optimization sequence suitable for languages like C and C++. --// --//===----------------------------------------------------------------------===// -- --#ifndef LLVM_TRANSFORMS_IPO_PASSMANAGERBUILDER_H --#define LLVM_TRANSFORMS_IPO_PASSMANAGERBUILDER_H -- --#include <functional> --#include <string> --#include <vector> -- --namespace llvm { --class ModuleSummaryIndex; --class Pass; --class TargetLibraryInfoImpl; -- --// The old pass manager infrastructure is hidden in a legacy namespace now. --namespace legacy { --class FunctionPassManager; --class PassManagerBase; --} -- --/// PassManagerBuilder - This class is used to set up a standard optimization --/// sequence for languages like C and C++, allowing some APIs to customize the --/// pass sequence in various ways. A simple example of using it would be: --/// --/// PassManagerBuilder Builder; --/// Builder.OptLevel = 2; --/// Builder.populateFunctionPassManager(FPM); --/// Builder.populateModulePassManager(MPM); --/// --/// In addition to setting up the basic passes, PassManagerBuilder allows --/// frontends to vend a plugin API, where plugins are allowed to add extensions --/// to the default pass manager. They do this by specifying where in the pass --/// pipeline they want to be added, along with a callback function that adds --/// the pass(es). For example, a plugin that wanted to add a loop optimization --/// could do something like this: --/// --/// static void addMyLoopPass(const PMBuilder &Builder, PassManagerBase &PM) { --/// if (Builder.getOptLevel() > 2 && Builder.getOptSizeLevel() == 0) --/// PM.add(createMyAwesomePass()); --/// } --/// ... --/// Builder.addExtension(PassManagerBuilder::EP_LoopOptimizerEnd, --/// addMyLoopPass); --/// ... --class PassManagerBuilder { --public: -- /// Extensions are passed to the builder itself (so they can see how it is -- /// configured) as well as the pass manager to add stuff to. -- typedef std::function<void(const PassManagerBuilder &Builder, -- legacy::PassManagerBase &PM)> -- ExtensionFn; -- typedef int GlobalExtensionID; -- -- /// The Optimization Level - Specify the basic optimization level. -- /// 0 = -O0, 1 = -O1, 2 = -O2, 3 = -O3 -- unsigned OptLevel; -- -- /// SizeLevel - How much we're optimizing for size. -- /// 0 = none, 1 = -Os, 2 = -Oz -- unsigned SizeLevel; -- -- /// LibraryInfo - Specifies information about the runtime library for the -- /// optimizer. If this is non-null, it is added to both the function and -- /// per-module pass pipeline. -- TargetLibraryInfoImpl *LibraryInfo; -- -- /// Inliner - Specifies the inliner to use. If this is non-null, it is -- /// added to the per-module passes. -- Pass *Inliner; -- -- /// The module summary index to use for exporting information from the -- /// regular LTO phase, for example for the CFI and devirtualization type -- /// tests. -- ModuleSummaryIndex *ExportSummary = nullptr; -- -- /// The module summary index to use for importing information to the -- /// thin LTO backends, for example for the CFI and devirtualization type -- /// tests. -- const ModuleSummaryIndex *ImportSummary = nullptr; -- -- bool DisableUnrollLoops; -- bool CallGraphProfile; -- bool SLPVectorize; -- bool LoopVectorize; -- bool LoopsInterleaved; -- bool DisableGVNLoadPRE; -- bool ForgetAllSCEVInLoopUnroll; -- bool VerifyInput; -- bool VerifyOutput; -- bool DivergentTarget; -- unsigned LicmMssaOptCap; -- unsigned LicmMssaNoAccForPromotionCap; -- --public: -- PassManagerBuilder(); -- ~PassManagerBuilder(); -- --private: -- void addInitialAliasAnalysisPasses(legacy::PassManagerBase &PM) const; -- void addFunctionSimplificationPasses(legacy::PassManagerBase &MPM); -- void addVectorPasses(legacy::PassManagerBase &PM, bool IsFullLTO); -- --public: -- /// populateFunctionPassManager - This fills in the function pass manager, -- /// which is expected to be run on each function immediately as it is -- /// generated. The idea is to reduce the size of the IR in memory. -- void populateFunctionPassManager(legacy::FunctionPassManager &FPM); -- -- /// populateModulePassManager - This sets up the primary pass manager. -- void populateModulePassManager(legacy::PassManagerBase &MPM); --}; -- --} // end namespace llvm --#endif -diff --git a/llvm/lib/Transforms/IPO/CMakeLists.txt b/llvm/lib/Transforms/IPO/CMakeLists.txt -index 34a1e4c3ebc0..063a9a60d0cb 100644 ---- a/llvm/lib/Transforms/IPO/CMakeLists.txt -+++ b/llvm/lib/Transforms/IPO/CMakeLists.txt -@@ -31,7 +31,6 @@ add_llvm_component_library(LLVMipo - ModuleInliner.cpp - OpenMPOpt.cpp - PartialInlining.cpp -- PassManagerBuilder.cpp - SampleContextTracker.cpp - SampleProfile.cpp - SampleProfileProbe.cpp -diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp -deleted file mode 100644 -index ba7a7f9b121d..000000000000 ---- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp -+++ /dev/null -@@ -1,343 +0,0 @@ --//===- PassManagerBuilder.cpp - Build Standard Pass -----------------------===// --// --// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. --// See https://llvm.org/LICENSE.txt for license information. --// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception --// --//===----------------------------------------------------------------------===// --// --// This file defines the PassManagerBuilder class, which is used to set up a --// "standard" optimization sequence suitable for languages like C and C++. --// --//===----------------------------------------------------------------------===// -- --#include "llvm/Transforms/IPO/PassManagerBuilder.h" --#include "llvm/ADT/STLExtras.h" --#include "llvm/ADT/SmallVector.h" --#include "llvm/Analysis/GlobalsModRef.h" --#include "llvm/Analysis/ScopedNoAliasAA.h" --#include "llvm/Analysis/TargetLibraryInfo.h" --#include "llvm/Analysis/TypeBasedAliasAnalysis.h" --#include "llvm/IR/LegacyPassManager.h" --#include "llvm/Support/CommandLine.h" --#include "llvm/Support/ManagedStatic.h" --#include "llvm/Target/CGPassBuilderOption.h" --#include "llvm/Transforms/AggressiveInstCombine/AggressiveInstCombine.h" --#include "llvm/Transforms/IPO.h" --#include "llvm/Transforms/IPO/Attributor.h" --#include "llvm/Transforms/IPO/ForceFunctionAttrs.h" --#include "llvm/Transforms/IPO/FunctionAttrs.h" --#include "llvm/Transforms/IPO/InferFunctionAttrs.h" --#include "llvm/Transforms/InstCombine/InstCombine.h" --#include "llvm/Transforms/Instrumentation.h" --#include "llvm/Transforms/Scalar.h" --#include "llvm/Transforms/Scalar/GVN.h" --#include "llvm/Transforms/Scalar/LICM.h" --#include "llvm/Transforms/Scalar/LoopUnrollPass.h" --#include "llvm/Transforms/Scalar/SimpleLoopUnswitch.h" --#include "llvm/Transforms/Utils.h" --#include "llvm/Transforms/Vectorize.h" -- --using namespace llvm; -- --PassManagerBuilder::PassManagerBuilder() { -- OptLevel = 2; -- SizeLevel = 0; -- LibraryInfo = nullptr; -- Inliner = nullptr; -- DisableUnrollLoops = false; -- SLPVectorize = false; -- LoopVectorize = true; -- LoopsInterleaved = true; -- LicmMssaOptCap = SetLicmMssaOptCap; -- LicmMssaNoAccForPromotionCap = SetLicmMssaNoAccForPromotionCap; -- DisableGVNLoadPRE = false; -- ForgetAllSCEVInLoopUnroll = ForgetSCEVInLoopUnroll; -- VerifyInput = false; -- VerifyOutput = false; -- DivergentTarget = false; -- CallGraphProfile = true; --} -- --PassManagerBuilder::~PassManagerBuilder() { -- delete LibraryInfo; -- delete Inliner; --} -- --void PassManagerBuilder::addInitialAliasAnalysisPasses( -- legacy::PassManagerBase &PM) const { -- // Add TypeBasedAliasAnalysis before BasicAliasAnalysis so that -- // BasicAliasAnalysis wins if they disagree. This is intended to help -- // support "obvious" type-punning idioms. -- PM.add(createTypeBasedAAWrapperPass()); -- PM.add(createScopedNoAliasAAWrapperPass()); --} -- --void PassManagerBuilder::populateFunctionPassManager( -- legacy::FunctionPassManager &FPM) { -- // Add LibraryInfo if we have some. -- if (LibraryInfo) -- FPM.add(new TargetLibraryInfoWrapperPass(*LibraryInfo)); -- -- if (OptLevel == 0) return; -- -- addInitialAliasAnalysisPasses(FPM); -- -- // Lower llvm.expect to metadata before attempting transforms. -- // Compare/branch metadata may alter the behavior of passes like SimplifyCFG. -- FPM.add(createLowerExpectIntrinsicPass()); -- FPM.add(createCFGSimplificationPass()); -- FPM.add(createSROAPass()); -- FPM.add(createEarlyCSEPass()); --} -- --void PassManagerBuilder::addFunctionSimplificationPasses( -- legacy::PassManagerBase &MPM) { -- // Start of function pass. -- // Break up aggregate allocas, using SSAUpdater. -- assert(OptLevel >= 1 && "Calling function optimizer with no optimization level!"); -- MPM.add(createSROAPass()); -- MPM.add(createEarlyCSEPass(true /* Enable mem-ssa. */)); // Catch trivial redundancies -- -- if (OptLevel > 1) { -- // Speculative execution if the target has divergent branches; otherwise nop. -- MPM.add(createSpeculativeExecutionIfHasBranchDivergencePass()); -- } -- MPM.add( -- createCFGSimplificationPass(SimplifyCFGOptions().convertSwitchRangeToICmp( -- true))); // Merge & remove BBs -- // Combine silly seq's -- MPM.add(createInstructionCombiningPass()); -- -- // TODO: Investigate the cost/benefit of tail call elimination on debugging. -- if (OptLevel > 1) -- MPM.add(createTailCallEliminationPass()); // Eliminate tail calls -- MPM.add( -- createCFGSimplificationPass(SimplifyCFGOptions().convertSwitchRangeToICmp( -- true))); // Merge & remove BBs -- MPM.add(createReassociatePass()); // Reassociate expressions -- -- // Begin the loop pass pipeline. -- -- // The simple loop unswitch pass relies on separate cleanup passes. Schedule -- // them first so when we re-process a loop they run before other loop -- // passes. -- MPM.add(createLoopInstSimplifyPass()); -- MPM.add(createLoopSimplifyCFGPass()); -- -- // Try to remove as much code from the loop header as possible, -- // to reduce amount of IR that will have to be duplicated. However, -- // do not perform speculative hoisting the first time as LICM -- // will destroy metadata that may not need to be destroyed if run -- // after loop rotation. -- // TODO: Investigate promotion cap for O1. -- MPM.add(createLICMPass(LicmMssaOptCap, LicmMssaNoAccForPromotionCap, -- /*AllowSpeculation=*/false)); -- // Rotate Loop - disable header duplication at -Oz -- MPM.add(createLoopRotatePass(SizeLevel == 2 ? 0 : -1, false)); -- // TODO: Investigate promotion cap for O1. -- MPM.add(createLICMPass(LicmMssaOptCap, LicmMssaNoAccForPromotionCap, -- /*AllowSpeculation=*/true)); -- MPM.add(createSimpleLoopUnswitchLegacyPass(OptLevel == 3)); -- // FIXME: We break the loop pass pipeline here in order to do full -- // simplifycfg. Eventually loop-simplifycfg should be enhanced to replace the -- // need for this. -- MPM.add(createCFGSimplificationPass( -- SimplifyCFGOptions().convertSwitchRangeToICmp(true))); -- MPM.add(createInstructionCombiningPass()); -- // We resume loop passes creating a second loop pipeline here. -- -- // Unroll small loops and perform peeling. -- MPM.add(createSimpleLoopUnrollPass(OptLevel, DisableUnrollLoops, -- ForgetAllSCEVInLoopUnroll)); -- // This ends the loop pass pipelines. -- -- // Break up allocas that may now be splittable after loop unrolling. -- MPM.add(createSROAPass()); -- -- if (OptLevel > 1) { -- MPM.add(createMergedLoadStoreMotionPass()); // Merge ld/st in diamonds -- MPM.add(createGVNPass(DisableGVNLoadPRE)); // Remove redundancies -- } -- -- // Delete dead bit computations (instcombine runs after to fold away the dead -- // computations, and then ADCE will run later to exploit any new DCE -- // opportunities that creates). -- MPM.add(createBitTrackingDCEPass()); // Delete dead bit computations -- -- // Run instcombine after redundancy elimination to exploit opportunities -- // opened up by them. -- MPM.add(createInstructionCombiningPass()); -- -- MPM.add(createMemCpyOptPass()); // Remove memcpy / form memset -- // TODO: Investigate if this is too expensive at O1. -- if (OptLevel > 1) { -- MPM.add(createLICMPass(LicmMssaOptCap, LicmMssaNoAccForPromotionCap, -- /*AllowSpeculation=*/true)); -- } -- -- // Merge & remove BBs and sink & hoist common instructions. -- MPM.add(createCFGSimplificationPass( -- SimplifyCFGOptions().hoistCommonInsts(true).sinkCommonInsts(true))); -- // Clean up after everything. -- MPM.add(createInstructionCombiningPass()); --} -- --/// FIXME: Should LTO cause any differences to this set of passes? --void PassManagerBuilder::addVectorPasses(legacy::PassManagerBase &PM, -- bool IsFullLTO) { -- if (IsFullLTO) { -- // The vectorizer may have significantly shortened a loop body; unroll -- // again. Unroll small loops to hide loop backedge latency and saturate any -- // parallel execution resources of an out-of-order processor. We also then -- // need to clean up redundancies and loop invariant code. -- // FIXME: It would be really good to use a loop-integrated instruction -- // combiner for cleanup here so that the unrolling and LICM can be pipelined -- // across the loop nests. -- PM.add(createLoopUnrollPass(OptLevel, DisableUnrollLoops, -- ForgetAllSCEVInLoopUnroll)); -- } -- -- // Cleanup after the loop optimization passes. -- PM.add(createInstructionCombiningPass()); -- -- // Now that we've formed fast to execute loop structures, we do further -- // optimizations. These are run afterward as they might block doing complex -- // analyses and transforms such as what are needed for loop vectorization. -- -- // Cleanup after loop vectorization, etc. Simplification passes like CVP and -- // GVN, loop transforms, and others have already run, so it's now better to -- // convert to more optimized IR using more aggressive simplify CFG options. -- // The extra sinking transform can create larger basic blocks, so do this -- // before SLP vectorization. -- PM.add(createCFGSimplificationPass(SimplifyCFGOptions() -- .forwardSwitchCondToPhi(true) -- .convertSwitchRangeToICmp(true) -- .convertSwitchToLookupTable(true) -- .needCanonicalLoops(false) -- .hoistCommonInsts(true) -- .sinkCommonInsts(true))); -- -- if (IsFullLTO) { -- PM.add(createInstructionCombiningPass()); // Clean up again -- PM.add(createBitTrackingDCEPass()); -- } -- -- if (!IsFullLTO) { -- PM.add(createInstructionCombiningPass()); -- -- // Unroll small loops -- PM.add(createLoopUnrollPass(OptLevel, DisableUnrollLoops, -- ForgetAllSCEVInLoopUnroll)); -- -- if (!DisableUnrollLoops) { -- // LoopUnroll may generate some redundency to cleanup. -- PM.add(createInstructionCombiningPass()); -- -- // Runtime unrolling will introduce runtime check in loop prologue. If the -- // unrolled loop is a inner loop, then the prologue will be inside the -- // outer loop. LICM pass can help to promote the runtime check out if the -- // checked value is loop invariant. -- PM.add(createLICMPass(LicmMssaOptCap, LicmMssaNoAccForPromotionCap, -- /*AllowSpeculation=*/true)); -- } -- } -- -- // After vectorization and unrolling, assume intrinsics may tell us more -- // about pointer alignments. -- PM.add(createAlignmentFromAssumptionsPass()); -- -- if (IsFullLTO) -- PM.add(createInstructionCombiningPass()); --} -- --void PassManagerBuilder::populateModulePassManager( -- legacy::PassManagerBase &MPM) { -- // If all optimizations are disabled, just run the always-inline pass and, -- // if enabled, the function merging pass. -- if (OptLevel == 0) { -- if (Inliner) { -- MPM.add(Inliner); -- Inliner = nullptr; -- } -- -- return; -- } -- -- // Add LibraryInfo if we have some. -- if (LibraryInfo) -- MPM.add(new TargetLibraryInfoWrapperPass(*LibraryInfo)); -- -- addInitialAliasAnalysisPasses(MPM); -- -- if (OptLevel > 2) -- MPM.add(createCallSiteSplittingPass()); -- -- // Promote any localized global vars. -- MPM.add(createPromoteMemoryToRegisterPass()); -- -- MPM.add(createDeadArgEliminationPass()); // Dead argument elimination -- -- MPM.add(createInstructionCombiningPass()); // Clean up after IPCP & DAE -- MPM.add( -- createCFGSimplificationPass(SimplifyCFGOptions().convertSwitchRangeToICmp( -- true))); // Clean up after IPCP & DAE -- -- // We add a module alias analysis pass here. In part due to bugs in the -- // analysis infrastructure this "works" in that the analysis stays alive -- // for the entire SCC pass run below. -- MPM.add(createGlobalsAAWrapperPass()); -- -- // Start of CallGraph SCC passes. -- if (Inliner) { -- MPM.add(Inliner); -- Inliner = nullptr; -- } -- -- addFunctionSimplificationPasses(MPM); -- -- // FIXME: This is a HACK! The inliner pass above implicitly creates a CGSCC -- // pass manager that we are specifically trying to avoid. To prevent this -- // we must insert a no-op module pass to reset the pass manager. -- MPM.add(createBarrierNoopPass()); -- -- // We add a fresh GlobalsModRef run at this point. This is particularly -- // useful as the above will have inlined, DCE'ed, and function-attr -- // propagated everything. We should at this point have a reasonably minimal -- // and richly annotated call graph. By computing aliasing and mod/ref -- // information for all local globals here, the late loop passes and notably -- // the vectorizer will be able to use them to help recognize vectorizable -- // memory operations. -- // -- // Note that this relies on a bug in the pass manager which preserves -- // a module analysis into a function pass pipeline (and throughout it) so -- // long as the first function pass doesn't invalidate the module analysis. -- // Thus both Float2Int and LoopRotate have to preserve AliasAnalysis for -- // this to work. Fortunately, it is trivial to preserve AliasAnalysis -- // (doing nothing preserves it as it is required to be conservatively -- // correct in the face of IR changes). -- MPM.add(createGlobalsAAWrapperPass()); -- -- MPM.add(createFloat2IntPass()); -- MPM.add(createLowerConstantIntrinsicsPass()); -- -- // Re-rotate loops in all our loop nests. These may have fallout out of -- // rotated form due to GVN or other transformations, and the vectorizer relies -- // on the rotated form. Disable header duplication at -Oz. -- MPM.add(createLoopRotatePass(SizeLevel == 2 ? 0 : -1, false)); -- -- addVectorPasses(MPM, /* IsFullLTO */ false); -- -- // LoopSink pass sinks instructions hoisted by LICM, which serves as a -- // canonicalization pass that enables other optimizations. As a result, -- // LoopSink pass needs to be a very late IR pass to avoid undoing LICM -- // result too early. -- MPM.add(createLoopSinkPass()); -- // Get rid of LCSSA nodes. -- MPM.add(createInstSimplifyLegacyPass()); -- -- // LoopSink (and other loop passes since the last simplifyCFG) might have -- // resulted in single-entry-single-exit or empty blocks. Clean up the CFG. -- MPM.add(createCFGSimplificationPass( -- SimplifyCFGOptions().convertSwitchRangeToICmp(true))); --} -diff --git a/llvm/tools/bugpoint/bugpoint.cpp b/llvm/tools/bugpoint/bugpoint.cpp -index 42d3395c73b1..e49efdfe7c8e 100644 ---- a/llvm/tools/bugpoint/bugpoint.cpp -+++ b/llvm/tools/bugpoint/bugpoint.cpp -@@ -30,7 +30,6 @@ - #include "llvm/Support/TargetSelect.h" - #include "llvm/Support/Valgrind.h" - #include "llvm/Transforms/IPO/AlwaysInliner.h" --#include "llvm/Transforms/IPO/PassManagerBuilder.h" - - // Enable this macro to debug bugpoint itself. - //#define DEBUG_BUGPOINT 1 -@@ -66,24 +65,6 @@ static cl::opt<bool> - static cl::list<const PassInfo *, bool, PassNameParser> - PassList(cl::desc("Passes available:")); - --static cl::opt<bool> -- OptLevelO1("O1", cl::desc("Optimization level 1. Identical to 'opt -O1'")); -- --static cl::opt<bool> -- OptLevelO2("O2", cl::desc("Optimization level 2. Identical to 'opt -O2'")); -- --static cl::opt<bool> OptLevelOs( -- "Os", -- cl::desc( -- "Like -O2 with extra optimizations for size. Similar to clang -Os")); -- --static cl::opt<bool> --OptLevelOz("Oz", -- cl::desc("Like -Os but reduces code size further. Similar to clang -Oz")); -- --static cl::opt<bool> -- OptLevelO3("O3", cl::desc("Optimization level 3. Identical to 'opt -O3'")); -- - static cl::opt<std::string> - OverrideTriple("mtriple", cl::desc("Override target triple for module")); - -@@ -110,23 +91,6 @@ public: - }; - } - --// This routine adds optimization passes based on selected optimization level, --// OptLevel. --// --// OptLevel - Optimization Level --static void AddOptimizationPasses(legacy::FunctionPassManager &FPM, -- unsigned OptLevel, -- unsigned SizeLevel) { -- PassManagerBuilder Builder; -- Builder.OptLevel = OptLevel; -- Builder.SizeLevel = SizeLevel; -- -- Builder.Inliner = createAlwaysInlinerLegacyPass(); -- -- Builder.populateFunctionPassManager(FPM); -- Builder.populateModulePassManager(FPM); --} -- - #define HANDLE_EXTENSION(Ext) \ - llvm::PassPluginLibraryInfo get##Ext##PluginInfo(); - #include "llvm/Support/Extension.def" -@@ -192,17 +156,6 @@ int main(int argc, char **argv) { - - AddToDriver PM(D); - -- if (OptLevelO1) -- AddOptimizationPasses(PM, 1, 0); -- else if (OptLevelO2) -- AddOptimizationPasses(PM, 2, 0); -- else if (OptLevelO3) -- AddOptimizationPasses(PM, 3, 0); -- else if (OptLevelOs) -- AddOptimizationPasses(PM, 2, 1); -- else if (OptLevelOz) -- AddOptimizationPasses(PM, 2, 2); -- - for (const PassInfo *PI : PassList) - D.addPass(std::string(PI->getPassArgument())); - -diff --git a/llvm/utils/gn/secondary/llvm/lib/Transforms/IPO/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/Transforms/IPO/BUILD.gn -index e960be0f3fd6..644d30f10854 100644 ---- a/llvm/utils/gn/secondary/llvm/lib/Transforms/IPO/BUILD.gn -+++ b/llvm/utils/gn/secondary/llvm/lib/Transforms/IPO/BUILD.gn -@@ -52,7 +52,6 @@ static_library("IPO") { - "ModuleInliner.cpp", - "OpenMPOpt.cpp", - "PartialInlining.cpp", -- "PassManagerBuilder.cpp", - "SCCP.cpp", - "SampleContextTracker.cpp", - "SampleProfile.cpp", -diff --git a/polly/lib/Support/RegisterPasses.cpp b/polly/lib/Support/RegisterPasses.cpp -index 09ccd67d3118..34570f0c83c5 100644 ---- a/polly/lib/Support/RegisterPasses.cpp -+++ b/polly/lib/Support/RegisterPasses.cpp -@@ -48,7 +48,6 @@ - #include "llvm/Support/CommandLine.h" - #include "llvm/Support/TargetSelect.h" - #include "llvm/Transforms/IPO.h" --#include "llvm/Transforms/IPO/PassManagerBuilder.h" - - namespace cl = llvm::cl; - --- -2.39.2 - |