LLVM: lib/IR/LLVMContextImpl.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14#ifndef LLVM_LIB_IR_LLVMCONTEXTIMPL_H

15#define LLVM_LIB_IR_LLVMCONTEXTIMPL_H

16

43#include

44#include

45#include

46#include

47#include

48#include

49#include

50#include

51#include

52

53namespace llvm {

54

72}

77

83

87

89 return LHS.bitwiseIsEqual(RHS);

90 }

91};

92

97

99

102

105 return false;

107 return false;

108 return true;

109 }

111 };

112

116

120

124

128

134

138};

139

145

151

154 return false;

156 return false;

158 return false;

159 return true;

160 }

162 };

163

167

171

176

180

186

190};

191

210

214

218

223

227

233

237};

238

239

243 unsigned Hash;

244

245protected:

248

249 template

252

253 template

256 return false;

257

258 assert((RawOps.empty() || Ops.empty()) && "Two sets of operands?");

261 }

262

264

265private:

266 template

268 if (Ops.size() != RHS->getNumOperands() - Offset)

269 return false;

270 return std::equal(Ops.begin(), Ops.end(), RHS->op_begin() + Offset);

271 }

272

274

275public:

276 unsigned getHash() const { return Hash; }

277};

278

280

281

293

294

295

296

297

310

311

320

327

333

340

342

343

344

345

346

347

348

353 }

354};

355

356

377

383

391

393 auto BoundsEqual = [=](Metadata *Node1, Metadata *Node2) -> bool {

394 if (Node1 == Node2)

395 return true;

396

399 if (MD1 && MD2) {

403 return true;

404 }

405 return false;

406 };

407

408 return BoundsEqual(CountNode, RHS->getRawCountNode()) &&

409 BoundsEqual(LowerBound, RHS->getRawLowerBound()) &&

410 BoundsEqual(UpperBound, RHS->getRawUpperBound()) &&

411 BoundsEqual(Stride, RHS->getRawStride());

412 }

413

421};

422

452

457

466

468 return Value.getBitWidth() == RHS->getValue().getBitWidth() &&

470 Name == RHS->getRawName();

471 }

472

474};

475

485

499

501 return Tag == RHS->getTag() && Name == RHS->getRawName() &&

508 }

509

513};

514

552

562

576

578 return Tag == RHS->getTag() && Name == RHS->getRawName() &&

585 }

593};

594

595template <> struct MDNodeKeyImpl {

596 unsigned Tag;

597 MDString *Name;

599 unsigned Line;

605 std::optional DWARFAddressSpace;

606 std::optionalDIDerivedType::PtrAuthData PtrAuthData;

607 unsigned Flags;

610

611 MDNodeKeyImpl(unsigned Tag, MDString *Name, Metadata *File, unsigned Line,

614 std::optional DWARFAddressSpace,

615 std::optionalDIDerivedType::PtrAuthData PtrAuthData,

617 : Tag(Tag), Name(Name), File(File), Line(Line), Scope(Scope),

618 BaseType(BaseType), SizeInBits(SizeInBits), OffsetInBits(OffsetInBits),

619 AlignInBits(AlignInBits), DWARFAddressSpace(DWARFAddressSpace),

621 Annotations(Annotations) {}

622 MDNodeKeyImpl(const DIDerivedType *N)

624 Line(N->getLine()), Scope(N->getRawScope()),

625 BaseType(N->getRawBaseType()), SizeInBits(N->getRawSizeInBits()),

626 OffsetInBits(N->getRawOffsetInBits()), AlignInBits(N->getAlignInBits()),

627 DWARFAddressSpace(N->getDWARFAddressSpace()),

629 ExtraData(N->getRawExtraData()), Annotations(N->getRawAnnotations()) {}

630

631 bool isKeyOf(const DIDerivedType *RHS) const {

632 return Tag == RHS->getTag() && Name == RHS->getRawName() &&

633 File == RHS->getRawFile() && Line == RHS->getLine() &&

635 SizeInBits == RHS->getRawSizeInBits() &&

636 AlignInBits == RHS->getAlignInBits() &&

637 OffsetInBits == RHS->getRawOffsetInBits() &&

638 DWARFAddressSpace == RHS->getDWARFAddressSpace() &&

639 PtrAuthData == RHS->getPtrAuthData() && Flags == RHS->getFlags() &&

640 ExtraData == RHS->getRawExtraData() &&

641 Annotations == RHS->getRawAnnotations();

642 }

643

644 unsigned getHashValue() const {

645

646

647

648 if (Tag == dwarf::DW_TAG_member && Name)

650 if (CT->getRawIdentifier())

652

653

654

655

656

658 }

659};

660

674

684 : Name(N->getRawName()), File(N->getRawFile()), Line(N->getLine()),

689 Bias(N->getRawBias()) {}

690

692 auto BoundsEqual = [=](Metadata *Node1, Metadata *Node2) -> bool {

693 if (Node1 == Node2)

694 return true;

695

698 if (MD1 && MD2) {

702 return true;

703 }

704 return false;

705 };

706

707 return Name == RHS->getRawName() && File == RHS->getRawFile() &&

712 BoundsEqual(LowerBound, RHS->getRawLowerBound()) &&

713 BoundsEqual(UpperBound, RHS->getRawUpperBound()) &&

714 BoundsEqual(Stride, RHS->getRawStride()) &&

715 BoundsEqual(Bias, RHS->getRawBias());

716 }

717

719 unsigned val = 0;

720 auto HashBound = [&](Metadata *Node) -> void {

722 if (MD) {

725 } else {

727 }

728 };

729

733 HashBound(Bias);

734

736 }

737};

738

741

745

751

752

753

756

757 if (Tag != dwarf::DW_TAG_member || !Name)

758 return false;

759

761 if (!CT || !CT->getRawIdentifier())

762 return false;

763

764

765 return Tag == RHS->getTag() && Name == RHS->getRawName() &&

766 Scope == RHS->getRawScope();

767 }

768};

769

863

868

873

875 return Flags == RHS->getFlags() && CC == RHS->getCC() &&

877 }

878

880};

881

885 std::optional<DIFile::ChecksumInfo<MDString *>> Checksum;

887

896

902

907};

908

909template <> struct MDNodeKeyImpl {

911 MDString *Name;

914 unsigned Line;

915 unsigned ScopeLine;

918 unsigned VirtualIndex;

919 int ThisAdjustment;

920 unsigned Flags;

921 unsigned SPFlags;

928 MDString *TargetFuncName;

929 bool UsesKeyInstructions;

930

933 unsigned ScopeLine, Metadata *ContainingType,

934 unsigned VirtualIndex, int ThisAdjustment, unsigned Flags,

938 MDString *TargetFuncName, bool UsesKeyInstructions)

940 Line(Line), ScopeLine(ScopeLine), Type(Type),

941 ContainingType(ContainingType), VirtualIndex(VirtualIndex),

942 ThisAdjustment(ThisAdjustment), Flags(Flags), SPFlags(SPFlags),

943 Unit(Unit), TemplateParams(TemplateParams), Declaration(Declaration),

944 RetainedNodes(RetainedNodes), ThrownTypes(ThrownTypes),

945 Annotations(Annotations), TargetFuncName(TargetFuncName),

946 UsesKeyInstructions(UsesKeyInstructions) {}

947 MDNodeKeyImpl(const DISubprogram *N)

948 : Scope(N->getRawScope()), Name(N->getRawName()),

950 Line(N->getLine()), ScopeLine(N->getScopeLine()), Type(N->getRawType()),

951 ContainingType(N->getRawContainingType()),

952 VirtualIndex(N->getVirtualIndex()),

953 ThisAdjustment(N->getThisAdjustment()), Flags(N->getFlags()),

954 SPFlags(N->getSPFlags()), Unit(N->getRawUnit()),

955 TemplateParams(N->getRawTemplateParams()),

956 Declaration(N->getRawDeclaration()),

957 RetainedNodes(N->getRawRetainedNodes()),

958 ThrownTypes(N->getRawThrownTypes()),

959 Annotations(N->getRawAnnotations()),

960 TargetFuncName(N->getRawTargetFuncName()),

961 UsesKeyInstructions(N->getKeyInstructionsEnabled()) {}

962

