Skip to content
  1. Oct 05, 2005
  2. Oct 04, 2005
    • Jim Laskey's avatar
      Reverting to version - until problem isolated. · 327d4298
      Jim Laskey authored
      llvm-svn: 23622
      327d4298
    • Nate Begeman's avatar
      Fix some faulty logic in the libcall inserter. · 5da6908d
      Nate Begeman authored
      Since calls return more than one value, don't bail if one of their uses
      happens to be a node that's not an MVT::Other when following the chain
      from CALLSEQ_START to CALLSEQ_END.
      
      Once we've found a CALLSEQ_START, we can just return; there's no need to
      tail-recurse further up the graph.
      
      Most importantly, just because something only has one use doesn't mean we
      should use it's one use to follow from start to end.  This faulty logic
      caused us to follow a chain of one-use FP operations back to a much earlier
      call, putting a cycle in the graph from a later start to an earlier end.
      
      This is a better fix that reverting to the workaround committed earlier
      today.
      
      llvm-svn: 23620
      5da6908d
    • Nate Begeman's avatar
      Add back a workaround that fixes some breakages from chris's last change. · 54fb5002
      Nate Begeman authored
      Neither of us have yet figured out why this code is necessary, but stuff
      breaks if its not there.  Still tracking this down...
      
      llvm-svn: 23617
      54fb5002
  3. Oct 03, 2005
  4. Oct 02, 2005
  5. Oct 01, 2005
  6. Sep 30, 2005
  7. Sep 29, 2005
  8. Sep 28, 2005
  9. Sep 27, 2005
  10. Sep 26, 2005
  11. Sep 23, 2005
  12. Sep 21, 2005
  13. Sep 20, 2005
  14. Sep 19, 2005
    • Chris Lattner's avatar
      Teach the local spiller to turn stack slot loads into register-register copies · 2f838f21
      Chris Lattner authored
      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.
      
      llvm-svn: 23388
      2f838f21
  15. Sep 16, 2005
  16. Sep 13, 2005
  17. Sep 10, 2005
Loading