On Wed, May 10, 2023 at 11:36:10AM -0500, Joel Sherrill wrote: > On Wed, May 10, 2023 at 10:14 AM Jakub Jelinek <ja...@redhat.com> wrote: > > > On Wed, May 10, 2023 at 10:10:37AM -0500, Joel Sherrill wrote: > > > > > What practices might the GCC community recommend to a project > > > > > wanting to discover the issues uncovered and slowly address them? I > > > > > > > > -Werror=implicit-int > > > > -Werror=implicit-function-declaration > > > > -Werror=int-conversion > > > > > > > > > > Thanks. We already use -Wall which is documented to turn on the top two > > > as warnings at least. > > > > > > Is int-conversion turned on as part of any of the more general -W > > arguments > > > (e.g. -Wall, -Wextra, -pedantic)? It's not listed in the manual and I was > > > wondering > > > if that was right or an oversight. Given this discussion, I would have > > > expected it > > > to be in -Wall. > > > > -Wint-conversion is enabled by default. You get the warning whenever not > > using -w or -Wno-int-conversion, and error with -pedantic-errors. > > > > Thanks. That isn't clear in the manual. > > Is there a list of warnings included by default? I'm guessing that it might > be all the ones where the manual lists only -Wno-ABC. > > And again, I don't mind getting poked when the code does something > questionable or undefined. Doesn't make it easy to fix or even magically > give us all time to address the issues but better to know.
awk '/^W/{w=$1;getline;if ($0 ~ /Init\(1\)/)print w}' gcc/{,*/}*.opt | sort -u Waddress-of-packed-member Waggressive-loop-optimizations Walign-commons Wanalyzer-allocation-size Wanalyzer-deref-before-check Wanalyzer-double-fclose Wanalyzer-double-free Wanalyzer-exposure-through-output-file Wanalyzer-exposure-through-uninit-copy Wanalyzer-fd-access-mode-mismatch Wanalyzer-fd-double-close Wanalyzer-fd-leak Wanalyzer-fd-phase-mismatch Wanalyzer-fd-type-mismatch Wanalyzer-fd-use-after-close Wanalyzer-fd-use-without-check Wanalyzer-file-leak Wanalyzer-free-of-non-heap Wanalyzer-imprecise-fp-arithmetic Wanalyzer-infinite-recursion Wanalyzer-jump-through-null Wanalyzer-malloc-leak Wanalyzer-mismatching-deallocation Wanalyzer-null-argument Wanalyzer-null-dereference Wanalyzer-out-of-bounds Wanalyzer-possible-null-argument Wanalyzer-possible-null-dereference Wanalyzer-putenv-of-auto-var Wanalyzer-shift-count-negative Wanalyzer-shift-count-overflow Wanalyzer-stale-setjmp-buffer Wanalyzer-tainted-allocation-size Wanalyzer-tainted-array-index Wanalyzer-tainted-assertion Wanalyzer-tainted-divisor Wanalyzer-tainted-offset Wanalyzer-tainted-size Wanalyzer-unsafe-call-within-signal-handler Wanalyzer-use-after-free Wanalyzer-use-of-pointer-in-stale-stack-frame Wanalyzer-use-of-uninitialized-value Wanalyzer-va-arg-type-mismatch Wanalyzer-va-list-exhausted Wanalyzer-va-list-leak Wanalyzer-va-list-use-after-va-end Wanalyzer-write-to-const Wanalyzer-write-to-string-literal Wattribute-alias= Wattributes Wattribute-warning Wbuiltin-declaration-mismatch Wbuiltin-macro-redefined Wc++11-extensions Wc++14-extensions Wc++17-extensions Wc++20-extensions Wc++23-extensions Wcannot-profile Wchanges-meaning Wclass-conversion Wcomplain-wrong-lang Wconversion-null Wcoverage-invalid-line-number Wcoverage-mismatch Wcpp Wdelete-incomplete Wdeprecated Wdeprecated-declarations Wdesignated-init Wdiscarded-array-qualifiers Wdiscarded-qualifiers Wdiv-by-zero Wendif-labels Wexceptions Wfree-nonheap-object Wif-not-aligned Wignored-attributes Winaccessible-base Wincompatible-pointer-types Winherited-variadic-ctor Winit-list-lifetime Wint-conversion Winterference-size Wint-to-pointer-cast Winvalid-memory-model Winvalid-offsetof Wliteral-suffix Wlto-type-mismatch Wmissing-profile Wmissing-requires Wmissing-template-keyword Wnonportable-cfstrings Wnon-template-friend WNSObject-attribute Wobjc-root-class Wodr Woverflow Woverride-init-side-effects Woverwrite-recursive Wpmf-conversions Wpointer-compare Wpointer-to-int-cast Wpragmas Wprio-ctor-dtor Wproperty-assign-default Wprotocol Wpsabi Wreturn-local-addr Wscalar-storage-order Wshadow-ivar Wshift-count-negative Wshift-count-overflow Wsizeof-array-argument Wstringop-overread Wsubobject-linkage Wswitch-bool Wswitch-outside-range Wswitch-unreachable Wsync-nand Wterminate Wtsan Wunderflow Wunicode Wunused-result Wvarargs Wvexing-parse Wvirtual-move-assign Wxor-used-as-pow Of course, e.g. the -Wanalyzer* warnings are doing something only if -fanalyzer, or say -Wtsan if -fsanitize=thread etc. Jakub