[Bug tree-optimization/110935] Missed BB reduction vectorization because of missed eliding of a permute

"rguenth at gcc dot gnu.org via Gcc-bugs" <[email protected]>
Newsgroups gmane.comp.gcc.bugs
Message-ID <[email protected]/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110935

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
This works now, somehow.

t.c:5:42: note:   Final SLP tree for instance 0x3848940:
t.c:5:42: note:   node 0x38f6840 (max_nunits=4, refcnt=2) vector(4) double
t.c:5:42: note:   op template: _8 = vals[3];
t.c:5:42: note:         stmt 0 _8 = vals[3];
t.c:5:42: note:         stmt 1 _6 = vals[1];
t.c:5:42: note:         stmt 2 _3 = vals[2];
t.c:5:42: note:         stmt 3 _4 = vals[4];
t.c:5:42: note:         load permutation { 3 1 2 4 }
t.c:5:42: note:    === vect_match_slp_patterns ===
t.c:5:42: note:    Analyzing SLP tree 0x38f6840 for patterns
t.c:5:42: note:  SLP optimize permutations:
t.c:5:42: note:    1: { 2, 0, 1, 3 }
t.c:5:42: note:  SLP optimize partitions:
t.c:5:42: note:    -------------
t.c:5:42: note:    partition 0 (layout 1):
t.c:5:42: note:      nodes:
t.c:5:42: note:        - 0x38f6840:
t.c:5:42: note:            weight: 1.000000
t.c:5:42: note:            op template: _8 = vals[3];
t.c:5:42: note:      edges:
t.c:5:42: note:      layout 0:
t.c:5:42: note:          {depth: 0.000000, total: 0.000000}
t.c:5:42: note:        + {depth: 0.000000, total: 0.000000}
t.c:5:42: note:        + {depth: 0.000000, total: 0.000000}
t.c:5:42: note:        = {depth: 0.000000, total: 0.000000}
t.c:5:42: note:      layout 1: (*)
t.c:5:42: note:          {depth: 0.000000, total: 0.000000}
t.c:5:42: note:        + {depth: 0.000000, total: 0.000000}
t.c:5:42: note:        + {depth: 0.000000, total: 0.000000}
t.c:5:42: note:        = {depth: 0.000000, total: 0.000000}
...
t.c:5:42: note:   === vect_bb_partition_graph ===
t.c:5:42: note: ***** Analysis succeeded with vector mode V4DF
t.c:5:42: note: SLPing BB part
t.c:5:42: note: Costing subgraph:
t.c:5:42: note:    entry instance 0x3848940 -> node 0x38f6840
t.c:5:42: note: node 0x38f6840 (max_nunits=4, refcnt=1) vector(4) double
t.c:5:42: note: op template: _8 = vals[3];
t.c:5:42: note:         stmt 0 _6 = vals[1];
t.c:5:42: note:         stmt 1 _3 = vals[2];
t.c:5:42: note:         stmt 2 _8 = vals[3];
t.c:5:42: note:         stmt 3 _4 = vals[4];

I'll add the testcase (it wasn't r16-4726-gc19aedfc0c3531).
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.