Commit 5be7a777 authored by Ted Kremenek's avatar Ted Kremenek
Browse files

Merge in r167749, per discussion on cfe-dev that we want...

Merge in r167749, per discussion on cfe-dev that we want -Wimplicit-fallthrough to only be active for C++11
until we come up with a language annotation for this warning that works outside of C++11.

llvm-svn: 167775
parent 6ca80bec
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -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());

+3 −0
Original line number Diff line number Diff line
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 -Wimplicit-fallthrough %s
// XFAIL: *

// NOTE: This test is marked XFAIL until we come up with a good language design
// for a worfklow to use this warning outside of C++11.

int fallthrough(int n) {
  switch (n / 10) {