This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/28017] lack of guard variables for explicitly instantiated template static data



------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]