Skip to content
  1. Jul 16, 2012
  2. Jul 03, 2012
  3. Jul 02, 2012
    • Stepan Dyatkovskiy's avatar
      IntRange: · 8b9ecca4
      Stepan Dyatkovskiy authored
        - Changed isSingleNumber method behaviour. Now this flag is calculated on demand.
      IntegersSubsetMapping
        - Optimized diff operation.
        - Replaced type of Items field from std::list with std::map.
        - Added new methods:
          bool isOverlapped(self &RHS)
          void add(self& RHS, SuccessorClass *S)
          void detachCase(self& NewMapping, SuccessorClass *Succ)
          void removeCase(SuccessorClass *Succ)
          SuccessorClass *findSuccessor(const IntTy& Val)
          const IntTy* getCaseSingleNumber(SuccessorClass *Succ)
      IntegersSubsetTest
        - DiffTest: Added checks for successors.
      SimplifyCFG
        Updated SwitchInst usage (now it is case-ragnes compatible) for
          - SimplifyEqualityComparisonWithOnlyPredecessor
          - FoldValueComparisonIntoPredecessors
      
      llvm-svn: 159527
      8b9ecca4
  4. Jun 29, 2012
    • Chandler Carruth's avatar
      Move llvm/Support/IRBuilder.h -> llvm/IRBuilder.h · aafe0918
      Chandler Carruth authored
      This was always part of the VMCore library out of necessity -- it deals
      entirely in the IR. The .cpp file in fact was already part of the VMCore
      library. This is just a mechanical move.
      
      I've tried to go through and re-apply the coding standard's preferred
      header sort, but at 40-ish files, I may have gotten some wrong. Please
      let me know if so.
      
      I'll be committing the corresponding updates to Clang and Polly, and
      Duncan has DragonEgg.
      
      Thanks to Bill and Eric for giving the green light for this bit of cleanup.
      
      llvm-svn: 159421
      aafe0918
    • Bill Wendling's avatar
      The DIBuilder class is just a wrapper around debug info creation · f799efde
      Bill Wendling authored
      (a.k.a. MDNodes). The module doesn't belong in Analysis. Move it to the VMCore
      instead.
      
      llvm-svn: 159414
      f799efde
  5. Jun 28, 2012
  6. Jun 26, 2012
  7. Jun 24, 2012
  8. Jun 22, 2012
  9. Jun 21, 2012
  10. Jun 20, 2012
  11. Jun 19, 2012
    • Chandler Carruth's avatar
      Fix PR13148, an inf-loop in StringMap. · 198422a4
      Chandler Carruth authored
      StringMap suffered from the same bug as DenseMap: when you explicitly
      construct it with a small number of buckets, you can arrange for the
      tombstone-based growth path to be followed when the number of buckets
      was less than '8'. In that case, even with a full map, it would compare
      '0' as not less than '0', and refuse to grow the table, leading to
      inf-loops trying to find an empty bucket on the next insertion. The fix
      is very simple: use '<=' as the comparison. The same fix was applied to
      DenseMap as well during its recent refactoring.
      
      Thanks to Alex Bolz for the great report and test case. =]
      
      llvm-svn: 158725
      198422a4
    • Chandler Carruth's avatar
      Remove some superfluous SCOPED_TRACEs from this unit test. · fc3856d9
      Chandler Carruth authored
      GoogleTest already prints errors with all the information about which
      test case contained the error.
      
      llvm-svn: 158724
      fc3856d9
  12. Jun 17, 2012
    • Benjamin Kramer's avatar
    • Benjamin Kramer's avatar
      Add missing unittest files to the cmake build. · 6bc197e4
      Benjamin Kramer authored
      llvm-svn: 158647
      6bc197e4
    • Benjamin Kramer's avatar
      Remove SmallMap unittests, unbreaking the build. · ae7f7937
      Benjamin Kramer authored
      I don't know how useful these are for SmallDenseMap, I'll leave that decision to Chandler.
      
      llvm-svn: 158646
      ae7f7937
    • Benjamin Kramer's avatar
      Bring the return value of SmallVector::insert in line with std::vector::insert. · 23a9c3e0
      Benjamin Kramer authored
      It always returns the iterator for the first inserted element, or the passed in
      iterator if the inserted range was empty. Flesh out the unit test more and fix
      all the cases it uncovered so far.
      
      llvm-svn: 158645
      23a9c3e0
    • Benjamin Kramer's avatar
      SmallVector: return a valid iterator for the rare case of inserting an empty... · 371b9b0e
      Benjamin Kramer authored
      SmallVector: return a valid iterator for the rare case of inserting an empty range into a SmallVector.
      
      Patch by Johannes Schaub!
      
      llvm-svn: 158643
      371b9b0e
    • Chandler Carruth's avatar
      Add a unit test for 'swap', and fix a pile of bugs in · 4de807a5
      Chandler Carruth authored
      SmallDenseMap::swap.
      
      First, make it parse cleanly. Yay for uninstantiated methods.
      
      Second, make the inline-buckets case work correctly. This is way
      trickier than it should be due to the uninitialized values in empty and
      tombstone buckets.
      
      Finally fix a few typos that caused construction/destruction mismatches
      in the counting unittest.
      
      llvm-svn: 158641
      4de807a5
    • Chandler Carruth's avatar
      Disable a particular assertion on MSVC... I'm deeply disturbed by its · d599a8c4
      Chandler Carruth authored
      implementation of the class layout for the V8 type.
      
      llvm-svn: 158640
      d599a8c4
    • Chandler Carruth's avatar
      Add tests for *DenesMap for both key and value types' construction and · a1be842f
      Chandler Carruth authored
      destruction and fix a bug in SmallDenseMap they caught.
      
      This is kind of a poor-man's version of the testing that just adds the
      addresses to a set on construction and removes them on destruction. We
      check that double construction and double destruction don't occur.
      Amusingly enough, this is enough to catch a lot of SmallDenseMap issues
      because we spend a lot of time with fixed stable addresses in the inline
      buffer.
      
      The SmallDenseMap bug fix included makes grow() not double-destroy in
      some cases. It also fixes a FIXME there, the code was pretty crappy. We
      now don't have any wasted initialization, but we do move the entries in
      inline bucket array an extra time. It's probably a better tradeoff, and
      is much easier to get correct.
      
      llvm-svn: 158639
      a1be842f
    • Chandler Carruth's avatar
      Introduce a SmallDenseMap container that re-uses the existing DenseMap · 20dd838a
      Chandler Carruth authored
      implementation.
      
      This type includes an inline bucket array which is used initially. Once
      it is exceeded, an array of 64 buckets is allocated on the heap. The
      bucket count grows from there as needed. Some highlights of this
      implementation:
      
      - The inline buffer is very carefully aligned, and so supports types
        with alignment constraints.
      - It works hard to avoid aliasing issues.
      - Supports types with non-trivial constructors, destructors, copy
        constructions, etc. It works reasonably hard to minimize copies and
        unnecessary initialization. The most common initialization is to set
        keys to the empty key, and so that should be fast if at all possible.
      
      This class has a performance / space trade-off. It tries to optimize for
      relatively small maps, and so packs the inline bucket array densely into
      the object. It will be marginally slower than a normal DenseMap in a few
      use patterns, so it isn't appropriate everywhere.
      
      The unit tests for DenseMap have been generalized a bit to support
      running over different map implementations in addition to different
      key/value types. They've then been automatically extended to cover the
      new container through the magic of GoogleTest's typed tests.
      
      All of this is still a bit rough though. I'm going to be cleaning up
      some aspects of the implementation, documenting things better, and
      adding tests which include non-trivial types. As soon as I'm comfortable
      with the correctness, I plan to switch existing users of SmallMap over
      to this class as it is already more correct w.r.t. construction and
      destruction of objects iin the map.
      
      Thanks to Benjamin Kramer for all the reviews of this and the lead-up
      patches. That said, more review on this would really be appreciated. As
      I've noted a few times, I'm quite surprised how hard it is to get the
      semantics for a hashtable-based map container with a small buffer
      optimization correct. =]
      
      llvm-svn: 158638
      20dd838a
Loading