13#ifndef LLVM_IR_DEBUGINFOMETADATA_H
14#define LLVM_IR_DEBUGINFOMETADATA_H
39#define DEFINE_MDNODE_GET_UNPACK_IMPL(...) __VA_ARGS__
40#define DEFINE_MDNODE_GET_UNPACK(ARGS) DEFINE_MDNODE_GET_UNPACK_IMPL ARGS
41#define DEFINE_MDNODE_GET_DISTINCT_TEMPORARY(CLASS, FORMAL, ARGS) \
42 static CLASS *getDistinct(LLVMContext &Context, \
43 DEFINE_MDNODE_GET_UNPACK(FORMAL)) { \
44 return getImpl(Context, DEFINE_MDNODE_GET_UNPACK(ARGS), Distinct); \
46 static Temp##CLASS getTemporary(LLVMContext &Context, \
47 DEFINE_MDNODE_GET_UNPACK(FORMAL)) { \
49 getImpl(Context, DEFINE_MDNODE_GET_UNPACK(ARGS), Temporary)); \
51#define DEFINE_MDNODE_GET(CLASS, FORMAL, ARGS) \
52 static CLASS *get(LLVMContext &Context, DEFINE_MDNODE_GET_UNPACK(FORMAL)) { \
53 return getImpl(Context, DEFINE_MDNODE_GET_UNPACK(ARGS), Uniqued); \
55 static CLASS *getIfExists(LLVMContext &Context, \
56 DEFINE_MDNODE_GET_UNPACK(FORMAL)) { \
57 return getImpl(Context, DEFINE_MDNODE_GET_UNPACK(ARGS), Uniqued, \
60 DEFINE_MDNODE_GET_DISTINCT_TEMPORARY(CLASS, FORMAL, ARGS)
68class DbgVariableIntrinsic;
69class DbgVariableRecord;
80 explicit operator bool()
const {
return get(); }
88 unsigned size()
const {
return N ?
N->getNumOperands() : 0u; }
90 return cast_or_null<DIType>(
N->getOperand(
I));
153 if (
auto *S = getOperandAs<MDString>(
I))
154 return S->getString();
175#define HANDLE_DI_FLAG(ID, NAME) Flag##NAME = ID,
176#define DI_FLAG_LARGEST_NEEDED
177#include "llvm/IR/DebugInfoFlags.def"
180 FlagVirtualInheritance,
198 case GenericDINodeKind:
200 case DIEnumeratorKind:
201 case DIBasicTypeKind:
202 case DIStringTypeKind:
203 case DIDerivedTypeKind:
204 case DICompositeTypeKind:
205 case DISubroutineTypeKind:
207 case DICompileUnitKind:
208 case DISubprogramKind:
209 case DILexicalBlockKind:
210 case DILexicalBlockFileKind:
211 case DINamespaceKind:
212 case DICommonBlockKind:
213 case DITemplateTypeParameterKind:
214 case DITemplateValueParameterKind:
215 case DIGlobalVariableKind:
216 case DILocalVariableKind:
218 case DIObjCPropertyKind:
219 case DIImportedEntityKind:
221 case DIGenericSubrangeKind:
249 void recalculateHash();
251 static GenericDINode *getImpl(LLVMContext &Context,
unsigned Tag,
258 static GenericDINode *getImpl(LLVMContext &Context,
unsigned Tag,
262 TempGenericDINode cloneImpl()
const {
280 TempGenericDINode
clone()
const {
return cloneImpl(); }
319 bool ShouldCreate =
true);
328 return Context.getReplaceableUses()->getAllDbgVariableRecordUsers();
335 return TempDIAssignID(getImpl(Context,
Temporary));
358 bool ShouldCreate =
true);
362 bool ShouldCreate =
true);
367 bool ShouldCreate =
true);
369 TempDISubrange cloneImpl()
const {
371 getRawUpperBound(), getRawStride());
386 TempDISubrange
clone()
const {
return cloneImpl(); }
396 typedef PointerUnion<ConstantInt *, DIVariable *, DIExpression *> BoundType;
423 bool ShouldCreate =
true);
425 TempDIGenericSubrange cloneImpl()
const {
434 (CountNode, LowerBound, UpperBound, Stride))
436 TempDIGenericSubrange
clone()
const {
return cloneImpl(); }
478 static DIEnumerator *getImpl(LLVMContext &Context,
const APInt &Value,
482 TempDIEnumerator cloneImpl()
const {
500 TempDIEnumerator
clone()
const {
return cloneImpl(); }
531 inline std::optional<StringRef>
getSource()
const;
543 return isa<DIFile>(
this) ?
const_cast<DIScope *
>(
this)
551 case DIBasicTypeKind:
552 case DIStringTypeKind:
553 case DIDerivedTypeKind:
554 case DICompositeTypeKind:
555 case DISubroutineTypeKind:
557 case DICompileUnitKind:
558 case DISubprogramKind:
559 case DILexicalBlockKind:
560 case DILexicalBlockFileKind:
561 case DINamespaceKind:
562 case DICommonBlockKind:
610 std::optional<ChecksumInfo<MDString *>> Checksum;
615 std::optional<ChecksumInfo<MDString *>>
CS,
MDString *Src,
621 std::optional<ChecksumInfo<StringRef>>
CS,
623 bool ShouldCreate =
true) {
624 std::optional<ChecksumInfo<MDString *>> MDChecksum;
632 static DIFile *getImpl(LLVMContext &Context, MDString *
Filename,
634 std::optional<ChecksumInfo<MDString *>>
CS,
636 bool ShouldCreate =
true);
638 TempDIFile cloneImpl()
const {
647 std::optional<StringRef> Source = std::nullopt),
655 TempDIFile
clone()
const {
return cloneImpl(); }
659 std::optional<ChecksumInfo<StringRef>> getChecksum()
const {
660 std::optional<ChecksumInfo<StringRef>> StringRefChecksum;
662 StringRefChecksum.emplace(Checksum->Kind, Checksum->Value->getString());
663 return StringRefChecksum;
665 std::optional<StringRef>
getSource()
const {
666 return Source ? std::optional<StringRef>(
Source->getString())
670 MDString *getRawFilename()
const {
return getOperandAs<MDString>(0); }
671 MDString *getRawDirectory()
const {
return getOperandAs<MDString>(1); }
672 std::optional<ChecksumInfo<MDString *>> getRawChecksum()
const {
675 MDString *getRawSource()
const {
return Source; }
677 static StringRef getChecksumKindAsString(
ChecksumKind CSKind);
678 static std::optional<ChecksumKind>
getChecksumKind(StringRef CSKindStr);
687 return F->getFilename();
693 return F->getDirectory();
699 return F->getSource();
723 init(Line, SizeInBits, AlignInBits, OffsetInBits, NumExtraInhabitants,
733 this->SizeInBits = SizeInBits;
735 this->OffsetInBits = OffsetInBits;
736 this->NumExtraInhabitants = NumExtraInhabitants;
745 init(Line, SizeInBits, AlignInBits, OffsetInBits, NumExtraInhabitants,
770 auto NewTy =
clone();
771 NewTy->Flags = NewFlags;
790 return getFlags() & FlagObjcClassComplete;
799 return getFlags() & FlagTypePassByReference;
809 case DIBasicTypeKind:
810 case DIStringTypeKind:
811 case DIDerivedTypeKind:
812 case DICompositeTypeKind:
813 case DISubroutineTypeKind:
835 Encoding(Encoding) {}
847 static DIBasicType *getImpl(LLVMContext &Context,
unsigned Tag,
853 TempDIBasicType cloneImpl()
const {
861 (
Tag,
Name, 0, 0, 0, 0, FlagZero))
889 TempDIBasicType
clone()
const {
return cloneImpl(); }
916 Encoding(Encoding) {}
924 bool ShouldCreate =
true) {
929 static DIStringType *getImpl(LLVMContext &Context,
unsigned Tag,
934 bool ShouldCreate =
true);
936 TempDIStringType cloneImpl()
const {
964 TempDIStringType
clone()
const {
return cloneImpl(); }
1011 bool IsaPointer,
bool AuthenticatesNullValues) {
1013 assert(Discriminator <= 0xffff);
1014 RawData = (Key << 0) | (IsDiscr ? (1 << 4) : 0) | (Discriminator << 5) |
1015 (IsaPointer ? (1 << 21) : 0) |
1016 (AuthenticatesNullValues ? (1 << 22) : 0);
1032 std::optional<unsigned> DWARFAddressSpace;
1037 std::optional<unsigned> DWARFAddressSpace,
1042 DWARFAddressSpace(DWARFAddressSpace) {
1051 std::optional<unsigned> DWARFAddressSpace,
1054 bool ShouldCreate =
true) {
1060 static DIDerivedType *
1064 std::optional<unsigned> DWARFAddressSpace,
1067 bool ShouldCreate =
true);
1069 TempDIDerivedType cloneImpl()
const {
1073 getDWARFAddressSpace(), getPtrAuthData(),
getFlags(),
1083 std::optional<unsigned> DWARFAddressSpace,
1094 std::optional<unsigned> DWARFAddressSpace,
1102 TempDIDerivedType
clone()
const {
return cloneImpl(); }
1110 std::optional<unsigned> getDWARFAddressSpace()
const {
1111 return DWARFAddressSpace;
1114 std::optional<PtrAuthData> getPtrAuthData()
const;
1143 return dyn_cast_or_null<DIObjCProperty>(
getExtraData());
1167 return !(Lhs == Rhs);
1178 unsigned RuntimeLang;
1187 RuntimeLang(RuntimeLang) {}
1191 void mutate(
unsigned Tag,
unsigned Line,
unsigned RuntimeLang,
1196 this->RuntimeLang = RuntimeLang;
1201 static DICompositeType *
1211 bool ShouldCreate =
true) {
1220 static DICompositeType *
1230 bool ShouldCreate =
true);
1232 TempDICompositeType cloneImpl()
const {
1276 TempDICompositeType
clone()
const {
return cloneImpl(); }
1338 return getOperandAs<DIDerivedType>(8);
1363 if (
auto *MD = dyn_cast_or_null<ConstantAsMetadata>(
getRawRank()))
1364 return dyn_cast_or_null<ConstantInt>(MD->getValue());
1368 return dyn_cast_or_null<DIExpression>(
getRawRank());
1390 "Lost a member during member list replacement");
1427 bool ShouldCreate =
true) {
1433 bool ShouldCreate =
true);
1435 TempDISubroutineType cloneImpl()
const {
1447 TempDISubroutineType
clone()
const {
return cloneImpl(); }
1450 auto NewTy =
clone();
1497 unsigned RuntimeVersion;
1499 unsigned EmissionKind;
1500 unsigned NameTableKind;
1502 bool SplitDebugInlining;
1503 bool DebugInfoForProfiling;
1504 bool RangesBaseAddress;
1507 bool IsOptimized,
unsigned RuntimeVersion,
1508 unsigned EmissionKind,
uint64_t DWOId,
bool SplitDebugInlining,
1509 bool DebugInfoForProfiling,
unsigned NameTableKind,
1517 unsigned EmissionKind, DICompositeTypeArray
EnumTypes,
1521 uint64_t DWOId,
bool SplitDebugInlining,
bool DebugInfoForProfiling,
1530 DebugInfoForProfiling, NameTableKind, RangesBaseAddress,
1534 static DICompileUnit *
1541 bool DebugInfoForProfiling,
unsigned NameTableKind,
1542 bool RangesBaseAddress, MDString *
SysRoot, MDString *
SDK,
1545 TempDICompileUnit cloneImpl()
const {
1567 uint64_t DWOId,
bool SplitDebugInlining,
bool DebugInfoForProfiling,
1573 DebugInfoForProfiling, (
unsigned)NameTableKind, RangesBaseAddress,
1582 bool SplitDebugInlining,
bool DebugInfoForProfiling,
1588 DebugInfoForProfiling, NameTableKind, RangesBaseAddress,
SysRoot,
SDK))
1590 TempDICompileUnit
clone()
const {
return cloneImpl(); }
1628 this->SplitDebugInlining = SplitDebugInlining;
1636 return getOperandAs<MDString>(3);
1716 unsigned VirtualIndex;
1726#define HANDLE_DISP_FLAG(ID, NAME) SPFlag##NAME = ID,
1727#define DISP_FLAG_LARGEST_NEEDED
1728#include "llvm/IR/DebugInfoFlags.def"
1748 bool IsMainSubprogram =
false);
1755 unsigned ScopeLine,
unsigned VirtualIndex,
int ThisAdjustment,
1763 unsigned VirtualIndex,
int ThisAdjustment,
DIFlags Flags,
1777 static DISubprogram *
1785 bool ShouldCreate =
true);
1787 TempDISubprogram cloneImpl()
const {
1790 getContainingType(), getVirtualIndex(),
1791 getThisAdjustment(),
getFlags(), getSPFlags(),
1792 getUnit(), getTemplateParams(), getDeclaration(),
1793 getRetainedNodes(), getThrownTypes(), getAnnotations(),
1794 getTargetFuncName());
1825 TempDISubprogram
clone()
const {
return cloneImpl(); }
1828 TempDISubprogram cloneWithFlags(
DIFlags NewFlags)
const {
1829 auto NewSP =
clone();
1830 NewSP->Flags = NewFlags;
1835 unsigned getLine()
const {
return Line; }
1837 unsigned getVirtualIndex()
const {
return VirtualIndex; }
1838 int getThisAdjustment()
const {
return ThisAdjustment; }
1839 unsigned getScopeLine()
const {
return ScopeLine; }
1840 void setScopeLine(
unsigned L) {
1845 DISPFlags getSPFlags()
const {
return SPFlags; }
1846 bool isLocalToUnit()
const {
return getSPFlags() & SPFlagLocalToUnit; }
1847 bool isDefinition()
const {
return getSPFlags() & SPFlagDefinition; }
1848 bool isOptimized()
const {
return getSPFlags() & SPFlagOptimized; }
1849 bool isMainSubprogram()
const {
return getSPFlags() & SPFlagMainSubprogram; }
1851 bool isArtificial()
const {
return getFlags() & FlagArtificial; }
1852 bool isPrivate()
const {
1855 bool isProtected()
const {
1858 bool isPublic()
const {
1861 bool isExplicit()
const {
return getFlags() & FlagExplicit; }
1862 bool isPrototyped()
const {
return getFlags() & FlagPrototyped; }
1863 bool areAllCallsDescribed()
const {
1864 return getFlags() & FlagAllCallsDescribed;
1866 bool isPure()
const {
return getSPFlags() & SPFlagPure; }
1867 bool isElemental()
const {
return getSPFlags() & SPFlagElemental; }
1868 bool isRecursive()
const {
return getSPFlags() & SPFlagRecursive; }
1869 bool isObjCDirect()
const {
return getSPFlags() & SPFlagObjCDirect; }
1875 bool isDeleted()
const {
return getSPFlags() & SPFlagDeleted; }
1881 bool isLValueReference()
const {
return getFlags() & FlagLValueReference; }
1887 bool isRValueReference()
const {
return getFlags() & FlagRValueReference; }
1892 bool isNoReturn()
const {
return getFlags() & FlagNoReturn; }
1897 bool isThunk()
const {
return getFlags() & FlagThunk; }
1899 DIScope *
getScope()
const {
return cast_or_null<DIScope>(getRawScope()); }
1906 DISubroutineType *
getType()
const {
1907 return cast_or_null<DISubroutineType>(getRawType());
1909 DIType *getContainingType()
const {
1910 return cast_or_null<DIType>(getRawContainingType());
1912 void replaceType(DISubroutineType *Ty) {
1917 DICompileUnit *getUnit()
const {
1918 return cast_or_null<DICompileUnit>(getRawUnit());
1921 DITemplateParameterArray getTemplateParams()
const {
1922 return cast_or_null<MDTuple>(getRawTemplateParams());
1924 DISubprogram *getDeclaration()
const {
1925 return cast_or_null<DISubprogram>(getRawDeclaration());
1928 DINodeArray getRetainedNodes()
const {
1929 return cast_or_null<MDTuple>(getRawRetainedNodes());
1931 DITypeArray getThrownTypes()
const {
1932 return cast_or_null<MDTuple>(getRawThrownTypes());
1934 DINodeArray getAnnotations()
const {
1935 return cast_or_null<MDTuple>(getRawAnnotations());
1937 StringRef getTargetFuncName()
const {
1942 MDString *getRawName()
const {
return getOperandAs<MDString>(2); }
1943 MDString *getRawLinkageName()
const {
return getOperandAs<MDString>(3); }
1948 Metadata *getRawContainingType()
const {
1949 return getNumOperands() > 8 ? getOperandAs<Metadata>(8) : nullptr;
1951 Metadata *getRawTemplateParams()
const {
1952 return getNumOperands() > 9 ? getOperandAs<Metadata>(9) : nullptr;
1954 Metadata *getRawThrownTypes()
const {
1955 return getNumOperands() > 10 ? getOperandAs<Metadata>(10) : nullptr;
1957 Metadata *getRawAnnotations()
const {
1958 return getNumOperands() > 11 ? getOperandAs<Metadata>(11) : nullptr;
1960 MDString *getRawTargetFuncName()
const {
1961 return getNumOperands() > 12 ? getOperandAs<MDString>(12) : nullptr;
1964 void replaceRawLinkageName(MDString *
LinkageName) {
1967 void replaceRetainedNodes(DINodeArray
N) {
1974 bool describes(
const Function *
F)
const;
2009 TempDILocation cloneImpl()
const {
2031 TempDILocation
clone()
const {
return cloneImpl(); }
2035 DILocalScope *getScope()
const {
return cast<DILocalScope>(
getRawScope()); }
2039 StringRef getSubprogramLinkageName()
const {
2040 DISubprogram *SP = getScope()->getSubprogram();
2043 auto Name = SP->getLinkageName();
2046 return SP->getName();
2049 DILocation *getInlinedAt()
const {
2062 DIFile *getFile()
const {
return getScope()->getFile(); }
2063 StringRef
getFilename()
const {
return getScope()->getFilename(); }
2064 StringRef getDirectory()
const {
return getScope()->getDirectory(); }
2065 std::optional<StringRef> getSource()
const {
return getScope()->getSource(); }
2071 DILocalScope *getInlinedAtScope()
const {
2072 if (
auto *IA = getInlinedAt())
2073 return IA->getInlinedAtScope();
2111 inline unsigned getDiscriminator()
const;
2122 return ((Discriminator & 0x7) == 0x7) && (Discriminator & 0xFFFFFFF8);
2132 inline std::optional<const DILocation *>
2149 inline std::optional<const DILocation *>
2187 bool IsFSDiscriminator =
false) {
2191 auto DwarfBaseDiscriminator =
2193 if (DwarfBaseDiscriminator)
2194 return *DwarfBaseDiscriminator;
2203 if (IsFSDiscriminator)
2294 assert(Column < (1u << 16) &&
"Expected 16-bit column");
2301 bool ShouldCreate =
true) {
2307 static DILexicalBlock *getImpl(LLVMContext &Context,
Metadata *
Scope,
2311 TempDILexicalBlock cloneImpl()
const {
2326 TempDILexicalBlock
clone()
const {
return cloneImpl(); }
2350 bool ShouldCreate =
true) {
2356 static DILexicalBlockFile *getImpl(LLVMContext &Context,
Metadata *
Scope,
2359 bool ShouldCreate =
true);
2361 TempDILexicalBlockFile cloneImpl()
const {
2375 TempDILexicalBlockFile
clone()
const {
return cloneImpl(); }
2383unsigned DILocation::getDiscriminator()
const {
2384 if (
auto *
F = dyn_cast<DILexicalBlockFile>(getScope()))
2385 return F->getDiscriminator();
2396 for (
auto *LBF = dyn_cast<DILexicalBlockFile>(
Scope);
2397 LBF && LBF->getDiscriminator() != 0;
2398 LBF = dyn_cast<DILexicalBlockFile>(
Scope))
2399 Scope = LBF->getScope();
2419std::optional<const DILocation *>
2421 unsigned BD,
DF, CI;
2435 return std::nullopt;
2438std::optional<const DILocation *>
2456 return std::nullopt;
2480 TempDINamespace cloneImpl()
const {
2493 TempDINamespace
clone()
const {
return cloneImpl(); }
2523 bool ShouldCreate =
true) {
2536 TempDIModule cloneImpl()
const {
2538 getConfigurationMacros(), getIncludePath(),
2539 getAPINotesFile(), getLineNo(), getIsDecl());
2547 bool IsDecl =
false),
2554 bool IsDecl =
false),
2558 TempDIModule
clone()
const {
return cloneImpl(); }
2560 DIScope *
getScope()
const {
return cast_or_null<DIScope>(getRawScope()); }
2569 MDString *getRawName()
const {
return getOperandAs<MDString>(2); }
2570 MDString *getRawConfigurationMacros()
const {
2571 return getOperandAs<MDString>(3);
2573 MDString *getRawIncludePath()
const {
return getOperandAs<MDString>(4); }
2574 MDString *getRawAPINotesFile()
const {
return getOperandAs<MDString>(5); }
2577 return MD->getMetadataID() == DIModuleKind;
2602 return MD->
getMetadataID() == DITemplateTypeParameterKind ||
2618 bool ShouldCreate =
true) {
2625 bool ShouldCreate =
true);
2627 TempDITemplateTypeParameter cloneImpl()
const {
2639 TempDITemplateTypeParameter
clone()
const {
return cloneImpl(); }
2661 bool ShouldCreate =
true) {
2665 static DITemplateValueParameter *getImpl(LLVMContext &Context,
unsigned Tag,
2669 bool ShouldCreate =
true);
2671 TempDITemplateValueParameter cloneImpl()
const {
2686 TempDITemplateValueParameter
clone()
const {
return cloneImpl(); }
2720 if (
auto *
BT = dyn_cast<DIBasicType>(
getType()))
2721 return BT->getSignedness();
2722 return std::nullopt;
2727 return F->getFilename();
2733 return F->getDirectory();
2739 return F->getSource();
2740 return std::nullopt;
2767 std::vector<uint64_t> Elements;
2771 Elements(Elements.begin(), Elements.end()) {}
2772 ~DIExpression() =
default;
2774 static DIExpression *getImpl(LLVMContext &Context,
2776 bool ShouldCreate =
true);
2778 TempDIExpression cloneImpl()
const {
2785 TempDIExpression
clone()
const {
return cloneImpl(); }
2792 assert(
I < Elements.size() &&
"Index out of range");
2799 std::optional<SignedOrUnsignedConstant>
isConstant()
const;
2987 static std::optional<const DIExpression *>
3013 bool SecondIndirect);
3040 unsigned &AddrClass);
3104 static std::optional<DIExpression *>
3106 unsigned SizeInBits);
3156 uint64_t SliceSizeInBits,
const Value *DbgPtr, int64_t DbgPtrOffsetInBits,
3158 std::optional<DIExpression::FragmentInfo> &Result,
3159 int64_t &OffsetFromLocationInBits);
3169 unsigned ToSize,
bool Signed);
3180 auto Fragment2 = *
Other->getFragmentInfo();
3198 std::pair<DIExpression *, const ConstantInt *>
3209 return std::tie(
A.SizeInBits,
A.OffsetInBits) ==
3210 std::tie(
B.SizeInBits,
B.OffsetInBits);
3215 return std::tie(
A.SizeInBits,
A.OffsetInBits) <
3216 std::tie(
B.SizeInBits,
B.OffsetInBits);
3221 static const uint64_t MaxVal = std::numeric_limits<uint64_t>::max();
3255 std::optional<DIExpression::ExprOperand>
take() {
3257 return std::nullopt;
3265 std::optional<DIExpression::ExprOperand>
peek()
const {
3267 return std::nullopt;
3272 std::optional<DIExpression::ExprOperand>
peekNext()
const {
3274 return std::nullopt;
3276 auto Next = Start.getNext();
3278 return std::nullopt;
3283 std::optional<DIExpression::ExprOperand>
peekNextN(
unsigned N)
const {
3285 return std::nullopt;
3287 for (
unsigned I = 0;
I <
N;
I++) {
3290 return std::nullopt;
3326 IsLocalToUnit(IsLocalToUnit), IsDefinition(IsDefinition) {}
3332 bool IsLocalToUnit,
bool IsDefinition,
3335 bool ShouldCreate =
true) {
3342 static DIGlobalVariable *
3345 bool IsLocalToUnit,
bool IsDefinition,
3348 bool ShouldCreate =
true);
3350 TempDIGlobalVariable cloneImpl()
const {
3362 unsigned Line,
DIType *
Type,
bool IsLocalToUnit,
bool IsDefinition,
3376 TempDIGlobalVariable
clone()
const {
return cloneImpl(); }
3420 bool ShouldCreate =
true);
3422 TempDICommonBlock cloneImpl()
const {
3437 TempDICommonBlock
clone()
const {
return cloneImpl(); }
3441 return cast_or_null<DIGlobalVariable>(
getRawDecl());
3471 Arg(Arg), Flags(Flags) {
3472 assert(Arg < (1 << 16) &&
"DILocalVariable: Arg out of range");
3481 bool ShouldCreate =
true) {
3486 static DILocalVariable *getImpl(LLVMContext &Context,
Metadata *
Scope,
3491 bool ShouldCreate =
true);
3493 TempDILocalVariable cloneImpl()
const {
3513 TempDILocalVariable
clone()
const {
return cloneImpl(); }
3561 bool ShouldCreate =
true) {
3567 bool ShouldCreate =
true);
3569 TempDILabel cloneImpl()
const {
3584 TempDILabel
clone()
const {
return cloneImpl(); }
3619 unsigned Attributes;
3640 TempDIObjCProperty cloneImpl()
const {