diff options
author | Nick Lewycky <nicholas@mxc.ca> | 2014-09-13 21:46:00 +0000 |
---|---|---|
committer | Nick Lewycky <nicholas@mxc.ca> | 2014-09-13 21:46:00 +0000 |
commit | 9e6d1848032043f55b56e6160613c0b295ca81ad (patch) | |
tree | fc4c18a27cbec3b8e1e20f2efc0d13eaacdc2302 /llvm/lib | |
parent | 5d26d0435713245fbd3f265148662589688ed0da (diff) | |
download | bcm5719-llvm-9e6d1848032043f55b56e6160613c0b295ca81ad.tar.gz bcm5719-llvm-9e6d1848032043f55b56e6160613c0b295ca81ad.zip |
Add control of function merging to the PMBuilder.
llvm-svn: 217731
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Transforms/IPO/PassManagerBuilder.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp index 1b9d8c16060..d02e6975a19 100644 --- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp +++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -91,6 +91,7 @@ PassManagerBuilder::PassManagerBuilder() { VerifyInput = false; VerifyOutput = false; StripDebug = false; + MergeFunctions = false; } PassManagerBuilder::~PassManagerBuilder() { @@ -330,6 +331,10 @@ void PassManagerBuilder::populateModulePassManager(PassManagerBase &MPM) { MPM.add(createConstantMergePass()); // Merge dup global constants } } + + if (MergeFunctions) + MPM.add(createMergeFunctionsPass()); + addExtensionsToPM(EP_OptimizerLast, MPM); } @@ -427,6 +432,11 @@ void PassManagerBuilder::addLTOOptimizationPasses(PassManagerBase &PM) { // Now that we have optimized the program, discard unreachable functions. PM.add(createGlobalDCEPass()); + + // FIXME: this is profitable (for compiler time) to do at -O0 too, but + // currently it damages debug info. + if (MergeFunctions) + PM.add(createMergeFunctionsPass()); } void PassManagerBuilder::populateLTOPassManager(PassManagerBase &PM, |