Skip to content
  1. Dec 05, 2011
  2. Oct 23, 2011
  3. Oct 16, 2011
  4. Aug 18, 2011
  5. 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
  6. Jun 18, 2011
  7. Jun 17, 2011
  8. Jun 02, 2011
  9. May 23, 2011
    • Chris Lattner's avatar
      Teach valuetracking that byval arguments with a specified alignment are · 83791ced
      Chris Lattner authored
      aligned.
      
      Teach memcpyopt to not give up all hope when confonted with an underaligned
      memcpy feeding an overaligned byval.  If the *source* of the memcpy can be
      determined to be adequeately aligned, or if it can be forced to be, we can
      eliminate the memcpy.
      
      This addresses PR9794.  We now compile the example into:
      
      define i32 @f(%struct.p* nocapture byval align 8 %q) nounwind ssp {
      entry:
        %call = call i32 @g(%struct.p* byval align 8 %q) nounwind
        ret i32 %call
      }
      
      in both x86-64 and x86-32 mode.  We still don't get a tailcall though,
      because tailcalls apparently can't handle byval.
      
      llvm-svn: 131884
      83791ced
  10. Jan 21, 2011
  11. Jan 12, 2011
  12. Jan 10, 2011
  13. Jan 08, 2011
  14. Dec 26, 2010
  15. Dec 24, 2010
  16. Dec 09, 2010
  17. Dec 01, 2010
  18. Nov 21, 2010
    • Chris Lattner's avatar
      Implement PR8644: forwarding a memcpy value to a byval, · 58f9f587
      Chris Lattner authored
      allowing the memcpy to be eliminated.
      
      Unfortunately, the requirements on byval's without explicit 
      alignment are really weak and impossible to predict in the 
      mid-level optimizer, so this doesn't kick in much with current
      frontends.  The fix is to change clang to set alignment on all
      byval arguments.
      
      llvm-svn: 119916
      58f9f587
  19. Nov 18, 2010
  20. Oct 18, 2010
  21. Oct 16, 2010
  22. Apr 04, 2010
  23. Apr 02, 2010
  24. Mar 31, 2010
  25. Mar 30, 2010
  26. Nov 03, 2009
  27. Sep 15, 2009
  28. Sep 11, 2009
  29. Sep 09, 2009
Loading