diff --git a/src/coreclr/src/jit/lower.cpp b/src/coreclr/src/jit/lower.cpp index 981b8847f1c4e7..af85fcdf253e7a 100644 --- a/src/coreclr/src/jit/lower.cpp +++ b/src/coreclr/src/jit/lower.cpp @@ -250,7 +250,7 @@ GenTree* Lowering::LowerNode(GenTree* node) } __fallthrough; case GT_STORE_DYN_BLK: - LowerBlockStore(node->AsBlk()); + LowerBlockStoreCommon(node->AsBlk()); break; case GT_LCLHEAP: @@ -3115,7 +3115,7 @@ void Lowering::LowerStoreLocCommon(GenTreeLclVarCommon* lclStore) objStore->SetAddr(addr); objStore->SetData(src); BlockRange().InsertBefore(objStore, addr); - LowerBlockStore(objStore); + LowerBlockStoreCommon(objStore); return; } } @@ -3441,7 +3441,7 @@ void Lowering::LowerStoreCallStruct(GenTreeBlk* store) GenTreeLclVar* spilledCall = SpillStructCallResult(call); store->SetData(spilledCall); - LowerBlockStore(store); + LowerBlockStoreCommon(store); #endif // WINDOWS_AMD64_ABI } } @@ -6397,3 +6397,15 @@ void Lowering::LowerIndir(GenTreeIndir* ind) TryCreateAddrMode(ind->Addr(), false); } } + +//------------------------------------------------------------------------ +// LowerBlockStoreCommon: a common logic to lower STORE_OBJ/BLK/DYN_BLK. +// +// Arguments: +// blkNode - the store blk/obj node we are lowering. +// +void Lowering::LowerBlockStoreCommon(GenTreeBlk* blkNode) +{ + assert(blkNode->OperIs(GT_STORE_BLK, GT_STORE_DYN_BLK, GT_STORE_OBJ)); + LowerBlockStore(blkNode); +} diff --git a/src/coreclr/src/jit/lower.h b/src/coreclr/src/jit/lower.h index f51cb1e27f0dba..02dec23a8082de 100644 --- a/src/coreclr/src/jit/lower.h +++ b/src/coreclr/src/jit/lower.h @@ -291,6 +291,7 @@ class Lowering final : public Phase GenTree* LowerConstIntDivOrMod(GenTree* node); GenTree* LowerSignedDivOrMod(GenTree* node); void LowerBlockStore(GenTreeBlk* blkNode); + void LowerBlockStoreCommon(GenTreeBlk* blkNode); void ContainBlockStoreAddress(GenTreeBlk* blkNode, unsigned size, GenTree* addr); void LowerPutArgStk(GenTreePutArgStk* tree);