On Tue, Nov 10, 2020 at 06:59:30PM +0100, Stefan Kanthak via Gcc-patches wrote: > The implementation of the __ashlDI3(), __ashrDI3() and __lshrDI3() functions > is rather bad, it yields bad machine code at least on i386 and AMD64. > Since GCC knows how to shift integers twice the register size these functions > can be written as one-liners.
This looks wrong. If gcc knows how to do that inline, it will not call the out of line function at all. The functions are there for the cases where gcc can't do that. So, your patch will shorten the routines on targets where those are never called, and completely break them on any other (resulting in infinite recursion there). Jakub