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


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


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