mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
[XRay][NFC] Promote isTailCall() as virtual in TargetInstrInfo.
This change is broken out from D23986, where XRay detects tail call exits. llvm-svn: 280331
This commit is contained in:
parent
829e0caa72
commit
7b2700391a
@ -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…
x
Reference in New Issue
Block a user