Index: gcc/fortran/match.c
===================================================================
--- gcc/fortran/match.c	(revision 260402)
+++ gcc/fortran/match.c	(working copy)
@@ -1442,6 +1442,8 @@ match_arithmetic_if (void)
       return MATCH_ERROR;
     }
 
+  if (!gfc_notify_std (GFC_STD_F2018_DEL, "Arithmetic IF statement at %C"))
+    return MATCH_ERROR;
   if (!gfc_notify_std (GFC_STD_F95_OBS, "Arithmetic IF statement at %C"))
     return MATCH_ERROR;
 
@@ -1522,6 +1524,8 @@ gfc_match_if (gfc_statement *if_type)
 	  return MATCH_ERROR;
 	}
 
+      if (!gfc_notify_std (GFC_STD_F2018_DEL, "Arithmetic IF statement at %C"))
+	return MATCH_ERROR;
       if (!gfc_notify_std (GFC_STD_F95_OBS, "Arithmetic IF statement at %C"))
 	return MATCH_ERROR;
 
@@ -2939,11 +2943,12 @@ gfc_match_stopcode (gfc_statement st)
 
   /* Set f95 for -std=f95.  */
   f95 = gfc_option.allow_std == (GFC_STD_F95_OBS | GFC_STD_F95 | GFC_STD_F77
-				 | GFC_STD_F2008_OBS);
+				 | GFC_STD_F2008_OBS | GFC_STD_F2018_DEL);
 
   /* Set f03 for -std=f2003.  */
   f03 = gfc_option.allow_std == (GFC_STD_F95_OBS | GFC_STD_F95 | GFC_STD_F77
-				 | GFC_STD_F2008_OBS | GFC_STD_F2003);
+				 | GFC_STD_F2008_OBS | GFC_STD_F2003
+				 | GFC_STD_F2018_DEL);
 
   /* Look for a blank between STOP and the stop-code for F2008 or later.  */
   if (gfc_current_form != FORM_FIXED && !(f95 || f03))
Index: gcc/fortran/options.c
===================================================================
--- gcc/fortran/options.c	(revision 260402)
+++ gcc/fortran/options.c	(working copy)
@@ -44,7 +44,7 @@ set_default_std_flags (void)
     | GFC_STD_F2003 | GFC_STD_F2008 | GFC_STD_F95 | GFC_STD_F77
     | GFC_STD_F2008_OBS | GFC_STD_F2008_TS | GFC_STD_GNU | GFC_STD_LEGACY
     | GFC_STD_F2018 | GFC_STD_F2018_DEL | GFC_STD_F2018_OBS;
-  gfc_option.warn_std = GFC_STD_F95_DEL | GFC_STD_LEGACY;
+  gfc_option.warn_std = GFC_STD_F2018_DEL | GFC_STD_F95_DEL | GFC_STD_LEGACY;
 }
 
 
