Commit ef13324e by Richard Guenther Committed by Richard Biener

re PR c/48146 (ICE tree check: expected ssa_name, have var_decl in…

re PR c/48146 (ICE tree check: expected ssa_name, have var_decl in has_zero_uses, at tree-flow-inline.h:342)

2011-03-16  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/48146
	* tree-ssa-sink.c (sink_code_in_bb): Manually update virtual
	operands avoiding the need for renaming.

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

From-SVN: r171045
parent f0eddb90
2011-03-16 Richard Guenther <rguenther@suse.de> 2011-03-16 Richard Guenther <rguenther@suse.de>
PR tree-optimization/48146
* tree-ssa-sink.c (sink_code_in_bb): Manually update virtual
operands avoiding the need for renaming.
2011-03-16 Richard Guenther <rguenther@suse.de>
* gimple-fold.c (maybe_fold_reference): Open-code relevant * gimple-fold.c (maybe_fold_reference): Open-code relevant
constant folding. Move MEM_REF canonicalization first. constant folding. Move MEM_REF canonicalization first.
Rely on fold_const_aggregate_ref for initializer folding. Rely on fold_const_aggregate_ref for initializer folding.
......
2011-03-16 Richard Guenther <rguenther@suse.de> 2011-03-16 Richard Guenther <rguenther@suse.de>
PR tree-optimization/48146
* gcc.dg/torture/pr48146.c: New testcase.
2011-03-16 Richard Guenther <rguenther@suse.de>
* gcc.dg/tree-ssa/pr14814.c: Adjust. * gcc.dg/tree-ssa/pr14814.c: Adjust.
* gcc.dg/tree-ssa/ssa-ccp-19.c: Likewise. * gcc.dg/tree-ssa/ssa-ccp-19.c: Likewise.
......
/* { dg-do compile } */
static unsigned char
safe_sub_func_int_s_s (int si1, unsigned char si2)
{
return si1 ^ si2 & -si2 ^ si2 ? : si1 - si2;
}
int g_2[10] = {
0x90AC204EL
};
volatile unsigned char g_39;
unsigned char
func_67 (unsigned short p_68)
{
unsigned char l_92;
unsigned char l_74;
int *l = &g_2[6];
lbl_90:*l ^= 1;
if (p_68)
goto lbl_93;
for (l_74 = 0;; l_74 = safe_sub_func_int_s_s (l_74, 1))
{
if (l_74)
goto lbl_90;
lbl_93:l_92 ^= 0 != &g_39;
if (0)
{
}
else
*l = 1;
}
}
...@@ -505,12 +505,18 @@ sink_code_in_bb (basic_block bb) ...@@ -505,12 +505,18 @@ sink_code_in_bb (basic_block bb)
bb->index, (gsi_bb (togsi))->index); bb->index, (gsi_bb (togsi))->index);
} }
/* Prepare for VOP update. */ /* Update virtual operands of statements in the path we
do not sink to. */
if (gimple_vdef (stmt)) if (gimple_vdef (stmt))
{ {
unlink_stmt_vdef (stmt); imm_use_iterator iter;
gimple_set_vdef (stmt, gimple_vop (cfun)); use_operand_p use_p;
mark_sym_for_renaming (gimple_vop (cfun)); gimple vuse_stmt;
FOR_EACH_IMM_USE_STMT (vuse_stmt, iter, gimple_vdef (stmt))
if (gimple_code (vuse_stmt) != GIMPLE_PHI)
FOR_EACH_IMM_USE_ON_STMT (use_p, iter)
SET_USE (use_p, gimple_vuse (stmt));
} }
/* If this is the end of the basic block, we need to insert at the end /* If this is the end of the basic block, we need to insert at the end
......
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