From: Mike Stump Date: Thu, 14 Jan 2010 02:26:52 +0000 (+0000) Subject: Avoid snowballing errors into additional warnings. To do better, we'd X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cb4a4fb7810b46fd7d62f1f1e54299d2229cd8dc;p=clang Avoid snowballing errors into additional warnings. To do better, we'd need an error term for the CFG. I suspect we'll always have to cope with getCFG returning 0, though, I'd love to see even that possibility removed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93411 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index 948418b42a..40c3e754ad 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -1329,11 +1329,14 @@ static void MarkLive(CFGBlock *e, llvm::BitVector &live) { /// CheckUnreachable - Check for unreachable code. void Sema::CheckUnreachable(AnalysisContext &AC) { + // We avoid checking when there are errors, as the CFG won't faithfully match + // the users code. + if (getDiagnostics().hasErrorOccurred()) + return; if (Diags.getDiagnosticLevel(diag::warn_unreachable) == Diagnostic::Ignored) return; CFG *cfg = AC.getCFG(); - // FIXME: They should never return 0, fix that, delete this code. if (cfg == 0) return; @@ -1363,7 +1366,6 @@ void Sema::CheckUnreachable(AnalysisContext &AC) { /// will return. Sema::ControlFlowKind Sema::CheckFallThrough(AnalysisContext &AC) { CFG *cfg = AC.getCFG(); - // FIXME: They should never return 0, fix that, delete this code. if (cfg == 0) // FIXME: This should be NeverFallThrough return NeverFallThroughOrReturn;