re PR fortran/70006 (Duplicate errors "label not defined")
authorSteven G. Kargl <kargl@gcc.gnu.org>
Sat, 30 Jul 2016 18:18:49 +0000 (18:18 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Sat, 30 Jul 2016 18:18:49 +0000 (18:18 +0000)
2016-07-30  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/70006
* io.c (gfc_resolve_dt): Use correct locus.
* resolve.c (resolve_branch): Ditto.

2016-07-30  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/70006
* gfortran.dg/pr70006.f90: New test.

From-SVN: r238905

gcc/fortran/ChangeLog
gcc/fortran/io.c
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pr70006.f90 [new file with mode: 0644]

index 775276b..3c137ee 100644 (file)
@@ -1,5 +1,11 @@
 2016-07-30  Steven G. Kargl  <kargl@gcc.gnu.org>
 
+       PR fortran/70006
+       * io.c (gfc_resolve_dt): Use correct locus.
+       * resolve.c (resolve_branch): Ditto.
+
+2016-07-30  Steven G. Kargl  <kargl@gcc.gnu.org>
+
        PR fortran/71730
        * decl.c (char_len_param_value): Check return value of
        gfc_reduce_init_expr().
index 7c648e9..0881261 100644 (file)
@@ -3052,7 +3052,7 @@ gfc_resolve_dt (gfc_dt *dt, locus *loc)
       && dt->format_label->defined == ST_LABEL_UNKNOWN)
     {
       gfc_error ("FORMAT label %d at %L not defined", dt->format_label->value,
-                &dt->format_label->where);
+                loc);
       return false;
     }
 
index 23da9ac..e0a688a 100644 (file)
@@ -8966,7 +8966,7 @@ resolve_branch (gfc_st_label *label, gfc_code *code)
   if (label->defined == ST_LABEL_UNKNOWN)
     {
       gfc_error ("Label %d referenced at %L is never defined", label->value,
-                &label->where);
+                &code->loc);
       return;
     }
 
index d41cfca..6ead119 100644 (file)
@@ -1,5 +1,10 @@
 2016-07-30  Steven G. Kargl  <kargl@gcc.gnu.org>
 
+       PR fortran/70006
+       * gfortran.dg/pr70006.f90: New test.
+
+2016-07-30  Steven G. Kargl  <kargl@gcc.gnu.org>
+
        PR fortran/71730
        * gfortran.dg/pr71730.f90: New test.
        * gfortran.dg/bounds_check_strlen_2.f90: Fix invalid code.
diff --git a/gcc/testsuite/gfortran.dg/pr70006.f90 b/gcc/testsuite/gfortran.dg/pr70006.f90
new file mode 100644 (file)
index 0000000..b8fbb3c
--- /dev/null
@@ -0,0 +1,9 @@
+! { dg-do compile}
+program test
+   print 1, 'string 1' ! { dg-error "FORMAT label 1" " " { target *-*-* } 3 }
+   print 1, 'string 2' ! { dg-error "FORMAT label 1" " " { target *-*-* } 4 }
+!1 format(a)
+   goto 2 ! { dg-error "Label 2 referenced" " " { target *-*-* } 6 }
+   goto 2 ! { dg-error "Label 2 referenced" " " { target *-*-* } 7 }
+!2 continue
+end program