OSDN Git Service

* error.c (dump_function_name): If T's DECL_LANG_SPECIFIC
authorzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 29 Mar 2004 17:01:59 +0000 (17:01 +0000)
committerzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 29 Mar 2004 17:01:59 +0000 (17:01 +0000)
is null, just print the literal name and return.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@80058 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/error.c

index e3d3a26..28ac751 100644 (file)
@@ -1,3 +1,8 @@
+2004-03-29  Zack Weinberg  <zack@codesourcery.com>
+
+       * error.c (dump_function_name): If T's DECL_LANG_SPECIFIC
+       is null, just print the literal name and return.
+
 2004-03-25  Jason Merrill  <jason@redhat.com>
 
        PR c++/13294
index 324975c..e313c16 100644 (file)
@@ -1134,6 +1134,17 @@ dump_function_name (tree t, int flags)
 {
   tree name = DECL_NAME (t);
 
+  /* We can get here with a decl that was synthesized by language-
+     independent machinery (e.g. coverage.c) in which case it won't
+     have a lang_specific structure attached and DECL_CONSTRUCTOR_P
+     will crash.  In this case it is safe just to print out the
+     literal name.  */
+  if (!DECL_LANG_SPECIFIC (t))
+    {
+      pp_tree_identifier (cxx_pp, name);
+      return;
+    }
+
   if (TREE_CODE (t) == TEMPLATE_DECL)
     t = DECL_TEMPLATE_RESULT (t);
 
@@ -1163,7 +1174,7 @@ dump_function_name (tree t, int flags)
   else
     dump_decl (name, flags);
 
-  if (DECL_LANG_SPECIFIC (t) && DECL_TEMPLATE_INFO (t)
+  if (DECL_TEMPLATE_INFO (t)
       && !DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION (t)
       && (DECL_TEMPLATE_SPECIALIZATION (t)
          || TREE_CODE (DECL_TI_TEMPLATE (t)) != TEMPLATE_DECL