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

--- Comment #9 from Jeffrey A. Law <law at redhat dot com> ---
So from the uninit analyzer's standpoint the clobber isn't considered an
initialization (which makes sense).  As a result the object really does appear
to be uninitialized.

  struct function D.35879;

[ ... ]
  MEM[(struct function *)&fo] ={v} {CLOBBER};
  MEM[(struct _Function_base *)&fo] ={v} {CLOBBER};
  MEM[(int (*<T24ca>) (void) *)&fo] = f1;
  MEM[(struct function *)&fo1] ={v} {CLOBBER};
  MEM[(struct _Function_base *)&fo1] ={v} {CLOBBER};
  MEM[(struct _Function_base *)&D.35879] ={v} {CLOBBER};
  __tmp = MEM[(union _Any_data & {ref-all})&fo];
  MEM[(union _Any_data * {ref-all})&fo] = MEM[(union _Any_data &
{ref-all})&D.35879];

That last statement reads from D.35879 which was never initialized

Reply via email to