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