xref: /llvm-project/llvm/test/CodeGen/X86/tail-threshold.ll (revision 0aef747b846586c29ed3285bbed20a3d607576fa)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=x86_64-pc-linux-gnu -tail-merge-threshold 2 < %s | FileCheck %s
3
4; Test that we still do some merging if a block has more than
5; tail-merge-threshold predecessors.
6
7declare void @bar()
8
9define void @foo(i32 %xxx) nounwind {
10; CHECK-LABEL: foo:
11; CHECK:       # %bb.0:
12; CHECK-NEXT:    pushq %rax
13; CHECK-NEXT:    cmpl $3, %edi
14; CHECK-NEXT:    ja .LBB0_4
15; CHECK-NEXT:  # %bb.1:
16; CHECK-NEXT:    movl %edi, %eax
17; CHECK-NEXT:    jmpq *.LJTI0_0(,%rax,8)
18; CHECK-NEXT:  .LBB0_3: # %bb3
19; CHECK-NEXT:    callq bar@PLT
20; CHECK-NEXT:    popq %rax
21; CHECK-NEXT:    retq
22; CHECK-NEXT:  .LBB0_4: # %bb4
23; CHECK-NEXT:    callq bar@PLT
24; CHECK-NEXT:    popq %rax
25; CHECK-NEXT:    retq
26  switch i32 %xxx, label %bb4 [
27    i32 0, label %bb0
28    i32 1, label %bb1
29    i32 2, label %bb2
30    i32 3, label %bb3
31  ]
32
33bb0:
34  call void @bar()
35  br label %bb5
36
37bb1:
38 call void @bar()
39 br label %bb5
40
41bb2:
42  call void @bar()
43  br label %bb5
44
45bb3:
46  call void @bar()
47  br label %bb5
48
49bb4:
50  call void @bar()
51  br label %bb5
52
53bb5:
54  ret void
55}
56