================ @@ -2504,23 +2505,37 @@ sema::AnalysisBasedWarnings::AnalysisBasedWarnings(Sema &s) NumUninitAnalysisVariables(0), MaxUninitAnalysisVariablesPerFunction(0), NumUninitAnalysisBlockVisits(0), MaxUninitAnalysisBlockVisitsPerFunction(0) { +} + +// We need this here for unique_ptr with forward declared class. +sema::AnalysisBasedWarnings::~AnalysisBasedWarnings() = default; +sema::AnalysisBasedWarnings::Policy +sema::AnalysisBasedWarnings::getPolicyInEffectAt(SourceLocation Loc) { using namespace diag; DiagnosticsEngine &D = S.getDiagnostics(); + Policy P; - DefaultPolicy.enableCheckUnreachable = - isEnabled(D, warn_unreachable) || isEnabled(D, warn_unreachable_break) || - isEnabled(D, warn_unreachable_return) || - isEnabled(D, warn_unreachable_loop_increment); + // Note: The enabled checks should be kept in sync with the switch in + // SemaPPCallbacks::PragmaDiagnostic(). + P.enableCheckUnreachable = + PolicyOverrides.enableCheckUnreachable || + isEnabled(D, Loc, warn_unreachable, warn_unreachable_break, + warn_unreachable_return, warn_unreachable_loop_increment); - DefaultPolicy.enableThreadSafetyAnalysis = isEnabled(D, warn_double_lock); + P.enableThreadSafetyAnalysis = PolicyOverrides.enableThreadSafetyAnalysis || + isEnabled(D, Loc, warn_double_lock); - DefaultPolicy.enableConsumedAnalysis = - isEnabled(D, warn_use_in_invalid_state); + P.enableConsumedAnalysis = PolicyOverrides.enableConsumedAnalysis || + isEnabled(D, Loc, warn_use_in_invalid_state); + return P; } -// We need this here for unique_ptr with forward declared class. -sema::AnalysisBasedWarnings::~AnalysisBasedWarnings() = default; +void sema::AnalysisBasedWarnings::clearOverrides() { + PolicyOverrides.enableCheckUnreachable = false; ---------------- AaronBallman wrote:
The overrides are set in `SemaPPCallback::PragmaDiagnostic()`, the others come from `AnalysisBasedWarnings::getPolicyInEffectAt()` https://github.com/llvm/llvm-project/pull/136323 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits