Patchwork [C++] Use DECL_DECLARES_TYPE_P, DECL_DECLARES_FUNCTION_P more

login
register
mail settings
Submitter Paolo Carlini
Date March 31, 2013, 10:26 a.m.
Message ID <51580F46.9010503@oracle.com>
Download mbox | patch
Permalink /patch/232595/
State New
Headers show

Comments

Paolo Carlini - March 31, 2013, 10:26 a.m.
Hi,

just more straightforward uses of existing predicates. I'm going to boot 
& test and commit as obvious.

Thanks,
Paolo.

////////////////////
2013-03-31  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl2.c (collect_candidates_for_java_method_aliases): Use
	DECL_CLASS_SCOPE_P.
	* name-lookup.c (pushtag_1) Use TYPE_FUNCTION_SCOPE_P.
	(pushdecl_maybe_friend_1): Use DECL_DECLARES_FUNCTION_P.
	* decl.c (duplicate_decls): Likewise.
	* parser.c (cp_parser_template_declaration_after_export): Likewise,
	also DECL_DECLARES_TYPE_P.
	* pt.c (instantiate_class_template_1): Likewise.
	* search.c (lookup_field_1): Use DECL_DECLARES_TYPE_P.
	(lookup_field_r): Likewise.
	(friend_accessible_p): Use DECL_DECLARES_FUNCTION_P.
	(lookup_fnfields_slot_nolazy): Likewise.
	* semantics.c (finish_member_declaration): Likewise.
	* typeck.c (convert_for_initialization): Use TYPE_REFFN_P.
Gabriel Dos Reis - March 31, 2013, 2:46 p.m.
On Sun, Mar 31, 2013 at 5:26 AM, Paolo Carlini <paolo.carlini@oracle.com> wrote:
> Hi,
>
> just more straightforward uses of existing predicates. I'm going to boot &
> test and commit as obvious.
>
> Thanks,
> Paolo.
>
> ////////////////////

souns good to me.

Patch

Index: decl.c
===================================================================
--- decl.c	(revision 197280)
+++ decl.c	(working copy)
@@ -2063,8 +2063,7 @@  duplicate_decls (tree newdecl, tree olddecl, bool
 	  DECL_TEMPLATE_INFO (newdecl) = DECL_TEMPLATE_INFO (olddecl);
 	}
       /* Only functions have these fields.  */
