This section discusses the macros that control returning scalars as values--values that can fit in registers.
| FUNCTION_VALUE (valtype, func) | Macro |
A C expression to create an RTX representing the place where a
function returns a value of data type valtype. valtype is
a tree node representing a data type. Write TYPE_MODE
(valtype) to get the machine mode used to represent that type.
On many machines, only the mode is relevant. (Actually, on most
machines, scalar values are returned in the same place regardless of
mode).
The value of the expression is usually a If If the precise function being called is known, func is a tree
node (
|
| FUNCTION_OUTGOING_VALUE (valtype, func) | Macro |
|
Define this macro if the target machine has "register windows"
so that the register in which a function returns its value is not
the same as the one in which the caller sees the value.
For such machines, If
|
| LIBCALL_VALUE (mode) | Macro |
A C expression to create an RTX representing the place where a library
function returns a value of mode mode. If the precise function
being called is known, func is a tree node
(FUNCTION_DECL) for it; otherwise, func is a null
pointer. This makes it possible to use a different value-returning
convention for specific functions when all their calls are
known.
Note that "library function" in this context means a compiler support routine, used to perform arithmetic, whose name is known specially by the compiler and was not mentioned in the C code being compiled. The definition of |
| FUNCTION_VALUE_REGNO_P (regno) | Macro |
|
A C expression that is nonzero if regno is the number of a hard
register in which the values of called function may come back.
A register whose use for returning values is limited to serving as the
second of a pair (for a value of type #define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
If the machine has register windows, so that the caller and the called function use different registers for the return value, this macro should recognize only the caller's register numbers. |
| APPLY_RESULT_SIZE | Macro |
Define this macro if untyped_call and untyped_return
need more space than is implied by FUNCTION_VALUE_REGNO_P for
saving and restoring an arbitrary return value.
|
| bool TARGET_RETURN_IN_MSB (tree type) | Target Hook |
|
This hook should return true if values of type type are returned
at the most significant end of a register (in other words, if they are
padded at the least significant end). You can assume that type
is returned in a register; the caller is required to check this.
Note that the register provided by |