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.
/////////////////
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);