diff options
Diffstat (limited to 'src/jit/codegenxarch.cpp')
-rw-r--r-- | src/jit/codegenxarch.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/jit/codegenxarch.cpp b/src/jit/codegenxarch.cpp index d693ff914a..252f004853 100644 --- a/src/jit/codegenxarch.cpp +++ b/src/jit/codegenxarch.cpp @@ -1558,6 +1558,8 @@ void CodeGen::genCodeForTreeNode(GenTreePtr treeNode) GenTreePtr op1 = treeNode->gtGetOp1(); genConsumeRegs(op1); emit->emitInsBinary(ins_Store(targetType), emitTypeSize(treeNode), treeNode, op1); + + genUpdateLife(treeNode); } break; @@ -5404,8 +5406,9 @@ void CodeGen::genJmpMethod(GenTreePtr jmp) // assert should hold. assert(varDsc->lvRegNum != REG_STK); - var_types loadType = varDsc->lvaArgType(); - getEmitter()->emitIns_S_R(ins_Store(loadType), emitTypeSize(loadType), varDsc->lvRegNum, varNum, 0); + assert(!varDsc->lvIsStructField || (compiler->lvaTable[varDsc->lvParentLcl].lvFieldCnt == 1)); + var_types storeType = genActualType(varDsc->lvaArgType()); // We own the memory and can use the full move. + getEmitter()->emitIns_S_R(ins_Store(storeType), emitTypeSize(storeType), varDsc->lvRegNum, varNum, 0); // Update lvRegNum life and GC info to indicate lvRegNum is dead and varDsc stack slot is going live. // Note that we cannot modify varDsc->lvRegNum here because another basic block may not be expecting it. |