1; RUN: opt -S -passes=mergefunc < %s | FileCheck %s 2 3@llvm.compiler.used = appending global [1 x ptr] [ptr @a], section "llvm.metadata" 4 5define internal i32 @a(i32 %a) unnamed_addr { 6 %b = xor i32 %a, 0 7 %c = xor i32 %b, 0 8 ret i32 %c 9} 10 11define i32 @b(i32 %a) unnamed_addr { 12 %b = xor i32 %a, 0 13 %c = xor i32 %b, 0 14 ret i32 %c 15} 16 17define i32 @c(i32 %a) unnamed_addr { 18 %b = tail call i32 @a(i32 %a) 19 ret i32 %b 20} 21 22; CHECK-LABEL: @llvm.compiler.used = appending global [1 x ptr] [ptr @a], section "llvm.metadata" 23 24; CHECK-LABEL: define i32 @b(i32 %a) unnamed_addr 25; CHECK-NEXT: xor 26; CHECK-NEXT: xor 27; CHECK-NEXT: ret 28 29; CHECK-LABEL: define i32 @c(i32 %a) unnamed_addr 30; CHECK-NEXT: tail call i32 @b(i32 %a) 31; CHECK-NEXT: ret 32 33; CHECK-LABEL: define internal i32 @a(i32 %0) unnamed_addr 34; CHECK-NEXT: tail call i32 @b(i32 %0) 35; CHECK-NEXT: ret 36