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() {
1978
1978
auto keyRef = IGM.getAddrOfLLVMVariableOrGOTEquivalent (
1979
1979
LinkEntity::forDynamicallyReplaceableFunctionKey (origFunc));
1980
1980
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
-
1988
1981
auto replacement = replacementsArray.beginStruct ();
1989
1982
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
+ }
1991
1992
replacement.addRelativeAddress (
1992
1993
replacementLinkEntry); // direct relative reference.
1993
1994
replacement.addInt32 (
You can’t perform that action at this time.
0 commit comments