------- 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

Reply via email to