"brian m. carlson" <sandals@xxxxxxxxxxxxxxxxxxxx> writes: > .... It is designed to be passed and returned by value, not > pointer, and it is possible to do so in two registers on 64-bit systems. > Similar functionality works well for error types in Rust and for the > standard library's lldiv_t, so this should not pose a problem. It should not, in the sense that "any reasonable platform should be able to pass two 64-bit word in a structure by value", but isn't it optimizing for a wrong (i.e. have error) case? In the case where there is no error, a "negative return is error, zero is success", with a pointer to "more detailed error info, in case the call resulted in an error", would let us take branch based on a zero-ness check on an integer in a machine-natural word, without even looking at these two words in the struct.