Commit c6a8f6de by Jakub Jelinek Committed by Jakub Jelinek

re PR bootstrap/47187 (profiledbootstrap failure on i386)

	PR bootstrap/47187
	* value-prof.c (gimple_stringop_fixed_value): Handle
	lhs of the call properly.

	* gcc.dg/tree-prof/pr47187.c: New test.

From-SVN: r168581
parent fe95fbf9
2011-01-07 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/47187
* value-prof.c (gimple_stringop_fixed_value): Handle
lhs of the call properly.
2011-01-07 Jan Hubicka <jh@suse.cz>
PR lto/45375
......
2011-01-07 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/47187
* gcc.dg/tree-prof/pr47187.c: New test.
2011-01-07 Tobias Burnus <burnus@net-b.de>
PR fortran/41580
......
/* PR bootstrap/47187 */
/* { dg-options "-O2" } */
char buf[64];
char buf2[64];
void *
foo (char *p, long size)
{
return __builtin_memcpy (buf, p, size);
}
int
main (void)
{
long i;
for (i = 0; i < 65536; i++)
if (foo ("abcdefghijkl", 12) != buf)
__builtin_abort ();
if (foo (buf2, 64) != buf)
__builtin_abort ();
return 0;
}
/* Transformations based on profile information for values.
Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
This file is part of GCC.
......@@ -1401,6 +1401,21 @@ gimple_stringop_fixed_value (gimple vcall_stmt, tree icall_size, int prob,
e_vj->probability = REG_BR_PROB_BASE;
e_vj->count = all - count;
/* Insert PHI node for the call result if necessary. */
if (gimple_call_lhs (vcall_stmt)
&& TREE_CODE (gimple_call_lhs (vcall_stmt)) == SSA_NAME)
{
tree result = gimple_call_lhs (vcall_stmt);
gimple phi = create_phi_node (result, join_bb);
SSA_NAME_DEF_STMT (result) = phi;
gimple_call_set_lhs (vcall_stmt,
make_ssa_name (SSA_NAME_VAR (result), vcall_stmt));
add_phi_arg (phi, gimple_call_lhs (vcall_stmt), e_vj, UNKNOWN_LOCATION);
gimple_call_set_lhs (icall_stmt,
make_ssa_name (SSA_NAME_VAR (result), icall_stmt));
add_phi_arg (phi, gimple_call_lhs (icall_stmt), e_ij, UNKNOWN_LOCATION);
}
/* Because these are all string op builtins, they're all nothrow. */
gcc_assert (!stmt_could_throw_p (vcall_stmt));
gcc_assert (!stmt_could_throw_p (icall_stmt));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment