LLVM: lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9#ifndef LLVM_LIB_DWARFLINKER_PARALLEL_DWARFLINKERCOMPILEUNIT_H

10#define LLVM_LIB_DWARFLINKER_PARALLEL_DWARFLINKERCOMPILEUNIT_H

11

14#include

15

16namespace llvm {

19

21

27

29

30

31

36

39

41 std::optional getParent();

42};

43

48

49

50

51

52

54public:

55

57

59

60

62

63

64

66

67

68

70

71

73

74

76

77

79

80

82

83

85 };

86

91

96

97

99

100

102

103

105

106

107

109

110

112

113

114

116

117

118

119

121

122

123

125

126

130

131

133

134

135

137

138

139

141 bool InterCUProcessingStarted,

142 std::atomic &HasNewInterconnectedCUs);

143

144

145

147

148

150

151

153

154

157

158

160

161

163

164

166 };

167

168

176

177

178 std::atomic<uint16_t> Flags = {0};

179

180

184

185

187 auto InputData = Flags.load();

188 while (Flags.compare_exchange_weak(InputData,

189 ((InputData & ~0x7) | Placement))) {

190 }

191 }

192

193

195 auto InputData = Flags.load();

196 while (Flags.compare_exchange_weak(InputData, (InputData & ~0x7))) {

197 }

198 }

199

200

202 auto InputData = Flags.load();

203 if ((InputData & 0x7) == NotSet)

204 if (Flags.compare_exchange_strong(InputData, (InputData | Placement)))

205 return true;

206

207 return false;

208 }

209

210#define SINGLE_FLAG_METHODS_SET(Name, Value) \

211 bool get##Name() const { return Flags & Value; } \

212 void set##Name() { \

213 auto InputData = Flags.load(); \

214 while (!Flags.compare_exchange_weak(InputData, InputData | Value)) { \

215 } \

216 } \

217 void unset##Name() { \

218 auto InputData = Flags.load(); \

219 while (!Flags.compare_exchange_weak(InputData, InputData & ~Value)) { \

220 } \

221 }

222

223

225

226

228

229

231

232

234

235

237

238

240

241

243

244

246

247

249

251 auto InputData = Flags.load();

252 while (Flags.compare_exchange_weak(

253 InputData, InputData & ~(0x7 | 0x8 | 0x10 | 0x20))) {

254 }

255 }

256

257

259

260#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)

262#endif

263

267 getKeepTypeChildren();

268 }

269

273 getKeepPlainChildren();

274 }

275 };

276

277

278

279

280

281

282

284

285

286

288

289

290

294

295

296

300

301

302

306

307

308

312

313

314

316 return reinterpret_cast<std::atomic<uint64_t> *>(&OutDieOffsetArray[Idx])

318 }

319

320

321

323 return reinterpret_cast<std::atomic<TypeEntry *> *>(&TypeEntries[Idx])

325 }

326

327

328

330 return reinterpret_cast<std::atomic<uint64_t> *>(

333 }

334

335

336

338 return reinterpret_cast<std::atomic<TypeEntry *> *>(

341 }

342

343

344

346 reinterpret_cast<std::atomic<uint64_t> *>(&OutDieOffsetArray[Idx])

348 }

349

350

351

353 reinterpret_cast<std::atomic<TypeEntry *> *>(&TypeEntries[Idx])

354 ->store(Entry);

355 }

356

357

358

361 reinterpret_cast<std::atomic<TypeEntry *> *>(

363 ->store(Entry);

364 }

365

366

367

368

369 std::optional<uint64_t> getLowPc() const { return LowPc; }

370

371

373

374

376

377

378

380

381

382

383

384

385 std::optional

388

389 std::optional

393

394

395

396

397

399

400

402

403

405 cloneAndEmit(std::optional<std::reference_wrapper> TargetTriple,

406 TypeUnit *ArtificialTypeUnit);

407

408

410

411

413

414

416

417

418 std::pair<DIE *, TypeEntry *>

421 std::optional<int64_t> FuncAddressAdjustment,

422 std::optional<int64_t> VarAddressAdjustment,

424

425

427

428

432 std::optional<int64_t> VarAddressAdjustment,

434

435

437 return DebugAddrIndexMap.getValueIndex(Addr);

438 }

439

440

441 std::optional<std::pair<StringRef, StringRef>>

443

444

445 std::optional<std::pair<StringRef, StringRef>>