@@ -706,7 +706,7 @@ gfc_handle_option (size_t scode, const char *arg,
 
     case OPT_std_f95:
       gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F95 | GFC_STD_F77
-			     | GFC_STD_F2008_OBS;
+			     | GFC_STD_F2008_OBS | GFC_STD_F2018_DEL;
       gfc_option.warn_std = GFC_STD_F95_OBS;
       gfc_option.max_continue_fixed = 19;
       gfc_option.max_continue_free = 39;
@@ -717,7 +717,7 @@ gfc_handle_option (size_t scode, const char *arg,
 
     case OPT_std_f2003:
       gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F77 
-	| GFC_STD_F2003 | GFC_STD_F95 | GFC_STD_F2008_OBS;
+	| GFC_STD_F2003 | GFC_STD_F95 | GFC_STD_F2008_OBS | GFC_STD_F2018_DEL;
       gfc_option.warn_std = GFC_STD_F95_OBS;
       gfc_option.max_identifier_length = 63;
       warn_ampersand = 1;
@@ -726,7 +726,8 @@ gfc_handle_option (size_t scode, const char *arg,
 
     case OPT_std_f2008:
       gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F77 
-	| GFC_STD_F2003 | GFC_STD_F95 | GFC_STD_F2008 | GFC_STD_F2008_OBS;
+	| GFC_STD_F2003 | GFC_STD_F95 | GFC_STD_F2008 | GFC_STD_F2008_OBS
+	| GFC_STD_F2018_DEL;
       gfc_option.warn_std = GFC_STD_F95_OBS | GFC_STD_F2008_OBS;
       gfc_option.max_identifier_length = 63;
       warn_ampersand = 1;
@@ -736,7 +737,7 @@ gfc_handle_option (size_t scode, const char *arg,
     case OPT_std_f2008ts:
       gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F77 
 	| GFC_STD_F2003 | GFC_STD_F95 | GFC_STD_F2008 | GFC_STD_F2008_OBS
-	| GFC_STD_F2008_TS;
+	| GFC_STD_F2008_TS | GFC_STD_F2018_DEL;
       gfc_option.warn_std = GFC_STD_F95_OBS | GFC_STD_F2008_OBS;
       gfc_option.max_identifier_length = 63;
       warn_ampersand = 1;
Index: gcc/fortran/symbol.c
===================================================================
--- gcc/fortran/symbol.c	(revision 260402)
+++ gcc/fortran/symbol.c	(working copy)
@@ -2721,9 +2721,14 @@ gfc_define_st_label (gfc_st_label *lp, gfc_sl_type
 	    lp->defined = type;
 
 	  if (lp->referenced == ST_LABEL_DO_TARGET && type != ST_LABEL_DO_TARGET
-      	      && !gfc_notify_std (GFC_STD_F95_OBS, "DO termination statement "
-				  "which is not END DO or CONTINUE with "
-				  "label %d at %C", labelno))
+	      && (!gfc_notify_std (GFC_STD_F2018_DEL,
+				   "DO termination statement which is not "
+				   "END DO or CONTINUE with label %d at %C",
+				   labelno) ||
+		  !gfc_notify_std (GFC_STD_F95_OBS,
+				      "DO termination statement which is not "
+				      "END DO or CONTINUE with label %d at %C",
+				      labelno)))
 	    return;
 	  break;
 
@@ -2778,8 +2783,10 @@ gfc_reference_st_label (gfc_st_label *lp, gfc_sl_t
     }
 
   if (lp->referenced == ST_LABEL_DO_TARGET && type == ST_LABEL_DO_TARGET
-      && !gfc_notify_std (GFC_STD_F95_OBS, "Shared DO termination label %d "
-			  "at %C", labelno))
+      && (!gfc_notify_std (GFC_STD_F2018_DEL, "Shared DO termination label %d "
+			   "at %C", labelno) ||
+	  !gfc_notify_std (GFC_STD_F95_OBS, "Shared DO termination label %d "
+			   "at %C", labelno)))
     return false;
 
   if (lp->referenced != ST_LABEL_DO_TARGET)
Index: gcc/testsuite/gfortran.dg/goacc/loop-1-2.f95
===================================================================
--- gcc/testsuite/gfortran.dg/goacc/loop-1-2.f95	(revision 260402)
+++ gcc/testsuite/gfortran.dg/goacc/loop-1-2.f95	(working copy)
@@ -1,4 +1,5 @@
 ! See also loop-1.f95.
+! { dg-additional-options "-std=legacy" }
 
 program test
   call test1
@@ -32,14 +33,12 @@ subroutine test1
   do 300 d = 1, 30, 6
       i = d
   300 a(i) = 1
-  ! { dg-warning "Deleted feature: Loop variable at .1. must be integer" "" { target *-*-* } 32 }
-  ! { dg-error "ACC LOOP iteration variable must be of type integer" "" { target *-*-* } 32 }
+  ! { dg-error "ACC LOOP iteration variable must be of type integer" "" { target *-*-* } 33 }
   !$acc loop
   do d = 1, 30, 5
        i = d
       a(i) = 2
   end do
-  ! { dg-warning "Deleted feature: Loop variable at .1. must be integer" "" { target *-*-* } 38 }
   ! { dg-error "ACC LOOP iteration variable must be of type integer" "" { target *-*-* } 38 }
   !$acc loop
   do i = 1, 30
@@ -150,8 +149,7 @@ subroutine test1
     do i = 1, 3
         do r = 4, 6
         end do
-        ! { dg-warning "Deleted feature: Loop variable at .1. must be integer" "" { target *-*-* } 151 }
-        ! { dg-error "ACC LOOP iteration variable must be of type integer" "" { target *-*-* } 151 }
+        ! { dg-error "ACC LOOP iteration variable must be of type integer" "" { target *-*-* } 150 }
     end do
 
     ! Both seq and independent are not allowed
Index: gcc/testsuite/gfortran.dg/goacc/loop-1.f95
===================================================================
--- gcc/testsuite/gfortran.dg/goacc/loop-1.f95	(revision 260402)
+++ gcc/testsuite/gfortran.dg/goacc/loop-1.f95	(working copy)
@@ -1,4 +1,5 @@
 ! See also loop-1-2.f95.
+! { dg-additional-options "-std=legacy" }
 
 module test
   implicit none
@@ -32,14 +33,12 @@ subroutine test1
   do 300 d = 1, 30, 6
       i = d
   300 a(i) = 1
-  ! { dg-warning "Deleted feature: Loop variable at .1. must be integer" "" { target *-*-* } 32 }
-  ! { dg-error "ACC LOOP iteration variable must be of type integer" "" { target *-*-* } 32 }
+  ! { dg-error "ACC LOOP iteration variable must be of type integer" "" { target *-*-* } 33 }
   !$acc loop
   do d = 1, 30, 5
        i = d
       a(i) = 2
   end do
-  ! { dg-warning "Deleted feature: Loop variable at .1. must be integer" "" { target *-*-* } 38 }
   ! { dg-error "ACC LOOP iteration variable must be of type integer" "" { target *-*-* } 38 }
   !$acc loop
   do i = 1, 30
@@ -150,8 +149,7 @@ subroutine test1
     do i = 1, 3
         do r = 4, 6
         end do
-        ! { dg-warning "Deleted feature: Loop variable at .1. must be integer" "" { target *-*-* } 151 }
-        ! { dg-error "ACC LOOP iteration variable must be of type integer" "" { target *-*-* } 151 }
+        ! { dg-error "ACC LOOP iteration variable must be of type integer" "" { target *-*-* } 150 }
     end do
 
     ! Both seq and independent are not allowed
Index: gcc/testsuite/gfortran.dg/gomp/appendix-a/a.6.1.f90
===================================================================
--- gcc/testsuite/gfortran.dg/gomp/appendix-a/a.6.1.f90	(revision 260402)
+++ gcc/testsuite/gfortran.dg/gomp/appendix-a/a.6.1.f90	(working copy)
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-std=legacy" }
 
       SUBROUTINE WORK(I, J)
       INTEGER I,J
Index: gcc/testsuite/gfortran.dg/gomp/appendix-a/a.6.2.f90
===================================================================
--- gcc/testsuite/gfortran.dg/gomp/appendix-a/a.6.2.f90	(revision 260402)
+++ gcc/testsuite/gfortran.dg/gomp/appendix-a/a.6.2.f90	(working copy)
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-additional-options "-std=legacy" }
 
         SUBROUTINE WORK(I, J)
         INTEGER I,J
Index: gcc/testsuite/gfortran.dg/gomp/do-1.f90
===================================================================
--- gcc/testsuite/gfortran.dg/gomp/do-1.f90	(revision 260402)
+++ gcc/testsuite/gfortran.dg/gomp/do-1.f90	(working copy)
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-options "-O -fopenmp -fdump-tree-omplower" }
+! { dg-options "-O -fopenmp -fdump-tree-omplower -std=legacy" }
 
 subroutine foo (i, j, k, s, a)
   integer :: i, j, k, s, a(100), l
Index: gcc/testsuite/gfortran.dg/gomp/omp_do1.f90
===================================================================
--- gcc/testsuite/gfortran.dg/gomp/omp_do1.f90	(revision 260402)
+++ gcc/testsuite/gfortran.dg/gomp/omp_do1.f90	(working copy)
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-options "-fopenmp -std=gnu" }
+! { dg-options "-fopenmp -std=legacy" }
 subroutine foo
   integer :: i, j
   integer, dimension (30) :: a
