LLVM backend for 6502
Go to file
Chris Lattner cea8688ee4 Teach the local spiller to turn stack slot loads into register-register copies
when possible, avoiding the load (and avoiding the copy if the value is already
in the right register).

This patch came about when I noticed code like the following being generated:

  store R17 -> [SS1]
  ...blah...
  R4 = load [SS1]

This was causing an LSU reject on the G5.  This problem was due to the register
allocator folding spill code into a reg-reg copy (producing the load), which
prevented the spiller from being able to rewrite the load into a copy, despite
the fact that the value was already available in a register.  In the case
above, we now rip out the R4 load and replace it with a R4 = R17 copy.

This speeds up several programs on X86 (which spills a lot :) ), e.g.
smg2k from 22.39->20.60s, povray from 12.93->12.66s, 168.wupwise from
68.54->53.83s (!), 197.parser from 7.33->6.62s (!), etc.  This may have a larger
impact in some cases on the G5 (by avoiding LSU rejects), though it probably
won't trigger as often (less spilling in general).

Targets that implement folding of loads/stores into copies should implement
the isLoadFromStackSlot hook to get this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23388 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-19 06:56:21 +00:00
autoconf
docs new expression type 2005-09-08 18:47:21 +00:00
examples
include/llvm add a new callback 2005-09-17 01:02:45 +00:00
lib Teach the local spiller to turn stack slot loads into register-register copies 2005-09-19 06:56:21 +00:00
projects
runtime
test new testcase 2005-09-18 05:10:39 +00:00
tools
utils Fix a minor bug, add comments 2005-09-16 00:29:46 +00:00
win32 Fix more Visual Studio build problems. 2005-09-10 02:33:17 +00:00
Xcode Added targets to speed up build of llc. 2005-09-09 17:50:20 +00:00
.cvsignore
configure
CREDITS.TXT
LICENSE.TXT
llvm.spec
llvm.spec.in
Makefile
Makefile.common
Makefile.config.in
Makefile.rules
README.txt

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for the Low Level 
Virtual Machine, a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments. 

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the HTML documentation provided in docs/index.html for further
assistance with LLVM.