= mmix_get_hard_reg_initial_val (Pmode,
MMIX_INCOMING_RETURN_ADDRESS_REGNUM);
- /* FIXME: There's a bug in gcc which causes NULL to be passed as
- operand[2] when we get out of registers, which later confuses gcc.
- Work around it by replacing it with const_int 0. Possibly documentation
- error too. */
+ /* NULL gets passed as operand[2] when we get out of registers,
+ which later confuses gcc. Replace it with const_int 0. */
if (operands[2] == NULL_RTX)
operands[2] = const0_rtx;
= mmix_get_hard_reg_initial_val (Pmode,
MMIX_INCOMING_RETURN_ADDRESS_REGNUM);
- /* FIXME: See 'call'. */
+ /* See 'call'. */
if (operands[3] == NULL_RTX)
operands[3] = const0_rtx;
- /* FIXME: Documentation bug: operands[3] (operands[2] for 'call') is the
- *next* argument register, not the number of arguments in registers.
- (There used to be code here where that mattered.) */
-
operands[5] = gen_rtx_REG (DImode, MMIX_INCOMING_RETURN_ADDRESS_REGNUM);
}")
@item @samp{call}
Subroutine call instruction returning no value. Operand 0 is the
function to call; operand 1 is the number of bytes of arguments pushed
-as a @code{const_int}; operand 2 is the number of registers used as
-operands.
+as a @code{const_int}. Operand 2 is the result of calling the target
+hook @code{TARGET_FUNCTION_ARG} with the second argument @code{arg}
+yielding true for @code{arg.end_marker_p ()}, in a call after all
+parameters have been passed to that hook. By default this is the first
+register beyond those used for arguments in the call, or @code{NULL} if
+all the argument-registers are used in the call.
On most machines, operand 2 is not actually stored into the RTL
pattern. It is supplied for the sake of some RISC machines which need