63 lines · plain
1// This test checks that we emit allow multiple consecutive epilogs without2// triggering failed asserts.unwind info correctly for epilogs that:3// RUN: llvm-mc -triple aarch64-pc-win32 -filetype=obj %s -o %t.o4// RUN: llvm-readobj -u %t.o | FileCheck %s5 6// CHECK-LABEL:UnwindInformation [7// CHECK-NEXT: RuntimeFunction {8// CHECK-NEXT: Function: multi_epilog (0x0)9// CHECK-NEXT: ExceptionRecord: .xdata (0x0)10// CHECK-NEXT: ExceptionData {11// CHECK-NEXT: FunctionLength: 2012// CHECK-NEXT: Version: 013// CHECK-NEXT: ExceptionData: No14// CHECK-NEXT: EpiloguePacked: No15// CHECK-NEXT: EpilogueScopes: 216// CHECK-NEXT: ByteCodeLength: 417// CHECK-NEXT: Prologue [18// CHECK-NEXT: 0x81 ; stp x29, x30, [sp, #-16]!19// CHECK-NEXT: 0xe4 ; end20// CHECK-NEXT: ]21// CHECK-NEXT: EpilogueScopes [22// CHECK-NEXT: EpilogueScope {23// CHECK-NEXT: StartOffset: 224// CHECK-NEXT: EpilogueStartIndex: 025// CHECK-NEXT: Opcodes [26// CHECK-NEXT: 0x81 ; ldp x29, x30, [sp], #1627// CHECK-NEXT: 0xe4 ; end28// CHECK-NEXT: ]29// CHECK-NEXT: }30// CHECK-NEXT: EpilogueScope {31// CHECK-NEXT: StartOffset: 332// CHECK-NEXT: EpilogueStartIndex: 033// CHECK-NEXT: Opcodes [34// CHECK-NEXT: 0x81 ; ldp x29, x30, [sp], #1635// CHECK-NEXT: 0xe4 ; end36// CHECK-NEXT: ]37// CHECK-NEXT: }38// CHECK-NEXT: ]39// CHECK-NEXT: }40// CHECK-NEXT: }41// CHECK-NEXT:]42 43 .text44 .global multi_epilog45 .p2align 246 .seh_proc multi_epilog47multi_epilog:48 stp x29, lr, [sp, #-16]!49 .seh_save_fplr_x 1650 .seh_endprologue51 nop52 .seh_startepilogue53 ldp x29, lr, [sp], #1654 .seh_save_fplr_x 1655 .seh_endepilogue56 .seh_startepilogue57 ldp x29, lr, [sp], #1658 .seh_save_fplr_x 1659 .seh_endepilogue60 ret61 .seh_endfunclet62 .seh_endproc63