On Thu, Apr 12, 2018 at 03:53:13PM +0000, Wilco Dijkstra wrote:
> Jakub Jelinek wrote:
> > On Thu, Apr 12, 2018 at 03:52:09PM +0200, Richard Biener wrote:
> >> Not sure if I missed some important part of the discussion but
> >> for the testcase we want to preserve the tailcall, right? So
> >> it would be enough to set avoid_libcall to
> >> endp != 0 && CALL_EXPR_TAILCALL (exp) (and thus also handle
> >> stpcpy)?
>
> The tailcall issue is just a distraction. Historically the handling of
> mempcpy
> has been horribly inefficient in both GCC and GLIBC for practically all
> targets.
> This is why it was decided to defer to memcpy.
I guess we need to agree to disagree. But we have a P1 PR that we need to
resolve and it is one of the last 6 blockers we have. I'm not suggesting to
revert PR70140, just let use mempcpy libcall if it is what the user wrote and
we aren't expanding it inline.
> So generally it's a good idea to change mempcpy into memcpy by default. It's
No.
> not slower than calling mempcpy even if you have a fast implementation, it's
> faster
> if you use an up to date GLIBC which calls memcpy, and it's significantly
> better
> when using an old GLIBC.
mempcpy is quite good on many targets even in old GLIBCs.
Jakub