summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2012-01-14 01:53:46 +0000
committerEvan Cheng <evan.cheng@apple.com>2012-01-14 01:53:46 +0000
commit6bb95253eb26119be268f7cf135febf8106f99bb (patch)
tree3d44c305e201857ab2e6a4d18976634b5b8e5b5f /clang/lib/CodeGen/CodeGenModule.cpp
parent71a185c5c64aa56df77b3e96caff08792e42a298 (diff)
downloadbcm5719-llvm-6bb95253eb26119be268f7cf135febf8106f99bb.tar.gz
bcm5719-llvm-6bb95253eb26119be268f7cf135febf8106f99bb.zip
After r147827 and r147902, it's now possible for unallocatable registers to be
live across BBs before register allocation. This miscompiled 197.parser when a cmp + b are optimized to a cbnz instruction even though the CPSR def is live-in a successor. cbnz r6, LBB89_12 ... LBB89_12: ble LBB89_1 The fix consists of two parts. 1) Teach LiveVariables that some unallocatable registers might be liveouts so don't mark their last use as kill if they are. 2) ARM constantpool island pass shouldn't form cbz / cbnz if the conditional branch does not kill CPSR. rdar://10676853 llvm-svn: 148168
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud