diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-12-15 12:14:21 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-12-15 12:14:21 -0800 |
commit | 7220bb8af7be49163dc27272f319aa8f9f1fb126 (patch) | |
tree | 9369b479375906186ebd0733a1d750a70faab872 /lib/Target/CppBackend | |
parent | 567be43a95fc941e1f99491343927fc7ac6679da (diff) |
do not redirect to Math builtins, just call them
Diffstat (limited to 'lib/Target/CppBackend')
-rw-r--r-- | lib/Target/CppBackend/CallHandlers.h | 110 |
1 files changed, 58 insertions, 52 deletions
diff --git a/lib/Target/CppBackend/CallHandlers.h b/lib/Target/CppBackend/CallHandlers.h index 3f3203676c..59cecb8e67 100644 --- a/lib/Target/CppBackend/CallHandlers.h +++ b/lib/Target/CppBackend/CallHandlers.h @@ -123,6 +123,12 @@ DEF_CALL_HANDLER(name, { \ return CH___default__(CI, "_" #to); \ }) +#define DEF_BUILTIN_HANDLER(name, to) \ +DEF_CALL_HANDLER(name, { \ + if (!CI) return ""; \ + return CH___default__(CI, #to); \ +}) + // Various simple redirects for our js libc, see library.js and LibraryManager.load DEF_REDIRECT_HANDLER(__01readdir64_, readdir); DEF_REDIRECT_HANDLER(__xpg_basename, basename); @@ -189,8 +195,8 @@ DEF_REDIRECT_HANDLER(_IO_getc, getc); DEF_REDIRECT_HANDLER(_IO_putc, putc); DEF_REDIRECT_HANDLER(_ZNSo3putEc, putchar); DEF_REDIRECT_HANDLER(__01mmap64_, mmap); -DEF_REDIRECT_HANDLER(abs, Math_abs); -DEF_REDIRECT_HANDLER(labs, Math_abs); +DEF_BUILTIN_HANDLER(abs, Math_abs); +DEF_BUILTIN_HANDLER(labs, Math_abs); DEF_REDIRECT_HANDLER(__cxa_atexit, atexit); DEF_REDIRECT_HANDLER(strtoll_l, strtoll); DEF_REDIRECT_HANDLER(strtol_l, strtol); @@ -228,60 +234,60 @@ DEF_REDIRECT_HANDLER(iscntrl_l, iscntrl); DEF_REDIRECT_HANDLER(isprint_l, isprint); DEF_REDIRECT_HANDLER(isgraph_l, isgraph); DEF_REDIRECT_HANDLER(terminate, __cxa_call_unexpected); -DEF_REDIRECT_HANDLER(cos, Math_cos); -DEF_REDIRECT_HANDLER(cosf, Math_cos); -DEF_REDIRECT_HANDLER(cosl, Math_cos); -DEF_REDIRECT_HANDLER(sin, Math_sin); -DEF_REDIRECT_HANDLER(sinf, Math_sin); -DEF_REDIRECT_HANDLER(sinl, Math_sin); -DEF_REDIRECT_HANDLER(tan, Math_tan); -DEF_REDIRECT_HANDLER(tanf, Math_tan); -DEF_REDIRECT_HANDLER(tanl, Math_tan); -DEF_REDIRECT_HANDLER(acos, Math_acos); -DEF_REDIRECT_HANDLER(acosf, Math_acos); -DEF_REDIRECT_HANDLER(acosl, Math_acos); -DEF_REDIRECT_HANDLER(asin, Math_asin); -DEF_REDIRECT_HANDLER(asinf, Math_asin); -DEF_REDIRECT_HANDLER(asinl, Math_asin); -DEF_REDIRECT_HANDLER(atan, Math_atan); -DEF_REDIRECT_HANDLER(atanf, Math_atan); -DEF_REDIRECT_HANDLER(atanl, Math_atan); -DEF_REDIRECT_HANDLER(atan2, Math_atan2); -DEF_REDIRECT_HANDLER(atan2f, Math_atan2); -DEF_REDIRECT_HANDLER(atan2l, Math_atan2); -DEF_REDIRECT_HANDLER(exp, Math_exp); -DEF_REDIRECT_HANDLER(expf, Math_exp); -DEF_REDIRECT_HANDLER(expl, Math_exp); +DEF_BUILTIN_HANDLER(cos, Math_cos); +DEF_BUILTIN_HANDLER(cosf, Math_cos); +DEF_BUILTIN_HANDLER(cosl, Math_cos); +DEF_BUILTIN_HANDLER(sin, Math_sin); +DEF_BUILTIN_HANDLER(sinf, Math_sin); +DEF_BUILTIN_HANDLER(sinl, Math_sin); +DEF_BUILTIN_HANDLER(tan, Math_tan); +DEF_BUILTIN_HANDLER(tanf, Math_tan); +DEF_BUILTIN_HANDLER(tanl, Math_tan); +DEF_BUILTIN_HANDLER(acos, Math_acos); +DEF_BUILTIN_HANDLER(acosf, Math_acos); +DEF_BUILTIN_HANDLER(acosl, Math_acos); +DEF_BUILTIN_HANDLER(asin, Math_asin); +DEF_BUILTIN_HANDLER(asinf, Math_asin); +DEF_BUILTIN_HANDLER(asinl, Math_asin); +DEF_BUILTIN_HANDLER(atan, Math_atan); +DEF_BUILTIN_HANDLER(atanf, Math_atan); +DEF_BUILTIN_HANDLER(atanl, Math_atan); +DEF_BUILTIN_HANDLER(atan2, Math_atan2); +DEF_BUILTIN_HANDLER(atan2f, Math_atan2); +DEF_BUILTIN_HANDLER(atan2l, Math_atan2); +DEF_BUILTIN_HANDLER(exp, Math_exp); +DEF_BUILTIN_HANDLER(expf, Math_exp); +DEF_BUILTIN_HANDLER(expl, Math_exp); DEF_REDIRECT_HANDLER(erfcf, erfc); DEF_REDIRECT_HANDLER(erfcl, erfc); DEF_REDIRECT_HANDLER(erff, erf); DEF_REDIRECT_HANDLER(erfl, erf); -DEF_REDIRECT_HANDLER(log, Math_log); -DEF_REDIRECT_HANDLER(logf, Math_log); -DEF_REDIRECT_HANDLER(logl, Math_log); -DEF_REDIRECT_HANDLER(sqrt, Math_sqrt); -DEF_REDIRECT_HANDLER(sqrtf, Math_sqrt); -DEF_REDIRECT_HANDLER(sqrtl, Math_sqrt); -DEF_REDIRECT_HANDLER(fabs, Math_abs); -DEF_REDIRECT_HANDLER(fabsf, Math_abs); -DEF_REDIRECT_HANDLER(fabsl, Math_abs); -DEF_REDIRECT_HANDLER(ceil, Math_ceil); -DEF_REDIRECT_HANDLER(ceilf, Math_ceil); -DEF_REDIRECT_HANDLER(ceill, Math_ceil); -DEF_REDIRECT_HANDLER(floor, Math_floor); -DEF_REDIRECT_HANDLER(floorf, Math_floor); -DEF_REDIRECT_HANDLER(floorl, Math_floor); -DEF_REDIRECT_HANDLER(pow, Math_pow); -DEF_REDIRECT_HANDLER(powf, Math_pow); -DEF_REDIRECT_HANDLER(powl, Math_pow); -DEF_REDIRECT_HANDLER(llvm_sqrt_f32, Math_sqrt); -DEF_REDIRECT_HANDLER(llvm_sqrt_f64, Math_sqrt); -DEF_REDIRECT_HANDLER(llvm_pow_f32, Math_pow); -DEF_REDIRECT_HANDLER(llvm_pow_f64, Math_pow); -DEF_REDIRECT_HANDLER(llvm_log_f32, Math_log); -DEF_REDIRECT_HANDLER(llvm_log_f64, Math_log); -DEF_REDIRECT_HANDLER(llvm_exp_f32, Math_exp); -DEF_REDIRECT_HANDLER(llvm_exp_f64, Math_exp); +DEF_BUILTIN_HANDLER(log, Math_log); +DEF_BUILTIN_HANDLER(logf, Math_log); +DEF_BUILTIN_HANDLER(logl, Math_log); +DEF_BUILTIN_HANDLER(sqrt, Math_sqrt); +DEF_BUILTIN_HANDLER(sqrtf, Math_sqrt); +DEF_BUILTIN_HANDLER(sqrtl, Math_sqrt); +DEF_BUILTIN_HANDLER(fabs, Math_abs); +DEF_BUILTIN_HANDLER(fabsf, Math_abs); +DEF_BUILTIN_HANDLER(fabsl, Math_abs); +DEF_BUILTIN_HANDLER(ceil, Math_ceil); +DEF_BUILTIN_HANDLER(ceilf, Math_ceil); +DEF_BUILTIN_HANDLER(ceill, Math_ceil); +DEF_BUILTIN_HANDLER(floor, Math_floor); +DEF_BUILTIN_HANDLER(floorf, Math_floor); +DEF_BUILTIN_HANDLER(floorl, Math_floor); +DEF_BUILTIN_HANDLER(pow, Math_pow); +DEF_BUILTIN_HANDLER(powf, Math_pow); +DEF_BUILTIN_HANDLER(powl, Math_pow); +DEF_BUILTIN_HANDLER(llvm_sqrt_f32, Math_sqrt); +DEF_BUILTIN_HANDLER(llvm_sqrt_f64, Math_sqrt); +DEF_BUILTIN_HANDLER(llvm_pow_f32, Math_pow); +DEF_BUILTIN_HANDLER(llvm_pow_f64, Math_pow); +DEF_BUILTIN_HANDLER(llvm_log_f32, Math_log); +DEF_BUILTIN_HANDLER(llvm_log_f64, Math_log); +DEF_BUILTIN_HANDLER(llvm_exp_f32, Math_exp); +DEF_BUILTIN_HANDLER(llvm_exp_f64, Math_exp); DEF_REDIRECT_HANDLER(ldexpf, ldexp); DEF_REDIRECT_HANDLER(scalb, ldexp); DEF_REDIRECT_HANDLER(scalbn, ldexp); |