summaryrefslogtreecommitdiff
path: root/tools/llvm-jitlistener/CMakeLists.txt
diff options
context:
space:
mode:
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>2013-01-28 18:36:58 +0000
committerBill Schmidt <wschmidt@linux.vnet.ibm.com>2013-01-28 18:36:58 +0000
commit5ff776bfde2dd5d993e51f8f78904ce331b5528c (patch)
tree86b47f68ab5dc43e39d22b3545aff4c63fa696c4 /tools/llvm-jitlistener/CMakeLists.txt
parent498703bcfb274f3911a1fdbfb818b526338249ad (diff)
downloadllvm-5ff776bfde2dd5d993e51f8f78904ce331b5528c.tar.gz
llvm-5ff776bfde2dd5d993e51f8f78904ce331b5528c.tar.bz2
llvm-5ff776bfde2dd5d993e51f8f78904ce331b5528c.tar.xz
This patch addresses bug 15031.
The common code in the post-RA scheduler to break anti-dependencies on the critical path contained a flaw. In the reported case, an anti-dependency between the overlapping registers %X4 and %R4 exists: %X29<def> = OR8 %X4, %X4 %R4<def>, %X3<def,dead,tied3> = LBZU 1, %X3<kill,tied1> The unpatched code breaks the dependency by replacing %R4 and its uses with %R3, the first register on the available list. However, %R3 and %X3 overlap, so this creates two overlapping definitions on the same instruction. The fix is straightforward, preventing selection of a register that overlaps any other defined register on the same instruction. The test case is reduced from the bug report, and verifies that we no longer produce "lbzu 3, 1(3)" when breaking this anti-dependency. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173706 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-jitlistener/CMakeLists.txt')
0 files changed, 0 insertions, 0 deletions