From 90f19901444f20b4d7ddf0fcc2b5af714ab0b0f5 Mon Sep 17 00:00:00 2001 From: Carol Eidt Date: Wed, 10 Jun 2020 10:06:43 -0700 Subject: [PATCH] Fix issue exposed by #37280 --- src/coreclr/src/jit/liveness.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/coreclr/src/jit/liveness.cpp b/src/coreclr/src/jit/liveness.cpp index f8da2e346c166..dc24bdffc2bab 100644 --- a/src/coreclr/src/jit/liveness.cpp +++ b/src/coreclr/src/jit/liveness.cpp @@ -1645,18 +1645,19 @@ bool Compiler::fgComputeLifeUntrackedLocal(VARSET_TP& life, for (unsigned i = varDsc.lvFieldLclStart; i < varDsc.lvFieldLclStart + varDsc.lvFieldCnt; ++i) { + LclVarDsc* fieldVarDsc = lvaGetDesc(i); #if !defined(TARGET_64BIT) - if (!varTypeIsLong(lvaTable[i].lvType) || !lvaTable[i].lvPromoted) + if (!varTypeIsLong(fieldVarDsc->lvType) || !fieldVarDsc->lvPromoted) #endif // !defined(TARGET_64BIT) { - noway_assert(lvaTable[i].lvIsStructField); + noway_assert(fieldVarDsc->lvIsStructField); } - if (lvaTable[i].lvTracked) + if (fieldVarDsc->lvTracked) { - const unsigned varIndex = lvaTable[i].lvVarIndex; + const unsigned varIndex = fieldVarDsc->lvVarIndex; noway_assert(varIndex < lvaTrackedCount); VarSetOps::AddElemD(this, fieldSet, varIndex); - if (isDef && !VarSetOps::IsMember(this, life, varIndex)) + if (isDef && lclVarNode->IsMultiRegLclVar() && !VarSetOps::IsMember(this, life, varIndex)) { // Dead definition. lclVarNode->AsLclVar()->SetLastUse(i - varDsc.lvFieldLclStart);