Author: dsanders Date: Mon Dec 1 09:14:34 2014 New Revision: 223032 URL: http://llvm.org/viewvc/llvm-project?rev=223032&view=rev Log: Merged from r221053:
[mips] Removed MipsCC::fixedArgFn(). NFC Summary: There is one remaining trace of it in MipsCC::analyzeCallOperands() where Mips16 might override the calling convention. This will moved into tablegen-erated code later. Reviewers: vmedic Reviewed By: vmedic Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D5966 Modified: llvm/branches/release_35/lib/Target/Mips/MipsISelLowering.cpp llvm/branches/release_35/lib/Target/Mips/MipsISelLowering.h Modified: llvm/branches/release_35/lib/Target/Mips/MipsISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_35/lib/Target/Mips/MipsISelLowering.cpp?rev=223032&r1=223031&r2=223032&view=diff ============================================================================== --- llvm/branches/release_35/lib/Target/Mips/MipsISelLowering.cpp (original) +++ llvm/branches/release_35/lib/Target/Mips/MipsISelLowering.cpp Mon Dec 1 09:14:34 2014 @@ -2533,9 +2533,7 @@ MipsTargetLowering::LowerCall(TargetLowe SmallVector<CCValAssign, 16> ArgLocs; CCState CCInfo(CallConv, IsVarArg, DAG.getMachineFunction(), getTargetMachine(), ArgLocs, *DAG.getContext()); - MipsCC::SpecialCallingConvType SpecialCallingConv = - getSpecialCallingConv(Callee); - MipsCC MipsCCInfo(CallConv, Subtarget, CCInfo, SpecialCallingConv); + MipsCC MipsCCInfo(CallConv, Subtarget, CCInfo); MipsCCInfo.analyzeCallOperands(Outs, IsVarArg, Subtarget.abiUsesSoftFloat(), @@ -3495,11 +3493,12 @@ static bool originalTypeIsF128(const Typ } MipsTargetLowering::MipsCC::SpecialCallingConvType - MipsTargetLowering::getSpecialCallingConv(SDValue Callee) const { +MipsTargetLowering::MipsCC::getSpecialCallingConv(const SDNode *Callee) const { MipsCC::SpecialCallingConvType SpecialCallingConv = MipsCC::NoSpecialCallingConv; if (Subtarget.inMips16HardFloat()) { - if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(Callee)) { + if (const GlobalAddressSDNode *G = + dyn_cast<const GlobalAddressSDNode>(Callee)) { llvm::StringRef Sym = G->getGlobal()->getName(); Function *F = G->getGlobal()->getParent()->getFunction(Sym); if (F && F->hasFnAttribute("__Mips16RetHelper")) { @@ -3510,11 +3509,10 @@ MipsTargetLowering::MipsCC::SpecialCalli return SpecialCallingConv; } -MipsTargetLowering::MipsCC::MipsCC( - CallingConv::ID CC, const MipsSubtarget &Subtarget_, CCState &Info, - MipsCC::SpecialCallingConvType SpecialCallingConv_) - : CCInfo(Info), CallConv(CC), Subtarget(Subtarget_), - SpecialCallingConv(SpecialCallingConv_) { +MipsTargetLowering::MipsCC::MipsCC(CallingConv::ID CC, + const MipsSubtarget &Subtarget_, + CCState &Info) + : CCInfo(Info), CallConv(CC), Subtarget(Subtarget_) { // Pre-allocate reserved argument area. CCInfo.AllocateStack(reservedArgArea(), 1); } @@ -3524,11 +3522,16 @@ void MipsTargetLowering::MipsCC:: analyzeCallOperands(const SmallVectorImpl<ISD::OutputArg> &Args, bool IsVarArg, bool IsSoftFloat, const SDNode *CallNode, std::vector<ArgListEntry> &FuncArgs) { + MipsCC::SpecialCallingConvType SpecialCallingConv = + getSpecialCallingConv(CallNode); assert((CallConv != CallingConv::Fast || !IsVarArg) && "CallingConv::Fast shouldn't be used for vararg functions."); unsigned NumOpnds = Args.size(); - llvm::CCAssignFn *FixedFn = fixedArgFn(); + llvm::CCAssignFn *FixedFn = CC_Mips_FixedArg; + if (CallConv != CallingConv::Fast && + SpecialCallingConv == Mips16RetHelperConv) + FixedFn = CC_Mips16RetHelper; for (unsigned I = 0; I != NumOpnds; ++I) { MVT ArgVT = Args[I].VT; @@ -3562,7 +3565,6 @@ void MipsTargetLowering::MipsCC:: analyzeFormalArguments(const SmallVectorImpl<ISD::InputArg> &Args, bool IsSoftFloat, Function::const_arg_iterator FuncArg) { unsigned NumArgs = Args.size(); - llvm::CCAssignFn *FixedFn = fixedArgFn(); unsigned CurArgIdx = 0; for (unsigned I = 0; I != NumArgs; ++I) { @@ -3578,7 +3580,7 @@ analyzeFormalArguments(const SmallVector MVT RegVT = getRegVT(ArgVT, FuncArg->getType(), nullptr, IsSoftFloat); - if (!FixedFn(I, ArgVT, RegVT, CCValAssign::Full, ArgFlags, CCInfo)) + if (!CC_Mips_FixedArg(I, ArgVT, RegVT, CCValAssign::Full, ArgFlags, CCInfo)) continue; #ifndef NDEBUG @@ -3623,14 +3625,6 @@ const ArrayRef<MCPhysReg> MipsTargetLowe return makeArrayRef(Mips64IntRegs); } -llvm::CCAssignFn *MipsTargetLowering::MipsCC::fixedArgFn() const { - if (CallConv != CallingConv::Fast && - SpecialCallingConv == Mips16RetHelperConv) - return CC_Mips16RetHelper; - - return CC_Mips_FixedArg; -} - const MCPhysReg *MipsTargetLowering::MipsCC::shadowRegs() const { return Subtarget.isABI_O32() ? O32IntRegs : Mips64DPRegs; } Modified: llvm/branches/release_35/lib/Target/Mips/MipsISelLowering.h URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_35/lib/Target/Mips/MipsISelLowering.h?rev=223032&r1=223031&r2=223032&view=diff ============================================================================== --- llvm/branches/release_35/lib/Target/Mips/MipsISelLowering.h (original) +++ llvm/branches/release_35/lib/Target/Mips/MipsISelLowering.h Mon Dec 1 09:14:34 2014 @@ -356,8 +356,7 @@ namespace llvm { }; MipsCC(CallingConv::ID CallConv, const MipsSubtarget &Subtarget, - CCState &Info, - SpecialCallingConvType SpecialCallingConv = NoSpecialCallingConv); + CCState &Info); void analyzeCallOperands(const SmallVectorImpl<ISD::OutputArg> &Outs, bool IsVarArg, bool IsSoftFloat, @@ -392,9 +391,6 @@ namespace llvm { /// use of registers to pass byval arguments. bool useRegsForByval() const { return CallConv != CallingConv::Fast; } - /// Return the function that analyzes fixed argument list functions. - llvm::CCAssignFn *fixedArgFn() const; - const MCPhysReg *shadowRegs() const; void allocateRegs(ByValArgInfo &ByVal, unsigned ByValSize, @@ -411,10 +407,11 @@ namespace llvm { void analyzeReturn(const SmallVectorImpl<Ty> &RetVals, bool IsSoftFloat, const SDNode *CallNode, const Type *RetTy) const; + SpecialCallingConvType getSpecialCallingConv(const SDNode *Callee) const; + CCState &CCInfo; CallingConv::ID CallConv; const MipsSubtarget &Subtarget; - SpecialCallingConvType SpecialCallingConv; SmallVector<ByValArgInfo, 2> ByValArgs; }; protected: @@ -445,8 +442,6 @@ namespace llvm { SDValue getTargetNode(ConstantPoolSDNode *N, EVT Ty, SelectionDAG &DAG, unsigned Flag) const; - MipsCC::SpecialCallingConvType getSpecialCallingConv(SDValue Callee) const; - // Lower Operand helpers SDValue LowerCallResult(SDValue Chain, SDValue InFlag, CallingConv::ID CallConv, bool isVarArg, _______________________________________________ llvm-branch-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/llvm-branch-commits
