case GT_OBJ:
structHnd = tree->AsObj()->GetLayout()->GetClassHandle();
break;
+ case GT_BLK:
+ structHnd = tree->AsBlk()->GetLayout()->GetClassHandle();
+ break;
case GT_CALL:
structHnd = tree->AsCall()->gtRetClsHnd;
break;
}
}
}
+ else if (addr->OperGet() == GT_LCL_VAR)
+ {
+ structHnd = gtGetStructHandleIfPresent(addr);
+ }
}
}
break;
*/
instruction CodeGen::ins_Copy(var_types dstType)
{
+ assert(emitTypeActSz[dstType] != 0);
#if defined(TARGET_XARCH)
if (varTypeIsSIMD(dstType))
{
//
int LinearScan::BuildIndir(GenTreeIndir* indirTree)
{
- // If this is the rhs of a block copy (i.e. non-enregisterable struct),
- // it has no register requirements.
- if (indirTree->TypeGet() == TYP_STRUCT)
- {
- return 0;
- }
+ assert(indirTree->TypeGet() != TYP_STRUCT); // Don't expect a struct type here.
#ifdef FEATURE_SIMD
RefPosition* internalFloatDef = nullptr;