================ @@ -2493,35 +2493,44 @@ class sema::AnalysisBasedWarnings::InterProceduralData { CalledOnceInterProceduralData CalledOnceData; }; -static unsigned isEnabled(DiagnosticsEngine &D, unsigned diag) { - return (unsigned)!D.isIgnored(diag, SourceLocation()); +static bool isEnabledImpl(DiagnosticsEngine &D, SourceLocation Loc, + unsigned Diag) { + return !D.isIgnored(Diag, Loc); } +template <typename... Ts> +static bool isEnabled(DiagnosticsEngine &D, SourceLocation Loc, Ts... Diags) { + return (isEnabledImpl(D, Loc, Diags) || ...); +}; + sema::AnalysisBasedWarnings::AnalysisBasedWarnings(Sema &s) : S(s), IPData(std::make_unique<InterProceduralData>()), NumFunctionsAnalyzed(0), NumFunctionsWithBadCFGs(0), NumCFGBlocks(0), MaxCFGBlocksPerFunction(0), NumUninitAnalysisFunctions(0), 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); + P.enableCheckUnreachable = + isEnabled(D, Loc, warn_unreachable, warn_unreachable_break, + warn_unreachable_return, warn_unreachable_loop_increment); ---------------- AaronBallman wrote:
`using namespace diag;` is slightly above (preexisting) 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