This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/29365] Unnecessary anonymous namespace warnings
- From: "spark at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 25 Jun 2007 18:13:09 -0000
- Subject: [Bug c++/29365] Unnecessary anonymous namespace warnings
- References: <bug-29365-7796@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #30 from spark at gcc dot gnu dot org 2007-06-25 18:13 -------
The following patch will essentially disable the warning
for template instantiations in the anonymous namespace.
Index: gcc/cp/decl2.c
===================================================================
--- gcc/cp/decl2.c (revision 125999)
+++ gcc/cp/decl2.c (working copy)
@@ -1850,7 +1850,9 @@ constrain_class_visibility (tree type)
if (subvis == VISIBILITY_ANON)
{
if (strcmp (main_input_filename,
- DECL_SOURCE_FILE (TYPE_MAIN_DECL (ftype))))
+ DECL_SOURCE_FILE (TYPE_MAIN_DECL (ftype)))
+ && !(CLASS_TYPE_P (ftype)
+ && CLASSTYPE_USE_TEMPLATE (ftype)))
warning (0, "\
%qT has a field %qD whose type uses the anonymous namespace",
type, t);
@@ -1871,7 +1873,9 @@ constrain_class_visibility (tree type)
if (subvis == VISIBILITY_ANON)
{
if (strcmp (main_input_filename,
- DECL_SOURCE_FILE (TYPE_MAIN_DECL (TREE_TYPE (t)))))
+ DECL_SOURCE_FILE (TYPE_MAIN_DECL (TREE_TYPE (t))))
+ && !(CLASS_TYPE_P (TREE_TYPE (t))
+ && CLASSTYPE_USE_TEMPLATE (TREE_TYPE (t))))
warning (0, "\
%qT has a base %qT whose type uses the anonymous namespace",
type, TREE_TYPE (t));
I don't know whether it's possible to do this warning
accurately, as I can't figure out
how to recover where the template instantiation has happened
at this point in compilation.
DECL_SOURCE_FILE (TYPE_MAIN_DECL (ftype))
points to the source file of the declaration of the template itself,
not where the template instantiation happened.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29365