Never enregister type-punned regStruct lclVars.
authorPat Gavlin <pagavlin@microsoft.com>
Wed, 24 May 2017 19:34:09 +0000 (12:34 -0700)
committerPat Gavlin <pagavlin@microsoft.com>
Wed, 24 May 2017 20:27:12 +0000 (13:27 -0700)
commita201416f5aa84a3e58c6c6a09fac3cce225807e3
tree2de8679538a1b952149100300a013d079a0e1834
parent21476dc9e1ad9bc8cafbccce663751362a9edd65
Never enregister type-punned regStruct lclVars.

Type-punned lclVars--i.e. lclVars that are accessed via
`(INDIR Tx (ADDR (LCLVAR Ty V)))`--are currently considered
enregisterable if they are SIMD-typed, have not been the accessed by
field, and have not otherwise been declared unenregisterable. This
appears to be an oversight, as the JIT is not able to generate correct
code for the type-punned access if the lclVar is in fact enregistered.

This change removes the special case for these SIMD-typed lclVars.

Fixes dotnet/coreclr#11804.

Commit migrated from https://github.com/dotnet/coreclr/commit/e1bc678f35adb2d3f1ca40d0414bde2407159c2d
src/coreclr/src/jit/morph.cpp
src/coreclr/tests/src/JIT/Regression/JitBlue/GitHub_11804/GitHub_11804.il [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/JitBlue/GitHub_11804/GitHub_11804.ilproj [new file with mode: 0644]