diff options
author | Jozef Lawrynowicz <jozef.l@mittosystems.com> | 2020-07-21 17:24:04 +0100 |
---|---|---|
committer | Jozef Lawrynowicz <jozef.l@mittosystems.com> | 2020-07-21 17:32:06 +0100 |
commit | b4ca70a3faa5ebc1f9fb4600583d0986f1bc7133 (patch) | |
tree | 6a9a443680f577a3e02b1e1dc80ad7c45e22fa27 /gcc | |
parent | aa360dd1c882b943066ba088861c0bfac9df930d (diff) | |
download | gcc-b4ca70a3faa5ebc1f9fb4600583d0986f1bc7133.zip gcc-b4ca70a3faa5ebc1f9fb4600583d0986f1bc7133.tar.gz gcc-b4ca70a3faa5ebc1f9fb4600583d0986f1bc7133.tar.bz2 |
MSP430: Remove do_no_relax_short_jumps
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.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/msp430/msp430-protos.h | 1 | ||||
-rw-r--r-- | gcc/config/msp430/msp430.c | 13 | ||||
-rw-r--r-- | gcc/config/msp430/msp430.md | 31 |
3 files changed, 4 insertions, 41 deletions
diff --git a/gcc/config/msp430/msp430-protos.h b/gcc/config/msp430/msp430-protos.h index 29ce9bab..a13a94c 100644 --- a/gcc/config/msp430/msp430-protos.h +++ b/gcc/config/msp430/msp430-protos.h @@ -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); diff --git a/gcc/config/msp430/msp430.c b/gcc/config/msp430/msp430.c index 6bb1714..455b4af 100644 --- a/gcc/config/msp430/msp430.c +++ b/gcc/config/msp430/msp430.c @@ -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, diff --git a/gcc/config/msp430/msp430.md b/gcc/config/msp430/msp430.md index 99299bd..ed21eb0 100644 --- a/gcc/config/msp430/msp430.md +++ b/gcc/config/msp430/msp430.md @@ -1309,33 +1309,10 @@ (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 |