[cfe-commits] r103905 - /cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp
John McCall
rjmccall at apple.com
Sun May 16 02:34:12 PDT 2010
Author: rjmccall
Date: Sun May 16 04:34:11 2010
New Revision: 103905
URL: http://llvm.org/viewvc/llvm-project?rev=103905&view=rev
Log:
Don't emit any fallthrough / missing-noreturn warnings if we can't
compute a CFG for a function.
Modified:
cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp
Modified: cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp?rev=103905&r1=103904&r2=103905&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp (original)
+++ cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp Sun May 16 04:34:11 2010
@@ -54,8 +54,13 @@
// Check for missing return value.
//===----------------------------------------------------------------------===//
-enum ControlFlowKind { NeverFallThrough = 0, MaybeFallThrough = 1,
- AlwaysFallThrough = 2, NeverFallThroughOrReturn = 3 };
+enum ControlFlowKind {
+ UnknownFallThrough,
+ NeverFallThrough,
+ MaybeFallThrough,
+ AlwaysFallThrough,
+ NeverFallThroughOrReturn
+};
/// CheckFallThrough - Check that we don't fall off the end of a
/// Statement that should return a value.
@@ -68,9 +73,7 @@
/// will return.
static ControlFlowKind CheckFallThrough(AnalysisContext &AC) {
CFG *cfg = AC.getCFG();
- if (cfg == 0)
- // FIXME: This should be NeverFallThrough
- return NeverFallThroughOrReturn;
+ if (cfg == 0) return UnknownFallThrough;
// The CFG leaves in dead things, and we don't want the dead code paths to
// confuse us, so we mark all live things first.
@@ -290,6 +293,9 @@
// FIXME: Function try block
if (const CompoundStmt *Compound = dyn_cast<CompoundStmt>(Body)) {
switch (CheckFallThrough(AC)) {
+ case UnknownFallThrough:
+ break;
+
case MaybeFallThrough:
if (HasNoReturn)
S.Diag(Compound->getRBracLoc(),
More information about the cfe-commits
mailing list