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 10define void @notExported() { 11 ret void 12} 13 14; CHECK: .globl _f1 15define dllexport void @f1() { 16 ret void 17} 18 19; CHECK: .globl _f2 20define dllexport void @f2() unnamed_addr { 21 ret void 22} 23 24declare dllexport void @not_defined() 25 26; CHECK: .globl _stdfun@0 27define dllexport x86_stdcallcc void @stdfun() nounwind { 28 ret void 29} 30 31; CHECK: .globl @fastfun@0 32define dllexport x86_fastcallcc i32 @fastfun() nounwind { 33 ret i32 0 34} 35 36; CHECK: .globl _thisfun 37define dllexport x86_thiscallcc void @thisfun() nounwind { 38 ret void 39} 40 41; CHECK: .globl _lnk1 42define linkonce_odr dllexport void @lnk1() { 43 ret void 44} 45 46; CHECK: .globl _lnk2 47define linkonce_odr dllexport void @lnk2() alwaysinline { 48 ret void 49} 50 51; CHECK: .globl _weak1 52define 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