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( -} _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits