https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91236
--- Comment #7 from Martin Liška <marxin at gcc dot gnu.org> --- One can see it on x86_64 with the following patch: diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index 9369c36f50e..6192540c219 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -1816,10 +1816,15 @@ vn_walk_cb_data::push_partial_def (const pd_data &pd, tree vuse, { pd_data pd = partial_defs.pop (); if (TREE_CODE (pd.rhs) == CONSTRUCTOR) - /* Empty CONSTRUCTOR. */ - memset (buffer + MAX (0, pd.offset), - 0, MIN ((HOST_WIDE_INT)sizeof (buffer), - pd.size + MIN (0, pd.offset))); + { + unsigned HOST_WIDE_INT offset = MAX (0, pd.offset); + unsigned HOST_WIDE_INT size = MIN ((HOST_WIDE_INT)sizeof (buffer), + pd.size + MIN (0, pd.offset)); + gcc_assert (offset + size <= sizeof (buffer)); + + /* Empty CONSTRUCTOR. */ + memset (buffer + offset, 0, size); + } else { unsigned pad = 0;