https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81432
Bug ID: 81432 Summary: Bogus fix-it hints from -Wmissing-braces when there are excess elements Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: dmalcolm at gcc dot gnu.org Target Milestone: --- PR c/81405 identifies a crash in diagnostic-show-locus.c in the code to consolidate fix-it hints during printing, with: gcc.dg/init-excess-1.c -Wmissing-braces The fix-it hints generated by -Wmissing-braces appear to be bogus. I'm keeping PR c/81405 to track the crash in diagnostic-show-locus.c when printing them, but am opening this PR to track the bogus fix-it hints from -Wmissing-braces; their effect can be seen by: gcc -c ../../src/gcc/testsuite/gcc.dg/init-excess-1.c \ -Wmissing-braces \ -fdiagnostics-generate-patch \ -fno-diagnostics-show-caret (using -fno-diagnostics-show-caret to avoid the crash in PR c/81405) and they contain e.g. this hunk: @@ -13,36 +13,36 @@ int a1[0][0] = { 1, 2 }; /* { dg-warning "excess elements|near init" } */ int a2[0][1] = { 1, 2 }; /* { dg-warning "excess elements|near init" } */ int a3[1][0] = { 1, 2 }; /* { dg-warning "excess elements|near init" } */ -int a4[][0] = { 1, 2 }; /* { dg-warning "excess elements|near init" } */ -int a5[][0][0] = { 1, 2 }; /* { dg-warning "excess elements|near init" } */ -int a6[][0][1] = { 1, 2 }; /* { dg-warning "excess elements|near init" } */ -int a7[][1][0] = { 1, 2 }; /* { dg-warning "excess elements|near init" } */ +int a4[][0] = { {1}, {2 }}; /* { dg-warning "excess elements|near init" } */ +{int a5[][0][0] = { {{1}}}}, {{{2 }}}; /* { dg-warning "excess elements|near init" } */ +{int a6[][0][1] = { {{1}}}}, {{{2 }}}; /* { dg-warning "excess elements|near init" } */ +int a7[][1][0] = { {{1}}, {{2 }}}; /* { dg-warning "excess elements|near init" } */ which is clearly nonsensical.