diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp | 19 | 
1 files changed, 7 insertions, 12 deletions
diff --git a/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp b/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp index fdc9da3fbae..0430265ae74 100644 --- a/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp +++ b/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp @@ -378,19 +378,14 @@ DWARFUnit::getInlinedChainForAddress(uint64_t Address) {    // First, find a subprogram that contains the given address (the root    // of inlined chain).    const DWARFUnit *ChainCU = nullptr; -  const DWARFDebugInfoEntryMinimal *SubprogramDIE = -      getSubprogramForAddress(Address); -  if (SubprogramDIE) { +  const DWARFDebugInfoEntryMinimal *SubprogramDIE; +  // Try to look for subprogram DIEs in the DWO file. +  parseDWO(); +  if (DWO) { +    if ((SubprogramDIE = DWO->getUnit()->getSubprogramForAddress(Address))) +      ChainCU = DWO->getUnit(); +  } else if ((SubprogramDIE = getSubprogramForAddress(Address)))      ChainCU = this; -  } else { -    // Try to look for subprogram DIEs in the DWO file. -    parseDWO(); -    if (DWO.get()) { -      SubprogramDIE = DWO->getUnit()->getSubprogramForAddress(Address); -      if (SubprogramDIE) -        ChainCU = DWO->getUnit(); -    } -  }    // Get inlined chain rooted at this subprogram DIE.    if (!SubprogramDIE)  | 

