Skip to content

Commit e703835

Browse files
committed
Group default options into own DEFINE
1 parent 1da5faa commit e703835

File tree

3 files changed

+26
-19
lines changed

3 files changed

+26
-19
lines changed

src/ansi-c/goto_check_c.h

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ void goto_check_c(
3838
message_handlert &message_handler);
3939

4040
#define OPT_GOTO_CHECK \
41-
"(bounds-check)(pointer-check)(memory-leak-check)(memory-cleanup-check)" \
41+
"(no-bounds-check)(pointer-check)(memory-leak-check)(memory-cleanup-check)" \
4242
"(div-by-zero-check)(enum-range-check)" \
4343
"(signed-overflow-check)(unsigned-overflow-check)" \
4444
"(pointer-overflow-check)(conversion-check)(undefined-shift-check)" \
@@ -77,31 +77,36 @@ void goto_check_c(
7777
" {y--no-assumptions} \t ignore user assumptions\n" \
7878
" {y--assert-to-assume} \t convert user assertions to assumptions\n"
7979

80+
// clang-format off
81+
#define PARSE_OPTIONS_GOTO_CHECK_DEFAULTS_OVERRIDE(cmdline, options) \
82+
options.set_option("bounds-check", !cmdline.isset("no-bounds-check")); \
83+
options.set_option("pointer-check", !cmdline.isset("no-pointer-check")); \
84+
options.set_option("div-by-zero-check", !cmdline.isset("no-div-by-zero-check")); \
85+
options.set_option("signed-overflow-check", !cmdline.isset("no-signed-overflow-check")); /* NOLINT(whitespace/line_length) */ \
86+
options.set_option("undefined-shift-check", !cmdline.isset("no-undefined-shift-check")); /* NOLINT(whitespace/line_length) */ \
87+
options.set_option("pointer-primitive-check", !cmdline.isset("no-pointer-primitive-check")); /* NOLINT(whitespace/line_length) */ \
88+
(void) 0;
89+
// clang-format on
90+
8091
// clang-format off
8192
#define PARSE_OPTIONS_GOTO_CHECK(cmdline, options) \
82-
options.set_option("bounds-check", !cmdline.isset("no-bounds-check")); \
83-
options.set_option("pointer-check", !cmdline.isset("no-pointer-check")); \
8493
options.set_option("memory-leak-check", cmdline.isset("memory-leak-check")); \
8594
options.set_option("memory-cleanup-check", cmdline.isset("memory-cleanup-check")); /* NOLINT(whitespace/line_length) */ \
86-
options.set_option("div-by-zero-check", !cmdline.isset("no-div-by-zero-check")); \
8795
options.set_option("enum-range-check", cmdline.isset("enum-range-check")); \
88-
options.set_option("signed-overflow-check", !cmdline.isset("no-signed-overflow-check")); /* NOLINT(whitespace/line_length) */ \
8996
options.set_option("unsigned-overflow-check", cmdline.isset("unsigned-overflow-check")); /* NOLINT(whitespace/line_length) */ \
9097
options.set_option("pointer-overflow-check", cmdline.isset("pointer-overflow-check")); /* NOLINT(whitespace/line_length) */ \
9198
options.set_option("conversion-check", cmdline.isset("conversion-check")); \
92-
options.set_option("undefined-shift-check", !cmdline.isset("no-undefined-shift-check")); /* NOLINT(whitespace/line_length) */ \
9399
options.set_option("float-overflow-check", cmdline.isset("float-overflow-check")); /* NOLINT(whitespace/line_length) */ \
94100
options.set_option("nan-check", cmdline.isset("nan-check")); \
95101
options.set_option("built-in-assertions", !cmdline.isset("no-built-in-assertions")); /* NOLINT(whitespace/line_length) */ \
96-
options.set_option("pointer-primitive-check", !cmdline.isset("no-pointer-primitive-check")); /* NOLINT(whitespace/line_length) */ \
97-
options.set_option("retain-trivial-checks", \
98-
cmdline.isset("retain-trivial-checks")); \
99102
options.set_option("assertions", !cmdline.isset("no-assertions")); /* NOLINT(whitespace/line_length) */ \
100103
options.set_option("assumptions", !cmdline.isset("no-assumptions")); /* NOLINT(whitespace/line_length) */ \
104+
options.set_option("retain-trivial-checks", \
105+
cmdline.isset("retain-trivial-checks")); \
101106
options.set_option("assert-to-assume", cmdline.isset("assert-to-assume")); /* NOLINT(whitespace/line_length) */ \
102107
options.set_option("retain-trivial", cmdline.isset("retain-trivial")); /* NOLINT(whitespace/line_length) */ \
103108
if(cmdline.isset("error-label")) \
104-
options.set_option("error-label", cmdline.get_values("error-label")); \
109+
options.set_option("error-label", cmdline.get_values("error-label")); \
105110
(void)0
106111
// clang-format on
107112

src/cbmc/cbmc_parse_options.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ void cbmc_parse_optionst::set_default_options(optionst &options)
110110
options.set_option("depth", UINT32_MAX);
111111
}
112112

113-
void cbmc_parse_optionst::set_soundness_on_by_default(optionst &options)
113+
void cbmc_parse_optionst::set_default_analysis_flags(optionst &options)
114114
{
115115
// Analysis flags on by default
116116
options.set_option("bounds-check", true);
@@ -135,11 +135,6 @@ void cbmc_parse_optionst::get_command_line_options(optionst &options)
135135
cbmc_parse_optionst::set_default_options(options);
136136
parse_c_object_factory_options(cmdline, options);
137137

138-
// Enable flags that in combination provide analysis with no surprises
139-
// (expected checks and no unsoundness by missing checks).
140-
if (options.get_bool_option("standard-checks"))
141-
set_soundness_on_by_default(options);
142-
143138
if(cmdline.isset("function"))
144139
options.set_option("function", cmdline.get_value("function"));
145140

@@ -328,7 +323,14 @@ void cbmc_parse_optionst::get_command_line_options(optionst &options)
328323
"self-loops-to-assumptions",
329324
!cmdline.isset("no-self-loops-to-assumptions"));
330325

331-
// all checks supported by goto_check
326+
// Enable flags that in combination provide analysis with no surprises
327+
// (expected checks and no unsoundness by missing checks).
328+
if (!cmdline.isset("no-standard-checks") && options.get_bool_option("standard-checks"))
329+
set_default_analysis_flags(options);
330+
else
331+
PARSE_OPTIONS_GOTO_CHECK_DEFAULTS_OVERRIDE(cmdline, options);
332+
333+
// all (non-default) checks supported by goto_check
332334
PARSE_OPTIONS_GOTO_CHECK(cmdline, options);
333335

334336
// generate unwinding assertions

src/cbmc/cbmc_parse_options.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class optionst;
3434
// clang-format off
3535
#define CBMC_OPTIONS \
3636
OPT_BMC \
37-
"(standard-checks)" \
37+
"(no-standard-checks)" \
3838
"(preprocess)(slice-by-trace):" \
3939
OPT_FUNCTIONS \
4040
"(no-simplify)(full-slice)" \
@@ -91,7 +91,7 @@ class cbmc_parse_optionst : public parse_options_baset
9191
/// This function can be called from clients that wish to emulate CBMC's
9292
/// default behaviour, for example unit tests.
9393
static void set_default_options(optionst &);
94-
static void set_soundness_on_by_default(optionst &options);
94+
static void set_default_analysis_flags(optionst &options);
9595

9696
static bool process_goto_program(goto_modelt &, const optionst &, messaget &);
9797

0 commit comments

Comments
 (0)