Skip to content
  1. Oct 30, 2005
    • Chris Lattner's avatar
      Significantly simplify this code and make it more aggressive. Instead of having · 6871b23d
      Chris Lattner authored
      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
      
      llvm-svn: 24115
      6871b23d
  2. Oct 19, 2005
  3. Oct 10, 2005
  4. Oct 05, 2005
  5. Oct 01, 2005
  6. Sep 29, 2005
  7. Sep 28, 2005
  8. Sep 13, 2005
  9. Sep 07, 2005
  10. Sep 02, 2005
  11. Sep 01, 2005
  12. Aug 27, 2005
  13. Aug 26, 2005
  14. Aug 24, 2005
  15. Aug 22, 2005
  16. Aug 18, 2005
  17. Aug 17, 2005
  18. Aug 16, 2005
    • Chris Lattner's avatar
      Eliminate the RegSDNode class, which 3 nodes (CopyFromReg/CopyToReg/ImplicitDef) · 33182325
      Chris Lattner authored
      used to tack a register number onto the node.
      
      Instead of doing this, make a new node, RegisterSDNode, which is a leaf
      containing a register number.  These three operations just become normal
      DAG nodes now, instead of requiring special handling.
      
      Note that with this change, it is no longer correct to make illegal
      CopyFromReg/CopyToReg nodes.  The legalizer will not touch them, and this
      is bad, so don't do it. :)
      
      llvm-svn: 22806
      33182325
  19. Aug 09, 2005
  20. Jul 27, 2005
  21. Jul 19, 2005
  22. Jul 05, 2005
    • Chris Lattner's avatar
      Make several cleanups to Andrews varargs change: · f5473e44
      Chris Lattner authored
      1. Pass Value*'s into lowering methods so that the proper pointers can be
         added to load/stores from the valist
      2. Intrinsics that return void should only return a token chain, not a token
         chain/retval pair.
      3. Rename LowerVAArgNext -> LowerVAArg, because VANext is long gone.
      
      llvm-svn: 22338
      f5473e44
  23. Jun 29, 2005
  24. Jun 22, 2005
  25. Jun 18, 2005
  26. May 14, 2005
  27. May 13, 2005
  28. May 12, 2005
Loading