http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56624



--- Comment #4 from Michael Zolotukhin <michael.v.zolotukhin at gmail dot com> 
2013-03-15 12:27:51 UTC ---

Sorry, it looks like the reproducer with if could be made, and here it is:

void foo (long *a)

{

  int i;

  for (i = 0; i < 100; i+=2)

    {

      if (a[i] == 0)

        {

          a[i+1] = 2;

          a[i] = 3;

        }

      else

        {

          a[i+1] = 3;

          a[i] = 4;

        }

    }

}

In this example we have:

group_access2.c:4: note: === vect_analyze_data_ref_accesses ===

group_access2.c:4: note: READ_WRITE dependence in interleaving.

group_access2.c:4: note: not vectorized: complicated access pattern.

group_access2.c:4: note: bad data access.

group_access2.c:1: note: vectorized 0 loops in function.



The diagnostic is a bit different, but rootcause is the same I guess.



The test is attached (reproducer 2).

Reply via email to