x86 backend: 128-bit integers returned in xmm0 registers by windows 64 function cause compiler crash #19498
Labels
arch-x86_64
64-bit x86
backend-self-hosted
bug
Observed behavior contradicts documented or intended behavior
os-windows
Milestone
This bug specifically affects the x86 backend.
A minimal reproduction is given below:
The Microsoft x64 calling convention specifies that types which don't fit in general purpose registers, such as
u128
, are to be returned in XMM0. This code example causes the compiler to hit unreachable code inairCmp
, as the backend expects thatu128
is either in memory or a pair of general purpose registers, not an SSE register.The solution to this I think would be, in
genCall
, to move values of this type out of the SSE register into memory. As far as I can tell, this is what LLVM does too.This issue is currently blocking #18680, from which it was discovered and reduced.
The text was updated successfully, but these errors were encountered: