NoQ added a comment.

Hmm, curious, having a look. A couple of blind guesses before i actually 
understand what's going on:

(1) The `simplifySVal()` code has its own complexity threshold:

  1060     SVal VisitNonLocSymbolVal(nonloc::SymbolVal V) {
  1061       // Simplification is much more costly than computing complexity.
  1062       // For high complexity, it may be not worth it.
  1063       if (V.getSymbol()->computeComplexity() > 100)
  1064         return V;
  1065       return Visit(V.getSymbol());
  1066     }

Would it help to decrease `100` to `10` here?

(2) With RangeConstraintManager, simplification is not entirely idempotent: we 
may simplify a symbol further when one of its sub-symbols gets constrained to a 
constant in a new state. However, apart from that, we might be able to avoid 
re-simplifying the same symbol by caching results based on the (symbol, state's 
constraint data) pair. Probably it may work with Z3 as well.


https://reviews.llvm.org/D28953



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to