Skip to content

Commit 0520732

Browse files
Use default options in JBMC
This replicates the pattern used in CBMC.
1 parent e4cfb04 commit 0520732

File tree

2 files changed

+27
-18
lines changed

2 files changed

+27
-18
lines changed

jbmc/src/jbmc/jbmc_parse_options.cpp

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,23 @@ ::jbmc_parse_optionst::jbmc_parse_optionst(
8080
{
8181
}
8282

83+
void jbmc_parse_optionst::set_default_options(optionst &options)
84+
{
85+
// Default true
86+
options.set_option("assertions", true);
87+
options.set_option("assumptions", true);
88+
options.set_option("built-in-assertions", true);
89+
options.set_option("pretty-names", true);
90+
options.set_option("propagation", true);
91+
options.set_option("refine-strings", true);
92+
options.set_option("sat-preprocessor", true);
93+
options.set_option("simplify", true);
94+
options.set_option("simplify-if", true);
95+
96+
// Other default
97+
options.set_option("arrays-uf", "auto");
98+
}
99+
83100
void jbmc_parse_optionst::get_command_line_options(optionst &options)
84101
{
85102
if(config.set(cmdline))
@@ -88,6 +105,8 @@ void jbmc_parse_optionst::get_command_line_options(optionst &options)
88105
exit(1); // should contemplate EX_USAGE from sysexits.h
89106
}
90107

108+
jbmc_parse_optionst::set_default_options(options);
109+
91110
if(cmdline.isset("show-symex-strategies"))
92111
{
93112
std::cout << path_strategy_chooser.show_strategies();
@@ -107,15 +126,11 @@ void jbmc_parse_optionst::get_command_line_options(optionst &options)
107126

108127
if(cmdline.isset("no-simplify"))
109128
options.set_option("simplify", false);
110-
else
111-
options.set_option("simplify", true);
112129

113130
if(cmdline.isset("stop-on-fail") ||
114131
cmdline.isset("dimacs") ||
115132
cmdline.isset("outfile"))
116133
options.set_option("stop-on-fail", true);
117-
else
118-
options.set_option("stop-on-fail", false);
119134

120135
if(cmdline.isset("trace") ||
121136
cmdline.isset("stop-on-fail"))
@@ -148,8 +163,6 @@ void jbmc_parse_optionst::get_command_line_options(optionst &options)
148163
// constant propagation
149164
if(cmdline.isset("no-propagation"))
150165
options.set_option("propagation", false);
151-
else
152-
options.set_option("propagation", true);
153166

154167
// transform self loops to assumptions
155168
options.set_option(
@@ -166,14 +179,10 @@ void jbmc_parse_optionst::get_command_line_options(optionst &options)
166179
// check assertions
167180
if(cmdline.isset("no-assertions"))
168181
options.set_option("assertions", false);
169-
else
170-
options.set_option("assertions", true);
171182

172183
// use assumptions
173184
if(cmdline.isset("no-assumptions"))
174185
options.set_option("assumptions", false);
175-
else
176-
options.set_option("assumptions", true);
177186

178187
// generate unwinding assertions
179188
if(cmdline.isset("cover"))
@@ -206,15 +215,11 @@ void jbmc_parse_optionst::get_command_line_options(optionst &options)
206215
// simplify if conditions and branches
207216
if(cmdline.isset("no-simplify-if"))
208217
options.set_option("simplify-if", false);
209-
else
210-
options.set_option("simplify-if", true);
211218

212219
if(cmdline.isset("arrays-uf-always"))
213220
options.set_option("arrays-uf", "always");
214221
else if(cmdline.isset("arrays-uf-never"))
215222
options.set_option("arrays-uf", "never");
216-
else
217-
options.set_option("arrays-uf", "auto");
218223

219224
if(cmdline.isset("dimacs"))
220225
options.set_option("dimacs", true);
@@ -238,8 +243,8 @@ void jbmc_parse_optionst::get_command_line_options(optionst &options)
238243
options.set_option("refine-arithmetic", true);
239244
}
240245

241-
if(!cmdline.isset("no-refine-strings"))
242-
options.set_option("refine-strings", true);
246+
if(cmdline.isset("no-refine-strings"))
247+
options.set_option("refine-strings", false);
243248

244249
if(cmdline.isset("string-printable"))
245250
options.set_option("string-printable", true);
@@ -350,8 +355,6 @@ void jbmc_parse_optionst::get_command_line_options(optionst &options)
350355

351356
if(cmdline.isset("no-sat-preprocessor"))
352357
options.set_option("sat-preprocessor", false);
353-
else
354-
options.set_option("sat-preprocessor", true);
355358

356359
options.set_option(
357360
"pretty-names",

jbmc/src/jbmc/jbmc_parse_options.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,12 @@ class jbmc_parse_optionst:
9797
const char **argv,
9898
const std::string &extra_options);
9999

100+
/// \brief Set the options that have default values
101+
///
102+
/// This function can be called from clients that wish to emulate JBMC's
103+
/// default behaviour, for example unit tests.
104+
static void set_default_options(optionst &);
105+
100106
void process_goto_function(
101107
goto_model_functiont &function,
102108
const abstract_goto_modelt &,

0 commit comments

Comments
 (0)