[PATCH][GCC][AArch64] Restrict lrint inlining on ILP32.

Tamar Christina Tamar.Christina@arm.com
Mon Oct 16 08:57:00 GMT 2017


Ping?
________________________________________
From: gcc-patches-owner@gcc.gnu.org <gcc-patches-owner@gcc.gnu.org> on behalf of Tamar Christina <tamar.christina@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; pinskia@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.christina@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.christina@arm.com>

        * gcc.target/aarch64/inline-lrint_2.c (dg-options): Add -fno-trapping-math.

--



More information about the Gcc-patches mailing list