mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-14 14:24:05 +00:00
ADT: Avoid using std::equal in ArrayRef::equals
MSVC's STL has a bug in `std::equal()`: it asserts on nullptr iterators, causing a block revert in r215981. This works around that by re-writing `ArrayRef::equals()` to do the work itself. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215986 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -145,7 +145,13 @@ namespace llvm {
|
|||||||
bool equals(ArrayRef RHS) const {
|
bool equals(ArrayRef RHS) const {
|
||||||
if (Length != RHS.Length)
|
if (Length != RHS.Length)
|
||||||
return false;
|
return false;
|
||||||
return std::equal(begin(), end(), RHS.begin());
|
// Don't use std::equal(), since it asserts in MSVC on nullptr iterators.
|
||||||
|
for (auto L = begin(), LE = end(), R = RHS.begin(); L != LE; ++L, ++R)
|
||||||
|
// Match std::equal() in using == (instead of !=) to minimize API
|
||||||
|
// requirements of ArrayRef'ed types.
|
||||||
|
if (!(*L == *R))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// slice(n) - Chop off the first N elements of the array.
|
/// slice(n) - Chop off the first N elements of the array.
|
||||||
|
Reference in New Issue
Block a user