1 ; RUN: llc -mtriple i386-pc-win32 < %s \ 2 ; RUN: | FileCheck -check-prefix CHECK -check-prefix CHECK-CL %s 3 ; RUN: llc -mtriple i386-pc-mingw32 < %s \ 4 ; RUN: | FileCheck -check-prefix CHECK -check-prefix CHECK-GCC %s 5 ; RUN: llc -mtriple i686-pc-cygwin %s -o - \ 6 ; RUN: | FileCheck -check-prefix CHECK -check-prefix CHECK-GCC %s 7 8 ; CHECK: .text 9 10 define void @notExported() { 11 ret void 12 } 13 14 ; CHECK: .globl _f1 15 define dllexport void @f1() { 16 ret void 17 } 18 19 ; CHECK: .globl _f2 20 define dllexport void @f2() unnamed_addr { 21 ret void 22 } 23 24 declare dllexport void @not_defined() 25 26 ; CHECK: .globl _stdfun@0 27 define dllexport x86_stdcallcc void @stdfun() nounwind { 28 ret void 29 } 30 31 ; CHECK: .globl @fastfun@0 32 define dllexport x86_fastcallcc i32 @fastfun() nounwind { 33 ret i32 0 34 } 35 36 ; CHECK: .globl _thisfun 37 define dllexport x86_thiscallcc void @thisfun() nounwind { 38 ret void 39 } 40 41 ; CHECK: .globl _lnk1 42 define linkonce_odr dllexport void @lnk1() { 43 ret void 44 } 45 46 ; CHECK: .globl _lnk2 47 define linkonce_odr dllexport void @lnk2() alwaysinline { 48 ret void 49 } 50 51 ; CHECK: .globl _weak1 52 define weak_odr dllexport void @weak1() { 53 ret void 54 } 55 56 57 ; CHECK: .data 58 ; CHECK: .globl _Var1 59 @Var1 = dllexport global i32 1, align 4 60 61 ; CHECK: .rdata,"dr" 62 ; CHECK: .globl _Var2 63 @Var2 = dllexport unnamed_addr constant i32 1 64 65 ; CHECK: .comm _Var3 66 @Var3 = common dllexport global i32 0, align 4 67 68 ; CHECK: .globl _WeakVar1 69 @WeakVar1 = weak_odr dllexport global i32 1, align 4 70 71 ; CHECK: .globl _WeakVar2 72 @WeakVar2 = weak_odr dllexport unnamed_addr constant i32 1 73 74 75 ; CHECK: .globl _alias 76 ; CHECK: _alias = _notExported 77 @alias = dllexport alias void(), void()* @notExported 78 79 ; CHECK: .globl _alias2 80 ; CHECK: _alias2 = _f1 81 @alias2 = dllexport alias void(), void()* @f1 82 83 ; CHECK: .globl _alias3 84 ; CHECK: _alias3 = _notExported 85 @alias3 = dllexport alias void(), void()* @notExported 86 87 ; CHECK: .weak _weak_alias 88 ; CHECK: _weak_alias = _f1 89 @weak_alias = weak_odr dllexport alias void(), void()* @f1 90 91 ; CHECK: .section .drectve 92 ; CHECK-CL-NOT: not_exported 93 ; CHECK-CL: /EXPORT:_f1 94 ; CHECK-CL-SAME: /EXPORT:_f2 95 ; CHECK-CL-SAME: /EXPORT:_stdfun@0 96 ; CHECK-CL-SAME: /EXPORT:@fastfun@0 97 ; CHECK-CL-SAME: /EXPORT:_thisfun 98 ; CHECK-CL-SAME: /EXPORT:_lnk1 99 ; CHECK-CL-SAME: /EXPORT:_lnk2 100 ; CHECK-CL-SAME: /EXPORT:_weak1 101 ; CHECK-CL-SAME: /EXPORT:_Var1,DATA 102 ; CHECK-CL-SAME: /EXPORT:_Var2,DATA 103 ; CHECK-CL-SAME: /EXPORT:_Var3,DATA 104 ; CHECK-CL-SAME: /EXPORT:_WeakVar1,DATA 105 ; CHECK-CL-SAME: /EXPORT:_WeakVar2,DATA 106 ; CHECK-CL-SAME: /EXPORT:_alias 107 ; CHECK-CL-SAME: /EXPORT:_alias2 108 ; CHECK-CL-SAME: /EXPORT:_alias3 109 ; CHECK-CL-SAME: /EXPORT:_weak_alias" 110 ; CHECK-CL-NOT: not_exported 111 ; CHECK-GCC-NOT: not_exported 112 ; CHECK-GCC: -export:f1 113 ; CHECK-GCC-SAME: -export:f2 114 ; CHECK-GCC-SAME: -export:stdfun@0 115 ; CHECK-GCC-SAME: -export:@fastfun@0 116 ; CHECK-GCC-SAME: -export:thisfun 117 ; CHECK-GCC-SAME: -export:lnk1 118 ; CHECK-GCC-SAME: -export:lnk2 119 ; CHECK-GCC-SAME: -export:weak1 120 ; CHECK-GCC-SAME: -export:Var1,data 121 ; CHECK-GCC-SAME: -export:Var2,data 122 ; CHECK-GCC-SAME: -export:Var3,data 123 ; CHECK-GCC-SAME: -export:WeakVar1,data 124 ; CHECK-GCC-SAME: -export:WeakVar2,data 125 ; CHECK-GCC-SAME: -export:alias 126 ; CHECK-GCC-SAME: -export:alias2 127 ; CHECK-GCC-SAME: -export:alias3 128 ; CHECK-GCC-SAME: -export:weak_alias" 129 ; CHECK-GCC-NOT: not_exported 130