[PATCH] D103431: [AMDGPU] Fix missing lowering of LDS used in global scope.
Mahesha S via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 3 22:01:35 PDT 2021
hsmhsm marked 3 inline comments as done.
hsmhsm added inline comments.
================
Comment at: llvm/lib/Target/AMDGPU/Utils/AMDGPULDSUtils.cpp:109
- if (auto *E = dyn_cast<ConstantExpr>(V)) {
- if (F) {
- // Any use which does not end up an instruction disqualifies a
- // variable to be put into a kernel's LDS structure because later
- // we will need to replace only this kernel's uses for which we
- // need to identify a using function.
- if (!isUsedOnlyFromFunction(E, F))
- return false;
+ if (isa<Constant>(U)) {
+ // Recursively traverse through constant expressions.
----------------
rampitec wrote:
> It seems to miss the case when a same constant used by multiple kernels if I am not missing something. We could fix it by converting constant to an instruction but not doing it yet. You even had a utility function for that in some other patch.
That is correct - The intention of this patch is to fix bug within shouldLowerLDSToStruct() by making sure that it will properly analyse the uses of LDS to decide if it is to be lowered or not (for both module lds lowering and kernel lds lowering), and also to make the code bit programmer freindly for understanding it.
I implemented a separate patch to handle constants users of LDS for kernel lds lowering (not yet uploaded). I was trying resolve a minor bug where in some cases, LDS was not getting erased from the module. But, now looking at your new patch https://reviews.llvm.org/D103655, looks like I was missing the statement - GV->removeDeadConstantUsers();
But, anyway, let's review the patch https://reviews.llvm.org/D103655.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D103431/new/
https://reviews.llvm.org/D103431
More information about the llvm-commits
mailing list