------- Comment #4 from rguenth at gcc dot gnu dot org 2006-08-26 18:06 -------
Also fails on i686 with -O2 -msse2 -mfpmath=sse -ftree-vectorize
-funswitch-loops
and is a bug in unswitching which creates
<bb 2>:
if (t1_7 != 0) goto <L17>; else goto <L18>;
<L18>:;
# ready_20 = PHI <ready_4(3), ready_12(5)>;
# i_1 = PHI <0(3), i_17(5)>;
# ready_2 = PHI <ready_4(3), ready_12(5)>;
<L15>:;
# ready_12 = V_MAY_DEF <ready_2>;
ready[i_1] = 0;
note ready_20 and ready_2 which are both life on entry to block L15 which
is invalid for virtual operands. Updating of the SSA form is broken here.
Slightly smaller testcase:
tatic int ready[10];
void test_once (int t1)
{
int i;
for (i = 0; i < 10; i++)
{
ready[i] = 0;
if (t1)
if (f())
return;
}
abort ();
}
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rakdver at gcc dot gnu dot
| |org
GCC target triplet|x86_64-linux-gnu |x86_64-linux-gnu, i?86-*-*
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28839