| ; RUN: opt -S -passes=mergefunc < %s | FileCheck %s | |
| %A = type { i32 } | |
| %B = type { i32 } | |
| ; CHECK-NOT: @b | |
| @x = constant { ptr, ptr } | |
| { ptr @a, | |
| ptr @b } | |
| ; CHECK: { ptr @a, ptr @a } | |
| define internal i32 @a(%A) unnamed_addr { | |
| extractvalue %A %0, 0 | |
| xor i32 %2, 0 | |
| ret i32 %3 | |
| } | |
| define internal i32 @b(%B) unnamed_addr { | |
| extractvalue %B %0, 0 | |
| xor i32 %2, 0 | |
| ret i32 %3 | |
| } | |
| define i32 @c(i32) { | |
| insertvalue %B undef, i32 %0, 0 | |
| call i32 @b(%B %2) | |
| ; CHECK: call i32 @a(%B %2) | |
| ret i32 %3 | |
| } |