nikic added inline comments.

================
Comment at: llvm/include/llvm/ADT/ArrayRef.h:595-600
+      if (RHS.data() == getEmptyKey().data())
+        return LHS.data() == getEmptyKey().data();
+      if (RHS.data() == getTombstoneKey().data())
+        return LHS.data() == getTombstoneKey().data();
+      return LHS == RHS;
+    }
----------------
lattner wrote:
> craig.topper wrote:
> > lattner wrote:
> > > I'm pretty sure this method can just be "return LHS == RHS;"  The 
> > > tombstone/empty comparisons should work without special cases.
> > Doesn't operator== on ArrayRef compare the elements of the arrays? So 
> > wouldn't that dereference the invalid pointers used by tombstone/empty?
> Yes, implemented in terms of std::equal.  However, both of these cases have 
> zero elements, so the "pointer" is never dereferenced.
As the length is zero, wouldn't the empty key, the tombstone key and an empty 
ArrayRef all be considered equal, as the data pointer is never compared?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D103491/new/

https://reviews.llvm.org/D103491

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to