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
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.  

Referenced by restore_fixed_argument_area().

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

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: