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