Skip to content

Commit fb110a0

Browse files
authored
Merge pull request swiftlang#9600 from augusto2112/cp-spec
[DebugInfo] Add a specification attribute to LLVM DebugInfo (llvm#115362)
2 parents fdf2a46 + d21b229 commit fb110a0

File tree

13 files changed

+85
-86
lines changed

13 files changed

+85
-86
lines changed

llvm/include/llvm/IR/DIBuilder.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -488,9 +488,8 @@ namespace llvm {
488488
/// \param Elements Struct elements.
489489
/// \param RunTimeLang Optional parameter, Objective-C runtime version.
490490
/// \param UniqueIdentifier A unique identifier for the struct.
491-
/// \param SpecificationOf The type that this type completes (is a
492-
/// specification of). For example, this could be a templated type whose
493-
/// template parameters have been substituted in.
491+
/// \param Specification The type that this type completes. This is used by
492+
/// Swift to represent generic types.
494493
/// \param NumExtraInhabitants The number of extra inhabitants of the type.
495494
/// An extra inhabitant is a bit pattern that does not represent a valid
496495
/// value for instances of a given type.
@@ -499,7 +498,7 @@ namespace llvm {
499498
uint64_t SizeInBits, uint32_t AlignInBits, DINode::DIFlags Flags,
500499
DIType *DerivedFrom, DINodeArray Elements, unsigned RunTimeLang = 0,
501500
DIType *VTableHolder = nullptr, StringRef UniqueIdentifier = "",
502-
DIType *SpecificationOf = nullptr, uint32_t NumExtraInhabitants = 0);
501+
DIType *Specification = nullptr, uint32_t NumExtraInhabitants = 0);
503502

504503
/// Create debugging information entry for an union.
505504
/// \param Scope Scope in which this union is defined.

llvm/include/llvm/IR/DebugInfoMetadata.h

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1205,7 +1205,7 @@ class DICompositeType : public DIType {
12051205
static DICompositeType *
12061206
getImpl(LLVMContext &Context, unsigned Tag, StringRef Name, Metadata *File,
12071207
unsigned Line, DIScope *Scope, DIType *BaseType, uint64_t SizeInBits,
1208-
uint32_t AlignInBits, uint64_t OffsetInBits, DIType *SpecificationOf,
1208+
uint32_t AlignInBits, uint64_t OffsetInBits, DIType *Specification,
12091209
uint32_t NumExtraInhabitants, DIFlags Flags, DINodeArray Elements,
12101210
unsigned RuntimeLang, DIType *VTableHolder,
12111211
DITemplateParameterArray TemplateParams, StringRef Identifier,
@@ -1219,7 +1219,7 @@ class DICompositeType : public DIType {
12191219
TemplateParams.get(),
12201220
getCanonicalMDString(Context, Identifier), Discriminator,
12211221
DataLocation, Associated, Allocated, Rank, Annotations.get(),
1222-
SpecificationOf, NumExtraInhabitants, Storage, ShouldCreate);
1222+
Specification, NumExtraInhabitants, Storage, ShouldCreate);
12231223
}
12241224
static DICompositeType *
12251225
getImpl(LLVMContext &Context, unsigned Tag, MDString *Name, Metadata *File,
@@ -1229,7 +1229,7 @@ class DICompositeType : public DIType {
12291229
Metadata *VTableHolder, Metadata *TemplateParams,
12301230
MDString *Identifier, Metadata *Discriminator, Metadata *DataLocation,
12311231
Metadata *Associated, Metadata *Allocated, Metadata *Rank,
1232-
Metadata *Annotations, Metadata *SpecificationOf,
1232+
Metadata *Annotations, Metadata *Specification,
12331233
uint32_t NumExtraInhabitants, StorageType Storage,
12341234
bool ShouldCreate = true);
12351235

@@ -1240,7 +1240,7 @@ class DICompositeType : public DIType {
12401240
getFlags(), getElements(), getRuntimeLang(), getVTableHolder(),
12411241
getTemplateParams(), getIdentifier(), getDiscriminator(),
12421242
getRawDataLocation(), getRawAssociated(), getRawAllocated(),
1243-
getRawRank(), getAnnotations(), getSpecificationOf(),
1243+
getRawRank(), getAnnotations(), getSpecification(),
12441244
getNumExtraInhabitants());
12451245
}
12461246

@@ -1255,10 +1255,10 @@ class DICompositeType : public DIType {
12551255
StringRef Identifier = "", DIDerivedType *Discriminator = nullptr,
12561256
Metadata *DataLocation = nullptr, Metadata *Associated = nullptr,
12571257
Metadata *Allocated = nullptr, Metadata *Rank = nullptr,
1258-
DINodeArray Annotations = nullptr, DIType *SpecificationOf = nullptr,
1258+
DINodeArray Annotations = nullptr, DIType *Specification = nullptr,
12591259
uint32_t NumExtraInhabitants = 0),
12601260
(Tag, Name, File, Line, Scope, BaseType, SizeInBits, AlignInBits,
1261-
OffsetInBits, SpecificationOf, NumExtraInhabitants, Flags, Elements,
1261+
OffsetInBits, Specification, NumExtraInhabitants, Flags, Elements,
12621262
RuntimeLang, VTableHolder, TemplateParams, Identifier, Discriminator,
12631263
DataLocation, Associated, Allocated, Rank, Annotations))
12641264
DEFINE_MDNODE_GET(
@@ -1271,11 +1271,11 @@ class DICompositeType : public DIType {
12711271
Metadata *Discriminator = nullptr, Metadata *DataLocation = nullptr,
12721272
Metadata *Associated = nullptr, Metadata *Allocated = nullptr,
12731273
Metadata *Rank = nullptr, Metadata *Annotations = nullptr,
1274-
Metadata *SpecificationOf = nullptr, uint32_t NumExtraInhabitants = 0),
1274+
Metadata *Specification = nullptr, uint32_t NumExtraInhabitants = 0),
12751275
(Tag, Name, File, Line, Scope, BaseType, SizeInBits, AlignInBits,
12761276
OffsetInBits, Flags, Elements, RuntimeLang, VTableHolder, TemplateParams,
12771277
Identifier, Discriminator, DataLocation, Associated, Allocated, Rank,
1278-
Annotations, SpecificationOf, NumExtraInhabitants))
1278+
Annotations, Specification, NumExtraInhabitants))
12791279

