From 648f00c2f0eb29c0ae2a333fa0bfa55970059f08 Mon Sep 17 00:00:00 2001 From: Akira Hatanaka Date: Fri, 24 Feb 2012 22:34:47 +0000 Subject: Add an option to use a virtual register as the global base register instead of reserving a physical register ($gp or $28) for that purpose. This will completely eliminate loads that restore the value of $gp after every function call, if the register allocator assigns a callee-saved register, or eliminate unnecessary loads if it assigns a temporary register. example: .cpload $25 // set $gp. ... .cprestore 16 // store $gp to stack slot 16($sp). ... jalr $25 // function call. clobbers $gp. lw $gp, 16($sp) // not emitted if callee-saved reg is chosen. ... lw $2, 4($gp) ... jalr $25 // function call. lw $gp, 16($sp) // not emitted if $gp is not live after this instruction. ... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151402 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Mips/MipsTargetMachine.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/Target/Mips/MipsTargetMachine.cpp') diff --git a/lib/Target/Mips/MipsTargetMachine.cpp b/lib/Target/Mips/MipsTargetMachine.cpp index ff766faad6..8806aafe21 100644 --- a/lib/Target/Mips/MipsTargetMachine.cpp +++ b/lib/Target/Mips/MipsTargetMachine.cpp @@ -106,7 +106,7 @@ public: virtual bool addInstSelector(); virtual bool addPreRegAlloc(); - virtual bool addPostRegAlloc(); + virtual bool addPreSched2(); virtual bool addPreEmitPass(); }; } // namespace @@ -140,7 +140,7 @@ bool MipsPassConfig::addPreRegAlloc() { return true; } -bool MipsPassConfig::addPostRegAlloc() { +bool MipsPassConfig::addPreSched2() { PM.add(createMipsExpandPseudoPass(getMipsTargetMachine())); return true; } -- cgit v1.2.3