forked from OSchip/llvm-project
[PartialInlining] Add internal options to enable partial inlining in pass pipeline (off by default)
1. Legacy: -mllvm -enable-partial-inlining 2. New: -mllvm -enable-npm-partial-inlining -fexperimental-new-pass-manager Differential Revision: http://reviews.llvm.org/D33382 llvm-svn: 303567
This commit is contained in:
parent
4c047f8931
commit
126157c3b4
|
@ -150,6 +150,10 @@ using namespace llvm;
|
|||
|
||||
static cl::opt<unsigned> MaxDevirtIterations("pm-max-devirt-iterations",
|
||||
cl::ReallyHidden, cl::init(4));
|
||||
static cl::opt<bool>
|
||||
RunPartialInlining("enable-npm-partial-inlining", cl::init(false),
|
||||
cl::Hidden, cl::ZeroOrMore,
|
||||
cl::desc("Run Partial inlinining pass"));
|
||||
|
||||
static cl::opt<bool> EnableGVNHoist(
|
||||
"enable-npm-gvn-hoist", cl::init(false), cl::Hidden,
|
||||
|
@ -552,6 +556,11 @@ PassBuilder::buildPerModuleDefaultPipeline(OptimizationLevel Level,
|
|||
// At this point, we expect to have canonical and simple IR which we begin
|
||||
// *optimizing* for efficient execution going forward.
|
||||
|
||||
// Run partial inlining pass to partially inline functions that have
|
||||
// large bodies.
|
||||
if (RunPartialInlining)
|
||||
MPM.addPass(PartialInlinerPass());
|
||||
|
||||
// Eliminate externally available functions now that inlining is over -- we
|
||||
// won't emit these anyways.
|
||||
MPM.addPass(EliminateAvailableExternallyPass());
|
||||
|
|
|
@ -44,8 +44,12 @@
|
|||
using namespace llvm;
|
||||
|
||||
static cl::opt<bool>
|
||||
RunLoopVectorization("vectorize-loops", cl::Hidden,
|
||||
cl::desc("Run the Loop vectorization passes"));
|
||||
RunPartialInlining("enable-partial-inlining", cl::init(false), cl::Hidden,
|
||||
cl::ZeroOrMore, cl::desc("Run Partial inlinining pass"));
|
||||
|
||||
static cl::opt<bool>
|
||||
RunLoopVectorization("vectorize-loops", cl::Hidden,
|
||||
cl::desc("Run the Loop vectorization passes"));
|
||||
|
||||
static cl::opt<bool>
|
||||
RunSLPVectorization("vectorize-slp", cl::Hidden,
|
||||
|
@ -516,6 +520,8 @@ void PassManagerBuilder::populateModulePassManager(
|
|||
// 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());
|
||||
if (RunPartialInlining)
|
||||
MPM.add(createPartialInliningPass());
|
||||
|
||||
if (!DisableUnitAtATime && OptLevel > 1 && !PrepareForLTO &&
|
||||
!PrepareForThinLTO)
|
||||
|
|
Loading…
Reference in New Issue