Heuristic: If the number of operands in the alias are more than the number of
[llvm/stm8.git] / test / MC / COFF / seh.s
blob8cafcb3ab15fa4b1dd2935e5bc552eaa5e9853bc
1 // This test checks that the SEH directives emit the correct unwind data.
2 // RUN: llvm-mc -triple x86_64-pc-win32 -filetype=obj %s | coff-dump.py | FileCheck %s
4 // CHECK: Name = .xdata
5 // CHECK-NEXT: VirtualSize
6 // CHECK-NEXT: VirtualAddress
7 // CHECK-NEXT: SizeOfRawData = 52
8 // CHECK-NEXT: PointerToRawData
9 // CHECK-NEXT: PointerToRelocations
10 // CHECK-NEXT: PointerToLineNumbers
11 // CHECK-NEXT: NumberOfRelocations = 4
12 // CHECK-NEXT: NumberOfLineNumbers = 0
13 // CHECK-NEXT: Charateristics
14 // CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA
15 // CHECK-NEXT: IMAGE_SCN_ALIGN_4BYTES
16 // CHECK-NEXT: IMAGE_SCN_MEM_READ
17 // CHECK-NEXT: IMAGE_SCN_MEM_WRITE
18 // CHECK-NEXT: SectionData
19 // CHECK-NEXT: 09 12 08 03 00 03 0F 30 - 0E 88 00 00 09 64 02 00
20 // CHECK-NEXT: 04 22 00 1A 00 00 00 00 - 00 00 00 00 21 00 00 00
21 // CHECK-NEXT: 00 00 00 00 1B 00 00 00 - 00 00 00 00 01 00 00 00
22 // CHECK-NEXT: 00 00 00 00
24 .text
25 .globl func
26 .def func; .scl 2; .type 32; .endef
27 .seh_proc func
28 func:
29 .seh_pushframe @code
30 subq $24, %rsp
31 .seh_stackalloc 24
32 movq %rsi, 16(%rsp)
33 .seh_savereg %rsi, 16
34 movups %xmm8, (%rsp)
35 .seh_savexmm %xmm8, 0
36 pushq %rbx
37 .seh_pushreg 3
38 mov %rsp, %rbx
39 .seh_setframe 3, 0
40 .seh_endprologue
41 .seh_handler __C_specific_handler, @except
42 .seh_handlerdata
43 .long 0
44 .text
45 .seh_startchained
46 .seh_endprologue
47 .seh_endchained
48 lea (%rbx), %rsp
49 pop %rbx
50 addq $24, %rsp
51 ret
52 .seh_endproc
54 // Test emission of small functions.
55 .globl smallFunc
56 .def smallFunc; .scl 2; .type 32; .endef
57 .seh_proc smallFunc
58 smallFunc:
59 ret
60 .seh_endproc