Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion src/coreclr/jit/codegencommon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6283,6 +6283,15 @@ void CodeGen::genZeroInitFrame(int untrLclHi, int untrLclLo, regNumber initReg,
continue;
}

// We currently don't expect to see multi-reg args in OSR methods, as struct
// promotion is disabled and so any struct arg just uses the spilled location
// on the original frame.
//
// If we ever enable promotion we'll need to generalize what follows to copy each
// field from the original frame to its OSR home.
//
assert(!varDsc->lvIsMultiRegArg);

if (!VarSetOps::IsMember(compiler, compiler->fgFirstBB->bbLiveIn, varDsc->lvVarIndex))
{
JITDUMP("---OSR--- V%02u (reg) not live at entry\n", varNum);
Expand All @@ -6302,7 +6311,8 @@ void CodeGen::genZeroInitFrame(int untrLclHi, int untrLclLo, regNumber initReg,
}

// Note we are always reading from the original frame here
const var_types lclTyp = genActualType(varDsc->lvType);
//
const var_types lclTyp = varDsc->GetActualRegisterType();
const emitAttr size = emitTypeSize(lclTyp);
const int stkOffs = patchpointInfo->Offset(lclNum) + fieldOffset;

Expand Down