Lines Matching +full:keep +full:- +full:a +full:- +full:live
1 //===-- SourcePrinter.cpp - source interleaving utilities ----------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
10 // keep track of DWARF info as the current address is updated, and print out the
13 //===----------------------------------------------------------------------===//
16 #include "llvm-objdump.h"
32 return LocExpr.Range->SectionIndex == Addr.SectionIndex && in liveAtAddress()
33 LocExpr.Range->LowPC <= Addr.Address && in liveAtAddress()
34 LocExpr.Range->HighPC > Addr.Address; in liveAtAddress()
39 Unit->getContext().isLittleEndian(), 0); in print()
40 DWARFExpression Expression(Data, Unit->getAddressByteSize()); in print()
42 auto GetRegName = [&MRI, &OS](uint64_t DwarfRegNum, bool IsEH) -> StringRef { in print()
95 // Get the column number (in characters) at which the first live variable
101 // Indent to the first live-range column to the right of the currently
103 // TODO: formatted_raw_ostream uses "column" to mean a number of characters
105 // put live variable lines. Pick a less overloaded word.
110 std::max((int)(OS.getColumn() - getIndentLevel() + 1) / 2, 0); in moveToFirstVarColumn()
112 // zero being the left-most side of the screen. in moveToFirstVarColumn()
149 /// NextAddr. In the common case, any live range active at ThisAddr is
150 /// live-in to the instruction, and any live range active at NextAddr is
151 /// live-out of the instruction. If IncludeDefinedVars is false, then live
156 // First, check variables which have already been assigned a column, so in update()
166 LLVM_DEBUG(dbgs() << "pass 1, " << ThisAddr.Address << "-" in update()
175 // Next, look for variables which don't already have a column, but which in update()
176 // are now live. in update()
189 LLVM_DEBUG(dbgs() << "pass 2, " << ThisAddr.Address << "-" in update()
226 return IsASCII ? "-" : (const char *)u8"\u2500"; in getLineChar()
231 /// Print live ranges to the right of an existing line. This assumes the
232 /// line is not an instruction, so doesn't start or end any live ranges, so
257 /// Print any live variable range info needed to the right of a
258 /// non-instruction line of disassembly. This is where we print the variable
259 /// names and expressions, with thin line-drawing characters connecting them
260 /// to the live range which starts at the next instruction. If MustPrint is
262 /// already-active live ranges) because something has already been printed
269 // First we need to print the live range markers for any active in printBetweenInsts()
282 // Then print the variable name and location of the new live range, in printBetweenInsts()
283 // with box drawing characters joining it to the live range line. in printBetweenInsts()
296 // printed, then continue their live range lines. in printBetweenInsts()
315 // If we must print something (because we printed a line/column number), in printBetweenInsts()
316 // but don't have any new variables to print, then print a line which in printBetweenInsts()
317 // just continues any existing live ranges. in printBetweenInsts()
322 /// Print the live variable ranges to the right of a disassembled instruction.
338 llvm_unreachable("var must be live in or out!"); in printAfterInst()
351 Obj->getFileName()); in cacheSource()
357 const char *BufferStart = Buffer->getBufferStart(), in cacheSource()
358 *BufferEnd = Buffer->getBufferEnd(); in cacheSource()
363 Lines.emplace_back(Start, I - Start - (BufferStart < I && I[-1] == '\r')); in cacheSource()
367 Lines.emplace_back(Start, BufferEnd - Start); in cacheSource()
382 Symbolizer->symbolizeCode(*Obj, Address); in printSourceLine()
404 // here to keep compatibility with GNU Objdump. in printSourceLine()
452 // - use LineInfo::LineSource if available;
453 // - use LineCache if LineInfo::Source otherwise.
467 if (LineInfo.Line > LineBuffer->second.size()) { in getLine()
475 // Vector begins at 0, line numbers are non-zero in getLine()
476 return LineBuffer->second[LineInfo.Line - 1]; in getLine()