Skip to content
  1. Apr 15, 2004
    • Chris Lattner's avatar
      Change the canonical induction variable that we insert. · 0cec5cb9
      Chris Lattner authored
      Instead of producing code like this:
      
      Loop:
        X = phi 0, X2
        ...
      
        X2 = X + 1
        if (X != N-1) goto Loop
      
      We now generate code that looks like this:
      
      Loop:
        X = phi 0, X2
        ...
      
        X2 = X + 1
        if (X2 != N) goto Loop
      
      This has two big advantages:
        1. The trip count of the loop is now explicit in the code, allowing
           the direct implementation of Loop::getTripCount()
        2. This reduces register pressure in the loop, and allows X and X2 to be
           put into the same register.
      
      As a consequence of the second point, the code we generate for loops went
      from:
      
      .LBB2:  # no_exit.1
      	...
              mov %EDI, %ESI
              inc %EDI
              cmp %ESI, 2
              mov %ESI, %EDI
              jne .LBB2 # PC rel: no_exit.1
      
      To:
      
      .LBB2:  # no_exit.1
      	...
              inc %ESI
              cmp %ESI, 3
              jne .LBB2 # PC rel: no_exit.1
      
      ... which has two fewer moves, and uses one less register.
      
      llvm-svn: 12961
      0cec5cb9
  2. Apr 14, 2004
  3. Apr 13, 2004
  4. Apr 12, 2004
  5. Apr 11, 2004
  6. Apr 10, 2004
  7. Apr 09, 2004
  8. Apr 08, 2004
  9. Apr 07, 2004
  10. Apr 05, 2004
  11. Apr 02, 2004
  12. Apr 01, 2004
Loading