Fixed several pointer related bugs in the PIC port
[fw/sdcc] / src / regression / add3.c
1
2 // Addition tests - mostly int's
3
4 /* bit types are not ANSI - so provide a way of disabling bit types
5  * if this file is used to test other compilers besides SDCC */
6 #define SUPPORT_BIT_TYPES 1
7
8
9 unsigned char success=0;
10 unsigned char failures=0;
11 unsigned char dummy=0;
12
13
14 char char0 = 0;
15 char char1 = 0;
16 char char2 = 0;
17 int int0 = 0;
18 int int1 = 0;
19 long long0 = 0;
20 long long1 = 0;
21 unsigned long ulong0 = 0;
22 unsigned long ulong1 = 0;
23
24 #if SUPPORT_BIT_TYPES
25
26 bit bit0 = 0;
27 bit bit1 = 0;
28 bit bit2 = 0;
29 bit bit3 = 0;
30 bit bit4 = 0;
31 bit bit5 = 0;
32 bit bit6 = 0;
33 bit bit7 = 0;
34 bit bit8 = 0;
35 bit bit9 = 0;
36 bit bit10 = 0;
37 bit bit11 = 0;
38
39 #endif
40
41
42 void done()
43 {
44
45   dummy++;
46
47 }
48
49 void add_char2char(void)
50 {
51   if(char0 != 4)
52     failures++;
53   if(char1 != 5)
54     failures++;
55
56   char0 = char0 + char1;
57
58   if(char0 != 9)
59     failures++;
60
61   char0 += 127;
62   if(char0 > 0)
63     failures++;
64
65   if(char0 != -0x78)
66     failures++;
67
68
69 }
70
71 void add_compound_char(void)
72 {
73   char0 = char1+5;
74
75   if(char0 != 9)
76     failures++;
77
78   if((char0+char1) != 13)
79     failures++;
80 }
81
82 void add_int2int(void)
83 {
84   if(int0 != 4)
85     failures++;
86   if(int1 != 5)
87     failures++;
88
89   int0 += int1;
90   if(int0 != 9)
91     failures++;
92
93   int0 += 0x7fff;
94   if(int0 != -0x7ff8)
95     failures++;
96
97 }
98
99 void add_compound_int(void)
100 {
101   int0 = int1+5;
102
103   if(int0 != 9)
104     failures++;
105
106   if((int0+int1) != 13)
107     failures++;
108 }
109
110
111 void add_lit2long(void)
112 {
113
114   if(long0 != 0)
115     failures++;
116
117   long0++;
118
119   if(long0 != 1)
120     failures++;
121
122   long0 = long0 + 0xff;
123
124   if(long0 != 0x100)
125     failures++;
126
127   long0 = long0 + 0x100;
128   if(long0 != 0x200)
129     failures++;
130
131
132   long0 = long0 + 0xfe00;
133   if(long0 != 0x10000)
134     failures++;
135
136   long0 = long0 + 0xff0000;
137   if(long0 != 0x1000000)
138     failures++;
139
140   long0 = long0 + 0x7e000000;
141   if(long0 != 0x7f000000)
142     failures++;
143
144   /* wrap around zero */
145   long0 = long0 + 0x2000000;
146   if(long0 != -0x7f000000)
147     failures++;
148
149   long0 = long0 + 0x7f000000;
150   if(long0 != 0)
151     failures++;
152
153 }
154
155 void add_lit2ulong(void)
156 {
157
158   if(ulong0 != 0)
159     failures++;
160
161   ulong0++;
162
163   if(ulong0 != 1)
164     failures++;
165
166   ulong0 = ulong0 + 0xff;
167
168   if(ulong0 != 0x100)
169     failures++;
170
171   ulong0 = ulong0 + 0x100;
172   if(ulong0 != 0x200)
173     failures++;
174
175
176   ulong0 = ulong0 + 0xfe00;
177   if(ulong0 != 0x10000)
178     failures++;
179
180   ulong0 = ulong0 + 0xff0000;
181   if(ulong0 != 0x1000000)
182     failures++;
183
184   ulong0 = ulong0 + 0x7e000000;
185   if(ulong0 != 0x7f000000)
186     failures++;
187
188   ulong0 = ulong0 + 0x2000000;
189   if(ulong0 != 0x81000000)
190     failures++;
191
192   /* wrap around zero */
193   ulong0 = ulong0 + 0x7f000000;
194   if(ulong0)
195     failures++;
196
197 }
198
199 void main(void)
200 {
201   char0=4;
202   char1 = char0 + 1;
203   add_char2char();
204
205   char1=4;
206   add_compound_char();
207
208   int0 = 4;
209   int1 = int0 + 1;
210   add_int2int();
211
212   int1=4;
213   add_compound_int();
214
215   add_lit2long();
216   add_lit2ulong();
217
218   success = failures;
219   done();
220 }