This repository was archived by the owner on Jan 23, 2023. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +13
-0
lines changed Expand file tree Collapse file tree 1 file changed +13
-0
lines changed Original file line number Diff line number Diff line change @@ -7047,6 +7047,19 @@ bool Compiler::fgCanFastTailCall(GenTreeCall* callee)
7047
7047
// out-going area required for callee is bounded by caller's fixed argument space.
7048
7048
//
7049
7049
// Note that callee being a vararg method is not a problem since we can account the params being passed.
7050
+ //
7051
+ // We will currently decide to not fast tail call on Windows armarch if the caller or callee is a vararg
7052
+ // method. This is due to the ABI differences for native vararg methods for these platforms. There is
7053
+ // work required to shuffle arguments to the correct locations.
7054
+
7055
+ #if (defined(_TARGET_WINDOWS_) && defined(_TARGET_ARM_)) || (defined(_TARGET_WINDOWS_) && defined(_TARGET_ARM64_))
7056
+ if (info.compIsVarArgs || callee->IsVarargs())
7057
+ {
7058
+ reportFastTailCallDecision("Fast tail calls with varargs not supported on Windows ARM/ARM64", 0, 0);
7059
+ return false;
7060
+ }
7061
+ #endif // (defined(_TARGET_WINDOWS_) && defined(_TARGET_ARM_)) || defined(_TARGET_WINDOWS_) && defined(_TARGET_ARM64_))
7062
+
7050
7063
unsigned nCallerArgs = info.compArgsCount;
7051
7064
7052
7065
size_t callerArgRegCount = codeGen->intRegState.rsCalleeRegArgCount;
You can’t perform that action at this time.
0 commit comments