summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/AnalysisBasedWarnings.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2011-01-25 22:50:47 +0000
committerTed Kremenek <kremenek@apple.com>2011-01-25 22:50:47 +0000
commitebe6260137cff8f43e642d6b67a45960ca573bcb (patch)
treeccded6e6291109990b75fa5348df8dea94d14199 /clang/lib/Sema/AnalysisBasedWarnings.cpp
parentccc9963e34b9d8edaa533fb06723fb12aa1a6bd7 (diff)
downloadbcm5719-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.cpp15
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;
OpenPOWER on IntegriCloud