1 ;; Check that epilogues aren't tail merged.
3 ;; Check that this produces the expected assembly output
4 ; RUN: llc -mtriple=thumbv7-windows -o - %s -verify-machineinstrs | FileCheck %s
5 ;; Also try to write an object file, which verifies that the SEH opcodes
6 ;; match the actual prologue/epilogue length.
7 ; RUN: llc -mtriple=thumbv7-windows -filetype=obj -o %t.obj %s -verify-machineinstrs
12 ; CHECK: push.w {r11, lr}
13 ; CHECK-NEXT: .seh_save_regs_w {r11, lr}
14 ; CHECK-NEXT: .seh_endprologue
16 ; CHECK: .seh_startepilogue
17 ; CHECK-NEXT: pop.w {r11, lr}
18 ; CHECK-NEXT: .seh_save_regs_w {r11, lr}
20 ; CHECK-NEXT: .seh_nop_w
21 ; CHECK-NEXT: .seh_endepilogue
23 ; CHECK: .seh_startepilogue
24 ; CHECK-NEXT: pop.w {r11, lr}
25 ; CHECK-NEXT: .seh_save_regs_w {r11, lr}
27 ; CHECK-NEXT: .seh_nop_w
28 ; CHECK-NEXT: .seh_endepilogue
29 ; CHECK-NEXT: .seh_endproc
31 @a = global i32 0, align 4
33 define arm_aapcs_vfpcc void @d() optsize uwtable "frame-pointer"="none" {
35 %0 = load i32, ptr @a, align 4
36 switch i32 %0, label %if.then1 [
37 i32 10, label %if.then
42 tail call arm_aapcs_vfpcc void @b()
46 tail call arm_aapcs_vfpcc void @b()
50 tail call arm_aapcs_vfpcc void @c()
57 declare arm_aapcs_vfpcc void @b(...)
59 declare arm_aapcs_vfpcc void @c(...)