From 2a2131ac4739cd9229b2833cac796013746277b1 Mon Sep 17 00:00:00 2001 From: Jonas Paulsson Date: Thu, 4 Dec 2025 20:45:21 +0100 Subject: [PATCH] Remove PartBase in LowerArguments(). --- llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 4 +--- llvm/lib/Target/SystemZ/SystemZISelLowering.cpp | 9 +-------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index 09a0673bfe1bb..4fc06bd4244ed 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -11848,7 +11848,6 @@ void SelectionDAGISel::LowerArguments(const Function &F) { SmallVector Types; ComputeValueTypes(DAG.getDataLayout(), Arg.getType(), Types); bool isArgValueUsed = !Arg.use_empty(); - unsigned PartBase = 0; Type *FinalType = Arg.getType(); if (Arg.hasAttribute(Attribute::ByVal)) FinalType = Arg.getParamByValType(); @@ -11967,7 +11966,7 @@ void SelectionDAGISel::LowerArguments(const Function &F) { // return values. ISD::InputArg MyFlags( Flags, RegisterVT, VT, ArgTy, isArgValueUsed, ArgNo, - PartBase + i * RegisterVT.getStoreSize().getKnownMinValue()); + i * RegisterVT.getStoreSize().getKnownMinValue()); if (NumRegs > 1 && i == 0) MyFlags.Flags.setSplit(); // if it isn't first piece, alignment must be 1 @@ -11980,7 +11979,6 @@ void SelectionDAGISel::LowerArguments(const Function &F) { } if (NeedsRegBlock && Value == NumValues - 1) Ins[Ins.size() - 1].Flags.setInConsecutiveRegsLast(); - PartBase += VT.getStoreSize().getKnownMinValue(); } } diff --git a/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp b/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp index 2511d08a6d0ef..d803bc37f8fc0 100644 --- a/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp +++ b/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp @@ -2099,17 +2099,10 @@ SDValue SystemZTargetLowering::LowerFormalArguments( MVT PartVT; unsigned NumParts; if (analyzeArgSplit(Ins, ArgLocs, I, PartVT, NumParts)) { - // TODO: It is strange that while LowerCallTo() sets the PartOffset - // relative to the first split part LowerArguments() sets the offset - // from the beginning of the struct. So with {i32, i256}, the - // PartOffset for the i256 parts are differently handled. Try to - // remove that difference and use PartOffset directly here (instead - // of SplitBaseOffs). - unsigned SplitBaseOffs = Ins[I].PartOffset; for (unsigned PartIdx = 1; PartIdx < NumParts; ++PartIdx) { ++I; CCValAssign &PartVA = ArgLocs[I]; - unsigned PartOffset = Ins[I].PartOffset - SplitBaseOffs; + unsigned PartOffset = Ins[I].PartOffset; SDValue Address = DAG.getNode(ISD::ADD, DL, PtrVT, ArgValue, DAG.getIntPtrConstant(PartOffset, DL)); InVals.push_back(DAG.getLoad(PartVA.getValVT(), DL, Chain, Address,