File tree Expand file tree Collapse file tree 1 file changed +9
-8
lines changed Expand file tree Collapse file tree 1 file changed +9
-8
lines changed Original file line number Diff line number Diff line change @@ -1978,16 +1978,17 @@ void IRGenerator::emitDynamicReplacements() {
19781978 auto keyRef = IGM.getAddrOfLLVMVariableOrGOTEquivalent (
19791979 LinkEntity::forDynamicallyReplaceableFunctionKey (origFunc));
19801980
1981- llvm::Constant *newFnPtr = llvm::ConstantExpr::getBitCast (
1982- newFunc->isAsync ()
1983- ? IGM.getAddrOfAsyncFunctionPointer (
1984- LinkEntity::forSILFunction (newFunc))
1985- : IGM.getAddrOfSILFunction (newFunc, NotForDefinition),
1986- IGM.Int8PtrTy );
1987-
19881981 auto replacement = replacementsArray.beginStruct ();
19891982 replacement.addRelativeAddress (keyRef); // tagged relative reference.
1990- replacement.addRelativeAddress (newFnPtr); // direct relative reference.
1983+ if (newFunc->isAsync ()) {
1984+ replacement.addRelativeAddress (llvm::ConstantExpr::getBitCast (
1985+ IGM.getAddrOfAsyncFunctionPointer (
1986+ LinkEntity::forSILFunction (newFunc)),
1987+ IGM.Int8PtrTy ));
1988+ } else {
1989+ replacement.addCompactFunctionReference (IGM.getAddrOfSILFunction (
1990+ newFunc, NotForDefinition)); // direct relative reference.
1991+ }
19911992 replacement.addRelativeAddress (
19921993 replacementLinkEntry); // direct relative reference.
19931994 replacement.addInt32 (
You can’t perform that action at this time.
0 commit comments