This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: [Patch/RFC] libstdc++/20610
Paolo Carlini <pcarlini@suse.de> writes:
| Gabriel Dos Reis wrote:
|
| >This really is again a compiler issue. _M_value, in the specialization, is
| >of type "double _Complex", which means that it is also a problem in
| >C-land. Have the compiler do the obvious thing, namely tranform
| >
| > _M_value *= d
| >
| >into
| >
| > __real__ _M_value *= d
| > __imag__ _M_value *= d
| >
| >if it is known, as you report, that is what gives better code.
| >This looks to me to be a simple vectorization issue.
| >
| >Let's fix the problem, not its symptoms.
| >
| >
| Yes, we agree about the analysis: basically, this is happening because
| now the
| C99-conforming algorithm for multiplication is the default (when
| non-fast-math)
| but its implementation doesn't include all the simplifications allowed
| in special
| cases in G.5.1/2 (like the one involved in this PR).
|
| I have already added the above comment in the audit trail, this morning: now
| will just, additionally, rectegorize back to middle-end ;)
Great! Thanks for letting the middle-end people know about this.
-- Gaby