summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Stump <mrs@apple.com>2010-01-21 19:51:34 +0000
committerMike Stump <mrs@apple.com>2010-01-21 19:51:34 +0000
commitd12e495f174d506145b6f04f9b530feb78bf5745 (patch)
tree727fdb249eeefa2f9040d124e2a98d5a3ed3e1fa
parentc18c403670bb384d365610b2df7dfa58e5e3ce38 (diff)
downloadbcm5719-llvm-d12e495f174d506145b6f04f9b530feb78bf5745.tar.gz
bcm5719-llvm-d12e495f174d506145b6f04f9b530feb78bf5745.zip
Improve unreachable code warnings for with respect to c-style casts.
llvm-svn: 94094
-rw-r--r--clang/lib/Sema/SemaChecking.cpp5
-rw-r--r--clang/test/Sema/warn-unreachable.c3
2 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp
index 9fadd45fbbb..018132c3681 100644
--- a/clang/lib/Sema/SemaChecking.cpp
+++ b/clang/lib/Sema/SemaChecking.cpp
@@ -2116,6 +2116,11 @@ static SourceLocation GetUnreachableLoc(CFGBlock &b, SourceRange &R1,
const ConditionalOperator *CO = cast<ConditionalOperator>(S);
return CO->getQuestionLoc();
}
+ case Expr::CStyleCastExprClass: {
+ const CStyleCastExpr *CSC = cast<CStyleCastExpr>(S);
+ R1 = CSC->getSubExpr()->getSourceRange();
+ return CSC->getLParenLoc();
+ }
case Expr::ImplicitCastExprClass:
++sn;
goto top;
diff --git a/clang/test/Sema/warn-unreachable.c b/clang/test/Sema/warn-unreachable.c
index 7c913cafb24..b569b181595 100644
--- a/clang/test/Sema/warn-unreachable.c
+++ b/clang/test/Sema/warn-unreachable.c
@@ -87,5 +87,8 @@ void test2() {
halt()
? // expected-warning {{will never be executed}}
dead() : dead();
+ case 10:
+ ( // expected-warning {{will never be executed}}
+ float)halt();
}
}
OpenPOWER on IntegriCloud