Index: ChangeLog

2002-08-04  Geoffrey Keating  <geoffk@redhat.com>

	* Makefile.in (sdbout.o): Doesn't need $(OBSTACK_H).
	* collect2.h (permanent_obstack): Delete declaration.
	* collect2.c (permanent_obstack): Delete definition.
	(main): Don't initialise permanent_obstack.  Use xstrdup instead.
	* expr.c: Don't include obstack.h.
	(permanent_obstack): Delete declaration.
	* function.c: Don't include obstack.h.
	(permanent_obstack): Delete declaration.
	* integrate.c: Don't include obstack.h.
	(function_maybepermanent_obstack): Delete declaration.
	* print-tree.c (debug_tree): Use x*alloc not permalloc.
	* sdbout.c (gen_fake_label): Use x*alloc not permalloc.
	* tlink.c (pfgets): Use xstrdup not permanent_obstack.
	* toplev.c (lang_independent_init): Rename init_obstacks to init_ttree.
	* tree.h: Rename init_obstacks to init_ttree.  Remove declarations
	of permalloc, expralloc, perm_calloc.
	* tree.c (permanent_obstack): Delete definition.
	(init_ttree): Rename from init_obstacks.
	(permalloc): Delete.
	(perm_calloc): Delete.
	(dump_tree_statistics): Don't print information about
	permanent_obstack.
	* varasm.c (assemble_start_function): Use xstrdup instead of
	permalloc/strcpy.
	(assemble_variable): Likewise.
	* config/alpha/alpha.c (unicosmk_need_dex): Use xmalloc instead of
	permalloc.
	(unicosmk_add_extern): Likewise.
	* config/c4x/c4x.c (c4x_external_ref): Likewise.
	(c4x_global_label): Likewise.
	* config/frv/frv.c (frv_encode_section_info): Likewise.
	* config/i386/winnt.c (i386_pe_record_external_function): Likewise.
	(i386_pe_record_exported_symbol): Likewise.
	* config/mips/mips.c (mips_output_external): Likewise.
	(mips_output_external_libcall): Likewise.
	* config/pa/pa.c: (permanent_obstack): Delete declaration.
	(output_call): Use ggc_strdup instead of allocating on
	permanent_obstack.
	* config/romp/romp.c: Include ggc.h.
	(get_symref): Don't declare permanent_obstack, use ggc_strdup
	intead of permanent_obstack.
	* config/rs6000/aix31.h (ASM_OUTPUT_EXTERNAL): Use concat
	instead of permalloc.
	* config/rs6000/rs6000.c (rs6000_gen_section_name): Use xmalloc
	instead of permalloc
	* config/rs6000/xcoff.h (ASM_OUTPUT_EXTERNAL): Use concat
	instead of permalloc.
	* config/vax/vax.c (vms_check_external): Use xmalloc instead of
	permalloc.

Index: cp/ChangeLog
2002-08-04  Geoffrey Keating  <geoffk@redhat.com>

	* cvt.c (ocp_convert): Delete obsolete code.
	* parse.y (permanent_obstack): Delete declaration.
	* pt.c (permanent_obstack): Delete declaration.
	* repo.c (permanent_obstack): Delete declaration.
	(open_repo_file): Use xmalloc instead of permanent_obstack.
	(init_repo): Use xstrdup instead of permanent_obstack.

Index: java/ChangeLog
2002-08-04  Geoffrey Keating  <geoffk@redhat.com>

	* class.c: (permanent_obstack): Delete declaration.
	* constants.c: (permanent_obstack): Delete declaration.
	* except.c: (permanent_obstack): Delete declaration.
	* expr.c: (permanent_obstack): Delete declaration.
	* jcf-parse.c: (permanent_obstack): Delete declaration.
	(saveable_obstack): Delete declaration.
	* parse.h: (permanent_obstack): Delete declaration.
	* typeck.c: (permanent_obstack): Delete declaration.

From-SVN: r56035
This commit is contained in:
Geoffrey Keating 2002-08-04 22:45:31 +00:00 committed by Geoffrey Keating
parent 86a0cbcb9f
commit 6d9f628e05
38 changed files with 140 additions and 154 deletions

View File

