[Bug tree-optimization/91896] [10 Regression] ICE in vect_get_vec_def_for_stmt_copy, at tree-vect-stmts.c:1687
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Sep 25 10:39:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91896
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
For some reason
if (ncopies > 1
&& STMT_VINFO_RELEVANT (reduc_stmt_info) <= vect_used_only_live
&& (use_stmt_info = loop_vinfo->lookup_single_use (phi_result))
&& vect_stmt_to_vectorize (use_stmt_info) == reduc_stmt_info)
single_defuse_cycle = true;
triggers. Here we have detected a pattern for the et *= 3 operation
(somehow 8 byte vectors do not have multiplication?). But honestly
I don't remember what the condition above tries to guard (nested cycles?).
But we clearly cannot handle this case when the actual stmt vectorization
is not under control of vectorizable_reduction ...
So the problem must be somehow latent. Ah, of course - with operand
swapping the et = et * 3 appears as et = 3 * et and that is not recognized
by vect_synth_mult_by_constant. So the issue _is_ latent, we're likely
just missing a pattern that applies to reduction ops and produces a
pattern def sequence...
More information about the Gcc-bugs
mailing list