Fortran: Follow fixes to -freal-{4,8}-real* handling [PR99355,PR57871]
authorTobias Burnus <tobias@codesourcery.com>
Fri, 5 Mar 2021 09:43:11 +0000 (10:43 +0100)
committerTobias Burnus <tobias@codesourcery.com>
Fri, 5 Mar 2021 09:43:11 +0000 (10:43 +0100)
gcc/fortran/ChangeLog:

PR fortran/99355
PR fortran/57871
* invoke.texi (-freal{4,8}-real-*): Extend description.
* primary.c (match_real_constant): Also promote real literals
with '_kind' number.

gcc/testsuite/ChangeLog:

* gfortran.dg/real4-10-real8-10.f90: Add check for real literals
with '_kind' number.
* gfortran.dg/real4-10-real8-16.f90: Likewise.
* gfortran.dg/real4-10-real8-4.f90: Likewise.
* gfortran.dg/real4-10.f90: Likewise.
* gfortran.dg/real4-16-real8-10.f90: Likewise.
* gfortran.dg/real4-16-real8-16.f90: Likewise.
* gfortran.dg/real4-16-real8-4.f90: Likewise.
* gfortran.dg/real4-16.f90: Likewise.
* gfortran.dg/real4-8-real8-10.f90: Likewise.
* gfortran.dg/real4-8-real8-16.f90: Likewise.
* gfortran.dg/real4-8-real8-4.f90: Likewise.
* gfortran.dg/real4-8.f90: Likewise.
* gfortran.dg/real8-10.f90: Likewise.
* gfortran.dg/real8-16.f90: Likewise.
* gfortran.dg/real8-4.f90: Likewise.

17 files changed:
gcc/fortran/invoke.texi
gcc/fortran/primary.c
gcc/testsuite/gfortran.dg/real4-10-real8-10.f90
gcc/testsuite/gfortran.dg/real4-10-real8-16.f90
gcc/testsuite/gfortran.dg/real4-10-real8-4.f90
gcc/testsuite/gfortran.dg/real4-10.f90
gcc/testsuite/gfortran.dg/real4-16-real8-10.f90
gcc/testsuite/gfortran.dg/real4-16-real8-16.f90
gcc/testsuite/gfortran.dg/real4-16-real8-4.f90
gcc/testsuite/gfortran.dg/real4-16.f90
gcc/testsuite/gfortran.dg/real4-8-real8-10.f90
gcc/testsuite/gfortran.dg/real4-8-real8-16.f90
gcc/testsuite/gfortran.dg/real4-8-real8-4.f90
gcc/testsuite/gfortran.dg/real4-8.f90
gcc/testsuite/gfortran.dg/real8-10.f90
gcc/testsuite/gfortran.dg/real8-16.f90
gcc/testsuite/gfortran.dg/real8-4.f90

index 3f3ae5a..0fb7e1a 100644 (file)
@@ -520,13 +520,24 @@ representation of the translated Fortran code, produced by
 @cindex options, real kind type promotion
 Promote all @code{REAL(KIND=M)} entities to @code{REAL(KIND=N)} entities.
 If @code{REAL(KIND=N)} is unavailable, then an error will be issued.
-All other real kind types are unaffected by this option.
+The @code{-freal-4-} flags also affect the default real kind and the
+@code{-freal-8-} flags also the double-precision real kind.  All other
+real-kind types are unaffected by this option.  The promotion is also
+applied to real literal constants of default and double-precision kind
+and a specified kind number of 4 or 8, respectively.
+However, @code{-fdefault-real-8}, @code{-fdefault-real-10},
+@code{-fdefault-real-10}, and @code{-fdefault-double-8} take precedence
+for the default and double-precision real kinds, both for real literal
+constants and for declarations without a kind number.
+Note that for @code{REAL(KIND=KIND(1.0))} the literal may get promoted and
+then the result may get promoted again.
 These options should be used with care and may not be suitable for your
 codes.  Areas of possible concern include calls to external procedures,
 alignment in @code{EQUIVALENCE} and/or @code{COMMON}, generic interfaces,
