[PR57371] transform (double)i eq/ne 0 to i eq/ne 0
Richard Biener
rguenther@suse.de
Wed Aug 3 12:22:00 GMT 2016
On Wed, 3 Aug 2016, Prathamesh Kulkarni wrote:
> Hi,
> The attached patch tries to transform
> (double)i eq/ne 0 to i eq/ne 0
> AFAIU from Joseph's comment 1 in PR, the transform should be safe with
> -fno-trapping-math ?
> Bootstrap+tested on x86_64-unknown-linux-gnu in progress.
Couldn't this even be
(cmp (float @0) REAL_CST@1)
(with
{
HOST_WIDE_INT n = real_to_integer (TREE_REAL_CST (@1));
REAL_VALUE_TYPE cint;
real_from_integer (&cint, VOIDmode, n, SIGNED);
}
(if (real_identical (&c, &cint))
(cmp @0 { build_int_cst (TREE_TYPE (@0), n); }))))
with some additional type checks to make sure n fits the type of @0
(and otherwise fold to true/false directly).
Not sure whether we need to restrict it to float types that can
represent all values of the type of @0 exactly.
Richard.
More information about the Gcc-patches
mailing list