diff options
author | Steven G. Kargl <kargls@comcast.net> | 2004-11-20 01:44:49 +0000 |
---|---|---|
committer | Steven Bosscher <steven@gcc.gnu.org> | 2004-11-20 01:44:49 +0000 |
commit | d8fe26b2cd7073e13d2a4c8bc0d4f4d310050ce1 (patch) | |
tree | b1ef78f610bfdcc13867c75b1e08219b8aa591c5 /gcc/fortran/check.c | |
parent | 449ecb09b3677aa1d7225862dcc53e6f27b0bad0 (diff) | |
download | gcc-d8fe26b2cd7073e13d2a4c8bc0d4f4d310050ce1.zip gcc-d8fe26b2cd7073e13d2a4c8bc0d4f4d310050ce1.tar.gz gcc-d8fe26b2cd7073e13d2a4c8bc0d4f4d310050ce1.tar.bz2 |
check.c (gfc_check_getcwd_sub): Fix seg fault.
* check.c (gfc_check_getcwd_sub): Fix seg fault.
* check.c (gfc_check_exit,gfc_check_umask,gfc_check_umask_sub,
gfc_check_unlink,gfc_check_unlink_sub): New functions
* gfortran.h (GFC_ISYM_UMASK,GFC_ISYM_UNLINK): New symbols
* intrinsic.c (add_functions,add_subroutines): Add umask, unlink,
exit to intrinsics symbol tables.
* intrinsic.h (gfc_check_umask,gfc_check_unlink,gfc_check_exit,
gfc_check_umask_sub,gfc_check_unlink_sub,gfc_resolve_umask,
gfc_resolve_unlink,gfc_resolve_exit,gfc_resolve_umask_sub,
gfc_resolve_unlink_sub): Add and sort prototypes.
* iresolve.c (gfc_resolve_umask,gfc_resolve_unlink,gfc_resolve_exit,
gfc_resolve_umask_sub,gfc_resolve_unlink_sub): New functions
* trans-intrinsic.c (gfc_conv_intrinsic_function): Use symbols
libgfortran/
* Makefile.am: Add intrinsics/{umask.c,unlink.c,exit.c}
* Makefile.in: Regenerated
* intrinsics/umask.c: New file
* intrinsics/unlink.c: ditto
* intrinsics/exit.c: ditto
From-SVN: r90949
Diffstat (limited to 'gcc/fortran/check.c')
-rw-r--r-- | gcc/fortran/check.c | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index b8ed5e9..3920864 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -2108,6 +2108,94 @@ gfc_check_getcwd_sub (gfc_expr * cwd, gfc_expr * status) if (type_check (cwd, 0, BT_CHARACTER) == FAILURE) return FAILURE; + if (status == NULL) + return SUCCESS; + + if (scalar_check (status, 1) == FAILURE) + return FAILURE; + + if (type_check (status, 1, BT_INTEGER) == FAILURE) + return FAILURE; + + return SUCCESS; +} + + +try +gfc_check_exit (gfc_expr * status) +{ + + if (status == NULL) + return SUCCESS; + + if (type_check (status, 0, BT_INTEGER) == FAILURE) + return FAILURE; + + if (scalar_check (status, 0) == FAILURE) + return FAILURE; + + return SUCCESS; +} + + +try +gfc_check_umask (gfc_expr * mask) +{ + + if (type_check (mask, 0, BT_INTEGER) == FAILURE) + return FAILURE; + + if (scalar_check (mask, 0) == FAILURE) + return FAILURE; + + return SUCCESS; +} + + +try +gfc_check_umask_sub (gfc_expr * mask, gfc_expr * old) +{ + + if (type_check (mask, 0, BT_INTEGER) == FAILURE) + return FAILURE; + + if (scalar_check (mask, 0) == FAILURE) + return FAILURE; + + if (old == NULL) + return SUCCESS; + + if (scalar_check (old, 1) == FAILURE) + return FAILURE; + + if (type_check (old, 1, BT_INTEGER) == FAILURE) + return FAILURE; + + return SUCCESS; +} + + +try +gfc_check_unlink (gfc_expr * name) +{ + + if (type_check (name, 0, BT_CHARACTER) == FAILURE) + return FAILURE; + + return SUCCESS; +} + + +try +gfc_check_unlink_sub (gfc_expr * name, gfc_expr * status) +{ + + if (type_check (name, 0, BT_CHARACTER) == FAILURE) + return FAILURE; + + if (status == NULL) + return SUCCESS; + if (scalar_check (status, 1) == FAILURE) return FAILURE; |