@@ -24,11 +24,11 @@ subroutine foo
     i = i + 1
   end do
 !$omp do
-  do 300 d = 1, 30, 6 ! { dg-warning "Deleted feature: Loop variable" }
+  do 300 d = 1, 30, 6
     i = d
 300 a(i) = 1
 !$omp do
-  do d = 1, 30, 5 ! { dg-warning "Deleted feature: Loop variable" }
+  do d = 1, 30, 5
     i = d
     a(i) = 2
   end do
Index: gcc/testsuite/gfortran.dg/pr37243.f
===================================================================
--- gcc/testsuite/gfortran.dg/pr37243.f	(revision 260402)
+++ gcc/testsuite/gfortran.dg/pr37243.f	(working copy)
@@ -1,5 +1,6 @@
 ! PR rtl-optimization/37243
 ! { dg-do run }
+! { dg-options "-std=legacy" }
 ! { dg-add-options ieee }
 ! Check if register allocator handles IR flattening correctly.
       SUBROUTINE SCHMD(V,M,N,LDV)
@@ -13,10 +14,10 @@
       DO 160 I = 1,M
       DUMI = ZERO
       DO 100 K = 1,N
-  100 DUMI = DUMI+V(K,I)*V(K,I) ! { dg-warning "Obsolescent feature: DO termination statement which is not END DO or CONTINUE" }
+  100 DUMI = DUMI+V(K,I)*V(K,I)
       DUMI = ONE/ SQRT(DUMI)
       DO 120 K = 1,N
