[llvm] r308106 - Fix mis-use of std::lower_bound

Reid Kleckner via llvm-commits llvm-commits at lists.llvm.org
Sat Jul 15 11:10:15 PDT 2017


Author: rnk
Date: Sat Jul 15 11:10:15 2017
New Revision: 308106

URL: http://llvm.org/viewvc/llvm-project?rev=308106&view=rev
Log:
Fix mis-use of std::lower_bound

Binary search in C++ is such a PITA. =/

Modified:
    llvm/trunk/include/llvm/Support/BinaryItemStream.h

Modified: llvm/trunk/include/llvm/Support/BinaryItemStream.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/BinaryItemStream.h?rev=308106&r1=308105&r2=308106&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/BinaryItemStream.h (original)
+++ llvm/trunk/include/llvm/Support/BinaryItemStream.h Sat Jul 15 11:10:15 2017
@@ -88,9 +88,9 @@ private:
     // Make sure the offset is somewhere in our items array.
     if (Offset >= getLength())
       return make_error<BinaryStreamError>(stream_error_code::stream_too_short);
-    auto Iter = std::lower_bound(
-        ItemEndOffsets.begin(), ItemEndOffsets.end(), Offset,
-        [](const uint32_t &A, const uint32_t &B) { return A <= B; });
+    ++Offset;
+    auto Iter =
+        std::lower_bound(ItemEndOffsets.begin(), ItemEndOffsets.end(), Offset);
     size_t Idx = std::distance(ItemEndOffsets.begin(), Iter);
     assert(Idx < Items.size() && "binary search for offset failed");
     return Idx;




More information about the llvm-commits mailing list