@@ -750,7 +750,7 @@ static MetadataResponse emitNominalMetadataRef(IRGenFunction &IGF,
750750 theDecl, genericArgs.Types , NotForDefinition);
751751
752752 response = IGF.emitGenericTypeMetadataAccessFunctionCall (
753- accessor, genericArgs.Values , request);
753+ accessor, genericArgs.Values , request, genericArgs. hasPacks );
754754 }
755755
756756 IGF.setScopedLocalTypeMetadata (theType, response);
@@ -2467,11 +2467,9 @@ void irgen::emitCacheAccessFunction(IRGenModule &IGM, llvm::Function *accessor,
24672467 IGF.Builder .CreateRet (ret);
24682468}
24692469
2470- MetadataResponse
2471- IRGenFunction::emitGenericTypeMetadataAccessFunctionCall (
2472- llvm::Function *accessFunction,
2473- ArrayRef<llvm::Value *> args,
2474- DynamicMetadataRequest request) {
2470+ MetadataResponse IRGenFunction::emitGenericTypeMetadataAccessFunctionCall (
2471+ llvm::Function *accessFunction, ArrayRef<llvm::Value *> args,
2472+ DynamicMetadataRequest request, bool hasPacks) {
24752473
24762474 SmallVector<llvm::Value *, 8 > callArgs;
24772475
@@ -2495,7 +2493,7 @@ IRGenFunction::emitGenericTypeMetadataAccessFunctionCall(
24952493 accessFunction, callArgs);
24962494 call->setDoesNotThrow ();
24972495 call->setCallingConv (IGM.SwiftCC );
2498- call->setMemoryEffects (allocatedArgsBuffer
2496+ call->setMemoryEffects (hasPacks || allocatedArgsBuffer
24992497 ? llvm::MemoryEffects::inaccessibleOrArgMemOnly ()
25002498 : llvm::MemoryEffects::none ());
25012499
0 commit comments