[all-commits] [llvm/llvm-project] a3f67f: [lld-macho] Initial support for Linker Optimizatio...

Daniel Bertalan via All-commits all-commits at lists.llvm.org
Wed Jun 29 21:29:51 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: a3f67f0920eaa111637b3411209213f46de202d7
      https://github.com/llvm/llvm-project/commit/a3f67f0920eaa111637b3411209213f46de202d7
  Author: Daniel Bertalan <dani at danielbertalan.dev>
  Date:   2022-06-30 (Thu, 30 Jun 2022)

  Changed paths:
    M lld/MachO/Arch/ARM64.cpp
    M lld/MachO/Config.h
    M lld/MachO/Driver.cpp
    M lld/MachO/InputFiles.cpp
    M lld/MachO/InputFiles.h
    M lld/MachO/InputSection.cpp
    M lld/MachO/InputSection.h
    M lld/MachO/Options.td
    M lld/MachO/Relocations.h
    M lld/MachO/Target.h
    A lld/test/MachO/invalid/invalid-loh.s
    A lld/test/MachO/loh-adrp-add.s
    A lld/test/MachO/loh-adrp-adrp.s
    M llvm/include/llvm/BinaryFormat/MachO.h

  Log Message:
  -----------
  [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




More information about the All-commits mailing list