9#ifndef LLVM_DWARFLINKER_CLASSIC_DWARFLINKERDECLCONTEXT_H
10#define LLVM_DWARFLINKER_CLASSIC_DWARFLINKERDECLCONTEXT_H
45 auto [It, Inserted] = ResolvedPaths.try_emplace(ParentPath);
49 It->second = std::string(RealPath);
89 : QualifiedNameHash(Hash), Line(Line), ByteSize(ByteSize), Tag(Tag),
90 DefinedInClangModule(0), Name(Name), File(File), Parent(Parent),
91 LastSeenDIE(LastSeenDIE), LastSeenCompileUnitID(CUId) {}
112 unsigned QualifiedNameHash = 0;
116 unsigned DefinedInClangModule : 1;
122 std::atomic<uint32_t> CanonicalDIEOffset = {0};
123 bool HasCanonicalDIE =
false;
157 ResolvedPathsMap ResolvedPaths;
175 return Ctxt->QualifiedNameHash;
179 if (
RHS == getEmptyKey() ||
RHS == getTombstoneKey())
181 return LHS->QualifiedNameHash ==
RHS->QualifiedNameHash &&
182 LHS->Line ==
RHS->Line &&
LHS->ByteSize ==
RHS->ByteSize &&
183 LHS->Name.data() ==
RHS->Name.data() &&
184 LHS->File.data() ==
RHS->File.data() &&
185 LHS->Parent.QualifiedNameHash ==
RHS->Parent.QualifiedNameHash;
This file defines DenseMapInfo traits for DenseMap.
This file defines the DenseMap class.
This file defines the DenseSet and SmallDenseSet classes.
A structured debug information entry.
Utility class that carries the DWARF compile/type unit and the debug info entry in an object.
Implements a dense probed hash-table based set.
A string table that doesn't need relocations.
PointerIntPair - This class implements a pair of a pointer and small integer.
SmallString - A SmallString is just a SmallVector with methods and accessors that make it work better...
StringMap - This is an unconventional map that is specialized for handling keys that are "strings",...
StringRef - Represent a constant reference to a string, i.e.
Small helper that resolves and caches file paths.
StringRef resolve(const std::string &Path, NonRelocatableStringpool &StringPool)
Resolve a path by calling realpath and cache its result.
Stores all information relating to a compile unit, be it in its original instance in the object file ...
This class gives a tree-like API to the DenseMap that stores the DeclContext objects.
PointerIntPair< DeclContext *, 1 > getChildDeclContext(DeclContext &Context, const DWARFDie &DIE, CompileUnit &Unit, bool InClangModule)
Get the child of Context described by DIE in Unit.
A DeclContext is a named program scope that is used for ODR uniquing of types.
bool hasCanonicalDIE() const
DenseSet< DeclContext *, DeclMapInfo > Map
uint32_t getCanonicalDIEOffset() const
uint32_t getQualifiedNameHash() const
bool isDefinedInClangModule() const
void setHasCanonicalDIE()
void setDefinedInClangModule(bool Val)
void setCanonicalDIEOffset(uint32_t Offset)
DeclContext(unsigned Hash, uint32_t Line, uint32_t ByteSize, uint16_t Tag, StringRef Name, StringRef File, const DeclContext &Parent, DWARFDie LastSeenDIE=DWARFDie(), unsigned CUId=0)
bool setLastSeenDIE(CompileUnit &U, const DWARFDie &Die)
Set the last DIE/CU a context was seen in and, possibly invalidate the context if it is ambiguous.
LLVM_ABI std::error_code real_path(const Twine &path, SmallVectorImpl< char > &output, bool expand_tilde=false)
Collapse all .
LLVM_ABI StringRef parent_path(StringRef path LLVM_LIFETIME_BOUND, Style style=Style::native)
Get parent path.
LLVM_ABI StringRef filename(StringRef path LLVM_LIFETIME_BOUND, Style style=Style::native)
Get filename.
LLVM_ABI void append(SmallVectorImpl< char > &path, const Twine &a, const Twine &b="", const Twine &c="", const Twine &d="")
Append to path.
This is an optimization pass for GlobalISel generic memory operations.
BumpPtrAllocatorImpl<> BumpPtrAllocator
The standard BumpPtrAllocator which just uses the default template parameters.
An information struct used to provide DenseMap with the various necessary components for a given valu...
Info type for the DenseMap storing the DeclContext pointers.
static unsigned getHashValue(const DeclContext *Ctxt)
static bool isEqual(const DeclContext *LHS, const DeclContext *RHS)