Page MenuHomeFreeBSD

<linux/overflow.h>: Don't use __has_builtin().
ClosedPublic

Authored by jhb on Mon, Sep 13, 6:23 PM.

Details

Summary

GCC only added support for __has_builtin in GCC 10. However, all
supported versions of GCC and clang include these builtins so just use
them unconditionally.

This fixes the build with GCC 9.

Diff Detail

Repository
R10 FreeBSD src repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

jhb requested review of this revision.Mon, Sep 13, 6:23 PM

I was asked to add those checks in D25015 but if all the compiler that we support have those it's good for me (that was my guess at the time but didn't bother to check).

This revision is now accepted and ready to land.Mon, Sep 13, 6:32 PM

As an alternative, you could define __has_builtin(x) to 1 and suffer with a less precise error message should x not actually be supported.

In D31942#720643, @imp wrote:

As an alternative, you could define __has_builtin(x) to 1 and suffer with a less precise error message should x not actually be supported.

We can't really do that. __has_builtin() gets used for various things and in other places it is always defined to 0 when it doesn't exist. Breaking that pattern in a header would probably cause other breakage in the future.

This revision was automatically updated to reflect the committed changes.