c++: Name lookup simplifications

Nathan Sidwell nathan@acm.org
Tue Sep 29 16:41:35 GMT 2020


Here are a few cleanups, prior to landing the hidden decl changes.

1) Clear cxx_binding flags in the allocator, not at each user of the 
allocator.

2) Refactor update_binding.  The logic was getting too convoluted.

3) Set friendliness and	anticipatedness	before pushing a template decl 
(not after).

         gcc/cp/
         * name-lookup.c (create_local_binding): Do not clear
         INHERITED_VALUE_BINDING_P here.
         (name_lookup::process_binding): Move done hidden-decl triage to ...
         (name_lookup::search_namespace_only): ... here, its only caller.
         (cxx_binding_make): Clear flags here.
         (push_binding): Not here.
         (pop_local_binding): RAII.
         (update_binding): Refactor.
         (do_pushdecl): Assert we're never revealing a local binding.
         (do_pushdecl_with_scope): Directly call do_pushdecl.
         (get_class_binding): Do not clear LOCAL_BINDING_P here.
         * pt.c (push_template_decl): Set friend & anticipated before
         pushing.

pushing to trunk

nathan

-- 
Nathan Sidwell
-------------- next part --------------
A non-text attachment was scrubbed...
Name: name-lookup-cleanups.diff
Type: text/x-patch
Size: 9797 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc-patches/attachments/20200929/9966522c/attachment.bin>


More information about the Gcc-patches mailing list