Steve Tell fixed a nested for-loop bug in the PIC Port
[fw/sdcc] / src / regression / compare3.c
1 #define __16F873
2 #include "p16f873.h"
3 //
4 // compare3.c
5 // regression testing program for comparing literals to variables
6 //
7
8
9 unsigned char success = 0;
10 unsigned char failures = 0;
11 unsigned char dummy = 0;
12
13 bit bit0 = 0;
14 unsigned int aint0 = 0;
15 unsigned int aint1 = 0;
16 unsigned char achar0 = 0;
17 unsigned char achar1 = 0;
18
19 void
20 done ()
21 {
22
23   dummy++;
24
25 }
26
27 // compare to 0
28 // assumes
29 // achar0 == 0
30 // achar1 != 0
31 // aint0  == 0
32 // aint1  != 0
33
34 void c_0(void)
35 {
36
37   if(achar0 != 0)
38     failures++;
39
40   if(achar0)
41     failures++;
42
43   if(achar1 == 0)
44     failures++;
45
46   if(!achar1)
47     failures++;
48
49   if(aint0 != 0)
50     failures++;
51
52   if(aint0)
53     failures++;
54
55   if(aint1 == 0)
56     failures++;
57
58   if(!aint1)
59     failures++;
60
61 }
62
63 // compare to 1
64 // assumes
65 // achar0 != 1
66 // achar1 == 1
67 // aint0  != 1
68 // aint1  == 1
69
70 void c_1(void)
71 {
72
73   if(achar0 == 1)
74     failures++;
75
76   if(achar1 != 1)
77     failures++;
78
79   if(aint0 == 1)
80     failures++;
81
82   if(aint1 != 1)
83     failures++;
84
85 }
86
87 // compare to 2
88 // assumes
89 // achar0 == 2
90 // aint0  == 2
91
92 void c_2(void)
93 {
94
95   if(achar0 != 2)
96     failures++;
97
98   if(aint0 != 2)
99     failures++;
100
101 }
102
103 // compare to 0xff
104 // assumes
105 // achar0 == 0xff
106 // aint0  == 0xff
107
108 void c_ff(void)
109 {
110
111   if(achar0 != 0xff)
112     failures++;
113
114   if(aint0 != 0xff)
115     failures++;
116
117   if(aint0 == 0xfe)
118     failures++;
119
120   if(aint0 == 0xff00)
121     failures++;
122
123 }
124
125
126 // compare to 0x00a5
127 // assumes
128 // achar0  == 0xa5
129 // aint0  == 0x00a5
130
131 void c_a5(void)
132 {
133
134   if(achar0 != 0xa5)
135     failures++;
136
137   if(aint0 != 0xa5)
138     failures++;
139
140   if(aint0 == 0xa4)
141     failures++;
142
143   if(aint0 == 0xa500)
144     failures++;
145
146 }
147
148 // compare to 0xa500
149 // assumes
150 // achar0  == 0xa5
151 // aint0  == 0xa500
152
153 void c_a500(void)
154 {
155
156   if(achar0 == 0xa500)
157     failures++;
158
159   if(aint0 != 0xa500)
160     failures++;
161
162   if(aint0 == 0xa400)
163     failures++;
164
165   if(aint0 == 0x00a5)
166     failures++;
167
168 }
169
170 // compare to 0xabcd
171 // assumes
172 // achar0  == 0xa5
173 // aint0  == 0xabcd
174
175 void c_abcd(void)
176 {
177
178   if(achar0 == 0xabcd)
179     failures++;
180
181   if(aint0 != 0xabcd)
182     failures++;
183
184   if(aint0 == 0xab00)
185     failures++;
186
187   if(aint0 == 0x00cd)
188     failures++;
189
190   if(aint0 == 0x05cd)
191     failures++;
192
193   if(aint0 == 0xab05)
194     failures++;
195
196   if(aint0 == 0xab01)
197     failures++;
198
199   if(aint0 == 0x01cd)
200     failures++;
201
202   //  if(aint0 == 0x1234abcd)
203     //    failures++;
204
205 }
206
207 // assumes achar1 == 0
208 void c_ifelse1(void)
209 {
210
211   if(achar0)
212     achar0 = achar1;
213   else
214     achar0 = 0;
215
216   if(achar0)
217     failures++;
218 }
219
220 void
221 main (void)
222 {
223
224   aint1 = 1;
225   achar1 = 1;
226   c_0();
227   c_1();
228
229   aint0 = 2;
230   achar0 = 2;
231   c_2();
232
233   aint0 = 0xff;
234   achar0 = 0xff;
235   c_ff();
236
237   aint0 = 0xa5;
238   achar0 = 0xa5;
239   c_a5();
240
241   aint0 = 0xabcd;
242   c_abcd();
243
244   achar0 = 0;
245   achar1 = 0;
246   c_ifelse1();
247
248   achar0 = 1;
249   c_ifelse1();
250
251   success = failures;
252   done ();
253 }