diff options
Diffstat (limited to 'llvm/lib/Target/M68k/M68kISelLowering.cpp')
| -rw-r--r-- | llvm/lib/Target/M68k/M68kISelLowering.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/llvm/lib/Target/M68k/M68kISelLowering.cpp b/llvm/lib/Target/M68k/M68kISelLowering.cpp index 3e7cee9889d7..79b395f8f984 100644 --- a/llvm/lib/Target/M68k/M68kISelLowering.cpp +++ b/llvm/lib/Target/M68k/M68kISelLowering.cpp @@ -519,9 +519,10 @@ SDValue M68kTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI, // Analyze operands of the call, assigning locations to each operand. SmallVector<CCValAssign, 16> ArgLocs; - // It is empty for LibCall - const Function *CalleeFunc = CLI.CB ? CLI.CB->getCalledFunction() : nullptr; - M68kCCState CCInfo(*CalleeFunc, CallConv, IsVarArg, MF, ArgLocs, + SmallVector<Type *, 4> ArgTypes; + for (const auto &Arg : CLI.getArgs()) + ArgTypes.emplace_back(Arg.Ty); + M68kCCState CCInfo(ArgTypes, CallConv, IsVarArg, MF, ArgLocs, *DAG.getContext()); CCInfo.AnalyzeCallOperands(Outs, CC_M68k); @@ -876,8 +877,10 @@ SDValue M68kTargetLowering::LowerFormalArguments( // Assign locations to all of the incoming arguments. SmallVector<CCValAssign, 16> ArgLocs; - M68kCCState CCInfo(MF.getFunction(), CCID, IsVarArg, MF, ArgLocs, - *DAG.getContext()); + SmallVector<Type *, 4> ArgTypes; + for (const Argument &Arg : MF.getFunction().args()) + ArgTypes.emplace_back(Arg.getType()); + M68kCCState CCInfo(ArgTypes, CCID, IsVarArg, MF, ArgLocs, *DAG.getContext()); CCInfo.AnalyzeFormalArguments(Ins, CC_M68k); @@ -1975,7 +1978,7 @@ SDValue M68kTargetLowering::LowerSETCCCARRY(SDValue Op, M68k::CondCode CC = TranslateIntegerM68kCC(cast<CondCodeSDNode>(Cond)->get()); EVT CarryVT = Carry.getValueType(); - APInt NegOne = APInt::getAllOnesValue(CarryVT.getScalarSizeInBits()); + APInt NegOne = APInt::getAllOnes(CarryVT.getScalarSizeInBits()); Carry = DAG.getNode(M68kISD::ADD, DL, DAG.getVTList(CarryVT, MVT::i32), Carry, DAG.getConstant(NegOne, DL, CarryVT)); @@ -2199,7 +2202,7 @@ SDValue M68kTargetLowering::LowerSELECT(SDValue Op, SelectionDAG &DAG) const { Op2.getOpcode() == ISD::TRUNCATE) { SDValue T1 = Op1.getOperand(0), T2 = Op2.getOperand(0); if (T1.getValueType() == T2.getValueType() && - // Blacklist CopyFromReg to avoid partial register stalls. + // Block CopyFromReg so partial register stalls are avoided. T1.getOpcode() != ISD::CopyFromReg && T2.getOpcode() != ISD::CopyFromReg) { SDVTList VTs = DAG.getVTList(T1.getValueType(), MVT::Glue); |
