1 ; RUN: llc -mtriple x86_64-pc-win32 < %s | FileCheck %s
2 ; RUN: llc -mtriple x86_64-pc-mingw32 < %s | FileCheck %s
4 ; RUN: llc -mtriple x86_64-pc-mingw32 -O0 < %s | FileCheck %s -check-prefix=FAST
7 ; RUN: opt -mtriple x86_64-pc-win32 -std-compile-opts -S < %s | FileCheck %s -check-prefix=OPT
9 @Var1 = external dllimport global i32
10 @Var2 = available_externally dllimport unnamed_addr constant i32 1
12 declare dllimport void @fun()
14 define available_externally dllimport void @inline1() {
18 define available_externally dllimport void @inline2() {
22 declare void @dummy(...)
24 define void @use() nounwind {
25 ; CHECK: callq *__imp_fun(%rip)
26 ; FAST: movq __imp_fun(%rip), [[R:%[a-z]{3}]]
27 ; FAST-NEXT: callq *[[R]]
30 ; CHECK: callq *__imp_inline1(%rip)
31 ; CHECK: callq *__imp_inline2(%rip)
35 ; available_externally uses go away
36 ; OPT-NOT: call void @inline1()
37 ; OPT-NOT: call void @inline2()
38 ; OPT-NOT: load i32* @Var2
39 ; OPT: call void (...)* @dummy(i32 %1, i32 1)
41 ; CHECK-DAG: movq __imp_Var1(%rip), [[R1:%[a-z]{3}]]
42 ; CHECK-DAG: movq __imp_Var2(%rip), [[R2:%[a-z]{3}]]
45 call void(...)* @dummy(i32 %1, i32 %2)