diff options
Diffstat (limited to 'test/Transforms/Inline/internal-scc-members.ll')
-rw-r--r-- | test/Transforms/Inline/internal-scc-members.ll | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/test/Transforms/Inline/internal-scc-members.ll b/test/Transforms/Inline/internal-scc-members.ll new file mode 100644 index 000000000000..258ce00744c5 --- /dev/null +++ b/test/Transforms/Inline/internal-scc-members.ll @@ -0,0 +1,31 @@ +; Test that the inliner can handle deleting functions within an SCC while still +; processing the calls in that SCC. +; +; RUN: opt < %s -S -inline | FileCheck %s +; RUN: opt < %s -S -passes=inline | FileCheck %s + +; CHECK-LABEL: define internal void @test1_scc0() +; CHECK-NOT: call +; CHECK: call void @test1_scc0() +; CHECK-NOT: call +; CHECK: ret +define internal void @test1_scc0() { +entry: + call void @test1_scc1() + ret void +} + +; CHECK-NOT: @test1_scc1 +define internal void @test1_scc1() { +entry: + call void @test1_scc0() + ret void +} + +; CHECK-LABEL: define void @test1() +; CHECK: call void @test1_scc0() +define void @test1() { +entry: + call void @test1_scc0() noinline + ret void +} |