Our approach to warnings leaves too few warnings with Clang.
For example, clang 3.7 reports itself as compatible with gcc 4.2, but it actually supports many warnings from later versions of gcc. We should just try to detect which warnings are supported.