-
Notifications
You must be signed in to change notification settings - Fork 10.8k
/
freeze-icmp.ll
75 lines (70 loc) · 1.65 KB
/
freeze-icmp.ll
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -codegenprepare < %s | FileCheck %s
target triple = "x86_64-unknown-linux-gnu"
define void @f1(i32 %a) {
; CHECK-LABEL: @f1(
; CHECK-NEXT: [[FR1:%.*]] = freeze i32 [[A:%.*]]
; CHECK-NEXT: [[C:%.*]] = icmp eq i32 [[FR1]], 0
; CHECK-NEXT: br i1 [[C]], label [[A:%.*]], label [[B:%.*]]
; CHECK: A:
; CHECK-NEXT: call void @g1()
; CHECK-NEXT: ret void
; CHECK: B:
; CHECK-NEXT: call void @g2()
; CHECK-NEXT: ret void
;
%c = icmp eq i32 %a, 0
%fr = freeze i1 %c
br i1 %fr, label %A, label %B
A:
call void @g1()
ret void
B:
call void @g2()
ret void
}
define void @f2(i32 %a) {
; CHECK-LABEL: @f2(
; CHECK-NEXT: [[FR1:%.*]] = freeze i32 [[A:%.*]]
; CHECK-NEXT: [[C:%.*]] = icmp eq i32 0, [[FR1]]
; CHECK-NEXT: br i1 [[C]], label [[A:%.*]], label [[B:%.*]]
; CHECK: A:
; CHECK-NEXT: call void @g1()
; CHECK-NEXT: ret void
; CHECK: B:
; CHECK-NEXT: call void @g2()
; CHECK-NEXT: ret void
;
%c = icmp eq i32 0, %a
%fr = freeze i1 %c
br i1 %fr, label %A, label %B
A:
call void @g1()
ret void
B:
call void @g2()
ret void
}
define void @f3(i32 %a) {
; CHECK-LABEL: @f3(
; CHECK-NEXT: [[C:%.*]] = icmp eq i32 0, 1
; CHECK-NEXT: br i1 [[C]], label [[A:%.*]], label [[B:%.*]]
; CHECK: A:
; CHECK-NEXT: call void @g1()
; CHECK-NEXT: ret void
; CHECK: B:
; CHECK-NEXT: call void @g2()
; CHECK-NEXT: ret void
;
%c = icmp eq i32 0, 1
%fr = freeze i1 %c
br i1 %fr, label %A, label %B
A:
call void @g1()
ret void
B:
call void @g2()
ret void
}
declare void @g1()
declare void @g2()