[llvm] [FuzzMutate] Reject invalid inputs in the IR fuzzers (PR #202348)

Paweł Bylica via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 8 07:41:03 PDT 2026


https://github.com/chfast created https://github.com/llvm/llvm-project/pull/202348

In llvm-isel-fuzzer and llvm-opt-fuzzer return -1 from LLVMFuzzerTestOneInput to ignore an invalid input. This will remove it from in-memory corpus and prevent sending it to the custom mutators (useless and crashes llvm-isel-fuzzer). libfuzzer truncates with -max_len so inputs above the limit are automatically invalid.

>From c6b0c85bd4e0849c20e9f5887f8b9591a7f77ec0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pawe=C5=82=20Bylica?= <pawel at hepcolgum.band>
Date: Mon, 8 Jun 2026 16:27:50 +0200
Subject: [PATCH] [FuzzMutate] Reject invalid inputs in the IR fuzzers

In llvm-isel-fuzzer and llvm-opt-fuzzer return -1 from LLVMFuzzerTestOneInput
to ignore an invalid input. This will remove it from in-memory corpus and
prevent sending it to the custom mutators (useless and crashes
llvm-isel-fuzzer). libfuzzer truncates with -max_len so inputs above the
limit are automatically invalid.
---
 llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp | 2 +-
 llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp b/llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp
index 22d33e13639d8..2b69a5a53ba01 100644
--- a/llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp
+++ b/llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp
@@ -87,7 +87,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
   auto M = parseAndVerify(Data, Size, Context);
   if (!M) {
     errs() << "error: input module is broken!\n";
-    return 0;
+    return -1; // Ignore this input.
   }
 
   // Set up the module to build for our target.
diff --git a/llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp b/llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
index c77d82ecaeaa5..e532f02518041 100644
--- a/llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
+++ b/llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
@@ -118,7 +118,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
   auto M = parseAndVerify(Data, Size, Context);
   if (!M) {
     errs() << "error: input module is broken!\n";
-    return 0;
+    return -1; // Ignore this input.
   }
 
   // Set up target dependant options



More information about the llvm-commits mailing list