PR fortran/96711 - ICE with NINT() for integer(16) result
authorHarald Anlauf <anlauf@gmx.de>
Mon, 7 Sep 2020 19:41:45 +0000 (21:41 +0200)
committerHarald Anlauf <anlauf@gmx.de>
Mon, 7 Sep 2020 19:42:30 +0000 (21:42 +0200)
commit9164caf25cb210ad0a69357b226e39913aff00d1
tree0c4cd26a76ccc318b9cccc08b07be4916cf82cc0
parent6001db79c477b03eacc7e7049560921fb54b7845
PR fortran/96711 - ICE with NINT() for integer(16) result

When rounding a real to the nearest integer, temporarily convert the real
argument to a longer real kind when the result is of type/kind integer(16).

gcc/fortran/ChangeLog:

* trans-intrinsic.c (build_round_expr): Use temporary with
appropriate kind for conversion before rounding to nearest
integer when the result precision is 128 bits.

gcc/testsuite/ChangeLog:

* gfortran.dg/pr96711.f90: New test.
gcc/fortran/trans-intrinsic.c
gcc/testsuite/gfortran.dg/pr96711.f90 [new file with mode: 0644]