Commit ce25943a by Daniel Berlin Committed by Daniel Berlin

Fix PR tree-optimization/15979 Fix PR tree-optimization/15981

2004-06-13  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/15979
	Fix PR tree-optimization/15981
	* tree-ssa-pre.c (insert_aux): Fix faulty logic so that we don't
	try to insert values undefined along some path.

From-SVN: r83076
parent bd85b0cb
2004-06-13 Daniel Berlin <dberlin@dberlin.org>
Fix PR tree-optimization/15979
Fix PR tree-optimization/15981
* tree-ssa-pre.c (insert_aux): Fix faulty logic so that we don't
try to insert values undefined along some path.
2004-06-13 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-pre.c (add_to_value): is_gimple_min_invariant things
are available everywhere too.
......
......@@ -1279,6 +1279,8 @@ insert_aux (basic_block block)
edge pred;
basic_block bprime;
tree eprime;
bool cant_insert = false;
val = get_value_handle (node->expr);
if (set_contains_value (PHI_GEN (block), val))
continue;
......@@ -1288,9 +1290,8 @@ insert_aux (basic_block block)
fprintf (dump_file, "Found fully redundant value\n");
continue;
}
avail = xcalloc (last_basic_block, sizeof (tree));
avail = xcalloc (last_basic_block, sizeof (tree));
for (pred = block->pred;
pred;
pred = pred->pred_next)
......@@ -1301,8 +1302,21 @@ insert_aux (basic_block block)
eprime = phi_translate (node->expr,
ANTIC_IN (block),
bprime, block);
/* eprime will generally only be NULL if the
value of the expression, translated
through the PHI for this predecessor, is
undefined. If that is the case, we can't
make the expression fully redundant,
because its value is undefined along a
predecessor path. We can thus break out
early because it doesn't matter what the
rest of the results are. */
if (eprime == NULL)
continue;
{
cant_insert = true;
break;
}
vprime = get_value_handle (eprime);
if (!vprime)
......@@ -1328,7 +1342,7 @@ insert_aux (basic_block block)
}
}
if (!all_same && by_some)
if (!cant_insert && !all_same && by_some)
{
tree temp;
tree type = TREE_TYPE (avail[block->pred->src->index]);
......
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