summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp
diff options
context:
space:
mode:
authorDale Johannesen <dalej@apple.com>2009-12-16 00:29:41 +0000
committerDale Johannesen <dalej@apple.com>2009-12-16 00:29:41 +0000
commit56f041406d79a8dc77765f4c9220bcb285c5b24c (patch)
tree9a9a8cd8719808ef14251409235e9ade0a934572 /llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp
parent826ca5630e67211af6876dc2cfcf4eae2e9c62ed (diff)
downloadbcm5719-llvm-56f041406d79a8dc77765f4c9220bcb285c5b24c.tar.gz
bcm5719-llvm-56f041406d79a8dc77765f4c9220bcb285c5b24c.zip
Do better with physical reg operands (typically, from inline asm)
in local register allocator. If a reg-reg copy has a phys reg input and a virt reg output, and this is the last use of the phys reg, assign the phys reg to the virt reg. If a reg-reg copy has a phys reg output and we need to reload its spilled input, reload it directly into the phys reg than passing it through another reg. Following 76208, there is sometimes no dependency between the def of a phys reg and its use; this creates a window where that phys reg can be used for spilling (this is true in linear scan also). This is bad and needs to be fixed a better way, although 76208 works too well in practice to be reverted. However, there should normally be no spilling within inline asm blocks. The patch here goes a long way towards making this actually be true. llvm-svn: 91485
Diffstat (limited to 'llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud