LLVM: lib/CodeGen/AsmPrinter/DwarfDebug.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13#ifndef LLVM_LIB_CODEGEN_ASMPRINTER_DWARFDEBUG_H

14#define LLVM_LIB_CODEGEN_ASMPRINTER_DWARFDEBUG_H

15

38#include

39#include

40#include

41#include

42#include

43#include

44#include

45

46namespace llvm {

47

60

61

62

63

64

66public:

71

72private:

75 DIE *TheDIE = nullptr;

77

78public:

80 : Entity(N), InlinedAt(IA), SubclassID(ID) {}

82

83

84

89

90

92

94 switch (N->getDbgEntityID()) {

97 return true;

98 }

100 }

101};

102

103class DbgVariable;

104

109

110

118

119

127

128

130

132 std::unique_ptr ValueLoc;

134

135public:

140};

141

143

144 unsigned DebugLocListIndex;

145

146 std::optional<uint8_t> DebugLocListTagOffset;

147

148public:

149 explicit Multi(unsigned DebugLocListIndex,

150 std::optional<uint8_t> DebugLocListTagOffset)

151 : DebugLocListIndex(DebugLocListIndex),

152 DebugLocListTagOffset(DebugLocListTagOffset) {}

155 return DebugLocListTagOffset;

156 }

157};

158

161

162public:

164 assert((E || E->isValid()) && "Expected valid expression");

165 assert(FI != std::numeric_limits::max() && "Expected valid index");

166 }

168

170};

171

177

178

179

181 std::optional<const DIExpression *> NonVariadicExpr =

183 assert(NonVariadicExpr && *NonVariadicExpr);

184

186 }

187};

188

191}

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

215

216public:

217

218

219

224

225 template bool holds() const {

226 return std::holds_alternative(*this);

227 }

228

229 template auto &get() noexcept {

231 return *std::get_if(this);

232 }

233

234 template const auto &get() const noexcept {

236 return *std::get_if(this);

237 }

238

239

240

241

244

245

249

251

252

254

256 return dwarf::DW_TAG_formal_parameter;

257

258 return dwarf::DW_TAG_variable;

259 }

260

261

264 return true;

266 return true;

267 return false;

268 }

269

272 return true;

274 return true;

275 return false;

276 }

277

279

283};

284

285

286

287

288

290 const MCSymbol *Sym;

291

292public:

293

296

297

298

301

303

304

305

307 return dwarf::DW_TAG_label;

308 }

309

313};

314

315

317private:

318 unsigned Register;

319 DbgValueLoc Value;

320

321public:

323 : Register(Reg), Value(Val) {

324 assert(Reg && "Parameter register cannot be undef");

325 }

326

329};

330

331

333

334

341

342

349

350

352

354

355

357

358

360

361

362 std::vector ArangeLabels;

363

364

366

367

369

370

371

373

374

375

377

378

379

380

384

386

387

389

390

392

393

394

396

397

399

400

401

402

403

404

406

408

410 std::pair<std::unique_ptr, const DICompositeType *>, 1>

411 TypeUnitsUnderConstruction;

412

413

414 MCSymbol *FunctionLineTableLabel;

415

416

417

418

419 unsigned NumTypeUnitsCreated = 0;

420

421

422 bool UseGNUTLSOpcode;

423

424

425 bool UseDWARF2Bitfields;

426

427

428 bool UseAllLinkageNames;

429

430

431 bool UseInlineStrings = false;

432

433

434 bool UseRangesSection = true;

435

436

437

438 bool UseSectionsAsReferences = false;

439

440

441 bool UseARangesSection = false;

442

443

444 bool GenerateTypeUnits;

445

446

447 bool UseDebugMacroSection;

448

449

450 bool EnableOpConvert;

451

452public:

460

465

466private:

467

468

470

471

473

474

475

477 bool HasAppleExtensionAttributes;

478 bool HasSplitDwarf;

479

480

481

482

483

484 bool UseSegmentedStringOffsetsTable;

485

486

487

488

