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