From a44c6c00a2ed1e6efd8d5240e34ccb5e0bb4a708 Mon Sep 17 00:00:00 2001 From: "Vikram S. Adve" Date: Sun, 31 Mar 2002 19:04:50 +0000 Subject: [PATCH] Added function getCallInstIndirectAddrVal() to set call interference for that value. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2074 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/SparcV9/SparcV9Internals.h | 4 +++- lib/Target/SparcV9/SparcV9RegInfo.cpp | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/Target/SparcV9/SparcV9Internals.h b/lib/Target/SparcV9/SparcV9Internals.h index 1de5496cbfe..7f836c7a20f 100644 --- a/lib/Target/SparcV9/SparcV9Internals.h +++ b/lib/Target/SparcV9/SparcV9Internals.h @@ -415,9 +415,11 @@ public: } - // To obtain the return value contained in a CALL machine instruction + // To obtain the return value and the indirect call address (if any) + // contained in a CALL machine instruction // const Value * getCallInstRetVal(const MachineInstr *CallMI) const; + const Value * getCallInstIndirectAddrVal(const MachineInstr *CallMI) const; // The following methods are used to generate "copy" machine instructions diff --git a/lib/Target/SparcV9/SparcV9RegInfo.cpp b/lib/Target/SparcV9/SparcV9RegInfo.cpp index 9a3c7bd0b5f..434816e0a6b 100644 --- a/lib/Target/SparcV9/SparcV9RegInfo.cpp +++ b/lib/Target/SparcV9/SparcV9RegInfo.cpp @@ -93,6 +93,7 @@ unsigned UltraSparcRegInfo::getStackPointer() const { //--------------------------------------------------------------------------- // Finds the return value of a sparc specific call instruction //--------------------------------------------------------------------------- + const Value * UltraSparcRegInfo::getCallInstRetVal(const MachineInstr *CallMI) const { unsigned OpCode = CallMI->getOpCode(); @@ -121,6 +122,13 @@ UltraSparcRegInfo::getCallInstRetVal(const MachineInstr *CallMI) const { } +const Value * +UltraSparcRegInfo::getCallInstIndirectAddrVal(const MachineInstr *CallMI) const +{ + return (CallMI->getOpCode() == JMPLCALL)? + CallMI->getOperand(0).getVRegValue() : NULL; +} + //--------------------------------------------------------------------------- // Finds the return address of a call sparc specific call instruction