aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/intrinsic.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/intrinsic.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/intrinsic.c')
-rw-r--r--gcc/fortran/intrinsic.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c
index 180e7ae..be23556 100644
--- a/gcc/fortran/intrinsic.c
+++ b/gcc/fortran/intrinsic.c
@@ -949,10 +949,14 @@ add_functions (void)
gfc_check_fn_c, gfc_simplify_aimag, gfc_resolve_aimag,
z, BT_COMPLEX, dz, REQUIRED);
+ make_alias ("imag", GFC_STD_GNU);
+ make_alias ("imagpart", GFC_STD_GNU);
+
add_sym_1 ("dimag", 1, 1, BT_REAL, dd, GFC_STD_GNU,
NULL, gfc_simplify_aimag, gfc_resolve_aimag,
z, BT_COMPLEX, dd, REQUIRED);
+
make_generic ("aimag", GFC_ISYM_AIMAG, GFC_STD_F77);
add_sym_2 ("aint", 1, 1, BT_REAL, dr, GFC_STD_F77,
@@ -1813,6 +1817,11 @@ add_functions (void)
gfc_check_real, gfc_simplify_real, gfc_resolve_real,
a, BT_UNKNOWN, dr, REQUIRED, kind, BT_INTEGER, di, OPTIONAL);
+ /* This provides compatibility with g77. */
+ add_sym_1 ("realpart", 1, 0, BT_REAL, dr, GFC_STD_GNU,
+ gfc_check_fn_c, gfc_simplify_realpart, gfc_resolve_realpart,
+ a, BT_UNKNOWN, dr, REQUIRED);
+
add_sym_1 ("float", 1, 0, BT_REAL, dr, GFC_STD_F77,
NULL, gfc_simplify_float, NULL,
a, BT_INTEGER, di, REQUIRED);