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
jos...@codesourcery.com

Reply via email to