diff options
-rw-r--r-- | gcc/c-family/c-ada-spec.c | 8 | ||||
-rw-r--r-- | gcc/c-family/c-common.c | 11 | ||||
-rw-r--r-- | gcc/c/c-decl.c | 14 | ||||
-rw-r--r-- | gcc/c/c-typeck.c | 10 | ||||
-rw-r--r-- | gcc/calls.c | 2 | ||||
-rw-r--r-- | gcc/cfgexpand.c | 2 | ||||
-rw-r--r-- | gcc/cp/cp-objcp-common.c | 5 | ||||
-rw-r--r-- | gcc/cp/cp-tree.h | 5 | ||||
-rw-r--r-- | gcc/cp/decl.c | 16 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 2 | ||||
-rw-r--r-- | gcc/cp/name-lookup.c | 6 | ||||
-rw-r--r-- | gcc/cp/pt.c | 2 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 2 | ||||
-rw-r--r-- | gcc/dwarf2out.c | 6 | ||||
-rw-r--r-- | gcc/go/go-gcc.cc | 2 | ||||
-rw-r--r-- | gcc/godump.c | 4 | ||||
-rw-r--r-- | gcc/lto/lto-symtab.c | 4 | ||||
-rw-r--r-- | gcc/print-tree.c | 2 | ||||
-rw-r--r-- | gcc/tree-pretty-print.c | 2 | ||||
-rw-r--r-- | gcc/tree-ssa-ccp.c | 2 | ||||
-rw-r--r-- | gcc/tree.h | 16 | ||||
-rw-r--r-- | gcc/xcoffout.c | 2 | ||||
-rw-r--r-- | libcc1/libcc1plugin.cc | 2 | ||||
-rw-r--r-- | libcc1/libcp1plugin.cc | 2 |
24 files changed, 64 insertions, 65 deletions
diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c index c75b173..266a7fe 100644 --- a/gcc/c-family/c-ada-spec.c +++ b/gcc/c-family/c-ada-spec.c @@ -713,7 +713,7 @@ collect_ada_nodes (tree t, const char *source_file) in the context of bindings) and namespaces (we do not handle them properly yet). */ for (n = t; n; n = TREE_CHAIN (n)) - if (!DECL_IS_BUILTIN (n) + if (!DECL_IS_UNDECLARED_BUILTIN (n) && TREE_CODE (n) != NAMESPACE_DECL && LOCATION_FILE (decl_sloc (n, false)) == source_file) to_dump_count++; @@ -723,7 +723,7 @@ collect_ada_nodes (tree t, const char *source_file) /* Store the relevant nodes. */ for (n = t; n; n = TREE_CHAIN (n)) - if (!DECL_IS_BUILTIN (n) + if (!DECL_IS_UNDECLARED_BUILTIN (n) && TREE_CODE (n) != NAMESPACE_DECL && LOCATION_FILE (decl_sloc (n, false)) == source_file) to_dump[i++] = n; @@ -2321,7 +2321,7 @@ dump_ada_node (pretty_printer *buffer, tree node, tree type, int spc, return 0; case TYPE_DECL: - if (DECL_IS_BUILTIN (node)) + if (DECL_IS_UNDECLARED_BUILTIN (node)) { /* Don't print the declaration of built-in types. */ if (name_only) @@ -2444,7 +2444,7 @@ dump_forward_type (pretty_printer *buffer, tree type, tree t, int spc) return; } - if (DECL_IS_BUILTIN (decl) || TREE_VISITED (decl)) + if (DECL_IS_UNDECLARED_BUILTIN (decl) || TREE_VISITED (decl)) return; /* Forward declarations are only needed within a given file. */ diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index 232a479..9302a24 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -7839,7 +7839,7 @@ set_underlying_type (tree x) { if (x == error_mark_node) return; - if (DECL_IS_BUILTIN (x) && TREE_CODE (TREE_TYPE (x)) != ARRAY_TYPE) + if (DECL_IS_UNDECLARED_BUILTIN (x) && TREE_CODE (TREE_TYPE (x)) != ARRAY_TYPE) { if (TYPE_NAME (TREE_TYPE (x)) == 0) TYPE_NAME (TREE_TYPE (x)) = x; @@ -7873,7 +7873,7 @@ user_facing_original_type_p (const_tree type) tree decl = TYPE_NAME (type); /* Look through any typedef in "user" code. */ - if (!DECL_IN_SYSTEM_HEADER (decl) && !DECL_IS_BUILTIN (decl)) + if (!DECL_IN_SYSTEM_HEADER (decl) && !DECL_IS_UNDECLARED_BUILTIN (decl)) return true; /* If the original type is also named and is in the user namespace, @@ -8369,13 +8369,13 @@ reject_gcc_builtin (const_tree expr, location_t loc /* = UNKNOWN_LOCATION */) if (TREE_TYPE (expr) && TREE_CODE (TREE_TYPE (expr)) == FUNCTION_TYPE && TREE_CODE (expr) == FUNCTION_DECL - /* The intersection of DECL_BUILT_IN and DECL_IS_BUILTIN avoids + /* The intersection of DECL_BUILT_IN and DECL_IS_UNDECLARED_BUILTIN avoids false positives for user-declared built-ins such as abs or strlen, and for C++ operators new and delete. The c_decl_implicit() test avoids false positives for implicitly declared built-ins with library fallbacks (such as abs). */ && fndecl_built_in_p (expr) - && DECL_IS_BUILTIN (expr) + && DECL_IS_UNDECLARED_BUILTIN (expr) && !c_decl_implicit (expr) && !DECL_ASSEMBLER_NAME_SET_P (expr)) { @@ -9137,7 +9137,8 @@ c_common_finalize_early_debug (void) struct cgraph_node *cnode; FOR_EACH_FUNCTION (cnode) if (!cnode->alias && !cnode->thunk - && (cnode->has_gimple_body_p () || !DECL_IS_BUILTIN (cnode->decl))) + && (cnode->has_gimple_body_p () + || !DECL_IS_UNDECLARED_BUILTIN (cnode->decl))) (*debug_hooks->early_global_decl) (cnode->decl); } diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c index d4179aa..f19c82c 100644 --- a/gcc/c/c-decl.c +++ b/gcc/c/c-decl.c @@ -2051,7 +2051,7 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, } } else if (TREE_CODE (olddecl) == FUNCTION_DECL - && DECL_IS_BUILTIN (olddecl)) + && DECL_IS_UNDECLARED_BUILTIN (olddecl)) { /* A conflicting function declaration for a predeclared function that isn't actually built in. Objective C uses @@ -2265,7 +2265,7 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, built in, newdecl silently overrides olddecl. The latter occur only in Objective C; see also above. (FIXME: Make Objective C use normal builtins.) */ - if (!DECL_IS_BUILTIN (olddecl) + if (!DECL_IS_UNDECLARED_BUILTIN (olddecl) && !DECL_EXTERN_INLINE (olddecl)) { auto_diagnostic_group d; @@ -2978,7 +2978,7 @@ warn_if_shadowing (tree new_decl) || warn_shadow_local || warn_shadow_compatible_local) /* No shadow warnings for internally generated vars. */ - || DECL_IS_BUILTIN (new_decl)) + || DECL_IS_UNDECLARED_BUILTIN (new_decl)) return; /* Is anything being shadowed? Invisible decls do not count. */ @@ -3631,7 +3631,7 @@ implicitly_declare (location_t loc, tree functionid) in the external scope because they're pushed before the file scope gets created. Catch this here and rebind them into the file scope. */ - if (!fndecl_built_in_p (decl) && DECL_IS_BUILTIN (decl)) + if (!fndecl_built_in_p (decl) && DECL_IS_UNDECLARED_BUILTIN (decl)) { bind (functionid, decl, file_scope, /*invisible=*/false, /*nested=*/true, @@ -10500,7 +10500,7 @@ names_builtin_p (const char *name) { tree id = get_identifier (name); if (tree decl = identifier_global_value (id)) - return TREE_CODE (decl) == FUNCTION_DECL && DECL_IS_BUILTIN (decl); + return TREE_CODE (decl) == FUNCTION_DECL && DECL_IS_UNDECLARED_BUILTIN (decl); /* Also detect common reserved C words that aren't strictly built-in functions. */ @@ -12134,12 +12134,12 @@ collect_source_refs (void) { decls = DECL_INITIAL (t); for (decl = BLOCK_VARS (decls); decl; decl = TREE_CHAIN (decl)) - if (!DECL_IS_BUILTIN (decl)) + if (!DECL_IS_UNDECLARED_BUILTIN (decl)) collect_source_ref (DECL_SOURCE_FILE (decl)); } for (decl = BLOCK_VARS (ext_block); decl; decl = TREE_CHAIN (decl)) - if (!DECL_IS_BUILTIN (decl)) + if (!DECL_IS_UNDECLARED_BUILTIN (decl)) collect_source_ref (DECL_SOURCE_FILE (decl)); } diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c index 2bf46f4..9684037 100644 --- a/gcc/c/c-typeck.c +++ b/gcc/c/c-typeck.c @@ -3014,7 +3014,8 @@ build_function_call (location_t loc, tree function, tree params) static void inform_declaration (tree decl) { - if (decl && (TREE_CODE (decl) != FUNCTION_DECL || !DECL_IS_BUILTIN (decl))) + if (decl && (TREE_CODE (decl) != FUNCTION_DECL + || !DECL_IS_UNDECLARED_BUILTIN (decl))) inform (DECL_SOURCE_LOCATION (decl), "declared here"); } @@ -6578,7 +6579,7 @@ inform_for_arg (tree fundecl, location_t ploc, int parmnum, tree expected_type, tree actual_type) { location_t loc; - if (fundecl && !DECL_IS_BUILTIN (fundecl)) + if (fundecl && !DECL_IS_UNDECLARED_BUILTIN (fundecl)) loc = get_fndecl_argument_location (fundecl, parmnum - 1); else loc = ploc; @@ -6828,7 +6829,7 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type, if (pedwarn (expr_loc, OPT_Wc___compat, "enum conversion when " "passing argument %d of %qE is invalid in C++", parmnum, rname)) - inform ((fundecl && !DECL_IS_BUILTIN (fundecl)) + inform ((fundecl && !DECL_IS_UNDECLARED_BUILTIN (fundecl)) ? DECL_SOURCE_LOCATION (fundecl) : expr_loc, "expected %qT but argument is of type %qT", type, rhstype); @@ -7239,7 +7240,8 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type, case ic_argpass: /* Do not warn for built-in functions, for example memcpy, since we control how they behave and they can be useful in this area. */ - if (TREE_CODE (rname) != FUNCTION_DECL || !DECL_IS_BUILTIN (rname)) + if (TREE_CODE (rname) != FUNCTION_DECL + || !DECL_IS_UNDECLARED_BUILTIN (rname)) warning_at (location, OPT_Wscalar_storage_order, "passing argument %d of %qE from incompatible " "scalar storage order", parmnum, rname); diff --git a/gcc/calls.c b/gcc/calls.c index 1a7632d..a93d4bf 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -1548,7 +1548,7 @@ maybe_warn_alloc_args_overflow (tree fn, tree exp, tree args[2], int idx[2]) { location_t fnloc = DECL_SOURCE_LOCATION (fn); - if (DECL_IS_BUILTIN (fn)) + if (DECL_IS_UNDECLARED_BUILTIN (fn)) inform (loc, "in a call to built-in allocation function %qD", fn); else diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index 6c41a7e..b2d8685 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -6412,7 +6412,7 @@ pass_expand::execute (function *fun) rtl_profile_for_bb (ENTRY_BLOCK_PTR_FOR_FN (fun)); insn_locations_init (); - if (!DECL_IS_BUILTIN (current_function_decl)) + if (!DECL_IS_UNDECLARED_BUILTIN (current_function_decl)) { /* Eventually, all FEs should explicitly set function_start_locus. */ if (LOCATION_LOCUS (fun->function_start_locus) == UNKNOWN_LOCATION) diff --git a/gcc/cp/cp-objcp-common.c b/gcc/cp/cp-objcp-common.c index e1397b7..a38bb0a 100644 --- a/gcc/cp/cp-objcp-common.c +++ b/gcc/cp/cp-objcp-common.c @@ -366,7 +366,8 @@ names_builtin_p (const char *name) tree id = get_identifier (name); if (tree binding = get_global_binding (id)) { - if (TREE_CODE (binding) == FUNCTION_DECL && DECL_IS_BUILTIN (binding)) + if (TREE_CODE (binding) == FUNCTION_DECL + && DECL_IS_UNDECLARED_BUILTIN (binding)) return true; /* Handle the case when an overload for a built-in name exists. */ @@ -376,7 +377,7 @@ names_builtin_p (const char *name) for (ovl_iterator it (binding); it; ++it) { tree decl = *it; - if (DECL_IS_BUILTIN (decl)) + if (DECL_IS_UNDECLARED_BUILTIN (decl)) return true; } } diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index fde9f63..052291c 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -4038,11 +4038,6 @@ more_aggr_init_expr_args_p (const aggr_init_expr_arg_iterator *iter) #define FNDECL_USED_AUTO(NODE) \ TREE_LANG_FLAG_2 (FUNCTION_DECL_CHECK (NODE)) -/* True if NODE is an undeclared builtin decl. As soon as the user - declares it, the location will be updated. */ -#define DECL_UNDECLARED_BUILTIN_P(NODE) \ - (DECL_SOURCE_LOCATION(NODE) == BUILTINS_LOCATION) - /* True for artificial decls added for OpenMP privatized non-static data members. */ #define DECL_OMP_PRIVATIZED_MEMBER(NODE) \ diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 98c1a5d..56bd772 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -1002,7 +1002,7 @@ decls_match (tree newdecl, tree olddecl, bool record_versions /* = true */) /* A new declaration doesn't match a built-in one unless it is also extern "C". */ - if (DECL_IS_BUILTIN (olddecl) + if (DECL_IS_UNDECLARED_BUILTIN (olddecl) && DECL_EXTERN_C_P (olddecl) && !DECL_EXTERN_C_P (newdecl)) return 0; @@ -1205,7 +1205,7 @@ check_redeclaration_exception_specification (tree new_decl, all declarations, including the definition and an explicit specialization, of that function shall have an exception-specification with the same set of type-ids. */ - if (! DECL_IS_BUILTIN (old_decl) + if (! DECL_IS_UNDECLARED_BUILTIN (old_decl) && !comp_except_specs (new_exceptions, old_exceptions, ce_normal)) { const char *const msg @@ -1465,7 +1465,7 @@ duplicate_decls (tree newdecl, tree olddecl, bool hiding, bool was_hidden) /* Check for redeclaration and other discrepancies. */ if (TREE_CODE (olddecl) == FUNCTION_DECL - && DECL_UNDECLARED_BUILTIN_P (olddecl)) + && DECL_IS_UNDECLARED_BUILTIN (olddecl)) { if (TREE_CODE (newdecl) != FUNCTION_DECL) { @@ -1517,7 +1517,7 @@ duplicate_decls (tree newdecl, tree olddecl, bool hiding, bool was_hidden) /* A new declaration doesn't match a built-in one unless it is also extern "C". */ - gcc_assert (DECL_IS_BUILTIN (olddecl)); + gcc_assert (DECL_IS_UNDECLARED_BUILTIN (olddecl)); gcc_assert (DECL_EXTERN_C_P (olddecl)); if (!DECL_EXTERN_C_P (newdecl)) return NULL_TREE; @@ -1627,11 +1627,11 @@ duplicate_decls (tree newdecl, tree olddecl, bool hiding, bool was_hidden) /* Replace the old RTL to avoid problems with inlining. */ COPY_DECL_RTL (newdecl, olddecl); } - /* Even if the types match, prefer the new declarations type for - built-ins which have not been explicitly declared, for - exception lists, etc... */ - else if (DECL_IS_BUILTIN (olddecl)) + else { + /* Even if the types match, prefer the new declarations type + for built-ins which have not been explicitly declared, + for exception lists, etc... */ tree type = TREE_TYPE (newdecl); tree attribs = (*targetm.merge_type_attributes) (TREE_TYPE (olddecl), type); diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 71107e0..1bc7b7e 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -4347,7 +4347,7 @@ collect_source_refs (tree namespc) { /* Iterate over names in this name space. */ for (tree t = NAMESPACE_LEVEL (namespc)->names; t; t = TREE_CHAIN (t)) - if (DECL_IS_BUILTIN (t)) + if (DECL_IS_UNDECLARED_BUILTIN (t)) ; else if (TREE_CODE (t) == NAMESPACE_DECL && !DECL_NAMESPACE_ALIAS (t)) collect_source_refs (t); diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 6a88e68..5bda4c2 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -1946,7 +1946,7 @@ anticipated_builtin_p (tree ovl) { return (TREE_CODE (ovl) == OVERLOAD && OVL_HIDDEN_P (ovl) - && DECL_UNDECLARED_BUILTIN_P (OVL_FUNCTION (ovl))); + && DECL_IS_UNDECLARED_BUILTIN (OVL_FUNCTION (ovl))); } /* BINDING records an existing declaration for a name in the current scope. @@ -3508,7 +3508,7 @@ print_binding_level (cp_binding_level* lvl) continue; if (no_print_builtins && (TREE_CODE (t) == TYPE_DECL) - && DECL_IS_BUILTIN (t)) + && DECL_IS_UNDECLARED_BUILTIN (t)) continue; /* Function decls tend to have longer names. */ @@ -3826,7 +3826,7 @@ do_nonmember_using_decl (name_lookup &lookup, bool fn_scope_p, } else if (old.using_p ()) continue; /* This is a using decl. */ - else if (old.hidden_p () && DECL_UNDECLARED_BUILTIN_P (old_fn)) + else if (old.hidden_p () && DECL_IS_UNDECLARED_BUILTIN (old_fn)) continue; /* This is an anticipated builtin. */ else if (!matching_fn_p (new_fn, old_fn)) continue; /* Parameters do not match. */ diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index c033a28..2a885a9 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -3767,7 +3767,7 @@ builtin_pack_fn_p (tree fn) { if (!fn || TREE_CODE (fn) != FUNCTION_DECL - || !DECL_IS_BUILTIN (fn)) + || !DECL_IS_UNDECLARED_BUILTIN (fn)) return false; if (id_equal (DECL_NAME (fn), "__integer_pack")) diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index d3b7016..08e0c80 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -4062,7 +4062,7 @@ error_args_num (location_t loc, tree fndecl, bool too_many_p) ? G_("too many arguments to function %q#D") : G_("too few arguments to function %q#D"), fndecl); - if (!DECL_IS_BUILTIN (fndecl)) + if (!DECL_IS_UNDECLARED_BUILTIN (fndecl)) inform (DECL_SOURCE_LOCATION (fndecl), "declared here"); } else diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 81cb734..bc32a17 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -12855,7 +12855,7 @@ base_type_die (tree type, bool reverse) if ((dwarf_version >= 4 || !dwarf_strict) && TYPE_NAME (type) && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL - && DECL_IS_BUILTIN (TYPE_NAME (type)) + && DECL_IS_UNDECLARED_BUILTIN (TYPE_NAME (type)) && DECL_NAME (TYPE_NAME (type))) { const char *name = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))); @@ -26046,7 +26046,7 @@ is_naming_typedef_decl (const_tree decl) || TREE_CODE (decl) != TYPE_DECL || DECL_NAMELESS (decl) || !is_tagged_type (TREE_TYPE (decl)) - || DECL_IS_BUILTIN (decl) + || DECL_IS_UNDECLARED_BUILTIN (decl) || is_redundant_typedef (decl) /* It looks like Ada produces TYPE_DECLs that are very similar to C++ naming typedefs but that have different @@ -26958,7 +26958,7 @@ dwarf2out_decl (tree decl) /* Don't bother trying to generate any DIEs to represent any of the normal built-in types for the language we are compiling. */ - if (DECL_IS_BUILTIN (decl)) + if (DECL_IS_UNDECLARED_BUILTIN (decl)) return; /* If we are in terse mode, don't generate any DIEs for types. */ diff --git a/gcc/go/go-gcc.cc b/gcc/go/go-gcc.cc index 505fb15..ba286fa 100644 --- a/gcc/go/go-gcc.cc +++ b/gcc/go/go-gcc.cc @@ -2110,7 +2110,7 @@ Gcc_backend::call_expression(Bfunction*, // containing fcn for call if (optimize && TREE_CODE(fndecl) == FUNCTION_DECL && fndecl_built_in_p (fndecl, BUILT_IN_NORMAL) - && DECL_IS_BUILTIN (fndecl) + && DECL_IS_UNDECLARED_BUILTIN (fndecl) && nargs > 0 && ((SCALAR_FLOAT_TYPE_P(rettype) && SCALAR_FLOAT_TYPE_P(TREE_TYPE(args[0]))) diff --git a/gcc/godump.c b/gcc/godump.c index a7cd7ed..29a45ce 100644 --- a/gcc/godump.c +++ b/gcc/godump.c @@ -484,7 +484,7 @@ static void go_decl (tree decl) { if (!TREE_PUBLIC (decl) - || DECL_IS_BUILTIN (decl) + || DECL_IS_UNDECLARED_BUILTIN (decl) || DECL_NAME (decl) == NULL_TREE) return; vec_safe_push (queue, decl); @@ -522,7 +522,7 @@ go_type_decl (tree decl, int local) { real_debug_hooks->type_decl (decl, local); - if (local || DECL_IS_BUILTIN (decl)) + if (local || DECL_IS_UNDECLARED_BUILTIN (decl)) return; if (DECL_NAME (decl) == NULL_TREE && (TYPE_NAME (TREE_TYPE (decl)) == NULL_TREE diff --git a/gcc/lto/lto-symtab.c b/gcc/lto/lto-symtab.c index d5e38be..0058d98 100644 --- a/gcc/lto/lto-symtab.c +++ b/gcc/lto/lto-symtab.c @@ -694,8 +694,8 @@ lto_symtab_merge_decls_2 (symtab_node *first, bool diagnosed_p) location in that case. It also happens for AVR if two built-ins use the same asm name because their libgcc assembler code is the same, see PR78562. */ - if (DECL_IS_BUILTIN (prevailing->decl) - && DECL_IS_BUILTIN (decl)) + if (DECL_IS_UNDECLARED_BUILTIN (prevailing->decl) + && DECL_IS_UNDECLARED_BUILTIN (decl)) continue; int level = warn_type_compatibility_p (TREE_TYPE (prevailing->decl), diff --git a/gcc/print-tree.c b/gcc/print-tree.c index 84bf819..17c88f8 100644 --- a/gcc/print-tree.c +++ b/gcc/print-tree.c @@ -1052,7 +1052,7 @@ print_decl_identifier (FILE *file, tree decl, int flags) if (flags & PRINT_DECL_ORIGIN) { - if (DECL_IS_BUILTIN (decl)) + if (DECL_IS_UNDECLARED_BUILTIN (decl)) fputs ("<built-in>", file); else { diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c index bd60d74..318f048 100644 --- a/gcc/tree-pretty-print.c +++ b/gcc/tree-pretty-print.c @@ -2165,7 +2165,7 @@ dump_generic_node (pretty_printer *pp, tree node, int spc, dump_flags_t flags, break; case TYPE_DECL: - if (DECL_IS_BUILTIN (node)) + if (DECL_IS_UNDECLARED_BUILTIN (node)) { /* Don't print the declaration of built-in types. */ break; diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index ef44e66..23b2902 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -3583,7 +3583,7 @@ pass_post_ipa_warn::execute (function *fun) continue; tree fndecl = gimple_call_fndecl (stmt); - if (fndecl && DECL_IS_BUILTIN (fndecl)) + if (fndecl && DECL_IS_UNDECLARED_BUILTIN (fndecl)) inform (loc, "in a call to built-in function %qD", fndecl); else if (fndecl) @@ -2456,11 +2456,12 @@ extern tree vector_element_bits_tree (const_tree); #define DECL_SOURCE_FILE(NODE) LOCATION_FILE (DECL_SOURCE_LOCATION (NODE)) #define DECL_SOURCE_LINE(NODE) LOCATION_LINE (DECL_SOURCE_LOCATION (NODE)) #define DECL_SOURCE_COLUMN(NODE) LOCATION_COLUMN (DECL_SOURCE_LOCATION (NODE)) -/* This accessor returns TRUE if the decl it operates on was created - by a front-end or back-end rather than by user code. In this case - builtin-ness is indicated by source location. */ -#define DECL_IS_BUILTIN(DECL) \ - (LOCATION_LOCUS (DECL_SOURCE_LOCATION (DECL)) <= BUILTINS_LOCATION) +/* This decl was created by a front-end or back-end rather than by + user code, and has not been explicitly declared by the user -- when + that happens the source location is updated to the user's + source. This includes decls with no location (!). */ +#define DECL_IS_UNDECLARED_BUILTIN(DECL) \ + (DECL_SOURCE_LOCATION (DECL) <= BUILTINS_LOCATION) /* For FIELD_DECLs, this is the RECORD_TYPE, UNION_TYPE, or QUAL_UNION_TYPE node that the field is a member of. For VAR_DECL, @@ -6278,9 +6279,8 @@ type_has_mode_precision_p (const_tree t) /* Return true if a FUNCTION_DECL NODE is a GCC built-in function. - Note that it is different from the DECL_IS_BUILTIN accessor. For - instance, user declared prototypes of C library functions are not - DECL_IS_BUILTIN but may be fndecl_built_in_p. */ + Note that it is different from the DECL_IS_UNDECLARED_BUILTIN + accessor, as this is impervious to user declaration. */ inline bool fndecl_built_in_p (const_tree node) diff --git a/gcc/xcoffout.c b/gcc/xcoffout.c index 4e51e62..1e72c6e 100644 --- a/gcc/xcoffout.c +++ b/gcc/xcoffout.c @@ -164,7 +164,7 @@ xcoff_assign_fundamental_type_number (tree decl) size_t i; /* Do not waste time searching the list for non-intrinsic types. */ - if (DECL_NAME (decl) == 0 || ! DECL_IS_BUILTIN (decl)) + if (DECL_NAME (decl) == 0 || ! DECL_IS_UNDECLARED_BUILTIN (decl)) return 0; name = IDENTIFIER_POINTER (DECL_NAME (decl)); diff --git a/libcc1/libcc1plugin.cc b/libcc1/libcc1plugin.cc index 8351f2e..241a815 100644 --- a/libcc1/libcc1plugin.cc +++ b/libcc1/libcc1plugin.cc @@ -300,7 +300,7 @@ address_rewriter (tree *in, int *walk_subtrees, void *arg) decl_addr_value *found_value = ctx->address_map.find (&value); if (found_value != NULL) ; - else if (DECL_IS_BUILTIN (*in)) + else if (DECL_IS_UNDECLARED_BUILTIN (*in)) { gcc_address address; diff --git a/libcc1/libcp1plugin.cc b/libcc1/libcp1plugin.cc index d758df8..bab2751 100644 --- a/libcc1/libcp1plugin.cc +++ b/libcc1/libcp1plugin.cc @@ -353,7 +353,7 @@ supplement_binding (cxx_binding *binding, tree decl) /* If TARGET_BVAL is anticipated but has not yet been declared, pretend it is not there at all. */ || (TREE_CODE (target_bval) == FUNCTION_DECL - && DECL_UNDECLARED_BUILTIN_P (target_bval))) + && DECL_IS_UNDECLARED_BUILTIN (target_bval))) binding->value = decl; else if (TREE_CODE (target_bval) == TYPE_DECL && DECL_ARTIFICIAL (target_bval) |