https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123826

--- Comment #10 from Hongtao Liu <liuhongt at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #9)
> (In reply to Hongtao Liu from comment #8)
> > (In reply to Andrew Pinski from comment #7)
> > > (In reply to Hongtao Liu from comment #6)
> > > > I saw 2 benchmarks in next SPECcpu regressed by ~20% for O2 performance 
> > > > due
> > > > to  r16-7264.
> > > 
> > > Yes that is expected if they use pow directly as that means the change is
> > > doing the correct thing of calling pow directly instead of doing a*a. Have
> > > you debugged it further to see if pow was called directly?
> > 
> > Yes, now it generates more libcall instead of a*a and regressed performance.
> 
> I asked a slightly different question, I asked if the original code was
> calling pow in the source or was it doing a*a? If it was calling pow
> directly in the source then there was no bug (well unless you can prove a is
> not huge).

Yes, original code is std::pow (a, 2).

And I notice std::pow (a, -1) is still optimized to divsd, should it also be
prevented?

Reply via email to