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();
721 init(Line, SizeInBits, AlignInBits, OffsetInBits, Flags);
729 this->SizeInBits = SizeInBits;
731 this->OffsetInBits = OffsetInBits;
739 init(Line, SizeInBits, AlignInBits, OffsetInBits, Flags);
762 auto NewTy =
clone();
763 NewTy->Flags = NewFlags;
782 return getFlags() & FlagObjcClassComplete;
791 return getFlags() & FlagTypePassByReference;
801 case DIBasicTypeKind:
802 case DIStringTypeKind:
803 case DIDerivedTypeKind:
804 case DICompositeTypeKind:
805 case DISubroutineTypeKind:
826 Encoding(Encoding) {}
833 bool ShouldCreate =
true) {
838 static DIBasicType *getImpl(LLVMContext &Context,
unsigned Tag,
842 bool ShouldCreate =
true);
844 TempDIBasicType cloneImpl()
const {
851 (
Tag,
Name, 0, 0, 0, FlagZero))
867 TempDIBasicType
clone()
const {
return cloneImpl(); }
894 Encoding(Encoding) {}
902 bool ShouldCreate =
true) {
907 static DIStringType *getImpl(LLVMContext &Context,
unsigned Tag,
912 bool ShouldCreate =
true);
914 TempDIStringType cloneImpl()
const {
942 TempDIStringType
clone()
const {
return cloneImpl(); }
989 bool IsaPointer,
bool AuthenticatesNullValues) {
991 assert(Discriminator <= 0xffff);
992 RawData = (Key << 0) | (IsDiscr ? (1 << 4) : 0) | (Discriminator << 5) |
993 (IsaPointer ? (1 << 21) : 0) |
994 (AuthenticatesNullValues ? (1 << 22) : 0);
1010 std::optional<unsigned> DWARFAddressSpace;
1015 std::optional<unsigned> DWARFAddressSpace,
1020 DWARFAddressSpace(DWARFAddressSpace) {
1029 std::optional<unsigned> DWARFAddressSpace,
1032 bool ShouldCreate =
true) {
1038 static DIDerivedType *
1042 std::optional<unsigned> DWARFAddressSpace,
1045 bool ShouldCreate =
true);
1047 TempDIDerivedType cloneImpl()
const {
1051 getDWARFAddressSpace(), getPtrAuthData(),
getFlags(),
1061 std::optional<unsigned> DWARFAddressSpace,
1072 std::optional<unsigned> DWARFAddressSpace,
1080 TempDIDerivedType
clone()
const {
return cloneImpl(); }
1088 std::optional<unsigned> getDWARFAddressSpace()
const {
1089 return DWARFAddressSpace;
1092 std::optional<PtrAuthData> getPtrAuthData()
const;
1121 return dyn_cast_or_null<DIObjCProperty>(
getExtraData());
1145 return !(Lhs == Rhs);
1156 unsigned RuntimeLang;
1164 RuntimeLang(RuntimeLang) {}
1168 void mutate(
unsigned Tag,
unsigned Line,
unsigned RuntimeLang,
1173 this->RuntimeLang = RuntimeLang;
1177 static DICompositeType *
1186 bool ShouldCreate =
true) {
1194 static DICompositeType *
1204 TempDICompositeType cloneImpl()
const {
1245 TempDICompositeType
clone()
const {
return cloneImpl(); }
1305 return getOperandAs<DIDerivedType>(8);
1330 if (
auto *MD = dyn_cast_or_null<ConstantAsMetadata>(
getRawRank()))
1331 return dyn_cast_or_null<ConstantInt>(MD->getValue());
1335 return dyn_cast_or_null<DIExpression>(
getRawRank());
1353 "Lost a member during member list replacement");
1390 bool ShouldCreate =
true) {
1396 bool ShouldCreate =
true);
1398 TempDISubroutineType cloneImpl()
const {
1410 TempDISubroutineType
clone()
const {
return cloneImpl(); }
1413 auto NewTy =
clone();
1460 unsigned RuntimeVersion;
1462 unsigned EmissionKind;
1463 unsigned NameTableKind;
1465 bool SplitDebugInlining;
1466 bool DebugInfoForProfiling;
1467 bool RangesBaseAddress;
1470 bool IsOptimized,
unsigned RuntimeVersion,
1471 unsigned EmissionKind,
uint64_t DWOId,
bool SplitDebugInlining,
1472 bool DebugInfoForProfiling,
unsigned NameTableKind,
1480 unsigned EmissionKind, DICompositeTypeArray
EnumTypes,
1484 uint64_t DWOId,
bool SplitDebugInlining,
bool DebugInfoForProfiling,
1493 DebugInfoForProfiling, NameTableKind, RangesBaseAddress,
1497 static DICompileUnit *
1498 getImpl(LLVMContext &Context,
unsigned SourceLanguage,
Metadata *
File,
1504 bool DebugInfoForProfiling,
unsigned NameTableKind,
1505 bool RangesBaseAddress, MDString *
SysRoot, MDString *
SDK,
1508 TempDICompileUnit cloneImpl()
const {
1530 uint64_t DWOId,
bool SplitDebugInlining,
bool DebugInfoForProfiling,
1536 DebugInfoForProfiling, (
unsigned)NameTableKind, RangesBaseAddress,
1545 bool SplitDebugInlining,
bool DebugInfoForProfiling,
1551 DebugInfoForProfiling, NameTableKind, RangesBaseAddress,
SysRoot,
SDK))
1553 TempDICompileUnit
clone()
const {
return cloneImpl(); }
1591 this->SplitDebugInlining = SplitDebugInlining;
1599 return getOperandAs<MDString>(3);
1679 unsigned VirtualIndex;
1689#define HANDLE_DISP_FLAG(ID, NAME) SPFlag##NAME = ID,
1690#define DISP_FLAG_LARGEST_NEEDED
1691#include "llvm/IR/DebugInfoFlags.def"
1711 bool IsMainSubprogram =
false);
1718 unsigned ScopeLine,
unsigned VirtualIndex,
int ThisAdjustment,
1726 unsigned VirtualIndex,
int ThisAdjustment,
DIFlags Flags,
1740 static DISubprogram *
1748 bool ShouldCreate =
true);
1750 TempDISubprogram cloneImpl()
const {
1753 getContainingType(), getVirtualIndex(),
1754 getThisAdjustment(),
getFlags(), getSPFlags(),
1755 getUnit(), getTemplateParams(), getDeclaration(),
1756 getRetainedNodes(), getThrownTypes(), getAnnotations(),
1757 getTargetFuncName());
1788 TempDISubprogram
clone()
const {
return cloneImpl(); }
1791 TempDISubprogram cloneWithFlags(
DIFlags NewFlags)
const {
1792 auto NewSP =
clone();
1793 NewSP->Flags = NewFlags;
1798 unsigned getLine()
const {
return Line; }
1800 unsigned getVirtualIndex()
const {
return VirtualIndex; }
1801 int getThisAdjustment()
const {
return ThisAdjustment; }
1802 unsigned getScopeLine()
const {
return ScopeLine; }
1803 void setScopeLine(
unsigned L) {
1808 DISPFlags getSPFlags()
const {
return SPFlags; }
1809 bool isLocalToUnit()
const {
return getSPFlags() & SPFlagLocalToUnit; }
1810 bool isDefinition()
const {
return getSPFlags() & SPFlagDefinition; }
1811 bool isOptimized()
const {
return getSPFlags() & SPFlagOptimized; }
1812 bool isMainSubprogram()
const {
return getSPFlags() & SPFlagMainSubprogram; }
1814 bool isArtificial()
const {
return getFlags() & FlagArtificial; }
1815 bool isPrivate()
const {
1818 bool isProtected()
const {
1821 bool isPublic()
const {
1824 bool isExplicit()
const {
return getFlags() & FlagExplicit; }
1825 bool isPrototyped()
const {
return getFlags() & FlagPrototyped; }
1826 bool areAllCallsDescribed()
const {
1827 return getFlags() & FlagAllCallsDescribed;
1829 bool isPure()
const {
return getSPFlags() & SPFlagPure; }
1830 bool isElemental()
const {
return getSPFlags() & SPFlagElemental; }
1831 bool isRecursive()
const {
return getSPFlags() & SPFlagRecursive; }
1832 bool isObjCDirect()
const {
return getSPFlags() & SPFlagObjCDirect; }
1838 bool isDeleted()
const {
return getSPFlags() & SPFlagDeleted; }
1844 bool isLValueReference()
const {
return getFlags() & FlagLValueReference; }
1850 bool isRValueReference()
const {
return getFlags() & FlagRValueReference; }
1855 bool isNoReturn()
const {
return getFlags() & FlagNoReturn; }
1860 bool isThunk()
const {
return getFlags() & FlagThunk; }
1862 DIScope *
getScope()
const {
return cast_or_null<DIScope>(getRawScope()); }
1869 DISubroutineType *
getType()
const {
1870 return cast_or_null<DISubroutineType>(getRawType());
1872 DIType *getContainingType()
const {
1873 return cast_or_null<DIType>(getRawContainingType());
1875 void replaceType(DISubroutineType *Ty) {
1880 DICompileUnit *getUnit()
const {
1881 return cast_or_null<DICompileUnit>(getRawUnit());
1884 DITemplateParameterArray getTemplateParams()
const {
1885 return cast_or_null<MDTuple>(getRawTemplateParams());
1888 return cast_or_null<DISubprogram>(getRawDeclaration());
1891 DINodeArray getRetainedNodes()
const {
1892 return cast_or_null<MDTuple>(getRawRetainedNodes());
1894 DITypeArray getThrownTypes()
const {
1895 return cast_or_null<MDTuple>(getRawThrownTypes());
1897 DINodeArray getAnnotations()
const {
1898 return cast_or_null<MDTuple>(getRawAnnotations());
1900 StringRef getTargetFuncName()
const {
1905 MDString *getRawName()
const {
return getOperandAs<MDString>(2); }
1906 MDString *getRawLinkageName()
const {
return getOperandAs<MDString>(3); }
1911 Metadata *getRawContainingType()
const {
1912 return getNumOperands() > 8 ? getOperandAs<Metadata>(8) : nullptr;
1914 Metadata *getRawTemplateParams()
const {
1915 return getNumOperands() > 9 ? getOperandAs<Metadata>(9) : nullptr;
1917 Metadata *getRawThrownTypes()
const {
1918 return getNumOperands() > 10 ? getOperandAs<Metadata>(10) : nullptr;
1920 Metadata *getRawAnnotations()
const {
1921 return getNumOperands() > 11 ? getOperandAs<Metadata>(11) : nullptr;
1923 MDString *getRawTargetFuncName()
const {
1924 return getNumOperands() > 12 ? getOperandAs<MDString>(12) : nullptr;
1927 void replaceRawLinkageName(MDString *
LinkageName) {
1930 void replaceRetainedNodes(DINodeArray
N) {
1937 bool describes(
const Function *
F)
const;
1972 TempDILocation cloneImpl()
const {
1994 TempDILocation
clone()
const {
return cloneImpl(); }
2002 StringRef getSubprogramLinkageName()
const {
2003 DISubprogram *SP =
getScope()->getSubprogram();
2006 auto Name = SP->getLinkageName();
2009 return SP->getName();
2012 DILocation *getInlinedAt()
const {
2025 DIFile *getFile()
const {
return getScope()->getFile(); }
2027 StringRef getDirectory()
const {
return getScope()->getDirectory(); }
2028 std::optional<StringRef> getSource()
const {
return getScope()->getSource(); }
2034 DILocalScope *getInlinedAtScope()
const {
2035 if (
auto *IA = getInlinedAt())
2036 return IA->getInlinedAtScope();
2074 inline unsigned getDiscriminator()
const;
2085 return ((Discriminator & 0x7) == 0x7) && (Discriminator & 0xFFFFFFF8);
2095 inline std::optional<const DILocation *>
2112 inline std::optional<const DILocation *>
2150 bool IsFSDiscriminator =
false) {
2154 auto DwarfBaseDiscriminator =
2156 if (DwarfBaseDiscriminator)
2157 return *DwarfBaseDiscriminator;
2166 if (IsFSDiscriminator)
2257 assert(Column < (1u << 16) &&
"Expected 16-bit column");
2264 bool ShouldCreate =
true) {
2270 static DILexicalBlock *getImpl(LLVMContext &Context,
Metadata *
Scope,
2274 TempDILexicalBlock cloneImpl()
const {
2289 TempDILexicalBlock
clone()
const {
return cloneImpl(); }
2313 bool ShouldCreate =
true) {
2319 static DILexicalBlockFile *getImpl(LLVMContext &Context,
Metadata *
Scope,
2322 bool ShouldCreate =
true);
2324 TempDILexicalBlockFile cloneImpl()
const {
2338 TempDILexicalBlockFile
clone()
const {
return cloneImpl(); }
2346unsigned DILocation::getDiscriminator()
const {
2347 if (
auto *
F = dyn_cast<DILexicalBlockFile>(
getScope()))
2348 return F->getDiscriminator();
2359 for (
auto *LBF = dyn_cast<DILexicalBlockFile>(
Scope);
2360 LBF && LBF->getDiscriminator() != 0;
2361 LBF = dyn_cast<DILexicalBlockFile>(
Scope))
2362 Scope = LBF->getScope();
2382std::optional<const DILocation *>
2384 unsigned BD,
DF, CI;
2398 return std::nullopt;
2401std::optional<const DILocation *>
2419 return std::nullopt;
2443 TempDINamespace cloneImpl()
const {
2456 TempDINamespace
clone()
const {
return cloneImpl(); }
2486 bool ShouldCreate =
true) {
2499 TempDIModule cloneImpl()
const {
2501 getConfigurationMacros(), getIncludePath(),
2502 getAPINotesFile(), getLineNo(), getIsDecl());
2510 bool IsDecl =
false),
2517 bool IsDecl =
false),
2521 TempDIModule
clone()
const {
return cloneImpl(); }
2523 DIScope *
getScope()
const {
return cast_or_null<DIScope>(getRawScope()); }
2532 MDString *getRawName()
const {
return getOperandAs<MDString>(2); }
2533 MDString *getRawConfigurationMacros()
const {
2534 return getOperandAs<MDString>(3);
2536 MDString *getRawIncludePath()
const {
return getOperandAs<MDString>(4); }
2537 MDString *getRawAPINotesFile()
const {
return getOperandAs<MDString>(5); }
2540 return MD->getMetadataID() == DIModuleKind;
2565 return MD->
getMetadataID() == DITemplateTypeParameterKind ||
2581 bool ShouldCreate =
true) {
2588 bool ShouldCreate =
true);
2590 TempDITemplateTypeParameter cloneImpl()
const {
2602 TempDITemplateTypeParameter
clone()
const {
return cloneImpl(); }
2624 bool ShouldCreate =
true) {
2628 static DITemplateValueParameter *getImpl(LLVMContext &Context,
unsigned Tag,
2632 bool ShouldCreate =
true);
2634 TempDITemplateValueParameter cloneImpl()
const {
2649 TempDITemplateValueParameter
clone()
const {
return cloneImpl(); }
2683 if (
auto *
BT = dyn_cast<DIBasicType>(
getType()))
2684 return BT->getSignedness();
2685 return std::nullopt;
2690 return F->getFilename();
2696 return F->getDirectory();
2702 return F->getSource();
2703 return std::nullopt;
2730 std::vector<uint64_t> Elements;
2734 Elements(Elements.begin(), Elements.end()) {}
2739 bool ShouldCreate =
true);
2741 TempDIExpression cloneImpl()
const {
2748 TempDIExpression
clone()
const {
return cloneImpl(); }
2755 assert(
I < Elements.size() &&
"Index out of range");
2762 std::optional<SignedOrUnsignedConstant>
isConstant()
const;
2950 static std::optional<const DIExpression *>
2976 bool SecondIndirect);
3003 unsigned &AddrClass);
3067 static std::optional<DIExpression *>
3069 unsigned SizeInBits);
3119 uint64_t SliceSizeInBits,
const Value *DbgPtr, int64_t DbgPtrOffsetInBits,
3121 std::optional<DIExpression::FragmentInfo> &Result,
3122 int64_t &OffsetFromLocationInBits);
3132 unsigned ToSize,
bool Signed);
3143 auto Fragment2 = *
Other->getFragmentInfo();
3161 std::pair<DIExpression *, const ConstantInt *>
3172 return std::tie(
A.SizeInBits,
A.OffsetInBits) ==
3173 std::tie(
B.SizeInBits,
B.OffsetInBits);
3178 return std::tie(
A.SizeInBits,
A.OffsetInBits) <
3179 std::tie(
B.SizeInBits,
B.OffsetInBits);
3184 static const uint64_t MaxVal = std::numeric_limits<uint64_t>::max();
3218 std::optional<DIExpression::ExprOperand>
take() {
3220 return std::nullopt;
3228 std::optional<DIExpression::ExprOperand>
peek()
const {
3230 return std::nullopt;
3235 std::optional<DIExpression::ExprOperand>
peekNext()
const {
3237 return std::nullopt;
3239 auto Next = Start.getNext();
3241 return std::nullopt;
3246 std::optional<DIExpression::ExprOperand>
peekNextN(
unsigned N)
const {
3248 return std::nullopt;
3250 for (
unsigned I = 0;
I <
N;
I++) {
3253 return std::nullopt;
3289 IsLocalToUnit(IsLocalToUnit), IsDefinition(IsDefinition) {}
3295 bool IsLocalToUnit,
bool IsDefinition,
3298 bool ShouldCreate =
true) {
3305 static DIGlobalVariable *
3308 bool IsLocalToUnit,
bool IsDefinition,
3311 bool ShouldCreate =
true);
3313 TempDIGlobalVariable cloneImpl()
const {
3325 unsigned Line,
DIType *
Type,
bool IsLocalToUnit,
bool IsDefinition,
3339 TempDIGlobalVariable
clone()
const {
return cloneImpl(); }
3383 bool ShouldCreate =
true);
3385 TempDICommonBlock cloneImpl()
const {
3400 TempDICommonBlock
clone()
const {
return cloneImpl(); }
3404 return cast_or_null<DIGlobalVariable>(
getRawDecl());
3434 Arg(Arg), Flags(Flags) {
3435 assert(Arg < (1 << 16) &&
"DILocalVariable: Arg out of range");
3444 bool ShouldCreate =
true) {
3449 static DILocalVariable *getImpl(LLVMContext &Context,
Metadata *
Scope,
3454 bool ShouldCreate =
true);
3456 TempDILocalVariable cloneImpl()
const {
3476 TempDILocalVariable
clone()
const {
return cloneImpl(); }
3524 bool ShouldCreate =
true) {
3530 bool ShouldCreate =
true);
3532 TempDILabel cloneImpl()
const {
3547 TempDILabel
clone()
const {
return cloneImpl(); }
3582 unsigned Attributes;
3603 TempDIObjCProperty cloneImpl()
const {
3623 TempDIObjCProperty
clone()
const {
return cloneImpl(); }
3635 return F->getFilename();
3641 return F->getDirectory();