Skip to content
  1. May 21, 2013
  2. Apr 23, 2013
  3. Mar 26, 2013
  4. Mar 22, 2013
    • Chandler Carruth's avatar
      Revert r177543: Add timing of the IR parsing code with a new · 0a9875ab
      Chandler Carruth authored
      -time-ir-parsing flag
      
      This breaks the layering of the Support library. We can't add an
      implementation side to IRReader because it refers directly to entities
      only accessible as part of the IR, AsmParser, and BitcodeReader
      libraries. It can only be used in a context where all of those libraries
      will be available.
      
      We'll need to find some other way to get this functionality, and
      hopefully solve the long-standing layering problem of IRReader.h...
      
      llvm-svn: 177695
      0a9875ab
  5. Mar 20, 2013
  6. Jan 30, 2013
  7. Dec 12, 2012
  8. Oct 26, 2012
  9. Oct 10, 2012
  10. Aug 01, 2012
  11. Apr 17, 2012
  12. Apr 04, 2012
  13. Mar 01, 2012
    • Chandler Carruth's avatar
      Rewrite LLVM's generalized support library for hashing to follow the API · 1d03a3b6
      Chandler Carruth authored
      of the proposed standard hashing interfaces (N3333), and to use
      a modified and tuned version of the CityHash algorithm.
      
      Some of the highlights of this change:
       -- Significantly higher quality hashing algorithm with very well
          distributed results, and extremely few collisions. Should be close to
          a checksum for up to 64-bit keys. Very little clustering or clumping of
          hash codes, to better distribute load on probed hash tables.
       -- Built-in support for reserved values.
       -- Simplified API that composes cleanly with other C++ idioms and APIs.
       -- Better scaling performance as keys grow. This is the fastest
          algorithm I've found and measured for moderately sized keys (such as
          show up in some of the uniquing and folding use cases)
       -- Support for enabling per-execution seeds to prevent table ordering
          or other artifacts of hashing algorithms to impact the output of
          LLVM. The seeding would make each run different and highlight these
          problems during bootstrap.
      
      This implementation was tested extensively using the SMHasher test
      suite, and pased with flying colors, doing better than the original
      CityHash algorithm even.
      
      I've included a unittest, although it is somewhat minimal at the moment.
      I've also added (or refactored into the proper location) type traits
      necessary to implement this, and converted users of GeneralHash over.
      
      My only immediate concerns with this implementation is the performance
      of hashing small keys. I've already started working to improve this, and
      will continue to do so. Currently, the only algorithms faster produce
      lower quality results, but it is likely there is a better compromise
      than the current one.
      
      Many thanks to Jeffrey Yasskin who did most of the work on the N3333
      paper, pair-programmed some of this code, and reviewed much of it. Many
      thanks also go to Geoff Pike Pike and Jyrki Alakuijala, the original
      authors of CityHash on which this is heavily based, and Austin Appleby
      who created MurmurHash and the SMHasher test suite.
      
      Also thanks to Nadav, Tobias, Howard, Jay, Nick, Ahmed, and Duncan for
      all of the review comments! If there are further comments or concerns,
      please let me know and I'll jump on 'em.
      
      llvm-svn: 151822
      1d03a3b6
  14. Feb 23, 2012
  15. Feb 18, 2012
  16. Feb 06, 2012
    • Derek Schuff's avatar
      Enable streaming of bitcode · 8b2dcad4
      Derek Schuff authored
      This CL delays reading of function bodies from initial parse until
      materialization, allowing overlap of compilation with bitcode download.
      
      llvm-svn: 149918
      8b2dcad4
  17. Jan 29, 2012
  18. Dec 20, 2011
  19. Dec 16, 2011
  20. Sep 13, 2011
    • Benjamin Kramer's avatar
      Add the DataExtractor utility class. · 88a1d9fc
      Benjamin Kramer authored
      It is an endian-aware helper that can read data from a StringRef. It will
      come in handy for DWARF parsing. This class is inspired by LLDB's
      DataExtractor, but is stripped down to the bare minimum needed for DWARF.
      
      Comes with unit tests!
      
      llvm-svn: 139626
      88a1d9fc
  21. Aug 24, 2011
  22. Jul 26, 2011
  23. Jul 22, 2011
    • Chandler Carruth's avatar
      Move TargetRegistry.cpp from lib/Support to lib/Target where it belongs. · 43025a08
      Chandler Carruth authored
      The header file was already properly located. The previous need for it
      in Support had to do with the version string printing which was fixed in
      r135757.
      
      Also update build dependencies where libraries that needed the
      functionality of the Target library (in the form of the TargetRegistry)
      were picking it up via Support. This is pretty pervasive, essentially
      every TargetInfo library (ARMInfo, etc) uses TargetRegistry, making it
      depend on Target. All of these were previously just sneaking by.
      
      llvm-svn: 135760
      43025a08
  24. Jun 11, 2011
  25. May 19, 2011
  26. Dec 21, 2010
  27. Dec 07, 2010
  28. Nov 29, 2010
  29. 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
    • 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
  30. Oct 17, 2010
  31. Oct 08, 2010
  32. Sep 29, 2010
  33. Aug 20, 2010
Loading