summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PowerPC/PPCMachOWriterInfo.cpp
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2007-02-08 06:04:54 +0000
committerEvan Cheng <evan.cheng@apple.com>2007-02-08 06:04:54 +0000
commit6ad6fdb70b6755d0dd2c40c4d832e33ef2a6b8ed (patch)
tree9a6bb20d26bc4fd5ffe0982a3fc684f8951ad09b /llvm/lib/Target/PowerPC/PPCMachOWriterInfo.cpp
parent0591d43ea1a92bf77e4e314fd5b157cc34e202b9 (diff)
downloadbcm5719-llvm-6ad6fdb70b6755d0dd2c40c4d832e33ef2a6b8ed.tar.gz
bcm5719-llvm-6ad6fdb70b6755d0dd2c40c4d832e33ef2a6b8ed.zip
Fixed a long standing spiller bug that's exposed by Thumb:
The code sequence before the spiller is something like: = tMOVrr %reg1117 = tMOVrr %reg1078 = tLSLri %reg1117, 2 The it starts spilling: %r0 = tRestore <fi#5>, 0 %r1 = tRestore <fi#7>, 0 %r1 = tMOVrr %r1<kill> tSpill %r1, <fi#5>, 0 %reg1078 = tLSLri %reg1117, 2 It restores the value while processing the first tMOVrr. At this point, the spiller remembers fi#5 is available in %r0. Next it processes the second move. It restores the source before the move and spills the result afterwards. The move becomes a noop and is deleted. However, a spill has been inserted and that should invalidate reuse of %r0 for fi#5 and add reuse of %r1 for fi#5. Therefore, %reg1117 (which is also assigned fi#5) should get %r1, not %r0. llvm-svn: 34039
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCMachOWriterInfo.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud