aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/simplify.c
diff options
context:
space:
mode:
authorSteven G. Kargl <kargls@comcast.net>2005-09-22 19:00:24 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2005-09-22 19:00:24 +0000
commit6970fcc83eae5053ffc876d8f8fb75f9ccb4159c (patch)
tree0e209b98ef1ee23b4f92afccfcca714e10b4f7c5 /gcc/fortran/simplify.c
parente9931b5b67e02b934eb8d69c1728b831bde7d0a6 (diff)
downloadgcc-6970fcc83eae5053ffc876d8f8fb75f9ccb4159c.zip
gcc-6970fcc83eae5053ffc876d8f8fb75f9ccb4159c.tar.gz
gcc-6970fcc83eae5053ffc876d8f8fb75f9ccb4159c.tar.bz2
re PR fortran/23516 (IMAG is not a generic function when implicit none is declared)
PR fortran/23516 * intrinsic.c (add_function): Add IMAG, IMAGPART, and REALPART intrinsics. * intrinsic.h: Prototypes for gfc_simplify_realpart and gfc_resolve_realpart. * intrinsic.texi: Document intrinsic procedures. * simplify.c (gfc_simplify_realpart): New function. * irseolve.c (gfc_resolve_realpart): New function. From-SVN: r104537
Diffstat (limited to 'gcc/fortran/simplify.c')
-rw-r--r--gcc/fortran/simplify.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index 44dfe1a..7c9a6dc 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -372,6 +372,7 @@ gfc_simplify_adjustr (gfc_expr * e)
gfc_expr *
gfc_simplify_aimag (gfc_expr * e)
{
+
gfc_expr *result;
if (e->expr_type != EXPR_CONSTANT)
@@ -2591,6 +2592,21 @@ gfc_simplify_real (gfc_expr * e, gfc_expr * k)
return range_check (result, "REAL");
}
+
+gfc_expr *
+gfc_simplify_realpart (gfc_expr * e)
+{
+ gfc_expr *result;
+
+ if (e->expr_type != EXPR_CONSTANT)
+ return NULL;
+
+ result = gfc_constant_result (BT_REAL, e->ts.kind, &e->where);
+ mpfr_set (result->value.real, e->value.complex.r, GFC_RND_MODE);
+
+ return range_check (result, "REALPART");
+}
+
gfc_expr *
gfc_simplify_repeat (gfc_expr * e, gfc_expr * n)
{