Skip to content

Commit 055a3df

Browse files
committed
Merge with upstream.
1 parent 9cf2c55 commit 055a3df

File tree

8 files changed

+19
-37
lines changed

8 files changed

+19
-37
lines changed

llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,10 @@ class CallLowering {
226226
};
227227

228228
struct ValueHandler {
229+
MachineIRBuilder &MIRBuilder;
230+
MachineRegisterInfo &MRI;
231+
const bool IsIncomingArgumentHandler;
232+
229233
ValueHandler(bool IsIncoming, MachineIRBuilder &MIRBuilder,
230234
MachineRegisterInfo &MRI)
231235
: MIRBuilder(MIRBuilder), MRI(MRI),
@@ -308,13 +312,6 @@ class CallLowering {
308312
unsigned MaxSizeBits = 0);
309313

310314
virtual bool finalize(CCState &State) { return true; }
311-
312-
MachineIRBuilder &MIRBuilder;
313-
MachineRegisterInfo &MRI;
314-
CCAssignFn *AssignFn;
315-
316-
private:
317-
bool IsIncomingArgumentHandler;
318315
};
319316

320317
/// Base class for ValueHandlers used for arguments coming into the current

llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ class LegalizerHelper {
185185
void extractParts(Register Reg, LLT Ty, int NumParts,
186186
SmallVectorImpl<Register> &VRegs);
187187

188-
/// Version which handles irregular splits.
188+
/// Versions which handle irregular splits.
189189
bool extractParts(Register Reg, LLT RegTy, LLT MainTy,
190190
LLT &LeftoverTy,
191191
SmallVectorImpl<Register> &VRegs,

llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1215,17 +1215,12 @@ class LegalizerInfo {
12151215
}
12161216

12171217
virtual LegalizerHelper::LegalizeResult
1218-
legalizeCustomMaybeLegal(LegalizerHelper &Helper, MachineInstr &MI) const {
1218+
legalizeCustomMaybeLegal(LegalizerHelper &Helper, MachineInstr &MI,
1219+
LostDebugLocObserver &LocObserver) const {
12191220
return legalizeCustom(Helper, MI) ? LegalizerHelper::Legalized
12201221
: LegalizerHelper::UnableToLegalize;
12211222
}
12221223

1223-
virtual LegalizerHelper::LegalizeResult
1224-
legalizeCustomMaybeLegal(LegalizerHelper &Helper, MachineInstr &MI,
1225-
LostDebugLocObserver &) const {
1226-
return legalizeCustomMaybeLegal(Helper, MI);
1227-
}
1228-
12291224
/// \returns true if MI is either legal or has been legalized and false if not
12301225
/// legal.
12311226
/// Return true if MI is either legal or has been legalized and false

llvm/include/llvm/Support/MachineValueType.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1083,7 +1083,7 @@ namespace llvm {
10831083
/// base size.
10841084
TypeSize getStoreSize() const {
10851085
TypeSize BaseSize = getSizeInBits();
1086-
return {(BaseSize.getKnownMinSize() + 7) / 8, BaseSize.isScalable()};
1086+
return {divideCeil(BaseSize.getKnownMinSize(), 8), BaseSize.isScalable()};
10871087
}
10881088

10891089
/// Return the number of bits overwritten by a store of the specified value

llvm/lib/CodeGen/GlobalISel/CallLowering.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -716,6 +716,8 @@ bool CallLowering::handleAssignments(ValueHandler &Handler,
716716
ArgReg = MRI.createGenericVirtualRegister(p0);
717717
else {
718718
MachineFrameInfo &MFI = MF.getFrameInfo();
719+
// TODO: The memory size may be larger than the value we need to
720+
// store. We may need to adjust the offset for big endian targets.
719721
LLT MemTy = Handler.getStackValueStoreType(DL, VA, Args[i].Flags[0]);
720722
int FI = MFI.CreateStackObject(MemTy.getSizeInBytes(),
721723
DL.getPrefTypeAlign(Args[i].Ty), false);
@@ -855,6 +857,8 @@ bool CallLowering::handleAssignments(ValueHandler &Handler,
855857

856858
if (VA.getLocInfo() == CCValAssign::Indirect) {
857859
Register AddrReg;
860+
// TODO: The memory size may be larger than the value we need to
861+
// store. We may need to adjust the offset for big endian targets.
858862
LLT MemTy = Handler.getStackValueStoreType(DL, VA, Args[i].Flags[0]);
859863
LLT sIndex = LLT::scalar(DL.getIndexSizeInBits(0));
860864
MIRBuilder.materializePtrAdd(AddrReg, Args[i].Regs[0], sIndex,

llvm/lib/CodeGen/GlobalISel/Legalizer.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ static bool isArtifact(const MachineInstr &MI) {
103103
case TargetOpcode::G_CONCAT_VECTORS:
104104
case TargetOpcode::G_BUILD_VECTOR:
105105
case TargetOpcode::G_EXTRACT:
106-
case TargetOpcode::G_INSERT:
107106
return true;
108107
}
109108
}

llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4227,8 +4227,8 @@ LegalizerHelper::reduceLoadStoreWidth(GLoadStore &LdStMI, unsigned TypeIdx,
42274227

42284228
MIRBuilder.materializePtrAdd(NewAddrReg, AddrReg, OffsetTy, ByteOffset);
42294229

4230-
MachineMemOperand *NewMMO =
4231-
MF.getMachineMemOperand(&MMO, ByteOffset, PartTy);
4230+
MachineMemOperand *NewMMO =
4231+
MF.getMachineMemOperand(&MMO, ByteOffset, PartTy);
42324232

42334233
if (IsLoad) {
42344234
Register Dst = MRI.createGenericVirtualRegister(PartTy);

llvm/lib/Target/Z80/GISel/Z80CallLowering.cpp

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,7 @@ bool Z80CallLowering::lowerTailCall(MachineIRBuilder &MIRBuilder,
540540
// by -tailcallopt. For sibcalls, the memory operands for the call are
541541
// already available in the caller's incoming argument space.
542542
unsigned NumBytes = 0;
543+
OutgoingValueAssigner CalleeAssigner(CC_Z80);
543544
if (!IsSibCall) {
544545
// We aren't sibcalling, so we need to compute FPDiff. We need to do this
545546
// before handling assignments, because FPDiff must be known for memory
@@ -548,21 +549,19 @@ bool Z80CallLowering::lowerTailCall(MachineIRBuilder &MIRBuilder,
548549
SmallVector<CCValAssign, 16> OutLocs;
549550
CCState OutInfo(Info.CallConv, false, MF, OutLocs, F.getContext());
550551

551-
OutgoingValueAssigner CalleeAssigner(CC_Z80);
552-
determineAssignments(CalleeAssigner, OutArgs, OutInfo);
552+
if (!determineAssignments(CalleeAssigner, OutArgs, OutInfo))
553+
return false;
553554

554555
// FPDiff will be negative if this tail call requires more space than we
555556
// would automatically have in our incoming argument space. Positive if we
556557
// actually shrink the stack.
557558
FPDiff = NumReusableBytes - NumBytes;
558559
}
559560

560-
OutgoingValueAssigner Assigner(CC_Z80);
561561
// Do the actual argument marshalling.
562-
SmallVector<unsigned, 8> PhysRegs;
563562
TailCallArgHandler Handler(MIRBuilder, MRI, MIB, FPDiff);
564-
if (!determineAndHandleAssignments(Handler, Assigner, OutArgs, MIRBuilder,
565-
Info.CallConv, Info.IsVarArg))
563+
if (!determineAndHandleAssignments(Handler, CalleeAssigner, OutArgs,
564+
MIRBuilder, Info.CallConv, Info.IsVarArg))
566565
return false;
567566

568567
// If we have -tailcallopt, we need to adjust the stack. We'll do the call
@@ -684,23 +683,11 @@ bool Z80CallLowering::lowerCall(MachineIRBuilder &MIRBuilder,
684683
// implicit-define of the call instruction.
685684

686685
if (!InArgs.empty()) {
687-
SmallVector<Register, 8> NewRegs;
688-
689686
OutgoingValueAssigner Assigner(RetCC_Z80);
690687
CallReturnHandler Handler(MIRBuilder, MRI, MIB);
691688
if (!determineAndHandleAssignments(Handler, Assigner, InArgs, MIRBuilder,
692689
Info.CallConv, Info.IsVarArg))
693690
return false;
694-
695-
if (!NewRegs.empty()) {
696-
SmallVector<uint64_t, 8> Indices;
697-
uint64_t Index = 0;
698-
for (Register Reg : NewRegs) {
699-
Indices.push_back(Index);
700-
Index += MRI.getType(Reg).getSizeInBits();
701-
}
702-
MIRBuilder.buildSequence(Info.OrigRet.Regs[0], NewRegs, Indices);
703-
}
704691
}
705692

706693
CallSeqStart.addImm(Handler.getFrameSize())

0 commit comments

Comments
 (0)