pub enum Missing {
OnX87,
InBothFiles,
Width,
NoRoom,
TooBig,
}Expand description
Why a parameter could not be brought in.
Variants§
OnX87
It travels on the x87 stack, which is a long double and nothing else. That stack is a
third register file, it is not one the allocator has, and no instruction in the
description touches it.
InBothFiles
It is a float passed to a callee that takes arguments beyond the ones its signature names, on a convention that puts such a float in a vector register and in the general purpose register at the same position at once. Which arguments are the ones beyond the signature is what decides whether the second copy is needed, and a call does not carry that yet.
Width
It is a width no pseudo covers, which is anything a machine register does not hold.
NoRoom
It is a value that comes back in more registers than the convention returns in. A structure of at most sixteen bytes comes back in up to two, which is as many as SysV has, and a convention with fewer of them returns such a structure through a hidden pointer instead. So this is what a signature the classification did not produce would get.
TooBig
It is an object whose bytes travel in the argument area and there are more of them than a copy a word at a time is worth. Such a copy belongs in a call to the runtime, and the place this is decided is in the middle of building a call, where another one cannot go.