https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94982
Martin Sebor <msebor at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dmalcolm at gcc dot gnu.org Last reconfirmed| |2020-05-07 Ever confirmed|0 |1 Status|UNCONFIRMED |NEW --- Comment #1 from Martin Sebor <msebor at gcc dot gnu.org> --- The breakdown of the -Wformat-diag warnings from a recent x86_64-linux build of mine is below. That's about 200. Where do all the others come from in your build? The largest subset of them are coming from the analyzer. Those I've looked at are either for calls to logging functions, or to pp_xxx functions that don't follow the expected format of GCC diagnostics. I'm not familiar enough with the analyzer to say what the right way to deal with all those is. The messages that are meant to be conform to the same formatting and spelling rules as diagnostics should be cleaned up. Those that are more like the output of -ftree-dump-xxx options should be suppressed (e.g., by a #pragma or by adding a new attribute to exempt them from the warning). The second largest subset is in gcc/cp/error.c. Those are caused by calls to the pp_xxx functions that compose messages one piece at a time, with the individual pieces not conforming to the expected format of complete diagnostic messages. These should be suppressed (again, either by a #pragma or by adding a new attribute). I haven't looked craefully at the rest but I suspect they're in the pp_xxx category. My hope and expectation when I introduced the warnings (and kept them from causing errors) was that they would get cleaned up over the course of GCC 10 development by contributors to and maintainers of the affected areas. Unfortunately, not only has that not happened but the error suppression made it possible for regressions to creep in. Let me work on cleaning up those outside the analyzer and outside of back ends. I'll leave the analyzer to David. I'm hoping back end maintainers will have dealt with any warnings there by now however they feel is appropriate. Once the remaining instances are all cleaned up I'd like to remove the -Werror suppression for -Wformat-diag to keep any more regressions from sneaking in (that's always been the goal). -Wformat-diag Instances: gcc/analyzer/analyzer-logging.cc:174 gcc/analyzer/analyzer-logging.cc:79 gcc/analyzer/call-string.cc:97 gcc/analyzer/checker-path.cc:112 gcc/analyzer/checker-path.cc:902 gcc/analyzer/checker-path.cc:916 gcc/analyzer/checker-path.cc:922 gcc/analyzer/constraint-manager.cc:574 gcc/analyzer/constraint-manager.cc:601 gcc/analyzer/diagnostic-manager.cc:381 gcc/analyzer/diagnostic-manager.cc:391 gcc/analyzer/diagnostic-manager.cc:402 gcc/analyzer/diagnostic-manager.cc:414 gcc/analyzer/diagnostic-manager.cc:432 gcc/analyzer/diagnostic-manager.cc:468 gcc/analyzer/diagnostic-manager.cc:806 gcc/analyzer/diagnostic-manager.cc:940 gcc/analyzer/diagnostic-manager.cc:942 gcc/analyzer/engine.cc:1496 gcc/analyzer/engine.cc:1508 gcc/analyzer/engine.cc:1532 gcc/analyzer/engine.cc:1535 gcc/analyzer/engine.cc:1536 gcc/analyzer/engine.cc:2229 gcc/analyzer/engine.cc:253 gcc/analyzer/engine.cc:2557 gcc/analyzer/engine.cc:2573 gcc/analyzer/engine.cc:2728 gcc/analyzer/engine.cc:2729 gcc/analyzer/engine.cc:2730 gcc/analyzer/engine.cc:2847 gcc/analyzer/engine.cc:2877 gcc/analyzer/engine.cc:2932 gcc/analyzer/engine.cc:2953 gcc/analyzer/engine.cc:3013 gcc/analyzer/engine.cc:3016 gcc/analyzer/engine.cc:3017 gcc/analyzer/engine.cc:3027 gcc/analyzer/engine.cc:3061 gcc/analyzer/engine.cc:3064 gcc/analyzer/engine.cc:3066 gcc/analyzer/engine.cc:3067 gcc/analyzer/engine.cc:3076 gcc/analyzer/engine.cc:3446 gcc/analyzer/engine.cc:3509 gcc/analyzer/engine.cc:3520 gcc/analyzer/engine.cc:3525 gcc/analyzer/engine.cc:3540 gcc/analyzer/engine.cc:3565 gcc/analyzer/engine.cc:3577 gcc/analyzer/engine.cc:3589 gcc/analyzer/engine.cc:3622 gcc/analyzer/engine.cc:3625 gcc/analyzer/engine.cc:3769 gcc/analyzer/engine.cc:389 gcc/analyzer/engine.cc:416 gcc/analyzer/engine.cc:572 gcc/analyzer/engine.cc:846 gcc/analyzer/engine.cc:871 gcc/analyzer/engine.cc:903 gcc/analyzer/program-point.cc:120 gcc/analyzer/program-state.cc:1072 gcc/analyzer/program-state.cc:173 gcc/analyzer/program-state.cc:688 gcc/analyzer/program-state.cc:69 gcc/analyzer/program-state.cc:698 gcc/analyzer/program-state.cc:717 gcc/analyzer/program-state.cc:726 gcc/analyzer/program-state.cc:74 gcc/analyzer/program-state.cc:806 gcc/analyzer/program-state.cc:928 gcc/analyzer/region-model.cc:1246 gcc/analyzer/region-model.cc:1300 gcc/analyzer/region-model.cc:1306 gcc/analyzer/region-model.cc:1488 gcc/analyzer/region-model.cc:1493 gcc/analyzer/region-model.cc:1598 gcc/analyzer/region-model.cc:1636 gcc/analyzer/region-model.cc:1643 gcc/analyzer/region-model.cc:1669 gcc/analyzer/region-model.cc:1671 gcc/analyzer/region-model.cc:193 gcc/analyzer/region-model.cc:2132 gcc/analyzer/region-model.cc:223 gcc/analyzer/region-model.cc:2282 gcc/analyzer/region-model.cc:2320 gcc/analyzer/region-model.cc:2327 gcc/analyzer/region-model.cc:2352 gcc/analyzer/region-model.cc:2576 gcc/analyzer/region-model.cc:2902 gcc/analyzer/region-model.cc:2904 gcc/analyzer/region-model.cc:2906 gcc/analyzer/region-model.cc:2908 gcc/analyzer/region-model.cc:3583 gcc/analyzer/region-model.cc:360 gcc/analyzer/region-model.cc:3651 gcc/analyzer/region-model.cc:3660 gcc/analyzer/region-model.cc:3741 gcc/analyzer/region-model.cc:6364 gcc/analyzer/sm.cc:103 gcc/analyzer/sm-file.cc:379 gcc/analyzer/sm-file.cc:385 gcc/analyzer/sm-malloc.cc:789 gcc/analyzer/sm-malloc.cc:795 gcc/analyzer/state-purge.cc:117 gcc/analyzer/state-purge.cc:135 gcc/analyzer/state-purge.cc:185 gcc/analyzer/state-purge.cc:193 gcc/analyzer/state-purge.cc:216 gcc/analyzer/state-purge.cc:258 gcc/analyzer/state-purge.cc:260 gcc/analyzer/state-purge.cc:295 gcc/analyzer/state-purge.cc:297 gcc/analyzer/state-purge.cc:323 gcc/analyzer/state-purge.cc:361 gcc/analyzer/state-purge.cc:431 gcc/analyzer/state-purge.cc:432 gcc/analyzer/state-purge.cc:473 gcc/analyzer/state-purge.cc:480 gcc/analyzer/supergraph.cc:154 gcc/analyzer/supergraph.cc:270 gcc/analyzer/supergraph.cc:271 gcc/analyzer/supergraph.cc:284 gcc/analyzer/supergraph.cc:288 gcc/analyzer/supergraph.cc:300 gcc/analyzer/supergraph.cc:304 gcc/analyzer/supergraph.cc:321 gcc/analyzer/supergraph.cc:335 gcc/analyzer/supergraph.cc:347 gcc/analyzer/supergraph.cc:449 gcc/analyzer/supergraph.cc:453 gcc/analyzer/supergraph.cc:454 gcc/analyzer/supergraph.cc:455 gcc/analyzer/supergraph.cc:456 gcc/analyzer/supergraph.cc:466 gcc/analyzer/supergraph.cc:552 gcc/analyzer/supergraph.cc:560 gcc/analyzer/supergraph.cc:632 gcc/analyzer/supergraph.cc:711 gcc/analyzer/supergraph.cc:719 gcc/analyzer/supergraph.cc:828 gcc/analyzer/supergraph.cc:832 gcc/analyzer/supergraph.cc:835 gcc/cgraphunit.c:763 gcc/cp/constraint.cc:535 gcc/cp/constraint.cc:537 gcc/cp/error.c:3496 gcc/cp/error.c:3497 gcc/cp/error.c:3522 gcc/cp/error.c:3525 gcc/cp/error.c:3533 gcc/cp/error.c:3534 gcc/cp/error.c:3539 gcc/cp/error.c:3540 gcc/cp/error.c:3547 gcc/cp/error.c:3548 gcc/cp/error.c:3600 gcc/cp/error.c:3606 gcc/cp/error.c:3660 gcc/cp/error.c:3664 gcc/cp/error.c:3676 gcc/cp/error.c:3679 gcc/cp/error.c:3708 gcc/cp/error.c:3725 gcc/cp/error.c:3738 gcc/cp/error.c:3765 gcc/cp/error.c:3769 gcc/cp/error.c:3786 gcc/cp/error.c:3946 gcc/cp/error.c:4004 gcc/cp/error.c:4108 gcc/cp/error.c:768 gcc/cp/logic.cc:321 gcc/cp/logic.cc:323 gcc/cp/parser.c:29138 gcc/cp/parser.c:9239 gcc/cp/typeck.c:2879 gcc/dbgcnt.c:129 gcc/digraph.cc:70 gcc/dumpfile.c:1120 gcc/dumpfile.c:496 gcc/dumpfile.c:499 gcc/dumpfile.c:503 gcc/edit-context.c:450 gcc/edit-context.c:451 gcc/edit-context.c:522 gcc/jit/jit-recording.c:3941 gcc/jit/jit-recording.c:3959 gcc/jit/jit-recording.c:4347 gcc/jit/jit-recording.c:4369 gcc/jit/jit-recording.c:4383 gcc/json.cc:73 gcc/lto-wrapper.c:504 gcc/lto-wrapper.c:505 gcc/lto-wrapper.c:512 gcc/lto-wrapper.c:513 gcc/lto-wrapper.c:521 gcc/pretty-print.c:2179 gcc/pretty-print.c:2182 gcc/tree-diagnostic-path.cc:419 gcc/tree-diagnostic-path.cc:627 gcc/ubsan.c:409 gcc/ubsan.c:428