1;RUN: llc -march=sparc < %s | FileCheck %s 2 3%struct.foo_t = type { i32, i32, i32 } 4 5define weak void @make_foo(%struct.foo_t* noalias sret %agg.result, i32 %a, i32 %b, i32 %c) nounwind { 6entry: 7;CHECK-LABEL: make_foo: 8;CHECK: ld [%sp+64], {{.+}} 9;CHECK: jmp %o7+12 10 %0 = getelementptr inbounds %struct.foo_t, %struct.foo_t* %agg.result, i32 0, i32 0 11 store i32 %a, i32* %0, align 4 12 %1 = getelementptr inbounds %struct.foo_t, %struct.foo_t* %agg.result, i32 0, i32 1 13 store i32 %b, i32* %1, align 4 14 %2 = getelementptr inbounds %struct.foo_t, %struct.foo_t* %agg.result, i32 0, i32 2 15 store i32 %c, i32* %2, align 4 16 ret void 17} 18 19define i32 @test() nounwind { 20entry: 21;CHECK-LABEL: test: 22;CHECK: call make_foo 23;CHECK: st {{.+}}, [%sp+64] 24;CHECK: unimp 12 25 %f = alloca %struct.foo_t, align 8 26 call void @make_foo(%struct.foo_t* noalias sret %f, i32 10, i32 20, i32 30) nounwind 27 %0 = getelementptr inbounds %struct.foo_t, %struct.foo_t* %f, i32 0, i32 0 28 %1 = load i32, i32* %0, align 8 29 %2 = getelementptr inbounds %struct.foo_t, %struct.foo_t* %f, i32 0, i32 1 30 %3 = load i32, i32* %2, align 4 31 %4 = getelementptr inbounds %struct.foo_t, %struct.foo_t* %f, i32 0, i32 2 32 %5 = load i32, i32* %4, align 8 33 %6 = add nsw i32 %3, %1 34 %7 = add nsw i32 %6, %5 35 ret i32 %7 36} 37