From 9f0cecd4385d778c20859ad18ee43389e1337b33 Mon Sep 17 00:00:00 2001 From: Brian Gaeke Date: Sun, 10 Oct 2004 19:57:20 +0000 Subject: [PATCH] Model calls as *both* using *and* killing O0..O5, because callees use the argument values passed in (so they're not dead until *after* the call), and callees are free to modify those registers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16882 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Sparc/SparcInstrInfo.td | 3 ++- lib/Target/SparcV8/SparcV8InstrInfo.td | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/Target/Sparc/SparcInstrInfo.td b/lib/Target/Sparc/SparcInstrInfo.td index 5751f6f0260..c1b8d6e7971 100644 --- a/lib/Target/Sparc/SparcInstrInfo.td +++ b/lib/Target/Sparc/SparcInstrInfo.td @@ -193,7 +193,8 @@ def FBO : FPBranchV8<0b1111, "fbo">; // Section B.24 - Call and Link Instruction, p. 125 // This is the only Format 1 instruction -let Defs = [O0, O1, O2, O3, O4, O5], hasDelaySlot = 1, isCall = 1 in { +let Uses = [O0, O1, O2, O3, O4, O5], Defs = [O0, O1, O2, O3, O4, O5], + hasDelaySlot = 1, isCall = 1 in { // pc-relative call: def CALL : InstV8 { bits<30> disp; diff --git a/lib/Target/SparcV8/SparcV8InstrInfo.td b/lib/Target/SparcV8/SparcV8InstrInfo.td index 5751f6f0260..c1b8d6e7971 100644 --- a/lib/Target/SparcV8/SparcV8InstrInfo.td +++ b/lib/Target/SparcV8/SparcV8InstrInfo.td @@ -193,7 +193,8 @@ def FBO : FPBranchV8<0b1111, "fbo">; // Section B.24 - Call and Link Instruction, p. 125 // This is the only Format 1 instruction -let Defs = [O0, O1, O2, O3, O4, O5], hasDelaySlot = 1, isCall = 1 in { +let Uses = [O0, O1, O2, O3, O4, O5], Defs = [O0, O1, O2, O3, O4, O5], + hasDelaySlot = 1, isCall = 1 in { // pc-relative call: def CALL : InstV8 { bits<30> disp;