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

--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Bisection says this changed with
r10-2587-gcc19f80ceb27cc3d31d259ebecaad12005acfd7e
The change was in forwprop1, instead of what we used to do:
  _5 = a_4(D);
  ... = _5->b;
  ...
  _5->b = ...;
we now propagate the uninitialized SSA_NAME:
  ... = a_4(D)->b;
  ...
  a_4(D)->b = ...;
During fre1 before that commit it is propagated that way too, so we get
identifal fre1 dump, but guess points-to info is different or something, and
finally in dse1 the store is removed only in one case.
But as Mark has said, we should be just replacing such accesses with
__builtin_unreachable/__builtin_trap depending on user's choice instead of
trying to optimize it some other way, because it is always UB.

Reply via email to