summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorAlexander Kornienko <alexfh@gmail.com>2012-05-26 00:49:15 +0000
committerAlexander Kornienko <alexfh@gmail.com>2012-05-26 00:49:15 +0000
commit246e85ddb09ca0ce80cfa3a24cfeab78e1436c0c (patch)
treef2cdf66df52d32be8d16dff45f7f98a7317f90f8 /clang/lib
parentca7835c685ca98909666ae8094737163a6f8734b (diff)
downloadbcm5719-llvm-246e85ddb09ca0ce80cfa3a24cfeab78e1436c0c.tar.gz
bcm5719-llvm-246e85ddb09ca0ce80cfa3a24cfeab78e1436c0c.zip
Don't offer '[[clang::fallthrough]];' fix-it when a fall-through occurs to a
switch label immediately followed by a 'break;'. llvm-svn: 157508
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Sema/AnalysisBasedWarnings.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/Sema/AnalysisBasedWarnings.cpp b/clang/lib/Sema/AnalysisBasedWarnings.cpp
index bbcd6a8e14c..562fe68292d 100644
--- a/clang/lib/Sema/AnalysisBasedWarnings.cpp
+++ b/clang/lib/Sema/AnalysisBasedWarnings.cpp
@@ -777,8 +777,11 @@ static void DiagnoseSwitchLabelsFallthrough(Sema &S, AnalysisDeclContext &AC) {
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; ");
OpenPOWER on IntegriCloud