From: Zack Weinberg Date: Mon, 29 Mar 2004 17:01:59 +0000 (+0000) Subject: error.c (dump_function_name): If T's DECL_LANG_SPECIFIC is null, just print the liter... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=93604b1a023480f2e1547ef1955fdee284771048;p=gcc.git error.c (dump_function_name): If T's DECL_LANG_SPECIFIC is null, just print the literal name and return. * error.c (dump_function_name): If T's DECL_LANG_SPECIFIC is null, just print the literal name and return. From-SVN: r80058 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e3d3a268637..28ac7515306 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2004-03-29 Zack Weinberg + + * 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 PR c++/13294 diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 324975c4d67..e313c16f39d 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -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