diff options
Diffstat (limited to 'clang/test/CodeGenCXX')
| -rw-r--r-- | clang/test/CodeGenCXX/dllexport.cpp | 5 | ||||
| -rw-r--r-- | clang/test/CodeGenCXX/dllimport.cpp | 12 |
2 files changed, 17 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/dllexport.cpp b/clang/test/CodeGenCXX/dllexport.cpp index bc1486f0d7d..3a1a3ffd871 100644 --- a/clang/test/CodeGenCXX/dllexport.cpp +++ b/clang/test/CodeGenCXX/dllexport.cpp @@ -691,6 +691,11 @@ extern template struct ExplicitInstantiationDeclExportedTemplate<int>; USEMEMFUNC(ExplicitInstantiationDeclExportedTemplate<int>, f); // M32-DAG: {{declare|define available_externally}} x86_thiscallcc void @"\01?f@?$ExplicitInstantiationDeclExportedTemplate@H@@QAEXXZ" +template <typename T> struct ExplicitInstantiationDeclExportedDefTemplate { void f() {} }; +extern template struct ExplicitInstantiationDeclExportedDefTemplate<int>; +template struct __declspec(dllexport) ExplicitInstantiationDeclExportedDefTemplate<int>; +// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?f@?$ExplicitInstantiationDeclExportedDefTemplate@H@@QAEXXZ" + namespace { struct InternalLinkageType {}; } struct __declspec(dllexport) PR23308 { void f(InternalLinkageType*); diff --git a/clang/test/CodeGenCXX/dllimport.cpp b/clang/test/CodeGenCXX/dllimport.cpp index 639baea5a3d..6de856017b5 100644 --- a/clang/test/CodeGenCXX/dllimport.cpp +++ b/clang/test/CodeGenCXX/dllimport.cpp @@ -724,6 +724,18 @@ template struct __declspec(dllimport) ExplicitlyInstantiatedWithDifferentAttr<in USEMEMFUNC(ExplicitlyInstantiatedWithDifferentAttr<int>, f); // M32-DAG: {{declare|define available_externally}} dllimport x86_thiscallcc void @"\01?f@?$ExplicitlyInstantiatedWithDifferentAttr@H@@QAEXXZ" +template <typename T> struct ExplicitInstantiationDeclImportedDefTemplate { void f() {} }; +extern template struct ExplicitInstantiationDeclImportedDefTemplate<int>; +template struct __declspec(dllimport) ExplicitInstantiationDeclImportedDefTemplate<int>; +USEMEMFUNC(ExplicitInstantiationDeclImportedDefTemplate<int>, f); +// M32-DAG: {{declare|define available_externally}} dllimport x86_thiscallcc void @"\01?f@?$ExplicitInstantiationDeclImportedDefTemplate@H@@QAEXXZ" + +template <typename T> struct __declspec(dllimport) ExplicitInstantiationDeclExportedDefImportedTemplate { void f() {} }; +extern template struct __declspec(dllimport) ExplicitInstantiationDeclExportedDefImportedTemplate <int>; +template struct __declspec(dllexport) ExplicitInstantiationDeclExportedDefImportedTemplate<int>; +USEMEMFUNC(ExplicitInstantiationDeclExportedDefImportedTemplate<int>, f); +// M32-DAG: {{declare|define available_externally}} dllimport x86_thiscallcc void @"\01?f@?$ExplicitInstantiationDeclExportedDefImportedTemplate@H@@QAEXXZ" + //===----------------------------------------------------------------------===// // Classes with template base classes |

