Summary:
This patch provides more staging for tail calls in XRay Arm32 . When the logging part of XRay is ready for tail calls, its support in the core part of XRay Arm32 may be as easy as changing the number passed to the handler from 1 to 2.
Coupled patch:
- https://reviews.llvm.org/D28674
Reviewers: dberris, rengolin
Reviewed By: dberris
Subscribers: llvm-commits, iid_iunknown, aemerson, rengolin, dberris
Differential Revision: https://reviews.llvm.org/D28673
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293185
91177308-0d34-0410-b5e6-
96231b3b80d8
return Subtarget.getFeatureBits()[ARM::HasV6KOps];
}
+bool ARMBaseInstrInfo::isTailCall(const MachineInstr &Inst) const
+{
+ switch (Inst.getOpcode()) {
+ case ARM::TAILJMPd:
+ case ARM::TAILJMPr:
+ case ARM::TCRETURNdi:
+ case ARM::TCRETURNri:
+ return true;
+ default:
+ return false;
+ }
+}
+
bool ARMBaseInstrInfo::isSwiftFastImmShift(const MachineInstr *MI) const {
if (MI->getNumOperands() < 4)
return true;
getNoopForMachoTarget(NopInst);
}
+ bool isTailCall(const MachineInstr &Inst) const override;
+
// Return the non-pre/post incrementing version of 'Opc'. Return 0
// if there is not such an opcode.
virtual unsigned getUnindexedOpcode(unsigned Opc) const =0;