[llvm] 376a07d - [ValueTracking] Handle trunc to i1 condition in isKnownNonZeroFromAssume (#230919)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Oct 11 03:34:00 PDT 2026
Author: Andreas Jonson
Date: 2026-10-11T12:33:54+02:00
New Revision: 376a07d4189ae4a911763d4de5d7d4d6e74ddfa8
URL: https://github.com/llvm/llvm-project/commit/376a07d4189ae4a911763d4de5d7d4d6e74ddfa8
DIFF: https://github.com/llvm/llvm-project/commit/376a07d4189ae4a911763d4de5d7d4d6e74ddfa8.diff
LOG: [ValueTracking] Handle trunc to i1 condition in isKnownNonZeroFromAssume (#230919)
Proof: https://alive2.llvm.org/ce/z/YFN6qu
Added:
Modified:
llvm/lib/Analysis/ValueTracking.cpp
llvm/test/Transforms/InstSimplify/assume-non-zero.ll
Removed:
################################################################################
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp
index 7bbb2eb8e8313..f75ec6e622f0a 100644
--- a/llvm/lib/Analysis/ValueTracking.cpp
+++ b/llvm/lib/Analysis/ValueTracking.cpp
@@ -890,6 +890,10 @@ static bool isKnownNonZeroFromAssume(const Value *V, const SimplifyQuery &Q) {
// We're running this loop for once for each value queried resulting in a
// runtime of ~O(#assumes * #values).
+ if (match(I->getArgOperand(0), m_Trunc(m_Specific(V))) &&
+ isValidAssumeForContext(I, Q))
+ return true;
+
Value *RHS;
CmpPredicate Pred;
auto m_V = m_CombineOr(m_Specific(V), m_PtrToInt(m_Specific(V)));
diff --git a/llvm/test/Transforms/InstSimplify/assume-non-zero.ll b/llvm/test/Transforms/InstSimplify/assume-non-zero.ll
index 22bdf374487da..331c9504f2da6 100644
--- a/llvm/test/Transforms/InstSimplify/assume-non-zero.ll
+++ b/llvm/test/Transforms/InstSimplify/assume-non-zero.ll
@@ -236,8 +236,7 @@ define i1 @nonnull_trunc_true(i8 %x) {
; CHECK-LABEL: @nonnull_trunc_true(
; CHECK-NEXT: [[A:%.*]] = trunc i8 [[X:%.*]] to i1
; CHECK-NEXT: call void @llvm.assume(i1 [[A]])
-; CHECK-NEXT: [[Q:%.*]] = icmp ne i8 [[X]], 0
-; CHECK-NEXT: ret i1 [[Q]]
+; CHECK-NEXT: ret i1 true
;
%a = trunc i8 %x to i1
call void @llvm.assume(i1 %a)
More information about the llvm-commits
mailing list