File tree 3 files changed +44
-0
lines changed
regression/cbmc/gcc_switch_case_range2 3 files changed +44
-0
lines changed Original file line number Diff line number Diff line change
1
+ typedef enum
2
+ {
3
+ VALUE_1 ,
4
+ VALUE_2 ,
5
+ VALUE_3 ,
6
+ VALUE_4
7
+ } values ;
8
+
9
+ int main ()
10
+ {
11
+ unsigned x ;
12
+ switch (x )
13
+ {
14
+ case VALUE_1 :
15
+ __CPROVER_assert (0 , "0 works" );
16
+ break ;
17
+ #ifdef __GNUC__
18
+ case VALUE_2 ... 3 :
19
+ #else
20
+ case VALUE_2 :
21
+ case VALUE_3 :
22
+ case VALUE_4 :
23
+ #endif
24
+ __CPROVER_assert (0 , "... works" );
25
+ break ;
26
+ default :
27
+ __CPROVER_assert (0 , "default works" );
28
+ break ;
29
+ }
30
+
31
+ return 0 ;
32
+ }
Original file line number Diff line number Diff line change
1
+ CORE
2
+ main.c
3
+
4
+ ^EXIT=10$
5
+ ^SIGNAL=0$
6
+ ^VERIFICATION FAILED$
7
+ ^\*\* 3 of 3 failed
8
+ --
9
+ ^warning: ignoring
Original file line number Diff line number Diff line change @@ -535,6 +535,7 @@ void c_typecheck_baset::typecheck_switch_case(code_switch_caset &code)
535
535
exprt &case_expr=code.case_op ();
536
536
typecheck_expr (case_expr);
537
537
implicit_typecast (case_expr, switch_op_type);
538
+ make_constant (case_expr);
538
539
}
539
540
}
540
541
@@ -561,6 +562,8 @@ void c_typecheck_baset::typecheck_gcc_switch_case_range(codet &code)
561
562
typecheck_expr (code.op1 ());
562
563
implicit_typecast (code.op0 (), switch_op_type);
563
564
implicit_typecast (code.op1 (), switch_op_type);
565
+ make_constant (code.op0 ());
566
+ make_constant (code.op1 ());
564
567
}
565
568
566
569
void c_typecheck_baset::typecheck_gcc_local_label (codet &code)
You can’t perform that action at this time.
0 commit comments