aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/fortran/ChangeLog10
-rw-r--r--gcc/fortran/match.c7
-rw-r--r--gcc/fortran/resolve.c7
-rw-r--r--gcc/fortran/symbol.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/f2018_obs.f9029
6 files changed, 62 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 98fbfd1..63d4297 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,13 @@
+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
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
index 8379ff5..1ab0e0f 100644
--- a/gcc/fortran/match.c
+++ b/gcc/fortran/match.c
@@ -5259,6 +5259,10 @@ gfc_match_block_data (void)
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;
@@ -5575,6 +5579,9 @@ gfc_match_equivalence (void)
}
}
+ if (!gfc_notify_std (GFC_STD_F2018_OBS, "EQUIVALENCE statement at %C"))
+ return MATCH_ERROR;
+
return MATCH_YES;
syntax:
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 43b1ded..3a0ff80 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -997,6 +997,10 @@ resolve_common_blocks (gfc_symtree *common_root)
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. */
@@ -9930,6 +9934,9 @@ gfc_resolve_forall (gfc_code *code, gfc_namespace *ns, int forall_save)
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)
{
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c
index 5538763..4f06063 100644
--- a/gcc/fortran/symbol.c
+++ b/gcc/fortran/symbol.c
@@ -2725,6 +2725,10 @@ gfc_define_st_label (gfc_st_label *lp, gfc_sl_type type, locus *label_locus)
"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:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index bdf5e84..59b2309 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+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
diff --git a/gcc/testsuite/gfortran.dg/f2018_obs.f90 b/gcc/testsuite/gfortran.dg/f2018_obs.f90
new file mode 100644
index 0000000..0a8dca9
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/f2018_obs.f90
@@ -0,0 +1,29 @@
+! { 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