Teach LLVM about a PIE option which, when enabled on top of PIC, makes
authorChandler Carruth <chandlerc@gmail.com>
Sun, 8 Apr 2012 17:51:45 +0000 (17:51 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sun, 8 Apr 2012 17:51:45 +0000 (17:51 +0000)
commit253933ee9ef2c413ecd782efeacc5d7b9bcda09a
tree4dd402f01a78ae40c9d6569bc5fba37f5af64501
parent34797136cb9fa9f450c0e1c47983482083979dd4
Teach LLVM about a PIE option which, when enabled on top of PIC, makes
optimizations which are valid for position independent code being linked
into a single executable, but not for such code being linked into
a shared library.

I discussed the design of this with Eric Christopher, and the decision
was to support an optional bit rather than a completely separate
relocation model. Fundamentally, this is still PIC relocation, its just
that certain optimizations are only valid under a PIC relocation model
when the resulting code won't be in a shared library. The simplest path
to here is to expose a single bit option in the TargetOptions. If folks
have different/better designs, I'm all ears. =]

I've included the first optimization based upon this: changing TLS
models to the *Exec models when PIE is enabled. This is the LLVM
component of PR12380 and is all of the hard work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154294 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Target/TargetOptions.h
lib/Target/TargetMachine.cpp
test/CodeGen/X86/tls-pie.ll [new file with mode: 0644]
tools/llc/llc.cpp