Better error reporting, optimizations in LTO, support for skylake-avx512.
I recently compiled a contribution graph (number of lines changed per user) for gcc since 2015 using Mercurial’s churn command and a simple revset.
(I excluded the po files, as that gives one user too much credit, since he just checked in the translations, but didn’t write them himself.)
This is a rather unusual contribution graph. Most I’ve seen follow a very stark power law, with one contributor doing over 90% of the work, and the second contributor doing around 5%. This graph shows a lot more collaboration from many people. The current top contributor in that graph is Arnaud Charlet, because he commits the Ada code from many (all?) AdaCore developers. I am told that Ada development in gcc is a bit unusual compared to the other languages. Regardless, the development of gcc seems healthier than ever!
I’m loving that GCC is finally starting to take warnings/diagnostics more seriously!
For a while now, I’ve been using Clang primarily because of the state of warning output (-fsanitize-trap is also pretty solid, but I could give that up for GCC’s speed if the warning output were as good).
I’m hoping GCC will soon finally add a -Weverything flag as Clang saw fit to do. You may be of the opinion that it creates false-positives, but it’s actually easier to disable the warnings you explicitly don’t want than it is to remember the 60-odd flags that you’d have to pass to get all the warnings that are helpful.
If GCC does add a -Weverything, I’ll finally be able to switch back to a GPL’d compiler known for its incredible speed. That would truly be a gift!
Edit: I remember seeing a bug on the gcc bug tracker regarding adding something like -Weverything, but can no longer find it. If I remember, the consensus when I last looked at it (which must have been >1 year ago) was that -Weverything would not be added but something akin to -On would be added for warnings to have levels of warnings. Can anyone else confirm this or qualify this?
Edit 2: I managed to dig up the issue I mentioned above. It’s closed as WONTFIX.
-Wall and -Wextra? Might be close enough to everything.
Actually, -Wall and -Wextra enable very few of the total set of warnings.
See gcc-weverything for a list of all warnings in a given gcc release and the following for a list of all warnings enabled by -Wall -Wextra:
-Warray-bounds (only with -O2)
-Wmain (only for C/ObjC and unless -ffreestanding)
-Wsign-compare (only in C++)
-Wmissing-parameter-type (C only)
-Wold-style-declaration (C only)
-Wunused-parameter (only with -Wunused or -Wall)
That’s 39 of the 169 total warnings available in the last release not accounting for the newly added warning flags (note that some of the 169 flags are errant without an argument, so that number is a little smaller than presented).
Either way, far too often are -Wall -Wextra conflated with -Weverything.
Why don’t you just send a patch to add this option?
Presumably others have tried and it wasn’t accepted. It seems like the sort of thing that anybody reasonably familiar with the code could do in under an hour so I’d expect that it would have been done by now if there was agreement on adding it.
Oh boy! Just 10 more years until I can use this version with G̶e̶n̶t̶o̶o̶ Funtoo!
I was being sarcastic, although GCC version bumps do tend to take a while before they get supported. Especially with -hardened flavours.
Funtoo is a Gentoo derivative created by Daniel Robbins, Gentoo’s original founder. I like it because it shuns systemd.