[llvm] 4e86e5e - [DenseMap] Add assertion that end() iterator isn't derefenced.

Eli Friedman via llvm-commits llvm-commits at lists.llvm.org
Sat Apr 11 14:54:28 PDT 2020


Author: Eli Friedman
Date: 2020-04-11T14:53:09-07:00
New Revision: 4e86e5eedc684453fe0af6eca2ebdbff33db012c

URL: https://github.com/llvm/llvm-project/commit/4e86e5eedc684453fe0af6eca2ebdbff33db012c
DIFF: https://github.com/llvm/llvm-project/commit/4e86e5eedc684453fe0af6eca2ebdbff33db012c.diff

LOG: [DenseMap] Add assertion that end() iterator isn't derefenced.

This would have saved me some time this morning.

Added: 
    

Modified: 
    llvm/include/llvm/ADT/DenseMap.h

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/ADT/DenseMap.h b/llvm/include/llvm/ADT/DenseMap.h
index b73afae4bce6..8d83f7e5507f 100644
--- a/llvm/include/llvm/ADT/DenseMap.h
+++ b/llvm/include/llvm/ADT/DenseMap.h
@@ -1201,12 +1201,14 @@ class DenseMapIterator : DebugEpochBase::HandleBase {
 
   reference operator*() const {
     assert(isHandleInSync() && "invalid iterator access!");
+    assert(Ptr != End && "dereferencing end() iterator");
     if (shouldReverseIterate<KeyT>())
       return Ptr[-1];
     return *Ptr;
   }
   pointer operator->() const {
     assert(isHandleInSync() && "invalid iterator access!");
+    assert(Ptr != End && "dereferencing end() iterator");
     if (shouldReverseIterate<KeyT>())
       return &(Ptr[-1]);
     return Ptr;
@@ -1229,6 +1231,7 @@ class DenseMapIterator : DebugEpochBase::HandleBase {
 
   inline DenseMapIterator& operator++() {  // Preincrement
     assert(isHandleInSync() && "invalid iterator access!");
+    assert(Ptr != End && "incrementing end() iterator");
     if (shouldReverseIterate<KeyT>()) {
       --Ptr;
       RetreatPastEmptyBuckets();


        


More information about the llvm-commits mailing list