authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-08-10 17:29:14-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-08-13 15:02:53-07:00
loge8e49efe211f85d854388e95c6fe0344f133ea2d
tree2b0a202ce086e78cb8dedf95d25ba56e5e642452
parentb5398180d6b362346522a6067d54b90b97e23dc2

ZigLLVMTargetMachineEmitToFile: put sanitizers in registerOptimizerLastEPCallback

matching the default of clang's behavior. I originally put them in registerOptimizerEarlyEPCallback because I thought clang was doing that, but I see now it is behind the flag `--sanitizer-early-opt-ep` which is disabled by default.

1 files changed, 4 insertions(+), 3 deletions(-)

src/zig_llvm.cpp+4-3
...@@ -311,7 +311,10 @@ ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machi...@@ -311,7 +311,10 @@ ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machi
311 }311 }
312 });312 });
313313
314 pass_builder.registerOptimizerEarlyEPCallback([&](ModulePassManager &module_pm, OptimizationLevel OL) {314 //pass_builder.registerOptimizerEarlyEPCallback([&](ModulePassManager &module_pm, OptimizationLevel OL) {
315 //});
316
317 pass_builder.registerOptimizerLastEPCallback([&](ModulePassManager &module_pm, OptimizationLevel level) {
315 // Code coverage instrumentation.318 // Code coverage instrumentation.
316 if (options.sancov) {319 if (options.sancov) {
317 module_pm.addPass(SanitizerCoveragePass(getSanCovOptions(options.coverage)));320 module_pm.addPass(SanitizerCoveragePass(getSanCovOptions(options.coverage)));
...@@ -322,9 +325,7 @@ ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machi...@@ -322,9 +325,7 @@ ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machi
322 module_pm.addPass(ModuleThreadSanitizerPass());325 module_pm.addPass(ModuleThreadSanitizerPass());
323 module_pm.addPass(createModuleToFunctionPassAdaptor(ThreadSanitizerPass()));326 module_pm.addPass(createModuleToFunctionPassAdaptor(ThreadSanitizerPass()));
324 }327 }
325 });
326328
327 pass_builder.registerOptimizerLastEPCallback([&](ModulePassManager &module_pm, OptimizationLevel level) {
328 // Verify the output329 // Verify the output
329 if (assertions_on) {330 if (assertions_on) {
330 module_pm.addPass(VerifierPass());331 module_pm.addPass(VerifierPass());