summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2017-10-06 21:28:21 +0000
committerReid Kleckner <rnk@google.com>2017-10-06 21:28:21 +0000
commitebaf772204ef76d560b2975277ba33a9c970de1a (patch)
tree0d0b9f74fc6eb86a9f3bc0048a87b023f9750d04 /clang
parent07bc04ff384b367d6e4bb318fbad8e9c6b0a304e (diff)
downloadbcm5719-llvm-ebaf772204ef76d560b2975277ba33a9c970de1a.tar.gz
bcm5719-llvm-ebaf772204ef76d560b2975277ba33a9c970de1a.zip
Revert "For dllexport class templates, export specializations of member functions (PR34849)"
This reverts r315025, it caused http://crbug.com/772461 llvm-svn: 315111
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Sema/SemaDecl.cpp15
-rw-r--r--clang/test/CodeGenCXX/dllexport.cpp8
2 files changed, 0 insertions, 23 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index 5b90557e799..48fb2318e61 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -6041,21 +6041,6 @@ static void checkDLLAttributeRedeclaration(Sema &S, NamedDecl *OldDecl,
diag::warn_dllimport_dropped_from_inline_function)
<< NewDecl << OldImportAttr;
}
-
- // A specialization of a class template member function is processed here
- // since it's a redeclaration. If the parent class is dllexport, the
- // specialization inherits that attribute. This doesn't happen automatically
- // since the parent class isn't instantiated until later.
- if (IsSpecialization && isa<CXXMethodDecl>(NewDecl) && !NewImportAttr &&
- !NewExportAttr) {
- if (const DLLExportAttr *ParentExportAttr = cast<CXXMethodDecl>(NewDecl)
- ->getParent()
- ->getAttr<DLLExportAttr>()) {
- DLLExportAttr *NewAttr = ParentExportAttr->clone(S.Context);
- NewAttr->setInherited(true);
- NewDecl->addAttr(NewAttr);
- }
- }
}
/// Given that we are within the definition of the given function,
diff --git a/clang/test/CodeGenCXX/dllexport.cpp b/clang/test/CodeGenCXX/dllexport.cpp
index a984b6d7ef1..bdef2eb06e6 100644
--- a/clang/test/CodeGenCXX/dllexport.cpp
+++ b/clang/test/CodeGenCXX/dllexport.cpp
@@ -831,14 +831,6 @@ template <typename T> struct ExplicitInstantiationTwoAttributes { void f() {} };
template struct __declspec(dllexport) __declspec(dllimport) ExplicitInstantiationTwoAttributes<int>;
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?f@?$ExplicitInstantiationTwoAttributes@H@@QAEXXZ"
-// Specializations of exported class template functions get exported.
-namespace pr34849 {
-template <typename T> struct __declspec(dllexport) ExportedClass { void foo(); };
-template<> void ExportedClass<int>::foo() {}
-template struct ExportedClass<int>;
-// M32-DAG: define dllexport x86_thiscallcc void @"\01?foo@?$ExportedClass@H@pr34849@@QAEXXZ"
-}
-
//===----------------------------------------------------------------------===//
// Classes with template base classes
OpenPOWER on IntegriCloud