mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-15 07:59:57 +00:00
[XRay][NFC] Promote isTailCall() as virtual in TargetInstrInfo.
This change is broken out from D23986, where XRay detects tail call exits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@280331 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2a3f18e638
commit
31a52c200b
@ -1481,6 +1481,11 @@ public:
|
||||
return None;
|
||||
}
|
||||
|
||||
/// Determines whether |Inst| is a tail call instruction.
|
||||
virtual bool isTailCall(const MachineInstr &Inst) const {
|
||||
return false;
|
||||
}
|
||||
|
||||
private:
|
||||
unsigned CallFrameSetupOpcode, CallFrameDestroyOpcode;
|
||||
unsigned CatchRetOpcode;
|
||||
|
@ -340,7 +340,10 @@ public:
|
||||
bool isSignExtendingLoad(const MachineInstr &MI) const;
|
||||
bool isSolo(const MachineInstr &MI) const;
|
||||
bool isSpillPredRegOp(const MachineInstr &MI) const;
|
||||
bool isTailCall(const MachineInstr &MI) const;
|
||||
|
||||
// Defined in Target.h.
|
||||
bool isTailCall(const MachineInstr &MI) const override;
|
||||
|
||||
bool isTC1(const MachineInstr &MI) const;
|
||||
bool isTC2(const MachineInstr &MI) const;
|
||||
bool isTC2Early(const MachineInstr &MI) const;
|
||||
|
@ -8061,6 +8061,29 @@ X86InstrInfo::getSerializableDirectMachineOperandTargetFlags() const {
|
||||
return makeArrayRef(TargetFlags);
|
||||
}
|
||||
|
||||
bool X86InstrInfo::isTailCall(const MachineInstr &Inst) const {
|
||||
switch (Inst.getOpcode()) {
|
||||
case X86::TCRETURNdi:
|
||||
case X86::TCRETURNmi:
|
||||
case X86::TCRETURNri:
|
||||
case X86::TCRETURNdi64:
|
||||
case X86::TCRETURNmi64:
|
||||
case X86::TCRETURNri64:
|
||||
case X86::TAILJMPd:
|
||||
case X86::TAILJMPm:
|
||||
case X86::TAILJMPr:
|
||||
case X86::TAILJMPd64:
|
||||
case X86::TAILJMPm64:
|
||||
case X86::TAILJMPr64:
|
||||
case X86::TAILJMPd64_REX:
|
||||
case X86::TAILJMPm64_REX:
|
||||
case X86::TAILJMPr64_REX:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
namespace {
|
||||
/// Create Global Base Reg pass. This initializes the PIC
|
||||
/// global base register for x86-32.
|
||||
|
@ -541,6 +541,8 @@ public:
|
||||
ArrayRef<std::pair<unsigned, const char *>>
|
||||
getSerializableDirectMachineOperandTargetFlags() const override;
|
||||
|
||||
bool isTailCall(const MachineInstr &Inst) const override;
|
||||
|
||||
protected:
|
||||
/// Commutes the operands in the given instruction by changing the operands
|
||||
/// order and/or changing the instruction's opcode and/or the immediate value
|
||||
|
Loading…
Reference in New Issue
Block a user