[llvm] [AMDGPU] Propagate alias information in AMDGPULowerKernelArguments. (PR #161375)
Leon Clark via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 25 22:23:31 PST 2025
================
@@ -58,6 +66,143 @@ static BasicBlock::iterator getInsertPt(BasicBlock &BB) {
return InsPt;
}
+static void addAliasScopeMetadata(Function &F, DataLayout const &DL) {
+ // Collect noalias arguments.
+ auto NoAliasArgs = SmallVector<Argument const *, 4u>();
+
+ for (auto &Arg : F.args())
+ if (Arg.hasNoAliasAttr() && !Arg.use_empty())
+ NoAliasArgs.push_back(&Arg);
+
+ if (NoAliasArgs.empty())
+ return;
+
+ // Add alias scopes for each noalias argument.
+ auto MDB = MDBuilder(F.getContext());
+ auto NewScopes = DenseMap<Argument const *, MDNode *>();
+ auto *NewDomain = MDB.createAnonymousAliasScopeDomain(F.getName());
+
+ for (auto I = 0u; I < NoAliasArgs.size(); ++I) {
+ auto *Arg = NoAliasArgs[I];
+ auto Name = std::string(F.getName());
+
+ if (Arg->hasName())
+ Name += std::string(": %") + std::string(Arg->getName());
----------------
PeddleSpam wrote:
This was based on similar code in [InlineFunction.cpp](https://github.com/llvm/llvm-project/blob/6459f39c377dc8b7d5d81ef365553c8625fb4def/llvm/lib/Transforms/Utils/InlineFunction.cpp#L1152).
https://github.com/llvm/llvm-project/pull/161375
More information about the llvm-commits
mailing list