12801280
TempDICompositeType clone() const { return cloneImpl(); }
12811281

@@ -1290,9 +1290,9 @@ class DICompositeType : public DIType {
12901290
getODRType(LLVMContext &Context, MDString &Identifier, unsigned Tag,
12911291
MDString *Name, Metadata *File, unsigned Line, Metadata *Scope,
12921292
Metadata *BaseType, uint64_t SizeInBits, uint32_t AlignInBits,
1293-
uint64_t OffsetInBits, Metadata *SpecificationOf,
1294-
uint32_t NumExtraInhabitants, DIFlags Flags,
1295-
Metadata *Elements, unsigned RuntimeLang, Metadata *VTableHolder,
1293+
uint64_t OffsetInBits, Metadata *Specification,
1294+
uint32_t NumExtraInhabitants, DIFlags Flags, Metadata *Elements,
1295+
unsigned RuntimeLang, Metadata *VTableHolder,
12961296
Metadata *TemplateParams, Metadata *Discriminator,
12971297
Metadata *DataLocation, Metadata *Associated, Metadata *Allocated,
12981298
Metadata *Rank, Metadata *Annotations);
@@ -1312,7 +1312,7 @@ class DICompositeType : public DIType {
13121312
buildODRType(LLVMContext &Context, MDString &Identifier, unsigned Tag,
13131313
MDString *Name, Metadata *File, unsigned Line, Metadata *Scope,
13141314
Metadata *BaseType, uint64_t SizeInBits, uint32_t AlignInBits,
1315-
uint64_t OffsetInBits, Metadata *SpecificationOf,
1315+
uint64_t OffsetInBits, Metadata *Specification,
13161316
uint32_t NumExtraInhabitants, DIFlags Flags, Metadata *Elements,
13171317
unsigned RuntimeLang, Metadata *VTableHolder,
13181318
Metadata *TemplateParams, Metadata *Discriminator,
@@ -1377,11 +1377,10 @@ class DICompositeType : public DIType {
13771377
return cast_or_null<MDTuple>(getRawAnnotations());
13781378
}
13791379

1380-
Metadata *getRawSpecificationOf() const { return getOperand(14); }
1381-
DIType *getSpecificationOf() const {
1382-
return cast_or_null<DIType>(getRawSpecificationOf());
1380+
Metadata *getRawSpecification() const { return getOperand(14); }
1381+
DIType *getSpecification() const {
1382+
return cast_or_null<DIType>(getRawSpecification());
13831383
}
1384-
13851384
/// Replace operands.
13861385
///
13871386
/// If this \a isUniqued() and not \a isResolved(), on a uniquing collision

llvm/lib/AsmParser/LLParser.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5433,7 +5433,7 @@ bool LLParser::parseDICompositeType(MDNode *&Result, bool IsDistinct) {
54335433
OPTIONAL(rank, MDSignedOrMDField, ); \
54345434
OPTIONAL(annotations, MDField, ); \
54355435
OPTIONAL(num_extra_inhabitants, MDUnsignedField, (0, UINT32_MAX)); \
5436-
OPTIONAL(specification_of, MDField, );
5436+
OPTIONAL(specification, MDField, );
54375437
PARSE_MD_FIELDS();
54385438
#undef VISIT_MD_FIELDS
54395439

@@ -5449,7 +5449,7 @@ bool LLParser::parseDICompositeType(MDNode *&Result, bool IsDistinct) {
54495449
if (auto *CT = DICompositeType::buildODRType(
54505450
Context, *identifier.Val, tag.Val, name.Val, file.Val, line.Val,
54515451
scope.Val, baseType.Val, size.Val, align.Val, offset.Val,
5452-
specification_of.Val, num_extra_inhabitants.Val, flags.Val,
5452+
specification.Val, num_extra_inhabitants.Val, flags.Val,
54535453
elements.Val, runtimeLang.Val, vtableHolder.Val, templateParams.Val,
54545454
discriminator.Val, dataLocation.Val, associated.Val, allocated.Val,
54555455
Rank, annotations.Val)) {
@@ -5465,7 +5465,7 @@ bool LLParser::parseDICompositeType(MDNode *&Result, bool IsDistinct) {
54655465
size.Val, align.Val, offset.Val, flags.Val, elements.Val,
54665466
runtimeLang.Val, vtableHolder.Val, templateParams.Val, identifier.Val,
54675467
discriminator.Val, dataLocation.Val, associated.Val, allocated.Val, Rank,
5468-
annotations.Val, specification_of.Val, num_extra_inhabitants.Val));
5468+
annotations.Val, specification.Val, num_extra_inhabitants.Val));
54695469
return false;
54705470
}
54715471

llvm/lib/Bitcode/Reader/MetadataLoader.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1633,7 +1633,7 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
16331633
Metadata *Allocated = nullptr;
16341634
Metadata *Rank = nullptr;
16351635
Metadata *Annotations = nullptr;
1636-
Metadata *SpecificationOf = nullptr;
1636+
Metadata *Specification = nullptr;
16371637
auto *Identifier = getMDString(Record[15]);
16381638
// If this module is being parsed so that it can be ThinLTO imported
16391639
// into another module, composite types only need to be imported as
@@ -1683,14 +1683,14 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
16831683
Annotations = getMDOrNull(Record[21]);
16841684
}
16851685
if (Record.size() > 23) {
1686-
SpecificationOf = getMDOrNull(Record[23]);
1686+
Specification = getMDOrNull(Record[23]);
16871687
}
16881688
}
16891689
DICompositeType *CT = nullptr;
16901690
if (Identifier)
16911691
CT = DICompositeType::buildODRType(
16921692
Context, *Identifier, Tag, Name, File, Line, Scope, BaseType,
1693-
SizeInBits, AlignInBits, OffsetInBits, SpecificationOf,
1693+
SizeInBits, AlignInBits, OffsetInBits, Specification,
16941694
NumExtraInhabitants, Flags, Elements, RuntimeLang, VTableHolder,
16951695
TemplateParams, Discriminator, DataLocation, Associated, Allocated,
16961696
Rank, Annotations);
@@ -1702,7 +1702,7 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
17021702
SizeInBits, AlignInBits, OffsetInBits, Flags,
17031703
Elements, RuntimeLang, VTableHolder, TemplateParams,
17041704
Identifier, Discriminator, DataLocation, Associated,
1705-
Allocated, Rank, Annotations, SpecificationOf,
1705+
Allocated, Rank, Annotations, Specification,
17061706
NumExtraInhabitants));
17071707
if (!IsNotUsedInTypeRef && Identifier)
17081708
MetadataList.addTypeRef(*Identifier, *cast<DICompositeType>(CT));

