Skip to content
  1. Apr 17, 2012
  2. Apr 04, 2012
  3. Mar 30, 2012
  4. Mar 15, 2012
  5. Mar 13, 2012
  6. Feb 22, 2012
    • Jakob Stoklund Olesen's avatar
      Add a Briggs and Torczon sparse set implementation. · 3a0f01f7
      Jakob Stoklund Olesen authored
      For objects that can be identified by small unsigned keys, SparseSet
      provides constant time clear() and fast deterministic iteration. Insert,
      erase, and find operations are typically faster than hash tables.
      
      SparseSet is useful for keeping information about physical registers,
      virtual registers, or numbered basic blocks.
      
      llvm-svn: 151110
      3a0f01f7
  7. Feb 18, 2012
  8. Jan 31, 2012
    • Manuel Klimek's avatar
      RefCountedBaseVPTR needs the IntrusiveRefCntPtrInfo as friend, · 31becd7c
      Manuel Klimek authored
      now that this handles the release / retain calls.
      
      Adds a regression test for that bug (which is a compile-time
      regression) and for the last two changes to the IntrusiveRefCntPtr,
      especially tests for the memory leak due to copy construction of the
      ref-counted object and ensuring that the traits are used for release /
      retain calls.
      
      llvm-svn: 149411
      31becd7c
  9. Jan 02, 2012
  10. Dec 16, 2011
  11. 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
  12. Jun 15, 2011
  13. May 11, 2011
  14. Feb 20, 2011
  15. Jan 13, 2011
  16. Dec 21, 2010
  17. Dec 07, 2010
  18. Nov 29, 2010
  19. Nov 26, 2010
  20. Nov 24, 2010
  21. Nov 20, 2010
  22. Nov 19, 2010
    • Jakob Stoklund Olesen's avatar
      Add ADT/IntervalMap. · 345945e3
      Jakob Stoklund Olesen authored
      This is a sorted interval map data structure for small keys and values with
      automatic coalescing and bidirectional iteration over coalesced intervals.
      
      Except for coalescing intervals, it provides similar functionality to std::map.
      It is however much more compact for small keys and values, and hopefully faster
      too.
      
      The container object itself can hold the first few intervals without any
      allocations, then it switches to a cache conscious B+-tree representation. A
      recycling allocator can be shared between many containers, even between
      containers holding different types.
      
      The IntervalMap is initially intended to be used with SlotIndex intervals for:
      
      - Backing store for LiveIntervalUnion that is smaller and faster than std::set.
      
      - Backing store for LiveInterval with less overhead than std::vector for typical
        intervals and O(N log N) merging of large intervals. 99% of virtual registers
        need 4 entries or less and would benefit from the small object optimization.
      
      - Backing store for LiveDebugVariable which doesn't exist yet, but will track
        debug variables during register allocation.
      
      This is a work in progress. Missing items are:
      
      - Performance metrics.
      - erase().
      - insert() shrinkage.
      - clear().
      - More performance metrics.
      - Simplification and detemplatization.
      
      llvm-svn: 119787
      345945e3
    • NAKAMURA Takumi's avatar
      unittests/CMakeLists.txt: [PR8225] Tweak linking JITTests on MSVC to add JITTests.def. · 1818edb5
      NAKAMURA Takumi authored
      CMake can pass *.def to link.exe.
      
      llvm-svn: 119783
      1818edb5
    • NAKAMURA Takumi's avatar
      unittests/CMakeLists.txt: Suppress building ValueMapTest on MSVC older than 10(VS2010). · 7a953baa
      NAKAMURA Takumi authored
      MSVC9 and 8 cannot compile ValueMapTest.cpp due to their bug.
      See issue#331418 in Visual Studio.
      
      llvm-svn: 119782
      7a953baa
    • Jakob Stoklund Olesen's avatar
      Revert "Add ADT/IntervalMap.", GCC doesn't like it. · 09770251
      Jakob Stoklund Olesen authored
      This reverts r119772.
      
      llvm-svn: 119773
      09770251
    • Jakob Stoklund Olesen's avatar
      Add ADT/IntervalMap. · 6d89171d
      Jakob Stoklund Olesen authored
      This is a sorted interval map data structure for small keys and values with
      automatic coalescing and bidirectional iteration over coalesced intervals.
      
      Except for coalescing intervals, it provides similar functionality to std::map.
      It is however much more compact for small keys and values, and hopefully faster
      too.
      
      The container object itself can hold the first few intervals without any
      allocations, then it switches to a cache conscious B+-tree representation. A
      recycling allocator can be shared between many containers, even between
      containers holding different types.
      
      The IntervalMap is initially intended to be used with SlotIndex intervals for:
      
      - Backing store for LiveIntervalUnion that is smaller and faster than std::set.
      
      - Backing store for LiveInterval with less overhead than std::vector for typical
        intervals and O(N log N) merging of large intervals. 99% of virtual registers
        need 4 entries or less and would benefit from the small object optimization.
      
      - Backing store for LiveDebugVariable which doesn't exist yet, but will track
        debug variables during register allocation.
      
      This is a work in progress. Missing items are:
      
      - Performance metrics.
      - erase().
      - insert() shrinkage.
      - clear().
      - More performance metrics.
      - Simplification and detemplatization.
      
      llvm-svn: 119772
      6d89171d
  23. Nov 14, 2010
  24. Oct 29, 2010
  25. Oct 28, 2010
  26. Oct 21, 2010
  27. Oct 19, 2010
  28. Oct 11, 2010
Loading