Commit 92a8d7a7 by Richard Biener Committed by Richard Biener

re PR tree-optimization/56661 (Incorrect code with -O1 -ftree-pre)

2013-03-20  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/56661
	* tree-ssa-sccvn.c (visit_use): Only value-number calls if
	the result does not have to be distinct.

	* gcc.dg/torture/pr56661.c: New testcase.

From-SVN: r196825
parent 54714c68
2013-03-20 Richard Biener <rguenther@suse.de>
PR tree-optimization/56661
* tree-ssa-sccvn.c (visit_use): Only value-number calls if
the result does not have to be distinct.
2013-03-20 Richard Biener <rguenther@suse.de>
* tree-inline.c (copy_tree_body_r): Sync MEM_REF code with
remap_gimple_op_r.
......
2013-03-20 Richard Biener <rguenther@suse.de>
PR tree-optimization/56661
* gcc.dg/torture/pr56661.c: New testcase.
2013-03-20 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR rtl-optimization/56605
......
/* { dg-do run } */
__attribute__((noinline, noclone)) void
bar (int *b)
{
b[0] = b[1] = b[2] = 1;
}
__attribute__((noinline, noclone)) int
baz (int x)
{
if (x != 1)
__builtin_abort ();
}
void
foo (int x)
{
if (x == 0)
{
int *b = __builtin_malloc (3 * sizeof (int));
while (b[0])
;
}
else if (x == 1)
{
int i, j;
int *b = __builtin_malloc (3 * sizeof (int));
for (i = 0; i < 2; i++)
{
bar (b);
for (j = 0; j < 3; ++j)
baz (b[j]);
baz (b[0]);
}
}
}
int
main ()
{
int x = 1;
asm volatile ("" : "+r" (x));
foo (x);
return 0;
}
......@@ -3506,8 +3506,13 @@ visit_use (tree use)
We can value number 2 calls to the same function with the
same vuse and the same operands which are not subsequent
the same, because there is no code in the program that can
compare the 2 values. */
|| gimple_vdef (stmt)))
compare the 2 values... */
|| (gimple_vdef (stmt)
/* ... unless the call returns a pointer which does
not alias with anything else. In which case the
information that the values are distinct are encoded
in the IL. */
&& !(gimple_call_return_flags (stmt) & ERF_NOALIAS))))
changed = visit_reference_op_call (lhs, stmt);
else
changed = defs_to_varying (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