aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/intrinsic.c
diff options
context:
space:
mode:
authorFrancois-Xavier Coudert <coudert@clipper.ens.fr>2005-10-30 13:17:48 +0100
committerFrançois-Xavier Coudert <fxcoudert@gcc.gnu.org>2005-10-30 12:17:48 +0000
commit0d519038a0354f983534037fd9a7d460421e4fd0 (patch)
tree74008967faaa4d2ec3fb686ef0f09df588ecbd88 /gcc/fortran/intrinsic.c
parentcf6ae9554d33bc2afe113135a0f34d5022bb1972 (diff)
downloadgcc-0d519038a0354f983534037fd9a7d460421e4fd0.zip
gcc-0d519038a0354f983534037fd9a7d460421e4fd0.tar.gz
gcc-0d519038a0354f983534037fd9a7d460421e4fd0.tar.bz2
check.c (gfc_check_malloc, [...]): New functions.
* check.c (gfc_check_malloc, gfc_check_free): New functions. * gfortran.h (gfc_generic_isym_id): Add GFC_ISYM_MALLOC. * intrinsic.c (add_functions): Add symbols for MALLOC function. (add_subroutines): Add symbol for FREE subroutine. * intrinsic.h: Prototypes for gfc_check_malloc, gfc_check_free, gfc_resolve_malloc and gfc_resolve_free. * intrinsic.texi: Add doc for FREE and MALLOC intrinsics. * iresolve.c (gfc_resolve_malloc, gfc_resolve_free): New functions. * trans-intrinsic.c (gfc_conv_intrinsic_function): Add case for GFC_ISYM_MALLOC. * Makefile.am: Add intrinsics/malloc.c file. * Makefile.in: Regenerate. * intrinsics/malloc.c: New file, with implementations for free and malloc library functions. * gfortran.dg/malloc_free_1.f90: New test. From-SVN: r106016
Diffstat (limited to 'gcc/fortran/intrinsic.c')
-rw-r--r--gcc/fortran/intrinsic.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c
index d414a05..e96ccbb 100644
--- a/gcc/fortran/intrinsic.c
+++ b/gcc/fortran/intrinsic.c
@@ -1606,6 +1606,11 @@ add_functions (void)
make_generic ("logical", GFC_ISYM_LOGICAL, GFC_STD_F95);
+ add_sym_1 ("malloc", 0, 1, BT_INTEGER, ii, GFC_STD_GNU, gfc_check_malloc,
+ NULL, gfc_resolve_malloc, a, BT_INTEGER, di, REQUIRED);
+
+ make_generic ("malloc", GFC_ISYM_MALLOC, GFC_STD_GNU);
+
add_sym_2 ("matmul", 0, 1, BT_REAL, dr, GFC_STD_F95,
gfc_check_matmul, NULL, gfc_resolve_matmul,
ma, BT_REAL, dr, REQUIRED, mb, BT_REAL, dr, REQUIRED);
@@ -2131,12 +2136,13 @@ add_subroutines (void)
*trim_name = "trim_name", *ut = "unit", *han = "handler",
*sec = "seconds";
- int di, dr, dc, dl;
+ int di, dr, dc, dl, ii;
di = gfc_default_integer_kind;
dr = gfc_default_real_kind;
dc = gfc_default_character_kind;
dl = gfc_default_logical_kind;
+ ii = gfc_index_integer_kind;
add_sym_0s ("abort", 1, GFC_STD_GNU, NULL);
@@ -2244,6 +2250,9 @@ add_subroutines (void)
gfc_check_flush, NULL, gfc_resolve_flush,
c, BT_INTEGER, di, OPTIONAL);
+ add_sym_1s ("free", 0, 1, BT_UNKNOWN, 0, GFC_STD_GNU, gfc_check_free,
+ NULL, gfc_resolve_free, c, BT_INTEGER, ii, REQUIRED);
+
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);