-BOZ literal constant conversion, and I/O.  Inspection of the intermediate
-representation of the translated Fortran code, produced by
-@option{-fdump-tree-original}, is suggested.
+BOZ literal constant conversion, and I/O and calls to intrinsic procedures
+when passing a value to the @code{kind=} dummy argument.  Inspection of the
+intermediate representation of the translated Fortran code, produced by
+@option{-fdump-fortran-original} or @option{-fdump-tree-original}, is suggested.
 
 @item -std=@var{std}
 @opindex @code{std=}@var{std} option
index 9dd1a86..a6df885 100644 (file)
@@ -666,6 +666,25 @@ done:
   if (kind == -1)
     goto cleanup;
 
+  if (kind == 4)
+    {
+      if (flag_real4_kind == 8)
+       kind = 8;
+      if (flag_real4_kind == 10)
+       kind = 10;
+      if (flag_real4_kind == 16)
+       kind = 16;
+    }
+  else if (kind == 8)
+    {
+      if (flag_real8_kind == 4)
+       kind = 4;
+      if (flag_real8_kind == 10)
+       kind = 10;
+      if (flag_real8_kind == 16)
+       kind = 16;
+    }
+
   switch (exp_char)
     {
     case 'd':
index af4f1b2..1afd9ca 100644 (file)
@@ -2,6 +2,7 @@
 ! { dg-additional-options "-w -freal-4-real-10 -freal-8-real-10" }
 !
 ! PR fortran/99355
+! PR fortran/99355 comment 10 to 13 + PR fortran/57871
 !
 
 program test
@@ -9,6 +10,7 @@ program test
   real*4:: r2
   real(4) :: r3
   real(selected_real_kind(p=6)) :: r4
+  integer, parameter :: k4 = 4, k8 = 8
 
   double precision :: d1
   real*8 :: d2
@@ -18,6 +20,6 @@ program test
 
   !print '(tr3,a10,10(tr1,i2))', 'single', kind(r1), kind(r2), kind(r3), kind(r4)
   !print '(tr3,a10,10(tr1,i2))', 'double', kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)
