summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2011-09-09 18:11:41 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2011-09-09 18:11:41 +0000
commit278bf0258104d45afcafe7634314ce8a7f1f9fb0 (patch)
tree5c7d12390f6b36f9755b370afff142a94fad898b /llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
parent08633eea20c2c329b8fd05681bfed1068b2e8363 (diff)
downloadbcm5719-llvm-278bf0258104d45afcafe7634314ce8a7f1f9fb0.tar.gz
bcm5719-llvm-278bf0258104d45afcafe7634314ce8a7f1f9fb0.zip
Reapply r139247: Cache intermediate results during traceSiblingValue.
In some cases such as interpreters using indirectbr, the CFG can be very complicated, and live range splitting may be forced to insert a large number of phi-defs. When that happens, traceSiblingValue can spend a lot of time zipping around in the CFG looking for defs and reloads. This patch causes more information to be cached in SibValues, and the cached values are used to terminate searches early. This speeds up spilling by 20x in one interpreter test case. For more typical code, this is just a 10% speedup of spilling. The previous version had bugs that caused miscompilations. They have been fixed. llvm-svn: 139378
Diffstat (limited to 'llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud