33 lines · plain
1; RUN: opt -S -passes=deadargelim %s | FileCheck %s2 3define internal { i64, i64 } @f(i64 %a, i64 %b) {4start:5 %0 = insertvalue { i64, i64 } undef, i64 %a, 06 %1 = insertvalue { i64, i64 } %0, i64 %b, 17 ret { i64, i64 } %18}9 10; Check that we don't delete either of g's return values11 12; CHECK-LABEL: define internal { i64, i64 } @g(i64 %a, i64 %b)13define internal { i64, i64 } @g(i64 %a, i64 %b) {14start:15 %0 = call { i64, i64 } @f(i64 %a, i64 %b)16 ret { i64, i64 } %017}18 19declare dso_local i32 @test(i64, i64)20 21define i32 @main(i32 %argc, ptr %argv) {22start:23 %x = call { i64, i64 } @g(i64 13, i64 42)24 %x.0 = extractvalue { i64, i64 } %x, 025 %x.1 = extractvalue { i64, i64 } %x, 126 %z = bitcast i64 %x.0 to i6427 %y = call { i64, i64 } @f(i64 %x.0, i64 %x.1)28 %y.1 = extractvalue { i64, i64 } %y, 129 %0 = call i32 @test(i64 %x.0, i64 %y.1)30 ret i32 %031}32 33