summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2021-08-26 04:05:25 -0700
committerNathan Sidwell <nathan@acm.org>2021-08-27 04:03:49 -0700
commit199ac3a839d900a5274da019c0dca41aac61cf2c (patch)
treef98831186f7361411460dcb3ee1612da7748a07f
parent5d9de3ea1818c247917af23b82b481ac5d40b901 (diff)
downloadllvm-199ac3a839d900a5274da019c0dca41aac61cf2c.tar.gz
[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
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp12
1 files changed, 6 insertions, 6 deletions
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;