mirror of git://gcc.gnu.org/git/gcc.git
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
This commit is contained in:
parent
e708b94bb7
commit
5fee5eca5f
|
|
@ -1,3 +1,14 @@
|
||||||
|
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];
|
||||||
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 {
|
||||||
|
|
||||||
/* 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)
|
||||||
{
|
{
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 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)
|
||||||
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)
|
||||||
|| 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)
|
||||||
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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue