On Thu, Aug 20, 2015 at 7:38 AM, Marc Glisse <marc.gli...@inria.fr> wrote: > On Thu, 20 Aug 2015, Hurugalawadi, Naveen wrote: > >> The following testcase does not generate "x" as needed. >> ==================== >> double t (double x) >> { >> x = sqrt (x) * sqrt (x); >> return x; >> } >> ==================== > > > With -fno-math-errno, we CSE the calls to sqrt, so I would expect this to > match: > > (mult (SQRT@1 @0) @1) > > Without the flag, I expect that one will apply > > (simplify > (mult (SQRT:s @0) (SQRT:s @1)) > (SQRT (mult @0 @1))) > > and then maybe we have something converting sqrt(x*x) to abs(x) or maybe > not.
ICK. I'd rather have CSE still CSE the two calls by adding some tricks regarding to errno ... > I wonder if all the unsafe math optimizations are really ok without > -fno-math-errno... Well, on GIMPLE they will preserve the original calls because of their side-effects setting errno... on GENERIC probably not. Richard. > -- > Marc Glisse