blob: 57264f026e815f97f2caed951051dcc81c3e8e80 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
/*
bug2740884.c
*/
/*
* [ 2740884 ] Incorrect assignment in array of structs
* https://sourceforge.net/tracker/?func=detail&group_id=599&atid=100599&aid=2740884
*
* a bug in SDCCast.c:1883 isConformingBody()
* case... PTR_OP
* causing loopreversal to be erroneously applied here
*
* case... INC_OP and DEC_OP
* suffer the same way
*
* (compile "make -C .. ALL_TESTS=./tests/bug2740884.c")
*/
#include <testfwk.h>
struct {
char Route;
} doors[4];
void foo(void) {
char i;
for (i = 1; i <= 2; i++)
doors[i].Route = 0x24;
}
void bar(void) {
char i;
for (i = 1; i <= 2; i++)
doors[i].Route ++;
}
void baz(void) {
char i;
for (i = 1; i <= 2; i++)
doors[i].Route --;
}
void
testBug(void)
{
doors[0].Route = 0;
doors[1].Route = 0;
doors[2].Route = 0;
doors[3].Route = 0;
foo();
ASSERT(doors[0].Route == 0);
ASSERT(doors[1].Route == 0x24);
ASSERT(doors[2].Route == 0x24);
ASSERT(doors[3].Route == 0);
bar();
ASSERT(doors[0].Route == 0);
ASSERT(doors[1].Route == 0x25);
ASSERT(doors[2].Route == 0x25);
ASSERT(doors[3].Route == 0);
baz();
ASSERT(doors[0].Route == 0);
ASSERT(doors[1].Route == 0x24);
ASSERT(doors[2].Route == 0x24);
ASSERT(doors[3].Route == 0);
}
|