Clang defines __GNUC__ to 4, as that represents its level of
support for the GNU C dialect. The gcc compiler does not provide
a macro indicating the compiler separately from the dialect supported.
We must therefore use the __clang__ macro to avoid false positives.