Skip to content

Commit be7ef32

Browse files
committed
[ValueTracking] Add test for issue 124275
1 parent e8e75e0 commit be7ef32

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

llvm/test/Analysis/ValueTracking/phi-known-bits.ll

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1112,3 +1112,36 @@ cleanup:
11121112
%retval.0 = phi i1 [ %cmp, %if.then ], [ %tobool, %if.end4 ]
11131113
ret i1 %retval.0
11141114
}
1115+
1116+
1117+
define i32 @issue_124275_wrong_br_direction(i32 noundef %inp) {
1118+
; CHECK-LABEL: @issue_124275_wrong_br_direction(
1119+
; CHECK-NEXT: entry:
1120+
; CHECK-NEXT: [[CMP_NE_NOT:%.*]] = icmp eq i32 [[INP:%.*]], 1
1121+
; CHECK-NEXT: br i1 [[CMP_NE_NOT]], label [[B1:%.*]], label [[B0:%.*]]
1122+
; CHECK: B0:
1123+
; CHECK-NEXT: br label [[B1]]
1124+
; CHECK: B1:
1125+
; CHECK-NEXT: br i1 true, label [[B0]], label [[END:%.*]]
1126+
; CHECK: end:
1127+
; CHECK-NEXT: ret i32 0
1128+
;
1129+
entry:
1130+
%xor_inp = xor i32 %inp, 1
1131+
%sub = sub i32 0, %xor_inp
1132+
%cmp_ne = icmp ne i32 %sub, 0
1133+
br i1 %cmp_ne, label %B0, label %B1
1134+
1135+
B0:
1136+
%phi_B0 = phi i32 [ %phi_B1, %B1 ], [ %sub, %entry ]
1137+
br label %B1
1138+
1139+
B1:
1140+
%phi_B1 = phi i32 [ %phi_B0, %B0 ], [ 0, %entry ]
1141+
%cmp_ne_B1 = icmp ne i32 %phi_B1, 0
1142+
%cmp_eq_B1 = xor i1 %cmp_ne_B1, true
1143+
br i1 %cmp_eq_B1, label %B0, label %end
1144+
1145+
end:
1146+
ret i32 0
1147+
}

0 commit comments

Comments
 (0)