Author: Andrew Sukach Date: 2024-05-14T11:57:10+02:00 New Revision: 8fe21fda7469f2fdf83980a2720a15baad74ae4f
URL: https://github.com/llvm/llvm-project/commit/8fe21fda7469f2fdf83980a2720a15baad74ae4f DIFF: https://github.com/llvm/llvm-project/commit/8fe21fda7469f2fdf83980a2720a15baad74ae4f.diff LOG: [clang][analyzer] Ignore try-statements in UnreachableCode checker (#91675) Fixes #90162 Added: clang/test/Analysis/unreachable-code-exceptions.cpp Modified: clang/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp Removed: ################################################################################ diff --git a/clang/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp index d24a124f5ffee..7ce9a5b5bb6dc 100644 --- a/clang/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp @@ -159,6 +159,8 @@ void UnreachableCodeChecker::checkEndAnalysis(ExplodedGraph &G, SL = DL.asLocation(); if (SR.isInvalid() || !SL.isValid()) continue; + if (isa<CXXTryStmt>(S)) + continue; } else continue; @@ -254,4 +256,4 @@ void ento::registerUnreachableCodeChecker(CheckerManager &mgr) { bool ento::shouldRegisterUnreachableCodeChecker(const CheckerManager &mgr) { return true; -} +} \ No newline at end of file diff --git a/clang/test/Analysis/unreachable-code-exceptions.cpp b/clang/test/Analysis/unreachable-code-exceptions.cpp new file mode 100644 index 0000000000000..f47674ea8097d --- /dev/null +++ b/clang/test/Analysis/unreachable-code-exceptions.cpp @@ -0,0 +1,13 @@ +// RUN: %clang_analyze_cc1 -verify %s -fcxx-exceptions -fexceptions -analyzer-checker=core,alpha.deadcode.UnreachableCode + +// expected-no-diagnostics + +void foo(); + +void fp_90162() { + try { // no-warning: The TryStmt shouldn't be unreachable. + foo(); + } catch (int) { + foo(); // We assume that catch handlers are reachable. + } +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits