error.c (dump_function_name): If T's DECL_LANG_SPECIFIC is null, just print the liter...
authorZack Weinberg <zack@codesourcery.com>
Mon, 29 Mar 2004 17:01:59 +0000 (17:01 +0000)
committerZack Weinberg <zack@gcc.gnu.org>
Mon, 29 Mar 2004 17:01:59 +0000 (17:01 +0000)
* error.c (dump_function_name): If T's DECL_LANG_SPECIFIC
is null, just print the literal name and return.

From-SVN: r80058

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

index e3d3a26863796593bc9fc85ba5547115b82bc285..28ac7515306f196c2aedf380c9592ac5335cf3f7 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 324975c4d672b2e9877cb74a2e905f35619b483f..e313c16f39dc1e7d63de26cc298b9e6912f9eeba 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