[llvm-dev] RFC: avoid relocations with PC (original) (raw)
Joerg Sonnenberger via llvm-dev llvm-dev at lists.llvm.org
Sun Feb 24 16:01:11 PST 2019
- Previous message: [llvm-dev] RFC: avoid relocations with PC
- Next message: [llvm-dev] [X86 MIR] Get memory address read in PUSH64rmm
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sun, Feb 24, 2019 at 11:17:57AM -0600, Shawn Landden via llvm-dev wrote:
When PIC code uses a string, this creates a relocation that slows down program startup time. As long as the string is in the same compilation unit as the PIC code this relocation is unnecessary, as the offset of the compiled unit is stored in the program counter, and can be accessed by a stored subtraction/addition. This would mean more instructions at the call site, so the details I would image would require some careful coordination between llvm and lld.
This is happening already given support from the target architecture and code model. Compile
const char *f(void) { return "foo"; }
for x86-64 with -fPIC for example (i.e. small code model).
Joerg
- Previous message: [llvm-dev] RFC: avoid relocations with PC
- Next message: [llvm-dev] [X86 MIR] Get memory address read in PUSH64rmm
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]