This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Factor out division by squares and remove division around comparisons (1/2)
On Thu, 17 Aug 2017, Richard Biener wrote:
> > Without global analysis it seems best to move constants/negates to the
> > toplevel if they can't be trivially removed in a subexpression. Eg. -x
> > / (a * b * -c).
>
> Sure. So both patterns are canonicalization which is fine for match.pd.
> Those followup transforms should be done at a place that can look at
> more complicated patterns. We have the reassoc pass, then backprop (not
> exactly matching), and the recip pattern matching / cse pass.
Watch out for -frounding-math issues, though. -a * b is always the same
as a * -b, but not the same as -(a * b) with -frounding-math, and
similarly, -frounding-math should prevent eliminating the negations from
the -x / (a * b * -c) expression (whereas elimination from -x / -(a * b *
c) would be fine).
--
Joseph S. Myers
joseph@codesourcery.com