[llvm] 199ac3a - [NFC][X86] Sret return register cleanup
Nathan Sidwell via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 27 04:03:59 PDT 2021
Author: Nathan Sidwell
Date: 2021-08-27T04:03:49-07:00
New Revision: 199ac3a839d900a5274da019c0dca41aac61cf2c
URL: https://github.com/llvm/llvm-project/commit/199ac3a839d900a5274da019c0dca41aac61cf2c
DIFF: https://github.com/llvm/llvm-project/commit/199ac3a839d900a5274da019c0dca41aac61cf2c.diff
LOG: [NFC][X86] Sret return register cleanup
There are no paths into LowerFormalParms that have already specified
the sret register. We always materialize a virtual and then assign it
to the physical reg at the point of the return.
Differential Revision: https://reviews.llvm.org/D108762
Added:
Modified:
llvm/lib/Target/X86/X86ISelLowering.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index b2189ccb1987..2d48e714c2fc 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -3960,12 +3960,12 @@ SDValue X86TargetLowering::LowerFormalArguments(
// the argument into a virtual register so that we can access it from the
// return points.
if (Ins[I].Flags.isSRet()) {
- Register Reg = FuncInfo->getSRetReturnReg();
- if (!Reg) {
- MVT PtrTy = getPointerTy(DAG.getDataLayout());
- Reg = MF.getRegInfo().createVirtualRegister(getRegClassFor(PtrTy));
- FuncInfo->setSRetReturnReg(Reg);
- }
+ assert(!FuncInfo->getSRetReturnReg() &&
+ "SRet return has already been set");
+ MVT PtrTy = getPointerTy(DAG.getDataLayout());
+ Register Reg =
+ MF.getRegInfo().createVirtualRegister(getRegClassFor(PtrTy));
+ FuncInfo->setSRetReturnReg(Reg);
SDValue Copy = DAG.getCopyToReg(DAG.getEntryNode(), dl, Reg, InVals[I]);
Chain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Copy, Chain);
break;
More information about the llvm-commits
mailing list