While repurposing TREE_USED as OVL_USED to indicate it was found via a
using declaration is 'cute', it's terribly confusing. Particularly as I
now have the need for a 'this overload is being used' flag.
This patch replaces OVL_USED with OVL_USING_P and maps it to one of the
TREE_LANG flags.
nathan
--
Nathan Sidwell
2017-05-18 Nathan Sidwell <nat...@acm.org>
* cp-tree.h (OVL_USED): Replace with ...
(OVL_USING_P): ... this.
(ovl_iterator::using_p): Adjust.
* name-lookup.c (push_overloaded_decl_1,
do_nonmember_using_decl): Adjust.
* search.c (lookup_field_r): Adjust.
* tree.c (ovl_insert, ovl_scope): Adjust.
Index: cp-tree.h
===================================================================
--- cp-tree.h (revision 248198)
+++ cp-tree.h (working copy)
@@ -351,6 +351,7 @@ extern GTY(()) tree cp_global_trees[CPTI
CONSTRUCTOR_NO_IMPLICIT_ZERO (in CONSTRUCTOR)
TINFO_USED_TEMPLATE_ID (in TEMPLATE_INFO)
PACK_EXPANSION_SIZEOF_P (in *_PACK_EXPANSION)
+ OVL_USING_P (in OVERLOAD)
2: IDENTIFIER_OPNAME_P (in IDENTIFIER_NODE)
ICS_THIS_FLAG (in _CONV)
DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (in VAR_DECL)
@@ -640,14 +641,12 @@ typedef struct ptrmem_cst * ptrmem_cst_t
((TREE_CODE (NODE) == OVERLOAD) ? OVL_FUNCTION (NODE) : (NODE))
#define OVL_NEXT(NODE) \
((TREE_CODE (NODE) == OVERLOAD) ? TREE_CHAIN (NODE) : NULL_TREE)
-/* If set, this was imported in a using declaration.
- This is not to confuse with being used somewhere, which
- is not important for this node. */
-#define OVL_USED(NODE) TREE_USED (OVERLOAD_CHECK (NODE))
/* If set, this OVERLOAD was created for argument-dependent lookup
and can be freed afterward. */
#define OVL_ARG_DEPENDENT(NODE) TREE_LANG_FLAG_0 (OVERLOAD_CHECK (NODE))
+/* If set, this was imported in a using declaration. */
+#define OVL_USING_P(NODE) TREE_LANG_FLAG_1 (OVERLOAD_CHECK (NODE))
/* If set, this overload contains a nested overload. */
#define OVL_NESTED_P(NODE) TREE_LANG_FLAG_3 (OVERLOAD_CHECK (NODE))
/* If set, this overload was constructed during lookup. */
@@ -705,7 +704,7 @@ class ovl_iterator
/* Whether this overload was introduced by a using decl. */
bool using_p () const
{
- return TREE_CODE (ovl) == OVERLOAD && OVL_USED (ovl);
+ return TREE_CODE (ovl) == OVERLOAD && OVL_USING_P (ovl);
}
tree remove_node (tree head)
{
Index: name-lookup.c
===================================================================
--- name-lookup.c (revision 248198)
+++ name-lookup.c (working copy)
@@ -2920,7 +2920,7 @@ push_overloaded_decl_1 (tree decl, int f
tree fn = OVL_CURRENT (tmp);
tree dup;
- if (TREE_CODE (tmp) == OVERLOAD && OVL_USED (tmp)
+ if (TREE_CODE (tmp) == OVERLOAD && OVL_USING_P (tmp)
&& !(flags & PUSH_USING)
&& compparms_for_decl_and_using_decl (fn, decl)
&& ! decls_match (fn, decl))
@@ -3136,7 +3136,7 @@ do_nonmember_using_decl (tree scope, tre
if (new_fn == old_fn)
/* The function already exists in the current namespace. */
break;
- else if (TREE_CODE (tmp1) == OVERLOAD && OVL_USED (tmp1))
+ else if (TREE_CODE (tmp1) == OVERLOAD && OVL_USING_P (tmp1))
continue; /* this is a using decl */
else if (compparms_for_decl_and_using_decl (new_fn, old_fn))
{
Index: search.c
===================================================================
--- search.c (revision 248166)
+++ search.c (working copy)
@@ -1106,7 +1106,7 @@ lookup_field_r (tree binfo, void *data)
if (!nval)
/* Look for a data member or type. */
nval = lookup_field_1 (type, lfi->name, lfi->want_type);
- else if (TREE_CODE (nval) == OVERLOAD && OVL_USED (nval))
+ else if (TREE_CODE (nval) == OVERLOAD && OVL_USING_P (nval))
{
/* If we have both dependent and non-dependent using-declarations, return
the dependent one rather than an incomplete list of functions. */
Index: tree.c
===================================================================
--- tree.c (revision 248198)
+++ tree.c (working copy)
@@ -2138,7 +2138,7 @@ ovl_insert (tree fn, tree maybe_ovl, boo
/* Find insertion point. */
while (maybe_ovl && TREE_CODE (maybe_ovl) == OVERLOAD
- && (weight < OVL_USED (maybe_ovl)))
+ && (weight < OVL_USING_P (maybe_ovl)))
{
if (!result)
result = maybe_ovl;
@@ -2151,7 +2151,7 @@ ovl_insert (tree fn, tree maybe_ovl, boo
{
trail = ovl_make (fn, maybe_ovl);
if (using_p)
- OVL_USED (trail) = true;
+ OVL_USING_P (trail) = true;
}
if (insert_after)
@@ -2290,7 +2290,7 @@ ovl_scope (tree ovl)
if (TREE_CODE (ovl) == TEMPLATE_ID_EXPR)
ovl = TREE_OPERAND (ovl, 0);
/* Skip using-declarations. */
- while (TREE_CODE (ovl) == OVERLOAD && OVL_USED (ovl) && OVL_CHAIN (ovl))
+ while (TREE_CODE (ovl) == OVERLOAD && OVL_USING_P (ovl) && OVL_CHAIN (ovl))
ovl = OVL_CHAIN (ovl);
return CP_DECL_CONTEXT (OVL_CURRENT (ovl));
}