]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gcc/
authorRichard Sandiford <rdsandiford@googlemail.com>
Tue, 13 May 2014 10:38:50 +0000 (10:38 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 13 May 2014 10:38:50 +0000 (10:38 +0000)
* rtl.def (DEBUG_INSN, INSN, JUMP_INSN, CALL_INSN, JUMP_TABLE_DATA)
(BARRIER, CODE_LABEL, NOTE): Remove first "i" field.
* rtl.h (rtx_def): Add insn_uid to u2 field.
(RTX_FLAG_CHECK8): Delete in favor of...
(RTL_INSN_CHAIN_FLAG_CHECK): ...this new macro.
(INSN_DELETED_P): Update accordingly.
(INSN_UID): Use u2.insn_uid.
(INSN_CHAIN_CODE_P): Define.
(PREV_INSN, NEXT_INSN, BLOCK_FOR_INSN, PATTERN, INSN_LOCATION)
(INSN_CODE, REG_NOTES, CALL_INSN_FUNCTION_USAGE, CODE_LABEL_NUMBER)
(NOTE_DATA, NOTE_DELETED_LABEL_NAME, NOTE_BLOCK, NOTE_EH_HANDLER)
(NOTE_BASIC_BLOCK, NOTE_VAR_LOCATION, NOTE_CFI, NOTE_LABEL_NUMBER)
(NOTE_KIND, LABEL_NAME, LABEL_NUSES, JUMP_LABEL, LABEL_REFS): Lower
indices accordingly.
* print-rtl.c (print_rtx): Print INSN_UIDs before the main loop.
Update indices for insn-chain rtxes.
* gengtype.c (gen_rtx_next): Adjust test for insn-chain rtxes.
(adjust_field_rtx_def): Lower '0' indices for all insn-chain rtxes.
* emit-rtl.c (gen_label_rtx): Update gen_rtx_LABEL call.
* caller-save.c (init_caller_save): Update gen_rtx_INSN calls.
* combine.c (try_combine): Likewise.
* ira.c (setup_prohibited_mode_move_regs): Likewise.

From-SVN: r210360

gcc/ChangeLog
gcc/caller-save.c
gcc/combine.c
gcc/emit-rtl.c
gcc/gengtype.c
gcc/ira.c
gcc/print-rtl.c
gcc/rtl.def
gcc/rtl.h

index 217579eb62156eef1a259d035e3ffc857a87e628..33727d64c8c8ac392bb502c8c4d92468f3aa01d5 100644 (file)
@@ -1,3 +1,28 @@
+2014-05-13  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * rtl.def (DEBUG_INSN, INSN, JUMP_INSN, CALL_INSN, JUMP_TABLE_DATA)
+       (BARRIER, CODE_LABEL, NOTE): Remove first "i" field.
+       * rtl.h (rtx_def): Add insn_uid to u2 field.
+       (RTX_FLAG_CHECK8): Delete in favor of...
+       (RTL_INSN_CHAIN_FLAG_CHECK): ...this new macro.
+       (INSN_DELETED_P): Update accordingly.
+       (INSN_UID): Use u2.insn_uid.
+       (INSN_CHAIN_CODE_P): Define.
+       (PREV_INSN, NEXT_INSN, BLOCK_FOR_INSN, PATTERN, INSN_LOCATION)
+       (INSN_CODE, REG_NOTES, CALL_INSN_FUNCTION_USAGE, CODE_LABEL_NUMBER)
+       (NOTE_DATA, NOTE_DELETED_LABEL_NAME, NOTE_BLOCK, NOTE_EH_HANDLER)
+       (NOTE_BASIC_BLOCK, NOTE_VAR_LOCATION, NOTE_CFI, NOTE_LABEL_NUMBER)
+       (NOTE_KIND, LABEL_NAME, LABEL_NUSES, JUMP_LABEL, LABEL_REFS): Lower
+       indices accordingly.
+       * print-rtl.c (print_rtx): Print INSN_UIDs before the main loop.
+       Update indices for insn-chain rtxes.
+       * gengtype.c (gen_rtx_next): Adjust test for insn-chain rtxes.
+       (adjust_field_rtx_def): Lower '0' indices for all insn-chain rtxes.
+       * emit-rtl.c (gen_label_rtx): Update gen_rtx_LABEL call.
+       * caller-save.c (init_caller_save): Update gen_rtx_INSN calls.
+       * combine.c (try_combine): Likewise.
+       * ira.c (setup_prohibited_mode_move_regs): Likewise.
+
 2014-05-13  Richard Sandiford  <rdsandiford@googlemail.com>
 
        * rtl.def (REG): Remove middle field.
index 59917a856d293f869809bff23a9badbff017c5d6..20421c9645727a179905c8aef6541d1a3348bf8c 100644 (file)
@@ -265,8 +265,8 @@ init_caller_save (void)
   savepat = gen_rtx_SET (VOIDmode, test_mem, test_reg);
   restpat = gen_rtx_SET (VOIDmode, test_reg, test_mem);
 
-  saveinsn = gen_rtx_INSN (VOIDmode, 0, 0, 0, 0, savepat, 0, -1, 0);
-  restinsn = gen_rtx_INSN (VOIDmode, 0, 0, 0, 0, restpat, 0, -1, 0);
+  saveinsn = gen_rtx_INSN (VOIDmode, 0, 0, 0, savepat, 0, -1, 0);
+  restinsn = gen_rtx_INSN (VOIDmode, 0, 0, 0, restpat, 0, -1, 0);
 
   for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
     for (j = 1; j <= MOVE_MAX_WORDS; j++)
index a2f42c58ccd1fefb5312899bcbcbd24a5a3ccecb..061b4d5537f53d84824f2ee92096858455513bdf 100644 (file)
@@ -2739,9 +2739,10 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int *new_direct_jump_p,
             never appear in the insn stream so giving it the same INSN_UID
             as I2 will not cause a problem.  */
 
-         i1 = gen_rtx_INSN (VOIDmode, INSN_UID (i2), NULL_RTX, i2,
-                            BLOCK_FOR_INSN (i2), XVECEXP (PATTERN (i2), 0, 1),
-                            INSN_LOCATION (i2), -1, NULL_RTX);
+         i1 = gen_rtx_INSN (VOIDmode, NULL_RTX, i2, BLOCK_FOR_INSN (i2),
+                            XVECEXP (PATTERN (i2), 0, 1), INSN_LOCATION (i2),
+                            -1, NULL_RTX);
+         INSN_UID (i1) = INSN_UID (i2);
 
          SUBST (PATTERN (i2), XVECEXP (PATTERN (i2), 0, 0));
          SUBST (XEXP (SET_SRC (PATTERN (i2)), 0),
index 1eacb8f6ac64f428991e411ee7dea36d85821e84..ab44aba705ce885d9a7244471b63755390e0c2a8 100644 (file)
@@ -2451,7 +2451,7 @@ set_mem_attrs_for_spill (rtx mem)
 rtx
 gen_label_rtx (void)
 {
-  return gen_rtx_CODE_LABEL (VOIDmode, 0, NULL_RTX, NULL_RTX,
+  return gen_rtx_CODE_LABEL (VOIDmode, NULL_RTX, NULL_RTX,
                             NULL, label_num++, NULL);
 }
 \f
index dca930f1280bc8f68a20153f6c2b3cb8e459802e..5fdb65fa1c77733c80a9d639db20074c7680a2e1 100644 (file)
@@ -1086,8 +1086,8 @@ gen_rtx_next (void)
       int k;
 
       rtx_next_new[i] = -1;
-      if (strncmp (rtx_format[i], "iuu", 3) == 0)
-       rtx_next_new[i] = 2;
+      if (strncmp (rtx_format[i], "uu", 2) == 0)
+       rtx_next_new[i] = 1;
       else if (i == COND_EXEC || i == SET || i == EXPR_LIST || i == INSN_LIST)
        rtx_next_new[i] = 1;
       else
@@ -1227,19 +1227,19 @@ adjust_field_rtx_def (type_p t, options_p ARG_UNUSED (opt))
            case '0':
              if (i == MEM && aindex == 1)
                t = mem_attrs_tp, subname = "rt_mem";
-             else if (i == JUMP_INSN && aindex == 8)
+             else if (i == JUMP_INSN && aindex == 7)
                t = rtx_tp, subname = "rt_rtx";
-             else if (i == CODE_LABEL && aindex == 5)
-               t = scalar_tp, subname = "rt_int";
              else if (i == CODE_LABEL && aindex == 4)
+               t = scalar_tp, subname = "rt_int";
+             else if (i == CODE_LABEL && aindex == 3)
                t = rtx_tp, subname = "rt_rtx";
              else if (i == LABEL_REF && (aindex == 1 || aindex == 2))
                t = rtx_tp, subname = "rt_rtx";
-             else if (i == NOTE && aindex == 4)
+             else if (i == NOTE && aindex == 3)
                t = note_union_tp, subname = "";
-             else if (i == NOTE && aindex == 5)
+             else if (i == NOTE && aindex == 4)
                t = scalar_tp, subname = "rt_int";
-             else if (i == NOTE && aindex >= 7)
+             else if (i == NOTE && aindex >= 6)
                t = scalar_tp, subname = "rt_int";
              else if (i == ADDR_DIFF_VEC && aindex == 4)
                t = scalar_tp, subname = "rt_int";
@@ -1255,9 +1255,9 @@ adjust_field_rtx_def (type_p t, options_p ARG_UNUSED (opt))
                t = scalar_tp, subname = "rt_int";
              else if (i == SYMBOL_REF && aindex == 2)
                t = symbol_union_tp, subname = "";
-             else if (i == JUMP_TABLE_DATA && aindex >= 5)
+             else if (i == JUMP_TABLE_DATA && aindex >= 4)
                t = scalar_tp, subname = "rt_int";
-             else if (i == BARRIER && aindex >= 3)
+             else if (i == BARRIER && aindex >= 2)
                t = scalar_tp, subname = "rt_int";
              else if (i == ENTRY_VALUE && aindex == 0)
                t = rtx_tp, subname = "rt_rtx";
index d9730011c0366e49eef8014d5866ee84865225b0..b9caad7da357e70ecc99eed434facb22622ac234 100644 (file)
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -1744,7 +1744,7 @@ setup_prohibited_mode_move_regs (void)
   test_reg1 = gen_rtx_REG (VOIDmode, 0);
   test_reg2 = gen_rtx_REG (VOIDmode, 0);
   move_pat = gen_rtx_SET (VOIDmode, test_reg1, test_reg2);
-  move_insn = gen_rtx_INSN (VOIDmode, 0, 0, 0, 0, move_pat, 0, -1, 0);
+  move_insn = gen_rtx_INSN (VOIDmode, 0, 0, 0, move_pat, 0, -1, 0);
   for (i = 0; i < NUM_MACHINE_MODES; i++)
     {
       SET_HARD_REG_SET (ira_prohibited_mode_move_regs[i]);
index cbffadaae689d228209d8cebc0602e49daed1564..9d90325a53b94eab95fc3d4c5cecf96ad35ae1f3 100644 (file)
@@ -187,6 +187,9 @@ print_rtx (const_rtx in_rtx)
     i = 5;
 #endif
 
+  if (INSN_CHAIN_CODE_P (GET_CODE (in_rtx)))
+    fprintf (outfile, " %d", INSN_UID (in_rtx));
+
   /* Get the format string and skip the first elements if we have handled
      them already.  */
   format_ptr = GET_RTX_FORMAT (GET_CODE (in_rtx)) + i;
@@ -228,7 +231,7 @@ print_rtx (const_rtx in_rtx)
            if (decl)
              print_node_brief (outfile, "", decl, dump_flags);
          }
-       else if (i == 4 && NOTE_P (in_rtx))
+       else if (i == 3 && NOTE_P (in_rtx))
          {
            switch (NOTE_KIND (in_rtx))
              {
@@ -290,7 +293,7 @@ print_rtx (const_rtx in_rtx)
                break;
              }
          }
-       else if (i == 8 && JUMP_P (in_rtx) && JUMP_LABEL (in_rtx) != NULL)
+       else if (i == 7 && JUMP_P (in_rtx) && JUMP_LABEL (in_rtx) != NULL)
          {
            /* Output the JUMP_LABEL reference.  */
            fprintf (outfile, "\n%s%*s -> ", print_rtx_head, indent * 2, "");
@@ -328,13 +331,13 @@ print_rtx (const_rtx in_rtx)
       case 'e':
       do_e:
        indent += 2;
-       if (i == 7 && INSN_P (in_rtx))
+       if (i == 6 && INSN_P (in_rtx))
          /* Put REG_NOTES on their own line.  */
          fprintf (outfile, "\n%s%*s",
                   print_rtx_head, indent * 2, "");
        if (!sawclose)
          fprintf (outfile, " ");
-       if (i == 8 && CALL_P (in_rtx))
+       if (i == 7 && CALL_P (in_rtx))
          {
            in_call_function_usage = true;
            print_rtx (XEXP (in_rtx, i));
@@ -384,7 +387,7 @@ print_rtx (const_rtx in_rtx)
        break;
 
       case 'i':
-       if (i == 5 && INSN_P (in_rtx))
+       if (i == 4 && INSN_P (in_rtx))
          {
 #ifndef GENERATOR_FILE
            /*  Pretty-print insn locations.  Ignore scoping as it is mostly
@@ -413,7 +416,7 @@ print_rtx (const_rtx in_rtx)
                       LOCATION_LINE (ASM_INPUT_SOURCE_LOCATION (in_rtx)));
 #endif
          }
-       else if (i == 6 && NOTE_P (in_rtx))
+       else if (i == 5 && NOTE_P (in_rtx))
          {
            /* This field is only used for NOTE_INSN_DELETED_LABEL, and
               other times often contains garbage from INSN->NOTE death.  */
index 19a0fa173b8f656f7449769e1fa2681b3d1749e3..f1924126e2780c2c0766ffb7ace7f4aa13ee8c42 100644 (file)
@@ -139,46 +139,46 @@ DEF_RTL_EXPR(ADDRESS, "address", "i", RTX_EXTRA)
    ---------------------------------------------------------------------- */
 
 /* An annotation for variable assignment tracking.  */
-DEF_RTL_EXPR(DEBUG_INSN, "debug_insn", "iuuBeiie", RTX_INSN)
+DEF_RTL_EXPR(DEBUG_INSN, "debug_insn", "uuBeiie", RTX_INSN)
 
 /* An instruction that cannot jump.  */
-DEF_RTL_EXPR(INSN, "insn", "iuuBeiie", RTX_INSN)
+DEF_RTL_EXPR(INSN, "insn", "uuBeiie", RTX_INSN)
 
 /* An instruction that can possibly jump.
    Fields ( rtx->u.fld[] ) have exact same meaning as INSN's.  */
-DEF_RTL_EXPR(JUMP_INSN, "jump_insn", "iuuBeiie0", RTX_INSN)
+DEF_RTL_EXPR(JUMP_INSN, "jump_insn", "uuBeiie0", RTX_INSN)
 
 /* An instruction that can possibly call a subroutine
    but which will not change which instruction comes next
    in the current function.
    Field ( rtx->u.fld[8] ) is CALL_INSN_FUNCTION_USAGE.
    All other fields ( rtx->u.fld[] ) have exact same meaning as INSN's.  */
-DEF_RTL_EXPR(CALL_INSN, "call_insn", "iuuBeiiee", RTX_INSN)
+DEF_RTL_EXPR(CALL_INSN, "call_insn", "uuBeiiee", RTX_INSN)
 
 /* Placeholder for tablejump JUMP_INSNs.  The pattern of this kind
    of rtx is always either an ADDR_VEC or an ADDR_DIFF_VEC.  These
    placeholders do not appear as real instructions inside a basic
    block, but are considered active_insn_p instructions for historical
    reasons, when jump table data was represented with JUMP_INSNs.  */
-DEF_RTL_EXPR(JUMP_TABLE_DATA, "jump_table_data", "iuuBe0000", RTX_INSN)
+DEF_RTL_EXPR(JUMP_TABLE_DATA, "jump_table_data", "uuBe0000", RTX_INSN)
 
 /* A marker that indicates that control will not flow through.  */
-DEF_RTL_EXPR(BARRIER, "barrier", "iuu00000", RTX_EXTRA)
+DEF_RTL_EXPR(BARRIER, "barrier", "uu00000", RTX_EXTRA)
 
 /* Holds a label that is followed by instructions.
    Operand:
-   4: is used in jump.c for the use-count of the label.
-   5: is used in the sh backend.
-   6: is a number that is unique in the entire compilation.
-   7: is the user-given name of the label, if any.  */
-DEF_RTL_EXPR(CODE_LABEL, "code_label", "iuuB00is", RTX_EXTRA)
+   3: is used in jump.c for the use-count of the label.
+   4: is used in the sh backend.
+   5: is a number that is unique in the entire compilation.
+   6: is the user-given name of the label, if any.  */
+DEF_RTL_EXPR(CODE_LABEL, "code_label", "uuB00is", RTX_EXTRA)
 
 /* Say where in the code a source line starts, for symbol table's sake.
    Operand:
-   4: note-specific data
-   5: enum insn_note
-   6: unique number if insn_note == note_insn_deleted_label.  */
-DEF_RTL_EXPR(NOTE, "note", "iuuB0ni", RTX_EXTRA)
+   3: note-specific data
+   4: enum insn_note
+   5: unique number if insn_note == note_insn_deleted_label.  */
+DEF_RTL_EXPR(NOTE, "note", "uuB0ni", RTX_EXTRA)
 
 /* ----------------------------------------------------------------------
    Top level constituents of INSN, JUMP_INSN and CALL_INSN.
index 487bfd08538eef223063e4c831b701473ad8f70f..46d0a118d88471ff9f5b7d92e31bcd2a7cc2e8c0 100644 (file)
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -109,6 +109,10 @@ extern const char * const rtx_format[NUM_RTX_CODE];
 extern const enum rtx_class rtx_class[NUM_RTX_CODE];
 #define GET_RTX_CLASS(CODE)            (rtx_class[(int) (CODE)])
 
+/* True if CODE is part of the insn chain (i.e. has INSN_UID, PREV_INSN
+   and NEXT_INSN fields).  */
+#define INSN_CHAIN_CODE_P(CODE) IN_RANGE (CODE, DEBUG_INSN, NOTE)
+
 extern const unsigned char rtx_code_size[NUM_RTX_CODE];
 extern const unsigned char rtx_next[NUM_RTX_CODE];
 \f
@@ -355,6 +359,9 @@ struct GTY((chain_next ("RTX_NEXT (&%h)"),
     /* The ORIGINAL_REGNO of a REG.  */
     unsigned int original_regno;
 
+    /* The INSN_UID of an RTX_INSN-class code.  */
+    int insn_uid;
+
     /* In a CONST_WIDE_INT (aka hwivec_def), this is the number of
        HOST_WIDE_INTs in the hwivec_def.  */
     unsigned int num_elem;
@@ -817,15 +824,12 @@ extern void rtvec_check_failed_bounds (const_rtvec, int, const char *, int,
                             __FUNCTION__);                             \
    _rtx; })
 
-#define RTL_FLAG_CHECK8(NAME, RTX, C1, C2, C3, C4, C5, C6, C7, C8)     \
+#define RTL_INSN_CHAIN_FLAG_CHECK(NAME, RTX)                           \
   __extension__                                                                \
 ({ __typeof (RTX) const _rtx = (RTX);                                  \
-   if (GET_CODE (_rtx) != C1 && GET_CODE (_rtx) != C2                  \
-       && GET_CODE (_rtx) != C3 && GET_CODE (_rtx) != C4               \
-       && GET_CODE (_rtx) != C5 && GET_CODE (_rtx) != C6               \
-       && GET_CODE (_rtx) != C7 && GET_CODE (_rtx) != C8)              \
-     rtl_check_failed_flag  (NAME, _rtx, __FILE__, __LINE__,           \
-                            __FUNCTION__);                             \
+   if (!INSN_CHAIN_CODE_P (GET_CODE (_rtx)))                           \
+     rtl_check_failed_flag (NAME, _rtx, __FILE__, __LINE__,            \
+                           __FUNCTION__);                              \
    _rtx; })
 
 extern void rtl_check_failed_flag (const char *, const_rtx, const char *,
@@ -839,10 +843,10 @@ extern void rtl_check_failed_flag (const char *, const_rtx, const char *,
 #define RTL_FLAG_CHECK2(NAME, RTX, C1, C2)                             (RTX)
 #define RTL_FLAG_CHECK3(NAME, RTX, C1, C2, C3)                         (RTX)
 #define RTL_FLAG_CHECK4(NAME, RTX, C1, C2, C3, C4)                     (RTX)
-#define RTL_FLAG_CHECK5(NAME, RTX, C1, C2, C3, C4, C5)         (RTX)
+#define RTL_FLAG_CHECK5(NAME, RTX, C1, C2, C3, C4, C5)                 (RTX)
 #define RTL_FLAG_CHECK6(NAME, RTX, C1, C2, C3, C4, C5, C6)             (RTX)
 #define RTL_FLAG_CHECK7(NAME, RTX, C1, C2, C3, C4, C5, C6, C7)         (RTX)
-#define RTL_FLAG_CHECK8(NAME, RTX, C1, C2, C3, C4, C5, C6, C7, C8)     (RTX)
+#define RTL_INSN_CHAIN_FLAG_CHECK(NAME, RTX)                           (RTX)
 #endif
 
 #define XINT(RTX, N)   (RTL_CHECK2 (RTX, N, 'i', 'n').rt_int)
@@ -899,18 +903,19 @@ extern void rtl_check_failed_flag (const char *, const_rtx, const char *,
 
 /* Holds a unique number for each insn.
    These are not necessarily sequentially increasing.  */
-#define INSN_UID(INSN)  XINT (INSN, 0)
+#define INSN_UID(INSN) \
+  (RTL_INSN_CHAIN_FLAG_CHECK ("INSN_UID", (INSN))->u2.insn_uid)
 
 /* Chain insns together in sequence.  */
-#define PREV_INSN(INSN)        XEXP (INSN, 1)
-#define NEXT_INSN(INSN)        XEXP (INSN, 2)
+#define PREV_INSN(INSN)        XEXP (INSN, 0)
+#define NEXT_INSN(INSN)        XEXP (INSN, 1)
 
-#define BLOCK_FOR_INSN(INSN) XBBDEF (INSN, 3)
+#define BLOCK_FOR_INSN(INSN) XBBDEF (INSN, 2)
 
 /* The body of an insn.  */
-#define PATTERN(INSN)  XEXP (INSN, 4)
+#define PATTERN(INSN)  XEXP (INSN, 3)
 
-#define INSN_LOCATION(INSN) XUINT (INSN, 5)
+#define INSN_LOCATION(INSN) XUINT (INSN, 4)
 
 #define INSN_HAS_LOCATION(INSN) ((LOCATION_LOCUS (INSN_LOCATION (INSN)))\
   != UNKNOWN_LOCATION)
@@ -921,7 +926,7 @@ extern void rtl_check_failed_flag (const char *, const_rtx, const char *,
 
 /* Code number of instruction, from when it was recognized.
    -1 means this instruction has not been recognized yet.  */
-#define INSN_CODE(INSN) XINT (INSN, 6)
+#define INSN_CODE(INSN) XINT (INSN, 5)
 
 #define RTX_FRAME_RELATED_P(RTX)                                       \
   (RTL_FLAG_CHECK6 ("RTX_FRAME_RELATED_P", (RTX), DEBUG_INSN, INSN,    \
@@ -929,9 +934,7 @@ extern void rtl_check_failed_flag (const char *, const_rtx, const char *,
 
 /* 1 if RTX is an insn that has been deleted.  */
 #define INSN_DELETED_P(RTX)                                            \
-  (RTL_FLAG_CHECK8 ("INSN_DELETED_P", (RTX), DEBUG_INSN, INSN,         \
-                   CALL_INSN, JUMP_INSN, JUMP_TABLE_DATA,              \
-                   CODE_LABEL, BARRIER, NOTE)->volatil)
+  (RTL_INSN_CHAIN_FLAG_CHECK ("INSN_DELETED_P", (RTX))->volatil)
 
 /* 1 if RTX is a call to a const function.  Built from ECF_CONST and
    TREE_READONLY.  */
@@ -981,7 +984,7 @@ extern void rtl_check_failed_flag (const char *, const_rtx, const char *,
    chain pointer and the first operand is the REG being described.
    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, 7)
+#define REG_NOTES(INSN)        XEXP(INSN, 6)
 
 /* In an ENTRY_VALUE this is the DECL_INCOMING_RTL of the argument in
    question.  */
@@ -1012,12 +1015,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, 8)
+#define CALL_INSN_FUNCTION_USAGE(INSN) XEXP(INSN, 7)
 
 /* 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, 6)
+#define CODE_LABEL_NUMBER(INSN)        XINT (INSN, 5)
 
 /* In a NOTE that is a line number, this is a string for the file name that the
    line is in.  We use the same field to record block numbers temporarily in
@@ -1026,19 +1029,19 @@ extern const char * const reg_note_name[];
    */
 
 /* Opaque data.  */
-#define NOTE_DATA(INSN)                RTL_CHECKC1 (INSN, 4, NOTE)
-#define NOTE_DELETED_LABEL_NAME(INSN) XCSTR (INSN, 4, NOTE)
+#define NOTE_DATA(INSN)                RTL_CHECKC1 (INSN, 3, NOTE)
+#define NOTE_DELETED_LABEL_NAME(INSN) XCSTR (INSN, 3, NOTE)
 #define SET_INSN_DELETED(INSN) set_insn_deleted (INSN);
-#define NOTE_BLOCK(INSN)       XCTREE (INSN, 4, NOTE)
-#define NOTE_EH_HANDLER(INSN)  XCINT (INSN, 4, NOTE)
-#define NOTE_BASIC_BLOCK(INSN) XCBBDEF (INSN, 4, NOTE)
-#define NOTE_VAR_LOCATION(INSN)        XCEXP (INSN, 4, NOTE)
-#define NOTE_CFI(INSN)         XCCFI (INSN, 4, NOTE)
-#define NOTE_LABEL_NUMBER(INSN)        XCINT (INSN, 4, NOTE)
+#define NOTE_BLOCK(INSN)       XCTREE (INSN, 3, NOTE)
+#define NOTE_EH_HANDLER(INSN)  XCINT (INSN, 3, NOTE)
+#define NOTE_BASIC_BLOCK(INSN) XCBBDEF (INSN, 3, NOTE)
+#define NOTE_VAR_LOCATION(INSN)        XCEXP (INSN, 3, NOTE)
+#define NOTE_CFI(INSN)         XCCFI (INSN, 3, NOTE)
+#define NOTE_LABEL_NUMBER(INSN)        XCINT (INSN, 3, 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_KIND(INSN) XCINT (INSN, 5, NOTE)
+#define NOTE_KIND(INSN) XCINT (INSN, 4, NOTE)
 
 /* Nonzero if INSN is a note marking the beginning of a basic block.  */
 #define NOTE_INSN_BASIC_BLOCK_P(INSN) \
@@ -1121,11 +1124,11 @@ extern const char * const note_insn_name[NOTE_INSN_MAX];
 
 /* The name of a label, in case it corresponds to an explicit label
    in the input source code.  */
-#define LABEL_NAME(RTX) XCSTR (RTX, 7, CODE_LABEL)
+#define LABEL_NAME(RTX) XCSTR (RTX, 6, 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, 5, CODE_LABEL)
+#define LABEL_NUSES(RTX) XCINT (RTX, 4, CODE_LABEL)
 
 /* Labels carry a two-bit field composed of the ->jump and ->call
    bits.  This field indicates whether the label is an alternate
@@ -1180,12 +1183,12 @@ enum label_kind
 /* 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, 8, JUMP_INSN)
+#define JUMP_LABEL(INSN)   XCEXP (INSN, 7, JUMP_INSN)
 
 /* Once basic blocks are found, 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, 3, CODE_LABEL)
 \f
 /* For a REG rtx, REGNO extracts the register number.  REGNO can only
    be used on RHS.  Use SET_REGNO to change the value.  */