https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121894
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #1) > > __builtin_memset (&s, 0, 32); > >into > > __builtin_memset (&MEM <char> [(void *)&s + 8B], 0, 20); > > I suspect if we change the memset to be > MEM <char[32]> [(void *)&s] = {}; > > (This is PR 36602) > > There is already code in DSE to handle the above triming off the first part. Sure, but late uninit pass is very late, so I think there is no tree DSE after that, so we might want to add one conditionally based on the presence of .DEFERRED_INIT calls before or something like that.