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?
