[PATCH] D99797: [analyzer] Handle intersections and adjacency in RangeSet::Factory::add function

Valeriy Savchenko via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Apr 2 09:15:04 PDT 2021


vsavchenko added a comment.

Thanks for working on improvements of the solver and constraints!  However, I have some tough questions about this patch.

What I really want to understand here is motivation.  Why do we need to have `add` operation semantics like this in the first place?  My guess is that "the user" will be in the following patch.
Additionally, I don't really like the idea of replacing something simple and fast (old `add` methods`) with something more complex unconditionally.  Old users still don't need this additional logic.  C++ has always been the language where we "pay for what we use".
So, with good motivation, I'd still prefer methods like `add` and `addUnchecked` or smith similar.



================
Comment at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h:128
     ///
-    /// Complexity: O(N + M)
+    /// Complexity: O(N + Mlog(N))
     ///             where N = size(LHS), M = size(RHS)
----------------
This most certainly can be done in `O(N + M)` the same way the intersection is done.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D99797/new/

https://reviews.llvm.org/D99797



More information about the cfe-commits mailing list