@ -1,3 +1,55 @@
2002-08-04 Geoffrey Keating <geoffk@redhat.com>
* Makefile.in (sdbout.o): Doesn't need $(OBSTACK_H).
* collect2.h (permanent_obstack): Delete declaration.
* collect2.c (permanent_obstack): Delete definition.
(main): Don't initialise permanent_obstack. Use xstrdup instead.
* expr.c: Don't include obstack.h.
(permanent_obstack): Delete declaration.
* function.c: Don't include obstack.h.
(permanent_obstack): Delete declaration.
* integrate.c: Don't include obstack.h.
(function_maybepermanent_obstack): Delete declaration.
* print-tree.c (debug_tree): Use x*alloc not permalloc.
* sdbout.c (gen_fake_label): Use x*alloc not permalloc.
* tlink.c (pfgets): Use xstrdup not permanent_obstack.
* toplev.c (lang_independent_init): Rename init_obstacks to init_ttree.
* tree.h: Rename init_obstacks to init_ttree. Remove declarations
of permalloc, expralloc, perm_calloc.
* tree.c (permanent_obstack): Delete definition.
(init_ttree): Rename from init_obstacks.
(permalloc): Delete.
(perm_calloc): Delete.
(dump_tree_statistics): Don't print information about
permanent_obstack.
* varasm.c (assemble_start_function): Use xstrdup instead of
permalloc/strcpy.
(assemble_variable): Likewise.
* config/alpha/alpha.c (unicosmk_need_dex): Use xmalloc instead of
permalloc.
(unicosmk_add_extern): Likewise.
* config/c4x/c4x.c (c4x_external_ref): Likewise.
(c4x_global_label): Likewise.
* config/frv/frv.c (frv_encode_section_info): Likewise.
* config/i386/winnt.c (i386_pe_record_external_function): Likewise.
(i386_pe_record_exported_symbol): Likewise.
* config/mips/mips.c (mips_output_external): Likewise.
(mips_output_external_libcall): Likewise.
* config/pa/pa.c: (permanent_obstack): Delete declaration.
(output_call): Use ggc_strdup instead of allocating on
permanent_obstack.
* config/romp/romp.c: Include ggc.h.
(get_symref): Don't declare permanent_obstack, use ggc_strdup
intead of permanent_obstack.
* config/rs6000/aix31.h (ASM_OUTPUT_EXTERNAL): Use concat
instead of permalloc.
* config/rs6000/rs6000.c (rs6000_gen_section_name): Use xmalloc
instead of permalloc
* config/rs6000/xcoff.h (ASM_OUTPUT_EXTERNAL): Use concat
instead of permalloc.
* config/vax/vax.c (vms_check_external): Use xmalloc instead of
permalloc.
2002-08-04 Bernd Schmidt <bernds@redhat.com> 2002-08-04 Bernd Schmidt <bernds@redhat.com>
Contribute a port developed primarily by Michael Meissner, Contribute a port developed primarily by Michael Meissner,

View File

@ -1446,7 +1446,7 @@ dbxout.o : dbxout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \
debug.o : debug.c debug.h $(CONFIG_H) $(SYSTEM_H) debug.o : debug.c debug.h $(CONFIG_H) $(SYSTEM_H)
sdbout.o : sdbout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \ sdbout.o : sdbout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \
function.h $(EXPR_H) output.h hard-reg-set.h $(REGS_H) real.h \ function.h $(EXPR_H) output.h hard-reg-set.h $(REGS_H) real.h \
insn-config.h $(OBSTACK_H) xcoffout.h c-pragma.h ggc.h \ insn-config.h xcoffout.h c-pragma.h ggc.h \
sdbout.h toplev.h $(TM_P_H) except.h debug.h langhooks.h gt-sdbout.h sdbout.h toplev.h $(TM_P_H) except.h debug.h langhooks.h gt-sdbout.h
dwarfout.o : dwarfout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) dwarf.h \ dwarfout.o : dwarfout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) dwarf.h \
flags.h insn-config.h reload.h output.h toplev.h $(TM_P_H) \ flags.h insn-config.h reload.h output.h toplev.h $(TM_P_H) \

View File

@ -231,7 +231,6 @@ static struct head exports; /* list of exported symbols */
static struct head frame_tables; /* list of frame unwind info tables */ static struct head frame_tables; /* list of frame unwind info tables */
struct obstack temporary_obstack; struct obstack temporary_obstack;
struct obstack permanent_obstack;
char * temporary_firstobj; char * temporary_firstobj;
/* Holds the return value of pexecute. */ /* Holds the return value of pexecute. */
@ -916,7 +915,6 @@ main (argc, argv)
#endif #endif
obstack_begin (&temporary_obstack, 0); obstack_begin (&temporary_obstack, 0);
obstack_begin (&permanent_obstack, 0);
temporary_firstobj = (char *) obstack_alloc (&temporary_obstack, 0); temporary_firstobj = (char *) obstack_alloc (&temporary_obstack, 0);
current_demangling_style = auto_demangling; current_demangling_style = auto_demangling;
@ -1076,18 +1074,18 @@ main (argc, argv)
{ {
const char *q = extract_string (&p); const char *q = extract_string (&p);
if (*q == '-' && (q[1] == 'm' || q[1] == 'f')) if (*q == '-' && (q[1] == 'm' || q[1] == 'f'))
*c_ptr++ = obstack_copy0 (&permanent_obstack, q, strlen (q)); *c_ptr++ = xstrdup (q);
if (strcmp (q, "-EL") == 0 || strcmp (q, "-EB") == 0) if (strcmp (q, "-EL") == 0 || strcmp (q, "-EB") == 0)
*c_ptr++ = obstack_copy0 (&permanent_obstack, q, strlen (q)); *c_ptr++ = xstrdup (q);
if (strcmp (q, "-shared") == 0) if (strcmp (q, "-shared") == 0)
shared_obj = 1; shared_obj = 1;
if (*q == '-' && q[1] == 'B') if (*q == '-' && q[1] == 'B')
{ {
*c_ptr++ = obstack_copy0 (&permanent_obstack, q, strlen (q)); *c_ptr++ = xstrdup (q);
if (q[2] == 0) if (q[2] == 0)
{ {
q = extract_string (&p); q = extract_string (&p);
*c_ptr++ = obstack_copy0 (&permanent_obstack, q, strlen (q)); *c_ptr++ = xstrdup (q);
} }
} }
} }

