Lines Matching refs:LineInfo

342 bool SourcePrinter::cacheSource(const DILineInfo &LineInfo) {
344 if (LineInfo.Source) {
345 Buffer = MemoryBuffer::getMemBuffer(*LineInfo.Source);
347 auto BufferOrError = MemoryBuffer::getFile(LineInfo.FileName);
349 if (MissingSources.insert(LineInfo.FileName).second)
350 reportWarning("failed to find source " + LineInfo.FileName,
359 std::vector<StringRef> &Lines = LineCache[LineInfo.FileName];
368 SourceCache[LineInfo.FileName] = std::move(Buffer);
380 DILineInfo LineInfo = DILineInfo();
385 LineInfo = *ExpectedLineInfo;
395 sys::path::is_absolute_gnu(LineInfo.FileName)) {
398 assert(!LineInfo.FileName.empty());
401 auto StrippedNameStart = LineInfo.FileName.begin();
405 for (auto Pos = StrippedNameStart + 1, End = LineInfo.FileName.end();
413 LineInfo.FileName =
414 std::string(StrippedNameStart, LineInfo.FileName.end());
418 sys::path::append(FilePath, Prefix, LineInfo.FileName);
420 LineInfo.FileName = std::string(FilePath);
424 printLines(OS, LineInfo, Delimiter, LVP);
426 printSources(OS, LineInfo, ObjectFilename, Delimiter, LVP);
427 OldLineInfo = LineInfo;
431 const DILineInfo &LineInfo, StringRef Delimiter,
433 bool PrintFunctionName = LineInfo.FunctionName != DILineInfo::BadString &&
434 LineInfo.FunctionName != OldLineInfo.FunctionName;
436 OS << Delimiter << LineInfo.FunctionName;
439 if (!StringRef(LineInfo.FunctionName).ends_with("()"))
443 if (LineInfo.FileName != DILineInfo::BadString && LineInfo.Line != 0 &&
444 (OldLineInfo.Line != LineInfo.Line ||
445 OldLineInfo.FileName != LineInfo.FileName || PrintFunctionName)) {
446 OS << Delimiter << LineInfo.FileName << ":" << LineInfo.Line;
451 // Get the source line text for LineInfo:
452 // - use LineInfo::LineSource if available;
453 // - use LineCache if LineInfo::Source otherwise.
454 StringRef SourcePrinter::getLine(const DILineInfo &LineInfo,
456 if (LineInfo.LineSource)
457 return LineInfo.LineSource.value();
459 if (SourceCache.find(LineInfo.FileName) == SourceCache.end())
460 if (!cacheSource(LineInfo))
463 auto LineBuffer = LineCache.find(LineInfo.FileName);
467 if (LineInfo.Line > LineBuffer->second.size()) {
470 LineInfo.Line, LineInfo.FileName),
476 return LineBuffer->second[LineInfo.Line - 1];
480 const DILineInfo &LineInfo,
483 if (LineInfo.FileName == DILineInfo::BadString || LineInfo.Line == 0 ||
484 (OldLineInfo.Line == LineInfo.Line &&
485 OldLineInfo.FileName == LineInfo.FileName))
488 StringRef Line = getLine(LineInfo, ObjectFilename);