Commit 41c32c98 by Neil Booth Committed by Neil Booth

cpphash.h (NOTE_ESC_NL, [...]): Remove.

	* cpphash.h (NOTE_ESC_NL, NOTE_ESC_SPACE_NL, NOTE_TRIGRAPH,
	NOTE_NEWLINE): Remove.
	* cpplex.c (_cpp_clean_line, _cpp_process_line_notes): Update
	to handle new form of line note type.

From-SVN: r65860
parent c6a2438a
2003-04-20 Neil Booth <neil@daikokuya.co.uk>
* cpphash.h (NOTE_ESC_NL, NOTE_ESC_SPACE_NL, NOTE_TRIGRAPH,
NOTE_NEWLINE): Remove.
* cpplex.c (_cpp_clean_line, _cpp_process_line_notes): Update
to handle new form of line note type.
2003-04-20 Zack Weinberg <zack@codesourcery.com> 2003-04-20 Zack Weinberg <zack@codesourcery.com>
* target.h (encode_section_info): Add new argument carrying * target.h (encode_section_info): Add new argument carrying
......
...@@ -243,11 +243,10 @@ struct _cpp_line_note ...@@ -243,11 +243,10 @@ struct _cpp_line_note
/* Location in the clean line the note refers to. */ /* Location in the clean line the note refers to. */
const uchar *pos; const uchar *pos;
/* Type of note. */ /* Type of note. The 9 'from' trigraph characters represent those
enum { NOTE_ESC_NL = 0, trigraphs, '\\' an escaped newline, ' ' an escaped newline with
NOTE_ESC_SPACE_NL, intervening space, and anything else is invalid. */
NOTE_TRIGRAPH, unsigned int type;
NOTE_NEWLINE } type;
}; };
/* Represents the contents of a file cpplib has read in. */ /* Represents the contents of a file cpplib has read in. */
......
...@@ -148,15 +148,14 @@ _cpp_clean_line (pfile) ...@@ -148,15 +148,14 @@ _cpp_clean_line (pfile)
if (p == buffer->next_line || p[-1] != '\\') if (p == buffer->next_line || p[-1] != '\\')
break; break;
add_line_note (buffer, p - 1, add_line_note (buffer, p - 1, p != d ? ' ': '\\');
p != d ? NOTE_ESC_SPACE_NL: NOTE_ESC_NL);
d = p - 2; d = p - 2;
buffer->next_line = p - 1; buffer->next_line = p - 1;
} }
else if (c == '?' && s[1] == '?' && _cpp_trigraph_map[s[2]]) else if (c == '?' && s[1] == '?' && _cpp_trigraph_map[s[2]])
{ {
/* Add a note regardless, for the benefit of -Wtrigraphs. */ /* Add a note regardless, for the benefit of -Wtrigraphs. */
add_line_note (buffer, d, NOTE_TRIGRAPH); add_line_note (buffer, d, s[2]);
if (CPP_OPTION (pfile, trigraphs)) if (CPP_OPTION (pfile, trigraphs))
{ {
*d = _cpp_trigraph_map[s[2]]; *d = _cpp_trigraph_map[s[2]];
...@@ -178,7 +177,8 @@ _cpp_clean_line (pfile) ...@@ -178,7 +177,8 @@ _cpp_clean_line (pfile)
} }
*d = '\n'; *d = '\n';
add_line_note (buffer, d + 1, NOTE_NEWLINE); /* A sentinel note that should never be processed. */
add_line_note (buffer, d + 1, '\n');
buffer->next_line = s + 1; buffer->next_line = s + 1;
} }
...@@ -202,32 +202,12 @@ _cpp_process_line_notes (pfile, in_comment) ...@@ -202,32 +202,12 @@ _cpp_process_line_notes (pfile, in_comment)
buffer->cur_note++; buffer->cur_note++;
col = CPP_BUF_COLUMN (buffer, note->pos + 1); col = CPP_BUF_COLUMN (buffer, note->pos + 1);
switch (note->type) if (note->type == '\\' || note->type == ' ')
{ {
case NOTE_NEWLINE: if (note->type == ' ' && !in_comment)
/* This note is a kind of sentinel we should never reach. */
abort ();
case NOTE_TRIGRAPH:
if (!in_comment && CPP_OPTION (pfile, warn_trigraphs))
{
if (CPP_OPTION (pfile, trigraphs))
cpp_error_with_line (pfile, DL_WARNING, pfile->line, col,
"trigraph converted to %c",
(int) note->pos[0]);
else
cpp_error_with_line (pfile, DL_WARNING, pfile->line, col,
"trigraph ??%c ignored",
(int) note->pos[2]);
}
break;
case NOTE_ESC_SPACE_NL:
if (!in_comment)
cpp_error_with_line (pfile, DL_WARNING, pfile->line, col, cpp_error_with_line (pfile, DL_WARNING, pfile->line, col,
"backslash and newline separated by space"); "backslash and newline separated by space");
/* Fall through... */
case NOTE_ESC_NL:
if (buffer->next_line > buffer->rlimit) if (buffer->next_line > buffer->rlimit)
{ {
cpp_error_with_line (pfile, DL_PEDWARN, pfile->line, col, cpp_error_with_line (pfile, DL_PEDWARN, pfile->line, col,
...@@ -239,6 +219,23 @@ _cpp_process_line_notes (pfile, in_comment) ...@@ -239,6 +219,23 @@ _cpp_process_line_notes (pfile, in_comment)
buffer->line_base = note->pos; buffer->line_base = note->pos;
pfile->line++; pfile->line++;
} }
else if (_cpp_trigraph_map[note->type])
{
if (!in_comment && CPP_OPTION (pfile, warn_trigraphs))
{
if (CPP_OPTION (pfile, trigraphs))
cpp_error_with_line (pfile, DL_WARNING, pfile->line, col,
"trigraph ??%c converted to %c",
note->type,
(int) _cpp_trigraph_map[note->type]);
else
cpp_error_with_line (pfile, DL_WARNING, pfile->line, col,
"trigraph ??%c ignored",
note->type);
}
}
else
abort ();
} }
} }
......
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