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:
parent
86a0cbcb9f
commit
6d9f628e05
|
@ -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,
|
||||||
|
|
|
@ -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) \
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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));
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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. */
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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++ = '_';
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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; }
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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':
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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))
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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));
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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. */
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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. */
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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. */
|
||||||
|
|
|
@ -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;
|
||||||
|
|
41
gcc/tree.c
41
gcc/tree.c
|
@ -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) ();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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));
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue