blob: d8e58f71903761d50b70641f8ebae250208421dc [file] [log] [blame]
Hans Wennborgb0f2f142014-05-15 22:07:49 +00001// RUN: %clang_cc1 -triple i686-pc-win32 -x c++ -O2 -disable-llvm-optzns -emit-llvm < %s | FileCheck %s
2
3#define DLLIMPORT __declspec(dllimport)
4
5void DLLIMPORT a();
6// CHECK-DAG: declare dllimport void @"\01?a@@YAXXZ"()
7
8inline void DLLIMPORT b() {}
9// CHECK-DAG: define available_externally dllimport void @"\01?b@@YAXXZ"()
10
11template <typename T> inline void c() {} // FIXME: MSVC accepts this without 'inline' too.
12template void DLLIMPORT c<int>();
13// CHECK-DAG: define available_externally dllimport void @"\01??$c@H@@YAXXZ"()
14
15struct S {
16 void DLLIMPORT a() {}
17 // CHECK-DAG: define available_externally dllimport x86_thiscallcc void @"\01?a@S@@QAEXXZ"
18};
19
20void user(S* s) {
21 a();
22 b();
23 c<int>();
24 s->a();
25}