Lines Matching full:callee
2871 // The prolog code of the callee may store up to 8 GPR argument registers to
2911 PPCTargetLowering::IsEligibleForTailCallOptimization(SDValue Callee,
2938 if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(Callee))
3151 unsigned PrepareCall(SelectionDAG &DAG, SDValue &Callee, SDValue &InFlag,
3167 if (SDNode *Dest = isBLACompatibleAddress(Callee, DAG)) {
3169 Callee = SDValue(Dest, 0);
3173 if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(Callee)) {
3190 // If the callee is a GlobalAddress/ExternalSymbol node (quite common,
3193 Callee = DAG.getTargetGlobalAddress(G->getGlobal(), dl,
3194 Callee.getValueType(),
3200 if (ExternalSymbolSDNode *S = dyn_cast<ExternalSymbolSDNode>(Callee)) {
3212 Callee = DAG.getTargetExternalSymbol(S->getSymbol(), Callee.getValueType(),
3220 SDValue MTCTROps[] = {Chain, Callee, InFlag};
3235 // 3. Load the TOC of the callee from the function descriptor into r2.
3239 // 6. On return of the callee, the TOC of the caller needs to be
3245 // between the load of the callee TOC and the branch to the callee, which
3246 // results in the TOC access going through the TOC of the callee instead
3261 SDValue AddPtr = DAG.getNode(ISD::ADD, dl, MVT::i64, Callee, PtrOff);
3272 // Load TOC of the callee into r2. We are using a target-specific load
3280 Callee, InFlag);
3298 Callee.setNode(0);
3302 // Add CTR register as callee so a bctr can be emitted later.
3307 // If this is a direct call, pass the chain and the callee.
3308 if (Callee.getNode()) {
3310 Ops.push_back(Callee);
3326 bool isLocalCall(const SDValue &Callee)
3328 if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(Callee))
3387 SDValue &Callee,
3393 unsigned CallOpc = PrepareCall(DAG, Callee, InFlag, Chain, dl, SPDiff,
3401 // When performing tail call optimization the callee pops its arguments off
3419 assert(((Callee.getOpcode() == ISD::Register &&
3420 cast<RegisterSDNode>(Callee)->getReg() == PPC::CTR) ||
3421 Callee.getOpcode() == ISD::TargetExternalSymbol ||
3422 Callee.getOpcode() == ISD::TargetGlobalAddress ||
3423 isa<ConstantSDNode>(Callee)) &&
3430 // SVR4 ABI. At link time, if caller and callee are in a different module and
3432 // function which saves the current TOC, loads the TOC of the callee and
3433 // branches to the callee. The NOP will be replaced with a load instruction
3435 // stack frame. If caller and callee belong to the same module (and have the
3451 } else if ((CallOpc == PPCISD::CALL) && !isLocalCall(Callee)) {
3485 SDValue Callee = CLI.Callee;
3491 isTailCall = IsEligibleForTailCallOptimization(Callee, CallConv, isVarArg,
3496 return LowerCall_64SVR4(Chain, Callee, CallConv, isVarArg,
3500 return LowerCall_32SVR4(Chain, Callee, CallConv, isVarArg,
3505 return LowerCall_Darwin(Chain, Callee, CallConv, isVarArg,
3511 PPCTargetLowering::LowerCall_32SVR4(SDValue Chain, SDValue Callee,
3635 // this copy to the callee.
3663 // frame to the callee.
3721 RegsToPass, InFlag, Chain, Callee, SPDiff, NumBytes,
3746 PPCTargetLowering::LowerCall_64SVR4(SDValue Chain, SDValue Callee,
3899 // THE CALLEE in the event that the callee takes the address of any
4083 !dyn_cast<GlobalAddressSDNode>(Callee) &&
4084 !dyn_cast<ExternalSymbolSDNode>(Callee) &&
4085 !isBLACompatibleAddress(Callee, DAG)) {
4093 // R12 must contain the address of an indirect callee. This does not
4096 RegsToPass.push_back(std::make_pair((unsigned)PPC::X12, Callee));
4113 RegsToPass, InFlag, Chain, Callee, SPDiff, NumBytes,
4118 PPCTargetLowering::LowerCall_Darwin(SDValue Chain, SDValue Callee,
4438 // On Darwin, R12 must contain the address of an indirect callee. This does
4442 !dyn_cast<GlobalAddressSDNode>(Callee) &&
4443 !dyn_cast<ExternalSymbolSDNode>(Callee) &&
4444 !isBLACompatibleAddress(Callee, DAG))
4446 PPC::R12), Callee));
4462 RegsToPass, InFlag, Chain, Callee, SPDiff, NumBytes,