[PATCH] D125906: [ARM] Add register-mask for tail returns
Dave Green via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sat May 21 07:28:45 PDT 2022
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGa86cfaea5497: [ARM] Add register-mask for tail returns (authored by dmgreen).
Changed prior to commit:
https://reviews.llvm.org/D125906?vs=430418&id=431133#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D125906/new/
https://reviews.llvm.org/D125906
Files:
llvm/lib/Target/ARM/ARMISelLowering.cpp
llvm/test/CodeGen/ARM/dbg-tcreturn.ll
llvm/test/DebugInfo/ARM/instr-ref-tcreturn.ll
Index: llvm/test/DebugInfo/ARM/instr-ref-tcreturn.ll
===================================================================
--- llvm/test/DebugInfo/ARM/instr-ref-tcreturn.ll
+++ llvm/test/DebugInfo/ARM/instr-ref-tcreturn.ll
@@ -26,7 +26,7 @@
; CHECK: $r0 = COPY %0
; CHECK-NEXT: $r1 = COPY %1
; CHECK-NEXT: DBG_INSTR_REF 1, 0
-; CHECK-NEXT: TCRETURNdi &__divsi3, 0, implicit $sp, implicit $r0, implicit $r1
+; CHECK-NEXT: TCRETURNdi &__divsi3, 0, csr_ios, implicit $sp, implicit $r0, implicit $r1
declare i1 @ext()
Index: llvm/test/CodeGen/ARM/dbg-tcreturn.ll
===================================================================
--- llvm/test/CodeGen/ARM/dbg-tcreturn.ll
+++ llvm/test/CodeGen/ARM/dbg-tcreturn.ll
@@ -12,7 +12,7 @@
; CHECK-NEXT: $r0 = COPY %0
; CHECK-NEXT: $r1 = COPY %1
; CHECK-NEXT: DBG_VALUE $noreg, $noreg, !13, !DIExpression(), debug-location !16
-; CHECK-NEXT: TCRETURNdi &__divsi3, 0, implicit $sp, implicit $r0, implicit $r1
+; CHECK-NEXT: TCRETURNdi &__divsi3, 0, csr_ios, implicit $sp, implicit $r0, implicit $r1
define i32 @test(i32 %a1, i32 %a2) !dbg !5 {
entry:
Index: llvm/lib/Target/ARM/ARMISelLowering.cpp
===================================================================
--- llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -2786,25 +2786,23 @@
RegsToPass[i].second.getValueType()));
// Add a register mask operand representing the call-preserved registers.
- if (!isTailCall) {
- const uint32_t *Mask;
- const ARMBaseRegisterInfo *ARI = Subtarget->getRegisterInfo();
- if (isThisReturn) {
- // For 'this' returns, use the R0-preserving mask if applicable
- Mask = ARI->getThisReturnPreservedMask(MF, CallConv);
- if (!Mask) {
- // Set isThisReturn to false if the calling convention is not one that
- // allows 'returned' to be modeled in this way, so LowerCallResult does
- // not try to pass 'this' straight through
- isThisReturn = false;
- Mask = ARI->getCallPreservedMask(MF, CallConv);
- }
- } else
+ const uint32_t *Mask;
+ const ARMBaseRegisterInfo *ARI = Subtarget->getRegisterInfo();
+ if (isThisReturn) {
+ // For 'this' returns, use the R0-preserving mask if applicable
+ Mask = ARI->getThisReturnPreservedMask(MF, CallConv);
+ if (!Mask) {
+ // Set isThisReturn to false if the calling convention is not one that
+ // allows 'returned' to be modeled in this way, so LowerCallResult does
+ // not try to pass 'this' straight through
+ isThisReturn = false;
Mask = ARI->getCallPreservedMask(MF, CallConv);
+ }
+ } else
+ Mask = ARI->getCallPreservedMask(MF, CallConv);
- assert(Mask && "Missing call preserved mask for calling convention");
- Ops.push_back(DAG.getRegisterMask(Mask));
- }
+ assert(Mask && "Missing call preserved mask for calling convention");
+ Ops.push_back(DAG.getRegisterMask(Mask));
if (InFlag.getNode())
Ops.push_back(InFlag);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D125906.431133.patch
Type: text/x-patch
Size: 3066 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220521/9fd69ae8/attachment.bin>
More information about the llvm-commits
mailing list