447

448

449

450

451

452

454 assert(OrigUnit != nullptr);

455 return *OrigUnit;

456 }

457

460 assert(OrigUnit != nullptr);

461 return OrigUnit->getFirstChildEntry(Die);

462 }

463

466 assert(OrigUnit != nullptr);

467 return OrigUnit->getSiblingEntry(Die);

468 }

469

471 assert(OrigUnit != nullptr);

472 return OrigUnit->getParent(Die);

473 }

474

476 assert(OrigUnit != nullptr);

477 return OrigUnit->getDIEAtIndex(Index);

478 }

479

481 assert(OrigUnit != nullptr);

482 return OrigUnit->getDebugInfoEntry(Index);

483 }

484

486 assert(OrigUnit != nullptr);

487 return OrigUnit->getUnitDIE(ExtractUnitDIEOnly);

488 }

489

491 assert(OrigUnit != nullptr);

492 return DWARFDie(OrigUnit, Die);

493 }

494

496 assert(OrigUnit != nullptr);

497 return OrigUnit->getDIEIndex(Die);

498 }

499

501 assert(OrigUnit != nullptr);

502 return OrigUnit->getDIEIndex(Die);

503 }

504

507 assert(OrigUnit != nullptr);

508 return find(OrigUnit->getDebugInfoEntry(DieIdx), Attrs);

509 }

510

513 if (!Die)

514 return std::nullopt;

516 if (AbbrevDecl) {

517 for (auto Attr : Attrs) {

518 if (auto Value = AbbrevDecl->getAttributeValue(Die->getOffset(), Attr,

519 *OrigUnit))

521 }

522 }

523 return std::nullopt;

524 }

525

527 return OrigUnit->getDIEIndexForOffset(Offset);

528 }

529

530

531

532

533

534

535

539

545

547 if (DieEntry != nullptr) {

550 return;

551 }

552

554 }

555

559

565

566

567

568

570 AcceleratorRecords.add(Info);

571 }

572

573

574 void

576 AcceleratorRecords.forEach(Handler);

577 }

578

579

581 public:

584

585

587

589

591

592

594

595

597

598 protected:

600 };

601

602private:

603

605 bool IsODRUnavailableFunctionScope);

606

607 struct LinkedLocationExpressionsWithOffsetPatches {

610 };

611 using LinkedLocationExpressionsVector =

613

614

616

617

619

620

621 uint64_t emitLocListFragment(

622 const LinkedLocationExpressionsVector &LinkedLocationExpression,

624

625

626 Error emitDebugAddrSection();

627

628

629 void emitAranges(AddressRanges &LinkedFunctionRanges);

630

631

634

635

637

638

639 void emitRangeListFragment(const AddressRanges &LinkedRanges,

641

642

643

645 std::vectorDWARFDebugLine::Row &Rows);

646

647

648 void emitMacroTableImpl(const DWARFDebugMacro *MacroTable,

649 uint64_t OffsetToMacroTable, bool hasDWARFv5Header);

650

651

652 DIE *createPlainDIEandCloneAttributes(

654 uint64_t &OutOffset, std::optional<int64_t> &FuncAddressAdjustment,

655 std::optional<int64_t> &VarAddressAdjustment);

656

657

658 TypeEntry *createTypeDIEandCloneAttributes(

661

662

665 bool IsDeclaration, bool IsParentDeclaration);

666

667

670

671

673

674

676

677

678 std::optional<uint16_t> Language;

679

680

682

683

684

686 ResolvedPathsMap ResolvedFullPaths;

688

689

691

692 std::unique_ptr Dependencies;

693

694

695

696

698

699 std::optional<uint64_t> LowPc;

701

702

703 bool NoODR = true;

704

705

706

707

709 std::mutex RangesMutex;

710

711

713 LabelMapTy Labels;

714 std::mutex LabelsMutex;

715

716

717 std::atomic Stage;

718

719

723

724

726

727};

728

729

730

731

732

734

735}

736}

737}

738

739#endif

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

AMDGPU Mark last scratch load

Analysis containing CSE Info

#define LLVM_DUMP_METHOD

Mark debug helper function definitions like dump() that should not be stripped from debug builds.

Branch Probability Basic Block Placement

The AddressRanges class helps normalize address range collections.

ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...

A structured debug information entry.

DWARFDebugInfoEntry - A DIE with only the minimum required data.

