diff options
author | François-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2005-03-22 22:08:22 +0000 |
---|---|---|
committer | François-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2005-03-22 22:08:22 +0000 |
commit | f77b6ca3da8ff2f43a31ef3ec15ab7428827a691 (patch) | |
tree | c943a952cc8f85047adedcf7ede1cb9c387f3412 /gcc/fortran/intrinsic.c | |
parent | e5c4f28a6c44485134c426d5ad4ba3f90cc26a41 (diff) | |
download | gcc-f77b6ca3da8ff2f43a31ef3ec15ab7428827a691.tar.gz |
Makefile.am: Added new files.
* Makefile.am: Added new files.
* Makefile.in: Regenerate.
* aclocal.m4: Regenerate.
* configure.ac: add checks for signal.h headers file, as well as
following functions: chdir, strerror, getlogin, gethostname, kill,
link, symlink, perror, sleep, time.
* configure: Regenerate.
* intrinsics/chdir.c, intrinsics/gerror.c, intrinsics/getlog.c,
intrinsics/hostnm.c, intrinsics/ierrno.c, intrinsics/kill.c,
intrinsics/link.c, intrinsics/perror.c, intrinsics/rename.c,
intrinsics/sleep.c, intrinsics/symlnk.c, intrinsics/time.c: Newly
implementend g77 intrinsics.
* check.c (gfc_check_chdir, gfc_check_chdir_sub, gfc_check_kill,
gfc_check_kill_sub, gfc_check_link, gfc_check_link_sub,
gfc_check_symlnk, gfc_check_symlnk_sub, gfc_check_rename,
gfc_check_rename_sub, gfc_check_sleep_sub, gfc_check_gerror,
gfc_check_getlog, gfc_check_hostnm, gfc_check_hostnm_sub,
gfc_check_perror): new functions to check newly implemented
g77 intrinsics.
* gfortran.h: adding symbols for new intrinsics.
* intrinsic.c (add_functions): adding new intrinsics.
(add_subroutines): adding new intrinsics.
* intrinsic.h: prototype for all checking and resolving
functions.
* iresolve.c (gfc_resolve_chdir, gfc_resolve_chdir_sub,
gfc_resolve_hostnm, gfc_resolve_ierrno, gfc_resolve_kill,
gfc_resolve_link, gfc_resolve_rename, gfc_resolve_symlnk,
gfc_resolve_time, gfc_resolve_time8, gfc_resolve_rename_sub,
gfc_resolve_kill_sub, gfc_resolve_link_sub,
gfc_resolve_symlnk_sub, gfc_resolve_sleep_sub,
gfc_resolve_gerror, gfc_resolve_getlog, gfc_resolve_hostnm_sub,
gfc_resolve_perror): new functions to resolve intrinsics.
* trans-intrinsic.c (gfc_conv_intrinsic_function): add case
for new symbols.
* g77_intrinsics_funcs.f: New test.
* g77_intrinsics_sub.f: New test.
From-SVN: r96893
Diffstat (limited to 'gcc/fortran/intrinsic.c')
-rw-r--r-- | gcc/fortran/intrinsic.c | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c index ebf5cb2edda..7336e63d552 100644 --- a/gcc/fortran/intrinsic.c +++ b/gcc/fortran/intrinsic.c @@ -1092,6 +1092,12 @@ add_functions (void) make_generic ("char", GFC_ISYM_CHAR, GFC_STD_F77); + add_sym_1 ("chdir", 0, 1, BT_INTEGER, di, GFC_STD_GNU, + gfc_check_chdir, NULL, gfc_resolve_chdir, + a, BT_CHARACTER, dc, REQUIRED); + + make_generic ("chdir", GFC_ISYM_CHDIR, GFC_STD_GNU); + add_sym_3 ("cmplx", 1, 1, BT_COMPLEX, dz, GFC_STD_F77, gfc_check_cmplx, gfc_simplify_cmplx, gfc_resolve_cmplx, x, BT_UNKNOWN, dr, REQUIRED, y, BT_UNKNOWN, dr, OPTIONAL, @@ -1323,6 +1329,12 @@ add_functions (void) make_generic ("getuid", GFC_ISYM_GETUID, GFC_STD_GNU); + add_sym_1 ("hostnm", 0, 1, BT_INTEGER, di, GFC_STD_GNU, + gfc_check_hostnm, NULL, gfc_resolve_hostnm, + a, BT_CHARACTER, dc, REQUIRED); + + make_generic ("hostnm", GFC_ISYM_HOSTNM, GFC_STD_GNU); + add_sym_1 ("huge", 0, 1, BT_REAL, dr, GFC_STD_F95, gfc_check_huge, gfc_simplify_huge, NULL, x, BT_UNKNOWN, dr, REQUIRED); @@ -1383,6 +1395,11 @@ add_functions (void) make_generic ("ieor", GFC_ISYM_IEOR, GFC_STD_F95); + add_sym_0 ("ierrno", 1, 0, BT_INTEGER, di, GFC_STD_GNU, + NULL, NULL, gfc_resolve_ierrno); + + make_generic ("ierrno", GFC_ISYM_IERRNO, GFC_STD_GNU); + add_sym_3 ("index", 1, 1, BT_INTEGER, di, GFC_STD_F77, gfc_check_index, gfc_simplify_index, NULL, stg, BT_CHARACTER, dc, REQUIRED, ssg, BT_CHARACTER, dc, REQUIRED, @@ -1430,6 +1447,12 @@ add_functions (void) make_generic ("ishftc", GFC_ISYM_ISHFTC, GFC_STD_F95); + add_sym_2 ("kill", 1, 1, BT_INTEGER, di, GFC_STD_GNU, + gfc_check_kill, NULL, gfc_resolve_kill, + a, BT_INTEGER, di, REQUIRED, b, BT_INTEGER, di, REQUIRED); + + make_generic ("kill", GFC_ISYM_KILL, GFC_STD_GNU); + add_sym_1 ("kind", 0, 1, BT_INTEGER, di, GFC_STD_F95, gfc_check_kind, gfc_simplify_kind, NULL, x, BT_REAL, dr, REQUIRED); @@ -1452,6 +1475,8 @@ add_functions (void) NULL, gfc_simplify_len_trim, gfc_resolve_len_trim, stg, BT_CHARACTER, dc, REQUIRED); + make_alias ("lnblnk", GFC_STD_GNU); + make_generic ("len_trim", GFC_ISYM_LEN_TRIM, GFC_STD_F95); add_sym_2 ("lge", 1, 0, BT_LOGICAL, dl, GFC_STD_F77, @@ -1478,6 +1503,12 @@ add_functions (void) make_generic ("llt", GFC_ISYM_LLT, GFC_STD_F77); + add_sym_2 ("link", 0, 1, BT_INTEGER, di, GFC_STD_GNU, + gfc_check_link, NULL, gfc_resolve_link, + a, BT_CHARACTER, dc, REQUIRED, b, BT_CHARACTER, dc, REQUIRED); + + make_generic ("link", GFC_ISYM_LINK, GFC_STD_GNU); + add_sym_1 ("log", 1, 1, BT_REAL, dr, GFC_STD_F77, gfc_check_fn_rc, gfc_simplify_log, gfc_resolve_log, x, BT_REAL, dr, REQUIRED); @@ -1744,6 +1775,12 @@ add_functions (void) make_generic ("real", GFC_ISYM_REAL, GFC_STD_F77); + add_sym_2 ("rename", 0, 1, BT_INTEGER, di, GFC_STD_GNU, + gfc_check_rename, NULL, gfc_resolve_rename, + a, BT_CHARACTER, dc, REQUIRED, b, BT_CHARACTER, dc, REQUIRED); + + make_generic ("rename", GFC_ISYM_RENAME, GFC_STD_GNU); + add_sym_2 ("repeat", 0, 1, BT_CHARACTER, dc, GFC_STD_F95, gfc_check_repeat, gfc_simplify_repeat, gfc_resolve_repeat, stg, BT_CHARACTER, dc, REQUIRED, n, BT_INTEGER, di, REQUIRED); @@ -1904,6 +1941,12 @@ add_functions (void) make_generic ("sum", GFC_ISYM_SUM, GFC_STD_F95); + add_sym_2 ("symlnk", 0, 1, BT_INTEGER, di, GFC_STD_GNU, + gfc_check_symlnk, NULL, gfc_resolve_symlnk, + a, BT_CHARACTER, dc, REQUIRED, b, BT_CHARACTER, dc, REQUIRED); + + make_generic ("symlnk", GFC_ISYM_SYMLNK, GFC_STD_GNU); + add_sym_1 ("system", 1, 1, BT_INTEGER, di, GFC_STD_GNU, NULL, NULL, NULL, c, BT_CHARACTER, dc, REQUIRED); @@ -1930,6 +1973,16 @@ add_functions (void) make_generic ("tanh", GFC_ISYM_TANH, GFC_STD_F77); + add_sym_0 ("time", 1, 0, BT_INTEGER, di, GFC_STD_GNU, + NULL, NULL, gfc_resolve_time); + + make_generic ("time", GFC_ISYM_TIME, GFC_STD_GNU); + + add_sym_0 ("time8", 1, 0, BT_INTEGER, di, GFC_STD_GNU, + NULL, NULL, gfc_resolve_time8); + + make_generic ("time8", GFC_ISYM_TIME8, GFC_STD_GNU); + add_sym_1 ("tiny", 0, 1, BT_REAL, dr, GFC_STD_F95, gfc_check_x, gfc_simplify_tiny, NULL, x, BT_REAL, dr, REQUIRED); @@ -2024,6 +2077,10 @@ add_subroutines (void) gfc_check_second_sub, NULL, gfc_resolve_second_sub, tm, BT_REAL, dr, REQUIRED); + add_sym_2s ("chdir", 0, 1, BT_UNKNOWN, 0, GFC_STD_GNU, + gfc_check_chdir_sub, NULL, gfc_resolve_chdir_sub, + name, BT_CHARACTER, dc, REQUIRED, st, BT_INTEGER, di, OPTIONAL); + add_sym_4s ("date_and_time", 0, 1, BT_UNKNOWN, 0, GFC_STD_F95, gfc_check_date_and_time, NULL, NULL, dt, BT_CHARACTER, dc, OPTIONAL, tm, BT_CHARACTER, dc, OPTIONAL, @@ -2038,6 +2095,10 @@ add_subroutines (void) gfc_check_etime_sub, NULL, gfc_resolve_etime_sub, vl, BT_REAL, 4, REQUIRED, tm, BT_REAL, 4, REQUIRED); + add_sym_1s ("gerror", 0, 1, BT_UNKNOWN, 0, GFC_STD_GNU, + gfc_check_gerror, NULL, gfc_resolve_gerror, c, BT_CHARACTER, + dc, REQUIRED); + add_sym_2s ("getcwd", 0, 1, BT_UNKNOWN, 0, GFC_STD_GNU, gfc_check_getcwd_sub, NULL, gfc_resolve_getcwd_sub, c, BT_CHARACTER, dc, REQUIRED, st, BT_INTEGER, di, OPTIONAL); @@ -2050,6 +2111,10 @@ add_subroutines (void) NULL, NULL, gfc_resolve_getarg, c, BT_INTEGER, di, REQUIRED, vl, BT_CHARACTER, dc, REQUIRED); + add_sym_1s ("getlog", 0, 1, BT_UNKNOWN, 0, GFC_STD_GNU, + gfc_check_getlog, NULL, gfc_resolve_getlog, c, BT_CHARACTER, + dc, REQUIRED); + /* F2003 commandline routines. */ add_sym_3s ("get_command", 0, 1, BT_UNKNOWN, 0, GFC_STD_F2003, @@ -2098,6 +2163,32 @@ add_subroutines (void) gfc_check_flush, NULL, gfc_resolve_flush, c, BT_INTEGER, di, OPTIONAL); + add_sym_2s ("hostnm", 0, 1, BT_UNKNOWN, 0, GFC_STD_GNU, + gfc_check_hostnm_sub, NULL, gfc_resolve_hostnm_sub, + c, BT_CHARACTER, dc, REQUIRED, st, BT_INTEGER, di, OPTIONAL); + + add_sym_3s ("kill", 0, 1, BT_UNKNOWN, 0, GFC_STD_GNU, gfc_check_kill_sub, + NULL, gfc_resolve_kill_sub, c, BT_INTEGER, di, REQUIRED, + val, BT_INTEGER, di, REQUIRED, st, BT_INTEGER, di, OPTIONAL); + + add_sym_3s ("link", 0, 1, BT_UNKNOWN, 0, GFC_STD_GNU, + gfc_check_link_sub, NULL, gfc_resolve_link_sub, + name, BT_CHARACTER, dc, REQUIRED, val, BT_CHARACTER, + dc, REQUIRED, st, BT_INTEGER, di, OPTIONAL); + + add_sym_1s ("perror", 0, 1, BT_UNKNOWN, 0, GFC_STD_GNU, + gfc_check_perror, NULL, gfc_resolve_perror, + c, BT_CHARACTER, dc, REQUIRED); + + add_sym_3s ("rename", 0, 1, BT_UNKNOWN, 0, GFC_STD_GNU, + gfc_check_rename_sub, NULL, gfc_resolve_rename_sub, + name, BT_CHARACTER, dc, REQUIRED, val, BT_CHARACTER, + dc, REQUIRED, st, BT_INTEGER, di, OPTIONAL); + + add_sym_1s ("sleep", 0, 1, BT_UNKNOWN, 0, GFC_STD_GNU, + gfc_check_sleep_sub, NULL, gfc_resolve_sleep_sub, + val, BT_CHARACTER, dc, REQUIRED); + add_sym_3s ("fstat", 0, 1, BT_UNKNOWN, 0, GFC_STD_GNU, gfc_check_fstat_sub, NULL, gfc_resolve_fstat_sub, ut, BT_INTEGER, di, REQUIRED, vl, BT_INTEGER, di, REQUIRED, @@ -2108,6 +2199,11 @@ add_subroutines (void) name, BT_CHARACTER, dc, REQUIRED, vl, BT_INTEGER, di, REQUIRED, st, BT_INTEGER, di, OPTIONAL); + add_sym_3s ("symlnk", 0, 1, BT_UNKNOWN, 0, GFC_STD_GNU, + gfc_check_symlnk_sub, NULL, gfc_resolve_symlnk_sub, + name, BT_CHARACTER, dc, REQUIRED, val, BT_CHARACTER, + dc, REQUIRED, st, BT_INTEGER, di, OPTIONAL); + add_sym_2s ("system", 0, 1, BT_UNKNOWN, 0, GFC_STD_GNU, NULL, NULL, gfc_resolve_system_sub, c, BT_CHARACTER, dc, REQUIRED, st, BT_INTEGER, di, OPTIONAL); |