diff options
author | Nathan Sidwell <nathan@acm.org> | 2017-05-24 15:56:06 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2017-05-24 15:56:06 +0000 |
commit | c0edbb32c15b1c5c2145294641e1dec688d23adc (patch) | |
tree | df0dd2d62b585a644ae547c4f2636c5f02ec758b /gcc/cp/tree.c | |
parent | 657e5f832623af590eabf9794dd2f9b0d7ac0855 (diff) | |
download | gcc-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.c | 21 |
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 |