Skip to content
  1. Jan 07, 2013
  2. Dec 05, 2012
  3. Jun 21, 2012
    • Chandler Carruth's avatar
      Completely refactor the structuring of unittest CMake files to match the · 94d02518
      Chandler Carruth authored
      Makefiles, the CMake files in every other part of the LLVM tree, and
      sanity.
      
      This should also restore the output tree structure of all the unit
      tests, sorry for breaking that, and thanks for letting me know.
      
      The fundamental change is to put a CMakeLists.txt file in the unittest
      directory, with a single test binary produced from it. This has several
      advantages:
      
      - No more weird directory stripping in the unittest macro, allowing it
        to be used more readily in other projects.
      - No more directory prefixes on all the source files.
      - Allows correct and precise use of LLVM's per-directory dependency
        system.
      - Allows use of the checking logic for source files that have not been
        added to the CMake build. This uncovered a file being skipped with
        CMake in LLVM and one in Clang's unit tests.
      - Makes Specifying conditional compilation or other custom logic for JIT
        tests easier.
      
      It did require adding the concept of an explicit 'optional' source file
      to the CMake build so that the missing-file check can skip cases where
      the file is *supposed* to be missing. =]
      
      This is another chunk of refactoring the CMake build in order to make it
      usable for other clients like CompilerRT / ASan / TSan.
      
      Note that this is interdependent with a Clang CMake change.
      
      llvm-svn: 158909
      94d02518
    • Chandler Carruth's avatar
      Factor the logic for setting up a GoogleTest unit test executable into · a5d42f83
      Chandler Carruth authored
      a helper function in CMake. This will allow us to share all of this
      logic with Clang, and eventually CompilerRT.
      
      llvm-svn: 158896
      a5d42f83
    • Chandler Carruth's avatar
      Simplify the naming pattern in the unittests' CMake file · 1313d986
      Chandler Carruth authored
      llvm-svn: 158893
      1313d986
    • Chandler Carruth's avatar
      Remove one of the LLVM-specific CMake hacks in favor of standard CMake · e530d2ba
      Chandler Carruth authored
      facilities.
      
      This was only used in one place in LLVM, and was used pervasively (but
      with different code!) in Clang. It has no advantages over the standard
      CMake facilities and in some cases disadvantages.
      
      llvm-svn: 158889
      e530d2ba
  4. Jun 17, 2012
  5. Jun 16, 2012
    • Benjamin Kramer's avatar
      Update CMake build. · aa1e8f3a
      Benjamin Kramer authored
      llvm-svn: 158601
      aa1e8f3a
    • Chandler Carruth's avatar
      Add support to the alignment support header for conjuring a character · dea00d7c
      Chandler Carruth authored
      array of a suitable size and alignment for any of a number of different
      types to be stored into the character array.
      
      The mechanisms for producing an explicitly aligned type are fairly
      complex because this operation is poorly supported on all compilers.
      We've spent a fairly significant amount of time experimenting with
      different implementations inside of Google, and the one using explicitly
      expanded templates has been the most robust.
      
      Credit goes to Nick Lewycky for writing the first 20 versions or so of
      this logic we had inside of Google. I based this on the only one to
      actually survive. In case anyone is worried, yes we are both explicitly
      re-contributing and re-licensing it for LLVM. =]
      
      Once the issues with actually specifying the alignment are finished, it
      turns out that most compilers don't in turn align anything the way they
      are instructed. Testing of this logic against both Clang and GCC
      indicate that the alignment constraints are largely ignored by both
      compilers! I've come up with and used a work-around by wrapping each
      alignment-hinted type directly in a struct, and using that struct to
      align the character array through a union. This elaborate hackery is
      terrifying, but I've included testing that caught a terrifying number of
      bugs in every other technique I've tried.
      
      All of this in order to implement a poor C++98 programmers emulation of
      C++11 unrestricted unions in classes such as SmallDenseMap.
      
      llvm-svn: 158597
      dea00d7c
  6. Jun 06, 2012
  7. Apr 17, 2012
  8. Apr 04, 2012
  9. Mar 30, 2012
  10. Mar 15, 2012
  11. Mar 13, 2012
  12. 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
  13. Feb 18, 2012
  14. 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
  15. Jan 02, 2012
  16. Dec 16, 2011
  17. 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
  18. Jun 15, 2011
  19. May 11, 2011
  20. Feb 20, 2011
  21. Jan 13, 2011
  22. Dec 21, 2010
  23. Dec 07, 2010
  24. Nov 29, 2010
  25. Nov 26, 2010
  26. Nov 24, 2010
  27. Nov 20, 2010
  28. 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
Loading