From 23b092cf8a7be438fb675580e61129131ce2817c Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Fri, 10 Jul 2026 11:23:42 +0200 Subject: [PATCH 1/7] Update astutils.cpp --- lib/astutils.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lib/astutils.cpp b/lib/astutils.cpp index c433036cfcc..20baacbe6e0 100644 --- a/lib/astutils.cpp +++ b/lib/astutils.cpp @@ -2230,8 +2230,6 @@ bool isEscapeFunction(const Token* ftok, const Library& library) { if (!Token::Match(ftok, "%name% (")) return false; - if (Token::Match(ftok, "exit|abort")) - return true; const Function* function = ftok->function(); if (function) { if (function->isEscapeFunction()) @@ -2261,9 +2259,6 @@ static bool hasNoreturnFunction(const Token* tok, const Library& library, const return true; } else if (library.isnoreturn(ftok)) { return true; - } else if (Token::Match(ftok, "exit|abort")) { - return true; - } if (unknownFunc && !function && library.functions().count(library.getFunctionName(ftok)) == 0) *unknownFunc = ftok; return false; From b9e555b5dee7a58fd37ae9027b609712d15fed16 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Fri, 10 Jul 2026 11:25:29 +0200 Subject: [PATCH 2/7] Update checkother.cpp --- lib/checkother.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/checkother.cpp b/lib/checkother.cpp index 51124c45d1c..cc6d0a282a2 100644 --- a/lib/checkother.cpp +++ b/lib/checkother.cpp @@ -791,7 +791,7 @@ void CheckOtherImpl::redundantAssignmentSameValueError(const Token *tok, const V //--------------------------------------------------------------------------- static inline bool isFunctionOrBreakPattern(const Token *tok) { - return Token::Match(tok, "%name% (") || Token::Match(tok, "break|continue|return|exit|goto|throw"); + return Token::Match(tok, "%name% (") || (tok->isKeyword() && Token::Match(tok, "break|continue|return|goto|throw")); } void CheckOtherImpl::redundantBitwiseOperationInSwitchError() From 8537acb02a281e917737a1f87c9db2c128b8c767 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Fri, 10 Jul 2026 11:30:37 +0200 Subject: [PATCH 3/7] Update astutils.cpp --- lib/astutils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/astutils.cpp b/lib/astutils.cpp index 20baacbe6e0..37d5b75d1c0 100644 --- a/lib/astutils.cpp +++ b/lib/astutils.cpp @@ -2257,7 +2257,7 @@ static bool hasNoreturnFunction(const Token* tok, const Library& library, const return true; if (function->isAttributeNoreturn()) return true; - } else if (library.isnoreturn(ftok)) { + } else if (library.isnoreturn(ftok)) return true; if (unknownFunc && !function && library.functions().count(library.getFunctionName(ftok)) == 0) *unknownFunc = ftok; From 1766444de403d8ca9e683ce60fe18f69837de1c9 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Fri, 10 Jul 2026 12:56:09 +0200 Subject: [PATCH 4/7] Update astutils.cpp --- lib/astutils.cpp | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/lib/astutils.cpp b/lib/astutils.cpp index 37d5b75d1c0..62b30d6145c 100644 --- a/lib/astutils.cpp +++ b/lib/astutils.cpp @@ -2226,21 +2226,19 @@ static bool isEscapedOrJump(const Token* tok, bool functionsScope, const Library return Token::Match(tok, "return|goto|throw|continue|break"); } +static bool isNoreturnFunction(const Token* ftok, const Library& library) +{ + if (const Function* function = ftok->function()) + return function->isEscapeFunction() || function->isAttributeNoreturn(); + } + return library.isnoreturn(ftok)); +} + bool isEscapeFunction(const Token* ftok, const Library& library) { if (!Token::Match(ftok, "%name% (")) return false; - const Function* function = ftok->function(); - if (function) { - if (function->isEscapeFunction()) - return true; - if (function->isAttributeNoreturn()) - return true; - } else { - if (library.isnoreturn(ftok)) - return true; - } - return false; + return isNoreturnFunction(ftok, library); } static bool hasNoreturnFunction(const Token* tok, const Library& library, const Token** unknownFunc) @@ -2251,13 +2249,7 @@ static bool hasNoreturnFunction(const Token* tok, const Library& library, const while (Token::simpleMatch(ftok, "(")) ftok = ftok->astOperand1(); if (ftok) { - const Function * function = ftok->function(); - if (function) { - if (function->isEscapeFunction()) - return true; - if (function->isAttributeNoreturn()) - return true; - } else if (library.isnoreturn(ftok)) + if (isNoreturnFunction(ftok, library)) return true; if (unknownFunc && !function && library.functions().count(library.getFunctionName(ftok)) == 0) *unknownFunc = ftok; From 84b6d876094f7b7957bf1abf1296341dd279c220 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Fri, 10 Jul 2026 12:57:51 +0200 Subject: [PATCH 5/7] Update astutils.cpp --- lib/astutils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/astutils.cpp b/lib/astutils.cpp index 62b30d6145c..3cdd7221976 100644 --- a/lib/astutils.cpp +++ b/lib/astutils.cpp @@ -2251,7 +2251,7 @@ static bool hasNoreturnFunction(const Token* tok, const Library& library, const if (ftok) { if (isNoreturnFunction(ftok, library)) return true; - if (unknownFunc && !function && library.functions().count(library.getFunctionName(ftok)) == 0) + if (unknownFunc && !ftok->function() && library.functions().count(library.getFunctionName(ftok)) == 0) *unknownFunc = ftok; return false; } From 73e3eb3b1d35423ad01394f76872a89318cdb6fb Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:59:13 +0200 Subject: [PATCH 6/7] Update astutils.cpp --- lib/astutils.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/astutils.cpp b/lib/astutils.cpp index 3cdd7221976..60fdd8c3caf 100644 --- a/lib/astutils.cpp +++ b/lib/astutils.cpp @@ -2230,7 +2230,6 @@ static bool isNoreturnFunction(const Token* ftok, const Library& library) { if (const Function* function = ftok->function()) return function->isEscapeFunction() || function->isAttributeNoreturn(); - } return library.isnoreturn(ftok)); } From 86b2e641f0f2cc417a204222f70ffc461a4d6f71 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Fri, 10 Jul 2026 16:01:02 +0200 Subject: [PATCH 7/7] Update astutils.cpp --- lib/astutils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/astutils.cpp b/lib/astutils.cpp index 60fdd8c3caf..27a01ab0382 100644 --- a/lib/astutils.cpp +++ b/lib/astutils.cpp @@ -2230,7 +2230,7 @@ static bool isNoreturnFunction(const Token* ftok, const Library& library) { if (const Function* function = ftok->function()) return function->isEscapeFunction() || function->isAttributeNoreturn(); - return library.isnoreturn(ftok)); + return library.isnoreturn(ftok); } bool isEscapeFunction(const Token* ftok, const Library& library)