Deal with (pattern) SLP consumed stmts in hybrid discovery
authorRichard Biener <rguenther@suse.de>
Fri, 20 Nov 2020 08:39:53 +0000 (09:39 +0100)
committerRichard Biener <rguenther@suse.de>
Fri, 20 Nov 2020 12:06:58 +0000 (13:06 +0100)
commit4405edb496483c5e99adb311cc694b0b063eb358
tree886058ca1630403c1172fe975613741062776d1f
parent6e820b943bce54002f9343c2e39529d792291388
Deal with (pattern) SLP consumed stmts in hybrid discovery

This makes hybrid SLP discovery deal with stmts indirectly consumed
by SLP, for example via patterns.  This means that all uses of a
stmt end up in SLP vectorized stmts.

This helps my prototype patches for PR97832 where I make SLP discovery
re-associate chains to make operands match.  This ends up building
SLP computation nodes without 1:1 representatives in the scalar IL
and thus no scalar lane defs in SLP_TREE_SCALAR_STMTS.  Nevertheless
all of the original scalar stmts are consumed so this represents
another kind of SLP pattern for the computation chain result.

2020-11-20  Richard Biener  <rguenther@suse.de>

* tree-vect-slp.c (maybe_push_to_hybrid_worklist): New function.
(vect_detect_hybrid_slp): Use it.  Perform a backward walk
over the IL.
gcc/tree-vect-slp.c