diff options
author | Ted Kremenek <kremenek@apple.com> | 2012-11-12 21:20:48 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2012-11-12 21:20:48 +0000 |
commit | da5919ffa10c251091482f5aea0c30eca123aa54 (patch) | |
tree | 006743df515ddb1c089073fe4da5ac2a56c72331 /clang/lib/Sema/AnalysisBasedWarnings.cpp | |
parent | 039136664db74a346f94ce4caa3e378d2d315ee8 (diff) | |
download | bcm5719-llvm-da5919ffa10c251091482f5aea0c30eca123aa54.tar.gz bcm5719-llvm-da5919ffa10c251091482f5aea0c30eca123aa54.zip |
Per discussion on cfe-dev, re-enable suppression of -Wimplicit-fallthrough on C, but also include dialects of C++ earlier than C++11.
There was enough consensus that we *can* get a good language solution
to have an annotation outside of C++11, and without this annotation
this warning doesn't quite mean's completeness criteria for this
kind of warning. For now, restrict this warning to C++11 (where an
annotation exists), and make this the behavior for the LLVM 3.2 release.
Afterwards, we will hammer out a language solution that we are all
happy with.
llvm-svn: 167749
Diffstat (limited to 'clang/lib/Sema/AnalysisBasedWarnings.cpp')
-rw-r--r-- | clang/lib/Sema/AnalysisBasedWarnings.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/Sema/AnalysisBasedWarnings.cpp b/clang/lib/Sema/AnalysisBasedWarnings.cpp index a20817f9650..801a1b1e026 100644 --- a/clang/lib/Sema/AnalysisBasedWarnings.cpp +++ b/clang/lib/Sema/AnalysisBasedWarnings.cpp @@ -818,6 +818,18 @@ namespace { static void DiagnoseSwitchLabelsFallthrough(Sema &S, AnalysisDeclContext &AC, bool PerFunction) { + // Only perform this analysis when using C++11. There is no good workflow + // for this warning when not using C++11. There is no good way to silence + // the warning (no attribute is available) unless we are using C++11's support + // for generalized attributes. Once could use pragmas to silence the warning, + // but as a general solution that is gross and not in the spirit of this + // warning. + // + // NOTE: This an intermediate solution. There are on-going discussions on + // how to properly support this warning outside of C++11 with an annotation. + if (!AC.getASTContext().getLangOpts().CPlusPlus0x) + return; + FallthroughMapper FM(S); FM.TraverseStmt(AC.getBody()); |