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.
If this has already been discussed, don't hesitate to just point me at the discussion :-) Jeff