RISC-V: Reduce effective linker relaxation passses
authorTsukasa OI <research_trasio@irq.a4lg.com>
Fri, 10 Feb 2023 09:27:28 +0000 (09:27 +0000)
committerTsukasa OI <research_trasio@irq.a4lg.com>
Fri, 10 Feb 2023 11:01:51 +0000 (11:01 +0000)
Commit 43025f01a0c9 ("RISC-V: Improve link time complexity.") reduced the
time complexity of the linker relaxation but some code portions did not
reflect this change.

This commit fixes a comment describing each relaxation pass and reduces
actual number of passes for the RISC-V linker relaxation from 3 to 2.
Though it does not change the functionality, it marginally improves the
performance while linking large programs (with many relocations).

bfd/ChangeLog:

* elfnn-riscv.c (_bfd_riscv_relax_section): Fix a comment to
reflect current roles of each relaxation pass.

ld/ChangeLog:

* emultempl/riscvelf.em: Reduce the number of linker relaxation
passes from 3 to 2.

bfd/elfnn-riscv.c
ld/emultempl/riscvelf.em

index 4a5da7df3fe9f9b064f08cc2e24890d4deaa3ba3..c2604de0050d63cfb8e8ef8efebdfe66fe7db7ed 100644 (file)
@@ -4754,9 +4754,9 @@ bfd_elfNN_riscv_set_data_segment_info (struct bfd_link_info *info,
 
 /* Relax a section.
 
-   Pass 0: Shortens code sequences for LUI/CALL/TPREL/PCREL relocs.
-   Pass 1: Deletes the bytes that PCREL relaxation in pass 0 made obsolete.
-   Pass 2: Which cannot be disabled, handles code alignment directives.  */
+   Pass 0: Shortens code sequences for LUI/CALL/TPREL/PCREL relocs and
+          deletes the obsolete bytes.
+   Pass 1: Which cannot be disabled, handles code alignment directives.  */
 
 static bool
 _bfd_riscv_relax_section (bfd *abfd, asection *sec,
index b7435d6fb6205e71ada924508d79a82f0a74a932..b12d15065c4d5ba108c8c4b1d91c26719a533193 100644 (file)
@@ -42,7 +42,7 @@ riscv_elf_before_allocation (void)
        ENABLE_RELAXATION;
     }
 
-  link_info.relax_pass = 3;
+  link_info.relax_pass = 2;
 }
 
 static void