https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78057
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I've been concerned about something like: int a = ((int (*) (void)) __builtin_clz) (); int b = ((int (*) (float, double)) __builtin_clz) (0.5f, 1.0); but that is apparently rejected. Perhaps builtins that don't have non-__builtin_* counterpart are fine in this regard, the rest can have issues like PR70457 and many others.