summaryrefslogtreecommitdiff
path: root/gcc/gensupport.c
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2000-05-06 22:30:13 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2000-05-06 22:30:13 +0000
commit96d905e54aa10708be91d109782d9718ae6d2415 (patch)
tree51eb3b35d4bfb3e523bdf3eb12a95f8b995170ba /gcc/gensupport.c
parent41d97855537eb82afe92fd74f982bc012626b8db (diff)
downloadgcc-96d905e54aa10708be91d109782d9718ae6d2415.tar.gz
* Makefile.in (gensupport.o): Compile for the host.
(host-prefix gensuuprt.o): Remove. (genflags.o): Depend on gensupport.h and OBSTACK_H. (genattrtab.o): Likewise. (gencodes.o): Depend on gensupport.h. (genemit.o, genopinit.o, genrecog.o, genextract.o): Likewise. (genpeep.o, genattr.o, genoutput.o): Likewise. * gensupport.c (obstack, rtl_obstack): New. (init_md_reader): Initialize rtl_obstack. * gensupport.h (rtl_obstack): Declare. (message_with_line): Declare. * genattr.c: Remove all traces of obstack manipulation. * gencodes.c, genconfig.c, genemit.c, genextract.c: Likewise. * genopinit.c, genoutput.c, genpeep.c, genrecog.c: Likewise. * genattrtab.c (obstack, rtl_obstack): Remove. (main): Don't init rtl_obstack. * genflags.c: Likewise. * genrecog.c (message_with_line): Move ... * gensupport.c: ... here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33742 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/gensupport.c')
-rw-r--r--gcc/gensupport.c42
1 files changed, 35 insertions, 7 deletions
diff --git a/gcc/gensupport.c b/gcc/gensupport.c
index 9e77a97c057..2de3f4481c3 100644
--- a/gcc/gensupport.c
+++ b/gcc/gensupport.c
@@ -1,6 +1,4 @@
-/* Read machine descriptions, return top level rtx for use by the
- various generation passes.
-
+/* Support routines for the various generation passes.
Copyright (C) 2000 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -23,9 +21,17 @@
#include "hconfig.h"
#include "system.h"
#include "rtl.h"
+#include "obstack.h"
#include "errors.h"
#include "gensupport.h"
+
+static struct obstack obstack;
+struct obstack *rtl_obstack = &obstack;
+
+#define obstack_chunk_alloc xmalloc
+#define obstack_chunk_free free
+
static FILE *input_file;
static int sequence_num;
@@ -39,7 +45,30 @@ static struct queue_elem *rtx_ready_queue;
static void remove_constraints PARAMS ((rtx));
static void process_rtx PARAMS ((rtx *));
+
+void
+message_with_line VPARAMS ((int lineno, const char *msg, ...))
+{
+#ifndef ANSI_PROTOTYPES
+ int lineno;
+ const char *msg;
+#endif
+ va_list ap;
+
+ VA_START (ap, msg);
+
+#ifndef ANSI_PROTOTYPES
+ lineno = va_arg (ap, int);
+ msg = va_arg (ap, const char *);
+#endif
+ fprintf (stderr, "%s:%d: ", read_rtx_filename, lineno);
+ vfprintf (stderr, msg, ap);
+ fputc ('\n', stderr);
+
+ va_end (ap);
+}
+
/* Recursively remove constraints from an rtx. */
static void
@@ -125,23 +154,22 @@ process_rtx (desc)
rtx_ready_queue = elem;
}
}
-
+
/* The entry point for initializing the reader. */
int
init_md_reader (filename)
const char *filename;
{
-
+ read_rtx_filename = filename;
input_file = fopen (filename, "r");
-
if (input_file == 0)
{
perror (filename);
return FATAL_EXIT_CODE;
}
- read_rtx_filename = filename;
+ obstack_init (rtl_obstack);
sequence_num = 0;
rtx_ready_queue = NULL;