diff options
author | Chuang-Yu Cheng <cycheng@multicorewareinc.com> | 2016-04-01 06:44:32 +0000 |
---|---|---|
committer | Chuang-Yu Cheng <cycheng@multicorewareinc.com> | 2016-04-01 06:44:32 +0000 |
commit | f8b592f213816911adcd9c2e86a04d007ef3f6b1 (patch) | |
tree | d7470b461d257201c566f24bda6e65b13904c62f /llvm/include/llvm-c/lto.h | |
parent | d7ad221c161dbf048c1d4f4f3ce3c24bbb203a13 (diff) | |
download | bcm5719-llvm-f8b592f213816911adcd9c2e86a04d007ef3f6b1.tar.gz bcm5719-llvm-f8b592f213816911adcd9c2e86a04d007ef3f6b1.zip |
[PPC64] Bug fix: when enabling sibling-call-opt and shrink-wrapping, the tail call branch instruction might disappear
Bug Pattern:
# BB#0: # %entry
cmpldi 3, 0
beq- 0, .LBB0_2
# BB#1: # %exit
lwz 4, 0(3)
#TC_RETURNd8 LVComputationKind 0
.LBB0_2: # %cond.false
mflr 0
std 0, 16(1)
stdu 1, -96(1)
.Ltmp0:
.cfi_def_cfa_offset 96
.Ltmp1:
.cfi_offset lr, 16
bl __assert_fail
nop
The branch instruction for tail call return is not generated, because the
shrink-wrapping pass choosing a new Restore Point: %cond.false, so %exit
block is not sent to emitEpilogue, that's why the branch is not generated.
Thanks Kit's opinions!
Reviewers: nemanjai hfinkel tjablin kbarton
http://reviews.llvm.org/D17606
llvm-svn: 265112
Diffstat (limited to 'llvm/include/llvm-c/lto.h')
0 files changed, 0 insertions, 0 deletions