[flac-dev] about "cpu.h: Fix compiler detection" patch

Erik de Castro Lopo mle+la at mega-nerd.com
Thu Feb 16 10:28:25 UTC 2017

lvqcl wrote:

> So I thought that the directive
>     #if defined __clang__ && __has_attribute(__target__)
> is ok for GCC because "defined __clang__" is false and
> preprocessor shouldn't try to parse "__has_attribute(...)" part.

It seems this is actually a pre-processor parsing bug. It hits
the bug *before* the logic is evaluated. My current solution in
the above PR is to avoid `__has_attribute` and use this:

    #elif defined __clang__ && (__clang_major__ > 3 || \
          (__clang_major__ == 3 && __clang_minor__ >= 6)) /* clang */

which I have tested with clang 3.6. If someone has an earlier version
of clang and can verify that it work, I'll drop the version number.

Erik de Castro Lopo

More information about the flac-dev mailing list