aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/intrinsics/malloc.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 /libgfortran/intrinsics/malloc.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 'libgfortran/intrinsics/malloc.c')
-rw-r--r--libgfortran/intrinsics/malloc.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/libgfortran/intrinsics/malloc.c b/libgfortran/intrinsics/malloc.c
new file mode 100644
index 0000000..2f53d99
--- /dev/null
+++ b/libgfortran/intrinsics/malloc.c
@@ -0,0 +1,55 @@
+/* Implementation of the MALLOC and FREE intrinsics
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ Contributed by François-Xavier Coudert <coudert@clipper.ens.fr>
+
+This file is part of the GNU Fortran 95 runtime library (libgfortran).
+
+Libgfortran is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file into combinations with other programs,
+and to distribute those combinations without any restriction coming
+from the use of this file. (The General Public License restrictions
+do apply in other respects; for example, they cover modification of
+the file, and distribution when not linked into a combine
+executable.)
+
+Libgfortran is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public
+License along with libgfortran; see the file COPYING. If not,
+write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA. */
+
+#include "config.h"
+#include "libgfortran.h"
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+extern void PREFIX(free) (void **);
+export_proto_np(PREFIX(free));
+
+void
+PREFIX(free) (void ** ptr)
+{
+ free (*ptr);
+}
+
+
+extern void * PREFIX(malloc) (size_t *);
+export_proto_np(PREFIX(malloc));
+
+void *
+PREFIX(malloc) (size_t * size)
+{
+ return malloc (*size);
+}