//===- DWARFLinkerDeclContext.cpp -----------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "llvm/DWARFLinker/Classic/DWARFLinkerDeclContext.h" #include "llvm/DWARFLinker/Classic/DWARFLinkerCompileUnit.h" #include "llvm/DebugInfo/DWARF/DWARFContext.h" #include "llvm/DebugInfo/DWARF/DWARFDie.h" #include "llvm/DebugInfo/DWARF/DWARFUnit.h" namespace llvm { usingnamespacedwarf_linker; usingnamespacedwarf_linker::classic; /// Set the last DIE/CU a context was seen in and, possibly invalidate the /// context if it is ambiguous. /// /// In the current implementation, we don't handle overloaded functions well, /// because the argument types are not taken into account when computing the /// DeclContext tree. /// /// Some of this is mitigated byt using mangled names that do contain the /// arguments types, but sometimes (e.g. with function templates) we don't have /// that. In that case, just do not unique anything that refers to the contexts /// we are not able to distinguish. /// /// If a context that is not a namespace appears twice in the same CU, we know /// it is ambiguous. Make it invalid. bool DeclContext::setLastSeenDIE(CompileUnit &U, const DWARFDie &Die) { … } PointerIntPair<DeclContext *, 1> DeclContextTree::getChildDeclContext(DeclContext &Context, const DWARFDie &DIE, CompileUnit &U, bool InClangModule) { … } StringRef DeclContextTree::getResolvedPath(CompileUnit &CU, unsigned FileNum, const DWARFDebugLine::LineTable &LineTable) { … } } // namespace llvm