|  | ; RUN: opt -S -mergefunc < %s | FileCheck %s | 
|  |  | 
|  | @llvm.compiler.used = appending global [1 x i8*] [i8* bitcast (i32 (i32)* @a to i8*)], section "llvm.metadata" | 
|  |  | 
|  | define internal i32 @a(i32 %a) unnamed_addr { | 
|  | %b = xor i32 %a, 0 | 
|  | %c = xor i32 %b, 0 | 
|  | ret i32 %c | 
|  | } | 
|  |  | 
|  | define i32 @b(i32 %a) unnamed_addr { | 
|  | %b = xor i32 %a, 0 | 
|  | %c = xor i32 %b, 0 | 
|  | ret i32 %c | 
|  | } | 
|  |  | 
|  | define i32 @c(i32 %a) unnamed_addr { | 
|  | %b = tail call i32 @a(i32 %a) | 
|  | ret i32 %b | 
|  | } | 
|  |  | 
|  | ; CHECK-LABEL: @llvm.compiler.used = appending global [1 x i8*] [i8* bitcast (i32 (i32)* @a to i8*)], section "llvm.metadata" | 
|  |  | 
|  | ; CHECK-LABEL: define i32 @b(i32 %a) unnamed_addr | 
|  | ; CHECK-NEXT:    xor | 
|  | ; CHECK-NEXT:    xor | 
|  | ; CHECK-NEXT:    ret | 
|  |  | 
|  | ; CHECK-LABEL: define i32 @c(i32 %a) unnamed_addr | 
|  | ; CHECK-NEXT:    tail call i32 @b(i32 %a) | 
|  | ; CHECK-NEXT:    ret | 
|  |  | 
|  | ; CHECK-LABEL: define internal i32 @a(i32 %0) unnamed_addr | 
|  | ; CHECK-NEXT:    tail call i32 @b(i32 %0) | 
|  | ; CHECK-NEXT:    ret |