Skip to content
  1. Oct 23, 2006
  2. Oct 21, 2006
    • Chris Lattner's avatar
      don't break infinite loops · 9f5a1295
      Chris Lattner authored
      llvm-svn: 31102
      9f5a1295
    • Chris Lattner's avatar
      Use branch reversal to do stuff like this: · 28f17f45
      Chris Lattner authored
              call L_strcmp$stub
              testl %eax, %eax
      -       jne LBB26_208   #cond_true6020
      -       jmp LBB26_227   #bb7119
      +       je LBB26_227    #bb7119
       LBB26_208:     #cond_true6020
              movl $l31_str14, 4(%esp)
      
              testl %eax, %eax
      -       jne LBB26_704   #cond_true13042
      -       jmp LBB26_713   #bb13151
      +       je LBB26_713    #bb13151
       LBB26_704:     #cond_true13042
              movl $_str52, 4(%esp)
      
              cmpl 76(%ecx), %eax
      -       jge LBB26_1628  #cond_false63.i.i
      -       jmp LBB26_1769  #_Z8makeGridP13mrSurfaceListidiidd.exit.i
      +       jl LBB26_1769   #_Z8makeGridP13mrSurfaceListidiidd.exit.i
       LBB26_1628:    #cond_false63.i.i
              movl $0, 48964(%esp)
      
      llvm-svn: 31100
      28f17f45
    • Chris Lattner's avatar
      Transform code like: · 3ca52185
      Chris Lattner authored
        jle FOO
        jmp BAR
      BAR:
      
      into:
      
        jle FOO
      BAR:
      
      ... whoa!
      
      llvm-svn: 31098
      3ca52185
    • Chris Lattner's avatar
      Three changes: · 4fe01c42
      Chris Lattner authored
      1. Remove a bunch of ifdef'd code.
      2. When a block just contains an uncond branch, change all blocks branching
         to it to jump to the destination instead.
      3. If branch analysis tells us some edges in the machinecfg are not actually
         possible, remove them.
      
      #2 triggers a suprisingly large number of times.
      
      llvm-svn: 31094
      4fe01c42
    • Chris Lattner's avatar
      Add an experimental cross-jumping implementation. · 60c9d4dc
      Chris Lattner authored
      This is currently disabled by default and limited in several ways, but does
      have a positive effect.
      
      llvm-svn: 31090
      60c9d4dc
  3. Oct 18, 2006
  4. Oct 17, 2006
    • Chris Lattner's avatar
      Enable deleting branches to successor blocks. With the previous patches, · bca3e297
      Chris Lattner authored
      branch folding can now compile stuff like this:
      
      void foo(int W, int X, int Y, int Z) {
        if (W & 1) {
          for (; X;--X) bar();
        } else if (W & 2) {
          for (; Y;--Y) bar();
        } else if (W & 4) {
          for (; Z;--Z) bar();
        } else if (W & 8) {
          for (; W;--W) bar();
        }
      
        if (W) {
          bar();
        }
      }
      
      contrived testcase where loops exits all end up merging together.  To have
      the loop merges be:
      
      ...
              cmplw cr0, r30, r27
              bne cr0, LBB1_14        ;bb38
      LBB1_16:        ;cond_next48.loopexit
              mr r27, r29
      LBB1_20:        ;cond_next48
              cmplwi cr0, r27, 0
              beq cr0, LBB1_22        ;UnifiedReturnBlock
      ...
      
      instead of:
      
      
      ...
              cmplw cr0, r30, r27
              bne cr0, LBB1_14        ;bb38
      LBB1_16:        ;cond_next48.loopexit
              mr r27, r29
              b LBB1_20       ;cond_next48
      LBB1_17:        ;cond_next48.loopexit1
              b LBB1_20       ;cond_next48
      LBB1_18:        ;cond_next48.loopexit2
              b LBB1_20       ;cond_next48
      LBB1_19:        ;cond_next48.loopexit3
      LBB1_20:        ;cond_next48
              cmplwi cr0, r27, 0
              beq cr0, LBB1_22        ;UnifiedReturnBlock
      ...
      
      
      This is CodeGen/PowerPC/branch-opt.ll
      
      llvm-svn: 31006
      bca3e297
    • Chris Lattner's avatar
      Reenable this pass, fixing the bugs in it. · 56c9d259
      Chris Lattner authored
      It now correctly deletes unreachable blocks and blocks that are empty.
      
      llvm-svn: 31000
      56c9d259
  5. Oct 14, 2006
  6. Oct 13, 2006
  7. Apr 22, 2005
  8. Sep 02, 2004
    • Reid Spencer's avatar
      Changes For Bug 352 · 7c16caa3
      Reid Spencer authored
      Move include/Config and include/Support into include/llvm/Config,
      include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
      public header files must be under include/llvm/.
      
      llvm-svn: 16137
      7c16caa3
  9. Aug 01, 2004
  10. Jul 31, 2004
Loading