Commit 9c4e96eb by David Malcolm Committed by David Malcolm

Add some functions for use by the RTL frontend.

gcc/ChangeLog:
	* read-md.c (rtx_reader::require_char): New method.
	(require_char_ws): Convert from function to...
	(rtx_reader::require_char_ws): ...method.
	(rtx_reader::require_word_ws): New method.
	* read-md.h (rtx_reader::require_char): New method decl.
	(require_char_ws): Remove global decl in favor of...
	(rtx_reader::require_char_ws): ...new method decl.
	(rtx_reader::require_word_ws): New method decl.
	(rtx_reader::peek_char): New method decl.

From-SVN: r243376
parent 8e1d640f
2016-12-07 David Malcolm <dmalcolm@redhat.com>
* read-md.c (rtx_reader::require_char): New method.
(require_char_ws): Convert from function to...
(rtx_reader::require_char_ws): ...method.
(rtx_reader::require_word_ws): New method.
* read-md.h (rtx_reader::require_char): New method decl.
(require_char_ws): Remove global decl in favor of...
(rtx_reader::require_char_ws): ...new method decl.
(rtx_reader::require_word_ws): New method decl.
(rtx_reader::peek_char): New method decl.
2016-12-07 Thomas Preud'homme <thomas.preudhomme@arm.com>
PR rtl-optimization/78617
......@@ -340,17 +340,40 @@ read_skip_spaces (void)
}
}
/* Consume the next character, issuing a fatal error if it is not
EXPECTED. */
void
rtx_reader::require_char (char expected)
{
int ch = read_char ();
if (ch != expected)
fatal_expected_char (expected, ch);
}
/* Consume any whitespace, then consume the next non-whitespace
character, issuing a fatal error if it is not EXPECTED. */
void
require_char_ws (char expected)
rtx_reader::require_char_ws (char expected)
{
int ch = read_skip_spaces ();
if (ch != expected)
fatal_expected_char (expected, ch);
}
/* Consume any whitespace, then consume the next word (as per read_name),
issuing a fatal error if it is not EXPECTED. */
void
rtx_reader::require_word_ws (const char *expected)
{
struct md_name name;
read_name (&name);
if (strcmp (name.string, expected))
fatal_with_file_and_line ("missing '%s'", expected);
}
/* Read the next character from the file. */
int
......@@ -386,6 +409,16 @@ rtx_reader::unread_char (int ch)
ungetc (ch, m_read_md_file);
}
/* Peek at the next character from the file without consuming it. */
int
rtx_reader::peek_char (void)
{
int ch = read_char ();
unread_char (ch);
return ch;
}
/* Read an rtx code name into NAME. It is terminated by any of the
punctuation chars of rtx printed syntax. */
......
......@@ -116,6 +116,10 @@ class rtx_reader
char *read_braced_string ();
char *read_string (int star_if_braced);
void read_skip_construct (int depth, file_location loc);
void require_char (char expected);
void require_char_ws (char expected);
void require_word_ws (const char *expected);
int peek_char (void);
void set_md_ptr_loc (const void *ptr, const char *filename, int lineno);
const struct ptr_loc *get_md_ptr_loc (const void *ptr);
......@@ -269,7 +273,6 @@ extern void fatal_with_file_and_line (const char *, ...)
ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN;
extern void fatal_expected_char (int, int) ATTRIBUTE_NORETURN;
extern int read_skip_spaces (void);
extern void require_char_ws (char expected);
extern int n_comma_elts (const char *);
extern const char *scan_comma_elt (const char **);
extern void upcase_string (char *);
......
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