-  if (any ([kind(1.0), kind(r1), kind(r2), kind(r3), kind(r4)] /= 10)) stop 1
-  if (any ([kind(1.d0), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 10)) stop 2
+  if (any ([kind(1.0), kind(1.0_4), kind(1.0_k4), kind(r1), kind(r2), kind(r3), kind(r4)] /= 10)) stop 1
+  if (any ([kind(1.d0), kind(1.0_8), kind(1.0_k8), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 10)) stop 2
 end program test
index 408d347..83c5119 100644 (file)
@@ -3,6 +3,7 @@
 ! { dg-require-effective-target fortran_real_16 }
 !
 ! PR fortran/99355
+! PR fortran/99355 comment 10 to 13 + PR fortran/57871
 !
 
 program test
@@ -10,6 +11,7 @@ program test
   real*4:: r2
   real(4) :: r3
   real(selected_real_kind(p=6)) :: r4
+  integer, parameter :: k4 = 4, k8 = 8
 
   double precision :: d1
   real*8 :: d2
@@ -19,6 +21,6 @@ program test
 
   !print '(tr3,a10,10(tr1,i2))', 'single', kind(r1), kind(r2), kind(r3), kind(r4)
   !print '(tr3,a10,10(tr1,i2))', 'double', kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)
-  if (any ([kind(1.0), kind(r1), kind(r2), kind(r3), kind(r4)] /= 10)) stop 1
-  if (any ([kind(1.d0), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 16)) stop 2
+  if (any ([kind(1.0), kind(1.0_4), kind(1.0_k4), kind(r1), kind(r2), kind(r3), kind(r4)] /= 10)) stop 1
+  if (any ([kind(1.d0), kind(1.0_8), kind(1.0_k8), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 16)) stop 2
 end program test
index 7e52cdb..19b79e9 100644 (file)
@@ -2,6 +2,7 @@
 ! { dg-additional-options "-w -freal-4-real-10 -freal-8-real-4" }
 !
 ! PR fortran/99355
+! PR fortran/99355 comment 10 to 13 + PR fortran/57871
 !
 
 program test
@@ -9,6 +10,7 @@ program test
   real*4:: r2
   real(4) :: r3
   real(selected_real_kind(p=6)) :: r4
+  integer, parameter :: k4 = 4, k8 = 8
 
   double precision :: d1
   real*8 :: d2
@@ -18,6 +20,6 @@ program test
 
   !print '(tr3,a10,10(tr1,i2))', 'single', kind(r1), kind(r2), kind(r3), kind(r4)
   !print '(tr3,a10,10(tr1,i2))', 'double', kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)
-  if (any ([kind(1.0), kind(r1), kind(r2), kind(r3), kind(r4)] /= 10)) stop 1
-  if (any ([kind(1.d0), kind(d1), kind(d2), kind(d3), kind(d5)] /= 4)) stop 2
+  if (any ([kind(1.0), kind(1.0_4), kind(1.0_k4), kind(r1), kind(r2), kind(r3), kind(r4)] /= 10)) stop 1
+  if (any ([kind(1.d0), kind(1.0_8), kind(1.0_k8), kind(d1), kind(d2), kind(d3), kind(d5)] /= 4)) stop 2
 end program test
index 44fcd83..133af44 100644 (file)
@@ -2,6 +2,7 @@
 ! { dg-additional-options "-w -freal-4-real-10" }
 !
 ! PR fortran/99355
+! PR fortran/99355 comment 10 to 13 + PR fortran/57871
 !
 
 program test
@@ -9,6 +10,7 @@ program test
   real*4:: r2
   real(4) :: r3
   real(selected_real_kind(p=6)) :: r4
+  integer, parameter :: k4 = 4, k8 = 8
 
   double precision :: d1
   real*8 :: d2
@@ -18,6 +20,6 @@ program test
 
   !print '(tr3,a10,10(tr1,i2))', 'single', kind(r1), kind(r2), kind(r3), kind(r4)
   !print '(tr3,a10,10(tr1,i2))', 'double', kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)
-  if (any ([kind(1.0), kind(r1), kind(r2), kind(r3), kind(r4)] /= 10)) stop 1
-  if (any ([kind(1.d0), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 8)) stop 2
+  if (any ([kind(1.0), kind(1.0_4), kind(1.0_k4), kind(r1), kind(r2), kind(r3), kind(r4)] /= 10)) stop 1
+  if (any ([kind(1.d0), kind(1.0_8), kind(1.0_k8), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 8)) stop 2
 end program test
index d080a10..1ddefca 100644 (file)
@@ -3,6 +3,7 @@
 ! { dg-require-effective-target fortran_real_16 }
 !
 ! PR fortran/99355
+! PR fortran/99355 comment 10 to 13 + PR fortran/57871
 !
 
 program test
@@ -10,6 +11,7 @@ program test
   real*4:: r2
   real(4) :: r3
   real(selected_real_kind(p=6)) :: r4
+  integer, parameter :: k4 = 4, k8 = 8
 
   double precision :: d1
   real*8 :: d2
@@ -19,6 +21,6 @@ program test
 
   !print '(tr3,a10,10(tr1,i2))', 'single', kind(r1), kind(r2), kind(r3), kind(r4)
   !print '(tr3,a10,10(tr1,i2))', 'double', kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)
-  if (any ([kind(1.0), kind(r1), kind(r2), kind(r3), kind(r4)] /= 16)) stop 1
-  if (any ([kind(1.d0), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 10)) stop 2
+  if (any ([kind(1.0), kind(1.0_4), kind(1.0_k4), kind(r1), kind(r2), kind(r3), kind(r4)] /= 16)) stop 1
+  if (any ([kind(1.d0), kind(1.0_8), kind(1.0_k8), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 10)) stop 2
 end program test
index d525c60..0e76193 100644 (file)
@@ -3,6 +3,7 @@
 ! { dg-require-effective-target fortran_real_16 }
 !
 ! PR fortran/99355
+! PR fortran/99355 comment 10 to 13 + PR fortran/57871
 !
 
 program test
@@ -10,6 +11,7 @@ program test
   real*4:: r2
   real(4) :: r3
   real(selected_real_kind(p=6)) :: r4
+  integer, parameter :: k4 = 4, k8 = 8
 
   double precision :: d1
   real*8 :: d2
@@ -19,6 +21,6 @@ program test
 
   !print '(tr3,a10,10(tr1,i2))', 'single', kind(r1), kind(r2), kind(r3), kind(r4)
   !print '(tr3,a10,10(tr1,i2))', 'double', kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)
-  if (any ([kind(1.0), kind(r1), kind(r2), kind(r3), kind(r4)] /= 16)) stop 1
-  if (any ([kind(1.d0), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 16)) stop 2
+  if (any ([kind(1.0), kind(1.0_4), kind(1.0_k4), kind(r1), kind(r2), kind(r3), kind(r4)] /= 16)) stop 1
+  if (any ([kind(1.d0), kind(1.0_8), kind(1.0_k8), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 16)) stop 2
 end program test
index e508819..3d2185b 100644 (file)
@@ -3,6 +3,7 @@
 ! { dg-require-effective-target fortran_real_16 }
 !
 ! PR fortran/99355
+! PR fortran/99355 comment 10 to 13 + PR fortran/57871
 !
 
 program test
@@ -10,6 +11,7 @@ program test
   real*4:: r2
   real(4) :: r3
   real(selected_real_kind(p=6)) :: r4
+  integer, parameter :: k4 = 4, k8 = 8
 
   double precision :: d1
   real*8 :: d2
@@ -19,6 +21,6 @@ program test
 
   !print '(tr3,a10,10(tr1,i2))', 'single', kind(r1), kind(r2), kind(r3), kind(r4)
   !print '(tr3,a10,10(tr1,i2))', 'double', kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)
-  if (any ([kind(1.0), kind(r1), kind(r2), kind(r3), kind(r4)] /= 16)) stop 1
-  if (any ([kind(1.d0), kind(d1), kind(d2), kind(d3), kind(d5)] /= 4)) stop 2
+  if (any ([kind(1.0), kind(1.0_4), kind(1.0_k4), kind(r1), kind(r2), kind(r3), kind(r4)] /= 16)) stop 1
+  if (any ([kind(1.d0), kind(1.0_8), kind(1.0_k8), kind(d1), kind(d2), kind(d3), kind(d5)] /= 4)) stop 2
 end program test
index 5cd2f1f..e07bcd4 100644 (file)
@@ -3,6 +3,7 @@
 ! { dg-require-effective-target fortran_real_16 }
 !
 ! PR fortran/99355
+! PR fortran/99355 comment 10 to 13 + PR fortran/57871
 !
 
 program test
@@ -10,6 +11,7 @@ program test
   real*4:: r2
   real(4) :: r3
   real(selected_real_kind(p=6)) :: r4
+  integer, parameter :: k4 = 4, k8 = 8
 
   double precision :: d1
   real*8 :: d2
@@ -19,6 +21,6 @@ program test
 
   !print '(tr3,a10,10(tr1,i2))', 'single', kind(r1), kind(r2), kind(r3), kind(r4)
   !print '(tr3,a10,10(tr1,i2))', 'double', kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)
-  if (any ([kind(1.0), kind(r1), kind(r2), kind(r3), kind(r4)] /= 16)) stop 1
-  if (any ([kind(1.d0), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 8)) stop 2
+  if (any ([kind(1.0), kind(1.0_4), kind(1.0_k4), kind(r1), kind(r2), kind(r3), kind(r4)] /= 16)) stop 1
+  if (any ([kind(1.d0), kind(1.0_8), kind(1.0_k8), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 8)) stop 2
 end program test
index 742d352..2d48f57 100644 (file)
@@ -2,6 +2,7 @@
 ! { dg-additional-options "-w -freal-4-real-8 -freal-8-real-10" }
 !
 ! PR fortran/99355
+! PR fortran/99355 comment 10 to 13 + PR fortran/57871
 !
 
 program test
@@ -9,6 +10,7 @@ program test
   real*4:: r2
   real(4) :: r3
   real(selected_real_kind(p=6)) :: r4
+  integer, parameter :: k4 = 4, k8 = 8
 
   double precision :: d1
   real*8 :: d2
@@ -18,6 +20,6 @@ program test
 
   print '(tr3,a10,10(tr1,i2))', 'single', kind(r1), kind(r2), kind(r3), kind(r4)
   print '(tr3,a10,10(tr1,i2))', 'double', kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)
-  if (any ([kind(r1), kind(r2), kind(r3), kind(r4)] /= 8)) stop 1
-  if (any ([kind(1.d0), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 10)) stop 2
+  if (any ([kind(r1), kind(1.0_4), kind(1.0_k4), kind(r2), kind(r3), kind(r4)] /= 8)) stop 1
+  if (any ([kind(1.d0), kind(1.0_8), kind(1.0_k8), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 10)) stop 2
 end program test
index 3733c34..4d3e5af 100644 (file)
@@ -3,6 +3,7 @@
 ! { dg-require-effective-target fortran_real_16 }
 !
 ! PR fortran/99355
+! PR fortran/99355 comment 10 to 13 + PR fortran/57871
 !
 
 program test
@@ -10,6 +11,7 @@ program test
   real*4:: r2
   real(4) :: r3
   real(selected_real_kind(p=6)) :: r4
+  integer, parameter :: k4 = 4, k8 = 8
 
   double precision :: d1
   real*8 :: d2
@@ -19,6 +21,6 @@ program test
 
   !print '(tr3,a10,10(tr1,i2))', 'single', kind(r1), kind(r2), kind(r3), kind(r4)
   !print '(tr3,a10,10(tr1,i2))', 'double', kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)
-  if (any ([kind(1.0), kind(r1), kind(r2), kind(r3), kind(r4)] /= 8)) stop 1
-  if (any ([kind(1.d0), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 16)) stop 2
+  if (any ([kind(1.0), kind(1.0_4), kind(1.0_k4), kind(r1), kind(r2), kind(r3), kind(r4)] /= 8)) stop 1
+  if (any ([kind(1.d0), kind(1.0_8), kind(1.0_k8), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 16)) stop 2
 end program test
index b83b243..9f18d43 100644 (file)
@@ -2,6 +2,7 @@
 ! { dg-additional-options "-w -freal-4-real-8 -freal-8-real-4" }
 !
 ! PR fortran/99355
+! PR fortran/99355 comment 10 to 13 + PR fortran/57871
 !
 
 program test
@@ -9,6 +10,7 @@ program test
   real*4:: r2
   real(4) :: r3
   real(selected_real_kind(p=6)) :: r4
+  integer, parameter :: k4 = 4, k8 = 8
 
   double precision :: d1
   real*8 :: d2
@@ -18,6 +20,6 @@ program test
 
   print '(tr3,a10,10(tr1,i2))', 'single', kind(r1), kind(r2), kind(r3), kind(r4)
   print '(tr3,a10,10(tr1,i2))', 'double', kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)
-  if (any ([kind(1.0), kind(r1), kind(r2), kind(r3), kind(r4)] /= 8)) stop 1
-  if (any ([kind(1.d0), kind(d1), kind(d2), kind(d3), kind(d5)] /= 4)) stop 2
+  if (any ([kind(1.0), kind(1.0_4), kind(1.0_k4), kind(r1), kind(r2), kind(r3), kind(r4)] /= 8)) stop 1
+  if (any ([kind(1.d0), kind(1.0_8), kind(1.0_k8), kind(d1), kind(d2), kind(d3), kind(d5)] /= 4)) stop 2
 end program test
index 50577dd..f436b3d 100644 (file)
@@ -2,6 +2,7 @@
 ! { dg-additional-options "-w -freal-4-real-8" }
 !
 ! PR fortran/99355
+! PR fortran/99355 comment 10 to 13 + PR fortran/57871
 !
 
 program test
@@ -9,6 +10,7 @@ program test
   real*4:: r2
   real(4) :: r3
   real(selected_real_kind(p=6)) :: r4
+  integer, parameter :: k4 = 4, k8 = 8
 
   double precision :: d1
   real*8 :: d2
@@ -18,6 +20,6 @@ program test
 
   !print '(tr3,a10,10(tr1,i2))', 'single', kind(r1), kind(r2), kind(r3), kind(r4)
   !print '(tr3,a10,10(tr1,i2))', 'double', kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)
-  if (any ([kind(1.0), kind(r1), kind(r2), kind(r3), kind(r4)] /= 8)) stop 1
-  if (any ([kind(1.d0), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 8)) stop 2
+  if (any ([kind(1.0), kind(1.0_4), kind(1.0_k4), kind(r1), kind(r2), kind(r3), kind(r4)] /= 8)) stop 1
+  if (any ([kind(1.d0), kind(1.0_8), kind(1.0_k8), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 8)) stop 2
 end program test
index 68f6bc4..ce85a78 100644 (file)
@@ -2,6 +2,7 @@
 ! { dg-additional-options "-w -freal-8-real-10" }
 !
 ! PR fortran/99355
+! PR fortran/99355 comment 10 to 13 + PR fortran/57871
 !
 
 program test
@@ -9,6 +10,7 @@ program test
   real*4:: r2
   real(4) :: r3
   real(selected_real_kind(p=6)) :: r4
+  integer, parameter :: k4 = 4, k8 = 8
 
   double precision :: d1
   real*8 :: d2
@@ -18,6 +20,6 @@ program test
 
   !print '(tr3,a10,10(tr1,i2))', 'single', kind(r1), kind(r2), kind(r3), kind(r4)
   !print '(tr3,a10,10(tr1,i2))', 'double', kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)
-  if (any ([kind(1.0), kind(r1), kind(r2), kind(r3), kind(r4)] /= 4)) stop 1
-  if (any ([kind(1.d0), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 10)) stop 2
+  if (any ([kind(1.0), kind(1.0_4), kind(1.0_k4), kind(r1), kind(r2), kind(r3), kind(r4)] /= 4)) stop 1
+  if (any ([kind(1.d0), kind(1.0_8), kind(1.0_k8), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 10)) stop 2
 end program test
index 5ddd9e1..b3b86c8 100644 (file)
@@ -3,6 +3,7 @@
 ! { dg-require-effective-target fortran_real_16 }
 !
 ! PR fortran/99355
+! PR fortran/99355 comment 10 to 13 + PR fortran/57871
 !
 
 program test
@@ -10,6 +11,7 @@ program test
   real*4:: r2
   real(4) :: r3
   real(selected_real_kind(p=6)) :: r4
+  integer, parameter :: k4 = 4, k8 = 8
 
   double precision :: d1
   real*8 :: d2
@@ -19,6 +21,6 @@ program test
 
   !print '(tr3,a10,10(tr1,i2))', 'single', kind(r1), kind(r2), kind(r3), kind(r4)
   !print '(tr3,a10,10(tr1,i2))', 'double', kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)
-  if (any ([kind(1.0), kind(r1), kind(r2), kind(r3), kind(r4)] /= 4)) stop 1
-  if (any ([kind(1.d0), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 16)) stop 2
+  if (any ([kind(1.0), kind(1.0_4), kind(1.0_k4), kind(r1), kind(r2), kind(r3), kind(r4)] /= 4)) stop 1
+  if (any ([kind(1.d0), kind(1.0_8), kind(1.0_k8), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 16)) stop 2
 end program test
index a68559a..c64c297 100644 (file)
@@ -2,6 +2,7 @@
 ! { dg-additional-options "-w -freal-8-real-4" }
 !
 ! PR fortran/99355
+! PR fortran/99355 comment 10 to 13 + PR fortran/57871
 !
 
 program test
@@ -9,6 +10,7 @@ program test
   real*4:: r2
   real(4) :: r3
   real(selected_real_kind(p=6)) :: r4
+  integer, parameter :: k4 = 4, k8 = 8
 
   double precision :: d1
   real*8 :: d2
@@ -18,6 +20,6 @@ program test
 
   !print '(tr3,a10,10(tr1,i2))', 'single', kind(r1), kind(r2), kind(r3), kind(r4)
   !print '(tr3,a10,10(tr1,i2))', 'double', kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)
-  if (any ([kind(1.0), kind(r1), kind(r2), kind(r3), kind(r4)] /= 4)) stop 1
-  if (any ([kind(1.d0), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 4)) stop 2
+  if (any ([kind(1.0), kind(1.0_4), kind(1.0_k4), kind(r1), kind(r2), kind(r3), kind(r4)] /= 4)) stop 1
+  if (any ([kind(1.d0), kind(1.0_8), kind(1.0_k8), kind(d1), kind(d2), kind(d3), kind(d4), kind(d5)] /= 4)) stop 2
 end program test