https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106454
--- Comment #2 from David Malcolm <dmalcolm at gcc dot gnu.org> --- ...i.e. it's getting confused about liveness. It's considering that the call to c could have overwritten the old value of d with a new value (or d->args), and thus that this hypothetical new value of d->args[0] could cease to be live at function exit. Which seems like a false positive to me.