Commit 4be2397b by Richard Stallman

(template_name_p): New function.

(sdbout_record_type_name): Use it to possibly use the
DECL_ASSEMBLER_NAME instead of DECL_NAME if looking at a template.
(sdbout_symbol): Ditto.

From-SVN: r2787
parent 8c1d7353
...@@ -387,6 +387,17 @@ plain_type (type) ...@@ -387,6 +387,17 @@ plain_type (type)
return val; return val;
} }
static int
template_name_p (name)
tree name;
{
register char *ptr = IDENTIFIER_POINTER (name);
while (*ptr && *ptr != '<')
ptr++;
return *ptr != '\0';
}
static void static void
sdbout_record_type_name (type) sdbout_record_type_name (type)
tree type; tree type;
...@@ -410,11 +421,16 @@ sdbout_record_type_name (type) ...@@ -410,11 +421,16 @@ sdbout_record_type_name (type)
&& TYPE_LANG_SPECIFIC (type)) && TYPE_LANG_SPECIFIC (type))
{ {
t = DECL_NAME (TYPE_NAME (type)); t = DECL_NAME (TYPE_NAME (type));
/* The DECL_NAME for templates includes "<>", which breaks
most assemblers. Use its assembler name instead, which
has been mangled into being safe. */
if (t && template_name_p (t))
t = DECL_ASSEMBLER_NAME (TYPE_NAME (type));
} }
#endif #endif
/* Now get the name as a string, or invent one. */ /* Now get the name as a string, or invent one. */
if (t != 0) if (t != NULL_TREE)
name = IDENTIFIER_POINTER (t); name = IDENTIFIER_POINTER (t);
} }
...@@ -636,6 +652,9 @@ sdbout_symbol (decl, local) ...@@ -636,6 +652,9 @@ sdbout_symbol (decl, local)
return; return;
/* Output typedef name. */ /* Output typedef name. */
if (template_name_p (DECL_NAME (decl)))
PUT_SDB_DEF (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)));
else
PUT_SDB_DEF (IDENTIFIER_POINTER (DECL_NAME (decl))); PUT_SDB_DEF (IDENTIFIER_POINTER (DECL_NAME (decl)));
PUT_SDB_SCL (C_TPDEF); PUT_SDB_SCL (C_TPDEF);
break; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment