blob: 3cefc3eb819f81655d102c550b64118522c91dd0 [file] [log] [blame]
whitequarkb2ce9ff2017-10-15 12:29:01 +00001; RUN: opt -S -mergefunc < %s | FileCheck %s
2
3%A = type { i32 }
4%B = type { i32 }
5
6; CHECK-NOT: @b
7
8@x = constant { i32 (i32)*, i32 (i32)* }
9 { i32 (i32)* bitcast (i32 (%A)* @a to i32 (i32)*),
10 i32 (i32)* bitcast (i32 (%B)* @b to i32 (i32)*) }
11; CHECK: { i32 (i32)* bitcast (i32 (%A)* @a to i32 (i32)*), i32 (i32)* bitcast (i32 (%A)* @a to i32 (i32)*) }
12
13define internal i32 @a(%A) unnamed_addr {
14 extractvalue %A %0, 0
15 xor i32 %2, 0
16 ret i32 %3
17}
18
19define internal i32 @b(%B) unnamed_addr {
20 extractvalue %B %0, 0
21 xor i32 %2, 0
22 ret i32 %3
23}
24
25define i32 @c(i32) {
26 insertvalue %B undef, i32 %0, 0
27 call i32 @b(%B %2)
28; CHECK: call i32 bitcast (i32 (%A)* @a to i32 (%B)*)(%B %2)
29 ret i32 %3
30}