2018-05-21 Janus Weil <janus@gcc.gnu.org>
PR fortran/85841
* libgfortran.h: New macros GFC_STD_OPT_*.
* error.c (notify_std_msg): New function.
(gfc_notify_std): Adjust such that it can handle combinations of
GFC_STD_* flags in the 'std' argument, not just a single one.
* match.c (match_arithmetic_if, gfc_match_if): Reject arithmetic if
in Fortran 2018.
(gfc_match_stopcode): Use GFC_STD_OPT_* macros.
* options.c (set_default_std_flags): Warn for F2018 deleted features
by default.
(gfc_handle_option): F2018 deleted features are allowed in earlier
standards.
* symbol.c (gfc_define_st_label, gfc_reference_st_label): Reject
nonblock do constructs in Fortran 2018.
2018-05-21 Janus Weil <janus@gcc.gnu.org>
PR fortran/85841
* gfortran.dg/g77/
19990826-3.f: Add option "-std=legacy".
* gfortran.dg/g77/
20020307-1.f: Ditto.
* gfortran.dg/g77/980310-3.f: Ditto.
* gfortran.dg/goacc/loop-1-2.f95: Ditto.
* gfortran.dg/goacc/loop-1.f95: Ditto.
* gfortran.dg/gomp/appendix-a/a.6.1.f90: Ditto.
* gfortran.dg/gomp/appendix-a/a.6.2.f90: Ditto.
* gfortran.dg/gomp/do-1.f90: Ditto.
* gfortran.dg/gomp/omp_do1.f90: Ditto.
* gfortran.dg/pr17229.f: Ditto.
* gfortran.dg/pr37243.f: Ditto.
* gfortran.dg/pr49721-1.f: Ditto.
* gfortran.dg/pr58484.f: Ditto.
* gfortran.dg/pr81175.f: Ditto.
* gfortran.dg/pr81723.f: Ditto.
* gfortran.dg/predcom-2.f: Ditto.
* gfortran.dg/vect/Ofast-pr50414.f90: Ditto.
* gfortran.dg/vect/cost-model-pr34445a.f: Ditto.
* gfortran.dg/vect/fast-math-mgrid-resid.f: Ditto.
* gfortran.dg/vect/pr52580.f: Ditto.
From-SVN: r260433
+2018-05-21 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/85841
+ * libgfortran.h: New macros GFC_STD_OPT_*.
+ * error.c (notify_std_msg): New function.
+ (gfc_notify_std): Adjust such that it can handle combinations of
+ GFC_STD_* flags in the 'std' argument, not just a single one.
+ * match.c (match_arithmetic_if, gfc_match_if): Reject arithmetic if
+ in Fortran 2018.
+ (gfc_match_stopcode): Use GFC_STD_OPT_* macros.
+ * options.c (set_default_std_flags): Warn for F2018 deleted features
+ by default.
+ (gfc_handle_option): F2018 deleted features are allowed in earlier
+ standards.
+ * symbol.c (gfc_define_st_label, gfc_reference_st_label): Reject
+ nonblock do constructs in Fortran 2018.
+
2018-05-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/80657
}
+/* Return a string describing the nature of a standard violation
+ * and/or the relevant version of the standard. */
+
+char const*
+notify_std_msg(int std)
+{
+
+ if (std & GFC_STD_F2018_DEL)
+ return _("Fortran 2018 deleted feature:");
+ else if (std & GFC_STD_F2018_OBS)
+ return _("Fortran 2018 obsolescent feature:");
+ else if (std & GFC_STD_F2018)
+ return _("Fortran 2018:");
+ else if (std & GFC_STD_F2008_TS)
+ return "TS 29113/TS 18508:";
+ else if (std & GFC_STD_F2008_OBS)
+ return _("Fortran 2008 obsolescent feature:");
+ else if (std & GFC_STD_F2008)
+ return "Fortran 2008:";
+ else if (std & GFC_STD_F2003)
+ return "Fortran 2003:";
+ else if (std & GFC_STD_GNU)
+ return _("GNU Extension:");
+ else if (std & GFC_STD_LEGACY)
+ return _("Legacy Extension:");
+ else if (std & GFC_STD_F95_OBS)
+ return _("Obsolescent feature:");
+ else if (std & GFC_STD_F95_DEL)
+ return _("Deleted feature:");
+ else
+ gcc_unreachable ();
+}
+
+
/* Possibly issue a warning/error about use of a nonstandard (or deleted)
feature. An error/warning will be issued if the currently selected
standard does not contain the requested bits. Return false if
gfc_notify_std (int std, const char *gmsgid, ...)
{
va_list argp;
- bool warning;
const char *msg, *msg2;
char *buffer;
- warning = ((gfc_option.warn_std & std) != 0) && !inhibit_warnings;
- if ((gfc_option.allow_std & std) != 0 && !warning)
- return true;
+ /* Determine whether an error or a warning is needed. */
+ const int wstd = std & gfc_option.warn_std; /* Standard to warn about. */
+ const int estd = std & ~gfc_option.allow_std; /* Standard to error about. */
+ const bool warning = (wstd != 0) && !inhibit_warnings;
+ const bool error = (estd != 0);
+ if (!error && !warning)
+ return true;
if (suppress_errors)
- return warning ? true : false;
+ return !error;
- switch (std)
- {
- case GFC_STD_F2018_DEL:
- msg = _("Fortran 2018 deleted feature:");
- break;
- case GFC_STD_F2018_OBS:
- msg = _("Fortran 2018 obsolescent feature:");
- break;
- case GFC_STD_F2018:
- msg = _("Fortran 2018:");
- break;
- case GFC_STD_F2008_TS:
- msg = "TS 29113/TS 18508:";
- break;
- case GFC_STD_F2008_OBS:
- msg = _("Fortran 2008 obsolescent feature:");
- break;
- case GFC_STD_F2008:
- msg = "Fortran 2008:";
- break;
- case GFC_STD_F2003:
- msg = "Fortran 2003:";
- break;
- case GFC_STD_GNU:
- msg = _("GNU Extension:");
- break;
- case GFC_STD_LEGACY:
- msg = _("Legacy Extension:");
- break;
- case GFC_STD_F95_OBS:
- msg = _("Obsolescent feature:");
- break;
- case GFC_STD_F95_DEL:
- msg = _("Deleted feature:");
- break;
- default:
- gcc_unreachable ();
- }
+ if (error)
+ msg = notify_std_msg (estd);
+ else
+ msg = notify_std_msg (wstd);
msg2 = _(gmsgid);
buffer = (char *) alloca (strlen (msg) + strlen (msg2) + 2);
strcat (buffer, msg2);
va_start (argp, gmsgid);
- if (warning)
- gfc_warning (0, buffer, argp);
- else
+ if (error)
gfc_error_opt (0, buffer, argp);
+ else
+ gfc_warning (0, buffer, argp);
va_end (argp);
- return (warning && !warnings_are_errors) ? true : false;
+ if (error)
+ return false;
+ else
+ return (warning && !warnings_are_errors);
}
#define GFC_STD_F77 (1<<0) /* Included in F77, but not deleted or
obsolescent in later standards. */
+/* Combinations of the above flags that specify which classes of features
+ * are allowed with a certain -std option. */
+#define GFC_STD_OPT_F95 (GFC_STD_F77 | GFC_STD_F95 | GFC_STD_F95_OBS \
+ | GFC_STD_F2008_OBS | GFC_STD_F2018_OBS \
+ | GFC_STD_F2018_DEL)
+#define GFC_STD_OPT_F03 (GFC_STD_OPT_F95 | GFC_STD_F2003)
+#define GFC_STD_OPT_F08 (GFC_STD_OPT_F03 | GFC_STD_F2008)
+#define GFC_STD_OPT_F08TS (GFC_STD_OPT_F08 | GFC_STD_F2008_TS)
+#define GFC_STD_OPT_F18 ((GFC_STD_OPT_F08TS | GFC_STD_F2018) \
+ & (~GFC_STD_F2018_DEL))
/* Bitmasks for the various FPE that can be enabled. These need to be straight integers
e.g., 8 instead of (1<<3), because they will be included in Fortran source. */
return MATCH_ERROR;
}
- if (!gfc_notify_std (GFC_STD_F95_OBS, "Arithmetic IF statement at %C"))
+ if (!gfc_notify_std (GFC_STD_F95_OBS | GFC_STD_F2018_DEL,
+ "Arithmetic IF statement at %C"))
return MATCH_ERROR;
new_st.op = EXEC_ARITHMETIC_IF;
return MATCH_ERROR;
}
- if (!gfc_notify_std (GFC_STD_F95_OBS, "Arithmetic IF statement at %C"))
+ if (!gfc_notify_std (GFC_STD_F95_OBS | GFC_STD_F2018_DEL,
+ "Arithmetic IF statement at %C"))
return MATCH_ERROR;
new_st.op = EXEC_ARITHMETIC_IF;
bool f95, f03;
/* Set f95 for -std=f95. */
- f95 = gfc_option.allow_std == (GFC_STD_F95_OBS | GFC_STD_F95 | GFC_STD_F77
- | GFC_STD_F2008_OBS);
+ f95 = (gfc_option.allow_std == GFC_STD_OPT_F95);
/* 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);
+ f03 = (gfc_option.allow_std == GFC_STD_OPT_F03);
/* Look for a blank between STOP and the stop-code for F2008 or later. */
if (gfc_current_form != FORM_FIXED && !(f95 || f03))
| 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;
}
break;
case OPT_std_f95:
- gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F95 | GFC_STD_F77
- | GFC_STD_F2008_OBS;
+ gfc_option.allow_std = GFC_STD_OPT_F95;
gfc_option.warn_std = GFC_STD_F95_OBS;
gfc_option.max_continue_fixed = 19;
gfc_option.max_continue_free = 39;
break;
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_option.allow_std = GFC_STD_OPT_F03;
gfc_option.warn_std = GFC_STD_F95_OBS;
gfc_option.max_identifier_length = 63;
warn_ampersand = 1;
break;
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_option.allow_std = GFC_STD_OPT_F08;
gfc_option.warn_std = GFC_STD_F95_OBS | GFC_STD_F2008_OBS;
gfc_option.max_identifier_length = 63;
warn_ampersand = 1;
break;
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_option.allow_std = GFC_STD_OPT_F08TS;
gfc_option.warn_std = GFC_STD_F95_OBS | GFC_STD_F2008_OBS;
gfc_option.max_identifier_length = 63;
warn_ampersand = 1;
break;
case OPT_std_f2018:
- 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_F2018 | GFC_STD_F2018_OBS;
+ gfc_option.allow_std = GFC_STD_OPT_F18;
gfc_option.warn_std = GFC_STD_F95_OBS | GFC_STD_F2008_OBS
| GFC_STD_F2018_OBS;
gfc_option.max_identifier_length = 63;
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_F95_OBS | GFC_STD_F2018_DEL,
+ "DO termination statement which is not END DO"
+ " or CONTINUE with label %d at %C", labelno))
return;
break;
}
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_F95_OBS | GFC_STD_F2018_DEL,
+ "Shared DO termination label %d at %C", labelno))
return false;
if (lp->referenced != ST_LABEL_DO_TARGET)
+2018-05-21 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/85841
+ * gfortran.dg/g77/19990826-3.f: Add option "-std=legacy".
+ * gfortran.dg/g77/20020307-1.f: Ditto.
+ * gfortran.dg/g77/980310-3.f: Ditto.
+ * gfortran.dg/goacc/loop-1-2.f95: Ditto.
+ * gfortran.dg/goacc/loop-1.f95: Ditto.
+ * gfortran.dg/gomp/appendix-a/a.6.1.f90: Ditto.
+ * gfortran.dg/gomp/appendix-a/a.6.2.f90: Ditto.
+ * gfortran.dg/gomp/do-1.f90: Ditto.
+ * gfortran.dg/gomp/omp_do1.f90: Ditto.
+ * gfortran.dg/pr17229.f: Ditto.
+ * gfortran.dg/pr37243.f: Ditto.
+ * gfortran.dg/pr49721-1.f: Ditto.
+ * gfortran.dg/pr58484.f: Ditto.
+ * gfortran.dg/pr81175.f: Ditto.
+ * gfortran.dg/pr81723.f: Ditto.
+ * gfortran.dg/predcom-2.f: Ditto.
+ * gfortran.dg/vect/Ofast-pr50414.f90: Ditto.
+ * gfortran.dg/vect/cost-model-pr34445a.f: Ditto.
+ * gfortran.dg/vect/fast-math-mgrid-resid.f: Ditto.
+ * gfortran.dg/vect/pr52580.f: Ditto.
+
2018-05-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/80657
c { dg-do compile }
+c { dg-options "-std=legacy" }
* Date: Thu, 19 Aug 1999 10:02:32 +0200
* From: Frederic Devernay <devernay@istar.fr>
* Organization: ISTAR
IF(M2.LT.64)INDE=5
IF(M2.LT.32)INDE=4
DO 3 NUN =3,INUN
- DO 3 NDE=3,INDE ! { dg-warning "Obsolescent feature: Shared DO termination" }
+ DO 3 NDE=3,INDE
N10=2**NUN
N20=2**NDE
NDIF=(N10-N20)
c { dg-do compile }
+c { dg-options "-std=legacy" }
SUBROUTINE SWEEP
PARAMETER(MAXDIM=4,MAXVEC=4**3*8,MAXT=20)
REAL(KIND=8) B,W1,W2,BNORM,BINV,WT,W0,C1,C2,R1,R2
DIMENSION BNORM(MAXVEC),BINV(MAXVEC),WT(MAXVEC),W0(MAXVEC)
DIMENSION C1(MAXVEC),C2(MAXVEC),R1(MAXVEC),R2(MAXVEC)
DO 200 ILAT=1,2**IDIM
- DO 200 I1=1,IDIM ! { dg-warning "Obsolescent feature: Shared DO termination" }
+ DO 200 I1=1,IDIM
DO 220 I2=1,IDIM
CALL INTACT(ILAT,I1,I1,W1)
220 CONTINUE
c { dg-do compile }
+c { dg-options "-std=legacy" }
c
c This demonstrates a problem with g77 and pic on x86 where
c egcs 1.0.1 and earlier will generate bogus assembler output.
c
basl = dlog10(2.0d0)
do 240 i = low,igh
- do 240 j = low,igh ! { dg-warning "Obsolescent feature: Shared DO termination" }
+ do 240 j = low,igh
tb = b(i,j)
ta = a(i,j)
if (ta .eq. 0.0d0) go to 220
ir = wk(i,1)
fi = 2.0d0**ir
if (i .lt. low) fi = 1.0d0
- do 400 j =low,n ! { dg-warning "Obsolescent feature: Shared DO termination" }
+ do 400 j =low,n
jc = cscale(j)
fj = 2.0d0**jc
if (j .le. igh) go to 390
! See also loop-1.f95.
+! { dg-additional-options "-std=legacy" }
program test
call 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
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
! See also loop-1-2.f95.
+! { dg-additional-options "-std=legacy" }
module test
implicit none
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
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
! { dg-do compile }
+! { dg-options "-std=legacy" }
SUBROUTINE WORK(I, J)
INTEGER I,J
! { dg-do compile }
+! { dg-additional-options "-std=legacy" }
SUBROUTINE WORK(I, J)
INTEGER I,J
! { 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
! { dg-do compile }
-! { dg-options "-fopenmp -std=gnu" }
+! { dg-options "-fopenmp -std=legacy" }
subroutine foo
integer :: i, j
integer, dimension (30) :: a
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
! PR fortran/17229
! { dg-do run }
+! { dg-options "-std=legacy" }
integer i
logical l
l = .false.
i = -1
- if (l) if (i) 999,999,999 ! { dg-warning "Obsolescent feature" }
+ if (l) if (i) 999,999,999
l = .true.
- if (l) if (i) 10,999,999 ! { dg-warning "Obsolescent feature" }
+ if (l) if (i) 10,999,999
go to 999
10 i = 0
- if (l) if (i) 999,20,999 ! { dg-warning "Obsolescent feature" }
+ if (l) if (i) 999,20,999
go to 999
20 i = 1
- if (l) if (i) 999,999,30 ! { dg-warning "Obsolescent feature" }
+ if (l) if (i) 999,999,30
go to 999
999 STOP 1
! 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)
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
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
! 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)
! { 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
! { 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)
! { dg-do compile }
-! { dg-options "-O3 -fno-automatic" }
+! { dg-options "-O3 -fno-automatic -std=legacy" }
FUNCTION WWERF(Z)
! 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
! { dg-do compile }
+! { dg-options "-std=legacy" }
SUBROUTINE SUB (A,L,YMAX)
DIMENSION A(L)
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)
! { 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*-*-* } } }
! { dg-do compile }
+! { dg-options "-std=legacy" }
! { dg-require-effective-target vect_double }
SUBROUTINE CALC2
IMPLICIT REAL*8 (A-H, O-Z)