From cfe7b9bd58c634bda974e291ce95030b1e42a690 Mon Sep 17 00:00:00 2001 From: Benjamin Green Date: Tue, 25 Jul 2017 09:41:23 +0100 Subject: [PATCH] Add a linker branch optimization for the MSP430. PR 21824 * elf32-msp430.c (msp430_elf_relax_section): Allow conversion of 16-bit absolute branches into 10-bit pc-relative branches on the MSP430 as well as the MSP430X. --- bfd/ChangeLog | 7 +++++++ bfd/elf32-msp430.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index d224022c2ef..aacae0f9a53 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2017-07-25 Benjamin Green + + PR 21824 + * elf32-msp430.c (msp430_elf_relax_section): Allow conversion of + 16-bit absolute branches into 10-bit pc-relative branches on the + MSP430 as well as the MSP430X. + 2017-07-25 Alan Modra * elf64-ppc.c (struct map_stub): Add tls_get_addr_opt_bctrl. diff --git a/bfd/elf32-msp430.c b/bfd/elf32-msp430.c index 9fae01573e3..75a6288a32a 100644 --- a/bfd/elf32-msp430.c +++ b/bfd/elf32-msp430.c @@ -2227,8 +2227,8 @@ msp430_elf_relax_section (bfd * abfd, asection * sec, /* Try to turn a 16-bit absolute branch into a 10-bit pc-relative branch. */ - if (uses_msp430x_relocs (abfd) - && ELF32_R_TYPE (irel->r_info) == R_MSP430X_ABS16) + if (ELF32_R_TYPE (irel->r_info) == R_MSP430X_ABS16 + || ELF32_R_TYPE (irel->r_info) == R_MSP430_16) { bfd_vma value = symval;