summaryrefslogtreecommitdiffstats
path: root/gcc/builtins.c
diff options
context:
space:
mode:
authorghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4>2009-10-14 01:14:53 +0000
committerghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4>2009-10-14 01:14:53 +0000
commit0e7e6e7f09cfa794f137dc97556052a7f27a3f48 (patch)
treeef482df1dbca9c07d51e39903d45c94ad89f9fc5 /gcc/builtins.c
parent3213bdbf724306805f244b9200902e9197848113 (diff)
downloadppe42-gcc-0e7e6e7f09cfa794f137dc97556052a7f27a3f48.tar.gz
ppe42-gcc-0e7e6e7f09cfa794f137dc97556052a7f27a3f48.zip
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@152746 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r--gcc/builtins.c40
1 files changed, 39 insertions, 1 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 55228d22c40..d991408fa28 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);
OpenPOWER on IntegriCloud