diff options
author | lauras <lauras@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-09-04 23:22:34 +0000 |
---|---|---|
committer | lauras <lauras@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-09-04 23:22:34 +0000 |
commit | 15fefecd906c4e534366f28c04efe007d5adf5c1 (patch) | |
tree | f14bb40e1427d4221e9bb14bfbcfa2861a7d1379 | |
parent | 4fd7cc4576a65583ee34619d4bc3e7f4a8e78813 (diff) | |
download | gcc-15fefecd906c4e534366f28c04efe007d5adf5c1.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128105 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/Makefile.in | 3 | ||||
-rw-r--r-- | gcc/c-format.c | 25 |
3 files changed, 21 insertions, 16 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f06ccc5080d..8a2dd2263ca 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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): diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 1979b72e6d0..1846b8e6baf 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -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) \ diff --git a/gcc/c-format.c b/gcc/c-format.c index a4965418d53..25cf859a161 100644 --- a/gcc/c-format.c +++ b/gcc/c-format.c @@ -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" /* 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; - } - } } } |