What are the useful GCC flags for C?
c, compiler-flags, gcc
Solution
Several of the `-f` code generation options are interesting:
`-fverbose-asm` is useful if you're compiling with `-S` to examine the assembly output - it adds some informative comments.
`-finstrument-functions` adds code to call user-supplied profiling functions at every function entry and exit point.
`--coverage` instruments the branches and calls in the program and creates a coverage notes file, so that when the program is run coverage data is produced that can be formatted by the `gcov` program to help analysing test coverage.
`-fsanitize={address``,``thread``,``undefined``}` enables the AddressSanitizer, ThreadSanitizer and UndefinedBehaviorSanitizer code sanitizers, respectively. These instrument the program to check for various sorts of errors at runtime.
Previously this answer also mentioned `-ftrapv`, however this functionality has been superseded by `-fsanitize=signed-integer-overflow` which is one of the sanitizers enabled by `-fsanitize=undefined`.
Problem
Beyond setting `-Wall`, and setting `-std=XXX`, what other really useful, but less known compiler flags are there for use in C? I'm particularly interested in any additional warnings, and/or and turning warnings into errors in some cases to absolutely minimize any accidental type mismatches.