Add new compiler warnings
While doing legacy/trac#19044 I tried to sort all the GCC warnings to see if we missed any that we could add. I came up with a list that we could add without triggering any new warnings (for me), and a list of ones tthat maybe looked good, but which do trigger today. I'm thinking that we can add these with little to no trouble: ``` -Wunused-but-set-parameter -Wunused -Wuninitialized -Wstrict-aliasing=5 -Wswitch-bool -Wtrampolines -Wunused-but-set-variable -Wvariadic-macros -Wsync-nand -Wdate-time -Wsizeof-array-argument -Wunused-parameter -Wunused-local-typedefs -Wshift-count-negative -Wshift-count-overflow -Wc99-c11-compat -Wcast-align -Wpacked -Wmissing-format-attribute -Wsuggest-attribute=noreturn -Wsuggest-attribute=format ``` And we can add these GCC-6 only options with little to no trouble: ``` -Wshift-negative-value -Wshift-overflow=2 -Wignored-attributes ``` These warnings look useful but they trigger on our current code. Is it worth fixing these warnings? ``` -Wconversion -Wsign-conversion -Wunsafe-loop-optimizations -Waggregate-return // one place only, I believe. -Wdouble-promotion // Pretty easy to fix. -Wunsuffixed-float-constants // We have these all over. -Wcast-qual -Wstrict-overflow=n -Wstrict-overflow -Wpadded -Wjump-misses-init // lots of these; are any bugs? -Wswitch-default -Wsuggest-attribute=pure -Wsuggest-attribute=const -Wfloat-conversion // just a dozen or so. -Woverlength-strings // only in tests ``` And these gcc6-only warnings trigger on our current code: ``` -Wnull-dereference -Wunused-const-variable -Wduplicated-cond ```
issue