From: Iain Buclaw Date: Mon, 26 Jul 2021 17:04:24 +0000 (+0200) Subject: d: Set COMDAT and visibility of thunks only if they are public. X-Git-Tag: basepoints/gcc-13~5695 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e22b7ae15b09aef1ec05dec6e24580d0063e9ab1;p=thirdparty%2Fgcc.git d: Set COMDAT and visibility of thunks only if they are public. It is not expected to have a member function that can be non-public, but this guards against any internal errors that might occur should that ever change in the front-end. gcc/d/ChangeLog: * decl.cc (make_thunk): Set COMDAT and visibility of thunks only if they are public. --- diff --git a/gcc/d/decl.cc b/gcc/d/decl.cc index 59991c3c2557..cf61cd49159a 100644 --- a/gcc/d/decl.cc +++ b/gcc/d/decl.cc @@ -1781,9 +1781,12 @@ make_thunk (FuncDeclaration *decl, int offset) DECL_ARTIFICIAL (thunk) = 1; DECL_DECLARED_INLINE_P (thunk) = 0; - DECL_VISIBILITY (thunk) = DECL_VISIBILITY (function); - DECL_COMDAT (thunk) = DECL_COMDAT (function); - DECL_WEAK (thunk) = DECL_WEAK (function); + if (TREE_PUBLIC (thunk)) + { + DECL_VISIBILITY (thunk) = DECL_VISIBILITY (function); + DECL_COMDAT (thunk) = DECL_COMDAT (function); + DECL_WEAK (thunk) = DECL_WEAK (function); + } /* When the thunk is for an extern C++ function, let C++ do the thunk generation and just reference the symbol as extern, instead of