Skip to content
  1. Oct 23, 2011
  2. Oct 16, 2011
  3. 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
  4. Jun 18, 2011
  5. Jun 17, 2011
  6. 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
  7. Dec 09, 2010
  8. Dec 01, 2010
  9. 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
  10. Nov 18, 2010
  11. Oct 18, 2010
  12. Sep 11, 2009
  13. Sep 09, 2009
  14. Sep 08, 2009
  15. Jun 05, 2009
  16. Apr 09, 2008
  17. Feb 25, 2008
  18. Feb 12, 2008
  19. Feb 06, 2008
  20. Feb 04, 2008
Loading