diff options
author | Ahmed Bougacha <ahmed.bougacha@gmail.com> | 2015-06-04 20:39:23 +0000 |
---|---|---|
committer | Ahmed Bougacha <ahmed.bougacha@gmail.com> | 2015-06-04 20:39:23 +0000 |
commit | 8207641251706ea808df6d2a1ea8f87b8ee04c6d (patch) | |
tree | 9b735ef006a3b1e8bb4ac9a58e4642f69cc81e53 /llvm/lib/Target/ARM/ARMTargetMachine.cpp | |
parent | a1c4da99f662b7dbee4a34a64fe5659c4d6d08f3 (diff) | |
download | llvm-8207641251706ea808df6d2a1ea8f87b8ee04c6d.zip llvm-8207641251706ea808df6d2a1ea8f87b8ee04c6d.tar.gz llvm-8207641251706ea808df6d2a1ea8f87b8ee04c6d.tar.bz2 |
[GlobalMerge] Take into account minsize on Global users' parents.
Now that we can look at users, we can trivially do this: when we would
have otherwise disabled GlobalMerge (currently -O<3), we can just run
it for minsize functions, as it's usually a codesize win.
Differential Revision: http://reviews.llvm.org/D10054
llvm-svn: 239087
Diffstat (limited to 'llvm/lib/Target/ARM/ARMTargetMachine.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/ARMTargetMachine.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/lib/Target/ARM/ARMTargetMachine.cpp b/llvm/lib/Target/ARM/ARMTargetMachine.cpp index e794fb7..0f98d52 100644 --- a/llvm/lib/Target/ARM/ARMTargetMachine.cpp +++ b/llvm/lib/Target/ARM/ARMTargetMachine.cpp @@ -339,15 +339,18 @@ void ARMPassConfig::addIRPasses() { } bool ARMPassConfig::addPreISel() { - if ((TM->getOptLevel() == CodeGenOpt::Aggressive && + if ((TM->getOptLevel() != CodeGenOpt::None && EnableGlobalMerge == cl::BOU_UNSET) || - EnableGlobalMerge == cl::BOU_TRUE) + EnableGlobalMerge == cl::BOU_TRUE) { // FIXME: This is using the thumb1 only constant value for // maximal global offset for merging globals. We may want // to look into using the old value for non-thumb1 code of // 4095 based on the TargetMachine, but this starts to become // tricky when doing code gen per function. - addPass(createGlobalMergePass(TM, 127)); + bool OnlyOptimizeForSize = (TM->getOptLevel() < CodeGenOpt::Aggressive) && + (EnableGlobalMerge == cl::BOU_UNSET); + addPass(createGlobalMergePass(TM, 127, OnlyOptimizeForSize)); + } return false; } |