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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |avieira at gcc dot gnu.org

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
#1  0x0000000001816089 in info_for_reduction (vinfo=0x369bf80, 
    stmt_info=0x376e340) at ../../src/trunk/gcc/tree-vect-loop.c:4897
4897      gcc_assert (STMT_VINFO_REDUC_DEF (stmt_info));
(gdb) p debug_gimple_stmt ($1)
slp_patt_96 = .COMPLEX_FMA (dsdotr.5_21, dsdotr.5_21, dsdotr.5_21);
$2 = void

ah, so we get a reduction stmt SLP pattern-recognized...  and while
the original scalar stmt_infos are preserved:

t.f90:9:8: note: node 0x35cff60 (max_nunits=4, refcnt=2)
t.f90:9:8: note: op template: slp_patt_96 = .COMPLEX_FMA (dsdotr.5_21,
dsdotr.5_21, dsdotr.5_21);
t.f90:9:8: note:        stmt 0 dsdotr.5_21 = dsdotr.5_20 + _36;
t.f90:9:8: note:        stmt 1 dsdoti.4_19 = dsdoti.4_18 + _37;
t.f90:9:8: note:        children 0x35cffe8 0x35d0648 0x35d0290

the reduc-info, which is originally attached to the SLP nodes
representative is no longer there (it didn't get transfered).

Now, actually handling this needs some double-checking and turning the
testcase into a runtime one.  I'll poke on doing that.

The issue is probably latent on the branch where we might want to play
safer and simply refuse to pattern recog nodes with a
STMT_VINFO_REDUC_DEF (vect_orig_stmt (SLP_TREE_REPRESENTATIVE (node))).

Reply via email to