diff --git a/src/coreclr/jit/codegenxarch.cpp b/src/coreclr/jit/codegenxarch.cpp index 0857ee820fb2ae..1212680e83e5c1 100644 --- a/src/coreclr/jit/codegenxarch.cpp +++ b/src/coreclr/jit/codegenxarch.cpp @@ -115,6 +115,13 @@ void CodeGen::genEmitGSCookieCheck(bool pushReg) // these cannot be a part of any kind of return regGSCheck = REG_R8; regNumber regGSCheckAlternative = REG_R9; + + // except for swift, where R8 can be used for returns + if (compiler->info.compCallConv == CorInfoCallConvExtension::Swift) + { + regGSCheck = REG_R9; + regGSCheckAlternative = REG_R10; + } #endif if (compiler->lvaKeepAliveAndReportThis() && compiler->lvaGetDesc(compiler->info.compThisArg)->lvIsInReg() &&