OSDN Git Service

Fortran frontend:
authorjb <jb@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 3 Jul 2007 16:50:05 +0000 (16:50 +0000)
committerjb <jb@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 3 Jul 2007 16:50:05 +0000 (16:50 +0000)
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

gcc/fortran/ChangeLog
gcc/fortran/trans-decl.c
libgfortran/ChangeLog
libgfortran/libgfortran.h
libgfortran/runtime/memory.c

index 80f1e3c..1ee1862 100644 (file)
@@ -1,3 +1,8 @@
+2007-07-03  Janne Blomqvist  <jb@gcc.gnu.org>
+
+       * trans-decl.c (gfc_build_builtin_function_decls): Mark
+       internal_realloc as a malloc function.
+
 2007-07-03  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/20888
index 1a94982..06842f3 100644 (file)
@@ -2276,6 +2276,7 @@ gfc_build_builtin_function_decls (void)
                                     (PREFIX("internal_realloc")),
                                     pvoid_type_node, 2, pvoid_type_node,
                                     gfc_index_int_type_node);
+  DECL_IS_MALLOC (gfor_fndecl_internal_realloc) = 1;
 
   gfor_fndecl_allocate =
     gfc_build_library_function_decl (get_identifier (PREFIX("allocate")),
index dc0e246..631e2a5 100644 (file)
@@ -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.
index f73594d..8a86f41 100644 (file)
@@ -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 */
index 7d89371..f1991cd 100644 (file)
@@ -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