2021-11-02 Manfred Schwarb gcc/testsuite/ChangeLog: PR fortran/91497 * gfortran.dg/pr91497_2.f90: New test. --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr91497_2.f90 @@ -0,0 +1,80 @@ +! { 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 +! PR fortran/91497 +! +! Prior to applying the patch for this PR, the following code +! would generate numerous conversion warnings. +! +program foo + + real*4 cc + real*10 a, aa + real*16 b, bb + integer*2 ee + integer*4 ff + integer*8 gg + complex(10) ww + complex(16) xx + PARAMETER(a=3.1415927_10) + PARAMETER(b=3.1415927_16) + + cc=REAL(a) ! was: Change of value in conversion from 'REAL(10)' to 'REAL(4)' + cc=REAL(b) ! was: Change of value in conversion from 'REAL(16)' to 'REAL(4)' + aa=REAL(b, kind=10) ! was: Change of value in conversion from 'REAL(16)' to 'REAL(10)' + bb=REAL(a, kind=16) + + cc=SNGL(a) ! was: Change of value in conversion from 'REAL(10)' to 'REAL(4)' + cc=SNGL(b) ! was: Change of value in conversion from 'REAL(16)' to 'REAL(4)' + aa=AINT(a) + bb=AINT(b) + aa=AINT(b, kind=10) + aa=ANINT(a) + bb=ANINT(b) + aa=ANINT(b, kind=10) + + ff=INT(b) ! was: Change of value in conversion from 'REAL(16)' to 'INTEGER(4)' + ff=INT(a, kind=4) ! was: Change of value in conversion from 'REAL(10)' to 'INTEGER(4)' + ff=INT(b, kind=4) ! was: Change of value in conversion from 'REAL(16)' to 'INTEGER(4)' + gg=INT(a, kind=8) ! was: Change of value in conversion from 'REAL(10)' to 'INTEGER(8)' + gg=INT(b, kind=8) ! was: Change of value in conversion from 'REAL(16)' to 'INTEGER(8)' + + ee=INT2(a) ! was: Change of value in conversion from 'REAL(10)' to 'INTEGER(2)' + ee=INT2(b) ! was: Change of value in conversion from 'REAL(16)' to 'INTEGER(2)' + gg=INT8(a) ! was: Change of value in conversion from 'REAL(10)' to 'INTEGER(8)' + gg=INT8(b) ! was: Change of value in conversion from 'REAL(16)' to 'INTEGER(8)' + + ff=FLOOR(a, kind=4) + gg=FLOOR(b, kind=8) + ff=CEILING(a, kind=4) + gg=CEILING(b, kind=8) + ff=MAX1(a, a) ! was: Change of value in conversion from 'REAL(10)' to 'INTEGER(4)' + ff=MIN1(a, a) ! was: Change of value in conversion from 'REAL(10)' to 'INTEGER(4)' + gg=MAX1(b, b) ! was: Change of value in conversion from 'REAL(16)' to 'INTEGER(4)' + gg=MIN1(b, b) ! was: Change of value in conversion from 'REAL(16)' to 'INTEGER(4)' + + 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) + + ww=COMPLEX(a, a) + xx=COMPLEX(b, b) + ww=CMPLX(b, b, kind=10) + xx=CMPLX(a, a, kind=16) + + aa=REAL(ww) + bb=REAL(xx) + aa=REALPART(ww) + bb=REALPART(xx) + aa=AIMAG(ww) + bb=AIMAG(xx) + aa=IMAG(ww) + bb=IMAG(xx) + aa=IMAGPART(ww) + bb=IMAGPART(xx) +end