https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89230
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |WAITING Last reconfirmed| |2019-02-07 Ever confirmed|0 |1 --- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (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.