[Passes] Add relative lookup table converter pass
authorGulfem Savrun Yeniceri <gulfem@google.com>
Tue, 29 Dec 2020 21:32:13 +0000 (21:32 +0000)
committerGulfem Savrun Yeniceri <gulfem@google.com>
Tue, 13 Apr 2021 01:29:41 +0000 (01:29 +0000)
commite96df3e531f506eea75da0f13d0f8aa9a267f975
treeaa82e06f6d20ec18735469161a35bc9f67c17019
parent1310a19af06262122a6e9e4f6fbbe9c39ebad76e
[Passes] Add relative lookup table converter pass

Lookup tables generate non PIC-friendly code, which requires dynamic relocation as described in:
https://bugs.llvm.org/show_bug.cgi?id=45244

This patch adds a new pass that converts lookup tables to relative lookup tables to make them PIC-friendly.

Differential Revision: https://reviews.llvm.org/D94355
16 files changed:
llvm/docs/Passes.rst
llvm/include/llvm/Analysis/TargetTransformInfo.h
llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
llvm/include/llvm/CodeGen/BasicTTIImpl.h
llvm/include/llvm/Transforms/Utils/RelLookupTableConverter.h [new file with mode: 0644]
llvm/lib/Analysis/TargetTransformInfo.cpp
llvm/lib/Passes/PassBuilder.cpp
llvm/lib/Passes/PassRegistry.def
llvm/lib/Transforms/Utils/CMakeLists.txt
llvm/lib/Transforms/Utils/RelLookupTableConverter.cpp [new file with mode: 0644]
llvm/test/Other/new-pm-defaults.ll
llvm/test/Other/new-pm-thinlto-defaults.ll
llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
llvm/test/Transforms/RelLookupTableConverter/X86/no_relative_lookup_table.ll [new file with mode: 0644]
llvm/test/Transforms/RelLookupTableConverter/X86/relative_lookup_table.ll [new file with mode: 0644]