Skip to content
  1. Aug 13, 2011
  2. Aug 12, 2011
  3. Aug 10, 2011
  4. Aug 09, 2011
  5. Aug 06, 2011
    • Andrew Trick's avatar
      Made SCEV's UDiv expressions more canonical. When dividing a · 6d45a01b
      Andrew Trick authored
      recurrence, the initial values low bits can sometimes be ignored.
      
      To take advantage of this, added FoldIVUser to IndVarSimplify to fold
      an IV operand into a udiv/lshr if the operator doesn't affect the
      result.
      
      -indvars -disable-iv-rewrite now transforms
      
      i = phi i4
      i1 = i0 + 1
      idx = i1 >> (2 or more)
      i4 = i + 4
      
      into
      
      i = phi i4
      idx = i0 >> ...
      i4 = i + 4
      
      llvm-svn: 137013
      6d45a01b
  6. Aug 04, 2011
  7. Aug 03, 2011
  8. Aug 02, 2011
  9. Jul 31, 2011
  10. Jul 29, 2011
  11. Jul 27, 2011
  12. Jul 26, 2011
  13. Jul 23, 2011
  14. Jul 22, 2011
  15. Jul 21, 2011
  16. Jul 20, 2011
  17. Jul 19, 2011
  18. Jul 18, 2011
    • Andrew Trick's avatar
      indvars: LinearFunctionTestReplace for non-canonical IVs. · 7da2417c
      Andrew Trick authored
      For -disable-iv-rewrite, perform LFTR without generating a new
      "canonical" induction variable. Instead find the "best" existing
      induction variable for use in the loop exit test and compute the final
      value of that IV for use in the new loop exit test. In short,
      convert to a simple eq/ne exit test as long as it's cheap to do so.
      
      llvm-svn: 135420
      7da2417c
  19. Jul 15, 2011
  20. Jul 13, 2011
  21. Jul 11, 2011
  22. Jul 09, 2011
    • Chris Lattner's avatar
      Land the long talked about "type system rewrite" patch. This · b1ed91f3
      Chris Lattner authored
      patch brings numerous advantages to LLVM.  One way to look at it
      is through diffstat:
       109 files changed, 3005 insertions(+), 5906 deletions(-)
      
      Removing almost 3K lines of code is a good thing.  Other advantages
      include:
      
      1. Value::getType() is a simple load that can be CSE'd, not a mutating
         union-find operation.
      2. Types a uniqued and never move once created, defining away PATypeHolder.
      3. Structs can be "named" now, and their name is part of the identity that
         uniques them.  This means that the compiler doesn't merge them structurally
         which makes the IR much less confusing.
      4. Now that there is no way to get a cycle in a type graph without a named
         struct type, "upreferences" go away.
      5. Type refinement is completely gone, which should make LTO much MUCH faster
         in some common cases with C++ code.
      6. Types are now generally immutable, so we can use "Type *" instead 
         "const Type *" everywhere.
      
      Downsides of this patch are that it removes some functions from the C API,
      so people using those will have to upgrade to (not yet added) new API.  
      "LLVM 3.0" is the right time to do this.
      
      There are still some cleanups pending after this, this patch is large enough
      as-is.
      
      llvm-svn: 134829
      b1ed91f3
Loading