[PATCH v3 0/3] RISCV: Improve linker time complexity
Patrick O'Neill
patrick@rivosinc.com
Fri May 27 21:20:02 GMT 2022
The current linker has an O(n^2) time complexity when it comes to
deleting bytes. By deferring the deletion of bytes, we can achieve O(n)
deletion runtime.
There is a pathological case that could cause this to have worse
performance, so the --no-defer-deletion flag is added to allow users
to opt-out.
Patrick O'Neill (3):
RISCV: Add linker relaxation tests
RISCV: Implement piecewise deletion
RISCV: Add --defer-deletion flag
bfd/elfnn-riscv.c | 193 ++++++++++++++++-----
include/bfdlink.h | 4 +
ld/ld.texi | 10 ++
ld/ldlex.h | 2 +
ld/lexsup.c | 10 ++
ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp | 6 +
ld/testsuite/ld-riscv-elf/relax-call-1.d | 17 ++
ld/testsuite/ld-riscv-elf/relax-call-1.s | 7 +
ld/testsuite/ld-riscv-elf/relax-call-2.d | 21 +++
ld/testsuite/ld-riscv-elf/relax-call-2.s | 10 ++
ld/testsuite/ld-riscv-elf/relax-call-3.d | 25 +++
ld/testsuite/ld-riscv-elf/relax-call-3.s | 13 ++
ld/testsuite/ld-riscv-elf/relax-call-4.d | 19 ++
ld/testsuite/ld-riscv-elf/relax-call-4.s | 8 +
ld/testsuite/ld-riscv-elf/relax-call-5.d | 23 +++
ld/testsuite/ld-riscv-elf/relax-call-5.s | 11 ++
ld/testsuite/ld-riscv-elf/relax-call-6.d | 22 +++
ld/testsuite/ld-riscv-elf/relax-call-6.s | 11 ++
18 files changed, 366 insertions(+), 46 deletions(-)
create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-1.d
create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-1.s
create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-2.d
create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-2.s
create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-3.d
create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-3.s
create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-4.d
create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-4.s
create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-5.d
create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-5.s
create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-6.d
create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-6.s
--
2.25.1
More information about the Binutils
mailing list