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 23name: _Z3foob 24alignment: 16 25tracksRegLiveness: true 26liveins: 27 - { reg: '$edi' } 28frameInfo: 29 maxAlignment: 1 30 hasCalls: true 31 savePoint: '%bb.1' 32 restorePoint: '%bb.1' 33machineFunctionInfo: {} 34body: | 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 52 53... 54