OSDN Git Service

PR 5620
[pf3gnuchains/gcc-fork.git] / gcc / combine.c
index 533e4a8..426b0d7 100644 (file)
@@ -284,7 +284,7 @@ static basic_block this_basic_block;
    those blocks as starting points.  */
 static sbitmap refresh_blocks;
 \f
-/* The following array records the combine_insn_cost for every insn
+/* The following array records the insn_rtx_cost for every insn
    in the instruction stream.  */
 
 static int *uid_insn_cost;
@@ -515,44 +515,8 @@ do_SUBST_INT (int *into, int newval)
 
 #define SUBST_INT(INTO, NEWVAL)  do_SUBST_INT(&(INTO), (NEWVAL))
 \f
-/* Calculate the rtx_cost of a single instruction.  A return value of zero
-   indicates an instruction without a known cost.  */
-
-static int
-combine_insn_cost (rtx pat)
-{
-  int i, cost;
-  rtx set;
-
-  /* Extract the single set rtx from the instruction pattern.
-     We can't use single_set since we only have the pattern.  */
-  if (GET_CODE (pat) == SET)
-    set = pat;
-  else if (GET_CODE (pat) == PARALLEL)
-    {
-      set = NULL_RTX;
-      for (i = 0; i < XVECLEN (pat, 0); i++)
-       {
-         rtx x = XVECEXP (pat, 0, i);
-         if (GET_CODE (x) == SET)
-           {
-             if (set)
-               return 0;
-             set = x;
-           }
-       }
-      if (!set)
-       return 0;
-    }
-  else
-    return 0;
-
-  cost = rtx_cost (SET_SRC (set), SET);
-  return cost > 0 ? cost : COSTS_N_INSNS (1);
-}
-
 /* Subroutine of try_combine.  Determine whether the combine replacement
-   patterns NEWPAT and NEWI2PAT are cheaper according to combine_insn_cost
+   patterns NEWPAT and NEWI2PAT are cheaper according to insn_rtx_cost
    that the original instruction sequence I1, I2 and I3.  Note that I1
    and/or NEWI2PAT may be NULL_RTX.  This function returns false, if the
    costs of all instructions can be estimated, and the replacements are
@@ -565,7 +529,7 @@ combine_validate_cost (rtx i1, rtx i2, rtx i3, rtx newpat, rtx newi2pat)
   int new_i2_cost, new_i3_cost;
   int old_cost, new_cost;
 
-  /* Lookup the original combine_insn_costs.  */
+  /* Lookup the original insn_rtx_costs.  */
   i2_cost = INSN_UID (i2) <= last_insn_cost
            ? uid_insn_cost[INSN_UID (i2)] : 0;
   i3_cost = INSN_UID (i3) <= last_insn_cost
@@ -584,11 +548,11 @@ combine_validate_cost (rtx i1, rtx i2, rtx i3, rtx newpat, rtx newi2pat)
       i1_cost = 0;
     }
 
-  /* Calculate the replacement combine_insn_costs.  */
-  new_i3_cost = combine_insn_cost (newpat);
+  /* Calculate the replacement insn_rtx_costs.  */
+  new_i3_cost = insn_rtx_cost (newpat);
   if (newi2pat)
     {
-      new_i2_cost = combine_insn_cost (newi2pat);
+      new_i2_cost = insn_rtx_cost (newi2pat);
       new_cost = (new_i2_cost > 0 && new_i3_cost > 0)
                 ? new_i2_cost + new_i3_cost : 0;
     }
@@ -708,7 +672,7 @@ combine_instructions (rtx f, unsigned int nregs)
   refresh_blocks = sbitmap_alloc (last_basic_block);
   sbitmap_zero (refresh_blocks);
 
-  /* Allocate array of current combine_insn_costs.  */
+  /* Allocate array of current insn_rtx_costs.  */
   uid_insn_cost = xcalloc (max_uid_cuid + 1, sizeof (int));
   last_insn_cost = max_uid_cuid;
 
