Skip to content

Commit 3c5c267

Browse files
authored
Merge pull request #7046 from diffblue/Bool_tests
bug when using preincrement on _Bool
2 parents 197c68c + 23d10ec commit 3c5c267

File tree

16 files changed

+106
-56
lines changed

16 files changed

+106
-56
lines changed

regression/cbmc/Bool/bool1.c

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#include <assert.h>
2+
3+
int main()
4+
{
5+
_Bool b1, b2, b3;
6+
7+
b1 = 0;
8+
b1++;
9+
assert(b1);
10+
11+
b2 = 1;
12+
b2 += 10;
13+
assert(b2);
14+
15+
b3 = b1 + b2;
16+
assert(b3 == 1);
17+
18+
// a struct of _Bool
19+
struct
20+
{
21+
_Bool f1, f2, f3;
22+
_Bool f4 : 1, f5 : 1;
23+
} s;
24+
25+
assert(sizeof(s) == 4);
26+
27+
s.f1 = 2;
28+
assert(s.f1 == 1);
29+
30+
s.f4 = 1;
31+
assert(s.f4);
32+
33+
*((unsigned char *)(&s.f2)) = 1;
34+
assert(s.f2);
35+
}

regression/cbmc/Bool4/test.desc renamed to regression/cbmc/Bool/bool1.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
CORE
2-
main.c
2+
bool1.c
33

44
^EXIT=0$
55
^SIGNAL=0$

regression/cbmc/Bool2/main.c renamed to regression/cbmc/Bool/bool2.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
_Bool nondet_bool();
44

5-
int main() {
6-
_Bool b1=nondet_bool();
5+
int main()
6+
{
7+
_Bool b1 = nondet_bool();
78

89
// guaranteed to be 0 or 1
9-
assert(b1==0 || b1==1);
10+
assert(b1 == 0 || b1 == 1);
1011
}

regression/cbmc/Bool1/test.desc renamed to regression/cbmc/Bool/bool2.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
CORE
2-
main.c
2+
bool2.c
33

44
^EXIT=0$
55
^SIGNAL=0$
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
#include <assert.h>
22

3-
int main() {
3+
int main()
4+
{
45
_Bool b1;
56

67
// _NOT_ guaranteed to be 0 or 1
7-
assert(b1==0 || b1==1);
8+
assert(b1 == 0 || b1 == 1);
89
}

regression/cbmc/Bool3/test.desc renamed to regression/cbmc/Bool/bool3.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
CORE
2-
main.c
2+
bool3.c
33

44
^EXIT=10$
55
^SIGNAL=0$
Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,35 @@
11
#include <assert.h>
22

3-
int main() {
3+
int main()
4+
{
45
_Bool b1, b2;
56

6-
b1=1;
7+
b1 = 1;
78
b1 ^= (_Bool)1;
89
assert(!b1);
910

10-
b1=1;
11-
b2=1;
11+
b1 = 1;
12+
b2 = 1;
1213
b1 ^= b2;
1314
assert(!b1);
1415

15-
b1=1;
16-
b1 ^= (1==1);
16+
b1 = 1;
17+
b1 ^= (1 == 1);
1718
assert(!b1);
1819

19-
b1=1;
20+
b1 = 1;
2021
b1 ^= 2;
2122
assert(b1);
2223

23-
b1=1;
24+
b1 = 1;
2425
b1 ^= 3;
2526
assert(b1);
2627

27-
b1=1;
28+
b1 = 1;
2829
b1 &= 2;
2930
assert(!b1);
3031

31-
b1=0;
32+
b1 = 0;
3233
b1 ^= 2;
33-
assert(b1==1);
34+
assert(b1 == 1);
3435
}

regression/cbmc/Bool2/test.desc renamed to regression/cbmc/Bool/bool4.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
CORE
2-
main.c
2+
bool4.c
33

44
^EXIT=0$
55
^SIGNAL=0$

regression/cbmc/Bool5/full-slice.desc renamed to regression/cbmc/Bool/bool5-full-slice.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
CORE
2-
main.c
2+
bool5.c
33
--full-slice
44
Generated 4 VCC\(s\), 0 remaining after simplification
55
^VERIFICATION SUCCESSFUL$
File renamed without changes.

0 commit comments

Comments
 (0)