[RISCV] Add shrinkwrap test cases showing gaps in current impl
[llvm-project.git] / llvm / test / CodeGen / X86 / cfi-epilogue-without-return.mir
blob8f04721489608dd4c0f897f20acdf246ef410414
1 # RUN: llc -o - %s -mtriple=x86_64-- -run-pass=prologepilog 2>&1 | FileCheck %s
2 --- |
3   declare dso_local void @_Z3goov()
4   define i64 @_Z3foob(i1 zeroext %cond) #0 {
5     ret i64 0
6   }
7   attributes #0 = {"frame-pointer"="all"}
8 ...
9 ---
10 # If the epilogue bb.1.if.then is not a return block, .cfi_restore is
11 # needed in it, otherwise bb.2.return will see different outgoing CFI
12 # information from its predecessors.
13 # CHECK:    bb.1:
14 # CHECK:      CFI_INSTRUCTION restore $rbx
15 # CHECK-NEXT: CFI_INSTRUCTION restore $r12
16 # CHECK-NEXT: CFI_INSTRUCTION restore $r13
17 # CHECK-NEXT: CFI_INSTRUCTION restore $r14
18 # CHECK-NEXT: CFI_INSTRUCTION restore $r15
19 # CHECK-NEXT: CFI_INSTRUCTION restore $rbp
20 # CHECK-NOT:  RET 0
21 # CHECK:    bb.2:
22 # CHECK:      RET 0
23 name:            _Z3foob
24 alignment:       16
25 tracksRegLiveness: true
26 liveins:
27   - { reg: '$edi' }
28 frameInfo:
29   maxAlignment:    1
30   hasCalls:        true
31   savePoint:       '%bb.1'
32   restorePoint:    '%bb.1'
33 machineFunctionInfo: {}
34 body:             |
35   bb.0:
36     liveins: $edi
37   
38     TEST8rr renamable $dil, renamable $dil, implicit-def $eflags, implicit killed $edi
39     JCC_1 %bb.2, 4, implicit killed $eflags
40     JMP_1 %bb.1
41   
42   bb.1:
43     renamable $rbx = IMPLICIT_DEF
44     renamable $r14 = IMPLICIT_DEF
45     renamable $r15 = IMPLICIT_DEF
46     renamable $r12 = IMPLICIT_DEF
47     renamable $r13 = IMPLICIT_DEF
48   
49   bb.2:
50     dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
51     RET 0, killed $rax
53 ...