summaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authorjb <jb@138bc75d-0d04-0410-961f-82ee72b054a4>2007-07-03 16:50:05 +0000
committerjb <jb@138bc75d-0d04-0410-961f-82ee72b054a4>2007-07-03 16:50:05 +0000
commitf66be06b01f231e3309cb6a7fb3b88bd3a6aad00 (patch)
tree030df243de19137f076b9781c368c93c9546558d /libgfortran
parentd2b0211b56e5be863a5123d23fca3072f1b6c643 (diff)
downloadgcc-f66be06b01f231e3309cb6a7fb3b88bd3a6aad00.tar.gz
Fortran frontend:
2007-07-03 Janne Blomqvist <jb@gcc.gnu.org> * trans-decl.c (gfc_build_builtin_function_decls): Mark internal_realloc as a malloc function. libgfortran: 2007-07-03 Janne Blomqvist <jb@gcc.gnu.org> * libgfortran.h: Mark internal_malloc_size as a malloc function. * runtime/memory.c (internal_realloc_size): Remove. (internal_realloc): Call realloc directly instead of internal_realloc_size. (allocate_size): Remove. (allocate): Call malloc directly instead of allocate_size, mark as malloc function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@126264 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog10
-rw-r--r--libgfortran/libgfortran.h2
-rw-r--r--libgfortran/runtime/memory.c74
3 files changed, 39 insertions, 47 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index dc0e2468ef9..631e2a5da64 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,13 @@
+2007-07-03 Janne Blomqvist <jb@gcc.gnu.org>
+
+ * libgfortran.h: Mark internal_malloc_size as a malloc function.
+ * runtime/memory.c (internal_realloc_size): Remove.
+ (internal_realloc): Call realloc directly instead of
+ internal_realloc_size.
+ (allocate_size): Remove.
+ (allocate): Call malloc directly instead of allocate_size, mark as
+ malloc function.
+
2007-07-02 Steven G. Kargl <kargl@gcc.gnu.org>
Restore collateral damage from ISO C Binding merge.
diff --git a/libgfortran/libgfortran.h b/libgfortran/libgfortran.h
index f73594dc4d7..8a86f41785d 100644
--- a/libgfortran/libgfortran.h
+++ b/libgfortran/libgfortran.h
@@ -634,7 +634,7 @@ internal_proto(get_mem);
extern void free_mem (void *);
internal_proto(free_mem);
-extern void *internal_malloc_size (size_t);
+extern void *internal_malloc_size (size_t) __attribute__ ((malloc));
internal_proto(internal_malloc_size);
/* environ.c */
diff --git a/libgfortran/runtime/memory.c b/libgfortran/runtime/memory.c
index 7d893716978..f1991cda324 100644
--- a/libgfortran/runtime/memory.c
+++ b/libgfortran/runtime/memory.c
@@ -82,26 +82,6 @@ internal_malloc_size (size_t size)
Allocate a new block if MEM is zero, and free the block if
SIZE is 0. */
-static void *
-internal_realloc_size (void *mem, size_t size)
-{
- if (size == 0)
- {
- if (mem)
- free (mem);
- return NULL;
- }
-
- if (mem == 0)
- return get_mem (size);
-
- mem = realloc (mem, size);
- if (!mem)
- os_error ("Out of memory.");
-
- return mem;
-}
-
extern void *internal_realloc (void *, index_type);
export_proto(internal_realloc);
@@ -113,41 +93,28 @@ internal_realloc (void *mem, index_type size)
if (size < 0)
runtime_error ("Attempt to allocate a negative amount of memory.");
#endif
- return internal_realloc_size (mem, (size_t) size);
+ mem = realloc (mem, size);
+ if (!mem && size != 0)
+ os_error ("Out of memory.");
+
+ if (size == 0)
+ return NULL;
+
+ return mem;
}
+
/* User-allocate, one call for each member of the alloc-list of an
ALLOCATE statement. */
-static void *
-allocate_size (size_t size, GFC_INTEGER_4 * stat)
-{
- void *newmem;
-
- newmem = malloc (size ? size : 1);
- if (!newmem)
- {
- if (stat)
- {
- *stat = ERROR_ALLOCATION;
- return newmem;
- }
- else
- runtime_error ("ALLOCATE: Out of memory.");
- }
-
- if (stat)
- *stat = 0;
-
- return newmem;
-}
-
-extern void *allocate (index_type, GFC_INTEGER_4 *);
+extern void *allocate (index_type, GFC_INTEGER_4 *) __attribute__ ((malloc));
export_proto(allocate);
void *
allocate (index_type size, GFC_INTEGER_4 * stat)
{
+ void *newmem;
+
#ifdef GFC_CHECK_MEMORY
/* The only time this can happen is the size computed by the
frontend wraps around. */
@@ -163,7 +130,22 @@ allocate (index_type size, GFC_INTEGER_4 * stat)
"Possible integer overflow");
}
#endif
- return allocate_size ((size_t) size, stat);
+ newmem = malloc (size ? size : 1);
+ if (!newmem)
+ {
+ if (stat)
+ {
+ *stat = ERROR_ALLOCATION;
+ return newmem;
+ }
+ else
+ runtime_error ("ALLOCATE: Out of memory.");
+ }
+
+ if (stat)
+ *stat = 0;
+
+ return newmem;
}
/* Function to call in an ALLOCATE statement when the argument is an