mirror of git://gcc.gnu.org/git/gcc.git
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
This commit is contained in:
parent
f0eddb9019
commit
ef13324eca
|
@ -1,3 +1,9 @@
|
||||||
|
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>
|
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
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
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>
|
2011-03-16 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
* gcc.dg/tree-ssa/pr14814.c: Adjust.
|
* gcc.dg/tree-ssa/pr14814.c: Adjust.
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
/* { 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)
|
||||||
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
|
||||||
|
|
Loading…
Reference in New Issue