13883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
23883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher
33883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherint test(int X) {
43883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher  return X;
53883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher}
63883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher
73883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christophervoid abc(int *X);
83883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherint def(int Y, int Z) {
93883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher  abc(&Z);
103883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher  return Y;
113883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher}
123883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher
133883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherstruct Test { short X, x; int Y, Z; };
143883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher
153883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherint Testing(struct Test *A) {
163883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher  return A->X+A->Y;
173883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher}
183883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher
193883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherint Test2(int X, struct Test A, int Y) {
203883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher  return X+Y+A.X+A.Y;
213883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher}
223883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherint Test3(struct Test A, struct Test B) {
233883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher  return A.X+A.Y+B.Y+B.Z;
243883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher}
253883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher
263883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherstruct Test Test4(struct Test A) {
273883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher  return A;
283883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher}
293883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher
303883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherint Test6() {
313883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher  int B[200];
323883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher  return B[4];
333883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher}
343883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher
353883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherstruct STest2 { int X; short Y[4]; double Z; };
363883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher
373883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherstruct STest2 Test7(struct STest2 X) {
383883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher  return X;
393883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher}
40