cpplib.c (do_pragma): Reintroduce cb_line_change call in the code path that calls...
authorAlexandre Oliva <aoliva@redhat.com>
Wed, 24 Sep 2003 23:53:07 +0000 (23:53 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Wed, 24 Sep 2003 23:53:07 +0000 (23:53 +0000)
* cpplib.c (do_pragma): Reintroduce cb_line_change call in the
code path that calls a handler.

From-SVN: r71744

gcc/ChangeLog
gcc/cpplib.c

index 5b938b90df4c7222d6f7931a2074338e4acc5f09..3e2d5703a65bce496a35d63db96a2ced9a185472 100644 (file)
@@ -1,3 +1,8 @@
+2003-09-24  Alexandre Oliva  <aoliva@redhat.com>
+
+       * cpplib.c (do_pragma): Reintroduce cb_line_change call in the
+       code path that calls a handler.
+
 2003-09-24  Nathanael Nerode  <neroden@gcc.gnu.org>
 
        * config.gcc (c4x-*, tic4x-*, d30v-*, mmix-knuth-mmixware):
index 6a0f3e0d64bb8848e40291715e02a8c2a30954e7..5a927555468cb757746c8994b0660b086a21511a 100644 (file)
@@ -1120,7 +1120,7 @@ static void
 do_pragma (cpp_reader *pfile)
 {
   const struct pragma_entry *p = NULL;
-  const cpp_token *token;
+  const cpp_token *token, *pragma_token = pfile->cur_token;
   unsigned int count = 1;
 
   pfile->state.prevent_expansion++;
@@ -1141,7 +1141,17 @@ do_pragma (cpp_reader *pfile)
     }
 
   if (p)
-    p->u.handler (pfile);
+    {
+      /* Since the handler below doesn't get the line number, that it
+        might need for diagnostics, make sure it has the right
+        numbers in place.  */
+      if (pfile->cb.line_change)
+       (*pfile->cb.line_change) (pfile, pragma_token, false);
+      (*p->u.handler) (pfile);
+      if (pfile->cb.line_change)
+       (*pfile->cb.line_change) (pfile, pfile->cur_token, false);
+      
+    }
   else if (pfile->cb.def_pragma)
     {
       _cpp_backup_tokens (pfile, count);