Commit 5fee5eca by Nathan Sidwell Committed by Nathan Sidwell

Kill IDENTIFIER_TEMPLATE.

	* cp-tree.h (lang_identifier): Remove class_template_info field.
	(IDENTIFIER_TEMPLATE): Delete.
	* name-lookup.c (constructor_name_full): Subsume into ...
	(constructor_name): ... here.  Don't check IDENTIFIER_TEMPLATE.
	(constructor_name_p): Likewise.
	* mangle.c (write_source_name): Likewise.
	* ptree.c (cxx_print_identifier): Likewise.

From-SVN: r249693
parent e708b94b
2017-06-27 Nathan Sidwell <nathan@acm.org>
Kill IDENTIFIER_TEMPLATE.
* cp-tree.h (lang_identifier): Remove class_template_info field.
(IDENTIFIER_TEMPLATE): Delete.
* name-lookup.c (constructor_name_full): Subsume into ...
(constructor_name): ... here. Don't check IDENTIFIER_TEMPLATE.
(constructor_name_p): Likewise.
* mangle.c (write_source_name): Likewise.
* ptree.c (cxx_print_identifier): Likewise.
2017-06-27 Marek Polacek <polacek@redhat.com> 2017-06-27 Marek Polacek <polacek@redhat.com>
PR bootstrap/81216 PR bootstrap/81216
......
...@@ -527,7 +527,6 @@ extern GTY(()) tree cp_global_trees[CPTI_MAX]; ...@@ -527,7 +527,6 @@ extern GTY(()) tree cp_global_trees[CPTI_MAX];
struct GTY(()) lang_identifier { struct GTY(()) lang_identifier {
struct c_common_identifier c_common; struct c_common_identifier c_common;
cxx_binding *bindings; cxx_binding *bindings;
tree class_template_info;
tree label_value; tree label_value;
}; };
...@@ -954,9 +953,6 @@ enum GTY(()) abstract_class_use { ...@@ -954,9 +953,6 @@ enum GTY(()) abstract_class_use {
/* Macros for access to language-specific slots in an identifier. */ /* Macros for access to language-specific slots in an identifier. */
#define IDENTIFIER_TEMPLATE(NODE) \
(LANG_IDENTIFIER_CAST (NODE)->class_template_info)
/* The IDENTIFIER_BINDING is the innermost cxx_binding for the /* The IDENTIFIER_BINDING is the innermost cxx_binding for the
identifier. Its PREVIOUS is the next outermost binding. Each identifier. Its PREVIOUS is the next outermost binding. Each
VALUE field is a DECL for the associated declaration. Thus, VALUE field is a DECL for the associated declaration. Thus,
......
...@@ -1460,11 +1460,6 @@ write_source_name (tree identifier) ...@@ -1460,11 +1460,6 @@ write_source_name (tree identifier)
{ {
MANGLE_TRACE_TREE ("source-name", identifier); MANGLE_TRACE_TREE ("source-name", identifier);
/* Never write the whole template-id name including the template
arguments; we only want the template name. */
if (IDENTIFIER_TEMPLATE (identifier))
identifier = IDENTIFIER_TEMPLATE (identifier);
write_unsigned_number (IDENTIFIER_LENGTH (identifier)); write_unsigned_number (IDENTIFIER_LENGTH (identifier));
write_identifier (IDENTIFIER_POINTER (identifier)); write_identifier (IDENTIFIER_POINTER (identifier));
} }
......
...@@ -3183,27 +3183,12 @@ set_identifier_type_value (tree id, tree decl) ...@@ -3183,27 +3183,12 @@ set_identifier_type_value (tree id, tree decl)
} }
/* Return the name for the constructor (or destructor) for the /* Return the name for the constructor (or destructor) for the
specified class TYPE. When given a template, this routine doesn't specified class. */
lose the specialization. */
static inline tree
constructor_name_full (tree type)
{
return TYPE_IDENTIFIER (TYPE_MAIN_VARIANT (type));
}
/* Return the name for the constructor (or destructor) for the
specified class. When given a template, return the plain
unspecialized name. */
tree tree
constructor_name (tree type) constructor_name (tree type)
{ {
tree name; return TYPE_IDENTIFIER (TYPE_MAIN_VARIANT (type));
name = constructor_name_full (type);
if (IDENTIFIER_TEMPLATE (name))
name = IDENTIFIER_TEMPLATE (name);
return name;
} }
/* Returns TRUE if NAME is the name for the constructor for TYPE, /* Returns TRUE if NAME is the name for the constructor for TYPE,
...@@ -3212,8 +3197,6 @@ constructor_name (tree type) ...@@ -3212,8 +3197,6 @@ constructor_name (tree type)
bool bool
constructor_name_p (tree name, tree type) constructor_name_p (tree name, tree type)
{ {
tree ctor_name;
gcc_assert (MAYBE_CLASS_TYPE_P (type)); gcc_assert (MAYBE_CLASS_TYPE_P (type));
if (!name) if (!name)
...@@ -3227,12 +3210,10 @@ constructor_name_p (tree name, tree type) ...@@ -3227,12 +3210,10 @@ constructor_name_p (tree name, tree type)
|| TREE_CODE (type) == TYPEOF_TYPE) || TREE_CODE (type) == TYPEOF_TYPE)
return false; return false;
ctor_name = constructor_name_full (type); tree ctor_name = constructor_name (type);
if (name == ctor_name) if (name == ctor_name)
return true; return true;
if (IDENTIFIER_TEMPLATE (ctor_name)
&& name == IDENTIFIER_TEMPLATE (ctor_name))
return true;
return false; return false;
} }
......
...@@ -181,7 +181,6 @@ cxx_print_identifier (FILE *file, tree node, int indent) ...@@ -181,7 +181,6 @@ cxx_print_identifier (FILE *file, tree node, int indent)
fprintf (file, "%s local bindings <%p>", get_identifier_kind_name (node), fprintf (file, "%s local bindings <%p>", get_identifier_kind_name (node),
(void *) IDENTIFIER_BINDING (node)); (void *) IDENTIFIER_BINDING (node));
print_node (file, "label", IDENTIFIER_LABEL_VALUE (node), indent + 4); print_node (file, "label", IDENTIFIER_LABEL_VALUE (node), indent + 4);
print_node (file, "template", IDENTIFIER_TEMPLATE (node), indent + 4);
} }
void void
......
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