|  | // 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() { | 
|  | int B[200]; | 
|  | return B[4]; | 
|  | } | 
|  |  | 
|  | struct STest2 { int X; short Y[4]; double Z; }; | 
|  |  | 
|  | struct STest2 Test7(struct STest2 X) { | 
|  | return X; | 
|  | } |