x64: fix register allocation panic due to load-coalesced value (#3954)

Fuzz testing identified a lowering case for CLIF's `icmp` in which the
double use of a loaded operand resulted in a register allocation error.
This change manually adds `put_in_xmm` to avoid load-coalescing these
values and includes a CLIF filetest to trigger this issue. Closes #3951.

I opened #3953 to discuss a way in which this kind of mistake (i.e.,
forgetting to add `put_in_*` in certain situations) could be avoided.
This commit is contained in:
Andrew Brown
2022-03-21 18:46:27 -07:00
committed by GitHub
parent 3bfbb3226e
commit 4d5bd5f90e
4 changed files with 171 additions and 142 deletions

View File

@@ -1,4 +1,4 @@
src/clif.isle 9ea75a6f790b5c03
src/prelude.isle b2bc986bcbbbb77
src/isa/x64/inst.isle bfb0fb7143d8dc34
src/isa/x64/lower.isle ed84d285e0789fca
src/isa/x64/lower.isle ccaee2b83bdf73e1