On 10/23/20 8:48 AM, Nathan Sidwell wrote:
Patch affects C++, C, GO, common-core

ping?

In cleaning up C++'s handling of hidden decls, I renamed its DECL_BUILTIN_P, which checks for loc == BUILTINS_LOCATION to DECL_UNDECLARED_BUILTIN_P, because the location gets updated, if user source declares the builtin, and the predicate no longer holds.  The original name was confusing me.  (The builtin may still retain builtin properties in the redeclaration, and other predicates can still detect that.)

I discovered that tree.h had its own variant 'DECL_IS_BUILTIN', which behaves in (almost) the same manner.  And therefore has the same mutating behaviour.

This patch deletes the C++ one, and renames tree.h's to DECL_IS_UNDECLARED_BUILTIN, to emphasize its non-constantness.  I guess _IS_ wins over _P :)

The indirection via SOURCE_LOCUS was introduced by Richard in 2012:
     2012-09-26  Richard Guenther  <rguent...@suse.de>

             * tree.h (DECL_IS_BUILTIN): Compare LOCATION_LOCUS.

     From-SVN: r191759

I couldn't find the email on gcc-patches, but I don't see why this is necessary -- no undeclared builtin has an adhoc location, they're all BUILTINS_LOCATION, or UNKNOWN_LOCATION.

That some builtins have UNKNOWN_LOCATION is why the test is <= rather than ==.  This seems wrong, and we should be using BUILTINS_LOCATION everywhere.  But that's a different bug.

bootstrapped on x86-64-linux and test results look the same across all the languages I can build. ok?

     gcc/
     * tree.h (DECL_IS_BUILTIN): Rename to ...
     (DECL_IS_UNDECLARED_BUILTIN): ... here.  No need to use
         SOURCE_LOCUS.
     * calls.c (maybe_warn_alloc_args_overflow): Adjust for rename.
     * cfgexpand.c (pass_expand::execute): Likewise.
     * dwarf2out.c (base_type_die, is_naming_typedef_decl): Likewise.
     * godump.c (go_decl, go_type_decl): Likewise.
     * print-tree.c (print_decl_identifier): Likewise.
     * tree-pretty-print.c (dump_generic_node): Likewise.
     * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Likewise.
     * xcoffout.c (xcoff_assign_fundamental_type_number): Likewise.
     gcc/c-family/
     * c-ada-spec.c (collect_ada_nodes): Rename
     DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
     (collect_ada_node): Likewise.
     (dump_forward_type): Likewise.
     * c-common.c (set_underlying_type): Rename
     DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
     (user_facing_original_type): Likewise.
     (c_common_finalize_early_debug): Likewise.
     gcc/c/
     * c-decl.c (diagnose_mismatched_decls): Rename
     DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
     (warn_if_shadowing, implicitly_declare, names_builtin_p)
     (collect_source_refs): Likewise.
     * c-typeck.c (inform_declaration, inform_for_arg)
     (convert_for_assignment): Likewise.
     gcc/cp/
     * cp-tree.h (DECL_UNDECLARED_BUILTIN_P): Delete.
     * cp-objcp-common.c (names_bultin_p): Rename
     DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
     * decl.c (decls_match): Likewise.  Replace
     DECL_UNDECLARED_BUILTIN_P with DECL_IS_UNDECLARED_BUILTIN.
     (duplicate_decls): Likewise.
     * decl2.c (collect_source_refs): Likewise.
     * name-lookup.c (anticipated_builtin_p, print_binding_level)
     (do_nonmember_using_decl): Likewise.
     * pt.c (builtin_pack_fn_p): Likewise.
     * typeck.c (error_args_num): Likewise.
     gcc/lto/
     * lto-symtab.c (lto_symtab_merge_decls_1): Rename
     DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
     gcc/go/
     * go-gcc.cc (Gcc_backend::call_expression): Rename
     DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
     libcc1/
     * libcc1plugin.cc (address_rewriter): Rename
     DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
     * libcp1plugin.cc (supplement_binding): Likewise.

nathan


--
Nathan Sidwell

Reply via email to