aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorHristina Palikareva <h.palikareva@imperial.ac.uk>2013-10-04 18:32:55 +0100
committerHristina Palikareva <h.palikareva@imperial.ac.uk>2013-10-11 20:02:33 +0100
commit64868646eed7384c38db41aff5002215b92c1601 (patch)
tree974ee540ed95b23c3a561c17ab710aadeece72f7 /include
parentbd233936e40f019e0ab066440dc13398ae6754f6 (diff)
downloadklee-64868646eed7384c38db41aff5002215b92c1601.tar.gz
MetaSMT builder, solver and command-line options.
Diffstat (limited to 'include')
-rw-r--r--include/klee/CommandLine.h9
-rw-r--r--include/klee/Solver.h15
2 files changed, 24 insertions, 0 deletions
diff --git a/include/klee/CommandLine.h b/include/klee/CommandLine.h
index 38b22c6f..c755114b 100644
--- a/include/klee/CommandLine.h
+++ b/include/klee/CommandLine.h
@@ -43,6 +43,15 @@ enum QueryLoggingSolverType
*/
extern llvm::cl::list<QueryLoggingSolverType> queryLoggingOptions;
+enum MetaSMTBackendType
+{
+ METASMT_BACKEND_NONE,
+ METASMT_BACKEND_STP,
+ METASMT_BACKEND_Z3,
+ METASMT_BACKEND_BOOLECTOR
+};
+
+extern llvm::cl::opt<klee::MetaSMTBackendType> UseMetaSMT;
//A bit of ugliness so we can use cl::list<> like cl::bits<>, see queryLoggingOptions
template <typename T>
diff --git a/include/klee/Solver.h b/include/klee/Solver.h
index 8fe33c7c..00e4c962 100644
--- a/include/klee/Solver.h
+++ b/include/klee/Solver.h
@@ -219,6 +219,21 @@ namespace klee {
virtual void setCoreSolverTimeout(double timeout);
};
+
+#ifdef SUPPORT_METASMT
+
+ template<typename SolverContext>
+ class MetaSMTSolver : public Solver {
+ public:
+ MetaSMTSolver(bool useForked, bool optimizeDivides);
+ virtual ~MetaSMTSolver();
+
+ virtual char *getConstraintLog(const Query&);
+ virtual void setCoreSolverTimeout(double timeout);
+};
+
+#endif /* SUPPORT_METASMT */
+
/* *** */
/// createValidatingSolver - Create a solver which will validate all query