MSP430: Remove do_no_relax_short_jumps
authorJozef Lawrynowicz <jozef.l@mittosystems.com>
Tue, 21 Jul 2020 16:24:04 +0000 (17:24 +0100)
committerJozef Lawrynowicz <jozef.l@mittosystems.com>
Tue, 21 Jul 2020 16:32:06 +0000 (17:32 +0100)
This is an old cludge from from when the Binutils linker could not relax
BR to JMP and vice-versa when shuffling "either" sections between upper
and lower memory. This has been fixed since at least Binutils 2.30.

gcc/ChangeLog:

* config/msp430/msp430-protos.h (msp430_do_not_relax_short_jumps):
Remove.
* config/msp430/msp430.c (msp430_do_not_relax_short_jumps): Likewise.
* config/msp430/msp430.md (cbranchhi4_real): Remove special case for
msp430_do_not_relax_short_jumps.

gcc/config/msp430/msp430-protos.h
gcc/config/msp430/msp430.c
gcc/config/msp430/msp430.md

index 29ce9babc4a41b4c9df609737cb58937ffcfa323..a13a94cb92c31619397e74d553bb6c036e80321d 100644 (file)
@@ -21,7 +21,6 @@
 #ifndef GCC_MSP430_PROTOS_H
 #define GCC_MSP430_PROTOS_H
 
-bool   msp430_do_not_relax_short_jumps (void);
 rtx    msp430_eh_return_stackadj_rtx (void);
 void   msp430_expand_eh_return (rtx);
 void   msp430_expand_epilogue (int);
index 6bb1714f4658d2dbff5830b8fa830e26b8b88a7f..455b4af3dad4e41c2c800c0c5f4c59c088176bd0 100644 (file)
@@ -2161,19 +2161,6 @@ msp430_file_end (void)
 #endif
 }
 
-bool
-msp430_do_not_relax_short_jumps (void)
-{
-  /* When placing code into "either" low or high memory we do not want the
-     linker to grow the size of sections, which it can do if it is encounters a
-     branch to a label that is too far away.  So we tell the cbranch patterns to
-     avoid using short jumps when there is a chance that the instructions will
-     end up in a low section.  */
-  return
-    msp430_code_region == MSP430_REGION_EITHER
-    || has_attr (ATTR_EITHER, current_function_decl);
-}
-
 enum msp430_builtin
 {
   MSP430_BUILTIN_BIC_SR,
index 99299bd70efa4026025ee2b34d744cce28441842..ed21eb02868caa1c52f4a815df2982e4e2b31bf1 100644 (file)
    (clobber (reg:BI CARRY))
    ]
   ""
-  "*
-    /* This is nasty.  If we are splitting code between low and high memory
-       then we do not want the linker to increase the size of sections by
-       relaxing out of range jump instructions.  (Since relaxation occurs
-       after section placement).  So we have to generate pessimal branches
-       here.  But we only want to do this when really necessary.
-
-       FIXME: Do we need code in the other cbranch patterns ?  */
-    if (msp430_do_not_relax_short_jumps () && get_attr_length (insn) > 6)
-      {
-        return which_alternative == 0 ?
-            \"CMP.W\t%2, %1 { J%r0 1f { BRA #%l3 { 1:\" :
-           \"CMPX.W\t%2, %1 { J%r0 1f { BRA #%l3 { 1:\";
-      }
-
-    return which_alternative == 0 ?
-         \"CMP.W\t%2, %1 { J%0\t%l3\" :
-        \"CMPX.W\t%2, %1 { J%0\t%l3\";
-  "
-  [(set (attr "length")
-       (if_then_else
-         (and (ge (minus (match_dup 3) (pc)) (const_int -510))
-              (le (minus (match_dup 3) (pc)) (const_int 510)))
-         (const_int 6)
-         (const_int 10))
-       )]
-  )
+  "@
+   CMP.W\t%2, %1 { J%0\t%l3
+   CMPX.W\t%2, %1 { J%0\t%l3"
+)
 
 (define_insn "cbranchpsi4_reversed"
   [(set (pc) (if_then_else