* data.c (gfc_assign_data_value): Handle USE_MAPPED_LOCATION.
authorbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 1 Jun 2006 16:18:34 +0000 (16:18 +0000)
committerbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 1 Jun 2006 16:18:34 +0000 (16:18 +0000)
* scanner.c (gfc_gobble_whitespace): Likewise.

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

gcc/fortran/ChangeLog
gcc/fortran/data.c
gcc/fortran/scanner.c

index a91cb42..eb093a7 100644 (file)
@@ -1,3 +1,8 @@
+2006-06-01  Per Bothner  <bothner@bothner.com>
+
+       * data.c (gfc_assign_data_value): Handle USE_MAPPED_LOCATION.
+       * scanner.c (gfc_gobble_whitespace): Likewise.
+
 2006-06-01  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/25098
index 8fb8b5d..9f256bc 100644 (file)
@@ -325,8 +325,14 @@ gfc_assign_data_value (gfc_expr * lvalue, gfc_expr * rvalue, mpz_t index)
          /* Order in which the expressions arrive here depends on whether they
             are from data statements or F95 style declarations. Therefore,
             check which is the most recent.  */
+#ifdef USE_MAPPED_LOCATION
+         expr = (LOCATION_LINE (init->where.lb->location)
+                 > LOCATION_LINE (rvalue->where.lb->location))
+           ? init : rvalue;
+#else
          expr = (init->where.lb->linenum > rvalue->where.lb->linenum) ?
                    init : rvalue;
+#endif
          gfc_notify_std (GFC_STD_GNU, "Extension: re-initialization "
                          "of '%s' at %L",  symbol->name, &expr->where);
          return;
index d05d603..7e0d696 100644 (file)
@@ -852,11 +852,18 @@ gfc_gobble_whitespace (void)
       /* Issue a warning for nonconforming tabs.  We keep track of the line
         number because the Fortran matchers will often back up and the same
         line will be scanned multiple times.  */
-      if (!gfc_option.warn_tabs && c == '\t'
-         && gfc_current_locus.lb->linenum != linenum)
+      if (!gfc_option.warn_tabs && c == '\t')
        {
-         linenum = gfc_current_locus.lb->linenum;
-         gfc_warning_now ("Nonconforming tab character at %C");
+#ifdef USE_MAPPED_LOCATION
+         int cur_linenum = LOCATION_LINE (gfc_current_locus.lb->location);
+#else
+         int cur_linenum = gfc_current_locus.lb->linenum;
+#endif
+         if (cur_linenum != linenum)
+           {
+             linenum = cur_linenum;
+             gfc_warning_now ("Nonconforming tab character at %C");
+           }
        }
     }
   while (gfc_is_whitespace (c));