@@ -46,8 +46,9 @@ void call3() {
4646}
4747
4848// CHECK-LABEL: define void {{.*}}call4{{.*}}(ptr
49+ // CHECK-SAME: noundef byval([2 x [2 x float]]) align 4 [[Arr:%.*]])
4950// CHECK: [[Tmp:%.*]] = alloca [2 x [2 x float]]
50- // CHECK: store ptr {{.*}}, ptr [[Tmp]], align 4
51+ // CHECK: call void @llvm.memcpy.p0.p0.i32( ptr align 4 [[Tmp]], ptr align 4 [[Arr]], i32 16, i1 false)
5152// CHECK: call void {{.*}}fn3{{.*}}(ptr noundef byval([2 x [2 x float]]) align 4 [[Tmp]])
5253
5354void call4 (float Arr[2 ][2 ]) {
@@ -66,12 +67,12 @@ void call4(float Arr[2][2]) {
6667// CHECK: [[Tmp1:%.*]] = alloca [2 x float]
6768// CHECK: [[Tmp2:%.*]] = alloca [4 x float]
6869// CHECK: [[Tmp3:%.*]] = alloca [3 x i32]
69- // CHECK: store ptr {{.*}}, ptr [[Tmp1]], align 4
70- // CHECK: call void @"??$template_fn@$$BY01M@@YAXY01M@Z" (ptr noundef byval([2 x float]) align 4 [[Tmp1]])
71- // CHECK: store ptr {{.*}}, ptr [[Tmp2]], align 4
72- // CHECK: call void @"??$template_fn@$$BY03M@@YAXY03M@Z" (ptr noundef byval([4 x float]) align 4 [[Tmp2]])
73- // CHECK: store ptr {{.*}}, ptr [[Tmp3]], align 4
74- // CHECK: call void @"??$template_fn@$$BY02H@@YAXY02H@Z" (ptr noundef byval([3 x i32]) align 4 [[Tmp3]])
70+ // CHECK: call void @llvm.memcpy.p0.p0.i32( ptr align 4 [[Tmp1]], ptr align 4 [[FA2]], i32 8, i1 false)
71+ // CHECK: call void @_Z11template_fnIA2_fEvT_ (ptr noundef byval([2 x float]) align 4 [[Tmp1]])
72+ // CHECK: call void @llvm.memcpy.p0.p0.i32( ptr align 4 [[Tmp2]], ptr align 4 [[FA4]], i32 16, i1 false)
73+ // CHECK: call void @_Z11template_fnIA4_fEvT_ (ptr noundef byval([4 x float]) align 4 [[Tmp2]])
74+ // CHECK: call void @llvm.memcpy.p0.p0.i32( ptr align 4 [[Tmp3]], ptr align 4 [[IA3]], i32 12, i1 false)
75+ // CHECK: call void @_Z11template_fnIA3_iEvT_ (ptr noundef byval([3 x i32]) align 4 [[Tmp3]])
7576
7677template<typename T>
7778void template_fn (T Val) {}
@@ -82,6 +83,7 @@ void template_call(float FA2[2], float FA4[4], int IA3[3]) {
8283 template_fn (IA3);
8384}
8485
86+
8587// Verify that Array parameter element access correctly codegens.
8688// CHECK-LABEL: define void {{.*}}element_access{{.*}}(ptr
8789// CHECK-SAME: noundef byval([2 x float]) align 4 [[FA2:%[0-9A-Z]+]]
0 commit comments