Commit 57406c63 by Richard Sandiford Committed by Richard Sandiford

rtl.h (read_rtx): Change prototype.

	* rtl.h (read_rtx): Change prototype.
	* read-rtl.c (read_rtx): Provide the caller with both an rtx and a
	line number.  Return true on success.
	* gensupport.c (process_include, init_md_reader_args_cb): Adjust
	callers accordingly.

From-SVN: r86657
parent 6a6bfc8e
2004-08-26 Richard Sandiford <rsandifo@redhat.com>
* rtl.h (read_rtx): Change prototype.
* read-rtl.c (read_rtx): Provide the caller with both an rtx and a
line number. Return true on success.
* gensupport.c (process_include, init_md_reader_args_cb): Adjust
callers accordingly.
2004-08-26 Richard Henderson <rth@redhat.com>
* c-typeck.c (build_offsetof): Remove.
......
......@@ -246,20 +246,8 @@ process_include (rtx desc, int lineno)
read_rtx_lineno = 1;
/* Read the entire file. */
while (1)
{
rtx desc;
int c;
c = read_skip_spaces (input_file);
if (c == EOF)
break;
ungetc (c, input_file);
lineno = read_rtx_lineno;
desc = read_rtx (input_file);
while (read_rtx (input_file, &desc, &lineno))
process_rtx (desc, lineno);
}
/* Do not free pathname. It is attached to the various rtx queue
elements. */
......@@ -911,9 +899,10 @@ int
init_md_reader_args_cb (int argc, char **argv, bool (*parse_opt)(const char *))
{
FILE *input_file;
int i;
int i, lineno;
size_t ix;
char *lastsl;
rtx desc;
for (i = 1; i < argc; i++)
{
......@@ -991,19 +980,8 @@ init_md_reader_args_cb (int argc, char **argv, bool (*parse_opt)(const char *))
sequence_num = 0;
/* Read the entire file. */
while (1)
{
rtx desc;
int lineno;
int c = read_skip_spaces (input_file);
if (c == EOF)
break;
ungetc (c, input_file);
lineno = read_rtx_lineno;
desc = read_rtx (input_file);
while (read_rtx (input_file, &desc, &lineno))
process_rtx (desc, lineno);
}
fclose (input_file);
/* Process define_cond_exec patterns. */
......
......@@ -1066,16 +1066,20 @@ check_code_macro (struct mapping *macro, FILE *infile)
bellwether_codes[macro->index] = bellwether;
}
/* Read an rtx in printed representation from INFILE
and return an actual rtx in core constructed accordingly.
/* Read an rtx in printed representation from INFILE and store its
core representation in *X. Also store the line number of the
opening '(' in *LINENO. Return true on success or false if the
end of file has been reached.
read_rtx is not used in the compiler proper, but rather in
the utilities gen*.c that construct C code from machine descriptions. */
rtx
read_rtx (FILE *infile)
bool
read_rtx (FILE *infile, rtx *x, int *lineno)
{
static rtx queue_head, queue_next;
rtx return_rtx;
static int queue_lineno;
int c;
/* Do one-time initialization. */
if (queue_head == 0)
......@@ -1087,8 +1091,13 @@ read_rtx (FILE *infile)
if (queue_next == 0)
{
queue_next = queue_head;
c = read_skip_spaces (infile);
if (c == EOF)
return false;
ungetc (c, infile);
queue_next = queue_head;
queue_lineno = read_rtx_lineno;
XEXP (queue_next, 0) = read_rtx_1 (infile);
XEXP (queue_next, 1) = 0;
......@@ -1096,10 +1105,11 @@ read_rtx (FILE *infile)
htab_traverse (codes.macros, apply_macro_traverse, queue_next);
}
return_rtx = XEXP (queue_next, 0);
*x = XEXP (queue_next, 0);
*lineno = queue_lineno;
queue_next = XEXP (queue_next, 1);
return return_rtx;
return true;
}
/* Subroutine of read_rtx that reads one construct from INFILE but
......
......@@ -2147,7 +2147,7 @@ struct md_constant { char *name, *value; };
/* In read-rtl.c */
extern int read_skip_spaces (FILE *);
extern rtx read_rtx (FILE *);
extern bool read_rtx (FILE *, rtx *, int *);
extern const char *read_rtx_filename;
extern int read_rtx_lineno;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment