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

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
Caused by the vect_create_constant_vectors changes.  We end up with
number_of_places_left_in_vector == 4 from

(gdb) p debug (op_node)
t.c:11:6: note: node (external) 0x55036c0 (refcnt=1) vector(16) unsigned char
t.c:11:6: note:         { _6 }
$20 = void
(gdb) p nunits
$21 = 16
(gdb) p excess_elts
$22 = 12

and fail to emit the ctor_seq because we never reach zero.

number_of_copies is 16, group_size is 1.

So somehow number_of_copies is wrong, it's computed as

 number_of_copies = nunits * number_of_vectors / group_size;

the vectorization factor is 4.  I think number_of_copies should be

  number_of_copies = (nunits * number_of_vectors - excess_elts) / group_size;

Reply via email to