summaryrefslogtreecommitdiff
path: root/gcc/cpptrad.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cpptrad.c')
-rw-r--r--gcc/cpptrad.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/gcc/cpptrad.c b/gcc/cpptrad.c
index 6315b1074f5..f6dc99d3fec 100644
--- a/gcc/cpptrad.c
+++ b/gcc/cpptrad.c
@@ -148,7 +148,7 @@ static const uchar *
copy_comment (cpp_reader *pfile, const uchar *cur, int in_define)
{
bool unterminated, copy = false;
- unsigned int from_line = pfile->line;
+ source_location src_loc = pfile->line;
cpp_buffer *buffer = pfile->buffer;
buffer->cur = cur;
@@ -158,7 +158,7 @@ copy_comment (cpp_reader *pfile, const uchar *cur, int in_define)
unterminated = _cpp_skip_block_comment (pfile);
if (unterminated)
- cpp_error_with_line (pfile, CPP_DL_ERROR, from_line, 0,
+ cpp_error_with_line (pfile, CPP_DL_ERROR, src_loc, 0,
"unterminated comment");
/* Comments in directives become spaces so that tokens are properly
@@ -268,13 +268,14 @@ _cpp_overlay_buffer (cpp_reader *pfile, const uchar *start, size_t len)
cpp_buffer *buffer = pfile->buffer;
pfile->overlaid_buffer = buffer;
- buffer->saved_cur = buffer->cur;
- buffer->saved_rlimit = buffer->rlimit;
- /* Prevent the ISO lexer from scanning a fresh line. */
- pfile->saved_line = pfile->line--;
+ pfile->saved_cur = buffer->cur;
+ pfile->saved_rlimit = buffer->rlimit;
+ pfile->saved_line_base = buffer->next_line;
+ pfile->saved_line = pfile->line;
buffer->need_line = false;
buffer->cur = start;
+ buffer->line_base = start;
buffer->rlimit = start + len;
}
@@ -284,12 +285,12 @@ _cpp_remove_overlay (cpp_reader *pfile)
{
cpp_buffer *buffer = pfile->overlaid_buffer;
- buffer->cur = buffer->saved_cur;
- buffer->rlimit = buffer->saved_rlimit;
+ buffer->cur = pfile->saved_cur;
+ buffer->rlimit = pfile->saved_rlimit;
+ buffer->line_base = pfile->saved_line_base;
buffer->need_line = true;
pfile->overlaid_buffer = NULL;
- pfile->line = pfile->saved_line;
}
/* Reads a logical line into the output buffer. Returns TRUE if there
@@ -404,7 +405,7 @@ _cpp_scan_out_logical_line (cpp_reader *pfile, cpp_macro *macro)
pfile->out.cur = out - 1;
pfile->buffer->cur = cur;
pfile->buffer->need_line = true;
- pfile->line++;
+ CPP_INCREMENT_LINE (pfile, 0);
if ((lex_state == ls_fun_open || lex_state == ls_fun_close)
&& !pfile->state.in_directive
@@ -605,7 +606,7 @@ _cpp_scan_out_logical_line (cpp_reader *pfile, cpp_macro *macro)
/* Null directive. Ignore it and don't invalidate
the MI optimization. */
pfile->buffer->need_line = true;
- pfile->line++;
+ CPP_INCREMENT_LINE (pfile, 0);
result = false;
goto done;
}