llvm-project/lld
Daniel Bertalan a3f67f0920 [lld-macho] Initial support for Linker Optimization Hints
Linker optimization hints mark a sequence of instructions used for
synthesizing an address, like ADRP+ADD. If the referenced symbol ends up
close enough, it can be replaced by a faster sequence of instructions
like ADR+NOP.

This commit adds support for 2 of the 7 defined ARM64 optimization
hints:
- LOH_ARM64_ADRP_ADD, which transforms a pair of ADRP+ADD into ADR+NOP
  if the referenced address is within +/- 1 MiB
- LOH_ARM64_ADRP_ADRP, which transforms two ADRP instructions into
  ADR+NOP if they reference the same page

These two kinds already cover more than 50% of all LOHs in
chromium_framework.

Differential Review: https://reviews.llvm.org/D128093
2022-06-30 06:28:42 +02:00
..
COFF Revert "[LLD] [COFF] Use StringTableBuilder to optimize the string table" 2022-06-21 13:25:08 +03:00
Common [lld-macho] Add support for -w 2022-06-11 17:38:50 -07:00
ELF [ELF] Move InputFiles global variables (memoryBuffers, objectFiles, etc) into Ctx. NFC 2022-06-29 18:53:38 -07:00
MachO [lld-macho] Initial support for Linker Optimization Hints 2022-06-30 06:28:42 +02:00
MinGW [LLD] [MinGW] Implement --disable-reloc-section, mapped to /fixed 2022-06-15 16:51:20 +03:00
cmake/modules Revert "[cmake] Don't export `LLVM_TOOLS_INSTALL_DIR` anymore" 2022-06-10 19:26:12 +00:00
docs [docs] Remove outdated status update for FreeBSD 2022-06-27 19:41:53 -04:00
include/lld/Common [NFC][lld] Fix typos to test commit access 2022-06-24 00:19:18 +02:00
test [lld-macho] Initial support for Linker Optimization Hints 2022-06-30 06:28:42 +02:00
tools/lld [LLD] Fix issue in HIP due to unspecified order of evaluation of the function object 2022-02-08 19:12:15 -05:00
utils
wasm [lld][WebAssembly] Don't apply data relocations at static constructor time 2022-06-27 15:50:02 -07:00
.clang-format
.clang-tidy NFC: .clang-tidy: Inherit configs from parents to improve maintainability 2021-06-08 08:25:59 -07:00
.gitignore
CMakeLists.txt [NFC][lld] Fix typos to test commit access 2022-06-24 00:19:18 +02:00
CODE_OWNERS.TXT
LICENSE.TXT
README.md [doc] Place sha256 in lld/README.md into backticks 2021-01-12 10:19:40 -08:00

README.md

LLVM Linker (lld)

This directory and its subdirectories contain source code for the LLVM Linker, a modular cross platform linker which is built as part of the LLVM compiler infrastructure project.

lld is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt.

Benchmarking

In order to make sure various developers can evaluate patches over the same tests, we create a collection of self contained programs.

It is hosted at https://s3-us-west-2.amazonaws.com/linker-tests/lld-speed-test.tar.xz

The current sha256 is 10eec685463d5a8bbf08d77f4ca96282161d396c65bd97dc99dbde644a31610f.