diff options
author | Michael J. Spencer <bigcheesegs@gmail.com> | 2014-05-29 01:55:07 +0000 |
---|---|---|
committer | Michael J. Spencer <bigcheesegs@gmail.com> | 2014-05-29 01:55:07 +0000 |
commit | 8bfb46e790b8dbe3ccb7a79c530712fc3404fb50 (patch) | |
tree | 788a7a2d08d6eae9dcb1566ee9ffd2d96f87531c /lib/Transforms/IPO | |
parent | 7728610d24763bd948fea59bfbce21e2085e6879 (diff) | |
download | llvm-8bfb46e790b8dbe3ccb7a79c530712fc3404fb50.tar.gz llvm-8bfb46e790b8dbe3ccb7a79c530712fc3404fb50.tar.bz2 llvm-8bfb46e790b8dbe3ccb7a79c530712fc3404fb50.tar.xz |
Add LoadCombine pass.
This pass is disabled by default. Use -combine-loads to enable in -O[1-3]
Differential revision: http://reviews.llvm.org/D3580
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209791 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/IPO')
-rw-r--r-- | lib/Transforms/IPO/PassManagerBuilder.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/Transforms/IPO/PassManagerBuilder.cpp b/lib/Transforms/IPO/PassManagerBuilder.cpp index 38e1b8e166..c20c717de5 100644 --- a/lib/Transforms/IPO/PassManagerBuilder.cpp +++ b/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -53,6 +53,10 @@ static cl::opt<bool> RunLoopRerolling("reroll-loops", cl::Hidden, cl::desc("Run the loop rerolling pass")); +static cl::opt<bool> RunLoadCombine("combine-loads", cl::init(false), + cl::Hidden, + cl::desc("Run the load combining pass")); + PassManagerBuilder::PassManagerBuilder() { OptLevel = 2; SizeLevel = 0; @@ -65,6 +69,7 @@ PassManagerBuilder::PassManagerBuilder() { SLPVectorize = RunSLPVectorization; LoopVectorize = RunLoopVectorization; RerollLoops = RunLoopRerolling; + LoadCombine = RunLoadCombine; } PassManagerBuilder::~PassManagerBuilder() { @@ -236,6 +241,9 @@ void PassManagerBuilder::populateModulePassManager(PassManagerBase &MPM) { MPM.add(createLoopUnrollPass()); } + if (LoadCombine) + MPM.add(createLoadCombinePass()); + MPM.add(createAggressiveDCEPass()); // Delete dead instructions MPM.add(createCFGSimplificationPass()); // Merge & remove BBs MPM.add(createInstructionCombiningPass()); // Clean up after everything. @@ -352,6 +360,9 @@ void PassManagerBuilder::populateLTOPassManager(PassManagerBase &PM, // More scalar chains could be vectorized due to more alias information PM.add(createSLPVectorizerPass()); // Vectorize parallel scalar chains. + if (LoadCombine) + PM.add(createLoadCombinePass()); + // Cleanup and simplify the code after the scalar optimizations. PM.add(createInstructionCombiningPass()); addExtensionsToPM(EP_Peephole, PM); |