[Bug target/81800] [8/9 regression] on aarch64 ilp32 lrint should not be inlined as two instructions
wilco at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Sep 4 13:07:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81800
--- Comment #20 from Wilco <wilco at gcc dot gnu.org> ---
Author: wilco
Date: Wed Sep 4 13:06:55 2019
New Revision: 275374
URL: https://gcc.gnu.org/viewcvs?rev=275374&root=gcc&view=rev
Log:
[AArch64] Fix PR81800
PR81800 is about the lrint inline giving spurious FE_INEXACT exceptions.
The previous change for PR81800 didn't fix this: when lrint is disabled
in the backend, the midend will simply use llrint. This actually makes
things worse since llrint now also ignores FE_INVALID exceptions!
The fix is to disable lrint/llrint on double if the size of a long is
smaller (ie. ilp32).
gcc/
PR target/81800
* gcc/config/aarch64/aarch64.md (lrint): Disable lrint pattern if GPF
operand is larger than a long int.
testsuite/
PR target/81800
* gcc.target/aarch64/no-inline-lrint_3.c: New test.
Added:
branches/gcc-8-branch/gcc/testsuite/gcc.target/aarch64/no-inline-lrint_3.c
Modified:
branches/gcc-8-branch/gcc/ChangeLog
branches/gcc-8-branch/gcc/config/aarch64/aarch64.md
branches/gcc-8-branch/gcc/testsuite/ChangeLog
More information about the Gcc-bugs
mailing list