https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57832
--- Comment #7 from Manuel López-Ibáñez <manu at gcc dot gnu.org> ---
(In reply to Martin Sebor from comment #6)
> In the reduced test cases (in comment #3 and comment #4) d is a global
> variable so it's value is zero. c is assigned in the first iteration of the
> loop (when e is zero) and used in subsequent iterations when it has a
> defined value, so the warning .seems like a clear false postive to me. (I
> didn't look at the big test case.)
Oh, yes! Sorry, my comment didn't make sense. Even simpler:
int a, d;
void f (void)
{
int c;
for (int e = 0; e < 64; e += 6)
{
if (e == 0)
c = d;
else
a += c;
}
}