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()),
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() &&
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 || )
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;
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
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
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