Open Quuxplusone opened 7 years ago
Bugzilla Link | PR31227 |
Status | NEW |
Importance | P normal |
Reported by | Weiming Zhao (weimingz@codeaurora.org) |
Reported on | 2016-12-01 13:20:36 -0800 |
Last modified on | 2016-12-02 15:15:16 -0800 |
Version | trunk |
Hardware | PC Linux |
CC | efriedma@quicinc.com, llvm-bugs@lists.llvm.org |
Fixed by commit(s) | |
Attachments | |
Blocks | |
Blocked by | |
See also |
"add r7, sp, #0" is to establish frame. It's OK.
From ARMSubtarget.cpp:
// FIXME: Completely disable sibcall for Thumb1 since ThumbRegisterInfo::
// emitEpilogue is not ready for them. Thumb tail calls also use t2B, as
// the Thumb1 16-bit unconditional branch doesn't have sufficient relocation
// support in the assembler and linker to be used. This would need to be
// fixed to fully support tail calls in Thumb1.
//
// Doing this is tricky, since the LDM/POP instruction on Thumb doesn't take
// LR. This means if we need to reload LR, it takes an extra instructions,
// which outweighs the value of the tail call; but here we don't know yet
// whether LR is going to be used. Probably the right approach is to
// generate the tail call here and turn it back into CALL/RET in
// emitEpilogue if LR is used.