xref: /llvm-project/llvm/test/Transforms/IROutliner/outlining-first-instruction.ll (revision 9dd9575c55c74810675d5de40f56b37dd38fe3c3)
10c4bbd29SAndrew Litteken; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --include-generated-funcs
2*9dd9575cSRoman Lebedev; RUN: opt -S -passes=verify,iroutliner -ir-outlining-no-cost < %s | FileCheck %s
30c4bbd29SAndrew Litteken
40c4bbd29SAndrew Litteken; Make sure that we outline from all three of these functions, and that
50c4bbd29SAndrew Litteken; the first instruction in the module is included when it is the only
60c4bbd29SAndrew Litteken; instruction in the first basic block.
70c4bbd29SAndrew Litteken
80c4bbd29SAndrew Littekendefine void @f1() {
90c4bbd29SAndrew Littekenbb:
100c4bbd29SAndrew Litteken  br label %bb1
110c4bbd29SAndrew Littekenbb1:
120c4bbd29SAndrew Litteken  br label %bb2
130c4bbd29SAndrew Littekenbb2:
140c4bbd29SAndrew Litteken  ret void
150c4bbd29SAndrew Litteken}
160c4bbd29SAndrew Litteken
170c4bbd29SAndrew Littekendefine void @f2() {
180c4bbd29SAndrew Littekenbb:
190c4bbd29SAndrew Litteken  br label %bb1
200c4bbd29SAndrew Littekenbb1:
210c4bbd29SAndrew Litteken  br label %bb2
220c4bbd29SAndrew Littekenbb2:
230c4bbd29SAndrew Litteken  ret void
240c4bbd29SAndrew Litteken}
250c4bbd29SAndrew Litteken
260c4bbd29SAndrew Littekendefine void @f3() {
270c4bbd29SAndrew Littekenbb:
280c4bbd29SAndrew Litteken  br label %bb1
290c4bbd29SAndrew Littekenbb1:
300c4bbd29SAndrew Litteken  br label %bb2
310c4bbd29SAndrew Littekenbb2:
320c4bbd29SAndrew Litteken  ret void
330c4bbd29SAndrew Litteken}
340c4bbd29SAndrew Litteken; CHECK-LABEL: @f1(
350c4bbd29SAndrew Litteken; CHECK-NEXT:  bb:
360c4bbd29SAndrew Litteken; CHECK-NEXT:    call void @outlined_ir_func_0()
370c4bbd29SAndrew Litteken; CHECK-NEXT:    br label [[BB2:%.*]]
380c4bbd29SAndrew Litteken; CHECK:       bb2:
390c4bbd29SAndrew Litteken; CHECK-NEXT:    ret void
400c4bbd29SAndrew Litteken;
410c4bbd29SAndrew Litteken;
420c4bbd29SAndrew Litteken; CHECK-LABEL: @f2(
430c4bbd29SAndrew Litteken; CHECK-NEXT:  bb:
440c4bbd29SAndrew Litteken; CHECK-NEXT:    call void @outlined_ir_func_0()
450c4bbd29SAndrew Litteken; CHECK-NEXT:    br label [[BB2:%.*]]
460c4bbd29SAndrew Litteken; CHECK:       bb2:
470c4bbd29SAndrew Litteken; CHECK-NEXT:    ret void
480c4bbd29SAndrew Litteken;
490c4bbd29SAndrew Litteken;
500c4bbd29SAndrew Litteken; CHECK-LABEL: @f3(
510c4bbd29SAndrew Litteken; CHECK-NEXT:  bb:
520c4bbd29SAndrew Litteken; CHECK-NEXT:    call void @outlined_ir_func_0()
530c4bbd29SAndrew Litteken; CHECK-NEXT:    br label [[BB2:%.*]]
540c4bbd29SAndrew Litteken; CHECK:       bb2:
550c4bbd29SAndrew Litteken; CHECK-NEXT:    ret void
560c4bbd29SAndrew Litteken;
570c4bbd29SAndrew Litteken;
580c4bbd29SAndrew Litteken; CHECK-LABEL: define internal void @outlined_ir_func_0(
590c4bbd29SAndrew Litteken; CHECK-NEXT:  newFuncRoot:
600c4bbd29SAndrew Litteken; CHECK-NEXT:    br label [[BB_TO_OUTLINE:%.*]]
610c4bbd29SAndrew Litteken; CHECK:       bb_to_outline:
620c4bbd29SAndrew Litteken; CHECK-NEXT:    br label [[BB1:%.*]]
630c4bbd29SAndrew Litteken; CHECK:       bb1:
640c4bbd29SAndrew Litteken; CHECK-NEXT:    br label [[BB2_EXITSTUB:%.*]]
650c4bbd29SAndrew Litteken; CHECK:       bb2.exitStub:
660c4bbd29SAndrew Litteken; CHECK-NEXT:    ret void
670c4bbd29SAndrew Litteken;
68