diff options
author | Sean Fertile <sfertile@ca.ibm.com> | 2018-09-20 00:26:44 +0000 |
---|---|---|
committer | Sean Fertile <sfertile@ca.ibm.com> | 2018-09-20 00:26:44 +0000 |
commit | 7f3f05e0b78f00ad8df0f0222b4b1589dea85610 (patch) | |
tree | 49d59dc6bb5bc64fb0caf2fb3ef7498426643bf7 /llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | |
parent | 04d38c5f527d06e43aad5bba55d2eb2f8131e0f5 (diff) | |
download | llvm-7f3f05e0b78f00ad8df0f0222b4b1589dea85610.zip llvm-7f3f05e0b78f00ad8df0f0222b4b1589dea85610.tar.gz llvm-7f3f05e0b78f00ad8df0f0222b4b1589dea85610.tar.bz2 |
[PPC64] Optimize redundant instructions in global access sequences.
The access sequence for global variables in the medium and large code models use
2 instructions to add an offset to the toc-pointer. If the offset fits whithin
16-bits then the instruction that sets the high 16 bits is redundant.
This patch adds the --toc-optimize option, (on by default) and enables rewriting
of 2 instruction global variable accesses into 1 when the offset from the
TOC-pointer to the variable (or .got entry) fits in 16 signed bits. eg
addis %r3, %r2, 0 --> nop
addi %r3, %r3, -0x8000 --> addi %r3, %r2, -0x8000
This rewriting can be disabled with the --no-toc-optimize flag
Differential Revision: https://reviews.llvm.org/D49237
llvm-svn: 342602
Diffstat (limited to 'llvm/lib/Bitcode/Writer/BitcodeWriter.cpp')
0 files changed, 0 insertions, 0 deletions