Skip to content

Commit 7db3d8b

Browse files
authored
Merge pull request #8409 from tautschnig/solver-factory-no-dynamic_cast2
Solver factory: set_decision_procedure_time_limit does not require dynamic_cast
2 parents 068d963 + 27aa454 commit 7db3d8b

File tree

2 files changed

+5
-20
lines changed

2 files changed

+5
-20
lines changed

src/goto-checker/solver_factory.cpp

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -82,26 +82,13 @@ solver_factoryt::solvert::stack_decision_procedure() const
8282
}
8383

8484
void solver_factoryt::set_decision_procedure_time_limit(
85-
decision_proceduret &decision_procedure)
85+
solver_resource_limitst &decision_procedure)
8686
{
8787
const int timeout_seconds =
8888
options.get_signed_int_option("solver-time-limit");
8989

9090
if(timeout_seconds > 0)
91-
{
92-
solver_resource_limitst *solver =
93-
dynamic_cast<solver_resource_limitst *>(&decision_procedure);
94-
if(solver == nullptr)
95-
{
96-
messaget log(message_handler);
97-
log.warning() << "cannot set solver time limit on "
98-
<< decision_procedure.decision_procedure_text()
99-
<< messaget::eom;
100-
return;
101-
}
102-
103-
solver->set_time_limit_seconds(timeout_seconds);
104-
}
91+
decision_procedure.set_time_limit_seconds(timeout_seconds);
10592
}
10693

10794
void solver_factoryt::solvert::set_decision_procedure(
@@ -531,7 +518,6 @@ solver_factoryt::get_smt2(smt2_dect::solvert solver)
531518
if(options.get_bool_option("fpa"))
532519
smt2_dec->use_FPA_theory = true;
533520

534-
set_decision_procedure_time_limit(*smt2_dec);
535521
return std::make_unique<solvert>(std::move(smt2_dec));
536522
}
537523
else if(filename == "-")
@@ -547,7 +533,6 @@ solver_factoryt::get_smt2(smt2_dect::solvert solver)
547533
if(options.get_bool_option("fpa"))
548534
smt2_conv->use_FPA_theory = true;
549535

550-
set_decision_procedure_time_limit(*smt2_conv);
551536
return std::make_unique<solvert>(std::move(smt2_conv));
552537
}
553538
else
@@ -565,7 +550,6 @@ solver_factoryt::get_smt2(smt2_dect::solvert solver)
565550
if(options.get_bool_option("fpa"))
566551
smt2_conv->use_FPA_theory = true;
567552

568-
set_decision_procedure_time_limit(*smt2_conv);
569553
return std::make_unique<solvert>(std::move(smt2_conv), std::move(out));
570554
}
571555
}

src/goto-checker/solver_factory.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class cmdlinet;
2121
class message_handlert;
2222
class namespacet;
2323
class optionst;
24+
class solver_resource_limitst;
2425
class stack_decision_proceduret;
2526

2627
class solver_factoryt final
@@ -81,8 +82,8 @@ class solver_factoryt final
8182
/// Sets the timeout of \p decision_procedure if the `solver-time-limit`
8283
/// option has a positive value (in seconds).
8384
/// \note Most solvers silently ignore the time limit at the moment.
84-
void
85-
set_decision_procedure_time_limit(decision_proceduret &decision_procedure);
85+
void set_decision_procedure_time_limit(
86+
solver_resource_limitst &decision_procedure);
8687

8788
// consistency checks during solver creation
8889
void no_beautification();

0 commit comments

Comments
 (0)