https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123089
--- Comment #11 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
It is executed but only right before return 0; and nothing dereferences it
afterwards.
So, very simplified, the testcase is
for (f = 2; f; ++f); h = &c; return 0;
or slightly more expanded
for (f = 2; f; ++f)
{
*g = 0;
if (*h)
break;
}
h = &c;
return 0;
