aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/tree.c
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2017-05-24 15:56:06 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2017-05-24 15:56:06 +0000
commitc0edbb32c15b1c5c2145294641e1dec688d23adc (patch)
treedf0dd2d62b585a644ae547c4f2636c5f02ec758b /gcc/cp/tree.c
parent657e5f832623af590eabf9794dd2f9b0d7ac0855 (diff)
downloadgcc-c0edbb32c15b1c5c2145294641e1dec688d23adc.zip
gcc-c0edbb32c15b1c5c2145294641e1dec688d23adc.tar.gz
gcc-c0edbb32c15b1c5c2145294641e1dec688d23adc.tar.bz2
cp-tree.h (ovl_skip_hidden): Declare.
* cp-tree.h (ovl_skip_hidden): Declare. * tree.c (ovl_skip_hidden): New. * name-lookup.c (arg_assoc_namespace): Call ovl_skip_hidden. (lookup_arg_dependent_1): Likewise. (ambiguous_decl): Use DECL_HIDDEN_P, ovl_skip_hidden. (hidden_name_p, remove_hidden_names): Delete. (lookup_name_real_1): Do not strip hidden names. * name-lookup.h (hidden_name_p, remove_hidden_names): Delete. From-SVN: r248423
Diffstat (limited to 'gcc/cp/tree.c')
-rw-r--r--gcc/cp/tree.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index 5ae9601..29e3256c 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -2204,6 +2204,27 @@ ovl_insert (tree fn, tree maybe_ovl, bool using_p)
return result;
}
+/* Skip any hidden names at the beginning of OVL. */
+
+tree
+ovl_skip_hidden (tree ovl)
+{
+ for (;
+ ovl && TREE_CODE (ovl) == OVERLOAD && OVL_HIDDEN_P (ovl);
+ ovl = OVL_CHAIN (ovl))
+ gcc_checking_assert (DECL_HIDDEN_P (OVL_FUNCTION (ovl)));
+
+ if (ovl && TREE_CODE (ovl) != OVERLOAD && DECL_HIDDEN_P (ovl))
+ {
+ /* Any hidden functions should have been wrapped in an
+ overload, but injected friend classes will not. */
+ gcc_checking_assert (!DECL_DECLARES_FUNCTION_P (ovl));
+ ovl = NULL_TREE;
+ }
+
+ return ovl;
+}
+
/* NODE is an OVL_HIDDEN_P node which is now revealed. */
tree