[clang] [analyzer] Add more C++ list initializer tests and regroup (PR #129182)

2025-03-18 Thread Michael Flanders via cfe-commits
Flandini wrote: Yes, I won't have time for it until probably this weekend or after though, so it will be a bit. https://github.com/llvm/llvm-project/pull/129182 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mai

[clang] [analyzer] Add more C++ list initializer tests and regroup (PR #129182)

2025-03-05 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/129182 >From 6db1434c459854ca6ea631fc33e0f773323e85d0 Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Sun, 23 Feb 2025 13:09:39 -0600 Subject: [PATCH 1/2] [analyzer] Add more C++ list initializer tests and regr

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-28 Thread Michael Flanders via cfe-commits
https://github.com/Flandini edited https://github.com/llvm/llvm-project/pull/127702 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-28 Thread Michael Flanders via cfe-commits
@@ -0,0 +1,30 @@ +// RUN: %clang_analyze_cc1 -verify %s\ +// RUN: -analyzer-checker=core,debug.ExprInspection + +void clang_analyzer_eval(bool); + +using size_t = decltype(sizeof(int)); + +template +void escape(FirstT first, Rest... args); + +namespace CustomClassType { +struct

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-28 Thread Michael Flanders via cfe-commits
@@ -254,6 +254,224 @@ void foo() { } } // namespace CXX17_aggregate_construction +namespace newexpr_init_list_initialization { Flandini wrote: They currently take different code paths and have different results in CSA. I think ideally they would use the same

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-28 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/127702 >From 12791f2c89f7e42bd261ac573c2497857c42b6f3 Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Tue, 18 Feb 2025 15:56:13 -0600 Subject: [PATCH 01/17] [analyzer] Do list initialization for CXXNewExpr with

[clang] [analyzer] Add more C++ list initializer tests and regroup (PR #129182)

2025-02-27 Thread Michael Flanders via cfe-commits
https://github.com/Flandini created https://github.com/llvm/llvm-project/pull/129182 Related to #127702. I figured that if I change list initialization like mentioned in #127702, then I would want these tests anyways, so I am adding them first. This adds more test coverage of C++ list initial

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-21 Thread Michael Flanders via cfe-commits
Flandini wrote: Didn't know it was UB, fixed. https://github.com/llvm/llvm-project/pull/127702 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-21 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/127702 >From 12791f2c89f7e42bd261ac573c2497857c42b6f3 Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Tue, 18 Feb 2025 15:56:13 -0600 Subject: [PATCH 01/17] [analyzer] Do list initialization for CXXNewExpr with

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-21 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/127702 >From 12791f2c89f7e42bd261ac573c2497857c42b6f3 Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Tue, 18 Feb 2025 15:56:13 -0600 Subject: [PATCH 01/13] [analyzer] Do list initialization for CXXNewExpr with

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-21 Thread Michael Flanders via cfe-commits
Flandini wrote: Yes, ready to merge, sorry for the wait. Added a few placement new list initializer tests just now. Seems to work as well for placement new. https://github.com/llvm/llvm-project/pull/127702 ___ cfe-commits mailing list cfe-commits@list

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-21 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/127702 >From 12791f2c89f7e42bd261ac573c2497857c42b6f3 Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Tue, 18 Feb 2025 15:56:13 -0600 Subject: [PATCH 01/16] [analyzer] Do list initialization for CXXNewExpr with

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-21 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/127702 >From 12791f2c89f7e42bd261ac573c2497857c42b6f3 Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Tue, 18 Feb 2025 15:56:13 -0600 Subject: [PATCH 01/15] [analyzer] Do list initialization for CXXNewExpr with

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-21 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/127702 >From 12791f2c89f7e42bd261ac573c2497857c42b6f3 Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Tue, 18 Feb 2025 15:56:13 -0600 Subject: [PATCH 01/12] [analyzer] Do list initialization for CXXNewExpr with

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-21 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/127702 >From 12791f2c89f7e42bd261ac573c2497857c42b6f3 Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Tue, 18 Feb 2025 15:56:13 -0600 Subject: [PATCH 01/14] [analyzer] Do list initialization for CXXNewExpr with

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-21 Thread Michael Flanders via cfe-commits
@@ -254,6 +254,198 @@ void foo() { } } // namespace CXX17_aggregate_construction +namespace newexpr_init_list_initialization { +template +void escape(FirstT first, Rest... args); + +struct S { + int foo; + int bar; +}; +void none_designated() { + S *s = new S{13,1}; + cla

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-21 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/127702 >From 12791f2c89f7e42bd261ac573c2497857c42b6f3 Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Tue, 18 Feb 2025 15:56:13 -0600 Subject: [PATCH 01/11] [analyzer] Do list initialization for CXXNewExpr with

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-20 Thread Michael Flanders via cfe-commits
@@ -254,6 +254,200 @@ void foo() { } } // namespace CXX17_aggregate_construction +namespace newexpr_init_list_initialization { +struct S { + int foo; + int bar; +}; +void none_designated() { + S *s = new S{13,1}; + clang_analyzer_eval(13 == s->foo); // expected-warning{{TR

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-20 Thread Michael Flanders via cfe-commits
@@ -0,0 +1,38 @@ +// RUN: %clang_analyze_cc1 -w -verify %s\ +// RUN: -analyzer-checker=core\ +// RUN: -analyzer-checker=debug.ExprInspection -std=c++17 +// RUN: %clang_analyze_cc1 -w -verify %s\ +// RUN: -analyzer-checker=core\ +// RUN: -analyzer-checker=debug.ExprInspecti

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-20 Thread Michael Flanders via cfe-commits
@@ -0,0 +1,38 @@ +// RUN: %clang_analyze_cc1 -w -verify %s\ +// RUN: -analyzer-checker=core\ +// RUN: -analyzer-checker=debug.ExprInspection -std=c++17 +// RUN: %clang_analyze_cc1 -w -verify %s\ +// RUN: -analyzer-checker=core\ +// RUN: -analyzer-checker=debug.ExprInspecti

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-20 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/127702 >From 12791f2c89f7e42bd261ac573c2497857c42b6f3 Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Tue, 18 Feb 2025 15:56:13 -0600 Subject: [PATCH 1/9] [analyzer] Do list initialization for CXXNewExpr with i

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-20 Thread Michael Flanders via cfe-commits
https://github.com/Flandini edited https://github.com/llvm/llvm-project/pull/127702 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-20 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/127702 >From 12791f2c89f7e42bd261ac573c2497857c42b6f3 Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Tue, 18 Feb 2025 15:56:13 -0600 Subject: [PATCH 1/8] [analyzer] Do list initialization for CXXNewExpr with i

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-20 Thread Michael Flanders via cfe-commits
@@ -0,0 +1,38 @@ +// RUN: %clang_analyze_cc1 -w -verify %s\ +// RUN: -analyzer-checker=core\ +// RUN: -analyzer-checker=debug.ExprInspection -std=c++17 +// RUN: %clang_analyze_cc1 -w -verify %s\ +// RUN: -analyzer-checker=core\ +// RUN: -analyzer-checker=debug.ExprInspecti

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-18 Thread Michael Flanders via cfe-commits
Flandini wrote: Going to add tests for placement new and user-defined placement new operator with list initializers also https://github.com/llvm/llvm-project/pull/127702 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cg

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-18 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/127702 >From 12791f2c89f7e42bd261ac573c2497857c42b6f3 Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Tue, 18 Feb 2025 15:56:13 -0600 Subject: [PATCH 1/5] [analyzer] Do list initialization for CXXNewExpr with i

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-18 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/127702 >From 12791f2c89f7e42bd261ac573c2497857c42b6f3 Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Tue, 18 Feb 2025 15:56:13 -0600 Subject: [PATCH 1/4] [analyzer] Do list initialization for CXXNewExpr with i

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-18 Thread Michael Flanders via cfe-commits
https://github.com/Flandini created https://github.com/llvm/llvm-project/pull/127702 Fixes #116444. Closed #127700 because I accidentally updated it in github UI. ### Current vs expected behavior Previously, the result of a `CXXNewExpr` was not always list initialized when using an initializ

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127700)

