Index: lld/trunk/ELF/DWARF.cpp =================================================================== --- lld/trunk/ELF/DWARF.cpp +++ lld/trunk/ELF/DWARF.cpp @@ -81,9 +81,8 @@ Optional LLDDwarfObj::findAux(const InputSectionBase &Sec, uint64_t Pos, ArrayRef Rels) const { - auto It = std::lower_bound( - Rels.begin(), Rels.end(), Pos, - [](const RelTy &A, uint64_t B) { return A.r_offset < B; }); + auto It = + llvm::bsearch(Rels, [=](const RelTy &A) { return Pos <= A.r_offset; }); if (It == Rels.end() || It->r_offset != Pos) return None; const RelTy &Rel = *It; Index: lld/trunk/ELF/InputSection.cpp =================================================================== --- lld/trunk/ELF/InputSection.cpp +++ lld/trunk/ELF/InputSection.cpp @@ -1224,11 +1224,9 @@ // If Offset is not at beginning of a section piece, it is not in the map. // In that case we need to do a binary search of the original section piece vector. - auto It2 = - llvm::upper_bound(Pieces, Offset, [](uint64_t Offset, SectionPiece P) { - return Offset < P.InputOff; - }); - return &It2[-1]; + auto It = llvm::bsearch(Pieces, + [=](SectionPiece P) { return Offset < P.InputOff; }); + return &It[-1]; } // Returns the offset in an output section for a given input offset.