-      if (TREE_CODE (newdecl) == FUNCTION_DECL
-	  || DECL_FUNCTION_TEMPLATE_P (newdecl))
+      if (DECL_DECLARES_FUNCTION_P (newdecl))
 	{
 	  DECL_NONCONVERTING_P (newdecl) = DECL_NONCONVERTING_P (olddecl);
 	  olddecl_friend = DECL_FRIEND_P (olddecl);
Index: decl2.c
===================================================================
--- decl2.c	(revision 197280)
+++ decl2.c	(working copy)
@@ -3665,8 +3665,7 @@  collect_candidates_for_java_method_aliases (void)
     {
       tree fndecl = node->symbol.decl;
 
-      if (DECL_CONTEXT (fndecl)
-	  && TYPE_P (DECL_CONTEXT (fndecl))
+      if (DECL_CLASS_SCOPE_P (fndecl)
 	  && TYPE_FOR_JAVA (DECL_CONTEXT (fndecl))
 	  && TARGET_USE_LOCAL_THUNK_ALIAS_P (fndecl))
 	{
Index: name-lookup.c
===================================================================
--- name-lookup.c	(revision 197280)
+++ name-lookup.c	(working copy)
@@ -887,7 +887,7 @@  pushdecl_maybe_friend_1 (tree x, bool is_friend)
 	    add_decl_to_level (x, NAMESPACE_LEVEL (CP_DECL_CONTEXT (t)));
 	}
 
-      if (TREE_CODE (t) == FUNCTION_DECL || DECL_FUNCTION_TEMPLATE_P (t))
+      if (DECL_DECLARES_FUNCTION_P (t))
 	check_default_args (t);
 
       if (t != x || DECL_FUNCTION_TEMPLATE_P (t))
@@ -5823,8 +5823,7 @@  pushtag_1 (tree name, tree type, tag_scope scope)
 	 convenient way.  (It's otherwise tricky to find a member
 	 function definition it's only pointed to from within a local
 	 class.)  */
-      if (TYPE_CONTEXT (type)
-	  && TREE_CODE (TYPE_CONTEXT (type)) == FUNCTION_DECL)
+      if (TYPE_FUNCTION_SCOPE_P (type))
 	{
 	  if (processing_template_decl)
 	    {
Index: parser.c
===================================================================
--- parser.c	(revision 197280)
+++ parser.c	(working copy)
@@ -21983,8 +21983,7 @@  cp_parser_template_declaration_after_export (cp_pa
 	  decl = finish_member_template_decl (decl);
 	}
       else if (friend_p && decl
-	       && (TREE_CODE (decl) == TYPE_DECL
-		   || DECL_TYPE_TEMPLATE_P (decl)))
+	       && DECL_DECLARES_TYPE_P (decl))
 	make_friend_class (current_class_type, TREE_TYPE (decl),
 			   /*complain=*/true);
     }
@@ -21998,7 +21997,7 @@  cp_parser_template_declaration_after_export (cp_pa
 
   /* Check the template arguments for a literal operator template.  */
   if (decl
-      && (TREE_CODE (decl) == FUNCTION_DECL || DECL_FUNCTION_TEMPLATE_P (decl))
+      && DECL_DECLARES_FUNCTION_P (decl)
       && UDLIT_OPER_P (DECL_NAME (decl)))
     {
       bool ok = true;
@@ -22034,8 +22033,7 @@  cp_parser_template_declaration_after_export (cp_pa
      (Even though there is no definition, there might be default
      arguments that need handling.)  */
   if (member_p && decl
-      && (TREE_CODE (decl) == FUNCTION_DECL
-	  || DECL_FUNCTION_TEMPLATE_P (decl)))
+      && DECL_DECLARES_FUNCTION_P (decl))
     vec_safe_push (unparsed_funs_with_definitions, decl);
 }
 
Index: pt.c
===================================================================
--- pt.c	(revision 197280)
+++ pt.c	(working copy)
@@ -8786,8 +8786,7 @@  instantiate_class_template_1 (tree type)
 		  pushtag (name, newtag, /*tag_scope=*/ts_current);
 		}
 	    }
-	  else if (TREE_CODE (t) == FUNCTION_DECL
-		   || DECL_FUNCTION_TEMPLATE_P (t))
+	  else if (DECL_DECLARES_FUNCTION_P (t))
 	    {
 	      /* Build new TYPE_METHODS.  */
 	      tree r;
Index: search.c
===================================================================
--- search.c	(revision 197280)
+++ search.c	(working copy)
@@ -424,8 +424,7 @@  lookup_field_1 (tree type, tree name, bool want_ty
 		  do
 		    field = fields[i--];
 		  while (i >= lo && DECL_NAME (fields[i]) == name);
-		  if (TREE_CODE (field) != TYPE_DECL
-		      && !DECL_TYPE_TEMPLATE_P (field))
+		  if (!DECL_DECLARES_TYPE_P (field))
 		    field = NULL_TREE;
 		}
 	      else
@@ -478,9 +477,7 @@  lookup_field_1 (tree type, tree name, bool want_ty
 	}
 
       if (DECL_NAME (decl) == name
-	  && (!want_type
-	      || TREE_CODE (decl) == TYPE_DECL
-	      || DECL_TYPE_TEMPLATE_P (decl)))
+	  && (!want_type || DECL_DECLARES_TYPE_P (decl)))
 	return decl;
     }
   /* Not found.  */
@@ -777,8 +774,7 @@  friend_accessible_p (tree scope, tree decl, tree b
   if (!scope)
     return 0;
 
-  if (TREE_CODE (scope) == FUNCTION_DECL
-      || DECL_FUNCTION_TEMPLATE_P (scope))
+  if (DECL_DECLARES_FUNCTION_P (scope))
     befriending_classes = DECL_BEFRIENDING_CLASSES (scope);
   else if (TYPE_P (scope))
     befriending_classes = CLASSTYPE_BEFRIENDING_CLASSES (scope);
@@ -796,8 +792,7 @@  friend_accessible_p (tree scope, tree decl, tree b
       if (protected_accessible_p (decl, t, binfo))
 	return 1;
 
-  if (TREE_CODE (scope) == FUNCTION_DECL
-      || DECL_FUNCTION_TEMPLATE_P (scope))
+  if (DECL_DECLARES_FUNCTION_P (scope))
     {
       /* Perhaps this SCOPE is a member of a class which is a
 	 friend.  */
@@ -1059,8 +1054,7 @@  lookup_field_r (tree binfo, void *data)
 
   /* If we're looking up a type (as with an elaborated type specifier)
      we ignore all non-types we find.  */
-  if (lfi->want_type && TREE_CODE (nval) != TYPE_DECL
-      && !DECL_TYPE_TEMPLATE_P (nval))
+  if (lfi->want_type && !DECL_DECLARES_TYPE_P (nval))
     {
       if (lfi->name == TYPE_IDENTIFIER (type))
 	{
@@ -1509,8 +1503,7 @@  lookup_fnfields_slot_nolazy (tree type, tree name)
 int
 class_method_index_for_fn (tree class_type, tree function)
 {
-  gcc_assert (TREE_CODE (function) == FUNCTION_DECL
-	      || DECL_FUNCTION_TEMPLATE_P (function));
+  gcc_assert (DECL_DECLARES_FUNCTION_P (function));
 
   return lookup_fnfields_1 (class_type,
 			    DECL_CONSTRUCTOR_P (function) ? ctor_identifier :
Index: semantics.c
===================================================================
--- semantics.c	(revision 197280)
+++ semantics.c	(working copy)
@@ -2741,8 +2741,7 @@  finish_member_declaration (tree decl)
   /* Put functions on the TYPE_METHODS list and everything else on the
      TYPE_FIELDS list.  Note that these are built up in reverse order.
      We reverse them (to obtain declaration order) in finish_struct.  */
-  if (TREE_CODE (decl) == FUNCTION_DECL
-      || DECL_FUNCTION_TEMPLATE_P (decl))
+  if (DECL_DECLARES_FUNCTION_P (decl))
     {
       /* We also need to add this function to the
 	 CLASSTYPE_METHOD_VEC.  */
Index: typeck.c
===================================================================
--- typeck.c	(revision 197280)
+++ typeck.c	(working copy)
@@ -7963,8 +7963,7 @@  convert_for_initialization (tree exp, tree type, t
        && (TREE_CODE (type) != REFERENCE_TYPE
 	   || TREE_CODE (TREE_TYPE (type)) != ARRAY_TYPE))
       || (TREE_CODE (TREE_TYPE (rhs)) == FUNCTION_TYPE
-	  && (TREE_CODE (type) != REFERENCE_TYPE
-	      || TREE_CODE (TREE_TYPE (type)) != FUNCTION_TYPE))
+	  && !TYPE_REFFN_P (type))
       || TREE_CODE (TREE_TYPE (rhs)) == METHOD_TYPE)
     rhs = decay_conversion (rhs, complain);