aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp
diff options
context:
space:
mode:
authorShilei Tian <i@tianshilei.me>2025-06-17 19:58:24 -0400
committerGitHub <noreply@github.com>2025-06-17 19:58:24 -0400
commit15482c83aa2b05779d7ad947c34835656ab9da1c (patch)
treedc8dab56691ff2af5199cd4dd1886c583c92fc9f /llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp
parentc21a4c6c43bb6d68dfe52e07a5a391a6167eedf9 (diff)
downloadllvm-15482c83aa2b05779d7ad947c34835656ab9da1c.zip
llvm-15482c83aa2b05779d7ad947c34835656ab9da1c.tar.gz
llvm-15482c83aa2b05779d7ad947c34835656ab9da1c.tar.bz2
[ElimAvailExtern] Add an option to allow to convert global variables in a specified address space to local (#144287)
Currently, the `EliminateAvailableExternallyPass` only converts certain available externally functions to local if `avail-extern-to-local` is set or in contextual profiling mode. For global variables, it only drops their initializers. This PR adds an option to allow the pass to convert global variables in a specified address space to local. The motivation for this change is to correctly support lowering of LDS variables (`__shared__` variables, in more generic terminology) when ThinLTO is enabled for AMDGPU. A `__shared__` variable is lowered to a hidden global variable in a particular address space by the frontend, which is roughly same as a `static` local variable. To properly lower it in the backend, the compiler needs to check all its uses. Enabling ThinLTO currently breaks this when a function containing a `__shared__` variable is imported from another module. Even though the global variable is imported along with its associated function, and the function is privatized by the `EliminateAvailableExternallyPass`, the global variable itself is not. It's safe to privatize such global variables, because they're _local_ to their associated functions. If the function itself is privatized, its associated global variables should also be privatized accordingly.
Diffstat (limited to 'llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp')
0 files changed, 0 insertions, 0 deletions