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