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

Balázs Benics via cfe-commits cfe-commits at lists.llvm.org
Tue Jun 24 08:09:29 PDT 2025


balazs-benics-sonarsource wrote:

> > Should I measure the perf of this change?
> 
> I think so, because the patch is substantially different. For example, the overly complex symbol tree is now preserved, even if it is apparently not traversed in its entirety any longer. That makes it not obvious if the initial performance gains are still there.

Agreed.



> Thanks for your patience in this review! I'm happy to see the additional simplifications coming from just wrapping the over-complicated symbol instead of storing its parts separately. (I see that it's a bit inelegant to construct the very thing that we're trying to avoid, but this is the pragmatic choice...)
> I don't expect any performance issues (the "frozen" complex symbols shouldn't be problematic if they aren't traversed), but performance testing is never completely useless.

I'll do a usual regression test, but not anything as detailed as the evaluation in the PR summary presents.
The test case sufficiently demonstrates that this enforcement works as intended. I also had a look at the time trace jsons of the test with the new way of this enforcement and the originally proposed variant. They look identical to the naked eye.
I also ran the test with the two versions and they run the same way according to `hyperfine`.

Nevertheless, I'll do a usual regression test.

https://github.com/llvm/llvm-project/pull/144327


More information about the cfe-commits mailing list