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
This commit is contained in:
parent
c6a2438aaf
commit
41c32c985f
@ -1,3 +1,10 @@
|
||||
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>
|
||||
|
||||
* target.h (encode_section_info): Add new argument carrying
|
||||
|
@ -243,11 +243,10 @@ struct _cpp_line_note
|
||||
/* Location in the clean line the note refers to. */
|
||||
const uchar *pos;
|
||||
|
||||
/* Type of note. */
|
||||
enum { NOTE_ESC_NL = 0,
|
||||
NOTE_ESC_SPACE_NL,
|
||||
NOTE_TRIGRAPH,
|
||||
NOTE_NEWLINE } type;
|
||||
/* Type of note. The 9 'from' trigraph characters represent those
|
||||
trigraphs, '\\' an escaped newline, ' ' an escaped newline with
|
||||
intervening space, and anything else is invalid. */
|
||||
unsigned int type;
|
||||
};
|
||||
|
||||
/* Represents the contents of a file cpplib has read in. */
|
||||
|
51
gcc/cpplex.c
51
gcc/cpplex.c
@ -148,15 +148,14 @@ _cpp_clean_line (pfile)
|
||||
if (p == buffer->next_line || p[-1] != '\\')
|
||||
break;
|
||||
|
||||
add_line_note (buffer, p - 1,
|
||||
p != d ? NOTE_ESC_SPACE_NL: NOTE_ESC_NL);
|
||||
add_line_note (buffer, p - 1, p != d ? ' ': '\\');
|
||||
d = p - 2;
|
||||
buffer->next_line = p - 1;
|
||||
}
|
||||
else if (c == '?' && s[1] == '?' && _cpp_trigraph_map[s[2]])
|
||||
{
|
||||
/* 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))
|
||||
{
|
||||
*d = _cpp_trigraph_map[s[2]];
|
||||
@ -178,7 +177,8 @@ _cpp_clean_line (pfile)
|
||||
}
|
||||
|
||||
*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;
|
||||
}
|
||||
|
||||
@ -202,32 +202,12 @@ _cpp_process_line_notes (pfile, in_comment)
|
||||
buffer->cur_note++;
|
||||
col = CPP_BUF_COLUMN (buffer, note->pos + 1);
|
||||
|
||||
switch (note->type)
|
||||
if (note->type == '\\' || note->type == ' ')
|
||||
{
|
||||
case NOTE_NEWLINE:
|
||||
/* 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)
|
||||
if (note->type == ' ' && !in_comment)
|
||||
cpp_error_with_line (pfile, DL_WARNING, pfile->line, col,
|
||||
"backslash and newline separated by space");
|
||||
/* Fall through... */
|
||||
case NOTE_ESC_NL:
|
||||
|
||||
if (buffer->next_line > buffer->rlimit)
|
||||
{
|
||||
cpp_error_with_line (pfile, DL_PEDWARN, pfile->line, col,
|
||||
@ -239,6 +219,23 @@ _cpp_process_line_notes (pfile, in_comment)
|
||||
buffer->line_base = note->pos;
|
||||
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 ();
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user