llvm/lib/Bitcode/Writer/BitcodeWriter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1928,7 +1928,7 @@ void ModuleBitcodeWriter::writeDICompositeType(
19281928
Record.push_back(VE.getMetadataOrNullID(N->getRawRank()));
19291929
Record.push_back(VE.getMetadataOrNullID(N->getAnnotations().get()));
19301930
Record.push_back(N->getNumExtraInhabitants());
1931-
Record.push_back(VE.getMetadataOrNullID(N->getRawSpecificationOf()));
1931+
Record.push_back(VE.getMetadataOrNullID(N->getRawSpecification()));
19321932

19331933
Stream.EmitRecord(bitc::METADATA_COMPOSITE_TYPE, Record, Abbrev);
19341934
Record.clear();

llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1045,7 +1045,7 @@ void DwarfUnit::constructTypeDIE(DIE &Buffer, const DICompositeType *CTy) {
10451045
CC);
10461046
}
10471047

1048-
if (auto *SpecifiedFrom = CTy->getSpecificationOf())
1048+
if (auto *SpecifiedFrom = CTy->getSpecification())
10491049
addDIEEntry(Buffer, dwarf::DW_AT_specification,
10501050
*getOrCreateContextDIE(SpecifiedFrom));
10511051

llvm/lib/IR/AsmWriter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2219,8 +2219,8 @@ static void writeDICompositeType(raw_ostream &Out, const DICompositeType *N,
22192219
else
22202220
Printer.printMetadata("rank", N->getRawRank(), /*ShouldSkipNull */ true);
22212221
Printer.printMetadata("annotations", N->getRawAnnotations());
2222-
if (auto *SpecificationOf = N->getRawSpecificationOf())
2223-
Printer.printMetadata("specification_of", SpecificationOf);
2222+
if (auto *Specification = N->getRawSpecification())
2223+
Printer.printMetadata("specification", Specification);
22242224
Out << ")";
22252225
}
22262226