View File

@ -36,7 +36,6 @@ extern int file_exists PARAMS ((const char *));
extern const char *ldout; extern const char *ldout;
extern const char *c_file_name; extern const char *c_file_name;
extern struct obstack temporary_obstack; extern struct obstack temporary_obstack;
extern struct obstack permanent_obstack;
extern char *temporary_firstobj; extern char *temporary_firstobj;
extern int vflag, debug; extern int vflag, debug;

View File

@ -9824,7 +9824,7 @@ unicosmk_add_extern (name)
struct unicosmk_extern_list *p; struct unicosmk_extern_list *p;
p = (struct unicosmk_extern_list *) p = (struct unicosmk_extern_list *)
permalloc (sizeof (struct unicosmk_extern_list)); xmalloc (sizeof (struct unicosmk_extern_list));
p->next = unicosmk_extern_head; p->next = unicosmk_extern_head;
p->name = name; p->name = name;
unicosmk_extern_head = p; unicosmk_extern_head = p;
@ -9906,7 +9906,7 @@ unicosmk_need_dex (x)
--i; --i;
} }
dex = (struct unicosmk_dex *) permalloc (sizeof (struct unicosmk_dex)); dex = (struct unicosmk_dex *) xmalloc (sizeof (struct unicosmk_dex));
dex->name = name; dex->name = name;
dex->next = unicosmk_dex_list; dex->next = unicosmk_dex_list;
unicosmk_dex_list = dex; unicosmk_dex_list = dex;

View File

@ -4497,7 +4497,7 @@ c4x_global_label (name)
return; return;
p = p->next; p = p->next;
} }
p = (struct name_list *) permalloc (sizeof *p); p = (struct name_list *) xmalloc (sizeof *p);
p->next = global_head; p->next = global_head;
p->name = name; p->name = name;
global_head = p; global_head = p;
@ -4546,7 +4546,7 @@ c4x_external_ref (name)
return; return;
p = p->next; p = p->next;
} }
p = (struct name_list *) permalloc (sizeof *p); p = (struct name_list *) xmalloc (sizeof *p);
p->next = extern_head; p->next = extern_head;
p->name = name; p->name = name;
extern_head = p; extern_head = p;

View File

