diff options
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/include/clang/Basic/Builtins.def | 15 | ||||
| -rw-r--r-- | clang/test/CodeGen/libcall-declarations.c | 21 |
2 files changed, 35 insertions, 1 deletions
diff --git a/clang/include/clang/Basic/Builtins.def b/clang/include/clang/Basic/Builtins.def index 55c6ed7deea..af8a4dae7df 100644 --- a/clang/include/clang/Basic/Builtins.def +++ b/clang/include/clang/Basic/Builtins.def @@ -1137,6 +1137,21 @@ LIBBUILTIN(ctanh, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) LIBBUILTIN(ctanhf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) LIBBUILTIN(ctanhl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) +// __sinpi and friends are OS X specific library functions, but otherwise much +// like the standard (non-complex) sin (etc). +LIBBUILTIN(__sinpi, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(__sinpif, "ff", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(__cospi, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(__cospif, "ff", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(__tanpi, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(__tanpif, "ff", "fne", "math.h", ALL_LANGUAGES) + +// Similarly, __exp10 is OS X only +LIBBUILTIN(__exp10, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(__exp10f, "ff", "fne", "math.h", ALL_LANGUAGES) + // Blocks runtime Builtin math library functions LIBBUILTIN(_Block_object_assign, "vv*vC*iC", "f", "Blocks.h", ALL_LANGUAGES) LIBBUILTIN(_Block_object_dispose, "vvC*iC", "f", "Blocks.h", ALL_LANGUAGES) diff --git a/clang/test/CodeGen/libcall-declarations.c b/clang/test/CodeGen/libcall-declarations.c index 6442e29bd86..345b74fe97d 100644 --- a/clang/test/CodeGen/libcall-declarations.c +++ b/clang/test/CodeGen/libcall-declarations.c @@ -244,6 +244,16 @@ long double _Complex ctanl(long double _Complex); double _Complex ctanh(double _Complex); float _Complex ctanhf(float _Complex); long double _Complex ctanhl(long double _Complex); + +double __sinpi(double); +float __sinpif(float); +double __cospi(double); +float __cospif(float); +double __tanpi(double); +float __tanpif(float); + +double __exp10(double); +float __exp10f(float); #ifdef __cplusplus } #endif @@ -298,7 +308,8 @@ void *use[] = { F(crealf), F(creall), F(csin), F(csinf), F(csinl), F(csinh), F(csinhf), F(csinhl), F(csqrt), F(csqrtf), F(csqrtl), F(ctan), F(ctanf), F(ctanl), F(ctanh), - F(ctanhf), F(ctanhl) + F(ctanhf), F(ctanhl), F(__sinpi), F(__sinpif), F(__cospi), + F(__cospif), F(__tanpi), F(__tanpif), F(__exp10), F(__exp10f) }; // CHECK-NOERRNO: declare double @atan2(double, double) [[NUW:#[0-9]+]] @@ -510,6 +521,14 @@ void *use[] = { // CHECK-NOERRNO: declare <2 x float> @ctanf(<2 x float>) [[NUW]] // CHECK-NOERRNO: declare { double, double } @ctanh(double, double) [[NUW]] // CHECK-NOERRNO: declare <2 x float> @ctanhf(<2 x float>) [[NUW]] +// CHECK-NOERRNO: declare double @__sinpi(double) [[NUW]] +// CHECK-NOERRNO: declare float @__sinpif(float) [[NUW]] +// CHECK-NOERRNO: declare double @__cospi(double) [[NUW]] +// CHECK-NOERRNO: declare float @__cospif(float) [[NUW]] +// CHECK-NOERRNO: declare double @__tanpi(double) [[NUW]] +// CHECK-NOERRNO: declare float @__tanpif(float) [[NUW]] +// CHECK-NOERRNO: declare double @__exp10(double) [[NUW]] +// CHECK-NOERRNO: declare float @__exp10f(float) [[NUW]] // CHECK-ERRNO: declare i32 @abs(i32) [[NUW:#[0-9]+]] // CHECK-ERRNO: declare i64 @labs(i64) [[NUW]] |

