blob: 95a0045a7d4bb06c663d366e2bbbacb3c8b01f33 [file] [log] [blame]
Chris Lattner38c42722002-07-14 23:48:42 +00001
2
3void *malloc(unsigned);
4
5//#include <stdio.h>
6int puts(const char *s);
7
8struct FunStructTest {
9 int Test1;
10 char *Pointer;
11 int Array[12];
12};
13
14struct SubStruct {
15 short X, Y;
16};
17
18struct Quad {
19 int w;
20 struct SubStruct SS;
21 struct SubStruct *SSP;
22 char c;
23 int y;
24};
25
26struct Quad GlobalQuad = { 4, {1, 2}, 0, 3, 156 };
27
28typedef int (*FuncPtr)(int);
29
30unsigned PtrFunc(int (*Func)(int), int X) {
31 return Func(X);
32}
33
34char PtrFunc2(FuncPtr FuncTab[30], int Num) {
35 return FuncTab[Num]('b');
36}
37
38extern char SmallArgs2(char w, char x, long long Zrrk, char y, char z);
39extern int SomeFunc(void);
40char SmallArgs(char w, char x, char y, char z) {
41 SomeFunc();
42 return SmallArgs2(w-1, x+1, y, z, w);
43}
44
45static int F0(struct Quad Q, int i) { /* Pass Q by value */
46 struct Quad R;
47 if (i) R.SS = Q.SS;
48 Q.SSP = &R.SS;
49 Q.w = Q.y = Q.c = 1;
50 return Q.SS.Y + i + R.y - Q.c;
51}
52
53int F1(struct Quad *Q, int i) { /* Pass Q by address */
54 struct Quad R;
55#if 0
56 if (i) R.SS = Q->SS;
57#else
58 if (i) R = *Q;
59#endif
60 Q->w = Q->y = Q->c = 1;
61 return Q->SS.Y+i+R.y-Q->c;
62}
63
64
65int BadFunc(float Val) {
66 int Result;
67 if (Val > 12.345) Result = 4;
68 return Result; /* Test use of undefined value */
69}
70
71int RealFunc(void) {
72 return SomeUndefinedFunction(1, 4, 5);
73}
74
75extern int EF1(int *, char *, int *);
76
77int Func(int Param, long long Param2) {
78 int Result = Param;
79
80 {{{{
81 char c; int X;
82 EF1(&Result, &c, &X);
83 }}}
84
85 { // c & X are duplicate names!
86 char c; int X;
87 EF1(&Result, &c, &X);
88 }
89
90 }
91 return Result;
92}
93
94
95short FunFunc(long long x, char z) {
96 return x+z;
97}
98
99unsigned castTest(int X) { return X; }
100
101double TestAdd(double X, float Y) {
102 return X+Y+.5;
103}
104
105int func(int i, int j) {
106 while (i != 20)
107 i += 2;
108
109 j += func(2, i);
110 return (i * 3 + j*2)*j;
111}
112
113int SumArray(int Array[], int Num) {
114 int i, Result = 0;
115 for (i = 0; i < Num; ++i)
116 Result += Array[i];
117
118 return Result;
119}
120
121int ArrayParam(int Values[100]) {
122 return EF1((int*)Values[50], (char*)1, &Values[50]);
123}
124
125int ArrayToSum(void) {
126 int A[100], i;
127 for (i = 0; i < 100; ++i)
128 A[i] = i*4;
129
130 return A[A[0]]; //SumArray(A, 100);
131}
132
133
134int ExternFunc(long long, unsigned*, short, unsigned char);
135
136int main(int argc, char *argv[]) {
137 unsigned i;
138 puts("Hello world!\n");
139
140 ExternFunc(-1, 0, (short)argc, 2);
141 //func(argc, argc);
142
143 for (i = 0; i < 10; i++)
144 puts(argv[3]);
145 return 0;
146}
147
148double MathFunc(double X, double Y, double Z,
149 double AA, double BB, double CC, double DD,
150 double EE, double FF, double GG, double HH,
151 double aAA, double aBB, double aCC, double aDD,
152 double aEE, double aFF) {
153 return X + Y + Z + AA + BB + CC + DD + EE + FF + GG + HH
154 + aAA + aBB + aCC + aDD + aEE + aFF;
155}
156
157
158
159void strcpy(char *s1, char *s2) {
160 while (*s1++ = *s2++);
161}
162
163void strcat(char *s1, char *s2) {
164 while (*s1++);
165 s1--;
166 while (*s1++ = *s2++);
167}
168
169int strcmp(char *s1, char *s2) {
170 while (*s1++ == *s2++);
171 if (*s1 == 0) {
172 if (*s2 == 0) {
173 return 0;
174 } else {
175 return -1;
176 }
177 } else {
178 if (*s2 == 0) {
179 return 1;
180 } else {
181 return (*(--s1) - *(--s2));
182 }
183 }
184}
185