@ -748,7 +748,7 @@ frv_encode_section_info (decl)
if (is_small) if (is_small)
{ {
rtx sym_ref = XEXP (DECL_RTL (decl), 0); rtx sym_ref = XEXP (DECL_RTL (decl), 0);
char * str = permalloc (2 + strlen (XSTR (sym_ref, 0))); char * str = xmalloc (2 + strlen (XSTR (sym_ref, 0)));
str[0] = SDATA_FLAG_CHAR; str[0] = SDATA_FLAG_CHAR;
strcpy (&str[1], XSTR (sym_ref, 0)); strcpy (&str[1], XSTR (sym_ref, 0));

View File

@ -622,7 +622,7 @@ i386_pe_record_external_function (name)
{ {
struct extern_list *p; struct extern_list *p;
p = (struct extern_list *) permalloc (sizeof *p); p = (struct extern_list *) xmalloc (sizeof *p);
p->next = extern_head; p->next = extern_head;
p->name = name; p->name = name;
extern_head = p; extern_head = p;
@ -652,7 +652,7 @@ i386_pe_record_exported_symbol (name, is_data)
{ {
struct export_list *p; struct export_list *p;
p = (struct export_list *) permalloc (sizeof *p); p = (struct export_list *) xmalloc (sizeof *p);
p->next = export_head; p->next = export_head;
p->name = name; p->name = name;
p->is_data = is_data; p->is_data = is_data;

View File

@ -6044,7 +6044,7 @@ mips_output_external (file, decl, name)
|| strcmp (TREE_STRING_POINTER (section_name), ".sbss") == 0 || strcmp (TREE_STRING_POINTER (section_name), ".sbss") == 0
|| strcmp (TREE_STRING_POINTER (section_name), ".sdata") == 0)) || strcmp (TREE_STRING_POINTER (section_name), ".sdata") == 0))
{ {
p = (struct extern_list *) permalloc (sizeof (struct extern_list)); p = (struct extern_list *) xmalloc (sizeof (struct extern_list));
p->next = extern_head; p->next = extern_head;
p->name = name; p->name = name;
p->size = len; p->size = len;
@ -6060,7 +6060,7 @@ mips_output_external (file, decl, name)
bootstrap under Irix 5.1. */ bootstrap under Irix 5.1. */
&& strcmp (name, "__builtin_next_arg")) && strcmp (name, "__builtin_next_arg"))
{ {
p = (struct extern_list *) permalloc (sizeof (struct extern_list)); p = (struct extern_list *) xmalloc (sizeof (struct extern_list));
p->next = extern_head; p->next = extern_head;
p->name = name; p->name = name;
p->size = -1; p->size = -1;
@ -6079,7 +6079,7 @@ mips_output_external_libcall (file, name)
{ {
register struct extern_list *p; register struct extern_list *p;
p = (struct extern_list *) permalloc (sizeof (struct extern_list)); p = (struct extern_list *) xmalloc (sizeof (struct extern_list));
p->next = extern_head; p->next = extern_head;
p->name = name; p->name = name;
p->size = -1; p->size = -1;

View File

@ -6168,8 +6168,6 @@ output_millicode_call (insn, call_dest)
return ""; return "";
} }
extern struct obstack permanent_obstack;
/* INSN is either a function call. It may have an unconditional jump /* INSN is either a function call. It may have an unconditional jump
in its delay slot. in its delay slot.
@ -6298,9 +6296,7 @@ output_call (insn, call_dest, sibcall)
i = n_deferred_plabels++; i = n_deferred_plabels++;
deferred_plabels[i].internal_label = gen_label_rtx (); deferred_plabels[i].internal_label = gen_label_rtx ();
deferred_plabels[i].name = obstack_alloc (&permanent_obstack, deferred_plabels[i].name = ggc_strdup (name);
strlen (name) + 1);
strcpy (deferred_plabels[i].name, name);
/* Gross. We have just implicitly taken the address of this /* Gross. We have just implicitly taken the address of this
function, mark it as such. */ function, mark it as such. */

View File

@ -37,6 +37,7 @@ Boston, MA 02111-1307, USA. */
#include "tree.h" #include "tree.h"
#include "function.h" #include "function.h"
#include "expr.h" #include "expr.h"
#include "ggc.h"
#include "toplev.h" #include "toplev.h"
#include "tm_p.h" #include "tm_p.h"
#include "target.h" #include "target.h"
@ -1345,7 +1346,6 @@ rtx
get_symref (name) get_symref (name)
register const char *name; register const char *name;
{ {
extern struct obstack permanent_obstack;
register const char *sp = name; register const char *sp = name;
unsigned int hash = 0; unsigned int hash = 0;
struct symref_hashent *p, **last_p; struct symref_hashent *p, **last_p;
@ -1367,10 +1367,8 @@ get_symref (name)
{ {
/* Ensure SYMBOL_REF will stay around. */ /* Ensure SYMBOL_REF will stay around. */
p = *last_p = (struct symref_hashent *) p = *last_p = (struct symref_hashent *)
permalloc (sizeof (struct symref_hashent)); xmalloc (sizeof (struct symref_hashent));
p->symref = gen_rtx_SYMBOL_REF (Pmode, p->symref = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));
obstack_copy0 (&permanent_obstack,
name, strlen (name)));
p->next = 0; p->next = 0;
} }

View File

@ -29,25 +29,25 @@ Boston, MA 02111-1307, USA. */
where we can't, it gets stripped off. */ where we can't, it gets stripped off. */
#undef ASM_OUTPUT_EXTERNAL #undef ASM_OUTPUT_EXTERNAL
#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME) \ #define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME) \
{ rtx _symref = XEXP (DECL_RTL (DECL), 0); \ { rtx _symref = XEXP (DECL_RTL (DECL), 0); \
if ((TREE_CODE (DECL) == VAR_DECL \ if ((TREE_CODE (DECL) == VAR_DECL \
|| TREE_CODE (DECL) == FUNCTION_DECL) \ || TREE_CODE (DECL) == FUNCTION_DECL) \
&& (NAME)[strlen (NAME) - 1] != ']') \ && (NAME)[strlen (NAME) - 1] != ']') \
{ \ { \
char *_name = (char *) permalloc (strlen (XSTR (_symref, 0)) + 5); \ XSTR (_symref, 0) = concat (XSTR (_symref, 0), \
strcpy (_name, XSTR (_symref, 0)); \ (TREE_CODE (DECL) == FUNCTION_DECL \
strcat (_name, TREE_CODE (DECL) == FUNCTION_DECL ? "[DS]" : "[RW]"); \ ? "[DS]" : "[RW]"), \
XSTR (_symref, 0) = _name; \ NULL); \
} \ } \
fputs ("\t.extern ", FILE); \ fputs ("\t.extern ", FILE); \
assemble_name (FILE, XSTR (_symref, 0)); \ assemble_name (FILE, XSTR (_symref, 0)); \
if (TREE_CODE (DECL) == FUNCTION_DECL) \ if (TREE_CODE (DECL) == FUNCTION_DECL) \
{ \ { \
fputs ("\n\t.extern .", FILE); \ fputs ("\n\t.extern .", FILE); \
RS6000_OUTPUT_BASENAME (FILE, XSTR (_symref, 0)); \ RS6000_OUTPUT_BASENAME (FILE, XSTR (_symref, 0)); \
} \ } \
putc ('\n', FILE); \ putc ('\n', FILE); \
} }
/* Similar, but for libcall. We only have to worry about the function name, /* Similar, but for libcall. We only have to worry about the function name,

View File

@ -11874,7 +11874,7 @@ rs6000_gen_section_name (buf, filename, section_desc)
} }
len = strlen (after_last_slash) + strlen (section_desc) + 2; len = strlen (after_last_slash) + strlen (section_desc) + 2;
*buf = (char *) permalloc (len); *buf = (char *) xmalloc (len);
p = *buf; p = *buf;
*p++ = '_'; *p++ = '_';

View File

@ -306,17 +306,17 @@ toc_section () \
/* This says how to output an external. */ /* This says how to output an external. */
#undef ASM_OUTPUT_EXTERNAL #undef ASM_OUTPUT_EXTERNAL
#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME) \ #define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME) \
{ rtx _symref = XEXP (DECL_RTL (DECL), 0); \ { rtx _symref = XEXP (DECL_RTL (DECL), 0); \
if ((TREE_CODE (DECL) == VAR_DECL \ if ((TREE_CODE (DECL) == VAR_DECL \
|| TREE_CODE (DECL) == FUNCTION_DECL) \ || TREE_CODE (DECL) == FUNCTION_DECL) \
&& (NAME)[strlen (NAME) - 1] != ']') \ && (NAME)[strlen (NAME) - 1] != ']') \
{ \ { \
char *_name = (char *) permalloc (strlen (XSTR (_symref, 0)) + 5); \ XSTR (_symref, 0) = concat (XSTR (_symref, 0), \
strcpy (_name, XSTR (_symref, 0)); \ (TREE_CODE (DECL) == FUNCTION_DECL \
strcat (_name, TREE_CODE (DECL) == FUNCTION_DECL ? "[DS]" : "[RW]"); \ ? "[DS]" : "[RW]"), \
XSTR (_symref, 0) = _name; \ NULL); \
} \ } \
} }
/* This is how to output an internal numbered label where /* This is how to output an internal numbered label where

View File

@ -810,7 +810,7 @@ vms_check_external (decl, name, pending)
} }
/* Not previously seen; create a new list entry. */ /* Not previously seen; create a new list entry. */
p = (struct extern_list *)permalloc ((long) sizeof (struct extern_list)); p = (struct extern_list *) xmalloc (sizeof (struct extern_list));
p->name = name; p->name = name;
if (pending) if (pending)

View File

@ -1,3 +1,12 @@
2002-08-04 Geoffrey Keating <geoffk@redhat.com>
* cvt.c (ocp_convert): Delete obsolete code.
* parse.y (permanent_obstack): Delete declaration.
* pt.c (permanent_obstack): Delete declaration.
* repo.c (permanent_obstack): Delete declaration.
(open_repo_file): Use xmalloc instead of permanent_obstack.
(init_repo): Use xstrdup instead of permanent_obstack.
2002-08-04 Nathan Sidwell <nathan@codesourcery.com> 2002-08-04 Nathan Sidwell <nathan@codesourcery.com>
* cp-tree.h (VF_DERIVED_VALUE): Remove. * cp-tree.h (VF_DERIVED_VALUE): Remove.

View File

@ -779,14 +779,6 @@ ocp_convert (type, expr, convtype, flags)
return build_cplus_new (type, ctor); return build_cplus_new (type, ctor);
} }
/* If TYPE or TREE_TYPE (E) is not on the permanent_obstack,
then it won't be hashed and hence compare as not equal,
even when it is. */
if (code == ARRAY_TYPE
&& TREE_TYPE (TREE_TYPE (e)) == TREE_TYPE (type)
&& index_type_equal (TYPE_DOMAIN (TREE_TYPE (e)), TYPE_DOMAIN (type)))
return e;
if (flags & LOOKUP_COMPLAIN) if (flags & LOOKUP_COMPLAIN)
error ("conversion from `%T' to non-scalar type `%T' requested", error ("conversion from `%T' to non-scalar type `%T' requested",
TREE_TYPE (expr), type); TREE_TYPE (expr), type);

View File

@ -44,8 +44,6 @@ Boston, MA 02111-1307, USA. */
#include "toplev.h" #include "toplev.h"
#include "ggc.h" #include "ggc.h"
extern struct obstack permanent_obstack;
/* Like YYERROR but do call yyerror. */ /* Like YYERROR but do call yyerror. */
#define YYERROR1 { yyerror ("syntax error"); YYERROR; } #define YYERROR1 { yyerror ("syntax error"); YYERROR; }

View File

@ -47,8 +47,6 @@ Boston, MA 02111-1307, USA. */
returning an int. */ returning an int. */
typedef int (*tree_fn_t) PARAMS ((tree, void*)); typedef int (*tree_fn_t) PARAMS ((tree, void*));
extern struct obstack permanent_obstack;
/* The PENDING_TEMPLATES is a TREE_LIST of templates whose /* The PENDING_TEMPLATES is a TREE_LIST of templates whose
instantiations have been deferred, either because their definitions instantiations have been deferred, either because their definitions
were not yet available, or because we were putting off doing the were not yet available, or because we were putting off doing the

View File

@ -50,7 +50,6 @@ static FILE *repo_file;
static char *old_args, *old_dir, *old_main; static char *old_args, *old_dir, *old_main;
static struct obstack temporary_obstack; static struct obstack temporary_obstack;
extern struct obstack permanent_obstack;
#define IDENTIFIER_REPO_USED(NODE) (TREE_LANG_FLAG_3 (NODE)) #define IDENTIFIER_REPO_USED(NODE) (TREE_LANG_FLAG_3 (NODE))
#define IDENTIFIER_REPO_CHOSEN(NODE) (TREE_LANG_FLAG_4 (NODE)) #define IDENTIFIER_REPO_CHOSEN(NODE) (TREE_LANG_FLAG_4 (NODE))
@ -292,8 +291,9 @@ open_repo_file (filename)
if (! p) if (! p)
p = s + strlen (s); p = s + strlen (s);
obstack_grow (&permanent_obstack, s, p - s); repo_name = xmalloc (p - s + 5);
repo_name = obstack_copy0 (&permanent_obstack, ".rpo", 4); memcpy (repo_name, s, p - s);
memcpy (repo_name + (p - s), ".rpo", 5);
repo_file = fopen (repo_name, "r"); repo_file = fopen (repo_name, "r");
} }
@ -332,16 +332,13 @@ init_repo (filename)
switch (buf[0]) switch (buf[0])
{ {
case 'A': case 'A':
old_args = obstack_copy0 (&permanent_obstack, buf + 2, old_args = ggc_strdup (buf + 2);
strlen (buf + 2));
break; break;
case 'D': case 'D':
old_dir = obstack_copy0 (&permanent_obstack, buf + 2, old_dir = ggc_strdup (buf + 2);
strlen (buf + 2));
break; break;
case 'M': case 'M':
old_main = obstack_copy0 (&permanent_obstack, buf + 2, old_main = ggc_strdup (buf + 2);
strlen (buf + 2));
break; break;
case 'C': case 'C':
case 'O': case 'O':

View File

@ -25,7 +25,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "real.h" #include "real.h"
#include "rtl.h" #include "rtl.h"
#include "tree.h" #include "tree.h"
#include "obstack.h"
#include "flags.h" #include "flags.h"
#include "regs.h" #include "regs.h"
#include "hard-reg-set.h" #include "hard-reg-set.h"
@ -118,8 +117,6 @@ struct store_by_pieces
int reverse; int reverse;
}; };
extern struct obstack permanent_obstack;
static rtx enqueue_insn PARAMS ((rtx, rtx)); static rtx enqueue_insn PARAMS ((rtx, rtx));
static unsigned HOST_WIDE_INT move_by_pieces_ninsns static unsigned HOST_WIDE_INT move_by_pieces_ninsns
PARAMS ((unsigned HOST_WIDE_INT, PARAMS ((unsigned HOST_WIDE_INT,

View File

@ -53,7 +53,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "recog.h" #include "recog.h"
#include "output.h" #include "output.h"
#include "basic-block.h" #include "basic-block.h"
#include "obstack.h"
#include "toplev.h" #include "toplev.h"
#include "hashtab.h" #include "hashtab.h"
#include "ggc.h" #include "ggc.h"
@ -6421,8 +6420,6 @@ expand_main_function ()
#endif #endif
} }
extern struct obstack permanent_obstack;
/* The PENDING_SIZES represent the sizes of variable-sized types. /* The PENDING_SIZES represent the sizes of variable-sized types.
Create RTL for the various sizes now (using temporary variables), Create RTL for the various sizes now (using temporary variables),
so that we can refer to the sizes from the RTL we are generating so that we can refer to the sizes from the RTL we are generating

View File

@ -45,10 +45,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "target.h" #include "target.h"
#include "langhooks.h" #include "langhooks.h"
#include "obstack.h"
extern struct obstack *function_maybepermanent_obstack;
/* Similar, but round to the next highest integer that meets the /* Similar, but round to the next highest integer that meets the
alignment. */ alignment. */
#define CEIL_ROUND(VALUE,ALIGN) (((VALUE) + (ALIGN) - 1) & ~((ALIGN)- 1)) #define CEIL_ROUND(VALUE,ALIGN) (((VALUE) + (ALIGN) - 1) & ~((ALIGN)- 1))

View File

@ -1,3 +1,14 @@
2002-08-04 Geoffrey Keating <geoffk@redhat.com>
* class.c: (permanent_obstack): Delete declaration.
* constants.c: (permanent_obstack): Delete declaration.
* except.c: (permanent_obstack): Delete declaration.
* expr.c: (permanent_obstack): Delete declaration.
* jcf-parse.c: (permanent_obstack): Delete declaration.
(saveable_obstack): Delete declaration.
* parse.h: (permanent_obstack): Delete declaration.
* typeck.c: (permanent_obstack): Delete declaration.
2002-08-04 Joseph S. Myers <jsm@polyomino.org.uk> 2002-08-04 Joseph S. Myers <jsm@polyomino.org.uk>
* gcj.texi (version-gcc): Increase to 3.3. * gcj.texi (version-gcc): Increase to 3.3.

View File

@ -60,7 +60,6 @@ static tree build_method_symbols_entry PARAMS ((tree));
static GTY(()) rtx registerClass_libfunc; static GTY(()) rtx registerClass_libfunc;
static GTY(()) rtx registerResource_libfunc; static GTY(()) rtx registerResource_libfunc;
extern struct obstack permanent_obstack;
struct obstack temporary_obstack; struct obstack temporary_obstack;
/* The compiler generates different code depending on whether or not /* The compiler generates different code depending on whether or not

View File

@ -29,8 +29,6 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
#include "toplev.h" #include "toplev.h"
#include "ggc.h" #include "ggc.h"
extern struct obstack permanent_obstack;
static void set_constant_entry PARAMS ((CPool *, int, int, jword)); static void set_constant_entry PARAMS ((CPool *, int, int, jword));
static int find_class_or_string_constant PARAMS ((CPool *, int, tree)); static int find_class_or_string_constant PARAMS ((CPool *, int, tree));
static int find_name_and_type_constant PARAMS ((CPool *, tree, tree)); static int find_name_and_type_constant PARAMS ((CPool *, tree, tree));

View File

@ -44,8 +44,6 @@ static void link_handler PARAMS ((struct eh_range *, struct eh_range *));
static void check_start_handlers PARAMS ((struct eh_range *, int)); static void check_start_handlers PARAMS ((struct eh_range *, int));
static void free_eh_ranges PARAMS ((struct eh_range *range)); static void free_eh_ranges PARAMS ((struct eh_range *range));
extern struct obstack permanent_obstack;
struct eh_range *current_method_handlers; struct eh_range *current_method_handlers;
struct eh_range *current_try_block = NULL; struct eh_range *current_try_block = NULL;

View File

@ -86,7 +86,6 @@ static int emit_init_test_initialization PARAMS ((void **entry,
static int get_offset_table_index PARAMS ((tree)); static int get_offset_table_index PARAMS ((tree));
static GTY(()) tree operand_type[59]; static GTY(()) tree operand_type[59];
extern struct obstack permanent_obstack;
static GTY(()) tree methods_ident; static GTY(()) tree methods_ident;
static GTY(()) tree ncode_ident; static GTY(()) tree ncode_ident;

View File

@ -66,9 +66,7 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
#include "jcf.h" #include "jcf.h"
extern struct obstack *saveable_obstack;
extern struct obstack temporary_obstack; extern struct obstack temporary_obstack;
extern struct obstack permanent_obstack;
/* Set to non-zero value in order to emit class initilization code /* Set to non-zero value in order to emit class initilization code
before static field references. */ before static field references. */

View File

@ -31,7 +31,6 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
/* Extern global variable declarations */ /* Extern global variable declarations */
extern int java_error_count; extern int java_error_count;
extern struct obstack temporary_obstack; extern struct obstack temporary_obstack;
extern struct obstack permanent_obstack;
extern int quiet_flag; extern int quiet_flag;
#ifndef JC1_LITE #ifndef JC1_LITE

View File

@ -44,7 +44,6 @@ static tree lookup_do PARAMS ((tree, tree, tree, tree, tree (*)(tree)));
static tree build_null_signature PARAMS ((tree)); static tree build_null_signature PARAMS ((tree));
tree * type_map; tree * type_map;
extern struct obstack permanent_obstack;
/* Set the type of the local variable with index SLOT to TYPE. */ /* Set the type of the local variable with index SLOT to TYPE. */

View File

@ -48,8 +48,7 @@ void
debug_tree (node) debug_tree (node)
tree node; tree node;
{ {
table = (struct bucket **) permalloc (HASH_SIZE * sizeof (struct bucket *)); table = (struct bucket **) xcalloc (HASH_SIZE, sizeof (struct bucket *));
memset ((char *) table, 0, HASH_SIZE * sizeof (struct bucket *));
print_node (stderr, "", node, 0); print_node (stderr, "", node, 0);
table = 0; table = 0;
fprintf (stderr, "\n"); fprintf (stderr, "\n");
@ -213,7 +212,7 @@ print_node (file, prefix, node, indent)
} }
/* Add this node to the table. */ /* Add this node to the table. */
b = (struct bucket *) permalloc (sizeof (struct bucket)); b = (struct bucket *) xmalloc (sizeof (struct bucket));
b->node = node; b->node = node;
b->next = table[hash]; b->next = table[hash];
table[hash] = b; table[hash] = b;

View File

@ -361,8 +361,7 @@ gen_fake_label ()
char *labelstr; char *labelstr;
SDB_GENERATE_FAKE (label, unnamed_struct_number); SDB_GENERATE_FAKE (label, unnamed_struct_number);
unnamed_struct_number++; unnamed_struct_number++;
labelstr = (char *) permalloc (strlen (label) + 1); labelstr = xstrdup (label);
strcpy (labelstr, label);
return labelstr; return labelstr;
} }

