[clang] [clang][fatlto] Only run sanitzer passes in prelink pipelines (PR #160213)
Nikita Popov via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 26 01:45:08 PDT 2025
================
@@ -700,7 +700,12 @@ static void addSanitizers(const Triple &TargetTriple,
const CodeGenOptions &CodeGenOpts,
const LangOptions &LangOpts, PassBuilder &PB) {
auto SanitizersCallback = [&](ModulePassManager &MPM, OptimizationLevel Level,
- ThinOrFullLTOPhase) {
+ ThinOrFullLTOPhase phase) {
+ // FatLTO pipelines already added these to the prelink pipeline.
+ if (CodeGenOpts.FatLTO &&
+ (CodeGenOpts.PrepareForThinLTO || CodeGenOpts.PrepareForLTO) &&
+ ThinOrFullLTOPhase::None != phase)
----------------
nikic wrote:
Hm... I think this condition is too specific and fragile. Have you checked that this also works for the `-flto=thin` variant? Because I believe that one is going to use `ThinOrFullLTOPhase::ThinLTOPostLink` here.
I think the correct way to fix this is to just check for a non-post-link phase here (without any checks for other options) and to adjust https://github.com/llvm/llvm-project/blob/8c122e5d3bcbdd82c34a406c6d3029060306521a/llvm/lib/Passes/PassBuilderPipelines.cpp#L1727 to pass one of the post-link phases.
https://github.com/llvm/llvm-project/pull/160213
More information about the cfe-commits
mailing list