diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-14 22:12:13 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-14 22:12:13 +0000 | 
| commit | f1a29dd3442304e183b0491fbe2d33f6c963069e (patch) | |
| tree | 64b5defb92948be8b09a6f1b5c48ec60abad1325 /contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp | |
| parent | 8a6fe8ce60ab99778558c4951d23615a0141daf0 (diff) | |
| parent | 581a6d8501ff5614297da837b81ed3b6956361ea (diff) | |
Notes
Diffstat (limited to 'contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp')
| -rw-r--r-- | contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp | 10 | 
1 files changed, 10 insertions, 0 deletions
diff --git a/contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp b/contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp index 5953d020b4fb..a987a8ce0b31 100644 --- a/contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp +++ b/contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp @@ -56,6 +56,8 @@ using namespace clang;  namespace {    class UnreachableCodeHandler : public reachable_code::Callback {      Sema &S; +    SourceRange PreviousSilenceableCondVal; +    public:      UnreachableCodeHandler(Sema &s) : S(s) {} @@ -64,6 +66,14 @@ namespace {                             SourceRange SilenceableCondVal,                             SourceRange R1,                             SourceRange R2) override { +      // Avoid reporting multiple unreachable code diagnostics that are +      // triggered by the same conditional value. +      if (PreviousSilenceableCondVal.isValid() && +          SilenceableCondVal.isValid() && +          PreviousSilenceableCondVal == SilenceableCondVal) +        return; +      PreviousSilenceableCondVal = SilenceableCondVal; +        unsigned diag = diag::warn_unreachable;        switch (UK) {          case reachable_code::UK_Break:  | 
