]> granicus.if.org Git - clang/commitdiff
Add another test for DLL attribute inheritance to partial specializations
authorHans Wennborg <hans@hanshq.net>
Sat, 23 Aug 2014 23:00:29 +0000 (23:00 +0000)
committerHans Wennborg <hans@hanshq.net>
Sat, 23 Aug 2014 23:00:29 +0000 (23:00 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216337 91177308-0d34-0410-b5e6-96231b3b80d8

test/CodeGenCXX/dllexport.cpp

index f2e0c3b2519e75a8d0a476dd22100a82a7a19916..c46401239d507cc99772012af8c9193f484a11c3 100644 (file)
@@ -593,6 +593,14 @@ USEMEMFUNC(PartiallySpecializedExportedClassTemplate<void*>, f);
 // M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?f@?$PartiallySpecializedExportedClassTemplate@PAX@@QAEXXZ"
 // G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN41PartiallySpecializedExportedClassTemplateIPvE1fEv
 
+// MS ignores DLL attributes on partial specializations; inheritance still works though.
+template <typename T> struct __declspec(dllexport) PartiallySpecializedExportedClassTemplate2 {};
+template <typename T> struct __declspec(dllimport) PartiallySpecializedExportedClassTemplate2<T*> { void f() {} };
+USEMEMFUNC(PartiallySpecializedExportedClassTemplate2<void*>, f);
+// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?f@?$PartiallySpecializedExportedClassTemplate2@PAX@@QAEXXZ"
+// G32-DAG: declare dllimport x86_thiscallcc void @_ZN42PartiallySpecializedExportedClassTemplate2IPvE1fEv
+
+
 //===----------------------------------------------------------------------===//
 // Classes with template base classes
 //===----------------------------------------------------------------------===//