[llvm-branch-commits] [clang] 583fb96 - Revert "[clang] Handle instantiated members to determine visibility (#136128)"
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Apr 18 08:48:34 PDT 2025
Author: Erich Keane
Date: 2025-04-18T08:48:31-07:00
New Revision: 583fb96d16c34c5d2b2925a9135c94c587beefed
URL: https://github.com/llvm/llvm-project/commit/583fb96d16c34c5d2b2925a9135c94c587beefed
DIFF: https://github.com/llvm/llvm-project/commit/583fb96d16c34c5d2b2925a9135c94c587beefed.diff
LOG: Revert "[clang] Handle instantiated members to determine visibility (#136128)"
This reverts commit a8fe21f3f502a49cb05b69b0d6fa74472b93888a.
Added:
Modified:
clang/lib/AST/Decl.cpp
clang/test/CodeGenCXX/visibility.cpp
Removed:
################################################################################
diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp
index b59619892979a..ad1cb01592e9b 100644
--- a/clang/lib/AST/Decl.cpp
+++ b/clang/lib/AST/Decl.cpp
@@ -400,9 +400,9 @@ void LinkageComputer::mergeTemplateLV(
FunctionTemplateDecl *temp = specInfo->getTemplate();
// Merge information from the template declaration.
LinkageInfo tempLV = getLVForDecl(temp, computation);
- // The linkage and visibility of the specialization should be
- // consistent with the template declaration.
- LV.mergeMaybeWithVisibility(tempLV, considerVisibility);
+ // The linkage of the specialization should be consistent with the
+ // template declaration.
+ LV.setLinkage(tempLV.getLinkage());
// Merge information from the template parameters.
LinkageInfo paramsLV =
@@ -1051,13 +1051,6 @@ LinkageComputer::getLVForClassMember(const NamedDecl *D,
if (const auto *redeclTemp = dyn_cast<RedeclarableTemplateDecl>(temp)) {
if (isExplicitMemberSpecialization(redeclTemp)) {
explicitSpecSuppressor = temp->getTemplatedDecl();
- } else if (const RedeclarableTemplateDecl *from =
- redeclTemp->getInstantiatedFromMemberTemplate()) {
- // If no explicit visibility is specified yet, and this is an
- // instantiated member of a template, look up visibility there
- // as well.
- LinkageInfo fromLV = from->getLinkageAndVisibility();
- LV.mergeMaybeWithVisibility(fromLV, considerVisibility);
}
}
}
diff --git a/clang/test/CodeGenCXX/visibility.cpp b/clang/test/CodeGenCXX/visibility.cpp
index b69278a71d48e..e1061f3dbd18f 100644
--- a/clang/test/CodeGenCXX/visibility.cpp
+++ b/clang/test/CodeGenCXX/visibility.cpp
@@ -1457,45 +1457,9 @@ namespace test71 {
// CHECK-LABEL: declare hidden noundef i32 @_ZN6test713fooIiE3zedEv(
// CHECK-LABEL: define linkonce_odr noundef i32 @_ZN6test713fooIiE3barIiEET_v(
// CHECK-LABEL: define linkonce_odr hidden noundef i64 @_ZN6test713fooIlE3zedEv(
- // CHECK-LABEL: define linkonce_odr hidden noundef i32 @_ZN6test713fooIlE3barIiEET_v(
+ // CHECK-LABEL: define linkonce_odr noundef i32 @_ZN6test713fooIlE3barIiEET_v(
// CHECK-HIDDEN-LABEL: declare hidden noundef i32 @_ZN6test713fooIiE3zedEv(
// CHECK-HIDDEN-LABEL: define linkonce_odr noundef i32 @_ZN6test713fooIiE3barIiEET_v(
// CHECK-HIDDEN-LABEL: define linkonce_odr hidden noundef i64 @_ZN6test713fooIlE3zedEv(
// CHECK-HIDDEN-LABEL: define linkonce_odr hidden noundef i32 @_ZN6test713fooIlE3barIiEET_v(
}
-
-// https://github.com/llvm/llvm-project/issues/103477
-namespace test72 {
- template <class a>
- struct t {
- template <int>
- static HIDDEN void bar() {}
- };
-
- void test() {
- t<char>::bar<1>();
- }
- // CHECK-LABEL: define linkonce_odr hidden void @_ZN6test721tIcE3barILi1EEEvv(
- // CHECK-HIDDEN-LABEL: define linkonce_odr hidden void @_ZN6test721tIcE3barILi1EEEvv(
-}
-
-// https://github.com/llvm/llvm-project/issues/31462
-namespace test73 {
- template <class T> struct s {
- template <class U>
- __attribute__((__visibility__("hidden"))) U should_not_be_exported();
- };
-
- template <class T> template <class U> U s<T>::should_not_be_exported() {
- return U();
- }
-
- extern template struct __attribute__((__visibility__("default"))) s<int>;
-
- int f() {
- s<int> o;
- return o.should_not_be_exported<int>();
- }
- // CHECK-LABEL: define linkonce_odr noundef i32 @_ZN6test731sIiE22should_not_be_exportedIiEET_v(
- // CHECK-HIDDEN-LABEL: define linkonce_odr noundef i32 @_ZN6test731sIiE22should_not_be_exportedIiEET_v(
-}
More information about the llvm-branch-commits
mailing list