1
+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
1
2
; RUN: opt < %s -S -passes="print<assumptions>,gvn-sink,loop-unroll" -unroll-count=3 | FileCheck %s
2
3
;
3
4
; This crashed because the cached assumption was replaced and the replacement
8
9
@g = external global i32
9
10
10
11
define void @main () {
12
+ ; CHECK-LABEL: @main(
13
+ ; CHECK-NEXT: bb:
14
+ ; CHECK-NEXT: br label [[BB4_I:%.*]]
15
+ ; CHECK: bb4.i:
16
+ ; CHECK-NEXT: [[I1_I:%.*]] = load volatile i32, i32* @g, align 4
17
+ ; CHECK-NEXT: [[I32_I:%.*]] = icmp eq i32 [[I1_I]], 0
18
+ ; CHECK-NEXT: call void @llvm.assume(i1 [[I32_I]])
19
+ ; CHECK-NEXT: [[I1_I_1:%.*]] = load volatile i32, i32* @g, align 4
20
+ ; CHECK-NEXT: [[I32_I_1:%.*]] = icmp eq i32 [[I1_I_1]], 0
21
+ ; CHECK-NEXT: call void @llvm.assume(i1 [[I32_I_1]])
22
+ ; CHECK-NEXT: [[I1_I_2:%.*]] = load volatile i32, i32* @g, align 4
23
+ ; CHECK-NEXT: [[I32_I_2:%.*]] = icmp eq i32 [[I1_I_2]], 0
24
+ ; CHECK-NEXT: call void @llvm.assume(i1 [[I32_I_2]])
25
+ ; CHECK-NEXT: br label [[BB4_I]], !llvm.loop [[LOOP0:![0-9]+]]
26
+ ; CHECK: func_1.exit:
27
+ ; CHECK-NEXT: unreachable
28
+ ;
11
29
bb:
12
30
%i1.i = load volatile i32 , i32* @g
13
31
%i32.i = icmp eq i32 %i1.i , 0
@@ -25,8 +43,3 @@ func_1.exit: ; No predecessors!
25
43
}
26
44
27
45
declare void @llvm.assume (i1 )
28
-
29
- ; CHECK: call void @llvm.assume(
30
- ; CHECK: call void @llvm.assume(
31
- ; CHECK: call void @llvm.assume(
32
-
0 commit comments