Patchwork C++ PATCH: Use VAR_P instead of direct TREE_CODE (t) == VAR_DECL

login
register
mail settings
Submitter Paolo Carlini
Date April 2, 2013, 9:44 a.m.
Message ID <515AA87E.3050603@oracle.com>
Download mbox | patch
Permalink /patch/232927/
State New
Headers show

Comments

Paolo Carlini - April 2, 2013, 9:44 a.m.
Hi,

On 04/02/2013 11:30 AM, Gabriel Dos Reis wrote:

[]
> Sorry for chiming in late - but VAR_P loses the fact that we are checking
> for a decl ... VAR_DECL_P would be more like following existing practice
> (otherwise we can shorten VAR_OR_FUNCTION_DECL_P to
> VAR_OR_FUNCTION_P for example).  As for further cleanups we seem
> to have a few IS_... macros as well (one even IS_..._P).
>
> Richard.
> If we are checking for a VAR, we necessarily checking for a VAR decl..
>
> The purpose of the macro is make the predicates more readable.
> I would not mind having VAR_OR_FUNCTION_P instead.
>
> Yes, we should get rid of the IS_.
For example we have:

#define IS_OVERLOAD_TYPE(T) TAGGED_TYPE_P (T)

shall we keep only one? The below - untested - gets rid of the latter 
and renames the former to OVERLOAD_TYPE_P.

Paolo.

/////////////////
Gabriel Dos Reis - April 2, 2013, 9:50 a.m.
On Tue, Apr 2, 2013 at 4:44 AM, Paolo Carlini <paolo.carlini@oracle.com> wrote:
> Hi,
>
> On 04/02/2013 11:30 AM, Gabriel Dos Reis wrote:
>
> []
>
>> Sorry for chiming in late - but VAR_P loses the fact that we are checking
>> for a decl ... VAR_DECL_P would be more like following existing practice
>> (otherwise we can shorten VAR_OR_FUNCTION_DECL_P to
>> VAR_OR_FUNCTION_P for example).  As for further cleanups we seem
>> to have a few IS_... macros as well (one even IS_..._P).
>>
>> Richard.
>> If we are checking for a VAR, we necessarily checking for a VAR decl..
>>
>> The purpose of the macro is make the predicates more readable.
>> I would not mind having VAR_OR_FUNCTION_P instead.
>>
>> Yes, we should get rid of the IS_.
>
> For example we have:
>
> #define IS_OVERLOAD_TYPE(T) TAGGED_TYPE_P (T)
>
> shall we keep only one? The below - untested - gets rid of the latter and
> renames the former to OVERLOAD_TYPE_P.
>
> Paolo.
>
> /////////////////
>
>

That is a sensible choice.  OK, it passes testing.

Patch

