Fix multiple issues in LSRA for TYP_DOUBLE:
authorCarol Eidt <carol.eidt@microsoft.com>
Wed, 18 Oct 2017 21:31:05 +0000 (14:31 -0700)
committerCarol Eidt <carol.eidt@microsoft.com>
Wed, 18 Oct 2017 21:31:05 +0000 (14:31 -0700)
commitba9f864ab6d3f98148ff51b3ee9b9f5aa82f2cb2
tree9862901ebb448f282a0b88eeba9b0acd6f1f79a6
parentfaca87ae7fd06c520fc0458a81b5b4a99a1c5e72
Fix multiple issues in LSRA for TYP_DOUBLE:
- updateAssignedInterval() needs to handle the case where the previously assigned interval was TYP_DOUBLE.
- Similarly, at block boundaries, if we are setting the register for a double interval, and the assigned interval is either null or is TYP_FLOAT ,we also need to unassign the other half of the register.
- LSRA only considers the valid double registers when allocating. When setting the candidates for the source of a return, it should only set the bit for the valid double register.

Fix #13751
src/jit/lsra.cpp
src/jit/lsra.h
src/jit/lsraarm.cpp