aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/Mips/MipsTargetMachine.cpp
diff options
context:
space:
mode:
authorAkira Hatanaka <ahatanaka@mips.com>2013-11-27 23:38:42 +0000
committerAkira Hatanaka <ahatanaka@mips.com>2013-11-27 23:38:42 +0000
commit168d4e5b20fde2fbe73b07f655ab5c7600de0f45 (patch)
tree5731d74895d41cf3c9631211e26a35b04c86fbff /llvm/lib/Target/Mips/MipsTargetMachine.cpp
parent6de7cd1672ad59cdb5c73edb7ec3398bfeb616dc (diff)
downloadllvm-168d4e5b20fde2fbe73b07f655ab5c7600de0f45.zip
llvm-168d4e5b20fde2fbe73b07f655ab5c7600de0f45.tar.gz
llvm-168d4e5b20fde2fbe73b07f655ab5c7600de0f45.tar.bz2
[mips] Implement the following optimizations using dominance information to
make PIC calls a little more efficient: 1. Remove instructions setting up $gp if it is known that a function has been called at least once. 2. Save the address of a called function in a register instead of loading it from the GOT at every call site. llvm-svn: 195892
Diffstat (limited to 'llvm/lib/Target/Mips/MipsTargetMachine.cpp')
-rw-r--r--llvm/lib/Target/Mips/MipsTargetMachine.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/Mips/MipsTargetMachine.cpp b/llvm/lib/Target/Mips/MipsTargetMachine.cpp
index 5046c1b..ab5677a 100644
--- a/llvm/lib/Target/Mips/MipsTargetMachine.cpp
+++ b/llvm/lib/Target/Mips/MipsTargetMachine.cpp
@@ -153,6 +153,7 @@ public:
virtual void addIRPasses();
virtual bool addInstSelector();
+ virtual void addMachineSSAOptimization();
virtual bool addPreEmitPass();
};
} // namespace
@@ -182,6 +183,11 @@ bool MipsPassConfig::addInstSelector() {
return false;
}
+void MipsPassConfig::addMachineSSAOptimization() {
+ addPass(createMipsOptimizePICCallPass(getMipsTargetMachine()));
+ TargetPassConfig::addMachineSSAOptimization();
+}
+
void MipsTargetMachine::addAnalysisPasses(PassManagerBase &PM) {
if (Subtarget.allowMixed16_32()) {
DEBUG(errs() << "No ");