View File

@ -334,7 +334,7 @@ static char *
pfgets (stream) pfgets (stream)
FILE *stream; FILE *stream;
{ {
return obstack_fgets (stream, &permanent_obstack); return xstrdup (tfgets (stream));
} }
/* Real tlink code. */ /* Real tlink code. */

View File

@ -5161,7 +5161,7 @@ lang_independent_init (no_backend)
init_ggc (); init_ggc ();
init_stringpool (); init_stringpool ();
init_obstacks (); init_ttree ();
if (no_backend) if (no_backend)
return; return;

View File

@ -27,11 +27,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
nodes of that code. nodes of that code.
It is intended to be language-independent, but occasionally It is intended to be language-independent, but occasionally
calls language-dependent routines defined (for C) in typecheck.c. calls language-dependent routines defined (for C) in typecheck.c. */
The low-level allocation routines oballoc and permalloc
are used also for allocating many other kinds of objects
by all passes of the compiler. */
#include "config.h" #include "config.h"
#include "system.h" #include "system.h"
@ -51,10 +47,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
/* obstack.[ch] explicitly declined to prototype this. */ /* obstack.[ch] explicitly declined to prototype this. */
extern int _obstack_allocated_p PARAMS ((struct obstack *h, PTR obj)); extern int _obstack_allocated_p PARAMS ((struct obstack *h, PTR obj));
/* Objects allocated on this obstack last forever. */
struct obstack permanent_obstack;
#ifdef GATHER_STATISTICS #ifdef GATHER_STATISTICS
/* Statistics-gathering stuff. */ /* Statistics-gathering stuff. */
typedef enum typedef enum
@ -136,43 +128,17 @@ static int type_hash_marked_p PARAMS ((const void *));
tree global_trees[TI_MAX]; tree global_trees[TI_MAX];
tree integer_types[itk_none]; tree integer_types[itk_none];
/* Init the principal obstacks. */ /* Init tree.c. */
void void
init_obstacks () init_ttree ()
{ {
gcc_obstack_init (&permanent_obstack);
/* Initialize the hash table of types. */ /* Initialize the hash table of types. */
type_hash_table = htab_create (TYPE_HASH_INITIAL_SIZE, type_hash_hash, type_hash_table = htab_create (TYPE_HASH_INITIAL_SIZE, type_hash_hash,
type_hash_eq, 0); type_hash_eq, 0);
} }
/* Allocate SIZE bytes in the permanent obstack
and return a pointer to them. */
char *
permalloc (size)
int size;
{
return (char *) obstack_alloc (&permanent_obstack, size);
}
/* Allocate NELEM items of SIZE bytes in the permanent obstack
and return a pointer to them. The storage is cleared before
returning the value. */
char *
perm_calloc (nelem, size)
int nelem;
long size;
{
char *rval = (char *) obstack_alloc (&permanent_obstack, nelem * size);
memset (rval, 0, nelem * size);
return rval;
}
/* The name of the object as the assembler will see it (but before any /* The name of the object as the assembler will see it (but before any
translations made by ASM_OUTPUT_LABELREF). Often this is the same translations made by ASM_OUTPUT_LABELREF). Often this is the same
as DECL_NAME. It is an IDENTIFIER_NODE. */ as DECL_NAME. It is an IDENTIFIER_NODE. */
@ -4359,7 +4325,6 @@ dump_tree_statistics ()
#else #else
fprintf (stderr, "(No per-node statistics)\n"); fprintf (stderr, "(No per-node statistics)\n");
#endif #endif
print_obstack_statistics ("permanent_obstack", &permanent_obstack);
print_type_hash_statistics (); print_type_hash_statistics ();
(*lang_hooks.print_statistics) (); (*lang_hooks.print_statistics) ();
} }

