2014-05-16 06:07:49 +08:00
|
|
|
// RUN: %clang_cc1 -triple i686-pc-win32 -x c++ -O2 -disable-llvm-optzns -emit-llvm < %s | FileCheck %s
|
|
|
|
|
|
|
|
#define DLLIMPORT __declspec(dllimport)
|
|
|
|
|
|
|
|
void DLLIMPORT a();
|
|
|
|
// CHECK-DAG: declare dllimport void @"\01?a@@YAXXZ"()
|
|
|
|
|
|
|
|
inline void DLLIMPORT b() {}
|
|
|
|
// CHECK-DAG: define available_externally dllimport void @"\01?b@@YAXXZ"()
|
|
|
|
|
2014-05-20 04:14:13 +08:00
|
|
|
template <typename T> void c() {}
|
2014-05-16 06:07:49 +08:00
|
|
|
template void DLLIMPORT c<int>();
|
|
|
|
// CHECK-DAG: define available_externally dllimport void @"\01??$c@H@@YAXXZ"()
|
|
|
|
|
|
|
|
struct S {
|
|
|
|
void DLLIMPORT a() {}
|
|
|
|
// CHECK-DAG: define available_externally dllimport x86_thiscallcc void @"\01?a@S@@QAEXXZ"
|
|
|
|
};
|
|
|
|
|
|
|
|
void user(S* s) {
|
|
|
|
a();
|
|
|
|
b();
|
|
|
|
c<int>();
|
|
|
|
s->a();
|
|
|
|
}
|