xref: /llvm-project/llvm/test/Transforms/InstCombine/byval.ll (revision 997d7d193149bdce5512405d7384f700c0cab39d)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -S -passes=instcombine %s | FileCheck %s
3
4declare void @add_byval_callee(ptr)
5
6declare void @add_byval_callee_2(ptr byval(double))
7
8define void @add_byval(ptr %in) {
9; CHECK-LABEL: @add_byval(
10; CHECK-NEXT:    call void @add_byval_callee(ptr byval(i64) [[IN:%.*]])
11; CHECK-NEXT:    ret void
12;
13  call void @add_byval_callee(ptr byval(i64) %in)
14  ret void
15}
16
17define void @add_byval_2(ptr %in) {
18; CHECK-LABEL: @add_byval_2(
19; CHECK-NEXT:    call void @add_byval_callee_2(ptr byval(i64) [[IN:%.*]])
20; CHECK-NEXT:    ret void
21;
22  call void @add_byval_callee_2(ptr byval(i64) %in)
23  ret void
24}
25
26%t2 = type { i8 }
27
28define void @vararg_byval(ptr %p) {
29; CHECK-LABEL: @vararg_byval(
30; CHECK-NEXT:    call void (i8, ...) @vararg_callee(i8 undef, ptr byval([[T2:%.*]]) [[P:%.*]])
31; CHECK-NEXT:    ret void
32;
33  call void (i8, ...) @vararg_callee(i8 undef, ptr byval(%t2) %p)
34  ret void
35}
36
37declare void @vararg_callee(i8, ...)
38