https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68861

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|law at redhat dot com              |rguenth at gcc dot 
gnu.org

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed with -O3 -fno-tree-loop-vectorize -fdbg-cnt=vect_slp:3, so it's at
least

vla8.f90:187:0: note: basic block vectorized

causing the abort.

Ok, so we hit some operand swapping plus build-from-scalars (both got recent
fixes but indeed those don't help).

Oh.

vla8.f90:187:0: note: node
vla8.f90:187:0: note:   stmt 0 [vla8.f90:185:0] _7724 = _232 + _7725;
vla8.f90:187:0: note:   stmt 1 [vla8.f90:185:0] _7718 = _6710 + _7725;
vla8.f90:187:0: note:   stmt 2 [vla8.f90:185:0] _7718 = _6710 + _7725;
vla8.f90:187:0: note:   stmt 3 [vla8.f90:185:0] _7699 = _7725 + _8020;
vla8.f90:187:0: note:   stmt 4 [vla8.f90:185:0] _7699 = _7725 + _8020;

so we have duplicates here (hooray) and thus

              for (j = 0; j < group_size; ++j)
                if (!matches[j])
                  {
                    gimple *stmt = SLP_TREE_SCALAR_STMTS (*node)[j];
                    swap_ssa_operands (stmt, gimple_assign_rhs1_ptr (stmt),
                                       gimple_assign_rhs2_ptr (stmt));
                  }

will swap and then re-swap ...

Reply via email to