489 bool EmitDebugEntryValues;

490

491

492

493

494

495

496

498

499

500

501

502

503

505

506

507

508 bool SingleCU;

509 bool IsDarwin;

510

511

513

515

516

519

525

526

527

528

529

530

532

534

536 return InfoHolder.getUnits();

537 }

538

540

541 void ensureAbstractEntityIsCreatedIfScoped(DwarfCompileUnit &CU,

542 const DINode *Node,

543 const MDNode *Scope);

544

545 DbgEntity *createConcreteEntity(DwarfCompileUnit &TheCU,

546 LexicalScope &Scope,

547 const DINode *Node,

548 const DILocation *Location,

549 const MCSymbol *Sym = nullptr);

550

551

552 void constructAbstractSubprogramScopeDIE(DwarfCompileUnit &SrcCU, LexicalScope *Scope);

553

554

555 void constructCallSiteEntryDIEs(const DISubprogram &SP, DwarfCompileUnit &CU,

556 DIE &ScopeDIE, const MachineFunction &MF);

557

558 template

559 void addAccelNameImpl(const DwarfUnit &Unit,

561 AccelTable &AppleAccel, StringRef Name,

562 const DIE &Die);

563

564 void finishEntityDefinitions();

565

566 void finishSubprogramDefinitions();

567

568

569

570 void finalizeModuleInfo();

571

572

573 void emitDebugInfo();

574

575

576 void emitAbbreviations();

577

578

579 void emitStringOffsetsTableHeader();

580

581

582 template

583 void emitAccel(AccelTableT &Accel, MCSection *Section, StringRef TableName);

584

585

586 void emitAccelDebugNames();

587

588

589 void emitAccelNames();

590

591

592

593 void emitAccelObjC();

594

595

596 void emitAccelNamespaces();

597

598

599 void emitAccelTypes();

600

601

602 void emitDebugPubSections();

603

604 void emitDebugPubSection(bool GnuStyle, StringRef Name,

605 DwarfCompileUnit *TheU,

606 const StringMap<const DIE *> &Globals);

607

608

609 void emitDebugStr();

610

611

612 void emitDebugLoc();

613

614

615 void emitDebugLocDWO();

616

617 void emitDebugLocImpl(MCSection *Sec);

618

619

620 void emitDebugARanges();

621

622

623 void emitDebugRanges();

624 void emitDebugRangesDWO();

625 void emitDebugRangesImpl(const DwarfFile &Holder, MCSection *Section);

626

627

628 void emitDebugMacinfo();

629

630 void emitDebugMacinfoDWO();

631 void emitDebugMacinfoImpl(MCSection *Section);

632 void emitMacro(DIMacro &M);

633 void emitMacroFile(DIMacroFile &F, DwarfCompileUnit &U);

634 void emitMacroFileImpl(DIMacroFile &F, DwarfCompileUnit &U,

635 unsigned StartFile, unsigned EndFile,

636 StringRef (*MacroFormToString)(unsigned Form));

637 void handleMacroNodes(DIMacroNodeArray Nodes, DwarfCompileUnit &U);

638

639

640

641

642 void initSkeletonUnit(const DwarfUnit &U, DIE &Die,

643 std::unique_ptr NewU);

644

645

646

647

648

649

650

651

652 DwarfCompileUnit &constructSkeletonCU(const DwarfCompileUnit &CU);

653

654

655 void emitDebugInfoDWO();

656

657

658 void emitDebugAbbrevDWO();

659

660

661 void emitDebugLineDWO();

662

663

664 void emitStringOffsetsTableHeaderDWO();

665

666

667 void emitDebugStrDWO();

668

669

670 void emitDebugAddr();

671

672

673

674 void addGnuPubAttributes(DwarfCompileUnit &U, DIE &D) const;

675

676

677

678 DwarfCompileUnit &getOrCreateDwarfCompileUnit(const DICompileUnit *DIUnit);

679 void finishUnitAttributes(const DICompileUnit *DIUnit,

680 DwarfCompileUnit &NewCU);