uint64_t getOffset() const

const DWARFAbbreviationDeclaration * getAbbreviationDeclarationPtr() const

Utility class that carries the DWARF compile/type unit and the debug info entry in an object.

uint32_t getDIEIndex(const DWARFDebugInfoEntry *Die) const

Return the index of a Die entry inside the unit's DIE vector.

Base class for error info classes.

Lightweight error class with error context and mandatory checking.

Class representing an expression and its matching format.

A discriminated union of two or more pointer types, with the discriminator in the low bit of the poin...

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.

StringMap - This is an unconventional map that is specialized for handling keys that are "strings",...

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

Triple - Helper class for working with autoconf configuration names.

Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...

LLVM Value Representation.

This class represents DWARF information for source file and it's address map.

This class stores values sequentually and assigns index to the each value.

This class is a simple list of T structures.

TypeUnit * getAsTypeUnit()

Returns TypeUnit if applicable.

DwarfUnit * operator->()

Accessor for common functionality.

PointerUnion< CompileUnit *, TypeUnit * > Ptr

Definition DWARFLinkerCompileUnit.h:599

CompileUnit * getAsCompileUnit()

Returns CompileUnit if applicable.

OutputUnitVariantPtr(CompileUnit *U)

Stores all information related to a compile unit, be it in its original instance of the object file o...

Definition DWARFLinkerCompileUnit.h:53

void addLabelLowPc(uint64_t LabelLowPc, int64_t PcOffset)

Add the low_pc of a label that is relocated by applying offset PCOffset.

Error cloneAndEmitDebugLocations()

Clone and emit debug locations(.debug_loc/.debug_loclists).

void cloneDieAttrExpression(const DWARFExpression &InputExpression, SmallVectorImpl< uint8_t > &OutputExpression, SectionDescriptor &Section, std::optional< int64_t > VarAddressAdjustment, OffsetsPtrVector &PatchesOffsets)

Clone attribute location axpression.

void maybeResetToLoadedStage()

Reset compile units data(results of liveness analysis, clonning) if current stage greater than Stage:...

void addFunctionRange(uint64_t LowPC, uint64_t HighPC, int64_t PCOffset)

Add a function range [LowPC, HighPC) that is relocated by applying offset PCOffset.

void analyzeImportedModule(const DWARFDebugInfoEntry *DieEntry)

Collect references to parseable Swift interfaces in imported DW_TAG_module blocks.

std::pair< DIE *, TypeEntry * > cloneDIE(const DWARFDebugInfoEntry *InputDieEntry, TypeEntry *ClonedParentTypeDIE, uint64_t OutOffset, std::optional< int64_t > FuncAddressAdjustment, std::optional< int64_t > VarAddressAdjustment, BumpPtrAllocator &Allocator, TypeUnit *ArtificialTypeUnit)

void cleanupDataAfterClonning()

Cleanup unneeded resources after compile unit is cloned.

Error assignTypeNames(TypePool &TypePoolRef)

Search for type entries and assign names.

uint64_t getHighPc() const

Returns value of DW_AT_high_pc attribute.

Definition DWARFLinkerCompileUnit.h:372

DieOutputPlacement

Kinds of placement for the output die.

Definition DWARFLinkerCompileUnit.h:155

@ Both

Corresponding DIE goes to type table and to plain dwarf.

Definition DWARFLinkerCompileUnit.h:165

@ TypeTable

Corresponding DIE goes to the type table only.

Definition DWARFLinkerCompileUnit.h:159

@ NotSet

Definition DWARFLinkerCompileUnit.h:156

@ PlainDwarf

Corresponding DIE goes to the plain dwarf only.

Definition DWARFLinkerCompileUnit.h:162

Error cloneAndEmitLineTable(const Triple &TargetTriple)

void analyzeDWARFStructure()

Navigate DWARF tree and set die properties.

Definition DWARFLinkerCompileUnit.h:127

Error cloneAndEmitRanges()

Clone and emit ranges.

void updateDieRefPatchesWithClonedOffsets()

After cloning stage the output DIEs offsets are deallocated.

uint64_t getDebugAddrIndex(uint64_t Addr)

Returns index(inside .debug_addr) of an address.

Definition DWARFLinkerCompileUnit.h:436

const DWARFFile & getContaingFile() const

Returns DWARFFile containing this compile unit.

Definition DWARFLinkerCompileUnit.h:111

