File tree Expand file tree Collapse file tree 6 files changed +35
-2
lines changed
regression/goto-instrument/enum-range-check-disable Expand file tree Collapse file tree 6 files changed +35
-2
lines changed Original file line number Diff line number Diff line change
1
+ #include <stdio.h>
2
+
3
+ enum day
4
+ {
5
+ sunday = 1 ,
6
+ monday ,
7
+ tuesday = 5 ,
8
+ wednesday ,
9
+ thursday = 10 ,
10
+ friday ,
11
+ saturday
12
+ };
13
+
14
+ int main ()
15
+ {
16
+ #pragma CPROVER check push
17
+ #pragma CPROVER check disable "enum-range"
18
+ enum day temp = 100 ;
19
+ printf ("%d\n" , temp );
20
+ #pragma CPROVER check pop
21
+ return 0 ;
22
+ }
Original file line number Diff line number Diff line change
1
+ CORE
2
+ main.c
3
+ --enum-range-check
4
+ ^EXIT=0$
5
+ ^SIGNAL=0$
6
+ ^VERIFICATION SUCCESSFUL$
7
+ --
8
+ ^warning: ignoring
Original file line number Diff line number Diff line change @@ -1843,6 +1843,8 @@ void goto_checkt::goto_check(
1843
1843
flag_resetter.set_flag (enable_memory_leak_check, false );
1844
1844
else if (d.first == " disable:div-by-zero-check" )
1845
1845
flag_resetter.set_flag (enable_div_by_zero_check, false );
1846
+ else if (d.first == " disable:enum-range-check" )
1847
+ flag_resetter.set_flag (enable_enum_range_check, false );
1846
1848
else if (d.first == " disable:signed-overflow-check" )
1847
1849
flag_resetter.set_flag (enable_signed_overflow_check, false );
1848
1850
else if (d.first == " disable:unsigned-overflow-check" )
Original file line number Diff line number Diff line change @@ -54,6 +54,7 @@ void goto_check(
54
54
" --float-overflow-check check floating-point for +/-Inf\n " \
55
55
" --nan-check check floating-point for NaN\n " \
56
56
" --no-built-in-assertions ignore assertions in built-in library\n " \
57
+ " --enum-range-check checks that all enum type expressions have values in the enum range\n " /* NOLINT(whitespace/line_length) */ \
57
58
// clang-format on
58
59
59
60
#define PARSE_OPTIONS_GOTO_CHECK (cmdline, options ) \
Original file line number Diff line number Diff line change @@ -235,9 +235,10 @@ string_lit ("L"|"u"|"U"|"u8")?["]{s_char}*["]
235
235
CPROVER_PREFIX " __CPROVER_"
236
236
237
237
arith_check (" conversion" | " undefined-shift" | " nan" | " div-by-zero" )
238
+ enum_check " enum-range"
238
239
memory_check (" bounds" | " pointer" | " memory_leak" )
239
240
overflow_check (" signed" | " unsigned" | " pointer" | " float" )" -overflow"
240
- named_check [" ]({arith_check }| {memory_check }| {overflow_check })[" ]
241
+ named_check [" ]({arith_check }| {enum_check } | { memory_check }| {overflow_check })[" ]
241
242
242
243
%x GRAMMAR
243
244
%x COMMENT1
Original file line number Diff line number Diff line change @@ -1624,7 +1624,6 @@ void goto_instrument_parse_optionst::help()
1624
1624
" Safety checks:\n "
1625
1625
" --no-assertions ignore user assertions\n "
1626
1626
HELP_GOTO_CHECK
1627
- " --enum-range-check checks that all enum type expressions have values in the enum range\n " // NOLINT(*)
1628
1627
" --uninitialized-check add checks for uninitialized locals (experimental)\n " // NOLINT(*)
1629
1628
" --error-label label check that label is unreachable\n "
1630
1629
" --stack-depth n add check that call stack size of non-inlined functions never exceeds n\n " // NOLINT(*)
You can’t perform that action at this time.
0 commit comments