[InstCombine] Signed saturation patterns
[llvm-core.git] / test / Transforms / MergeFunc / merge-unnamed-addr-bitcast.ll
blob3cefc3eb819f81655d102c550b64118522c91dd0
1 ; RUN: opt -S -mergefunc < %s | FileCheck %s
3 %A = type { i32 }
4 %B = type { i32 }
6 ; CHECK-NOT: @b
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)*) }
13 define internal i32 @a(%A) unnamed_addr {
14   extractvalue %A %0, 0
15   xor i32 %2, 0
16   ret i32 %3
19 define internal i32 @b(%B) unnamed_addr {
20   extractvalue %B %0, 0
21   xor i32 %2, 0
22   ret i32 %3
25 define 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