[llvm] AMDGPU/PromoteAlloca: Refactor into analysis / commit phases (PR #170512)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 9 20:03:23 PST 2025
Nicolai =?utf-8?q?Hähnle?= <nicolai.haehnle at amd.com>,
Nicolai =?utf-8?q?Hähnle?= <nicolai.haehnle at amd.com>,
Nicolai =?utf-8?q?Hähnle?= <nicolai.haehnle at amd.com>,
Nicolai =?utf-8?q?Hähnle?= <nicolai.haehnle at amd.com>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/170512 at github.com>
================
@@ -237,53 +272,77 @@ FunctionPass *llvm::createAMDGPUPromoteAlloca() {
return new AMDGPUPromoteAlloca();
}
-static void collectAllocaUses(AllocaInst &Alloca,
- SmallVectorImpl<Use *> &Uses) {
- SmallVector<Instruction *, 4> WorkList({&Alloca});
+bool AMDGPUPromoteAllocaImpl::collectAllocaUses(AllocaAnalysis &AA) const {
+ const auto RejectUser = [&](Instruction *Inst, Twine Msg) {
+ LLVM_DEBUG(dbgs() << " Cannot promote alloca: " << Msg << "\n"
+ << " " << *Inst << "\n");
+ return false;
+ };
+
+ SmallVector<Instruction *, 4> WorkList({AA.Alloca});
while (!WorkList.empty()) {
auto *Cur = WorkList.pop_back_val();
+ if (find(AA.Pointers, Cur) != AA.Pointers.end())
----------------
ruiling wrote:
If the `Pointers` is only used for query, can we make it `DenseSet`. Seems like it is only used locally, do we need to put it in the `AA`?
https://github.com/llvm/llvm-project/pull/170512
More information about the llvm-commits
mailing list