On 09/13/2017 04:45 PM, Jeff Law wrote:
On 09/06/2017 03:54 AM, Jackson Woodruff wrote:
Hi all,
This patch is split from part (1/2). It includes the patterns that have
been moved out of fold-const.c
It also removes an (almost entirely) redundant pattern:
(A / C1) +- (A / C2) -> A * (1 / C1 +- 1 / C2)
which was only used in special cases, either with combinations
of flags like -fno-reciprocal-math -funsafe-math-optimizations
and cases where C was sNaN, or small enough to result in infinity.
This pattern is covered by:
(A / C1) +- (A / C2) -> (with O1 and reciprocal math)
A * (1 / C1) +- A * (1 / C2) ->
A * (1 / C1 +- 1 / C2)
The previous pattern required funsafe-math-optimizations.
To adjust for this case, the testcase has been updated to require O1 so
that the optimization is still performed.
This pattern is moved verbatim into match.pd:
(A / C) +- (B / C) -> (A +- B) / C.
OK for trunk?
Jackson
gcc/
2017-08-30 Jackson Woodruff <jackson.woodr...@arm.com>
PR 71026/tree-optimization
* match.pd: Move RDIV patterns from fold-const.c
* fold-const.c (distribute_real_division): Removed.
(fold_binary_loc): Remove calls to distribute_real_divison.
gcc/testsuite/
2017-08-30 Jackson Woodruff <jackson.woodr...@arm.com>
PR 71026/tree-optimization
* gcc/testsuire/gcc.dg/fold-div-1.c: Use O1.
Sorry. Just one more question here. Does the new match.pd pattern need
to be conditional on flag_unsafe_math_optimizations? ISTM as written
it's going to do those transformations independent of that flag.
For more context
(if (flag_unsafe_math_optimizations)
/* Simplify sqrt(x) * sqrt(x) -> x. */
(simplify
(mult (SQRT@1 @0) @1) <- End mult
(if (!HONOR_SNANS (type))
@0
) <- End if !HONOR_SNANS
) <- End simplify
(for op (plus minus)
/* Simplify (A / C) +- (B / C) -> (A +- B) / C. */
(simplify
(op (rdiv @0 @1)
(rdiv @2 @1)
) <- End op
(rdiv (op @0 @2) @1) <- End rdiv
) <- End simplify
) <- End for
... (more patterns) ...
The if (flag_unsafe_math_optimizations) covers a whole sequence of
transformations here which mine is a part of. I've annotated the close
parens so it is clearer.
I don't have commit privileges, could you commit this on my behalf if
this is OK?
Jackson.
If this has already been discussed, don't hesitate to just point me at
the discussion :-)
Jeff