[llvm-branch-commits] [llvm] llvm-reduce: Handle the addrspacecast nonnull flag (PR #217907)

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Fri Aug 21 10:15:48 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-llvm-ir

Author: Matt Arsenault (arsenm)

<details>
<summary>Changes</summary>

Co-authored-by: Claude (Claude-Opus-4.8) <noreply@<!-- -->anthropic.com>

---
Full diff: https://github.com/llvm/llvm-project/pull/217907.diff


3 Files Affected:

- (modified) llvm/test/tools/llvm-reduce/reduce-flags.ll (+24) 
- (modified) llvm/tools/llvm-reduce/ReducerWorkItem.cpp (+3) 
- (modified) llvm/tools/llvm-reduce/deltas/ReduceInstructionFlags.cpp (+3) 


``````````diff
diff --git a/llvm/test/tools/llvm-reduce/reduce-flags.ll b/llvm/test/tools/llvm-reduce/reduce-flags.ll
index f220fc429c89e..dd7610f583533 100644
--- a/llvm/test/tools/llvm-reduce/reduce-flags.ll
+++ b/llvm/test/tools/llvm-reduce/reduce-flags.ll
@@ -288,3 +288,27 @@ define i1 @icmp_samesign_keep(i32 %a) {
   %op = icmp samesign ult i32 %a, 10
   ret i1 %op
 }
+
+; CHECK-LABEL: @addrspacecast_nonnull_drop(
+; INTERESTING: = addrspacecast
+; RESULT: addrspacecast ptr addrspace(1) %a to ptr
+define ptr @addrspacecast_nonnull_drop(ptr addrspace(1) %a) {
+  %op = addrspacecast nonnull ptr addrspace(1) %a to ptr
+  ret ptr %op
+}
+
+; CHECK-LABEL: @addrspacecast_nonnull_keep(
+; INTERESTING: = addrspacecast nonnull
+; RESULT: addrspacecast nonnull ptr addrspace(1) %a to ptr
+define ptr @addrspacecast_nonnull_keep(ptr addrspace(1) %a) {
+  %op = addrspacecast nonnull ptr addrspace(1) %a to ptr
+  ret ptr %op
+}
+
+; CHECK-LABEL: @addrspacecast_nonnull_vector_keep(
+; INTERESTING: = addrspacecast nonnull
+; RESULT: addrspacecast nonnull <2 x ptr addrspace(1)> %a to <2 x ptr>
+define <2 x ptr> @addrspacecast_nonnull_vector_keep(<2 x ptr addrspace(1)> %a) {
+  %op = addrspacecast nonnull <2 x ptr addrspace(1)> %a to <2 x ptr>
+  ret <2 x ptr> %op
+}
diff --git a/llvm/tools/llvm-reduce/ReducerWorkItem.cpp b/llvm/tools/llvm-reduce/ReducerWorkItem.cpp
index fa4da7a073f1e..9be05aafc865d 100644
--- a/llvm/tools/llvm-reduce/ReducerWorkItem.cpp
+++ b/llvm/tools/llvm-reduce/ReducerWorkItem.cpp
@@ -681,6 +681,9 @@ static uint64_t computeIRComplexityScoreImpl(const Function &F) {
       } else if (const auto *PDI = dyn_cast<PossiblyDisjointInst>(&I)) {
         if (PDI->isDisjoint())
           ++Score;
+      } else if (const auto *ASC = dyn_cast<AddrSpaceCastInst>(&I)) {
+        if (ASC->hasNonNull())
+          ++Score;
       } else if (const auto *GEP = dyn_cast<GEPOperator>(&I)) {
         if (GEP->isInBounds())
           ++Score;
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceInstructionFlags.cpp b/llvm/tools/llvm-reduce/deltas/ReduceInstructionFlags.cpp
index 2937550bfec75..300747b4c5312 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceInstructionFlags.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceInstructionFlags.cpp
@@ -45,6 +45,9 @@ void llvm::reduceInstructionFlagsDeltaPass(Oracle &O,
       } else if (auto *ICmp = dyn_cast<ICmpInst>(&I)) {
         if (ICmp->hasSameSign() && !O.shouldKeep())
           ICmp->setSameSign(false);
+      } else if (auto *ASC = dyn_cast<AddrSpaceCastInst>(&I)) {
+        if (ASC->hasNonNull() && !O.shouldKeep())
+          ASC->setNonNull(false);
       } else if (auto *GEP = dyn_cast<GetElementPtrInst>(&I)) {
         GEPNoWrapFlags NW = GEP->getNoWrapFlags();
         if (NW.isInBounds() && !O.shouldKeep())

``````````

</details>


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


More information about the llvm-branch-commits mailing list