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