The RX100/200 families have 4 byte cache lines, vs 8 bytes for the
RX600 family.  Applied.

        * config/rx/rx.h (FUNCTION_BOUNDARY): Adjust for RX100/200 4-byte
        cache lines.
        * config/rx/rx.c (rx_option_override): Likewise.
        (rx_align_for_label): Likewise.

Index: config/rx/rx.h
===================================================================
--- config/rx/rx.h      (revision 211479)
+++ config/rx/rx.h      (working copy)
@@ -139,13 +139,13 @@
 #endif
 
 #define DEFAULT_SIGNED_CHAR            0
 
 /* RX load/store instructions can handle unaligned addresses.  */
 #define STRICT_ALIGNMENT               0
-#define FUNCTION_BOUNDARY              8
+#define FUNCTION_BOUNDARY              ((rx_cpu_type == RX100 || rx_cpu_type 
== RX200) ? 4 : 8)
 #define BIGGEST_ALIGNMENT              32
 #define STACK_BOUNDARY                         32
 #define PARM_BOUNDARY                  8
 
 #define STACK_GROWS_DOWNWARD           1
 #define FRAME_GROWS_DOWNWARD           0
Index: config/rx/rx.c
===================================================================
--- config/rx/rx.c      (revision 211480)
+++ config/rx/rx.c      (working copy)
@@ -2789,17 +2789,17 @@ rx_option_override (void)
   if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
     flag_strict_volatile_bitfields = 1;
 
   rx_override_options_after_change ();
 
   if (align_jumps == 0 && ! optimize_size)
-    align_jumps = 3;
+    align_jumps = ((rx_cpu_type == RX100 || rx_cpu_type == RX200) ? 2 : 3);
   if (align_loops == 0 && ! optimize_size)
-    align_loops = 3;
+    align_loops = ((rx_cpu_type == RX100 || rx_cpu_type == RX200) ? 2 : 3);
   if (align_labels == 0 && ! optimize_size)
-    align_labels = 3;
+    align_labels = ((rx_cpu_type == RX100 || rx_cpu_type == RX200) ? 2 : 3);
 }
 
 
 static bool
 rx_allocate_stack_slots_for_args (void)
 {
@@ -3198,13 +3198,17 @@ rx_align_for_label (rtx lab, int uses_th
      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_P (lab) && LABEL_NUSES (lab) < uses_threshold)
     return 0;
 
-  return optimize_size ? 1 : 3;
+  if (optimize_size)
+    return 0;
+  if (rx_cpu_type == RX100 || rx_cpu_type == RX200)
+    return 2;
+  return 2;
 }
 
 static int
 rx_max_skip_for_label (rtx lab)
 {
   int opsize;

Reply via email to