[Bug fortran/96983] [11/12 regression] ICE compiling gfortran.dg/pr96711.f90 starting with r11-3042
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Mar 17 02:02:40 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96983
--- Comment #40 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-11 branch has been updated by Michael Meissner
<meissner@gcc.gnu.org>:
https://gcc.gnu.org/g:9baf563a176c4ea5a2a1606397ac09e16776d1ae
commit r11-9665-g9baf563a176c4ea5a2a1606397ac09e16776d1ae
Author: Michael Meissner <meissner@linux.ibm.com>
Date: Wed Mar 16 21:58:54 2022 -0400
Backport PR fortran/96983 patch to GCC 11.
I applied a patch on the trunk in April 22nd, 2021 that fixes an issue (PR
fortran/66983) where we could fail for 128-bit floating point types
because we don't have a built-in function that is equivalent to llround
for 128-bit integer types. Instead, the patch does a round operation
followed by conversion to the appropriate integer size if we don't have
the specialized round to specific integer type built-in functions.
When I checked in the change, I was told to wait until after GCC 11.1
shipped before doing the backport. I forgot about the change until
recently. Before checking it in, I did bootstraps and ran regression
tests on:
1) little endian power9 using 128-bit IBM long double
2) little endian power9 using 128-bit IEEE long double
3) big endian power8 (both 64-bit and 32-bit) (and)
4) x86_64 native build
There were no new regressions. The test gfortran.dg/pr96711.f90 now
passes on PowerPC.
In the 10 months or so since the change was made on the trunk, the code in
build_round_expr did not change.
2022-03-16 Michael Meissner <meissner@linux.ibm.com>
gcc/fortran/
PR fortran/96983
* trans-intrinsic.c (build_round_expr): If int type is larger than
long long, do the round and convert to the integer type. Do not
try to find a floating point type the exact size of the integer
type. Backport patch from 2021-04-22 on the trunk.
More information about the Gcc-bugs
mailing list