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