re PR debug/48333 (-fcompare-debug failure (length) - "memmove" x "__builtin_memmove")

PR debug/48333
* calls.c (emit_call_1): Prefer the __builtin declaration of
builtin functions.

From-SVN: r174636
This commit is contained in:
Alexandre Oliva 2011-06-04 10:08:09 +00:00 committed by Alexandre Oliva
parent 57ee85b439
commit 047d33a0d4
2 changed files with 20 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2011-06-04 Alexandre Oliva <aoliva@redhat.com>
PR debug/48333
* calls.c (emit_call_1): Prefer the __builtin declaration of
builtin functions.
2011-06-03 Diego Novillo <dnovillo@google.com>
* lto-streamer-in.c (unpack_value_fields): Remove unneeded asserts.

View File

@ -272,7 +272,20 @@ emit_call_1 (rtx funexp, tree fntree ATTRIBUTE_UNUSED, tree fndecl ATTRIBUTE_UNU
funmem = gen_rtx_MEM (FUNCTION_MODE, funexp);
if (fndecl && TREE_CODE (fndecl) == FUNCTION_DECL)
set_mem_expr (funmem, fndecl);
{
tree t = fndecl;
/* Although a built-in FUNCTION_DECL and its non-__builtin
counterpart compare equal and get a shared mem_attrs, they
produce different dump output in compare-debug compilations,
if an entry gets garbage collected in one compilation, then
adds a different (but equivalent) entry, while the other
doesn't run the garbage collector at the same spot and then
shares the mem_attr with the equivalent entry. */
if (DECL_BUILT_IN_CLASS (t) == BUILT_IN_NORMAL
&& built_in_decls[DECL_FUNCTION_CODE (t)])
t = built_in_decls[DECL_FUNCTION_CODE (t)];
set_mem_expr (funmem, t);
}
else if (fntree)
set_mem_expr (funmem, build_simple_mem_ref (CALL_EXPR_FN (fntree)));