Skip to content
  1. Sep 28, 2006
  2. Sep 27, 2006
  3. Sep 26, 2006
  4. Sep 25, 2006
  5. Sep 24, 2006
  6. Sep 23, 2006
    • Nick Lewycky's avatar
      Style changes only. Remove dead code, fix a comment. · 059c7926
      Nick Lewycky authored
      llvm-svn: 30588
      059c7926
    • Chris Lattner's avatar
      Be far more careful when splitting a loop header, either to form a preheader · 6bd6da40
      Chris Lattner authored
      or when splitting loops with a common header into multiple loops.  In particular
      the old code would always insert the preheader before the old loop header.  This
      is disasterous in cases where the loop hasn't been rotated.  For example, it can
      produce code like:
      
              .. outside the loop...
              jmp LBB1_2      #bb13.outer
      LBB1_1: #bb1
              movsd 8(%esp,%esi,8), %xmm1
              mulsd (%edi), %xmm1
              addsd %xmm0, %xmm1
              addl $24, %edi
              incl %esi
              jmp LBB1_3      #bb13
      LBB1_2: #bb13.outer
              leal (%edx,%eax,8), %edi
              pxor %xmm1, %xmm1
              xorl %esi, %esi
      LBB1_3: #bb13
              movapd %xmm1, %xmm0
              cmpl $4, %esi
              jl LBB1_1       #bb1
      
      Note that the loop body is actually LBB1_1 + LBB1_3, which means that the
      loop now contains an uncond branch WITHIN it to jump around the inserted
      loop header (LBB1_2).  Doh.
      
      This patch changes the preheader insertion code to insert it in the right
      spot, producing this code:
      
              ... outside the loop, fall into the header ...
      LBB1_1: #bb13.outer
              leal (%edx,%eax,8), %esi
              pxor %xmm0, %xmm0
              xorl %edi, %edi
              jmp LBB1_3      #bb13
      LBB1_2: #bb1
              movsd 8(%esp,%edi,8), %xmm0
              mulsd (%esi), %xmm0
              addsd %xmm1, %xmm0
              addl $24, %esi
              incl %edi
      LBB1_3: #bb13
              movapd %xmm0, %xmm1
              cmpl $4, %edi
              jl LBB1_2       #bb1
      
      Totally crazy, no branch in the loop! :)
      
      llvm-svn: 30587
      6bd6da40
    • Chris Lattner's avatar
      Teach UpdateDomInfoForRevectoredPreds to handle revectored preds that are not · 608cd05e
      Chris Lattner authored
      reachable, making it general purpose enough for use by InsertPreheaderForLoop.
      Eliminate custom dominfo updating code in InsertPreheaderForLoop, using
      UpdateDomInfoForRevectoredPreds instead.
      
      llvm-svn: 30586
      608cd05e
    • Chris Lattner's avatar
      add method, correct comment · 4091f469
      Chris Lattner authored
      llvm-svn: 30584
      4091f469
Loading