[analyzer] Add method to the generic SMT API to dump the SMT formula

Summary:
New method dump the SMT formula and the Z3 implementation.

There is no test because I only used it for debugging.

However, if requested, I can add an option to the static analyzer to dump the formula (whole program? per path?), maybe something like the trimmed graph but for SMT formulas.

Reviewers: NoQ, george.karpenkov, ddcc

Reviewed By: george.karpenkov

Subscribers: xazax.hun, szepet, a.sidorin

Differential Revision: https://reviews.llvm.org/D48221

llvm-svn: 334891
This commit is contained in:
Mikhail R. Gadelha 2018-06-16 14:36:17 +00:00
parent 1193bbf6b7
commit e7f703804d
2 changed files with 9 additions and 0 deletions

View File

@ -35,6 +35,8 @@ public:
/// Checks if the added constraints are satisfiable
virtual clang::ento::ConditionTruthVal isModelFeasible() = 0;
/// Dumps SMT formula
LLVM_DUMP_METHOD virtual void dump() const = 0;
}; // end class SMTConstraintManager
} // namespace ento

View File

@ -911,6 +911,8 @@ public:
ConditionTruthVal isModelFeasible() override;
LLVM_DUMP_METHOD void dump() const override;
//===------------------------------------------------------------------===//
// Implementation for interface from ConstraintManager.
//===------------------------------------------------------------------===//
@ -1299,6 +1301,11 @@ clang::ento::ConditionTruthVal Z3ConstraintManager::isModelFeasible() {
return ConditionTruthVal();
}
LLVM_DUMP_METHOD void Z3ConstraintManager::dump() const
{
Solver.dump();
}
//===------------------------------------------------------------------===//
// Internal implementation.
//===------------------------------------------------------------------===//