GCC Middle and Back End API Reference
|
#include <recog.h>
Data Fields | |
rtx | operand [MAX_RECOG_OPERANDS] |
rtx * | operand_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] |
rtx * | dup_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 |
The following vectors hold the results from insn_extract.
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().