@@ -731,14 +695,15 @@ combine_instructions (rtx f, unsigned int nregs)
                                                NULL);
 #endif
 
-         /* Record the current combine_insn_cost of this instruction.  */
-         uid_insn_cost[INSN_UID (insn)] = combine_insn_cost (PATTERN (insn));
+         /* Record the current insn_rtx_cost of this instruction.  */
+         if (NONJUMP_INSN_P (insn))
+           uid_insn_cost[INSN_UID (insn)] = insn_rtx_cost (PATTERN (insn));
          if (dump_file)
            fprintf(dump_file, "insn_cost %d: %d\n",
                    INSN_UID (insn), uid_insn_cost[INSN_UID (insn)]);
        }
 
-      if (GET_CODE (insn) == CODE_LABEL)
+      if (LABEL_P (insn))
        label_tick++;
     }
 
@@ -760,7 +725,7 @@ combine_instructions (rtx f, unsigned int nregs)
        {
          next = 0;
 
-         if (GET_CODE (insn) == CODE_LABEL)
+         if (LABEL_P (insn))
            label_tick++;
 
          else if (INSN_P (insn))
@@ -784,7 +749,7 @@ combine_instructions (rtx f, unsigned int nregs)
 
                  /* If the linked insn has been replaced by a note, then there
                     is no point in pursuing this chain any further.  */
-                 if (GET_CODE (link) == NOTE)
+                 if (NOTE_P (link))
                    continue;
 
                  for (nextlinks = LOG_LINKS (link);
@@ -804,9 +769,9 @@ combine_instructions (rtx f, unsigned int nregs)
                 We need this special code because data flow connections
                 via CC0 do not get entered in LOG_LINKS.  */
 
-             if (GET_CODE (insn) == JUMP_INSN
+             if (JUMP_P (insn)
                  && (prev = prev_nonnote_insn (insn)) != 0
-                 && GET_CODE (prev) == INSN
+                 && NONJUMP_INSN_P (prev)
                  && sets_cc0_p (PATTERN (prev)))
                {
                  if ((next = try_combine (insn, prev,
@@ -822,9 +787,9 @@ combine_instructions (rtx f, unsigned int nregs)
                }
 
              /* Do the same for an insn that explicitly references CC0.  */
-             if (GET_CODE (insn) == INSN
+             if (NONJUMP_INSN_P (insn)
                  && (prev = prev_nonnote_insn (insn)) != 0
-                 && GET_CODE (prev) == INSN
+                 && NONJUMP_INSN_P (prev)
                  && sets_cc0_p (PATTERN (prev))
                  && GET_CODE (PATTERN (insn)) == SET
                  && reg_mentioned_p (cc0_rtx, SET_SRC (PATTERN (insn))))
@@ -845,11 +810,11 @@ combine_instructions (rtx f, unsigned int nregs)
                 explicitly references CC0.  If so, try this insn, that insn,
                 and its predecessor if it sets CC0.  */
              for (links = LOG_LINKS (insn); links; links = XEXP (links, 1))
-               if (GET_CODE (XEXP (links, 0)) == INSN
+               if (NONJUMP_INSN_P (XEXP (links, 0))
                    && GET_CODE (PATTERN (XEXP (links, 0))) == SET
                    && reg_mentioned_p (cc0_rtx, SET_SRC (PATTERN (XEXP (links, 0))))
                    && (prev = prev_nonnote_insn (XEXP (links, 0))) != 0
-                   && GET_CODE (prev) == INSN
+                   && NONJUMP_INSN_P (prev)
                    && sets_cc0_p (PATTERN (prev))
                    && (next = try_combine (insn, XEXP (links, 0),
                                            prev, &new_direct_jump_p)) != 0)
@@ -891,7 +856,7 @@ combine_instructions (rtx f, unsigned int nregs)
                    }
                }
 
-             if (GET_CODE (insn) != NOTE)
+             if (!NOTE_P (insn))
                record_dead_and_set_regs (insn);
 
            retry:
@@ -1205,7 +1170,7 @@ can_combine_p (rtx insn, rtx i3, rtx pred ATTRIBUTE_UNUSED, rtx succ,
       /* Can't merge a function call.  */
       || GET_CODE (src) == CALL
       /* Don't eliminate a function call argument.  */
-      || (GET_CODE (i3) == CALL_INSN
+      || (CALL_P (i3)
          && (find_reg_fusage (i3, USE, dest)
              || (REG_P (dest)
                  && REGNO (dest) < FIRST_PSEUDO_REGISTER
@@ -1342,7 +1307,7 @@ can_combine_p (rtx insn, rtx i3, rtx pred ATTRIBUTE_UNUSED, rtx succ,
 #ifdef AUTO_INC_DEC
   for (link = REG_NOTES (insn); link; link = XEXP (link, 1))
     if (REG_NOTE_KIND (link) == REG_INC
-       && (GET_CODE (i3) == JUMP_INSN
+       && (JUMP_P (i3)
            || reg_used_between_p (XEXP (link, 0), insn, i3)
            || reg_overlap_mentioned_p (XEXP (link, 0), PATTERN (i3))))
       return 0;
@@ -1359,7 +1324,7 @@ can_combine_p (rtx insn, rtx i3, rtx pred ATTRIBUTE_UNUSED, rtx succ,
      but that would be much slower, and this ought to be equivalent.  */
 
   p = prev_nonnote_insn (insn);
-  if (p && p != pred && GET_CODE (p) == INSN && sets_cc0_p (PATTERN (p))
+  if (p && p != pred && NONJUMP_INSN_P (p) && sets_cc0_p (PATTERN (p))
       && ! all_adjacent)
     return 0;
 #endif
@@ -1688,7 +1653,7 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p)
      where I2 and I3 are adjacent to avoid making difficult register
      usage tests.  */
 
-  if (i1 == 0 && GET_CODE (i3) == INSN && GET_CODE (PATTERN (i3)) == SET
+  if (i1 == 0 && NONJUMP_INSN_P (i3) && GET_CODE (PATTERN (i3)) == SET
       && REG_P (SET_SRC (PATTERN (i3)))
       && REGNO (SET_SRC (PATTERN (i3))) >= FIRST_PSEUDO_REGISTER
       && find_reg_note (i3, REG_DEAD, SET_SRC (PATTERN (i3)))
@@ -2646,7 +2611,7 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p)
      they are adjacent to each other or not.  */
   {
     rtx p = prev_nonnote_insn (i3);
-    if (p && p != i2 && GET_CODE (p) == INSN && newi2pat
+    if (p && p != i2 && NONJUMP_INSN_P (p) && newi2pat
        && sets_cc0_p (newi2pat))
       {
        undo_all ();
@@ -2655,7 +2620,7 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p)
   }
 #endif
 
-  /* Only allow this combination if combine_insn_costs reports that the
+  /* Only allow this combination if insn_rtx_costs reports that the
      replacement instructions are cheaper than the originals.  */
   if (!combine_validate_cost (i1, i2, i3, newpat, newi2pat))
     {
@@ -2702,7 +2667,7 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p)
     INSN_CODE (i3) = insn_code_number;
     PATTERN (i3) = newpat;
 
-    if (GET_CODE (i3) == CALL_INSN && CALL_INSN_FUNCTION_USAGE (i3))
+    if (CALL_P (i3) && CALL_INSN_FUNCTION_USAGE (i3))
       {
        rtx call_usage = CALL_INSN_FUNCTION_USAGE (i3);
 
@@ -2947,7 +2912,7 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p)
        mark_jump_label (PATTERN (i3), i3, 0);
 
        if ((temp = next_nonnote_insn (i3)) == NULL_RTX
-           || GET_CODE (temp) != BARRIER)
+           || !BARRIER_P (temp))
          emit_barrier_after (i3);
       }
 
@@ -2958,7 +2923,7 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p)
        *new_direct_jump_p = 1;
 
        if ((temp = next_nonnote_insn (undobuf.other_insn)) == NULL_RTX
-           || GET_CODE (temp) != BARRIER)
+           || !BARRIER_P (temp))
          emit_barrier_after (undobuf.other_insn);
       }
 
@@ -3087,12 +3052,12 @@ find_split_point (rtx *loc, rtx insn)
          if (seq
              && NEXT_INSN (seq) != NULL_RTX
              && NEXT_INSN (NEXT_INSN (seq)) == NULL_RTX
-             && GET_CODE (seq) == INSN
+             && NONJUMP_INSN_P (seq)
              && GET_CODE (PATTERN (seq)) == SET
              && SET_DEST (PATTERN (seq)) == reg
              && ! reg_mentioned_p (reg,
                                    SET_SRC (PATTERN (seq)))
-             && GET_CODE (NEXT_INSN (seq)) == INSN
+             && NONJUMP_INSN_P (NEXT_INSN (seq))
              && GET_CODE (PATTERN (NEXT_INSN (seq))) == SET
              && SET_DEST (PATTERN (NEXT_INSN (seq))) == reg
              && memory_address_p (GET_MODE (x),
@@ -4961,7 +4926,7 @@ simplify_if_then_else (rtx x)
       rtx f = make_compound_operation (false_rtx, SET);
       rtx cond_op0 = XEXP (cond, 0);
       rtx cond_op1 = XEXP (cond, 1);
-      enum rtx_code op = NIL, extend_op = NIL;
+      enum rtx_code op = UNKNOWN, extend_op = UNKNOWN;
       enum machine_mode m = mode;
       rtx z = 0, c1 = NULL_RTX;
 
@@ -5060,7 +5025,7 @@ simplify_if_then_else (rtx x)
          temp = subst (temp, pc_rtx, pc_rtx, 0, 0);
          temp = gen_binary (op, m, gen_lowpart (m, z), temp);
 
-         if (extend_op != NIL)
+         if (extend_op != UNKNOWN)
            temp = simplify_gen_unary (extend_op, mode, temp, m);
 
          return temp;
@@ -5142,7 +5107,7 @@ simplify_set (rtx x)
       if (GET_CODE (src) == COMPARE)
        op0 = XEXP (src, 0), op1 = XEXP (src, 1);
       else
-       op0 = src, op1 = const0_rtx;
+       op0 = src, op1 = CONST0_RTX (GET_MODE (src));
 
       tmp = simplify_relational_operation (old_code, compare_mode, VOIDmode,
                                           op0, op1);
@@ -5354,7 +5319,7 @@ simplify_set (rtx x)
      zero_extend to avoid the reload that would otherwise be required.  */
 
   if (GET_CODE (src) == SUBREG && subreg_lowpart_p (src)
-      && LOAD_EXTEND_OP (GET_MODE (SUBREG_REG (src))) != NIL
+      && LOAD_EXTEND_OP (GET_MODE (SUBREG_REG (src))) != UNKNOWN
       && SUBREG_BYTE (src) == 0
       && (GET_MODE_SIZE (GET_MODE (src))
          > GET_MODE_SIZE (GET_MODE (SUBREG_REG (src))))
@@ -8320,7 +8285,7 @@ extended_count (rtx x, enum machine_mode mode, int unsignedp)
    the width of this mode matter.  It is assumed that the width of this mode
    is smaller than or equal to HOST_BITS_PER_WIDE_INT.
 
-   If *POP0 or OP1 are NIL, it means no operation is required.  Only NEG, PLUS,
+   If *POP0 or OP1 are UNKNOWN, it means no operation is required.  Only NEG, PLUS,
    IOR, XOR, and AND are supported.  We may set *POP0 to SET if the proper
    result is simply *PCONST0.
 
@@ -8340,13 +8305,13 @@ merge_outer_ops (enum rtx_code *pop0, HOST_WIDE_INT *pconst0, enum rtx_code op1,
   if (op0 == AND)
     const1 &= const0;
 
-  /* If OP0 or OP1 is NIL, this is easy.  Similarly if they are the same or
+  /* If OP0 or OP1 is UNKNOWN, this is easy.  Similarly if they are the same or
      if OP0 is SET.  */
 
-  if (op1 == NIL || op0 == SET)
+  if (op1 == UNKNOWN || op0 == SET)
     return 1;
 
-  else if (op0 == NIL)
+  else if (op0 == UNKNOWN)
     op0 = op1, const0 = const1;
 
   else if (op0 == op1)
@@ -8366,7 +8331,7 @@ merge_outer_ops (enum rtx_code *pop0, HOST_WIDE_INT *pconst0, enum rtx_code op1,
          const0 += const1;
          break;
        case NEG:
-         op0 = NIL;
+         op0 = UNKNOWN;
          break;
        default:
          break;
@@ -8419,12 +8384,12 @@ merge_outer_ops (enum rtx_code *pop0, HOST_WIDE_INT *pconst0, enum rtx_code op1,
   const0 &= GET_MODE_MASK (mode);
   if (const0 == 0
       && (op0 == IOR || op0 == XOR || op0 == PLUS))
-    op0 = NIL;
+    op0 = UNKNOWN;
   else if (const0 == 0 && op0 == AND)
     op0 = SET;
   else if ((unsigned HOST_WIDE_INT) const0 == GET_MODE_MASK (mode)
           && op0 == AND)
-    op0 = NIL;
+    op0 = UNKNOWN;
 
   /* ??? Slightly redundant with the above mask, but not entirely.
      Moving this above means we'd have to sign-extend the mode mask
@@ -8458,7 +8423,7 @@ simplify_shift_const (rtx x, enum rtx_code code,
   unsigned int mode_words
     = (GET_MODE_SIZE (mode) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD;
   /* We form (outer_op (code varop count) (outer_const)).  */
-  enum rtx_code outer_op = NIL;
+  enum rtx_code outer_op = UNKNOWN;
   HOST_WIDE_INT outer_const = 0;
   rtx const_rtx;
   int complement_p = 0;
@@ -9126,7 +9091,7 @@ simplify_shift_const (rtx x, enum rtx_code code,
 
   /* We have now finished analyzing the shift.  The result should be
      a shift of type CODE with SHIFT_MODE shifting VAROP COUNT places.  If
-     OUTER_OP is non-NIL, it is an operation that needs to be applied
+     OUTER_OP is non-UNKNOWN, it is an operation that needs to be applied
      to the result of the shift.  OUTER_CONST is the relevant constant,
      but we must turn off all bits turned off in the shift.
 
@@ -9162,7 +9127,7 @@ simplify_shift_const (rtx x, enum rtx_code code,
      for the outer operation.  So try to do the simplification
      recursively.  */
 
-  if (outer_op != NIL && GET_CODE (x) == code
+  if (outer_op != UNKNOWN && GET_CODE (x) == code
       && GET_CODE (XEXP (x, 1)) == CONST_INT)
     x = simplify_shift_const (x, code, shift_mode, XEXP (x, 0),
                              INTVAL (XEXP (x, 1)));
@@ -9181,7 +9146,7 @@ simplify_shift_const (rtx x, enum rtx_code code,
   if (complement_p)
     x = simplify_gen_unary (NOT, result_mode, x, result_mode);
 
-  if (outer_op != NIL)
+  if (outer_op != UNKNOWN)
     {
       if (GET_MODE_BITSIZE (result_mode) < HOST_BITS_PER_WIDE_INT)
        outer_const = trunc_int_for_mode (outer_const, result_mode);
@@ -9810,7 +9775,7 @@ simplify_comparison (enum rtx_code code, rtx *pop0, rtx *pop1)
          break;
 
        case GEU:
-         /* >= C is equivalent to < (C - 1).  */
+         /* >= C is equivalent to > (C - 1).  */
          if (const_op > 1)
            {
              const_op -= 1;
@@ -10541,7 +10506,7 @@ simplify_comparison (enum rtx_code code, rtx *pop0, rtx *pop1)
      those bits.
 
      3. SUBREG_REG (op0) is a memory and LOAD_EXTEND_OP is defined and not
-     NIL.  In that case we know those bits are zeros or ones.  We must
+     UNKNOWN.  In that case we know those bits are zeros or ones.  We must
      also be sure that they are the same as the upper bits of op1.
 
      We can never remove a SUBREG for a non-equality comparison because
@@ -10939,7 +10904,7 @@ record_dead_and_set_regs (rtx insn)
        record_value_for_reg (XEXP (link, 0), insn, NULL_RTX);
     }
 
-  if (GET_CODE (insn) == CALL_INSN)
+  if (CALL_P (insn))
     {
       for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
        if (TEST_HARD_REG_BIT (regs_invalidated_by_call, i))
@@ -11088,7 +11053,7 @@ get_last_value_validate (rtx *loc, rtx insn, int tick, int replace)
   /* If this is a memory reference, make sure that there were
      no stores after it that might have clobbered the value.  We don't
      have alias info, so we assume any store invalidates it.  */
-  else if (MEM_P (x) && ! RTX_UNCHANGING_P (x)
+  else if (MEM_P (x) && !MEM_READONLY_P (x)
           && INSN_CUID (insn) <= mem_last_set)
     {
       if (replace)
@@ -11321,7 +11286,7 @@ reg_dead_at_p (rtx reg, rtx insn)
 
   /* Scan backwards until we find a REG_DEAD note, SET, CLOBBER, label, or
      beginning of function.  */
-  for (; insn && GET_CODE (insn) != CODE_LABEL && GET_CODE (insn) != BARRIER;
+  for (; insn && !LABEL_P (insn) && !BARRIER_P (insn);
        insn = prev_nonnote_insn (insn))
     {
       note_stores (PATTERN (insn), reg_dead_at_p_1, NULL);
@@ -11733,16 +11698,10 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2)
          /* Just get rid of this note, as it is unused later anyway.  */
          break;
 
-       case REG_VTABLE_REF:
-         /* ??? Should remain with *a particular* memory load.  Given the
-            nature of vtable data, the last insn seems relatively safe.  */
-         place = i3;
-         break;
-
        case REG_NON_LOCAL_GOTO:
-         if (GET_CODE (i3) == JUMP_INSN)
+         if (JUMP_P (i3))
            place = i3;
-         else if (i2 && GET_CODE (i2) == JUMP_INSN)
+         else if (i2 && JUMP_P (i2))
            place = i2;
          else
            abort ();
@@ -11750,9 +11709,9 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2)
 
        case REG_EH_REGION:
          /* These notes must remain with the call or trapping instruction.  */
-         if (GET_CODE (i3) == CALL_INSN)
+         if (CALL_P (i3))
            place = i3;
-         else if (i2 && GET_CODE (i2) == CALL_INSN)
+         else if (i2 && CALL_P (i2))
            place = i2;
          else if (flag_non_call_exceptions)
            {
@@ -11773,9 +11732,9 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2)
        case REG_SETJMP:
          /* These notes must remain with the call.  It should not be
             possible for both I2 and I3 to be a call.  */
-         if (GET_CODE (i3) == CALL_INSN)
+         if (CALL_P (i3))
            place = i3;
-         else if (i2 && GET_CODE (i2) == CALL_INSN)
+         else if (i2 && CALL_P (i2))
            place = i2;
          else
            abort ();
@@ -11883,19 +11842,19 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2)
 
          /* Don't attach REG_LABEL note to a JUMP_INSN which has
             JUMP_LABEL already.  Instead, decrement LABEL_NUSES.  */
-         if (place && GET_CODE (place) == JUMP_INSN && JUMP_LABEL (place))
+         if (place && JUMP_P (place) && JUMP_LABEL (place))
            {
              if (JUMP_LABEL (place) != XEXP (note, 0))
                abort ();
-             if (GET_CODE (JUMP_LABEL (place)) == CODE_LABEL)
+             if (LABEL_P (JUMP_LABEL (place)))
                LABEL_NUSES (JUMP_LABEL (place))--;
              place = 0;
            }
-         if (place2 && GET_CODE (place2) == JUMP_INSN && JUMP_LABEL (place2))
+         if (place2 && JUMP_P (place2) && JUMP_LABEL (place2))
            {
              if (JUMP_LABEL (place2) != XEXP (note, 0))
                abort ();
-             if (GET_CODE (JUMP_LABEL (place2)) == CODE_LABEL)
+             if (LABEL_P (JUMP_LABEL (place2)))
                LABEL_NUSES (JUMP_LABEL (place2))--;
              place2 = 0;
            }
@@ -11912,7 +11871,7 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2)
          /* If the insn previously containing this note still exists,
             put it back where it was.  Otherwise move it to the previous
             insn.  Adjust the corresponding REG_LIBCALL note.  */
-         if (GET_CODE (from_insn) != NOTE)
+         if (!NOTE_P (from_insn))
            place = from_insn;
          else
            {
@@ -11932,7 +11891,7 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2)
 
        case REG_LIBCALL:
          /* This is handled similarly to REG_RETVAL.  */
-         if (GET_CODE (from_insn) != NOTE)
+         if (!NOTE_P (from_insn))
            place = from_insn;
          else
            {
@@ -11966,7 +11925,7 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2)
             use of A and put the death note there.  */
 
          if (from_insn
-             && GET_CODE (from_insn) == CALL_INSN
+             && CALL_P (from_insn)
              && find_reg_fusage (from_insn, USE, XEXP (note, 0)))
            place = from_insn;
          else if (reg_referenced_p (XEXP (note, 0), PATTERN (i3)))
@@ -12074,7 +12033,7 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2)
                        }
                    }
                  else if (reg_referenced_p (XEXP (note, 0), PATTERN (tem))
-                          || (GET_CODE (tem) == CALL_INSN
+                          || (CALL_P (tem)
                               && find_reg_fusage (tem, USE, XEXP (note, 0))))
                    {
                      place = tem;
@@ -12281,7 +12240,7 @@ distribute_links (rtx links)
         replace I3, I2, and I1 by I3 and I2.  But in that case the
         destination of I2 also remains unchanged.  */
 
-      if (GET_CODE (XEXP (link, 0)) == NOTE
+      if (NOTE_P (XEXP (link, 0))
          || (set = single_set (XEXP (link, 0))) == 0)
        continue;
 
@@ -12310,7 +12269,7 @@ distribute_links (rtx links)
              place = insn;
            break;
          }
-       else if (GET_CODE (insn) == CALL_INSN
+       else if (CALL_P (insn)
                 && find_reg_fusage (insn, USE, reg))
          {
            place = insn;
@@ -12378,7 +12337,7 @@ static int
 insn_cuid (rtx insn)
 {
   while (insn != 0 && INSN_UID (insn) > max_uid_cuid
-        && GET_CODE (insn) == INSN && GET_CODE (PATTERN (insn)) == USE)
+        && NONJUMP_INSN_P (insn) && GET_CODE (PATTERN (insn)) == USE)
     insn = NEXT_INSN (insn);
 
   if (INSN_UID (insn) > max_uid_cuid)