Hi Guys,

  I am applying the patch below to the RX backend on the 4.6 branch.  It
  fixes several small, obvious bugs, as described in the changelog.

Cheers
  Nick

gcc/ChangeLog
2011-05-12  Nick Clifton  <ni...@redhat.com>

        * config/rx/rx.h (HAVE_PRE_DECREMENT): Fix typo.
        * config/rx/rx.c (rx_is_legitimate_constant): Use gcc_unreachable
        instead of abort.
        (rx_align_for_label): Test label before extracting its number of
        uses.
        (rx_max_skip_for_label): Ignore debug insns.

Index: gcc/config/rx/rx.h
===================================================================
--- gcc/config/rx/rx.h  (revision 173693)
+++ gcc/config/rx/rx.h  (working copy)
@@ -155,7 +155,7 @@
 
 #define LEGITIMATE_CONSTANT_P(X)       rx_is_legitimate_constant (X)
 
-#define HAVE_PRE_DECCREMENT            1
+#define HAVE_PRE_DECREMENT             1
 #define HAVE_POST_INCREMENT            1
 
 #define MOVE_RATIO(SPEED)              ((SPEED) ? 4 : 2)
Index: gcc/config/rx/rx.c
===================================================================
--- gcc/config/rx/rx.c  (revision 173693)
+++ gcc/config/rx/rx.c  (working copy)
@@ -2451,8 +2451,7 @@
 
        default:
          /* FIXME: Can this ever happen ?  */
-         abort ();
-         return false;
+         gcc_unreachable ();
        }
       break;
       
@@ -2758,7 +2757,7 @@
      because the delay due to the inserted NOPs would be greater than the delay
      due to the misaligned branch.  If uses_threshold is zero then the 
alignment
      is always useful.  */
-  if (LABEL_NUSES (lab) < uses_threshold)
+  if (LABEL_P (lab) && LABEL_NUSES (lab) < uses_threshold)
     return 0;
 
   return optimize_size ? 1 : 3;
@@ -2775,7 +2774,7 @@
   op = lab;
   do
     {
-      op = next_nonnote_insn (op);
+      op = next_nonnote_nondebug_insn (op);
     }
   while (op && (LABEL_P (op)
                || (INSN_P (op) && GET_CODE (PATTERN (op)) == USE)));

Reply via email to