Pass small FP values in GPRs or stack memory according the the normal
convention. This is what gcc -mno-sse does on Win64.
Well, specifically for the MSVC side of things, they don't implement a -mno-sse mode:
So, we have to make up our own rules anway.
I suppose we might as well follow GCC, then. I see they pass in GPRs in this case. Let's do that.
I'm not opposed to supporting a soft-float ABI. But I don't think -mno-sse is a strong enough signal that the user actually understands what they're asking for, as opposed to being an accidental leftover from a 32-bit project. I'd prefer to print an error.
Well, -mno-sse seems to be enough to get GCC to do a soft-floatish thing, so I'm really just trying to follow them here. I think what we're finding in practice is that simply implementing the functionality we didn't intend to support is actually easier than nailing down the corner cases under which we should emit an error and recovering correctly.
You're right, it was. Now it converts to i32/i64, which goes via RCX/RDX/etc then stack memory.