From c0ca9581eceff89e992430f379a82fe26a267a4f Mon Sep 17 00:00:00 2001 From: Sergey Andreenko Date: Tue, 5 Jan 2021 17:58:46 -0800 Subject: [PATCH] Fix `assert(isByteReg(ireg))`. (#46567) --- src/coreclr/jit/lsrabuild.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/coreclr/jit/lsrabuild.cpp b/src/coreclr/jit/lsrabuild.cpp index ac383e5..06b6799 100644 --- a/src/coreclr/jit/lsrabuild.cpp +++ b/src/coreclr/jit/lsrabuild.cpp @@ -3273,11 +3273,20 @@ int LinearScan::BuildMultiRegStoreLoc(GenTreeLclVar* storeLoc) // for (unsigned int i = 0; i < dstCount; ++i) { + LclVarDsc* fieldVarDsc = compiler->lvaGetDesc(varDsc->lvFieldLclStart + i); + if (isMultiRegSrc) { - BuildUse(op1, RBM_NONE, i); + regMaskTP srcCandidates = RBM_NONE; +#ifdef TARGET_X86 + var_types type = fieldVarDsc->TypeGet(); + if (varTypeIsByte(type)) + { + srcCandidates = allByteRegs(); + } +#endif // TARGET_X86 + BuildUse(op1, srcCandidates, i); } - LclVarDsc* fieldVarDsc = compiler->lvaGetDesc(varDsc->lvFieldLclStart + i); assert(isCandidateVar(fieldVarDsc)); BuildStoreLocDef(storeLoc, fieldVarDsc, nullptr, i); if (isMultiRegSrc && (i < (dstCount - 1))) -- 2.7.4