Skip to content

Commit f4f7eda

Browse files
committed
Test for future commit in NewGVN
1 parent 401296f commit f4f7eda

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
2+
; RUN: opt -passes=newgvn -S < %s | FileCheck %s
3+
4+
@c = global i32 0, align 4
5+
6+
; Function Attrs: nounwind optsize uwtable
7+
define dso_local i32 @main(i1 %cond, i32 %0, i32 %1) {
8+
; CHECK-LABEL: define dso_local i32 @main(
9+
; CHECK-SAME: i1 [[COND:%.*]], i32 [[TMP0:%.*]], i32 [[TMP1:%.*]]) {
10+
; CHECK-NEXT: entry:
11+
; CHECK-NEXT: br i1 [[COND]], label [[IF_THEN:%.*]], label [[IF_END6:%.*]]
12+
; CHECK: if.then:
13+
; CHECK-NEXT: [[XOR:%.*]] = xor i32 [[TMP0]], 1
14+
; CHECK-NEXT: [[TOBOOL1_NOT:%.*]] = icmp eq i32 [[TMP1]], 0
15+
; CHECK-NEXT: br i1 [[TOBOOL1_NOT]], label [[IF_END6]], label [[IF_THEN2:%.*]]
16+
; CHECK: if.then2:
17+
; CHECK-NEXT: [[TOBOOL3_NOT:%.*]] = icmp ne i32 [[XOR]], 0
18+
; CHECK-NEXT: tail call void @llvm.assume(i1 [[TOBOOL3_NOT]])
19+
; CHECK-NEXT: br label [[IF_END6]]
20+
; CHECK: if.end6:
21+
; CHECK-NEXT: [[F_0:%.*]] = phi i32 [ undef, [[ENTRY:%.*]] ], [ [[XOR]], [[IF_THEN]] ], [ [[XOR]], [[IF_THEN2]] ]
22+
; CHECK-NEXT: [[NOT:%.*]] = xor i32 [[F_0]], -1
23+
; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr @c, align 4
24+
; CHECK-NEXT: [[OR:%.*]] = or i32 [[TMP2]], [[NOT]]
25+
; CHECK-NEXT: [[TOBOOL7_NOT:%.*]] = icmp eq i32 [[OR]], 0
26+
; CHECK-NEXT: br i1 [[TOBOOL7_NOT]], label [[IF_END10:%.*]], label [[WHILE_COND_PREHEADER:%.*]]
27+
; CHECK: while.cond.preheader:
28+
; CHECK-NEXT: ret i32 1
29+
; CHECK: if.end10:
30+
; CHECK-NEXT: ret i32 0
31+
;
32+
entry:
33+
br i1 %cond, label %if.then, label %if.end6
34+
35+
if.then: ; preds = %entry
36+
%xor = xor i32 %0, 1
37+
%tobool1.not = icmp eq i32 %1, 0
38+
br i1 %tobool1.not, label %if.end6, label %if.then2
39+
40+
if.then2: ; preds = %if.then
41+
%tobool3.not = icmp ne i32 %xor, 0
42+
tail call void @llvm.assume(i1 %tobool3.not)
43+
br label %if.end6
44+
45+
if.end6: ; preds = %if.then2, %if.then, %entry
46+
%f.0 = phi i32 [ undef, %entry ], [ %xor, %if.then ], [ %xor, %if.then2 ]
47+
%not = xor i32 %f.0, -1
48+
%2 = load i32, ptr @c, align 4
49+
%or = or i32 %2, %not
50+
%tobool7.not = icmp eq i32 %or, 0
51+
%tobool9.not = icmp eq i32 %f.0, 0
52+
%or.cond = or i1 %tobool7.not, %tobool9.not
53+
br i1 %or.cond, label %if.end10, label %while.cond.preheader
54+
55+
while.cond.preheader: ; preds = %if.end6
56+
ret i32 1
57+
58+
if.end10: ; preds = %if.end6
59+
ret i32 0
60+
}
61+
62+
declare void @llvm.assume(i1 noundef)

0 commit comments

Comments
 (0)