Skip to content

Commit 27ef9ed

Browse files
committed
Disable selfLookup
1 parent 69fecaa commit 27ef9ed

File tree

5 files changed

+120
-4
lines changed

5 files changed

+120
-4
lines changed

llvm/lib/Transforms/Scalar/NewGVN.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1037,7 +1037,7 @@ PHIExpression *NewGVN::createPHIExpression(ArrayRef<ValPair> PHIOperands,
10371037
return false;
10381038
OriginalOpsConstant = OriginalOpsConstant && isa<Constant>(P.first);
10391039
HasBackedge = HasBackedge || isBackedge(BB, PHIBlock);
1040-
return lookupOperandLeader(P.first) != I;
1040+
return true;
10411041
});
10421042
std::transform(Filtered.begin(), Filtered.end(), op_inserter(E),
10431043
[&](const ValPair &P) -> Value * {

llvm/test/Transforms/NewGVN/pr31613.ll

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,18 @@ define void @foo() {
1313
; CHECK-NEXT: [[TMP:%.*]] = phi i32 [ 0, [[BB:%.*]] ], [ 1, [[BB18:%.*]] ]
1414
; CHECK-NEXT: br label [[BB2:%.*]]
1515
; CHECK: bb2:
16+
; CHECK-NEXT: [[TMP3:%.*]] = phi i32 [ [[TMP]], [[BB1]] ], [ [[TMP8:%.*]], [[BB9:%.*]] ]
1617
; CHECK-NEXT: br label [[BB4:%.*]]
1718
; CHECK: bb4:
19+
; CHECK-NEXT: [[TMP5:%.*]] = phi i32 [ [[TMP3]], [[BB2]] ], [ [[TMP8]], [[BB14:%.*]] ]
1820
; CHECK-NEXT: br i1 undef, label [[BB18]], label [[BB7:%.*]]
1921
; CHECK: bb7:
20-
; CHECK-NEXT: br label [[BB9:%.*]]
22+
; CHECK-NEXT: [[TMP8]] = phi i32 [ [[TMP8]], [[BB16:%.*]] ], [ [[TMP5]], [[BB4]] ]
23+
; CHECK-NEXT: br label [[BB9]]
2124
; CHECK: bb9:
2225
; CHECK-NEXT: br i1 undef, label [[BB2]], label [[BB11:%.*]]
2326
; CHECK: bb11:
24-
; CHECK-NEXT: br i1 undef, label [[BB16:%.*]], label [[BB14:%.*]]
27+
; CHECK-NEXT: br i1 undef, label [[BB16]], label [[BB14]]
2528
; CHECK: bb14:
2629
; CHECK-NEXT: br label [[BB4]]
2730
; CHECK: bb16:

llvm/test/Transforms/NewGVN/pr32403.ll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ define void @reorder_ref_pic_list() local_unnamed_addr {
1717
; CHECK-NEXT: [[INC_I:%.*]] = add nsw i32 [[REFIDXLX_0]], 1
1818
; CHECK-NEXT: br label [[FOR_BODY8_I:%.*]]
1919
; CHECK: for.body8.i:
20-
; CHECK-NEXT: br i1 undef, label [[FOR_INC24_I:%.*]], label [[IF_THEN17_I:%.*]]
20+
; CHECK-NEXT: [[NIDX_052_I:%.*]] = phi i32 [ [[INC_I]], [[IF_THEN13]] ], [ [[NIDX_052_I]], [[FOR_INC24_I:%.*]] ]
21+
; CHECK-NEXT: br i1 undef, label [[FOR_INC24_I]], label [[IF_THEN17_I:%.*]]
2122
; CHECK: if.then17.i:
2223
; CHECK-NEXT: br label [[FOR_INC24_I]]
2324
; CHECK: for.inc24.i:
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
2+
; RUN: opt -S < %s -passes=newgvn | FileCheck %s
3+
4+
define void @hoge(i1 %c1, i1 %c2, i1 %c3, i1 %c4) {
5+
; CHECK-LABEL: define void @hoge(
6+
; CHECK-SAME: i1 [[C1:%.*]], i1 [[C2:%.*]], i1 [[C3:%.*]], i1 [[C4:%.*]]) {
7+
; CHECK-NEXT: bb:
8+
; CHECK-NEXT: br label [[BB1:%.*]]
9+
; CHECK: bb1:
10+
; CHECK-NEXT: [[TMP:%.*]] = phi i8 [ [[TMP3:%.*]], [[BB12:%.*]] ], [ 0, [[BB:%.*]] ]
11+
; CHECK-NEXT: br i1 [[C1]], label [[BB2:%.*]], label [[BB13:%.*]]
12+
; CHECK: bb2:
13+
; CHECK-NEXT: [[TMP3]] = phi i8 [ [[TMP]], [[BB1]] ], [ [[TMP5:%.*]], [[BB4:%.*]] ]
14+
; CHECK-NEXT: br i1 [[C2]], label [[BB12]], label [[BB4]]
15+
; CHECK: bb4:
16+
; CHECK-NEXT: [[TMP5]] = phi i8 [ [[TMP3]], [[BB2]] ], [ [[TMP7:%.*]], [[BB11:%.*]] ]
17+
; CHECK-NEXT: br i1 false, label [[BB6:%.*]], label [[BB2]]
18+
; CHECK: bb6:
19+
; CHECK-NEXT: [[TMP7]] = phi i8 [ poison, [[BB4]] ], [ [[TMP10:%.*]], [[BB9:%.*]] ]
20+
; CHECK-NEXT: br i1 [[C3]], label [[BB11]], label [[BB8:%.*]]
21+
; CHECK: bb8:
22+
; CHECK-NEXT: br i1 true, label [[BB8]], label [[BB9]]
23+
; CHECK: bb9:
24+
; CHECK-NEXT: [[TMP10]] = phi i8 [ [[TMP16:%.*]], [[BB15:%.*]] ], [ poison, [[BB8]] ]
25+
; CHECK-NEXT: br label [[BB6]]
26+
; CHECK: bb11:
27+
; CHECK-NEXT: br label [[BB4]]
28+
; CHECK: bb12:
29+
; CHECK-NEXT: br label [[BB1]]
30+
; CHECK: bb13:
31+
; CHECK-NEXT: br i1 [[C4]], label [[BB14:%.*]], label [[BB15]]
32+
; CHECK: bb14:
33+
; CHECK-NEXT: br label [[BB15]]
34+
; CHECK: bb15:
35+
; CHECK-NEXT: [[TMP16]] = phi i8 [ [[TMP]], [[BB13]] ], [ 9, [[BB14]] ]
36+
; CHECK-NEXT: br label [[BB9]]
37+
;
38+
bb:
39+
br label %bb1
40+
41+
bb1: ; preds = %bb12, %bb
42+
%tmp = phi i8 [ %tmp3, %bb12 ], [ 0, %bb ]
43+
br i1 %c1, label %bb2, label %bb13
44+
45+
bb2: ; preds = %bb4, %bb1
46+
%tmp3 = phi i8 [ %tmp, %bb1 ], [ %tmp5, %bb4 ]
47+
br i1 %c2, label %bb12, label %bb4
48+
49+
bb4: ; preds = %bb11, %bb2
50+
%tmp5 = phi i8 [ %tmp3, %bb2 ], [ %tmp7, %bb11 ]
51+
br i1 false, label %bb6, label %bb2
52+
53+
bb6: ; preds = %bb9, %bb4
54+
%tmp7 = phi i8 [ %tmp5, %bb4 ], [ %tmp10, %bb9 ]
55+
br i1 %c3, label %bb11, label %bb8
56+
57+
bb8: ; preds = %bb8, %bb6
58+
br i1 true, label %bb8, label %bb9
59+
60+
bb9: ; preds = %bb15, %bb8
61+
%tmp10 = phi i8 [ %tmp16, %bb15 ], [ %tmp7, %bb8 ]
62+
br label %bb6
63+
64+
bb11: ; preds = %bb6
65+
br label %bb4
66+
67+
bb12: ; preds = %bb2
68+
br label %bb1
69+
70+
bb13: ; preds = %bb1
71+
br i1 %c4, label %bb14, label %bb15
72+
73+
bb14: ; preds = %bb13
74+
br label %bb15
75+
76+
bb15: ; preds = %bb14, %bb13
77+
%tmp16 = phi i8 [ %tmp, %bb13 ], [ 9, %bb14 ]
78+
br label %bb9
79+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
2+
; RUN: opt -S < %s -passes=newgvn | FileCheck %s
3+
define i32 @function_1(i1 %arg, i1 %bc ) {
4+
; CHECK-LABEL: define i32 @function_1(
5+
; CHECK-SAME: i1 [[ARG:%.*]], i1 [[BC:%.*]]) {
6+
; CHECK-NEXT: entry_1:
7+
; CHECK-NEXT: br i1 [[BC]], label [[BB_5:%.*]], label [[BB_6:%.*]]
8+
; CHECK: bb_5:
9+
; CHECK-NEXT: br label [[BB_6]]
10+
; CHECK: bb_6:
11+
; CHECK-NEXT: [[A:%.*]] = phi i1 [ [[ARG]], [[BB_5]] ], [ [[A]], [[BB_4:%.*]] ], [ true, [[ENTRY_1:%.*]] ]
12+
; CHECK-NEXT: [[C:%.*]] = phi i1 [ [[ARG]], [[BB_5]] ], [ [[C]], [[BB_4]] ], [ true, [[ENTRY_1]] ]
13+
; CHECK-NEXT: br label [[BB_4]]
14+
; CHECK: bb_4:
15+
; CHECK-NEXT: br i1 [[ARG]], label [[BB_6]], label [[BB_4]]
16+
;
17+
entry_1:
18+
br i1 %bc, label %bb_5, label %bb_6
19+
20+
bb_5:
21+
br label %bb_6
22+
23+
bb_6:
24+
%a = phi i1 [ %arg, %bb_5 ], [ %a.1, %bb_4 ], [ 1, %entry_1 ]
25+
%c = phi i1 [ %arg, %bb_5 ], [ %c.1, %bb_4 ], [ 1, %entry_1 ]
26+
br label %bb_4
27+
28+
29+
bb_4:
30+
%a.1 = phi i1 [ %a.1, %bb_4 ], [ %a, %bb_6 ]
31+
%c.1 = phi i1 [ %c.1, %bb_4 ], [ %c, %bb_6 ]
32+
br i1 %arg, label %bb_6, label %bb_4
33+
}

0 commit comments

Comments
 (0)