diff options
author | Ted Kremenek <kremenek@apple.com> | 2011-01-25 22:50:47 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2011-01-25 22:50:47 +0000 |
commit | ebe6260137cff8f43e642d6b67a45960ca573bcb (patch) | |
tree | ccded6e6291109990b75fa5348df8dea94d14199 /clang/lib/Sema/AnalysisBasedWarnings.cpp | |
parent | ccc9963e34b9d8edaa533fb06723fb12aa1a6bd7 (diff) | |
download | bcm5719-llvm-ebe6260137cff8f43e642d6b67a45960ca573bcb.tar.gz bcm5719-llvm-ebe6260137cff8f43e642d6b67a45960ca573bcb.zip |
Fix regression in -Wreturn-type caused by not
handling all CFGElement kinds. While writing
the test case, it turned out that return-noreturn.cpp
wasn't actually testing anything since it has the wrong -W
flag. That uncovered another regression with
the handling of destructors marked noreturn. WIP.
llvm-svn: 124238
Diffstat (limited to 'clang/lib/Sema/AnalysisBasedWarnings.cpp')
-rw-r--r-- | clang/lib/Sema/AnalysisBasedWarnings.cpp | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/clang/lib/Sema/AnalysisBasedWarnings.cpp b/clang/lib/Sema/AnalysisBasedWarnings.cpp index 4866c8fb3d0..2f02e158cbd 100644 --- a/clang/lib/Sema/AnalysisBasedWarnings.cpp +++ b/clang/lib/Sema/AnalysisBasedWarnings.cpp @@ -132,21 +132,12 @@ static ControlFlowKind CheckFallThrough(AnalysisContext &AC) { continue; } CFGElement CE = B[B.size()-1]; - if (CFGInitializer CI = CE.getAs<CFGInitializer>()) { - // A base or member initializer. - HasPlainEdge = true; - continue; - } - if (CFGMemberDtor MD = CE.getAs<CFGMemberDtor>()) { - // A member destructor. - HasPlainEdge = true; - continue; - } - if (CFGBaseDtor BD = CE.getAs<CFGBaseDtor>()) { - // A base destructor. + + if (!isa<CFGStmt>(CE)) { HasPlainEdge = true; continue; } + CFGStmt CS = CE.getAs<CFGStmt>(); if (!CS.isValid()) continue; |