xref: /llvm-project/llvm/test/Other/no-rerun-function-simplification-pipeline.ll (revision 4d16ebd6c971b656228f4dfe2d834b01756a1cdf)
1; RUN: opt < %s -passes='default<O1>' -disable-output -debug-pass-manager=verbose 2>&1 | FileCheck %s
2; RUN: opt < %s -passes='default<O2>' -disable-output -debug-pass-manager=verbose 2>&1 | FileCheck %s
3
4; BDCE only runs once in the function simplification pipeline and nowhere else so we use that to check for reruns.
5
6; CHECK: PassManager{{.*}}SCC{{.*}} on (f1)
7; CHECK: Running pass: BDCEPass on f1
8; CHECK: PassManager{{.*}}SCC{{.*}} on (f2, f3)
9; CHECK: Running pass: BDCEPass on f2
10; CHECK-NOT: BDCEPass
11; CHECK: PassManager{{.*}}SCC{{.*}} on (f2)
12; CHECK-NOT: Running pass: BDCEPass on f2
13; CHECK: PassManager{{.*}}SCC{{.*}} on (f3)
14; CHECK: Running pass: BDCEPass on f3
15
16define void @f1(ptr %p) alwaysinline {
17  call void %p()
18  ret void
19}
20
21define void @f2() #0 {
22  call void @f1(ptr @f2)
23  call void @f3()
24  ret void
25}
26
27define void @f3() #0 {
28  call void @f2()
29  ret void
30}
31
32attributes #0 = { nofree noreturn nosync nounwind readnone noinline }
33