OSDN Git Service

2009-05-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
authormanu <manu@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 13 May 2009 23:17:55 +0000 (23:17 +0000)
committermanu <manu@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 13 May 2009 23:17:55 +0000 (23:17 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147504 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/cpp/pr36674.i [new file with mode: 0644]
libcpp/ChangeLog
libcpp/directives.c
libcpp/files.c

index 928c7f6..f9580aa 100644 (file)
@@ -1,3 +1,8 @@
+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
diff --git a/gcc/testsuite/gcc.dg/cpp/pr36674.i b/gcc/testsuite/gcc.dg/cpp/pr36674.i
new file mode 100644 (file)
index 0000000..9362d5a
--- /dev/null
@@ -0,0 +1,12 @@
+/* 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 } */
index 4e21b58..36a2fbc 100644 (file)
@@ -1,3 +1,11 @@
+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
index e71efb2..74644ff 100644 (file)
@@ -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);
 }
 
index 06ccd0f..c8c1902 100644 (file)
@@ -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--;