https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119430
--- Comment #10 from Alexandre Oliva <aoliva at gcc dot gnu.org> --- Sorry, I'd missed the build scripts, that presumably would have enabled me to trigger the problem more readily. Anyhow, this explains why lto and PIE are both needed to trigger the problem. As for a solution, unless the arm port can find some way to avoid the register overlap for thunks that need the static chain. Failing that, I have a hunch that the issue has to do with the call's crossing lto (re)compilation units, in which case one solution could be to sacrifice some optimization opportunities and force functions and their inner functions to remain in a single unit.