On Fri, Oct 04, 2019 at 05:49:13PM +0200, Rainer Orth wrote:
> 
> > The attach patch silences -Wconversion and -Wconversion-extra
> > warnings that had previously been issued for explicit conversions
> > (see testcase for examples).
> >
> > The patch has been tested on x86-*-freebsd.  OK to commit?
> >
> > 2019-10-03  Steven G. Kargl  <ka...@gcc.gnu.org>
> >
> >     PR fortran/91497
> >     * simplify.c (gfc_simplify_dble, simplify_intconv, gfc_simplify_real,
> >     gfc_simplify_sngl): Disable -Wconversion and -Wconversion-extra
> >     warnings for explicit conversion of literal constants.
> >
> > 2019-10-03  Steven G. Kargl  <ka...@gcc.gnu.org>
> >
> >     PR fortran/91497
> >     * gfortran.dg/pr91497.f90: New test.
> 
> the new testcases FAILs on sparc and a couple of other targets:
> 
> +FAIL: gfortran.dg/pr91497.f90   -O  (test for excess errors)
> 
> Excess errors:
> /vol/gcc/src/hg/trunk/local/gcc/testsuite/gfortran.dg/pr91497.f90:13:13: 
> Error: Old-style type declaration REAL*10 not supported at (1)
> /vol/gcc/src/hg/trunk/local/gcc/testsuite/gfortran.dg/pr91497.f90:20:30: 
> Error: Invalid real kind 10 at (1)
> /vol/gcc/src/hg/trunk/local/gcc/testsuite/gfortran.dg/pr91497.f90:55:22: 
> Error: Invalid kind for REAL at (1)
> 

Does the attach patch fix targets without REAL(10) and REAL(16)?

-- 
Steve
Index: gcc/testsuite/gfortran.dg/pr91497.f90
===================================================================
--- gcc/testsuite/gfortran.dg/pr91497.f90	(revision 276598)
+++ gcc/testsuite/gfortran.dg/pr91497.f90	(working copy)
@@ -8,60 +8,32 @@
 !
 program foo
 
+      implicit none
+
       real*4 a,aa
       real*8 b,bb
-      real*10 c,cc
-      real*16 d
       integer*2 e,ee
       integer*4 f,ff
       integer*8 g,gg
+
       PARAMETER(a=3.1415927_4)
       PARAMETER(b=3.1415927_8)
-      PARAMETER(c=3.1415927_10)
-      PARAMETER(d=3.1415927_16)
       PARAMETER(e=123_2)
       PARAMETER(f=123_4)
       PARAMETER(g=123_8)
 
       aa=REAL(b)
-      aa=REAL(c)
-      aa=REAL(d)
       aa=REAL(e)
       aa=REAL(f)
       aa=REAL(g)
       aa=FLOAT(f)
       aa=FLOOR(b)
-      aa=FLOOR(c)
-      aa=FLOOR(d)
       aa=CEILING(b)
-      aa=CEILING(c)
-      aa=CEILING(d)
-      !---unknown but documented type conversions:
-      !!aa=FLOATI(e)
-      !!aa=FLOATJ(f)
-      !!aa=FLOATK(g)
-      !---documentation is wrong for sngl:
-      aa=SNGL(c)
-      aa=SNGL(d)
-      bb=REAL(c, kind=8)
-      bb=REAL(d, kind=8)
-      bb=DBLE(c)
-      bb=DBLE(d)
+
       bb=DFLOAT(g)
-      bb=FLOOR(c)
-      bb=FLOOR(d)
-      bb=CEILING(c)
-      bb=CEILING(d)
-      cc=REAL(d, kind=10)
-      cc=FLOOR(d)
-      cc=CEILING(d)
 
       aa=AINT(b)
       aa=ANINT(b)
-      aa=AINT(c)
-      aa=ANINT(c)
-      aa=AINT(d)
-      aa=ANINT(d)
       bb=DINT(b)
       bb=DNINT(b)
 
@@ -69,10 +41,6 @@ program foo
       ee=NINT(a, kind=2)
       ee=INT(b, kind=2)
       ee=NINT(b, kind=2)
-      ee=INT(c, kind=2)
-      ee=NINT(c, kind=2)
-      ee=INT(d, kind=2)
-      ee=NINT(d, kind=2)
       ee=INT(f, kind=2)
       ee=INT(g, kind=2)
       ee=IFIX(a)
@@ -80,8 +48,6 @@ program foo
       ee=IDNINT(b)
       ee=INT2(a)
       ee=INT2(b)
-      ee=INT2(c)
-      ee=INT2(d)
       ee=INT2(f)
       ee=INT2(g)
 
@@ -89,30 +55,16 @@ program foo
       ff=NINT(a, kind=4)
       ff=INT(b, kind=4)
       ff=NINT(b, kind=4)
-      ff=INT(c, kind=4)
-      ff=NINT(c, kind=4)
-      ff=INT(d, kind=4)
-      ff=NINT(d, kind=4)
       ff=INT(f, kind=4)
       ff=INT(g, kind=4)
       ff=IFIX(a)
       ff=IDINT(b)
       ff=IDNINT(b)