681

682

683

684

685 void recordSourceLine(unsigned Line, unsigned Col, const MDNode *Scope,

686 unsigned Flags, StringRef Location = {});

687

688

689 void collectEntityInfo(DwarfCompileUnit &TheCU, const DISubprogram *SP,

690 DenseSet &ProcessedVars);

691

692

693

694

695

696 bool buildLocationList(SmallVectorImpl &DebugLoc,

698

699

700 void collectVariableInfoFromMFTable(DwarfCompileUnit &TheCU,

701 DenseSet &P);

702

703

704 void emitSectionReference(const DwarfCompileUnit &CU);

705

706 void findForceIsStmtInstrs(const MachineFunction *MF);

707

708

709

710

711 void computeKeyInstructions(const MachineFunction *MF);

712

713protected:

714

716

717

718 void endFunctionImpl(const MachineFunction *MF) override;

719

720

722

724

725public:

726

727

728

730

732

733

734

736

737

739

740

741

743 unsigned CUID);

744

745

747

748

750

751

753

754

755

758

759

761

762

763

765 SymSize[Sym] = Size;

766 }

767

768

769

771

772

773

775

776

777

779

780

782

783

785

786

787

789

790

791

795

796

797

801

802

804 return UseSectionsAsReferences;

805 }

806

807

809

810

811

812

814

815

817

819 return HasAppleExtensionAttributes;

820 }

821

822

823

825

826

827

828

829

830

831

833 return UseSegmentedStringOffsetsTable;

834 }

835

837 return EmitDebugEntryValues;

838 }

839

841 return EnableOpConvert;

842 }

843

845

846

848

849

850

851

852

854

855

858

859

861

862

864

865

866

870

871

874

878

880

884

888

892

896

898

899

900

902

903

906 return CUDieMap.lookup(Die);

907 }

908

909

912

914 return StringTypeLocMap.lookup(ST);

915 }

916

920 StringTypeLocMap[ST] = Loc;

921 }

922

923

924

925

926

931

932

935

939

940

941

943

945 return LocalDeclsPerLS[S];

946 }

947

948

950 switch (Kind) {

952 CurrentDebugNames = &AccelDebugNames;

953 break;

955 CurrentDebugNames = &AccelTypeUnitsDebugNames;

956 }

957 }

958

960};

961

962}

963

964#endif

assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")

This file defines the StringMap class.

This file contains support for writing accelerator tables.

This file defines the BumpPtrAllocator interface.

static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")

static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")

static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")

This file defines the DenseMap class.

This file defines the DenseSet and SmallDenseSet classes.

static void recordSourceLine(AsmPrinter &Asm, unsigned Line, unsigned Col, const MDNode *S, unsigned Flags, unsigned CUID, uint16_t DwarfVersion, ArrayRef< std::unique_ptr< DwarfCompileUnit > > DCUs, StringRef Comment={})

Register a source line with debug info.

This file contains constants used for implementing Dwarf debug support.

This file implements a map that provides insertion order iteration.

This file implements a set that has insertion order iteration characteristics.

This file defines the SmallPtrSet class.

This file defines the SmallVector class.

Class recording the (high level) value of a variable.

This class holds an abstract representation of an Accelerator Table, consisting of a sequence of buck...

This class is intended to be used as a driving class for all asm writers.

Basic type, like 'int' or 'float'.

A structured debug information entry.

static LLVM_ABI std::optional< const DIExpression * > convertToNonVariadicExpression(const DIExpression *Expr)

If Expr is a valid single-location expression, i.e.

StringRef getName() const

Tagged DWARF-like metadata node.

String type, Fortran CHARACTER(n)

Subprogram description. Uses SubclassData1.

StringRef getName() const

unsigned getRegister() const

Definition DwarfDebug.h:327

DbgCallSiteParam(unsigned Reg, DbgValueLoc Val)

Definition DwarfDebug.h:322

DbgValueLoc getValue() const

Definition DwarfDebug.h:328

