http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60841

--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Note that -fdump-tree-all dumps are pretty much the same short length, it is
just -fdump-tree-vect-details that goes to almost a gig.
And, an important thing I've noticed in there is tons of SLP node creations
where all (4 in this case) stmts of the node are the same.
There are a few where they differ like:
pr60841.i:9:3: note: Build SLP for h$f3_244 = b.30_588 < 0 ? h$f3_606 :
h$f3_250;
pr60841.i:9:3: note: Build SLP for h$f2_371 = b.30_588 < 0 ? h$f2_600 :
h$f2_377;
pr60841.i:9:3: note: Build SLP for h$f1_515 = b.30_588 < 0 ? h$f1_594 :
h$f1_561;
pr60841.i:9:3: note: Build SLP for h$f4_86 = b.30_588 < 0 ? h$f4_612 : h$f4_92;
but many more where they are all the same:
pr60841.i:9:3: note: Build SLP for b.30_588 = (int) _587;
pr60841.i:9:3: note: Build SLP for b.30_588 = (int) _587;
pr60841.i:9:3: note: Build SLP for b.30_588 = (int) _587;
pr60841.i:9:3: note: Build SLP for b.30_588 = (int) _587;

grep 'Build SLP for' pr60841.i.114t.vect | awk 'BEGIN{i=0;k=0;l=0}(i ==
0){j=$0;m=0;i++;next}(i != 0){if (j != $0){m=1};i++;if (i == 4){i=0;if
(m){l++;}else{k++;}}}END{print k, l}'
929443 14334

means (if I haven't made a mistake in the awk) that 14334 quadruplets have
differing stmts (the only case where building further SLP nodes makes sense),
while 929443 cases have the same stmts (then we just should treat it as a point
where we broadcast a scalar value into a vector if we choose to vectorize).

Richard, can you please have a look?

Reply via email to