[llvm-dev] RFC: avoid relocations with PC

Joerg Sonnenberger via llvm-dev llvm-dev at lists.llvm.org
Sun Feb 24 16:01:11 PST 2019


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


More information about the llvm-dev mailing list