virtual ~DbgEntity()=default

static bool classof(const DbgEntity *N)

Definition DwarfDebug.h:93

DbgEntityKind

Definition DwarfDebug.h:67

@ DbgVariableKind

Definition DwarfDebug.h:68

@ DbgLabelKind

Definition DwarfDebug.h:69

const DINode * getEntity() const

Accessors.

Definition DwarfDebug.h:85

DbgEntityKind getDbgEntityID() const

Definition DwarfDebug.h:88

void setDIE(DIE &D)

Definition DwarfDebug.h:91

DIE * getDIE() const

Definition DwarfDebug.h:87

DbgEntity(const DINode *N, const DILocation *IA, DbgEntityKind ID)

Definition DwarfDebug.h:79

const DILocation * getInlinedAt() const

Definition DwarfDebug.h:86

dwarf::Tag getTag() const

Translate tag to proper Dwarf tag.

Definition DwarfDebug.h:306

static bool classof(const DbgEntity *N)

Definition DwarfDebug.h:310

DbgLabel(const DILabel *L, const DILocation *IA, const MCSymbol *Sym=nullptr)

Symbol before DBG_LABEL instruction.

Definition DwarfDebug.h:294

StringRef getName() const

Definition DwarfDebug.h:302

const MCSymbol * getSymbol() const

Definition DwarfDebug.h:300

const DILabel * getLabel() const

Accessors.

Definition DwarfDebug.h:299

SmallVector< Entry, 4 > Entries

std::pair< const DINode *, const DILocation * > InlinedEntity

The location of a single variable, composed of an expression and 0 or more DbgValueLocEntries.

const Loc::Variant & asVariant() const

Definition DwarfDebug.h:221

bool isArtificial() const

Return true if DbgVariable is artificial.

Definition DwarfDebug.h:262

dwarf::Tag getTag() const

Definition DwarfDebug.h:253

bool isObjectPointer() const

Definition DwarfDebug.h:270

const DILocalVariable * getVariable() const

Definition DwarfDebug.h:246

DbgVariable(const DILocalVariable *V, const DILocation *IA)

Construct a DbgVariable.

Definition DwarfDebug.h:242

auto & get() noexcept

Asserting, noexcept member alternative to std::get.

Definition DwarfDebug.h:229

StringRef getName() const

Definition DwarfDebug.h:250

const DIType * getType() const

const auto & get() const noexcept

Asserting, noexcept member alternative to std::get.

Definition DwarfDebug.h:234

Loc::Variant & asVariant()

To workaround P2162R0 https://github.com/cplusplus/papers/issues/873 the base class subobject needs t...

Definition DwarfDebug.h:220

static bool classof(const DbgEntity *N)

Definition DwarfDebug.h:280

bool holds() const

Member shorthand for std::holds_alternative.

Definition DwarfDebug.h:225

DebugHandlerBase(AsmPrinter *A)

Byte stream of .debug_loc entries.

bool useSegmentedStringOffsetsTable() const

Returns whether to generate a string offsets table with (possibly shared) contributions from each CU ...

Definition DwarfDebug.h:832

DWARF5AccelTableKind

Definition DwarfDebug.h:461

@ CU

Definition DwarfDebug.h:462

@ TU

Definition DwarfDebug.h:463

MDNodeSet & getLocalDeclsForScope(const DILocalScope *S)

Definition DwarfDebug.h:944

std::optional< MD5::MD5Result > getMD5AsBytes(const DIFile *File) const

If the File has an MD5 checksum, return it as an MD5Result allocated in the MCContext.

bool useGNUTLSOpcode() const

Returns whether to use DW_OP_GNU_push_tls_address, instead of the standard DW_OP_form_tls_address opc...

Definition DwarfDebug.h:774

bool useAddrOffsetForm() const

Definition DwarfDebug.h:798

const DwarfCompileUnit * getPrevCU() const

Returns the previous CU that was being updated.

Definition DwarfDebug.h:856

void setSymbolSize(const MCSymbol *Sym, uint64_t Size) override

