| // RUN: %clang_cc1 -emit-llvm %s  -o /dev/null | 
 |  | 
 | int test(int X) { | 
 |   return X; | 
 | } | 
 |  | 
 | void abc(int *X); | 
 | int def(int Y, int Z) { | 
 |   abc(&Z); | 
 |   return Y; | 
 | } | 
 |  | 
 | struct Test { short X, x; int Y, Z; }; | 
 |  | 
 | int Testing(struct Test *A) { | 
 |   return A->X+A->Y; | 
 | } | 
 |  | 
 | int Test2(int X, struct Test A, int Y) { | 
 |   return X+Y+A.X+A.Y; | 
 | } | 
 | int Test3(struct Test A, struct Test B) { | 
 |   return A.X+A.Y+B.Y+B.Z; | 
 | } | 
 |  | 
 | struct Test Test4(struct Test A) { | 
 |   return A; | 
 | } | 
 |  | 
 | int Test6(void) { | 
 |   int B[200]; | 
 |   return B[4]; | 
 | } | 
 |  | 
 | struct STest2 { int X; short Y[4]; double Z; }; | 
 |  | 
 | struct STest2 Test7(struct STest2 X) { | 
 |   return X; | 
 | } |