aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/expr.c
diff options
context:
space:
mode:
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>2009-06-19 15:33:55 +0000
committerKaveh Ghazi <ghazi@gcc.gnu.org>2009-06-19 15:33:55 +0000
commiteb6f9a86c5a7406cabd069093d34d435cf92bd13 (patch)
tree83e5c787fecb044f7803f22a3aa5b3d699b063b9 /gcc/fortran/expr.c
parent642324bb16ffe88f0aa81c4ced9bdc1ba63471ab (diff)
downloadgcc-eb6f9a86c5a7406cabd069093d34d435cf92bd13.zip
gcc-eb6f9a86c5a7406cabd069093d34d435cf92bd13.tar.gz
gcc-eb6f9a86c5a7406cabd069093d34d435cf92bd13.tar.bz2
gfortran.h (gfc_expr): Use mpc_t to represent complex numbers.
* gfortran.h (gfc_expr): Use mpc_t to represent complex numbers. * arith.c, dump-parse-tree.c, expr.c, module.c, resolve.c, simplify.c, target-memory.c, target-memory.h, trans-const.c, trans-expr.c: Convert to mpc_t throughout. From-SVN: r148711
Diffstat (limited to 'gcc/fortran/expr.c')
-rw-r--r--gcc/fortran/expr.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
index 13c6b63..d2f73d6 100644
--- a/gcc/fortran/expr.c
+++ b/gcc/fortran/expr.c
@@ -156,8 +156,12 @@ free_expr0 (gfc_expr *e)
break;
case BT_COMPLEX:
+#ifdef HAVE_mpc
+ mpc_clear (e->value.complex);
+#else
mpfr_clear (e->value.complex.r);
mpfr_clear (e->value.complex.i);
+#endif
break;
default:
@@ -439,10 +443,15 @@ gfc_copy_expr (gfc_expr *p)
case BT_COMPLEX:
gfc_set_model_kind (q->ts.kind);
+#ifdef HAVE_mpc
+ mpc_init2 (q->value.complex, mpfr_get_default_prec());
+ mpc_set (q->value.complex, p->value.complex, GFC_MPC_RND_MODE);
+#else
mpfr_init (q->value.complex.r);
mpfr_init (q->value.complex.i);
mpfr_set (q->value.complex.r, p->value.complex.r, GFC_RND_MODE);
mpfr_set (q->value.complex.i, p->value.complex.i, GFC_RND_MODE);
+#endif
break;
case BT_CHARACTER: