When a function value's mode is BLKmode (and in some other cases), the value is not returned according to FUNCTION_VALUE (see Scalar Return). Instead, the caller passes the address of a block of memory in which the value should be stored. This address is called the structure value address.
This section describes how to control returning structure values in memory.
RETURN_IN_MEMORY (type) tree , representing the data type of the value.
Note that values of mode BLKmode must be explicitly handled by this macro. Also, the option `-fpcc-struct-return' takes effect regardless of this macro. On most systems, it is possible to leave the macro undefined; this causes a default definition to be used, whose value is the constant 1 for BLKmode values, and 0 otherwise.
Do not use this macro to indicate that structures and unions should always be returned in memory. You should instead use DEFAULT_PCC_STRUCT_RETURN to indicate this.
DEFAULT_PCC_STRUCT_RETURN RETURN_IN_MEMORY macro. If not defined, this defaults to the value 1.
STRUCT_VALUE_REGNUM STRUCT_VALUE_REGNUM should be the number of that register.
STRUCT_VALUE STRUCT_VALUE as an expression returning an RTX for the place where the address is passed. If it returns 0, the address is passed as an ``invisible'' first argument.
STRUCT_VALUE_INCOMING_REGNUM If the incoming location of the structure value address is in a register, define this macro as the register number.
STRUCT_VALUE_INCOMING STRUCT_VALUE_INCOMING as an expression for an RTX for where the called function should find the value. If it should find the value on the stack, define this to create a mem which refers to the frame pointer. A definition of 0 means that the address is passed as an ``invisible'' first argument.
PCC_STATIC_STRUCT_RETURN Do not define this if the usual system convention is for the caller to pass an address to the subroutine.
This macro has effect in `-fpcc-struct-return' mode, but it does nothing when you use `-freg-struct-return' mode.