https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96108
--- Comment #4 from Marc Glisse <glisse at gcc dot gnu.org> --- During optimization, we often have branches with dead code that would exhibit UB if it was ever executed. Cleaning up those branches as much as possible helps reduce code size, show that some variables (in the live part of the code) are constant, etc. If we see *p=x where p is uninitialized, it doesn't serve much purpose to keep it as is, we might as well replace it with *0=0 or trap/unreachable depending on options.