Use LclFld for full-width cpblk of different types
authorCarol Eidt <carol.eidt@microsoft.com>
Wed, 21 Nov 2018 22:12:03 +0000 (14:12 -0800)
committerCarol Eidt <carol.eidt@microsoft.com>
Tue, 27 Nov 2018 01:01:25 +0000 (17:01 -0800)
commit0c08dc461f4dd7ac418a475264129d2c57536955
treeb3c61d8a5fe0b459ee6ff78dc71e31a8408d675f
parent6e2e0e2a2949a0e59c73927084a6c0649313385f
Use LclFld for full-width cpblk of different types

This issue arose because the source tree was a struct with a single double field, and the destination was a struct with a single long field. Copy prop replaced the lclVar in the source, which was under a `IND(ADDR)` with a lclVar that was not address taken, although it was marked `GTF_DONT_CSE`. Replacing the src tree with a `GT_LCL_FLD` addresses this issue.

Also, ensure that the target is marked `DoNotEnregister` if it isn't referenced as the same size/type.

Fix #21080
Fix #21064
src/jit/morph.cpp
tests/issues.targets