https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89230
--- Comment #7 from Eric Gallager <egallager at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #3)
> (In reply to lavr from comment #2)
> > Okay, but "d" points to a clearly separate storage on stack within a local
> > frame. None of the pointers passed to (s)printf() relate to that area
> > (either they are also clearly separate within the current stack frame,
> > automatic ("name", "type", "temp"); or the argument values, that function
> > was called with ("pfx")), so how "d->D_fid[2]" can be changed, in GCC's
> > point of view? I mean, within the semantics of the language, that's
> > impossible; and the warning should only be issued for that kind of a
> > (mis)use.
>
> It is not obvious from your small code snippet that d does not point to a
> local struct or if that local struct does not escape.
>
> Without a full testcase (preprocessed source), it is hard to debug this any
> further.
Reporter has since provided a full testcase (I haven't made any further attempt
to debug it myself though)