summaryrefslogtreecommitdiffstats
path: root/build/build-clang/partial-revert-llvmorg-15-init-11205-gcead4eceb01b.patch
blob: 85621ab4507b7ab547a353341cf47affd73cf08f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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<DWARFUnit> &CU : compile_units()) {
-    if (DWARFDie Die = CU->getVariableForAddress(Address)) {
-      return static_cast<DWARFCompileUnit *>(CU.get());
-    }
-  }
-  return nullptr;
+  return getCompileUnitForOffset(CUOffset);
 }
 
 DWARFContext::DIEsForAddress DWARFContext::getDIEsForAddress(uint64_t Address) {