This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]