[clang] [analyzer] Enforce not making overly complicated symbols (PR #144327)

2025-06-24 Thread Balázs Benics via cfe-commits
@@ -317,21 +317,21 @@ class SValBuilder { return nonloc::LocAsInteger(BasicVals.getPersistentSValWithData(loc, bits)); } - nonloc::SymbolVal makeNonLoc(const SymExpr *lhs, BinaryOperator::Opcode op, - APSIntPtr rhs, QualType type); + Defi

[clang] [analyzer] Enforce not making overly complicated symbols (PR #144327)

2025-06-27 Thread Balázs Benics via cfe-commits
balazs-benics-sonarsource wrote: Backporting this updated version to clang-19 was not easy but it allowed to verify this PR. Unfortunately, there is a bug in this updated version, that I'll explain. Even after I fixed this bug, however, on a sample it ran about 19.36% slower under analyzing has

[clang] [analyzer] Enforce not making overly complicated symbols (PR #144327)

2025-06-25 Thread Balázs Benics via cfe-commits
balazs-benics-sonarsource wrote: Once we are settled on the implementation here, I'll split the `classof` refactors from this PR and merge it before merging this one. Should I measure the perf of this change? https://github.com/llvm/llvm-project/pull/144327

[clang] [analyzer] Enforce not making overly complicated symbols (PR #144327)

2025-06-25 Thread Balázs Benics via cfe-commits
https://github.com/balazs-benics-sonarsource updated https://github.com/llvm/llvm-project/pull/144327 From a5ae39c1b8a5abc39f8948a724b354839e708e4b Mon Sep 17 00:00:00 2001 From: Balazs Benics Date: Mon, 16 Jun 2025 12:14:06 +0200 Subject: [PATCH 1/5] [analyzer] Enforce not making overly compli

[clang] [analyzer] Enforce not making overly complicated symbols (PR #144327)

2025-06-25 Thread Balázs Benics via cfe-commits
@@ -134,6 +137,101 @@ class SymbolConjured : public SymbolData { static constexpr bool classof(Kind K) { return K == ClassKind; } }; +/// A symbol representing the result of an expression that became too +/// complicated. In other words, its complexity would have surpassed t

[clang] [analyzer] Enforce not making overly complicated symbols (PR #144327)

2025-06-30 Thread Balázs Benics via cfe-commits
balazs-benics-sonarsource wrote: > [...] This different sort of limitation still guarantees that we cannot build > overly complex symbols, but its implementation is significantly shorter (just > three early return statements for unary operator, binary operator and cast > evaluation). > > 💡 In

[clang] [analyzer] Enforce not making overly complicated symbols (PR #144327)

2025-06-30 Thread Balázs Benics via cfe-commits
balazs-benics-sonarsource wrote: > > So, I think if we go with the evalbinop approach, then it should work as > > efficiently as my original proposal, while sacreficing the special cases > > that fold away the binop. I'm fine with either of the approaches. > > I scheduled a measurement for the

[clang] [analyzer] Enforce not making overly complicated symbols (PR #144327)

2025-06-27 Thread Balázs Benics via cfe-commits
balazs-benics-sonarsource wrote: > However, I think I see another, less complex approach for "fixing" the method > `acquire`: instead of creating the `Dummy` symbol and calculating its > complexity early, just modify the original state of the method (i.e. the > parent revision of > [8c29bbc](

[clang] [analyzer] Enforce not making overly complicated symbols (PR #144327)

2025-06-27 Thread Balázs Benics via cfe-commits
https://github.com/balazs-benics-sonarsource updated https://github.com/llvm/llvm-project/pull/144327 From bc7dfc2b4f143c2caa1189db096bf9e4ea76f053 Mon Sep 17 00:00:00 2001 From: Balazs Benics Date: Mon, 16 Jun 2025 12:14:06 +0200 Subject: [PATCH 1/2] [analyzer] Enforce not making overly compli

[clang] [analyzer] Enforce not making overly complicated symbols (PR #144327)

2025-06-27 Thread Balázs Benics via cfe-commits
balazs-benics-sonarsource wrote: > The parts of the flamegraph that you highlight are presumably coming from the > _other_ operand whose simplification is skipped due to the presence of the > `UnknownVal`. Yes, this is my theory, but this still wouldn't explain why I didn't see these simplify

[clang] [analyzer] Enforce not making overly complicated symbols (PR #144327)

2025-07-08 Thread Balázs Benics via cfe-commits
https://github.com/balazs-benics-sonarsource updated https://github.com/llvm/llvm-project/pull/144327 From bc7dfc2b4f143c2caa1189db096bf9e4ea76f053 Mon Sep 17 00:00:00 2001 From: Balazs Benics Date: Mon, 16 Jun 2025 12:14:06 +0200 Subject: [PATCH 1/5] [analyzer] Enforce not making overly compli

[clang] [analyzer] Enforce not making overly complicated symbols (PR #144327)

2025-07-08 Thread Balázs Benics via cfe-commits
balazs-benics-sonarsource wrote: > > > So, I think if we go with the evalbinop approach, then it should work as > > > efficiently as my original proposal, while sacreficing the special cases > > > that fold away the binop. I'm fine with either of the approaches. > > > I scheduled a measurement

[clang] [analyzer] Enforce not making overly complicated symbols (PR #144327)

2025-07-08 Thread Balázs Benics via cfe-commits
https://github.com/balazs-benics-sonarsource closed https://github.com/llvm/llvm-project/pull/144327 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

<    1   2