This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: [Patch/RFC] libstdc++/20610
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 ;)
Paolo.