LLVM: include/llvm/CodeGen/AsmPrinter.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#ifndef LLVM_CODEGEN_ASMPRINTER_H
16#define LLVM_CODEGEN_ASMPRINTER_H
17
28#include
29#include
30#include
31#include
32
33namespace llvm {
34
35class AddrLabelMap;
36class AsmPrinterHandler;
40class ConstantArray;
41class ConstantPtrAuth;
42class DataLayout;
43class DebugHandlerBase;
44class DIE;
45class DIEAbbrev;
46class DwarfDebug;
47class EHStreamer;
48class GCMetadataPrinter;
49class GCStrategy;
50class GlobalAlias;
51class GlobalObject;
52class GlobalValue;
53class GlobalVariable;
54class MachineBasicBlock;
55class MachineConstantPoolValue;
56class MachineDominatorTree;
57class MachineFunction;
58class MachineInstr;
59class MachineJumpTableInfo;
60class MachineLoopInfo;
61class MachineModuleInfo;
62class MachineOptimizationRemarkEmitter;
63class MCAsmInfo;
64class MCCFIInstruction;
65class MCContext;
66class MCExpr;
67class MCInst;
68class MCSection;
69class MCStreamer;
70class MCSubtargetInfo;
72class MCTargetOptions;
73class MDNode;
75class PseudoProbeHandler;
76class raw_ostream;
77class StringRef;
78class TargetLoweringObjectFile;
79class TargetMachine;
80class Twine;
81
82namespace remarks {
84}
85
86
88public:
89
91
92
94
95
96
98
99
100
101
103
104
106
107
109
110
112
113
115
116
118
119
121
122
123
125
126
127
129
130
131
132
134
135
136
139 };
140
142
143
144
147
148
150 None = 0,
151 EH = 1,
152 Debug = 2
153 };
154
155private:
156 MCSymbol *CurrentFnEnd = nullptr;
157
158
159
160
162
163
164
165 MCSymbol *CurrentSectionBeginSym = nullptr;
166
167
168
169 std::unique_ptr AddrLabelSymbols;
170
171
173
174
175 bool VerboseAsm;
176
177
178 std::unique_ptr<raw_fd_ostream> StackUsageStream;
179
180
182
183 static char ID;
184
185protected:
187
188
190
191
192
193
195
196
197
198
201
203
204private:
205
206 std::unique_ptr OwnedMDT;
207
208
209 std::unique_ptr OwnedMLI;
210
211
213
214
215
216 std::unique_ptr PP;
217
218
220
221
222
223
224 bool HasSplitStack = false;
225
226
227
228
229 bool HasNoSplitStack = false;
230
231
232 bool DbgInfoAvailable = false;
233
234protected:
236
237public:
239
242
245
247
248
250
251
253
254
256
258
259
260 bool isVerbose() const { return VerboseAsm; }
261
262
264
265
266
268
271
272
273
275
276
277
278
281 }
282
283
284
285
287
288
289
290
291
293 std::vector<MCSymbol *> &Result);
294
295
297
298
300
301
303
304
306
308
309
311
312
314
317
319
320
321
322
324
326 return DwarfUsesRelocationsAcrossSections;
327 }
328
330 DwarfUsesRelocationsAcrossSections = Enable;
331 }
332
333
334
335
336public:
337
345 };
346
347
348
349
350
358
360 };
361
362
364
365
368
369
371
373
374
375
376
377
378
380
381
382
384
385
386
388
389
393 return false;
394 }
395
396
397
398
399
400
401
403
404
406
408
410
412
414
416
419
421
423
424
426
427
429
430
432
433
435
436
438
439
441
443
444
445
446
447
449
450
451
452
454
455
456
458
459
461
462
463
465
466
467
468
469
470
471
476
478 };
479
480
481
482
483
484
487
488
490 bool IsCtor);
491
492
493
494
495
497 unsigned MaxBytesToEmit = 0) const;
498
499
501
502
503
504
508
509
510
511
512
513
514
515
516
518
519
520
521
523
524
526
527
528
529
530
532
533
534
535
536
537
539
540
541
543
544
545
547
548
549
551
552
553
554
555
557
558
560
561
564 }
565
566
568
570
573 }
574
576
577
578
581 }
582
585 }
586
587
589
590
591
592
593 virtual bool
595
596
597
599
600
601
602
603
605 return nullptr;
606 }
607
611 "Mach-O IFunc lowering is not yet supported on this target");
612 }
613
617 "Mach-O IFunc lowering is not yet supported on this target");
618 }
619
620
622
623
624
625
626
628
629
630
633
634
636
637
639
640
641
643
644
645
648
649
650
651
652
653
655
656
658
659
661
662
664
665
667
668
670
671
673 unsigned PadTo = 0) const;
674
675
676
677
679 unsigned Size) const;
680
681
684
685
686
687
689 unsigned Size, bool IsSectionRelative = false) const;
690
691
692
694 bool IsSectionRelative = false) const {
696 }
697
698
699
700
701
702
703
704
706
707
709
710
712
713
714
715
717 bool ForceOffset = false) const;
718
719
720
721
722
723
724
725
727
728
731 }
732
733
734
736
737
739
740
741
743
744
745
746
748 const Twine &Comment) const;
749
750
752 unsigned Encoding) const;
753
755
756
758
759
760
761
762
764
765
766
767
768
769
771
772
774
775 for (const auto &Abbrev : Abbrevs)
777
778
780 }
781
783
784
786
787
788
789
790
791
792
793
797 const MCSymbol *BranchLabel) const;
798
799
800
801
802
803
804
805
806
807
808
809
810
811
814
815
816
818
819
820
821
824
825
826
827
828
831
832
833
835
836
837
838
839
840
841
844
845
846
848 bool IsDefinition = true) const;
849
850
851
853
854
857
858private:
859
860
861 mutable const MachineInstr *LastMI = nullptr;
862 mutable unsigned LastFn = 0;
863 mutable unsigned Counter = ~0U;
864
865 bool DwarfUsesRelocationsAcrossSections = false;
866
867
868 virtual void emitFunctionHeader();
869
870
871 virtual void emitFunctionHeaderComment();
872
873
875
876
877 void
880 const MDNode *LocMDNode = nullptr,
882
883
884
886
887
888
889 unsigned addInlineAsmDiagBuffer(StringRef AsmStr,
890 const MDNode *LocMDNode) const;
891
892
893
894
895
898
901
902 void emitLLVMUsedList(const ConstantArray *InitList);
903
904 void emitModuleIdents(Module &M);
905
906 virtual void emitModuleCommandLines(Module &M);
907
910
911private:
912
914
915protected:
918 return false;
919 }
920};
921
922}
923
924#endif
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
This file defines the DenseMap class.
This file contains constants used for implementing Dwarf debug support.
Machine Check Debug Module
This file implements a map that provides insertion order iteration.
This file defines the SmallVector class.
Represent the analysis usage information of a pass.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
This class is intended to be used as a driving class for all asm writers.
virtual void emitInlineAsmEnd(const MCSubtargetInfo &StartInfo, const MCSubtargetInfo *EndInfo) const
Let the target do anything it needs to do after emitting inlineasm.
virtual void emitInstruction(const MachineInstr *)
Targets should implement this to emit instructions.
const TargetLoweringObjectFile & getObjFileLowering() const
Return information about object file lowering.
MCSymbol * getSymbolWithGlobalValueBase(const GlobalValue *GV, StringRef Suffix) const
Return the MCSymbol for a private symbol with global value name as its base, with the specified suffi...
MCSymbol * getSymbol(const GlobalValue *GV) const
void emitULEB128(uint64_t Value, const char *Desc=nullptr, unsigned PadTo=0) const
Emit the specified unsigned leb128 value.
SmallVector< XRayFunctionEntry, 4 > Sleds
void emitDwarfSymbolReference(const MCSymbol *Label, bool ForceOffset=false) const
Emit a reference to a symbol for use in dwarf.
MapVector< MBBSectionID, MBBSectionRange > MBBSectionRanges
CFISection getModuleCFISectionType() const
Get the CFISection type for the module.
void emitNops(unsigned N)
Emit N NOP instructions.
MCSymbol * CurrentFnBegin
unsigned GetSizeOfEncodedValue(unsigned Encoding) const
Return the size of the encoding in bytes.
MachineLoopInfo * MLI
This is a pointer to the current MachineLoopInfo.
virtual void emitDebugValue(const MCExpr *Value, unsigned Size) const
Emit the directive and value for debug thread local expression.
void EmitToStreamer(MCStreamer &S, const MCInst &Inst)
virtual void emitConstantPool()
Print to the current output stream assembly representations of the constants in the constant pool MCP...
void emitDwarfDIE(const DIE &Die) const
Recursively emit Dwarf DIE tree.
DwarfDebug * getDwarfDebug()
virtual void emitGlobalVariable(const GlobalVariable *GV)
Emit the specified global variable to the .s file.
virtual const MCExpr * lowerConstantPtrAuth(const ConstantPtrAuth &CPA)
void emitDwarfLengthOrOffset(uint64_t Value) const
Emit 32- or 64-bit value depending on the DWARF format.
unsigned int getUnitLengthFieldByteSize() const
Returns 4 for DWARF32 and 12 for DWARF64.
void emitLabelPlusOffset(const MCSymbol *Label, uint64_t Offset, unsigned Size, bool IsSectionRelative=false) const
Emit something like ".long Label+Offset" where the size in bytes of the directive is specified by Siz...
TargetMachine & TM
Target machine description.
void emitXRayTable()
Emit a table with all XRay instrumentation points.
virtual void emitGlobalAlias(const Module &M, const GlobalAlias &GA)
virtual void emitBasicBlockEnd(const MachineBasicBlock &MBB)
Targets can override this to emit stuff at the end of a basic block.
DwarfDebug * getDwarfDebug() const
MCSymbol * CurrentFnDescSym
The symbol for the current function descriptor on AIX.
MCSymbol * CurrentFnBeginLocal
For dso_local functions, the current $local alias for the function.
MapVector< const MCSymbol *, GOTEquivUsePair > GlobalGOTEquivs
void emitDwarfStringOffset(DwarfStringPoolEntry S) const
Emit the 4- or 8-byte offset of a string from the start of its section.
virtual MCSymbol * GetCPISymbol(unsigned CPID) const
Return the symbol for the specified constant pool entry.
void emitGlobalGOTEquivs()
Constant expressions using GOT equivalent globals may not be eligible for PC relative GOT entry conve...
virtual void PrintSymbolOperand(const MachineOperand &MO, raw_ostream &OS)
Print the MachineOperand as a symbol.
MCSymbol * getFunctionBegin() const
void emitLabelDifference(const MCSymbol *Hi, const MCSymbol *Lo, unsigned Size) const
Emit something like ".long Hi-Lo" where the size in bytes of the directive is specified by Size and H...
void emitKCFITrapEntry(const MachineFunction &MF, const MCSymbol *Symbol)
virtual void emitMachOIFuncStubHelperBody(Module &M, const GlobalIFunc &GI, MCSymbol *LazyPointer)
MCSymbol * getMBBExceptionSym(const MachineBasicBlock &MBB)
MCSymbol * getAddrLabelSymbol(const BasicBlock *BB)
Return the symbol to be used for the specified basic block when its address is taken.
virtual void emitTTypeReference(const GlobalValue *GV, unsigned Encoding)
Emit reference to a ttype global with a specified encoding.
const MCAsmInfo * MAI
Target Asm Printer information.
SmallVector< std::unique_ptr< AsmPrinterHandler >, 2 > Handlers
bool emitSpecialLLVMGlobal(const GlobalVariable *GV)
Check to see if the specified global is a special global used by LLVM.
MachineFunction * MF
The current machine function.
void emitDwarfOffset(const MCSymbol *Label, uint64_t Offset) const
Emit something like ".long Label + Offset" or ".quad Label + Offset" depending on the DWARF format.
virtual void PrintSpecial(const MachineInstr *MI, raw_ostream &OS, StringRef Code) const
Print information related to the specified machine instr that is independent of the operand,...
virtual void emitJumpTableInfo()
Print assembly representations of the jump tables used by the current function to the current output ...
void computeGlobalGOTEquivs(Module &M)
Unnamed constant global variables solely contaning a pointer to another globals variable act like a g...
static Align getGVAlignment(const GlobalObject *GV, const DataLayout &DL, Align InAlign=Align(1))
Return the alignment for the specified GV.
void emitInt8(int Value) const
Emit a byte directive and value.
CFISection getFunctionCFISectionType(const Function &F) const
Get the CFISection type for a function.
virtual void SetupMachineFunction(MachineFunction &MF)
This should be called when a new MachineFunction is being processed from runOnMachineFunction.
void emitFunctionBody()
This method emits the body and trailer for a function.
virtual bool isBlockOnlyReachableByFallthrough(const MachineBasicBlock *MBB) const
Return true if the basic block has exactly one predecessor and the control transfer mechanism between...
void emitBBAddrMapSection(const MachineFunction &MF)
void emitPCSections(const MachineFunction &MF)
Emits the PC sections collected from instructions.
MachineDominatorTree * MDT
This is a pointer to the current MachineDominatorTree.
virtual void emitStartOfAsmFile(Module &)
This virtual method can be overridden by targets that want to emit something at the start of their fi...
MCSymbol * GetJTISymbol(unsigned JTID, bool isLinkerPrivate=false) const
Return the symbol for the specified jump table entry.
virtual void emitMachineConstantPoolValue(MachineConstantPoolValue *MCPV)
void emitStackMaps()
Emit the stack maps.
bool hasDebugInfo() const
Returns true if valid debug info is present.
void emitDwarfUnitLength(uint64_t Length, const Twine &Comment) const
Emit a unit length field.
virtual void emitFunctionBodyStart()
Targets can override this to emit stuff before the first basic block in the function.
std::pair< const GlobalVariable *, unsigned > GOTEquivUsePair
Map global GOT equivalent MCSymbols to GlobalVariables and keep track of its number of uses by other ...
void emitPatchableFunctionEntries()
void recordSled(MCSymbol *Sled, const MachineInstr &MI, SledKind Kind, uint8_t Version=0)
virtual void emitEndOfAsmFile(Module &)
This virtual method can be overridden by targets that want to emit something at the end of their file...
bool doInitialization(Module &M) override
Set up the AsmPrinter when we are working on a new module.
MCSymbol * GetJTSetSymbol(unsigned UID, unsigned MBBID) const
Return the symbol for the specified jump table .set FIXME: privatize to AsmPrinter.
virtual void emitMachOIFuncStubBody(Module &M, const GlobalIFunc &GI, MCSymbol *LazyPointer)
void emitEncodingByte(unsigned Val, const char *Desc=nullptr) const
Emit a .byte 42 directive that corresponds to an encoding.
virtual void emitImplicitDef(const MachineInstr *MI) const
Targets can override this to customize the output of IMPLICIT_DEF instructions in verbose mode.
virtual void emitLinkage(const GlobalValue *GV, MCSymbol *GVSym) const
This emits linkage information about GVSym based on GV, if this is supported by the target.
void getAnalysisUsage(AnalysisUsage &AU) const override
Record analysis usage.
unsigned getFunctionNumber() const
Return a unique ID for the current function.
MachineOptimizationRemarkEmitter * ORE
Optimization remark emitter.
virtual bool shouldEmitWeakSwiftAsyncExtendedFramePointerFlags() const
void printOffset(int64_t Offset, raw_ostream &OS) const
This is just convenient handler for printing offsets.
void emitGlobalConstant(const DataLayout &DL, const Constant *CV, AliasMapTy *AliasList=nullptr)
EmitGlobalConstant - Print a general LLVM constant to the .s file.
virtual const MCSymbol * getFunctionFrameSymbol() const
Return symbol for the function pseudo stack if the stack frame is not a register based.
void emitFrameAlloc(const MachineInstr &MI)
void emitDwarfStringOffset(DwarfStringPoolEntryRef S) const
Emit the 4-or 8-byte offset of a string from the start of its section.
void emitStackSizeSection(const MachineFunction &MF)
MCSymbol * getSymbolPreferLocal(const GlobalValue &GV) const
Similar to getSymbol() but preferred for references.
MCSymbol * CurrentFnSym
The symbol for the current function.
MachineModuleInfo * MMI
This is a pointer to the current MachineModuleInfo.
void emitDwarfAbbrevs(const T &Abbrevs) const
Emit Dwarf abbreviation table.
void emitSLEB128(int64_t Value, const char *Desc=nullptr) const
Emit the specified signed leb128 value.
void emitAlignment(Align Alignment, const GlobalObject *GV=nullptr, unsigned MaxBytesToEmit=0) const
Emit an alignment directive to the specified power of two boundary.
MCContext & OutContext
This is the context for the output file that we are streaming.
void emitCFIInstruction(const MachineInstr &MI)
MCSymbol * createTempSymbol(const Twine &Name) const
bool doFinalization(Module &M) override
Shut down the asmprinter.
MCSymbol * GetExternalSymbolSymbol(Twine Sym) const
Return the MCSymbol for the specified ExternalSymbol.
virtual const MCSubtargetInfo * getIFuncMCSubtargetInfo() const
getSubtargetInfo() cannot be used where this is needed because we don't have a MachineFunction when w...
void emitStackUsage(const MachineFunction &MF)
virtual void emitKCFITypeId(const MachineFunction &MF)
bool isPositionIndependent() const
virtual void emitXXStructorList(const DataLayout &DL, const Constant *List, bool IsCtor)
This method emits llvm.global_ctors or llvm.global_dtors list.
void emitPCSectionsLabel(const MachineFunction &MF, const MDNode &MD)
Emits a label as reference for PC sections.
void emitCallSiteOffset(const MCSymbol *Hi, const MCSymbol *Lo, unsigned Encoding) const
Emit reference to a call site with a specified encoding.
MCSymbol * CurrentPatchableFunctionEntrySym
The symbol for the entry in __patchable_function_entires.
virtual void emitBasicBlockStart(const MachineBasicBlock &MBB)
Targets can override this to emit stuff at the start of a basic block.
void takeDeletedSymbolsForFunction(const Function *F, std::vector< MCSymbol * > &Result)
If the specified function has had any references to address-taken blocks generated,...
void emitVisibility(MCSymbol *Sym, unsigned Visibility, bool IsDefinition=true) const
This emits visibility information about symbol, if this is supported by the target.
bool runOnMachineFunction(MachineFunction &MF) override
Emit the specified function out to the OutStreamer.
void emitDwarfAbbrev(const DIEAbbrev &Abbrev) const
void setDwarfUsesRelocationsAcrossSections(bool Enable)
void emitInt32(int Value) const
Emit a long directive and value.
std::unique_ptr< MCStreamer > OutStreamer
This is the MCStreamer object for the file we are generating.
virtual const MCExpr * lowerConstant(const Constant *CV)
Lower the specified LLVM Constant to an MCExpr.
void emitLabelReference(const MCSymbol *Label, unsigned Size, bool IsSectionRelative=false) const
Emit something like ".long Label" where the size in bytes of the directive is specified by Size and L...
virtual void emitFunctionDescriptor()
const MCSection * getCurrentSection() const
Return the current section we are emitting to.
unsigned int getDwarfOffsetByteSize() const
Returns 4 for DWARF32 and 8 for DWARF64.
virtual bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo, const char *ExtraCode, raw_ostream &OS)
Print the specified operand of MI, an INLINEASM instruction, using the specified assembler variant as...
MCSymbol * CurrentFnSymForSize
The symbol used to represent the start of the current function for the purpose of calculating its siz...
virtual unsigned getISAEncoding()
Get the value for DW_AT_APPLE_isa. Zero if no isa encoding specified.
bool isVerbose() const
Return true if assembly output should contain comments.
MCSymbol * getFunctionEnd() const
virtual void emitXXStructor(const DataLayout &DL, const Constant *CV)
Targets can override this to change how global constants that are part of a C++ static/global constru...
void preprocessXXStructorList(const DataLayout &DL, const Constant *List, SmallVector< Structor, 8 > &Structors)
This method gathers an array of Structors and then sorts them out by Priority.
void emitInt16(int Value) const
Emit a short directive and value.
void setDwarfVersion(uint16_t Version)
void getNameWithPrefix(SmallVectorImpl< char > &Name, const GlobalValue *GV) const
SmallVector< std::unique_ptr< AsmPrinterHandler >, 1 > EHHandlers
A handle to the EH info emitter (if present).
void emitPseudoProbe(const MachineInstr &MI)
unsigned getPointerSize() const
Return the pointer size from the TargetMachine.
void emitRemarksSection(remarks::RemarkStreamer &RS)
MCSymbol * GetBlockAddressSymbol(const BlockAddress *BA) const
Return the MCSymbol used to satisfy BlockAddress uses of the specified basic block.
ArrayRef< MCSymbol * > getAddrLabelSymbolToEmit(const BasicBlock *BB)
Return the symbol to be used for the specified basic block when its address is taken.
virtual void emitFunctionBodyEnd()
Targets can override this to emit stuff after the last basic block in the function.
const DataLayout & getDataLayout() const
Return information about data layout.
virtual void emitFunctionEntryLabel()
EmitFunctionEntryLabel - Emit the label that is the entrypoint for the function.
void emitInitialRawDwarfLocDirective(const MachineFunction &MF)
Emits inital debug location directive.
void emitInt64(uint64_t Value) const
Emit a long long directive and value.
uint16_t getDwarfVersion() const
dwarf::FormParams getDwarfFormParams() const
Returns information about the byte size of DW_FORM values.
const MCSubtargetInfo & getSubtargetInfo() const
Return information about subtarget.
bool usesCFIWithoutEH() const
Since emitting CFI unwind information is entangled with supporting the exceptions,...
bool doesDwarfUseRelocationsAcrossSections() const
virtual void emitInlineAsmStart() const
Let the target do anything it needs to do before emitting inlineasm.
@ None
Do not emit either .eh_frame or .debug_frame.
@ Debug
Emit .debug_frame.
void addAsmPrinterHandler(std::unique_ptr< AsmPrinterHandler > Handler)
virtual std::tuple< const MCSymbol *, uint64_t, const MCSymbol *, codeview::JumpTableEntrySize > getCodeViewJumpTableInfo(int JTI, const MachineInstr *BranchInstr, const MCSymbol *BranchLabel) const
Gets information required to create a CodeView debug symbol for a jump table.
virtual bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, const char *ExtraCode, raw_ostream &OS)
Print the specified operand of MI, an INLINEASM instruction, using the specified assembler variant.
void emitCallSiteValue(uint64_t Value, unsigned Encoding) const
Emit an integer value corresponding to the call site encoding.
void emitLabelDifferenceAsULEB128(const MCSymbol *Hi, const MCSymbol *Lo) const
Emit something like ".uleb128 Hi-Lo".
virtual const MCExpr * lowerBlockAddressConstant(const BlockAddress &BA)
Lower the specified BlockAddress to an MCExpr.
LLVM Basic Block Representation.
The address of a basic block.
ConstantArray - Constant Array Declarations.
A signed pointer, in the ptrauth sense.
This is an important base class in LLVM.
Dwarf abbreviation, describes the organization of a debug information object.
A structured debug information entry.
A parsed version of the target data layout string in and methods for querying it.
Collects and handles dwarf debug information.
DwarfStringPoolEntryRef: Dwarf string pool entry reference.
const DwarfStringPoolEntry & getEntry() const
GCStrategy describes a garbage collector algorithm's code generation requirements,...
This class is intended to be used as a base class for asm properties and features specific to the tar...
Context object for machine code objects.
Base class for the full range of assembler expressions which are needed for parsing.
Instances of this class represent a single low-level machine instruction.
Instances of this class represent a uniqued identifier for a section in the current translation unit.
Streaming machine code generation interface.
Generic base class for all target subtargets.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
Abstract base class for all machine specific constantpool value subclasses.
DominatorTree Class - Concrete subclass of DominatorTreeBase that is used to compute a normal dominat...
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
Representation of each machine instruction.
This class contains meta information specific to a module.
MachineOperand class - Representation of each machine instruction operand.
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.
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.
Primary interface to the complete machine description for the target machine.
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
LLVM Value Representation.
This class implements an extremely fast bulk output stream that can only output to a stream.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
@ BasicBlock
Various leaf nodes.
This is an optimization pass for GlobalISel generic memory operations.
void report_fatal_error(Error Err, bool gen_crash_diag=true)
Report a serious error, calling any installed error handler.
This struct is a compact representation of a valid (non-zero power of two) alignment.
Map a basic block section ID to the begin and end symbols of that section which determine the section...
llvm.global_ctors and llvm.global_dtors are arrays of Structor structs.
const MCSymbol * Function
const class Function * Fn
void emit(int, MCStreamer *) const
Description of the encoding of one expression Op.
Data for a string pool entry.
A helper struct providing information about the byte size of DW_FORM values that vary in size dependi...