In fixing 77812, a name lookup bug, I got confused by the overload
creation code, which seemed a bit complex. This simplifies it by
clearly separating the optional wrapping of a single decl from the
subsequent prepending of the new decl.
applied to trunk
nathan
--
Nathan Sidwell
2017-01-11 Nathan Sidwell <nat...@acm.org>
* name-lookup.c (push_overloaded_decl_1): Refactor OVERLOAD creation.
Index: cp/name-lookup.c
===================================================================
--- cp/name-lookup.c (revision 244314)
+++ cp/name-lookup.c (working copy)
@@ -2454,9 +2454,11 @@ push_overloaded_decl_1 (tree decl, int f
|| (flags & PUSH_USING))
{
if (old && TREE_CODE (old) != OVERLOAD)
- new_binding = ovl_cons (decl, ovl_cons (old, NULL_TREE));
+ /* Wrap the existing single decl in an overload. */
+ new_binding = ovl_cons (old, NULL_TREE);
else
- new_binding = ovl_cons (decl, old);
+ new_binding = old;
+ new_binding = ovl_cons (decl, new_binding);
if (flags & PUSH_USING)
OVL_USED (new_binding) = 1;
}