mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-07 19:19:26 +00:00
DAG: Make mayBeEmittedAsTailCall parameter const
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@300603 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
632c283420
commit
663bdf65c5
@ -2807,7 +2807,7 @@ public:
|
||||
/// Return true if the target may be able emit the call instruction as a tail
|
||||
/// call. This is used by optimization passes to determine if it's profitable
|
||||
/// to duplicate return instructions to enable tailcall optimization.
|
||||
virtual bool mayBeEmittedAsTailCall(CallInst *) const {
|
||||
virtual bool mayBeEmittedAsTailCall(const CallInst *) const {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -10391,7 +10391,7 @@ bool AArch64TargetLowering::isUsedByReturnOnly(SDNode *N,
|
||||
// call. This will cause the optimizers to attempt to move, or duplicate,
|
||||
// return instructions to help enable tail call optimizations for this
|
||||
// instruction.
|
||||
bool AArch64TargetLowering::mayBeEmittedAsTailCall(CallInst *CI) const {
|
||||
bool AArch64TargetLowering::mayBeEmittedAsTailCall(const CallInst *CI) const {
|
||||
return CI->isTailCall();
|
||||
}
|
||||
|
||||
|
@ -593,7 +593,7 @@ private:
|
||||
}
|
||||
|
||||
bool isUsedByReturnOnly(SDNode *N, SDValue &Chain) const override;
|
||||
bool mayBeEmittedAsTailCall(CallInst *CI) const override;
|
||||
bool mayBeEmittedAsTailCall(const CallInst *CI) const override;
|
||||
bool getIndexedAddressParts(SDNode *Op, SDValue &Base, SDValue &Offset,
|
||||
ISD::MemIndexedMode &AM, bool &IsInc,
|
||||
SelectionDAG &DAG) const;
|
||||
|
@ -2633,7 +2633,7 @@ bool ARMTargetLowering::isUsedByReturnOnly(SDNode *N, SDValue &Chain) const {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ARMTargetLowering::mayBeEmittedAsTailCall(CallInst *CI) const {
|
||||
bool ARMTargetLowering::mayBeEmittedAsTailCall(const CallInst *CI) const {
|
||||
if (!Subtarget->supportsTailCall())
|
||||
return false;
|
||||
|
||||
|
@ -717,7 +717,7 @@ class InstrItineraryData;
|
||||
|
||||
bool isUsedByReturnOnly(SDNode *N, SDValue &Chain) const override;
|
||||
|
||||
bool mayBeEmittedAsTailCall(CallInst *CI) const override;
|
||||
bool mayBeEmittedAsTailCall(const CallInst *CI) const override;
|
||||
|
||||
SDValue getCMOV(const SDLoc &dl, EVT VT, SDValue FalseVal, SDValue TrueVal,
|
||||
SDValue ARMcc, SDValue CCR, SDValue Cmp,
|
||||
|
@ -635,7 +635,7 @@ HexagonTargetLowering::LowerReturn(SDValue Chain, CallingConv::ID CallConv,
|
||||
return DAG.getNode(HexagonISD::RET_FLAG, dl, MVT::Other, RetOps);
|
||||
}
|
||||
|
||||
bool HexagonTargetLowering::mayBeEmittedAsTailCall(CallInst *CI) const {
|
||||
bool HexagonTargetLowering::mayBeEmittedAsTailCall(const CallInst *CI) const {
|
||||
// If either no tail call or told not to tail call at all, don't.
|
||||
auto Attr =
|
||||
CI->getParent()->getParent()->getFnAttribute("disable-tail-calls");
|
||||
|
@ -195,7 +195,7 @@ namespace HexagonISD {
|
||||
const SmallVectorImpl<SDValue> &OutVals,
|
||||
const SDLoc &dl, SelectionDAG &DAG) const override;
|
||||
|
||||
bool mayBeEmittedAsTailCall(CallInst *CI) const override;
|
||||
bool mayBeEmittedAsTailCall(const CallInst *CI) const override;
|
||||
|
||||
/// If a physical register, this returns the register that receives the
|
||||
/// exception address on entry to an EH pad.
|
||||
|
@ -829,7 +829,7 @@ bool SystemZTargetLowering::allowTruncateForTailCall(Type *FromType,
|
||||
return isTruncateFree(FromType, ToType);
|
||||
}
|
||||
|
||||
bool SystemZTargetLowering::mayBeEmittedAsTailCall(CallInst *CI) const {
|
||||
bool SystemZTargetLowering::mayBeEmittedAsTailCall(const CallInst *CI) const {
|
||||
return CI->isTailCall();
|
||||
}
|
||||
|
||||
|
@ -454,7 +454,7 @@ public:
|
||||
MachineBasicBlock *BB) const override;
|
||||
SDValue LowerOperation(SDValue Op, SelectionDAG &DAG) const override;
|
||||
bool allowTruncateForTailCall(Type *, Type *) const override;
|
||||
bool mayBeEmittedAsTailCall(CallInst *CI) const override;
|
||||
bool mayBeEmittedAsTailCall(const CallInst *CI) const override;
|
||||
SDValue LowerFormalArguments(SDValue Chain, CallingConv::ID CallConv,
|
||||
bool isVarArg,
|
||||
const SmallVectorImpl<ISD::InputArg> &Ins,
|
||||
|
@ -2742,13 +2742,13 @@ static bool shouldGuaranteeTCO(CallingConv::ID CC, bool GuaranteedTailCallOpt) {
|
||||
return GuaranteedTailCallOpt && canGuaranteeTCO(CC);
|
||||
}
|
||||
|
||||
bool X86TargetLowering::mayBeEmittedAsTailCall(CallInst *CI) const {
|
||||
bool X86TargetLowering::mayBeEmittedAsTailCall(const CallInst *CI) const {
|
||||
auto Attr =
|
||||
CI->getParent()->getParent()->getFnAttribute("disable-tail-calls");
|
||||
if (!CI->isTailCall() || Attr.getValueAsString() == "true")
|
||||
return false;
|
||||
|
||||
CallSite CS(CI);
|
||||
ImmutableCallSite CS(CI);
|
||||
CallingConv::ID CalleeCC = CS.getCallingConv();
|
||||
if (!mayTailCallThisCC(CalleeCC))
|
||||
return false;
|
||||
|
@ -1207,7 +1207,7 @@ namespace llvm {
|
||||
|
||||
bool isUsedByReturnOnly(SDNode *N, SDValue &Chain) const override;
|
||||
|
||||
bool mayBeEmittedAsTailCall(CallInst *CI) const override;
|
||||
bool mayBeEmittedAsTailCall(const CallInst *CI) const override;
|
||||
|
||||
EVT getTypeForExtReturn(LLVMContext &Context, EVT VT,
|
||||
ISD::NodeType ExtendKind) const override;
|
||||
|
Loading…
x
Reference in New Issue
Block a user