diff options
author | Balázs Benics <108414871+balazs-benics-sonarsource@users.noreply.github.com> | 2025-03-28 11:26:28 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-28 11:26:28 +0100 |
commit | 319045d8c42dc855eacdb4bd1d71b6ac3fca3257 (patch) | |
tree | 30065f23d5211799e941409200df481130619bef /clang/lib | |
parent | f7a034d400860501a26e3429e1c6a9f310f07f76 (diff) | |
download | llvm-319045d8c42dc855eacdb4bd1d71b6ac3fca3257.zip llvm-319045d8c42dc855eacdb4bd1d71b6ac3fca3257.tar.gz llvm-319045d8c42dc855eacdb4bd1d71b6ac3fca3257.tar.bz2 |
[analyzer] Add metrics tracking time spent in Z3 solver (#133236)
These metrics would turn out to be useful for verifying an upgrade of Z3.
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/StaticAnalyzer/Core/Z3CrosscheckVisitor.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/Z3CrosscheckVisitor.cpp b/clang/lib/StaticAnalyzer/Core/Z3CrosscheckVisitor.cpp index fca792c..836fc37 100644 --- a/clang/lib/StaticAnalyzer/Core/Z3CrosscheckVisitor.cpp +++ b/clang/lib/StaticAnalyzer/Core/Z3CrosscheckVisitor.cpp @@ -41,6 +41,11 @@ STAT_COUNTER(NumTimesZ3QueryRejectReport, STAT_COUNTER(NumTimesZ3QueryRejectEQClass, "Number of times rejecting an report equivalenece class"); +STAT_COUNTER(TimeSpentSolvingZ3Queries, + "Total time spent solving Z3 queries excluding retries"); +STAT_MAX(MaxTimeSpentSolvingZ3Queries, + "Max time spent solving a Z3 query excluding retries"); + using namespace clang; using namespace ento; @@ -145,6 +150,8 @@ Z3CrosscheckOracle::Z3Decision Z3CrosscheckOracle::interpretQueryResult( const Z3CrosscheckVisitor::Z3Result &Query) { ++NumZ3QueriesDone; AccumulatedZ3QueryTimeInEqClass += Query.Z3QueryTimeMilliseconds; + TimeSpentSolvingZ3Queries += Query.Z3QueryTimeMilliseconds; + MaxTimeSpentSolvingZ3Queries.updateMax(Query.Z3QueryTimeMilliseconds); if (Query.IsSAT && Query.IsSAT.value()) { ++NumTimesZ3QueryAcceptsReport; |