xref: /llvm-project/llvm/test/CodeGen/RISCV/eh-dwarf-cfa.ll (revision 97982a8c605fac7c86d02e641a6cd7898b3ca343)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=riscv32 < %s | FileCheck -check-prefix=RV32 %s
3; RUN: llc -mtriple=riscv64 < %s | FileCheck -check-prefix=RV64 %s
4
5define void @dwarf() {
6; RV32-LABEL: dwarf:
7; RV32:       # %bb.0: # %entry
8; RV32-NEXT:    addi sp, sp, -16
9; RV32-NEXT:    .cfi_def_cfa_offset 16
10; RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
11; RV32-NEXT:    .cfi_offset ra, -4
12; RV32-NEXT:    addi a0, sp, 16
13; RV32-NEXT:    call foo
14; RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
15; RV32-NEXT:    .cfi_restore ra
16; RV32-NEXT:    addi sp, sp, 16
17; RV32-NEXT:    .cfi_def_cfa_offset 0
18; RV32-NEXT:    ret
19;
20; RV64-LABEL: dwarf:
21; RV64:       # %bb.0: # %entry
22; RV64-NEXT:    addi sp, sp, -16
23; RV64-NEXT:    .cfi_def_cfa_offset 16
24; RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
25; RV64-NEXT:    .cfi_offset ra, -8
26; RV64-NEXT:    addi a0, sp, 16
27; RV64-NEXT:    call foo
28; RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload
29; RV64-NEXT:    .cfi_restore ra
30; RV64-NEXT:    addi sp, sp, 16
31; RV64-NEXT:    .cfi_def_cfa_offset 0
32; RV64-NEXT:    ret
33entry:
34  %0 = call ptr @llvm.eh.dwarf.cfa(i32 0)
35  call void @foo(ptr %0)
36  ret void
37}
38
39declare void @foo(ptr)
40
41declare ptr @llvm.eh.dwarf.cfa(i32) nounwind
42