xref: /llvm-project/llvm/test/Transforms/IROutliner/outlining-basic-branches.ll (revision 9dd9575c55c74810675d5de40f56b37dd38fe3c3)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --include-generated-funcs
2; RUN: opt -S -passes=verify,iroutliner -ir-outlining-no-cost < %s | FileCheck %s
3
4; This checks that we are able to outline exactly the same structure without
5; any other items to outline.
6
7define void @outline_outputs1() #0 {
8entry:
9  br label %next
10next:
11  br label %next2
12next2:
13  br label %next3
14next3:
15  %a = alloca i32, align 4
16  br label %next4
17next4:
18  br label %next5
19next5:
20  br label %next6
21next6:
22  %b = alloca i32, align 4
23  ret void
24}
25
26; CHECK-LABEL: @outline_outputs1(
27; CHECK-NEXT:  entry:
28; CHECK-NEXT:    call void @outlined_ir_func_0()
29; CHECK-NEXT:    br label [[NEXT3:%.*]]
30; CHECK:       next3:
31; CHECK-NEXT:    [[A:%.*]] = alloca i32, align 4
32; CHECK-NEXT:    call void @outlined_ir_func_0()
33; CHECK-NEXT:    br label [[NEXT6:%.*]]
34; CHECK:       next6:
35; CHECK-NEXT:    [[B:%.*]] = alloca i32, align 4
36; CHECK-NEXT:    ret void
37;
38;
39; CHECK: define internal void @outlined_ir_func_0(
40; CHECK-NEXT:  newFuncRoot:
41; CHECK-NEXT:    br label [[ENTRY_TO_OUTLINE:%.*]]
42; CHECK:       entry_to_outline:
43; CHECK-NEXT:    br label [[NEXT:%.*]]
44; CHECK:       next:
45; CHECK-NEXT:    br label [[NEXT2:%.*]]
46; CHECK:       next2:
47; CHECK-NEXT:    br label [[NEXT3_EXITSTUB:%.*]]
48; CHECK:       next3.exitStub:
49; CHECK-NEXT:    ret void
50;
51