diff options
author | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-06-10 20:23:00 +0000 |
---|---|---|
committer | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-06-10 20:23:00 +0000 |
commit | 606cf8b8135748e961585af5572af62a9a0551f1 (patch) | |
tree | 91d59b44f33747a188102e54bc43cca44943e99a /gcc | |
parent | ac0640e5d6abc7229a7f88c18c415f4c6bcb8764 (diff) | |
download | gcc-606cf8b8135748e961585af5572af62a9a0551f1.tar.gz |
gcc/
* read-md.h (read_char): Increment read_md_lineno after reading '\n'.
(unread_char): Decrement read_md_lineno after putting back '\n'.
* read-md.c (fatal_with_file_and_line): Push back any characters
that we decide not to add to the context.
(read_skip_spaces): Don't increment read_md_lineno here. Avoid using
fatal_expected_char in cases where '/' ends a line (for example).
(read_name): Don't increment read_md_lineno here.
(read_escape): Likewise.
(read_quoted_string): Likewise.
(read_braced_string): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@160576 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/read-md.c | 32 | ||||
-rw-r--r-- | gcc/read-md.h | 9 |
3 files changed, 33 insertions, 21 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c40d0a168b0..aeb277f8aef 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,18 @@ 2010-06-10 Richard Sandiford <rdsandiford@googlemail.com> + * read-md.h (read_char): Increment read_md_lineno after reading '\n'. + (unread_char): Decrement read_md_lineno after putting back '\n'. + * read-md.c (fatal_with_file_and_line): Push back any characters + that we decide not to add to the context. + (read_skip_spaces): Don't increment read_md_lineno here. Avoid using + fatal_expected_char in cases where '/' ends a line (for example). + (read_name): Don't increment read_md_lineno here. + (read_escape): Likewise. + (read_quoted_string): Likewise. + (read_braced_string): Likewise. + +2010-06-10 Richard Sandiford <rdsandiford@googlemail.com> + * Makefile.in (READ_MD_H): Add $(HASHTAB_H). (build/genconstants.o): Depend on $(READ_MD_H) gensupport.h. * genconstants.c: Include read-md.h. diff --git a/gcc/read-md.c b/gcc/read-md.c index 07882aa240d..140292189fb 100644 --- a/gcc/read-md.c +++ b/gcc/read-md.c @@ -259,7 +259,10 @@ fatal_with_file_and_line (const char *msg, ...) if (c == EOF) break; if (c == '\r' || c == '\n') - break; + { + unread_char (c); + break; + } context[i] = c; } context[i] = '\0'; @@ -298,18 +301,13 @@ read_skip_spaces (void) c = read_char (); switch (c) { - case '\n': - read_md_lineno++; - break; - - case ' ': case '\t': case '\f': case '\r': + case ' ': case '\t': case '\f': case '\r': case '\n': break; case ';': do c = read_char (); while (c != '\n' && c != EOF); - read_md_lineno++; break; case '/': @@ -317,14 +315,15 @@ read_skip_spaces (void) int prevc; c = read_char (); if (c != '*') - fatal_expected_char ('*', c); + { + unread_char (c); + fatal_with_file_and_line ("stray '/' in file"); + } prevc = 0; while ((c = read_char ()) && c != EOF) { - if (c == '\n') - read_md_lineno++; - else if (prevc == '*' && c == '/') + if (prevc == '*' && c == '/') break; prevc = c; } @@ -370,8 +369,6 @@ read_name (struct md_name *name) if (i == 0) fatal_with_file_and_line ("missing name or number"); - if (c == '\n') - read_md_lineno++; name->buffer[i] = 0; name->string = name->buffer; @@ -406,7 +403,6 @@ read_escape (void) { /* Backslash-newline is replaced by nothing, as in C. */ case '\n': - read_md_lineno++; return; /* \" \' \\ are replaced by the second character. */ @@ -458,9 +454,7 @@ read_quoted_string (void) while (1) { c = read_char (); /* Read the string */ - if (c == '\n') - read_md_lineno++; - else if (c == '\\') + if (c == '\\') { read_escape (); continue; @@ -491,9 +485,7 @@ read_braced_string (void) { c = read_char (); /* Read the string */ - if (c == '\n') - read_md_lineno++; - else if (c == '{') + if (c == '{') brace_depth++; else if (c == '}') brace_depth--; diff --git a/gcc/read-md.h b/gcc/read-md.h index 2edd3ce4c21..0ebebde057d 100644 --- a/gcc/read-md.h +++ b/gcc/read-md.h @@ -51,7 +51,12 @@ extern struct obstack string_obstack; static inline int read_char (void) { - return getc (read_md_file); + int ch; + + ch = getc (read_md_file); + if (ch == '\n') + read_md_lineno++; + return ch; } /* Put back CH, which was the last character read from the MD file. */ @@ -59,6 +64,8 @@ read_char (void) static inline void unread_char (int ch) { + if (ch == '\n') + read_md_lineno--; ungetc (ch, read_md_file); } |