lattner 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; + } ---------------- nikic wrote: > 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? Yes, you're right, this won't work. Good catch, thanks :-) 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