This partially reverts commit cead4eceb01b935fae07bf4a7e91911b344d2fec for causing timeouts on some webrtc tests under TSan (bug 1798613), presumably because the change made llvm-symbolizer too slow. diff --git a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp index 33168abbdc38..7729d2b91c8a 100644 --- a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp +++ b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp @@ -1173,25 +1173,7 @@ DWARFCompileUnit *DWARFContext::getCompileUnitForCodeAddress(uint64_t Address) { DWARFCompileUnit *DWARFContext::getCompileUnitForDataAddress(uint64_t Address) { uint64_t CUOffset = getDebugAranges()->findAddress(Address); - if (DWARFCompileUnit *OffsetCU = getCompileUnitForOffset(CUOffset)) - return OffsetCU; - - // Global variables are often missed by the above search, for one of two - // reasons: - // 1. .debug_aranges may not include global variables. On clang, it seems we - // put the globals in the aranges, but this isn't true for gcc. - // 2. Even if the global variable is in a .debug_arange, global variables - // may not be captured in the [start, end) addresses described by the - // parent compile unit. - // - // So, we walk the CU's and their child DI's manually, looking for the - // specific global variable. - for (std::unique_ptr &CU : compile_units()) { - if (DWARFDie Die = CU->getVariableForAddress(Address)) { - return static_cast(CU.get()); - } - } - return nullptr; + return getCompileUnitForOffset(CUOffset); } DWARFContext::DIEsForAddress DWARFContext::getDIEsForAddress(uint64_t Address) {