31 switch (Specifier.FLIKind) {
32 case DILineInfoSpecifier::FileLineInfoKind::RelativeFilePath:
35 case DILineInfoSpecifier::FileLineInfoKind::RawValue:
36 case DILineInfoSpecifier::FileLineInfoKind::AbsoluteFilePath:
37 if (Location.Dir.empty()) {
38 if (Location.Base.empty())
41 LineInfo.
FileName = Location.Base.str();
45 LineInfo.
FileName =
static_cast<std::string
>(Path);
49 case DILineInfoSpecifier::FileLineInfoKind::BaseNameOnly:
50 LineInfo.
FileName = Location.Base.str();
56 LineInfo.
Line = Location.Line;
64std::optional<DILineInfo>
70 auto ResultOrErr = Reader->lookup(
Address.Address);
77 const auto &Result = *ResultOrErr;
81 if (Result.Locations.empty()) {
96std::optional<DILineInfo>
113 if (
auto FuncInfoOrErr = Reader->getFunctionInfo(
Address.Address)) {
115 if (FuncInfoOrErr->OptLineTable) {
137 auto ResultOrErr = Reader->lookup(
Address.Address);
142 const auto &Result = *ResultOrErr;
146 for (
const auto &Location : Result.Locations) {
static bool fillLineInfoFromLocation(const SourceLocation &Location, DILineInfoSpecifier Specifier, DILineInfo &LineInfo)
A format-neutral container for inlined code description.
SmallString - A SmallString is just a SmallVector with methods and accessors that make it work better...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
DILineInfoTable getLineInfoForAddressRange(object::SectionedAddress Address, uint64_t Size, DILineInfoSpecifier Specifier=DILineInfoSpecifier()) override
DIInliningInfo getInliningInfoForAddress(object::SectionedAddress Address, DILineInfoSpecifier Specifier=DILineInfoSpecifier()) override
std::optional< DILineInfo > getLineInfoForAddress(object::SectionedAddress Address, DILineInfoSpecifier Specifier=DILineInfoSpecifier()) override
void dump(raw_ostream &OS, DIDumpOptions DIDumpOpts) override
std::vector< DILocal > getLocalsForAddress(object::SectionedAddress Address) override
std::optional< DILineInfo > getLineInfoForDataAddress(object::SectionedAddress Address) override
GsymContext(std::unique_ptr< GsymReader > Reader)
LineTable class contains deserialized versions of line tables for each function's address ranges.
This class implements an extremely fast bulk output stream that can only output to a stream.
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.
SmallVector< std::pair< uint64_t, DILineInfo >, 16 > DILineInfoTable
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
void consumeError(Error Err)
Consume a Error without doing anything.
Implement std::hash so that hash_code can be used in STL containers.
Container for dump options that control which debug information will be dumped.
Controls which fields of DILineInfo container should be filled with data.
A format-neutral container for source line information.
static constexpr const char *const BadString
std::optional< uint64_t > StartAddress
Inline information stores the name of the inline function along with an array of address ranges.
Line entries are used to encode the line tables in FunctionInfo objects.
uint64_t Addr
Start address of this line entry.
static const uint64_t UndefSection