re PR preprocessor/36674 (#include location is offset by one row in errors from preprocessed files)

2009-05-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR cpp/36674
libcpp/
	* directives (do_linemarker): Compensate for the increment in
	location that occurs when we reach the end of line.
	* files (_cpp_stack_include): Mention _cpp_find_file in the
	comment.
testsuite/
	* gcc.dg/cpp/pr36674.i: New.

From-SVN: r147504
parent f06257d3
2009-05-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR cpp/36674
* gcc.dg/cpp/pr36674.i: New.
2009-05-14 Ben Elliston <bje@au.ibm.com>
PR middle-end/40035
......
/* PR cpp/36674 #include location is offset by one row in errors from preprocessed files */
/* { dg-do compile } */
/* { dg-options "-fshow-column" } */
# 1 "gcc/testsuite/gcc.dg/pr36674.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "gcc/testsuite/gcc.dg/pr36674.c"
# 1 "gcc/testsuite/gcc.dg/pr36674.h" 1
not_declared_yet();
# 1 "gcc/testsuite/gcc.dg/pr36674.c" 2
/* { dg-message "file included from \[^\n\]*pr36674.c:1:" "correct include line" { target *-*-* } 0 } */
/* { dg-message "pr36674.h:1:1: warning: data definition has no type or storage class" "correct warning" { target *-*-* } 0 } */
2009-05-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR cpp/36674
* directives (do_linemarker): Compensate for the increment in
location that occurs when we reach the end of line.
* files (_cpp_stack_include): Mention _cpp_find_file in the
comment.
2009-05-10 Joseph Myers <joseph@codesourcery.com>
* include/cpplib.h (enum cpp_token_fld_kind): Add
......
......@@ -1004,6 +1004,14 @@ do_linemarker (cpp_reader *pfile)
}
skip_rest_of_line (pfile);
/* Compensate for the increment in linemap_add that occurs in
_cpp_do_file_change. We're currently at the start of the line
*following* the #line directive. A separate source_location for this
location makes no sense (until we do the LC_LEAVE), and
complicates LAST_SOURCE_LINE_LOCATION. */
pfile->line_table->highest_location--;
_cpp_do_file_change (pfile, reason, new_file, new_lineno, new_sysp);
}
......
......@@ -912,13 +912,14 @@ _cpp_stack_include (cpp_reader *pfile, const char *fname, int angle_brackets,
file = _cpp_find_file (pfile, fname, dir, false, angle_brackets);
/* Compensate for the increment in linemap_add. In the case of a
normal #include, we're currently at the start of the line
*following* the #include. A separate source_location for this
location makes no sense (until we do the LC_LEAVE), and
complicates LAST_SOURCE_LINE_LOCATION. This does not apply if we
found a PCH file (in which case linemap_add is not called) or we
were included from the command-line. */
/* Compensate for the increment in linemap_add that occurs in
_cpp_stack_file. In the case of a normal #include, we're
currently at the start of the line *following* the #include. A
separate source_location for this location makes no sense (until
we do the LC_LEAVE), and complicates LAST_SOURCE_LINE_LOCATION.
This does not apply if we found a PCH file (in which case
linemap_add is not called) or we were included from the
command-line. */
if (file->pchname == NULL && file->err_no == 0 && type != IT_CMDLINE)
pfile->line_table->highest_location--;
......
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