Index: cp-tree.h =================================================================== --- cp-tree.h (revision 247347) +++ cp-tree.h (working copy) @@ -6161,7 +6161,6 @@ extern void append_type_to_template_for_access_che extern tree convert_generic_types_to_packs (tree, int, int); extern tree splice_late_return_type (tree, tree); extern bool is_auto (const_tree); -extern bool is_auto_or_concept (const_tree); extern tree process_template_parm (tree, location_t, tree, bool, bool); extern tree end_template_parm_list (tree); Index: parser.c =================================================================== --- parser.c (revision 247347) +++ parser.c (working copy) @@ -38791,16 +38791,6 @@ make_generic_type_name () return get_identifier (buf); } -/* Predicate that behaves as is_auto_or_concept but matches the parent - node of the generic type rather than the generic type itself. This - allows for type transformation in add_implicit_template_parms. */ - -static inline bool -tree_type_is_auto_or_concept (const_tree t) -{ - return TREE_TYPE (t) && is_auto_or_concept (TREE_TYPE (t)); -} - /* Add an implicit template type parameter to the CURRENT_TEMPLATE_PARMS (creating a new template parameter list if necessary). Returns the newly created template type parm. */ Index: pt.c =================================================================== --- pt.c (revision 247347) +++ pt.c (working copy) @@ -3489,7 +3489,7 @@ find_parameter_packs_r (tree *tp, int *walk_subtre parameter pack (14.6.3), or the type-specifier-seq of a type-id that is a pack expansion, the invented template parameter is a template parameter pack. */ - if (ppd->type_pack_expansion_p && is_auto_or_concept (t)) + if (ppd->type_pack_expansion_p && is_auto (t)) TEMPLATE_TYPE_PARAMETER_PACK (t) = true; if (TEMPLATE_TYPE_PARAMETER_PACK (t)) parameter_pack_p = true; @@ -24806,7 +24806,7 @@ static int extract_autos_r (tree t, void *data) { hash_table &hash = *(hash_table*)data; - if (is_auto_or_concept (t)) + if (is_auto (t)) { /* All the autos were built with index 0; fix that up now. */ tree *p = hash.find_slot (t, INSERT); @@ -25530,7 +25530,7 @@ is_auto (const_tree type) int is_auto_r (tree tp, void */*data*/) { - return is_auto_or_concept (tp); + return is_auto (tp); } /* Returns the TEMPLATE_TYPE_PARM in TYPE representing `auto' iff TYPE contains @@ -25556,26 +25556,6 @@ type_uses_auto (tree type) return find_type_usage (type, is_auto); } -/* Returns true iff TYPE is a TEMPLATE_TYPE_PARM representing 'auto', - 'decltype(auto)' or a concept. */ - -bool -is_auto_or_concept (const_tree type) -{ - return is_auto (type); // or concept -} - -/* Returns the TEMPLATE_TYPE_PARM in TYPE representing a generic type (`auto' or - a concept identifier) iff TYPE contains a use of a generic type. Returns - NULL_TREE otherwise. */ - -tree -type_uses_auto_or_concept (tree type) -{ - return find_type_usage (type, is_auto_or_concept); -} - - /* For a given template T, return the vector of typedefs referenced in T for which access check is needed at T instantiation time. T is either a FUNCTION_DECL or a RECORD_TYPE.