@@ -1214,21 +1214,23 @@ GenTree* Compiler::impAssignStructPtr(GenTree* destAddr,
12141214 // If it is a multi-reg struct return, don't change the oper to GT_LCL_FLD.
12151215 // That is, the IR will be of the form lclVar = call for multi-reg return
12161216 //
1217- GenTreeLclVar* lcl = destAddr->AsOp()->gtOp1->AsLclVar();
1217+ GenTreeLclVar* lcl = destAddr->AsOp()->gtOp1->AsLclVar();
1218+ unsigned lclNum = lcl->GetLclNum();
1219+ LclVarDsc* varDsc = lvaGetDesc(lclNum);
12181220 if (src->AsCall()->HasMultiRegRetVal())
12191221 {
12201222 // Mark the struct LclVar as used in a MultiReg return context
12211223 // which currently makes it non promotable.
12221224 // TODO-1stClassStructs: Eliminate this pessimization when we can more generally
12231225 // handle multireg returns.
12241226 lcl->gtFlags |= GTF_DONT_CSE;
1225- lvaTable[lcl->AsLclVarCommon()->GetLclNum()]. lvIsMultiRegRet = true;
1227+ varDsc-> lvIsMultiRegRet = true;
12261228 }
12271229 else if (lcl->gtType != src->gtType)
12281230 {
12291231 // We change this to a GT_LCL_FLD (from a GT_ADDR of a GT_LCL_VAR)
12301232 lcl->ChangeOper(GT_LCL_FLD);
1231- fgLclFldAssign(lcl->AsLclVarCommon()->GetLclNum() );
1233+ fgLclFldAssign(lclNum );
12321234 lcl->gtType = src->gtType;
12331235 asgType = src->gtType;
12341236 }
@@ -1238,7 +1240,7 @@ GenTree* Compiler::impAssignStructPtr(GenTree* destAddr,
12381240#if defined(TARGET_ARM)
12391241 // TODO-Cleanup: This should have been taken care of in the above HasMultiRegRetVal() case,
12401242 // but that method has not been updadted to include ARM.
1241- impMarkLclDstNotPromotable(lcl->AsLclVarCommon()->GetLclNum() , src, structHnd);
1243+ impMarkLclDstNotPromotable(lclNum , src, structHnd);
12421244 lcl->gtFlags |= GTF_DONT_CSE;
12431245#elif defined(UNIX_AMD64_ABI)
12441246 // Not allowed for FEATURE_CORCLR which is the only SKU available for System V OSs.
@@ -1250,7 +1252,7 @@ GenTree* Compiler::impAssignStructPtr(GenTree* destAddr,
12501252 // TODO-Cleanup: Why is this needed here? This seems that it will set this even for
12511253 // non-multireg returns.
12521254 lcl->gtFlags |= GTF_DONT_CSE;
1253- lvaTable[lcl->AsLclVarCommon()->GetLclNum()]. lvIsMultiRegRet = true;
1255+ varDsc-> lvIsMultiRegRet = true;
12541256#endif
12551257 }
12561258 else // we don't have a GT_ADDR of a GT_LCL_VAR
@@ -2558,7 +2560,7 @@ BasicBlock* Compiler::impPushCatchArgOnStack(BasicBlock* hndBlk, CORINFO_CLASS_H
25582560#if defined(JIT32_GCENCODER)
25592561 const bool forceInsertNewBlock = isSingleBlockFilter || compStressCompile(STRESS_CATCH_ARG, 5);
25602562#else
2561- const bool forceInsertNewBlock = compStressCompile(STRESS_CATCH_ARG, 5);
2563+ const bool forceInsertNewBlock = compStressCompile(STRESS_CATCH_ARG, 5);
25622564#endif // defined(JIT32_GCENCODER)
25632565
25642566 /* Spill GT_CATCH_ARG to a temp if there are jumps to the beginning of the handler */
0 commit comments