core: Rename DECL_IS_BUILTIN -> DECL_IS_UNDECLARED_BUILTIN
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 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, 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.
This commit is contained in:
parent
05f1883cfd
commit
ba6498124c
24 changed files with 64 additions and 65 deletions
|
@ -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. */
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) \
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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"))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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])))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
16
gcc/tree.h
16
gcc/tree.h
|
@ -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)
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue