diff --git a/clang/include/clang/Basic/CodeGenOptions.h b/clang/include/clang/Basic/CodeGenOptions.h --- a/clang/include/clang/Basic/CodeGenOptions.h +++ b/clang/include/clang/Basic/CodeGenOptions.h @@ -452,6 +452,12 @@ bool hasMaybeUnusedDebugInfo() const { return getDebugInfo() >= codegenoptions::UnusedTypeInfo; } + + // Check if any one of SanitizeCoverage* is enabled. + bool hasSanitizeCoverage() const { + return SanitizeCoverageType || SanitizeCoverageIndirectCalls || + SanitizeCoverageTraceCmp; + } }; } // end namespace clang diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -727,9 +727,7 @@ addBoundsCheckingPass); } - if (CodeGenOpts.SanitizeCoverageType || - CodeGenOpts.SanitizeCoverageIndirectCalls || - CodeGenOpts.SanitizeCoverageTraceCmp) { + if (CodeGenOpts.hasSanitizeCoverage()) { PMBuilder.addExtension(PassManagerBuilder::EP_OptimizerLast, addSanitizerCoveragePass); PMBuilder.addExtension(PassManagerBuilder::EP_EnabledOnOptLevel0, @@ -1099,9 +1097,7 @@ const LangOptions &LangOpts, PassBuilder &PB) { PB.registerOptimizerLastEPCallback([&](ModulePassManager &MPM, PassBuilder::OptimizationLevel Level) { - if (CodeGenOpts.SanitizeCoverageType || - CodeGenOpts.SanitizeCoverageIndirectCalls || - CodeGenOpts.SanitizeCoverageTraceCmp) { + if (CodeGenOpts.hasSanitizeCoverage()) { auto SancovOpts = getSancovOptsFromCGOpts(CodeGenOpts); MPM.addPass(ModuleSanitizerCoveragePass( SancovOpts, CodeGenOpts.SanitizeCoverageAllowlistFiles,