Revert "[ELF] Refine isExported/isPreemptible condition"
[llvm-project.git] / compiler-rt / test / orc / TestCases / Windows / x86-64 / static-initializer.S
blobac2c34201c44624e498bf463bbaab438099bd57b
1 // Test that basic COFF static initializers work. The main function in this
2 // test returns the expression a + b + c + 1. a is initialzed as -1 and c is
3 // initialized as -2 by static initializers. b is initialized as 2 by constant
4 // value. The test will succeeds only if static initializers are ran successfully.
5 //
6 // RUN: %clang -c -o %t %s
7 // RUN: %llvm_jitlink %t
8         .text
9         .def    @feat.00;
10         .scl    3;
11         .type   0;
12         .endef
13         .globl  @feat.00
14 .set @feat.00, 0
15         .file   "static-initializer.cpp"
16         .def    init;
17         .scl    2;
18         .type   32;
19         .endef
20         .globl  init                            # -- Begin function init
21         .p2align        4, 0x90
22 init:                                   # @init
23 # %bb.0:
24         movl    $4294967295, %eax               # imm = 0xFFFFFFFF
25         retq
26                                         # -- End function
27         .def    init2;
28         .scl    2;
29         .type   32;
30         .endef
31         .globl  init2                           # -- Begin function init2
32         .p2align        4, 0x90
33 init2:                                  # @init2
34 # %bb.0:
35         movl    $4294967294, %eax               # imm = 0xFFFFFFFE
36         retq
37                                         # -- End function
38         .def    "??__Ea@@YAXXZ";
39         .scl    3;
40         .type   32;
41         .endef
42         .p2align        4, 0x90                         # -- Begin function ??__Ea@@YAXXZ
43 "??__Ea@@YAXXZ":                        # @"??__Ea@@YAXXZ"
44 .seh_proc "??__Ea@@YAXXZ"
45 # %bb.0:
46         subq    $40, %rsp
47         .seh_stackalloc 40
48         .seh_endprologue
49         callq   init
50         movl    %eax, a(%rip)
51         addq    $40, %rsp
52         retq
53         .seh_endproc
54                                         # -- End function
55         .def    "??__Ec@@YAXXZ";
56         .scl    3;
57         .type   32;
58         .endef
59         .p2align        4, 0x90                         # -- Begin function ??__Ec@@YAXXZ
60 "??__Ec@@YAXXZ":                        # @"??__Ec@@YAXXZ"
61 .seh_proc "??__Ec@@YAXXZ"
62 # %bb.0:
63         subq    $40, %rsp
64         .seh_stackalloc 40
65         .seh_endprologue
66         callq   init2
67         movl    %eax, c(%rip)
68         addq    $40, %rsp
69         retq
70         .seh_endproc
71                                         # -- End function
72         .def    main;
73         .scl    2;
74         .type   32;
75         .endef
76         .globl  main                            # -- Begin function main
77         .p2align        4, 0x90
78 main:                                   # @main
79 .seh_proc main
80 # %bb.0:
81         subq    $56, %rsp
82         .seh_stackalloc 56
83         .seh_endprologue
84         movl    $0, 52(%rsp)
85         movq    %rdx, 40(%rsp)
86         movl    %ecx, 36(%rsp)
87         movl    a(%rip), %ecx
88         addl    b(%rip), %ecx
89         addl    c(%rip), %ecx
90         addl    $1, %ecx
91         callq   *__imp_llvm_jitlink_setTestResultOverride(%rip)
92         xorl    %eax, %eax
93         addq    $56, %rsp
94         retq
95         .seh_endproc
96                                         # -- End function
97         .def    _GLOBAL__sub_I_static_initializer.cpp;
98         .scl    3;
99         .type   32;
100         .endef
101         .p2align        4, 0x90                         # -- Begin function _GLOBAL__sub_I_static_initializer.cpp
102 _GLOBAL__sub_I_static_initializer.cpp:  # @_GLOBAL__sub_I_static_initializer.cpp
103 .seh_proc _GLOBAL__sub_I_static_initializer.cpp
104 # %bb.0:
105         subq    $40, %rsp
106         .seh_stackalloc 40
107         .seh_endprologue
108         callq   "??__Ea@@YAXXZ"
109         callq   "??__Ec@@YAXXZ"
110         nop
111         addq    $40, %rsp
112         retq
113         .seh_endproc
114                                         # -- End function
115         .bss
116         .globl  a                               # @a
117         .p2align        2
119         .long   0                               # 0x0
121         .data
122         .globl  b                               # @b
123         .p2align        2
125         .long   2                               # 0x2
127         .bss
128         .globl  c                               # @c
129         .p2align        2
131         .long   0                               # 0x0
133         .section        .CRT$XCU,"dr"
134         .p2align        3
135         .quad   _GLOBAL__sub_I_static_initializer.cpp