OSDN Git Service

Record CodeGen optimization level in the BranchFolding pass so that we can
authorBob Wilson <bob.wilson@apple.com>
Tue, 27 Oct 2009 23:49:38 +0000 (23:49 +0000)
committerBob Wilson <bob.wilson@apple.com>
Tue, 27 Oct 2009 23:49:38 +0000 (23:49 +0000)
commitcd4f04d6bcb7aefa24d92582fbadfe17519f4756
tree154762d67c0c4a8d677aeef3bd023b5a1f0f719a
parent03236140fa4ef316a605717e090276d6a0d42828
Record CodeGen optimization level in the BranchFolding pass so that we can
use it to control tail merging when there is a tradeoff between performance
and code size.  When there is only 1 instruction in the common tail, we have
been merging.  That can be good for code size but is a definite loss for
performance.  Now we will avoid tail merging in that case when the
optimization level is "Aggressive", i.e., "-O3".  Radar 7338114.

Since the IfConversion pass invokes BranchFolding, it too needs to know
the optimization level.  Note that I removed the RegisterPass instantiation
for IfConversion because it required a default constructor.  If someone
wants to keep that for some reason, we can add a default constructor with
a hard-wired optimization level.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85346 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/Passes.h
lib/CodeGen/BranchFolding.cpp
lib/CodeGen/BranchFolding.h
lib/CodeGen/IfConversion.cpp
lib/CodeGen/LLVMTargetMachine.cpp
lib/Target/ARM/ARMTargetMachine.cpp