Commit 610b64e2 by Richard Guenther Committed by Richard Biener

re PR tree-optimization/43367 (ice: in may_propagate_copy, at tree-ssa-copy.c:85)

2010-03-15  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/43367
	* tree-cfg.c (gimple_can_merge_blocks_p): Simplify PHI
	elimination check.

	* gcc.c-torture/compile/pr43367.c: New testcase.

From-SVN: r157458
parent 610de68d
2010-03-15 Richard Guenther <rguenther@suse.de>
PR tree-optimization/43367
* tree-cfg.c (gimple_can_merge_blocks_p): Simplify PHI
elimination check.
2010-03-15 Richard Guenther <rguenther@suse.de>
PR tree-optimization/43317
* ipa-struct-reorg.c (create_new_general_access): Update stmt.
......
2010-03-15 Richard Guenther <rguenther@suse.de>
PR tree-optimization/43367
* gcc.c-torture/compile/pr43367.c: New testcase.
2010-03-15 Richard Guenther <rguenther@suse.de>
PR tree-optimization/43317
* gcc.dg/pr43317.c: New testcase.
......
unsigned char g_17;
const unsigned char func_39 (unsigned char p_40, unsigned char * p_41)
{
return 0;
}
void int327 (const unsigned char p_48, unsigned char p_49)
{
unsigned l_52;
unsigned char l_58[2];
int i, j;
if (func_39 (l_52, &p_49), p_48) {
unsigned char *l_60;
unsigned char *l = &l_58[1];
for (j; j; j++) {
lbl_59:
break;
}
for (l = 0; 1; l += 1) {
for (p_49 = 1; p_49; p_49 += 0) {
unsigned char **l_61[1][6];
for (j = 0; j < 1; j++)
l_61[i][j] = &l_60;
goto lbl_59;
}
}
}
}
......@@ -1438,27 +1438,12 @@ gimple_can_merge_blocks_p (basic_block a, basic_block b)
return false;
/* It must be possible to eliminate all phi nodes in B. If ssa form
is not up-to-date, we cannot eliminate any phis; however, if only
some symbols as whole are marked for renaming, this is not a problem,
as phi nodes for those symbols are irrelevant in updating anyway. */
is not up-to-date and a name-mapping is registered, we cannot eliminate
any phis. Symbols marked for renaming are never a problem though. */
phis = phi_nodes (b);
if (!gimple_seq_empty_p (phis))
{
gimple_stmt_iterator i;
if (name_mappings_registered_p ())
return false;
for (i = gsi_start (phis); !gsi_end_p (i); gsi_next (&i))
{
gimple phi = gsi_stmt (i);
if (!is_gimple_reg (gimple_phi_result (phi))
&& !may_propagate_copy (gimple_phi_result (phi),
gimple_phi_arg_def (phi, 0)))
return false;
}
}
if (!gimple_seq_empty_p (phis)
&& name_mappings_registered_p ())
return false;
return true;
}
......
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