LLVM's legacy pass manager passes for sanitizers will go away

Using LLVM's legacy PM for optimization pipeline was deprecated in 13.0.0 and the relevant functionality was scheduled to be removed after 14.0.0 (got delayed). Clang dropped legacy PM support in D123609 (milestone: 15.0.0). I plan to remove instrumentation passes like gcov, PGO, and sanitizers (milestone: 15.0.0).

LLVM's legacy PM for optimization pipeline may be completely removed in 16.0.0. You may want to migrate to the new pass manager now. llvm-project clang/lib/CodeGen/BackendUtil.cpp can serve as an example using the new pass manager.

It seems that Rust compiler/rustc_codegen_llvm/src/back/write.rs has something like passes.push(llvm::LLVMRustCreateAddressSanitizerFunctionPass(recover)); which will need adaption when LLVM removes createAddressSanitizerFunctionPass.

@nikic

1 Like

Nikita opened a tracking issue: