[llvm] [RISCV][CFI] add function epilogue cfi information (PR #110810)

Sam Elliott via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 29 12:34:51 PDT 2024


================
@@ -49,42 +43,42 @@ define void @foo2(i32 %x, float %y) {
 ; RV32:       # %bb.0: # %entry
 ; RV32-NEXT:    cm.push {ra, s0}, -32
 ; RV32-NEXT:    .cfi_def_cfa_offset 32
-; RV32-NEXT:    fsw fs0, 12(sp) # 4-byte Folded Spill
 ; RV32-NEXT:    .cfi_offset ra, -8
 ; RV32-NEXT:    .cfi_offset s0, -4
+; RV32-NEXT:    fsw fs0, 12(sp) # 4-byte Folded Spill
 ; RV32-NEXT:    .cfi_offset fs0, -20
 ; RV32-NEXT:    fmv.s fs0, fa0
 ; RV32-NEXT:    mv s0, a0
 ; RV32-NEXT:    call bar
 ; RV32-NEXT:    mv a0, s0
 ; RV32-NEXT:    fmv.s fa0, fs0
 ; RV32-NEXT:    flw fs0, 12(sp) # 4-byte Folded Reload
+; RV32-NEXT:    .cfi_restore fs0
 ; RV32-NEXT:    cm.pop {ra, s0}, 32
-; RV32-NEXT:    .cfi_def_cfa_offset 0
 ; RV32-NEXT:    .cfi_restore ra
 ; RV32-NEXT:    .cfi_restore s0
-; RV32-NEXT:    .cfi_restore fs0
+; RV32-NEXT:    .cfi_def_cfa_offset 0
 ; RV32-NEXT:    tail func
 ;
 ; RV64-LABEL: foo2:
 ; RV64:       # %bb.0: # %entry
 ; RV64-NEXT:    cm.push {ra, s0}, -32
 ; RV64-NEXT:    .cfi_def_cfa_offset 32
-; RV64-NEXT:    fsw fs0, 12(sp) # 4-byte Folded Spill
 ; RV64-NEXT:    .cfi_offset ra, -16
 ; RV64-NEXT:    .cfi_offset s0, -8
+; RV64-NEXT:    fsw fs0, 12(sp) # 4-byte Folded Spill
 ; RV64-NEXT:    .cfi_offset fs0, -20
 ; RV64-NEXT:    fmv.s fs0, fa0
 ; RV64-NEXT:    mv s0, a0
 ; RV64-NEXT:    call bar
 ; RV64-NEXT:    mv a0, s0
 ; RV64-NEXT:    fmv.s fa0, fs0
 ; RV64-NEXT:    flw fs0, 12(sp) # 4-byte Folded Reload
+; RV64-NEXT:    .cfi_restore fs0
 ; RV64-NEXT:    cm.pop {ra, s0}, 32
-; RV64-NEXT:    .cfi_def_cfa_offset 0
 ; RV64-NEXT:    .cfi_restore ra
 ; RV64-NEXT:    .cfi_restore s0
-; RV64-NEXT:    .cfi_restore fs0
+; RV64-NEXT:    .cfi_def_cfa_offset 0
----------------
lenary wrote:

This looks better too.

https://github.com/llvm/llvm-project/pull/110810


More information about the llvm-commits mailing list