-      !---LONG not allowed anymore in gfortran 10 (?):
-      !!ff=LONG(a)
-      !!ff=LONG(b)
-      !!ff=LONG(c)
-      !!ff=LONG(d)
-      !!ff=LONG(g)
 
       gg=INT(a, kind=8)
       gg=NINT(a, kind=8)
       gg=INT(b, kind=8)
       gg=NINT(b, kind=8)
-      gg=INT(c, kind=8)
-      gg=NINT(c, kind=8)
-      gg=INT(d, kind=8)
-      gg=NINT(d, kind=8)
       gg=INT(f, kind=8)
       gg=INT(g, kind=8)
       gg=IFIX(a)
@@ -120,8 +72,6 @@ program foo
       gg=IDNINT(b)
       gg=INT8(a)
       gg=INT8(b)
-      gg=INT8(c)
-      gg=INT8(d)
       gg=INT8(g)
 end
 
Index: gcc/testsuite/gfortran.dg/pr91497_1.f90
===================================================================
--- gcc/testsuite/gfortran.dg/pr91497_1.f90	(nonexistent)
+++ gcc/testsuite/gfortran.dg/pr91497_1.f90	(working copy)
@@ -0,0 +1,120 @@
+! { dg-do compile }
+! { dg-options "-Wall" }
+! { dg-require-effective-target fortran_large_real }
+! Code contributed by Manfred Schwarb <manfred99 at gmx dot ch>
+! PR fortran/91497
+!
+! Prior to applying the patch for this PR, the following code
+! would generate numerous conversion warnings.
+!
+program foo
+
+      implicit none
+
+      real*4 a,aa
+      real*8 b,bb
+      real*10 c,cc
+      real*16 d
+      integer*2 e,ee
+      integer*4 f,ff
+      integer*8 g,gg
+      PARAMETER(a=3.1415927_4)
+      PARAMETER(b=3.1415927_8)
+      PARAMETER(c=3.1415927_10)
+      PARAMETER(d=3.1415927_16)
+      PARAMETER(e=123_2)
+      PARAMETER(f=123_4)
+      PARAMETER(g=123_8)
+
+      aa=REAL(b)
+      aa=REAL(c)
+      aa=REAL(d)
+      aa=REAL(e)
+      aa=REAL(f)
+      aa=REAL(g)
+      aa=FLOAT(f)
+      aa=FLOOR(b)
+      aa=FLOOR(c)
+      aa=FLOOR(d)
+      aa=CEILING(b)
+      aa=CEILING(c)
+      aa=CEILING(d)
+
+      aa=SNGL(c)
+      aa=SNGL(d)
+      bb=REAL(c, kind=8)
+      bb=REAL(d, kind=8)
+      bb=DBLE(c)
+      bb=DBLE(d)
+      bb=DFLOAT(g)
+      bb=FLOOR(c)
+      bb=FLOOR(d)
+      bb=CEILING(c)
+      bb=CEILING(d)
+      cc=REAL(d, kind=10)
+      cc=FLOOR(d)
+      cc=CEILING(d)
+
+      aa=AINT(b)
+      aa=ANINT(b)
+      aa=AINT(c)
+      aa=ANINT(c)
+      aa=AINT(d)
+      aa=ANINT(d)
+      bb=DINT(b)
+      bb=DNINT(b)
+
+      ee=INT(a, kind=2)
+      ee=NINT(a, kind=2)
+      ee=INT(b, kind=2)
+      ee=NINT(b, kind=2)
+      ee=INT(c, kind=2)
+      ee=NINT(c, kind=2)
+      ee=INT(d, kind=2)
+      ee=NINT(d, kind=2)
+      ee=INT(f, kind=2)
+      ee=INT(g, kind=2)
+      ee=IFIX(a)
+      ee=IDINT(b)
+      ee=IDNINT(b)
+      ee=INT2(a)
+      ee=INT2(b)
+      ee=INT2(c)
+      ee=INT2(d)
+      ee=INT2(f)
+      ee=INT2(g)
+
+      ff=INT(a, kind=4)
+      ff=NINT(a, kind=4)
+      ff=INT(b, kind=4)
+      ff=NINT(b, kind=4)
+      ff=INT(c, kind=4)
+      ff=NINT(c, kind=4)
+      ff=INT(d, kind=4)
+      ff=NINT(d, kind=4)
+      ff=INT(f, kind=4)
+      ff=INT(g, kind=4)
+      ff=IFIX(a)
+      ff=IDINT(b)
+      ff=IDNINT(b)
+
+      gg=INT(a, kind=8)
+      gg=NINT(a, kind=8)
+      gg=INT(b, kind=8)
+      gg=NINT(b, kind=8)
+      gg=INT(c, kind=8)
+      gg=NINT(c, kind=8)
+      gg=INT(d, kind=8)
+      gg=NINT(d, kind=8)
+      gg=INT(f, kind=8)
+      gg=INT(g, kind=8)
+      gg=IFIX(a)
+      gg=IDINT(b)
+      gg=IDNINT(b)
+      gg=INT8(a)
+      gg=INT8(b)
+      gg=INT8(c)
+      gg=INT8(d)
+      gg=INT8(g)
+end
+

Reply via email to