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