From b44f11e57491f813ab6c7e760c01a902e35bcdf4 Mon Sep 17 00:00:00 2001 From: Brian Sullivan Date: Fri, 15 Feb 2019 18:06:38 -0800 Subject: [PATCH] Correct the assert to add R8 as a potential valid register Also fix the calls to RemoveElemD to use lvVarIndex Re-enable the interop tests that were failing on ARM64 --- src/jit/codegenarmarch.cpp | 14 ++++++++------ tests/issues.targets | 18 ------------------ 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/src/jit/codegenarmarch.cpp b/src/jit/codegenarmarch.cpp index e8f38b7..5147f4e 100644 --- a/src/jit/codegenarmarch.cpp +++ b/src/jit/codegenarmarch.cpp @@ -2717,14 +2717,14 @@ void CodeGen::genJmpMethod(GenTree* jmp) if (compiler->lvaIsGCTracked(varDsc)) { - VarSetOps::RemoveElemD(compiler, gcInfo.gcVarPtrSetCur, varNum); + VarSetOps::RemoveElemD(compiler, gcInfo.gcVarPtrSetCur, varDsc->lvVarIndex); } } - // In case of a jmp call to a vararg method ensure only integer registers are passed. if (compiler->info.compIsVarArgs) { - assert((genRegMask(argReg) & RBM_ARG_REGS) != RBM_NONE); + // In case of a jmp call to a vararg method ensure only integer registers are passed. + assert((genRegMask(argReg) & (RBM_ARG_REGS | RBM_ARG_RET_BUFF)) != RBM_NONE); fixedIntArgMask |= genRegMask(argReg); @@ -2740,7 +2740,9 @@ void CodeGen::genJmpMethod(GenTree* jmp) firstArgVarNum = varNum; } } -#else + +#else // !_TARGET_ARM64_ + bool twoParts = false; var_types loadType = TYP_UNDEF; if (varDsc->TypeGet() == TYP_LONG) @@ -2835,9 +2837,9 @@ void CodeGen::genJmpMethod(GenTree* jmp) if (compiler->lvaIsGCTracked(varDsc)) { - VarSetOps::RemoveElemD(compiler, gcInfo.gcVarPtrSetCur, varNum); + VarSetOps::RemoveElemD(compiler, gcInfo.gcVarPtrSetCur, varDsc->lvVarIndex); } -#endif +#endif // !_TARGET_ARM64_ } // Jmp call to a vararg method - if the method has fewer than fixed arguments that can be max size of reg, diff --git a/tests/issues.targets b/tests/issues.targets index 5c43c05..bfaf3f2 100644 --- a/tests/issues.targets +++ b/tests/issues.targets @@ -408,24 +408,6 @@ Needs Triage - - Needs Triage - - - Needs Triage - - - Needs Triage - - - Needs Triage - - - Needs Triage - - - Needs Triage - -- 2.7.4