Don't offer '[[clang::fallthrough]];' fix-it when a fall-through occurs to a
switch label immediately followed by a 'break;'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157508 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/AnalysisBasedWarnings.cpp b/lib/Sema/AnalysisBasedWarnings.cpp
index bbcd6a8..562fe68 100644
--- a/lib/Sema/AnalysisBasedWarnings.cpp
+++ b/lib/Sema/AnalysisBasedWarnings.cpp
@@ -777,8 +777,11 @@
       if (L.isMacroID())
         continue;
       if (S.getLangOpts().CPlusPlus0x) {
-        S.Diag(L, diag::note_insert_fallthrough_fixit) <<
-          FixItHint::CreateInsertion(L, "[[clang::fallthrough]]; ");
+        const Stmt *Term = B.getTerminator();
+        if (!(B.empty() && Term && isa<BreakStmt>(Term))) {
+          S.Diag(L, diag::note_insert_fallthrough_fixit) <<
+            FixItHint::CreateInsertion(L, "[[clang::fallthrough]]; ");
+        }
       }
       S.Diag(L, diag::note_insert_break_fixit) <<
         FixItHint::CreateInsertion(L, "break; ");