OSDN Git Service

2007-09-04 Laurynas Biveinis <laurynas.biveinis@gmail.com>
authorlauras <lauras@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 4 Sep 2007 23:22:34 +0000 (23:22 +0000)
committerlauras <lauras@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 4 Sep 2007 23:22:34 +0000 (23:22 +0000)
* c-format.c: Include alloc-pool.h.
(check_format_info_main): New argument fwt_alloc.  Use allocation
pool instead of GC.  Remove GC deallocation code.
(check_format_arg): Create allocation pool, pass it to
check_format_info_main and free it afterwards.
* Makefile.in (c-format.o): Add alloc-pool.h dependency.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128105 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/Makefile.in
gcc/c-format.c

index f06ccc5..8a2dd22 100644 (file)
@@ -1,3 +1,12 @@
+2007-09-04  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
+
+       * c-format.c: Include alloc-pool.h.
+       (check_format_info_main): New argument fwt_alloc.  Use allocation
+       pool instead of GC.  Remove GC deallocation code.
+       (check_format_arg): Create allocation pool, pass it to
+       check_format_info_main and free it afterwards.
+       * Makefile.in (c-format.o): Add alloc-pool.h dependency.
+
 2007-09-05  Ben Elliston  <bje@au.ibm.com>
 
        * config/rs6000/ppu_intrinsics.h (__protected_stream_count):
index 1979b72..1846b8e 100644 (file)
@@ -1810,7 +1810,8 @@ attribs.o : attribs.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
        $(TARGET_H) langhooks.h $(CPPLIB_H)
 
 c-format.o : c-format.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) langhooks.h \
-       $(C_COMMON_H) $(FLAGS_H) toplev.h intl.h $(DIAGNOSTIC_H) c-format.h
+       $(C_COMMON_H) $(FLAGS_H) toplev.h intl.h $(DIAGNOSTIC_H) alloc-pool.h \
+       c-format.h
 
 c-semantics.o : c-semantics.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
        $(TREE_H) $(FLAGS_H) toplev.h output.h $(RTL_H) $(GGC_H) \
index a496541..25cf859 100644 (file)
@@ -30,6 +30,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "diagnostic.h"
 #include "langhooks.h"
 #include "c-format.h"
+#include "alloc-pool.h"
 \f
 /* Set format warning options according to a -Wformat=n option.  */
 
@@ -821,7 +822,7 @@ static void check_format_arg (void *, tree, unsigned HOST_WIDE_INT);
 static void check_format_info_main (format_check_results *,
                                    function_format_info *,
                                    const char *, int, tree,
-                                   unsigned HOST_WIDE_INT);
+                                    unsigned HOST_WIDE_INT, alloc_pool);
 
 static void init_dollar_format_checking (int, tree);
 static int maybe_read_dollar_number (const char **, int,
@@ -1300,6 +1301,7 @@ check_format_arg (void *ctx, tree format_tree,
   const char *format_chars;
   tree array_size = 0;
   tree array_init;
+  alloc_pool fwt_pool;
 
   if (integer_zerop (format_tree))
     {
@@ -1424,8 +1426,11 @@ check_format_arg (void *ctx, tree format_tree,
      will decrement it if it finds there are extra arguments, but this way
      need not adjust it for every return.  */
   res->number_other++;
+  fwt_pool = create_alloc_pool ("format_wanted_type pool",
+                                sizeof (format_wanted_type), 10);
   check_format_info_main (res, info, format_chars, format_length,
-                         params, arg_num);
+                          params, arg_num, fwt_pool);
+  free_alloc_pool (fwt_pool);
 }
 
 
@@ -1440,7 +1445,7 @@ static void
 check_format_info_main (format_check_results *res,
                        function_format_info *info, const char *format_chars,
                        int format_length, tree params,
-                       unsigned HOST_WIDE_INT arg_num)
+                        unsigned HOST_WIDE_INT arg_num, alloc_pool fwt_pool)
 {
   const char *orig_format_chars = format_chars;
   tree first_fillin_param = params;
@@ -2087,7 +2092,8 @@ check_format_info_main (format_check_results *res,
              fci = fci->chain;
              if (fci)
                {
-                 wanted_type_ptr = GGC_NEW (format_wanted_type);
+                  wanted_type_ptr = (format_wanted_type *)
+                      pool_alloc (fwt_pool);
                  arg_num++;
                  wanted_type = *fci->types[length_chars_val].type;
                  wanted_type_name = fci->types[length_chars_val].name;
@@ -2098,17 +2104,6 @@ check_format_info_main (format_check_results *res,
       if (first_wanted_type != 0)
        check_format_types (first_wanted_type, format_start,
                            format_chars - format_start);
-
-      if (main_wanted_type.next != NULL)
-       {
-         format_wanted_type *wanted_type_ptr = main_wanted_type.next;
-         while (wanted_type_ptr)
-           {
-             format_wanted_type *next = wanted_type_ptr->next;
-             ggc_free (wanted_type_ptr);
-             wanted_type_ptr = next;
-           }
-       }
     }
 }