1*67e74705SXin Li// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -O3 -emit-llvm -o %t %s 2*67e74705SXin Li// RUN: grep 'ret i32 385' %t 3*67e74705SXin Li 4*67e74705SXin Livoid *alloca(); 5*67e74705SXin Li 6*67e74705SXin Li@interface I0 { 7*67e74705SXin Li@public 8*67e74705SXin Li int iv0; 9*67e74705SXin Li int iv1; 10*67e74705SXin Li int iv2; 11*67e74705SXin Li} 12*67e74705SXin Li@end 13*67e74705SXin Li 14*67e74705SXin Listatic int f0(I0 *a0) { 15*67e74705SXin Li return (*(a0 + 2)).iv0; 16*67e74705SXin Li} 17*67e74705SXin Li 18*67e74705SXin Listatic int f1(I0 *a0) { 19*67e74705SXin Li return a0[2].iv1; 20*67e74705SXin Li} 21*67e74705SXin Li 22*67e74705SXin Listatic int f2(I0 *a0) { 23*67e74705SXin Li return (*(a0 - 1)).iv2; 24*67e74705SXin Li} 25*67e74705SXin Li 26*67e74705SXin Liint g0(void) { 27*67e74705SXin Li I0 *a = alloca(sizeof(*a) * 4); 28*67e74705SXin Li a[2].iv0 = 5; 29*67e74705SXin Li a[2].iv1 = 7; 30*67e74705SXin Li a[2].iv2 = 11; 31*67e74705SXin Li return f0(a) * f1(a) * f2(&a[3]); 32*67e74705SXin Li} 33*67e74705SXin Li 34*67e74705SXin Li 35