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.
The implementation of the __bswapsi2() function uses SIGNED instead of unsigned mask values; cf. __bswapdi2() Stefan Kanthak
libgcc2.diff
Description: Binary data