-  120 V(K,I) = V(K,I)*DUMI ! { dg-warning "Obsolescent feature: DO termination statement which is not END DO or CONTINUE" }
+  120 V(K,I) = V(K,I)*DUMI
       IF (I .EQ. M) GO TO 160
       I1 = I+1
       DO 140 J = I1,M
@@ -34,15 +35,15 @@
   220 J = J+1
       IF (J .GT. N) GO TO 320
       DO 240 K = 1,N
-  240 V(K,I) = ZERO ! { dg-warning "Obsolescent feature: DO termination statement which is not END DO or CONTINUE" }
+  240 V(K,I) = ZERO
       CALL DAXPY(N,DUM,V(1,I),1,V(1,I),1)
   260 CONTINUE
       DUMI = ZERO
       DO 280 K = 1,N
-  280 DUMI = DUMI+V(K,I)*V(K,I) ! { dg-warning "Obsolescent feature: DO termination statement which is not END DO or CONTINUE" }
+  280 DUMI = DUMI+V(K,I)*V(K,I)
       IF ( ABS(DUMI) .LT. TOL) GO TO 220
       DO 300 K = 1,N
-  300 V(K,I) = V(K,I)*DUMI ! { dg-warning "Obsolescent feature: DO termination statement which is not END DO or CONTINUE" }
+  300 V(K,I) = V(K,I)*DUMI
       GO TO 200
   320 END
       program main
Index: gcc/testsuite/gfortran.dg/pr49721-1.f
===================================================================
--- gcc/testsuite/gfortran.dg/pr49721-1.f	(revision 260402)
+++ gcc/testsuite/gfortran.dg/pr49721-1.f	(working copy)
@@ -1,6 +1,6 @@
 ! PR middle-end/49721
 ! { dg-do compile }
-! { dg-options "-O3 -funroll-loops" }
+! { dg-options "-O3 -funroll-loops -std=legacy" }
 
       subroutine midbloc6(c,a2,a2i,q)
       parameter (ndim2=6)
Index: gcc/testsuite/gfortran.dg/pr58484.f
===================================================================
--- gcc/testsuite/gfortran.dg/pr58484.f	(revision 260402)
+++ gcc/testsuite/gfortran.dg/pr58484.f	(working copy)
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-options "-O2" }
+! { dg-options "-O2 -std=legacy" }
       SUBROUTINE UMPSE(AIBJ,NOC,NDIM,NOCA,NVIRA,NOCCA,E2)
       DIMENSION AIBJ(NOC,NDIM,*)
       DO 20 MA=1,NVIRA
