The code I've added recently in find_bswap_or_nop for VECTOR CONSTRUCTORs
is missing punt on an important case - namely empty CONSTRUCTORs, because in that
case the loop will not initialize *n and the code after the loop will then
use the uninitialized structure.
2020-12-19 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/98378
* gimple-ssa-store-merging.c (find_bswap_or_nop): Punt if CONSTRUCTOR
has no elements.
if (sz != 16 && sz != 32 && sz != 64)
return NULL;
tree rhs = gimple_assign_rhs1 (stmt);
+ if (CONSTRUCTOR_NELTS (rhs) == 0)
+ return NULL;
tree eltype = TREE_TYPE (TREE_TYPE (rhs));
unsigned HOST_WIDE_INT eltsz
= int_size_in_bytes (eltype) * BITS_PER_UNIT;