diff options
author | Laurynas Biveinis <laurynas.biveinis@gmail.com> | 2007-07-23 16:15:23 +0000 |
---|---|---|
committer | Laurynas Biveinis <laurynas.biveinis@gmail.com> | 2007-07-23 16:15:23 +0000 |
commit | 47e81efb192b9fb7e8bdbe3df202cb11f673da62 (patch) | |
tree | 9728bb049d15f9aaf4b33709bc91fc139ca839b2 | |
parent | 015991bcba9fe54f589334f2626da8714502fc9c (diff) |
Allocate format_wanted_type variables in obstack instead of GC
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/boehms-gc@126850 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/Makefile.in | 3 | ||||
-rw-r--r-- | gcc/c-format.c | 14 |
2 files changed, 12 insertions, 5 deletions
diff --git a/gcc/Makefile.in b/gcc/Makefile.in index e3adc7a53bd..aeadb1c97dc 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -1677,7 +1677,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) c-format.h \ + $(OBSTACK_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 403724e5e11..c0397103e8f 100644 --- a/gcc/c-format.c +++ b/gcc/c-format.c @@ -31,6 +31,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "diagnostic.h" #include "langhooks.h" #include "c-format.h" +#include "obstack.h" /* Set format warning options according to a -Wformat=n option. */ @@ -811,7 +812,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, struct obstack *); static void init_dollar_format_checking (int, tree); static int maybe_read_dollar_number (const char **, int, @@ -1281,6 +1282,8 @@ check_format_arg (void *ctx, tree format_tree, tree array_size = 0; tree array_init; + struct obstack fwt_obstack; + if (integer_zerop (format_tree)) { /* Skip to first argument to check, so we can see if this format @@ -1414,8 +1417,10 @@ 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++; + gcc_obstack_init (&fwt_obstack); check_format_info_main (res, info, format_chars, format_length, - params, arg_num); + params, arg_num, &fwt_obstack); + obstack_free (&fwt_obstack, NULL); } @@ -1430,7 +1435,8 @@ 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, + struct obstack *fwt_obstack) { const char *orig_format_chars = format_chars; tree first_fillin_param = params; @@ -2077,7 +2083,7 @@ 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 *)obstack_alloc (fwt_obstack, sizeof(format_wanted_type)); arg_num++; wanted_type = *fci->types[length_chars_val].type; wanted_type_name = fci->types[length_chars_val].name; |