+2018-05-25 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/85839
+ * match.c (gfc_match_block_data): Call gfc_notify_std to warn about
+ an obsolescent feature in Fortran 2018.
+ (gfc_match_equivalence): Ditto.
+ * resolve.c (resolve_common_blocks): Ditto.
+ (gfc_resolve_forall): Ditto.
+ * symbol.c (gfc_define_st_label): Ditto.
+
2018-05-24 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/85543
gfc_symbol *sym;
match m;
+ if (!gfc_notify_std (GFC_STD_F2018_OBS, "BLOCK DATA construct at %L",
+ &gfc_current_locus))
+ return MATCH_ERROR;
+
if (gfc_match_eos () == MATCH_YES)
{
gfc_new_block = NULL;
}
}
+ if (!gfc_notify_std (GFC_STD_F2018_OBS, "EQUIVALENCE statement at %C"))
+ return MATCH_ERROR;
+
return MATCH_YES;
syntax:
resolve_common_vars (common_root->n.common, true);
+ if (!gfc_notify_std (GFC_STD_F2018_OBS, "COMMON block at %L",
+ &common_root->n.common->where))
+ return;
+
/* The common name is a global name - in Fortran 2003 also if it has a
C binding name, since Fortran 2008 only the C binding name is a global
identifier. */
old_nvar = nvar;
+ if (!gfc_notify_std (GFC_STD_F2018_OBS, "FORALL construct at %L", &code->loc))
+ return;
+
/* Start to resolve a FORALL construct */
if (forall_save == 0)
{
"DO termination statement which is not END DO"
" or CONTINUE with label %d at %C", labelno))
return;
+ if (type == ST_LABEL_DO_TARGET
+ && !gfc_notify_std (GFC_STD_F2018_OBS, "Labeled DO statement "
+ "at %L", label_locus))
+ return;
break;
default:
+2018-05-25 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/85839
+ * gfortran.dg/f2018_obs.f90: New test case.
+
2018-05-24 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/85543
--- /dev/null
+! { dg-do compile }
+! { dg-options "-std=f2018" }
+!
+! PR 85839: [F2018] warn for obsolescent features
+!
+! Contributed by Janus Weil <janus@gcc.gnu.org>
+
+block data ! { dg-warning "obsolescent feature" }
+ common /a/ y(3) ! { dg-warning "obsolescent feature" }
+ data y /3*1./
+end
+
+program f2018_obs
+
+ implicit none
+ integer :: a(10),b(10),j(8),i
+ real :: x(3)
+ common /c/ x ! { dg-warning "obsolescent feature" }
+
+ equivalence (a(10),b(1)) ! { dg-warning "obsolescent feature" }
+
+ do 99 i=1,10
+99 continue ! { dg-warning "obsolescent feature" }
+
+ j = (/ 0, 1, 2, 3, 4, 0, 6, 7 /)
+ forall (i=1:8, j(i) /= 0) ! { dg-warning "obsolescent feature" }
+ j(i) = 0
+ end forall
+end