diff options
Diffstat (limited to 'gcc/rtl.h')
-rw-r--r-- | gcc/rtl.h | 46 |
1 files changed, 24 insertions, 22 deletions
@@ -506,19 +506,21 @@ do { \ #define PREV_INSN(INSN) XEXP (INSN, 1) #define NEXT_INSN(INSN) XEXP (INSN, 2) +#define BLOCK_FOR_INSN(INSN) XBBDEF (INSN, 3) +#define INSN_SCOPE(INSN) XTREE (INSN, 4) /* The body of an insn. */ -#define PATTERN(INSN) XEXP (INSN, 3) +#define PATTERN(INSN) XEXP (INSN, 5) /* Code number of instruction, from when it was recognized. -1 means this instruction has not been recognized yet. */ -#define INSN_CODE(INSN) XINT (INSN, 4) +#define INSN_CODE(INSN) XINT (INSN, 6) /* Set up in flow.c; empty before then. Holds a chain of INSN_LIST rtx's whose first operands point at previous insns with direct data-flow connections to this one. That means that those insns set variables whose next use is in this insn. They are always in the same basic block as this insn. */ -#define LOG_LINKS(INSN) XEXP(INSN, 5) +#define LOG_LINKS(INSN) XEXP(INSN, 7) #define RTX_INTEGRATED_P(RTX) \ (RTL_FLAG_CHECK8("RTX_INTEGRATED_P", (RTX), INSN, CALL_INSN, \ @@ -570,7 +572,7 @@ do { \ The mode field of the EXPR_LIST contains not a real machine mode but a value from enum reg_note. */ -#define REG_NOTES(INSN) XEXP(INSN, 6) +#define REG_NOTES(INSN) XEXP(INSN, 8) /* Don't forget to change reg_note_name in rtl.c. */ enum reg_note @@ -739,12 +741,12 @@ extern const char * const reg_note_name[]; CLOBBER expressions document the registers explicitly clobbered by this CALL_INSN. Pseudo registers can not be mentioned in this list. */ -#define CALL_INSN_FUNCTION_USAGE(INSN) XEXP(INSN, 7) +#define CALL_INSN_FUNCTION_USAGE(INSN) XEXP(INSN, 9) /* The label-number of a code-label. The assembler label is made from `L' and the label-number printed in decimal. Label numbers are unique in a compilation. */ -#define CODE_LABEL_NUMBER(INSN) XINT (INSN, 5) +#define CODE_LABEL_NUMBER(INSN) XINT (INSN, 6) #define LINE_NUMBER NOTE @@ -755,18 +757,18 @@ extern const char * const reg_note_name[]; The NOTE_INSN_RANGE_{START,END} and NOTE_INSN_LIVE notes record their information as an rtx in the field. */ -#define NOTE_SOURCE_FILE(INSN) XCSTR (INSN, 3, NOTE) -#define NOTE_BLOCK(INSN) XCTREE (INSN, 3, NOTE) -#define NOTE_EH_HANDLER(INSN) XCINT (INSN, 3, NOTE) -#define NOTE_RANGE_INFO(INSN) XCEXP (INSN, 3, NOTE) -#define NOTE_LIVE_INFO(INSN) XCEXP (INSN, 3, NOTE) -#define NOTE_BASIC_BLOCK(INSN) XCBBDEF (INSN, 3, NOTE) -#define NOTE_EXPECTED_VALUE(INSN) XCEXP (INSN, 3, NOTE) -#define NOTE_PREDICTION(INSN) XCINT (INSN, 3, NOTE) +#define NOTE_SOURCE_FILE(INSN) XCSTR (INSN, 4, NOTE) +#define NOTE_BLOCK(INSN) XCTREE (INSN, 4, NOTE) +#define NOTE_EH_HANDLER(INSN) XCINT (INSN, 4, NOTE) +#define NOTE_RANGE_INFO(INSN) XCEXP (INSN, 4, NOTE) +#define NOTE_LIVE_INFO(INSN) XCEXP (INSN, 4, NOTE) +#define NOTE_BASIC_BLOCK(INSN) XCBBDEF (INSN, 4, NOTE) +#define NOTE_EXPECTED_VALUE(INSN) XCEXP (INSN, 4, NOTE) +#define NOTE_PREDICTION(INSN) XCINT (INSN, 4, NOTE) /* In a NOTE that is a line number, this is the line number. Other kinds of NOTEs are identified by negative numbers here. */ -#define NOTE_LINE_NUMBER(INSN) XCINT (INSN, 4, NOTE) +#define NOTE_LINE_NUMBER(INSN) XCINT (INSN, 5, NOTE) /* Nonzero if INSN is a note marking the beginning of a basic block. */ #define NOTE_INSN_BASIC_BLOCK_P(INSN) \ @@ -774,8 +776,8 @@ extern const char * const reg_note_name[]; && NOTE_LINE_NUMBER (INSN) == NOTE_INSN_BASIC_BLOCK) /* Algorithm and flags for prediction. */ -#define NOTE_PREDICTION_ALG(INSN) (XCINT(INSN, 3, NOTE)>>8) -#define NOTE_PREDICTION_FLAGS(INSN) (XCINT(INSN, 3, NOTE)&0xff) +#define NOTE_PREDICTION_ALG(INSN) (XCINT(INSN, 4, NOTE)>>8) +#define NOTE_PREDICTION_FLAGS(INSN) (XCINT(INSN, 4, NOTE)&0xff) #define NOTE_PREDICT(ALG,FLAGS) ((ALG<<8)+(FLAGS)) /* Codes that appear in the NOTE_LINE_NUMBER field @@ -880,14 +882,14 @@ extern const char * const note_insn_name[NOTE_INSN_MAX - NOTE_INSN_BIAS]; /* The name of a label, in case it corresponds to an explicit label in the input source code. */ -#define LABEL_NAME(RTX) XCSTR (RTX, 6, CODE_LABEL) +#define LABEL_NAME(RTX) XCSTR (RTX, 7, CODE_LABEL) /* In jump.c, each label contains a count of the number of LABEL_REFs that point at it, so unused labels can be deleted. */ -#define LABEL_NUSES(RTX) XCINT (RTX, 3, CODE_LABEL) +#define LABEL_NUSES(RTX) XCINT (RTX, 4, CODE_LABEL) /* Associate a name with a CODE_LABEL. */ -#define LABEL_ALTERNATE_NAME(RTX) XCSTR (RTX, 7, CODE_LABEL) +#define LABEL_ALTERNATE_NAME(RTX) XCSTR (RTX, 8, CODE_LABEL) /* The original regno this ADDRESSOF was built for. */ #define ADDRESSOF_REGNO(RTX) XCUINT (RTX, 1, ADDRESSOF) @@ -898,13 +900,13 @@ extern const char * const note_insn_name[NOTE_INSN_MAX - NOTE_INSN_BIAS]; /* In jump.c, each JUMP_INSN can point to a label that it can jump to, so that if the JUMP_INSN is deleted, the label's LABEL_NUSES can be decremented and possibly the label can be deleted. */ -#define JUMP_LABEL(INSN) XCEXP (INSN, 7, JUMP_INSN) +#define JUMP_LABEL(INSN) XCEXP (INSN, 9, JUMP_INSN) /* Once basic blocks are found in flow.c, each CODE_LABEL starts a chain that goes through all the LABEL_REFs that jump to that label. The chain eventually winds up at the CODE_LABEL: it is circular. */ -#define LABEL_REFS(LABEL) XCEXP (LABEL, 4, CODE_LABEL) +#define LABEL_REFS(LABEL) XCEXP (LABEL, 5, CODE_LABEL) /* This is the field in the LABEL_REF through which the circular chain of references to a particular label is linked. |