summaryrefslogtreecommitdiff
path: root/gcc/genoutput.c
diff options
context:
space:
mode:
authorzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>2001-03-06 09:52:35 +0000
committerzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>2001-03-06 09:52:35 +0000
commitf8d49ce1f2e38dba84b97538980ddba3f8518818 (patch)
tree7e22f9fda0da4355d8a7de6e9143a24ad9ac4db4 /gcc/genoutput.c
parent5bf4303e2b3e213e573bf72d7b7b05ad78e9b8bb (diff)
downloadgcc-f8d49ce1f2e38dba84b97538980ddba3f8518818.tar.gz
libiberty:
* aclocal.m4 (libiberty_AC_FUNC_C_ALLOCA): New. * configure.in: Replace all alloca logic with a simple use of the above new macro. * config.table: Kill *-*-beos* entry. * config/mh-beos: Delete. * configure, config.in: Regenerate. * Makefile.in (ALLOCA, HFILES): Kill. (REQUIRED_OFILES): Add alloca.o. (alloca.o): Depend on libiberty.h. (argv.o): Don't depend on alloca-conf.h. * alloca-conf.h: Delete. * alloca.c: Include libiberty.h. Kill all #ifdef emacs blocks. Provide the C alloca unconditionally. Use PTR where appropriate. Make i00afunc static. * argv.c: Don't include alloca-conf.h. include: * libiberty.h: Prototype C_alloca; define alloca to either __builtin_alloca or C_alloca as appropriate. gcc: * aclocal.m4 (AM_GNU_GETTEXT): Don't AC_REQUIRE AC_FUNC_ALLOCA. * configure, config.in: Regenerate. * config.gcc: Remove references to deleted files. * genattr.c, genattrtab.c, genextract.c, genoutput.c, genrecog.c, rtl.c: Do not use alloca anywhere. * Makefile.in, build-make, system.h, config/x-interix, config/x-svr4, config/xm-interix.h, config/xm-openbsd.h, config/alpha/xm-alpha.h, config/alpha/xm-vms.h, config/arc/xm-arc.h, config/arm/xm-arm.h, config/d30v/xm-d30v.h, config/dsp16xx/xm-dsp16xx.h, config/h8300/xm-h8300.h, config/i370/x-oe, config/i370/xm-linux.h, config/i386/x-aix, config/i386/x-beos, config/i386/x-ncr3000, config/i386/x-sco5, config/i386/xm-dgux.h, config/i860/x-sysv4, config/i960/xm-i960.h, config/m32r/xm-m32r.h, config/m68k/x-crds, config/m68k/x-dpx2, config/m68k/x-hp320, config/m68k/x-hp320g, config/m69k/x-mot3300, config/m68k/x-mot3300-gas, config/m68k/xm-amix.h, config/m68k/xm-hp320.h, config/m68k/xm-m68kv.h, config/m68k/xm-mot3300.h, config/m88k/x-dolph, config/m88k/x-sysv4, config/m88k/x-tekXD88, config/m88k/xm-m88k.h, config/mcore/xm-mcore.h, config/mips/x-iris, config/mips/x-iris3, config/mips/x-sni-svr4, config/mips/x-sysv, config/mips/xm-iris6.h, config/mips/xm-mips.h, config/mips/xm-nws3250v4.h, config/pa/x-hpux, config/pa/x-pa-mpeix, config/pa/xm-pa.h, config/pa/xm-pa64hpux.h, config/pa/xm-pahpux.h, config/pa/xm-papro.h, config/romp/xm-romp.h, config/rs6000/x-aix31, config/rs6000/x-aix41, config/rs6000/x-beos, config/rs6000/x-lynx, config/rs6000/x-mach, config/rs6000/x-rs6000, config/rs6000/x-sysv4, config/rs6000/xm-rs6000.h, config/rs6000/xm-sysv4.h, config/sh/xm-sh.h, config/sparc/x-sysv4, config/sparc/xm-linux.h, config/sparc/xm-pbd.h, config/sparc/xm-sparc.h, config/vax/xm-vms.h: Eradicate all references to alloca and related stuff. * config/xm-alloca.h, config/clipper/x-clix, config/i386/xm-sysv4.h, config/i860/x-fx2800, config/i860/x-sysv3, config/m88k/x-sysv3, config/sparc/xm-sol2.h, config/we32k/x-we32k: Delete (contained only alloca related hacks). * config/i386/xm-beos.h, config/rs6000/xm-beos.h: Just define USE_C_ALLOCA. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40259 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/genoutput.c')
-rw-r--r--gcc/genoutput.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/gcc/genoutput.c b/gcc/genoutput.c
index dc36d465dd6..c10b8e5d15a 100644
--- a/gcc/genoutput.c
+++ b/gcc/genoutput.c
@@ -241,13 +241,14 @@ output_prologue ()
/* We need to define all predicates used. Keep a list of those we
have defined so far. There normally aren't very many predicates
used, so a linked list should be fast enough. */
+struct predicate { const char *name; struct predicate *next; };
static void
output_predicate_decls ()
{
- struct predicate { const char *name; struct predicate *next; } *predicates = 0;
+ struct predicate *predicates = 0;
register struct operand_data *d;
- struct predicate *p;
+ struct predicate *p, *next;
for (d = odata; d; d = d->next)
if (d->predicate && d->predicate[0])
@@ -260,7 +261,7 @@ output_predicate_decls ()
{
printf ("extern int %s PARAMS ((rtx, enum machine_mode));\n",
d->predicate);
- p = (struct predicate *) alloca (sizeof (struct predicate));
+ p = (struct predicate *) xmalloc (sizeof (struct predicate));
p->name = d->predicate;
p->next = predicates;
predicates = p;
@@ -268,6 +269,11 @@ output_predicate_decls ()
}
printf ("\n\n");
+ for (p = predicates; p; p = next)
+ {
+ next = p->next;
+ free (p);
+ }
}
static void