ELF: Place ordered sections in the middle of the unordered section list on targets...
authorPeter Collingbourne <peter@pcc.me.uk>
Fri, 30 Mar 2018 21:36:54 +0000 (21:36 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Fri, 30 Mar 2018 21:36:54 +0000 (21:36 +0000)
commit5ea6d50af113043da8a82215bb23f98c620e0112
tree42a27442303220e8762b5d28ad733b0ff158596c
parent0b01dfbba69d634c0fde133b5098d73a6f92ffea
ELF: Place ordered sections in the middle of the unordered section list on targets with limited-range branches.

It generally does not matter much where we place sections ordered
by --symbol-ordering-file relative to other sections. But if the
ordered sections are hot (which is the case already for some users
of --symbol-ordering-file, and is increasingly more likely to be
the case once profile-guided section layout lands) and the target
has limited-range branches, it is beneficial to place the ordered
sections in the middle of the output section in order to decrease
the likelihood that a range extension thunk will be required to call
a hot function from a cold function or vice versa.

That is what this patch does. After D44966 it reduces the size of
Chromium for Android's .text section by 60KB.

Differential Revision: https://reviews.llvm.org/D44969

llvm-svn: 328905
lld/ELF/Writer.cpp
lld/test/ELF/arm-symbol-ordering-file.s [new file with mode: 0644]