http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54130
--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-07-31 09:32:18 UTC --- I think your non-matching prototype disables builtin recognition. The C standard specifies isnan as returning int, so I think GCC is correct here.