ggc.h: Delete ggc_add_string_root and ggc_mark_string.
authorZack Weinberg <zack@gcc.gnu.org>
Fri, 17 Nov 2000 17:31:13 +0000 (17:31 +0000)
committerZack Weinberg <zack@gcc.gnu.org>
Fri, 17 Nov 2000 17:31:13 +0000 (17:31 +0000)
        * 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

26 files changed:
gcc/ChangeLog
gcc/Makefile.in
gcc/c-lex.c
gcc/config/i386/i386.c
gcc/config/ia64/ia64.c
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.md
gcc/cp/ChangeLog
gcc/cp/lex.c
gcc/dbxout.c
gcc/dwarf2out.c
gcc/except.c
gcc/f/ChangeLog
gcc/f/lex.c
gcc/ggc-common.c
gcc/ggc.h
gcc/java/ChangeLog
gcc/java/parse.y
gcc/profile.c
gcc/stmt.c
gcc/stringpool.c
gcc/toplev.c
gcc/tree.c
gcc/tree.h
gcc/varasm.c
gcc/xcoffout.c

index c34307671c47774fec4d09ac6bcf9b9f50e59d0b..bddf1ec4bcf597ae93c4a1c977af6ef15d7ec981 100644 (file)
@@ -1,3 +1,52 @@
+2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>
+
+       * 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.
+
 2000-11-17  Hans-Peter Nilsson  <hp@axis.com>
 
        * Makefile.in (config.status): Depend on config.gcc.
 
 2000-11-15  Neil Booth  <neilb@earthling.net>
 
-        * cpplib.c (start_directive, end_directive): New functions.
-        (_cpp_handle_directive, run_directive): Use them.
-        (_cpp_handle_directive): Don't -Wtraditional on indented
-        null directives.
-        (_cpp_push_buffer): Don't re-clear was_skipping.
-        * cpplib.h (struct cpp_reader): New member la_saved.
-        * cppmacro.c (cpp_get_token): Don't interpret _Pragma in
-        directives.
+       * cpplib.c (start_directive, end_directive): New functions.
+       (_cpp_handle_directive, run_directive): Use them.
+       (_cpp_handle_directive): Don't -Wtraditional on indented
+       null directives.
+       (_cpp_push_buffer): Don't re-clear was_skipping.
+       * cpplib.h (struct cpp_reader): New member la_saved.
+       * cppmacro.c (cpp_get_token): Don't interpret _Pragma in
+       directives.
 
-        gcc.dg/cpp/_Pragma1.c: Update.
-        gcc.dg/cpp/_Pragma2.c: New test.
+       gcc.dg/cpp/_Pragma1.c: Update.
+       gcc.dg/cpp/_Pragma2.c: New test.
 
 2000-11-15  Mark Mitchell  <mark@codesourcery.com>
 
        * configure.in: Move check for V3 above check for C++ header-file
        directory.
        * configure: Regenerated.
-       
+
 2000-11-14  DJ Delorie  <dj@redhat.com>
 
        * config/v850/v850.c: Remove obstacks.
@@ -471,7 +520,7 @@ Tue Nov 14 12:34:56 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
        * configure.in: Turn on libstdc++ V3 by default.
        * configure: Regenerated.
-       
+
        * fixinc/mkfixinc.sh: Use the ordinary fixincludes on Solaris.
 
 2000-11-12  Jakub Jelinek  <jakub@redhat.com>
@@ -488,7 +537,7 @@ Tue Nov 14 12:34:56 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
        of #include headers.
 
 2000-11-12  Marc Espie <espie@openbsd.org>
-       
+
        * configure.in: Fix filds test.
        * configure: Regen.
 
@@ -499,32 +548,32 @@ Tue Nov 14 12:34:56 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
 2000-11-12  Neil Booth  <neilb@earthling.net>
 
