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

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 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(), and copyprop_hardreg_forward_1().


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