1 // RUN: %clang_cc1 -emit-llvm -triple i686-windows-itanium -fdeclspec %s -o - | FileCheck %s
2 
3 struct __declspec(dllexport) s {
4   void f() {}
5 };
6 
7 // CHECK: define {{.*}} dllexport {{.*}} @_ZN1saSERKS_
8 // CHECK: define {{.*}} dllexport {{.*}} @_ZN1s1fEv
9 
10 template <class T>
11 class c {
12   void f() {}
13 };
14 
15 template class __declspec(dllexport) c<int>;
16 
17 // CHECK: define {{.*}} dllexport {{.*}} @_ZN1cIiEaSERKS0_
18 // CHECK: define {{.*}} dllexport {{.*}} @_ZN1cIiE1fEv
19 
20 extern template class c<char>;
21 template class __declspec(dllexport) c<char>;
22 
23 // CHECK: define {{.*}} dllexport {{.*}} @_ZN1cIcEaSERKS0_
24 // CHECK: define {{.*}} dllexport {{.*}} @_ZN1cIcE1fEv
25 
26 c<double> g;
27 template class __declspec(dllexport) c<double>;
28 
29 // CHECK: define {{.*}} dllexport {{.*}} @_ZN1cIdEaSERKS0_
30 // CHECK: define {{.*}} dllexport {{.*}} @_ZN1cIdE1fEv
31