ArrayRef: Put back std::equal for operator== with a check for the empty ArrayRefs
This has the nice property of compiling down to memcmp when feasible. An empty ArrayRef can have a nullptr in its Data field. I didn't find anything in the standard speaking against std::equal(nullptr, nullptr, nullptr) begin valid but MSVC asserts. The way libstdc++ lowers std::equal down to memcmp also makes invoking std::equal with a nullptr undefined behavior so checking is the only way to be safe. The extra check doesn't cost us perf either because we're essentially peeling the loop header away from the rotated loop. llvm-svn: 230920
Loading
Please sign in to comment