llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-static-analyzer-1 Author: Iris Shi (el-ev) <details> <summary>Changes</summary> - Closes #<!-- -->151529 `ParenExpr` should be ignored before reaching `ExprEngine::Visit`. Failing to do so triggers the assertion. --- Full diff: https://github.com/llvm/llvm-project/pull/151682.diff 3 Files Affected: - (modified) clang/docs/ReleaseNotes.rst (+2) - (modified) clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp (+1-1) - (added) clang/test/Analysis/issue-151529.cpp (+7) ``````````diff diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 4a2edae7509de..2dfbea312b894 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -148,6 +148,8 @@ Bug Fixes to Attribute Support - ``[[nodiscard]]`` is now respected on Objective-C and Objective-C++ methods. (#GH141504) +- Fixed a crash in the static analyzer that when the expression in an + ``[[assume(expr)]]`` attribute was enclosed in parentheses. (#GH151529) Bug Fixes to C++ Support ^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp b/clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp index 85353848aa124..fe70558dfc45c 100644 --- a/clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp +++ b/clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp @@ -1227,7 +1227,7 @@ void ExprEngine::VisitAttributedStmt(const AttributedStmt *A, for (const auto *Attr : getSpecificAttrs<CXXAssumeAttr>(A->getAttrs())) { for (ExplodedNode *N : CheckerPreStmt) { - Visit(Attr->getAssumption(), N, EvalSet); + Visit(Attr->getAssumption()->IgnoreParens(), N, EvalSet); } } diff --git a/clang/test/Analysis/issue-151529.cpp b/clang/test/Analysis/issue-151529.cpp new file mode 100644 index 0000000000000..0774587055e0c --- /dev/null +++ b/clang/test/Analysis/issue-151529.cpp @@ -0,0 +1,7 @@ +// RUN: %clang_analyze_cc1 -std=c++23 -analyzer-checker=cplusplus -verify %s +// expected-no-diagnostics + +int main() { + [[assume((true))]]; // crash + return 0; +} `````````` </details> https://github.com/llvm/llvm-project/pull/151682 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
