aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2025-02-11 23:36:53 -0800
committerGitHub <noreply@github.com>2025-02-11 23:36:53 -0800
commit58f928814d026fbf8fe7fef778a9fc890f9283bb (patch)
treec871c0cfd3ad18f748f51c0181b99bf058db991d /src
parentdb0d9c21267dd6e482c96be1fc532a5f4eef9219 (diff)
parentd789f1e5cf60b063d5140c27926fd1a6b1654356 (diff)
downloadzig-58f928814d026fbf8fe7fef778a9fc890f9283bb.tar.gz
zig-58f928814d026fbf8fe7fef778a9fc890f9283bb.zip
Merge pull request #22862 from ziglang/fuzz
fuzzer: write inputs to shared memory before running
Diffstat (limited to 'src')
-rw-r--r--src/zig_llvm.cpp38
1 files changed, 27 insertions, 11 deletions
diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp
index 53a0faba8a..51fd4aa0a5 100644
--- a/src/zig_llvm.cpp
+++ b/src/zig_llvm.cpp
@@ -311,19 +311,35 @@ ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machi
}
});
- //pass_builder.registerOptimizerEarlyEPCallback([&](ModulePassManager &module_pm, OptimizationLevel OL) {
- //});
-
- pass_builder.registerOptimizerLastEPCallback([&](ModulePassManager &module_pm, OptimizationLevel level) {
- // Code coverage instrumentation.
- if (options->sancov) {
- module_pm.addPass(SanitizerCoveragePass(getSanCovOptions(options->coverage)));
+ const bool early_san = options->is_debug;
+
+ pass_builder.registerOptimizerEarlyEPCallback([&](ModulePassManager &module_pm, OptimizationLevel OL) {
+ if (early_san) {
+ // Code coverage instrumentation.
+ if (options->sancov) {
+ module_pm.addPass(SanitizerCoveragePass(getSanCovOptions(options->coverage)));
+ }
+
+ // Thread sanitizer
+ if (options->tsan) {
+ module_pm.addPass(ModuleThreadSanitizerPass());
+ module_pm.addPass(createModuleToFunctionPassAdaptor(ThreadSanitizerPass()));
+ }
}
+ });
- // Thread sanitizer
- if (options->tsan) {
- module_pm.addPass(ModuleThreadSanitizerPass());
- module_pm.addPass(createModuleToFunctionPassAdaptor(ThreadSanitizerPass()));
+ pass_builder.registerOptimizerLastEPCallback([&](ModulePassManager &module_pm, OptimizationLevel level) {
+ if (!early_san) {
+ // Code coverage instrumentation.
+ if (options->sancov) {
+ module_pm.addPass(SanitizerCoveragePass(getSanCovOptions(options->coverage)));
+ }
+
+ // Thread sanitizer
+ if (options->tsan) {
+ module_pm.addPass(ModuleThreadSanitizerPass());
+ module_pm.addPass(createModuleToFunctionPassAdaptor(ThreadSanitizerPass()));
+ }
}
// Verify the output