This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/28017] lack of guard variables for explicitly instantiated template static data
- From: "hhinnant at apple dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 13 Jun 2006 21:23:18 -0000
- Subject: [Bug c++/28017] lack of guard variables for explicitly instantiated template static data
- References: <bug-28017-11686@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #5 from hhinnant at apple dot com 2006-06-13 21:23 -------
(In reply to comment #4)
> For Darwin we do not want explicit instantiations to be
> linkonce. */
>
>
> This is why this testcase fails on darwin.
> We should instead of just adding DECL_EXPLICIT_INSTANTIATION, check
> TARGET_WEAK_NOT_IN_ARCHIVE_TOC.
>
> (!TARGET_WEAK_NOT_IN_ARCHIVE_TOC
> || (! DECL_EXPLICIT_INSTANTIATION (decl)
> && ! DECL_TEMPLATE_SPECIALIZATION (decl)))
>
> This is a darwin only issue.
I'm having trouble deciding exactly what you mean. Is this what you mean:
#define NEEDS_GUARD_P(decl) (!TARGET_WEAK_NOT_IN_ARCHIVE_TOC \
|| (! DECL_EXPLICIT_INSTANTIATION (decl) \
&& ! DECL_TEMPLATE_SPECIALIZATION (decl)))
Or do you mean:
#define NEEDS_GUARD_P(decl) (TREE_PUBLIC (decl) && (DECL_COMMON (decl) \
|| DECL_ONE_ONLY (decl) \
|| DECL_WEAK (decl) \
||
(!TARGET_WEAK_NOT_IN_ARCHIVE_TOC \
|| (! DECL_EXPLICIT_INSTANTIATION (decl) \
&& ! DECL_TEMPLATE_SPECIALIZATION (decl)))))
?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28017