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 &&
33 LocExpr.Range->LowPC <= Addr.Address &&
34 LocExpr.Range->HighPC > Addr.Address;
39 Unit->getContext().isLittleEndian(), 0);
40 DWARFExpression Expression(Data, Unit->getAddressByteSize());
42 auto GetRegName = [&MRI, &OS](uint64_t DwarfRegNum, bool IsEH) -> StringRef {
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);
112 // zero being the left-most side of the screen.
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
166 LLVM_DEBUG(dbgs() << "pass 1, " << ThisAddr.Address << "-"
175 // Next, look for variables which don't already have a column, but which
176 // are now live.
189 LLVM_DEBUG(dbgs() << "pass 2, " << ThisAddr.Address << "-"
226 return IsASCII ? "-" : (const char *)u8"\u2500";
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
282 // Then print the variable name and location of the new live range,
283 // with box drawing characters joining it to the live range line.
296 // printed, then continue their live range lines.
315 // If we must print something (because we printed a line/column number),
316 // but don't have any new variables to print, then print a line which
317 // just continues any existing live ranges.
322 /// Print the live variable ranges to the right of a disassembled instruction.
338 llvm_unreachable("var must be live in or out!");
351 Obj->getFileName());
357 const char *BufferStart = Buffer->getBufferStart(),
358 *BufferEnd = Buffer->getBufferEnd();
363 Lines.emplace_back(Start, I - Start - (BufferStart < I && I[-1] == '\r'));
367 Lines.emplace_back(Start, BufferEnd - Start);
382 Symbolizer->symbolizeCode(*Obj, Address);
404 // here to keep compatibility with GNU Objdump.
452 // - use LineInfo::LineSource if available;
453 // - use LineCache if LineInfo::Source otherwise.
467 if (LineInfo.Line > LineBuffer->second.size()) {
475 // Vector begins at 0, line numbers are non-zero
476 return LineBuffer->second[LineInfo.Line - 1];