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->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