[all-commits] [llvm/llvm-project] b63329: [ElimAvailExtern] Add an option to allow to conver...
Shilei Tian via All-commits
all-commits at lists.llvm.org
Sun Jun 15 19:19:46 PDT 2025
Branch: refs/heads/users/shiltian/convert-to-local-in-as
Home: https://github.com/llvm/llvm-project
Commit: b633297e0c826e805fe38bf1abfada81347a7a63
https://github.com/llvm/llvm-project/commit/b633297e0c826e805fe38bf1abfada81347a7a63
Author: Shilei Tian <i at tianshilei.me>
Date: 2025-06-15 (Sun, 15 Jun 2025)
Changed paths:
M llvm/lib/Transforms/IPO/ElimAvailExtern.cpp
A llvm/test/Transforms/EliminateAvailableExternally/convert-global-variables-to-local.ll
Log Message:
-----------
[ElimAvailExtern] Add an option to allow to convert global variables in a specified address space to local
Currently, the `EliminateAvailableExternallyPass` only converts certain
available externally functions to local. 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.
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list