c++: Cleanup some decl pushing apis

Nathan Sidwell nathan@acm.org
Thu Sep 24 19:56:37 GMT 2020


In cleaning up local decl handling, here's an initial patch that takes
advantage of C++'s default args for the is_friend parm of pushdecl,
duplicate_decls and push_template_decl_real and the scope & tpl_header
parms of xref_tag.  Then many of the calls simply not mention these.
I also rename push_template_decl_real to push_template_decl, deleting
the original forwarding function.  This'll make my later patches
changing their types less intrusive.  There are	2 functional changes:

1) push_template_decl requires is_friend to be correct,	it doesn't go
checking for a friend function (an assert is added).

2) debug_overload prints out Hidden and	Using markers for the overload set.

	gcc/cp/
         * cp-tree.h (duplicate_decls): Default is_friend to false.
         (xref_tag): Default tag_scope & tpl_header_p to ts_current & false.
         (push_template_decl_real): Default is_friend to false.  Rename to
         ...
         (push_template_decl): ... here.  Delete original decl.
         * name-lookup.h (pushdecl_namespace_level): Default is_friend to
         false.
         (pushtag): Default tag_scope to ts_current.
         * coroutine.cc (morph_fn_to_coro): Drop default args to xref_tag.
         * decl.c (start_decl): Drop default args to duplicate_decls.
         (start_enum): Drop default arg to pushtag & xref_tag.
	(start_preparsed_function): Pass DECL_FRIEND_P to
         push_template_decl.
         (grokmethod): Likewise.
         * friend.c (do_friend): Rename push_template_decl_real calls.
         * lambda.c (begin_lamnbda_type): Drop default args to xref_tag.
         (vla_capture_type): Likewise.
         * name-lookup.c (maybe_process_template_type_declaration): Rename
         push_template_decl_real call.
         (pushdecl_top_level_and_finish): Drop default arg to
         pushdecl_namespace_level.
         * pt.c (push_template_decl_real): Assert no surprising friend
         functions.  Rename to ...
         (push_template_decl): ... here.  Delete original function.
         (lookup_template_class_1): Drop default args from pushtag.
         (instantiate_class_template_1): Likewise.
         * ptree.c (debug_overload): Print hidden and using markers.
         * rtti.c (init_rtti_processing): Drop refault args from xref_tag.
         * semantics.c (begin_class_definition): Drop default args to
         pushtag.
         gcc/objcp/
         * objcp-decl.c (objcp_start_struct): Drop default args to
         xref_tag.
         (objcp_xref_tag): Likewise.
         libcc1/
         * libcp1plugin.cc (supplement_binding): Drop default args to
         duplicate_decls.
         (safe_pushtag): Drop scope parm.  Drop default args to pushtag.
         (safe_pushdecl_maybe_friend): Rename to ...
         (safe_pushdecl): ... here. Drop is_friend parm.  Drop default args
         to pushdecl.
         (plugin_build_decl): Adjust safe_pushdecl & safe_pushtag calls.
         (plugin_build_constant): Adjust safe_pushdecl call.


pushing to trunk

nathan
-- 
Nathan Sidwell
-------------- next part --------------
A non-text attachment was scrubbed...
Name: decl-cleanup.diff
Type: text/x-patch
Size: 16957 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc-patches/attachments/20200924/4fbae6ee/attachment-0001.bin>


More information about the Gcc-patches mailing list