Skip to content
  1. May 02, 2007
  2. May 01, 2007
  3. Apr 25, 2007
  4. Apr 14, 2007
  5. Apr 13, 2007
    • Chris Lattner's avatar
      Completely rewrite addressing-mode related sinking of code. In particular, · feee64e9
      Chris Lattner authored
      this fixes problems where codegenprepare would sink expressions into load/stores
      that are not valid, and fixes cases where it would miss important valid ones.
      
      This fixes several serious codesize and perf issues, particularly on targets
      with complex addressing modes like arm and x86.  For example, now we compile
      CodeGen/X86/isel-sink.ll to:
      
      _test:
              movl 8(%esp), %eax
              movl 4(%esp), %ecx
              cmpl $1233, %eax
              ja LBB1_2       #F
      LBB1_1: #T
              movl $4, (%ecx,%eax,4)
              movl $141, %eax
              ret
      LBB1_2: #F
              movl (%ecx,%eax,4), %eax
              ret
      
      instead of:
      
      _test:
              movl 8(%esp), %eax
              leal (,%eax,4), %ecx
              addl 4(%esp), %ecx
              cmpl $1233, %eax
              ja LBB1_2       #F
      LBB1_1: #T
              movl $4, (%ecx)
              movl $141, %eax
              ret
      LBB1_2: #F
              movl (%ecx), %eax
              ret
      
      llvm-svn: 35970
      feee64e9
  6. Apr 10, 2007
  7. Apr 02, 2007
    • Chris Lattner's avatar
      Various passes before isel split edges and do other CFG-restructuring changes. · c3748562
      Chris Lattner authored
      isel has its own particular features that it wants in the CFG, in order to
      reduce the number of times a constant is computed, etc.  Make sure that we
      clean up the CFG before doing any other things for isel.  Doing so can
      dramatically reduce the number of split edges and reduce the number of
      places that constants get computed.  For example, this shrinks
      CodeGen/Generic/phi-immediate-factoring.ll from 44 to 37 instructions on X86,
      and from 21 to 17 MBB's in the output.  This is primarily a code size win,
      not a performance win.
      
      This implements CodeGen/Generic/phi-immediate-factoring.ll and PR1296.
      
      llvm-svn: 35575
      c3748562
  8. Mar 31, 2007
Loading