963 bool isKeyOf(const DISubprogram *RHS) const {

964 return Scope == RHS->getRawScope() && Name == RHS->getRawName() &&

966 File == RHS->getRawFile() && Line == RHS->getLine() &&

967 Type == RHS->getRawType() && ScopeLine == RHS->getScopeLine() &&

968 ContainingType == RHS->getRawContainingType() &&

969 VirtualIndex == RHS->getVirtualIndex() &&

970 ThisAdjustment == RHS->getThisAdjustment() &&

971 Flags == RHS->getFlags() && SPFlags == RHS->getSPFlags() &&

972 Unit == RHS->getUnit() &&

973 TemplateParams == RHS->getRawTemplateParams() &&

974 Declaration == RHS->getRawDeclaration() &&

975 RetainedNodes == RHS->getRawRetainedNodes() &&

976 ThrownTypes == RHS->getRawThrownTypes() &&

977 Annotations == RHS->getRawAnnotations() &&

978 TargetFuncName == RHS->getRawTargetFuncName() &&

979 UsesKeyInstructions == RHS->getKeyInstructionsEnabled();

980 }

981

982 bool isDefinition() const { return SPFlags & DISubprogram::SPFlagDefinition; }

983

984 unsigned getHashValue() const {

985

986

987

988 llvm::StringRef ScopeLinkageName;

990 if (auto *ID = CT->getRawIdentifier())

991 ScopeLinkageName = ID->getString();

992

993

994

995

999

1000

1001

1002

1003

1004 return hash_combine(Name, ScopeLinkageName, File, Type, Line);

1005 }

1006};

1007

1010

1013 LHS.LinkageName, LHS.TemplateParams, RHS);

1014 }

1015

1018 LHS->getRawLinkageName(),

1019 LHS->getRawTemplateParams(), RHS);

1020 }

1021

1022

1023

1026 const Metadata *TemplateParams,

1028

1029 if (IsDefinition || !Scope || LinkageName)

1030 return false;

1031

1033 if (!CT || !CT->getRawIdentifier())

1034 return false;

1035

1036

1037

1038

1039

1040

1041

1042 return IsDefinition == RHS->isDefinition() && Scope == RHS->getRawScope() &&

1044 TemplateParams == RHS->getRawTemplateParams();

1045 }

1046};

1047

1053

1059

1061 return Scope == RHS->getRawScope() && File == RHS->getRawFile() &&

1063 }

1064

1068};

1069

1074

1080

1082 return Scope == RHS->getRawScope() && File == RHS->getRawFile() &&

1084 }

1085

1089};

1090

1095

1101

1103 return Scope == RHS->getRawScope() && Name == RHS->getRawName() &&

1105 }

1106

1108};

1109

1134

1144

1157

1159 return Scope == RHS->getRawScope() && Name == RHS->getRawName() &&

1165 }

1166

1170};

1171

1176

1180 : Name(N->getRawName()), Type(N->getRawType()),

1182

1184 return Name == RHS->getRawName() && Type == RHS->getRawType() &&

1186 }

1187

1189};

1190

1197

1204

1206 return Tag == RHS->getTag() && Name == RHS->getRawName() &&

1209 }

1210

1214};

1215

1229

1249

1251 return Scope == RHS->getRawScope() && Name == RHS->getRawName() &&

1253 File == RHS->getRawFile() && Line == RHS->getLine() &&

1257 RHS->getRawStaticDataMemberDeclaration() &&

1261 }

1262

1264

1265

1266

1267

1268

1269

1270

1274 }

1275};

1276

1287

1298

1306

1308

1309

1310

1311

1312

1313

1314

1316 }

1317};

1318

1327

1338

1345

1346

1351};

1352

1365

1369

1374

1376 return Variable == RHS->getRawVariable() &&

1378 }

1379

1381};

1382

1391

1401

1403 return Name == RHS->getRawName() && File == RHS->getRawFile() &&

1407 }

1408

1413};

1414

1444

1466

1489

1490

1491

1502

1503

1506

1510

1514

1516

1520

1523 return false;

1524 return LHS.isKeyOf(RHS);

1525 }

1526

1530};

1531

1532

1536

1540

1544

1546

1548 return KeyTy(N).getHashValue();

1549 }

1550

1553 return false;

1555 }

1556

1559 return true;

1561 return false;

1563 }

1564};

1565

1566#define HANDLE_MDNODE_LEAF(CLASS) using CLASS##Info = MDNodeInfo;

1567#include "llvm/IR/Metadata.def"

1568

1569

1571public:

1576

1577private:

1579

1580public:

1581 bool empty() const { return Attachments.empty(); }

1582 size_t size() const { return Attachments.size(); }

1583

1584

1585

1587

1588

1589

1590

1592

1593

1594

1595

1597

1598

1599

1600

1601

1603

1604

1606

1607

1608

1609

1610 bool erase(unsigned ID);

1611

1612

1613

1614

1615 template void remove_if(PredTy shouldRemove) {

1617 }

1618};

1619

1621public:

1622

1623

1625

1626

1627

1629

1630

1631

1632

1634

1638

1639

1640

1641

1642

1643

1644

1645

1646

1647

1648

1649

1650

1651

1652

1653

1654

1655

1657

1658

1659

1662

1663

1664 std::unique_ptr LLVMRS;

1665

1668

1670

1676

1680

1684

1689

1690#define HANDLE_MDNODE_LEAF_UNIQUABLE(CLASS) \

1691 DenseSet<CLASS *, CLASS##Info> CLASS##s;

1692#include "llvm/IR/Metadata.def"

1693

1694

1695 std::optional<DenseMap<const MDString *, DICompositeType *>> DITypeMap;

1696

1697

1698

1699

1700

1702

1703

1704

1705

1706

1707

1709

1711

1714

1717

1720

1722

1724

1726

1728

1730

1732

1734

1736

1738

1740

1742

1745

1746

1751

1753

1758

1760

1767

1770

1776

1777

1778

1779

1782

1783

1785

1786

1788

1789

1790

1791

1793

1794

1796

1797

1799

1802

1803

1804

1805

1807

1808

1809

1810

1811

1813

1817

1818

1819

1821

1822

1823

1824

1826

1827

1828

1829

1831

1832

1833

1835

1836

1837

1838

1839

1840

1842

1843

1844

1846

1849

1851

1852

1853

1855

1856

1857

1858

1859

1860

1862

1863

1864

1865

1866

1867

1868

1869

1870

1871

1872

1873

1874

1875

1876

1878

1879

1884

1888

1890

1893

1894

1895

1896

1897

1898

1899

1900

1901

1903};

1904

1905}

1906

1907#endif

static std::optional< unsigned > getTag(const TargetRegisterInfo *TRI, const MachineInstr &MI, const LoadInfo &LI)

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

This file defines the StringMap class.

This file declares a class to represent arbitrary precision floating point values and provide a varie...

This file implements a class to represent arbitrary precision integral constant values and operations...

This file defines the BumpPtrAllocator interface.

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

static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")

This file contains the declarations for the subclasses of Constant, which represent the different fla...

This file defines DenseMapInfo traits for DenseMap.

This file defines the DenseMap class.

This file defines the DenseSet and SmallDenseSet classes.

This file contains constants used for implementing Dwarf debug support.

This file defines a hash set that can be used to remove duplication of nodes in a graph.

Module.h This file contains the declarations for the Module class.

const AbstractManglingParser< Derived, Alloc >::OperatorInfo AbstractManglingParser< Derived, Alloc >::Ops[]

static StringRef getName(Value *V)

BaseType

A given derived pointer can have multiple base pointers through phi/selects.

This file defines the SmallPtrSet class.

This file defines the SmallVector class.

static uint32_t getFlags(const Symbol *Sym)

static const fltSemantics & Bogus()

A Pseudo fltsemantic used to construct APFloats that cannot conflict with anything real.

Class for arbitrary precision integers.

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

Class to represent array types.

This class represents a single, uniqued attribute.

This class represents a set of attributes that apply to the function, return type,...

This class represents a group of attributes that apply to one element: function, return type,...

LLVM Basic Block Representation.

This is the shared class of boolean and integer constants.

int64_t getSExtValue() const

Return the constant as a 64-bit integer value after it has been sign extended as appropriate for the ...

List of ValueAsMetadata, to be used as an argument to a dbg.value intrinsic.

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

A pair of DIGlobalVariable and DIExpression.

An imported module (C++ using directive or similar).

Represents a module in the programming language, for example, a Clang module, or a Fortran module.

String type, Fortran CHARACTER(n)

Subprogram description. Uses SubclassData1.

Type array for a subprogram.

Per-instruction record of debug-info.

Implements a dense probed hash-table based set.

FoldingSet - This template class is used to instantiate a specialized implementation of the folding s...

Class to represent function types.

Generic tagged DWARF-like metadata node.

Class to represent integer types.

DenseMap< const GlobalValue *, StringRef > GlobalValuePartitions

