diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index 4937cce4621f..8a7af678b33d 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -11124,8 +11124,7 @@ DeclResult Sema::ActOnExplicitInstantiation( Def->setTemplateSpecializationKind(TSK); if (!getDLLAttr(Def) && getDLLAttr(Specialization) && - (Context.getTargetInfo().shouldDLLImportComdatSymbols() && - !Context.getTargetInfo().getTriple().isPS())) { + Context.getTargetInfo().shouldDLLImportComdatSymbols()) { // An explicit instantiation definition can add a dll attribute to a // template with a previous instantiation declaration. MinGW doesn't // allow this. @@ -11142,8 +11141,7 @@ DeclResult Sema::ActOnExplicitInstantiation( bool NewlyDLLExported = !PreviouslyDLLExported && Specialization->hasAttr(); if (Old_TSK == TSK_ImplicitInstantiation && NewlyDLLExported && - (Context.getTargetInfo().shouldDLLImportComdatSymbols() && - !Context.getTargetInfo().getTriple().isPS())) { + Context.getTargetInfo().shouldDLLImportComdatSymbols()) { // An explicit instantiation definition can add a dll attribute to a // template with a previous implicit instantiation. MinGW doesn't allow // this. We limit clang to only adding dllexport, to avoid potentially diff --git a/clang/test/CodeGenCXX/windows-implicit-dllexport-template-specialization.cpp b/clang/test/CodeGenCXX/windows-implicit-dllexport-template-specialization.cpp index 3a5693275824..d281826ee70f 100644 --- a/clang/test/CodeGenCXX/windows-implicit-dllexport-template-specialization.cpp +++ b/clang/test/CodeGenCXX/windows-implicit-dllexport-template-specialization.cpp @@ -1,7 +1,7 @@ // RUN: %clang_cc1 -std=c++11 -triple i686-windows -fdeclspec -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-MS -// RUN: %clang_cc1 -std=c++11 -triple i686-windows-itanium -fdeclspec -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-IA -// RUN: %clang_cc1 -std=c++11 -triple x86_64-scei-ps4 -fdeclspec -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-PS4 -// RUN: %clang_cc1 -std=c++11 -triple x86_64-sie-ps5 -fdeclspec -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-PS4 +// RUN: %clang_cc1 -std=c++11 -triple i686-windows-itanium -fdeclspec -emit-llvm %s -o - | FileCheck %s +// RUN: %clang_cc1 -std=c++11 -triple x86_64-scei-ps4 -fdeclspec -emit-llvm %s -o - | FileCheck %s +// RUN: %clang_cc1 -std=c++11 -triple x86_64-sie-ps5 -fdeclspec -emit-llvm %s -o - | FileCheck %s template struct s {}; @@ -15,8 +15,5 @@ template class __declspec(dllexport) t; // CHECK-MS: dllexport {{.*}} @"??4?$t@D@@QAEAAV0@ABV0@@Z" // CHECK-MS: dllexport {{.*}} @"??4?$s@D@@QAEAAU0@ABU0@@Z" -// CHECK-IA: dllexport {{.*}} @_ZN1tIcEaSERKS0_ -// CHECK-IA: dllexport {{.*}} @_ZN1sIcEaSERKS0_ - -// CHECK-PS4-NOT: @_ZN1tIcEaSERKS0_ -// CHECK-PS4-NOT: @_ZN1sIcEaSERKS0_ +// CHECK: dllexport {{.*}} @_ZN1tIcEaSERKS0_ +// CHECK: dllexport {{.*}} @_ZN1sIcEaSERKS0_ diff --git a/clang/test/CodeGenCXX/windows-itanium-dllexport.cpp b/clang/test/CodeGenCXX/windows-itanium-dllexport.cpp index c09fa30d761a..334cebff99da 100644 --- a/clang/test/CodeGenCXX/windows-itanium-dllexport.cpp +++ b/clang/test/CodeGenCXX/windows-itanium-dllexport.cpp @@ -1,6 +1,6 @@ // RUN: %clang_cc1 -emit-llvm -triple i686-windows-itanium -fdeclspec %s -o - | FileCheck %s --check-prefixes=CHECK,WI -// RUN: %clang_cc1 -emit-llvm -triple x86_64-scei-ps4 -fdeclspec %s -o - | FileCheck %s --check-prefixes=CHECK,PS4 -// RUN: %clang_cc1 -emit-llvm -triple x86_64-sie-ps5 -fdeclspec %s -o - | FileCheck %s --check-prefixes=CHECK,PS4 +// RUN: %clang_cc1 -emit-llvm -triple x86_64-scei-ps4 -fdeclspec %s -o - | FileCheck %s --check-prefixes=CHECK,PS +// RUN: %clang_cc1 -emit-llvm -triple x86_64-sie-ps5 -fdeclspec %s -o - | FileCheck %s --check-prefixes=CHECK,PS #define JOIN2(x, y) x##y #define JOIN(x, y) JOIN2(x, y) @@ -27,18 +27,14 @@ template class __declspec(dllexport) c; extern template class c; template class __declspec(dllexport) c; -// WI: define {{.*}} dllexport {{.*}} @_ZN1cIcEaSERKS0_ -// WI: define {{.*}} dllexport {{.*}} @_ZN1cIcE1fEv -// PS4-NOT: @_ZN1cIcEaSERKS0_ -// PS4: define weak_odr void @_ZN1cIcE1fEv +// CHECK: define {{.*}} dllexport {{.*}} @_ZN1cIcEaSERKS0_ +// CHECK: define {{.*}} dllexport {{.*}} @_ZN1cIcE1fEv c g; template class __declspec(dllexport) c; -// WI: define {{.*}} dllexport {{.*}} @_ZN1cIdEaSERKS0_ -// WI: define {{.*}} dllexport {{.*}} @_ZN1cIdE1fEv -// PS4-NOT: @_ZN1cIdEaSERKS0_ -// PS4: define weak_odr void @_ZN1cIdE1fEv +// CHECK: define {{.*}} dllexport {{.*}} @_ZN1cIdEaSERKS0_ +// CHECK: define {{.*}} dllexport {{.*}} @_ZN1cIdE1fEv template struct outer { @@ -59,4 +55,4 @@ USEMEMFUNC(outer::inner, f) // CHECK-DAG: declare dllimport {{.*}} @_ZN5outerIcE1fEv // WI-DAG: define {{.*}} @_ZN5outerIcE5inner1fEv -// PS4-DAG: declare {{.*}} @_ZN5outerIcE5inner1fEv +// PS-DAG: declare {{.*}} @_ZN5outerIcE5inner1fEv