Ping? ________________________________________ From: gcc-patches-ow...@gcc.gnu.org <gcc-patches-ow...@gcc.gnu.org> on behalf of Tamar Christina <tamar.christ...@arm.com> Sent: Wednesday, September 13, 2017 4:00:24 PM To: gcc-patches@gcc.gnu.org Cc: nd; James Greenhalgh; Richard Earnshaw; Marcus Shawcroft; pins...@gmail.com Subject: [PATCH][GCC][AArch64] Restrict lrint inlining on ILP32.
Hi All, The inlining of lrint isn't valid in all cases on ILP32 when -fno-math-errno is used because an inexact exception is raised in certain circumstances. Instead the restriction is placed such that the integer mode has to be larger or equal to the float mode in addition to either inexacts being allowed or not caring about trapping math. This prevents the overflow, and the inexact errors that may arise. Unfortunately I can't create a test for this as there is a bug where the pattern is always passed DI as the smallest mode, and later takes a sub-reg of it to SI. This would prevent an overflow where one was expected. This fixed PR/81800. Regtested on aarch64-none-linux-gnu and no regressions. Ok for trunk? Thanks, Tamar gcc/ 2017-09-13 Tamar Christina <tamar.christ...@arm.com> PR target/81800 * config/aarch64/aarch64.md (lrint<GPF:mode><GPI:mode>2): Add flag_trapping_math and flag_fp_int_builtin_inexact. gcc/testsuite/ 2017-09-13 Tamar Christina <tamar.christ...@arm.com> * gcc.target/aarch64/inline-lrint_2.c (dg-options): Add -fno-trapping-math. --