@@ -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