xref: /llvm-project/llvm/test/Transforms/MergeFunc/merge-used.ll (revision ee2789001b8558656a13502f0de2c81dcb419430)
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