Decouple dllexport/dllimport from linkage
[oota-llvm.git] / test / CodeGen / X86 / dllexport-x86_64.ll
1 ; RUN: llc -mtriple x86_64-pc-win32 < %s | FileCheck -check-prefix=CHECK -check-prefix=WIN32 %s
2 ; RUN: llc -mtriple x86_64-pc-mingw32 < %s | FileCheck -check-prefix=CHECK -check-prefix=MINGW %s
3
4 ; CHECK: .text
5
6 define void @notExported() {
7         ret void
8 }
9
10 ; CHECK: .globl f1
11 define dllexport void @f1() {
12         ret void
13 }
14
15 ; CHECK: .globl f2
16 define dllexport void @f2() unnamed_addr {
17         ret void
18 }
19
20 ; CHECK: .section .text,"xr",discard,lnk1
21 ; CHECK: .globl lnk1
22 define linkonce_odr dllexport void @lnk1() {
23         ret void
24 }
25
26 ; CHECK: .section .text,"xr",discard,lnk2
27 ; CHECK: .globl lnk2
28 define linkonce_odr dllexport void @lnk2() alwaysinline {
29         ret void
30 }
31
32 ; CHECK: .section .text,"xr",discard,weak1
33 ; CHECK: .globl weak1
34 define weak_odr dllexport void @weak1() {
35         ret void
36 }
37
38
39 ; CHECK: .data
40 ; CHECK: .globl Var1
41 @Var1 = dllexport global i32 1, align 4
42
43 ; CHECK: .rdata,"r"
44 ; CHECK: .globl Var2
45 @Var2 = dllexport unnamed_addr constant i32 1
46
47 ; CHECK: .comm Var3
48 @Var3 = common dllexport global i32 0, align 4
49
50 ; CHECK: .section .data,"w",discard,WeakVar1
51 ; CHECK: .globl WeakVar1
52 @WeakVar1 = weak_odr dllexport global i32 1, align 4
53
54 ; CHECK: .section .rdata,"r",discard,WeakVar2
55 ; CHECK: .globl WeakVar2
56 @WeakVar2 = weak_odr dllexport unnamed_addr constant i32 1
57
58
59 ; CHECK: .section .drectve
60 ; WIN32: /EXPORT:Var1,DATA
61 ; WIN32: /EXPORT:Var2,DATA
62 ; WIN32: /EXPORT:Var3,DATA
63 ; WIN32: /EXPORT:WeakVar1,DATA
64 ; WIN32: /EXPORT:WeakVar2,DATA
65 ; WIN32: /EXPORT:f1
66 ; WIN32: /EXPORT:f2
67 ; WIN32: /EXPORT:lnk1
68 ; WIN32: /EXPORT:lnk2
69 ; WIN32: /EXPORT:weak1
70 ; MINGW: -export:Var1,data
71 ; MINGW: -export:Var2,data
72 ; MINGW: -export:Var3,data
73 ; MINGW: -export:WeakVar1,data
74 ; MINGW: -export:WeakVar2,data
75 ; MINGW: -export:f1
76 ; MINGW: -export:f2
77 ; MINGW: -export:lnk1
78 ; MINGW: -export:lnk2
79 ; MINGW: -export:weak1