aboutsummaryrefslogtreecommitdiff
path: root/gcc/rtl.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/rtl.h')
-rw-r--r--gcc/rtl.h46
1 files changed, 24 insertions, 22 deletions
diff --git a/gcc/rtl.h b/gcc/rtl.h
index b1218d0..ff7f1c0 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -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.