aboutsummaryrefslogtreecommitdiff
path: root/clang/lib
diff options
context:
space:
mode:
authorBalázs Benics <108414871+balazs-benics-sonarsource@users.noreply.github.com>2025-03-28 11:26:28 +0100
committerGitHub <noreply@github.com>2025-03-28 11:26:28 +0100
commit319045d8c42dc855eacdb4bd1d71b6ac3fca3257 (patch)
tree30065f23d5211799e941409200df481130619bef /clang/lib
parentf7a034d400860501a26e3429e1c6a9f310f07f76 (diff)
downloadllvm-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.cpp7
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;