Pass structures, classes and unions by reference on MSP430, according to Section 3.5 of MSP430 EABI. The callee is responsible for leaving the underlying data intact.
Oh wow, the ABI really is indirect aliased:
To pass a structure or union by reference, the caller places its address in the appropriate location: either in a register or on the stack, according to its position in the argument list. To preserve pass-by-value semantics (required for C and C++), the callee may need to make its own copy of the pointed-to object. In some cases, the callee need not make a copy, such as if the callee is a leaf and it does not modify the pointed-to object.
I didn't realize any actual ABIs did this.