@@ -4528,15 +4528,18 @@ llvm::Error DeclDeserializer::deserializeDeclCommon() {
4528
4528
serialization::decls_block::DynamicReplacementDeclAttrLayout::
4529
4529
readRecord (scratch, isImplicit, replacedFunID, numArgs, rawPieceIDs);
4530
4530
4531
- auto baseName = MF.getDeclBaseName (rawPieceIDs[0 ]);
4531
+ auto moduleSelector = MF.getIdentifier (rawPieceIDs[0 ]);
4532
+ auto baseName = MF.getDeclBaseName (rawPieceIDs[1 ]);
4532
4533
SmallVector<Identifier, 4 > pieces;
4533
- for (auto pieceID : rawPieceIDs.slice (1 ))
4534
+ for (auto pieceID : rawPieceIDs.slice (2 ))
4534
4535
pieces.push_back (MF.getIdentifier (pieceID));
4535
4536
4537
+ DeclNameRef replacedFunName (ctx, moduleSelector, baseName, pieces);
4538
+
4536
4539
assert (numArgs != 0 );
4537
4540
assert (!isImplicit && " Need to update for implicit" );
4538
- Attr = DynamicReplacementAttr::create (
4539
- ctx, DeclNameRef ({ ctx, baseName, pieces }), &MF, replacedFunID);
4541
+ Attr = DynamicReplacementAttr::create (ctx, replacedFunName, &MF,
4542
+ replacedFunID);
4540
4543
break ;
4541
4544
}
4542
4545
@@ -4630,6 +4633,7 @@ llvm::Error DeclDeserializer::deserializeDeclCommon() {
4630
4633
4631
4634
case decls_block::Derivative_DECL_ATTR: {
4632
4635
bool isImplicit;
4636
+ uint64_t origModuleSelectorId;
4633
4637
uint64_t origNameId;
4634
4638
bool hasAccessorKind;
4635
4639
uint64_t rawAccessorKind;
@@ -4638,8 +4642,9 @@ llvm::Error DeclDeserializer::deserializeDeclCommon() {
4638
4642
ArrayRef<uint64_t > parameters;
4639
4643
4640
4644
serialization::decls_block::DerivativeDeclAttrLayout::readRecord (
4641
- scratch, isImplicit, origNameId, hasAccessorKind, rawAccessorKind,
4642
- origDeclId, rawDerivativeKind, parameters);
4645
+ scratch, isImplicit, origModuleSelectorId, origNameId,
4646
+ hasAccessorKind, rawAccessorKind, origDeclId, rawDerivativeKind,
4647
+ parameters);
4643
4648
4644
4649
Optional<AccessorKind> accessorKind = None;
4645
4650
if (hasAccessorKind) {
@@ -4649,8 +4654,12 @@ llvm::Error DeclDeserializer::deserializeDeclCommon() {
4649
4654
accessorKind = *maybeAccessorKind;
4650
4655
}
4651
4656
4652
- DeclNameRefWithLoc origName{DeclNameRef (MF.getDeclBaseName (origNameId)),
4653
- DeclNameLoc (), accessorKind};
4657
+ Identifier origModuleSelector = MF.getIdentifier (origModuleSelectorId);
4658
+ DeclBaseName origBaseName = MF.getDeclBaseName (origNameId);
4659
+ DeclNameRef origName (ctx, origModuleSelector, origBaseName);
4660
+ DeclNameRefWithLoc origNameWithLoc{origName, DeclNameLoc (),
4661
+ accessorKind};
4662
+
4654
4663
auto derivativeKind =
4655
4664
getActualAutoDiffDerivativeFunctionKind (rawDerivativeKind);
4656
4665
if (!derivativeKind)
@@ -4662,7 +4671,8 @@ llvm::Error DeclDeserializer::deserializeDeclCommon() {
4662
4671
4663
4672
auto *derivativeAttr =
4664
4673
DerivativeAttr::create (ctx, isImplicit, SourceLoc (), SourceRange (),
4665
- /* baseType*/ nullptr , origName, indices);
4674
+ /* baseType*/ nullptr , origNameWithLoc,
4675
+ indices);
4666
4676
derivativeAttr->setOriginalFunctionResolver (&MF, origDeclId);
4667
4677
derivativeAttr->setDerivativeKind (*derivativeKind);
4668
4678
Attr = derivativeAttr;
0 commit comments