[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / ARM / Windows / wineh-tailmerge.ll
blob9c21936264dd15137e4921c362459db7a771f9bc
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
9 ; CHECK-LABEL: d:
10 ; CHECK: .seh_proc d
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}
19 ; CHECK-NEXT:         b.w     b
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}
26 ; CHECK-NEXT:         b.w     c
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" {
34 entry:
35   %0 = load i32, ptr @a, align 4
36   switch i32 %0, label %if.then1 [
37     i32 10, label %if.then
38     i32 0, label %if.end2
39   ]
41 if.then:
42   tail call arm_aapcs_vfpcc void @b()
43   br label %return
45 if.then1:
46   tail call arm_aapcs_vfpcc void @b()
47   br label %if.end2
49 if.end2:
50   tail call arm_aapcs_vfpcc void @c()
51   br label %return
53 return:
54   ret void
57 declare arm_aapcs_vfpcc void @b(...)
59 declare arm_aapcs_vfpcc void @c(...)