https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93432
Bug ID: 93432 Summary: variable is used uninitialized, but gcc shows no warning Product: gcc Version: 9.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: sven.koehler at gmail dot com Target Milestone: --- Consider the following code: int test53(int y) { int z; for (int x=0; x<10; x=x+1,y=y+1,z=z+1) { if (y<10) { continue; } z = 1; } return z; } int main() { printf("%d\n", test53(0)); printf("%d\n", test53(5)); printf("%d\n", test53(10)); return 0; } If y < 10 in the first iteration, the variable z is used uninitialized. Clearly, the continue can potentially skip the initialization of z. Even if -Wall and -Wextra, gcc does not produce a warning.