------- Comment #21 from howarth at nitro dot med dot uc dot edu 2006-11-01 14:00 ------- This bug is rather confusing. It appears that the actual macros for isfinite on Darwin PPC look like...
static __inline__ int __inline_isinff( float __x ) { return __builtin_fabsf(__x) == __builtin_inff(); } static __inline__ int __inline_isinfd( double __x ) { return __builtin_fabs(__x) == __builtin_inf(); } static __inline__ int __inline_isinf( long double __x ) { return __builtin_fabsl(__x) == __builtin_infl(); } static __inline__ int __inline_isfinitef( float __x ) { return __x == __x && __builtin_fabsf(__x) != __builtin_inff(); } static __inline__ int __inline_isfinited( double __x ) { return __x == __x && __builtin_fabs(__x) != __builtin_inf(); } static __inline__ int __inline_isfinite( long double __x ) { return __x == __x && __builtin_fabsl(__x) != __builtin_infl(); } I assume that the __builtin_##### entries are actually library function calls and not macros themselves. If that is the case, why would the isfinite macros break at higher optimization levels? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29302