-! { dg-do compile { target { i?86-*-* x86_64-*-* } } }
+! { dg-do compile }
+! { dg-require-effective-target fortran_real_10 }
+! { dg-require-effective-target fortran_real_16 }
! { dg-options "-Wall" }
! Code contributed by Manfred Schwarb <manfred99 at gmx dot ch>
! PR fortran/91497
!
program foo
- 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
+ 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)
aa=CEILING(b)
aa=CEILING(c)
aa=CEILING(d)
- !---unknown but documented type conversions:
+ !---DEC specific type conversions (-fdec):
!!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)
ff=IFIX(a)
ff=IDINT(b)
ff=IDNINT(b)
- !---LONG not allowed anymore in gfortran 10 (?):
+ !---LONG support got removed:
!!ff=LONG(a)
!!ff=LONG(b)
!!ff=LONG(c)
--- /dev/null
+! { dg-do compile }
+! { dg-options "-Wall" }
+! 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.
+! Additional test case to cover all targets.
+!
+program foo
+
+ real(4) a, aa
+ real(8) b, bb
+ integer(2) e, ee
+ integer(4) f, ff
+ integer(8) g, gg
+ complex(4) ww
+ complex(8) xx
+ PARAMETER(a=3.1415927_4)
+ PARAMETER(b=3.1415927_8)
+ PARAMETER(e=123_2)
+ PARAMETER(f=123_4)
+ PARAMETER(g=123_8)
+
+ aa=REAL(b) ! was: Change of value in conversion from 'REAL(8)' to 'REAL(4)'
+ aa=REAL(e)
+ aa=REAL(f)
+ aa=REAL(g)
+ aa=REAL(b, kind=4) ! was: Change of value in conversion from 'REAL(8)' to 'REAL(4)'
+ bb=REAL(a, kind=8)
+
+ aa=FLOAT(f)
+ bb=DFLOAT(g)
+ aa=SNGL(b) ! was: Change of value in conversion from 'REAL(8)' to 'REAL(4)'
+ aa=AINT(a)
+ bb=AINT(b)
+ aa=AINT(b, kind=4)
+ bb=DINT(b)
+ aa=ANINT(a)
+ bb=ANINT(b)
+ aa=ANINT(b, kind=4)
+ bb=DNINT(b)
+ aa=AMAX0(f, f)
+ aa=AMIN0(f, f)
+ aa=AMAX0(g, g)
+ aa=AMIN0(g, g)
+
+ ee=INT(a)
+ ee=INT(a, kind=2) ! was: Change of value in conversion from 'REAL(4)' to 'INTEGER(2)'
+ ee=INT(b, kind=2) ! was: Change of value in conversion from 'REAL(8)' to 'INTEGER(2)'
+ ee=INT(f, kind=2)
+ ee=INT(g, kind=2)
+ ff=INT(b)
+ ff=INT(a, kind=4) ! was: Change of value in conversion from 'REAL(4)' to 'INTEGER(4)'
+ ff=INT(b, kind=4) ! was: Change of value in conversion from 'REAL(8)' to 'INTEGER(4)'
+ ff=INT(f, kind=4)
+ ff=INT(g, kind=4)
+ gg=INT(a)
+ gg=INT(a, kind=8) ! was: Change of value in conversion from 'REAL(4)' to 'INTEGER(8)'
+ gg=INT(b, kind=8) ! was: Change of value in conversion from 'REAL(8)' to 'INTEGER(8)'
+ gg=INT(f, kind=8)
+ gg=INT(g, kind=8)
+
+ ee=IFIX(a)
+ ff=IFIX(a)
+ gg=IFIX(a)
+ ee=IDINT(b)
+ ff=IDINT(b)
+ gg=IDINT(b)
+ ee=INT2(a) ! was: Change of value in conversion from 'REAL(4)' to 'INTEGER(2)'
+ ee=INT2(b) ! was: Change of value in conversion from 'REAL(8)' to 'INTEGER(2)'
+ ee=INT2(f)
+ ee=INT2(g)
+ gg=INT8(a) ! was: Change of value in conversion from 'REAL(4)' to 'INTEGER(8)'
+ gg=INT8(b) ! was: Change of value in conversion from 'REAL(8)' to 'INTEGER(8)'
+ gg=INT8(f)
+ gg=INT8(g)
+
+ ff=FLOOR(b)
+ ee=FLOOR(b, kind=2)
+ ff=FLOOR(b, kind=4)
+ gg=FLOOR(b, kind=8)
+ ff=CEILING(b)
+ ee=CEILING(b, kind=2)
+ ff=CEILING(b, kind=4)
+ gg=CEILING(b, kind=8)
+ ff=MAX1(a, a) ! was: Change of value in conversion from 'REAL(4)' to 'INTEGER(4)'
+ ff=MIN1(a, a) ! was: Change of value in conversion from 'REAL(4)' to 'INTEGER(4)'
+ gg=MAX1(b, b) ! was: Change of value in conversion from 'REAL(8)' to 'INTEGER(4)'
+ gg=MIN1(b, b) ! was: Change of value in conversion from 'REAL(8)' to 'INTEGER(4)'
+
+ ee=NINT(a, kind=2)
+ ee=NINT(b, kind=2)
+ ff=NINT(a)
+ ff=NINT(b)
+ ff=NINT(a, kind=4)
+ ff=NINT(b, kind=4)
+ gg=NINT(a, kind=8)
+ gg=NINT(b, kind=8)
+ ee=IDNINT(b)
+ ff=IDNINT(b)
+ gg=IDNINT(b)
+
+ ww=COMPLEX(a, a)
+ ww=COMPLEX(e, e)
+ ww=COMPLEX(g, g)
+ ww=COMPLEX(a, g)
+ xx=COMPLEX(b, g)
+ ww=CMPLX(a, a)
+ ww=CMPLX(b, b, kind=4)
+ xx=CMPLX(a, a, kind=8)
+
+ aa=REAL(ww)
+ bb=REAL(xx)
+ aa=REALPART(ww)
+ bb=REALPART(xx)
+ aa=AIMAG(ww)
+ bb=AIMAG(xx)
+ aa=IMAG(ww)
+ bb=IMAG(xx)
+ bb=DIMAG(xx)
+ aa=IMAGPART(ww)
+ bb=IMAGPART(xx)
+end