https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78255
avieira at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |wdijkstr at arm dot com --- Comment #4 from avieira at gcc dot gnu.org --- OK so after some extra debugging and digging I found that the postreload pass is basically turning the direct sibcall into an indirect sibcall. It takes cost into consideration, but does this only looking at the operands of the call, i.e. the cost of a symbolref vs the cost of a register. It does not take into consideration that it is doing a call. This doesn't seem like a good idea to me. Apart from that, I am now looking into letting arm_get_frame_offsets recalculate the offsets and registers to push and pop past reload_completed. I am not convinced this is entirely safe yet...