[llvm] r357834 - [DWARF] Simplify DWARFDebugAranges::findAddress
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sat Apr 6 02:12:53 PDT 2019
Author: maskray
Date: Sat Apr 6 02:12:53 2019
New Revision: 357834
URL: http://llvm.org/viewvc/llvm-project?rev=357834&view=rev
Log:
[DWARF] Simplify DWARFDebugAranges::findAddress
The current lower_bound approach has to check two iterators pos and pos-1.
Changing it to upper_bound allows us to check one iterator (similar to
DWARFUnitVector::getUnitFor*).
Modified:
llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugAranges.h
llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugAranges.cpp
Modified: llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugAranges.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugAranges.h?rev=357834&r1=357833&r2=357834&view=diff
==============================================================================
--- llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugAranges.h (original)
+++ llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugAranges.h Sat Apr 6 02:12:53 2019
@@ -49,10 +49,6 @@ private:
return -1ULL;
}
- bool containsAddress(uint64_t Address) const {
- return LowPC <= Address && Address < HighPC();
- }
-
bool operator<(const Range &other) const {
return LowPC < other.LowPC;
}
Modified: llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugAranges.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugAranges.cpp?rev=357834&r1=357833&r2=357834&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugAranges.cpp (original)
+++ llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugAranges.cpp Sat Apr 6 02:12:53 2019
@@ -114,20 +114,11 @@ void DWARFDebugAranges::construct() {
}
uint32_t DWARFDebugAranges::findAddress(uint64_t Address) const {
- if (!Aranges.empty()) {
- Range range(Address);
- RangeCollIterator begin = Aranges.begin();
- RangeCollIterator end = Aranges.end();
- RangeCollIterator pos =
- std::lower_bound(begin, end, range);
-
- if (pos != end && pos->containsAddress(Address)) {
- return pos->CUOffset;
- } else if (pos != begin) {
- --pos;
- if (pos->containsAddress(Address))
- return pos->CUOffset;
- }
- }
+ RangeCollIterator It =
+ llvm::upper_bound(Aranges, Address, [](uint64_t LHS, Range RHS) {
+ return LHS < RHS.HighPC();
+ });
+ if (It != Aranges.end() && It->LowPC <= Address)
+ return It->CUOffset;
return -1U;
}
More information about the llvm-commits
mailing list