Fix 1203471: Incorrect rationalization of unused SIMD localVar
authorCarol Eidt <carol.eidt@microsoft.com>
Mon, 27 Jul 2015 03:14:03 +0000 (20:14 -0700)
committerJan Kotas <jkotas@microsoft.com>
Mon, 27 Jul 2015 04:23:55 +0000 (21:23 -0700)
commit25aa636ff812ba8432f65a0b9078eaa886b4f6d2
treecd96fb8084e658d096c88d9593ed3f27fe79a8f4
parentd0e28de45b690c8e51809265244ed02d7ed3c855
Fix 1203471: Incorrect rationalization of unused SIMD localVar

The Rationalizer was not correctly handling a case of an unused SIMD expression involving a localVar or temporary value, where the SIMD expression is returning a non-SIMD value, and the expression is sufficiently complex (e.g. a call to vector * scalar which is inlined but not an intrinsic).
The ldobj of the localVar is not eliminated, because it involves an indirection, and therefore appears potentially unsafe to eliminate. However, when we transform the ldobj into a plain localVar during the Rationalizer, we need to correctly handle the case where it has no parent.

[tfs-changeset: 1505976]
src/jit/rationalize.cpp