diff options
author | Amy Kwan <amy.kwan1@ibm.com> | 2023-09-07 12:19:48 -0500 |
---|---|---|
committer | Amy Kwan <amy.kwan1@ibm.com> | 2023-09-07 20:05:29 -0500 |
commit | 3f46e5453d9310b15d974e876f6132e3cf50c4b1 (patch) | |
tree | ad8f3eb5a28205b21def6e7e815774415732e72e /flang/lib/Frontend/CompilerInvocation.cpp | |
parent | 8bdbee8aaa76960c54cd0071455b92e9d60d8966 (diff) | |
download | llvm-3f46e5453d9310b15d974e876f6132e3cf50c4b1.zip llvm-3f46e5453d9310b15d974e876f6132e3cf50c4b1.tar.gz llvm-3f46e5453d9310b15d974e876f6132e3cf50c4b1.tar.bz2 |
[AIX][TLS] Produce a faster local-exec access sequence with -maix-small-local-exec-tls (And optimize when load/store offsets are 0)
This patch utilizes the -maix-small-local-exec-tls option added in
D155544 to produce a faster access sequence for the local-exec TLS
model, where loading from the TOC can be avoided.
The patch either produces an addi/la with a displacement off of r13
(the thread pointer) when the address is calculated, or it produces an
addi/la followed by a load/store when the address is calculated and
used for further accesses.
This patch also optimizes this sequence a bit more where we can remove
the addi/la when the load/store offset is 0. A follow up patch will
be posted to account for when the load/store offset is non-zero, and
currently in these situations we keep the addi/la that precedes the
load/store.
Furthermore, this access sequence is only performed for TLS variables
that are less than ~32KB in size.
Differential Revision: https://reviews.llvm.org/D155600
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions