Skip to content

Commit d18a999

Browse files
committed
[SimplifyCFG] Add test with multiple eq cond in if chain (NFC)
1 parent 1b60236 commit d18a999

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

llvm/test/Transforms/SimplifyCFG/switch_create.ll

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1125,3 +1125,68 @@ F:
11251125
ret void
11261126
}
11271127

1128+
define void @extra_cond_is_eq_cmp(i8 %c, i32 %x) {
1129+
; CHECK-LABEL: @extra_cond_is_eq_cmp(
1130+
; CHECK-NEXT: entry:
1131+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[X:%.*]], 32
1132+
; CHECK-NEXT: [[CMP4:%.*]] = icmp eq i8 [[C:%.*]], 97
1133+
; CHECK-NEXT: [[OR_COND:%.*]] = or i1 [[CMP]], [[CMP4]]
1134+
; CHECK-NEXT: [[CMP9:%.*]] = icmp eq i8 [[C]], 99
1135+
; CHECK-NEXT: [[TMP0:%.*]] = or i1 [[OR_COND]], [[CMP9]]
1136+
; CHECK-NEXT: br i1 [[TMP0]], label [[IF_THEN:%.*]], label [[SWITCH_EARLY_TEST:%.*]]
1137+
; CHECK: common.ret:
1138+
; CHECK-NEXT: ret void
1139+
; CHECK: if.then:
1140+
; CHECK-NEXT: tail call void @foo1()
1141+
; CHECK-NEXT: br label [[SWITCH_EARLY_TEST]]
1142+
;
1143+
entry:
1144+
%cmp = icmp eq i32 %x, 32
1145+
%cmp4 = icmp eq i8 %c, 97
1146+
%or.cond = or i1 %cmp, %cmp4
1147+
%cmp9 = icmp eq i8 %c, 99
1148+
%or.cond11 = or i1 %or.cond, %cmp9
1149+
br i1 %or.cond11, label %if.then, label %if.end
1150+
1151+
if.then:
1152+
tail call void @foo1()
1153+
ret void
1154+
1155+
if.end:
1156+
ret void
1157+
1158+
}
1159+
1160+
define void @extra_cond_is_eq_cmp_c(i8 %c, i32 %x) {
1161+
; CHECK-LABEL: @extra_cond_is_eq_cmp_c(
1162+
; CHECK-NEXT: entry:
1163+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[X:%.*]], 32
1164+
; CHECK-NEXT: [[TMP0:%.*]] = freeze i1 [[CMP]]
1165+
; CHECK-NEXT: br i1 [[TMP0]], label [[IF_THEN:%.*]], label [[SWITCH_EARLY_TEST:%.*]]
1166+
; CHECK: switch.early.test:
1167+
; CHECK-NEXT: switch i8 [[C:%.*]], label [[COMMON_RET:%.*]] [
1168+
; CHECK-NEXT: i8 99, label [[IF_THEN]]
1169+
; CHECK-NEXT: i8 97, label [[IF_THEN]]
1170+
; CHECK-NEXT: ]
1171+
; CHECK: common.ret:
1172+
; CHECK-NEXT: ret void
1173+
; CHECK: if.then:
1174+
; CHECK-NEXT: tail call void @foo1()
1175+
; CHECK-NEXT: br label [[COMMON_RET]]
1176+
;
1177+
entry:
1178+
%cmp = icmp eq i32 %x, 32
1179+
%cmp4 = icmp eq i8 %c, 97
1180+
%or.cond = or i1 %cmp4, %cmp
1181+
%cmp9 = icmp eq i8 %c, 99
1182+
%or.cond11 = or i1 %or.cond, %cmp9
1183+
br i1 %or.cond11, label %if.then, label %if.end
1184+
1185+
if.then:
1186+
tail call void @foo1()
1187+
ret void
1188+
1189+
if.end:
1190+
ret void
1191+
1192+
}

0 commit comments

Comments
 (0)