1 ; RUN: opt -S -passes=mergefunc < %s | FileCheck %s
3 %Opaque_type = type opaque
4 %S2i = type <{ i64, i64 }>
5 %D2i = type <{ i64, i64 }>
9 define void @B(ptr sret(%Opaque_type) %a, ptr %b, ptr %xp, ptr %yp) {
10 %x = load i32, ptr %xp
11 %y = load i32, ptr %yp
13 %sum2 = add i32 %sum, %y
14 %sum3 = add i32 %sum2, %y
18 define void @C(ptr sret(%Opaque_type) %a, ptr %b, ptr %xp, ptr %yp) {
19 %x = load i32, ptr %xp
20 %y = load i32, ptr %yp
22 %sum2 = add i32 %sum, %y
23 %sum3 = add i32 %sum2, %y
27 define void @A(ptr sret(%Opaque_type) %a, ptr %b, ptr %xp, ptr %yp) {
28 %x = load i32, ptr %xp
29 %y = load i32, ptr %yp
31 %sum2 = add i32 %sum, %y
32 %sum3 = add i32 %sum2, %y
36 ; Make sure we transfer the parameter attributes to the call site.
37 ; CHECK-LABEL: define void @C(ptr sret
38 ; CHECK: tail call void @A(ptr sret(%Opaque_type) %0, ptr %1, ptr %2, ptr %3)
42 ; Make sure we transfer the parameter attributes to the call site.
43 ; CHECK-LABEL: define void @B(ptr sret
44 ; CHECK: tail call void @A(ptr sret(%Opaque_type) %0, ptr %1, ptr %2, ptr %3)