Collection of per-GlobalValue partitions used in this context.

Definition LLVMContextImpl.h:1798

Type MetadataTy

Definition LLVMContextImpl.h:1747

DenseMap< const GlobalValue *, GlobalValue::SanitizerMetadata > GlobalValueSanitizerMetadata

Definition LLVMContextImpl.h:1801

DenseMap< unsigned, std::unique_ptr< ConstantInt > > IntOneConstants

Definition LLVMContextImpl.h:1672

bool DiagnosticsHotnessRequested

Definition LLVMContextImpl.h:1637

void getSyncScopeNames(SmallVectorImpl< StringRef > &SSNs) const

getSyncScopeNames - Populates client supplied SmallVector with synchronization scope names registered...

DenseMap< unsigned, std::unique_ptr< ConstantInt > > IntZeroConstants

Definition LLVMContextImpl.h:1671

DenseMap< Metadata *, MetadataAsValue * > MetadataAsValues

Definition LLVMContextImpl.h:1687

ConstantUniqueMap< ConstantArray > ArrayConstantsTy

Definition LLVMContextImpl.h:1712

ConstantInt * TheTrueVal

Definition LLVMContextImpl.h:1743

std::string DefaultTargetCPU

Definition LLVMContextImpl.h:1891

IntegerType Int32Ty

Definition LLVMContextImpl.h:1750

DenseMap< APFloat, std::unique_ptr< ConstantFP > > FPConstants

Definition LLVMContextImpl.h:1677

SmallPtrSet< Module *, 4 > OwnedModules

OwnedModules - The set of modules instantiated in this context, and which will be automatically delet...

Definition LLVMContextImpl.h:1624

DenseMap< PointerType *, std::unique_ptr< ConstantPointerNull > > CPNConstants

Definition LLVMContextImpl.h:1721

DenseMap< Type *, std::unique_ptr< ConstantAggregateZero > > CAZConstants

Definition LLVMContextImpl.h:1710

StringMap< MDString, BumpPtrAllocator > MDStringCache

Definition LLVMContextImpl.h:1685

IntegerType Int16Ty

Definition LLVMContextImpl.h:1750

DenseSet< FunctionType *, FunctionTypeKeyInfo > FunctionTypeSet

Definition LLVMContextImpl.h:1761

ConstantInt * TheFalseVal

Definition LLVMContextImpl.h:1744

TargetExtTypeSet TargetExtTypes

Definition LLVMContextImpl.h:1769

DenseMap< DIAssignID *, SmallVector< Instruction *, 1 > > AssignmentIDToInstrs

Map DIAssignID -> Instructions with that attachment.

Definition LLVMContextImpl.h:1792

DenseMap< Type *, std::unique_ptr< PoisonValue > > PVConstants

Definition LLVMContextImpl.h:1727

Type LabelTy

Definition LLVMContextImpl.h:1747

DenseMap< APInt, std::unique_ptr< ConstantInt > > IntConstants

Definition LLVMContextImpl.h:1673

DenseMap< Value *, ValueHandleBase * > ValueHandlesTy

ValueHandles - This map keeps track of all of the value handles that are watching a Value*.

Definition LLVMContextImpl.h:1780

Type X86_AMXTy

Definition LLVMContextImpl.h:1749

IntegerType Int64Ty

Definition LLVMContextImpl.h:1750

Type HalfTy

Definition LLVMContextImpl.h:1747

std::vector< MDNode * > DistinctMDNodes

Definition LLVMContextImpl.h:1701

std::optional< uint32_t > DiagnosticsMisExpectTolerance

The percentage of difference between profiling branch weights and llvm.expect branch weights to toler...

Definition LLVMContextImpl.h:1660

FoldingSet< AttributeImpl > AttrsSet

Definition LLVMContextImpl.h:1681

StructTypeSet AnonStructTypes

Definition LLVMContextImpl.h:1764

std::unique_ptr< ConstantTokenNone > TheNoneToken

Definition LLVMContextImpl.h:1752

DenseMap< const Value *, ValueName * > ValueNames

Definition LLVMContextImpl.h:1669

SyncScope::ID getOrInsertSyncScopeID(StringRef SSN)

getOrInsertSyncScopeID - Maps synchronization scope name to synchronization scope ID.

void setOptPassGate(OptPassGate &)

Set the object which can disable optional passes and individual optimizations at compile time.

VectorConstantsTy VectorConstants

Definition LLVMContextImpl.h:1719

std::unique_ptr< LLVMRemarkStreamer > LLVMRS

The specialized remark streamer used by LLVM's OptimizationRemarkEmitter.

Definition LLVMContextImpl.h:1664

bool DiscardValueNames

Flag to indicate if Value (other than GlobalValue) retains their name or not.

Definition LLVMContextImpl.h:1845

DenseMap< const GlobalValue *, NoCFIValue * > NoCFIValues

Definition LLVMContextImpl.h:1735

DenseMap< const Function *, std::string > GCNames

Maintain the GC name for each function.

Definition LLVMContextImpl.h:1841

DenseMap< const BasicBlock *, BlockAddress * > BlockAddresses

Definition LLVMContextImpl.h:1731

bool RespectDiagnosticFilters

Definition LLVMContextImpl.h:1636

DenseMap< Type *, std::unique_ptr< UndefValue > > UVConstants

Definition LLVMContextImpl.h:1725

OptPassGate & getOptPassGate() const

Access the object which can disable optional passes and individual optimizations at compile time.

DenseMap< std::pair< Type *, unsigned >, TypedPointerType * > ASTypedPointerTypes

Definition LLVMContextImpl.h:1775

DenseMap< std::pair< Type *, uint64_t >, ArrayType * > ArrayTypes

Definition LLVMContextImpl.h:1771

std::string DefaultTargetFeatures

Definition LLVMContextImpl.h:1892

DenseMap< const Value *, MDAttachments > ValueMetadata

Collection of metadata used in this context.

Definition LLVMContextImpl.h:1787

DenseMap< Module *, unsigned > MachineFunctionNums

MachineFunctionNums - Keep the next available unique number available for a MachineFunction in given ...

Definition LLVMContextImpl.h:1628

StringMap< unsigned > CustomMDKindNames

CustomMDKindNames - Map to hold the metadata string to ID mapping.

Definition LLVMContextImpl.h:1784

ConstantUniqueMap< ConstantStruct > StructConstantsTy

Definition LLVMContextImpl.h:1715

StringMapEntry< uint32_t > * getOrInsertBundleTag(StringRef Tag)

std::unique_ptr< DiagnosticHandler > DiagHandler

Definition LLVMContextImpl.h:1635

StringMap< uint32_t > BundleTagCache

A set of interned tags for operand bundles.

Definition LLVMContextImpl.h:1812

DbgMarker * getTrailingDbgRecords(BasicBlock *B)

Definition LLVMContextImpl.h:1885

BumpPtrAllocator Alloc

Definition LLVMContextImpl.h:1754

DenseMap< const GlobalObject *, StringRef > GlobalObjectSections

Collection of per-GlobalObject sections used in this context.

Definition LLVMContextImpl.h:1795

StringMap< std::unique_ptr< ConstantDataSequential > > CDSConstants

Definition LLVMContextImpl.h:1729

StructConstantsTy StructConstants

Definition LLVMContextImpl.h:1716

DenseMap< std::pair< Type *, ElementCount >, VectorType * > VectorTypes

Definition LLVMContextImpl.h:1772

std::unique_ptr< remarks::RemarkStreamer > MainRemarkStreamer

