forked from OSchip/llvm-project
6cdd68e386
Suggested by Sean Fertile and Peter Smith. Thunk section spacing decrease the total number of thunks. I measured a decrease of 1% or less in some large programs, with no perceivable slowdown in link time. Override getThunkSectionSpacing() to enable it. 0x2000000 is the farthest point R_PPC64_REL24 can reach. I tried several numbers and found 0x2000000 works the best. Numbers near 0x2000000 work as well but let's just use the simpler number. As demonstrated by the updated tests, this essentially changes placement of most thunks to the end of the output section. We leverage this property to fix PR40740 reported by Alfredo Dal'Ava Júnior: The output section .init consists of input sections from several object files (crti.o crtbegin.o crtend.o crtn.o). Sections other than the last one do not have a terminator. With this patch, we create the thunk after the last .init input section and thus fix the issue. This is not foolproof but works quite well for such sections (with no terminator) in practice. Reviewed By: ruiu, sfertile Differential Revision: https://reviews.llvm.org/D61720 llvm-svn: 360405 |
||
---|---|---|
.. | ||
AArch64.cpp | ||
AMDGPU.cpp | ||
ARM.cpp | ||
AVR.cpp | ||
Hexagon.cpp | ||
MSP430.cpp | ||
Mips.cpp | ||
MipsArchTree.cpp | ||
PPC.cpp | ||
PPC64.cpp | ||
RISCV.cpp | ||
SPARCV9.cpp | ||
X86.cpp | ||
X86_64.cpp |