GCC Middle and Back End API Reference
recog_data_d Struct Reference

#include <recog.h>

Collaboration diagram for recog_data_d:

Data Fields

rtx operand [MAX_RECOG_OPERANDS]
rtxoperand_loc [MAX_RECOG_OPERANDS]
const char * constraints [MAX_RECOG_OPERANDS]
char is_operator [MAX_RECOG_OPERANDS]
enum machine_mode operand_mode [MAX_RECOG_OPERANDS]
enum op_type operand_type [MAX_RECOG_OPERANDS]
rtxdup_loc [MAX_DUP_OPERANDS]
char dup_num [MAX_DUP_OPERANDS]
char n_operands
char n_dups
char n_alternatives
bool is_asm
bool alternative_enabled_p [MAX_RECOG_ALTERNATIVES]
rtx insn

Detailed Description

   The following vectors hold the results from insn_extract.  

Field Documentation

bool recog_data_d::alternative_enabled_p[MAX_RECOG_ALTERNATIVES]
     Specifies whether an insn alternative is enabled using the
     `enabled' attribute in the insn pattern definition.  For back
     ends not using the `enabled' attribute the array fields are
     always set to `true' in expand_insn.  

Referenced by ira_init().

const char* recog_data_d::constraints[MAX_RECOG_OPERANDS]
     Gives the constraint string for operand N.  

Referenced by extract_constrain_insn_cached(), lra_set_insn_recog_data(), and skip_alternative().

rtx* recog_data_d::dup_loc[MAX_DUP_OPERANDS]
     Gives location where the Nth duplicate-appearance of an operand
     was found.  This is something that matched MATCH_DUP.  
char recog_data_d::dup_num[MAX_DUP_OPERANDS]
     Gives the operand number that was duplicated in the Nth
     duplicate-appearance of an operand.  
rtx recog_data_d::insn
     In case we are caching, hold insn data was generated for.  

Referenced by lra_update_insn_recog_data().

bool recog_data_d::is_asm
     True if insn is ASM_OPERANDS.  
char recog_data_d::is_operator[MAX_RECOG_OPERANDS]
     Nonzero if operand N is a match_operator or a match_parallel.  

Referenced by skip_alternative().

char recog_data_d::n_alternatives
     The number of alternatives in the constraints for the insn.  

Referenced by commutative_constraint_p(), extract_constrain_insn_cached(), and extract_insn_cached().

char recog_data_d::n_dups
     The number of MATCH_DUPs in the insn.  
char recog_data_d::n_operands
     ??? Note that these are `char' instead of `unsigned char' to (try to)
     avoid certain lossage from K&R C, wherein `unsigned char' default
     promotes to `unsigned int' instead of `int' as in ISO C.  As of 1999,
     the most common places to bootstrap from K&R C are SunOS and HPUX,
     both of which have signed characters by default.  The only other
     supported natives that have both K&R C and unsigned characters are
     ROMP and Irix 3, and neither have been seen for a while, but do
     continue to consider unsignedness when performing arithmetic inside
     a comparison.  
     The number of operands of the insn.  

Referenced by extract_insn_cached(), and replace_src_with_reg_ok_p().

rtx recog_data_d::operand[MAX_RECOG_OPERANDS]
     It is very tempting to make the 5 operand related arrays into a
     structure and index on that.  However, to be source compatible
     with all of the existing md file insn constraints and output
     templates, we need `operand' as a flat array.  Without that
     member, making an array for the rest seems pointless.  
     Gives value of operand N.  

Referenced by build_def_use(), commutative_constraint_p(), find_reloads(), safe_insn_predicate(), and skip_alternative().

rtx* recog_data_d::operand_loc[MAX_RECOG_OPERANDS]
     Gives location where operand N was found.  

Referenced by replace_src_with_reg_ok_p(), and skip_alternative().

enum machine_mode recog_data_d::operand_mode[MAX_RECOG_OPERANDS]
     Gives the mode of operand N.  

Referenced by build_def_use().

enum op_type recog_data_d::operand_type[MAX_RECOG_OPERANDS]
     Gives the type (in, out, inout) for operand N.  

Referenced by build_def_use(), copyprop_hardreg_forward_1(), and replace_src_with_reg_ok_p().


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