This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]