bool resolveDependenciesAndMarkLiveness(bool InterCUProcessingStarted, std::atomic< bool > &HasNewInterconnectedCUs)

Search for subprograms and variables referencing live code and discover dependend DIEs.

bool hasLabelAt(uint64_t Addr) const

Returns true if there is a label corresponding to the specified Addr.

Definition DWARFLinkerCompileUnit.h:375

bool updateDependenciesCompleteness()

Check dependend DIEs for incompatible placement.

bool loadInputDIEs()

Load DIEs of input compilation unit.

const RangesTy & getFunctionRanges() const

Returns function ranges of this unit.

Definition DWARFLinkerCompileUnit.h:401

void saveAcceleratorInfo(const DwarfUnit::AccelInfo &Info)

Save specified accelerator info Info.

Definition DWARFLinkerCompileUnit.h:569

Error cloneAndEmitDebugMacro()

Clone and emit debug macros(.debug_macinfo/.debug_macro).

Error cloneAndEmit(std::optional< std::reference_wrapper< const Triple > > TargetTriple, TypeUnit *ArtificialTypeUnit)

Clone and emit this compilation unit.

void setStage(Stage Stage)

Set stage of overall processing.

Definition DWARFLinkerCompileUnit.h:101

Stage getStage() const

Returns stage of overall processing.

Definition DWARFLinkerCompileUnit.h:98

CompileUnit(LinkingGlobalData &GlobalData, unsigned ID, StringRef ClangModuleName, DWARFFile &File, OffsetToUnitTy UnitFromOffset, dwarf::FormParams Format, llvm::endianness Endianess)

void verifyDependencies()

Check DIEs to have a consistent marking(keep marking, placement marking).

Stage

The stages of new compile unit processing.

Definition DWARFLinkerCompileUnit.h:56

@ Cloned

Output DWARF is generated.

Definition DWARFLinkerCompileUnit.h:75

@ TypeNamesAssigned

Type names assigned to DIEs.

Definition DWARFLinkerCompileUnit.h:72

@ CreatedNotLoaded

Created, linked with input DWARF file.

Definition DWARFLinkerCompileUnit.h:58

@ PatchesUpdated

Offsets inside patch records are updated.

Definition DWARFLinkerCompileUnit.h:78

@ Cleaned

Resources(Input DWARF, Output DWARF tree) are released.

Definition DWARFLinkerCompileUnit.h:81

@ Loaded

Input DWARF is loaded.

Definition DWARFLinkerCompileUnit.h:61

@ LivenessAnalysisDone

