aboutsummaryrefslogtreecommitdiffstats
path: root/docs/GettingStartedVS.html
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-10-30 19:42:35 +0000
committerChris Lattner <sabre@nondot.org>2005-10-30 19:42:35 +0000
commitbf209489ad3f7a38ce6b2159b22d8727500e60c2 (patch)
treebea0ea10cb942e50d803cf178dbb919fb49cd339 /docs/GettingStartedVS.html
parent65026a72ef4dceb2ccb813ebcf3cc55cbc55e26b (diff)
downloadexternal_llvm-bf209489ad3f7a38ce6b2159b22d8727500e60c2.zip
external_llvm-bf209489ad3f7a38ce6b2159b22d8727500e60c2.tar.gz
external_llvm-bf209489ad3f7a38ce6b2159b22d8727500e60c2.tar.bz2
Significantly simplify this code and make it more aggressive. Instead of having
a special case hack for X86, make the hack more general: if an incoming argument register is not used in any block other than the entry block, don't copy it to a vreg. This helps us compile code like this: %struct.foo = type { int, int, [0 x ubyte] } int %test(%struct.foo* %X) { %tmp1 = getelementptr %struct.foo* %X, int 0, uint 2, int 100 %tmp = load ubyte* %tmp1 ; <ubyte> [#uses=1] %tmp2 = cast ubyte %tmp to int ; <int> [#uses=1] ret int %tmp2 } to: _test: lbz r3, 108(r3) blr instead of: _test: lbz r2, 108(r3) or r3, r2, r2 blr The (dead) copy emitted to copy r3 into a vreg for extra-block uses was increasing the live range of r3 past the load, preventing the coallescing. This implements CodeGen/PowerPC/reg-coallesce-simple.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24115 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/GettingStartedVS.html')
0 files changed, 0 insertions, 0 deletions