diff options
author | Steven G. Kargl <kargls@comcast.net> | 2005-09-22 19:00:24 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2005-09-22 19:00:24 +0000 |
commit | 6970fcc83eae5053ffc876d8f8fb75f9ccb4159c (patch) | |
tree | 0e209b98ef1ee23b4f92afccfcca714e10b4f7c5 /gcc/fortran/simplify.c | |
parent | e9931b5b67e02b934eb8d69c1728b831bde7d0a6 (diff) | |
download | gcc-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.c | 16 |
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) { |