On 10/23/20 6:48 AM, Nathan Sidwell wrote:
> Patch affects C++, C, GO, common-core
>
> 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.

OK

jeff


Reply via email to