Index: call.c
===================================================================
--- call.c	(revision 197341)
+++ call.c	(working copy)
@@ -5097,8 +5097,8 @@  build_new_op_1 (location_t loc, enum tree_code cod
   if (code == COND_EXPR)
     /* Use build_conditional_expr instead.  */
     gcc_unreachable ();
-  else if (! IS_OVERLOAD_TYPE (TREE_TYPE (arg1))
-	   && (! arg2 || ! IS_OVERLOAD_TYPE (TREE_TYPE (arg2))))
+  else if (! OVERLOAD_TYPE_P (TREE_TYPE (arg1))
+	   && (! arg2 || ! OVERLOAD_TYPE_P (TREE_TYPE (arg2))))
     goto builtin;
 
   if (code == POSTINCREMENT_EXPR || code == POSTDECREMENT_EXPR)
Index: class.c
===================================================================
--- class.c	(revision 197341)
+++ class.c	(working copy)
@@ -1319,7 +1319,7 @@  struct abi_tag_data
 static tree
 find_abi_tags_r (tree *tp, int */*walk_subtrees*/, void *data)
 {
-  if (!TAGGED_TYPE_P (*tp))
+  if (!OVERLOAD_TYPE_P (*tp))
     return NULL_TREE;
 
   if (tree attributes = lookup_attribute ("abi_tag", TYPE_ATTRIBUTES (*tp)))
Index: cp-tree.h
===================================================================
--- cp-tree.h	(revision 197341)
+++ cp-tree.h	(working copy)
@@ -1233,7 +1233,7 @@  enum languages { lang_c, lang_cplusplus, lang_java
 
 /* Nonzero if NODE has no name for linkage purposes.  */
 #define TYPE_ANONYMOUS_P(NODE) \
-  (TAGGED_TYPE_P (NODE) && ANON_AGGRNAME_P (TYPE_LINKAGE_IDENTIFIER (NODE)))
+  (OVERLOAD_TYPE_P (NODE) && ANON_AGGRNAME_P (TYPE_LINKAGE_IDENTIFIER (NODE)))
 
 /* The _DECL for this _TYPE.  */
 #define TYPE_MAIN_DECL(NODE) (TYPE_STUB_DECL (TYPE_MAIN_VARIANT (NODE)))
@@ -1270,9 +1270,8 @@  enum languages { lang_c, lang_cplusplus, lang_java
 /* Keep these checks in ascending code order.  */
 #define RECORD_OR_UNION_CODE_P(T)	\
   ((T) == RECORD_TYPE || (T) == UNION_TYPE)
-#define TAGGED_TYPE_P(T) \
+#define OVERLOAD_TYPE_P(T) \
   (CLASS_TYPE_P (T) || TREE_CODE (T) == ENUMERAL_TYPE)
-#define IS_OVERLOAD_TYPE(T) TAGGED_TYPE_P (T)
 
 /* True if this a "Java" type, defined in 'extern "Java"'.  */
 #define TYPE_FOR_JAVA(NODE) TYPE_LANG_FLAG_3 (NODE)
Index: decl.c
===================================================================
--- decl.c	(revision 197341)
+++ decl.c	(working copy)
@@ -4182,7 +4182,7 @@  void
 warn_misplaced_attr_for_class_type (source_location location,
 				    tree class_type)
 {
-  gcc_assert (TAGGED_TYPE_P (class_type));
+  gcc_assert (OVERLOAD_TYPE_P (class_type));
 
   warning_at (location, OPT_Wattributes,
 	      "attribute ignored in declaration "
@@ -4497,7 +4497,7 @@  start_decl (const cp_declarator *declarator,
   /* If this is a typedef that names the class for linkage purposes
      (7.1.3p8), apply any attributes directly to the type.  */
   if (TREE_CODE (decl) == TYPE_DECL
-      && TAGGED_TYPE_P (TREE_TYPE (decl))
+      && OVERLOAD_TYPE_P (TREE_TYPE (decl))
       && decl == TYPE_NAME (TYPE_MAIN_VARIANT (TREE_TYPE (decl))))
     flags = ATTR_FLAG_TYPE_IN_PLACE;
   else
@@ -10938,7 +10938,7 @@  type_is_deprecated (tree type)
     return type;
 
   /* Do warn about using typedefs to a deprecated class.  */
-  if (TAGGED_TYPE_P (type) && type != TYPE_MAIN_VARIANT (type))
+  if (OVERLOAD_TYPE_P (type) && type != TYPE_MAIN_VARIANT (type))
     return type_is_deprecated (TYPE_MAIN_VARIANT (type));
 
   code = TREE_CODE (type);
Index: decl2.c
===================================================================
--- decl2.c	(revision 197341)
+++ decl2.c	(working copy)
@@ -868,7 +868,7 @@  grokfield (const cp_declarator *declarator,
 
 	  /* If this is a typedef that names the class for linkage purposes
 	     (7.1.3p8), apply any attributes directly to the type.  */
-	  if (TAGGED_TYPE_P (TREE_TYPE (value))
+	  if (OVERLOAD_TYPE_P (TREE_TYPE (value))
 	      && value == TYPE_NAME (TYPE_MAIN_VARIANT (TREE_TYPE (value))))
 	    attrflags = ATTR_FLAG_TYPE_IN_PLACE;
 
@@ -1934,7 +1934,7 @@  min_vis_r (tree *tp, int *walk_subtrees, void *dat
     {
       *walk_subtrees = 0;
     }
-  else if (TAGGED_TYPE_P (*tp)
+  else if (OVERLOAD_TYPE_P (*tp)
 	   && !TREE_PUBLIC (TYPE_MAIN_DECL (*tp)))
     {
       *vis_p = VISIBILITY_ANON;
Index: pt.c
===================================================================
--- pt.c	(revision 197341)
+++ pt.c	(working copy)
@@ -324,7 +324,7 @@  get_template_info (const_tree t)
   if (!tinfo && DECL_IMPLICIT_TYPEDEF_P (t))
     t = TREE_TYPE (t);
 
-  if (TAGGED_TYPE_P (t))
+  if (OVERLOAD_TYPE_P (t))
     tinfo = TYPE_TEMPLATE_INFO (t);
   else if (TREE_CODE (t) == BOUND_TEMPLATE_TEMPLATE_PARM)
     tinfo = TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO (t);
Index: tree.c
===================================================================
--- tree.c	(revision 197341)
+++ tree.c	(working copy)
@@ -3306,7 +3306,7 @@  handle_abi_tag_attribute (tree* node, tree name, t
 {
   if (TYPE_P (*node))
     {
-      if (!TAGGED_TYPE_P (*node))
+      if (!OVERLOAD_TYPE_P (*node))
 	{
 	  error ("%qE attribute applied to non-class, non-enum type %qT",
 		 name, *node);