GCC Middle and Back End API Reference
funny_match Struct Reference

Data Fields

int this_op
int other

Detailed Description

Check the operands of an insn against the insn's operand constraints and return 1 if they are valid. The information about the insn's operands, constraints, operand modes etc. is obtained from the global variables set up by extract_insn.

WHICH_ALTERNATIVE is set to a number which indicates which alternative of constraints was matched: 0 for the first alternative, 1 for the next, etc.

In addition, when two operands are required to match and it happens that the output operand is (reg) while the input operand is –(reg) or ++(reg) (a pre-inc or pre-dec), make the output operand look like the input. This is because the output operand is the one the template will print.

This is used in final, just before printing the assembler code and by the routines that determine an insn's attribute.

If STRICT is a positive nonzero value, it means that we have been called after reload has been completed. In that case, we must do all checks strictly. If it is zero, it means that we have been called before reload has completed. In that case, we first try to see if we can find an alternative that matches strictly. If not, we try again, this time assuming that reload will fix up the insn. This provides a "best guess" for the alternative and is used to compute attributes of insns prior to reload. A negative value of STRICT is used for this internal call.


Field Documentation

int funny_match::other
int funny_match::this_op

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