[Sparc] Add tail call support
This patch adds tail call support to the 32-bit Sparc backend. Two new instructions are defined, TAIL_CALL and TAIL_CALLri. They are encoded the same as CALL and BINDri, but are marked with isReturn so that the epilogue gets emitted. In contrast to CALL, TAIL_CALL is not marked with isCall. This makes it possible to use the leaf function optimization when the only call a function makes is a tail call. TAIL_CALL modifies the return address in %o7, so for leaf functions the value in %o7 needs to be restored after the call. For normal functions which uses the restore instruction this is not necessary. Reviewed By: koakuma Differential Revision: https://reviews.llvm.org/D51206
Loading
Please sign in to comment