2025-02-18 Thread Michael Flanders via cfe-commits
https://github.com/Flandini closed https://github.com/llvm/llvm-project/pull/127700 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127702)

2025-02-18 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/127702 >From 12791f2c89f7e42bd261ac573c2497857c42b6f3 Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Tue, 18 Feb 2025 15:56:13 -0600 Subject: [PATCH] [analyzer] Do list initialization for CXXNewExpr with initi

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127700)

2025-02-18 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/127700 >From 2c094dc9d9eab60e94ea018a854a1eae48dd894b Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Tue, 18 Feb 2025 12:27:18 -0600 Subject: [PATCH 1/2] [analyzer] Do list init for CXX new expr with initialize

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127700)

2025-02-18 Thread Michael Flanders via cfe-commits
https://github.com/Flandini edited https://github.com/llvm/llvm-project/pull/127700 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [analyzer] Do list initialization for CXXNewExpr with initializer list arg (PR #127700)

2025-02-18 Thread Michael Flanders via cfe-commits
https://github.com/Flandini created https://github.com/llvm/llvm-project/pull/127700 Fixes #116444. ### Current vs expected behavior Previously, the result of a `CXXNewExpr` was not always list initialized when using an initializer list. In this example: ``` struct S { int x; }; void F() {

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-13 Thread Michael Flanders via cfe-commits
Flandini wrote: Worth adding a g++ pre-merge build? Can individual subprojects change their pre-merge checks? https://github.com/llvm/llvm-project/pull/125638 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mail

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-13 Thread Michael Flanders via cfe-commits
Flandini wrote: @steakhal, looks like the premerge checks built with clang 20 https://buildkite.com/llvm-project/github-pull-requests/builds/145477#0194f106-3262-4d2b-922c-b3810220acd1/6-4595. I build locally with clang 18. This type of error is caught by g++, not clang++: https://godbolt.or

