xref: /llvm-project/llvm/test/Transforms/Inline/internal-scc-members.ll (revision 3528e63d89305907b3d6e0f59f7b03b94a12dacc)
1; Test that the inliner can handle deleting functions within an SCC while still
2; processing the calls in that SCC.
3;
4; RUN: opt < %s -S -passes=inline | FileCheck %s
5; RUN: opt < %s -S -passes=inliner-wrapper | FileCheck %s
6
7; CHECK-LABEL: define internal void @test1_scc0()
8; CHECK-NOT: call
9; CHECK: call void @test1_scc0()
10; CHECK-NOT: call
11; CHECK: ret
12define internal void @test1_scc0() {
13entry:
14  call void @test1_scc1()
15  ret void
16}
17
18; CHECK-NOT: @test1_scc1
19define internal void @test1_scc1() {
20entry:
21  call void @test1_scc0()
22  ret void
23}
24
25; CHECK-LABEL: define void @test1()
26; CHECK: call void @test1_scc0()
27define void @test1() {
28entry:
29  call void @test1_scc0() noinline
30  ret void
31}
32