spatel created this revision. Herald added a subscriber: mcrosier. As the description in Builtins.def says: "e = const, but only when -fmath-errno=0".
This is step 2 of 3 to fix builtins and math calls as discussed in https://reviews.llvm.org/D39204. I went through the lists at: http://en.cppreference.com/w/c/numeric/math http://en.cppreference.com/w/c/numeric/complex ...and changed all of the builtins that correspond to functions that could set errno. The math.h functions that are specified to never set errno are: fmax fmin nearbyint And for complex.h: creal cimag conj cproj powi is not a standard libm function, so that's also left as "Fnc". https://reviews.llvm.org/D39481 Files: include/clang/Basic/Builtins.def lib/CodeGen/CGBuiltin.cpp test/CodeGen/builtin-sqrt.c
Index: test/CodeGen/builtin-sqrt.c =================================================================== --- test/CodeGen/builtin-sqrt.c +++ test/CodeGen/builtin-sqrt.c @@ -1,18 +1,16 @@ // RUN: %clang_cc1 -fmath-errno -triple x86_64-apple-darwin %s -emit-llvm -o - | FileCheck %s --check-prefix=HAS_ERRNO // RUN: %clang_cc1 -triple x86_64-apple-darwin %s -emit-llvm -o - | FileCheck %s --check-prefix=NO_ERRNO -// FIXME: If a builtin is supposed to have identical semantics to its libm twin, then it -// should not be marked "constant" in Builtins.def because that means it can't set errno. -// Note that both runs have 'readnone' on the libcall here. +// FIXME: If the builtin does not set errno, it should be converted to an LLVM intrinsic. float foo(float X) { // HAS_ERRNO: call float @sqrtf(float // NO_ERRNO: call float @sqrtf(float return __builtin_sqrtf(X); } // HAS_ERRNO: declare float @sqrtf(float) [[ATTR:#[0-9]+]] -// HAS_ERRNO: attributes [[ATTR]] = { nounwind readnone {{.*}}} +// HAS_ERRNO-NOT: attributes [[ATTR]] = {{{.*}} readnone // NO_ERRNO: declare float @sqrtf(float) [[ATTR:#[0-9]+]] // NO_ERRNO: attributes [[ATTR]] = { nounwind readnone {{.*}}} Index: lib/CodeGen/CGBuiltin.cpp =================================================================== --- lib/CodeGen/CGBuiltin.cpp +++ lib/CodeGen/CGBuiltin.cpp @@ -2080,10 +2080,7 @@ // errno. Thus, we can transform either sqrt or __builtin_sqrt to @llvm.sqrt // if the call is 'const' (the call must not set errno). // - // FIXME: The builtin cases are not here because they are marked 'const' in - // Builtins.def. So that means they are wrongly defined to have different - // semantics than the library functions. If we included them here, we would - // turn them into LLVM intrinsics regardless of whether -fmath-errno was on. + // FIXME: The cases for __builtin_sqrt* should be here too. if (FD->hasAttr<ConstAttr>()) return RValue::get(emitUnaryBuiltin(*this, E, Intrinsic::sqrt)); break; Index: include/clang/Basic/Builtins.def =================================================================== --- include/clang/Basic/Builtins.def +++ include/clang/Basic/Builtins.def @@ -103,19 +103,19 @@ #endif // Standard libc/libm functions: -BUILTIN(__builtin_atan2 , "ddd" , "Fnc") -BUILTIN(__builtin_atan2f, "fff" , "Fnc") -BUILTIN(__builtin_atan2l, "LdLdLd", "Fnc") +BUILTIN(__builtin_atan2 , "ddd" , "Fne") +BUILTIN(__builtin_atan2f, "fff" , "Fne") +BUILTIN(__builtin_atan2l, "LdLdLd", "Fne") BUILTIN(__builtin_abs , "ii" , "ncF") BUILTIN(__builtin_copysign, "ddd", "ncF") BUILTIN(__builtin_copysignf, "fff", "ncF") BUILTIN(__builtin_copysignl, "LdLdLd", "ncF") BUILTIN(__builtin_fabs , "dd" , "ncF") BUILTIN(__builtin_fabsf, "ff" , "ncF") BUILTIN(__builtin_fabsl, "LdLd", "ncF") -BUILTIN(__builtin_fmod , "ddd" , "Fnc") -BUILTIN(__builtin_fmodf, "fff" , "Fnc") -BUILTIN(__builtin_fmodl, "LdLdLd", "Fnc") +BUILTIN(__builtin_fmod , "ddd" , "Fne") +BUILTIN(__builtin_fmodf, "fff" , "Fne") +BUILTIN(__builtin_fmodl, "LdLdLd", "Fne") BUILTIN(__builtin_frexp , "ddi*" , "Fn") BUILTIN(__builtin_frexpf, "ffi*" , "Fn") BUILTIN(__builtin_frexpl, "LdLdi*", "Fn") @@ -127,9 +127,9 @@ BUILTIN(__builtin_infl , "Ld" , "nc") BUILTIN(__builtin_labs , "LiLi" , "Fnc") BUILTIN(__builtin_llabs, "LLiLLi", "Fnc") -BUILTIN(__builtin_ldexp , "ddi" , "Fnc") -BUILTIN(__builtin_ldexpf, "ffi" , "Fnc") -BUILTIN(__builtin_ldexpl, "LdLdi", "Fnc") +BUILTIN(__builtin_ldexp , "ddi" , "Fne") +BUILTIN(__builtin_ldexpf, "ffi" , "Fne") +BUILTIN(__builtin_ldexpl, "LdLdi", "Fne") BUILTIN(__builtin_modf , "ddd*" , "Fn") BUILTIN(__builtin_modff, "fff*" , "Fn") BUILTIN(__builtin_modfl, "LdLdLd*", "Fn") @@ -142,223 +142,223 @@ BUILTIN(__builtin_powi , "ddi" , "Fnc") BUILTIN(__builtin_powif, "ffi" , "Fnc") BUILTIN(__builtin_powil, "LdLdi", "Fnc") -BUILTIN(__builtin_pow , "ddd" , "Fnc") -BUILTIN(__builtin_powf, "fff" , "Fnc") -BUILTIN(__builtin_powl, "LdLdLd", "Fnc") +BUILTIN(__builtin_pow , "ddd" , "Fne") +BUILTIN(__builtin_powf, "fff" , "Fne") +BUILTIN(__builtin_powl, "LdLdLd", "Fne") // Standard unary libc/libm functions with double/float/long double variants: -BUILTIN(__builtin_acos , "dd" , "Fnc") -BUILTIN(__builtin_acosf, "ff" , "Fnc") -BUILTIN(__builtin_acosl, "LdLd", "Fnc") -BUILTIN(__builtin_acosh , "dd" , "Fnc") -BUILTIN(__builtin_acoshf, "ff" , "Fnc") -BUILTIN(__builtin_acoshl, "LdLd", "Fnc") -BUILTIN(__builtin_asin , "dd" , "Fnc") -BUILTIN(__builtin_asinf, "ff" , "Fnc") -BUILTIN(__builtin_asinl, "LdLd", "Fnc") -BUILTIN(__builtin_asinh , "dd" , "Fnc") -BUILTIN(__builtin_asinhf, "ff" , "Fnc") -BUILTIN(__builtin_asinhl, "LdLd", "Fnc") -BUILTIN(__builtin_atan , "dd" , "Fnc") -BUILTIN(__builtin_atanf, "ff" , "Fnc") -BUILTIN(__builtin_atanl, "LdLd", "Fnc") -BUILTIN(__builtin_atanh , "dd", "Fnc") -BUILTIN(__builtin_atanhf, "ff", "Fnc") -BUILTIN(__builtin_atanhl, "LdLd", "Fnc") -BUILTIN(__builtin_cbrt , "dd", "Fnc") -BUILTIN(__builtin_cbrtf, "ff", "Fnc") -BUILTIN(__builtin_cbrtl, "LdLd", "Fnc") -BUILTIN(__builtin_ceil , "dd" , "Fnc") -BUILTIN(__builtin_ceilf, "ff" , "Fnc") -BUILTIN(__builtin_ceill, "LdLd", "Fnc") -BUILTIN(__builtin_cos , "dd" , "Fnc") -BUILTIN(__builtin_cosf, "ff" , "Fnc") -BUILTIN(__builtin_cosh , "dd" , "Fnc") -BUILTIN(__builtin_coshf, "ff" , "Fnc") -BUILTIN(__builtin_coshl, "LdLd", "Fnc") -BUILTIN(__builtin_cosl, "LdLd", "Fnc") -BUILTIN(__builtin_erf , "dd", "Fnc") -BUILTIN(__builtin_erff, "ff", "Fnc") -BUILTIN(__builtin_erfl, "LdLd", "Fnc") -BUILTIN(__builtin_erfc , "dd", "Fnc") -BUILTIN(__builtin_erfcf, "ff", "Fnc") -BUILTIN(__builtin_erfcl, "LdLd", "Fnc") -BUILTIN(__builtin_exp , "dd" , "Fnc") -BUILTIN(__builtin_expf, "ff" , "Fnc") -BUILTIN(__builtin_expl, "LdLd", "Fnc") -BUILTIN(__builtin_exp2 , "dd" , "Fnc") -BUILTIN(__builtin_exp2f, "ff" , "Fnc") -BUILTIN(__builtin_exp2l, "LdLd", "Fnc") -BUILTIN(__builtin_expm1 , "dd", "Fnc") -BUILTIN(__builtin_expm1f, "ff", "Fnc") -BUILTIN(__builtin_expm1l, "LdLd", "Fnc") -BUILTIN(__builtin_fdim, "ddd", "Fnc") -BUILTIN(__builtin_fdimf, "fff", "Fnc") -BUILTIN(__builtin_fdiml, "LdLdLd", "Fnc") -BUILTIN(__builtin_floor , "dd" , "Fnc") -BUILTIN(__builtin_floorf, "ff" , "Fnc") -BUILTIN(__builtin_floorl, "LdLd", "Fnc") -BUILTIN(__builtin_fma, "dddd", "Fnc") -BUILTIN(__builtin_fmaf, "ffff", "Fnc") -BUILTIN(__builtin_fmal, "LdLdLdLd", "Fnc") +BUILTIN(__builtin_acos , "dd" , "Fne") +BUILTIN(__builtin_acosf, "ff" , "Fne") +BUILTIN(__builtin_acosl, "LdLd", "Fne") +BUILTIN(__builtin_acosh , "dd" , "Fne") +BUILTIN(__builtin_acoshf, "ff" , "Fne") +BUILTIN(__builtin_acoshl, "LdLd", "Fne") +BUILTIN(__builtin_asin , "dd" , "Fne") +BUILTIN(__builtin_asinf, "ff" , "Fne") +BUILTIN(__builtin_asinl, "LdLd", "Fne") +BUILTIN(__builtin_asinh , "dd" , "Fne") +BUILTIN(__builtin_asinhf, "ff" , "Fne") +BUILTIN(__builtin_asinhl, "LdLd", "Fne") +BUILTIN(__builtin_atan , "dd" , "Fne") +BUILTIN(__builtin_atanf, "ff" , "Fne") +BUILTIN(__builtin_atanl, "LdLd", "Fne") +BUILTIN(__builtin_atanh , "dd", "Fne") +BUILTIN(__builtin_atanhf, "ff", "Fne") +BUILTIN(__builtin_atanhl, "LdLd", "Fne") +BUILTIN(__builtin_cbrt , "dd", "Fne") +BUILTIN(__builtin_cbrtf, "ff", "Fne") +BUILTIN(__builtin_cbrtl, "LdLd", "Fne") +BUILTIN(__builtin_ceil , "dd" , "Fne") +BUILTIN(__builtin_ceilf, "ff" , "Fne") +BUILTIN(__builtin_ceill, "LdLd", "Fne") +BUILTIN(__builtin_cos , "dd" , "Fne") +BUILTIN(__builtin_cosf, "ff" , "Fne") +BUILTIN(__builtin_cosh , "dd" , "Fne") +BUILTIN(__builtin_coshf, "ff" , "Fne") +BUILTIN(__builtin_coshl, "LdLd", "Fne") +BUILTIN(__builtin_cosl, "LdLd", "Fne") +BUILTIN(__builtin_erf , "dd", "Fne") +BUILTIN(__builtin_erff, "ff", "Fne") +BUILTIN(__builtin_erfl, "LdLd", "Fne") +BUILTIN(__builtin_erfc , "dd", "Fne") +BUILTIN(__builtin_erfcf, "ff", "Fne") +BUILTIN(__builtin_erfcl, "LdLd", "Fne") +BUILTIN(__builtin_exp , "dd" , "Fne") +BUILTIN(__builtin_expf, "ff" , "Fne") +BUILTIN(__builtin_expl, "LdLd", "Fne") +BUILTIN(__builtin_exp2 , "dd" , "Fne") +BUILTIN(__builtin_exp2f, "ff" , "Fne") +BUILTIN(__builtin_exp2l, "LdLd", "Fne") +BUILTIN(__builtin_expm1 , "dd", "Fne") +BUILTIN(__builtin_expm1f, "ff", "Fne") +BUILTIN(__builtin_expm1l, "LdLd", "Fne") +BUILTIN(__builtin_fdim, "ddd", "Fne") +BUILTIN(__builtin_fdimf, "fff", "Fne") +BUILTIN(__builtin_fdiml, "LdLdLd", "Fne") +BUILTIN(__builtin_floor , "dd" , "Fne") +BUILTIN(__builtin_floorf, "ff" , "Fne") +BUILTIN(__builtin_floorl, "LdLd", "Fne") +BUILTIN(__builtin_fma, "dddd", "Fne") +BUILTIN(__builtin_fmaf, "ffff", "Fne") +BUILTIN(__builtin_fmal, "LdLdLdLd", "Fne") BUILTIN(__builtin_fmax, "ddd", "Fnc") BUILTIN(__builtin_fmaxf, "fff", "Fnc") BUILTIN(__builtin_fmaxl, "LdLdLd", "Fnc") BUILTIN(__builtin_fmin, "ddd", "Fnc") BUILTIN(__builtin_fminf, "fff", "Fnc") BUILTIN(__builtin_fminl, "LdLdLd", "Fnc") -BUILTIN(__builtin_hypot , "ddd" , "Fnc") -BUILTIN(__builtin_hypotf, "fff" , "Fnc") -BUILTIN(__builtin_hypotl, "LdLdLd", "Fnc") -BUILTIN(__builtin_ilogb , "id", "Fnc") -BUILTIN(__builtin_ilogbf, "if", "Fnc") -BUILTIN(__builtin_ilogbl, "iLd", "Fnc") -BUILTIN(__builtin_lgamma , "dd", "Fnc") -BUILTIN(__builtin_lgammaf, "ff", "Fnc") -BUILTIN(__builtin_lgammal, "LdLd", "Fnc") -BUILTIN(__builtin_llrint, "LLid", "Fnc") -BUILTIN(__builtin_llrintf, "LLif", "Fnc") -BUILTIN(__builtin_llrintl, "LLiLd", "Fnc") -BUILTIN(__builtin_llround , "LLid", "Fnc") -BUILTIN(__builtin_llroundf, "LLif", "Fnc") -BUILTIN(__builtin_llroundl, "LLiLd", "Fnc") -BUILTIN(__builtin_log , "dd" , "Fnc") -BUILTIN(__builtin_log10 , "dd" , "Fnc") -BUILTIN(__builtin_log10f, "ff" , "Fnc") -BUILTIN(__builtin_log10l, "LdLd", "Fnc") -BUILTIN(__builtin_log1p , "dd" , "Fnc") -BUILTIN(__builtin_log1pf, "ff" , "Fnc") -BUILTIN(__builtin_log1pl, "LdLd", "Fnc") -BUILTIN(__builtin_log2, "dd" , "Fnc") -BUILTIN(__builtin_log2f, "ff" , "Fnc") -BUILTIN(__builtin_log2l, "LdLd" , "Fnc") -BUILTIN(__builtin_logb , "dd", "Fnc") -BUILTIN(__builtin_logbf, "ff", "Fnc") -BUILTIN(__builtin_logbl, "LdLd", "Fnc") -BUILTIN(__builtin_logf, "ff" , "Fnc") -BUILTIN(__builtin_logl, "LdLd", "Fnc") -BUILTIN(__builtin_lrint , "Lid", "Fnc") -BUILTIN(__builtin_lrintf, "Lif", "Fnc") -BUILTIN(__builtin_lrintl, "LiLd", "Fnc") -BUILTIN(__builtin_lround , "Lid", "Fnc") -BUILTIN(__builtin_lroundf, "Lif", "Fnc") -BUILTIN(__builtin_lroundl, "LiLd", "Fnc") +BUILTIN(__builtin_hypot , "ddd" , "Fne") +BUILTIN(__builtin_hypotf, "fff" , "Fne") +BUILTIN(__builtin_hypotl, "LdLdLd", "Fne") +BUILTIN(__builtin_ilogb , "id", "Fne") +BUILTIN(__builtin_ilogbf, "if", "Fne") +BUILTIN(__builtin_ilogbl, "iLd", "Fne") +BUILTIN(__builtin_lgamma , "dd", "Fne") +BUILTIN(__builtin_lgammaf, "ff", "Fne") +BUILTIN(__builtin_lgammal, "LdLd", "Fne") +BUILTIN(__builtin_llrint, "LLid", "Fne") +BUILTIN(__builtin_llrintf, "LLif", "Fne") +BUILTIN(__builtin_llrintl, "LLiLd", "Fne") +BUILTIN(__builtin_llround , "LLid", "Fne") +BUILTIN(__builtin_llroundf, "LLif", "Fne") +BUILTIN(__builtin_llroundl, "LLiLd", "Fne") +BUILTIN(__builtin_log , "dd" , "Fne") +BUILTIN(__builtin_log10 , "dd" , "Fne") +BUILTIN(__builtin_log10f, "ff" , "Fne") +BUILTIN(__builtin_log10l, "LdLd", "Fne") +BUILTIN(__builtin_log1p , "dd" , "Fne") +BUILTIN(__builtin_log1pf, "ff" , "Fne") +BUILTIN(__builtin_log1pl, "LdLd", "Fne") +BUILTIN(__builtin_log2, "dd" , "Fne") +BUILTIN(__builtin_log2f, "ff" , "Fne") +BUILTIN(__builtin_log2l, "LdLd" , "Fne") +BUILTIN(__builtin_logb , "dd", "Fne") +BUILTIN(__builtin_logbf, "ff", "Fne") +BUILTIN(__builtin_logbl, "LdLd", "Fne") +BUILTIN(__builtin_logf, "ff" , "Fne") +BUILTIN(__builtin_logl, "LdLd", "Fne") +BUILTIN(__builtin_lrint , "Lid", "Fne") +BUILTIN(__builtin_lrintf, "Lif", "Fne") +BUILTIN(__builtin_lrintl, "LiLd", "Fne") +BUILTIN(__builtin_lround , "Lid", "Fne") +BUILTIN(__builtin_lroundf, "Lif", "Fne") +BUILTIN(__builtin_lroundl, "LiLd", "Fne") BUILTIN(__builtin_nearbyint , "dd", "Fnc") BUILTIN(__builtin_nearbyintf, "ff", "Fnc") BUILTIN(__builtin_nearbyintl, "LdLd", "Fnc") -BUILTIN(__builtin_nextafter , "ddd", "Fnc") -BUILTIN(__builtin_nextafterf, "fff", "Fnc") -BUILTIN(__builtin_nextafterl, "LdLdLd", "Fnc") -BUILTIN(__builtin_nexttoward , "ddLd", "Fnc") -BUILTIN(__builtin_nexttowardf, "ffLd", "Fnc") -BUILTIN(__builtin_nexttowardl, "LdLdLd", "Fnc") -BUILTIN(__builtin_remainder , "ddd", "Fnc") -BUILTIN(__builtin_remainderf, "fff", "Fnc") -BUILTIN(__builtin_remainderl, "LdLdLd", "Fnc") +BUILTIN(__builtin_nextafter , "ddd", "Fne") +BUILTIN(__builtin_nextafterf, "fff", "Fne") +BUILTIN(__builtin_nextafterl, "LdLdLd", "Fne") +BUILTIN(__builtin_nexttoward , "ddLd", "Fne") +BUILTIN(__builtin_nexttowardf, "ffLd", "Fne") +BUILTIN(__builtin_nexttowardl, "LdLdLd", "Fne") +BUILTIN(__builtin_remainder , "ddd", "Fne") +BUILTIN(__builtin_remainderf, "fff", "Fne") +BUILTIN(__builtin_remainderl, "LdLdLd", "Fne") BUILTIN(__builtin_remquo , "dddi*", "Fn") BUILTIN(__builtin_remquof, "fffi*", "Fn") BUILTIN(__builtin_remquol, "LdLdLdi*", "Fn") -BUILTIN(__builtin_rint , "dd", "Fnc") -BUILTIN(__builtin_rintf, "ff", "Fnc") -BUILTIN(__builtin_rintl, "LdLd", "Fnc") -BUILTIN(__builtin_round, "dd" , "Fnc") -BUILTIN(__builtin_roundf, "ff" , "Fnc") -BUILTIN(__builtin_roundl, "LdLd" , "Fnc") -BUILTIN(__builtin_scalbln , "ddLi", "Fnc") -BUILTIN(__builtin_scalblnf, "ffLi", "Fnc") -BUILTIN(__builtin_scalblnl, "LdLdLi", "Fnc") -BUILTIN(__builtin_scalbn , "ddi", "Fnc") -BUILTIN(__builtin_scalbnf, "ffi", "Fnc") -BUILTIN(__builtin_scalbnl, "LdLdi", "Fnc") -BUILTIN(__builtin_sin , "dd" , "Fnc") -BUILTIN(__builtin_sinf, "ff" , "Fnc") -BUILTIN(__builtin_sinh , "dd" , "Fnc") -BUILTIN(__builtin_sinhf, "ff" , "Fnc") -BUILTIN(__builtin_sinhl, "LdLd", "Fnc") -BUILTIN(__builtin_sinl, "LdLd", "Fnc") -BUILTIN(__builtin_sqrt , "dd" , "Fnc") -BUILTIN(__builtin_sqrtf, "ff" , "Fnc") -BUILTIN(__builtin_sqrtl, "LdLd", "Fnc") -BUILTIN(__builtin_tan , "dd" , "Fnc") -BUILTIN(__builtin_tanf, "ff" , "Fnc") -BUILTIN(__builtin_tanh , "dd" , "Fnc") -BUILTIN(__builtin_tanhf, "ff" , "Fnc") -BUILTIN(__builtin_tanhl, "LdLd", "Fnc") -BUILTIN(__builtin_tanl, "LdLd", "Fnc") -BUILTIN(__builtin_tgamma , "dd", "Fnc") -BUILTIN(__builtin_tgammaf, "ff", "Fnc") -BUILTIN(__builtin_tgammal, "LdLd", "Fnc") -BUILTIN(__builtin_trunc , "dd", "Fnc") -BUILTIN(__builtin_truncf, "ff", "Fnc") -BUILTIN(__builtin_truncl, "LdLd", "Fnc") +BUILTIN(__builtin_rint , "dd", "Fne") +BUILTIN(__builtin_rintf, "ff", "Fne") +BUILTIN(__builtin_rintl, "LdLd", "Fne") +BUILTIN(__builtin_round, "dd" , "Fne") +BUILTIN(__builtin_roundf, "ff" , "Fne") +BUILTIN(__builtin_roundl, "LdLd" , "Fne") +BUILTIN(__builtin_scalbln , "ddLi", "Fne") +BUILTIN(__builtin_scalblnf, "ffLi", "Fne") +BUILTIN(__builtin_scalblnl, "LdLdLi", "Fne") +BUILTIN(__builtin_scalbn , "ddi", "Fne") +BUILTIN(__builtin_scalbnf, "ffi", "Fne") +BUILTIN(__builtin_scalbnl, "LdLdi", "Fne") +BUILTIN(__builtin_sin , "dd" , "Fne") +BUILTIN(__builtin_sinf, "ff" , "Fne") +BUILTIN(__builtin_sinh , "dd" , "Fne") +BUILTIN(__builtin_sinhf, "ff" , "Fne") +BUILTIN(__builtin_sinhl, "LdLd", "Fne") +BUILTIN(__builtin_sinl, "LdLd", "Fne") +BUILTIN(__builtin_sqrt , "dd" , "Fne") +BUILTIN(__builtin_sqrtf, "ff" , "Fne") +BUILTIN(__builtin_sqrtl, "LdLd", "Fne") +BUILTIN(__builtin_tan , "dd" , "Fne") +BUILTIN(__builtin_tanf, "ff" , "Fne") +BUILTIN(__builtin_tanh , "dd" , "Fne") +BUILTIN(__builtin_tanhf, "ff" , "Fne") +BUILTIN(__builtin_tanhl, "LdLd", "Fne") +BUILTIN(__builtin_tanl, "LdLd", "Fne") +BUILTIN(__builtin_tgamma , "dd", "Fne") +BUILTIN(__builtin_tgammaf, "ff", "Fne") +BUILTIN(__builtin_tgammal, "LdLd", "Fne") +BUILTIN(__builtin_trunc , "dd", "Fne") +BUILTIN(__builtin_truncf, "ff", "Fne") +BUILTIN(__builtin_truncl, "LdLd", "Fne") // C99 complex builtins -BUILTIN(__builtin_cabs, "dXd", "Fnc") -BUILTIN(__builtin_cabsf, "fXf", "Fnc") -BUILTIN(__builtin_cabsl, "LdXLd", "Fnc") -BUILTIN(__builtin_cacos, "XdXd", "Fnc") -BUILTIN(__builtin_cacosf, "XfXf", "Fnc") -BUILTIN(__builtin_cacosh, "XdXd", "Fnc") -BUILTIN(__builtin_cacoshf, "XfXf", "Fnc") -BUILTIN(__builtin_cacoshl, "XLdXLd", "Fnc") -BUILTIN(__builtin_cacosl, "XLdXLd", "Fnc") -BUILTIN(__builtin_carg, "dXd", "Fnc") -BUILTIN(__builtin_cargf, "fXf", "Fnc") -BUILTIN(__builtin_cargl, "LdXLd", "Fnc") -BUILTIN(__builtin_casin, "XdXd", "Fnc") -BUILTIN(__builtin_casinf, "XfXf", "Fnc") -BUILTIN(__builtin_casinh, "XdXd", "Fnc") -BUILTIN(__builtin_casinhf, "XfXf", "Fnc") -BUILTIN(__builtin_casinhl, "XLdXLd", "Fnc") -BUILTIN(__builtin_casinl, "XLdXLd", "Fnc") -BUILTIN(__builtin_catan, "XdXd", "Fnc") -BUILTIN(__builtin_catanf, "XfXf", "Fnc") -BUILTIN(__builtin_catanh, "XdXd", "Fnc") -BUILTIN(__builtin_catanhf, "XfXf", "Fnc") -BUILTIN(__builtin_catanhl, "XLdXLd", "Fnc") -BUILTIN(__builtin_catanl, "XLdXLd", "Fnc") -BUILTIN(__builtin_ccos, "XdXd", "Fnc") -BUILTIN(__builtin_ccosf, "XfXf", "Fnc") -BUILTIN(__builtin_ccosl, "XLdXLd", "Fnc") -BUILTIN(__builtin_ccosh, "XdXd", "Fnc") -BUILTIN(__builtin_ccoshf, "XfXf", "Fnc") -BUILTIN(__builtin_ccoshl, "XLdXLd", "Fnc") -BUILTIN(__builtin_cexp, "XdXd", "Fnc") -BUILTIN(__builtin_cexpf, "XfXf", "Fnc") -BUILTIN(__builtin_cexpl, "XLdXLd", "Fnc") +BUILTIN(__builtin_cabs, "dXd", "Fne") +BUILTIN(__builtin_cabsf, "fXf", "Fne") +BUILTIN(__builtin_cabsl, "LdXLd", "Fne") +BUILTIN(__builtin_cacos, "XdXd", "Fne") +BUILTIN(__builtin_cacosf, "XfXf", "Fne") +BUILTIN(__builtin_cacosh, "XdXd", "Fne") +BUILTIN(__builtin_cacoshf, "XfXf", "Fne") +BUILTIN(__builtin_cacoshl, "XLdXLd", "Fne") +BUILTIN(__builtin_cacosl, "XLdXLd", "Fne") +BUILTIN(__builtin_carg, "dXd", "Fne") +BUILTIN(__builtin_cargf, "fXf", "Fne") +BUILTIN(__builtin_cargl, "LdXLd", "Fne") +BUILTIN(__builtin_casin, "XdXd", "Fne") +BUILTIN(__builtin_casinf, "XfXf", "Fne") +BUILTIN(__builtin_casinh, "XdXd", "Fne") +BUILTIN(__builtin_casinhf, "XfXf", "Fne") +BUILTIN(__builtin_casinhl, "XLdXLd", "Fne") +BUILTIN(__builtin_casinl, "XLdXLd", "Fne") +BUILTIN(__builtin_catan, "XdXd", "Fne") +BUILTIN(__builtin_catanf, "XfXf", "Fne") +BUILTIN(__builtin_catanh, "XdXd", "Fne") +BUILTIN(__builtin_catanhf, "XfXf", "Fne") +BUILTIN(__builtin_catanhl, "XLdXLd", "Fne") +BUILTIN(__builtin_catanl, "XLdXLd", "Fne") +BUILTIN(__builtin_ccos, "XdXd", "Fne") +BUILTIN(__builtin_ccosf, "XfXf", "Fne") +BUILTIN(__builtin_ccosl, "XLdXLd", "Fne") +BUILTIN(__builtin_ccosh, "XdXd", "Fne") +BUILTIN(__builtin_ccoshf, "XfXf", "Fne") +BUILTIN(__builtin_ccoshl, "XLdXLd", "Fne") +BUILTIN(__builtin_cexp, "XdXd", "Fne") +BUILTIN(__builtin_cexpf, "XfXf", "Fne") +BUILTIN(__builtin_cexpl, "XLdXLd", "Fne") BUILTIN(__builtin_cimag, "dXd", "Fnc") BUILTIN(__builtin_cimagf, "fXf", "Fnc") BUILTIN(__builtin_cimagl, "LdXLd", "Fnc") BUILTIN(__builtin_conj, "XdXd", "Fnc") BUILTIN(__builtin_conjf, "XfXf", "Fnc") BUILTIN(__builtin_conjl, "XLdXLd", "Fnc") -BUILTIN(__builtin_clog, "XdXd", "Fnc") -BUILTIN(__builtin_clogf, "XfXf", "Fnc") -BUILTIN(__builtin_clogl, "XLdXLd", "Fnc") +BUILTIN(__builtin_clog, "XdXd", "Fne") +BUILTIN(__builtin_clogf, "XfXf", "Fne") +BUILTIN(__builtin_clogl, "XLdXLd", "Fne") BUILTIN(__builtin_cproj, "XdXd", "Fnc") BUILTIN(__builtin_cprojf, "XfXf", "Fnc") BUILTIN(__builtin_cprojl, "XLdXLd", "Fnc") -BUILTIN(__builtin_cpow, "XdXdXd", "Fnc") -BUILTIN(__builtin_cpowf, "XfXfXf", "Fnc") -BUILTIN(__builtin_cpowl, "XLdXLdXLd", "Fnc") +BUILTIN(__builtin_cpow, "XdXdXd", "Fne") +BUILTIN(__builtin_cpowf, "XfXfXf", "Fne") +BUILTIN(__builtin_cpowl, "XLdXLdXLd", "Fne") BUILTIN(__builtin_creal, "dXd", "Fnc") BUILTIN(__builtin_crealf, "fXf", "Fnc") BUILTIN(__builtin_creall, "LdXLd", "Fnc") -BUILTIN(__builtin_csin, "XdXd", "Fnc") -BUILTIN(__builtin_csinf, "XfXf", "Fnc") -BUILTIN(__builtin_csinl, "XLdXLd", "Fnc") -BUILTIN(__builtin_csinh, "XdXd", "Fnc") -BUILTIN(__builtin_csinhf, "XfXf", "Fnc") -BUILTIN(__builtin_csinhl, "XLdXLd", "Fnc") -BUILTIN(__builtin_csqrt, "XdXd", "Fnc") -BUILTIN(__builtin_csqrtf, "XfXf", "Fnc") -BUILTIN(__builtin_csqrtl, "XLdXLd", "Fnc") -BUILTIN(__builtin_ctan, "XdXd", "Fnc") -BUILTIN(__builtin_ctanf, "XfXf", "Fnc") -BUILTIN(__builtin_ctanl, "XLdXLd", "Fnc") -BUILTIN(__builtin_ctanh, "XdXd", "Fnc") -BUILTIN(__builtin_ctanhf, "XfXf", "Fnc") -BUILTIN(__builtin_ctanhl, "XLdXLd", "Fnc") +BUILTIN(__builtin_csin, "XdXd", "Fne") +BUILTIN(__builtin_csinf, "XfXf", "Fne") +BUILTIN(__builtin_csinl, "XLdXLd", "Fne") +BUILTIN(__builtin_csinh, "XdXd", "Fne") +BUILTIN(__builtin_csinhf, "XfXf", "Fne") +BUILTIN(__builtin_csinhl, "XLdXLd", "Fne") +BUILTIN(__builtin_csqrt, "XdXd", "Fne") +BUILTIN(__builtin_csqrtf, "XfXf", "Fne") +BUILTIN(__builtin_csqrtl, "XLdXLd", "Fne") +BUILTIN(__builtin_ctan, "XdXd", "Fne") +BUILTIN(__builtin_ctanf, "XfXf", "Fne") +BUILTIN(__builtin_ctanl, "XLdXLd", "Fne") +BUILTIN(__builtin_ctanh, "XdXd", "Fne") +BUILTIN(__builtin_ctanhf, "XfXf", "Fne") +BUILTIN(__builtin_ctanhl, "XLdXLd", "Fne") // FP Comparisons. BUILTIN(__builtin_isgreater , "i.", "Fnc")
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits