diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2025-02-11 23:36:53 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-11 23:36:53 -0800 |
| commit | 58f928814d026fbf8fe7fef778a9fc890f9283bb (patch) | |
| tree | c871c0cfd3ad18f748f51c0181b99bf058db991d /src | |
| parent | db0d9c21267dd6e482c96be1fc532a5f4eef9219 (diff) | |
| parent | d789f1e5cf60b063d5140c27926fd1a6b1654356 (diff) | |
| download | zig-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.cpp | 38 |
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 |