[clang] [analyzer] StackAddrEscapeChecker: also check return for child stack frames (PR #126986)

2025-02-12 Thread Michael Flanders via cfe-commits
https://github.com/Flandini created https://github.com/llvm/llvm-project/pull/126986 Fixes #123459. This changes checking of the returned expr to also look for memory regions whose stack frame context was a child of the current stack frame context, e.g., for cases like this given in #123459:

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-10 Thread Michael Flanders via cfe-commits
https://github.com/Flandini edited https://github.com/llvm/llvm-project/pull/125638 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [analyzer] Reapply recent stack addr escape checker changes + buildbot fix (PR #126620)

2025-02-10 Thread Michael Flanders via cfe-commits
https://github.com/Flandini created https://github.com/llvm/llvm-project/pull/126620 Reapplying changes from https://github.com/llvm/llvm-project/pull/125638 after buildbot failures. Buildbot failures fixed in 029e7e98dc9956086adc6c1dfb0c655a273fbee6, latest commit on this PR. It was a proble

[clang] [analyzer] Reapply of recent StackAddrEscapeChecker changes after buildbot failures (PR #126618)

2025-02-10 Thread Michael Flanders via cfe-commits
https://github.com/Flandini closed https://github.com/llvm/llvm-project/pull/126618 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [analyzer] Reapply of recent StackAddrEscapeChecker changes after buildbot failures (PR #126618)

2025-02-10 Thread Michael Flanders via cfe-commits
https://github.com/Flandini edited https://github.com/llvm/llvm-project/pull/126618 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [analyze] Reapply of recent StackAddrEscapeChecker changes after buildbot failures (PR #126618)

2025-02-10 Thread Michael Flanders via cfe-commits
https://github.com/Flandini edited https://github.com/llvm/llvm-project/pull/126618 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-10 Thread Michael Flanders via cfe-commits
Flandini wrote: > I reverted the change due to the build failure. Could you open a new PR with > the error fixed? Yes, sorry. https://github.com/llvm/llvm-project/pull/125638 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-10 Thread Michael Flanders via cfe-commits
Flandini wrote: > Thanks a lot for the change and persisting. Sorry for the stupid questions :) > Looks good to me. No worries at all, I am happier with the PR state now compared to before. Thanks for the review. I've added more test coverage so I believe we have similar test coverage as Sem

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-10 Thread Michael Flanders via cfe-commits
@@ -247,45 +240,128 @@ void StackAddrEscapeChecker::checkPreCall(const CallEvent &Call, } } -void StackAddrEscapeChecker::checkPreStmt(const ReturnStmt *RS, - CheckerContext &C) const { - if (!ChecksEnabled[CK_StackAddrEscapeChecker

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-08 Thread Michael Flanders via cfe-commits
Flandini wrote: > @Xazax-hun, I pushed some more test cases. I can't think of any more tricky > test cases that weren't already covered, but lmk if you see any areas with > gaps. Actually, I will go through the `-Wreturn-stack-address` test cases in sema and see what I've missed. https://git

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-08 Thread Michael Flanders via cfe-commits
Flandini wrote: @Xazax-hun, I pushed some more test cases. I can't think of any more tricky test cases that weren't already covered, but lmk if you see any areas with gaps. https://github.com/llvm/llvm-project/pull/125638 ___ cfe-commits mailing list

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-08 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/125638 >From 0674909f03703a70c3e259acd0590f50cea4615f Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Mon, 27 Jan 2025 11:35:03 -0600 Subject: [PATCH 01/31] wip --- .../Checkers/StackAddrEscapeChecker.cpp

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-08 Thread Michael Flanders via cfe-commits
https://github.com/Flandini edited https://github.com/llvm/llvm-project/pull/125638 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-08 Thread Michael Flanders via cfe-commits
https://github.com/Flandini edited https://github.com/llvm/llvm-project/pull/125638 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-07 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/125638 >From 0674909f03703a70c3e259acd0590f50cea4615f Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Mon, 27 Jan 2025 11:35:03 -0600 Subject: [PATCH 01/30] wip --- .../Checkers/StackAddrEscapeChecker.cpp

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-07 Thread Michael Flanders via cfe-commits
https://github.com/Flandini edited https://github.com/llvm/llvm-project/pull/125638 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-07 Thread Michael Flanders via cfe-commits
https://github.com/Flandini edited https://github.com/llvm/llvm-project/pull/125638 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-07 Thread Michael Flanders via cfe-commits
https://github.com/Flandini edited https://github.com/llvm/llvm-project/pull/125638 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-07 Thread Michael Flanders via cfe-commits
@@ -247,45 +240,134 @@ void StackAddrEscapeChecker::checkPreCall(const CallEvent &Call, } } -void StackAddrEscapeChecker::checkPreStmt(const ReturnStmt *RS, - CheckerContext &C) const { - if (!ChecksEnabled[CK_StackAddrEscapeChecker

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-07 Thread Michael Flanders via cfe-commits
@@ -912,3 +924,33 @@ void top_malloc_no_crash_fn() { free(pptr); } } // namespace alloca_region_pointer + +namespace true_negatives_return_expressions { +struct Container { int *x; }; + +int test2() { + int x = 14; Flandini wrote: I also added a similar tes

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-07 Thread Michael Flanders via cfe-commits
@@ -912,3 +924,33 @@ void top_malloc_no_crash_fn() { free(pptr); } } // namespace alloca_region_pointer + +namespace true_negatives_return_expressions { +struct Container { int *x; }; + +int test2() { + int x = 14; Flandini wrote: Added in 51f8e2e589424b67b

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-07 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/125638 >From 0674909f03703a70c3e259acd0590f50cea4615f Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Mon, 27 Jan 2025 11:35:03 -0600 Subject: [PATCH 01/29] wip --- .../Checkers/StackAddrEscapeChecker.cpp

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-06 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/125638 >From 0674909f03703a70c3e259acd0590f50cea4615f Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Mon, 27 Jan 2025 11:35:03 -0600 Subject: [PATCH 01/27] wip --- .../Checkers/StackAddrEscapeChecker.cpp

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-06 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/125638 >From 0674909f03703a70c3e259acd0590f50cea4615f Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Mon, 27 Jan 2025 11:35:03 -0600 Subject: [PATCH 01/26] wip --- .../Checkers/StackAddrEscapeChecker.cpp

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-05 Thread Michael Flanders via cfe-commits
@@ -247,45 +240,134 @@ void StackAddrEscapeChecker::checkPreCall(const CallEvent &Call, } } -void StackAddrEscapeChecker::checkPreStmt(const ReturnStmt *RS, - CheckerContext &C) const { - if (!ChecksEnabled[CK_StackAddrEscapeChecker

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-05 Thread Michael Flanders via cfe-commits
@@ -247,45 +240,134 @@ void StackAddrEscapeChecker::checkPreCall(const CallEvent &Call, } } -void StackAddrEscapeChecker::checkPreStmt(const ReturnStmt *RS, - CheckerContext &C) const { - if (!ChecksEnabled[CK_StackAddrEscapeChecker

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-04 Thread Michael Flanders via cfe-commits
@@ -18,8 +18,8 @@ struct myfunction { myfunction create_func() { int n; auto c = [&n] {}; - return c; // expected-warning {{Address of stack memory associated with local variable 'n' is still referred to by a temporary object on the stack upon returning to the caller. T

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-04 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/125638 >From 0674909f03703a70c3e259acd0590f50cea4615f Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Mon, 27 Jan 2025 11:35:03 -0600 Subject: [PATCH 01/21] wip --- .../Checkers/StackAddrEscapeChecker.cpp

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-04 Thread Michael Flanders via cfe-commits
Flandini wrote: > I think this is going in the right direction but I'd love to see more tests > and some more thought about some scenarios. I'll do some structural induction approach to what could be returned and what could hold which things, and make sure these all have some test case coverag

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-04 Thread Michael Flanders via cfe-commits
@@ -247,45 +240,134 @@ void StackAddrEscapeChecker::checkPreCall(const CallEvent &Call, } } -void StackAddrEscapeChecker::checkPreStmt(const ReturnStmt *RS, - CheckerContext &C) const { - if (!ChecksEnabled[CK_StackAddrEscapeChecker

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-04 Thread Michael Flanders via cfe-commits
@@ -247,45 +240,134 @@ void StackAddrEscapeChecker::checkPreCall(const CallEvent &Call, } } -void StackAddrEscapeChecker::checkPreStmt(const ReturnStmt *RS, - CheckerContext &C) const { - if (!ChecksEnabled[CK_StackAddrEscapeChecker

[clang] [analyzer] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-03 Thread Michael Flanders via cfe-commits
https://github.com/Flandini edited https://github.com/llvm/llvm-project/pull/125638 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] Remove some false negatives in StackAddrEscapeChecker (PR #125638)

2025-02-03 Thread Michael Flanders via cfe-commits
https://github.com/Flandini created https://github.com/llvm/llvm-project/pull/125638 Fixes https://github.com/llvm/llvm-project/issues/123459. Previously, when the StackAddrEscapeChecker checked return values, it did not scan into the structure of the return SVal. Now it does, and we can catch

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-27 Thread Michael Flanders via cfe-commits
Flandini wrote: Made the above changes. I moved it all into `MemRegion` and changed the names of and added deprecation comments to the old `MemRegion` instance methods that queried mem space info. https://github.com/llvm/llvm-project/pull/123003 __

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-27 Thread Michael Flanders via cfe-commits
@@ -119,7 +120,26 @@ class MemRegion : public llvm::FoldingSetNode { virtual MemRegionManager &getMemRegionManager() const = 0; - LLVM_ATTRIBUTE_RETURNS_NONNULL const MemSpaceRegion *getMemorySpace() const; + /// Deprecated. Gets the 'raw' memory space of a memory region'

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-24 Thread Michael Flanders via cfe-commits
Flandini wrote: Benchmarking is taking a while for me, and I can only really run benchmarks with low run-time variance overnight. I will post more over time as I get more benchmark projects added. Here is the result from benchmarking one C project, libsodium, so far. These results are for 13

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-23 Thread Michael Flanders via cfe-commits
https://github.com/Flandini edited https://github.com/llvm/llvm-project/pull/123003 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-23 Thread Michael Flanders via cfe-commits
@@ -437,7 +437,7 @@ bool SymbolReaper::isLiveRegion(const MemRegion *MR) { // tell if anything still refers to this region. Unlike SymbolicRegions, // AllocaRegions don't have associated symbols, though, so we don't actually // have a way to track their liveness. - retur

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-23 Thread Michael Flanders via cfe-commits
Flandini wrote: Working on some benchmarking. Posted some problems in the discord channel, but working through it now, and benchmarking with the CodeChecker tool using only clangsa. Is there an already established set of benchmarks y'all use somewhere? IIRC, there was some github repo with som

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-23 Thread Michael Flanders via cfe-commits
Flandini wrote: > Have you considered changing `MemRegion::getMemorySpace()` into > `MemRegion::getMemorySpace(ProgramStateRef)`? I thought about this, but I decided against it since I am thinking that MemSpaces will eventually be their own separate thing, not part of the MemRegion hierarchy,

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-21 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/123003 >From 7e0758d2ead53bd4288989b8b2eda218cd6dc34a Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Mon, 13 Jan 2025 12:34:50 -0600 Subject: [PATCH 01/15] [analyzer] Add MemSpace trait to program state This t

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-16 Thread Michael Flanders via cfe-commits
@@ -0,0 +1,72 @@ +//===-- MemSpaces.cpp -*- C++ -*--// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apa

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-16 Thread Michael Flanders via cfe-commits
@@ -0,0 +1,72 @@ +//===-- MemSpaces.cpp -*- C++ -*--// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apa

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-16 Thread Michael Flanders via cfe-commits
Flandini wrote: > I like the direction of this PR but at the same time it makes memspaces a bit > more error prone to use. Do you think we could find a way to prevent using > `isa` on memspaces? Do you mean moving away from a class hierarchy definition for memspaces and towards something else

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-15 Thread Michael Flanders via cfe-commits
Flandini wrote: @NagyDonat, I made the requested changes, lmk if this looks better. https://github.com/llvm/llvm-project/pull/123003 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-15 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/123003 >From 7e0758d2ead53bd4288989b8b2eda218cd6dc34a Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Mon, 13 Jan 2025 12:34:50 -0600 Subject: [PATCH 01/14] [analyzer] Add MemSpace trait to program state This t

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-15 Thread Michael Flanders via cfe-commits
@@ -0,0 +1,62 @@ +//===-- MemSpaces.cpp -*- C++ -*--// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apa

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-15 Thread Michael Flanders via cfe-commits
@@ -2404,8 +2414,10 @@ bool MallocChecker::SummarizeRegion(raw_ostream &os, return true; default: { const MemSpaceRegion *MS = MR->getMemorySpace(); +const MemSpaceRegion *MSTrait = memspace::getMemSpaceTrait(State, MR); Flandini wrote: Changed

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-15 Thread Michael Flanders via cfe-commits
@@ -0,0 +1,62 @@ +//===-- MemSpaces.cpp -*- C++ -*--// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apa

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-15 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/123003 >From 7e0758d2ead53bd4288989b8b2eda218cd6dc34a Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Mon, 13 Jan 2025 12:34:50 -0600 Subject: [PATCH 01/13] [analyzer] Add MemSpace trait to program state This t

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-15 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/123003 >From 7e0758d2ead53bd4288989b8b2eda218cd6dc34a Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Mon, 13 Jan 2025 12:34:50 -0600 Subject: [PATCH 1/6] [analyzer] Add MemSpace trait to program state This tra

[clang] [nfc][analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-15 Thread Michael Flanders via cfe-commits
https://github.com/Flandini edited https://github.com/llvm/llvm-project/pull/123003 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-15 Thread Michael Flanders via cfe-commits
@@ -0,0 +1,47 @@ +//===-- MemSpaces.h ---*- C++ -*--// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apa

[clang] [analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-15 Thread Michael Flanders via cfe-commits
@@ -0,0 +1,62 @@ +//===-- MemSpaces.cpp -*- C++ -*--// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apa

[clang] [analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-15 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/123003 >From 7e0758d2ead53bd4288989b8b2eda218cd6dc34a Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Mon, 13 Jan 2025 12:34:50 -0600 Subject: [PATCH 1/3] [analyzer] Add MemSpace trait to program state This tra

[clang] [analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-15 Thread Michael Flanders via cfe-commits
@@ -0,0 +1,62 @@ +//===-- MemSpaces.cpp -*- C++ -*--// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apa

[clang] [analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-15 Thread Michael Flanders via cfe-commits
https://github.com/Flandini updated https://github.com/llvm/llvm-project/pull/123003 >From 7e0758d2ead53bd4288989b8b2eda218cd6dc34a Mon Sep 17 00:00:00 2001 From: Michael Flanders Date: Mon, 13 Jan 2025 12:34:50 -0600 Subject: [PATCH 1/2] [analyzer] Add MemSpace trait to program state This tra

[clang] [analyzer] Add MemSpace trait to program state (PR #123003)

2025-01-14 Thread Michael Flanders via cfe-commits
https://github.com/Flandini created https://github.com/llvm/llvm-project/pull/123003 This trait associates MemSpaceRegions with MemRegions to allow refining or changing information known about memory regions after they are created, since they are immutable. This commit is an intermediate step