diff options
| author | Chris Lattner <sabre@nondot.org> | 2002-12-17 02:48:57 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2002-12-17 02:48:57 +0000 |
| commit | 5afbc4c38718aca7853ddd5425644aa34650d603 (patch) | |
| tree | 6b71339da4defa7056432b224962ed365f3f2000 | |
| parent | 0a9aed1a1b7849f081b30953ed1e11f0a6626f9b (diff) | |
| download | bcm5719-llvm-5afbc4c38718aca7853ddd5425644aa34650d603.tar.gz bcm5719-llvm-5afbc4c38718aca7853ddd5425644aa34650d603.zip | |
Register allocator is responsible for spilling callee saved regs
llvm-svn: 5092
| -rw-r--r-- | llvm/lib/Target/X86/X86RegisterInfo.cpp | 22 |
1 files changed, 3 insertions, 19 deletions
diff --git a/llvm/lib/Target/X86/X86RegisterInfo.cpp b/llvm/lib/Target/X86/X86RegisterInfo.cpp index c96bbd86b01..fc87a02e3b3 100644 --- a/llvm/lib/Target/X86/X86RegisterInfo.cpp +++ b/llvm/lib/Target/X86/X86RegisterInfo.cpp @@ -117,14 +117,6 @@ void X86RegisterInfo::emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB = MF.front(); // Prolog goes in entry BB MachineBasicBlock::iterator MBBI = MBB.begin(); - // PUSH all callee-save registers - const unsigned* regs = getCalleeSaveRegs(); - while (*regs) { - MachineInstr *MI = BuildMI(X86::PUSHr32, 1).addReg(*regs); - MBBI = ++MBB.insert(MBBI, MI); - ++regs; - } - // PUSH ebp MachineInstr *MI = BuildMI(X86::PUSHr32, 1).addReg(X86::EBP); MBBI = ++MBB.insert(MBBI, MI); @@ -144,15 +136,7 @@ void X86RegisterInfo::emitEpilogue(MachineBasicBlock &MBB, assert((*MBBI)->getOpcode() == X86::RET && "Can only insert epilog into returning blocks"); - // insert LEAVE - MBBI = ++MBB.insert(MBBI, BuildMI(X86::LEAVE, 0)); - - // POP all callee-save registers in REVERSE ORDER - static const unsigned regs[] = { X86::EBX, X86::EDI, X86::ESI, - MRegisterInfo::NoRegister }; - unsigned idx = 0; - while (regs[idx]) { - MachineInstr *MI = BuildMI(X86::POPr32, 0, regs[idx++]); - MBBI = ++(MBB.insert(MBBI, MI)); - } + // insert LEAVE: mov ESP, EBP; pop EBP + MBBI = ++MBB.insert(MBBI, BuildMI(X86::MOVrr32, 1,X86::ESP).addReg(X86::EBP)); + MBBI = ++MBB.insert(MBBI, BuildMI(X86::POPr32, 1).addReg(X86::EBP)); } |