Index: gcc/testsuite/gfortran.dg/pr81175.f
===================================================================
--- gcc/testsuite/gfortran.dg/pr81175.f	(revision 260402)
+++ gcc/testsuite/gfortran.dg/pr81175.f	(working copy)
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-options "-Ofast -fwrapv" }
+! { dg-options "-Ofast -fwrapv -std=legacy" }
 ! { dg-additional-options "-march=broadwell" { target x86_64-*-* i?86-*-* } }
       SUBROUTINE ECPDRA(IC4C,FP,FQ,G)
       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
Index: gcc/testsuite/gfortran.dg/pr81723.f
===================================================================
--- gcc/testsuite/gfortran.dg/pr81723.f	(revision 260402)
+++ gcc/testsuite/gfortran.dg/pr81723.f	(working copy)
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-options "-O3 -fno-automatic" }
+! { dg-options "-O3 -fno-automatic -std=legacy" }
 
       FUNCTION WWERF(Z)
 
Index: gcc/testsuite/gfortran.dg/predcom-2.f
===================================================================
--- gcc/testsuite/gfortran.dg/predcom-2.f	(revision 260402)
+++ gcc/testsuite/gfortran.dg/predcom-2.f	(working copy)
@@ -1,7 +1,7 @@
 ! PR 32220, ICE when the loop is not unrolled enough to eliminate all 
 !   register copies
 ! { dg-do compile }
-! { dg-options "-O3" }
+! { dg-options "-O3 -std=legacy" }
 
       subroutine derv (b,cosxy,thick)
 c
Index: gcc/testsuite/gfortran.dg/vect/Ofast-pr50414.f90
===================================================================
--- gcc/testsuite/gfortran.dg/vect/Ofast-pr50414.f90	(revision 260402)
+++ gcc/testsuite/gfortran.dg/vect/Ofast-pr50414.f90	(working copy)
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-std=legacy" }
 
       SUBROUTINE  SUB  (A,L,YMAX)
       DIMENSION A(L)
Index: gcc/testsuite/gfortran.dg/vect/cost-model-pr34445a.f
===================================================================
--- gcc/testsuite/gfortran.dg/vect/cost-model-pr34445a.f	(revision 260402)
+++ gcc/testsuite/gfortran.dg/vect/cost-model-pr34445a.f	(working copy)
@@ -1,4 +1,5 @@
 c { dg-do compile }
+c { dg-options "-std=legacy" }
       subroutine derv (xx,b,bv,det,r,s,t,ndopt,cosxy,thick,edis,
      1                  vni,vnt)
       implicit real*8 (a-h,o-z)
Index: gcc/testsuite/gfortran.dg/vect/fast-math-mgrid-resid.f
===================================================================
--- gcc/testsuite/gfortran.dg/vect/fast-math-mgrid-resid.f	(revision 260402)
+++ gcc/testsuite/gfortran.dg/vect/fast-math-mgrid-resid.f	(working copy)
@@ -1,6 +1,6 @@
 ! { dg-do compile }
 ! { dg-require-effective-target vect_double }
-! { dg-options "-O3 --param vect-max-peeling-for-alignment=0 -fpredictive-commoning -fdump-tree-pcom-details" }
+! { dg-options "-O3 --param vect-max-peeling-for-alignment=0 -fpredictive-commoning -fdump-tree-pcom-details -std=legacy" }
 ! { dg-additional-options "-mprefer-avx128" { target { i?86-*-* x86_64-*-* } } }
 ! { dg-additional-options "-mzarch" { target { s390*-*-* } } }
 
Index: gcc/testsuite/gfortran.dg/vect/pr52580.f
===================================================================
--- gcc/testsuite/gfortran.dg/vect/pr52580.f	(revision 260402)
+++ gcc/testsuite/gfortran.dg/vect/pr52580.f	(working copy)
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-std=legacy" }
 ! { dg-require-effective-target vect_double }
       SUBROUTINE CALC2
       IMPLICIT REAL*8	(A-H, O-Z)
