Gerald Pfeifer wrote:
5.  Fix what I have labelled as errors.

That we definitely should do.  I believe some things have been changed
in our current development tree (to become GCC 4.3) already.  It would
be great could you have a look and perhaps produce a patch for one or
more of these; is this something you could consider?

I updated my graph to the trunk version, and will slowly start sending patches per the discussion we've had. It's attached in case I disappear for whatever reason.

I have a question: does -Wextra now imply -Wconversion since -Wconversion was split into -Wconversion and -Wtraditional-conversion?

Thanks,
Chris


# A --> B        option A implies option B
# A --> B C      option A implies options B and C
# A && B --> C   options A and B together imply C

# A <-- B        option A is implied by option B.
# A <-- B || C   option A is implied by either option B or option C
# A <-- B && C   option A is implied by options B and C together

# A ==> B        option A enables option B
# A ==> B C      option A enables options B and C
# A <== B        option A requires option B (depends on B)

default --> -Wimport -Wdiv-by-zero -Wendif-labels -Wattributes -Wmultichar
            -Wnormalized=nfc -Wdeprecated-declarations -Winvalid-offset-of
            -Wint-to-pointer-cast -Wpointer-to-int-cast -Woverflow

default (C++) --> -Wwrite-strings

-fsyntax-only

-pedantic --> -Wlong-long -Wvariadic-macros -Wpointer-sign -Woverlength-strings

-pedantic <-- -pedantic-errors

-pedantic-errors --> -pedantic

-w

-Wimport <-- default

-Wchar-subscripts <-- -Wall

-Wcomment <-- -Wall

-Wfatal-errors

-Wformat --> -Wnonnull -Wformat-extra-args -Wformat-zero-length
-Wformat <-- -Wformat=2 || -Wall
-Wformat ==> -Wformat-y2k -Wformat-nonliteral -Wformat-security

-Wformat-y2k <== -Wformat

-Wno-format-extra-args <== -Wformat # false dependency

-Wno-format-zero-length <== -Wformat # false dependency

-Wformat-nonliteral <== -Wformat

-Wformat-security <== -Wformat

-Wformat=2 --> -Wformat -Wformat-y2k -Wformat-nonliteral -Wformat-security

-Wnonnull <-- -Wall || -Wformat

-Winit-self <== -Wuninitialized # depends not only on -O1, but -O(1|2|3|s)

-Wimplicit-int <-- -Wall

-Wimplicit-function-declaration <-- -Wall

-Werror-implicit-function-declaration

-Wimplicit --> -Wimplicit-int -Wimplicit-function-declaration
-Wimplicit <-- -Wall # redundant implication

-Wmain <-- -Wall

-Wmissing-braces <-- -Wall

-Wmissing-include-dirs

-Wparentheses <-- -Wall

-Wsequence-point <-- -Wall

-Wreturn-type <-- -Wall

-Wswitch <-- -Wall

-Wswitch-default

-Wswitch-enum

-Wtrigraphs <-- -Wall

-Wunused-function <-- -Wall

-Wunused-label <-- -Wall

-Wunused-parameter <-- -Wextra && -Wunused
-Wunused-parameter <-- -Wextra && -Wall # redundant implication

-Wunused-variable <-- -Wall

-Wunused-value <-- -Wall

-Wunused --> -Wtrigraphs -Wunused-function -Wunused-label -Wunused-variable
             -Wunused-value
-Wunused <-- -Wall # redundant implication

-Wuninitialized <-- -Wall
-Wuninitialized ==> -Winit-self
-Wuninitialized <== -O(1|2|3|s)

-Wunknown-pragmas <== -Wsystem-headers # undocumented

-Wpragmas <-- -Wall # missing "This warning is enabled by `-Wall'".

-Wstrict-aliasing <-- -Wall || -Wstrict-aliasing=2

-Wstrict-aliasing=2 --> -Wstrict-aliasing
-Wstrict-aliasing=2 <== -fstrict-aliasing

-Wall --> -Walways-true -Wchar-subscripts -Wcomment -Wformat -Wnonnull 
-Wimplicit-int
          -Wimplicit-function-declaration -Wimplicit -Wmain -Wmissing-braces
          -Wparentheses -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs
          -Wunused-function -Wunused-label -Wunused-variable -Wunused-value
          -Wunused -Wuninitialized -Wpragmas -Wstrict-aliasing
          -Wpointer-sign -Wstring-literal-comparison

# clearly not "All of the above -W options combined."
# note that -Wpointer-sign is also below this point.

-W --> -Wextra

-Wextra --> -Wsign-compare -Wold-style-declaration -Woverride-init 
            -Wmissing-parameter-type -Wmissing-field-initializers 
            -Wempty-body -Wclobbered 
            
# do we have -Wextra --> -Wconversion now too?

-Wextra && -Wunused --> -Wunused-parameter # s/arguments/parameters/
-Wextra && -Wall --> -Wunused-parameter # redundant implication

-Wdiv-by-zero <-- default

-Wsystem-headers ==> -Wunknown-pragmas

-Wfloat-equal

-Wtraditional

-Wtraditional-conversion

-Wdeclaration-after-statement

-Wundef

-Wendif-labels <-- default

-Wshadow

-Wlarger-than-LEN

-Wunsafe-loop-optimizations

-Wpointer-arith

-Wbad-function-cast

-Wc++-compat

-Wcast-qual

-Wcast-align

-Wwrite-strings <-- default (C++)

-Wclobbered <-- -Wextra

-Wconversion # do we have -Wconversion <-- -Wextra now?

-Wempty-body <-- -Wextra

-Wsign-compare <-- -Wextra

-Waggregate-return

-Walways-true <-- -Wall

-Wattributes <-- default

-Wstrict-prototypes

-Wold-style-declaration <-- -Wextra

-Wold-style-definition

-Wmissing-parameter-type <-- -Wextra

-Wmissing-prototypes

-Wmissing-declarations

-Wmissing-field-initializers <-- -Wextra

-Wmissing-noreturn

-Wmissing-format-attribute

-Wmultichar <-- default

-Wnormalized=none

-Wnormalized=id

-Wnormalized=nfc <-- default

-Wnormalized=nfkc

-Wdeprecated-declarations <-- default

-Woverflow <-- default

-Woverride-init <-- -Wextra

-Wpacked

-Wpadded

-Wredundant-decls

-Wnested-externs

-Wunreachable-code

-Winline

-Winvalid-offset-of <-- default

-Wint-to-pointer-cast <-- default

-Wpointer-to-int-cast <-- default

-Winvalid-pch

-Wlong-long <-- default   # not actually the case
-Wlong-long <== -pedantic # should be <-- pedantic

-Wvariadic-macros <-- default # not actually the case
-Wvariadic-macros <-- -pedantic

-Wvolatile-register-var

-Wdisabled-optimization

-Wpointer-sign <-- -Wall || -pedantic

-Werror

-Werror= # note: -Werror=foo --> -Wfoo

-Wstack-protector <== -fstack-protector

-Wstring-literal-comparison <-- -Wall

-Woverlength-strings <-- -pedantic

Reply via email to