For symbols that have a size designated (e.g.

Definition DwarfDebug.h:764

bool emitDebugEntryValues() const

Definition DwarfDebug.h:836

const DwarfCompileUnit * lookupCU(const DIE *Die) const

Definition DwarfDebug.h:905

uint16_t getDwarfVersion() const

Returns the Dwarf Version.

void emitDebugLocEntry(ByteStreamer &Streamer, const DebugLocStream::Entry &Entry, const DwarfCompileUnit *CU)

Emit an entry for the debug loc section.

void addAccelNamespace(const DwarfUnit &Unit, const DICompileUnit::DebugNameTableKind NameTableKind, StringRef Name, const DIE &Die)

void setCurrentDWARF5AccelTable(const DWARF5AccelTableKind Kind)

Sets the current DWARF5AccelTable to use.

Definition DwarfDebug.h:949

bool alwaysUseRanges(const DwarfCompileUnit &) const

Returns whether range encodings should be used for single entry range lists.

void beginModule(Module *M) override

Emit all Dwarf sections that should come prior to the content.

void addSubprogramNames(const DwarfUnit &Unit, const DICompileUnit::DebugNameTableKind NameTableKind, const DISubprogram *SP, DIE &Die)

bool useAllLinkageNames() const

Returns whether we should emit all DW_AT_[MIPS_]linkage_name.

Definition DwarfDebug.h:770

void insertSectionLabel(const MCSymbol *S)

void addAccelObjC(const DwarfUnit &Unit, const DICompileUnit::DebugNameTableKind NameTableKind, StringRef Name, const DIE &Die)

dwarf::Form getDwarfSectionOffsetForm() const

Returns a suitable DWARF form to represent a section offset, i.e.

bool useAppleExtensionAttributes() const

Definition DwarfDebug.h:818

void setPrevCU(const DwarfCompileUnit *PrevCU)

Definition DwarfDebug.h:857

MinimizeAddrInV5

Definition DwarfDebug.h:453

@ Default

Definition DwarfDebug.h:454

@ Ranges

Definition DwarfDebug.h:456

@ Disabled

Definition DwarfDebug.h:455

@ Form

Definition DwarfDebug.h:458

@ Expressions

Definition DwarfDebug.h:457

const MachineFunction * getCurrentFunction() const

Definition DwarfDebug.h:897

void skippedNonDebugFunction() override

bool useInlineStrings() const

Returns whether to use inline strings.

Definition DwarfDebug.h:781

void addArangeLabel(SymbolCU SCU)

Add a label so that arange data can be generated for it.

Definition DwarfDebug.h:760

bool generateTypeUnits() const

Returns whether to generate DWARF v4 type units.

Definition DwarfDebug.h:808

void beginInstruction(const MachineInstr *MI) override

Process beginning of an instruction.

AddressPool & getAddressPool()

Definition DwarfDebug.h:879

DWARF5AccelTable & getCurrentDWARF5AccelTable()

Returns either CU or TU DWARF5AccelTable.

Definition DwarfDebug.h:959

bool useSectionsAsReferences() const

Returns whether to use sections as labels rather than temp symbols.

Definition DwarfDebug.h:803

const DebugLocStream & getDebugLocs() const

Returns the entries for the .debug_loc section.

Definition DwarfDebug.h:863

bool shareAcrossDWOCUs() const

bool useOpConvert() const

Definition DwarfDebug.h:840

void terminateLineTable(const DwarfCompileUnit *CU)

Terminate the line table by adding the last range label.

void endFunctionImpl(const MachineFunction *MF) override

Gather and emit post-function debug information.

void addStringTypeLoc(const DIStringType *ST, unsigned Loc)

Definition DwarfDebug.h:917

DwarfCompileUnit & getOrCreateAbstractSubprogramCU(const DISubprogram *SP, DwarfCompileUnit &SrcCU)

Find the matching DwarfCompileUnit for the given SP referenced from SrcCU.

void emitDebugLocEntryLocation(const DebugLocStream::Entry &Entry, const DwarfCompileUnit *CU)

Emit the location for a debug loc entry, including the size header.

DwarfCompileUnit * lookupCU(const DIE *Die)

Find the matching DwarfCompileUnit for the given CU DIE.

Definition DwarfDebug.h:904

const MCSymbol * getSectionLabel(const MCSection *S)

static void emitDebugLocValue(const AsmPrinter &AP, const DIBasicType *BT, const DbgValueLoc &Value, DwarfExpression &DwarfExpr)

bool useSplitDwarf() const

Returns whether or not to change the current debug info for the split dwarf proposal support.

Definition DwarfDebug.h:824

unsigned getDwarfCompileUnitIDForLineTable(const DwarfCompileUnit &CU)

Get Dwarf compile unit ID for line table.

const MachineInstr * emitInitialLocDirective(const MachineFunction &MF, unsigned CUID)

Emits inital debug location directive.

void setTheAccelTableKind(AccelTableKind K)

Seet TheAccelTableKind.

Definition DwarfDebug.h:816

bool useDWARF2Bitfields() const

Returns whether to use the DWARF2 format for bitfields instyead of the DWARF4 format.

Definition DwarfDebug.h:778

bool useAddrOffsetExpressions() const

Definition DwarfDebug.h:792

bool useRangesSection() const

Returns whether ranges section should be emitted.

Definition DwarfDebug.h:784

void addAccelName(const DwarfUnit &Unit, const DICompileUnit::DebugNameTableKind NameTableKind, StringRef Name, const DIE &Die)

unsigned getStringTypeLoc(const DIStringType *ST) const

Definition DwarfDebug.h:913

bool isLexicalScopeDIENull(LexicalScope *Scope)

A helper function to check whether the DIE for a given Scope is going to be null.

void addDwarfTypeUnitType(DwarfCompileUnit &CU, StringRef Identifier, DIE &Die, const DICompositeType *CTy)

Add a DIE to the set of types that we're going to pull into type units.

void endModule() override

Emit all Dwarf sections that should come after the content.

void addAccelType(const DwarfUnit &Unit, const DICompileUnit::DebugNameTableKind NameTableKind, StringRef Name, const DIE &Die, char Flags)

void beginCodeAlignment(const MachineBasicBlock &MBB) override

Process beginning of code alignment.

DwarfDebug(AsmPrinter *A)

void beginFunctionImpl(const MachineFunction *MF) override

Gather pre-function debug information.

AccelTableKind getAccelTableKind() const

Returns what kind (if any) of accelerator tables to emit.

Definition DwarfDebug.h:813

static uint64_t makeTypeSignature(StringRef Identifier)

Perform an MD5 checksum of Identifier and return the lower 64 bits.

Base class containing the logic for constructing DWARF expressions independently of whether they are ...

const SmallVectorImpl< std::unique_ptr< DwarfCompileUnit > > & getUnits()

This dwarf writer support class manages information associated with a source file.

This class is used to track scope information.

Multi-value location description.

Definition DwarfDebug.h:142

Multi(unsigned DebugLocListIndex, std::optional< uint8_t > DebugLocListTagOffset)

Definition DwarfDebug.h:149

unsigned getDebugLocListIndex() const

Definition DwarfDebug.h:153

std::optional< uint8_t > getDebugLocListTagOffset() const

Definition DwarfDebug.h:154

Single value location description.

Definition DwarfDebug.h:131

Single(DbgValueLoc ValueLoc)

const DbgValueLoc & getValueLoc() const

Definition DwarfDebug.h:138

const DIExpression * getExpr() const

Definition DwarfDebug.h:139

Wrapper class representing physical registers. Should be passed by value.

Instances of this class represent a uniqued identifier for a section in the current translation unit.

MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...

Representation of each machine instruction.

This class implements a map that also provides access to all stored values in a deterministic order.

A Module instance is used to store all the information related to an LLVM module.

A vector that has set insertion semantics.

Implements a dense probed hash-table based set with some number of buckets stored inline.

SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements.

A SetVector that performs no allocations if smaller than a certain size.

This class consists of common code factored out of the SmallVector class to reduce code duplication b...

This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.

StringRef - Represent a constant reference to a string, i.e.

LLVM Value Representation.

bool tuneForSCE() const

Definition DwarfDebug.h:929

bool tuneForDBX() const

Definition DwarfDebug.h:930

bool tuneForGDB() const

Definition DwarfDebug.h:927

bool tuneForLLDB() const

Definition DwarfDebug.h:928

#define llvm_unreachable(msg)

Marks that the current location is not supposed to be reachable.

unsigned ID

LLVM IR allows to use arbitrary numbers as calling convention identifiers.

Definition DwarfDebug.h:129

std::variant< std::monostate, Loc::Single, Loc::Multi, Loc::MMI, Loc::EntryValue > Variant

Alias for the std::variant specialization base class of DbgVariable.

Definition DwarfDebug.h:189

This is an optimization pass for GlobalISel generic memory operations.

bool operator<(int64_t V1, const APSInt &V2)

SmallVector< DbgCallSiteParam, 4 > ParamSet

Collection used for storing debug call site parameters.

Definition DwarfDebug.h:332

AccelTableKind

The kind of accelerator tables we should emit.

Definition DwarfDebug.h:343

@ Apple

.apple_names, .apple_namespaces, .apple_types, .apple_objc.

Definition DwarfDebug.h:346

@ Dwarf

DWARF v5 .debug_names.

Definition DwarfDebug.h:347

decltype(auto) cast(const From &Val)

cast - Return the argument parameter cast to the specified type.

DebuggerKind

Identify a debugger for "tuning" the debug info.

@ SCE

Tune debug info for SCE targets (e.g. PS4).

@ DBX

Tune debug info for dbx.

@ Default

No specific tuning requested.

@ GDB

Tune debug info for gdb.

@ LLDB

Tune debug info for lldb.

BumpPtrAllocatorImpl<> BumpPtrAllocator

The standard BumpPtrAllocator which just uses the default template parameters.

@ Default

The result values are uniform if and only if all operands are uniform.

Represents an entry-value location, or a fragment of one.

Definition DwarfDebug.h:120

friend bool operator<(const EntryValueInfo &LHS, const EntryValueInfo &RHS)

Operator enabling sorting based on fragment offset.

MCRegister Reg

Definition DwarfDebug.h:121

const DIExpression & Expr

Definition DwarfDebug.h:122

Proxy for one MMI entry.

Definition DwarfDebug.h:111

const DIExpression * Expr

Definition DwarfDebug.h:113

int FI

Definition DwarfDebug.h:112

friend bool operator<(const FrameIndexExpr &LHS, const FrameIndexExpr &RHS)

Operator enabling sorting based on fragment offset.

Single location defined by (potentially multiple) EntryValueInfo.

Definition DwarfDebug.h:172

void addExpr(MCRegister Reg, const DIExpression &Expr)

Definition DwarfDebug.h:180

std::set< EntryValueInfo > EntryValues

Definition DwarfDebug.h:173

EntryValue(MCRegister Reg, const DIExpression &Expr)

Definition DwarfDebug.h:174

Single location defined by (potentially multiple) MMI entries.

Definition DwarfDebug.h:159

void addFrameIndexExpr(const DIExpression *Expr, int FI)

std::set< FrameIndexExpr > FrameIndexExprs

Definition DwarfDebug.h:160

const std::set< FrameIndexExpr > & getFrameIndexExprs() const

Get the FI entries, sorted by fragment offset.

MMI(const DIExpression *E, int FI)

Definition DwarfDebug.h:163

Helper used to pair up a symbol and its DWARF compile unit.

Definition DwarfDebug.h:335

const MCSymbol * Sym

Definition DwarfDebug.h:338

SymbolCU(DwarfCompileUnit *CU, const MCSymbol *Sym)

Definition DwarfDebug.h:336