98 lines · plain
1# RUN: llc -o - %s -mtriple=x86_64-- -verify-cfiinstrs \2# RUN: -run-pass=cfi-instr-inserter 2>&1 | FileCheck %s3# Test that CFI inserter inserts .cfi_offset/.cfi_register/.cfi_rel_offset4# properly for callee saved registers.5--- |6 define void @foo() {7 ret void8 }9...10---11# CHECK: bb.3:12# CHECK: CFI_INSTRUCTION offset $rbp, -1613# CHECK-NEXT: CFI_INSTRUCTION offset $r12, -2414# CHECK-NEXT: CFI_INSTRUCTION register $r13, $rcx15# CHECK-NEXT: CFI_INSTRUCTION offset $r14, -4016name: foo17alignment: 1618tracksRegLiveness: true19liveins:20 - { reg: '$edi' }21frameInfo:22 stackSize: 1623 offsetAdjustment: -1624 maxAlignment: 1625 hasCalls: true26 maxCallFrameSize: 027 cvBytesOfCalleeSavedRegisters: 828fixedStack:29 - { id: 0, type: spill-slot, offset: -40, size: 8, alignment: 8, callee-saved-register: '$r14' }30 - { id: 1, type: spill-slot, offset: -24, size: 8, alignment: 8, callee-saved-register: '$r12' }31 - { id: 2, type: spill-slot, offset: -16, size: 8, alignment: 16 }32 - { id: 3, type: spill-slot, offset: -16, size: 8, alignment: 16 }33 - { id: 4, type: spill-slot, offset: -24, size: 8, alignment: 8 }34machineFunctionInfo: {}35body: |36 bb.0:37 successors: %bb.2(0x40000000), %bb.1(0x40000000)38 liveins: $edi, $r12, $r13, $r1439 40 frame-setup PUSH64r killed $rbp, implicit-def $rsp, implicit $rsp41 CFI_INSTRUCTION def_cfa_offset 1642 CFI_INSTRUCTION offset $rbp, -1643 $rbp = frame-setup MOV64rr $rsp44 CFI_INSTRUCTION def_cfa_register $rbp45 frame-setup PUSH64r killed $r12, implicit-def $rsp, implicit $rsp46 $rcx = frame-setup COPY $r1347 frame-setup PUSH64r killed $r14, implicit-def $rsp, implicit $rsp48 CFI_INSTRUCTION offset $r12, -2449 CFI_INSTRUCTION register $r13, $rcx50 CFI_INSTRUCTION rel_offset $r14, -2451 TEST8rr renamable $dil, renamable $dil, implicit-def $eflags, implicit killed $edi52 JCC_1 %bb.2, 4, implicit killed $eflags53 JMP_1 %bb.154 55 bb.1:56 successors: %bb.3(0x80000000)57 58 renamable $r12 = IMPLICIT_DEF59 renamable $r13 = IMPLICIT_DEF60 renamable $r14 = IMPLICIT_DEF61 JMP_1 %bb.362 63 bb.2:64 liveins: $rcx65 dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax66 $r12 = frame-destroy POP64r implicit-def $rsp, implicit $rsp67 $r13 = frame-destroy COPY $rcx68 $r14 = frame-destroy POP64r implicit-def $rsp, implicit $rsp69 $rbp = frame-destroy POP64r implicit-def $rsp, implicit $rsp70 CFI_INSTRUCTION restore $rbp71 CFI_INSTRUCTION restore $r1272 CFI_INSTRUCTION restore $r1373 CFI_INSTRUCTION restore $r1474 CFI_INSTRUCTION def_cfa $rsp, 875 RET 0, killed $rax76 77 bb.3:78 successors: %bb.4(0x80000000)79 80 renamable $rdi = IMPLICIT_DEF81 renamable $rsi = IMPLICIT_DEF82 83 bb.4:84 liveins: $rcx85 dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax86 $r12 = frame-destroy POP64r implicit-def $rsp, implicit $rsp87 $r13 = frame-destroy COPY $rcx88 $r14 = frame-destroy POP64r implicit-def $rsp, implicit $rsp89 $rbp = frame-destroy POP64r implicit-def $rsp, implicit $rsp90 CFI_INSTRUCTION restore $rbp91 CFI_INSTRUCTION restore $r1292 CFI_INSTRUCTION restore $r1393 CFI_INSTRUCTION restore $r1494 CFI_INSTRUCTION def_cfa $rsp, 895 RET 0, killed $rax96 97...98