- Parameter passing now works
[fw/sdcc] / src / regression / call1.c
1 //#include "p16c84.h"
2
3 unsigned char success = 0;
4 unsigned char failures = 0;
5 unsigned char dummy = 0;
6
7 bit bit0 = 0;
8 unsigned int uint0 = 0;
9 unsigned int uint1 = 0;
10 unsigned char uchar0 = 0;
11 unsigned char uchar1 = 0;
12
13 unsigned char call3 (void);
14
15 void
16 done ()
17 {
18
19   dummy++;
20
21 }
22
23 void
24 call1 (unsigned char uc0)
25 {
26   if (uc0)
27     failures++;
28 }
29
30 void
31 call2 (unsigned int ui0)
32 {
33   if (ui0)
34     failures++;
35
36 }
37
38 unsigned char
39 call3 (void)
40 {
41   if (uchar0)
42     failures++;
43
44   return (failures);
45
46 }
47
48 unsigned int
49 call4 (void)
50 {
51   unsigned int i = 0;
52
53   if (uint0)
54     i++;
55
56   return (i);
57
58 }
59
60 unsigned int
61 call5 (unsigned int k)
62 {
63
64   if (k)
65     failures++;
66
67   return (k);
68
69 }
70
71 unsigned char 
72 call6a(unsigned char uc)
73 {
74
75   if(uc>uchar1)
76     return 1;
77   else
78     return 0;
79
80 }
81
82 unsigned char
83 call6(unsigned char uc)
84 {
85
86   return(call6a(uc));
87 }
88
89 unsigned int 
90 call7a(unsigned int ui)
91 {
92   if(ui)
93     return 1;
94   else
95     return 0;
96
97 }
98
99 unsigned int
100 call7(unsigned int ui)
101 {
102
103   return(call7a(ui));
104 }
105
106 unsigned char
107 call8(unsigned char uc1,unsigned char uc2)
108 {
109
110   return uc1+uc2;
111 }
112
113 void
114 main (void)
115 {
116
117   call1 (uchar0);
118   call2 (uint0);
119   uchar1 = call3 ();
120   uint1 = call4 ();
121   if (uint1)
122     failures++;
123
124   uint1 = call5 (uint0);
125   if (uint1)
126     failures++;
127
128   if(call6(uchar0))
129     failures++;
130
131
132   if(call7(0))
133     failures++;
134
135   if(!call7(1))
136     failures++;
137
138   if(!call7(0xff00))
139     failures++;
140
141   uchar0=4;
142   uchar1=3;
143   uchar0 = call8(uchar0,uchar1);
144
145   if(uchar0 != 7)
146     failures++;
147
148   success = failures;
149   done ();
150 }