llvm/lib/IR/DIBuilder.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -522,13 +522,13 @@ DICompositeType *DIBuilder::createStructType(
522522
DIScope *Context, StringRef Name, DIFile *File, unsigned LineNumber,
523523
uint64_t SizeInBits, uint32_t AlignInBits, DINode::DIFlags Flags,
524524
DIType *DerivedFrom, DINodeArray Elements, unsigned RunTimeLang,
525-
DIType *VTableHolder, StringRef UniqueIdentifier, DIType *SpecificationOf,
525+
DIType *VTableHolder, StringRef UniqueIdentifier, DIType *Specification,
526526
uint32_t NumExtraInhabitants) {
527527
auto *R = DICompositeType::get(
528528
VMContext, dwarf::DW_TAG_structure_type, Name, File, LineNumber,
529529
getNonCompileUnitScope(Context), DerivedFrom, SizeInBits, AlignInBits, 0,
530530
Flags, Elements, RunTimeLang, VTableHolder, nullptr, UniqueIdentifier,
531-
nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, SpecificationOf,
531+
nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, Specification,
532532
NumExtraInhabitants);
533533
trackIfUnresolved(R);
534534
return R;

llvm/lib/IR/DebugInfoMetadata.cpp

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -770,9 +770,8 @@ DICompositeType *DICompositeType::getImpl(
770770
Metadata *Elements, unsigned RuntimeLang, Metadata *VTableHolder,
771771
Metadata *TemplateParams, MDString *Identifier, Metadata *Discriminator,
772772
Metadata *DataLocation, Metadata *Associated, Metadata *Allocated,
773-
Metadata *Rank, Metadata *Annotations, Metadata *SpecificationOf,
774-
uint32_t NumExtraInhabitants, StorageType Storage,
775-
bool ShouldCreate) {
773+
Metadata *Rank, Metadata *Annotations, Metadata *Specification,
774+
uint32_t NumExtraInhabitants, StorageType Storage, bool ShouldCreate) {
776775
assert(isCanonical(Name) && "Expected canonical MDString");
777776

778777
// Keep this in sync with buildODRType.
@@ -781,11 +780,11 @@ DICompositeType *DICompositeType::getImpl(
781780
(Tag, Name, File, Line, Scope, BaseType, SizeInBits, AlignInBits,
782781
OffsetInBits, Flags, Elements, RuntimeLang, VTableHolder, TemplateParams,
783782
Identifier, Discriminator, DataLocation, Associated, Allocated, Rank,
784-
Annotations, SpecificationOf, NumExtraInhabitants));
783+
Annotations, Specification, NumExtraInhabitants));
785784
Metadata *Ops[] = {File, Scope, Name, BaseType,
786785
Elements, VTableHolder, TemplateParams, Identifier,
787786
Discriminator, DataLocation, Associated, Allocated,
788-
Rank, Annotations, SpecificationOf};
787+
Rank, Annotations, Specification};
789788
DEFINE_GETIMPL_STORE(DICompositeType,
790789
(Tag, Line, RuntimeLang, SizeInBits, AlignInBits,
791790
OffsetInBits, NumExtraInhabitants, Flags),
@@ -796,7 +795,7 @@ DICompositeType *DICompositeType::buildODRType(
796795
LLVMContext &Context, MDString &Identifier, unsigned Tag, MDString *Name,
797796
Metadata *File, unsigned Line, Metadata *Scope, Metadata *BaseType,
798797
uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits,
799-
Metadata *SpecificationOf, uint32_t NumExtraInhabitants, DIFlags Flags,
798+
Metadata *Specification, uint32_t NumExtraInhabitants, DIFlags Flags,
800799
Metadata *Elements, unsigned RuntimeLang, Metadata *VTableHolder,
801800
Metadata *TemplateParams, Metadata *Discriminator, Metadata *DataLocation,
802801
Metadata *Associated, Metadata *Allocated, Metadata *Rank,
@@ -811,8 +810,7 @@ DICompositeType *DICompositeType::buildODRType(
811810
AlignInBits, OffsetInBits, Flags, Elements, RuntimeLang,
812811
VTableHolder, TemplateParams, &Identifier, Discriminator,
813812
DataLocation, Associated, Allocated, Rank, Annotations,
814-
SpecificationOf, NumExtraInhabitants);
815-
813+
Specification, NumExtraInhabitants);
816814
if (CT->getTag() != Tag)
817815
return nullptr;
818816

@@ -827,7 +825,7 @@ DICompositeType *DICompositeType::buildODRType(
827825
Metadata *Ops[] = {File, Scope, Name, BaseType,
828826
Elements, VTableHolder, TemplateParams, &Identifier,
829827
Discriminator, DataLocation, Associated, Allocated,
830-
Rank, Annotations, SpecificationOf};
828+
Rank, Annotations, Specification};
831829
assert((std::end(Ops) - std::begin(Ops)) == (int)CT->getNumOperands() &&
832830
"Mismatched number of operands");
833831
for (unsigned I = 0, E = CT->getNumOperands(); I != E; ++I)
@@ -840,7 +838,7 @@ DICompositeType *DICompositeType::getODRType(
840838
LLVMContext &Context, MDString &Identifier, unsigned Tag, MDString *Name,
841839
Metadata *File, unsigned Line, Metadata *Scope, Metadata *BaseType,
842840
uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits,
843-
Metadata *SpecificationOf, uint32_t NumExtraInhabitants, DIFlags Flags,
841+
Metadata *Specification, uint32_t NumExtraInhabitants, DIFlags Flags,
844842
Metadata *Elements, unsigned RuntimeLang, Metadata *VTableHolder,
845843
Metadata *TemplateParams, Metadata *Discriminator, Metadata *DataLocation,
846844
Metadata *Associated, Metadata *Allocated, Metadata *Rank,
@@ -854,7 +852,7 @@ DICompositeType *DICompositeType::getODRType(
854852
Context, Tag, Name, File, Line, Scope, BaseType, SizeInBits,
855853
AlignInBits, OffsetInBits, Flags, Elements, RuntimeLang, VTableHolder,
856854
TemplateParams, &Identifier, Discriminator, DataLocation, Associated,
857-
Allocated, Rank, Annotations, SpecificationOf, NumExtraInhabitants);
855+
Allocated, Rank, Annotations, Specification, NumExtraInhabitants);
858856
} else {
859857
if (CT->getTag() != Tag)
860858
return nullptr;

llvm/lib/IR/LLVMContextImpl.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -655,7 +655,7 @@ template <> struct MDNodeKeyImpl<DICompositeType> {
655655
Metadata *Allocated;
656656
Metadata *Rank;
657657
Metadata *Annotations;
658-
Metadata *SpecificationOf;
658+
Metadata *Specification;
659659
uint32_t NumExtraInhabitants;
660660

661661
MDNodeKeyImpl(unsigned Tag, MDString *Name, Metadata *File, unsigned Line,
@@ -666,17 +666,16 @@ template <> struct MDNodeKeyImpl<DICompositeType> {
666666
MDString *Identifier, Metadata *Discriminator,
667667
Metadata *DataLocation, Metadata *Associated,
668668
Metadata *Allocated, Metadata *Rank, Metadata *Annotations,
669-
Metadata *SpecificationOf, uint32_t NumExtraInhabitants)
669+
Metadata *Specification, uint32_t NumExtraInhabitants)
670670
: Tag(Tag), Name(Name), File(File), Line(Line), Scope(Scope),
671671
BaseType(BaseType), SizeInBits(SizeInBits), OffsetInBits(OffsetInBits),
672672
AlignInBits(AlignInBits), Flags(Flags), Elements(Elements),
673673
RuntimeLang(RuntimeLang), VTableHolder(VTableHolder),
674674
TemplateParams(TemplateParams), Identifier(Identifier),
675675
Discriminator(Discriminator), DataLocation(DataLocation),
676676
Associated(Associated), Allocated(Allocated), Rank(Rank),
677-
Annotations(Annotations), SpecificationOf(SpecificationOf),
678-
NumExtraInhabitants(NumExtraInhabitants) {
679-
}
677+
Annotations(Annotations), Specification(Specification),
678+
NumExtraInhabitants(NumExtraInhabitants) {}
680679
MDNodeKeyImpl(const DICompositeType *N)
681680
: Tag(N->getTag()), Name(N->getRawName()), File(N->getRawFile()),
682681
Line(N->getLine()), Scope(N->getRawScope()),
@@ -690,7 +689,7 @@ template <> struct MDNodeKeyImpl<DICompositeType> {
690689
DataLocation(N->getRawDataLocation()),
691690
Associated(N->getRawAssociated()), Allocated(N->getRawAllocated()),
692691
Rank(N->getRawRank()), Annotations(N->getRawAnnotations()),
693-
SpecificationOf(N->getSpecificationOf()),
692+
Specification(N->getSpecification()),
694693
NumExtraInhabitants(N->getNumExtraInhabitants()) {}
695694

696695
bool isKeyOf(const DICompositeType *RHS) const {
@@ -710,7 +709,7 @@ template <> struct MDNodeKeyImpl<DICompositeType> {
710709
Associated == RHS->getRawAssociated() &&
711710
Allocated == RHS->getRawAllocated() && Rank == RHS->getRawRank() &&
712711
Annotations == RHS->getRawAnnotations() &&
713-
SpecificationOf == RHS->getSpecificationOf() &&
712+
Specification == RHS->getSpecification() &&
714713
NumExtraInhabitants == RHS->getNumExtraInhabitants();
715714
}
716715

0 commit comments

Comments
 (0)