参照元†
/* The following vectors hold the results from insn_extract. */
struct recog_data_d
{
/* 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. */
rtx operand[MAX_RECOG_OPERANDS];
/* Gives location where operand N was found. */
rtx *operand_loc[MAX_RECOG_OPERANDS];
/* Gives the constraint string for operand N. */
const char *constraints[MAX_RECOG_OPERANDS];
/* Nonzero if operand N is a match_operator or a match_parallel. */
char is_operator[MAX_RECOG_OPERANDS];
/* Gives the mode of operand N. */
machine_mode operand_mode[MAX_RECOG_OPERANDS];
/* Gives the type (in, out, inout) for operand N. */
enum op_type operand_type[MAX_RECOG_OPERANDS];
/* Gives location where the Nth duplicate-appearance of an operand
was found. This is something that matched MATCH_DUP. */
rtx *dup_loc[MAX_DUP_OPERANDS];
/* Gives the operand number that was duplicated in the Nth
duplicate-appearance of an operand. */
char dup_num[MAX_DUP_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. */
char n_operands;
/* The number of MATCH_DUPs in the insn. */
char n_dups;
/* The number of alternatives in the constraints for the insn. */
char n_alternatives;
/* True if insn is ASM_OPERANDS. */
bool is_asm;
/* In case we are caching, hold insn data was generated for. */
rtx_insn *insn;
};
コメント†