1*67e74705SXin Li// RUN: %clang_cc1 %s -emit-llvm -o - -O0 -ffake-address-space-map -triple i686-pc-darwin | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Litypedef struct { 4*67e74705SXin Li int cells[9]; 5*67e74705SXin Li} Mat3X3; 6*67e74705SXin Li 7*67e74705SXin Litypedef struct { 8*67e74705SXin Li int cells[16]; 9*67e74705SXin Li} Mat4X4; 10*67e74705SXin Li 11*67e74705SXin LiMat4X4 __attribute__((noinline)) foo(Mat3X3 in) { 12*67e74705SXin Li Mat4X4 out; 13*67e74705SXin Li return out; 14*67e74705SXin Li} 15*67e74705SXin Li 16*67e74705SXin Likernel void ker(global Mat3X3 *in, global Mat4X4 *out) { 17*67e74705SXin Li out[0] = foo(in[1]); 18*67e74705SXin Li} 19*67e74705SXin Li 20*67e74705SXin Li// Expect two mem copies: one for the argument "in", and one for 21*67e74705SXin Li// the return value. 22*67e74705SXin Li// CHECK: call void @llvm.memcpy.p0i8.p1i8.i32(i8* 23*67e74705SXin Li// CHECK: call void @llvm.memcpy.p1i8.p0i8.i32(i8 addrspace(1)* 24