-        * cppexp.c: Don't worry about pfile->skipping.
-        * cpplib.c (struct if_stack): Make was_skipping unsigned char.
-        (cpp_handle_directive): Save pfile->skipping in struct cpp_buffer
-        for handled directives.
-        (skip_rest_of_line): Use _cpp_lex_token after popping contexts
-        and releasing lookaheads.
-        (do_ifdef, do_ifndef, do_if): Use buffer->was_skipping.
-        (do_else, do_elif, push_conditional): Update logic.
-        (do_endif): Set buffer->was_skipping rather than pfile->skipping.
-        (unwind_if_stack): Inline into cpp_pop_buffer.
-        (cpp_push_buffer): Clear ifs->was_skipping for cpp_handle_directive.
-        * cpplex.c (_cpp_lex_token): Clear skipping on EOF.  Handle
-        multiple-include optimisation.
-        * cpplib.h (struct cpp_buffer): New member was_skipping.
-        * cppmacro.c (_cpp_get_token): Loop whilst pfile->skipping.  This
-        works because skipping == 0 in directives.
-        (_cpp_release_lookahead): Renamed from release_lookahead.
-        (cpp_get_token): No need to check skipping as _cpp_get_token does
-        this for us.  No need to handle MI optimisation.
+       * cppexp.c: Don't worry about pfile->skipping.
+       * cpplib.c (struct if_stack): Make was_skipping unsigned char.
+       (cpp_handle_directive): Save pfile->skipping in struct cpp_buffer
+       for handled directives.
+       (skip_rest_of_line): Use _cpp_lex_token after popping contexts
+       and releasing lookaheads.
+       (do_ifdef, do_ifndef, do_if): Use buffer->was_skipping.
+       (do_else, do_elif, push_conditional): Update logic.
+       (do_endif): Set buffer->was_skipping rather than pfile->skipping.
+       (unwind_if_stack): Inline into cpp_pop_buffer.
+       (cpp_push_buffer): Clear ifs->was_skipping for cpp_handle_directive.
+       * cpplex.c (_cpp_lex_token): Clear skipping on EOF.  Handle
+       multiple-include optimisation.
+       * cpplib.h (struct cpp_buffer): New member was_skipping.
+       * cppmacro.c (_cpp_get_token): Loop whilst pfile->skipping.  This
+       works because skipping == 0 in directives.
+       (_cpp_release_lookahead): Renamed from release_lookahead.
+       (cpp_get_token): No need to check skipping as _cpp_get_token does
+       this for us.  No need to handle MI optimisation.
 
 Sat Nov 11 21:14:02 2000  Mark P Mitchell  <mark@codesourcery.com>
 
        * fixinc/inclhack.def (sunos_matherr_decl): Bypass matherr
        declarations that use `__MATH_EXCEPTION' in their prototypes, too.
        * fixinc/fixincl.x: Regenerated.
-       
+
 2000-11-11  Bruce Korb  <bkorb@gnu.org>
 
        * fixinc/inclhack.def (avoid_bool_type): avoid commenting out #endif
@@ -543,7 +592,7 @@ Sat Nov 11 18:41:20 2000  Mark P Mitchell  <mark@codesourcery.com>
 
 2000-11-11  Jason Merrill  <jason@redhat.com>
 
-       * function.c (assign_parms): If TREE_ADDRESSABLE is set, try to 
+       * function.c (assign_parms): If TREE_ADDRESSABLE is set, try to
        give the parm a register and then call put_var_into_stack.
        * stmt.c (expand_decl): Likewise.
 
@@ -567,7 +616,7 @@ Sat Nov 11 18:41:20 2000  Mark P Mitchell  <mark@codesourcery.com>
        * cppexp.c (lex): Don't handle CPP_PLACEMARKER.
        * cpplex.c (_cpp_lex_token): Rename skip_newlines to next_bol
        * cpplib.c (skip_rest_of_line, check_eol, cpp_push_buffer):
-                  Similarly.
+                  Similarly.
        * cpplib.h: Remove CPP_PLACEMARKER.
        (struct lexer_state): Rename skip_newlines to next_bol.
        * cppmacro.c (stringify_arg): Don't handle CPP_PLACEMARKER.
@@ -669,15 +718,15 @@ Sat Nov 11 18:41:20 2000  Mark P Mitchell  <mark@codesourcery.com>
        * config/ia64/ia64.md (extendsfdf2, extendsftf2, extenddftf2): Emit
        a no-op move if regs are equal.
        * toplev.c (rest_of_compilation): Do the noop moves elimination pass
-       when calling jump after post-reload splitting. 
+       when calling jump after post-reload splitting.
 
 2000-11-09  Jan van Male  <jan.vanmale@fenk.wau.nl>
 
-        * c-tree.texi: Fix typos.
-        * extend.texi: Likewise
-        * gcov.texi: Likewise
-        * rtl.texi: Likewise
-        * tm.texi: Likewise
+       * c-tree.texi: Fix typos.
+       * extend.texi: Likewise
+       * gcov.texi: Likewise
+       * rtl.texi: Likewise
+       * tm.texi: Likewise
 
 2000-11-09  Hans-Peter Nilsson  <hp@axis.com>
 
@@ -708,12 +757,12 @@ Sat Nov 11 18:41:20 2000  Mark P Mitchell  <mark@codesourcery.com>
        * c-common.c (flag_dump_translation_unit): Define it.
        (strip_array_types): New function.
        * c-decl.c (c_decode_option): Handle -fdump-translation-unit.
-       * c-lang.c (finish_file): Call dump_node_to_file if 
+       * c-lang.c (finish_file): Call dump_node_to_file if
        flag_dump_translation_unit.
        * c-semantics.c (mark_rtl_for_local_static): Fix typo in comment.
        * c-tree.h (DECL_C_BIT_FIELD): Remove declaration.
        * c-dump.c: New file.
-       
+
 2000-11-09  Christopher Faylor <cgf@cygnus.com>
 
        * config/i386/cygwin.h: Add mingw startfile prefix.
@@ -774,7 +823,7 @@ Sat Nov 11 18:41:20 2000  Mark P Mitchell  <mark@codesourcery.com>
 
 2000-11-09  Graham Stott  <grahams@redhat.com>
 
-        * config/i386/i386.md (mmx_pinsrw): Output operands in correct
+       * config/i386/i386.md (mmx_pinsrw): Output operands in correct
        order for -mintel-syntax.  Remove comment now that the operand
        order has been checked.
        (mmx_pextrw): Likewise.
@@ -846,15 +895,15 @@ Wed Nov  8 21:58:20 2000  Christopher Faylor <cgf@cygnus.com>
 
 2000-11-08  Neil Booth  <neilb@earthling.net>
 
-        Move directive handling into the lexer itself.
-         
-        * cpplex.c (_cpp_lex_token): Handle directives directly.
-        In the case of a directive interrupting a function-like
-        macro invocation, use extra_char since read_ahead is
-        used to store the '#'.  Return a CPP_EOF in this case.
-        * cppmacro.c (parse_arg): No need to handle CPP_DHASH any more.
-        (cpp_get_token): Don't handle directives here.
-        * cpplib.h: Remove CPP_DHASH token type.
+       Move directive handling into the lexer itself.
+
+       * cpplex.c (_cpp_lex_token): Handle directives directly.
+       In the case of a directive interrupting a function-like
+       macro invocation, use extra_char since read_ahead is
+       used to store the '#'.  Return a CPP_EOF in this case.
+       * cppmacro.c (parse_arg): No need to handle CPP_DHASH any more.
+       (cpp_get_token): Don't handle directives here.
+       * cpplib.h: Remove CPP_DHASH token type.
 
 Wed Nov  8 21:53:41 MET 2000  Jan Hubicka  <jh@suse.cz>
 
@@ -885,7 +934,7 @@ Wed Nov  8 21:53:41 MET 2000  Jan Hubicka  <jh@suse.cz>
        passed in multiple non-contiguous locations.
 
 2000-11-08  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
-       
+
        * README.gnat: Remove file.
 
 2000-11-08  Alexandre Oliva  <aoliva@redhat.com>
@@ -922,7 +971,7 @@ Wed Nov  8 21:53:41 MET 2000  Jan Hubicka  <jh@suse.cz>
        * c-lang.c (start_cdtor, finish_cdtor): New functions.
        (finish_file): Use them in building constructor/destructor functions.
 
-       * config/alpha/alpha.h (HAS_INIT_SECTION, LD_INIT_SWITCH, 
+       * config/alpha/alpha.h (HAS_INIT_SECTION, LD_INIT_SWITCH,
        LD_FINI_SWITCH): Move ...
        * config/alpha/osf.h: ... here.
        * config/alpha/alpha-interix.h: Don't undef them.
@@ -1045,7 +1094,7 @@ Mon Nov  6 20:08:13 2000  J"orn Rennecke <amylaar@redhat.com>
 
 2000-11-06  Neil Booth  <neilb@earthling.net>
 
-        * tradcpp.c (special_symbol): Assign an null string rather
+       * tradcpp.c (special_symbol): Assign an null string rather
        than writing to an unallocated buffer.
 
 2000-11-06  Neil Booth  <neilb@earthling.net>
@@ -1105,13 +1154,13 @@ Sat Sep 23 19:10:20 2000  Denis Chertykov  <denisc@overta.ru> & Marek Michalkiew
 
 2000-11-04  Neil Booth  <neilb@earthling.net>
 
-        * cpplex.c (parse_string): Don't allow multiline strings in
-        #include family directives.
+       * cpplex.c (parse_string): Don't allow multiline strings in
+       #include family directives.
 
 2000-11-04  Neil Booth  <neilb@earthling.net>
 
        * cpplib.c (do_line): Only warn pedantically if not reading
-        preprocessed input.
+       preprocessed input.
 
 2000-11-04  Alexandre Oliva  <aoliva@redhat.com>
 
@@ -1228,7 +1277,7 @@ config:
        sparc/sparc.h, sparc/sysv4.h, sparc/vxsim.h, sparc/vxsparc.h,
        v850/rtems.h, vax/netbsd.h, vax/openbsd.h, vax/ultrix.h, vax/vax.h,
        vax/vaxv.h, vax/vms.h, we32k/we32k.h
-       
+
        Replace -A() with -A=, the new assertion syntax.
 
 Thu Nov  2 21:52:35 2000  J"orn Rennecke <amylaar@redhat.com>
@@ -1266,17 +1315,17 @@ Thu Nov  2 19:20:12 2000  J"orn Rennecke <amylaar@redhat.com>
 
 2000-11-02  Zack Weinberg <zackw@Stanford.EDU>
 
-        Integrated CPP.
-         
-        * c-lex.c (init_c_lex): Update cpp_start_read call.
-        (cb_ident): Update for new callback prototype.
-        (cb_def_pragma): Update for new cpp_get_token prototype.
-        (c_lex): Similarly.  Use cpp_get_line.
-         
-        * c-parse.in (finish_parse): Update for new cpp_finish
-        prototype.
-         
-        * cp/lex.c (finish_parse): Similarly.
+       Integrated CPP.
+
+       * c-lex.c (init_c_lex): Update cpp_start_read call.
+       (cb_ident): Update for new callback prototype.
+       (cb_def_pragma): Update for new cpp_get_token prototype.
+       (c_lex): Similarly.  Use cpp_get_line.
+
+       * c-parse.in (finish_parse): Update for new cpp_finish
+       prototype.
+
+       * cp/lex.c (finish_parse): Similarly.
 
 2000-11-01  Geoff Keating  <geoffk@cygnus.com>
 
@@ -1290,10 +1339,10 @@ Thu Nov  2 19:20:12 2000  J"orn Rennecke <amylaar@redhat.com>
 
 2000-11-01  Neil Booth  <neilb@earthling.net>
 
-        * cpplib.c (run_directive): Use correct line number for output
-        of _Pragma.  Remember any in-progress directive. 
-  
-        * gcc.dg/cpp/vararg2.c, gcc.dg/cpp/_Pragm1.c: New tests.
+       * cpplib.c (run_directive): Use correct line number for output
+       of _Pragma.  Remember any in-progress directive.
+
+       * gcc.dg/cpp/vararg2.c, gcc.dg/cpp/_Pragm1.c: New tests.
 
 2000-11-01  Richard Henderson  <rth@redhat.com>
 
@@ -1313,7 +1362,7 @@ Thu Nov  2 19:20:12 2000  J"orn Rennecke <amylaar@redhat.com>
 2000-11-01  Richard Henderson  <rth@redhat.com>
 
        * stmt.c (expand_start_null_loop): New.
-       (expand_end_null_loop): New.    
+       (expand_end_null_loop): New.
        * c-semantics.c (genrtl_do_stmt): Use them.
        * tree.h: Declare them.
 
@@ -1376,7 +1425,7 @@ Thu Nov  2 19:20:12 2000  J"orn Rennecke <amylaar@redhat.com>
        (dwarf2out_end_block, dwarf2out_label): Likewise.
        * final.c (final_scan_insn, case NOTE_INSN_DELETED_LABEL): Likewise
        * config/ia64/ia64.h (ASM_OUTPUT_DEBUG_LABEL): Define.
-       
+
 2000-10-31  Richard Henderson  <rth@redhat.com>
 
        * dwarf2out.c (struct dw_loc_descr_struct): Add dw_loc_addr.
@@ -1475,7 +1524,7 @@ Tue Oct 31 15:33:27 2000  J"orn Rennecke <amylaar@redhat.com>
 
 2000-10-31  Bernd Schmidt  <bernds@redhat.co.uk>
 
-        * config/i386/i386.c (ix86_init_builtins): Correct return type
+       * config/i386/i386.c (ix86_init_builtins): Correct return type
        building v4hi_ftype_v4hi_int_int tree node.
        (ix86_expand_builtin): Use correct operand numbers 0 and 1.
        Copy operand 0 into a Pmode register, don't generate a MEM rtx.
@@ -1555,7 +1604,7 @@ Tue Oct 31 15:33:27 2000  J"orn Rennecke <amylaar@redhat.com>
 2000-10-29  Neil Booth  <neilb@earthling.net>
 
        * cppmacro.c (_cpp_create_definition): Optimize the case of
-        a macro defined to itself.
+       a macro defined to itself.
 
 2000-10-29  Neil Booth  <neilb@earthling.net>
 
@@ -1625,7 +1674,7 @@ Tue Oct 31 15:33:27 2000  J"orn Rennecke <amylaar@redhat.com>
 2000-10-28  Neil Booth  <neilb@earthling.net>
 
        New macro expander.
-       
+
        * cpplib.c (struct answer): New.
        (struct if_stack): Use cpp_lexer_pos rather than line and col.
        Rename cmacro mi_cmacro.
@@ -1766,7 +1815,7 @@ Tue Oct 31 15:33:27 2000  J"orn Rennecke <amylaar@redhat.com>
        _cpp_cleanup_hashtable.
 
        * Makefile.in: Remove cppoutput.c.
-       
+
        * cppoutput.c: Delete
 
        * fixheader.c (read_scan_file): Update for new cpp_get_token
@@ -1779,7 +1828,7 @@ Tue Oct 31 15:33:27 2000  J"orn Rennecke <amylaar@redhat.com>
        * scan.h (recognized_function): Update prototype.
 
        * po/POTFILES.in: Remove cppoutput.c.
-       
+
 2000-10-27  Mark Mitchell  <mark@codesourcery.com>
 
        * c-typeck.c (check_init_type_bitfields): Remove.
@@ -1797,7 +1846,7 @@ Tue Oct 31 15:33:27 2000  J"orn Rennecke <amylaar@redhat.com>
 2000-10-21  Mike Coleman  <mcoleman2@kc.rr.com>
 
        * c-pragma.c (handle_pragma_pack): Initialize align to -1.
-       Improve error messages.  Correct parsing of 
+       Improve error messages.  Correct parsing of
        #pragma pack(pop [,id]).  Do not check the user-supplied
        alignment if we're popping.
 
@@ -1836,11 +1885,11 @@ Tue Oct 31 15:33:27 2000  J"orn Rennecke <amylaar@redhat.com>
 2000-10-27  Bernd Schmidt  <bernds@redhat.co.uk>
            Richard Henderson  <rth@redhat.com>
 
-        * regrename.c: Rewrite to handle multi-register modes and
-        cond_exec instructions.
-        * Makefile.in (regrename.o): Update dependancies.
-        * recog.h (struct operand_alternative): Add is_address.
-        * recog.c (preprocess_constraints) [case 'p']: Set it.
+       * regrename.c: Rewrite to handle multi-register modes and
+       cond_exec instructions.
+       * Makefile.in (regrename.o): Update dependancies.
+       * recog.h (struct operand_alternative): Add is_address.
+       * recog.c (preprocess_constraints) [case 'p']: Set it.
 
 2000-10-27  Zack Weinberg  <zack@wolery.stanford.edu>
 
@@ -1857,23 +1906,23 @@ Tue Oct 31 15:33:27 2000  J"orn Rennecke <amylaar@redhat.com>
        switch is given, nothing otherwise.
        * configure.lang: Delete.
 
-        * Makefile.in: Expunge all traces of extra_c_objs,
-        extra_cxx_objs, and extra_cpp_objs.  Set MAYBE_CPPLIB from
-        @maybe_cpplib@. Add $(MAYBE_CPPLIB) to C_AND_OBJC_OBJS.  Set
-        warning options via a three level scheme so that -pedantic and
-        -Wtraditional are not used for non-C front ends: LOOSE_WARN,
-        STRICT1_WARN, STRICT2_WARN -> $(@D)-warn, GCC_WARN_CFLAGS ->
-        WARN_CFLAGS.  Distinguish STAGE1_CFLAGS from BOOT_CFLAGS.
+       * Makefile.in: Expunge all traces of extra_c_objs,
+       extra_cxx_objs, and extra_cpp_objs.  Set MAYBE_CPPLIB from
+       @maybe_cpplib@. Add $(MAYBE_CPPLIB) to C_AND_OBJC_OBJS.  Set
+       warning options via a three level scheme so that -pedantic and
+       -Wtraditional are not used for non-C front ends: LOOSE_WARN,
+       STRICT1_WARN, STRICT2_WARN -> $(@D)-warn, GCC_WARN_CFLAGS ->
+       WARN_CFLAGS.  Distinguish STAGE1_CFLAGS from BOOT_CFLAGS.
        Add -I$(@D) and -I$(srcdir)/$(@D) to INCLUDES.
        Set OUTPUT_OPTION, ZLIB, ZLIBINC.  Do not set P,
-        LANG_FLAGS_TO_PASS.  Add OUTPUT_OPTION to all object-file
-        generation rules.  Wrap all rules that change the current
-        directory in parentheses; pmake doesn't spawn a new shell for
-        each command.  Expunge all references to $(P).  When one
-        command depends on another and they're run all at once, use &&
-        to separate them, not ;.  Add libgcc_s$(SHLIB_EXT) to files
-        deleted on make clean.  Force OUTPUT_OPTION='-o $@' in stage2
-        and beyond.
+       LANG_FLAGS_TO_PASS.  Add OUTPUT_OPTION to all object-file
+       generation rules.  Wrap all rules that change the current
+       directory in parentheses; pmake doesn't spawn a new shell for
+       each command.  Expunge all references to $(P).  When one
+       command depends on another and they're run all at once, use &&
+       to separate them, not ;.  Add libgcc_s$(SHLIB_EXT) to files
+       deleted on make clean.  Force OUTPUT_OPTION='-o $@' in stage2
+       and beyond.
 
        * objc/Make-lang.in: Wrap all rules that change the current
        directory in parentheses.  Expunge all references to $(P).
index 8afe6203e48e89a1026271e68c0a964a1edf3ff5..a210a26fde830dbb6b6378da9aaa1b2acd2efa18 100644 (file)
@@ -1153,7 +1153,7 @@ c-lang.o : c-lang.c $(CONFIG_H) system.h $(TREE_H) $(C_TREE_H) \
     $(RTL_H) $(EXPR_H)
 c-lex.o : c-lex.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) c-lex.h $(C_TREE_H) \
     c-pragma.h input.h intl.h flags.h toplev.h output.h \
-    mbchar.h $(GGC_H) cpplib.h $(EXPR_H)
+    mbchar.h cpplib.h $(EXPR_H)
 c-aux-info.o : c-aux-info.c  $(CONFIG_H) system.h $(TREE_H) $(C_TREE_H) \
     flags.h toplev.h
 c-convert.o : c-convert.c $(CONFIG_H) system.h $(TREE_H) flags.h toplev.h
index 61ff1553cdbe279ebe8e682b1f147f3d33ddfebc..faa8e5957dbe60dfa9570c5f67628c28c792abc2 100644 (file)
@@ -35,7 +35,6 @@ Boston, MA 02111-1307, USA.  */
 #include "c-pragma.h"
 #include "toplev.h"
 #include "intl.h"
-#include "ggc.h"
 #include "tm_p.h"
 #include "splay-tree.h"
 
@@ -149,8 +148,6 @@ static tree lex_string              PARAMS ((const char *, unsigned int, int));
 static tree lex_charconst      PARAMS ((const char *, unsigned int, int));
 static void update_header_times        PARAMS ((const char *));
 static int dump_one_header     PARAMS ((splay_tree_node, void *));
-static int mark_splay_tree_node PARAMS ((splay_tree_node, void *));
-static void mark_splay_tree     PARAMS ((void *));
 
 #if !USE_CPPLIB
 static int skip_white_space            PARAMS ((int));
@@ -177,10 +174,7 @@ init_c_lex (filename)
   file_info_tree = splay_tree_new ((splay_tree_compare_fn)strcmp,
                                   0,
                                   (splay_tree_delete_value_fn)free);
-  /* Make sure to mark the filenames in the tree for GC.  */
-  ggc_add_root (&file_info_tree, 1, sizeof (file_info_tree), 
-               mark_splay_tree);
-  toplevel = get_fileinfo (ggc_strdup ("<top level>"));
+  toplevel = get_fileinfo ("<top level>");
   if (flag_detailed_statistics)
     {
       header_time = 0;
@@ -698,7 +692,7 @@ cb_enter_file (pfile)
   if (ip->prev)
     {
       lex_lineno = lineno = ip->prev->lineno - 1;
-      push_srcloc (ggc_alloc_string (ip->nominal_fname, -1), 1);
+      push_srcloc (ip->nominal_fname, 1);
       input_file_stack->indent_level = indent_level;
       debug_start_source_file (ip->nominal_fname);
     }
@@ -769,7 +763,7 @@ cb_rename_file (pfile)
   cpp_buffer *ip = CPP_BUFFER (pfile);
   /* Bleah, need a better interface to this.  */
   const char *flags = cpp_syshdr_flags (pfile, ip);
-  input_filename = ggc_alloc_string (ip->nominal_fname, -1);
+  input_filename = ip->nominal_fname;
   lex_lineno = ip->lineno;
   in_system_header = (flags[0] != 0);
 
@@ -2550,25 +2544,3 @@ lex_charconst (str, len, wide)
 
   return value;
 }
-
-/* Mark for GC a node in a splay tree whose keys are strings.  */
-
-static int
-mark_splay_tree_node (n, data)
-     splay_tree_node n;
-     void *data ATTRIBUTE_UNUSED;
-{
-  ggc_mark_string ((char *) n->key);
-  return 0;
-}
-
-/* Mark for GC a splay tree whose keys are strings.  */
-
-static void
-mark_splay_tree (p)
-     void *p;
-{
-  splay_tree st = *(splay_tree *) p;
-  
-  splay_tree_foreach (st, mark_splay_tree_node, NULL);
-}
index f5aee19ec04bf8572a666f3fed77dda930326359..8e54acc5a6095ceeaac57968a530ed41e353f094 100644 (file)
@@ -1677,7 +1677,6 @@ ix86_can_use_return_insn_p ()
 \f
 static const char *pic_label_name;
 static int pic_label_output;
-static const char *global_offset_table_name;
 
 /* This function generates code for -fpic that loads %ebx with
    the return address of the caller and then returns.  */
@@ -1721,13 +1720,7 @@ load_pic_register ()
 {
   rtx gotsym, pclab;
 
-  if (global_offset_table_name == NULL)
-    {
-      global_offset_table_name =
-       ggc_alloc_string ("_GLOBAL_OFFSET_TABLE_", 21);
-      ggc_add_string_root (&global_offset_table_name, 1);
-    }
-  gotsym = gen_rtx_SYMBOL_REF (Pmode, global_offset_table_name);
+  gotsym = gen_rtx_SYMBOL_REF (Pmode, "_GLOBAL_OFFSET_TABLE_");
 
   if (TARGET_DEEP_BRANCH_PREDICTION)
     {
@@ -1735,8 +1728,7 @@ load_pic_register ()
        {
          char buf[32];
          ASM_GENERATE_INTERNAL_LABEL (buf, "LPR", 0);
-         pic_label_name = ggc_alloc_string (buf, -1);
-         ggc_add_string_root (&pic_label_name, 1);
+         pic_label_name = ggc_strdup (buf);
        }
       pclab = gen_rtx_MEM (QImode, gen_rtx_SYMBOL_REF (Pmode, pic_label_name));
     }
index 0f6657a2adc11d577c6f57093d032e9a5cd05a84..e318dbbefbe5ed8b7ea9e407d93ac728b8d81c6a 100644 (file)
@@ -4817,7 +4817,7 @@ ia64_encode_section_info (decl)
   else if (symbol_str[0] == SDATA_NAME_FLAG_CHAR)
     {
       XSTR (XEXP (DECL_RTL (decl), 0), 0)
-       = ggc_alloc_string (symbol_str + 1, -1);
+       = ggc_strdup (symbol_str + 1);
     }
 }
 \f
index 98fb376704f8110af581a7f67562530983dd5096..6dbcb25f14e23dc91e7736377512c5a54ca5e52f 100644 (file)
@@ -5114,10 +5114,10 @@ rs6000_emit_load_toc_table (fromprolog)
              rtx symL;
          
              ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", rs6000_pic_labelno);
-             symF = gen_rtx_SYMBOL_REF (Pmode, ggc_alloc_string (buf, -1));
+             symF = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
 
              ASM_GENERATE_INTERNAL_LABEL (buf, "LCL", rs6000_pic_labelno);
-             symL = gen_rtx_SYMBOL_REF (Pmode, ggc_alloc_string (buf, -1));
+             symL = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
 
              rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_1 (tempLR, 
                                                                   symF)));
@@ -5131,11 +5131,10 @@ rs6000_emit_load_toc_table (fromprolog)
              rtx tocsym;
              static int reload_toc_labelno = 0;
 
-             tocsym = gen_rtx_SYMBOL_REF (Pmode, 
-                     ggc_alloc_string (toc_label_name, -1));
+             tocsym = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (toc_label_name));
 
              ASM_GENERATE_INTERNAL_LABEL (buf, "LCG", reload_toc_labelno++);
-             symF = gen_rtx_SYMBOL_REF (Pmode, ggc_alloc_string (buf, -1));
+             symF = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
 
              rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_1b (tempLR, 
                                                                    symF, 
@@ -5152,7 +5151,7 @@ rs6000_emit_load_toc_table (fromprolog)
          char buf[30];
          rtx realsym;
          ASM_GENERATE_INTERNAL_LABEL (buf, "LCTOC", 1);
-         realsym = gen_rtx_SYMBOL_REF (Pmode, ggc_alloc_string (buf, -1));
+         realsym = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
          
          rs6000_maybe_dead (emit_insn (gen_elf_high (dest, realsym)));
          rs6000_maybe_dead (emit_insn (gen_elf_low (dest, dest, realsym)));
@@ -5205,12 +5204,11 @@ rtx
 create_TOC_reference(symbol) 
     rtx symbol;
 {
-    return gen_rtx_PLUS (Pmode, 
-            gen_rtx_REG (Pmode, TOC_REGISTER),
-              gen_rtx_CONST (Pmode, 
-                gen_rtx_MINUS (Pmode, symbol, 
-                  gen_rtx_SYMBOL_REF (Pmode,
-                    ggc_alloc_string (toc_label_name, -1)))));
+  return gen_rtx_PLUS (Pmode, 
+          gen_rtx_REG (Pmode, TOC_REGISTER),
+            gen_rtx_CONST (Pmode, 
+              gen_rtx_MINUS (Pmode, symbol, 
+                gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (toc_label_name)))));
 }
 
 #if TARGET_AIX
@@ -5613,7 +5611,7 @@ rs6000_emit_prologue()
                                                       LINK_REGISTER_REGNUM));
       sprintf (rname, "%s%d%s", SAVE_FP_PREFIX,
               info->first_fp_reg_save - 32, SAVE_FP_SUFFIX);
-      alloc_rname = ggc_alloc_string (rname, -1);
+      alloc_rname = ggc_strdup (rname);
       RTVEC_ELT (p, 1) = gen_rtx_USE (VOIDmode,
                                      gen_rtx_SYMBOL_REF (Pmode,
                                                          alloc_rname));
@@ -6061,7 +6059,7 @@ rs6000_emit_epilogue(sibcall)
 
          sprintf (rname, "%s%d%s", RESTORE_FP_PREFIX, 
                   info->first_fp_reg_save - 32, RESTORE_FP_SUFFIX);
-         alloc_rname = ggc_alloc_string (rname, -1);
+         alloc_rname = ggc_strdup (rname);
          RTVEC_ELT (p, 2) = gen_rtx_USE (VOIDmode,
                                          gen_rtx_SYMBOL_REF (Pmode,
                                                              alloc_rname));
index b324e3f2f3963fc7d9dd5a20643b57edfd6d730c..e725f4318329cb890269fc90e31ad71fc2250300 100644 (file)
@@ -9190,7 +9190,7 @@ operands[2] = GEN_INT (INTVAL (operands[1]) >> 32);
 {
   char buf[30];
   ASM_GENERATE_INTERNAL_LABEL (buf, \"LCTOC\", 1);
-  operands[1] = gen_rtx_SYMBOL_REF (Pmode, ggc_alloc_string (buf, -1));
+  operands[1] = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
   operands[2] = gen_rtx_REG (Pmode, 2);
   return \"{l|lwz} %0,%1(%2)\";
 }"
@@ -9204,7 +9204,7 @@ operands[2] = GEN_INT (INTVAL (operands[1]) >> 32);
 {
   char buf[30];
   ASM_GENERATE_INTERNAL_LABEL (buf, \"LCTOC\", 1);
-  operands[1] = gen_rtx_SYMBOL_REF (Pmode, ggc_alloc_string (buf, -1));
+  operands[1] = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
   operands[2] = gen_rtx_REG (Pmode, 2);
   return \"ld %0,%1(%2)\";
 }"
index 63f97f4219900c990ad91a8a2e8aebf31e1bd841..54d4237cb78371399b0df189beba9b60f7686fc7 100644 (file)
@@ -1,3 +1,11 @@
+2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>
+
+       * 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.
+
 2000-11-17  Nathan Sidwell  <nathan@codesourcery.com>
 
        * pt.c (tsubst_expr, DECL_STMT): Instantiate decl's type.
        (cp_dump_tree): New function.
        * pt.c (add_maybe_template): Remove.
        * typeck.c (strip_array_types): Likewise.
-       
+
 2000-11-07  Eric Christopher  <echristo@redhat.com>
 
        * decl.c (init_decl_processing): Change definition of
@@ -631,7 +639,7 @@ Thu Sep 14 12:10:45 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
 2000-09-11  Gabriel Dos Reis  <gdr@codesourcery.com>
 
-        * ir.texi: Add more documentation.
+       * ir.texi: Add more documentation.
 
 2000-09-11  Mark Mitchell  <mark@codesourcery.com>
 
index d1511f663eb082e593b60fc436f11350be0d4fc5..df5dc94f39306797622bfbbc7673ad8c297f7cd4 100644 (file)
@@ -55,7 +55,6 @@ static int interface_strcmp PARAMS ((const char *));
 static int *init_cpp_parse PARAMS ((void));
 static void init_reswords PARAMS ((void));
 static void init_cp_pragma PARAMS ((void));
-static void mark_impl_file_chain PARAMS ((PTR));
 
 static tree parse_strconst_pragma PARAMS ((const char *, int));
 static void handle_pragma_vtable PARAMS ((cpp_reader *));
@@ -137,11 +136,6 @@ struct impl_files
 
 static struct impl_files *impl_file_chain;
 
-/* The string used to represent the filename of internally generated
-   tree nodes.  The variable, which is dynamically allocated, should
-   be used; the macro is only used to initialize it.  */
-static const char *internal_filename;
-#define INTERNAL_FILENAME ("<internal>")
 \f
 /* Return something to represent absolute declarators containing a *.
    TARGET is the absolute declarator that the * contains.
@@ -708,9 +702,7 @@ init_parse (filename)
   set_identifier_size (sizeof (struct lang_identifier));
   decl_printable_name = lang_printable_name;
 
-  internal_filename = ggc_alloc_string (INTERNAL_FILENAME,
-                                       sizeof (INTERNAL_FILENAME));
-  input_filename = internal_filename;
+  input_filename = "<internal>";
 
   init_reswords ();
   init_pragma ();
@@ -764,10 +756,6 @@ init_parse (filename)
   token_count = init_cpp_parse ();
   interface_unknown = 1;
 
-  ggc_add_string_root (&internal_filename, 1);
-  ggc_add_root (&impl_file_chain, 1, sizeof (impl_file_chain),
-               mark_impl_file_chain);
-
   return init_c_lex (filename);
 }
 
@@ -953,23 +941,6 @@ set_yydebug (value)
 #endif
 }
 
-\f
-/* Mark ARG (which is really a struct impl_files **) for GC.  */
-
-static void
-mark_impl_file_chain (arg)
-     void *arg;
-{
-  struct impl_files *ifs;
-
-  ifs = *(struct impl_files **) arg;
-  while (ifs)
-    {
-      ggc_mark_string (ifs->filename);
-      ifs = ifs->next;
-    }
-}
-
 /* Helper function to load global variables with interface
    information.  */
 
@@ -1219,7 +1190,7 @@ handle_pragma_implementation (dfile)
   if (ifiles == 0)
     {
       ifiles = (struct impl_files*) xmalloc (sizeof (struct impl_files));
-      ifiles->filename = ggc_alloc_string (main_filename, -1);
+      ifiles->filename = main_filename;
       ifiles->next = impl_file_chain;
       impl_file_chain = ifiles;
     }
index f25eb347ac57ac8882635f8ca4509141be569725..2c147f64109654233f3a8227e357ae70661187fe 100644 (file)
@@ -454,8 +454,6 @@ dbxout_init (asm_file, input_file_name, syms)
      and output them all, except for those already output.  */
 
   dbxout_typedefs (syms);
-
-  ggc_add_string_root ((char **) &lastfile, 1);
 }
 
 /* Output any typedef names for types described by TYPE_DECLs in SYMS,
index a5517a2436b3570444b9424e9acc2dd646fb5e44..a96c01dad487cf82b07e49bc4001bf1e911c857c 100644 (file)
@@ -11029,9 +11029,6 @@ dwarf2out_line (filename, line)
          /* Emit the .file and .loc directives understood by GNU as.  */
          if (lastfile == 0 || strcmp (filename, lastfile))
            {
-             if (lastfile == 0)
-               ggc_add_string_root ((char **) &lastfile, 1);
-
              fprintf (asm_out_file, "\t.file 0 \"%s\"\n", filename);
              lastfile = filename;
            }
index e7c5f7d2273d9637695db533d00ec2ee493720cb..5364b2503283f753e9f393ac376cdf41c8c6d269 100644 (file)
@@ -504,7 +504,7 @@ create_rethrow_ref (region_num)
   char buf[60];
 
   ASM_GENERATE_INTERNAL_LABEL (buf, "LRTH", region_num);
-  ptr = ggc_alloc_string (buf, -1);
+  ptr = ggc_strdup (buf);
   def = gen_rtx_SYMBOL_REF (Pmode, ptr);
   SYMBOL_REF_NEED_ADJUST (def) = 1;
 
index f1cf409489444092be7a275d226ade6eacf6ad04..9c118e32f7c97fbfbf80b12341542bd09d8a032b 100644 (file)
@@ -1,3 +1,8 @@
+2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>
+
+       * lex.c (ffelex_hash_): Change ggc_alloc_string (var, -1) to
+       ggc_strdup (var).
+
 Thu Nov 16 23:14:07 2000  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * malloc.c (malloc_init): Call xmalloc, not malloc.
index 031c39e24ce74448e78000c90ad8b82715d3beeb..4c90f267f8458114a9eacd5836943a1328e5adf2 100644 (file)
@@ -1317,7 +1317,7 @@ ffelex_hash_ (FILE *finput)
       lineno = l;
 
       if (ffelex_kludge_flag_)
-       input_filename = ggc_alloc_string (ffelex_token_text (token), -1);
+       input_filename = ggc_strdup (ffelex_token_text (token));
       else
        {
          wf = ffewhere_file_new (ffelex_token_text (token),
index 1b083818b151055dac4f1ac7bfb4aa1a032c5599..44f8cc2a1c7c9252037ee292de6fe0f3664f7fbb 100644 (file)
@@ -224,7 +224,6 @@ ggc_mark_rtx_children (r)
          break;
        case CODE_LABEL:
          ggc_mark_rtx (LABEL_REFS (r));
-         ggc_mark_string (LABEL_ALTERNATE_NAME (r));
          break;
        case LABEL_REF:
          ggc_mark_rtx (LABEL_NEXTREF (r));
@@ -252,11 +251,6 @@ ggc_mark_rtx_children (r)
              break;
 
            default:
-             if (NOTE_LINE_NUMBER (r) >= 0)
-               {
-           case NOTE_INSN_DELETED_LABEL:
-                 ggc_mark_string (NOTE_SOURCE_FILE (r));
-               }
              break;
            }
          break;
@@ -354,10 +348,6 @@ ggc_mark_trees ()
          ggc_mark_tree (TREE_IMAGPART (t));
          break;
 
-       case STRING_CST:
-         ggc_mark_string (TREE_STRING_POINTER (t));
-         break;
-
        case PARM_DECL:
          ggc_mark_rtx (DECL_INCOMING_RTL (t));
          break;
@@ -367,7 +357,6 @@ ggc_mark_trees ()
          break;
 
        case IDENTIFIER_NODE:
-         ggc_mark_string (IDENTIFIER_POINTER (t));
          lang_mark_tree (t);
          continue;
 
@@ -379,7 +368,6 @@ ggc_mark_trees ()
       switch (TREE_CODE_CLASS (code))
        {
        case 'd': /* A decl node.  */
-         ggc_mark_string (DECL_SOURCE_FILE (t));
          ggc_mark_tree (DECL_SIZE (t));
          ggc_mark_tree (DECL_SIZE_UNIT (t));
          ggc_mark_tree (DECL_NAME (t));
index 596c49b49895d8bd9a2b840f5e5dcf2656d73d3f..e222916a5a68be593d039eadb7a08b630ba8b171 100644 (file)
--- a/gcc/ggc.h
+++ b/gcc/ggc.h
@@ -40,7 +40,9 @@ union  tree_node;
 struct varasm_status;
 
 /* Constants for general use.  */
-extern const char empty_string[];
+extern const char empty_string[];      /* empty string */
+extern const char digit_vector[];      /* "0" .. "9" */
+#define digit_string(d) (digit_vector + ((d) * 2))
 
 /* Trees that have been marked, but whose children still need marking.  */
 extern varray_type ggc_pending_trees;
@@ -54,9 +56,6 @@ void ggc_add_tree_varray_root PARAMS ((struct varray_head_tag **, int nelt));
 void ggc_add_tree_hash_table_root PARAMS ((struct hash_table **, int nelt));
 void ggc_del_root PARAMS ((void *base));
 
-/* Temporary */
-#define ggc_add_string_root(ptr, nelt)  /* nothing */
-
 /* Mark nodes from the gc_add_root callback.  These functions follow
    pointers to mark other objects too.  */
 extern void ggc_mark_rtx_varray PARAMS ((struct varray_head_tag *));
@@ -93,9 +92,6 @@ extern void ggc_mark_rtvec_children PARAMS ((struct rtvec_def *));
       ggc_mark_rtvec_children (v__);            \
   } while (0)
 
-/* Temporary */
-#define ggc_mark_string(EXPR)  /* nothing */
-
 #define ggc_mark(EXPR)                         \
   do {                                         \
     const void *a__ = (EXPR);                  \
index 5fb49c0a9e73199c7907cdbc00df81595c482e7b..6c482f49fa630111e3ad565d96c57ce38102ecaa 100644 (file)
@@ -1,3 +1,7 @@
+2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>
+
+       * parse.y (goal): Remove call to ggc_add_string_root.
+
 2000-11-16  Zack Weinberg  <zack@wolery.stanford.edu>
 
        * jcf-parse.c (get_constant), parse.y (do_merge_string_cste):
index a35e6dc22ec6b7df77279c404a10bae27fd90778..8f5eca1862f79e0d6111b6aab4aed8d5b9437d17 100644 (file)
@@ -600,7 +600,6 @@ goal:
                  ggc_add_tree_root (&package_list, 1);
                  ggc_add_tree_root (&current_this, 1);
                  ggc_add_tree_root (&currently_caught_type_list, 1);
-                 ggc_add_string_root (&cyclic_inheritance_report, 1);
                  ggc_add_root (&ctxp, 1, 
                                sizeof (struct parser_ctxt *),
                                mark_parser_ctxt);
index d60b2b2227c597257f9f10d7fa47b918e8881ff0..1525391b90dd55938c4222afd452913af1992b03 100644 (file)
@@ -1027,7 +1027,7 @@ init_edge_profiler ()
   /* Generate and save a copy of this so it can be shared.  */
   char buf[20];
   ASM_GENERATE_INTERNAL_LABEL (buf, "LPBX", 2);
-  profiler_label = gen_rtx_SYMBOL_REF (Pmode, ggc_alloc_string (buf, -1));
+  profiler_label = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
   ggc_add_rtx_root (&profiler_label, 1);
 }
 
@@ -1124,10 +1124,8 @@ output_func_start_profiler ()
   /* Actually generate the code to call __bb_init_func. */
   ASM_GENERATE_INTERNAL_LABEL (buf, "LPBX", 0);
   table_address = force_reg (Pmode,
-                            gen_rtx_SYMBOL_REF (Pmode,
-                                                ggc_alloc_string (buf, -1)));
-  emit_library_call (gen_rtx_SYMBOL_REF 
-                    (Pmode, ggc_alloc_string ("__bb_init_func", 14)), 0,
+                            gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf)));
+  emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__bb_init_func"), 0,
                     mode, 1, table_address, Pmode);
 
   expand_function_end (input_filename, lineno, 0);
index 4ec3fd52c89920957c88ea905bd00cceb1e37e04..06242ce8e09237f328849cd2a4f9f99826471a0a 100644 (file)
@@ -393,9 +393,6 @@ struct stmt_status
 /* Non-zero if we are using EH to handle cleanus.  */
 static int using_eh_for_cleanups_p = 0;
 
-/* Character strings, each containing a single decimal digit.  */
-static const char *digit_strings[10];
-
 static int n_occurrences               PARAMS ((int, const char *));
 static void expand_goto_internal       PARAMS ((tree, rtx, rtx));
 static int expand_fixup                        PARAMS ((tree, rtx, rtx));
@@ -597,18 +594,7 @@ mark_stmt_status (p)
 void
 init_stmt ()
 {
-  int i;
-  char buf[2];
-
   gcc_obstack_init (&stmt_obstack);
-
-  buf[1] = 0;
-  for (i = 0; i < 10; i++)
-    {
-      buf[0] = '0' + i;
-      digit_strings[i] = ggc_alloc_string (buf, 1);
-    }
-  ggc_add_string_root (digit_strings, 10);
 }
 
 void
@@ -1809,7 +1795,7 @@ expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
       ASM_OPERANDS_INPUT (body, ninputs - ninout + i)
        = output_rtx[j];
       ASM_OPERANDS_INPUT_CONSTRAINT_EXP (body, ninputs - ninout + i)
-       = gen_rtx_ASM_INPUT (inout_mode[i], digit_strings[j]);
+       = gen_rtx_ASM_INPUT (inout_mode[i], digit_string (j));
     }
 
   generating_concat_p = old_generating_concat_p;
index 32381e01ebb99a051656ac46fda1de546eebbbfa..20db021009c91695d8ef6d246d0a514818df7467 100644 (file)
@@ -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;
index 592d5fc36045eb1b117ddc11cad6ceb5fbb6c14b..de74f28968c94ad4bd2338f49b9c636b1d45951e 100644 (file)
@@ -171,7 +171,6 @@ static void output_lang_identify PARAMS ((FILE *)) ATTRIBUTE_UNUSED;
 static void compile_file PARAMS ((const char *));
 static void display_help PARAMS ((void));
 static void display_target_options PARAMS ((void));
-static void mark_file_stack PARAMS ((void *));
 
 static void decode_d_option PARAMS ((const char *));
 static int decode_f_option PARAMS ((const char *));
@@ -1503,26 +1502,6 @@ decl_name (decl, verbosity)
   return IDENTIFIER_POINTER (DECL_NAME (decl));
 }
 \f
-/* Mark P for GC.  Also mark main_input_filename and input_filename.  */
-
-static void
-mark_file_stack (p)
-     void *p;
-{
-  struct file_stack *stack = *(struct file_stack **)p;
-
-  /* We're only called for input_file_stack, so we can mark the current
-     input_filename here as well.  */
-  ggc_mark_string (main_input_filename);
-  ggc_mark_string (input_filename);
-
-  while (stack)
-    {
-      ggc_mark_string (stack->name);
-      stack = stack->next;
-    }
-}
-\f
 
 /* This calls abort and is used to avoid problems when abort if a macro.
    It is used when we need to pass the address of abort.  */
@@ -2183,7 +2162,6 @@ compile_file (name)
   /* Initialize data in various passes.  */
 
   init_obstacks ();
-  init_tree_codes ();
   name = init_parse (name);
   init_emit_once (debug_info_level == DINFO_LEVEL_NORMAL
                  || debug_info_level == DINFO_LEVEL_VERBOSE
@@ -2251,7 +2229,7 @@ compile_file (name)
 #endif
 
   if (name != 0)
-    name = ggc_alloc_string (name, strlen (name));
+    name = ggc_strdup (name);
 
   input_filename = name;
 
@@ -4584,8 +4562,6 @@ main (argc, argv)
   /* Initialize the garbage-collector.  */
   init_ggc ();
   init_stringpool ();
-  ggc_add_root (&input_file_stack, 1, sizeof input_file_stack,
-               mark_file_stack);
   ggc_add_rtx_root (&stack_limit_rtx, 1);
   ggc_add_tree_root (&current_function_decl, 1);
   ggc_add_tree_root (&current_function_func_begin_label, 1);
index 28f791b0eba5d110c33ab3e26a074a966259c8ce..b0a1ae1875995a5968dee22d1e1b2143cc4b2548 100644 (file)
@@ -179,12 +179,6 @@ static void finish_vector_type PARAMS((tree));
 void (*lang_unsave) PARAMS ((tree *));
 void (*lang_unsave_expr_now) PARAMS ((tree));
 
-/* The string used as a placeholder instead of a source file name for
-   built-in tree nodes.  The variable, which is dynamically allocated,
-   should be used; the macro is only used to initialize it.  */
-
-static const char *built_in_filename;
-#define BUILT_IN_FILENAME ("<built-in>")
 \f
 tree global_trees[TI_MAX];
 tree integer_types[itk_none];
@@ -249,18 +243,6 @@ perm_calloc (nelem, size)
   return rval;
 }
 
-\f
-/* Init the tables indexed by tree code.
-   Note that languages can add to these tables to define their own codes.  */
-
-void
-init_tree_codes ()
-{
-  built_in_filename
-    = ggc_alloc_string (BUILT_IN_FILENAME, sizeof (BUILT_IN_FILENAME));
-  ggc_add_string_root (&built_in_filename, 1);
-}
-
 /* Compute the number of bytes occupied by 'node'.  This routine only
    looks at TREE_CODE and, if the code is TREE_VEC, TREE_VEC_LENGTH.  */
 size_t
@@ -417,7 +399,7 @@ make_node (code)
       DECL_IN_SYSTEM_HEADER (t) = in_system_header;
       DECL_SOURCE_LINE (t) = lineno;
       DECL_SOURCE_FILE (t) =
-       (input_filename) ? input_filename : built_in_filename;
+       (input_filename) ? input_filename : "<built-in>";
       DECL_UID (t) = next_decl_uid++;
       /* Note that we have not yet computed the alias set for this
         declaration.  */
index 8f0737649aa559bdd7901309b10cca9f0fd55419..ac0be894d022b569e3f1477d53cea1bcac0ffb3e 100644 (file)
@@ -2645,7 +2645,6 @@ extern tree type_hash_lookup              PARAMS ((unsigned int, tree));
 extern void type_hash_add              PARAMS ((unsigned int, tree));
 extern unsigned int type_hash_list     PARAMS ((tree));
 extern int simple_cst_list_equal       PARAMS ((tree, tree));
-extern void init_tree_codes            PARAMS ((void));
 extern void dump_tree_statistics       PARAMS ((void));
 extern void print_obstack_statistics   PARAMS ((const char *,
                                                struct obstack *));
index b7d33b2f2b7ba2e65ffaf2a37094d1b1fa30a72c..8faedda980f303d7652277767d2819911fad009d 100644 (file)
@@ -319,7 +319,7 @@ named_section (decl, name, reloc)
       abort ();
 #endif
 
-      in_named_name = ggc_alloc_string (name, -1);
+      in_named_name = ggc_strdup (name);
       in_section = in_named;
     }
 }
@@ -1808,7 +1808,7 @@ assemble_static_space (size)
 
   ASM_GENERATE_INTERNAL_LABEL (name, "LF", const_labelno);
   ++const_labelno;
-  namestring = ggc_alloc_string (name, -1);
+  namestring = ggc_strdup (name);
 
   x = gen_rtx_SYMBOL_REF (Pmode, namestring);
 
@@ -1864,7 +1864,7 @@ assemble_trampoline_template ()
 
   /* Record the rtl to refer to it.  */
   ASM_GENERATE_INTERNAL_LABEL (label, "LTRAMP", 0);
-  name = ggc_alloc_string (label, -1);
+  name = ggc_strdup (label);
   return gen_rtx_SYMBOL_REF (Pmode, name);
 }
 #endif
@@ -2369,7 +2369,6 @@ mark_const_hash_entry (ptr)
 
   while (desc)
     {
-      ggc_mark_string ((const char *)desc->label);
       ggc_mark_rtx (desc->rtl);
       desc = desc->next;
     }
@@ -3176,7 +3175,7 @@ output_constant_def (exp, defer)
 
       desc = record_constant (exp);
       desc->next = const_hash_table[hash];
-      desc->label = ggc_alloc_string (label, -1);
+      desc->label = ggc_strdup (label);
       const_hash_table[hash] = desc;
   
       /* We have a symbol name; construct the SYMBOL_REF and the MEM.  */
@@ -3381,7 +3380,6 @@ mark_pool_constant (pc)
     {
       ggc_mark (pc);
       ggc_mark_rtx (pc->constant);
-      ggc_mark_string (pc->label);
       pc = pc->next;
     }
 }
@@ -3693,7 +3691,7 @@ force_const_mem (mode, x)
 
       ++const_labelno;
 
-      desc->label = found = ggc_alloc_string (label, -1);
+      desc->label = found = ggc_strdup (label);
 
       /* Add label to symbol hash table.  */
       hash = SYMHASH (found);
@@ -4894,7 +4892,6 @@ init_varasm_once ()
                mark_const_hash_entry);
   ggc_add_root (&const_str_htab, 1, sizeof const_str_htab,
                mark_const_str_htab);
-  ggc_add_string_root (&in_named_name, 1);
 }
 
 /* Extra support for EH values.  */
index 88c4e05341c36481f86add80a5cb124e5fd92a8f..6c8c2fe0599b25eb7435673b32c8e32d3385c107 100644 (file)
@@ -352,10 +352,6 @@ xcoffout_source_file (file, filename, inline_p)
          fprintf (file, "\n");
          xcoff_current_include_file = filename;
        }
-
-      if (!xcoff_lastfile)
-       ggc_add_string_root ((char **) &xcoff_lastfile, 1);
-
       xcoff_lastfile = filename;
     }
 }