xref: /llvm-project/llvm/test/Transforms/IROutliner/illegal-frozen.ll (revision f4b925ee7078f058602fd323e25f45f1ae91ca34)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -S -passes=verify,iroutliner -ir-outlining-no-cost < %s | FileCheck %s
3
4; Show that we do not extract freeze instructions, since extra handling is
5; required to mark any outputs used with freeze.
6
7define void @function1(ptr %a, ptr %b) {
8; CHECK-LABEL: @function1(
9; CHECK-NEXT:  entry:
10; CHECK-NEXT:    br label [[FIRST:%.*]]
11; CHECK:       first:
12; CHECK-NEXT:    [[C:%.*]] = freeze ptr [[A:%.*]]
13; CHECK-NEXT:    call void @outlined_ir_func_0(ptr [[C]], ptr [[B:%.*]])
14; CHECK-NEXT:    ret void
15; CHECK:       next:
16; CHECK-NEXT:    br label [[FIRST]]
17;
18entry:
19  br label %first
20first:
21  %c = freeze ptr %a
22  store i32 2, ptr %c, align 4
23  store i32 3, ptr %b, align 4
24  ret void
25next:
26  br label %first
27}
28
29define void @function2(ptr %a, ptr %b) {
30; CHECK-LABEL: @function2(
31; CHECK-NEXT:  entry:
32; CHECK-NEXT:    br label [[FIRST:%.*]]
33; CHECK:       first:
34; CHECK-NEXT:    [[C:%.*]] = freeze ptr [[A:%.*]]
35; CHECK-NEXT:    call void @outlined_ir_func_0(ptr [[C]], ptr [[B:%.*]])
36; CHECK-NEXT:    ret void
37; CHECK:       next:
38; CHECK-NEXT:    br label [[FIRST]]
39;
40entry:
41  br label %first
42first:
43  %c = freeze ptr %a
44  store i32 2, ptr %c, align 4
45  store i32 3, ptr %b, align 4
46  ret void
47next:
48  br label %first
49}
50