The main remark streamer used by all the other streamers (e.g.

Definition LLVMContextImpl.h:1633

void getOperandBundleTags(SmallVectorImpl< StringRef > &Tags) const

DenseSet< TargetExtType *, TargetExtTypeKeyInfo > TargetExtTypeSet

Definition LLVMContextImpl.h:1768

void deleteTrailingDbgRecords(BasicBlock *B)

Definition LLVMContextImpl.h:1889

FoldingSet< AttributeSetNode > AttrsSetNodes

Definition LLVMContextImpl.h:1683

IntegerType Int1Ty

Definition LLVMContextImpl.h:1750

IntegerType Int8Ty

Definition LLVMContextImpl.h:1750

FoldingSet< AttributeListImpl > AttrsLists

Definition LLVMContextImpl.h:1682

OptPassGate * OPG

Definition LLVMContextImpl.h:1850

ConstantUniqueMap< ConstantPtrAuth > ConstantPtrAuths

Definition LLVMContextImpl.h:1737

Type BFloatTy

Definition LLVMContextImpl.h:1747

DenseMap< TargetExtType *, std::unique_ptr< ConstantTargetNone > > CTNConstants

Definition LLVMContextImpl.h:1723

SpecificBumpPtrAllocator< ConstantRangeAttributeImpl > ConstantRangeAttributeAlloc

Definition LLVMContextImpl.h:1757

Type DoubleTy

Definition LLVMContextImpl.h:1747

std::optional< uint64_t > DiagnosticsHotnessThreshold

The minimum hotness value a diagnostic needs in order to be included in optimization diagnostics.

Definition LLVMContextImpl.h:1656

ConstantUniqueMap< ConstantVector > VectorConstantsTy

Definition LLVMContextImpl.h:1718

ConstantUniqueMap< ConstantExpr > ExprConstants

Definition LLVMContextImpl.h:1739

uint32_t getOperandBundleTagID(StringRef Tag) const

StringMap< SyncScope::ID > SSC

A set of interned synchronization scopes.

Definition LLVMContextImpl.h:1820

DenseMap< unsigned, PointerType * > PointerTypes

Definition LLVMContextImpl.h:1774

void setTrailingDbgRecords(BasicBlock *B, DbgMarker *M)

Definition LLVMContextImpl.h:1880

DenseSet< StructType *, AnonStructTypeKeyInfo > StructTypeSet

Definition LLVMContextImpl.h:1763

DenseMap< std::pair< ElementCount, APInt >, std::unique_ptr< ConstantInt > > IntSplatConstants

Definition LLVMContextImpl.h:1675

UniqueStringSaver Saver

Definition LLVMContextImpl.h:1755

Type X86_FP80Ty

Definition LLVMContextImpl.h:1749

LLVMContext::YieldCallbackTy YieldCallback

Definition LLVMContextImpl.h:1666

DenseMap< unsigned, IntegerType * > IntegerTypes

Definition LLVMContextImpl.h:1759

StringMap< StructType * > NamedStructTypes

Definition LLVMContextImpl.h:1765

std::vector< ConstantRangeListAttributeImpl * > ConstantRangeListAttributes

Definition LLVMContextImpl.h:1708

IntegerType Int128Ty

Definition LLVMContextImpl.h:1750

PointerType * AS0PointerType

Definition LLVMContextImpl.h:1773

DenseSet< DIArgList *, DIArgListInfo > DIArgLists

Definition LLVMContextImpl.h:1688

ValueHandlesTy ValueHandles

Definition LLVMContextImpl.h:1781

std::optional< StringRef > getSyncScopeName(SyncScope::ID Id) const

getSyncScopeName - Returns the name of a SyncScope::ID registered with LLVMContext,...

ArrayConstantsTy ArrayConstants

Definition LLVMContextImpl.h:1713

DenseMap< Value *, ValueAsMetadata * > ValuesAsMetadata

Definition LLVMContextImpl.h:1686

bool MisExpectWarningRequested

Definition LLVMContextImpl.h:1661

Type FloatTy

Definition LLVMContextImpl.h:1747

ConstantUniqueMap< InlineAsm > InlineAsms

Definition LLVMContextImpl.h:1741

DenseMap< std::pair< const char *, unsigned >, unsigned > DiscriminatorTable

DiscriminatorTable - This table maps file:line locations to an integer representing the next DWARF pa...

Definition LLVMContextImpl.h:1806

uint64_t NextAtomGroup

The next available source atom group number.

Definition LLVMContextImpl.h:1902

LLVMContextImpl(LLVMContext &C)

void * YieldOpaqueHandle

Definition LLVMContextImpl.h:1667

DenseMap< const GlobalValue *, DSOLocalEquivalent * > DSOLocalEquivalents

Definition LLVMContextImpl.h:1733

Type TokenTy

Definition LLVMContextImpl.h:1748

unsigned NamedStructTypesUniqueID

Definition LLVMContextImpl.h:1766

SmallDenseMap< BasicBlock *, DbgMarker * > TrailingDbgRecords

Mapping of blocks to collections of "trailing" DbgVariableRecords.

Definition LLVMContextImpl.h:1877

Type VoidTy

Definition LLVMContextImpl.h:1747

Type FP128Ty

Definition LLVMContextImpl.h:1749

FunctionTypeSet FunctionTypes

Definition LLVMContextImpl.h:1762

std::optional< DenseMap< const MDString *, DICompositeType * > > DITypeMap

Definition LLVMContextImpl.h:1695

Type PPC_FP128Ty

Definition LLVMContextImpl.h:1749

DenseMap< std::pair< ElementCount, APFloat >, std::unique_ptr< ConstantFP > > FPSplatConstants

Definition LLVMContextImpl.h:1679

This is an important class for using LLVM in a threaded context.

void(*)(LLVMContext *Context, void *OpaqueHandle) YieldCallbackTy

Defines the type of a yield callback.

Multimap-like storage for metadata attachments.

Definition LLVMContextImpl.h:1570

void insert(unsigned ID, MDNode &MD)

Adds an attachment to a particular node.

void remove_if(PredTy shouldRemove)

Erase matching attachments.

Definition LLVMContextImpl.h:1615

size_t size() const

Definition LLVMContextImpl.h:1582

void get(unsigned ID, SmallVectorImpl< MDNode * > &Result) const

Appends all attachments with the given ID to Result in insertion order.

void getAll(SmallVectorImpl< std::pair< unsigned, MDNode * > > &Result) const

Appends all attachments for the global to Result, sorting by attachment ID.

void set(unsigned ID, MDNode *MD)

Set an attachment to a particular node.

bool empty() const

Definition LLVMContextImpl.h:1581

MDNode * lookup(unsigned ID) const

Returns the first attachment with the given ID or nullptr if no such attachment exists.

bool erase(unsigned ID)

Remove attachments with the given ID.

MDNodeOpsKey(const NodeTy *N, unsigned Offset=0)

Definition LLVMContextImpl.h:250

bool compareOps(const NodeTy *RHS, unsigned Offset=0) const

Definition LLVMContextImpl.h:254

unsigned getHash() const

Definition LLVMContextImpl.h:276

MDNodeOpsKey(ArrayRef< Metadata * > Ops)

Definition LLVMContextImpl.h:246

static unsigned calculateHash(MDNode *N, unsigned Offset=0)

Extensions to this class implement mechanisms to disable passes and individual optimizations at compi...

Class to represent pointers.

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

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.

A BumpPtrAllocator that allows only elements of a specific type to be allocated.

StringMapEntry - This is used to represent one value that is inserted into a StringMap.

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.

Class to represent struct types.

Class to represent target extensions types, which are generally unintrospectable from target-independ...

The instances of the Type class are immutable: once they are created, they are never changed.

A few GPU targets, such as DXIL and SPIR-V, have typed pointers.

Saves strings in the provided stable storage and returns a StringRef with a stable character pointer.

This is the common base class of value handles.

Base class of all SIMD vector types.

unsigned ID

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

@ C

The default llvm calling convention, compatible with C.

Scope

Defines the scope in which this symbol should be visible: Default – Visible in the public interface o...

This is an optimization pass for GlobalISel generic memory operations.

TypedTrackingMDRef< MDNode > TrackingMDNodeRef

hash_code hash_value(const FixedPointSemantics &Val)

decltype(auto) dyn_cast(const From &Val)

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

bool isa_and_nonnull(const Y &Val)

auto dyn_cast_or_null(const Y &Val)

LLVM_ATTRIBUTE_VISIBILITY_DEFAULT AnalysisKey InnerAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs... >::Key

ArrayRef(const T &OneElt) -> ArrayRef< T >

OutputIt move(R &&Range, OutputIt Out)

Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.

decltype(auto) cast(const From &Val)

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

void erase_if(Container &C, UnaryPredicate P)

Provide a container algorithm similar to C++ Library Fundamentals v2's erase_if which is equivalent t...

hash_code hash_combine(const Ts &...args)

Combine values into a single hash_code.

BumpPtrAllocatorImpl<> BumpPtrAllocator

The standard BumpPtrAllocator which just uses the default template parameters.

hash_code hash_combine_range(InputIteratorT first, InputIteratorT last)

Compute a hash_code for a sequence of values.

Implement std::hash so that hash_code can be used in STL containers.

Definition LLVMContextImpl.h:94

KeyTy(const ArrayRef< Type * > &E, bool P)

Definition LLVMContextImpl.h:98

KeyTy(const StructType *ST)

Definition LLVMContextImpl.h:100

bool operator==(const KeyTy &that) const

Definition LLVMContextImpl.h:103

ArrayRef< Type * > ETypes

Definition LLVMContextImpl.h:95

bool isPacked

Definition LLVMContextImpl.h:96

bool operator!=(const KeyTy &that) const

Definition LLVMContextImpl.h:110

Definition LLVMContextImpl.h:93

static StructType * getEmptyKey()

Definition LLVMContextImpl.h:113

static bool isEqual(const StructType *LHS, const StructType *RHS)

Definition LLVMContextImpl.h:135

static unsigned getHashValue(const StructType *ST)

Definition LLVMContextImpl.h:125

static unsigned getHashValue(const KeyTy &Key)

Definition LLVMContextImpl.h:121

static StructType * getTombstoneKey()

Definition LLVMContextImpl.h:117

static bool isEqual(const KeyTy &LHS, const StructType *RHS)

Definition LLVMContextImpl.h:129

DenseMapInfo for DIArgList.

Definition LLVMContextImpl.h:1504

static unsigned getHashValue(const KeyTy &Key)

Definition LLVMContextImpl.h:1515

static DIArgList * getEmptyKey()

Definition LLVMContextImpl.h:1507

static unsigned getHashValue(const DIArgList *N)

Definition LLVMContextImpl.h:1517

static bool isEqual(const DIArgList *LHS, const DIArgList *RHS)

Definition LLVMContextImpl.h:1527

DIArgListKeyInfo KeyTy

Definition LLVMContextImpl.h:1505

static DIArgList * getTombstoneKey()

Definition LLVMContextImpl.h:1511

static bool isEqual(const KeyTy &LHS, const DIArgList *RHS)

Definition LLVMContextImpl.h:1521

Definition LLVMContextImpl.h:1492

ArrayRef< ValueAsMetadata * > Args

Definition LLVMContextImpl.h:1493

DIArgListKeyInfo(const DIArgList *N)

Definition LLVMContextImpl.h:1496

DIArgListKeyInfo(ArrayRef< ValueAsMetadata * > Args)

Definition LLVMContextImpl.h:1495

unsigned getHashValue() const

Definition LLVMContextImpl.h:1500

bool isKeyOf(const DIArgList *RHS) const

Definition LLVMContextImpl.h:1498

A single checksum, represented by a Kind and a Value (a string).

static bool isEqual(const APFloat &LHS, const APFloat &RHS)

Definition LLVMContextImpl.h:88

static APFloat getTombstoneKey()

Definition LLVMContextImpl.h:80

static APFloat getEmptyKey()

Definition LLVMContextImpl.h:79

static unsigned getHashValue(const APFloat &Key)

Definition LLVMContextImpl.h:84

An information struct used to provide DenseMap with the various necessary components for a given valu...

This is the base class for diagnostic handling in LLVM.

Definition LLVMContextImpl.h:141

bool isVarArg

Definition LLVMContextImpl.h:144

ArrayRef< Type * > Params

Definition LLVMContextImpl.h:143

bool operator==(const KeyTy &that) const

Definition LLVMContextImpl.h:152

bool operator!=(const KeyTy &that) const

Definition LLVMContextImpl.h:161

const Type * ReturnType

Definition LLVMContextImpl.h:142

KeyTy(const Type *R, const ArrayRef< Type * > &P, bool V)

Definition LLVMContextImpl.h:146

KeyTy(const FunctionType *FT)

Definition LLVMContextImpl.h:148

Definition LLVMContextImpl.h:140

static unsigned getHashValue(const FunctionType *FT)

Definition LLVMContextImpl.h:177

static FunctionType * getTombstoneKey()

Definition LLVMContextImpl.h:168

static bool isEqual(const KeyTy &LHS, const FunctionType *RHS)

Definition LLVMContextImpl.h:181

static unsigned getHashValue(const KeyTy &Key)

Definition LLVMContextImpl.h:172

static bool isEqual(const FunctionType *LHS, const FunctionType *RHS)

Definition LLVMContextImpl.h:187

static FunctionType * getEmptyKey()

Definition LLVMContextImpl.h:164

Definition LLVMContextImpl.h:1572

unsigned MDKind

Definition LLVMContextImpl.h:1573

TrackingMDNodeRef Node

Definition LLVMContextImpl.h:1574

DenseMapInfo for MDNode subclasses.

Definition LLVMContextImpl.h:1533

static unsigned getHashValue(const KeyTy &Key)

Definition LLVMContextImpl.h:1545

static bool isEqual(const NodeTy *LHS, const NodeTy *RHS)

Definition LLVMContextImpl.h:1557

static bool isEqual(const KeyTy &LHS, const NodeTy *RHS)

Definition LLVMContextImpl.h:1551

static unsigned getHashValue(const NodeTy *N)

Definition LLVMContextImpl.h:1547

MDNodeSubsetEqualImpl< NodeTy > SubsetEqualTy

Definition LLVMContextImpl.h:1535

MDNodeKeyImpl< NodeTy > KeyTy

Definition LLVMContextImpl.h:1534

static NodeTy * getTombstoneKey()

Definition LLVMContextImpl.h:1541

static NodeTy * getEmptyKey()

Definition LLVMContextImpl.h:1537

MDString * Name

Definition LLVMContextImpl.h:478

bool isKeyOf(const DIBasicType *RHS) const

Definition LLVMContextImpl.h:500

unsigned Encoding

Definition LLVMContextImpl.h:481

uint32_t AlignInBits

Definition LLVMContextImpl.h:480

MDNodeKeyImpl(unsigned Tag, MDString *Name, Metadata *SizeInBits, uint32_t AlignInBits, unsigned Encoding, uint32_t NumExtraInhabitants, uint32_t DataSizeInBits, unsigned Flags)

Definition LLVMContextImpl.h:486

unsigned getHashValue() const

Definition LLVMContextImpl.h:510

unsigned Tag

Definition LLVMContextImpl.h:477

MDNodeKeyImpl(const DIBasicType *N)

Definition LLVMContextImpl.h:493

uint32_t DataSizeInBits

Definition LLVMContextImpl.h:483

Metadata * SizeInBits

Definition LLVMContextImpl.h:479

uint32_t NumExtraInhabitants

Definition LLVMContextImpl.h:482

unsigned Flags

Definition LLVMContextImpl.h:484

unsigned getHashValue() const

Definition LLVMContextImpl.h:1130

MDString * Name

Definition LLVMContextImpl.h:1113

bool isKeyOf(const DICommonBlock *RHS) const

Definition LLVMContextImpl.h:1124

unsigned LineNo

Definition LLVMContextImpl.h:1115

Metadata * Decl

Definition LLVMContextImpl.h:1112

Metadata * File

Definition LLVMContextImpl.h:1114

Metadata * Scope

Definition LLVMContextImpl.h:1111

MDNodeKeyImpl(const DICommonBlock *N)

Definition LLVMContextImpl.h:1120

MDNodeKeyImpl(Metadata *Scope, Metadata *Decl, MDString *Name, Metadata *File, unsigned LineNo)

Definition LLVMContextImpl.h:1117

unsigned RuntimeLang

Definition LLVMContextImpl.h:782

Metadata * BaseType

Definition LLVMContextImpl.h:776

MDString * Name

Definition LLVMContextImpl.h:772

uint32_t NumExtraInhabitants

Definition LLVMContextImpl.h:793

unsigned getHashValue() const

Definition LLVMContextImpl.h:854

Metadata * DataLocation

Definition LLVMContextImpl.h:787

Metadata * Annotations

Definition LLVMContextImpl.h:791

Metadata * TemplateParams

Definition LLVMContextImpl.h:784

uint32_t AlignInBits

Definition LLVMContextImpl.h:779

Metadata * OffsetInBits

Definition LLVMContextImpl.h:778

unsigned Line

Definition LLVMContextImpl.h:774

Metadata * SizeInBits

Definition LLVMContextImpl.h:777

MDNodeKeyImpl(unsigned Tag, MDString *Name, Metadata *File, unsigned Line, Metadata *Scope, Metadata *BaseType, Metadata *SizeInBits, uint32_t AlignInBits, Metadata *OffsetInBits, unsigned Flags, Metadata *Elements, unsigned RuntimeLang, Metadata *VTableHolder, Metadata *TemplateParams, MDString *Identifier, Metadata *Discriminator, Metadata *DataLocation, Metadata *Associated, Metadata *Allocated, Metadata *Rank, Metadata *Annotations, Metadata *Specification, uint32_t NumExtraInhabitants, Metadata *BitStride)

Definition LLVMContextImpl.h:796

MDString * Identifier

Definition LLVMContextImpl.h:785

Metadata * Scope

Definition LLVMContextImpl.h:775

Metadata * Allocated

Definition LLVMContextImpl.h:789

unsigned Tag

Definition LLVMContextImpl.h:771

Metadata * Associated

Definition LLVMContextImpl.h:788

Metadata * Rank

Definition LLVMContextImpl.h:790

Metadata * VTableHolder

Definition LLVMContextImpl.h:783

MDNodeKeyImpl(const DICompositeType *N)

Definition LLVMContextImpl.h:815

Metadata * File

Definition LLVMContextImpl.h:773

unsigned Flags

Definition LLVMContextImpl.h:780

Metadata * Specification

Definition LLVMContextImpl.h:792

bool isKeyOf(const DICompositeType *RHS) const

Definition LLVMContextImpl.h:832

Metadata * Discriminator

Definition LLVMContextImpl.h:786

Metadata * Elements

Definition LLVMContextImpl.h:781

Metadata * BitStride

Definition LLVMContextImpl.h:794

APInt Value

Definition LLVMContextImpl.h:454

MDNodeKeyImpl(APInt Value, bool IsUnsigned, MDString *Name)

Definition LLVMContextImpl.h:458

unsigned getHashValue() const

Definition LLVMContextImpl.h:473

MDNodeKeyImpl(int64_t Value, bool IsUnsigned, MDString *Name)

Definition LLVMContextImpl.h:460

MDString * Name

Definition LLVMContextImpl.h:455

bool IsUnsigned

Definition LLVMContextImpl.h:456

bool isKeyOf(const DIEnumerator *RHS) const

Definition LLVMContextImpl.h:467

MDNodeKeyImpl(const DIEnumerator *N)

Definition LLVMContextImpl.h:463

bool isKeyOf(const DIExpression *RHS) const

Definition LLVMContextImpl.h:1359

ArrayRef< uint64_t > Elements

Definition LLVMContextImpl.h:1354

MDNodeKeyImpl(const DIExpression *N)

Definition LLVMContextImpl.h:1357

MDNodeKeyImpl(ArrayRef< uint64_t > Elements)

Definition LLVMContextImpl.h:1356

unsigned getHashValue() const

Definition LLVMContextImpl.h:1363

MDString * Source

Definition LLVMContextImpl.h:886

MDString * Directory

Definition LLVMContextImpl.h:884

std::optional< DIFile::ChecksumInfo< MDString * > > Checksum

Definition LLVMContextImpl.h:885

MDString * Filename

Definition LLVMContextImpl.h:883

MDNodeKeyImpl(const DIFile *N)

Definition LLVMContextImpl.h:893

bool isKeyOf(const DIFile *RHS) const

Definition LLVMContextImpl.h:897

unsigned getHashValue() const

Definition LLVMContextImpl.h:903

MDNodeKeyImpl(MDString *Filename, MDString *Directory, std::optional< DIFile::ChecksumInfo< MDString * > > Checksum, MDString *Source)

Definition LLVMContextImpl.h:888

APInt Denominator

Definition LLVMContextImpl.h:525

unsigned Tag

Definition LLVMContextImpl.h:516

uint32_t AlignInBits

Definition LLVMContextImpl.h:519

MDNodeKeyImpl(unsigned Tag, MDString *Name, Metadata *SizeInBits, uint32_t AlignInBits, unsigned Encoding, unsigned Flags, unsigned Kind, int Factor, APInt Numerator, APInt Denominator)

Definition LLVMContextImpl.h:527

unsigned Kind

Definition LLVMContextImpl.h:522

MDNodeKeyImpl(const DIFixedPointType *N)

Definition LLVMContextImpl.h:533

Metadata * SizeInBits

Definition LLVMContextImpl.h:518

MDString * Name

Definition LLVMContextImpl.h:517

unsigned getHashValue() const

Definition LLVMContextImpl.h:548

unsigned Encoding

Definition LLVMContextImpl.h:520

unsigned Flags

Definition LLVMContextImpl.h:521

int Factor

Definition LLVMContextImpl.h:523

APInt Numerator

Definition LLVMContextImpl.h:524

bool isKeyOf(const DIFixedPointType *RHS) const

Definition LLVMContextImpl.h:540

Metadata * Stride

Definition LLVMContextImpl.h:427

bool isKeyOf(const DIGenericSubrange *RHS) const

Definition LLVMContextImpl.h:437

MDNodeKeyImpl(const DIGenericSubrange *N)

Definition LLVMContextImpl.h:433

unsigned getHashValue() const

Definition LLVMContextImpl.h:444

Metadata * LowerBound

Definition LLVMContextImpl.h:425

Metadata * CountNode

Definition LLVMContextImpl.h:424

Metadata * UpperBound

Definition LLVMContextImpl.h:426

MDNodeKeyImpl(Metadata *CountNode, Metadata *LowerBound, Metadata *UpperBound, Metadata *Stride)

Definition LLVMContextImpl.h:429

Metadata * Variable

Definition LLVMContextImpl.h:1367

MDNodeKeyImpl(Metadata *Variable, Metadata *Expression)

Definition LLVMContextImpl.h:1370

unsigned getHashValue() const

Definition LLVMContextImpl.h:1380

bool isKeyOf(const DIGlobalVariableExpression *RHS) const

Definition LLVMContextImpl.h:1375

Metadata * Expression

Definition LLVMContextImpl.h:1368

MDNodeKeyImpl(const DIGlobalVariableExpression *N)

Definition LLVMContextImpl.h:1372

Metadata * StaticDataMemberDeclaration

Definition LLVMContextImpl.h:1225

Metadata * Type

Definition LLVMContextImpl.h:1222

bool IsLocalToUnit

Definition LLVMContextImpl.h:1223

MDString * LinkageName

Definition LLVMContextImpl.h:1219

MDString * Name

Definition LLVMContextImpl.h:1218

bool IsDefinition

Definition LLVMContextImpl.h:1224

bool isKeyOf(const DIGlobalVariable *RHS) const

Definition LLVMContextImpl.h:1250

Metadata * Scope

Definition LLVMContextImpl.h:1217

Metadata * TemplateParams

Definition LLVMContextImpl.h:1226

unsigned Line

Definition LLVMContextImpl.h:1221

Metadata * Annotations

Definition LLVMContextImpl.h:1228

MDNodeKeyImpl(Metadata *Scope, MDString *Name, MDString *LinkageName, Metadata *File, unsigned Line, Metadata *Type, bool IsLocalToUnit, bool IsDefinition, Metadata *StaticDataMemberDeclaration, Metadata *TemplateParams, uint32_t AlignInBits, Metadata *Annotations)

Definition LLVMContextImpl.h:1230

MDNodeKeyImpl(const DIGlobalVariable *N)

Definition LLVMContextImpl.h:1241

uint32_t AlignInBits

Definition LLVMContextImpl.h:1227

unsigned getHashValue() const

Definition LLVMContextImpl.h:1263

Metadata * File

Definition LLVMContextImpl.h:1220

Metadata * Entity

Definition LLVMContextImpl.h:1418

Metadata * Elements

Definition LLVMContextImpl.h:1422

unsigned Line

Definition LLVMContextImpl.h:1420

unsigned Tag

Definition LLVMContextImpl.h:1416

MDString * Name

Definition LLVMContextImpl.h:1421

bool isKeyOf(const DIImportedEntity *RHS) const

Definition LLVMContextImpl.h:1433

MDNodeKeyImpl(unsigned Tag, Metadata *Scope, Metadata *Entity, Metadata *File, unsigned Line, MDString *Name, Metadata *Elements)

Definition LLVMContextImpl.h:1424

MDNodeKeyImpl(const DIImportedEntity *N)

Definition LLVMContextImpl.h:1428

unsigned getHashValue() const

Definition LLVMContextImpl.h:1440

Metadata * Scope

Definition LLVMContextImpl.h:1417

Metadata * File

Definition LLVMContextImpl.h:1419

unsigned Column

Definition LLVMContextImpl.h:1324

unsigned getHashValue() const

Using name and line to get hash value. It should already be mostly unique.

Definition LLVMContextImpl.h:1347

bool isKeyOf(const DILabel *RHS) const

Definition LLVMContextImpl.h:1339

MDString * Name

Definition LLVMContextImpl.h:1321

std::optional< unsigned > CoroSuspendIdx

Definition LLVMContextImpl.h:1326

MDNodeKeyImpl(Metadata *Scope, MDString *Name, Metadata *File, unsigned Line, unsigned Column, bool IsArtificial, std::optional< unsigned > CoroSuspendIdx)

Definition LLVMContextImpl.h:1328

MDNodeKeyImpl(const DILabel *N)

Definition LLVMContextImpl.h:1333

Metadata * File

Definition LLVMContextImpl.h:1322

unsigned Line

Definition LLVMContextImpl.h:1323

Metadata * Scope

Definition LLVMContextImpl.h:1320

bool IsArtificial

Definition LLVMContextImpl.h:1325

unsigned getHashValue() const

Definition LLVMContextImpl.h:1086

Metadata * File

Definition LLVMContextImpl.h:1072

MDNodeKeyImpl(Metadata *Scope, Metadata *File, unsigned Discriminator)

Definition LLVMContextImpl.h:1075

MDNodeKeyImpl(const DILexicalBlockFile *N)

Definition LLVMContextImpl.h:1077

Metadata * Scope

Definition LLVMContextImpl.h:1071

unsigned Discriminator

Definition LLVMContextImpl.h:1073

bool isKeyOf(const DILexicalBlockFile *RHS) const

Definition LLVMContextImpl.h:1081

bool isKeyOf(const DILexicalBlock *RHS) const

Definition LLVMContextImpl.h:1060

Metadata * File

Definition LLVMContextImpl.h:1050

Metadata * Scope

Definition LLVMContextImpl.h:1049

MDNodeKeyImpl(const DILexicalBlock *N)

Definition LLVMContextImpl.h:1056

unsigned getHashValue() const

Definition LLVMContextImpl.h:1065

MDNodeKeyImpl(Metadata *Scope, Metadata *File, unsigned Line, unsigned Column)

Definition LLVMContextImpl.h:1054

unsigned Column

Definition LLVMContextImpl.h:1052

unsigned Line

Definition LLVMContextImpl.h:1051

unsigned getHashValue() const

Definition LLVMContextImpl.h:1307

Metadata * Scope

Definition LLVMContextImpl.h:1278

bool isKeyOf(const DILocalVariable *RHS) const

Definition LLVMContextImpl.h:1299

unsigned Arg

Definition LLVMContextImpl.h:1283

uint32_t AlignInBits

Definition LLVMContextImpl.h:1285

unsigned Flags

Definition LLVMContextImpl.h:1284

Metadata * File

Definition LLVMContextImpl.h:1280

MDString * Name

Definition LLVMContextImpl.h:1279

MDNodeKeyImpl(Metadata *Scope, MDString *Name, Metadata *File, unsigned Line, Metadata *Type, unsigned Arg, unsigned Flags, uint32_t AlignInBits, Metadata *Annotations)

Definition LLVMContextImpl.h:1288

MDNodeKeyImpl(const DILocalVariable *N)

Definition LLVMContextImpl.h:1293

Metadata * Annotations

Definition LLVMContextImpl.h:1286

Metadata * Type

Definition LLVMContextImpl.h:1282

unsigned Line

Definition LLVMContextImpl.h:1281

Metadata * InlinedAt

Definition LLVMContextImpl.h:314

uint64_t AtomGroup

Definition LLVMContextImpl.h:315

Metadata * Scope

Definition LLVMContextImpl.h:313

uint64_t AtomRank

Definition LLVMContextImpl.h:316

unsigned getHashValue() const

Definition LLVMContextImpl.h:341

MDNodeKeyImpl(const DILocation *L)

Definition LLVMContextImpl.h:328

uint16_t Column

Definition LLVMContextImpl.h:318

MDNodeKeyImpl(unsigned Line, uint16_t Column, Metadata *Scope, Metadata *InlinedAt, bool ImplicitCode, uint64_t AtomGroup, uint8_t AtomRank)

Definition LLVMContextImpl.h:321

bool isKeyOf(const DILocation *RHS) const

Definition LLVMContextImpl.h:334

bool ImplicitCode

Definition LLVMContextImpl.h:319

unsigned Line

Definition LLVMContextImpl.h:317

MDNodeKeyImpl(const DIMacroFile *N)

Definition LLVMContextImpl.h:1476

unsigned getHashValue() const

Definition LLVMContextImpl.h:1485

Metadata * File

Definition LLVMContextImpl.h:1470

unsigned MIType

Definition LLVMContextImpl.h:1468

unsigned Line

Definition LLVMContextImpl.h:1469

Metadata * Elements

Definition LLVMContextImpl.h:1471

MDNodeKeyImpl(unsigned MIType, unsigned Line, Metadata *File, Metadata *Elements)

Definition LLVMContextImpl.h:1473

bool isKeyOf(const DIMacroFile *RHS) const

Definition LLVMContextImpl.h:1480

MDNodeKeyImpl(const DIMacro *N)

Definition LLVMContextImpl.h:1453

MDNodeKeyImpl(unsigned MIType, unsigned Line, MDString *Name, MDString *Value)

Definition LLVMContextImpl.h:1451

unsigned Line

Definition LLVMContextImpl.h:1447

MDString * Value

Definition LLVMContextImpl.h:1449

unsigned MIType

Definition LLVMContextImpl.h:1446

bool isKeyOf(const DIMacro *RHS) const

Definition LLVMContextImpl.h:1457

MDString * Name

Definition LLVMContextImpl.h:1448

unsigned getHashValue() const

Definition LLVMContextImpl.h:1462

MDNodeKeyImpl(const DIModule *N)

Definition LLVMContextImpl.h:1151

Metadata * Scope

Definition LLVMContextImpl.h:1137

MDNodeKeyImpl(Metadata *File, Metadata *Scope, MDString *Name, MDString *ConfigurationMacros, MDString *IncludePath, MDString *APINotesFile, unsigned LineNo, bool IsDecl)

Definition LLVMContextImpl.h:1145

MDString * IncludePath

Definition LLVMContextImpl.h:1140

unsigned LineNo

Definition LLVMContextImpl.h:1142

bool isKeyOf(const DIModule *RHS) const

Definition LLVMContextImpl.h:1158

MDString * Name

Definition LLVMContextImpl.h:1138

MDString * APINotesFile

Definition LLVMContextImpl.h:1141

bool IsDecl

Definition LLVMContextImpl.h:1143

MDString * ConfigurationMacros

Definition LLVMContextImpl.h:1139

Metadata * File

Definition LLVMContextImpl.h:1136

unsigned getHashValue() const

Definition LLVMContextImpl.h:1167

Metadata * Scope

Definition LLVMContextImpl.h:1092

MDNodeKeyImpl(const DINamespace *N)

Definition LLVMContextImpl.h:1098

unsigned getHashValue() const

Definition LLVMContextImpl.h:1107

MDNodeKeyImpl(Metadata *Scope, MDString *Name, bool ExportSymbols)

Definition LLVMContextImpl.h:1096

bool ExportSymbols

Definition LLVMContextImpl.h:1094

bool isKeyOf(const DINamespace *RHS) const

Definition LLVMContextImpl.h:1102

MDString * Name

Definition LLVMContextImpl.h:1093

unsigned getHashValue() const

Definition LLVMContextImpl.h:1409

unsigned Line

Definition LLVMContextImpl.h:1386

MDString * Name

Definition LLVMContextImpl.h:1384

MDNodeKeyImpl(const DIObjCProperty *N)

Definition LLVMContextImpl.h:1397

bool isKeyOf(const DIObjCProperty *RHS) const

Definition LLVMContextImpl.h:1402

MDNodeKeyImpl(MDString *Name, Metadata *File, unsigned Line, MDString *GetterName, MDString *SetterName, unsigned Attributes, Metadata *Type)

Definition LLVMContextImpl.h:1392

MDString * GetterName

Definition LLVMContextImpl.h:1387

Metadata * File

Definition LLVMContextImpl.h:1385

unsigned Attributes

Definition LLVMContextImpl.h:1389

MDString * SetterName

Definition LLVMContextImpl.h:1388

Metadata * Type

Definition LLVMContextImpl.h:1390

MDNodeKeyImpl(unsigned Tag, MDString *Name, Metadata *StringLength, Metadata *StringLengthExp, Metadata *StringLocationExp, Metadata *SizeInBits, uint32_t AlignInBits, unsigned Encoding)

Definition LLVMContextImpl.h:563

unsigned Tag

Definition LLVMContextImpl.h:554

Metadata * SizeInBits

Definition LLVMContextImpl.h:559

MDString * Name

Definition LLVMContextImpl.h:555

MDNodeKeyImpl(const DIStringType *N)

Definition LLVMContextImpl.h:569

uint32_t AlignInBits

Definition LLVMContextImpl.h:560

unsigned Encoding

Definition LLVMContextImpl.h:561

bool isKeyOf(const DIStringType *RHS) const

Definition LLVMContextImpl.h:577

Metadata * StringLocationExp

Definition LLVMContextImpl.h:558

Metadata * StringLengthExp

Definition LLVMContextImpl.h:557

unsigned getHashValue() const

Definition LLVMContextImpl.h:586

Metadata * StringLength

Definition LLVMContextImpl.h:556

Metadata * SizeInBits

Definition LLVMContextImpl.h:666

Metadata * Stride

Definition LLVMContextImpl.h:672

Metadata * UpperBound

Definition LLVMContextImpl.h:671

uint32_t AlignInBits

Definition LLVMContextImpl.h:667

Metadata * LowerBound

Definition LLVMContextImpl.h:670

MDNodeKeyImpl(MDString *Name, Metadata *File, unsigned Line, Metadata *Scope, Metadata *SizeInBits, uint32_t AlignInBits, unsigned Flags, Metadata *BaseType, Metadata *LowerBound, Metadata *UpperBound, Metadata *Stride, Metadata *Bias)

Definition LLVMContextImpl.h:675

Metadata * File

Definition LLVMContextImpl.h:663

Metadata * BaseType

Definition LLVMContextImpl.h:669

MDString * Name

Definition LLVMContextImpl.h:662

bool isKeyOf(const DISubrangeType *RHS) const

Definition LLVMContextImpl.h:691

unsigned Line

Definition LLVMContextImpl.h:664

unsigned Flags

Definition LLVMContextImpl.h:668

Metadata * Scope

Definition LLVMContextImpl.h:665

unsigned getHashValue() const

Definition LLVMContextImpl.h:718

MDNodeKeyImpl(const DISubrangeType *N)

Definition LLVMContextImpl.h:683

Metadata * Bias

Definition LLVMContextImpl.h:673

Metadata * CountNode

Definition LLVMContextImpl.h:379

MDNodeKeyImpl(Metadata *CountNode, Metadata *LowerBound, Metadata *UpperBound, Metadata *Stride)

Definition LLVMContextImpl.h:384

unsigned getHashValue() const

Definition LLVMContextImpl.h:414

Metadata * UpperBound

Definition LLVMContextImpl.h:381

bool isKeyOf(const DISubrange *RHS) const

Definition LLVMContextImpl.h:392

Metadata * LowerBound

Definition LLVMContextImpl.h:380

Metadata * Stride

Definition LLVMContextImpl.h:382

MDNodeKeyImpl(const DISubrange *N)

Definition LLVMContextImpl.h:388

Metadata * TypeArray

Definition LLVMContextImpl.h:867

bool isKeyOf(const DISubroutineType *RHS) const

Definition LLVMContextImpl.h:874

MDNodeKeyImpl(unsigned Flags, uint8_t CC, Metadata *TypeArray)

Definition LLVMContextImpl.h:869

unsigned getHashValue() const

Definition LLVMContextImpl.h:879

uint8_t CC

Definition LLVMContextImpl.h:866

MDNodeKeyImpl(const DISubroutineType *N)

Definition LLVMContextImpl.h:871

unsigned Flags

Definition LLVMContextImpl.h:865

MDString * Name

Definition LLVMContextImpl.h:1173

MDNodeKeyImpl(const DITemplateTypeParameter *N)

Definition LLVMContextImpl.h:1179

bool isKeyOf(const DITemplateTypeParameter *RHS) const

Definition LLVMContextImpl.h:1183

Metadata * Type

Definition LLVMContextImpl.h:1174

MDNodeKeyImpl(MDString *Name, Metadata *Type, bool IsDefault)

Definition LLVMContextImpl.h:1177

unsigned getHashValue() const

Definition LLVMContextImpl.h:1188

bool IsDefault

Definition LLVMContextImpl.h:1175

Metadata * Value

Definition LLVMContextImpl.h:1196

MDNodeKeyImpl(const DITemplateValueParameter *N)

Definition LLVMContextImpl.h:1201

Metadata * Type

Definition LLVMContextImpl.h:1194

MDNodeKeyImpl(unsigned Tag, MDString *Name, Metadata *Type, bool IsDefault, Metadata *Value)

Definition LLVMContextImpl.h:1198

MDString * Name

Definition LLVMContextImpl.h:1193

bool IsDefault

Definition LLVMContextImpl.h:1195

unsigned Tag

Definition LLVMContextImpl.h:1192

unsigned getHashValue() const

Definition LLVMContextImpl.h:1211

bool isKeyOf(const DITemplateValueParameter *RHS) const

Definition LLVMContextImpl.h:1205

static unsigned calculateHash(GenericDINode *N)

Definition LLVMContextImpl.h:373

unsigned getHashValue() const

Definition LLVMContextImpl.h:371

MDNodeKeyImpl(const GenericDINode *N)

Definition LLVMContextImpl.h:363

MDString * Header

Definition LLVMContextImpl.h:359

unsigned Tag

Definition LLVMContextImpl.h:358

MDNodeKeyImpl(unsigned Tag, MDString *Header, ArrayRef< Metadata * > DwarfOps)

Definition LLVMContextImpl.h:361

bool isKeyOf(const GenericDINode *RHS) const

Definition LLVMContextImpl.h:366

bool isKeyOf(const MDTuple *RHS) const

Definition LLVMContextImpl.h:302

MDNodeKeyImpl(ArrayRef< Metadata * > Ops)

Definition LLVMContextImpl.h:299

MDNodeKeyImpl(const MDTuple *N)

Definition LLVMContextImpl.h:300

unsigned getHashValue() const

Definition LLVMContextImpl.h:304

static unsigned calculateHash(MDTuple *N)

Definition LLVMContextImpl.h:306

Definition LLVMContextImpl.h:279

MDNodeKeyImpl< DIDerivedType > KeyTy

Definition LLVMContextImpl.h:740

static bool isSubsetEqual(const DIDerivedType *LHS, const DIDerivedType *RHS)

Definition LLVMContextImpl.h:746

static bool isSubsetEqual(const KeyTy &LHS, const DIDerivedType *RHS)

Definition LLVMContextImpl.h:742

static bool isODRMember(unsigned Tag, const Metadata *Scope, const MDString *Name, const DIDerivedType *RHS)

Subprograms compare equal if they declare the same function in an ODR type.

Definition LLVMContextImpl.h:754

static bool isSubsetEqual(const DISubprogram *LHS, const DISubprogram *RHS)

Definition LLVMContextImpl.h:1016

static bool isSubsetEqual(const KeyTy &LHS, const DISubprogram *RHS)

Definition LLVMContextImpl.h:1011

static bool isDeclarationOfODRMember(bool IsDefinition, const Metadata *Scope, const MDString *LinkageName, const Metadata *TemplateParams, const DISubprogram *RHS)

Subprograms compare equal if they declare the same function in an ODR type.

Definition LLVMContextImpl.h:1024

MDNodeKeyImpl< DISubprogram > KeyTy

Definition LLVMContextImpl.h:1009

Configuration point for MDNodeInfo::isEqual().

Definition LLVMContextImpl.h:282

static bool isSubsetEqual(const KeyTy &LHS, const NodeTy *RHS)

Definition LLVMContextImpl.h:285

MDNodeKeyImpl< NodeTy > KeyTy

Definition LLVMContextImpl.h:283

static bool isSubsetEqual(const NodeTy *LHS, const NodeTy *RHS)

Definition LLVMContextImpl.h:289

Definition LLVMContextImpl.h:193

KeyTy(StringRef N, const ArrayRef< Type * > &TP, const ArrayRef< unsigned > &IP)

Definition LLVMContextImpl.h:198

ArrayRef< unsigned > IntParams

Definition LLVMContextImpl.h:196

bool operator==(const KeyTy &that) const

Definition LLVMContextImpl.h:204

KeyTy(const TargetExtType *TT)

Definition LLVMContextImpl.h:200

ArrayRef< Type * > TypeParams

Definition LLVMContextImpl.h:195

StringRef Name

Definition LLVMContextImpl.h:194

bool operator!=(const KeyTy &that) const

Definition LLVMContextImpl.h:208

Definition LLVMContextImpl.h:192

static unsigned getHashValue(const TargetExtType *FT)

Definition LLVMContextImpl.h:224

static bool isEqual(const TargetExtType *LHS, const TargetExtType *RHS)

Definition LLVMContextImpl.h:234

static bool isEqual(const KeyTy &LHS, const TargetExtType *RHS)

Definition LLVMContextImpl.h:228

static unsigned getHashValue(const KeyTy &Key)

Definition LLVMContextImpl.h:219

static TargetExtType * getTombstoneKey()

Definition LLVMContextImpl.h:215

static TargetExtType * getEmptyKey()

Definition LLVMContextImpl.h:211