[llvm] fuzz1 (PR #173702)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 26 21:23:59 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-transforms
Author: Justin Lebar (jlebar)
<details>
<summary>Changes</summary>
- **[NFC] Add missing `override` on function.**
- **[InstCombine] Guard foldICmpSRemConstant against zero divisors**
---
Full diff: https://github.com/llvm/llvm-project/pull/173702.diff
3 Files Affected:
- (modified) llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp (+4-4)
- (added) llvm/test/Transforms/InstCombine/srem-zero-icmp-ult.ll (+16)
- (modified) llvm/tools/llvm-mc-assemble-fuzzer/llvm-mc-assemble-fuzzer.cpp (+1-1)
``````````diff
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
index 7f1ced9505b9b..d23712597ff49 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
@@ -2668,17 +2668,17 @@ Instruction *InstCombinerImpl::foldICmpSRemConstant(ICmpInst &Cmp,
const APInt *DivisorC;
if (!match(SRem->getOperand(1), m_APInt(DivisorC)))
return nullptr;
+ if (DivisorC->isZero())
+ return nullptr;
APInt NormalizedC = C;
if (Pred == ICmpInst::ICMP_ULT) {
- assert(!NormalizedC.isZero() &&
- "ult X, 0 should have been simplified already.");
+ if (NormalizedC.isZero())
+ return nullptr;
--NormalizedC;
}
if (C.isNegative())
NormalizedC.flipAllBits();
- assert(!DivisorC->isZero() &&
- "srem X, 0 should have been simplified already.");
if (!NormalizedC.uge(DivisorC->abs() - 1))
return nullptr;
diff --git a/llvm/test/Transforms/InstCombine/srem-zero-icmp-ult.ll b/llvm/test/Transforms/InstCombine/srem-zero-icmp-ult.ll
new file mode 100644
index 0000000000000..e0d0658deaadb
--- /dev/null
+++ b/llvm/test/Transforms/InstCombine/srem-zero-icmp-ult.ll
@@ -0,0 +1,16 @@
+; RUN: opt -passes=instcombine -S < %s | FileCheck %s
+
+define i64 @f(i1 %c) {
+entry:
+ %0 = select i1 %c, i64 3, i64 0
+ %1 = trunc i64 %0 to i8
+ %2 = sdiv i8 -1, %1
+ %3 = srem i8 -1, %2
+ %4 = icmp ult i8 %1, %3
+ %5 = zext i1 %4 to i64
+ %6 = select i1 false, i64 %0, i64 %5
+ ret i64 %6
+}
+
+; CHECK-LABEL: @f(
+; CHECK: ret i64 poison
diff --git a/llvm/tools/llvm-mc-assemble-fuzzer/llvm-mc-assemble-fuzzer.cpp b/llvm/tools/llvm-mc-assemble-fuzzer/llvm-mc-assemble-fuzzer.cpp
index fb5c0bf45b8cd..6b976b8960125 100644
--- a/llvm/tools/llvm-mc-assemble-fuzzer/llvm-mc-assemble-fuzzer.cpp
+++ b/llvm/tools/llvm-mc-assemble-fuzzer/llvm-mc-assemble-fuzzer.cpp
@@ -95,7 +95,7 @@ class LLVMFuzzerInputBuffer : public MemoryBuffer
}
- virtual BufferKind getBufferKind() const {
+ virtual BufferKind getBufferKind() const override {
return MemoryBuffer_Malloc; // it's not disk-backed so I think that's
// the intent ... though AFAIK it
// probably came from an mmap or sbrk
``````````
</details>
https://github.com/llvm/llvm-project/pull/173702
More information about the llvm-commits
mailing list