Commit 5bc08e85 by Paolo Carlini Committed by Paolo Carlini

cp-tree.h (DECL_UNBOUND_CLASS_TEMPLATE_P): Remove.

2013-04-01  Paolo Carlini  <paolo.carlini@oracle.com>

	* cp-tree.h (DECL_UNBOUND_CLASS_TEMPLATE_P): Remove.
	(DECL_FUNCTION_TEMPLATE_P): Adjust.

	* cxx-pretty-print.c (pp_cxx_nested_name_specifier,
	pp_cxx_qualified_id): Use get_containing_scope.
	* parser.c (cp_parser_class_head): Likewise.
	* pt.c (push_template_decl_real): Likewise.

	* decl2.c (import_export_decl): Use DECL_TEMPLOID_INSTANTIATION.
	* pt.c (unify): Use CP_INTEGRAL_TYPE_P.

From-SVN: r197309
parent 136fb3f7
2013-04-01 Paolo Carlini <paolo.carlini@oracle.com>
* cp-tree.h (DECL_UNBOUND_CLASS_TEMPLATE_P): Remove.
(DECL_FUNCTION_TEMPLATE_P): Adjust.
* cxx-pretty-print.c (pp_cxx_nested_name_specifier,
pp_cxx_qualified_id): Use get_containing_scope.
* parser.c (cp_parser_class_head): Likewise.
* pt.c (push_template_decl_real): Likewise.
* decl2.c (import_export_decl): Use DECL_TEMPLOID_INSTANTIATION.
* pt.c (unify): Use CP_INTEGRAL_TYPE_P.
2013-03-31 Paolo Carlini <paolo.carlini@oracle.com> 2013-03-31 Paolo Carlini <paolo.carlini@oracle.com>
* decl2.c (collect_candidates_for_java_method_aliases): Use * decl2.c (collect_candidates_for_java_method_aliases): Use
......
...@@ -3730,14 +3730,10 @@ more_aggr_init_expr_args_p (const aggr_init_expr_arg_iterator *iter) ...@@ -3730,14 +3730,10 @@ more_aggr_init_expr_args_p (const aggr_init_expr_arg_iterator *iter)
#define DECL_TEMPLATE_TEMPLATE_PARM_P(NODE) \ #define DECL_TEMPLATE_TEMPLATE_PARM_P(NODE) \
(TREE_CODE (NODE) == TEMPLATE_DECL && DECL_TEMPLATE_PARM_P (NODE)) (TREE_CODE (NODE) == TEMPLATE_DECL && DECL_TEMPLATE_PARM_P (NODE))
/* Nonzero if NODE is a TEMPLATE_DECL representing an /* Nonzero for a DECL that represents a function template. */
UNBOUND_CLASS_TEMPLATE tree node. */ #define DECL_FUNCTION_TEMPLATE_P(NODE) \
#define DECL_UNBOUND_CLASS_TEMPLATE_P(NODE) \ (TREE_CODE (NODE) == TEMPLATE_DECL \
(TREE_CODE (NODE) == TEMPLATE_DECL && !DECL_TEMPLATE_RESULT (NODE)) && DECL_TEMPLATE_RESULT (NODE) != NULL_TREE \
#define DECL_FUNCTION_TEMPLATE_P(NODE) \
(TREE_CODE (NODE) == TEMPLATE_DECL \
&& !DECL_UNBOUND_CLASS_TEMPLATE_P (NODE) \
&& TREE_CODE (DECL_TEMPLATE_RESULT (NODE)) == FUNCTION_DECL) && TREE_CODE (DECL_TEMPLATE_RESULT (NODE)) == FUNCTION_DECL)
/* Nonzero for a DECL that represents a class template or alias /* Nonzero for a DECL that represents a class template or alias
......
...@@ -260,7 +260,7 @@ pp_cxx_nested_name_specifier (cxx_pretty_printer *pp, tree t) ...@@ -260,7 +260,7 @@ pp_cxx_nested_name_specifier (cxx_pretty_printer *pp, tree t)
{ {
if (!SCOPE_FILE_SCOPE_P (t) && t != pp->enclosing_scope) if (!SCOPE_FILE_SCOPE_P (t) && t != pp->enclosing_scope)
{ {
tree scope = TYPE_P (t) ? TYPE_CONTEXT (t) : DECL_CONTEXT (t); tree scope = get_containing_scope (t);
pp_cxx_nested_name_specifier (pp, scope); pp_cxx_nested_name_specifier (pp, scope);
pp_cxx_template_keyword_if_needed (pp, scope, t); pp_cxx_template_keyword_if_needed (pp, scope, t);
pp_cxx_unqualified_id (pp, t); pp_cxx_unqualified_id (pp, t);
...@@ -308,7 +308,7 @@ pp_cxx_qualified_id (cxx_pretty_printer *pp, tree t) ...@@ -308,7 +308,7 @@ pp_cxx_qualified_id (cxx_pretty_printer *pp, tree t)
default: default:
{ {
tree scope = TYPE_P (t) ? TYPE_CONTEXT (t) : DECL_CONTEXT (t); tree scope = get_containing_scope (t);
if (scope != pp->enclosing_scope) if (scope != pp->enclosing_scope)
{ {
pp_cxx_nested_name_specifier (pp, scope); pp_cxx_nested_name_specifier (pp, scope);
......
...@@ -2572,8 +2572,7 @@ import_export_decl (tree decl) ...@@ -2572,8 +2572,7 @@ import_export_decl (tree decl)
else else
comdat_p = true; comdat_p = true;
} }
else if (DECL_TEMPLATE_INSTANTIATION (decl) else if (DECL_TEMPLOID_INSTANTIATION (decl))
|| DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION (decl))
{ {
/* DECL is an implicit instantiation of a function or static /* DECL is an implicit instantiation of a function or static
data member. */ data member. */
......
...@@ -18773,9 +18773,7 @@ cp_parser_class_head (cp_parser* parser, ...@@ -18773,9 +18773,7 @@ cp_parser_class_head (cp_parser* parser,
for (scope = TREE_TYPE (type); for (scope = TREE_TYPE (type);
scope && TREE_CODE (scope) != NAMESPACE_DECL; scope && TREE_CODE (scope) != NAMESPACE_DECL;
scope = (TYPE_P (scope) scope = get_containing_scope (scope))
? TYPE_CONTEXT (scope)
: DECL_CONTEXT (scope)))
if (TYPE_P (scope) if (TYPE_P (scope)
&& CLASS_TYPE_P (scope) && CLASS_TYPE_P (scope)
&& CLASSTYPE_TEMPLATE_INFO (scope) && CLASSTYPE_TEMPLATE_INFO (scope)
......
...@@ -4803,9 +4803,7 @@ push_template_decl_real (tree decl, bool is_friend) ...@@ -4803,9 +4803,7 @@ push_template_decl_real (tree decl, bool is_friend)
/* Can happen in erroneous input. */ /* Can happen in erroneous input. */
break; break;
else else
current = (TYPE_P (current) current = get_containing_scope (current);
? TYPE_CONTEXT (current)
: DECL_CONTEXT (current));
} }
/* Check that the parms are used in the appropriate qualifying scopes /* Check that the parms are used in the appropriate qualifying scopes
...@@ -16750,8 +16748,7 @@ unify (tree tparms, tree targs, tree parm, tree arg, int strict, ...@@ -16750,8 +16748,7 @@ unify (tree tparms, tree targs, tree parm, tree arg, int strict,
else if (same_type_p (TREE_TYPE (arg), tparm)) else if (same_type_p (TREE_TYPE (arg), tparm))
/* OK */; /* OK */;
else if ((strict & UNIFY_ALLOW_INTEGER) else if ((strict & UNIFY_ALLOW_INTEGER)
&& (TREE_CODE (tparm) == INTEGER_TYPE && CP_INTEGRAL_TYPE_P (tparm))
|| TREE_CODE (tparm) == BOOLEAN_TYPE))
/* Convert the ARG to the type of PARM; the deduced non-type /* Convert the ARG to the type of PARM; the deduced non-type
template argument must exactly match the types of the template argument must exactly match the types of the
corresponding parameter. */ corresponding parameter. */
......
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