GCC Middle and Back End API Reference
arg_data Struct Reference
Collaboration diagram for arg_data:

Data Fields

tree tree_value
enum machine_mode mode
rtx value
rtx initial_value
rtx reg
rtx tail_call_reg
rtx parallel_value
int unsignedp
int partial
int pass_on_stack
struct locate_and_pad_arg_data locate
rtx stack
rtx stack_slot
rtx save_area
rtxaligned_regs
int n_aligned_regs

Detailed Description

Data structure and subroutines used within expand_call.


Field Documentation

rtx* arg_data::aligned_regs

If an argument's alignment does not permit direct copying into registers, copy in smaller-sized pieces into pseudos. These are stored in a block pointed to by this field. The next field says how many word-sized pseudos we made.

rtx arg_data::initial_value

Initially-compute RTL value for argument; only for const functions.

Referenced by compute_argument_block_size().

struct locate_and_pad_arg_data arg_data::locate

Some fields packaged up for locate_and_pad_parm.

Referenced by initialize_argument_information().

enum machine_mode arg_data::mode

Mode for value; TYPE_MODE unless promoted.

Referenced by initialize_argument_information().

int arg_data::n_aligned_regs
rtx arg_data::parallel_value

If REG is a PARALLEL, this is a copy of VALUE pulled into the correct form for emit_group_move.

Referenced by call_expr_flags().

int arg_data::partial

Number of bytes to put in registers. 0 means put the whole arg in registers. Also 0 if not passed in registers.

Referenced by initialize_argument_information().

int arg_data::pass_on_stack

Nonzero if argument must be passed on stack. Note that some arguments may be passed on the stack even though pass_on_stack is zero, just because FUNCTION_ARG says so. pass_on_stack identifies arguments that cannot go in registers.

Referenced by initialize_argument_information().

rtx arg_data::reg

Register to pass this argument in, 0 if passed on stack, or an PARALLEL if the arg is to be copied into multiple non-contiguous registers.

Referenced by initialize_argument_information().

rtx arg_data::save_area

Place that this stack area has been saved, if needed.

rtx arg_data::stack

Location on the stack at which parameter should be stored. The store has already been done if STACK == VALUE.

rtx arg_data::stack_slot

Location on the stack of the start of this argument slot. This can differ from STACK if this arg pads downward. This location is known to be aligned to TARGET_FUNCTION_ARG_BOUNDARY.

rtx arg_data::tail_call_reg

Register to pass this argument in when generating tail call sequence. This is not the same register as for normal calls on machines with register windows.

Referenced by initialize_argument_information().

tree arg_data::tree_value

Tree node for this argument.

Referenced by initialize_argument_information().

int arg_data::unsignedp

If REG was promoted from the actual mode of the argument expression, indicates whether the promotion is sign- or zero-extended.

Referenced by compute_argument_block_size(), and initialize_argument_information().

rtx arg_data::value

Current RTL value for argument, or 0 if it isn't precomputed.

Referenced by compute_argument_block_size().


The documentation for this struct was generated from the following file: