Commit 90bc4623 by Richard Guenther Committed by Richard Biener

re PR tree-optimization/48822 (G++ gets stucks and never finishes compilation…

re PR tree-optimization/48822 (G++ gets stucks and never finishes compilation when enabling -O2/3 optimization options.)

2011-05-02  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/48822
	* tree-ssa-sccvn.c (set_ssa_val_to): Never go up the lattice.
	(process_scc): Indicate which iteration we start.

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

From-SVN: r173250
parent 9fd15228
2011-05-02 Richard Guenther <rguenther@suse.de>
PR tree-optimization/48822
* tree-ssa-sccvn.c (set_ssa_val_to): Never go up the lattice.
(process_scc): Indicate which iteration we start.
2011-05-02 Jan Hubicka <jh@suse.cz>
* lto-section-in.c (lto_input_1_unsigned): Move to lto-streamer.h
......
2011-05-02 Richard Guenther <rguenther@suse.de>
PR tree-optimization/48822
* gcc.dg/torture/pr48822.c: New testcase.
2011-05-02 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/47969
......
/* { dg-do compile } */
void foo (int *, int *);
int bar ()
{
int a = 0;
int b = 0;
if (b != 0)
{
int ax = a;
int bx = b;
while (bx != 0)
{
int tem = ax % bx;
ax = bx;
bx = tem;
}
}
foo (&a, &b);
}
......@@ -2241,12 +2241,26 @@ print_scc (FILE *out, VEC (tree, heap) *scc)
static inline bool
set_ssa_val_to (tree from, tree to)
{
tree currval;
tree currval = SSA_VAL (from);
if (from != to
&& TREE_CODE (to) == SSA_NAME
&& SSA_NAME_OCCURS_IN_ABNORMAL_PHI (to))
to = from;
if (from != to)
{
if (currval == from)
{
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, "Not changing value number of ");
print_generic_expr (dump_file, from, 0);
fprintf (dump_file, " from VARYING to ");
print_generic_expr (dump_file, to, 0);
fprintf (dump_file, "\n");
}
return false;
}
else if (TREE_CODE (to) == SSA_NAME
&& SSA_NAME_OCCURS_IN_ABNORMAL_PHI (to))
to = from;
}
/* The only thing we allow as value numbers are VN_TOP, ssa_names
and invariants. So assert that here. */
......@@ -2263,8 +2277,6 @@ set_ssa_val_to (tree from, tree to)
print_generic_expr (dump_file, to, 0);
}
currval = SSA_VAL (from);
if (currval != to && !operand_equal_p (currval, to, OEP_PURE_SAME))
{
VN_INFO (from)->valnum = to;
......@@ -3280,6 +3292,8 @@ process_scc (VEC (tree, heap) *scc)
{
changed = false;
iterations++;
if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file, "Starting iteration %d\n", iterations);
/* As we are value-numbering optimistically we have to
clear the expression tables and the simplified expressions
in each iteration until we converge. */
......
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