[llvm] [IR] Add writerange attribute conveying a pointer argument's write range in a function (PR #227191)

via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 28 22:53:37 PDT 2026


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff origin/main HEAD --extensions h,cpp -- llvm/include/llvm/AsmParser/LLParser.h llvm/include/llvm/Bitcode/LLVMBitCodes.h llvm/include/llvm/IR/Attributes.h llvm/lib/Analysis/BasicAliasAnalysis.cpp llvm/lib/AsmParser/LLParser.cpp llvm/lib/Bitcode/Reader/BitcodeReader.cpp llvm/lib/Bitcode/Writer/BitcodeWriter.cpp llvm/lib/IR/Attributes.cpp llvm/lib/IR/Verifier.cpp llvm/lib/Transforms/IPO/FunctionAttrs.cpp llvm/lib/Transforms/Utils/CodeExtractor.cpp --diff_from_common_commit
``````````

:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
index 91a419c23..465b5542d 100644
--- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp
+++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
@@ -942,11 +942,10 @@ AliasResult BasicAAResult::alias(const MemoryLocation &LocA,
   return aliasCheck(LocA.Ptr, LocA.Size, LocB.Ptr, LocB.Size, AAQI, CtxI);
 }
 
-static bool ArgWriteRangeDisjointFromLoc(const CallBase *Call,
-                                              unsigned ArgIdx,
-                                              const Value *Arg,
-                                              const MemoryLocation &Loc,
-                                              const DataLayout &DL) {
+static bool ArgWriteRangeDisjointFromLoc(const CallBase *Call, unsigned ArgIdx,
+                                         const Value *Arg,
+                                         const MemoryLocation &Loc,
+                                         const DataLayout &DL) {
   if (!Call->paramHasAttr(ArgIdx, Attribute::WriteRange))
     return false;
   if (!Loc.Size.hasValue() || !Loc.Size.isPrecise() ||
@@ -1063,7 +1062,7 @@ ModRefInfo BasicAAResult::getModRefInfo(const CallBase *Call,
               ? MemoryLocation::getForArgument(Call, ArgIdx, TLI)
               : MemoryLocation::getBeforeOrAfter(Arg);
       AliasResult ArgAlias = AAQI.AAR.alias(ArgLoc, Loc, AAQI, Call);
-      
+
       if (ArgAlias != AliasResult::NoAlias) {
         ModRefInfo PerArgMR = ArgMR & AAQI.AAR.getArgModRefInfo(Call, ArgIdx);
 
diff --git a/llvm/lib/Transforms/IPO/FunctionAttrs.cpp b/llvm/lib/Transforms/IPO/FunctionAttrs.cpp
index 33b4ec901..a53329666 100644
--- a/llvm/lib/Transforms/IPO/FunctionAttrs.cpp
+++ b/llvm/lib/Transforms/IPO/FunctionAttrs.cpp
@@ -1342,7 +1342,7 @@ static void addArgumentAttrs(const SCCNodeSet &SCCNodes,
       }
 
       if (!A.onlyReadsMemory()) {
-        if(inferWriteRange(A, *F))
+        if (inferWriteRange(A, *F))
           Changed.insert(F);
       }
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/227191


More information about the llvm-commits mailing list