Input DWARF is analysed(DIEs pointing to the real code section arediscovered, type names are assigned...

Definition DWARFLinkerCompileUnit.h:65

@ UpdateDependenciesCompleteness

Check if dependencies have incompatible placement.

Definition DWARFLinkerCompileUnit.h:69

@ Skipped

Compile Unit should be skipped.

Definition DWARFLinkerCompileUnit.h:84

void forEachAcceleratorRecord(function_ref< void(AccelInfo &)> Handler) override

Enumerates all units accelerator records.

Definition DWARFLinkerCompileUnit.h:575

std::optional< uint64_t > getLowPc() const

Returns value of DW_AT_low_pc attribute.

Definition DWARFLinkerCompileUnit.h:369

std::optional< std::pair< StringRef, StringRef > > getDirAndFilenameFromLineTable(const DWARFFormValue &FileIdxValue)

Returns directory and file from the line table by index.

std::optional< UnitEntryPairTy > resolveDIEReference(const DWARFFormValue &RefValue, ResolveInterCUReferencesMode CanResolveInterCUReferences)

Resolve the DIE attribute reference that has been extracted in RefValue.

void loadLineTable()

Loads unit line table.

StringEntry * getFileName(unsigned FileIdx, StringPool &GlobalStrings)

Returns name of the file for the FileIdx from the unit`s line table.

This class is a helper to create output DIE tree.

This class discovers DIEs dependencies: marks "live" DIEs, marks DIE locations (whether DIE should be...

StringRef getUnitName() const

Returns this unit name.

DwarfUnit(LinkingGlobalData &GlobalData, unsigned ID, StringRef ClangModuleName)

std::string ClangModuleName

If this is a Clang module, this holds the module's name.

This class keeps data and services common for the whole linking process.

LinkingGlobalData & GlobalData

The helper class to build type name based on DIE properties.

Keeps cloned data for the type DIE.

TypePool keeps type descriptors which contain partially cloned DIE correspinding to each type.

Type Unit is used to represent an artificial compilation unit which keeps all type information.

An efficient, type-erasing, non-owning reference to a callable.

uint64_t getDieOutOffset(const DWARFDebugInfoEntry *InputDieEntry)

InputDieEntry debug info entry.

Definition DWARFLinkerCompileUnit.h:329

void rememberDieOutOffset(uint32_t Idx, uint64_t Offset)

Idx index of the DIE.

Definition DWARFLinkerCompileUnit.h:345

TypeEntry * getDieTypeEntry(uint32_t Idx)

Idx index of the DIE.

Definition DWARFLinkerCompileUnit.h:322

DIEInfo & getDIEInfo(unsigned Idx)

Idx index of the DIE.

Definition DWARFLinkerCompileUnit.h:283

const DIEInfo & getDIEInfo(const DWARFDebugInfoEntry *Entry) const

Idx index of the DIE.

Definition DWARFLinkerCompileUnit.h:297

uint64_t getDieOutOffset(uint32_t Idx)

Idx index of the DIE.

Definition DWARFLinkerCompileUnit.h:315

const DIEInfo & getDIEInfo(const DWARFDie &Die) const

Die

Definition DWARFLinkerCompileUnit.h:309

const DIEInfo & getDIEInfo(unsigned Idx) const

Idx index of the DIE.

Definition DWARFLinkerCompileUnit.h:287

DIEInfo & getDIEInfo(const DWARFDebugInfoEntry *Entry)

Idx index of the DIE.

Definition DWARFLinkerCompileUnit.h:291

TypeEntry * getDieTypeEntry(const DWARFDebugInfoEntry *InputDieEntry)

InputDieEntry debug info entry.

Definition DWARFLinkerCompileUnit.h:337

void setDieTypeEntry(const DWARFDebugInfoEntry *InputDieEntry, TypeEntry *Entry)

InputDieEntry debug info entry.

Definition DWARFLinkerCompileUnit.h:359

void setDieTypeEntry(uint32_t Idx, TypeEntry *Entry)

Idx index of the DIE.

Definition DWARFLinkerCompileUnit.h:352

DIEInfo & getDIEInfo(const DWARFDie &Die)

Die

Definition DWARFLinkerCompileUnit.h:303

const DWARFDebugInfoEntry * getSiblingEntry(const DWARFDebugInfoEntry *Die) const

Definition DWARFLinkerCompileUnit.h:465

const DWARFDebugInfoEntry * getFirstChildEntry(const DWARFDebugInfoEntry *Die) const

Definition DWARFLinkerCompileUnit.h:459

std::optional< uint32_t > getDIEIndexForOffset(uint64_t Offset)

Definition DWARFLinkerCompileUnit.h:526

DWARFDie getDIEAtIndex(unsigned Index)

Definition DWARFLinkerCompileUnit.h:475

DWARFDie getDIE(const DWARFDebugInfoEntry *Die)

Definition DWARFLinkerCompileUnit.h:490

std::optional< DWARFFormValue > find(const DWARFDebugInfoEntry *Die, ArrayRef< dwarf::Attribute > Attrs) const

Definition DWARFLinkerCompileUnit.h:511

const DWARFDebugInfoEntry * getDebugInfoEntry(unsigned Index) const

Definition DWARFLinkerCompileUnit.h:480

DWARFUnit & getOrigUnit() const

Returns paired compile unit from input DWARF.

Definition DWARFLinkerCompileUnit.h:453

DWARFDie getUnitDIE(bool ExtractUnitDIEOnly=true)

Definition DWARFLinkerCompileUnit.h:485

DWARFDie getParent(const DWARFDebugInfoEntry *Die)

Definition DWARFLinkerCompileUnit.h:470

uint32_t getDIEIndex(const DWARFDebugInfoEntry *Die) const

Definition DWARFLinkerCompileUnit.h:495

uint32_t getDIEIndex(const DWARFDie &Die) const

Definition DWARFLinkerCompileUnit.h:500

std::optional< DWARFFormValue > find(uint32_t DieIdx, ArrayRef< dwarf::Attribute > Attrs) const

Definition DWARFLinkerCompileUnit.h:505

void error(Error Err, const DWARFDie *DIE=nullptr)

Definition DWARFLinkerCompileUnit.h:560

void warn(Error Warning, const DWARFDie *DIE=nullptr)

Definition DWARFLinkerCompileUnit.h:540

void warn(const Twine &Warning, const DWARFDie *DIE=nullptr)

Definition DWARFLinkerCompileUnit.h:536

void error(const Twine &Err, const DWARFDie *DIE=nullptr)

Definition DWARFLinkerCompileUnit.h:556

void warn(const Twine &Warning, const DWARFDebugInfoEntry *DieEntry)

Definition DWARFLinkerCompileUnit.h:546

#define SINGLE_FLAG_METHODS_SET(Name, Value)

Definition DWARFLinkerCompileUnit.h:210

unsigned ID

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

function_ref< CompileUnit *(uint64_t Offset)> OffsetToUnitTy

Definition DWARFLinkerCompileUnit.h:20

SmallVector< uint64_t * > OffsetsPtrVector

Type for list of pointers to patches offsets.

StringMapEntry< std::atomic< TypeEntryBody * > > TypeEntry

ArrayRef< dwarf::Attribute > getODRAttributes()

ResolveInterCUReferencesMode

Definition DWARFLinkerCompileUnit.h:44

@ AvoidResolving

Definition DWARFLinkerCompileUnit.h:46

@ Resolve

Definition DWARFLinkerCompileUnit.h:45

DebugSectionKind

List of tracked debug tables.

StringMapEntry< EmptyStringSetTag > StringEntry

StringEntry keeps data of the string: the length, external offset and a string body which is placed r...

AddressRangesMap RangesTy

Mapped value in the address map is the offset to apply to the linked address.

This is an optimization pass for GlobalISel generic memory operations.

void handleAllErrors(Error E, HandlerTs &&... Handlers)

Behaves the same as handleErrors, except that by contract all errors must be handled by the given han...

static void insertLineSequence(std::vector< TrackedRow > &Seq, std::vector< TrackedRow > &Rows)

Insert the new line info sequence Seq into the current set of already linked line info Rows.

BumpPtrAllocatorImpl<> BumpPtrAllocator

The standard BumpPtrAllocator which just uses the default template parameters.

@ Keep

No function return thunk.

Represents a single DWARF expression, whose value is location-dependent.

A helper struct providing information about the byte size of DW_FORM values that vary in size dependi...

Information gathered and exchanged between the various clone*Attr helpers about the attributes of a p...

Information gathered about source DIEs.

Definition DWARFLinkerCompileUnit.h:169

LLVM_DUMP_METHOD void dump()

void setPlacement(DieOutputPlacement Placement)

Sets Placement kind for the corresponding die.

Definition DWARFLinkerCompileUnit.h:186

bool needToKeepInPlainDwarf() const

Definition DWARFLinkerCompileUnit.h:270

std::atomic< uint16_t > Flags

Data member keeping various flags.

Definition DWARFLinkerCompileUnit.h:178

bool needToPlaceInTypeTable() const

Definition DWARFLinkerCompileUnit.h:264

DieOutputPlacement getPlacement() const

Definition DWARFLinkerCompileUnit.h:181

void unsetPlacement()

Unsets Placement kind for the corresponding die.

Definition DWARFLinkerCompileUnit.h:194

bool setPlacementIfUnset(DieOutputPlacement Placement)

Sets Placement kind for the corresponding die.

Definition DWARFLinkerCompileUnit.h:201

DIEInfo & operator=(const DIEInfo &Other)

Definition DWARFLinkerCompileUnit.h:172

void unsetFlagsWhichSetDuringLiveAnalysis()

DIE is a part of the linked output.

Definition DWARFLinkerCompileUnit.h:250

DIEInfo(const DIEInfo &Other)

Definition DWARFLinkerCompileUnit.h:171

void eraseData()

Erase all flags.

Definition DWARFLinkerCompileUnit.h:258

This structure keeps fields which would be used for creating accelerator table.

This structure is used to keep data of the concrete section.

UnitEntryPairTy()=default

UnitEntryPairTy(CompileUnit *CU, const DWARFDebugInfoEntry *DieEntry)

Definition DWARFLinkerCompileUnit.h:34

std::optional< UnitEntryPairTy > getParent()

UnitEntryPairTy getNamespaceOrigin()

const DWARFDebugInfoEntry * DieEntry

Definition DWARFLinkerCompileUnit.h:38