View File

@ -2103,8 +2103,6 @@ extern GTY(()) tree integer_types[itk_none];
statistical reports, not code generation. */ statistical reports, not code generation. */
extern double approx_sqrt PARAMS ((double)); extern double approx_sqrt PARAMS ((double));
extern char *permalloc PARAMS ((int));
extern char *expralloc PARAMS ((int));
extern tree decl_assembler_name PARAMS ((tree)); extern tree decl_assembler_name PARAMS ((tree));
/* Compute the number of bytes occupied by 'node'. This routine only /* Compute the number of bytes occupied by 'node'. This routine only
@ -2730,7 +2728,6 @@ extern tree builtin_function PARAMS ((const char *, tree, int,
const char *, tree)); const char *, tree));
/* In tree.c */ /* In tree.c */
extern char *perm_calloc PARAMS ((int, long));
extern void clean_symbol_name PARAMS ((char *)); extern void clean_symbol_name PARAMS ((char *));
extern tree get_file_function_name_long PARAMS ((const char *)); extern tree get_file_function_name_long PARAMS ((const char *));
extern tree get_set_constructor_bits PARAMS ((tree, char *, int)); extern tree get_set_constructor_bits PARAMS ((tree, char *, int));
@ -2891,7 +2888,7 @@ extern int real_onep PARAMS ((tree));
extern int real_twop PARAMS ((tree)); extern int real_twop PARAMS ((tree));
extern int real_minus_onep PARAMS ((tree)); extern int real_minus_onep PARAMS ((tree));
extern void gcc_obstack_init PARAMS ((struct obstack *)); extern void gcc_obstack_init PARAMS ((struct obstack *));
extern void init_obstacks PARAMS ((void)); extern void init_ttree PARAMS ((void));
extern void build_common_tree_nodes PARAMS ((int)); extern void build_common_tree_nodes PARAMS ((int));
extern void build_common_tree_nodes_2 PARAMS ((int)); extern void build_common_tree_nodes_2 PARAMS ((int));

View File

@ -1205,8 +1205,7 @@ assemble_start_function (decl, fnname)
char *name; char *name;
p = (* targetm.strip_name_encoding) (fnname); p = (* targetm.strip_name_encoding) (fnname);
name = permalloc (strlen (p) + 1); name = xstrdup (p);
strcpy (name, p);
if (! DECL_WEAK (decl) && ! DECL_ONE_ONLY (decl)) if (! DECL_WEAK (decl) && ! DECL_ONE_ONLY (decl))
first_global_object_name = name; first_global_object_name = name;
@ -1529,8 +1528,7 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
char *xname; char *xname;
p = (* targetm.strip_name_encoding) (name); p = (* targetm.strip_name_encoding) (name);
xname = permalloc (strlen (p) + 1); xname = xstrdup (p);
strcpy (xname, p);
first_global_object_name = xname; first_global_object_name = xname;
} }