Skip to content
  1. 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
  2. Oct 14, 2006
  3. Oct 13, 2006
  4. Apr 22, 2005
  5. 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
  6. Aug 01, 2004
  7. Jul 31, 2004
Loading