mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
AArch64/GlobalISel: Cleanup unnecessary size checks in call lowering
The CCValAssign types should now be accurate, so these are no longer necessary.
This commit is contained in:
parent
6df259fb43
commit
2b17cee2de
@ -161,8 +161,6 @@ struct IncomingArgHandler : public CallLowering::IncomingValueHandler {
|
|||||||
MachinePointerInfo &MPO, CCValAssign &VA) override {
|
MachinePointerInfo &MPO, CCValAssign &VA) override {
|
||||||
MachineFunction &MF = MIRBuilder.getMF();
|
MachineFunction &MF = MIRBuilder.getMF();
|
||||||
|
|
||||||
// The reported memory location may be wider than the value.
|
|
||||||
const LLT RealRegTy = MRI.getType(ValVReg);
|
|
||||||
LLT ValTy(VA.getValVT());
|
LLT ValTy(VA.getValVT());
|
||||||
LLT LocTy(VA.getLocVT());
|
LLT LocTy(VA.getLocVT());
|
||||||
|
|
||||||
@ -173,15 +171,7 @@ struct IncomingArgHandler : public CallLowering::IncomingValueHandler {
|
|||||||
auto MMO = MF.getMachineMemOperand(
|
auto MMO = MF.getMachineMemOperand(
|
||||||
MPO, MachineMemOperand::MOLoad | MachineMemOperand::MOInvariant, LocTy,
|
MPO, MachineMemOperand::MOLoad | MachineMemOperand::MOInvariant, LocTy,
|
||||||
inferAlignFromPtrInfo(MF, MPO));
|
inferAlignFromPtrInfo(MF, MPO));
|
||||||
|
MIRBuilder.buildLoad(ValVReg, Addr, *MMO);
|
||||||
if (RealRegTy.getSizeInBits() == ValTy.getSizeInBits()) {
|
|
||||||
// No extension information, or no extension necessary. Load into the
|
|
||||||
// incoming parameter type directly.
|
|
||||||
MIRBuilder.buildLoad(ValVReg, Addr, *MMO);
|
|
||||||
} else {
|
|
||||||
auto Tmp = MIRBuilder.buildLoad(LocTy, Addr, *MMO);
|
|
||||||
MIRBuilder.buildTrunc(ValVReg, Tmp);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// How the physical register gets marked varies between formal
|
/// How the physical register gets marked varies between formal
|
||||||
@ -302,10 +292,6 @@ struct OutgoingArgHandler : public CallLowering::OutgoingValueHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ValVReg = extendRegister(ValVReg, VA, MaxSize);
|
ValVReg = extendRegister(ValVReg, VA, MaxSize);
|
||||||
const LLT RegTy = MRI.getType(ValVReg);
|
|
||||||
|
|
||||||
if (RegTy.getSizeInBits() < LocVT.getSizeInBits())
|
|
||||||
ValVReg = MIRBuilder.buildTrunc(RegTy, ValVReg).getReg(0);
|
|
||||||
} else {
|
} else {
|
||||||
// The store does not cover the full allocated stack slot.
|
// The store does not cover the full allocated stack slot.
|
||||||
MemTy = LLT(VA.getValVT());
|
MemTy = LLT(VA.getValVT());
|
||||||
|
Loading…
Reference in New Issue
Block a user