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