diff options
author | Kaveh R. Ghazi <ghazi@caip.rutgers.edu> | 2009-10-14 01:14:53 +0000 |
---|---|---|
committer | Kaveh Ghazi <ghazi@gcc.gnu.org> | 2009-10-14 01:14:53 +0000 |
commit | 7610abd8cbb3c9f75a88b90196e9bb207aff09db (patch) | |
tree | ef482df1dbca9c07d51e39903d45c94ad89f9fc5 /gcc/builtins.c | |
parent | 1cc245760cde1a2488b2e4e4d892cdeeb07a4d7f (diff) | |
download | gcc-7610abd8cbb3c9f75a88b90196e9bb207aff09db.zip gcc-7610abd8cbb3c9f75a88b90196e9bb207aff09db.tar.gz gcc-7610abd8cbb3c9f75a88b90196e9bb207aff09db.tar.bz2 |
builtins.c (fold_builtin_1): Support complex "arc" functions.
* builtins.c (fold_builtin_1): Support complex "arc" functions.
* real.h (HAVE_mpc_arc): Define.
testsuite:
* gcc.dg/torture/builtin-math-6.c: Test complex "arc" functions.
* lib/target-supports.exp (check_effective_target_mpc_arc): New.
From-SVN: r152746
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r-- | gcc/builtins.c | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c index 55228d2..d991408 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -10063,7 +10063,45 @@ fold_builtin_1 (location_t loc, tree fndecl, tree arg0, bool ignore) && TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) == REAL_TYPE) return do_mpc_arg1 (arg0, type, mpc_sqrt); break; -#endif + +#ifdef HAVE_mpc_arc + CASE_FLT_FN (BUILT_IN_CASIN): + if (validate_arg (arg0, COMPLEX_TYPE) + && TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) == REAL_TYPE) + return do_mpc_arg1 (arg0, type, mpc_asin); + break; + + CASE_FLT_FN (BUILT_IN_CACOS): + if (validate_arg (arg0, COMPLEX_TYPE) + && TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) == REAL_TYPE) + return do_mpc_arg1 (arg0, type, mpc_acos); + break; + + CASE_FLT_FN (BUILT_IN_CATAN): + if (validate_arg (arg0, COMPLEX_TYPE) + && TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) == REAL_TYPE) + return do_mpc_arg1 (arg0, type, mpc_atan); + break; + + CASE_FLT_FN (BUILT_IN_CASINH): + if (validate_arg (arg0, COMPLEX_TYPE) + && TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) == REAL_TYPE) + return do_mpc_arg1 (arg0, type, mpc_asinh); + break; + + CASE_FLT_FN (BUILT_IN_CACOSH): + if (validate_arg (arg0, COMPLEX_TYPE) + && TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) == REAL_TYPE) + return do_mpc_arg1 (arg0, type, mpc_acosh); + break; + + CASE_FLT_FN (BUILT_IN_CATANH): + if (validate_arg (arg0, COMPLEX_TYPE) + && TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) == REAL_TYPE) + return do_mpc_arg1 (arg0, type, mpc_atanh); + break; +#endif /* HAVE_mpc_arc */ +#endif /* HAVE_mpc */ CASE_FLT_FN (BUILT_IN_CABS): return fold_builtin_cabs (loc, arg0, type, fndecl); |