reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
8989 CLI.Ins.clear(); 8990 Type *OrigRetTy = CLI.RetTy; 8993 auto &DL = CLI.DAG.getDataLayout(); 8994 ComputeValueVTs(*this, DL, CLI.RetTy, RetTys, &Offsets); 8996 if (CLI.IsPostTypeLegalization) { 9006 MVT RegisterVT = getRegisterType(CLI.RetTy->getContext(), RetVT); 9007 unsigned NumRegs = getNumRegisters(CLI.RetTy->getContext(), RetVT); 9016 GetReturnInfo(CLI.CallConv, CLI.RetTy, getReturnAttrs(CLI), Outs, *this, DL); 9016 GetReturnInfo(CLI.CallConv, CLI.RetTy, getReturnAttrs(CLI), Outs, *this, DL); 9016 GetReturnInfo(CLI.CallConv, CLI.RetTy, getReturnAttrs(CLI), Outs, *this, DL); 9019 this->CanLowerReturn(CLI.CallConv, CLI.DAG.getMachineFunction(), 9019 this->CanLowerReturn(CLI.CallConv, CLI.DAG.getMachineFunction(), 9020 CLI.IsVarArg, Outs, CLI.RetTy->getContext()); 9020 CLI.IsVarArg, Outs, CLI.RetTy->getContext()); 9028 uint64_t TySize = DL.getTypeAllocSize(CLI.RetTy); 9029 unsigned Align = DL.getPrefTypeAlignment(CLI.RetTy); 9030 MachineFunction &MF = CLI.DAG.getMachineFunction(); 9032 Type *StackSlotPtrType = PointerType::get(CLI.RetTy, 9035 DemoteStackSlot = CLI.DAG.getFrameIndex(DemoteStackIdx, getFrameIndexTy(DL)); 9050 CLI.getArgs().insert(CLI.getArgs().begin(), Entry); 9050 CLI.getArgs().insert(CLI.getArgs().begin(), Entry); 9051 CLI.NumFixedArgs += 1; 9052 CLI.RetTy = Type::getVoidTy(CLI.RetTy->getContext()); 9052 CLI.RetTy = Type::getVoidTy(CLI.RetTy->getContext()); 9056 CLI.IsTailCall = false; 9059 CLI.RetTy, CLI.CallConv, CLI.IsVarArg); 9059 CLI.RetTy, CLI.CallConv, CLI.IsVarArg); 9059 CLI.RetTy, CLI.CallConv, CLI.IsVarArg); 9068 MVT RegisterVT = getRegisterTypeForCallingConv(CLI.RetTy->getContext(), 9069 CLI.CallConv, VT); 9070 unsigned NumRegs = getNumRegistersForCallingConv(CLI.RetTy->getContext(), 9071 CLI.CallConv, VT); 9077 MyFlags.Used = CLI.IsReturnValueUsed; 9078 if (CLI.RetTy->isPointerTy()) { 9081 cast<PointerType>(CLI.RetTy)->getAddressSpace()); 9083 if (CLI.RetSExt) 9085 if (CLI.RetZExt) 9087 if (CLI.IsInReg) 9089 CLI.Ins.push_back(MyFlags); 9095 ArgListTy &Args = CLI.getArgs(); 9103 CLI.Ins.push_back(MyFlags); 9109 CLI.Outs.clear(); 9110 CLI.OutVals.clear(); 9119 FinalType, CLI.CallConv, CLI.IsVarArg); 9119 FinalType, CLI.CallConv, CLI.IsVarArg); 9123 Type *ArgTy = VT.getTypeForEVT(CLI.RetTy->getContext()); 9145 if (CLI.CallConv == CallingConv::X86_VectorCall && 9196 MVT PartVT = getRegisterTypeForCallingConv(CLI.RetTy->getContext(), 9197 CLI.CallConv, VT); 9198 unsigned NumParts = getNumRegistersForCallingConv(CLI.RetTy->getContext(), 9199 CLI.CallConv, VT); 9212 assert((CLI.RetTy == Args[i].Ty || 9213 (CLI.RetTy->isPointerTy() && Args[i].Ty->isPointerTy() && 9214 CLI.RetTy->getPointerAddressSpace() == 9228 (ExtendKind != ISD::ANY_EXTEND && CLI.RetSExt == Args[i].IsSExt && 9229 CLI.RetZExt == Args[i].IsZExt)) 9233 getCopyToParts(CLI.DAG, CLI.DL, Op, &Parts[0], NumParts, PartVT, 9233 getCopyToParts(CLI.DAG, CLI.DL, Op, &Parts[0], NumParts, PartVT, 9234 CLI.CS.getInstruction(), CLI.CallConv, ExtendKind); 9234 CLI.CS.getInstruction(), CLI.CallConv, ExtendKind); 9239 i < CLI.NumFixedArgs, 9249 CLI.Outs.push_back(MyFlags); 9250 CLI.OutVals.push_back(Parts[j]); 9254 CLI.Outs[CLI.Outs.size() - 1].Flags.setInConsecutiveRegsLast(); 9254 CLI.Outs[CLI.Outs.size() - 1].Flags.setInConsecutiveRegsLast(); 9259 CLI.Chain = LowerCall(CLI, InVals); 9259 CLI.Chain = LowerCall(CLI, InVals); 9262 CLI.InVals = InVals; 9265 assert(CLI.Chain.getNode() && CLI.Chain.getValueType() == MVT::Other && 9265 assert(CLI.Chain.getNode() && CLI.Chain.getValueType() == MVT::Other && 9267 assert((!CLI.IsTailCall || InVals.empty()) && 9269 assert((CLI.IsTailCall || InVals.size() == CLI.Ins.size()) && 9269 assert((CLI.IsTailCall || InVals.size() == CLI.Ins.size()) && 9276 if (CLI.IsTailCall) { 9277 CLI.DAG.setRoot(CLI.Chain); 9277 CLI.DAG.setRoot(CLI.Chain); 9282 for (unsigned i = 0, e = CLI.Ins.size(); i != e; ++i) { 9284 assert(EVT(CLI.Ins[i].VT) == InVals[i].getValueType() && 9310 SDValue Add = CLI.DAG.getNode(ISD::ADD, CLI.DL, PtrVT, DemoteStackSlot, 9310 SDValue Add = CLI.DAG.getNode(ISD::ADD, CLI.DL, PtrVT, DemoteStackSlot, 9311 CLI.DAG.getConstant(Offsets[i], CLI.DL, 9311 CLI.DAG.getConstant(Offsets[i], CLI.DL, 9313 SDValue L = CLI.DAG.getLoad( 9314 RetTys[i], CLI.DL, CLI.Chain, Add, 9314 RetTys[i], CLI.DL, CLI.Chain, Add, 9315 MachinePointerInfo::getFixedStack(CLI.DAG.getMachineFunction(), 9322 CLI.Chain = CLI.DAG.getNode(ISD::TokenFactor, CLI.DL, MVT::Other, Chains); 9322 CLI.Chain = CLI.DAG.getNode(ISD::TokenFactor, CLI.DL, MVT::Other, Chains); 9322 CLI.Chain = CLI.DAG.getNode(ISD::TokenFactor, CLI.DL, MVT::Other, Chains); 9327 if (CLI.RetSExt) 9329 else if (CLI.RetZExt) 9334 MVT RegisterVT = getRegisterTypeForCallingConv(CLI.RetTy->getContext(), 9335 CLI.CallConv, VT); 9336 unsigned NumRegs = getNumRegistersForCallingConv(CLI.RetTy->getContext(), 9337 CLI.CallConv, VT); 9339 ReturnValues.push_back(getCopyFromParts(CLI.DAG, CLI.DL, &InVals[CurReg], 9339 ReturnValues.push_back(getCopyFromParts(CLI.DAG, CLI.DL, &InVals[CurReg], 9341 CLI.CallConv, AssertOp)); 9349 return std::make_pair(SDValue(), CLI.Chain); 9352 SDValue Res = CLI.DAG.getNode(ISD::MERGE_VALUES, CLI.DL, 9352 SDValue Res = CLI.DAG.getNode(ISD::MERGE_VALUES, CLI.DL, 9353 CLI.DAG.getVTList(RetTys), ReturnValues); 9354 return std::make_pair(Res, CLI.Chain);