aboutsummaryrefslogtreecommitdiff
path: root/gcc/stringpool.c
diff options
context:
space:
mode:
authorZack Weinberg <zack@gcc.gnu.org>2000-11-17 17:31:13 +0000
committerZack Weinberg <zack@gcc.gnu.org>2000-11-17 17:31:13 +0000
commita8a05998deca5cf6fac99e9a9b6e8343ea3c1b3f (patch)
tree28ab3f3c8eaffc74f74093a91fbefd178d3d02b5 /gcc/stringpool.c
parent9e7d5ee8095d41ef744b875de504a22b46f33fb8 (diff)
downloadgcc-a8a05998deca5cf6fac99e9a9b6e8343ea3c1b3f.zip
gcc-a8a05998deca5cf6fac99e9a9b6e8343ea3c1b3f.tar.gz
gcc-a8a05998deca5cf6fac99e9a9b6e8343ea3c1b3f.tar.bz2
ggc.h: Delete ggc_add_string_root and ggc_mark_string.
* ggc.h: Delete ggc_add_string_root and ggc_mark_string. Add digit_vector and digit_string. * stringpool.c (digit_vector): New. (ggc_alloc_string): Use digit_string. * stmt.c (digit_strings): Delete. (init_stmt): Do not initialize digit_strings. (expand_asm_operands): Use ggc.h's digit_string macro. * toplev.c (mark_file_stack): Delete. (compile_file): Don't call init_tree_codes. (main): No need to make the file stack a GC root. * tree.c (init_tree_codes): Delete. * tree.h (init_tree_codes): Delete. * c-lex.c: Don't include ggc.h. (mark_splay_tree_node, mark_splay_tree): Delete. (init_c_lex): No need to ggc_strdup string constant. Don't add file_info_tree to GGC roots. (cb_enter_file, cb_rename_file): No need to ggc_strdup ip->nominal_fname. * Makefile.in (c-lex.o): No longer depends on $(GGC_H). * dbxout.c (dbxout_init), dwarf2out.c (dwarf2out_line), ggc-common.c (ggc_mark_rtx_children, ggc_mark_trees), varasm.c (mark_const_hash_entry, mark_pool_constant, init_varasm_once), xcoffout.c (xcoffout_source_file), i386.c (load_pic_register): Delete call(s) to ggc_add_string_root and/or ggc_mark_string. * except.c (create_rethrow_ref), profile.c (init_edge_profiler), toplev.c (compile_file), varasm.c (named_section, assemble_static_space, assemble_trampoline_template, output_constant_def, force_const_mem), i386.c (load_pic_register), ia64.c (ia64_encode_section_info), rs6000.c (rs6000_emit_load_toc_table, create_TOC_reference, rs6000_emit_prologue, rs6000_emit_epilogue), rs6000.md (load_toc_aix_si, load_toc_aix_di): Change ggc_alloc_string (var, -1) to ggc_strdup (var). * profile.c (output_func_start_profiler), tree.c (make_node), i386.c (load_pic_register): No need to ggc_strdup string constant. cp: * lex.c (mark_impl_file_chain): Delete. (init_parse): Remove call to ggc_add_string_root. No need to ggc_strdup a string constant. Do not add impl_file_chain to GC roots. (handle_pragma_implementation): No need to ggc_strdup main_filename. f: * lex.c (ffelex_hash_): Change ggc_alloc_string (var, -1) to ggc_strdup (var). java: * parse.y (goal): Remove call to ggc_add_string_root. From-SVN: r37522
Diffstat (limited to 'gcc/stringpool.c')
-rw-r--r--gcc/stringpool.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/stringpool.c b/gcc/stringpool.c
index 32381e0..20db021 100644
--- a/gcc/stringpool.c
+++ b/gcc/stringpool.c
@@ -40,6 +40,13 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
/* The "" allocated string. */
const char empty_string[] = "";
+/* Character strings, each containing a single decimal digit.
+ Written this way to save space. */
+const char digit_vector[] = {
+ '0', 0, '1', 0, '2', 0, '3', 0, '4', 0,
+ '5', 0, '6', 0, '7', 0, '8', 0, '9', 0
+};
+
static struct obstack string_stack;
/* This is the hash entry associated with each string. It lives in
@@ -262,6 +269,8 @@ ggc_alloc_string (contents, length)
if (length == 0)
return empty_string;
+ if (length == 1 && contents[0] >= '0' && contents[0] <= '9')
+ return digit_string (contents[0] - '0');
str = alloc_string (contents, length, INSERT);
return str->ptr;