diff --git a/bench/abc/optimized/cecSat.c.ll b/bench/abc/optimized/cecSat.c.ll index 7fb7ea07131..0755c00bd12 100644 --- a/bench/abc/optimized/cecSat.c.ll +++ b/bench/abc/optimized/cecSat.c.ll @@ -2170,7 +2170,7 @@ Cec2_ObjSimEqual.exit71: ; preds = %.lr.ph.i58, %.lr.ph %71 = or disjoint i32 %70, %39 store i32 %71, ptr %68, align 4 %.val51 = load ptr, ptr %3, align 8 - %72 = sext i32 %.03698 to i64 + %72 = zext nneg i32 %.03698 to i64 %73 = getelementptr inbounds i32, ptr %.val51, i64 %72 store i32 %.03999, ptr %73, align 4 br label %74 @@ -2183,19 +2183,22 @@ Cec2_ObjSimEqual.exit71: ; preds = %.lr.ph.i58, %.lr.ph %75 = getelementptr inbounds i32, ptr %.val47, i64 %.pre-phi %.039 = load i32, ptr %75, align 4 %76 = icmp sgt i32 %.039, 0 - br i1 %76, label %40, label %._crit_edge, !llvm.loop !32 + br i1 %76, label %40, label %._crit_edge.loopexit, !llvm.loop !32 -._crit_edge: ; preds = %74, %Cec2_ObjSimEqual.exit - %.val52 = phi ptr [ %.val46, %Cec2_ObjSimEqual.exit ], [ %.val47, %74 ] - %.138.lcssa = phi i32 [ %.03791.us, %Cec2_ObjSimEqual.exit ], [ %.2, %74 ] - %.036.lcssa = phi i32 [ %.092.us, %Cec2_ObjSimEqual.exit ], [ %.1, %74 ] +._crit_edge.loopexit: ; preds = %74 + %.pre115 = zext nneg i32 %.1 to i64 + br label %._crit_edge + +._crit_edge: ; preds = %._crit_edge.loopexit, %Cec2_ObjSimEqual.exit + %.pre-phi116 = phi i64 [ %.pre115, %._crit_edge.loopexit ], [ %33, %Cec2_ObjSimEqual.exit ] + %.val52 = phi ptr [ %.val47, %._crit_edge.loopexit ], [ %.val46, %Cec2_ObjSimEqual.exit ] + %.138.lcssa = phi i32 [ %.2, %._crit_edge.loopexit ], [ %.03791.us, %Cec2_ObjSimEqual.exit ] %77 = sext i32 %.138.lcssa to i64 %78 = getelementptr inbounds i32, ptr %.val52, i64 %77 store i32 -1, ptr %78, align 4 %.val53 = load ptr, ptr %3, align 8 - %79 = sext i32 %.036.lcssa to i64 - %80 = getelementptr inbounds i32, ptr %.val53, i64 %79 - store i32 -1, ptr %80, align 4 + %79 = getelementptr inbounds i32, ptr %.val53, i64 %.pre-phi116 + store i32 -1, ptr %79, align 4 br label %Cec2_ObjSimEqual.exit.thread74 Cec2_ObjSimEqual.exit.thread74: ; preds = %.loopexit79.us, %.lr.ph, %2, %._crit_edge diff --git a/bench/abc/optimized/cecSatG3.c.ll b/bench/abc/optimized/cecSatG3.c.ll index 56b71323026..8bc4f0fd406 100644 --- a/bench/abc/optimized/cecSatG3.c.ll +++ b/bench/abc/optimized/cecSatG3.c.ll @@ -2996,7 +2996,7 @@ Cec5_ObjSimEqual.exit76: ; preds = %.lr.ph.i63, %.lr.ph %71 = or disjoint i32 %70, %39 store i32 %71, ptr %68, align 4 %.val56 = load ptr, ptr %3, align 8 - %72 = sext i32 %.040125 to i64 + %72 = zext nneg i32 %.040125 to i64 %73 = getelementptr inbounds i32, ptr %.val56, i64 %72 store i32 %.043126, ptr %73, align 4 br label %74 @@ -3009,24 +3009,27 @@ Cec5_ObjSimEqual.exit76: ; preds = %.lr.ph.i63, %.lr.ph %75 = getelementptr inbounds i32, ptr %.val47, i64 %.pre-phi %.043 = load i32, ptr %75, align 4 %76 = icmp sgt i32 %.043, 0 - br i1 %76, label %40, label %._crit_edge, !llvm.loop !22 + br i1 %76, label %40, label %._crit_edge.loopexit, !llvm.loop !22 -._crit_edge: ; preds = %74, %Cec5_ObjSimEqual.exit - %.val57 = phi ptr [ %.val46, %Cec5_ObjSimEqual.exit ], [ %.val47, %74 ] - %.142.lcssa = phi i32 [ %.04198.us, %Cec5_ObjSimEqual.exit ], [ %.2, %74 ] - %.040.lcssa = phi i32 [ %.099.us, %Cec5_ObjSimEqual.exit ], [ %.1, %74 ] +._crit_edge.loopexit: ; preds = %74 + %.pre148 = zext nneg i32 %.1 to i64 + br label %._crit_edge + +._crit_edge: ; preds = %._crit_edge.loopexit, %Cec5_ObjSimEqual.exit + %.pre-phi149 = phi i64 [ %.pre148, %._crit_edge.loopexit ], [ %33, %Cec5_ObjSimEqual.exit ] + %.val57 = phi ptr [ %.val47, %._crit_edge.loopexit ], [ %.val46, %Cec5_ObjSimEqual.exit ] + %.142.lcssa = phi i32 [ %.2, %._crit_edge.loopexit ], [ %.04198.us, %Cec5_ObjSimEqual.exit ] %77 = sext i32 %.142.lcssa to i64 %78 = getelementptr inbounds i32, ptr %.val57, i64 %77 store i32 -1, ptr %78, align 4 %.val58 = load ptr, ptr %3, align 8 - %79 = sext i32 %.040.lcssa to i64 - %80 = getelementptr inbounds i32, ptr %.val58, i64 %79 - store i32 -1, ptr %80, align 4 + %79 = getelementptr inbounds i32, ptr %.val58, i64 %.pre-phi149 + store i32 -1, ptr %79, align 4 %.val48 = load ptr, ptr %3, align 8 - %81 = getelementptr inbounds i32, ptr %.val48, i64 %33 - %82 = load i32, ptr %81, align 4 - %83 = icmp sgt i32 %82, 0 - br i1 %83, label %tailrecurse, label %Cec5_ObjSimEqual.exit.thread79 + %80 = getelementptr inbounds i32, ptr %.val48, i64 %33 + %81 = load i32, ptr %80, align 4 + %82 = icmp sgt i32 %81, 0 + br i1 %82, label %tailrecurse, label %Cec5_ObjSimEqual.exit.thread79 Cec5_ObjSimEqual.exit.thread79: ; preds = %._crit_edge, %tailrecurse, %.lr.ph, %.loopexit85.us ret void diff --git a/bench/abc/optimized/giaResub2.c.ll b/bench/abc/optimized/giaResub2.c.ll index fdfbb7b441e..9e9a12be7ea 100644 --- a/bench/abc/optimized/giaResub2.c.ll +++ b/bench/abc/optimized/giaResub2.c.ll @@ -9292,10 +9292,10 @@ common.ret24: ; preds = %9, %4, %11 ; Function Attrs: nofree nounwind uwtable define range(i32 0, 2) i32 @Gia_ManVerifyTwoTruths(ptr noundef %0, ptr noundef %1) local_unnamed_addr #5 { %3 = getelementptr i8, ptr %0, i64 72 - %.val2633 = load ptr, ptr %3, align 8 - %4 = getelementptr i8, ptr %.val2633, i64 4 - %.val26.val34 = load i32, ptr %4, align 4 - %5 = icmp sgt i32 %.val26.val34, 0 + %.val2532 = load ptr, ptr %3, align 8 + %4 = getelementptr i8, ptr %.val2532, i64 4 + %.val25.val33 = load i32, ptr %4, align 4 + %5 = icmp sgt i32 %.val25.val33, 0 br i1 %5, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %2 @@ -9305,25 +9305,25 @@ define range(i32 0, 2) i32 @Gia_ManVerifyTwoTruths(ptr noundef %0, ptr noundef % br label %9 9: ; preds = %.lr.ph, %35 - %.val2640 = phi ptr [ %.val2633, %.lr.ph ], [ %.val26, %35 ] + %.val2539 = phi ptr [ %.val2532, %.lr.ph ], [ %.val25, %35 ] %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %35 ] - %.val26.val38 = phi i32 [ %.val26.val34, %.lr.ph ], [ %.val26.val, %35 ] - %.02135 = phi i32 [ 0, %.lr.ph ], [ %.1, %35 ] - %.val28 = load ptr, ptr %6, align 8 - %10 = getelementptr i8, ptr %.val2640, i64 8 - %.val29.val = load ptr, ptr %10, align 8 - %11 = getelementptr inbounds i32, ptr %.val29.val, i64 %indvars.iv + %.val25.val37 = phi i32 [ %.val25.val33, %.lr.ph ], [ %.val25.val, %35 ] + %.02134 = phi i32 [ 0, %.lr.ph ], [ %.1, %35 ] + %.val27 = load ptr, ptr %6, align 8 + %10 = getelementptr i8, ptr %.val2539, i64 8 + %.val28.val = load ptr, ptr %10, align 8 + %11 = getelementptr inbounds i32, ptr %.val28.val, i64 %indvars.iv %12 = load i32, ptr %11, align 4 %13 = sext i32 %12 to i64 - %14 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val28, i64 %13 - %.val30 = load ptr, ptr %7, align 8 - %.val31 = load ptr, ptr %8, align 8 - %15 = getelementptr i8, ptr %.val31, i64 8 - %.val31.val = load ptr, ptr %15, align 8 - %16 = getelementptr inbounds i32, ptr %.val31.val, i64 %indvars.iv + %14 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val27, i64 %13 + %.val29 = load ptr, ptr %7, align 8 + %.val30 = load ptr, ptr %8, align 8 + %15 = getelementptr i8, ptr %.val30, i64 8 + %.val30.val = load ptr, ptr %15, align 8 + %16 = getelementptr inbounds i32, ptr %.val30.val, i64 %indvars.iv %17 = load i32, ptr %16, align 4 %18 = sext i32 %17 to i64 - %19 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val30, i64 %18 + %19 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val29, i64 %18 %20 = load i64, ptr %14, align 4 %21 = and i64 %20, 536870911 %22 = sub nsw i64 0, %21 @@ -9338,34 +9338,33 @@ define range(i32 0, 2) i32 @Gia_ManVerifyTwoTruths(ptr noundef %0, ptr noundef % %sext = ashr i64 %30, 63 %spec.select = xor i64 %sext, %24 %31 = shl i64 %25, 34 - %sext32 = ashr i64 %31, 63 - %.0 = xor i64 %sext32, %29 - %.not24 = icmp eq i64 %spec.select, %.0 - br i1 %.not24, label %35, label %32 + %sext31 = ashr i64 %31, 63 + %.0 = xor i64 %sext31, %29 + %.not23 = icmp eq i64 %spec.select, %.0 + br i1 %.not23, label %35, label %32 32: ; preds = %9 %33 = trunc nuw nsw i64 %indvars.iv to i32 - %34 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4, i32 noundef %33, i32 noundef %.val26.val38) - %.val26.pre = load ptr, ptr %3, align 8 + %34 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4, i32 noundef %33, i32 noundef %.val25.val37) + %.val25.pre = load ptr, ptr %3, align 8 br label %35 35: ; preds = %9, %32 - %.val26 = phi ptr [ %.val26.pre, %32 ], [ %.val2640, %9 ] - %.1 = phi i32 [ 1, %32 ], [ %.02135, %9 ] + %.val25 = phi ptr [ %.val25.pre, %32 ], [ %.val2539, %9 ] + %.1 = phi i32 [ 1, %32 ], [ %.02134, %9 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %36 = getelementptr i8, ptr %.val26, i64 4 - %.val26.val = load i32, ptr %36, align 4 - %37 = sext i32 %.val26.val to i64 + %36 = getelementptr i8, ptr %.val25, i64 4 + %.val25.val = load i32, ptr %36, align 4 + %37 = sext i32 %.val25.val to i64 %38 = icmp slt i64 %indvars.iv.next, %37 br i1 %38, label %9, label %._crit_edge.loopexit, !llvm.loop !91 ._crit_edge.loopexit: ; preds = %35 - %39 = icmp eq i32 %.1, 0 - %40 = zext i1 %39 to i32 + %39 = xor i32 %.1, 1 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %2 - %.021.lcssa = phi i32 [ 1, %2 ], [ %40, %._crit_edge.loopexit ] + %.021.lcssa = phi i32 [ 1, %2 ], [ %39, %._crit_edge.loopexit ] ret i32 %.021.lcssa } diff --git a/bench/abc/optimized/giaStr.c.ll b/bench/abc/optimized/giaStr.c.ll index 681e1605e3a..a859bfac036 100644 --- a/bench/abc/optimized/giaStr.c.ll +++ b/bench/abc/optimized/giaStr.c.ll @@ -5588,10 +5588,10 @@ Str_CountBits.exit: ; preds = %186, %191, %195, %1 Str_CountBits.exit312: ; preds = %207, %212, %216, %220 %.0.i311 = phi i32 [ %222, %220 ], [ 0, %207 ], [ 1, %212 ], [ 2, %216 ] - %223 = icmp ult i32 %.0232374, %.0.i311 + %223 = icmp samesign ult i32 %.0232374, %.0.i311 %224 = trunc nuw nsw i64 %indvars.iv409 to i32 %spec.select = select i1 %223, i32 %224, i32 %.0246373 - %spec.select276 = tail call i32 @llvm.smax.i32(i32 %.0232374, i32 %.0.i311) + %spec.select276 = tail call i32 @llvm.umax.i32(i32 %.0232374, i32 %.0.i311) %indvars.iv.next410 = add nuw nsw i64 %indvars.iv409, 1 %exitcond413.not = icmp eq i64 %indvars.iv.next410, %wide.trip.count412 br i1 %exitcond413.not, label %._crit_edge376, label %204, !llvm.loop !50 @@ -9089,6 +9089,9 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #26 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.scmp.i32.i32(i32, i32) #24 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umax.i32(i32, i32) #24 + attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/abseil-cpp/optimized/charconv_bigint.cc.ll b/bench/abseil-cpp/optimized/charconv_bigint.cc.ll index c6e151f0999..dafc76c9174 100644 --- a/bench/abseil-cpp/optimized/charconv_bigint.cc.ll +++ b/bench/abseil-cpp/optimized/charconv_bigint.cc.ll @@ -495,9 +495,8 @@ for.body: ; preds = %for.body.lr.ph, %fo br i1 %cmp39, label %for.inc, label %if.end41 if.end41: ; preds = %for.body - %22 = and i8 %after_decimal_point.0203, 1 - %23 = zext nneg i8 %22 to i32 - %spec.select46 = sub nsw i32 %exponent_adjust.0204, %23 + %22 = zext nneg i8 %after_decimal_point.0203 to i32 + %spec.select46 = sub nsw i32 %exponent_adjust.0204, %22 %sub = add i8 %21, -48 %dec47 = add nsw i32 %significant_digits.addr.0202, -1 %cmp48 = icmp ne i32 %dec47, 0 @@ -537,8 +536,8 @@ for.body.i: ; preds = %for.body.i, %for.bo %indvars.iv.i = phi i64 [ 0, %for.body.lr.ph.i ], [ %indvars.iv.next.i, %for.body.i ] %window.012.i = phi i64 [ 0, %for.body.lr.ph.i ], [ %shr.i, %for.body.i ] %arrayidx.i = getelementptr inbounds [4 x i32], ptr %words_.i53, i64 0, i64 %indvars.iv.i - %24 = load i32, ptr %arrayidx.i, align 4 - %conv8.i = zext i32 %24 to i64 + %23 = load i32, ptr %arrayidx.i, align 4 + %conv8.i = zext i32 %23 to i64 %mul.i = mul nuw nsw i64 %conv8.i, 1000000000 %add.i = add nuw nsw i64 %mul.i, %window.012.i %conv9.i = trunc i64 %add.i to i32 @@ -572,25 +571,25 @@ while.body.i: ; preds = %_ZN4absl16strings_i %index.addr.012.i = phi i32 [ %index.addr.1.i, %while.body.i ], [ 0, %_ZN4absl16strings_internal11BigUnsignedILi4EE10MultiplyByEj.exit ] %idxprom.i = zext nneg i32 %index.addr.012.i to i64 %arrayidx.i56 = getelementptr inbounds [4 x i32], ptr %words_.i53, i64 0, i64 %idxprom.i - %25 = load i32, ptr %arrayidx.i56, align 4 - %add.i57 = add i32 %25, %value.addr.013.i + %24 = load i32, ptr %arrayidx.i56, align 4 + %add.i57 = add i32 %24, %value.addr.013.i store i32 %add.i57, ptr %arrayidx.i56, align 4 %cmp6.i = icmp ugt i32 %value.addr.013.i, %add.i57 %inc.i = zext i1 %cmp6.i to i32 %index.addr.1.i = add nuw nsw i32 %index.addr.012.i, %inc.i %cmp.i58 = icmp samesign ult i32 %index.addr.1.i, 4 - %26 = and i1 %cmp6.i, %cmp.i58 - br i1 %26, label %while.body.i, label %while.end.i, !llvm.loop !12 + %25 = and i1 %cmp6.i, %cmp.i58 + br i1 %25, label %while.body.i, label %while.end.i, !llvm.loop !12 while.end.i: ; preds = %while.body.i %add9.i = add nuw nsw i32 %index.addr.1.i, 1 - %27 = tail call i32 @llvm.smax.i32(i32 %add9.i, i32 %.sroa.speculated.i198) - %28 = tail call i32 @llvm.umin.i32(i32 %27, i32 4) - store i32 %28, ptr %this, align 4 + %26 = tail call i32 @llvm.smax.i32(i32 %add9.i, i32 %.sroa.speculated.i198) + %27 = tail call i32 @llvm.umin.i32(i32 %26, i32 4) + store i32 %27, ptr %this, align 4 br label %for.inc for.inc: ; preds = %while.end.i, %_ZN4absl16strings_internal11BigUnsignedILi4EE10MultiplyByEj.exit, %for.body, %if.end59 - %.sroa.speculated.i197 = phi i32 [ %.sroa.speculated.i196201, %if.end59 ], [ %.sroa.speculated.i196201, %for.body ], [ %.sroa.speculated.i198, %_ZN4absl16strings_internal11BigUnsignedILi4EE10MultiplyByEj.exit ], [ %28, %while.end.i ] + %.sroa.speculated.i197 = phi i32 [ %.sroa.speculated.i196201, %if.end59 ], [ %.sroa.speculated.i196201, %for.body ], [ %.sroa.speculated.i198, %_ZN4absl16strings_internal11BigUnsignedILi4EE10MultiplyByEj.exit ], [ %27, %while.end.i ] %significant_digits.addr.1 = phi i32 [ %dec47, %if.end59 ], [ %significant_digits.addr.0202, %for.body ], [ %dec47, %_ZN4absl16strings_internal11BigUnsignedILi4EE10MultiplyByEj.exit ], [ %dec47, %while.end.i ] %after_decimal_point.1 = phi i8 [ %after_decimal_point.0203, %if.end59 ], [ 1, %for.body ], [ %after_decimal_point.0203, %_ZN4absl16strings_internal11BigUnsignedILi4EE10MultiplyByEj.exit ], [ %after_decimal_point.0203, %while.end.i ] %exponent_adjust.1 = phi i32 [ %spec.select46, %if.end59 ], [ %exponent_adjust.0204, %for.body ], [ %spec.select46, %_ZN4absl16strings_internal11BigUnsignedILi4EE10MultiplyByEj.exit ], [ %spec.select46, %while.end.i ] @@ -599,11 +598,11 @@ for.inc: ; preds = %while.end.i, %_ZN4a %incdec.ptr65 = getelementptr inbounds i8, ptr %begin.addr.1207, i64 1 %cmp34 = icmp ne ptr %incdec.ptr65, %end.addr.2 %cmp36 = icmp sgt i32 %significant_digits.addr.1, 0 - %29 = select i1 %cmp34, i1 %cmp36, i1 false - br i1 %29, label %for.body, label %for.end, !llvm.loop !13 + %28 = select i1 %cmp34, i1 %cmp36, i1 false + br i1 %28, label %for.body, label %for.end, !llvm.loop !13 for.end: ; preds = %for.inc - %30 = trunc nuw i8 %after_decimal_point.1 to i1 + %29 = trunc nuw i8 %after_decimal_point.1 to i1 %tobool66.not = icmp eq i32 %digits_queued.1, 0 br i1 %tobool66.not, label %if.end68, label %if.then67 @@ -614,8 +613,8 @@ if.then67: ; preds = %for.end if.end5.i: ; preds = %if.then67 %idxprom = sext i32 %digits_queued.1 to i64 %arrayidx = getelementptr inbounds [10 x i32], ptr @_ZN4absl16strings_internal9kTenToNthE, i64 0, i64 %idxprom - %31 = load i32, ptr %arrayidx, align 4 - %conv.i = zext i32 %31 to i64 + %30 = load i32, ptr %arrayidx, align 4 + %conv.i = zext i32 %30 to i64 %cmp711.i61 = icmp sgt i32 %.sroa.speculated.i197, 0 br i1 %cmp711.i61, label %for.body.lr.ph.i62, label %_ZN4absl16strings_internal11BigUnsignedILi4EE10MultiplyByEj.exit87 @@ -628,8 +627,8 @@ for.body.i65: ; preds = %for.body.i65, %for. %indvars.iv.i66 = phi i64 [ 0, %for.body.lr.ph.i62 ], [ %indvars.iv.next.i74, %for.body.i65 ] %window.012.i67 = phi i64 [ 0, %for.body.lr.ph.i62 ], [ %shr.i73, %for.body.i65 ] %arrayidx.i68 = getelementptr inbounds [4 x i32], ptr %words_.i63, i64 0, i64 %indvars.iv.i66 - %32 = load i32, ptr %arrayidx.i68, align 4 - %conv8.i69 = zext i32 %32 to i64 + %31 = load i32, ptr %arrayidx.i68, align 4 + %conv8.i69 = zext i32 %31 to i64 %mul.i70 = mul nuw i64 %conv8.i69, %conv.i %add.i71 = add nuw i64 %mul.i70, %window.012.i67 %conv9.i72 = trunc i64 %add.i71 to i32 @@ -654,7 +653,7 @@ if.then15.i80: ; preds = %for.end.i76 br label %_ZN4absl16strings_internal11BigUnsignedILi4EE10MultiplyByEj.exit87 _ZN4absl16strings_internal11BigUnsignedILi4EE10MultiplyByEj.exit87: ; preds = %if.then67, %if.end5.i, %for.end.i76, %if.then15.i80 - %33 = phi i32 [ 0, %if.then67 ], [ %.sroa.speculated.i197, %if.end5.i ], [ %.sroa.speculated.i197, %for.end.i76 ], [ %inc23.i85, %if.then15.i80 ] + %32 = phi i32 [ 0, %if.then67 ], [ %.sroa.speculated.i197, %if.end5.i ], [ %.sroa.speculated.i197, %for.end.i76 ], [ %inc23.i85, %if.then15.i80 ] %tobool.not.i88 = icmp eq i32 %queued.1, 0 br i1 %tobool.not.i88, label %if.end68, label %while.cond.preheader.i89 @@ -667,26 +666,26 @@ while.body.i91: ; preds = %while.body.i91, %wh %index.addr.012.i93 = phi i32 [ 0, %while.cond.preheader.i89 ], [ %index.addr.1.i99, %while.body.i91 ] %idxprom.i94 = zext nneg i32 %index.addr.012.i93 to i64 %arrayidx.i95 = getelementptr inbounds [4 x i32], ptr %words_.i90, i64 0, i64 %idxprom.i94 - %34 = load i32, ptr %arrayidx.i95, align 4 - %add.i96 = add i32 %34, %value.addr.013.i92 + %33 = load i32, ptr %arrayidx.i95, align 4 + %add.i96 = add i32 %33, %value.addr.013.i92 store i32 %add.i96, ptr %arrayidx.i95, align 4 %cmp6.i97 = icmp ugt i32 %value.addr.013.i92, %add.i96 %inc.i98 = zext i1 %cmp6.i97 to i32 %index.addr.1.i99 = add nuw nsw i32 %index.addr.012.i93, %inc.i98 %cmp.i100 = icmp samesign ult i32 %index.addr.1.i99, 4 - %35 = and i1 %cmp6.i97, %cmp.i100 - br i1 %35, label %while.body.i91, label %while.end.i101, !llvm.loop !12 + %34 = and i1 %cmp6.i97, %cmp.i100 + br i1 %34, label %while.body.i91, label %while.end.i101, !llvm.loop !12 while.end.i101: ; preds = %while.body.i91 %add9.i102 = add nuw nsw i32 %index.addr.1.i99, 1 - %36 = tail call i32 @llvm.smax.i32(i32 %add9.i102, i32 %33) - %37 = tail call i32 @llvm.umin.i32(i32 %36, i32 4) - store i32 %37, ptr %this, align 4 + %35 = tail call i32 @llvm.smax.i32(i32 %add9.i102, i32 %32) + %36 = tail call i32 @llvm.umin.i32(i32 %35, i32 4) + store i32 %36, ptr %this, align 4 br label %if.end68 if.end68: ; preds = %while.end.i101, %_ZN4absl16strings_internal11BigUnsignedILi4EE10MultiplyByEj.exit87, %for.end %cmp69 = icmp uge ptr %incdec.ptr65, %end.addr.2 - %brmerge = select i1 %cmp69, i1 true, i1 %30 + %brmerge = select i1 %cmp69, i1 true, i1 %29 br i1 %brmerge, label %if.end78, label %if.then72 if.end68.thread: ; preds = %if.end33 @@ -704,33 +703,33 @@ if.then72: ; preds = %if.end68, %if.end68 br i1 %cmp48.i.i.i109, label %for.body.lr.ph.i.i.i132, label %for.end.i.i.i110 for.body.lr.ph.i.i.i132: ; preds = %if.then72 - %38 = and i64 %sub.ptr.sub.i.i.i107, -4 - %scevgep.i.i.i133 = getelementptr i8, ptr %begin.addr.1.lcssa247252259, i64 %38 + %37 = and i64 %sub.ptr.sub.i.i.i107, -4 + %scevgep.i.i.i133 = getelementptr i8, ptr %begin.addr.1.lcssa247252259, i64 %37 br label %for.body.i.i.i134 for.body.i.i.i134: ; preds = %if.end11.i.i.i147, %for.body.lr.ph.i.i.i132 %__trip_count.050.i.i.i135 = phi i64 [ %shr.i.i.i108, %for.body.lr.ph.i.i.i132 ], [ %dec.i.i.i149, %if.end11.i.i.i147 ] %__first.addr.049.i.i.i136 = phi ptr [ %begin.addr.1.lcssa247252259, %for.body.lr.ph.i.i.i132 ], [ %incdec.ptr12.i.i.i148, %if.end11.i.i.i147 ] - %39 = load i8, ptr %__first.addr.049.i.i.i136, align 1 - %cmp.i.i.i.i137 = icmp eq i8 %39, 46 + %38 = load i8, ptr %__first.addr.049.i.i.i136, align 1 + %cmp.i.i.i.i137 = icmp eq i8 %38, 46 br i1 %cmp.i.i.i.i137, label %_ZSt4findIPKccET_S2_S2_RKT0_.exit159, label %if.end.i.i.i138 if.end.i.i.i138: ; preds = %for.body.i.i.i134 %incdec.ptr.i.i.i139 = getelementptr inbounds i8, ptr %__first.addr.049.i.i.i136, i64 1 - %40 = load i8, ptr %incdec.ptr.i.i.i139, align 1 - %cmp.i26.i.i.i140 = icmp eq i8 %40, 46 + %39 = load i8, ptr %incdec.ptr.i.i.i139, align 1 + %cmp.i26.i.i.i140 = icmp eq i8 %39, 46 br i1 %cmp.i26.i.i.i140, label %_ZSt4findIPKccET_S2_S2_RKT0_.exit159.loopexit.split.loop.exit, label %if.end3.i.i.i141 if.end3.i.i.i141: ; preds = %if.end.i.i.i138 %incdec.ptr4.i.i.i142 = getelementptr inbounds i8, ptr %__first.addr.049.i.i.i136, i64 2 - %41 = load i8, ptr %incdec.ptr4.i.i.i142, align 1 - %cmp.i27.i.i.i143 = icmp eq i8 %41, 46 + %40 = load i8, ptr %incdec.ptr4.i.i.i142, align 1 + %cmp.i27.i.i.i143 = icmp eq i8 %40, 46 br i1 %cmp.i27.i.i.i143, label %_ZSt4findIPKccET_S2_S2_RKT0_.exit159.loopexit.split.loop.exit271, label %if.end7.i.i.i144 if.end7.i.i.i144: ; preds = %if.end3.i.i.i141 %incdec.ptr8.i.i.i145 = getelementptr inbounds i8, ptr %__first.addr.049.i.i.i136, i64 3 - %42 = load i8, ptr %incdec.ptr8.i.i.i145, align 1 - %cmp.i28.i.i.i146 = icmp eq i8 %42, 46 + %41 = load i8, ptr %incdec.ptr8.i.i.i145, align 1 + %cmp.i28.i.i.i146 = icmp eq i8 %41, 46 br i1 %cmp.i28.i.i.i146, label %_ZSt4findIPKccET_S2_S2_RKT0_.exit159.loopexit.split.loop.exit273, label %if.end11.i.i.i147 if.end11.i.i.i147: ; preds = %if.end7.i.i.i144 @@ -754,8 +753,8 @@ for.end.i.i.i110: ; preds = %for.end.loopexit.i. ] sw.bb.i.i.i128: ; preds = %for.end.i.i.i110 - %43 = load i8, ptr %__first.addr.0.lcssa.i.i.i112, align 1 - %cmp.i29.i.i.i129 = icmp eq i8 %43, 46 + %42 = load i8, ptr %__first.addr.0.lcssa.i.i.i112, align 1 + %cmp.i29.i.i.i129 = icmp eq i8 %42, 46 br i1 %cmp.i29.i.i.i129, label %_ZSt4findIPKccET_S2_S2_RKT0_.exit159, label %if.end18.i.i.i130 if.end18.i.i.i130: ; preds = %sw.bb.i.i.i128 @@ -764,8 +763,8 @@ if.end18.i.i.i130: ; preds = %sw.bb.i.i.i128 sw.bb20.i.i.i123: ; preds = %for.end.i.i.i110, %if.end18.i.i.i130 %__first.addr.1.i.i.i124 = phi ptr [ %incdec.ptr19.i.i.i131, %if.end18.i.i.i130 ], [ %__first.addr.0.lcssa.i.i.i112, %for.end.i.i.i110 ] - %44 = load i8, ptr %__first.addr.1.i.i.i124, align 1 - %cmp.i30.i.i.i125 = icmp eq i8 %44, 46 + %43 = load i8, ptr %__first.addr.1.i.i.i124, align 1 + %cmp.i30.i.i.i125 = icmp eq i8 %43, 46 br i1 %cmp.i30.i.i.i125, label %_ZSt4findIPKccET_S2_S2_RKT0_.exit159, label %if.end23.i.i.i126 if.end23.i.i.i126: ; preds = %sw.bb20.i.i.i123 @@ -774,8 +773,8 @@ if.end23.i.i.i126: ; preds = %sw.bb20.i.i.i123 sw.bb25.i.i.i116: ; preds = %for.end.i.i.i110, %if.end23.i.i.i126 %__first.addr.2.i.i.i117 = phi ptr [ %incdec.ptr24.i.i.i127, %if.end23.i.i.i126 ], [ %__first.addr.0.lcssa.i.i.i112, %for.end.i.i.i110 ] - %45 = load i8, ptr %__first.addr.2.i.i.i117, align 1 - %cmp.i31.i.i.i118 = icmp eq i8 %45, 46 + %44 = load i8, ptr %__first.addr.2.i.i.i117, align 1 + %cmp.i31.i.i.i118 = icmp eq i8 %44, 46 br i1 %cmp.i31.i.i.i118, label %_ZSt4findIPKccET_S2_S2_RKT0_.exit159, label %sw.default.i.i.i119 sw.default.i.i.i119: ; preds = %sw.bb25.i.i.i116, %for.end.i.i.i110 @@ -797,8 +796,8 @@ _ZSt4findIPKccET_S2_S2_RKT0_.exit159: ; preds = %for.body.i.i.i134, %retval.0.i.i.i120 = phi ptr [ %end.addr.2, %sw.default.i.i.i119 ], [ %__first.addr.0.lcssa.i.i.i112, %sw.bb.i.i.i128 ], [ %__first.addr.1.i.i.i124, %sw.bb20.i.i.i123 ], [ %__first.addr.2.i.i.i117, %sw.bb25.i.i.i116 ], [ %incdec.ptr.i.i.i139.le, %_ZSt4findIPKccET_S2_S2_RKT0_.exit159.loopexit.split.loop.exit ], [ %incdec.ptr4.i.i.i142.le, %_ZSt4findIPKccET_S2_S2_RKT0_.exit159.loopexit.split.loop.exit271 ], [ %incdec.ptr8.i.i.i145.le, %_ZSt4findIPKccET_S2_S2_RKT0_.exit159.loopexit.split.loop.exit273 ], [ %__first.addr.049.i.i.i136, %for.body.i.i.i134 ] %sub.ptr.lhs.cast = ptrtoint ptr %retval.0.i.i.i120 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast.i.i.i106 - %46 = trunc i64 %sub.ptr.sub to i32 - %conv77 = add i32 %exponent_adjust.0.lcssa246253258, %46 + %45 = trunc i64 %sub.ptr.sub to i32 + %conv77 = add i32 %exponent_adjust.0.lcssa246253258, %45 br label %if.end78 if.end78: ; preds = %if.end68, %if.end68.thread, %_ZSt4findIPKccET_S2_S2_RKT0_.exit159 @@ -2784,9 +2783,8 @@ for.body: ; preds = %for.body.lr.ph, %fo br i1 %cmp39, label %for.inc, label %if.end41 if.end41: ; preds = %for.body - %22 = and i8 %after_decimal_point.0203, 1 - %23 = zext nneg i8 %22 to i32 - %spec.select46 = sub nsw i32 %exponent_adjust.0204, %23 + %22 = zext nneg i8 %after_decimal_point.0203 to i32 + %spec.select46 = sub nsw i32 %exponent_adjust.0204, %22 %sub = add i8 %21, -48 %dec47 = add nsw i32 %significant_digits.addr.0202, -1 %cmp48 = icmp ne i32 %dec47, 0 @@ -2826,8 +2824,8 @@ for.body.i: ; preds = %for.body.i, %for.bo %indvars.iv.i = phi i64 [ 0, %for.body.lr.ph.i ], [ %indvars.iv.next.i, %for.body.i ] %window.012.i = phi i64 [ 0, %for.body.lr.ph.i ], [ %shr.i, %for.body.i ] %arrayidx.i = getelementptr inbounds [84 x i32], ptr %words_.i53, i64 0, i64 %indvars.iv.i - %24 = load i32, ptr %arrayidx.i, align 4 - %conv8.i = zext i32 %24 to i64 + %23 = load i32, ptr %arrayidx.i, align 4 + %conv8.i = zext i32 %23 to i64 %mul.i = mul nuw nsw i64 %conv8.i, 1000000000 %add.i = add nuw nsw i64 %mul.i, %window.012.i %conv9.i = trunc i64 %add.i to i32 @@ -2861,25 +2859,25 @@ while.body.i: ; preds = %_ZN4absl16strings_i %index.addr.012.i = phi i32 [ %index.addr.1.i, %while.body.i ], [ 0, %_ZN4absl16strings_internal11BigUnsignedILi84EE10MultiplyByEj.exit ] %idxprom.i = zext nneg i32 %index.addr.012.i to i64 %arrayidx.i56 = getelementptr inbounds [84 x i32], ptr %words_.i53, i64 0, i64 %idxprom.i - %25 = load i32, ptr %arrayidx.i56, align 4 - %add.i57 = add i32 %25, %value.addr.013.i + %24 = load i32, ptr %arrayidx.i56, align 4 + %add.i57 = add i32 %24, %value.addr.013.i store i32 %add.i57, ptr %arrayidx.i56, align 4 %cmp6.i = icmp ugt i32 %value.addr.013.i, %add.i57 %inc.i = zext i1 %cmp6.i to i32 %index.addr.1.i = add nuw nsw i32 %index.addr.012.i, %inc.i %cmp.i58 = icmp samesign ult i32 %index.addr.1.i, 84 - %26 = and i1 %cmp6.i, %cmp.i58 - br i1 %26, label %while.body.i, label %while.end.i, !llvm.loop !27 + %25 = and i1 %cmp6.i, %cmp.i58 + br i1 %25, label %while.body.i, label %while.end.i, !llvm.loop !27 while.end.i: ; preds = %while.body.i %add9.i = add nuw nsw i32 %index.addr.1.i, 1 - %27 = tail call i32 @llvm.smax.i32(i32 %add9.i, i32 %.sroa.speculated.i198) - %28 = tail call i32 @llvm.umin.i32(i32 %27, i32 84) - store i32 %28, ptr %this, align 4 + %26 = tail call i32 @llvm.smax.i32(i32 %add9.i, i32 %.sroa.speculated.i198) + %27 = tail call i32 @llvm.umin.i32(i32 %26, i32 84) + store i32 %27, ptr %this, align 4 br label %for.inc for.inc: ; preds = %while.end.i, %_ZN4absl16strings_internal11BigUnsignedILi84EE10MultiplyByEj.exit, %for.body, %if.end59 - %.sroa.speculated.i197 = phi i32 [ %.sroa.speculated.i196201, %if.end59 ], [ %.sroa.speculated.i196201, %for.body ], [ %.sroa.speculated.i198, %_ZN4absl16strings_internal11BigUnsignedILi84EE10MultiplyByEj.exit ], [ %28, %while.end.i ] + %.sroa.speculated.i197 = phi i32 [ %.sroa.speculated.i196201, %if.end59 ], [ %.sroa.speculated.i196201, %for.body ], [ %.sroa.speculated.i198, %_ZN4absl16strings_internal11BigUnsignedILi84EE10MultiplyByEj.exit ], [ %27, %while.end.i ] %significant_digits.addr.1 = phi i32 [ %dec47, %if.end59 ], [ %significant_digits.addr.0202, %for.body ], [ %dec47, %_ZN4absl16strings_internal11BigUnsignedILi84EE10MultiplyByEj.exit ], [ %dec47, %while.end.i ] %after_decimal_point.1 = phi i8 [ %after_decimal_point.0203, %if.end59 ], [ 1, %for.body ], [ %after_decimal_point.0203, %_ZN4absl16strings_internal11BigUnsignedILi84EE10MultiplyByEj.exit ], [ %after_decimal_point.0203, %while.end.i ] %exponent_adjust.1 = phi i32 [ %spec.select46, %if.end59 ], [ %exponent_adjust.0204, %for.body ], [ %spec.select46, %_ZN4absl16strings_internal11BigUnsignedILi84EE10MultiplyByEj.exit ], [ %spec.select46, %while.end.i ] @@ -2888,11 +2886,11 @@ for.inc: ; preds = %while.end.i, %_ZN4a %incdec.ptr65 = getelementptr inbounds i8, ptr %begin.addr.1207, i64 1 %cmp34 = icmp ne ptr %incdec.ptr65, %end.addr.2 %cmp36 = icmp sgt i32 %significant_digits.addr.1, 0 - %29 = select i1 %cmp34, i1 %cmp36, i1 false - br i1 %29, label %for.body, label %for.end, !llvm.loop !28 + %28 = select i1 %cmp34, i1 %cmp36, i1 false + br i1 %28, label %for.body, label %for.end, !llvm.loop !28 for.end: ; preds = %for.inc - %30 = trunc nuw i8 %after_decimal_point.1 to i1 + %29 = trunc nuw i8 %after_decimal_point.1 to i1 %tobool66.not = icmp eq i32 %digits_queued.1, 0 br i1 %tobool66.not, label %if.end68, label %if.then67 @@ -2903,8 +2901,8 @@ if.then67: ; preds = %for.end if.end5.i: ; preds = %if.then67 %idxprom = sext i32 %digits_queued.1 to i64 %arrayidx = getelementptr inbounds [10 x i32], ptr @_ZN4absl16strings_internal9kTenToNthE, i64 0, i64 %idxprom - %31 = load i32, ptr %arrayidx, align 4 - %conv.i = zext i32 %31 to i64 + %30 = load i32, ptr %arrayidx, align 4 + %conv.i = zext i32 %30 to i64 %cmp711.i61 = icmp sgt i32 %.sroa.speculated.i197, 0 br i1 %cmp711.i61, label %for.body.lr.ph.i62, label %_ZN4absl16strings_internal11BigUnsignedILi84EE10MultiplyByEj.exit87 @@ -2917,8 +2915,8 @@ for.body.i65: ; preds = %for.body.i65, %for. %indvars.iv.i66 = phi i64 [ 0, %for.body.lr.ph.i62 ], [ %indvars.iv.next.i74, %for.body.i65 ] %window.012.i67 = phi i64 [ 0, %for.body.lr.ph.i62 ], [ %shr.i73, %for.body.i65 ] %arrayidx.i68 = getelementptr inbounds [84 x i32], ptr %words_.i63, i64 0, i64 %indvars.iv.i66 - %32 = load i32, ptr %arrayidx.i68, align 4 - %conv8.i69 = zext i32 %32 to i64 + %31 = load i32, ptr %arrayidx.i68, align 4 + %conv8.i69 = zext i32 %31 to i64 %mul.i70 = mul nuw i64 %conv8.i69, %conv.i %add.i71 = add nuw i64 %mul.i70, %window.012.i67 %conv9.i72 = trunc i64 %add.i71 to i32 @@ -2943,7 +2941,7 @@ if.then15.i80: ; preds = %for.end.i76 br label %_ZN4absl16strings_internal11BigUnsignedILi84EE10MultiplyByEj.exit87 _ZN4absl16strings_internal11BigUnsignedILi84EE10MultiplyByEj.exit87: ; preds = %if.then67, %if.end5.i, %for.end.i76, %if.then15.i80 - %33 = phi i32 [ 0, %if.then67 ], [ %.sroa.speculated.i197, %if.end5.i ], [ %.sroa.speculated.i197, %for.end.i76 ], [ %inc23.i85, %if.then15.i80 ] + %32 = phi i32 [ 0, %if.then67 ], [ %.sroa.speculated.i197, %if.end5.i ], [ %.sroa.speculated.i197, %for.end.i76 ], [ %inc23.i85, %if.then15.i80 ] %tobool.not.i88 = icmp eq i32 %queued.1, 0 br i1 %tobool.not.i88, label %if.end68, label %while.cond.preheader.i89 @@ -2956,26 +2954,26 @@ while.body.i91: ; preds = %while.body.i91, %wh %index.addr.012.i93 = phi i32 [ 0, %while.cond.preheader.i89 ], [ %index.addr.1.i99, %while.body.i91 ] %idxprom.i94 = zext nneg i32 %index.addr.012.i93 to i64 %arrayidx.i95 = getelementptr inbounds [84 x i32], ptr %words_.i90, i64 0, i64 %idxprom.i94 - %34 = load i32, ptr %arrayidx.i95, align 4 - %add.i96 = add i32 %34, %value.addr.013.i92 + %33 = load i32, ptr %arrayidx.i95, align 4 + %add.i96 = add i32 %33, %value.addr.013.i92 store i32 %add.i96, ptr %arrayidx.i95, align 4 %cmp6.i97 = icmp ugt i32 %value.addr.013.i92, %add.i96 %inc.i98 = zext i1 %cmp6.i97 to i32 %index.addr.1.i99 = add nuw nsw i32 %index.addr.012.i93, %inc.i98 %cmp.i100 = icmp samesign ult i32 %index.addr.1.i99, 84 - %35 = and i1 %cmp6.i97, %cmp.i100 - br i1 %35, label %while.body.i91, label %while.end.i101, !llvm.loop !27 + %34 = and i1 %cmp6.i97, %cmp.i100 + br i1 %34, label %while.body.i91, label %while.end.i101, !llvm.loop !27 while.end.i101: ; preds = %while.body.i91 %add9.i102 = add nuw nsw i32 %index.addr.1.i99, 1 - %36 = tail call i32 @llvm.smax.i32(i32 %add9.i102, i32 %33) - %37 = tail call i32 @llvm.umin.i32(i32 %36, i32 84) - store i32 %37, ptr %this, align 4 + %35 = tail call i32 @llvm.smax.i32(i32 %add9.i102, i32 %32) + %36 = tail call i32 @llvm.umin.i32(i32 %35, i32 84) + store i32 %36, ptr %this, align 4 br label %if.end68 if.end68: ; preds = %while.end.i101, %_ZN4absl16strings_internal11BigUnsignedILi84EE10MultiplyByEj.exit87, %for.end %cmp69 = icmp uge ptr %incdec.ptr65, %end.addr.2 - %brmerge = select i1 %cmp69, i1 true, i1 %30 + %brmerge = select i1 %cmp69, i1 true, i1 %29 br i1 %brmerge, label %if.end78, label %if.then72 if.end68.thread: ; preds = %if.end33 @@ -2993,33 +2991,33 @@ if.then72: ; preds = %if.end68, %if.end68 br i1 %cmp48.i.i.i109, label %for.body.lr.ph.i.i.i132, label %for.end.i.i.i110 for.body.lr.ph.i.i.i132: ; preds = %if.then72 - %38 = and i64 %sub.ptr.sub.i.i.i107, -4 - %scevgep.i.i.i133 = getelementptr i8, ptr %begin.addr.1.lcssa247252259, i64 %38 + %37 = and i64 %sub.ptr.sub.i.i.i107, -4 + %scevgep.i.i.i133 = getelementptr i8, ptr %begin.addr.1.lcssa247252259, i64 %37 br label %for.body.i.i.i134 for.body.i.i.i134: ; preds = %if.end11.i.i.i147, %for.body.lr.ph.i.i.i132 %__trip_count.050.i.i.i135 = phi i64 [ %shr.i.i.i108, %for.body.lr.ph.i.i.i132 ], [ %dec.i.i.i149, %if.end11.i.i.i147 ] %__first.addr.049.i.i.i136 = phi ptr [ %begin.addr.1.lcssa247252259, %for.body.lr.ph.i.i.i132 ], [ %incdec.ptr12.i.i.i148, %if.end11.i.i.i147 ] - %39 = load i8, ptr %__first.addr.049.i.i.i136, align 1 - %cmp.i.i.i.i137 = icmp eq i8 %39, 46 + %38 = load i8, ptr %__first.addr.049.i.i.i136, align 1 + %cmp.i.i.i.i137 = icmp eq i8 %38, 46 br i1 %cmp.i.i.i.i137, label %_ZSt4findIPKccET_S2_S2_RKT0_.exit159, label %if.end.i.i.i138 if.end.i.i.i138: ; preds = %for.body.i.i.i134 %incdec.ptr.i.i.i139 = getelementptr inbounds i8, ptr %__first.addr.049.i.i.i136, i64 1 - %40 = load i8, ptr %incdec.ptr.i.i.i139, align 1 - %cmp.i26.i.i.i140 = icmp eq i8 %40, 46 + %39 = load i8, ptr %incdec.ptr.i.i.i139, align 1 + %cmp.i26.i.i.i140 = icmp eq i8 %39, 46 br i1 %cmp.i26.i.i.i140, label %_ZSt4findIPKccET_S2_S2_RKT0_.exit159.loopexit.split.loop.exit, label %if.end3.i.i.i141 if.end3.i.i.i141: ; preds = %if.end.i.i.i138 %incdec.ptr4.i.i.i142 = getelementptr inbounds i8, ptr %__first.addr.049.i.i.i136, i64 2 - %41 = load i8, ptr %incdec.ptr4.i.i.i142, align 1 - %cmp.i27.i.i.i143 = icmp eq i8 %41, 46 + %40 = load i8, ptr %incdec.ptr4.i.i.i142, align 1 + %cmp.i27.i.i.i143 = icmp eq i8 %40, 46 br i1 %cmp.i27.i.i.i143, label %_ZSt4findIPKccET_S2_S2_RKT0_.exit159.loopexit.split.loop.exit271, label %if.end7.i.i.i144 if.end7.i.i.i144: ; preds = %if.end3.i.i.i141 %incdec.ptr8.i.i.i145 = getelementptr inbounds i8, ptr %__first.addr.049.i.i.i136, i64 3 - %42 = load i8, ptr %incdec.ptr8.i.i.i145, align 1 - %cmp.i28.i.i.i146 = icmp eq i8 %42, 46 + %41 = load i8, ptr %incdec.ptr8.i.i.i145, align 1 + %cmp.i28.i.i.i146 = icmp eq i8 %41, 46 br i1 %cmp.i28.i.i.i146, label %_ZSt4findIPKccET_S2_S2_RKT0_.exit159.loopexit.split.loop.exit273, label %if.end11.i.i.i147 if.end11.i.i.i147: ; preds = %if.end7.i.i.i144 @@ -3043,8 +3041,8 @@ for.end.i.i.i110: ; preds = %for.end.loopexit.i. ] sw.bb.i.i.i128: ; preds = %for.end.i.i.i110 - %43 = load i8, ptr %__first.addr.0.lcssa.i.i.i112, align 1 - %cmp.i29.i.i.i129 = icmp eq i8 %43, 46 + %42 = load i8, ptr %__first.addr.0.lcssa.i.i.i112, align 1 + %cmp.i29.i.i.i129 = icmp eq i8 %42, 46 br i1 %cmp.i29.i.i.i129, label %_ZSt4findIPKccET_S2_S2_RKT0_.exit159, label %if.end18.i.i.i130 if.end18.i.i.i130: ; preds = %sw.bb.i.i.i128 @@ -3053,8 +3051,8 @@ if.end18.i.i.i130: ; preds = %sw.bb.i.i.i128 sw.bb20.i.i.i123: ; preds = %for.end.i.i.i110, %if.end18.i.i.i130 %__first.addr.1.i.i.i124 = phi ptr [ %incdec.ptr19.i.i.i131, %if.end18.i.i.i130 ], [ %__first.addr.0.lcssa.i.i.i112, %for.end.i.i.i110 ] - %44 = load i8, ptr %__first.addr.1.i.i.i124, align 1 - %cmp.i30.i.i.i125 = icmp eq i8 %44, 46 + %43 = load i8, ptr %__first.addr.1.i.i.i124, align 1 + %cmp.i30.i.i.i125 = icmp eq i8 %43, 46 br i1 %cmp.i30.i.i.i125, label %_ZSt4findIPKccET_S2_S2_RKT0_.exit159, label %if.end23.i.i.i126 if.end23.i.i.i126: ; preds = %sw.bb20.i.i.i123 @@ -3063,8 +3061,8 @@ if.end23.i.i.i126: ; preds = %sw.bb20.i.i.i123 sw.bb25.i.i.i116: ; preds = %for.end.i.i.i110, %if.end23.i.i.i126 %__first.addr.2.i.i.i117 = phi ptr [ %incdec.ptr24.i.i.i127, %if.end23.i.i.i126 ], [ %__first.addr.0.lcssa.i.i.i112, %for.end.i.i.i110 ] - %45 = load i8, ptr %__first.addr.2.i.i.i117, align 1 - %cmp.i31.i.i.i118 = icmp eq i8 %45, 46 + %44 = load i8, ptr %__first.addr.2.i.i.i117, align 1 + %cmp.i31.i.i.i118 = icmp eq i8 %44, 46 br i1 %cmp.i31.i.i.i118, label %_ZSt4findIPKccET_S2_S2_RKT0_.exit159, label %sw.default.i.i.i119 sw.default.i.i.i119: ; preds = %sw.bb25.i.i.i116, %for.end.i.i.i110 @@ -3086,8 +3084,8 @@ _ZSt4findIPKccET_S2_S2_RKT0_.exit159: ; preds = %for.body.i.i.i134, %retval.0.i.i.i120 = phi ptr [ %end.addr.2, %sw.default.i.i.i119 ], [ %__first.addr.0.lcssa.i.i.i112, %sw.bb.i.i.i128 ], [ %__first.addr.1.i.i.i124, %sw.bb20.i.i.i123 ], [ %__first.addr.2.i.i.i117, %sw.bb25.i.i.i116 ], [ %incdec.ptr.i.i.i139.le, %_ZSt4findIPKccET_S2_S2_RKT0_.exit159.loopexit.split.loop.exit ], [ %incdec.ptr4.i.i.i142.le, %_ZSt4findIPKccET_S2_S2_RKT0_.exit159.loopexit.split.loop.exit271 ], [ %incdec.ptr8.i.i.i145.le, %_ZSt4findIPKccET_S2_S2_RKT0_.exit159.loopexit.split.loop.exit273 ], [ %__first.addr.049.i.i.i136, %for.body.i.i.i134 ] %sub.ptr.lhs.cast = ptrtoint ptr %retval.0.i.i.i120 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast.i.i.i106 - %46 = trunc i64 %sub.ptr.sub to i32 - %conv77 = add i32 %exponent_adjust.0.lcssa246253258, %46 + %45 = trunc i64 %sub.ptr.sub to i32 + %conv77 = add i32 %exponent_adjust.0.lcssa246253258, %45 br label %if.end78 if.end78: ; preds = %if.end68, %if.end68.thread, %_ZSt4findIPKccET_S2_S2_RKT0_.exit159 diff --git a/bench/assimp/optimized/glTF2Exporter.cpp.ll b/bench/assimp/optimized/glTF2Exporter.cpp.ll index 512847833ca..0996e11bc11 100644 --- a/bench/assimp/optimized/glTF2Exporter.cpp.ll +++ b/bench/assimp/optimized/glTF2Exporter.cpp.ll @@ -28828,12 +28828,10 @@ for.body.i.i: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i.i3, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i.i, label %if.then.i.i.i.i if.then.i.i.i.i: ; preds = %for.body.i.i - %cmp5.i.i.i.i = icmp eq i32 %arr.sroa.6.0.i, 0 %add.i.i.i.i = add nuw nsw i32 %arr.sroa.6.0.i, 1 %div1.i.i.i.i = lshr i32 %add.i.i.i.i, 1 %add10.i.i.i.i = add i32 %div1.i.i.i.i, %arr.sroa.6.0.i - %cond.i.i.i.i = select i1 %cmp5.i.i.i.i, i32 16, i32 %add10.i.i.i.i - %cmp.i.i.i.i.i = icmp ugt i32 %cond.i.i.i.i, %arr.sroa.6.0.i + %cmp.i.i.i.i.i = icmp ugt i32 %add10.i.i.i.i, %arr.sroa.6.0.i br i1 %cmp.i.i.i.i.i, label %if.then.i.i.i.i.i, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i.i if.then.i.i.i.i.i: ; preds = %if.then.i.i.i.i @@ -28841,7 +28839,7 @@ if.then.i.i.i.i.i: ; preds = %if.then.i.i.i.i %and.i12.i.i.i.i.i = and i64 %14, 281474976710655 %15 = inttoptr i64 %and.i12.i.i.i.i.i to ptr %mul.i.i.i.i.i = shl nuw nsw i64 %13, 4 - %conv4.i.i.i.i.i = zext i32 %cond.i.i.i.i to i64 + %conv4.i.i.i.i.i = zext i32 %add10.i.i.i.i to i64 %mul5.i.i.i.i.i = shl nuw nsw i64 %conv4.i.i.i.i.i, 4 %call6.i.i1.i.i4.i = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %al, ptr noundef %15, i64 noundef %mul.i.i.i.i.i, i64 noundef %mul5.i.i.i.i.i) %and.i.i.i.i.i.i = and i64 %14, -281474976710656 @@ -28852,7 +28850,7 @@ if.then.i.i.i.i.i: ; preds = %if.then.i.i.i.i _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i.i: ; preds = %if.then.i.i.i.i.i, %if.then.i.i.i.i, %for.body.i.i %arr.sroa.9.1.i = phi ptr [ %17, %if.then.i.i.i.i.i ], [ %arr.sroa.9.0.i, %if.then.i.i.i.i ], [ %arr.sroa.9.0.i, %for.body.i.i ] - %arr.sroa.6.1.i = phi i32 [ %cond.i.i.i.i, %if.then.i.i.i.i.i ], [ %arr.sroa.6.0.i, %if.then.i.i.i.i ], [ %arr.sroa.6.0.i, %for.body.i.i ] + %arr.sroa.6.1.i = phi i32 [ %add10.i.i.i.i, %if.then.i.i.i.i.i ], [ %arr.sroa.6.0.i, %if.then.i.i.i.i ], [ %arr.sroa.6.0.i, %for.body.i.i ] %conv.i.i.i.i = fpext float %12 to double %18 = ptrtoint ptr %arr.sroa.9.1.i to i64 %and.i.i.i.i.i = and i64 %18, 281474976710655 @@ -29128,12 +29126,10 @@ for.body.i: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i, label %if.then.i.i.i if.then.i.i.i: ; preds = %for.body.i - %cmp5.i.i.i = icmp eq i32 %arr.sroa.6.0, 0 %add.i.i.i = add nuw nsw i32 %arr.sroa.6.0, 1 %div1.i.i.i = lshr i32 %add.i.i.i, 1 %add10.i.i.i = add i32 %div1.i.i.i, %arr.sroa.6.0 - %cond.i.i.i = select i1 %cmp5.i.i.i, i32 16, i32 %add10.i.i.i - %cmp.i.i.i.i = icmp ugt i32 %cond.i.i.i, %arr.sroa.6.0 + %cmp.i.i.i.i = icmp ugt i32 %add10.i.i.i, %arr.sroa.6.0 br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i if.then.i.i.i.i: ; preds = %if.then.i.i.i @@ -29141,7 +29137,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i %and.i12.i.i.i.i = and i64 %4, 281474976710655 %5 = inttoptr i64 %and.i12.i.i.i.i to ptr %mul.i.i.i.i = shl nuw nsw i64 %3, 4 - %conv4.i.i.i.i = zext i32 %cond.i.i.i to i64 + %conv4.i.i.i.i = zext i32 %add10.i.i.i to i64 %mul5.i.i.i.i = shl nuw nsw i64 %conv4.i.i.i.i, 4 %call6.i.i1.i.i4 = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %al, ptr noundef %5, i64 noundef %mul.i.i.i.i, i64 noundef %mul5.i.i.i.i) %and.i.i.i.i.i = and i64 %4, -281474976710656 @@ -29152,7 +29148,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i: ; preds = %for.body.i, %if.then.i.i.i.i, %if.then.i.i.i %arr.sroa.9.1 = phi ptr [ %7, %if.then.i.i.i.i ], [ %arr.sroa.9.0, %if.then.i.i.i ], [ %arr.sroa.9.0, %for.body.i ] - %arr.sroa.6.1 = phi i32 [ %cond.i.i.i, %if.then.i.i.i.i ], [ %arr.sroa.6.0, %if.then.i.i.i ], [ %arr.sroa.6.0, %for.body.i ] + %arr.sroa.6.1 = phi i32 [ %add10.i.i.i, %if.then.i.i.i.i ], [ %arr.sroa.6.0, %if.then.i.i.i ], [ %arr.sroa.6.0, %for.body.i ] %conv.i.i.i = fpext float %2 to double %8 = ptrtoint ptr %arr.sroa.9.1 to i64 %and.i.i.i.i = and i64 %8, 281474976710655 @@ -31605,12 +31601,10 @@ for.body.i: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i, label %if.then.i.i.i if.then.i.i.i: ; preds = %for.body.i - %cmp5.i.i.i = icmp eq i32 %val.sroa.6.0, 0 %add.i.i.i = add nuw nsw i32 %val.sroa.6.0, 1 %div1.i.i.i = lshr i32 %add.i.i.i, 1 %add10.i.i.i = add i32 %div1.i.i.i, %val.sroa.6.0 - %cond.i.i.i = select i1 %cmp5.i.i.i, i32 16, i32 %add10.i.i.i - %cmp.i.i.i.i = icmp ugt i32 %cond.i.i.i, %val.sroa.6.0 + %cmp.i.i.i.i = icmp ugt i32 %add10.i.i.i, %val.sroa.6.0 br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i if.then.i.i.i.i: ; preds = %if.then.i.i.i @@ -31618,7 +31612,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i %and.i12.i.i.i.i = and i64 %6, 281474976710655 %7 = inttoptr i64 %and.i12.i.i.i.i to ptr %mul.i.i.i.i = shl nuw nsw i64 %5, 4 - %conv4.i.i.i.i = zext i32 %cond.i.i.i to i64 + %conv4.i.i.i.i = zext i32 %add10.i.i.i to i64 %mul5.i.i.i.i = shl nuw nsw i64 %conv4.i.i.i.i, 4 %call6.i.i1.i.i38 = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %1, ptr noundef %7, i64 noundef %mul.i.i.i.i, i64 noundef %mul5.i.i.i.i) %and.i.i.i.i.i = and i64 %6, -281474976710656 @@ -31629,7 +31623,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i: ; preds = %for.body.i, %if.then.i.i.i.i, %if.then.i.i.i %val.sroa.9.1 = phi ptr [ %9, %if.then.i.i.i.i ], [ %val.sroa.9.0, %if.then.i.i.i ], [ %val.sroa.9.0, %for.body.i ] - %val.sroa.6.1 = phi i32 [ %cond.i.i.i, %if.then.i.i.i.i ], [ %val.sroa.6.0, %if.then.i.i.i ], [ %val.sroa.6.0, %for.body.i ] + %val.sroa.6.1 = phi i32 [ %add10.i.i.i, %if.then.i.i.i.i ], [ %val.sroa.6.0, %if.then.i.i.i ], [ %val.sroa.6.0, %for.body.i ] %conv.i.i.i = fpext float %4 to double %10 = ptrtoint ptr %val.sroa.9.1 to i64 %and.i.i.i.i = and i64 %10, 281474976710655 @@ -31737,12 +31731,10 @@ for.body.i52: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i55, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i64, label %if.then.i.i.i56 if.then.i.i.i56: ; preds = %for.body.i52 - %cmp5.i.i.i57 = icmp eq i32 %val9.sroa.6.0, 0 %add.i.i.i58 = add nuw nsw i32 %val9.sroa.6.0, 1 %div1.i.i.i59 = lshr i32 %add.i.i.i58, 1 %add10.i.i.i60 = add i32 %div1.i.i.i59, %val9.sroa.6.0 - %cond.i.i.i61 = select i1 %cmp5.i.i.i57, i32 16, i32 %add10.i.i.i60 - %cmp.i.i.i.i62 = icmp ugt i32 %cond.i.i.i61, %val9.sroa.6.0 + %cmp.i.i.i.i62 = icmp ugt i32 %add10.i.i.i60, %val9.sroa.6.0 br i1 %cmp.i.i.i.i62, label %if.then.i.i.i.i73, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i64 if.then.i.i.i.i73: ; preds = %if.then.i.i.i56 @@ -31750,7 +31742,7 @@ if.then.i.i.i.i73: ; preds = %if.then.i.i.i56 %and.i12.i.i.i.i74 = and i64 %35, 281474976710655 %36 = inttoptr i64 %and.i12.i.i.i.i74 to ptr %mul.i.i.i.i76 = shl nuw nsw i64 %34, 4 - %conv4.i.i.i.i77 = zext i32 %cond.i.i.i61 to i64 + %conv4.i.i.i.i77 = zext i32 %add10.i.i.i60 to i64 %mul5.i.i.i.i78 = shl nuw nsw i64 %conv4.i.i.i.i77, 4 %call6.i.i1.i.i87 = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %30, ptr noundef %36, i64 noundef %mul.i.i.i.i76, i64 noundef %mul5.i.i.i.i78) %and.i.i.i.i.i79 = and i64 %35, -281474976710656 @@ -31761,7 +31753,7 @@ if.then.i.i.i.i73: ; preds = %if.then.i.i.i56 _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i64: ; preds = %for.body.i52, %if.then.i.i.i.i73, %if.then.i.i.i56 %val9.sroa.9.1 = phi ptr [ %38, %if.then.i.i.i.i73 ], [ %val9.sroa.9.0, %if.then.i.i.i56 ], [ %val9.sroa.9.0, %for.body.i52 ] - %val9.sroa.6.1 = phi i32 [ %cond.i.i.i61, %if.then.i.i.i.i73 ], [ %val9.sroa.6.0, %if.then.i.i.i56 ], [ %val9.sroa.6.0, %for.body.i52 ] + %val9.sroa.6.1 = phi i32 [ %add10.i.i.i60, %if.then.i.i.i.i73 ], [ %val9.sroa.6.0, %if.then.i.i.i56 ], [ %val9.sroa.6.0, %for.body.i52 ] %conv.i.i.i65 = fpext float %33 to double %39 = ptrtoint ptr %val9.sroa.9.1 to i64 %and.i.i.i.i66 = and i64 %39, 281474976710655 @@ -31869,12 +31861,10 @@ for.body.i130: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i133, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i142, label %if.then.i.i.i134 if.then.i.i.i134: ; preds = %for.body.i130 - %cmp5.i.i.i135 = icmp eq i32 %val25.sroa.6.0, 0 %add.i.i.i136 = add nuw nsw i32 %val25.sroa.6.0, 1 %div1.i.i.i137 = lshr i32 %add.i.i.i136, 1 %add10.i.i.i138 = add i32 %div1.i.i.i137, %val25.sroa.6.0 - %cond.i.i.i139 = select i1 %cmp5.i.i.i135, i32 16, i32 %add10.i.i.i138 - %cmp.i.i.i.i140 = icmp ugt i32 %cond.i.i.i139, %val25.sroa.6.0 + %cmp.i.i.i.i140 = icmp ugt i32 %add10.i.i.i138, %val25.sroa.6.0 br i1 %cmp.i.i.i.i140, label %if.then.i.i.i.i151, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i142 if.then.i.i.i.i151: ; preds = %if.then.i.i.i134 @@ -31882,7 +31872,7 @@ if.then.i.i.i.i151: ; preds = %if.then.i.i.i134 %and.i12.i.i.i.i152 = and i64 %64, 281474976710655 %65 = inttoptr i64 %and.i12.i.i.i.i152 to ptr %mul.i.i.i.i154 = shl nuw nsw i64 %63, 4 - %conv4.i.i.i.i155 = zext i32 %cond.i.i.i139 to i64 + %conv4.i.i.i.i155 = zext i32 %add10.i.i.i138 to i64 %mul5.i.i.i.i156 = shl nuw nsw i64 %conv4.i.i.i.i155, 4 %call6.i.i1.i.i165 = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %59, ptr noundef %65, i64 noundef %mul.i.i.i.i154, i64 noundef %mul5.i.i.i.i156) %and.i.i.i.i.i157 = and i64 %64, -281474976710656 @@ -31893,7 +31883,7 @@ if.then.i.i.i.i151: ; preds = %if.then.i.i.i134 _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i142: ; preds = %for.body.i130, %if.then.i.i.i.i151, %if.then.i.i.i134 %val25.sroa.9.1 = phi ptr [ %67, %if.then.i.i.i.i151 ], [ %val25.sroa.9.0, %if.then.i.i.i134 ], [ %val25.sroa.9.0, %for.body.i130 ] - %val25.sroa.6.1 = phi i32 [ %cond.i.i.i139, %if.then.i.i.i.i151 ], [ %val25.sroa.6.0, %if.then.i.i.i134 ], [ %val25.sroa.6.0, %for.body.i130 ] + %val25.sroa.6.1 = phi i32 [ %add10.i.i.i138, %if.then.i.i.i.i151 ], [ %val25.sroa.6.0, %if.then.i.i.i134 ], [ %val25.sroa.6.0, %for.body.i130 ] %conv.i.i.i143 = fpext float %62 to double %68 = ptrtoint ptr %val25.sroa.9.1 to i64 %and.i.i.i.i144 = and i64 %68, 281474976710655 @@ -32001,12 +31991,10 @@ for.body.i209: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i212, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i221, label %if.then.i.i.i213 if.then.i.i.i213: ; preds = %for.body.i209 - %cmp5.i.i.i214 = icmp eq i32 %val41.sroa.6.0, 0 %add.i.i.i215 = add nuw nsw i32 %val41.sroa.6.0, 1 %div1.i.i.i216 = lshr i32 %add.i.i.i215, 1 %add10.i.i.i217 = add i32 %div1.i.i.i216, %val41.sroa.6.0 - %cond.i.i.i218 = select i1 %cmp5.i.i.i214, i32 16, i32 %add10.i.i.i217 - %cmp.i.i.i.i219 = icmp ugt i32 %cond.i.i.i218, %val41.sroa.6.0 + %cmp.i.i.i.i219 = icmp ugt i32 %add10.i.i.i217, %val41.sroa.6.0 br i1 %cmp.i.i.i.i219, label %if.then.i.i.i.i230, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i221 if.then.i.i.i.i230: ; preds = %if.then.i.i.i213 @@ -32014,7 +32002,7 @@ if.then.i.i.i.i230: ; preds = %if.then.i.i.i213 %and.i12.i.i.i.i231 = and i64 %93, 281474976710655 %94 = inttoptr i64 %and.i12.i.i.i.i231 to ptr %mul.i.i.i.i233 = shl nuw nsw i64 %92, 4 - %conv4.i.i.i.i234 = zext i32 %cond.i.i.i218 to i64 + %conv4.i.i.i.i234 = zext i32 %add10.i.i.i217 to i64 %mul5.i.i.i.i235 = shl nuw nsw i64 %conv4.i.i.i.i234, 4 %call6.i.i1.i.i244 = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %88, ptr noundef %94, i64 noundef %mul.i.i.i.i233, i64 noundef %mul5.i.i.i.i235) %and.i.i.i.i.i236 = and i64 %93, -281474976710656 @@ -32024,7 +32012,7 @@ if.then.i.i.i.i230: ; preds = %if.then.i.i.i213 br label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i221 _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i221: ; preds = %for.body.i209, %if.then.i.i.i.i230, %if.then.i.i.i213 - %val41.sroa.6.1 = phi i32 [ %cond.i.i.i218, %if.then.i.i.i.i230 ], [ %val41.sroa.6.0, %if.then.i.i.i213 ], [ %val41.sroa.6.0, %for.body.i209 ] + %val41.sroa.6.1 = phi i32 [ %add10.i.i.i217, %if.then.i.i.i.i230 ], [ %val41.sroa.6.0, %if.then.i.i.i213 ], [ %val41.sroa.6.0, %for.body.i209 ] %val41.sroa.9.1 = phi ptr [ %96, %if.then.i.i.i.i230 ], [ %val41.sroa.9.0, %if.then.i.i.i213 ], [ %val41.sroa.9.0, %for.body.i209 ] %conv.i.i.i222 = fpext float %91 to double %97 = ptrtoint ptr %val41.sroa.9.1 to i64 @@ -34857,12 +34845,10 @@ for.body.i: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i, label %if.then.i.i.i48 if.then.i.i.i48: ; preds = %for.body.i - %cmp5.i.i.i = icmp eq i32 %val.sroa.6.0, 0 %add.i.i.i = add nuw nsw i32 %val.sroa.6.0, 1 %div1.i.i.i = lshr i32 %add.i.i.i, 1 %add10.i.i.i = add i32 %div1.i.i.i, %val.sroa.6.0 - %cond.i.i.i = select i1 %cmp5.i.i.i, i32 16, i32 %add10.i.i.i - %cmp.i.i.i.i = icmp ugt i32 %cond.i.i.i, %val.sroa.6.0 + %cmp.i.i.i.i = icmp ugt i32 %add10.i.i.i, %val.sroa.6.0 br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i if.then.i.i.i.i: ; preds = %if.then.i.i.i48 @@ -34870,7 +34856,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i48 %and.i12.i.i.i.i = and i64 %47, 281474976710655 %48 = inttoptr i64 %and.i12.i.i.i.i to ptr %mul.i.i.i.i = shl nuw nsw i64 %46, 4 - %conv4.i.i.i.i = zext i32 %cond.i.i.i to i64 + %conv4.i.i.i.i = zext i32 %add10.i.i.i to i64 %mul5.i.i.i.i = shl nuw nsw i64 %conv4.i.i.i.i, 4 %call6.i.i1.i.i52 = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %42, ptr noundef %48, i64 noundef %mul.i.i.i.i, i64 noundef %mul5.i.i.i.i) %and.i.i.i.i.i = and i64 %47, -281474976710656 @@ -34880,7 +34866,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i48 br label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i: ; preds = %for.body.i, %if.then.i.i.i.i, %if.then.i.i.i48 - %val.sroa.6.1 = phi i32 [ %cond.i.i.i, %if.then.i.i.i.i ], [ %val.sroa.6.0, %if.then.i.i.i48 ], [ %val.sroa.6.0, %for.body.i ] + %val.sroa.6.1 = phi i32 [ %add10.i.i.i, %if.then.i.i.i.i ], [ %val.sroa.6.0, %if.then.i.i.i48 ], [ %val.sroa.6.0, %for.body.i ] %val.sroa.9.1 = phi ptr [ %50, %if.then.i.i.i.i ], [ %val.sroa.9.0, %if.then.i.i.i48 ], [ %val.sroa.9.0, %for.body.i ] %conv.i.i.i49 = fpext float %45 to double %51 = ptrtoint ptr %val.sroa.9.1 to i64 diff --git a/bench/assimp/optimized/glTFExporter.cpp.ll b/bench/assimp/optimized/glTFExporter.cpp.ll index ea5fc76b135..3b0940486c7 100644 --- a/bench/assimp/optimized/glTFExporter.cpp.ll +++ b/bench/assimp/optimized/glTFExporter.cpp.ll @@ -50871,12 +50871,10 @@ for.body.i: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i, label %if.then.i.i.i17 if.then.i.i.i17: ; preds = %for.body.i - %cmp5.i.i.i = icmp eq i32 %col.sroa.6.0, 0 %add.i.i.i = add nuw nsw i32 %col.sroa.6.0, 1 %div1.i.i.i = lshr i32 %add.i.i.i, 1 %add10.i.i.i = add i32 %div1.i.i.i, %col.sroa.6.0 - %cond.i.i.i = select i1 %cmp5.i.i.i, i32 16, i32 %add10.i.i.i - %cmp.i.i.i.i = icmp ugt i32 %cond.i.i.i, %col.sroa.6.0 + %cmp.i.i.i.i = icmp ugt i32 %add10.i.i.i, %col.sroa.6.0 br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i if.then.i.i.i.i: ; preds = %if.then.i.i.i17 @@ -50884,7 +50882,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i17 %and.i.i.i.i.i = and i64 %25, 281474976710655 %26 = inttoptr i64 %and.i.i.i.i.i to ptr %mul.i.i.i.i = shl nuw nsw i64 %24, 4 - %conv4.i.i.i.i = zext i32 %cond.i.i.i to i64 + %conv4.i.i.i.i = zext i32 %add10.i.i.i to i64 %mul5.i.i.i.i = shl nuw nsw i64 %conv4.i.i.i.i, 4 %call6.i.i1.i.i21 = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %al, ptr noundef %26, i64 noundef %mul.i.i.i.i, i64 noundef %mul5.i.i.i.i) %and.i12.i.i.i.i = and i64 %25, -281474976710656 @@ -50895,7 +50893,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i17 _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i: ; preds = %for.body.i, %if.then.i.i.i.i, %if.then.i.i.i17 %col.sroa.9.1 = phi ptr [ %28, %if.then.i.i.i.i ], [ %col.sroa.9.0, %if.then.i.i.i17 ], [ %col.sroa.9.0, %for.body.i ] - %col.sroa.6.1 = phi i32 [ %cond.i.i.i, %if.then.i.i.i.i ], [ %col.sroa.6.0, %if.then.i.i.i17 ], [ %col.sroa.6.0, %for.body.i ] + %col.sroa.6.1 = phi i32 [ %add10.i.i.i, %if.then.i.i.i.i ], [ %col.sroa.6.0, %if.then.i.i.i17 ], [ %col.sroa.6.0, %for.body.i ] %conv.i.i.i18 = fpext float %23 to double %29 = ptrtoint ptr %col.sroa.9.1 to i64 %and.i.i.i.i = and i64 %29, 281474976710655 @@ -53232,12 +53230,10 @@ for.body.i: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i, label %if.then.i.i.i if.then.i.i.i: ; preds = %for.body.i - %cmp5.i.i.i = icmp eq i32 %val.sroa.6.0, 0 %add.i.i.i = add nuw nsw i32 %val.sroa.6.0, 1 %div1.i.i.i = lshr i32 %add.i.i.i, 1 %add10.i.i.i = add i32 %div1.i.i.i, %val.sroa.6.0 - %cond.i.i.i = select i1 %cmp5.i.i.i, i32 16, i32 %add10.i.i.i - %cmp.i.i.i.i = icmp ugt i32 %cond.i.i.i, %val.sroa.6.0 + %cmp.i.i.i.i = icmp ugt i32 %add10.i.i.i, %val.sroa.6.0 br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i if.then.i.i.i.i: ; preds = %if.then.i.i.i @@ -53245,7 +53241,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i %and.i.i.i.i.i = and i64 %6, 281474976710655 %7 = inttoptr i64 %and.i.i.i.i.i to ptr %mul.i.i.i.i = shl nuw nsw i64 %5, 4 - %conv4.i.i.i.i = zext i32 %cond.i.i.i to i64 + %conv4.i.i.i.i = zext i32 %add10.i.i.i to i64 %mul5.i.i.i.i = shl nuw nsw i64 %conv4.i.i.i.i, 4 %call6.i.i1.i.i38 = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %1, ptr noundef %7, i64 noundef %mul.i.i.i.i, i64 noundef %mul5.i.i.i.i) %and.i12.i.i.i.i = and i64 %6, -281474976710656 @@ -53256,7 +53252,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i: ; preds = %for.body.i, %if.then.i.i.i.i, %if.then.i.i.i %val.sroa.9.1 = phi ptr [ %9, %if.then.i.i.i.i ], [ %val.sroa.9.0, %if.then.i.i.i ], [ %val.sroa.9.0, %for.body.i ] - %val.sroa.6.1 = phi i32 [ %cond.i.i.i, %if.then.i.i.i.i ], [ %val.sroa.6.0, %if.then.i.i.i ], [ %val.sroa.6.0, %for.body.i ] + %val.sroa.6.1 = phi i32 [ %add10.i.i.i, %if.then.i.i.i.i ], [ %val.sroa.6.0, %if.then.i.i.i ], [ %val.sroa.6.0, %for.body.i ] %conv.i.i.i = fpext float %4 to double %10 = ptrtoint ptr %val.sroa.9.1 to i64 %and.i.i.i.i = and i64 %10, 281474976710655 @@ -53364,12 +53360,10 @@ for.body.i52: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i55, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i64, label %if.then.i.i.i56 if.then.i.i.i56: ; preds = %for.body.i52 - %cmp5.i.i.i57 = icmp eq i32 %val9.sroa.6.0, 0 %add.i.i.i58 = add nuw nsw i32 %val9.sroa.6.0, 1 %div1.i.i.i59 = lshr i32 %add.i.i.i58, 1 %add10.i.i.i60 = add i32 %div1.i.i.i59, %val9.sroa.6.0 - %cond.i.i.i61 = select i1 %cmp5.i.i.i57, i32 16, i32 %add10.i.i.i60 - %cmp.i.i.i.i62 = icmp ugt i32 %cond.i.i.i61, %val9.sroa.6.0 + %cmp.i.i.i.i62 = icmp ugt i32 %add10.i.i.i60, %val9.sroa.6.0 br i1 %cmp.i.i.i.i62, label %if.then.i.i.i.i73, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i64 if.then.i.i.i.i73: ; preds = %if.then.i.i.i56 @@ -53377,7 +53371,7 @@ if.then.i.i.i.i73: ; preds = %if.then.i.i.i56 %and.i.i.i.i.i74 = and i64 %35, 281474976710655 %36 = inttoptr i64 %and.i.i.i.i.i74 to ptr %mul.i.i.i.i76 = shl nuw nsw i64 %34, 4 - %conv4.i.i.i.i77 = zext i32 %cond.i.i.i61 to i64 + %conv4.i.i.i.i77 = zext i32 %add10.i.i.i60 to i64 %mul5.i.i.i.i78 = shl nuw nsw i64 %conv4.i.i.i.i77, 4 %call6.i.i1.i.i87 = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %30, ptr noundef %36, i64 noundef %mul.i.i.i.i76, i64 noundef %mul5.i.i.i.i78) %and.i12.i.i.i.i79 = and i64 %35, -281474976710656 @@ -53388,7 +53382,7 @@ if.then.i.i.i.i73: ; preds = %if.then.i.i.i56 _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i64: ; preds = %for.body.i52, %if.then.i.i.i.i73, %if.then.i.i.i56 %val9.sroa.9.1 = phi ptr [ %38, %if.then.i.i.i.i73 ], [ %val9.sroa.9.0, %if.then.i.i.i56 ], [ %val9.sroa.9.0, %for.body.i52 ] - %val9.sroa.6.1 = phi i32 [ %cond.i.i.i61, %if.then.i.i.i.i73 ], [ %val9.sroa.6.0, %if.then.i.i.i56 ], [ %val9.sroa.6.0, %for.body.i52 ] + %val9.sroa.6.1 = phi i32 [ %add10.i.i.i60, %if.then.i.i.i.i73 ], [ %val9.sroa.6.0, %if.then.i.i.i56 ], [ %val9.sroa.6.0, %for.body.i52 ] %conv.i.i.i65 = fpext float %33 to double %39 = ptrtoint ptr %val9.sroa.9.1 to i64 %and.i.i.i.i66 = and i64 %39, 281474976710655 @@ -53496,12 +53490,10 @@ for.body.i130: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i133, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i142, label %if.then.i.i.i134 if.then.i.i.i134: ; preds = %for.body.i130 - %cmp5.i.i.i135 = icmp eq i32 %val25.sroa.6.0, 0 %add.i.i.i136 = add nuw nsw i32 %val25.sroa.6.0, 1 %div1.i.i.i137 = lshr i32 %add.i.i.i136, 1 %add10.i.i.i138 = add i32 %div1.i.i.i137, %val25.sroa.6.0 - %cond.i.i.i139 = select i1 %cmp5.i.i.i135, i32 16, i32 %add10.i.i.i138 - %cmp.i.i.i.i140 = icmp ugt i32 %cond.i.i.i139, %val25.sroa.6.0 + %cmp.i.i.i.i140 = icmp ugt i32 %add10.i.i.i138, %val25.sroa.6.0 br i1 %cmp.i.i.i.i140, label %if.then.i.i.i.i151, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i142 if.then.i.i.i.i151: ; preds = %if.then.i.i.i134 @@ -53509,7 +53501,7 @@ if.then.i.i.i.i151: ; preds = %if.then.i.i.i134 %and.i.i.i.i.i152 = and i64 %64, 281474976710655 %65 = inttoptr i64 %and.i.i.i.i.i152 to ptr %mul.i.i.i.i154 = shl nuw nsw i64 %63, 4 - %conv4.i.i.i.i155 = zext i32 %cond.i.i.i139 to i64 + %conv4.i.i.i.i155 = zext i32 %add10.i.i.i138 to i64 %mul5.i.i.i.i156 = shl nuw nsw i64 %conv4.i.i.i.i155, 4 %call6.i.i1.i.i165 = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %59, ptr noundef %65, i64 noundef %mul.i.i.i.i154, i64 noundef %mul5.i.i.i.i156) %and.i12.i.i.i.i157 = and i64 %64, -281474976710656 @@ -53520,7 +53512,7 @@ if.then.i.i.i.i151: ; preds = %if.then.i.i.i134 _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i142: ; preds = %for.body.i130, %if.then.i.i.i.i151, %if.then.i.i.i134 %val25.sroa.9.1 = phi ptr [ %67, %if.then.i.i.i.i151 ], [ %val25.sroa.9.0, %if.then.i.i.i134 ], [ %val25.sroa.9.0, %for.body.i130 ] - %val25.sroa.6.1 = phi i32 [ %cond.i.i.i139, %if.then.i.i.i.i151 ], [ %val25.sroa.6.0, %if.then.i.i.i134 ], [ %val25.sroa.6.0, %for.body.i130 ] + %val25.sroa.6.1 = phi i32 [ %add10.i.i.i138, %if.then.i.i.i.i151 ], [ %val25.sroa.6.0, %if.then.i.i.i134 ], [ %val25.sroa.6.0, %for.body.i130 ] %conv.i.i.i143 = fpext float %62 to double %68 = ptrtoint ptr %val25.sroa.9.1 to i64 %and.i.i.i.i144 = and i64 %68, 281474976710655 @@ -53628,12 +53620,10 @@ for.body.i209: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i212, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i221, label %if.then.i.i.i213 if.then.i.i.i213: ; preds = %for.body.i209 - %cmp5.i.i.i214 = icmp eq i32 %val41.sroa.6.0, 0 %add.i.i.i215 = add nuw nsw i32 %val41.sroa.6.0, 1 %div1.i.i.i216 = lshr i32 %add.i.i.i215, 1 %add10.i.i.i217 = add i32 %div1.i.i.i216, %val41.sroa.6.0 - %cond.i.i.i218 = select i1 %cmp5.i.i.i214, i32 16, i32 %add10.i.i.i217 - %cmp.i.i.i.i219 = icmp ugt i32 %cond.i.i.i218, %val41.sroa.6.0 + %cmp.i.i.i.i219 = icmp ugt i32 %add10.i.i.i217, %val41.sroa.6.0 br i1 %cmp.i.i.i.i219, label %if.then.i.i.i.i230, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i221 if.then.i.i.i.i230: ; preds = %if.then.i.i.i213 @@ -53641,7 +53631,7 @@ if.then.i.i.i.i230: ; preds = %if.then.i.i.i213 %and.i.i.i.i.i231 = and i64 %93, 281474976710655 %94 = inttoptr i64 %and.i.i.i.i.i231 to ptr %mul.i.i.i.i233 = shl nuw nsw i64 %92, 4 - %conv4.i.i.i.i234 = zext i32 %cond.i.i.i218 to i64 + %conv4.i.i.i.i234 = zext i32 %add10.i.i.i217 to i64 %mul5.i.i.i.i235 = shl nuw nsw i64 %conv4.i.i.i.i234, 4 %call6.i.i1.i.i244 = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %88, ptr noundef %94, i64 noundef %mul.i.i.i.i233, i64 noundef %mul5.i.i.i.i235) %and.i12.i.i.i.i236 = and i64 %93, -281474976710656 @@ -53651,7 +53641,7 @@ if.then.i.i.i.i230: ; preds = %if.then.i.i.i213 br label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i221 _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i221: ; preds = %for.body.i209, %if.then.i.i.i.i230, %if.then.i.i.i213 - %val41.sroa.6.1 = phi i32 [ %cond.i.i.i218, %if.then.i.i.i.i230 ], [ %val41.sroa.6.0, %if.then.i.i.i213 ], [ %val41.sroa.6.0, %for.body.i209 ] + %val41.sroa.6.1 = phi i32 [ %add10.i.i.i217, %if.then.i.i.i.i230 ], [ %val41.sroa.6.0, %if.then.i.i.i213 ], [ %val41.sroa.6.0, %for.body.i209 ] %val41.sroa.9.1 = phi ptr [ %96, %if.then.i.i.i.i230 ], [ %val41.sroa.9.0, %if.then.i.i.i213 ], [ %val41.sroa.9.0, %for.body.i209 ] %conv.i.i.i222 = fpext float %91 to double %97 = ptrtoint ptr %val41.sroa.9.1 to i64 @@ -56567,12 +56557,10 @@ for.body.i: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i35, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i, label %if.then.i.i.i36 if.then.i.i.i36: ; preds = %for.body.i - %cmp5.i.i.i37 = icmp eq i32 %val.sroa.6.0, 0 %add.i.i.i38 = add nuw nsw i32 %val.sroa.6.0, 1 %div1.i.i.i39 = lshr i32 %add.i.i.i38, 1 %add10.i.i.i40 = add i32 %div1.i.i.i39, %val.sroa.6.0 - %cond.i.i.i41 = select i1 %cmp5.i.i.i37, i32 16, i32 %add10.i.i.i40 - %cmp.i.i.i.i42 = icmp ugt i32 %cond.i.i.i41, %val.sroa.6.0 + %cmp.i.i.i.i42 = icmp ugt i32 %add10.i.i.i40, %val.sroa.6.0 br i1 %cmp.i.i.i.i42, label %if.then.i.i.i.i48, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i if.then.i.i.i.i48: ; preds = %if.then.i.i.i36 @@ -56580,7 +56568,7 @@ if.then.i.i.i.i48: ; preds = %if.then.i.i.i36 %and.i.i.i.i.i = and i64 %48, 281474976710655 %49 = inttoptr i64 %and.i.i.i.i.i to ptr %mul.i.i.i.i50 = shl nuw nsw i64 %47, 4 - %conv4.i.i.i.i51 = zext i32 %cond.i.i.i41 to i64 + %conv4.i.i.i.i51 = zext i32 %add10.i.i.i40 to i64 %mul5.i.i.i.i52 = shl nuw nsw i64 %conv4.i.i.i.i51, 4 %call6.i.i1.i.i57 = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %43, ptr noundef %49, i64 noundef %mul.i.i.i.i50, i64 noundef %mul5.i.i.i.i52) %and.i12.i.i.i.i53 = and i64 %48, -281474976710656 @@ -56590,7 +56578,7 @@ if.then.i.i.i.i48: ; preds = %if.then.i.i.i36 br label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i: ; preds = %for.body.i, %if.then.i.i.i.i48, %if.then.i.i.i36 - %val.sroa.6.1 = phi i32 [ %cond.i.i.i41, %if.then.i.i.i.i48 ], [ %val.sroa.6.0, %if.then.i.i.i36 ], [ %val.sroa.6.0, %for.body.i ] + %val.sroa.6.1 = phi i32 [ %add10.i.i.i40, %if.then.i.i.i.i48 ], [ %val.sroa.6.0, %if.then.i.i.i36 ], [ %val.sroa.6.0, %for.body.i ] %val.sroa.9.1 = phi ptr [ %51, %if.then.i.i.i.i48 ], [ %val.sroa.9.0, %if.then.i.i.i36 ], [ %val.sroa.9.0, %for.body.i ] %conv.i.i.i43 = fpext float %46 to double %52 = ptrtoint ptr %val.sroa.9.1 to i64 @@ -66265,7 +66253,7 @@ invoke.cont141: ; preds = %if.else18.i99, %if. %nb1.1 = phi float [ %nb1.0136, %if.else18.i99 ], [ %fneg.i28.y.i, %if.then.i92 ], [ %fneg.i.x49.i, %if.then11.i97 ], [ %fneg.i31.z52.i, %if.then22.i101 ] %na1.1 = phi float [ %na1.0137, %if.else18.i99 ], [ %fneg.i.x.i, %if.then.i92 ], [ %fneg.i31.z.i, %if.then11.i97 ], [ %fneg.i28.y51.i, %if.then22.i101 ] %conv144 = zext nneg i8 %ni1.1 to i64 - %conv145 = sext i8 %ni0.2 to i64 + %conv145 = zext nneg i8 %ni0.2 to i64 %sub = sub nsw i64 %conv144, %conv145 %37 = load i64, ptr %m_size.i, align 8 %38 = load i64, ptr %m_allocated.i, align 8 @@ -66312,7 +66300,7 @@ invoke.cont147: ; preds = %if.end14.i, %entry. %arrayidx.i105 = getelementptr inbounds i64, ptr %44, i64 %43 store i64 %sub, ptr %arrayidx.i105, align 8 %cmp151.not.unshifted = xor i8 %ni1.1, %ni0.2 - %cmp151.not = icmp ult i8 %cmp151.not.unshifted, 2 + %cmp151.not = icmp samesign ult i8 %cmp151.not.unshifted, 2 %rnb0.0 = select i1 %cmp151.not, float %div104, float 0.000000e+00 %rna0.0 = select i1 %cmp151.not, float %div, float 0.000000e+00 %sub154 = fsub float %na1.1, %rna0.0 diff --git a/bench/assimp/optimized/glTFImporter.cpp.ll b/bench/assimp/optimized/glTFImporter.cpp.ll index d8b39d44895..1bdae77fbe7 100644 --- a/bench/assimp/optimized/glTFImporter.cpp.ll +++ b/bench/assimp/optimized/glTFImporter.cpp.ll @@ -19540,12 +19540,10 @@ for.body.i: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i, label %if.then.i.i.i17 if.then.i.i.i17: ; preds = %for.body.i - %cmp5.i.i.i = icmp eq i32 %col.sroa.6.0, 0 %add.i.i.i = add nuw nsw i32 %col.sroa.6.0, 1 %div1.i.i.i = lshr i32 %add.i.i.i, 1 %add10.i.i.i = add i32 %div1.i.i.i, %col.sroa.6.0 - %cond.i.i.i = select i1 %cmp5.i.i.i, i32 16, i32 %add10.i.i.i - %cmp.i.i.i.i = icmp ugt i32 %cond.i.i.i, %col.sroa.6.0 + %cmp.i.i.i.i = icmp ugt i32 %add10.i.i.i, %col.sroa.6.0 br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i if.then.i.i.i.i: ; preds = %if.then.i.i.i17 @@ -19553,7 +19551,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i17 %and.i12.i.i.i.i = and i64 %25, 281474976710655 %26 = inttoptr i64 %and.i12.i.i.i.i to ptr %mul.i.i.i.i = shl nuw nsw i64 %24, 4 - %conv4.i.i.i.i = zext i32 %cond.i.i.i to i64 + %conv4.i.i.i.i = zext i32 %add10.i.i.i to i64 %mul5.i.i.i.i = shl nuw nsw i64 %conv4.i.i.i.i, 4 %call6.i.i1.i.i21 = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %al, ptr noundef %26, i64 noundef %mul.i.i.i.i, i64 noundef %mul5.i.i.i.i) %and.i.i.i.i.i = and i64 %25, -281474976710656 @@ -19564,7 +19562,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i17 _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i: ; preds = %for.body.i, %if.then.i.i.i.i, %if.then.i.i.i17 %col.sroa.9.1 = phi ptr [ %28, %if.then.i.i.i.i ], [ %col.sroa.9.0, %if.then.i.i.i17 ], [ %col.sroa.9.0, %for.body.i ] - %col.sroa.6.1 = phi i32 [ %cond.i.i.i, %if.then.i.i.i.i ], [ %col.sroa.6.0, %if.then.i.i.i17 ], [ %col.sroa.6.0, %for.body.i ] + %col.sroa.6.1 = phi i32 [ %add10.i.i.i, %if.then.i.i.i.i ], [ %col.sroa.6.0, %if.then.i.i.i17 ], [ %col.sroa.6.0, %for.body.i ] %conv.i.i.i18 = fpext float %23 to double %29 = ptrtoint ptr %col.sroa.9.1 to i64 %and.i.i.i.i = and i64 %29, 281474976710655 @@ -21904,12 +21902,10 @@ for.body.i: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i, label %if.then.i.i.i if.then.i.i.i: ; preds = %for.body.i - %cmp5.i.i.i = icmp eq i32 %val.sroa.6.0, 0 %add.i.i.i = add nuw nsw i32 %val.sroa.6.0, 1 %div1.i.i.i = lshr i32 %add.i.i.i, 1 %add10.i.i.i = add i32 %div1.i.i.i, %val.sroa.6.0 - %cond.i.i.i = select i1 %cmp5.i.i.i, i32 16, i32 %add10.i.i.i - %cmp.i.i.i.i = icmp ugt i32 %cond.i.i.i, %val.sroa.6.0 + %cmp.i.i.i.i = icmp ugt i32 %add10.i.i.i, %val.sroa.6.0 br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i if.then.i.i.i.i: ; preds = %if.then.i.i.i @@ -21917,7 +21913,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i %and.i12.i.i.i.i = and i64 %6, 281474976710655 %7 = inttoptr i64 %and.i12.i.i.i.i to ptr %mul.i.i.i.i = shl nuw nsw i64 %5, 4 - %conv4.i.i.i.i = zext i32 %cond.i.i.i to i64 + %conv4.i.i.i.i = zext i32 %add10.i.i.i to i64 %mul5.i.i.i.i = shl nuw nsw i64 %conv4.i.i.i.i, 4 %call6.i.i1.i.i38 = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %1, ptr noundef %7, i64 noundef %mul.i.i.i.i, i64 noundef %mul5.i.i.i.i) %and.i.i.i.i.i = and i64 %6, -281474976710656 @@ -21928,7 +21924,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i: ; preds = %for.body.i, %if.then.i.i.i.i, %if.then.i.i.i %val.sroa.9.1 = phi ptr [ %9, %if.then.i.i.i.i ], [ %val.sroa.9.0, %if.then.i.i.i ], [ %val.sroa.9.0, %for.body.i ] - %val.sroa.6.1 = phi i32 [ %cond.i.i.i, %if.then.i.i.i.i ], [ %val.sroa.6.0, %if.then.i.i.i ], [ %val.sroa.6.0, %for.body.i ] + %val.sroa.6.1 = phi i32 [ %add10.i.i.i, %if.then.i.i.i.i ], [ %val.sroa.6.0, %if.then.i.i.i ], [ %val.sroa.6.0, %for.body.i ] %conv.i.i.i = fpext float %4 to double %10 = ptrtoint ptr %val.sroa.9.1 to i64 %and.i.i.i.i = and i64 %10, 281474976710655 @@ -22036,12 +22032,10 @@ for.body.i52: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i55, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i64, label %if.then.i.i.i56 if.then.i.i.i56: ; preds = %for.body.i52 - %cmp5.i.i.i57 = icmp eq i32 %val9.sroa.6.0, 0 %add.i.i.i58 = add nuw nsw i32 %val9.sroa.6.0, 1 %div1.i.i.i59 = lshr i32 %add.i.i.i58, 1 %add10.i.i.i60 = add i32 %div1.i.i.i59, %val9.sroa.6.0 - %cond.i.i.i61 = select i1 %cmp5.i.i.i57, i32 16, i32 %add10.i.i.i60 - %cmp.i.i.i.i62 = icmp ugt i32 %cond.i.i.i61, %val9.sroa.6.0 + %cmp.i.i.i.i62 = icmp ugt i32 %add10.i.i.i60, %val9.sroa.6.0 br i1 %cmp.i.i.i.i62, label %if.then.i.i.i.i73, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i64 if.then.i.i.i.i73: ; preds = %if.then.i.i.i56 @@ -22049,7 +22043,7 @@ if.then.i.i.i.i73: ; preds = %if.then.i.i.i56 %and.i12.i.i.i.i74 = and i64 %35, 281474976710655 %36 = inttoptr i64 %and.i12.i.i.i.i74 to ptr %mul.i.i.i.i76 = shl nuw nsw i64 %34, 4 - %conv4.i.i.i.i77 = zext i32 %cond.i.i.i61 to i64 + %conv4.i.i.i.i77 = zext i32 %add10.i.i.i60 to i64 %mul5.i.i.i.i78 = shl nuw nsw i64 %conv4.i.i.i.i77, 4 %call6.i.i1.i.i87 = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %30, ptr noundef %36, i64 noundef %mul.i.i.i.i76, i64 noundef %mul5.i.i.i.i78) %and.i.i.i.i.i79 = and i64 %35, -281474976710656 @@ -22060,7 +22054,7 @@ if.then.i.i.i.i73: ; preds = %if.then.i.i.i56 _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i64: ; preds = %for.body.i52, %if.then.i.i.i.i73, %if.then.i.i.i56 %val9.sroa.9.1 = phi ptr [ %38, %if.then.i.i.i.i73 ], [ %val9.sroa.9.0, %if.then.i.i.i56 ], [ %val9.sroa.9.0, %for.body.i52 ] - %val9.sroa.6.1 = phi i32 [ %cond.i.i.i61, %if.then.i.i.i.i73 ], [ %val9.sroa.6.0, %if.then.i.i.i56 ], [ %val9.sroa.6.0, %for.body.i52 ] + %val9.sroa.6.1 = phi i32 [ %add10.i.i.i60, %if.then.i.i.i.i73 ], [ %val9.sroa.6.0, %if.then.i.i.i56 ], [ %val9.sroa.6.0, %for.body.i52 ] %conv.i.i.i65 = fpext float %33 to double %39 = ptrtoint ptr %val9.sroa.9.1 to i64 %and.i.i.i.i66 = and i64 %39, 281474976710655 @@ -22168,12 +22162,10 @@ for.body.i130: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i133, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i142, label %if.then.i.i.i134 if.then.i.i.i134: ; preds = %for.body.i130 - %cmp5.i.i.i135 = icmp eq i32 %val25.sroa.6.0, 0 %add.i.i.i136 = add nuw nsw i32 %val25.sroa.6.0, 1 %div1.i.i.i137 = lshr i32 %add.i.i.i136, 1 %add10.i.i.i138 = add i32 %div1.i.i.i137, %val25.sroa.6.0 - %cond.i.i.i139 = select i1 %cmp5.i.i.i135, i32 16, i32 %add10.i.i.i138 - %cmp.i.i.i.i140 = icmp ugt i32 %cond.i.i.i139, %val25.sroa.6.0 + %cmp.i.i.i.i140 = icmp ugt i32 %add10.i.i.i138, %val25.sroa.6.0 br i1 %cmp.i.i.i.i140, label %if.then.i.i.i.i151, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i142 if.then.i.i.i.i151: ; preds = %if.then.i.i.i134 @@ -22181,7 +22173,7 @@ if.then.i.i.i.i151: ; preds = %if.then.i.i.i134 %and.i12.i.i.i.i152 = and i64 %64, 281474976710655 %65 = inttoptr i64 %and.i12.i.i.i.i152 to ptr %mul.i.i.i.i154 = shl nuw nsw i64 %63, 4 - %conv4.i.i.i.i155 = zext i32 %cond.i.i.i139 to i64 + %conv4.i.i.i.i155 = zext i32 %add10.i.i.i138 to i64 %mul5.i.i.i.i156 = shl nuw nsw i64 %conv4.i.i.i.i155, 4 %call6.i.i1.i.i165 = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %59, ptr noundef %65, i64 noundef %mul.i.i.i.i154, i64 noundef %mul5.i.i.i.i156) %and.i.i.i.i.i157 = and i64 %64, -281474976710656 @@ -22192,7 +22184,7 @@ if.then.i.i.i.i151: ; preds = %if.then.i.i.i134 _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i142: ; preds = %for.body.i130, %if.then.i.i.i.i151, %if.then.i.i.i134 %val25.sroa.9.1 = phi ptr [ %67, %if.then.i.i.i.i151 ], [ %val25.sroa.9.0, %if.then.i.i.i134 ], [ %val25.sroa.9.0, %for.body.i130 ] - %val25.sroa.6.1 = phi i32 [ %cond.i.i.i139, %if.then.i.i.i.i151 ], [ %val25.sroa.6.0, %if.then.i.i.i134 ], [ %val25.sroa.6.0, %for.body.i130 ] + %val25.sroa.6.1 = phi i32 [ %add10.i.i.i138, %if.then.i.i.i.i151 ], [ %val25.sroa.6.0, %if.then.i.i.i134 ], [ %val25.sroa.6.0, %for.body.i130 ] %conv.i.i.i143 = fpext float %62 to double %68 = ptrtoint ptr %val25.sroa.9.1 to i64 %and.i.i.i.i144 = and i64 %68, 281474976710655 @@ -22300,12 +22292,10 @@ for.body.i209: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i212, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i221, label %if.then.i.i.i213 if.then.i.i.i213: ; preds = %for.body.i209 - %cmp5.i.i.i214 = icmp eq i32 %val41.sroa.6.0, 0 %add.i.i.i215 = add nuw nsw i32 %val41.sroa.6.0, 1 %div1.i.i.i216 = lshr i32 %add.i.i.i215, 1 %add10.i.i.i217 = add i32 %div1.i.i.i216, %val41.sroa.6.0 - %cond.i.i.i218 = select i1 %cmp5.i.i.i214, i32 16, i32 %add10.i.i.i217 - %cmp.i.i.i.i219 = icmp ugt i32 %cond.i.i.i218, %val41.sroa.6.0 + %cmp.i.i.i.i219 = icmp ugt i32 %add10.i.i.i217, %val41.sroa.6.0 br i1 %cmp.i.i.i.i219, label %if.then.i.i.i.i230, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i221 if.then.i.i.i.i230: ; preds = %if.then.i.i.i213 @@ -22313,7 +22303,7 @@ if.then.i.i.i.i230: ; preds = %if.then.i.i.i213 %and.i12.i.i.i.i231 = and i64 %93, 281474976710655 %94 = inttoptr i64 %and.i12.i.i.i.i231 to ptr %mul.i.i.i.i233 = shl nuw nsw i64 %92, 4 - %conv4.i.i.i.i234 = zext i32 %cond.i.i.i218 to i64 + %conv4.i.i.i.i234 = zext i32 %add10.i.i.i217 to i64 %mul5.i.i.i.i235 = shl nuw nsw i64 %conv4.i.i.i.i234, 4 %call6.i.i1.i.i244 = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %88, ptr noundef %94, i64 noundef %mul.i.i.i.i233, i64 noundef %mul5.i.i.i.i235) %and.i.i.i.i.i236 = and i64 %93, -281474976710656 @@ -22323,7 +22313,7 @@ if.then.i.i.i.i230: ; preds = %if.then.i.i.i213 br label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i221 _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i221: ; preds = %for.body.i209, %if.then.i.i.i.i230, %if.then.i.i.i213 - %val41.sroa.6.1 = phi i32 [ %cond.i.i.i218, %if.then.i.i.i.i230 ], [ %val41.sroa.6.0, %if.then.i.i.i213 ], [ %val41.sroa.6.0, %for.body.i209 ] + %val41.sroa.6.1 = phi i32 [ %add10.i.i.i217, %if.then.i.i.i.i230 ], [ %val41.sroa.6.0, %if.then.i.i.i213 ], [ %val41.sroa.6.0, %for.body.i209 ] %val41.sroa.9.1 = phi ptr [ %96, %if.then.i.i.i.i230 ], [ %val41.sroa.9.0, %if.then.i.i.i213 ], [ %val41.sroa.9.0, %for.body.i209 ] %conv.i.i.i222 = fpext float %91 to double %97 = ptrtoint ptr %val41.sroa.9.1 to i64 @@ -25239,12 +25229,10 @@ for.body.i: ; preds = %_ZN9rapidjson12Gene br i1 %cmp.not.i.i.i35, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i, label %if.then.i.i.i36 if.then.i.i.i36: ; preds = %for.body.i - %cmp5.i.i.i37 = icmp eq i32 %val.sroa.6.0, 0 %add.i.i.i38 = add nuw nsw i32 %val.sroa.6.0, 1 %div1.i.i.i39 = lshr i32 %add.i.i.i38, 1 %add10.i.i.i40 = add i32 %div1.i.i.i39, %val.sroa.6.0 - %cond.i.i.i41 = select i1 %cmp5.i.i.i37, i32 16, i32 %add10.i.i.i40 - %cmp.i.i.i.i42 = icmp ugt i32 %cond.i.i.i41, %val.sroa.6.0 + %cmp.i.i.i.i42 = icmp ugt i32 %add10.i.i.i40, %val.sroa.6.0 br i1 %cmp.i.i.i.i42, label %if.then.i.i.i.i48, label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i if.then.i.i.i.i48: ; preds = %if.then.i.i.i36 @@ -25252,7 +25240,7 @@ if.then.i.i.i.i48: ; preds = %if.then.i.i.i36 %and.i12.i.i.i.i49 = and i64 %48, 281474976710655 %49 = inttoptr i64 %and.i12.i.i.i.i49 to ptr %mul.i.i.i.i51 = shl nuw nsw i64 %47, 4 - %conv4.i.i.i.i52 = zext i32 %cond.i.i.i41 to i64 + %conv4.i.i.i.i52 = zext i32 %add10.i.i.i40 to i64 %mul5.i.i.i.i53 = shl nuw nsw i64 %conv4.i.i.i.i52, 4 %call6.i.i1.i.i57 = tail call noundef ptr @_ZN9rapidjson19MemoryPoolAllocatorINS_12CrtAllocatorEE7ReallocEPvmm(ptr noundef nonnull align 8 dereferenceable(40) %43, ptr noundef %49, i64 noundef %mul.i.i.i.i51, i64 noundef %mul5.i.i.i.i53) %and.i.i.i.i.i = and i64 %48, -281474976710656 @@ -25262,7 +25250,7 @@ if.then.i.i.i.i48: ; preds = %if.then.i.i.i36 br label %_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i _ZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEE8PushBackIfEENS_8internal9DisableIfINS8_15RemoveSfinaeTagIPFRNS8_9SfinaeTagENS8_6OrExprINS8_9IsPointerIT_EENS8_14IsGenericValueISF_EEEEEE4TypeERS6_E4TypeESF_RS5_.exit.i: ; preds = %for.body.i, %if.then.i.i.i.i48, %if.then.i.i.i36 - %val.sroa.6.1 = phi i32 [ %cond.i.i.i41, %if.then.i.i.i.i48 ], [ %val.sroa.6.0, %if.then.i.i.i36 ], [ %val.sroa.6.0, %for.body.i ] + %val.sroa.6.1 = phi i32 [ %add10.i.i.i40, %if.then.i.i.i.i48 ], [ %val.sroa.6.0, %if.then.i.i.i36 ], [ %val.sroa.6.0, %for.body.i ] %val.sroa.9.1 = phi ptr [ %51, %if.then.i.i.i.i48 ], [ %val.sroa.9.0, %if.then.i.i.i36 ], [ %val.sroa.9.0, %for.body.i ] %conv.i.i.i43 = fpext float %46 to double %52 = ptrtoint ptr %val.sroa.9.1 to i64 diff --git a/bench/assimp/optimized/sweep_context.cc.ll b/bench/assimp/optimized/sweep_context.cc.ll index 52934597f7c..991fffa7336 100644 --- a/bench/assimp/optimized/sweep_context.cc.ll +++ b/bench/assimp/optimized/sweep_context.cc.ll @@ -1473,17 +1473,10 @@ if.end13: ; preds = %for.inc, %land.lhs. %triangles.sroa.8.1 = phi ptr [ %add.ptr.i.i, %while.body ], [ %add.ptr.i.i, %land.lhs.true ], [ %triangles.sroa.8.3, %for.inc ] %triangles.sroa.0.2 = phi ptr [ %triangles.sroa.0.195, %while.body ], [ %triangles.sroa.0.195, %land.lhs.true ], [ %triangles.sroa.0.4, %for.inc ] %cmp.i.i = icmp eq ptr %triangles.sroa.0.2, %triangles.sroa.8.1 - br i1 %cmp.i.i, label %while.end, label %while.body, !llvm.loop !15 + br i1 %cmp.i.i, label %_ZNSt6vectorIPN3p2t8TriangleESaIS2_EED2Ev.exit54, label %while.body, !llvm.loop !15 -while.end: ; preds = %if.end13 - %tobool.not.i.i.i52 = icmp eq ptr %triangles.sroa.8.1, null - br i1 %tobool.not.i.i.i52, label %_ZNSt6vectorIPN3p2t8TriangleESaIS2_EED2Ev.exit54, label %if.then.i.i.i53 - -if.then.i.i.i53: ; preds = %while.end +_ZNSt6vectorIPN3p2t8TriangleESaIS2_EED2Ev.exit54: ; preds = %if.end13 tail call void @_ZdlPv(ptr noundef nonnull %triangles.sroa.0.2) #20 - br label %_ZNSt6vectorIPN3p2t8TriangleESaIS2_EED2Ev.exit54 - -_ZNSt6vectorIPN3p2t8TriangleESaIS2_EED2Ev.exit54: ; preds = %while.end, %if.then.i.i.i53 ret void } diff --git a/bench/c3c/optimized/parse_global.c.ll b/bench/c3c/optimized/parse_global.c.ll index aee9c6321b4..5a47e84f8ec 100644 --- a/bench/c3c/optimized/parse_global.c.ll +++ b/bench/c3c/optimized/parse_global.c.ll @@ -4906,10 +4906,9 @@ define internal fastcc noundef zeroext i1 @parse_bitstruct_body(ptr noundef %0, %147 = getelementptr inbounds i8, ptr %1, i64 112 %148 = load i8, ptr %147, align 8 %149 = shl nuw nsw i8 %.0114.ph.lcssa158, 4 - %150 = and i8 %149, 16 - %151 = and i8 %148, -17 - %152 = or disjoint i8 %151, %150 - store i8 %152, ptr %147, align 8 + %150 = and i8 %148, -17 + %151 = add nuw nsw i8 %150, %149 + store i8 %151, ptr %147, align 8 br label %.loopexit .loopexit: ; preds = %97, %85, %17, %80, %6, %.outer._crit_edge, %108, %104, %38, %31, %28 diff --git a/bench/casadi/optimized/cvodes.c.ll b/bench/casadi/optimized/cvodes.c.ll index bd1703d0ea2..ff769cf574f 100644 --- a/bench/casadi/optimized/cvodes.c.ll +++ b/bench/casadi/optimized/cvodes.c.ll @@ -6363,15 +6363,10 @@ define internal fastcc range(i32 -12, 4) i32 @cvRcheck2(ptr noundef nonnull %0) %122 = load i32, ptr %23, align 8 %123 = sext i32 %122 to i64 %124 = icmp slt i64 %indvars.iv.next98, %123 - br i1 %124, label %98, label %._crit_edge91.loopexit, !llvm.loop !56 + br i1 %124, label %98, label %.loopexit, !llvm.loop !56 -._crit_edge91.loopexit: ; preds = %121 - %125 = icmp ne i32 %.3, 0 - %126 = zext i1 %125 to i32 - br label %.loopexit - -.loopexit: ; preds = %112, %.preheader82, %.preheader81, %.preheader, %._crit_edge91.loopexit, %85, %._crit_edge, %5, %1 - %.072 = phi i32 [ 0, %1 ], [ -12, %5 ], [ 0, %._crit_edge ], [ -12, %85 ], [ 0, %.preheader ], [ %126, %._crit_edge91.loopexit ], [ 0, %.preheader81 ], [ 0, %.preheader82 ], [ 3, %112 ] +.loopexit: ; preds = %112, %121, %.preheader82, %.preheader81, %.preheader, %85, %._crit_edge, %5, %1 + %.072 = phi i32 [ 0, %1 ], [ -12, %5 ], [ 0, %._crit_edge ], [ -12, %85 ], [ 0, %.preheader ], [ 0, %.preheader81 ], [ 0, %.preheader82 ], [ 3, %112 ], [ %.3, %121 ] ret i32 %.072 } @@ -12554,7 +12549,7 @@ cvPrepareNextStep.exit: ; preds = %2059, %2082, %2103, br i1 %exitcond420.not.i.i, label %2750, label %2745, !llvm.loop !143 2750: ; preds = %2745 - %2751 = sext i32 %.2301.i.i to i64 + %2751 = zext nneg i32 %.2301.i.i to i64 %2752 = getelementptr inbounds [4 x double], ptr %7, i64 0, i64 %2751 %2753 = load double, ptr %2752, align 8 %2754 = fcmp olt double %.3320.i.i, 1.000000e-03 diff --git a/bench/casadi/optimized/idas.c.ll b/bench/casadi/optimized/idas.c.ll index 87c1fa91803..0e5ba4ea2d6 100644 --- a/bench/casadi/optimized/idas.c.ll +++ b/bench/casadi/optimized/idas.c.ll @@ -8018,15 +8018,10 @@ define internal fastcc range(i32 -10, 4) i32 @IDARcheck2(ptr noundef nonnull %0) %127 = load i32, ptr %26, align 8 %128 = sext i32 %127 to i64 %129 = icmp slt i64 %indvars.iv.next102, %128 - br i1 %129, label %103, label %._crit_edge95.loopexit, !llvm.loop !84 + br i1 %129, label %103, label %.loopexit, !llvm.loop !84 -._crit_edge95.loopexit: ; preds = %126 - %130 = icmp ne i32 %.3, 0 - %131 = zext i1 %130 to i32 - br label %.loopexit - -.loopexit: ; preds = %117, %.preheader86, %.preheader85, %.preheader, %._crit_edge95.loopexit, %89, %._crit_edge, %5, %1 - %.076 = phi i32 [ 0, %1 ], [ -10, %5 ], [ 0, %._crit_edge ], [ -10, %89 ], [ 0, %.preheader ], [ %131, %._crit_edge95.loopexit ], [ 0, %.preheader85 ], [ 0, %.preheader86 ], [ 3, %117 ] +.loopexit: ; preds = %117, %126, %.preheader86, %.preheader85, %.preheader, %89, %._crit_edge, %5, %1 + %.076 = phi i32 [ 0, %1 ], [ -10, %5 ], [ 0, %._crit_edge ], [ -10, %89 ], [ 0, %.preheader ], [ 0, %.preheader85 ], [ 0, %.preheader86 ], [ 3, %117 ], [ %.3, %126 ] ret i32 %.076 } diff --git a/bench/clamav/optimized/clamsubmit.c.ll b/bench/clamav/optimized/clamsubmit.c.ll index 3470617a438..1781c0c518e 100644 --- a/bench/clamav/optimized/clamsubmit.c.ll +++ b/bench/clamav/optimized/clamsubmit.c.ll @@ -433,8 +433,7 @@ define dso_local range(i32 0, 2) i32 @main(i32 noundef %0, ptr noundef %1) local 48: ; preds = %._crit_edge %49 = trunc nuw i8 %.1197 to i1 - %.mask = and i8 %.1197, 1 - %50 = icmp eq i8 %.mask, 0 + %50 = icmp eq i8 %.1197, 0 %51 = icmp eq ptr %.1194, null %or.cond5 = select i1 %50, i1 %51, i1 false br i1 %or.cond5, label %52, label %55 diff --git a/bench/clamav/optimized/egg.c.ll b/bench/clamav/optimized/egg.c.ll index 2709e8f14e4..757a636790c 100644 --- a/bench/clamav/optimized/egg.c.ll +++ b/bench/clamav/optimized/egg.c.ll @@ -2502,7 +2502,7 @@ define range(i32 0, 28) i32 @cli_egg_deflate_decompress(ptr noundef %0, i64 noun 33: ; preds = %.lr.ph %34 = add i32 %.04590, 8192 %35 = zext i32 %34 to i64 - %36 = call ptr @cli_safer_realloc(ptr noundef %.14988, i64 noundef %35) #11 + %36 = call ptr @cli_safer_realloc(ptr noundef nonnull %.14988, i64 noundef %35) #11 %37 = icmp eq ptr %36, null br i1 %37, label %.thread, label %38 @@ -2587,17 +2587,16 @@ define range(i32 0, 28) i32 @cli_egg_deflate_decompress(ptr noundef %0, i64 noun .thread: ; preds = %33 call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.53) #11 %67 = call i32 @inflateEnd(ptr noundef nonnull %5) #11 - %.not61 = icmp eq ptr %.14988, null - br i1 %.not61, label %.thread.thread, label %68 + br label %68 -68: ; preds = %.thread.thread81, %.thread.thread71, %.thread +68: ; preds = %.thread, %.thread.thread81, %.thread.thread71 %.0486576 = phi ptr [ %12, %.thread.thread71 ], [ %.14988, %.thread ], [ %12, %.thread.thread81 ] %.06675 = phi i32 [ 20, %.thread.thread71 ], [ 20, %.thread ], [ 27, %.thread.thread81 ] call void @free(ptr noundef nonnull %.0486576) #11 br label %.thread.thread -.thread.thread: ; preds = %10, %13, %.thread.thread77, %68, %.thread - %.06670 = phi i32 [ %.06675, %68 ], [ 20, %.thread ], [ 0, %.thread.thread77 ], [ 3, %10 ], [ 20, %13 ] +.thread.thread: ; preds = %10, %13, %.thread.thread77, %68 + %.06670 = phi i32 [ %.06675, %68 ], [ 0, %.thread.thread77 ], [ 3, %10 ], [ 20, %13 ] ret i32 %.06670 } @@ -2683,9 +2682,9 @@ define range(i32 0, 28) i32 @cli_egg_bzip2_decompress(ptr noundef %0, i64 nounde 34: ; preds = %.lr.ph %35 = add i32 %.04172, 8192 %36 = zext i32 %35 to i64 - %37 = call ptr @cli_safer_realloc(ptr noundef %.14570, i64 noundef %36) #11 + %37 = call ptr @cli_safer_realloc(ptr noundef nonnull %.14570, i64 noundef %36) #11 %38 = icmp eq ptr %37, null - br i1 %38, label %64, label %39 + br i1 %38, label %63, label %39 39: ; preds = %34 %40 = zext i32 %.04172 to i64 @@ -2754,27 +2753,21 @@ define range(i32 0, 28) i32 @cli_egg_bzip2_decompress(ptr noundef %0, i64 nounde .thread: ; preds = %10, %61, %13 %.0.ph = phi i32 [ 20, %13 ], [ 0, %61 ], [ 3, %10 ] %62 = call i32 @BZ2_bzDecompressEnd(ptr noundef nonnull %5) #11 - br label %67 - -.thread61: ; preds = %21, %31 - %.0.ph60 = phi i32 [ 27, %31 ], [ 20, %21 ] - %63 = call i32 @BZ2_bzDecompressEnd(ptr noundef nonnull %5) #11 - br label %66 + br label %65 -64: ; preds = %34 +63: ; preds = %34 call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.63) #11 - %65 = call i32 @BZ2_bzDecompressEnd(ptr noundef nonnull %5) #11 - %.not54 = icmp eq ptr %.14570, null - br i1 %.not54, label %67, label %66 + br label %.thread61 -66: ; preds = %.thread61, %64 - %.066 = phi i32 [ %.0.ph60, %.thread61 ], [ 20, %64 ] - %.04465 = phi ptr [ %12, %.thread61 ], [ %.14570, %64 ] +.thread61: ; preds = %31, %21, %63 + %.066 = phi i32 [ 20, %63 ], [ 27, %31 ], [ 20, %21 ] + %.04465 = phi ptr [ %.14570, %63 ], [ %12, %31 ], [ %12, %21 ] + %64 = call i32 @BZ2_bzDecompressEnd(ptr noundef nonnull %5) #11 call void @free(ptr noundef nonnull %.04465) #11 - br label %67 + br label %65 -67: ; preds = %.thread, %66, %64 - %.058 = phi i32 [ %.0.ph, %.thread ], [ %.066, %66 ], [ 20, %64 ] +65: ; preds = %.thread, %.thread61 + %.058 = phi i32 [ %.0.ph, %.thread ], [ %.066, %.thread61 ] ret i32 %.058 } @@ -2860,7 +2853,7 @@ define range(i32 0, 28) i32 @cli_egg_lzma_decompress(ptr noundef %0, i64 noundef 31: ; preds = %.lr.ph %32 = add i32 %.04487, 8192 %33 = zext i32 %32 to i64 - %34 = call ptr @cli_safer_realloc(ptr noundef %.14885, i64 noundef %33) #11 + %34 = call ptr @cli_safer_realloc(ptr noundef nonnull %.14885, i64 noundef %33) #11 %35 = icmp eq ptr %34, null br i1 %35, label %.thread, label %36 @@ -2932,17 +2925,16 @@ define range(i32 0, 28) i32 @cli_egg_lzma_decompress(ptr noundef %0, i64 noundef .thread: ; preds = %31 call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.72) #11 call void @cli_LzmaShutdown(ptr noundef nonnull %5) #11 - %.not58 = icmp eq ptr %.14885, null - br i1 %.not58, label %.thread.thread, label %59 + br label %59 -59: ; preds = %.thread.thread78, %.thread.thread68, %.thread +59: ; preds = %.thread, %.thread.thread78, %.thread.thread68 %.0476273 = phi ptr [ %12, %.thread.thread68 ], [ %.14885, %.thread ], [ %12, %.thread.thread78 ] %.06372 = phi i32 [ 20, %.thread.thread68 ], [ 20, %.thread ], [ 27, %.thread.thread78 ] call void @free(ptr noundef nonnull %.0476273) #11 br label %.thread.thread -.thread.thread: ; preds = %10, %13, %.thread.thread74, %59, %.thread - %.06367 = phi i32 [ %.06372, %59 ], [ 20, %.thread ], [ 0, %.thread.thread74 ], [ 3, %10 ], [ 20, %13 ] +.thread.thread: ; preds = %10, %13, %.thread.thread74, %59 + %.06367 = phi i32 [ %.06372, %59 ], [ 0, %.thread.thread74 ], [ 3, %10 ], [ 20, %13 ] ret i32 %.06367 } diff --git a/bench/clamav/optimized/jpeg.c.ll b/bench/clamav/optimized/jpeg.c.ll index b839e54d7dc..c950c24d74e 100644 --- a/bench/clamav/optimized/jpeg.c.ll +++ b/bench/clamav/optimized/jpeg.c.ll @@ -345,42 +345,43 @@ fmap_readn.exit227.thread: ; preds = %72, %.thread._crit_ 106: ; preds = %94 %107 = add i32 %.3182276, %84 - switch i32 %.2177277, label %.backedge [ - i32 224, label %108 - i32 225, label %146 - i32 226, label %189 - i32 232, label %201 - i32 237, label %231 - i32 238, label %289 - i32 227, label %299 - i32 228, label %299 - i32 229, label %299 - i32 230, label %299 - i32 231, label %299 - i32 233, label %299 - i32 234, label %299 - i32 235, label %299 - i32 236, label %299 - i32 239, label %299 - i32 192, label %300 - i32 193, label %300 - i32 194, label %300 - i32 195, label %300 - i32 197, label %300 - i32 198, label %300 - i32 199, label %300 - i32 201, label %300 - i32 202, label %300 - i32 203, label %300 - i32 196, label %301 - i32 219, label %302 - i32 221, label %303 - i32 247, label %304 - i32 218, label %313 - i32 217, label %316 - i32 254, label %323 - i32 241, label %324 - i32 242, label %325 + %trunc = trunc nuw i32 %.2177277 to i8 + switch i8 %trunc, label %.backedge [ + i8 -32, label %108 + i8 -31, label %146 + i8 -30, label %189 + i8 -24, label %201 + i8 -19, label %231 + i8 -18, label %289 + i8 -29, label %299 + i8 -28, label %299 + i8 -27, label %299 + i8 -26, label %299 + i8 -25, label %299 + i8 -23, label %299 + i8 -22, label %299 + i8 -21, label %299 + i8 -20, label %299 + i8 -17, label %299 + i8 -64, label %300 + i8 -63, label %300 + i8 -62, label %300 + i8 -61, label %300 + i8 -59, label %300 + i8 -58, label %300 + i8 -57, label %300 + i8 -55, label %300 + i8 -54, label %300 + i8 -53, label %300 + i8 -60, label %301 + i8 -37, label %302 + i8 -35, label %303 + i8 -9, label %304 + i8 -38, label %313 + i8 -39, label %316 + i8 -2, label %323 + i8 -15, label %324 + i8 -14, label %325 ] 108: ; preds = %106 diff --git a/bench/clap-rs/optimized/5651dp9k16h53y8x.ll b/bench/clap-rs/optimized/5651dp9k16h53y8x.ll index 452c05306e4..028236ad316 100644 --- a/bench/clap-rs/optimized/5651dp9k16h53y8x.ll +++ b/bench/clap-rs/optimized/5651dp9k16h53y8x.ll @@ -5053,14 +5053,14 @@ define hidden noundef i64 @_ZN12clap_builder7builder10styled_str9StyledStr13disp br i1 %8, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %_ZN12clap_builder6output8textwrap4core13display_width17hc3932f3f7d35aaefE.exit, %1 - %.0.lcssa = phi i64 [ 0, %1 ], [ %60, %_ZN12clap_builder6output8textwrap4core13display_width17hc3932f3f7d35aaefE.exit ] + %.0.lcssa = phi i64 [ 0, %1 ], [ %58, %_ZN12clap_builder6output8textwrap4core13display_width17hc3932f3f7d35aaefE.exit ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) ret i64 %.0.lcssa .lr.ph: ; preds = %1, %_ZN12clap_builder6output8textwrap4core13display_width17hc3932f3f7d35aaefE.exit %.fca.0.extract9 = phi ptr [ %.fca.0.extract, %_ZN12clap_builder6output8textwrap4core13display_width17hc3932f3f7d35aaefE.exit ], [ %.fca.0.extract7, %1 ] - %9 = phi { ptr, i64 } [ %61, %_ZN12clap_builder6output8textwrap4core13display_width17hc3932f3f7d35aaefE.exit ], [ %7, %1 ] - %.08 = phi i64 [ %60, %_ZN12clap_builder6output8textwrap4core13display_width17hc3932f3f7d35aaefE.exit ], [ 0, %1 ] + %9 = phi { ptr, i64 } [ %59, %_ZN12clap_builder6output8textwrap4core13display_width17hc3932f3f7d35aaefE.exit ], [ %7, %1 ] + %.08 = phi i64 [ %58, %_ZN12clap_builder6output8textwrap4core13display_width17hc3932f3f7d35aaefE.exit ], [ 0, %1 ] %.fca.1.extract = extractvalue { ptr, i64 } %9, 1 %10 = getelementptr inbounds i8, ptr %.fca.0.extract9, i64 %.fca.1.extract br label %.outer.i.outer @@ -5150,18 +5150,17 @@ define hidden noundef i64 @_ZN12clap_builder7builder10styled_str9StyledStr13disp br i1 %or.cond3.i, label %11, label %56 56: ; preds = %53 - %57 = and i8 %.018.i, 1 - %58 = xor i8 %57, 1 - %59 = zext nneg i8 %58 to i64 - %spec.select.i = add i64 %.0.ph.i.ph, %59 + %57 = xor i8 %.018.i, 1 + %not..i = zext nneg i8 %57 to i64 + %spec.select.i = add i64 %.0.ph.i.ph, %not..i br label %.outer.i.outer _ZN12clap_builder6output8textwrap4core13display_width17hc3932f3f7d35aaefE.exit: ; preds = %11, %39 - %60 = add i64 %.0.ph.i.ph, %.08 - %61 = call { ptr, i64 } @_ZN8anstream7adapter5strip8next_str17h4bd4a530e0bdbd66E.llvm.567936041081457991(ptr noalias noundef nonnull align 8 dereferenceable(16) %2, ptr noalias noundef nonnull align 1 dereferenceable(1) %.sroa.3.0..sroa_idx) - %.fca.0.extract = extractvalue { ptr, i64 } %61, 0 - %62 = icmp eq ptr %.fca.0.extract, null - br i1 %62, label %._crit_edge, label %.lr.ph + %58 = add i64 %.0.ph.i.ph, %.08 + %59 = call { ptr, i64 } @_ZN8anstream7adapter5strip8next_str17h4bd4a530e0bdbd66E.llvm.567936041081457991(ptr noalias noundef nonnull align 8 dereferenceable(16) %2, ptr noalias noundef nonnull align 1 dereferenceable(1) %.sroa.3.0..sroa_idx) + %.fca.0.extract = extractvalue { ptr, i64 } %59, 0 + %60 = icmp eq ptr %.fca.0.extract, null + br i1 %60, label %._crit_edge, label %.lr.ph } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable @@ -8892,10 +8891,9 @@ define hidden noundef i64 @_ZN12clap_builder6output8textwrap4core13display_width br i1 %or.cond3, label %4, label %49 49: ; preds = %46 - %50 = and i8 %.018, 1 - %51 = xor i8 %50, 1 - %52 = zext nneg i8 %51 to i64 - %spec.select = add i64 %.0.ph.ph, %52 + %50 = xor i8 %.018, 1 + %not. = zext nneg i8 %50 to i64 + %spec.select = add i64 %.0.ph.ph, %not. br label %.outer.outer } diff --git a/bench/cmake/optimized/cmCustomCommandGenerator.cxx.ll b/bench/cmake/optimized/cmCustomCommandGenerator.cxx.ll index 0eaed14e121..0bb91785b11 100644 --- a/bench/cmake/optimized/cmCustomCommandGenerator.cxx.ll +++ b/bench/cmake/optimized/cmCustomCommandGenerator.cxx.ll @@ -2282,27 +2282,29 @@ _Z11cmHasPrefixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit99.thread: ; pr br i1 %.not70, label %.loopexit, label %116 116: ; preds = %115 - %117 = and i8 %.1, 1 - %118 = xor i8 %117, 1 - %119 = getelementptr inbounds i8, ptr %.pre209, i64 104 - %120 = load ptr, ptr %119, align 8 - %121 = getelementptr inbounds i8, ptr %.pre209, i64 88 - %.not142177 = icmp eq ptr %120, %121 + %117 = getelementptr inbounds i8, ptr %.pre209, i64 104 + %118 = load ptr, ptr %117, align 8 + %119 = getelementptr inbounds i8, ptr %.pre209, i64 88 + %.not142177 = icmp eq ptr %118, %119 br i1 %.not142177, label %_ZNKSt14default_deleteI29cmCompiledGeneratorExpressionEclEPS0_.exit.i, label %.lr.ph -.lr.ph: ; preds = %116, %_ZN19cmListFileBacktraceD2Ev.exit - %.sroa.0108.0178 = phi ptr [ %215, %_ZN19cmListFileBacktraceD2Ev.exit ], [ %120, %116 ] +.lr.ph: ; preds = %116 + %120 = xor i8 %.1, 1 + br label %121 + +121: ; preds = %.lr.ph, %_ZN19cmListFileBacktraceD2Ev.exit + %.sroa.0108.0178 = phi ptr [ %118, %.lr.ph ], [ %215, %_ZN19cmListFileBacktraceD2Ev.exit ] %122 = getelementptr inbounds i8, ptr %.sroa.0108.0178, i64 32 %123 = load ptr, ptr %122, align 8 %124 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK17cmGeneratorTarget7GetNameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(2728) %123) to label %125 unwind label %223 -125: ; preds = %.lr.ph +125: ; preds = %121 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(33) %17, ptr noundef nonnull align 8 dereferenceable(32) %124) to label %126 unwind label %223 126: ; preds = %125 - store i8 %118, ptr %21, align 8 + store i8 %120, ptr %21, align 8 %127 = load ptr, ptr %12, align 8 call void @llvm.experimental.noalias.scope.decl(metadata !14) %128 = load ptr, ptr %127, align 8, !noalias !14 @@ -2495,8 +2497,8 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold _ZN19cmListFileBacktraceD2Ev.exit: ; preds = %_ZN2BTISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbEED2Ev.exit, %197, %210, %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(33) %17) #21 %215 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.0108.0178) #26 - %.not142 = icmp eq ptr %215, %121 - br i1 %.not142, label %.loopexit.loopexit, label %.lr.ph + %.not142 = icmp eq ptr %215, %119 + br i1 %.not142, label %.loopexit.loopexit, label %121 216: ; preds = %_Z11cmHasPrefixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit99.thread %217 = landingpad { ptr, i32 } @@ -2520,7 +2522,7 @@ _ZN19cmListFileBacktraceD2Ev.exit: ; preds = %_ZN2BTISt4pairINSt7 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #21 br label %229 -223: ; preds = %125, %.lr.ph +223: ; preds = %125, %121 %224 = landingpad { ptr, i32 } cleanup br label %229 diff --git a/bench/cmake/optimized/cmDyndepCollation.cxx.ll b/bench/cmake/optimized/cmDyndepCollation.cxx.ll index 7ac9d21cfcb..f8d085332b0 100644 --- a/bench/cmake/optimized/cmDyndepCollation.cxx.ll +++ b/bench/cmake/optimized/cmDyndepCollation.cxx.ll @@ -5697,7 +5697,7 @@ define internal fastcc void @"_ZZN12_GLOBAL__N_130CollationInformationCxxModules 26: ; preds = %25 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #18 - br label %192 + br label %191 27: ; preds = %.critedge.i, %16, %9 %28 = landingpad { ptr, i32 } @@ -5760,7 +5760,7 @@ _ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIPK12cmSour _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i: ; preds = %43 %49 = icmp slt i32 %45, 0 - br i1 %49, label %.critedge.i, label %189 + br i1 %49, label %.critedge.i, label %188 .critedge.i: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i, %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIPK12cmSourceFileZN12_GLOBAL__N_130CollationInformationCxxModulesEPK17cmGeneratorTargetRKS5_RK26cmDyndepGeneratorCallbacksE11CompileTypeESt4lessIS5_ESaIS6_ISE_SK_EEE11lower_boundESF_.exit.i, %31 %50 = phi i1 [ true, %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIPK12cmSourceFileZN12_GLOBAL__N_130CollationInformationCxxModulesEPK17cmGeneratorTargetRKS5_RK26cmDyndepGeneratorCallbacksE11CompileTypeESt4lessIS5_ESaIS6_ISE_SK_EEE11lower_boundESF_.exit.i ], [ false, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i ], [ true, %31 ] @@ -5934,7 +5934,7 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %117 = getelementptr i8, ptr %109, i64 24 %.val10.i.i.i = load ptr, ptr %117, align 8 %118 = icmp eq ptr %.val10.i.i.i, null - br i1 %118, label %.thread.i.i, label %175 + br i1 %118, label %.thread.i.i, label %.thread.i.thread.i 119: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i.i.i %.02529.i15.i.i.i = load ptr, ptr %34, align 8 @@ -6095,9 +6095,9 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %174 = icmp slt i32 %170, 0 br i1 %174, label %.thread.i.i, label %.thread15.i.i -175: ; preds = %154, %142, %116, %104, %77 - %.sroa.083.0.i.i.i = phi ptr [ null, %77 ], [ %106, %104 ], [ null, %142 ], [ %.08.lcssa.i.i.i16.i, %116 ], [ %147, %154 ] - %.sroa.12.0.i.i.i = phi ptr [ %78, %77 ], [ %106, %104 ], [ %144, %142 ], [ %.08.lcssa.i.i.i16.i, %116 ], [ %147, %154 ] +175: ; preds = %154, %142, %104, %77 + %.sroa.083.0.i.i.i = phi ptr [ null, %77 ], [ %106, %104 ], [ null, %142 ], [ %147, %154 ] + %.sroa.12.0.i.i.i = phi ptr [ %78, %77 ], [ %106, %104 ], [ %144, %142 ], [ %147, %154 ] %.not.i.i = icmp eq ptr %.sroa.12.0.i.i.i, null br i1 %.not.i.i, label %.thread15.i.i, label %.thread.i.i @@ -6107,7 +6107,7 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %.not.i.i11.i.i = icmp ne ptr %.sroa.083.0.i11.i.i, null %176 = icmp eq ptr %.sroa.12.0.i12.i.i, %35 %or.cond.i.i.i.i = select i1 %.not.i.i11.i.i, i1 true, i1 %176 - br i1 %or.cond.i.i.i.i, label %184, label %177 + br i1 %or.cond.i.i.i.i, label %.thread.i.thread.i, label %177 177: ; preds = %.thread.i.i %178 = getelementptr inbounds i8, ptr %.sroa.12.0.i12.i.i, i64 32 @@ -6123,32 +6123,33 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i.i: ; preds = %177 %183 = icmp slt i32 %179, 0 - br label %184 - -184: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i.i, %.thread.i.i - %185 = phi i1 [ true, %.thread.i.i ], [ %183, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i.i ] - call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %185, ptr noundef nonnull %51, ptr noundef nonnull %.sroa.12.0.i12.i.i, ptr noundef nonnull align 8 dereferenceable(32) %35) #18 - %186 = getelementptr inbounds i8, ptr %33, i64 40 - %187 = load i64, ptr %186, align 8 - %188 = add i64 %187, 1 - store i64 %188, ptr %186, align 8 - br label %189 + br label %.thread.i.thread.i + +.thread.i.thread.i: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i.i, %.thread.i.i, %116 + %.sroa.12.0.i12.i24.i = phi ptr [ %.sroa.12.0.i12.i.i, %.thread.i.i ], [ %.sroa.12.0.i12.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i.i ], [ %.08.lcssa.i.i.i16.i, %116 ] + %184 = phi i1 [ true, %.thread.i.i ], [ %183, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i.i ], [ true, %116 ] + call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %184, ptr noundef nonnull %51, ptr noundef nonnull %.sroa.12.0.i12.i24.i, ptr noundef nonnull align 8 dereferenceable(32) %35) #18 + %185 = getelementptr inbounds i8, ptr %33, i64 40 + %186 = load i64, ptr %185, align 8 + %187 = add i64 %186, 1 + store i64 %187, ptr %185, align 8 + br label %188 .thread15.i.i: ; preds = %175, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i52.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit38.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i27.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i.i.i.i %.sroa.01.0.ph.i.i = phi ptr [ %.sroa.083.0.i.i.i, %175 ], [ %.sroa.015.0.i51.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i52.i.i.i ], [ %.sroa.015.0.i26.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i27.i.i.i ], [ %.sroa.015.0.i.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i.i.i.i ], [ %.08.lcssa.i.i.i16.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit38.i.i.i ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(48) %52) #18 call void @_ZdlPv(ptr noundef nonnull %51) #19 - br label %189 + br label %188 -189: ; preds = %.thread15.i.i, %184, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i - %.sroa.014.0.i = phi ptr [ %.19.i.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i ], [ %51, %184 ], [ %.sroa.01.0.ph.i.i, %.thread15.i.i ] - %190 = getelementptr inbounds i8, ptr %.sroa.014.0.i, i64 64 - store ptr %1, ptr %190, align 8 - %191 = getelementptr inbounds i8, ptr %.sroa.014.0.i, i64 72 - store i32 %2, ptr %191, align 8 - br label %192 +188: ; preds = %.thread15.i.i, %.thread.i.thread.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i + %.sroa.014.0.i = phi ptr [ %.19.i.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i ], [ %51, %.thread.i.thread.i ], [ %.sroa.01.0.ph.i.i, %.thread15.i.i ] + %189 = getelementptr inbounds i8, ptr %.sroa.014.0.i, i64 64 + store ptr %1, ptr %189, align 8 + %190 = getelementptr inbounds i8, ptr %.sroa.014.0.i, i64 72 + store i32 %2, ptr %190, align 8 + br label %191 -192: ; preds = %189, %26 +191: ; preds = %188, %26 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #18 ret void diff --git a/bench/cmake/optimized/cmLocalGenerator.cxx.ll b/bench/cmake/optimized/cmLocalGenerator.cxx.ll index a67e629260f..f9b3dee9915 100644 --- a/bench/cmake/optimized/cmLocalGenerator.cxx.ll +++ b/bench/cmake/optimized/cmLocalGenerator.cxx.ll @@ -30604,7 +30604,7 @@ _ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9 .body: ; preds = %88, %24, %90 %.pn = phi { ptr, i32 } [ %91, %90 ], [ %89, %88 ], [ %25, %24 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #24 - br label %119 + br label %118 92: ; preds = %33, %27 %93 = landingpad { ptr, i32 } @@ -30704,7 +30704,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit.i: ; _ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit: ; preds = %109, %112 %113 = getelementptr inbounds i8, ptr %.sroa.049.072, i64 32 %.not53 = icmp eq ptr %113, %5 - br i1 %.not53, label %._crit_edge.loopexit, label %47 + br i1 %.not53, label %._crit_edge, label %47 .body41: ; preds = %.loopexit55, %.loopexit.split-lp, %.body.i, %94 %.pn30 = phi { ptr, i32 } [ %95, %94 ], [ %.pn.i, %.body.i ], [ %lpad.loopexit, %.loopexit55 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] @@ -30717,16 +30717,12 @@ _ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit: ; call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #24 br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit43 -._crit_edge.loopexit: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit - %117 = and i8 %.128, 1 - br label %._crit_edge - -._crit_edge: ; preds = %._crit_edge.loopexit, %.preheader - %.027.lcssa = phi i8 [ 0, %.preheader ], [ %117, %._crit_edge.loopexit ] +._crit_edge: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit, %.preheader + %.027.lcssa = phi i8 [ 0, %.preheader ], [ %.128, %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %8) #24 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(33) %0, ptr noundef nonnull align 8 dereferenceable(32) %20) #24 - %118 = getelementptr inbounds i8, ptr %0, i64 32 - store i8 %.027.lcssa, ptr %118, align 8 + %117 = getelementptr inbounds i8, ptr %0, i64 32 + store i8 %.027.lcssa, ptr %117, align 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #24 call void @_ZN21cmGeneratedFileStreamD1Ev(ptr noundef nonnull align 8 dereferenceable(348) %15) #24 ret void @@ -30734,9 +30730,9 @@ _ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit: ; _ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit43: ; preds = %116, %.body41, %92 %.pn30.pn = phi { ptr, i32 } [ %93, %92 ], [ %.pn30, %.body41 ], [ %.pn30, %116 ] call void @_ZN21cmGeneratedFileStreamD1Ev(ptr noundef nonnull align 8 dereferenceable(348) %15) #24 - br label %119 + br label %118 -119: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit43, %.body +118: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit43, %.body %.pn30.pn.pn = phi { ptr, i32 } [ %.pn30.pn, %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit43 ], [ %.pn, %.body ] resume { ptr, i32 } %.pn30.pn.pn } diff --git a/bench/cpython/optimized/_ssl.ll b/bench/cpython/optimized/_ssl.ll index 336a804caf3..a47b8a71213 100644 --- a/bench/cpython/optimized/_ssl.ll +++ b/bench/cpython/optimized/_ssl.ll @@ -3872,16 +3872,16 @@ if.end14.i: ; preds = %if.else.i _create_tuple_for_attribute.exit.thread: ; preds = %if.then.i, %if.then12.i, %if.then1.i.i, %if.end.i.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %valuebuf.i) - br label %fail1 + br label %if.then.i50 _create_tuple_for_attribute.exit: ; preds = %if.then4.i, %if.end14.i %retval.0.i = phi ptr [ %call7.i, %if.then4.i ], [ %call15.i, %if.end14.i ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %valuebuf.i) %cmp32 = icmp eq ptr %retval.0.i, null - br i1 %cmp32, label %fail1, label %if.end34 + br i1 %cmp32, label %if.then.i50, label %if.end34 if.end34: ; preds = %_create_tuple_for_attribute.exit - %call35 = call i32 @PyList_Append(ptr noundef %rdn.1, ptr noundef nonnull %retval.0.i) #11 + %call35 = call i32 @PyList_Append(ptr noundef nonnull %rdn.1, ptr noundef nonnull %retval.0.i) #11 %10 = load i64, ptr %retval.0.i, align 8 %11 = and i64 %10, 2147483648 %cmp.i120.not = icmp eq i64 %11, 0 @@ -3899,7 +3899,7 @@ if.then1.i91: ; preds = %if.end.i88 Py_DECREF.exit93: ; preds = %if.end34, %if.then1.i91, %if.end.i88 %cmp36 = icmp slt i32 %call35, 0 - br i1 %cmp36, label %fail1, label %for.cond + br i1 %cmp36, label %if.then.i50, label %for.cond if.then40: ; preds = %for.cond, %for.cond.preheader %rdn.0.lcssa = phi ptr [ %call3, %for.cond.preheader ], [ %rdn.1, %for.cond ] @@ -3979,11 +3979,7 @@ if.end.i: ; preds = %if.end53 %cmp.i = icmp eq i64 %dec.i, 0 br i1 %cmp.i, label %return.sink.split, label %return -fail1: ; preds = %Py_DECREF.exit93, %_create_tuple_for_attribute.exit, %_create_tuple_for_attribute.exit.thread - %cmp.not.i = icmp eq ptr %rdn.1, null - br i1 %cmp.not.i, label %if.then.i57, label %if.then.i50 - -if.then.i50: ; preds = %fail1 +if.then.i50: ; preds = %_create_tuple_for_attribute.exit, %Py_DECREF.exit93, %_create_tuple_for_attribute.exit.thread %21 = load i64, ptr %rdn.1, align 8 %22 = and i64 %21, 2147483648 %cmp.i2.not.i = icmp eq i64 %22, 0 @@ -3999,7 +3995,7 @@ if.then1.i.i55: ; preds = %if.end.i.i52 call void @_Py_Dealloc(ptr noundef nonnull %rdn.1) #11 br label %if.then.i57 -if.then.i57: ; preds = %Py_DECREF.exit111, %Py_DECREF.exit102, %if.end21, %if.end, %Py_DECREF.exit84, %Py_DECREF.exit75, %fail1, %if.then.i50, %if.end.i.i52, %if.then1.i.i55 +if.then.i57: ; preds = %Py_DECREF.exit111, %Py_DECREF.exit102, %if.end21, %if.end, %Py_DECREF.exit84, %Py_DECREF.exit75, %if.then.i50, %if.end.i.i52, %if.then1.i.i55 %23 = load i64, ptr %call2, align 8 %24 = and i64 %23, 2147483648 %cmp.i2.not.i58 = icmp eq i64 %24, 0 diff --git a/bench/cpython/optimized/posixmodule.ll b/bench/cpython/optimized/posixmodule.ll index 6edea315804..649c3fe4001 100644 --- a/bench/cpython/optimized/posixmodule.ll +++ b/bench/cpython/optimized/posixmodule.ll @@ -10432,17 +10432,17 @@ if.then12.i: ; preds = %while.body.i %6 = load i64, ptr %call833.i, align 8 %7 = and i64 %6, 2147483648 %cmp.i102.not.i = icmp eq i64 %7, 0 - br i1 %cmp.i102.not.i, label %if.end.i95.i, label %error.i + br i1 %cmp.i102.not.i, label %if.end.i95.i, label %if.then81.i if.end.i95.i: ; preds = %if.then12.i %dec.i96.i = add i64 %6, -1 store i64 %dec.i96.i, ptr %call833.i, align 8 %cmp.i97.i = icmp eq i64 %dec.i96.i, 0 - br i1 %cmp.i97.i, label %if.then1.i98.i, label %error.i + br i1 %cmp.i97.i, label %if.then1.i98.i, label %if.then81.i if.then1.i98.i: ; preds = %if.end.i95.i call void @_Py_Dealloc(ptr noundef nonnull %call833.i) #22 - br label %error.i + br label %if.then81.i if.end15.i: ; preds = %while.body.i %call16.i = call i64 @PyLong_AsLong(ptr noundef nonnull %call833.i) #22 @@ -10468,12 +10468,12 @@ Py_DECREF.exit91.i: ; preds = %if.then1.i89.i, %if if.then19.i: ; preds = %Py_DECREF.exit91.i %call20.i = call ptr @PyErr_Occurred() #22 %tobool21.not.i = icmp eq ptr %call20.i, null - br i1 %tobool21.not.i, label %if.then22.i, label %error.i + br i1 %tobool21.not.i, label %if.then22.i, label %if.then81.i if.then22.i: ; preds = %if.then19.i %10 = load ptr, ptr @PyExc_ValueError, align 8 call void @PyErr_SetString(ptr noundef %10, ptr noundef nonnull @.str.309) #22 - br label %error.i + br label %if.then81.i if.end24.i: ; preds = %Py_DECREF.exit91.i %cmp25.i = icmp ugt i64 %call16.i, 2147483646 @@ -10482,7 +10482,7 @@ if.end24.i: ; preds = %Py_DECREF.exit91.i if.then27.i: ; preds = %if.end24.i %11 = load ptr, ptr @PyExc_OverflowError, align 8 call void @PyErr_SetString(ptr noundef %11, ptr noundef nonnull @.str.310) #22 - br label %error.i + br label %if.then81.i if.end28.i: ; preds = %if.end24.i %conv29.i = sext i32 %ncpus.032.i to i64 @@ -10510,15 +10510,15 @@ while.end.i: ; preds = %while.body37.i if.then49.i: ; preds = %while.end.i %call50.i = call ptr @PyErr_NoMemory() #22 - br label %error.i + br label %if.then81.i if.end51.i: ; preds = %while.end.i %sub54.i = add nsw i64 %conv34.i, 63 %13 = lshr i64 %sub54.i, 3 %mul56.i = and i64 %13, 2305843009213693944 call void @llvm.memset.p0.i64(ptr nonnull align 8 %call46.i, i8 0, i64 %mul56.i, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %call46.i, ptr align 8 %cpu_set.130.i, i64 %setsize.031.i, i1 false) - call void @__sched_cpufree(ptr noundef %cpu_set.130.i) #22 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %call46.i, ptr nonnull align 8 %cpu_set.130.i, i64 %setsize.031.i, i1 false) + call void @__sched_cpufree(ptr noundef nonnull %cpu_set.130.i) #22 br label %if.end59.i if.end59.i: ; preds = %if.end51.i, %if.end28.i @@ -10526,7 +10526,7 @@ if.end59.i: ; preds = %if.end51.i, %if.end %setsize.1.i = phi i64 [ %mul56.i, %if.end51.i ], [ %setsize.031.i, %if.end28.i ] %ncpus.1.i = phi i32 [ %newncpus.1.i, %if.end51.i ], [ %ncpus.032.i, %if.end28.i ] %div6047.i = lshr i64 %call16.i, 3 - %cmp61.i = icmp ult i64 %div6047.i, %setsize.1.i + %cmp61.i = icmp samesign ult i64 %div6047.i, %setsize.1.i br i1 %cmp61.i, label %cond.true.i, label %cond.end.i cond.true.i: ; preds = %if.end59.i @@ -10549,7 +10549,7 @@ while.end64.i: ; preds = %cond.end.i, %do.bod %setsize.0.lcssa.i = phi i64 [ 8, %do.body.i ], [ %setsize.1.i, %cond.end.i ] %call65.i = call ptr @PyErr_Occurred() #22 %tobool66.not.i = icmp eq ptr %call65.i, null - br i1 %tobool66.not.i, label %if.then72.i, label %error.i + br i1 %tobool66.not.i, label %if.then72.i, label %if.then81.i if.then72.i: ; preds = %while.end64.i %15 = load i64, ptr %call.i, align 8 @@ -10568,52 +10568,43 @@ if.then1.i.i: ; preds = %if.end.i.i br label %do.end74.i do.end74.i: ; preds = %if.then1.i.i, %if.end.i.i, %if.then72.i - %call75.i = call i32 @sched_setaffinity(i32 noundef %0, i64 noundef %setsize.0.lcssa.i, ptr noundef %cpu_set.1.lcssa.i) #22 + %call75.i = call i32 @sched_setaffinity(i32 noundef %0, i64 noundef %setsize.0.lcssa.i, ptr noundef nonnull %cpu_set.1.lcssa.i) #22 %tobool76.not.i = icmp eq i32 %call75.i, 0 - br i1 %tobool76.not.i, label %if.end79.i, label %if.then77.i + br i1 %tobool76.not.i, label %if.end79.i, label %if.then81.thread.i -if.then77.i: ; preds = %do.end74.i +if.then81.thread.i: ; preds = %do.end74.i %17 = load ptr, ptr @PyExc_OSError, align 8 %call.i.i = call ptr @PyErr_SetFromErrno(ptr noundef %17) #22 - br label %error.i + call void @__sched_cpufree(ptr noundef nonnull %cpu_set.1.lcssa.i) #22 + br label %exit if.end79.i: ; preds = %do.end74.i - call void @__sched_cpufree(ptr noundef %cpu_set.1.lcssa.i) #22 + call void @__sched_cpufree(ptr noundef nonnull %cpu_set.1.lcssa.i) #22 br label %exit -error.i: ; preds = %if.then77.i, %while.end64.i, %if.then49.i, %if.then27.i, %if.then22.i, %if.then19.i, %if.then1.i98.i, %if.end.i95.i, %if.then12.i - %cpu_set.120.i = phi ptr [ %cpu_set.130.i, %if.then19.i ], [ %cpu_set.130.i, %if.then22.i ], [ %cpu_set.130.i, %if.then27.i ], [ %cpu_set.130.i, %if.then49.i ], [ %cpu_set.130.i, %if.then12.i ], [ %cpu_set.130.i, %if.then1.i98.i ], [ %cpu_set.130.i, %if.end.i95.i ], [ %cpu_set.1.lcssa.i, %while.end64.i ], [ %cpu_set.1.lcssa.i, %if.then77.i ] - %iterator.0.i = phi ptr [ %call.i, %if.then19.i ], [ %call.i, %if.then22.i ], [ %call.i, %if.then27.i ], [ %call.i, %if.then49.i ], [ %call.i, %if.then12.i ], [ %call.i, %if.then1.i98.i ], [ %call.i, %if.end.i95.i ], [ %call.i, %while.end64.i ], [ null, %if.then77.i ] - %tobool80.not.i = icmp eq ptr %cpu_set.120.i, null - br i1 %tobool80.not.i, label %if.end82.i, label %if.then81.i - -if.then81.i: ; preds = %error.i +if.then81.i: ; preds = %while.end64.i, %if.then49.i, %if.then27.i, %if.then22.i, %if.then19.i, %if.then1.i98.i, %if.end.i95.i, %if.then12.i + %cpu_set.120.i = phi ptr [ %cpu_set.130.i, %if.then19.i ], [ %cpu_set.130.i, %if.then22.i ], [ %cpu_set.130.i, %if.then27.i ], [ %cpu_set.130.i, %if.then49.i ], [ %cpu_set.130.i, %if.then12.i ], [ %cpu_set.130.i, %if.then1.i98.i ], [ %cpu_set.130.i, %if.end.i95.i ], [ %cpu_set.1.lcssa.i, %while.end64.i ] call void @__sched_cpufree(ptr noundef nonnull %cpu_set.120.i) #22 - br label %if.end82.i - -if.end82.i: ; preds = %if.then81.i, %error.i - %cmp.not.i.i = icmp eq ptr %iterator.0.i, null - br i1 %cmp.not.i.i, label %exit, label %if.then.i.i + br label %if.then.i.i -if.then.i.i: ; preds = %if.end82.i, %if.end82.thread.i - %iterator.047.i = phi ptr [ %call.i, %if.end82.thread.i ], [ %iterator.0.i, %if.end82.i ] - %18 = load i64, ptr %iterator.047.i, align 8 +if.then.i.i: ; preds = %if.then81.i, %if.end82.thread.i + %18 = load i64, ptr %call.i, align 8 %19 = and i64 %18, 2147483648 %cmp.i2.not.i.i = icmp eq i64 %19, 0 br i1 %cmp.i2.not.i.i, label %if.end.i.i.i, label %exit if.end.i.i.i: ; preds = %if.then.i.i %dec.i.i.i = add i64 %18, -1 - store i64 %dec.i.i.i, ptr %iterator.047.i, align 8 + store i64 %dec.i.i.i, ptr %call.i, align 8 %cmp.i.i.i = icmp eq i64 %dec.i.i.i, 0 br i1 %cmp.i.i.i, label %if.then1.i.i.i, label %exit if.then1.i.i.i: ; preds = %if.end.i.i.i - call void @_Py_Dealloc(ptr noundef nonnull %iterator.047.i) #22 + call void @_Py_Dealloc(ptr noundef nonnull %call.i) #22 br label %exit -exit: ; preds = %if.then1.i.i.i, %if.end.i.i.i, %if.then.i.i, %if.end82.i, %if.end79.i, %if.end, %entry - %return_value.0 = phi ptr [ null, %entry ], [ @_Py_NoneStruct, %if.end79.i ], [ null, %if.end ], [ null, %if.end82.i ], [ null, %if.then.i.i ], [ null, %if.end.i.i.i ], [ null, %if.then1.i.i.i ] +exit: ; preds = %if.then1.i.i.i, %if.end.i.i.i, %if.then.i.i, %if.end79.i, %if.then81.thread.i, %if.end, %entry + %return_value.0 = phi ptr [ null, %entry ], [ @_Py_NoneStruct, %if.end79.i ], [ null, %if.end ], [ null, %if.then.i.i ], [ null, %if.end.i.i.i ], [ null, %if.then1.i.i.i ], [ null, %if.then81.thread.i ] ret ptr %return_value.0 } diff --git a/bench/cpython/optimized/xmltok.ll b/bench/cpython/optimized/xmltok.ll index 6092e724e34..69f575a98c7 100644 --- a/bench/cpython/optimized/xmltok.ll +++ b/bench/cpython/optimized/xmltok.ll @@ -10085,11 +10085,11 @@ for.cond: ; preds = %for.cond.backedge, i8 -1, label %sw.bb2.i ] -for.cond.backedge: ; preds = %for.cond, %for.cond, %for.cond, %for.cond, %sw.bb2.i, %sw.bb195, %for.inc.fold.split95, %sw.bb120, %for.inc.fold.split, %if.then89, %if.then92, %if.then67, %if.then70, %if.then52, %if.then55, %sw.bb17, %if.then23, %if.then20, %sw.bb, %if.then10, %if.then, %if.end47, %sw.bb49, %if.else, %if.end83, %if.else98, %if.end108, %if.then115, %sw.bb112, %land.lhs.true, %land.lhs.true129, %cond.end185, %if.then189, %land.lhs.true202, %if.then205, %sw.bb211, %cond.end - %ptr.pn.be = phi ptr [ %ptr.addr.0, %cond.end ], [ %ptr.addr.0, %sw.bb211 ], [ %ptr.addr.0, %if.then205 ], [ %ptr.addr.0, %land.lhs.true202 ], [ %ptr.addr.0, %if.then189 ], [ %ptr.addr.0, %cond.end185 ], [ %ptr.addr.0, %land.lhs.true129 ], [ %ptr.addr.0, %land.lhs.true ], [ %ptr.addr.0, %if.then115 ], [ %ptr.addr.0, %sw.bb112 ], [ %ptr.addr.0, %if.end108 ], [ %ptr.addr.0, %if.else98 ], [ %ptr.addr.0, %if.end83 ], [ %ptr.addr.0, %if.else ], [ %ptr.addr.0, %sw.bb49 ], [ %add.ptr48, %if.end47 ], [ %ptr.addr.0, %if.then ], [ %ptr.addr.0, %if.then10 ], [ %ptr.addr.0, %sw.bb ], [ %arrayidx, %if.then20 ], [ %arrayidx, %if.then23 ], [ %arrayidx, %sw.bb17 ], [ %ptr.addr.0, %if.then55 ], [ %ptr.addr.0, %if.then52 ], [ %ptr.addr.0, %if.then70 ], [ %ptr.addr.0, %if.then67 ], [ %ptr.addr.0, %if.then92 ], [ %ptr.addr.0, %if.then89 ], [ %ptr.addr.0, %sw.bb120 ], [ %ptr.addr.0, %for.inc.fold.split ], [ %ptr.addr.0, %sw.bb195 ], [ %ptr.addr.0, %for.inc.fold.split95 ], [ %ptr.addr.0, %sw.bb2.i ], [ %ptr.addr.0, %for.cond ], [ %ptr.addr.0, %for.cond ], [ %ptr.addr.0, %for.cond ], [ %ptr.addr.0, %for.cond ] - %state.0.be = phi i32 [ %state.0, %cond.end ], [ 2, %sw.bb211 ], [ 2, %if.then205 ], [ 2, %land.lhs.true202 ], [ 2, %if.then189 ], [ 2, %cond.end185 ], [ 2, %land.lhs.true129 ], [ 2, %land.lhs.true ], [ %state.0, %if.then115 ], [ %state.0, %sw.bb112 ], [ 0, %if.end108 ], [ 2, %if.else98 ], [ 0, %if.end83 ], [ 2, %if.else ], [ %state.0, %sw.bb49 ], [ %state.3, %if.end47 ], [ 1, %if.then ], [ 1, %if.then10 ], [ %state.0, %sw.bb ], [ 1, %if.then20 ], [ 1, %if.then23 ], [ %state.0, %sw.bb17 ], [ 1, %if.then55 ], [ 1, %if.then52 ], [ 2, %if.then70 ], [ 2, %if.then67 ], [ 2, %if.then92 ], [ 2, %if.then89 ], [ 0, %sw.bb120 ], [ %state.0, %for.inc.fold.split ], [ 0, %sw.bb195 ], [ %state.0, %for.inc.fold.split95 ], [ %state.0, %sw.bb2.i ], [ %state.0, %for.cond ], [ %state.0, %for.cond ], [ %state.0, %for.cond ], [ %state.0, %for.cond ] - %nAtts.0.be = phi i32 [ %nAtts.0, %cond.end ], [ %nAtts.0, %sw.bb211 ], [ %nAtts.0, %if.then205 ], [ %nAtts.0, %land.lhs.true202 ], [ %nAtts.0, %if.then189 ], [ %nAtts.0, %cond.end185 ], [ %nAtts.0, %land.lhs.true129 ], [ %nAtts.0, %land.lhs.true ], [ %nAtts.0, %if.then115 ], [ %nAtts.0, %sw.bb112 ], [ %inc109, %if.end108 ], [ %nAtts.0, %if.else98 ], [ %inc, %if.end83 ], [ %nAtts.0, %if.else ], [ %nAtts.0, %sw.bb49 ], [ %nAtts.0, %if.end47 ], [ %nAtts.0, %if.then ], [ %nAtts.0, %if.then10 ], [ %nAtts.0, %sw.bb ], [ %nAtts.0, %if.then20 ], [ %nAtts.0, %if.then23 ], [ %nAtts.0, %sw.bb17 ], [ %nAtts.0, %if.then55 ], [ %nAtts.0, %if.then52 ], [ %nAtts.0, %if.then70 ], [ %nAtts.0, %if.then67 ], [ %nAtts.0, %if.then92 ], [ %nAtts.0, %if.then89 ], [ %nAtts.0, %sw.bb120 ], [ %nAtts.0, %for.inc.fold.split ], [ %nAtts.0, %sw.bb195 ], [ %nAtts.0, %for.inc.fold.split95 ], [ %nAtts.0, %sw.bb2.i ], [ %nAtts.0, %for.cond ], [ %nAtts.0, %for.cond ], [ %nAtts.0, %for.cond ], [ %nAtts.0, %for.cond ] - %open.0.be = phi i32 [ %open.0, %cond.end ], [ %open.0, %sw.bb211 ], [ %open.0, %if.then205 ], [ %open.0, %land.lhs.true202 ], [ %open.0, %if.then189 ], [ %open.0, %cond.end185 ], [ %open.0, %land.lhs.true129 ], [ %open.0, %land.lhs.true ], [ %open.0, %if.then115 ], [ %open.0, %sw.bb112 ], [ 13, %if.end108 ], [ %open.0, %if.else98 ], [ 12, %if.end83 ], [ %open.0, %if.else ], [ %open.0, %sw.bb49 ], [ %open.0, %if.end47 ], [ %open.0, %if.then ], [ %open.0, %if.then10 ], [ %open.0, %sw.bb ], [ %open.0, %if.then20 ], [ %open.0, %if.then23 ], [ %open.0, %sw.bb17 ], [ %open.0, %if.then55 ], [ %open.0, %if.then52 ], [ 12, %if.then70 ], [ 12, %if.then67 ], [ 13, %if.then92 ], [ 13, %if.then89 ], [ %open.0, %sw.bb120 ], [ %open.0, %for.inc.fold.split ], [ %open.0, %sw.bb195 ], [ %open.0, %for.inc.fold.split95 ], [ %open.0, %sw.bb2.i ], [ %open.0, %for.cond ], [ %open.0, %for.cond ], [ %open.0, %for.cond ], [ %open.0, %for.cond ] +for.cond.backedge: ; preds = %for.cond, %for.cond, %for.cond, %for.cond, %sw.bb2.i, %lor.lhs.false152, %sw.bb2.i96, %sw.bb195, %for.inc.fold.split95, %sw.bb120, %for.inc.fold.split, %if.then89, %if.then92, %if.then67, %if.then70, %if.then52, %if.then55, %sw.bb17, %if.then23, %if.then20, %sw.bb, %if.then10, %if.then, %if.end47, %sw.bb49, %if.else, %if.end83, %if.else98, %if.end108, %if.then115, %sw.bb112, %land.lhs.true, %land.lhs.true129, %cond.end185, %if.then189, %land.lhs.true202, %if.then205, %sw.bb211, %cond.end + %ptr.pn.be = phi ptr [ %ptr.addr.0, %cond.end ], [ %ptr.addr.0, %sw.bb211 ], [ %ptr.addr.0, %if.then205 ], [ %ptr.addr.0, %land.lhs.true202 ], [ %ptr.addr.0, %if.then189 ], [ %ptr.addr.0, %cond.end185 ], [ %ptr.addr.0, %land.lhs.true129 ], [ %ptr.addr.0, %land.lhs.true ], [ %ptr.addr.0, %if.then115 ], [ %ptr.addr.0, %sw.bb112 ], [ %ptr.addr.0, %if.end108 ], [ %ptr.addr.0, %if.else98 ], [ %ptr.addr.0, %if.end83 ], [ %ptr.addr.0, %if.else ], [ %ptr.addr.0, %sw.bb49 ], [ %add.ptr48, %if.end47 ], [ %ptr.addr.0, %if.then ], [ %ptr.addr.0, %if.then10 ], [ %ptr.addr.0, %sw.bb ], [ %arrayidx, %if.then20 ], [ %arrayidx, %if.then23 ], [ %arrayidx, %sw.bb17 ], [ %ptr.addr.0, %if.then55 ], [ %ptr.addr.0, %if.then52 ], [ %ptr.addr.0, %if.then70 ], [ %ptr.addr.0, %if.then67 ], [ %ptr.addr.0, %if.then92 ], [ %ptr.addr.0, %if.then89 ], [ %ptr.addr.0, %sw.bb120 ], [ %ptr.addr.0, %for.inc.fold.split ], [ %ptr.addr.0, %sw.bb195 ], [ %ptr.addr.0, %for.inc.fold.split95 ], [ %ptr.addr.0, %sw.bb2.i96 ], [ %ptr.addr.0, %lor.lhs.false152 ], [ %ptr.addr.0, %sw.bb2.i ], [ %ptr.addr.0, %for.cond ], [ %ptr.addr.0, %for.cond ], [ %ptr.addr.0, %for.cond ], [ %ptr.addr.0, %for.cond ] + %state.0.be = phi i32 [ %state.0, %cond.end ], [ 2, %sw.bb211 ], [ 2, %if.then205 ], [ 2, %land.lhs.true202 ], [ 2, %if.then189 ], [ 2, %cond.end185 ], [ 2, %land.lhs.true129 ], [ 2, %land.lhs.true ], [ %state.0, %if.then115 ], [ %state.0, %sw.bb112 ], [ 0, %if.end108 ], [ 2, %if.else98 ], [ 0, %if.end83 ], [ 2, %if.else ], [ %state.0, %sw.bb49 ], [ %state.3, %if.end47 ], [ 1, %if.then ], [ 1, %if.then10 ], [ %state.0, %sw.bb ], [ 1, %if.then20 ], [ 1, %if.then23 ], [ %state.0, %sw.bb17 ], [ 1, %if.then55 ], [ 1, %if.then52 ], [ 2, %if.then70 ], [ 2, %if.then67 ], [ 2, %if.then92 ], [ 2, %if.then89 ], [ 0, %sw.bb120 ], [ %state.0, %for.inc.fold.split ], [ 0, %sw.bb195 ], [ %state.0, %for.inc.fold.split95 ], [ 2, %sw.bb2.i96 ], [ 2, %lor.lhs.false152 ], [ %state.0, %sw.bb2.i ], [ %state.0, %for.cond ], [ %state.0, %for.cond ], [ %state.0, %for.cond ], [ %state.0, %for.cond ] + %nAtts.0.be = phi i32 [ %nAtts.0, %cond.end ], [ %nAtts.0, %sw.bb211 ], [ %nAtts.0, %if.then205 ], [ %nAtts.0, %land.lhs.true202 ], [ %nAtts.0, %if.then189 ], [ %nAtts.0, %cond.end185 ], [ %nAtts.0, %land.lhs.true129 ], [ %nAtts.0, %land.lhs.true ], [ %nAtts.0, %if.then115 ], [ %nAtts.0, %sw.bb112 ], [ %inc109, %if.end108 ], [ %nAtts.0, %if.else98 ], [ %inc, %if.end83 ], [ %nAtts.0, %if.else ], [ %nAtts.0, %sw.bb49 ], [ %nAtts.0, %if.end47 ], [ %nAtts.0, %if.then ], [ %nAtts.0, %if.then10 ], [ %nAtts.0, %sw.bb ], [ %nAtts.0, %if.then20 ], [ %nAtts.0, %if.then23 ], [ %nAtts.0, %sw.bb17 ], [ %nAtts.0, %if.then55 ], [ %nAtts.0, %if.then52 ], [ %nAtts.0, %if.then70 ], [ %nAtts.0, %if.then67 ], [ %nAtts.0, %if.then92 ], [ %nAtts.0, %if.then89 ], [ %nAtts.0, %sw.bb120 ], [ %nAtts.0, %for.inc.fold.split ], [ %nAtts.0, %sw.bb195 ], [ %nAtts.0, %for.inc.fold.split95 ], [ %nAtts.0, %sw.bb2.i96 ], [ %nAtts.0, %lor.lhs.false152 ], [ %nAtts.0, %sw.bb2.i ], [ %nAtts.0, %for.cond ], [ %nAtts.0, %for.cond ], [ %nAtts.0, %for.cond ], [ %nAtts.0, %for.cond ] + %open.0.be = phi i32 [ %open.0, %cond.end ], [ %open.0, %sw.bb211 ], [ %open.0, %if.then205 ], [ %open.0, %land.lhs.true202 ], [ %open.0, %if.then189 ], [ %open.0, %cond.end185 ], [ %open.0, %land.lhs.true129 ], [ %open.0, %land.lhs.true ], [ %open.0, %if.then115 ], [ %open.0, %sw.bb112 ], [ 13, %if.end108 ], [ %open.0, %if.else98 ], [ 12, %if.end83 ], [ %open.0, %if.else ], [ %open.0, %sw.bb49 ], [ %open.0, %if.end47 ], [ %open.0, %if.then ], [ %open.0, %if.then10 ], [ %open.0, %sw.bb ], [ %open.0, %if.then20 ], [ %open.0, %if.then23 ], [ %open.0, %sw.bb17 ], [ %open.0, %if.then55 ], [ %open.0, %if.then52 ], [ 12, %if.then70 ], [ 12, %if.then67 ], [ 13, %if.then92 ], [ 13, %if.then89 ], [ %open.0, %sw.bb120 ], [ %open.0, %for.inc.fold.split ], [ %open.0, %sw.bb195 ], [ %open.0, %for.inc.fold.split95 ], [ %open.0, %sw.bb2.i96 ], [ %open.0, %lor.lhs.false152 ], [ %open.0, %sw.bb2.i ], [ %open.0, %for.cond ], [ %open.0, %for.cond ], [ %open.0, %for.cond ], [ %open.0, %for.cond ] br label %for.cond sw.bb2.i: ; preds = %for.cond @@ -10299,17 +10299,13 @@ lor.lhs.false152: ; preds = %cond.true144 %add.ptr153 = getelementptr i8, ptr %ptr.pn, i64 4 %arrayidx154 = getelementptr i8, ptr %ptr.pn, i64 5 %8 = load i8, ptr %arrayidx154, align 1 - switch i8 %8, label %sw.epilog5.i98 [ + switch i8 %8, label %for.cond.backedge [ i8 0, label %cond.true158 - i8 -40, label %cond.end185 - i8 -39, label %cond.end185 - i8 -38, label %cond.end185 - i8 -37, label %cond.end185 - i8 -36, label %sw.bb1.i100 - i8 -35, label %sw.bb1.i100 - i8 -34, label %sw.bb1.i100 - i8 -33, label %sw.bb1.i100 i8 -1, label %sw.bb2.i96 + i8 -33, label %cond.end185 + i8 -34, label %cond.end185 + i8 -35, label %cond.end185 + i8 -36, label %cond.end185 ] cond.true158: ; preds = %lor.lhs.false152 @@ -10324,19 +10320,13 @@ cond.true173: ; preds = %cond.true158 %conv178 = zext i8 %11 to i32 br label %cond.end185 -sw.bb1.i100: ; preds = %lor.lhs.false152, %lor.lhs.false152, %lor.lhs.false152, %lor.lhs.false152 - br label %cond.end185 - sw.bb2.i96: ; preds = %lor.lhs.false152 %12 = load i8, ptr %add.ptr153, align 1 %switch.i97 = icmp ugt i8 %12, -3 - br i1 %switch.i97, label %cond.end185, label %sw.epilog5.i98 - -sw.epilog5.i98: ; preds = %lor.lhs.false152, %sw.bb2.i96 - br label %cond.end185 + br i1 %switch.i97, label %cond.end185, label %for.cond.backedge -cond.end185: ; preds = %lor.lhs.false152, %lor.lhs.false152, %lor.lhs.false152, %lor.lhs.false152, %sw.epilog5.i98, %sw.bb2.i96, %sw.bb1.i100, %cond.true173 - %cond186 = phi i32 [ %conv178, %cond.true173 ], [ 29, %sw.epilog5.i98 ], [ 8, %sw.bb1.i100 ], [ 0, %sw.bb2.i96 ], [ 7, %lor.lhs.false152 ], [ 7, %lor.lhs.false152 ], [ 7, %lor.lhs.false152 ], [ 7, %lor.lhs.false152 ] +cond.end185: ; preds = %lor.lhs.false152, %lor.lhs.false152, %lor.lhs.false152, %lor.lhs.false152, %sw.bb2.i96, %cond.true173 + %cond186 = phi i32 [ %conv178, %cond.true173 ], [ 0, %sw.bb2.i96 ], [ 8, %lor.lhs.false152 ], [ 8, %lor.lhs.false152 ], [ 8, %lor.lhs.false152 ], [ 8, %lor.lhs.false152 ] %cmp187 = icmp eq i32 %cond186, %open.0 br i1 %cmp187, label %if.then189, label %for.cond.backedge @@ -16127,11 +16117,11 @@ for.cond: ; preds = %for.cond.backedge, i8 -1, label %sw.bb2.i ] -for.cond.backedge: ; preds = %for.cond, %for.cond, %for.cond, %for.cond, %sw.bb2.i, %sw.bb197, %for.inc.fold.split95, %sw.bb121, %for.inc.fold.split, %if.then90, %if.then93, %if.then68, %if.then71, %if.then53, %if.then56, %sw.bb, %if.then11, %if.then, %if.end32, %if.end48, %sw.bb50, %if.else, %if.end84, %if.else99, %if.end109, %if.then116, %sw.bb113, %land.lhs.true, %land.lhs.true130, %cond.end187, %if.then191, %land.lhs.true204, %if.then207, %sw.bb213, %cond.end - %ptr.pn.be = phi ptr [ %ptr.addr.0, %cond.end ], [ %ptr.addr.0, %sw.bb213 ], [ %ptr.addr.0, %if.then207 ], [ %ptr.addr.0, %land.lhs.true204 ], [ %ptr.addr.0, %if.then191 ], [ %ptr.addr.0, %cond.end187 ], [ %ptr.addr.0, %land.lhs.true130 ], [ %ptr.addr.0, %land.lhs.true ], [ %ptr.addr.0, %if.then116 ], [ %ptr.addr.0, %sw.bb113 ], [ %ptr.addr.0, %if.end109 ], [ %ptr.addr.0, %if.else99 ], [ %ptr.addr.0, %if.end84 ], [ %ptr.addr.0, %if.else ], [ %ptr.addr.0, %sw.bb50 ], [ %add.ptr49, %if.end48 ], [ %add.ptr33, %if.end32 ], [ %ptr.addr.0, %if.then ], [ %ptr.addr.0, %if.then11 ], [ %ptr.addr.0, %sw.bb ], [ %ptr.addr.0, %if.then56 ], [ %ptr.addr.0, %if.then53 ], [ %ptr.addr.0, %if.then71 ], [ %ptr.addr.0, %if.then68 ], [ %ptr.addr.0, %if.then93 ], [ %ptr.addr.0, %if.then90 ], [ %ptr.addr.0, %sw.bb121 ], [ %ptr.addr.0, %for.inc.fold.split ], [ %ptr.addr.0, %sw.bb197 ], [ %ptr.addr.0, %for.inc.fold.split95 ], [ %ptr.addr.0, %sw.bb2.i ], [ %ptr.addr.0, %for.cond ], [ %ptr.addr.0, %for.cond ], [ %ptr.addr.0, %for.cond ], [ %ptr.addr.0, %for.cond ] - %state.0.be = phi i32 [ %state.0, %cond.end ], [ 2, %sw.bb213 ], [ 2, %if.then207 ], [ 2, %land.lhs.true204 ], [ 2, %if.then191 ], [ 2, %cond.end187 ], [ 2, %land.lhs.true130 ], [ 2, %land.lhs.true ], [ %state.0, %if.then116 ], [ %state.0, %sw.bb113 ], [ 0, %if.end109 ], [ 2, %if.else99 ], [ 0, %if.end84 ], [ 2, %if.else ], [ %state.0, %sw.bb50 ], [ %state.3, %if.end48 ], [ %state.2, %if.end32 ], [ 1, %if.then ], [ 1, %if.then11 ], [ %state.0, %sw.bb ], [ 1, %if.then56 ], [ 1, %if.then53 ], [ 2, %if.then71 ], [ 2, %if.then68 ], [ 2, %if.then93 ], [ 2, %if.then90 ], [ 0, %sw.bb121 ], [ %state.0, %for.inc.fold.split ], [ 0, %sw.bb197 ], [ %state.0, %for.inc.fold.split95 ], [ %state.0, %sw.bb2.i ], [ %state.0, %for.cond ], [ %state.0, %for.cond ], [ %state.0, %for.cond ], [ %state.0, %for.cond ] - %nAtts.0.be = phi i32 [ %nAtts.0, %cond.end ], [ %nAtts.0, %sw.bb213 ], [ %nAtts.0, %if.then207 ], [ %nAtts.0, %land.lhs.true204 ], [ %nAtts.0, %if.then191 ], [ %nAtts.0, %cond.end187 ], [ %nAtts.0, %land.lhs.true130 ], [ %nAtts.0, %land.lhs.true ], [ %nAtts.0, %if.then116 ], [ %nAtts.0, %sw.bb113 ], [ %inc110, %if.end109 ], [ %nAtts.0, %if.else99 ], [ %inc, %if.end84 ], [ %nAtts.0, %if.else ], [ %nAtts.0, %sw.bb50 ], [ %nAtts.0, %if.end48 ], [ %nAtts.0, %if.end32 ], [ %nAtts.0, %if.then ], [ %nAtts.0, %if.then11 ], [ %nAtts.0, %sw.bb ], [ %nAtts.0, %if.then56 ], [ %nAtts.0, %if.then53 ], [ %nAtts.0, %if.then71 ], [ %nAtts.0, %if.then68 ], [ %nAtts.0, %if.then93 ], [ %nAtts.0, %if.then90 ], [ %nAtts.0, %sw.bb121 ], [ %nAtts.0, %for.inc.fold.split ], [ %nAtts.0, %sw.bb197 ], [ %nAtts.0, %for.inc.fold.split95 ], [ %nAtts.0, %sw.bb2.i ], [ %nAtts.0, %for.cond ], [ %nAtts.0, %for.cond ], [ %nAtts.0, %for.cond ], [ %nAtts.0, %for.cond ] - %open.0.be = phi i32 [ %open.0, %cond.end ], [ %open.0, %sw.bb213 ], [ %open.0, %if.then207 ], [ %open.0, %land.lhs.true204 ], [ %open.0, %if.then191 ], [ %open.0, %cond.end187 ], [ %open.0, %land.lhs.true130 ], [ %open.0, %land.lhs.true ], [ %open.0, %if.then116 ], [ %open.0, %sw.bb113 ], [ 13, %if.end109 ], [ %open.0, %if.else99 ], [ 12, %if.end84 ], [ %open.0, %if.else ], [ %open.0, %sw.bb50 ], [ %open.0, %if.end48 ], [ %open.0, %if.end32 ], [ %open.0, %if.then ], [ %open.0, %if.then11 ], [ %open.0, %sw.bb ], [ %open.0, %if.then56 ], [ %open.0, %if.then53 ], [ 12, %if.then71 ], [ 12, %if.then68 ], [ 13, %if.then93 ], [ 13, %if.then90 ], [ %open.0, %sw.bb121 ], [ %open.0, %for.inc.fold.split ], [ %open.0, %sw.bb197 ], [ %open.0, %for.inc.fold.split95 ], [ %open.0, %sw.bb2.i ], [ %open.0, %for.cond ], [ %open.0, %for.cond ], [ %open.0, %for.cond ], [ %open.0, %for.cond ] +for.cond.backedge: ; preds = %for.cond, %for.cond, %for.cond, %for.cond, %sw.bb2.i, %lor.lhs.false153, %sw.bb2.i96, %sw.bb197, %for.inc.fold.split95, %sw.bb121, %for.inc.fold.split, %if.then90, %if.then93, %if.then68, %if.then71, %if.then53, %if.then56, %sw.bb, %if.then11, %if.then, %if.end32, %if.end48, %sw.bb50, %if.else, %if.end84, %if.else99, %if.end109, %if.then116, %sw.bb113, %land.lhs.true, %land.lhs.true130, %cond.end187, %if.then191, %land.lhs.true204, %if.then207, %sw.bb213, %cond.end + %ptr.pn.be = phi ptr [ %ptr.addr.0, %cond.end ], [ %ptr.addr.0, %sw.bb213 ], [ %ptr.addr.0, %if.then207 ], [ %ptr.addr.0, %land.lhs.true204 ], [ %ptr.addr.0, %if.then191 ], [ %ptr.addr.0, %cond.end187 ], [ %ptr.addr.0, %land.lhs.true130 ], [ %ptr.addr.0, %land.lhs.true ], [ %ptr.addr.0, %if.then116 ], [ %ptr.addr.0, %sw.bb113 ], [ %ptr.addr.0, %if.end109 ], [ %ptr.addr.0, %if.else99 ], [ %ptr.addr.0, %if.end84 ], [ %ptr.addr.0, %if.else ], [ %ptr.addr.0, %sw.bb50 ], [ %add.ptr49, %if.end48 ], [ %add.ptr33, %if.end32 ], [ %ptr.addr.0, %if.then ], [ %ptr.addr.0, %if.then11 ], [ %ptr.addr.0, %sw.bb ], [ %ptr.addr.0, %if.then56 ], [ %ptr.addr.0, %if.then53 ], [ %ptr.addr.0, %if.then71 ], [ %ptr.addr.0, %if.then68 ], [ %ptr.addr.0, %if.then93 ], [ %ptr.addr.0, %if.then90 ], [ %ptr.addr.0, %sw.bb121 ], [ %ptr.addr.0, %for.inc.fold.split ], [ %ptr.addr.0, %sw.bb197 ], [ %ptr.addr.0, %for.inc.fold.split95 ], [ %ptr.addr.0, %sw.bb2.i96 ], [ %ptr.addr.0, %lor.lhs.false153 ], [ %ptr.addr.0, %sw.bb2.i ], [ %ptr.addr.0, %for.cond ], [ %ptr.addr.0, %for.cond ], [ %ptr.addr.0, %for.cond ], [ %ptr.addr.0, %for.cond ] + %state.0.be = phi i32 [ %state.0, %cond.end ], [ 2, %sw.bb213 ], [ 2, %if.then207 ], [ 2, %land.lhs.true204 ], [ 2, %if.then191 ], [ 2, %cond.end187 ], [ 2, %land.lhs.true130 ], [ 2, %land.lhs.true ], [ %state.0, %if.then116 ], [ %state.0, %sw.bb113 ], [ 0, %if.end109 ], [ 2, %if.else99 ], [ 0, %if.end84 ], [ 2, %if.else ], [ %state.0, %sw.bb50 ], [ %state.3, %if.end48 ], [ %state.2, %if.end32 ], [ 1, %if.then ], [ 1, %if.then11 ], [ %state.0, %sw.bb ], [ 1, %if.then56 ], [ 1, %if.then53 ], [ 2, %if.then71 ], [ 2, %if.then68 ], [ 2, %if.then93 ], [ 2, %if.then90 ], [ 0, %sw.bb121 ], [ %state.0, %for.inc.fold.split ], [ 0, %sw.bb197 ], [ %state.0, %for.inc.fold.split95 ], [ 2, %sw.bb2.i96 ], [ 2, %lor.lhs.false153 ], [ %state.0, %sw.bb2.i ], [ %state.0, %for.cond ], [ %state.0, %for.cond ], [ %state.0, %for.cond ], [ %state.0, %for.cond ] + %nAtts.0.be = phi i32 [ %nAtts.0, %cond.end ], [ %nAtts.0, %sw.bb213 ], [ %nAtts.0, %if.then207 ], [ %nAtts.0, %land.lhs.true204 ], [ %nAtts.0, %if.then191 ], [ %nAtts.0, %cond.end187 ], [ %nAtts.0, %land.lhs.true130 ], [ %nAtts.0, %land.lhs.true ], [ %nAtts.0, %if.then116 ], [ %nAtts.0, %sw.bb113 ], [ %inc110, %if.end109 ], [ %nAtts.0, %if.else99 ], [ %inc, %if.end84 ], [ %nAtts.0, %if.else ], [ %nAtts.0, %sw.bb50 ], [ %nAtts.0, %if.end48 ], [ %nAtts.0, %if.end32 ], [ %nAtts.0, %if.then ], [ %nAtts.0, %if.then11 ], [ %nAtts.0, %sw.bb ], [ %nAtts.0, %if.then56 ], [ %nAtts.0, %if.then53 ], [ %nAtts.0, %if.then71 ], [ %nAtts.0, %if.then68 ], [ %nAtts.0, %if.then93 ], [ %nAtts.0, %if.then90 ], [ %nAtts.0, %sw.bb121 ], [ %nAtts.0, %for.inc.fold.split ], [ %nAtts.0, %sw.bb197 ], [ %nAtts.0, %for.inc.fold.split95 ], [ %nAtts.0, %sw.bb2.i96 ], [ %nAtts.0, %lor.lhs.false153 ], [ %nAtts.0, %sw.bb2.i ], [ %nAtts.0, %for.cond ], [ %nAtts.0, %for.cond ], [ %nAtts.0, %for.cond ], [ %nAtts.0, %for.cond ] + %open.0.be = phi i32 [ %open.0, %cond.end ], [ %open.0, %sw.bb213 ], [ %open.0, %if.then207 ], [ %open.0, %land.lhs.true204 ], [ %open.0, %if.then191 ], [ %open.0, %cond.end187 ], [ %open.0, %land.lhs.true130 ], [ %open.0, %land.lhs.true ], [ %open.0, %if.then116 ], [ %open.0, %sw.bb113 ], [ 13, %if.end109 ], [ %open.0, %if.else99 ], [ 12, %if.end84 ], [ %open.0, %if.else ], [ %open.0, %sw.bb50 ], [ %open.0, %if.end48 ], [ %open.0, %if.end32 ], [ %open.0, %if.then ], [ %open.0, %if.then11 ], [ %open.0, %sw.bb ], [ %open.0, %if.then56 ], [ %open.0, %if.then53 ], [ 12, %if.then71 ], [ 12, %if.then68 ], [ 13, %if.then93 ], [ 13, %if.then90 ], [ %open.0, %sw.bb121 ], [ %open.0, %for.inc.fold.split ], [ %open.0, %sw.bb197 ], [ %open.0, %for.inc.fold.split95 ], [ %open.0, %sw.bb2.i96 ], [ %open.0, %lor.lhs.false153 ], [ %open.0, %sw.bb2.i ], [ %open.0, %for.cond ], [ %open.0, %for.cond ], [ %open.0, %for.cond ], [ %open.0, %for.cond ] br label %for.cond sw.bb2.i: ; preds = %for.cond @@ -16348,17 +16338,13 @@ cond.true145: ; preds = %land.lhs.true135 lor.lhs.false153: ; preds = %cond.true145 %add.ptr154 = getelementptr i8, ptr %ptr.pn, i64 4 %8 = load i8, ptr %add.ptr154, align 1 - switch i8 %8, label %sw.epilog5.i98 [ + switch i8 %8, label %for.cond.backedge [ i8 0, label %cond.true159 - i8 -40, label %cond.end187 - i8 -39, label %cond.end187 - i8 -38, label %cond.end187 - i8 -37, label %cond.end187 - i8 -36, label %sw.bb1.i100 - i8 -35, label %sw.bb1.i100 - i8 -34, label %sw.bb1.i100 - i8 -33, label %sw.bb1.i100 i8 -1, label %sw.bb2.i96 + i8 -33, label %cond.end187 + i8 -34, label %cond.end187 + i8 -35, label %cond.end187 + i8 -36, label %cond.end187 ] cond.true159: ; preds = %lor.lhs.false153 @@ -16374,20 +16360,14 @@ cond.true174: ; preds = %cond.true159 %conv180 = zext i8 %11 to i32 br label %cond.end187 -sw.bb1.i100: ; preds = %lor.lhs.false153, %lor.lhs.false153, %lor.lhs.false153, %lor.lhs.false153 - br label %cond.end187 - sw.bb2.i96: ; preds = %lor.lhs.false153 %arrayidx185 = getelementptr i8, ptr %ptr.pn, i64 5 %12 = load i8, ptr %arrayidx185, align 1 %switch.i97 = icmp ugt i8 %12, -3 - br i1 %switch.i97, label %cond.end187, label %sw.epilog5.i98 - -sw.epilog5.i98: ; preds = %lor.lhs.false153, %sw.bb2.i96 - br label %cond.end187 + br i1 %switch.i97, label %cond.end187, label %for.cond.backedge -cond.end187: ; preds = %lor.lhs.false153, %lor.lhs.false153, %lor.lhs.false153, %lor.lhs.false153, %sw.epilog5.i98, %sw.bb2.i96, %sw.bb1.i100, %cond.true174 - %cond188 = phi i32 [ %conv180, %cond.true174 ], [ 29, %sw.epilog5.i98 ], [ 8, %sw.bb1.i100 ], [ 0, %sw.bb2.i96 ], [ 7, %lor.lhs.false153 ], [ 7, %lor.lhs.false153 ], [ 7, %lor.lhs.false153 ], [ 7, %lor.lhs.false153 ] +cond.end187: ; preds = %lor.lhs.false153, %lor.lhs.false153, %lor.lhs.false153, %lor.lhs.false153, %sw.bb2.i96, %cond.true174 + %cond188 = phi i32 [ %conv180, %cond.true174 ], [ 0, %sw.bb2.i96 ], [ 8, %lor.lhs.false153 ], [ 8, %lor.lhs.false153 ], [ 8, %lor.lhs.false153 ], [ 8, %lor.lhs.false153 ] %cmp189 = icmp eq i32 %cond188, %open.0 br i1 %cmp189, label %if.then191, label %for.cond.backedge diff --git a/bench/csmith/optimized/CGContext.cpp.ll b/bench/csmith/optimized/CGContext.cpp.ll index 8d03606dc8c..96a4a28db34 100644 --- a/bench/csmith/optimized/CGContext.cpp.ll +++ b/bench/csmith/optimized/CGContext.cpp.ll @@ -2582,11 +2582,8 @@ _ZNK9CGContext17get_current_blockEv.exit: ; preds = %_ZNK9CGContext17get %56 = icmp sgt i32 %55, -1 br i1 %56, label %.lr.ph38, label %.loopexit -.lr.ph38.loopexit: ; preds = %64 - br label %.lr.ph38, !llvm.loop !20 - -.lr.ph38: ; preds = %45, %.lr.ph38.loopexit - %.236 = phi i32 [ %.3, %.lr.ph38.loopexit ], [ %55, %45 ] +.lr.ph38: ; preds = %45, %68 + %.236 = phi i32 [ %.3, %68 ], [ %55, %45 ] %57 = zext nneg i32 %.236 to i64 %58 = load ptr, ptr %46, align 8 %59 = getelementptr inbounds ptr, ptr %58, i64 %57 @@ -2606,10 +2603,14 @@ _ZNK9CGContext17get_current_blockEv.exit: ; preds = %_ZNK9CGContext17get %66 = load ptr, ptr %65, align 8 %67 = add nuw nsw i32 %.3, 1 %.not29 = icmp eq ptr %66, null - br i1 %.not29, label %.lr.ph38.loopexit, label %61, !llvm.loop !20 + br i1 %.not29, label %68, label %61, !llvm.loop !20 + +68: ; preds = %64 + %69 = icmp sgt i32 %.3, -1 + br i1 %69, label %.lr.ph38, label %.loopexit, !llvm.loop !21 -.loopexit: ; preds = %.lr.ph, %_ZNK9CGContext17get_current_blockEv.exit, %61, %45, %2 - %.024 = phi i32 [ -1, %2 ], [ 8888, %45 ], [ 9999, %61 ], [ %.123, %_ZNK9CGContext17get_current_blockEv.exit ], [ 0, %.lr.ph ] +.loopexit: ; preds = %.lr.ph, %_ZNK9CGContext17get_current_blockEv.exit, %68, %61, %45, %2 + %.024 = phi i32 [ -1, %2 ], [ 8888, %45 ], [ 9999, %61 ], [ 8888, %68 ], [ %.123, %_ZNK9CGContext17get_current_blockEv.exit ], [ 0, %.lr.ph ] ret i32 %.024 } @@ -2785,7 +2786,7 @@ define dso_local void @_ZN9CGContext17output_call_chainERSo(ptr nocapture nounde %24 = sub i64 %22, %23 %25 = ashr exact i64 %24, 3 %26 = icmp ult i64 %19, %25 - br i1 %26, label %.lr.ph, label %._crit_edge, !llvm.loop !21 + br i1 %26, label %.lr.ph, label %._crit_edge, !llvm.loop !22 ._crit_edge: ; preds = %12, %2 %27 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) @@ -2846,7 +2847,7 @@ _ZNK9CGContext17get_current_blockEv.exit: ; preds = %2, %4, %9 %26 = sub i64 %24, %25 %27 = ashr exact i64 %26, 3 %28 = icmp ult i64 %21, %27 - br i1 %28, label %.lr.ph, label %.loopexit, !llvm.loop !22 + br i1 %28, label %.lr.ph, label %.loopexit, !llvm.loop !23 .lr.ph: ; preds = %.preheader, %20 %29 = phi ptr [ %23, %20 ], [ %19, %.preheader ] @@ -2991,7 +2992,7 @@ define dso_local noundef zeroext i1 @_ZNK9CGContext11in_conflictERK6Effect(ptr n %50 = sub i64 %48, %49 %51 = ashr exact i64 %50, 3 %52 = icmp ult i64 %45, %51 - br i1 %52, label %13, label %.preheader, !llvm.loop !23 + br i1 %52, label %13, label %.preheader, !llvm.loop !24 53: ; preds = %.lr.ph27, %73 %54 = phi ptr [ %11, %.lr.ph27 ], [ %76, %73 ] @@ -3035,7 +3036,7 @@ define dso_local noundef zeroext i1 @_ZNK9CGContext11in_conflictERK6Effect(ptr n %79 = sub i64 %77, %78 %80 = ashr exact i64 %79, 3 %81 = icmp ult i64 %74, %80 - br i1 %81, label %53, label %_ZNK9CGContext14is_nonreadableEPK8Variable.exit, !llvm.loop !24 + br i1 %81, label %53, label %_ZNK9CGContext14is_nonreadableEPK8Variable.exit, !llvm.loop !25 _ZNK9CGContext14is_nonreadableEPK8Variable.exit: ; preds = %39, %.loopexit, %.lr.ph.i, %58, %53, %60, %63, %68, %73, %.preheader %.0 = phi i1 [ false, %.preheader ], [ true, %58 ], [ true, %53 ], [ true, %60 ], [ true, %63 ], [ true, %68 ], [ false, %73 ], [ true, %.lr.ph.i ], [ true, %.loopexit ], [ true, %39 ] @@ -3121,7 +3122,7 @@ _ZNK9CGContext17get_current_blockEv.exit.i: ; preds = %32, %27, %.lr.ph %47 = sub i64 %45, %46 %48 = ashr exact i64 %47, 3 %49 = icmp ult i64 %42, %48 - br i1 %49, label %.lr.ph.i, label %_ZNK9CGContext12is_frame_varEPK8Variable.exit, !llvm.loop !22 + br i1 %49, label %.lr.ph.i, label %_ZNK9CGContext12is_frame_varEPK8Variable.exit, !llvm.loop !23 .lr.ph.i: ; preds = %.preheader.i, %41 %50 = phi ptr [ %44, %41 ], [ %40, %.preheader.i ] @@ -3211,7 +3212,7 @@ _ZNK9CGContext12is_frame_varEPK8Variable.exit: ; preds = %41, %_ZNSt6vectorIP %90 = sub i64 %88, %89 %91 = ashr exact i64 %90, 3 %92 = icmp ult i64 %85, %91 - br i1 %92, label %.lr.ph, label %.loopexit17.loopexit, !llvm.loop !25 + br i1 %92, label %.lr.ph, label %.loopexit17.loopexit, !llvm.loop !26 .loopexit17.loopexit: ; preds = %_ZNK9CGContext12is_frame_varEPK8Variable.exit %.pre = load ptr, ptr %4, align 8 @@ -3227,7 +3228,7 @@ _ZNK9CGContext12is_frame_varEPK8Variable.exit: ; preds = %41, %_ZNSt6vectorIP %98 = sub i64 %96, %97 %99 = ashr exact i64 %98, 3 %100 = icmp ult i64 %95, %99 - br i1 %100, label %11, label %._crit_edge, !llvm.loop !26 + br i1 %100, label %11, label %._crit_edge, !llvm.loop !27 ._crit_edge: ; preds = %.loopexit17, %3 ret void @@ -3384,7 +3385,7 @@ _ZNSt6vectorIPK8VariableSaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt6vectorIP %74 = sub i64 %72, %73 %75 = ashr exact i64 %74, 3 %76 = icmp ult i64 %66, %75 - br i1 %76, label %27, label %.preheader, !llvm.loop !27 + br i1 %76, label %27, label %.preheader, !llvm.loop !28 77: ; preds = %.lr.ph51, %_ZNSt6vectorIPK8VariableSaIS2_EE9push_backERKS2_.exit27 %78 = phi ptr [ %25, %.lr.ph51 ], [ %122, %_ZNSt6vectorIPK8VariableSaIS2_EE9push_backERKS2_.exit27 ] @@ -3483,7 +3484,7 @@ _ZNSt6vectorIPK8VariableSaIS2_EE9push_backERKS2_.exit27: ; preds = %_ZNSt6vector %125 = sub i64 %123, %124 %126 = ashr exact i64 %125, 3 %127 = icmp ult i64 %116, %126 - br i1 %127, label %77, label %.loopexit, !llvm.loop !28 + br i1 %127, label %77, label %.loopexit, !llvm.loop !29 .loopexit: ; preds = %_ZNSt6vectorIPK8VariableSaIS2_EE9push_backERKS2_.exit27, %.preheader, %_ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit18 %128 = getelementptr inbounds i8, ptr %0, i64 88 @@ -3585,7 +3586,7 @@ _ZNSt6vectorIPK8VariableSaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__nor _ZNSt6vectorIPK8VariableSaIS2_EE9push_backERKS2_.exit36: ; preds = %_ZNSt6vectorIPK8VariableSaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i35, %145, %139 %173 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.037.053) #23 %.not47 = icmp eq ptr %173, %130 - br i1 %.not47, label %._crit_edge, label %132, !llvm.loop !29 + br i1 %.not47, label %._crit_edge, label %132, !llvm.loop !30 ._crit_edge: ; preds = %_ZNSt6vectorIPK8VariableSaIS2_EE9push_backERKS2_.exit36, %.loopexit ret void @@ -3724,7 +3725,7 @@ _ZNSt6vectorIPK8VariableSaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt6vectorIP %64 = sub i64 %62, %63 %65 = ashr exact i64 %64, 3 %66 = icmp ult i64 %57, %65 - br i1 %66, label %19, label %.preheader, !llvm.loop !30 + br i1 %66, label %19, label %.preheader, !llvm.loop !31 67: ; preds = %.lr.ph25, %_ZNSt6vectorIPK8VariableSaIS2_EE9push_backERKS2_.exit19 %68 = phi ptr [ %17, %.lr.ph25 ], [ %109, %_ZNSt6vectorIPK8VariableSaIS2_EE9push_backERKS2_.exit19 ] @@ -3819,7 +3820,7 @@ _ZNSt6vectorIPK8VariableSaIS2_EE9push_backERKS2_.exit19: ; preds = %_ZNSt6vector %112 = sub i64 %110, %111 %113 = ashr exact i64 %112, 3 %114 = icmp ult i64 %105, %113 - br i1 %114, label %67, label %._crit_edge, !llvm.loop !31 + br i1 %114, label %67, label %._crit_edge, !llvm.loop !32 ._crit_edge: ; preds = %_ZNSt6vectorIPK8VariableSaIS2_EE9push_backERKS2_.exit19, %.preheader ret void @@ -3851,7 +3852,7 @@ define linkonce_odr dso_local void @_ZNSt8_Rb_treeIPK8VariableSt4pairIKS2_jESt10 %6 = load ptr, ptr %5, align 8 tail call void @_ZdlPv(ptr noundef nonnull %.07) #18 %.not = icmp eq ptr %6, null - br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !32 + br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !33 ._crit_edge: ; preds = %.lr.ph, %2 ret void @@ -3949,7 +3950,7 @@ define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIPK8VariableSt4pairIKS2 %.0.in = getelementptr inbounds i8, ptr %.037, i64 16 %.0 = load ptr, ptr %.0.in, align 8 %.not31 = icmp eq ptr %.0, null - br i1 %.not31, label %._crit_edge, label %.lr.ph, !llvm.loop !33 + br i1 %.not31, label %._crit_edge, label %.lr.ph, !llvm.loop !34 37: ; preds = %20, %17 %38 = landingpad { ptr, i32 } @@ -4030,7 +4031,7 @@ define linkonce_odr dso_local { ptr, ptr } @_ZNSt8_Rb_treeIPK8VariableSt4pairIKS %.in.i = getelementptr inbounds i8, ptr %.02024.i, i64 %.in.v.i %.020.i = load ptr, ptr %.in.i, align 8 %.not.i = icmp eq ptr %.020.i, null - br i1 %.not.i, label %._crit_edge.i, label %19, !llvm.loop !34 + br i1 %.not.i, label %._crit_edge.i, label %19, !llvm.loop !35 ._crit_edge.i: ; preds = %19 br i1 %22, label %._crit_edge.thread.i, label %28 @@ -4102,7 +4103,7 @@ define linkonce_odr dso_local { ptr, ptr } @_ZNSt8_Rb_treeIPK8VariableSt4pairIKS %.in.i15 = getelementptr inbounds i8, ptr %.02024.i13, i64 %.in.v.i14 %.020.i16 = load ptr, ptr %.in.i15, align 8 %.not.i17 = icmp eq ptr %.020.i16, null - br i1 %.not.i17, label %._crit_edge.i18, label %.lr.ph.i12, !llvm.loop !34 + br i1 %.not.i17, label %._crit_edge.i18, label %.lr.ph.i12, !llvm.loop !35 ._crit_edge.i18: ; preds = %.lr.ph.i12 br i1 %54, label %._crit_edge.thread.i27, label %58 @@ -4167,7 +4168,7 @@ define linkonce_odr dso_local { ptr, ptr } @_ZNSt8_Rb_treeIPK8VariableSt4pairIKS %.in.i35 = getelementptr inbounds i8, ptr %.02024.i33, i64 %.in.v.i34 %.020.i36 = load ptr, ptr %.in.i35, align 8 %.not.i37 = icmp eq ptr %.020.i36, null - br i1 %.not.i37, label %._crit_edge.i38, label %.lr.ph.i32, !llvm.loop !34 + br i1 %.not.i37, label %._crit_edge.i38, label %.lr.ph.i32, !llvm.loop !35 ._crit_edge.i38: ; preds = %.lr.ph.i32 br i1 %80, label %._crit_edge.thread.i47, label %86 @@ -4324,3 +4325,4 @@ attributes #23 = { nounwind willreturn memory(read) } !32 = distinct !{!32, !6} !33 = distinct !{!33, !6} !34 = distinct !{!34, !6} +!35 = distinct !{!35, !6} diff --git a/bench/curl/optimized/libcurl_la-hsts.ll b/bench/curl/optimized/libcurl_la-hsts.ll index c36017407d6..4ef50d65c03 100644 --- a/bench/curl/optimized/libcurl_la-hsts.ll +++ b/bench/curl/optimized/libcurl_la-hsts.ll @@ -252,12 +252,10 @@ if.then114: ; preds = %if.end106 %expires115 = getelementptr inbounds i8, ptr %call112, i64 40 store i64 %11, ptr %expires115, align 8 %includeSubDomains = getelementptr inbounds i8, ptr %call112, i64 32 - %frombool = and i8 %subdomains.1, 1 - store i8 %frombool, ptr %includeSubDomains, align 8 + store i8 %subdomains.1, ptr %includeSubDomains, align 8 br label %return if.else117: ; preds = %if.end106 - %frombool.i = and i8 %subdomains.1, 1 %call.i = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %hostname) #10 %tobool.not.i = icmp eq i64 %call.i, 0 br i1 %tobool.not.i, label %return, label %land.lhs.true.i @@ -297,7 +295,7 @@ if.end13.i: ; preds = %if.end9.i %expires14.i = getelementptr inbounds i8, ptr %call.i.i, i64 40 store i64 %11, ptr %expires14.i, align 8 %includeSubDomains.i = getelementptr inbounds i8, ptr %call.i.i, i64 32 - store i8 %frombool.i, ptr %includeSubDomains.i, align 8 + store i8 %subdomains.1, ptr %includeSubDomains.i, align 8 %tail.i = getelementptr inbounds i8, ptr %h, i64 8 %16 = load ptr, ptr %tail.i, align 8 call void @Curl_llist_insert_next(ptr noundef %h, ptr noundef %16, ptr noundef nonnull %call.i.i, ptr noundef nonnull %call.i.i) #9 diff --git a/bench/cvc5/optimized/theory_strings_utils.cpp.ll b/bench/cvc5/optimized/theory_strings_utils.cpp.ll index c267164742b..fdef6f0cde2 100644 --- a/bench/cvc5/optimized/theory_strings_utils.cpp.ll +++ b/bench/cvc5/optimized/theory_strings_utils.cpp.ll @@ -4731,28 +4731,24 @@ terminate.lpad.i346: ; preds = %if.then13.i.i345 _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit347: ; preds = %cleanup, %if.then.i.i339, %if.then13.i.i345 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin5.sroa.0.0372, i64 8 %cmp.i.not = icmp eq ptr %incdec.ptr.i, %add.ptr.i.i - br i1 %cmp.i.not, label %if.end114.loopexit, label %for.body + br i1 %cmp.i.not, label %if.end114, label %for.body ehcleanup110: ; preds = %lpad101, %lpad90, %lpad78, %lpad67, %lpad56 %.pn = phi { ptr, i32 } [ %44, %lpad78 ], [ %32, %lpad56 ], [ %56, %lpad101 ], [ %55, %lpad90 ], [ %43, %lpad67 ] call void @_ZN4cvc58internal12NodeTemplateILb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp54) #21 br label %ehcleanup136 -if.end114.loopexit: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit347 - %60 = and i8 %allEmptyEqs.2, 1 - br label %if.end114 - -if.end114: ; preds = %if.end114.loopexit, %invoke.cont49, %entry, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit90, %if.then13.i.i132, %if.then.i.i126, %invoke.cont35, %if.then13.i.i48, %if.then.i.i42, %invoke.cont14 - %allEmptyEqs.0 = phi i8 [ 1, %invoke.cont14 ], [ 1, %if.then.i.i42 ], [ 1, %if.then13.i.i48 ], [ 1, %invoke.cont35 ], [ 1, %if.then.i.i126 ], [ 1, %if.then13.i.i132 ], [ 0, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit90 ], [ 1, %entry ], [ 1, %invoke.cont49 ], [ %60, %if.end114.loopexit ] - %61 = load i64, ptr %_M_node_count.i.i.i.i.i, align 8 - %cmp116 = icmp eq i64 %61, 0 - %62 = load ptr, ptr %_M_left.i.i.i.i.i, align 8 - %cmp.i.not3.i.i.i.i = icmp eq ptr %62, %0 +if.end114: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit347, %invoke.cont49, %entry, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit90, %if.then13.i.i132, %if.then.i.i126, %invoke.cont35, %if.then13.i.i48, %if.then.i.i42, %invoke.cont14 + %allEmptyEqs.0 = phi i8 [ 1, %invoke.cont14 ], [ 1, %if.then.i.i42 ], [ 1, %if.then13.i.i48 ], [ 1, %invoke.cont35 ], [ 1, %if.then.i.i126 ], [ 1, %if.then13.i.i132 ], [ 0, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit90 ], [ 1, %entry ], [ 1, %invoke.cont49 ], [ %allEmptyEqs.2, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit347 ] + %60 = load i64, ptr %_M_node_count.i.i.i.i.i, align 8 + %cmp116 = icmp eq i64 %60, 0 + %61 = load ptr, ptr %_M_left.i.i.i.i.i, align 8 + %cmp.i.not3.i.i.i.i = icmp eq ptr %61, %0 br i1 %cmp.i.not3.i.i.i.i, label %_ZNSt12_Vector_baseIN4cvc58internal12NodeTemplateILb1EEESaIS3_EE11_M_allocateEm.exit.i.i, label %while.body.i.i.i.i while.body.i.i.i.i: ; preds = %if.end114, %while.body.i.i.i.i %__n.05.i.i.i.i = phi i64 [ %inc.i.i.i.i, %while.body.i.i.i.i ], [ 0, %if.end114 ] - %__first.sroa.0.04.i.i.i.i = phi ptr [ %call.i.i.i.i.i, %while.body.i.i.i.i ], [ %62, %if.end114 ] + %__first.sroa.0.04.i.i.i.i = phi ptr [ %call.i.i.i.i.i, %while.body.i.i.i.i ], [ %61, %if.end114 ] %call.i.i.i.i.i = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %__first.sroa.0.04.i.i.i.i) #26 %inc.i.i.i.i = add nuw nsw i64 %__n.05.i.i.i.i, 1 %cmp.i.not.i.i.i.i = icmp eq ptr %call.i.i.i.i.i, %0 @@ -4777,7 +4773,7 @@ _ZNSt16allocator_traitsISaIN4cvc58internal12NodeTemplateILb1EEEEE8allocateERS4_m _ZNSt12_Vector_baseIN4cvc58internal12NodeTemplateILb1EEESaIS3_EE11_M_allocateEm.exit.i.i: ; preds = %_ZNSt16allocator_traitsISaIN4cvc58internal12NodeTemplateILb1EEEEE8allocateERS4_m.exit.i.i.i, %if.end114 %__n.0.lcssa.i.i58.i.i = phi i64 [ 0, %if.end114 ], [ %inc.i.i.i.i, %_ZNSt16allocator_traitsISaIN4cvc58internal12NodeTemplateILb1EEEEE8allocateERS4_m.exit.i.i.i ] %cond.i.i.i = phi ptr [ null, %if.end114 ], [ %call5.i.i.i.i1.i, %_ZNSt16allocator_traitsISaIN4cvc58internal12NodeTemplateILb1EEEEE8allocateERS4_m.exit.i.i.i ] - %call.i.i.i2.i2.i = invoke noundef ptr @_ZSt16__do_uninit_copyISt23_Rb_tree_const_iteratorIN4cvc58internal12NodeTemplateILb0EEEEPNS3_ILb1EEEET0_T_S9_S8_(ptr %62, ptr nonnull %0, ptr noundef %cond.i.i.i) + %call.i.i.i2.i2.i = invoke noundef ptr @_ZSt16__do_uninit_copyISt23_Rb_tree_const_iteratorIN4cvc58internal12NodeTemplateILb0EEEEPNS3_ILb1EEEET0_T_S9_S8_(ptr %61, ptr nonnull %0, ptr noundef %cond.i.i.i) to label %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb1EEESaIS3_EED2Ev.exit unwind label %lpad.i lpad.i.thread: ; preds = %if.then.i.i.i351, %_ZNSt16allocator_traitsISaIN4cvc58internal12NodeTemplateILb1EEEEE8allocateERS4_m.exit.i.i.i @@ -4810,10 +4806,10 @@ _ZNSt6vectorIN4cvc58internal12NodeTemplateILb1EEESaIS3_EED2Ev.exit: ; preds = %_ to label %_ZNSt3setIN4cvc58internal12NodeTemplateILb0EEESt4lessIS3_ESaIS3_EED2Ev.exit unwind label %terminate.lpad.i.i terminate.lpad.i.i: ; preds = %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb1EEESaIS3_EED2Ev.exit - %63 = landingpad { ptr, i32 } + %62 = landingpad { ptr, i32 } catch ptr null - %64 = extractvalue { ptr, i32 } %63, 0 - call void @__clang_call_terminate(ptr %64) #22 + %63 = extractvalue { ptr, i32 } %62, 0 + call void @__clang_call_terminate(ptr %63) #22 unreachable _ZNSt3setIN4cvc58internal12NodeTemplateILb0EEESt4lessIS3_ESaIS3_EED2Ev.exit: ; preds = %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb1EEESaIS3_EED2Ev.exit diff --git a/bench/darktable/optimized/MrwDecoder.cpp.ll b/bench/darktable/optimized/MrwDecoder.cpp.ll index b401b4c097e..74580159bee 100644 --- a/bench/darktable/optimized/MrwDecoder.cpp.ll +++ b/bench/darktable/optimized/MrwDecoder.cpp.ll @@ -194,7 +194,7 @@ define hidden void @_ZN8rawspeed10MrwDecoder11parseHeaderEv(ptr nocapture nounde tail call void @llvm.assume(i1 %30) %31 = zext nneg i32 %28 to i64 %32 = icmp eq i32 %21, 0 - br i1 %32, label %286, label %33 + br i1 %32, label %284, label %33 33: ; preds = %27 %34 = getelementptr inbounds i8, ptr %0, i64 136 @@ -207,22 +207,26 @@ define hidden void @_ZN8rawspeed10MrwDecoder11parseHeaderEv(ptr nocapture nounde %41 = getelementptr inbounds i8, ptr %0, i64 144 %42 = getelementptr inbounds i8, ptr %0, i64 148 %invariant.op = add nsw i64 %31, -4 - %invariant.op53 = add nsw i64 %31, -2 - br label %43 + %invariant.op106 = add nsw i64 %31, -2 + br label %.outer -43: ; preds = %280, %33 - %44 = phi i8 [ 0, %33 ], [ %281, %280 ] - %45 = phi i32 [ 8, %33 ], [ %71, %280 ] +.outer: ; preds = %.thread, %33 + %43 = phi i1 [ false, %.thread ], [ true, %33 ] + %.ph25 = phi i32 [ %71, %.thread ], [ 8, %33 ] + br label %44 + +44: ; preds = %.outer, %280 + %45 = phi i32 [ %71, %280 ], [ %.ph25, %.outer ] %46 = zext nneg i32 %45 to i64 %47 = add nuw nsw i64 %46, 4 %48 = icmp samesign ugt i64 %47, %31 br i1 %48, label %49, label %50 -49: ; preds = %43 +49: ; preds = %44 call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.13, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed6Buffer10getSubViewEjj) #15 unreachable -50: ; preds = %43 +50: ; preds = %44 %51 = add nuw nsw i32 %45, 4 %52 = icmp ule i32 %51, %28 call void @llvm.assume(i1 %52) @@ -288,7 +292,7 @@ define hidden void @_ZN8rawspeed10MrwDecoder11parseHeaderEv(ptr nocapture nounde %83 = icmp ule i32 %82, %28 call void @llvm.assume(i1 %83) %84 = zext nneg i32 %82 to i64 - %85 = icmp samesign ult i64 %invariant.op53, %84 + %85 = icmp samesign ult i64 %invariant.op106, %84 br i1 %85, label %86, label %87 86: ; preds = %81 @@ -467,7 +471,7 @@ define hidden void @_ZN8rawspeed10MrwDecoder11parseHeaderEv(ptr nocapture nounde 171: ; preds = %166 %172 = add nuw i32 %45, 32 %173 = icmp ugt i32 %172, %28 - br i1 %173, label %174, label %280 + br i1 %173, label %174, label %.thread 174: ; preds = %171 call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.15, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed10ByteStream5checkEj) #15 @@ -505,26 +509,26 @@ define hidden void @_ZN8rawspeed10MrwDecoder11parseHeaderEv(ptr nocapture nounde %190 = getelementptr inbounds i8, ptr %178, i64 32 %191 = load ptr, ptr %190, align 8, !tbaa !49 %192 = icmp eq ptr %189, %191 - br i1 %192, label %205, label %.preheader23 + br i1 %192, label %205, label %.preheader24 -.preheader23: ; preds = %187, %200 +.preheader24: ; preds = %187, %200 %193 = phi ptr [ %201, %200 ], [ %189, %187 ] %194 = load ptr, ptr %193, align 8, !tbaa !42 %195 = icmp eq ptr %194, null br i1 %195, label %200, label %196 -196: ; preds = %.preheader23 +196: ; preds = %.preheader24 %197 = load ptr, ptr %194, align 8, !tbaa !6 %198 = getelementptr inbounds i8, ptr %197, i64 16 %199 = load ptr, ptr %198, align 8 call void %199(ptr noundef nonnull align 8 dereferenceable(104) %194) #21 br label %200 -200: ; preds = %196, %.preheader23 +200: ; preds = %196, %.preheader24 store ptr null, ptr %193, align 8, !tbaa !42 %201 = getelementptr inbounds i8, ptr %193, i64 8 %202 = icmp eq ptr %201, %191 - br i1 %202, label %203, label %.preheader23, !llvm.loop !50 + br i1 %202, label %203, label %.preheader24, !llvm.loop !50 203: ; preds = %200 %204 = load ptr, ptr %188, align 8, !tbaa !47 @@ -668,41 +672,46 @@ define hidden void @_ZN8rawspeed10MrwDecoder11parseHeaderEv(ptr nocapture nounde store float %279, ptr %42, align 4, !tbaa !40 br label %280 -280: ; preds = %275, %242, %171, %76 - %281 = phi i8 [ %44, %76 ], [ %44, %242 ], [ 1, %171 ], [ %44, %275 ] +280: ; preds = %275, %242, %76 + %281 = icmp eq i32 %28, %71 + br i1 %281, label %283, label %44, !llvm.loop !53 + +.thread: ; preds = %171 %282 = icmp eq i32 %28, %71 - br i1 %282, label %283, label %43, !llvm.loop !53 + br i1 %282, label %.thread23, label %.outer, !llvm.loop !53 283: ; preds = %280 - %284 = and i8 %281, 1 - %285 = icmp eq i8 %284, 0 - br i1 %285, label %286, label %287 + br i1 %43, label %284, label %..thread23_crit_edge -286: ; preds = %283, %27 +..thread23_crit_edge: ; preds = %283 + %.pre = load i32, ptr %36, align 4, !tbaa !44 + %.pre188 = load i32, ptr %37, align 8, !tbaa !45 + %.pre189 = load i32, ptr %38, align 8, !tbaa !9 + %.pre190 = mul i32 %.pre188, %.pre + %.pre191 = mul i32 %.pre190, %.pre189 + br label %.thread23 + +284: ; preds = %283, %27 call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.8, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed10MrwDecoder11parseHeaderEv) #15 unreachable -287: ; preds = %283 - %288 = load i32, ptr %36, align 4, !tbaa !44 - %289 = load i32, ptr %37, align 8, !tbaa !45 - %290 = mul i32 %289, %288 - %291 = load i32, ptr %38, align 8, !tbaa !9 - %292 = mul i32 %290, %291 - %293 = lshr i32 %292, 3 - %294 = add nuw i32 %293, %28 - %295 = icmp ugt i32 %294, %6 - br i1 %295, label %296, label %297 - -296: ; preds = %287 +.thread23: ; preds = %.thread, %..thread23_crit_edge + %.pre-phi192 = phi i32 [ %.pre191, %..thread23_crit_edge ], [ %133, %.thread ] + %285 = lshr i32 %.pre-phi192, 3 + %286 = add nuw i32 %285, %28 + %287 = icmp ugt i32 %286, %6 + br i1 %287, label %288, label %289 + +288: ; preds = %.thread23 call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.13, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed6Buffer10getSubViewEjj) #15 unreachable -297: ; preds = %287 - %298 = getelementptr inbounds i8, ptr %4, i64 %31 - %299 = getelementptr inbounds i8, ptr %0, i64 112 - store ptr %298, ptr %299, align 8, !tbaa !42 - %300 = getelementptr inbounds i8, ptr %0, i64 120 - store i32 %293, ptr %300, align 8, !tbaa !43 +289: ; preds = %.thread23 + %290 = getelementptr inbounds i8, ptr %4, i64 %31 + %291 = getelementptr inbounds i8, ptr %0, i64 112 + store ptr %290, ptr %291, align 8, !tbaa !42 + %292 = getelementptr inbounds i8, ptr %0, i64 120 + store i32 %285, ptr %292, align 8, !tbaa !43 ret void } diff --git a/bench/darktable/optimized/export.c.ll b/bench/darktable/optimized/export.c.ll index aded515df93..4daa6f3e5e1 100644 --- a/bench/darktable/optimized/export.c.ll +++ b/bench/darktable/optimized/export.c.ll @@ -3679,7 +3679,7 @@ define internal fastcc void @set_storage_by_name(ptr nocapture noundef readonly %25 = getelementptr inbounds i8, ptr %0, i64 672 %26 = load ptr, ptr %25, align 8, !tbaa !62 tail call void @gtk_widget_hide(ptr noundef %26) #18 - br label %105 + br label %104 27: ; preds = %20, %12 %28 = getelementptr inbounds i8, ptr %13, i64 336 @@ -3748,70 +3748,69 @@ define internal fastcc void @set_storage_by_name(ptr nocapture noundef readonly %64 = load ptr, ptr getelementptr inbounds (i8, ptr @darktable, i64 184), align 8, !tbaa !63 %65 = load ptr, ptr %64, align 8, !tbaa !47 %66 = icmp eq ptr %65, null - br i1 %66, label %89, label %67 + br i1 %66, label %88, label %67 67: ; preds = %58 %68 = getelementptr inbounds i8, ptr %63, i64 96 - br label %72 - -69: ; preds = %84 - %70 = icmp eq i32 %85, 0 - %71 = zext i1 %70 to i32 - br label %89 - -72: ; preds = %84, %67 - %73 = phi ptr [ %65, %67 ], [ %87, %84 ] - %74 = phi i32 [ 1, %67 ], [ %85, %84 ] - %75 = load ptr, ptr %73, align 8, !tbaa !48 - %76 = load ptr, ptr %68, align 8, !tbaa !103 - %77 = call i32 %76(ptr noundef %63, ptr noundef %75) #18 - %78 = icmp eq i32 %77, 0 - br i1 %78, label %84, label %79 - -79: ; preds = %72 - %80 = load ptr, ptr %60, align 8, !tbaa !69 - %81 = getelementptr inbounds i8, ptr %75, i64 56 - %82 = load ptr, ptr %81, align 8, !tbaa !104 - %83 = call ptr %82() #18 - call void @dt_bauhaus_combobox_add(ptr noundef %80, ptr noundef %83) #18 - br label %84 - -84: ; preds = %79, %72 - %85 = phi i32 [ 0, %79 ], [ %74, %72 ] - %86 = getelementptr inbounds i8, ptr %73, i64 8 - %87 = load ptr, ptr %86, align 8, !tbaa !47 - %88 = icmp eq ptr %87, null - br i1 %88, label %69, label %72 - -89: ; preds = %69, %58 - %90 = phi i32 [ 0, %58 ], [ %71, %69 ] - %91 = load ptr, ptr %60, align 8, !tbaa !69 - call void @gtk_widget_set_sensitive(ptr noundef %91, i32 noundef %90) #18 - %92 = call ptr @dt_conf_get_string_const(ptr noundef nonnull @.str.2) #18 - %93 = call ptr @dt_imageio_get_format_by_name(ptr noundef %92) #18 - %94 = icmp eq ptr %93, null - br i1 %94, label %102, label %95 - -95: ; preds = %89 - %96 = load ptr, ptr %60, align 8, !tbaa !69 - %97 = getelementptr inbounds i8, ptr %93, i64 56 - %98 = load ptr, ptr %97, align 8, !tbaa !104 - %99 = call ptr %98() #18 - %100 = call i32 @dt_bauhaus_combobox_set_from_text(ptr noundef %96, ptr noundef %99) #18 - %101 = icmp eq i32 %100, 0 - br i1 %101, label %102, label %104 - -102: ; preds = %95, %89 - %103 = load ptr, ptr %60, align 8, !tbaa !69 - call void @dt_bauhaus_combobox_set(ptr noundef %103, i32 noundef 0) #18 - br label %104 - -104: ; preds = %102, %95 + br label %71 + +69: ; preds = %83 + %70 = xor i32 %84, 1 + br label %88 + +71: ; preds = %83, %67 + %72 = phi ptr [ %65, %67 ], [ %86, %83 ] + %73 = phi i32 [ 1, %67 ], [ %84, %83 ] + %74 = load ptr, ptr %72, align 8, !tbaa !48 + %75 = load ptr, ptr %68, align 8, !tbaa !103 + %76 = call i32 %75(ptr noundef %63, ptr noundef %74) #18 + %77 = icmp eq i32 %76, 0 + br i1 %77, label %83, label %78 + +78: ; preds = %71 + %79 = load ptr, ptr %60, align 8, !tbaa !69 + %80 = getelementptr inbounds i8, ptr %74, i64 56 + %81 = load ptr, ptr %80, align 8, !tbaa !104 + %82 = call ptr %81() #18 + call void @dt_bauhaus_combobox_add(ptr noundef %79, ptr noundef %82) #18 + br label %83 + +83: ; preds = %78, %71 + %84 = phi i32 [ 0, %78 ], [ %73, %71 ] + %85 = getelementptr inbounds i8, ptr %72, i64 8 + %86 = load ptr, ptr %85, align 8, !tbaa !47 + %87 = icmp eq ptr %86, null + br i1 %87, label %69, label %71 + +88: ; preds = %69, %58 + %89 = phi i32 [ 0, %58 ], [ %70, %69 ] + %90 = load ptr, ptr %60, align 8, !tbaa !69 + call void @gtk_widget_set_sensitive(ptr noundef %90, i32 noundef %89) #18 + %91 = call ptr @dt_conf_get_string_const(ptr noundef nonnull @.str.2) #18 + %92 = call ptr @dt_imageio_get_format_by_name(ptr noundef %91) #18 + %93 = icmp eq ptr %92, null + br i1 %93, label %101, label %94 + +94: ; preds = %88 + %95 = load ptr, ptr %60, align 8, !tbaa !69 + %96 = getelementptr inbounds i8, ptr %92, i64 56 + %97 = load ptr, ptr %96, align 8, !tbaa !104 + %98 = call ptr %97() #18 + %99 = call i32 @dt_bauhaus_combobox_set_from_text(ptr noundef %95, ptr noundef %98) #18 + %100 = icmp eq i32 %99, 0 + br i1 %100, label %101, label %103 + +101: ; preds = %94, %88 + %102 = load ptr, ptr %60, align 8, !tbaa !69 + call void @dt_bauhaus_combobox_set(ptr noundef %102, i32 noundef 0) #18 + br label %103 + +103: ; preds = %101, %94 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #18 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #18 - br label %105 + br label %104 -105: ; preds = %104, %24 +104: ; preds = %103, %24 ret void } diff --git a/bench/darktable/optimized/introspection_lut3d.c.ll b/bench/darktable/optimized/introspection_lut3d.c.ll index 6acdd98b000..25ab55928a2 100644 --- a/bench/darktable/optimized/introspection_lut3d.c.ll +++ b/bench/darktable/optimized/introspection_lut3d.c.ll @@ -3704,7 +3704,7 @@ define hidden zeroext range(i16 0, 256) i16 @calculate_clut_3dl(ptr noundef %0, tail call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.55, ptr noundef %0) #29 %17 = tail call ptr @dcgettext(ptr noundef null, ptr noundef nonnull @.str.56, i32 noundef 5) #29 tail call void (ptr, ...) @dt_control_log(ptr noundef %17, ptr noundef %0) #29 - br label %240 + br label %239 .preheader: ; preds = %8, %135 %18 = phi i16 [ %140, %135 ], [ 0, %8 ] @@ -3814,7 +3814,7 @@ define hidden zeroext range(i16 0, 256) i16 @calculate_clut_3dl(ptr noundef %0, %77 = load ptr, ptr %3, align 8, !tbaa !10 call void @free(ptr noundef %77) #29 %78 = call i32 @fclose(ptr noundef nonnull %6) - br label %240 + br label %239 79: ; preds = %72 %80 = zext i8 %60 to i32 @@ -3845,7 +3845,7 @@ define hidden zeroext range(i16 0, 256) i16 @calculate_clut_3dl(ptr noundef %0, %95 = load ptr, ptr %3, align 8, !tbaa !10 call void @free(ptr noundef %95) #29 %96 = call i32 @fclose(ptr noundef nonnull %6) - br label %240 + br label %239 97: ; preds = %62 %98 = icmp eq i8 %60, 3 @@ -3904,17 +3904,17 @@ define hidden zeroext range(i16 0, 256) i16 @calculate_clut_3dl(ptr noundef %0, ._crit_edge: ; preds = %135 %.pre = mul i32 %137, 3 - %.pre40 = zext i32 %.pre to i64 + %.pre41 = zext i32 %.pre to i64 br label %split split: ; preds = %99, %._crit_edge - %.pre-phi41 = phi i64 [ %.pre40, %._crit_edge ], [ %133, %99 ] + %.pre-phi42 = phi i64 [ %.pre41, %._crit_edge ], [ %133, %99 ] %143 = phi i64 [ %136, %._crit_edge ], [ %22, %99 ] %144 = phi ptr [ %139, %._crit_edge ], [ %19, %99 ] %145 = phi i16 [ %140, %._crit_edge ], [ %18, %99 ] %146 = phi i32 [ %137, %._crit_edge ], [ %131, %99 ] %147 = phi i32 [ %138, %._crit_edge ], [ %130, %99 ] - %148 = icmp ne i64 %143, %.pre-phi41 + %148 = icmp ne i64 %143, %.pre-phi42 %149 = icmp eq i32 %146, 0 %150 = or i1 %149, %148 br i1 %150, label %.thread, label %155 @@ -3928,7 +3928,7 @@ split: ; preds = %99, %._crit_edge %153 = load ptr, ptr %3, align 8, !tbaa !10 call void @free(ptr noundef %153) #29 %154 = call i32 @fclose(ptr noundef nonnull %6) - br label %240 + br label %239 155: ; preds = %split %156 = load ptr, ptr %3, align 8, !tbaa !10 @@ -3952,7 +3952,7 @@ split: ; preds = %99, %._crit_edge %166 = call ptr @dcgettext(ptr noundef null, ptr noundef nonnull @.str.67, i32 noundef 5) #29 call void (ptr, ...) @dt_control_log(ptr noundef %166) #29 call void @free(ptr noundef %144) #29 - br label %240 + br label %239 167: ; preds = %163 %168 = icmp eq i64 %143, 0 @@ -3962,7 +3962,7 @@ split: ; preds = %99, %._crit_edge %170 = add nsw i32 %160, -1 %171 = uitofp nneg i32 %170 to float %172 = icmp ult i64 %143, 32 - br i1 %172, label %.preheader108, label %173 + br i1 %172, label %223, label %173 173: ; preds = %169 %174 = and i64 %143, 8589934560 @@ -4017,55 +4017,53 @@ split: ; preds = %99, %._crit_edge store <8 x float> %216, ptr %180, align 4, !tbaa !12 store <8 x float> %217, ptr %181, align 4, !tbaa !12 store <8 x float> %218, ptr %182, align 4, !tbaa !12 - %219 = add nuw i64 %178, 32 + %219 = add nuw nsw i64 %178, 32 %220 = icmp eq i64 %219, %174 br i1 %220, label %221, label %177, !llvm.loop !78 221: ; preds = %177 - %222 = trunc nuw nsw i64 %174 to i32 - %223 = icmp eq i64 %143, %174 - br i1 %223, label %.loopexit, label %.preheader108 - -.preheader108: ; preds = %221, %169 - %.ph = phi i64 [ %174, %221 ], [ 0, %169 ] - %.ph109 = phi i32 [ %222, %221 ], [ 0, %169 ] - %224 = fdiv reassoc nsz arcp contract afn float 1.000000e+00, %171 - br label %225 - -225: ; preds = %.preheader108, %235 - %226 = phi i64 [ %238, %235 ], [ %.ph, %.preheader108 ] - %227 = phi i32 [ %237, %235 ], [ %.ph109, %.preheader108 ] - %228 = getelementptr inbounds float, ptr %144, i64 %226 - %229 = load float, ptr %228, align 4, !tbaa !12 - %230 = fmul reassoc nsz arcp contract afn float %229, %224 - %231 = fcmp reassoc nsz arcp contract afn ogt float %230, 1.000000e+00 - br i1 %231, label %235, label %232 - -232: ; preds = %225 - %233 = fcmp reassoc nsz arcp contract afn olt float %230, 0.000000e+00 - br i1 %233, label %235, label %234 - -234: ; preds = %232 - br label %235 - -235: ; preds = %234, %232, %225 - %236 = phi reassoc nsz arcp contract afn float [ 1.000000e+00, %225 ], [ %230, %234 ], [ 0.000000e+00, %232 ] - store float %236, ptr %228, align 4, !tbaa !12 - %237 = add i32 %227, 1 - %238 = zext i32 %237 to i64 - %239 = icmp ugt i64 %143, %238 - br i1 %239, label %225, label %.loopexit, !llvm.loop !79 - -.loopexit: ; preds = %235, %221, %167 + %222 = icmp eq i64 %143, %174 + br i1 %222, label %.loopexit, label %223 + +223: ; preds = %221, %169 + %224 = phi i64 [ 0, %169 ], [ %174, %221 ] + %225 = and i64 %224, 4294967264 + %226 = fdiv reassoc nsz arcp contract afn float 1.000000e+00, %171 + br label %227 + +227: ; preds = %236, %223 + %indvars.iv = phi i64 [ %indvars.iv.next, %236 ], [ %225, %223 ] + %228 = phi i64 [ %indvars.iv.next, %236 ], [ %224, %223 ] + %229 = getelementptr inbounds float, ptr %144, i64 %228 + %230 = load float, ptr %229, align 4, !tbaa !12 + %231 = fmul reassoc nsz arcp contract afn float %230, %226 + %232 = fcmp reassoc nsz arcp contract afn ogt float %231, 1.000000e+00 + br i1 %232, label %236, label %233 + +233: ; preds = %227 + %234 = fcmp reassoc nsz arcp contract afn olt float %231, 0.000000e+00 + br i1 %234, label %236, label %235 + +235: ; preds = %233 + br label %236 + +236: ; preds = %235, %233, %227 + %237 = phi reassoc nsz arcp contract afn float [ 1.000000e+00, %227 ], [ %231, %235 ], [ 0.000000e+00, %233 ] + store float %237, ptr %229, align 4, !tbaa !12 + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 + %238 = icmp ugt i64 %143, %indvars.iv.next + br i1 %238, label %227, label %.loopexit, !llvm.loop !79 + +.loopexit: ; preds = %236, %221, %167 store ptr %144, ptr %1, align 8, !tbaa !10 - br label %240 + br label %239 -240: ; preds = %.loopexit, %165, %.thread, %93, %75, %16 - %241 = phi i16 [ 0, %.thread ], [ 0, %16 ], [ 0, %165 ], [ %145, %.loopexit ], [ 0, %93 ], [ 0, %75 ] +239: ; preds = %.loopexit, %165, %.thread, %93, %75, %16 + %240 = phi i16 [ 0, %.thread ], [ 0, %16 ], [ 0, %165 ], [ %145, %.loopexit ], [ 0, %93 ], [ 0, %75 ] call void @llvm.lifetime.end.p0(i64 150, ptr nonnull %5) #29 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #29 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #29 - ret i16 %241 + ret i16 %240 } ; Function Attrs: nounwind uwtable diff --git a/bench/delta-rs/optimized/4say4x9grcidoih4.ll b/bench/delta-rs/optimized/4say4x9grcidoih4.ll index 533171085a9..224e30522a0 100644 --- a/bench/delta-rs/optimized/4say4x9grcidoih4.ll +++ b/bench/delta-rs/optimized/4say4x9grcidoih4.ll @@ -1773,8 +1773,8 @@ _ZN5serde2de7Visitor9visit_f3217hec946a9e806a1d36E.exit: ; preds = %75, %81 %102 = trunc i32 %90 to i8 %103 = and i8 %102, 63 %104 = or disjoint i8 %103, -128 - %.sroa.0.i.1.i.1.i.1.i.1.i.1..sroa_idx360 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 1 - store i8 %104, ptr %.sroa.0.i.1.i.1.i.1.i.1.i.1..sroa_idx360, align 1, !alias.scope !381, !noalias !378 + %.sroa.0.i.1.i.1.i.1.i.1.i.1..sroa_idx352 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 1 + store i8 %104, ptr %.sroa.0.i.1.i.1.i.1.i.1.i.1..sroa_idx352, align 1, !alias.scope !381, !noalias !378 br label %_ZN5serde2de7Visitor10visit_char17h8199ae024482de97E.exit 105: ; preds = %94 @@ -1791,8 +1791,8 @@ _ZN5serde2de7Visitor9visit_f3217hec946a9e806a1d36E.exit: ; preds = %75, %81 %113 = trunc i32 %90 to i8 %114 = and i8 %113, 63 %115 = or disjoint i8 %114, -128 - %.sroa.0.i.2.i.2.i.2.i.2.i.2..sroa_idx361 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 2 - store i8 %115, ptr %.sroa.0.i.2.i.2.i.2.i.2.i.2..sroa_idx361, align 2, !alias.scope !381, !noalias !378 + %.sroa.0.i.2.i.2.i.2.i.2.i.2..sroa_idx353 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 2 + store i8 %115, ptr %.sroa.0.i.2.i.2.i.2.i.2.i.2..sroa_idx353, align 2, !alias.scope !381, !noalias !378 br label %_ZN5serde2de7Visitor10visit_char17h8199ae024482de97E.exit 116: ; preds = %94 @@ -1804,8 +1804,8 @@ _ZN5serde2de7Visitor9visit_f3217hec946a9e806a1d36E.exit: ; preds = %75, %81 %121 = trunc i32 %120 to i8 %122 = and i8 %121, 63 %123 = or disjoint i8 %122, -128 - %.sroa.0.i.1.i.1.i.1.i.1.i.1..sroa_idx359 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 1 - store i8 %123, ptr %.sroa.0.i.1.i.1.i.1.i.1.i.1..sroa_idx359, align 1, !alias.scope !381, !noalias !378 + %.sroa.0.i.1.i.1.i.1.i.1.i.1..sroa_idx351 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 1 + store i8 %123, ptr %.sroa.0.i.1.i.1.i.1.i.1.i.1..sroa_idx351, align 1, !alias.scope !381, !noalias !378 %124 = lshr i32 %90, 6 %125 = trunc i32 %124 to i8 %126 = and i8 %125, 63 @@ -1972,24 +1972,24 @@ _ZN5serde2de7Visitor10visit_char17h8199ae024482de97E.exit: ; preds = %96, %98, % %.sroa.7142.0..sroa_idx = getelementptr inbounds i8, ptr %31, i64 8 %.sroa.8.0..sroa_idx = getelementptr inbounds i8, ptr %31, i64 16 %188 = icmp eq i64 %184, 0 - br i1 %188, label %._crit_edge, label %.lr.ph230 + br i1 %188, label %._crit_edge, label %.lr.ph227 -.lr.ph230: ; preds = %180, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h72303f1538e90588E.exit.i" - %.sroa.0.065229 = phi ptr [ %189, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h72303f1538e90588E.exit.i" ], [ %182, %180 ] - %.sroa.11.0228 = phi i64 [ %190, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h72303f1538e90588E.exit.i" ], [ 0, %180 ] - %189 = getelementptr inbounds i8, ptr %.sroa.0.065229, i64 32 - %190 = add nuw nsw i64 %.sroa.11.0228, 1 +.lr.ph227: ; preds = %180, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h72303f1538e90588E.exit.i" + %.sroa.0.065226 = phi ptr [ %189, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h72303f1538e90588E.exit.i" ], [ %182, %180 ] + %.sroa.11.0225 = phi i64 [ %190, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h72303f1538e90588E.exit.i" ], [ 0, %180 ] + %189 = getelementptr inbounds i8, ptr %.sroa.0.065226, i64 32 + %190 = add nuw nsw i64 %.sroa.11.0225, 1 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29), !noalias !444 - invoke void @"_ZN106_$LT$serde..__private..de..content..ContentRefDeserializer$LT$E$GT$$u20$as$u20$serde..de..Deserializer$GT$15deserialize_any17h3e14d84de16a244bE"(ptr noalias nocapture noundef nonnull sret({ i8, [31 x i8] }) align 8 dereferenceable(32) %29, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %.sroa.0.065229) + invoke void @"_ZN106_$LT$serde..__private..de..content..ContentRefDeserializer$LT$E$GT$$u20$as$u20$serde..de..Deserializer$GT$15deserialize_any17h3e14d84de16a244bE"(ptr noalias nocapture noundef nonnull sret({ i8, [31 x i8] }) align 8 dereferenceable(32) %29, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %.sroa.0.065226) to label %.noexc38 unwind label %193 -.noexc38: ; preds = %.lr.ph230 +.noexc38: ; preds = %.lr.ph227 call void @llvm.experimental.noalias.scope.decl(metadata !451), !noalias !454 %191 = load i8, ptr %29, align 8, !range !455, !alias.scope !456, !noalias !458, !noundef !24 %192 = icmp eq i8 %191, 6 br i1 %192, label %216, label %195 -193: ; preds = %.lr.ph230 +193: ; preds = %.lr.ph227 %194 = landingpad { ptr, i32 } cleanup br label %.body.i @@ -2039,7 +2039,7 @@ _ZN5serde2de7Visitor10visit_char17h8199ae024482de97E.exit: ; preds = %96, %98, % %207 = add i64 %204, 1 store i64 %207, ptr %187, align 8, !alias.scope !460, !noalias !463 %208 = icmp eq ptr %189, %185 - br i1 %208, label %._crit_edge.loopexit, label %.lr.ph230 + br i1 %208, label %._crit_edge.loopexit, label %.lr.ph227 common.resume193: ; preds = %.body.i168, %.body.i, %219, %354 %common.resume193.op = phi { ptr, i32 } [ %eh.lpad-body.i, %.body.i ], [ %220, %219 ], [ %355, %354 ], [ %.pn.i, %.body.i168 ] @@ -2058,7 +2058,6 @@ common.resume193: ; preds = %.body.i168, %.body. ._crit_edge: ; preds = %._crit_edge.loopexit, %180 %.sroa.061.0.copyload = phi ptr [ null, %180 ], [ %.sroa.061.0.copyload.pre, %._crit_edge.loopexit ] %.sroa.11.0.lcssa = phi i64 [ 0, %180 ], [ %190, %._crit_edge.loopexit ] - %.sroa.0.065.lcssa = phi ptr [ %182, %180 ], [ %185, %._crit_edge.loopexit ] %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %35, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.6.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %186, i64 16, i1 false), !noalias !435 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32), !noalias !440 @@ -2066,7 +2065,7 @@ common.resume193: ; preds = %.body.i168, %.body. store i8 4, ptr %35, align 8, !noalias !438 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %35, i64 8 store ptr %.sroa.061.0.copyload, ptr %.sroa.5.0..sroa_idx, align 8, !noalias !438 - %211 = invoke noundef i64 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17he440f41131509917E.llvm.744410604731891449"(ptr noundef nonnull %.sroa.0.065.lcssa, ptr noundef nonnull %185, i64 noundef 0) + %211 = invoke noundef i64 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17he440f41131509917E.llvm.744410604731891449"(ptr noundef nonnull %185, ptr noundef nonnull %185, i64 noundef 0) to label %.noexc unwind label %219 .noexc: ; preds = %._crit_edge @@ -2352,14 +2351,14 @@ common.resume193: ; preds = %.body.i168, %.body. br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %"_ZN4core3ptr73drop_in_place$LT$core..option..Option$LT$serde_json..value..Value$GT$$GT$17hf9f67b29fd7fa5eaE.exit33.i" - %.sroa.0.0223 = phi ptr [ %299, %"_ZN4core3ptr73drop_in_place$LT$core..option..Option$LT$serde_json..value..Value$GT$$GT$17hf9f67b29fd7fa5eaE.exit33.i" ], [ %235, %.lr.ph.preheader ] - %.sroa.17.0222 = phi i64 [ %301, %"_ZN4core3ptr73drop_in_place$LT$core..option..Option$LT$serde_json..value..Value$GT$$GT$17hf9f67b29fd7fa5eaE.exit33.i" ], [ 1, %.lr.ph.preheader ] - %299 = getelementptr inbounds i8, ptr %.sroa.0.0223, i64 64 - %300 = getelementptr inbounds i8, ptr %.sroa.0.0223, i64 32 - %301 = add nuw nsw i64 %.sroa.17.0222, 1 + %.sroa.0.0220 = phi ptr [ %299, %"_ZN4core3ptr73drop_in_place$LT$core..option..Option$LT$serde_json..value..Value$GT$$GT$17hf9f67b29fd7fa5eaE.exit33.i" ], [ %235, %.lr.ph.preheader ] + %.sroa.17.0219 = phi i64 [ %301, %"_ZN4core3ptr73drop_in_place$LT$core..option..Option$LT$serde_json..value..Value$GT$$GT$17hf9f67b29fd7fa5eaE.exit33.i" ], [ 1, %.lr.ph.preheader ] + %299 = getelementptr inbounds i8, ptr %.sroa.0.0220, i64 64 + %300 = getelementptr inbounds i8, ptr %.sroa.0.0220, i64 32 + %301 = add nuw nsw i64 %.sroa.17.0219, 1 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !537 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !537 - invoke void @"_ZN106_$LT$serde..__private..de..content..ContentRefDeserializer$LT$E$GT$$u20$as$u20$serde..de..Deserializer$GT$15deserialize_str17h2a856ab56ba6b007E"(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %.sroa.0.0223) + invoke void @"_ZN106_$LT$serde..__private..de..content..ContentRefDeserializer$LT$E$GT$$u20$as$u20$serde..de..Deserializer$GT$15deserialize_str17h2a856ab56ba6b007E"(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %.sroa.0.0220) to label %.noexc36.i unwind label %.loopexit.i, !noalias !510 .noexc36.i: ; preds = %.lr.ph diff --git a/bench/duckdb/optimized/ub_duckdb_optimizer.cpp.ll b/bench/duckdb/optimized/ub_duckdb_optimizer.cpp.ll index 671e63f13ba..c73757fc0be 100644 --- a/bench/duckdb/optimized/ub_duckdb_optimizer.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_optimizer.cpp.ll @@ -4005,9 +4005,8 @@ for.body.lr.ph: ; preds = %entry br label %for.body for.cond.cleanup: ; preds = %_ZNSt6vectorIN6duckdb10unique_ptrINS0_18CompressExpressionESt14default_deleteIS2_ELb1EEESaIS5_EED2Ev.exit - %2 = and i8 %compressed_anything.1, 1 - %3 = icmp eq i8 %2, 0 - br i1 %3, label %if.end17, label %if.then16 + %2 = icmp eq i8 %compressed_anything.1, 0 + br i1 %2, label %if.end17, label %if.then16 for.body: ; preds = %_ZNSt6vectorIN6duckdb10unique_ptrINS0_18CompressExpressionESt14default_deleteIS2_ELb1EEESaIS5_EED2Ev.exit, %for.body.lr.ph %compressed_anything.041 = phi i8 [ 0, %for.body.lr.ph ], [ %compressed_anything.1, %_ZNSt6vectorIN6duckdb10unique_ptrINS0_18CompressExpressionESt14default_deleteIS2_ELb1EEESaIS5_EED2Ev.exit ] @@ -4026,8 +4025,8 @@ if.then: ; preds = %invoke.cont to label %invoke.cont8 unwind label %lpad7 invoke.cont8: ; preds = %if.then - %4 = load i64, ptr %call9, align 8, !tbaa !3 - %call11 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6duckdb6vectorINS_10unique_ptrINS_15LogicalOperatorESt14default_deleteIS2_ELb1EEELb1EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %children, i64 noundef %4) + %3 = load i64, ptr %call9, align 8, !tbaa !3 + %call11 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6duckdb6vectorINS_10unique_ptrINS_15LogicalOperatorESt14default_deleteIS2_ELb1EEELb1EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %children, i64 noundef %3) to label %invoke.cont10 unwind label %lpad7 invoke.cont10: ; preds = %invoke.cont8 @@ -4035,60 +4034,60 @@ invoke.cont10: ; preds = %invoke.cont8 to label %if.end unwind label %lpad7 lpad: ; preds = %for.body - %5 = landingpad { ptr, i32 } + %4 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad7: ; preds = %invoke.cont10, %invoke.cont8, %if.then - %6 = landingpad { ptr, i32 } + %5 = landingpad { ptr, i32 } cleanup br label %ehcleanup if.end: ; preds = %invoke.cont10, %invoke.cont %compressed_anything.1 = phi i8 [ %compressed_anything.041, %invoke.cont ], [ 1, %invoke.cont10 ] - %7 = load ptr, ptr %compress_exprs, align 8, !tbaa !194 - %8 = load ptr, ptr %_M_finish.i32, align 8, !tbaa !196 - %cmp.not3.i.i.i.i = icmp eq ptr %7, %8 + %6 = load ptr, ptr %compress_exprs, align 8, !tbaa !194 + %7 = load ptr, ptr %_M_finish.i32, align 8, !tbaa !196 + %cmp.not3.i.i.i.i = icmp eq ptr %6, %7 br i1 %cmp.not3.i.i.i.i, label %invoke.cont.i, label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %if.end, %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_18CompressExpressionESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i - %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_18CompressExpressionESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i ], [ %7, %if.end ] - %9 = load ptr, ptr %__first.addr.04.i.i.i.i, align 8, !tbaa !28 - %cmp.not.i.i.i.i.i.i = icmp eq ptr %9, null + %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_18CompressExpressionESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i ], [ %6, %if.end ] + %8 = load ptr, ptr %__first.addr.04.i.i.i.i, align 8, !tbaa !28 + %cmp.not.i.i.i.i.i.i = icmp eq ptr %8, null br i1 %cmp.not.i.i.i.i.i.i, label %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_18CompressExpressionESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i, label %delete.notnull.i.i.i.i.i.i.i delete.notnull.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i - %stats.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %9, i64 8 - %10 = load ptr, ptr %stats.i.i.i.i.i.i.i.i, align 8, !tbaa !28 - %cmp.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %10, null + %stats.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %8, i64 8 + %9 = load ptr, ptr %stats.i.i.i.i.i.i.i.i, align 8, !tbaa !28 + %cmp.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %9, null br i1 %cmp.not.i.i.i.i.i.i.i.i.i, label %_ZNSt10unique_ptrIN6duckdb14BaseStatisticsESt14default_deleteIS1_EED2Ev.exit.i.i.i.i.i.i.i.i, label %_ZNKSt14default_deleteIN6duckdb14BaseStatisticsEEclEPS1_.exit.i.i.i.i.i.i.i.i.i _ZNKSt14default_deleteIN6duckdb14BaseStatisticsEEclEPS1_.exit.i.i.i.i.i.i.i.i.i: ; preds = %delete.notnull.i.i.i.i.i.i.i - call void @_ZN6duckdb14BaseStatisticsD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %10) #29 - call void @_ZdlPv(ptr noundef nonnull %10) #31 + call void @_ZN6duckdb14BaseStatisticsD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %9) #29 + call void @_ZdlPv(ptr noundef nonnull %9) #31 br label %_ZNSt10unique_ptrIN6duckdb14BaseStatisticsESt14default_deleteIS1_EED2Ev.exit.i.i.i.i.i.i.i.i _ZNSt10unique_ptrIN6duckdb14BaseStatisticsESt14default_deleteIS1_EED2Ev.exit.i.i.i.i.i.i.i.i: ; preds = %_ZNKSt14default_deleteIN6duckdb14BaseStatisticsEEclEPS1_.exit.i.i.i.i.i.i.i.i.i, %delete.notnull.i.i.i.i.i.i.i store ptr null, ptr %stats.i.i.i.i.i.i.i.i, align 8, !tbaa !28 - %11 = load ptr, ptr %9, align 8, !tbaa !28 - %cmp.not.i2.i.i.i.i.i.i.i.i = icmp eq ptr %11, null + %10 = load ptr, ptr %8, align 8, !tbaa !28 + %cmp.not.i2.i.i.i.i.i.i.i.i = icmp eq ptr %10, null br i1 %cmp.not.i2.i.i.i.i.i.i.i.i, label %_ZNKSt14default_deleteIN6duckdb18CompressExpressionEEclEPS1_.exit.i.i.i.i.i.i, label %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i.i.i.i.i _ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt10unique_ptrIN6duckdb14BaseStatisticsESt14default_deleteIS1_EED2Ev.exit.i.i.i.i.i.i.i.i - %vtable.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %11, align 8, !tbaa !18 + %vtable.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %10, align 8, !tbaa !18 %vfn.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i.i.i.i.i, i64 8 - %12 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i.i.i, align 8 - call void %12(ptr noundef nonnull align 8 dereferenceable(80) %11) #29 + %11 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i.i.i, align 8 + call void %11(ptr noundef nonnull align 8 dereferenceable(80) %10) #29 br label %_ZNKSt14default_deleteIN6duckdb18CompressExpressionEEclEPS1_.exit.i.i.i.i.i.i _ZNKSt14default_deleteIN6duckdb18CompressExpressionEEclEPS1_.exit.i.i.i.i.i.i: ; preds = %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i.i.i.i.i, %_ZNSt10unique_ptrIN6duckdb14BaseStatisticsESt14default_deleteIS1_EED2Ev.exit.i.i.i.i.i.i.i.i - call void @_ZdlPv(ptr noundef nonnull %9) #31 + call void @_ZdlPv(ptr noundef nonnull %8) #31 br label %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_18CompressExpressionESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i _ZSt8_DestroyIN6duckdb10unique_ptrINS0_18CompressExpressionESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i: ; preds = %_ZNKSt14default_deleteIN6duckdb18CompressExpressionEEclEPS1_.exit.i.i.i.i.i.i, %for.body.i.i.i.i store ptr null, ptr %__first.addr.04.i.i.i.i, align 8, !tbaa !28 %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i, i64 8 - %cmp.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %8 + %cmp.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %7 br i1 %cmp.not.i.i.i.i, label %invoke.contthread-pre-split.i, label %for.body.i.i.i.i, !llvm.loop !197 invoke.contthread-pre-split.i: ; preds = %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_18CompressExpressionESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i @@ -4096,28 +4095,28 @@ invoke.contthread-pre-split.i: ; preds = %_ZSt8_DestroyIN6duc br label %invoke.cont.i invoke.cont.i: ; preds = %invoke.contthread-pre-split.i, %if.end - %13 = phi ptr [ %.pr.i, %invoke.contthread-pre-split.i ], [ %7, %if.end ] - %tobool.not.i.i.i = icmp eq ptr %13, null + %12 = phi ptr [ %.pr.i, %invoke.contthread-pre-split.i ], [ %6, %if.end ] + %tobool.not.i.i.i = icmp eq ptr %12, null br i1 %tobool.not.i.i.i, label %_ZNSt6vectorIN6duckdb10unique_ptrINS0_18CompressExpressionESt14default_deleteIS2_ELb1EEESaIS5_EED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %invoke.cont.i - call void @_ZdlPv(ptr noundef nonnull %13) #31 + call void @_ZdlPv(ptr noundef nonnull %12) #31 br label %_ZNSt6vectorIN6duckdb10unique_ptrINS0_18CompressExpressionESt14default_deleteIS2_ELb1EEESaIS5_EED2Ev.exit _ZNSt6vectorIN6duckdb10unique_ptrINS0_18CompressExpressionESt14default_deleteIS2_ELb1EEESaIS5_EED2Ev.exit: ; preds = %if.then.i.i.i, %invoke.cont.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %compress_exprs) #29 %inc = add nuw i64 %i.040, 1 - %14 = load ptr, ptr %_M_finish.i, align 8, !tbaa !138 - %15 = load ptr, ptr %child_idxs, align 8, !tbaa !140 - %sub.ptr.lhs.cast.i = ptrtoint ptr %14 to i64 - %sub.ptr.rhs.cast.i = ptrtoint ptr %15 to i64 + %13 = load ptr, ptr %_M_finish.i, align 8, !tbaa !138 + %14 = load ptr, ptr %child_idxs, align 8, !tbaa !140 + %sub.ptr.lhs.cast.i = ptrtoint ptr %13 to i64 + %sub.ptr.rhs.cast.i = ptrtoint ptr %14 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 %cmp = icmp ult i64 %inc, %sub.ptr.div.i br i1 %cmp, label %for.body, label %for.cond.cleanup, !llvm.loop !198 ehcleanup: ; preds = %lpad7, %lpad - %.pn = phi { ptr, i32 } [ %6, %lpad7 ], [ %5, %lpad ] + %.pn = phi { ptr, i32 } [ %5, %lpad7 ], [ %4, %lpad ] call void @_ZNSt6vectorIN6duckdb10unique_ptrINS0_18CompressExpressionESt14default_deleteIS2_ELb1EEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %compress_exprs) #29 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %compress_exprs) #29 resume { ptr, i32 } %.pn @@ -31901,7 +31900,7 @@ for.body97: ; preds = %for.inc223, %for.bo to label %_ZN6duckdb14FilterCombiner26ExpressionValueInformationC2Ev.exit unwind label %lpad.i common.resume: ; preds = %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit485, %ehcleanup214, %lpad.i - %common.resume.op = phi { ptr, i32 } [ %35, %lpad.i ], [ %140, %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit485 ], [ %.pn320, %ehcleanup214 ] + %common.resume.op = phi { ptr, i32 } [ %35, %lpad.i ], [ %139, %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit485 ], [ %.pn320, %ehcleanup214 ] resume { ptr, i32 } %common.resume.op lpad.i: ; preds = %for.body97 @@ -32681,18 +32680,17 @@ cleanup225: ; preds = %invoke.cont207 br label %cleanup271 for.end232: ; preds = %for.inc223 - %137 = and i8 %is_successful.1.ph, 1 - %138 = icmp ne i8 %137, 0 - %brmerge.not = and i1 %is_root, %138 - %. = select i1 %138, i32 1, i32 2 + %137 = icmp ne i8 %is_successful.1.ph, 0 + %brmerge.not = and i1 %is_root, %137 + %. = select i1 %137, i32 1, i32 2 br i1 %brmerge.not, label %if.then236, label %cleanup271 if.then236: ; preds = %for.end232 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %transitive_filter) #29 %call238 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK6duckdb10unique_ptrINS_10ExpressionESt14default_deleteIS1_ELb1EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %left) call void @_ZN6duckdb14FilterCombiner20FindTransitiveFilterERNS_10ExpressionE(ptr dead_on_unwind nonnull writable sret(%"class.duckdb::unique_ptr") align 8 %transitive_filter, ptr noundef nonnull align 8 dereferenceable(264) %this, ptr noundef nonnull align 8 dereferenceable(80) %call238) - %139 = load ptr, ptr %transitive_filter, align 8, !tbaa !28 - %cmp.i.i480.not = icmp eq ptr %139, null + %138 = load ptr, ptr %transitive_filter, align 8, !tbaa !28 + %cmp.i.i480.not = icmp eq ptr %138, null br i1 %cmp.i.i480.not, label %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit490, label %if.then240 if.then240: ; preds = %if.then236 @@ -32716,17 +32714,17 @@ if.then249: ; preds = %invoke.cont246 to label %if.end254 unwind label %lpad241 lpad241: ; preds = %if.then249, %invoke.cont244, %invoke.cont242, %if.then240 - %140 = landingpad { ptr, i32 } + %139 = landingpad { ptr, i32 } cleanup - %141 = load ptr, ptr %transitive_filter, align 8, !tbaa !28 - %cmp.not.i481 = icmp eq ptr %141, null + %140 = load ptr, ptr %transitive_filter, align 8, !tbaa !28 + %cmp.not.i481 = icmp eq ptr %140, null br i1 %cmp.not.i481, label %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit485, label %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i482 _ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i482: ; preds = %lpad241 - %vtable.i.i483 = load ptr, ptr %141, align 8, !tbaa !18 + %vtable.i.i483 = load ptr, ptr %140, align 8, !tbaa !18 %vfn.i.i484 = getelementptr inbounds i8, ptr %vtable.i.i483, i64 8 - %142 = load ptr, ptr %vfn.i.i484, align 8 - call void %142(ptr noundef nonnull align 8 dereferenceable(80) %141) #29 + %141 = load ptr, ptr %vfn.i.i484, align 8 + call void %141(ptr noundef nonnull align 8 dereferenceable(80) %140) #29 br label %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit485 _ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit485: ; preds = %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i482, %lpad241 @@ -32741,8 +32739,8 @@ if.end254: ; preds = %if.then249, %invoke _ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i487: ; preds = %if.end254 %vtable.i.i488 = load ptr, ptr %.pr587, align 8, !tbaa !18 %vfn.i.i489 = getelementptr inbounds i8, ptr %vtable.i.i488, i64 8 - %143 = load ptr, ptr %vfn.i.i489, align 8 - call void %143(ptr noundef nonnull align 8 dereferenceable(80) %.pr587) #29 + %142 = load ptr, ptr %vfn.i.i489, align 8 + call void %142(ptr noundef nonnull align 8 dereferenceable(80) %.pr587) #29 br label %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit490 _ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit490: ; preds = %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i487, %if.end254, %if.then236 diff --git a/bench/duckdb/optimized/ub_duckdb_optimizer_rules.cpp.ll b/bench/duckdb/optimized/ub_duckdb_optimizer_rules.cpp.ll index f864068e855..c3e6ba5190d 100644 --- a/bench/duckdb/optimized/ub_duckdb_optimizer_rules.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_optimizer_rules.cpp.ll @@ -11776,82 +11776,80 @@ for.inc: ; preds = %if.else, %if.then19 br i1 %cmp.i.not, label %for.end, label %for.body for.end: ; preds = %for.inc - %9 = and i8 %a_is_null_found.3.ph, 1 - %10 = icmp eq i8 %9, 0 - %11 = and i8 %b_is_null_found.3.ph, 1 - %12 = icmp eq i8 %11, 0 - %13 = select i1 %10, i1 true, i1 %12 - br i1 %13, label %return, label %if.then46 + %9 = icmp eq i8 %a_is_null_found.3.ph, 0 + %10 = icmp eq i8 %b_is_null_found.3.ph, 0 + %11 = select i1 %9, i1 true, i1 %10 + br i1 %11, label %return, label %if.then46 if.then46: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %agg.tmp.i) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %agg.tmp5.i) %call.i78 = tail call noalias noundef nonnull dereferenceable(96) ptr @_Znwm(i64 noundef 96) #23, !noalias !523 - %14 = load i64, ptr %left, align 8, !tbaa !3, !noalias !523 - store i64 %14, ptr %agg.tmp.i, align 8, !tbaa !3, !noalias !523 + %12 = load i64, ptr %left, align 8, !tbaa !3, !noalias !523 + store i64 %12, ptr %agg.tmp.i, align 8, !tbaa !3, !noalias !523 store ptr null, ptr %left, align 8, !tbaa !3, !noalias !523 - %15 = load i64, ptr %right, align 8, !tbaa !3, !noalias !523 - store i64 %15, ptr %agg.tmp5.i, align 8, !tbaa !3, !noalias !523 + %13 = load i64, ptr %right, align 8, !tbaa !3, !noalias !523 + store i64 %13, ptr %agg.tmp5.i, align 8, !tbaa !3, !noalias !523 store ptr null, ptr %right, align 8, !tbaa !3, !noalias !523 invoke void @_ZN6duckdb25BoundComparisonExpressionC1ENS_14ExpressionTypeENS_10unique_ptrINS_10ExpressionESt14default_deleteIS3_ELb1EEES6_(ptr noundef nonnull align 8 dereferenceable(96) %call.i78, i8 noundef zeroext 40, ptr noundef nonnull %agg.tmp.i, ptr noundef nonnull %agg.tmp5.i) to label %invoke.cont.i unwind label %lpad.i, !noalias !523 invoke.cont.i: ; preds = %if.then46 - %16 = load ptr, ptr %agg.tmp5.i, align 8, !tbaa !3, !noalias !523 - %cmp.not.i.i = icmp eq ptr %16, null + %14 = load ptr, ptr %agg.tmp5.i, align 8, !tbaa !3, !noalias !523 + %cmp.not.i.i = icmp eq ptr %14, null br i1 %cmp.not.i.i, label %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit.i, label %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i _ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i: ; preds = %invoke.cont.i - %vtable.i.i.i = load ptr, ptr %16, align 8, !tbaa !9, !noalias !523 + %vtable.i.i.i = load ptr, ptr %14, align 8, !tbaa !9, !noalias !523 %vfn.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i, i64 8 - %17 = load ptr, ptr %vfn.i.i.i, align 8, !noalias !523 - call void %17(ptr noundef nonnull align 8 dereferenceable(80) %16) #22, !noalias !523 + %15 = load ptr, ptr %vfn.i.i.i, align 8, !noalias !523 + call void %15(ptr noundef nonnull align 8 dereferenceable(80) %14) #22, !noalias !523 br label %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit.i _ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit.i: ; preds = %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i, %invoke.cont.i store ptr null, ptr %agg.tmp5.i, align 8, !tbaa !3, !noalias !523 - %18 = load ptr, ptr %agg.tmp.i, align 8, !tbaa !3, !noalias !523 - %cmp.not.i7.i = icmp eq ptr %18, null + %16 = load ptr, ptr %agg.tmp.i, align 8, !tbaa !3, !noalias !523 + %cmp.not.i7.i = icmp eq ptr %16, null br i1 %cmp.not.i7.i, label %_ZNSt10unique_ptrIN6duckdb25BoundComparisonExpressionESt14default_deleteIS1_EED2Ev.exit, label %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i8.i _ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i8.i: ; preds = %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit.i - %vtable.i.i9.i = load ptr, ptr %18, align 8, !tbaa !9, !noalias !523 + %vtable.i.i9.i = load ptr, ptr %16, align 8, !tbaa !9, !noalias !523 %vfn.i.i10.i = getelementptr inbounds i8, ptr %vtable.i.i9.i, i64 8 - %19 = load ptr, ptr %vfn.i.i10.i, align 8, !noalias !523 - call void %19(ptr noundef nonnull align 8 dereferenceable(80) %18) #22, !noalias !523 + %17 = load ptr, ptr %vfn.i.i10.i, align 8, !noalias !523 + call void %17(ptr noundef nonnull align 8 dereferenceable(80) %16) #22, !noalias !523 br label %_ZNSt10unique_ptrIN6duckdb25BoundComparisonExpressionESt14default_deleteIS1_EED2Ev.exit lpad.i: ; preds = %if.then46 - %20 = landingpad { ptr, i32 } + %18 = landingpad { ptr, i32 } cleanup - %21 = load ptr, ptr %agg.tmp5.i, align 8, !tbaa !3, !noalias !523 - %cmp.not.i12.i = icmp eq ptr %21, null + %19 = load ptr, ptr %agg.tmp5.i, align 8, !tbaa !3, !noalias !523 + %cmp.not.i12.i = icmp eq ptr %19, null br i1 %cmp.not.i12.i, label %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit16.i, label %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i13.i _ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i13.i: ; preds = %lpad.i - %vtable.i.i14.i = load ptr, ptr %21, align 8, !tbaa !9, !noalias !523 + %vtable.i.i14.i = load ptr, ptr %19, align 8, !tbaa !9, !noalias !523 %vfn.i.i15.i = getelementptr inbounds i8, ptr %vtable.i.i14.i, i64 8 - %22 = load ptr, ptr %vfn.i.i15.i, align 8, !noalias !523 - call void %22(ptr noundef nonnull align 8 dereferenceable(80) %21) #22, !noalias !523 + %20 = load ptr, ptr %vfn.i.i15.i, align 8, !noalias !523 + call void %20(ptr noundef nonnull align 8 dereferenceable(80) %19) #22, !noalias !523 br label %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit16.i _ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit16.i: ; preds = %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i13.i, %lpad.i store ptr null, ptr %agg.tmp5.i, align 8, !tbaa !3, !noalias !523 - %23 = load ptr, ptr %agg.tmp.i, align 8, !tbaa !3, !noalias !523 - %cmp.not.i17.i = icmp eq ptr %23, null + %21 = load ptr, ptr %agg.tmp.i, align 8, !tbaa !3, !noalias !523 + %cmp.not.i17.i = icmp eq ptr %21, null br i1 %cmp.not.i17.i, label %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit21.i, label %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i18.i _ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i18.i: ; preds = %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit16.i - %vtable.i.i19.i = load ptr, ptr %23, align 8, !tbaa !9, !noalias !523 + %vtable.i.i19.i = load ptr, ptr %21, align 8, !tbaa !9, !noalias !523 %vfn.i.i20.i = getelementptr inbounds i8, ptr %vtable.i.i19.i, i64 8 - %24 = load ptr, ptr %vfn.i.i20.i, align 8, !noalias !523 - call void %24(ptr noundef nonnull align 8 dereferenceable(80) %23) #22, !noalias !523 + %22 = load ptr, ptr %vfn.i.i20.i, align 8, !noalias !523 + call void %22(ptr noundef nonnull align 8 dereferenceable(80) %21) #22, !noalias !523 br label %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit21.i _ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit21.i: ; preds = %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i18.i, %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit16.i store ptr null, ptr %agg.tmp.i, align 8, !tbaa !3, !noalias !523 call void @_ZdlPv(ptr noundef nonnull %call.i78) #25, !noalias !523 - resume { ptr, i32 } %20 + resume { ptr, i32 } %18 _ZNSt10unique_ptrIN6duckdb25BoundComparisonExpressionESt14default_deleteIS1_EED2Ev.exit: ; preds = %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i8.i, %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %agg.tmp.i) diff --git a/bench/eastl/optimized/TestDeque.cpp.ll b/bench/eastl/optimized/TestDeque.cpp.ll index 3e667b54f22..3f97675331d 100644 --- a/bench/eastl/optimized/TestDeque.cpp.ll +++ b/bench/eastl/optimized/TestDeque.cpp.ll @@ -31481,7 +31481,7 @@ if.then21.i: ; preds = %if.then8.i.i215 %div2226.i = lshr i64 %sub9.i729, 1 %spec.select28.i = call i64 @llvm.umax.i64(i64 %div2226.i, i64 1) %add.ptr29.i = getelementptr inbounds ptr, ptr %98, i64 %spec.select28.i - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %add.ptr29.i, ptr align 8 %98, i64 %mul.i725, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %add.ptr29.i, ptr nonnull align 8 %98, i64 %mul.i725, i1 false) br label %.noexc216 if.else32.i: ; preds = %if.then8.i.i215 @@ -31490,19 +31490,12 @@ if.else32.i: ; preds = %if.then8.i.i215 %add36.i748 = add i64 %add35.i747, %cond.i.i746 %mul.i.i749 = shl i64 %add36.i748, 3 %call.i.i.i.i761 = invoke noundef ptr @_ZnamPKcijS0_i(i64 noundef %mul.i.i749, ptr noundef null, i32 noundef 0, i32 noundef 0, ptr noundef null, i32 noundef 0) - to label %call.i.i.i.i.noexc760 unwind label %lpad80.loopexit.split-lp.loopexit + to label %_ZN5eastl9DequeBaseIiNS_9allocatorELj1EE14DoFreePtrArrayEPPim.exit.i759 unwind label %lpad80.loopexit.split-lp.loopexit -call.i.i.i.i.noexc760: ; preds = %if.else32.i +_ZN5eastl9DequeBaseIiNS_9allocatorELj1EE14DoFreePtrArrayEPPim.exit.i759: ; preds = %if.else32.i %add.ptr47.i = getelementptr inbounds i8, ptr %call.i.i.i.i761, i64 8 - %tobool.not.i754 = icmp eq ptr %98, null - br i1 %tobool.not.i754, label %_ZN5eastl9DequeBaseIiNS_9allocatorELj1EE14DoFreePtrArrayEPPim.exit.i759, label %_ZN5eastl9allocator10deallocateEPvm.exit.i.i758 - -_ZN5eastl9allocator10deallocateEPvm.exit.i.i758: ; preds = %call.i.i.i.i.noexc760 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %add.ptr47.i, ptr nonnull align 8 %98, i64 %mul.i725, i1 false) call void @_ZdaPv(ptr noundef nonnull %102) #15 - br label %_ZN5eastl9DequeBaseIiNS_9allocatorELj1EE14DoFreePtrArrayEPPim.exit.i759 - -_ZN5eastl9DequeBaseIiNS_9allocatorELj1EE14DoFreePtrArrayEPPim.exit.i759: ; preds = %_ZN5eastl9allocator10deallocateEPvm.exit.i.i758, %call.i.i.i.i.noexc760 store ptr %call.i.i.i.i761, ptr %d74, align 8 store i64 %add36.i748, ptr %mnPtrArraySize.i.i189, align 8 br label %.noexc216 @@ -31733,7 +31726,7 @@ if.then21.i795: ; preds = %if.then8.i.i312 %div2226.i796 = lshr i64 %sub9.i777, 1 %spec.select28.i797 = call i64 @llvm.umax.i64(i64 %div2226.i796, i64 1) %add.ptr29.i798 = getelementptr inbounds ptr, ptr %128, i64 %spec.select28.i797 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %add.ptr29.i798, ptr align 8 %128, i64 %mul.i773, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %add.ptr29.i798, ptr nonnull align 8 %128, i64 %mul.i773, i1 false) br label %.noexc313 if.else32.i799: ; preds = %if.then8.i.i312 @@ -31742,19 +31735,12 @@ if.else32.i799: ; preds = %if.then8.i.i312 %add36.i802 = add i64 %add35.i801, %cond.i.i800 %mul.i.i803 = shl i64 %add36.i802, 3 %call.i.i.i.i816 = invoke noundef ptr @_ZnamPKcijS0_i(i64 noundef %mul.i.i803, ptr noundef null, i32 noundef 0, i32 noundef 0, ptr noundef null, i32 noundef 0) - to label %call.i.i.i.i.noexc815 unwind label %lpad120.loopexit.split-lp.loopexit.split-lp.loopexit + to label %_ZN5eastl9DequeBaseIiNS_9allocatorELj1EE14DoFreePtrArrayEPPim.exit.i814 unwind label %lpad120.loopexit.split-lp.loopexit.split-lp.loopexit -call.i.i.i.i.noexc815: ; preds = %if.else32.i799 +_ZN5eastl9DequeBaseIiNS_9allocatorELj1EE14DoFreePtrArrayEPPim.exit.i814: ; preds = %if.else32.i799 %add.ptr47.i808 = getelementptr inbounds i8, ptr %call.i.i.i.i816, i64 8 - %tobool.not.i809 = icmp eq ptr %128, null - br i1 %tobool.not.i809, label %_ZN5eastl9DequeBaseIiNS_9allocatorELj1EE14DoFreePtrArrayEPPim.exit.i814, label %_ZN5eastl9allocator10deallocateEPvm.exit.i.i813 - -_ZN5eastl9allocator10deallocateEPvm.exit.i.i813: ; preds = %call.i.i.i.i.noexc815 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %add.ptr47.i808, ptr nonnull align 8 %128, i64 %mul.i773, i1 false) call void @_ZdaPv(ptr noundef nonnull %131) #15 - br label %_ZN5eastl9DequeBaseIiNS_9allocatorELj1EE14DoFreePtrArrayEPPim.exit.i814 - -_ZN5eastl9DequeBaseIiNS_9allocatorELj1EE14DoFreePtrArrayEPPim.exit.i814: ; preds = %_ZN5eastl9allocator10deallocateEPvm.exit.i.i813, %call.i.i.i.i.noexc815 store ptr %call.i.i.i.i816, ptr %d114, align 8 store i64 %add36.i802, ptr %mnPtrArraySize.i.i283, align 8 br label %.noexc313 @@ -33121,7 +33107,7 @@ if.then21.i: ; preds = %if.then8.i.i228 %div2226.i = lshr i64 %sub9.i793, 1 %spec.select28.i = call i64 @llvm.umax.i64(i64 %div2226.i, i64 1) %add.ptr29.i = getelementptr inbounds ptr, ptr %96, i64 %spec.select28.i - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %add.ptr29.i, ptr align 8 %96, i64 %mul.i789, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %add.ptr29.i, ptr nonnull align 8 %96, i64 %mul.i789, i1 false) br label %.noexc229 if.else32.i: ; preds = %if.then8.i.i228 @@ -33130,19 +33116,12 @@ if.else32.i: ; preds = %if.then8.i.i228 %add36.i812 = add i64 %add35.i811, %cond.i.i810 %mul.i.i813 = shl i64 %add36.i812, 3 %call.i.i.i.i825 = invoke noundef ptr @_ZnamPKcijS0_i(i64 noundef %mul.i.i813, ptr noundef null, i32 noundef 0, i32 noundef 0, ptr noundef null, i32 noundef 0) - to label %call.i.i.i.i.noexc824 unwind label %lpad80.loopexit.split-lp.loopexit + to label %_ZN5eastl9DequeBaseIiNS_9allocatorELj32768EE14DoFreePtrArrayEPPim.exit.i823 unwind label %lpad80.loopexit.split-lp.loopexit -call.i.i.i.i.noexc824: ; preds = %if.else32.i +_ZN5eastl9DequeBaseIiNS_9allocatorELj32768EE14DoFreePtrArrayEPPim.exit.i823: ; preds = %if.else32.i %add.ptr47.i = getelementptr inbounds i8, ptr %call.i.i.i.i825, i64 8 - %tobool.not.i818 = icmp eq ptr %96, null - br i1 %tobool.not.i818, label %_ZN5eastl9DequeBaseIiNS_9allocatorELj32768EE14DoFreePtrArrayEPPim.exit.i823, label %_ZN5eastl9allocator10deallocateEPvm.exit.i.i822 - -_ZN5eastl9allocator10deallocateEPvm.exit.i.i822: ; preds = %call.i.i.i.i.noexc824 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %add.ptr47.i, ptr nonnull align 8 %96, i64 %mul.i789, i1 false) call void @_ZdaPv(ptr noundef nonnull %100) #15 - br label %_ZN5eastl9DequeBaseIiNS_9allocatorELj32768EE14DoFreePtrArrayEPPim.exit.i823 - -_ZN5eastl9DequeBaseIiNS_9allocatorELj32768EE14DoFreePtrArrayEPPim.exit.i823: ; preds = %_ZN5eastl9allocator10deallocateEPvm.exit.i.i822, %call.i.i.i.i.noexc824 store ptr %call.i.i.i.i825, ptr %d74, align 8 store i64 %add36.i812, ptr %mnPtrArraySize.i.i202, align 8 br label %.noexc229 @@ -33380,7 +33359,7 @@ if.then21.i859: ; preds = %if.then8.i.i339 %div2226.i860 = lshr i64 %sub9.i841, 1 %spec.select28.i861 = call i64 @llvm.umax.i64(i64 %div2226.i860, i64 1) %add.ptr29.i862 = getelementptr inbounds ptr, ptr %125, i64 %spec.select28.i861 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %add.ptr29.i862, ptr align 8 %125, i64 %mul.i837, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %add.ptr29.i862, ptr nonnull align 8 %125, i64 %mul.i837, i1 false) br label %.noexc340 if.else32.i863: ; preds = %if.then8.i.i339 @@ -33389,19 +33368,12 @@ if.else32.i863: ; preds = %if.then8.i.i339 %add36.i866 = add i64 %add35.i865, %cond.i.i864 %mul.i.i867 = shl i64 %add36.i866, 3 %call.i.i.i.i880 = invoke noundef ptr @_ZnamPKcijS0_i(i64 noundef %mul.i.i867, ptr noundef null, i32 noundef 0, i32 noundef 0, ptr noundef null, i32 noundef 0) - to label %call.i.i.i.i.noexc879 unwind label %lpad120.loopexit.split-lp.loopexit.split-lp.loopexit + to label %_ZN5eastl9DequeBaseIiNS_9allocatorELj32768EE14DoFreePtrArrayEPPim.exit.i878 unwind label %lpad120.loopexit.split-lp.loopexit.split-lp.loopexit -call.i.i.i.i.noexc879: ; preds = %if.else32.i863 +_ZN5eastl9DequeBaseIiNS_9allocatorELj32768EE14DoFreePtrArrayEPPim.exit.i878: ; preds = %if.else32.i863 %add.ptr47.i872 = getelementptr inbounds i8, ptr %call.i.i.i.i880, i64 8 - %tobool.not.i873 = icmp eq ptr %125, null - br i1 %tobool.not.i873, label %_ZN5eastl9DequeBaseIiNS_9allocatorELj32768EE14DoFreePtrArrayEPPim.exit.i878, label %_ZN5eastl9allocator10deallocateEPvm.exit.i.i877 - -_ZN5eastl9allocator10deallocateEPvm.exit.i.i877: ; preds = %call.i.i.i.i.noexc879 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %add.ptr47.i872, ptr nonnull align 8 %125, i64 %mul.i837, i1 false) call void @_ZdaPv(ptr noundef nonnull %128) #15 - br label %_ZN5eastl9DequeBaseIiNS_9allocatorELj32768EE14DoFreePtrArrayEPPim.exit.i878 - -_ZN5eastl9DequeBaseIiNS_9allocatorELj32768EE14DoFreePtrArrayEPPim.exit.i878: ; preds = %_ZN5eastl9allocator10deallocateEPvm.exit.i.i877, %call.i.i.i.i.noexc879 store ptr %call.i.i.i.i880, ptr %d114, align 8 store i64 %add36.i866, ptr %mnPtrArraySize.i.i309, align 8 br label %.noexc340 diff --git a/bench/eastl/optimized/TestFixedMap.cpp.ll b/bench/eastl/optimized/TestFixedMap.cpp.ll index 2d55d42e948..204fd3af1fd 100644 --- a/bench/eastl/optimized/TestFixedMap.cpp.ll +++ b/bench/eastl/optimized/TestFixedMap.cpp.ll @@ -22890,7 +22890,7 @@ call.i.i895.noexc: ; preds = %invoke.cont380 %265 = load ptr, ptr %mpCapacity.i.i.i.i, align 8, !noalias !410 %cmp2.i.i.i.i897 = icmp ult ptr %storemerge.i891, %265 %or.cond.i.i.i.i898 = select i1 %cmp.not.i.i.i.i896, i1 %cmp2.i.i.i.i897, i1 false - br i1 %or.cond.i.i.i.i898, label %if.then.i.i.i.i, label %if.else.i.i.i.i + br i1 %or.cond.i.i.i.i898, label %if.then.i.i.i.i, label %delete.notnull.i.i.i.i.i if.then.i.i.i.i: ; preds = %.noexc900 %266 = load ptr, ptr %mAllocator.i.i.i611, align 8, !noalias !410 @@ -22898,15 +22898,11 @@ if.then.i.i.i.i: ; preds = %.noexc900 store ptr %storemerge.i891, ptr %mAllocator.i.i.i611, align 8, !noalias !410 br label %invoke.cont384 -if.else.i.i.i.i: ; preds = %.noexc900 - %isnull.i.i.i.i.i = icmp eq ptr %storemerge.i891, null - br i1 %isnull.i.i.i.i.i, label %invoke.cont384, label %delete.notnull.i.i.i.i.i - -delete.notnull.i.i.i.i.i: ; preds = %if.else.i.i.i.i +delete.notnull.i.i.i.i.i: ; preds = %.noexc900 call void @_ZdaPv(ptr noundef nonnull %storemerge.i891) #19, !noalias !410 br label %invoke.cont384 -invoke.cont384: ; preds = %delete.notnull.i.i.i.i.i, %if.else.i.i.i.i, %if.then.i.i.i.i +invoke.cont384: ; preds = %delete.notnull.i.i.i.i.i, %if.then.i.i.i.i %267 = load ptr, ptr %_M_parent.i.i.i.i.i620, align 8 %cmp.not5.i.i.i903 = icmp eq ptr %267, null br i1 %cmp.not5.i.i.i903, label %invoke.cont391, label %while.body.i.i.i905 @@ -23133,7 +23129,7 @@ call.i.i1018.noexc: ; preds = %invoke.cont447 %292 = load ptr, ptr %mpCapacity.i.i.i.i, align 8, !noalias !419 %cmp2.i.i.i.i1022 = icmp ult ptr %storemerge.i1013, %292 %or.cond.i.i.i.i1023 = select i1 %cmp.not.i.i.i.i1020, i1 %cmp2.i.i.i.i1022, i1 false - br i1 %or.cond.i.i.i.i1023, label %if.then.i.i.i.i1027, label %if.else.i.i.i.i1024 + br i1 %or.cond.i.i.i.i1023, label %if.then.i.i.i.i1027, label %delete.notnull.i.i.i.i.i1026 if.then.i.i.i.i1027: ; preds = %.noexc1030 %293 = load ptr, ptr %mAllocator.i.i.i611, align 8, !noalias !419 @@ -23141,15 +23137,11 @@ if.then.i.i.i.i1027: ; preds = %.noexc1030 store ptr %storemerge.i1013, ptr %mAllocator.i.i.i611, align 8, !noalias !419 br label %invoke.cont451 -if.else.i.i.i.i1024: ; preds = %.noexc1030 - %isnull.i.i.i.i.i1025 = icmp eq ptr %storemerge.i1013, null - br i1 %isnull.i.i.i.i.i1025, label %invoke.cont451, label %delete.notnull.i.i.i.i.i1026 - -delete.notnull.i.i.i.i.i1026: ; preds = %if.else.i.i.i.i1024 +delete.notnull.i.i.i.i.i1026: ; preds = %.noexc1030 call void @_ZdaPv(ptr noundef nonnull %storemerge.i1013) #19, !noalias !419 br label %invoke.cont451 -invoke.cont451: ; preds = %delete.notnull.i.i.i.i.i1026, %if.else.i.i.i.i1024, %if.then.i.i.i.i1027 +invoke.cont451: ; preds = %delete.notnull.i.i.i.i.i1026, %if.then.i.i.i.i1027 %294 = load ptr, ptr %_M_parent.i.i.i.i.i620, align 8 %cmp.not5.i.i.i1034 = icmp eq ptr %294, null br i1 %cmp.not5.i.i.i1034, label %invoke.cont458, label %while.body.i.i.i1036 @@ -23551,7 +23543,7 @@ call.i.i1231.noexc: ; preds = %invoke.cont547 %334 = load ptr, ptr %mpCapacity.i.i.i.i, align 8, !noalias !438 %cmp2.i.i.i.i1235 = icmp ult ptr %storemerge.i1226, %334 %or.cond.i.i.i.i1236 = select i1 %cmp.not.i.i.i.i1233, i1 %cmp2.i.i.i.i1235, i1 false - br i1 %or.cond.i.i.i.i1236, label %if.then.i.i.i.i1240, label %if.else.i.i.i.i1237 + br i1 %or.cond.i.i.i.i1236, label %if.then.i.i.i.i1240, label %delete.notnull.i.i.i.i.i1239 if.then.i.i.i.i1240: ; preds = %.noexc1243 %335 = load ptr, ptr %mAllocator.i.i.i611, align 8, !noalias !438 @@ -23559,15 +23551,11 @@ if.then.i.i.i.i1240: ; preds = %.noexc1243 store ptr %storemerge.i1226, ptr %mAllocator.i.i.i611, align 8, !noalias !438 br label %invoke.cont551 -if.else.i.i.i.i1237: ; preds = %.noexc1243 - %isnull.i.i.i.i.i1238 = icmp eq ptr %storemerge.i1226, null - br i1 %isnull.i.i.i.i.i1238, label %invoke.cont551, label %delete.notnull.i.i.i.i.i1239 - -delete.notnull.i.i.i.i.i1239: ; preds = %if.else.i.i.i.i1237 +delete.notnull.i.i.i.i.i1239: ; preds = %.noexc1243 call void @_ZdaPv(ptr noundef nonnull %storemerge.i1226) #19, !noalias !438 br label %invoke.cont551 -invoke.cont551: ; preds = %delete.notnull.i.i.i.i.i1239, %if.else.i.i.i.i1237, %if.then.i.i.i.i1240 +invoke.cont551: ; preds = %delete.notnull.i.i.i.i.i1239, %if.then.i.i.i.i1240 %336 = load ptr, ptr %_M_parent.i.i.i.i.i620, align 8 %cmp.not5.i.i.i1247 = icmp eq ptr %336, null br i1 %cmp.not5.i.i.i1247, label %invoke.cont558, label %while.body.i.i.i1249 @@ -33364,7 +33352,7 @@ call.i.i961.noexc: ; preds = %invoke.cont375 %273 = load ptr, ptr %mpCapacity.i.i.i.i, align 8, !noalias !640 %cmp2.i.i.i.i = icmp ult ptr %storemerge.i957, %273 %or.cond.i.i.i.i = select i1 %cmp.not.i.i.i.i962, i1 %cmp2.i.i.i.i, i1 false - br i1 %or.cond.i.i.i.i, label %if.then.i.i.i.i, label %if.else.i.i.i.i + br i1 %or.cond.i.i.i.i, label %if.then.i.i.i.i, label %delete.notnull.i.i.i.i.i if.then.i.i.i.i: ; preds = %.noexc964 %274 = load ptr, ptr %mAllocator.i.i.i674, align 8, !noalias !640 @@ -33372,15 +33360,11 @@ if.then.i.i.i.i: ; preds = %.noexc964 store ptr %storemerge.i957, ptr %mAllocator.i.i.i674, align 8, !noalias !640 br label %invoke.cont379 -if.else.i.i.i.i: ; preds = %.noexc964 - %isnull.i.i.i.i.i = icmp eq ptr %storemerge.i957, null - br i1 %isnull.i.i.i.i.i, label %invoke.cont379, label %delete.notnull.i.i.i.i.i - -delete.notnull.i.i.i.i.i: ; preds = %if.else.i.i.i.i +delete.notnull.i.i.i.i.i: ; preds = %.noexc964 call void @_ZdaPv(ptr noundef nonnull %storemerge.i957) #19, !noalias !640 br label %invoke.cont379 -invoke.cont379: ; preds = %delete.notnull.i.i.i.i.i, %if.else.i.i.i.i, %if.then.i.i.i.i +invoke.cont379: ; preds = %delete.notnull.i.i.i.i.i, %if.then.i.i.i.i %275 = load ptr, ptr %_M_parent.i.i.i.i.i683, align 8 %cmp.not5.i.i.i967 = icmp eq ptr %275, null br i1 %cmp.not5.i.i.i967, label %invoke.cont382, label %while.body.i.i.i969 @@ -33575,7 +33559,7 @@ call.i.i1068.noexc: ; preds = %invoke.cont440 %293 = load ptr, ptr %mpCapacity.i.i.i.i, align 8, !noalias !649 %cmp2.i.i.i.i1072 = icmp ult ptr %storemerge.i1063, %293 %or.cond.i.i.i.i1073 = select i1 %cmp.not.i.i.i.i1070, i1 %cmp2.i.i.i.i1072, i1 false - br i1 %or.cond.i.i.i.i1073, label %if.then.i.i.i.i1077, label %if.else.i.i.i.i1074 + br i1 %or.cond.i.i.i.i1073, label %if.then.i.i.i.i1077, label %delete.notnull.i.i.i.i.i1076 if.then.i.i.i.i1077: ; preds = %.noexc1080 %294 = load ptr, ptr %mAllocator.i.i.i674, align 8, !noalias !649 @@ -33583,15 +33567,11 @@ if.then.i.i.i.i1077: ; preds = %.noexc1080 store ptr %storemerge.i1063, ptr %mAllocator.i.i.i674, align 8, !noalias !649 br label %invoke.cont444 -if.else.i.i.i.i1074: ; preds = %.noexc1080 - %isnull.i.i.i.i.i1075 = icmp eq ptr %storemerge.i1063, null - br i1 %isnull.i.i.i.i.i1075, label %invoke.cont444, label %delete.notnull.i.i.i.i.i1076 - -delete.notnull.i.i.i.i.i1076: ; preds = %if.else.i.i.i.i1074 +delete.notnull.i.i.i.i.i1076: ; preds = %.noexc1080 call void @_ZdaPv(ptr noundef nonnull %storemerge.i1063) #19, !noalias !649 br label %invoke.cont444 -invoke.cont444: ; preds = %delete.notnull.i.i.i.i.i1076, %if.else.i.i.i.i1074, %if.then.i.i.i.i1077 +invoke.cont444: ; preds = %delete.notnull.i.i.i.i.i1076, %if.then.i.i.i.i1077 %295 = load ptr, ptr %_M_parent.i.i.i.i.i683, align 8 %cmp.not5.i.i.i1084 = icmp eq ptr %295, null br i1 %cmp.not5.i.i.i1084, label %invoke.cont447, label %while.body.i.i.i1086 @@ -33961,7 +33941,7 @@ call.i.i1255.noexc: ; preds = %invoke.cont538 %328 = load ptr, ptr %mpCapacity.i.i.i.i, align 8, !noalias !667 %cmp2.i.i.i.i1259 = icmp ult ptr %storemerge.i1250, %328 %or.cond.i.i.i.i1260 = select i1 %cmp.not.i.i.i.i1257, i1 %cmp2.i.i.i.i1259, i1 false - br i1 %or.cond.i.i.i.i1260, label %if.then.i.i.i.i1264, label %if.else.i.i.i.i1261 + br i1 %or.cond.i.i.i.i1260, label %if.then.i.i.i.i1264, label %delete.notnull.i.i.i.i.i1263 if.then.i.i.i.i1264: ; preds = %.noexc1267 %329 = load ptr, ptr %mAllocator.i.i.i674, align 8, !noalias !667 @@ -33969,15 +33949,11 @@ if.then.i.i.i.i1264: ; preds = %.noexc1267 store ptr %storemerge.i1250, ptr %mAllocator.i.i.i674, align 8, !noalias !667 br label %invoke.cont542 -if.else.i.i.i.i1261: ; preds = %.noexc1267 - %isnull.i.i.i.i.i1262 = icmp eq ptr %storemerge.i1250, null - br i1 %isnull.i.i.i.i.i1262, label %invoke.cont542, label %delete.notnull.i.i.i.i.i1263 - -delete.notnull.i.i.i.i.i1263: ; preds = %if.else.i.i.i.i1261 +delete.notnull.i.i.i.i.i1263: ; preds = %.noexc1267 call void @_ZdaPv(ptr noundef nonnull %storemerge.i1250) #19, !noalias !667 br label %invoke.cont542 -invoke.cont542: ; preds = %delete.notnull.i.i.i.i.i1263, %if.else.i.i.i.i1261, %if.then.i.i.i.i1264 +invoke.cont542: ; preds = %delete.notnull.i.i.i.i.i1263, %if.then.i.i.i.i1264 %330 = load ptr, ptr %_M_parent.i.i.i.i.i683, align 8 %cmp.not5.i.i.i1271 = icmp eq ptr %330, null br i1 %cmp.not5.i.i.i1271, label %invoke.cont545, label %while.body.i.i.i1273 diff --git a/bench/eastl/optimized/TestSet.cpp.ll b/bench/eastl/optimized/TestSet.cpp.ll index 77c9955a690..d0aa3e98f84 100644 --- a/bench/eastl/optimized/TestSet.cpp.ll +++ b/bench/eastl/optimized/TestSet.cpp.ll @@ -18724,17 +18724,10 @@ invoke.cont325: ; preds = %if.end16.i799, %lan call.i.i.i.noexc804: ; preds = %invoke.cont325 invoke void @_ZN5eastl11RBTreeEraseEPNS_16rbtree_node_baseES1_(ptr noundef %retval.sroa.0.0.i798, ptr noundef nonnull align 8 dereferenceable(41) %call192) - to label %.noexc806 unwind label %lpad213.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp + to label %invoke.cont329 unwind label %lpad213.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp -.noexc806: ; preds = %call.i.i.i.noexc804 - %isnull.i.i.i.i = icmp eq ptr %retval.sroa.0.0.i798, null - br i1 %isnull.i.i.i.i, label %invoke.cont329, label %delete.notnull.i.i.i.i - -delete.notnull.i.i.i.i: ; preds = %.noexc806 +invoke.cont329: ; preds = %call.i.i.i.noexc804 call void @_ZdaPv(ptr noundef nonnull %retval.sroa.0.0.i798) #13 - br label %invoke.cont329 - -invoke.cont329: ; preds = %delete.notnull.i.i.i.i, %.noexc806 %244 = load ptr, ptr %_M_parent.i.i.i.i.i578, align 8 %cmp.not5.i.i.i809 = icmp eq ptr %244, null br i1 %cmp.not5.i.i.i809, label %invoke.cont339, label %while.body.i.i.i811 @@ -18945,17 +18938,10 @@ invoke.cont384: ; preds = %if.end16.i919, %lan call.i.i.i923.noexc: ; preds = %invoke.cont384 invoke void @_ZN5eastl11RBTreeEraseEPNS_16rbtree_node_baseES1_(ptr noundef %retval.sroa.0.0.i918, ptr noundef nonnull align 8 dereferenceable(41) %call192) - to label %.noexc928 unwind label %lpad213.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp + to label %invoke.cont388 unwind label %lpad213.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp -.noexc928: ; preds = %call.i.i.i923.noexc - %isnull.i.i.i.i924 = icmp eq ptr %retval.sroa.0.0.i918, null - br i1 %isnull.i.i.i.i924, label %invoke.cont388, label %delete.notnull.i.i.i.i925 - -delete.notnull.i.i.i.i925: ; preds = %.noexc928 +invoke.cont388: ; preds = %call.i.i.i923.noexc call void @_ZdaPv(ptr noundef nonnull %retval.sroa.0.0.i918) #13 - br label %invoke.cont388 - -invoke.cont388: ; preds = %delete.notnull.i.i.i.i925, %.noexc928 %264 = load ptr, ptr %_M_parent.i.i.i.i.i578, align 8 %cmp.not5.i.i.i932 = icmp eq ptr %264, null br i1 %cmp.not5.i.i.i932, label %invoke.cont398, label %while.body.i.i.i934 @@ -19467,17 +19453,10 @@ invoke.cont480: ; preds = %if.end16.i1113, %la call.i.i.i1117.noexc: ; preds = %invoke.cont480 invoke void @_ZN5eastl11RBTreeEraseEPNS_16rbtree_node_baseES1_(ptr noundef %retval.sroa.0.0.i1112, ptr noundef nonnull align 8 dereferenceable(41) %call192) - to label %.noexc1122 unwind label %lpad213.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp + to label %invoke.cont484 unwind label %lpad213.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp -.noexc1122: ; preds = %call.i.i.i1117.noexc - %isnull.i.i.i.i1118 = icmp eq ptr %retval.sroa.0.0.i1112, null - br i1 %isnull.i.i.i.i1118, label %invoke.cont484, label %delete.notnull.i.i.i.i1119 - -delete.notnull.i.i.i.i1119: ; preds = %.noexc1122 +invoke.cont484: ; preds = %call.i.i.i1117.noexc call void @_ZdaPv(ptr noundef nonnull %retval.sroa.0.0.i1112) #13 - br label %invoke.cont484 - -invoke.cont484: ; preds = %delete.notnull.i.i.i.i1119, %.noexc1122 %309 = load ptr, ptr %_M_parent.i.i.i.i.i578, align 8 %cmp.not5.i.i.i1126 = icmp eq ptr %309, null br i1 %cmp.not5.i.i.i1126, label %invoke.cont494, label %while.body.i.i.i1128 @@ -28042,17 +28021,10 @@ invoke.cont323: ; preds = %if.end16.i853, %lan call.i.i.i.noexc: ; preds = %invoke.cont323 invoke void @_ZN5eastl11RBTreeEraseEPNS_16rbtree_node_baseES1_(ptr noundef %retval.sroa.0.0.i852, ptr noundef nonnull align 8 dereferenceable(41) %call189) - to label %.noexc857 unwind label %lpad210.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp - -.noexc857: ; preds = %call.i.i.i.noexc - %isnull.i.i.i.i = icmp eq ptr %retval.sroa.0.0.i852, null - br i1 %isnull.i.i.i.i, label %invoke.cont327, label %delete.notnull.i.i.i.i + to label %invoke.cont327 unwind label %lpad210.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp -delete.notnull.i.i.i.i: ; preds = %.noexc857 +invoke.cont327: ; preds = %call.i.i.i.noexc call void @_ZdaPv(ptr noundef nonnull %retval.sroa.0.0.i852) #13 - br label %invoke.cont327 - -invoke.cont327: ; preds = %delete.notnull.i.i.i.i, %.noexc857 %226 = load ptr, ptr %_M_parent.i.i.i.i.i632, align 8 %cmp.not5.i.i.i860 = icmp eq ptr %226, null br i1 %cmp.not5.i.i.i860, label %invoke.cont333, label %while.body.i.i.i862 @@ -28232,17 +28204,10 @@ invoke.cont382: ; preds = %if.end16.i955, %lan call.i.i.i959.noexc: ; preds = %invoke.cont382 invoke void @_ZN5eastl11RBTreeEraseEPNS_16rbtree_node_baseES1_(ptr noundef %retval.sroa.0.0.i954, ptr noundef nonnull align 8 dereferenceable(41) %call189) - to label %.noexc963 unwind label %lpad210.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp - -.noexc963: ; preds = %call.i.i.i959.noexc - %isnull.i.i.i.i960 = icmp eq ptr %retval.sroa.0.0.i954, null - br i1 %isnull.i.i.i.i960, label %invoke.cont386, label %delete.notnull.i.i.i.i961 + to label %invoke.cont386 unwind label %lpad210.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp -delete.notnull.i.i.i.i961: ; preds = %.noexc963 +invoke.cont386: ; preds = %call.i.i.i959.noexc call void @_ZdaPv(ptr noundef nonnull %retval.sroa.0.0.i954) #13 - br label %invoke.cont386 - -invoke.cont386: ; preds = %delete.notnull.i.i.i.i961, %.noexc963 %241 = load ptr, ptr %_M_parent.i.i.i.i.i632, align 8 %cmp.not5.i.i.i967 = icmp eq ptr %241, null br i1 %cmp.not5.i.i.i967, label %invoke.cont392, label %while.body.i.i.i969 @@ -28583,17 +28548,10 @@ invoke.cont478: ; preds = %if.end16.i1139, %la call.i.i.i1143.noexc: ; preds = %invoke.cont478 invoke void @_ZN5eastl11RBTreeEraseEPNS_16rbtree_node_baseES1_(ptr noundef %retval.sroa.0.0.i1138, ptr noundef nonnull align 8 dereferenceable(41) %call189) - to label %.noexc1147 unwind label %lpad210.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp - -.noexc1147: ; preds = %call.i.i.i1143.noexc - %isnull.i.i.i.i1144 = icmp eq ptr %retval.sroa.0.0.i1138, null - br i1 %isnull.i.i.i.i1144, label %invoke.cont482, label %delete.notnull.i.i.i.i1145 + to label %invoke.cont482 unwind label %lpad210.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp -delete.notnull.i.i.i.i1145: ; preds = %.noexc1147 +invoke.cont482: ; preds = %call.i.i.i1143.noexc call void @_ZdaPv(ptr noundef nonnull %retval.sroa.0.0.i1138) #13 - br label %invoke.cont482 - -invoke.cont482: ; preds = %delete.notnull.i.i.i.i1145, %.noexc1147 %268 = load ptr, ptr %_M_parent.i.i.i.i.i632, align 8 %cmp.not5.i.i.i1151 = icmp eq ptr %268, null br i1 %cmp.not5.i.i.i1151, label %invoke.cont488, label %while.body.i.i.i1153 diff --git a/bench/flac/optimized/iconvert.c.ll b/bench/flac/optimized/iconvert.c.ll index a7239c6e29a..5a3ee633f56 100644 --- a/bench/flac/optimized/iconvert.c.ll +++ b/bench/flac/optimized/iconvert.c.ll @@ -124,13 +124,13 @@ if.end53: ; preds = %if.end49, %if.end69 if.then56: ; preds = %if.end53 %mul = shl i64 %utflen.0125, 1 %cmp57 = icmp slt i64 %utflen.0125, 0 - br i1 %cmp57, label %fail, label %if.end60 + br i1 %cmp57, label %if.then197, label %if.end60 if.end60: ; preds = %if.then56 %11 = load ptr, ptr %ob, align 8 - %call62 = call ptr @realloc(ptr noundef %utfbuf.1124, i64 noundef %mul) #9 + %call62 = call ptr @realloc(ptr noundef nonnull %utfbuf.1124, i64 noundef %mul) #9 %tobool63.not = icmp eq ptr %call62, null - br i1 %tobool63.not, label %fail, label %if.end65 + br i1 %tobool63.not, label %if.then197, label %if.end65 if.end65: ; preds = %if.end60 %sub.ptr.lhs.cast = ptrtoint ptr %11 to i64 @@ -200,13 +200,13 @@ if.end82: ; preds = %if.end78 %sub.ptr.rhs.cast84 = ptrtoint ptr %utfbuf.1.lcssa to i64 %sub.ptr.sub85 = sub i64 %sub.ptr.lhs.cast83, %sub.ptr.rhs.cast84 %cmp.i = icmp eq i64 %sub.ptr.sub85, -1 - br i1 %cmp.i, label %fail, label %safe_realloc_nofree_add_2op_.exit + br i1 %cmp.i, label %if.then197, label %safe_realloc_nofree_add_2op_.exit safe_realloc_nofree_add_2op_.exit: ; preds = %if.end82 %add.i = add nuw i64 %sub.ptr.sub85, 1 %call.i = call ptr @realloc(ptr noundef nonnull %utfbuf.1.lcssa, i64 noundef %add.i) #9 %tobool87.not = icmp eq ptr %call.i, null - br i1 %tobool87.not, label %fail, label %if.end89 + br i1 %tobool87.not, label %if.then197, label %if.end89 if.end89: ; preds = %safe_realloc_nofree_add_2op_.exit %18 = load ptr, ptr %ob, align 8 @@ -225,12 +225,12 @@ if.end95: ; preds = %for.end %sub.ptr.rhs.cast97 = ptrtoint ptr %utfbuf.1.lcssa to i64 %sub.ptr.sub98 = sub i64 %sub.ptr.lhs.cast96, %sub.ptr.rhs.cast97 %cmp99 = icmp eq ptr %19, %utfbuf.1.lcssa - br i1 %cmp99, label %fail, label %if.end102 + br i1 %cmp99, label %if.then197, label %if.end102 if.end102: ; preds = %if.end95 - %call103 = call ptr @realloc(ptr noundef %utfbuf.1.lcssa, i64 noundef %sub.ptr.sub98) #9 + %call103 = call ptr @realloc(ptr noundef nonnull %utfbuf.1.lcssa, i64 noundef %sub.ptr.sub98) #9 %tobool104.not = icmp eq ptr %call103, null - br i1 %tobool104.not, label %fail, label %while.body.lr.ph + br i1 %tobool104.not, label %if.then197, label %while.body.lr.ph while.body.lr.ph: ; preds = %if.end102 store ptr %call103, ptr %ib, align 8 @@ -311,13 +311,13 @@ while.end: ; preds = %while.body.backedge %sub.ptr.sub143 = sub i64 %sub.ptr.lhs.cast141, %sub.ptr.rhs.cast119 %add144 = add i64 %sub.ptr.sub143, %add137151155 %cmp.i87 = icmp eq i64 %add144, -1 - br i1 %cmp.i87, label %fail, label %safe_malloc_add_2op_.exit + br i1 %cmp.i87, label %if.then197, label %safe_malloc_add_2op_.exit safe_malloc_add_2op_.exit: ; preds = %while.end %add.i89 = add nuw i64 %add144, 1 %call.i.i = call noalias noundef ptr @malloc(i64 noundef %add.i89) #8 %tobool146.not = icmp eq ptr %call.i.i, null - br i1 %tobool146.not, label %fail, label %while.body151.preheader + br i1 %tobool146.not, label %if.then197, label %while.body151.preheader while.body151.preheader: ; preds = %safe_malloc_add_2op_.exit store ptr %call103, ptr %ib, align 8 @@ -405,16 +405,12 @@ if.end194: ; preds = %if.end191 store ptr %call.i.i, ptr %to, align 8 br label %return -fail: ; preds = %if.end60, %if.then56, %while.end, %if.end82, %safe_malloc_add_2op_.exit, %if.end102, %if.end95, %safe_realloc_nofree_add_2op_.exit - %utfbuf.0 = phi ptr [ %utfbuf.1.lcssa, %safe_realloc_nofree_add_2op_.exit ], [ %utfbuf.1.lcssa, %if.end95 ], [ %call103, %safe_malloc_add_2op_.exit ], [ %utfbuf.1.lcssa, %if.end102 ], [ %utfbuf.1.lcssa, %if.end82 ], [ %call103, %while.end ], [ %utfbuf.1124, %if.then56 ], [ %utfbuf.1124, %if.end60 ] - %cmp195.not = icmp eq ptr %utfbuf.0, null - br i1 %cmp195.not, label %if.end198, label %if.then197 - -if.then197: ; preds = %fail +if.then197: ; preds = %if.then56, %if.end60, %safe_realloc_nofree_add_2op_.exit, %if.end95, %if.end102, %safe_malloc_add_2op_.exit, %if.end82, %while.end + %utfbuf.0 = phi ptr [ %utfbuf.1.lcssa, %safe_realloc_nofree_add_2op_.exit ], [ %utfbuf.1.lcssa, %if.end95 ], [ %call103, %safe_malloc_add_2op_.exit ], [ %utfbuf.1.lcssa, %if.end102 ], [ %utfbuf.1.lcssa, %if.end82 ], [ %call103, %while.end ], [ %utfbuf.1124, %if.end60 ], [ %utfbuf.1124, %if.then56 ] call void @free(ptr noundef nonnull %utfbuf.0) #7 br label %if.end198 -if.end198: ; preds = %if.end45, %if.then197, %fail +if.end198: ; preds = %if.end45, %if.then197 %call199 = call i32 @iconv_close(ptr noundef %call) #7 %cmp200.not = icmp eq ptr %cd2.0, inttoptr (i64 -1 to ptr) br i1 %cmp200.not, label %return, label %if.then202 diff --git a/bench/flac/optimized/stream_encoder.c.ll b/bench/flac/optimized/stream_encoder.c.ll index 6a93a204129..fe69b89802a 100644 --- a/bench/flac/optimized/stream_encoder.c.ll +++ b/bench/flac/optimized/stream_encoder.c.ll @@ -10499,8 +10499,8 @@ for.body: ; preds = %for.body.lr.ph, %if %idx.ext = zext i32 %sum.073 to i64 %add.ptr = getelementptr inbounds i64, ptr %abs_residual_partition_sums, i64 %idx.ext %add.ptr3 = getelementptr inbounds i32, ptr %raw_bits_per_partition, i64 %idx.ext - %tobool4.not = icmp eq i32 %best_parameters_index.070, 0 - %idxprom = zext i1 %tobool4.not to i64 + %lnot.ext = xor i32 %best_parameters_index.070, 1 + %idxprom = zext nneg i32 %lnot.ext to i64 %arrayidx = getelementptr inbounds [2 x %struct.FLAC__EntropyCodingMethod_PartitionedRiceContents], ptr %partitioned_rice_contents_extra, i64 0, i64 %idxprom %arrayidx.val = load ptr, ptr %arrayidx, align 8 %13 = getelementptr i8, ptr %arrayidx, i64 8 @@ -10599,11 +10599,10 @@ if.end8: ; preds = %if.end56.i %shl = shl nuw i32 1, %partition_order.072 %add9 = add i32 %sum.073, %shl %21 = add i32 %best_residual_bits.069, -1 - %or.cond.not = icmp uge i32 %21, %20 - %best_residual_bits.1 = select i1 %or.cond.not, i32 %20, i32 %best_residual_bits.069 - %lnot.ext = zext i1 %or.cond.not to i32 - %best_parameters_index.1 = xor i32 %best_parameters_index.070, %lnot.ext - %best_partition_order.1 = select i1 %or.cond.not, i32 %partition_order.072, i32 %best_partition_order.071 + %or.cond.not = icmp ult i32 %21, %20 + %best_residual_bits.1 = select i1 %or.cond.not, i32 %best_residual_bits.069, i32 %20 + %best_parameters_index.1 = select i1 %or.cond.not, i32 %best_parameters_index.070, i32 %lnot.ext + %best_partition_order.1 = select i1 %or.cond.not, i32 %best_partition_order.071, i32 %partition_order.072 %dec = add nsw i32 %partition_order.072, -1 %cmp1.not.not = icmp sgt i32 %partition_order.072, %cond br i1 %cmp1.not.not, label %for.body, label %for.end, !llvm.loop !127 diff --git a/bench/flatbuffers/optimized/idl_gen_rust.cpp.ll b/bench/flatbuffers/optimized/idl_gen_rust.cpp.ll index 30ab8d07c0c..0d3d67e5cc0 100644 --- a/bench/flatbuffers/optimized/idl_gen_rust.cpp.ll +++ b/bench/flatbuffers/optimized/idl_gen_rust.cpp.ll @@ -59299,7 +59299,7 @@ if.then32.i.i.i: ; preds = %_ZNKSt4lessINSt7__c %31 = getelementptr i8, ptr %call.i.i.i.i, i64 24 %.val9.i.i.i = load ptr, ptr %31, align 8 %cmp35.i.i.i = icmp eq ptr %.val9.i.i.i, null - br i1 %cmp35.i.i.i, label %if.then.i.i, label %invoke.cont7.i.i + br i1 %cmp35.i.i.i, label %if.then.i.i, label %cleanup.i.i if.else42.i.i.i: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit26.i.i.i %__x.021.i30.i.i.i = load ptr, ptr %4, align 8 @@ -59460,9 +59460,9 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %cmp.i.i9.i103.i.i.i = icmp slt i32 %call.i.i7.i100.i.i.i, 0 br i1 %cmp.i.i9.i103.i.i.i, label %if.then.i.i, label %if.then.i13.i.i -invoke.cont7.i.i: ; preds = %if.then64.i.i.i, %if.then50.i.i.i, %if.then32.i.i.i, %if.then18.i.i.i, %if.then9.i.i.i - %retval.sroa.0.0.i.i.i = phi ptr [ null, %if.then9.i.i.i ], [ %28, %if.then18.i.i.i ], [ null, %if.then50.i.i.i ], [ %__y.addr.0.lcssa.i.i.i19.i, %if.then32.i.i.i ], [ %call.i73.i.i.i, %if.then64.i.i.i ] - %retval.sroa.12.0.i.i.i = phi ptr [ %20, %if.then9.i.i.i ], [ %28, %if.then18.i.i.i ], [ %38, %if.then50.i.i.i ], [ %__y.addr.0.lcssa.i.i.i19.i, %if.then32.i.i.i ], [ %call.i73.i.i.i, %if.then64.i.i.i ] +invoke.cont7.i.i: ; preds = %if.then64.i.i.i, %if.then50.i.i.i, %if.then18.i.i.i, %if.then9.i.i.i + %retval.sroa.0.0.i.i.i = phi ptr [ null, %if.then9.i.i.i ], [ %28, %if.then18.i.i.i ], [ null, %if.then50.i.i.i ], [ %call.i73.i.i.i, %if.then64.i.i.i ] + %retval.sroa.12.0.i.i.i = phi ptr [ %20, %if.then9.i.i.i ], [ %28, %if.then18.i.i.i ], [ %38, %if.then50.i.i.i ], [ %call.i73.i.i.i, %if.then64.i.i.i ] %tobool.not.i.i = icmp eq ptr %retval.sroa.12.0.i.i.i, null br i1 %tobool.not.i.i, label %if.then.i13.i.i, label %if.then.i.i @@ -59490,9 +59490,10 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %cmp.i.i.i.i12.i.i = icmp slt i32 %call.i.i.i.i9.i.i, 0 br label %cleanup.i.i -cleanup.i.i: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i11.i.i, %if.then.i.i - %49 = phi i1 [ true, %if.then.i.i ], [ %cmp.i.i.i.i12.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i11.i.i ] - call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %49, ptr noundef nonnull %call5.i.i.i.i.i.i.i6, ptr noundef nonnull %retval.sroa.12.0.i11.i.i, ptr noundef nonnull align 8 dereferenceable(32) %add.ptr.i.i.i.i) #21 +cleanup.i.i: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i11.i.i, %if.then.i.i, %if.then32.i.i.i + %retval.sroa.12.0.i11.i29.i = phi ptr [ %retval.sroa.12.0.i11.i.i, %if.then.i.i ], [ %retval.sroa.12.0.i11.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i11.i.i ], [ %__y.addr.0.lcssa.i.i.i19.i, %if.then32.i.i.i ] + %49 = phi i1 [ true, %if.then.i.i ], [ %cmp.i.i.i.i12.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i11.i.i ], [ true, %if.then32.i.i.i ] + call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %49, ptr noundef nonnull %call5.i.i.i.i.i.i.i6, ptr noundef nonnull %retval.sroa.12.0.i11.i29.i, ptr noundef nonnull align 8 dereferenceable(32) %add.ptr.i.i.i.i) #21 %_M_node_count.i.i.i.i = getelementptr inbounds i8, ptr %current_module.044, i64 40 %50 = load i64, ptr %_M_node_count.i.i.i.i, align 8 %inc.i.i.i.i = add i64 %50, 1 diff --git a/bench/flatbuffers/optimized/idl_gen_ts.cpp.ll b/bench/flatbuffers/optimized/idl_gen_ts.cpp.ll index 2292dff46cd..045f29132e9 100644 --- a/bench/flatbuffers/optimized/idl_gen_ts.cpp.ll +++ b/bench/flatbuffers/optimized/idl_gen_ts.cpp.ll @@ -13501,7 +13501,7 @@ if.then32.i.i.i: ; preds = %_ZNKSt4lessINSt7__c %20 = getelementptr i8, ptr %call.i.i.i.i, i64 24 %.val9.i.i.i = load ptr, ptr %20, align 8 %cmp35.i.i.i = icmp eq ptr %.val9.i.i.i, null - br i1 %cmp35.i.i.i, label %if.then.i.i, label %invoke.cont3.i.i + br i1 %cmp35.i.i.i, label %if.then.i.i, label %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N11flatbuffers12_GLOBAL__N_116ImportDefinitionEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE22_M_emplace_hint_uniqueIJS6_IS5_SA_EEEESt17_Rb_tree_iteratorISB_ESt23_Rb_tree_const_iteratorISB_EDpOT_.exit.i if.else42.i.i.i: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit26.i.i.i %__x.021.i30.i.i.i = load ptr, ptr %0, align 8 @@ -13662,9 +13662,9 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %cmp.i.i9.i103.i.i.i = icmp slt i32 %call.i.i7.i100.i.i.i, 0 br i1 %cmp.i.i9.i103.i.i.i, label %if.then.i.i, label %if.then.i2.i -invoke.cont3.i.i: ; preds = %if.then64.i.i.i, %if.then50.i.i.i, %if.then32.i.i.i, %if.then18.i.i.i, %if.then9.i.i.i - %retval.sroa.0.0.i.i.i = phi ptr [ null, %if.then9.i.i.i ], [ %17, %if.then18.i.i.i ], [ null, %if.then50.i.i.i ], [ %__y.addr.0.lcssa.i.i.i16, %if.then32.i.i.i ], [ %call.i73.i.i.i, %if.then64.i.i.i ] - %retval.sroa.12.0.i.i.i = phi ptr [ %9, %if.then9.i.i.i ], [ %17, %if.then18.i.i.i ], [ %27, %if.then50.i.i.i ], [ %__y.addr.0.lcssa.i.i.i16, %if.then32.i.i.i ], [ %call.i73.i.i.i, %if.then64.i.i.i ] +invoke.cont3.i.i: ; preds = %if.then64.i.i.i, %if.then50.i.i.i, %if.then18.i.i.i, %if.then9.i.i.i + %retval.sroa.0.0.i.i.i = phi ptr [ null, %if.then9.i.i.i ], [ %17, %if.then18.i.i.i ], [ null, %if.then50.i.i.i ], [ %call.i73.i.i.i, %if.then64.i.i.i ] + %retval.sroa.12.0.i.i.i = phi ptr [ %9, %if.then9.i.i.i ], [ %17, %if.then18.i.i.i ], [ %27, %if.then50.i.i.i ], [ %call.i73.i.i.i, %if.then64.i.i.i ] %tobool.not.i.i = icmp eq ptr %retval.sroa.12.0.i.i.i, null br i1 %tobool.not.i.i, label %if.then.i2.i, label %if.then.i.i @@ -13692,9 +13692,10 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %cmp.i.i.i.i11.i.i = icmp slt i32 %call.i.i.i.i8.i.i, 0 br label %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N11flatbuffers12_GLOBAL__N_116ImportDefinitionEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE22_M_emplace_hint_uniqueIJS6_IS5_SA_EEEESt17_Rb_tree_iteratorISB_ESt23_Rb_tree_const_iteratorISB_EDpOT_.exit.i -_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N11flatbuffers12_GLOBAL__N_116ImportDefinitionEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE22_M_emplace_hint_uniqueIJS6_IS5_SA_EEEESt17_Rb_tree_iteratorISB_ESt23_Rb_tree_const_iteratorISB_EDpOT_.exit.i: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i10.i.i, %if.then.i.i - %38 = phi i1 [ true, %if.then.i.i ], [ %cmp.i.i.i.i11.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i10.i.i ] - tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %38, ptr noundef nonnull %call5.i.i.i.i.i.i.i, ptr noundef nonnull %retval.sroa.12.0.i22.i.i, ptr noundef nonnull align 8 dereferenceable(32) %add.ptr.i.i.i) #22 +_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N11flatbuffers12_GLOBAL__N_116ImportDefinitionEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE22_M_emplace_hint_uniqueIJS6_IS5_SA_EEEESt17_Rb_tree_iteratorISB_ESt23_Rb_tree_const_iteratorISB_EDpOT_.exit.i: ; preds = %if.then32.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i10.i.i, %if.then.i.i + %retval.sroa.12.0.i22.i.i26 = phi ptr [ %retval.sroa.12.0.i22.i.i, %if.then.i.i ], [ %retval.sroa.12.0.i22.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i10.i.i ], [ %__y.addr.0.lcssa.i.i.i16, %if.then32.i.i.i ] + %38 = phi i1 [ true, %if.then.i.i ], [ %cmp.i.i.i.i11.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i10.i.i ], [ true, %if.then32.i.i.i ] + tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %38, ptr noundef nonnull %call5.i.i.i.i.i.i.i, ptr noundef nonnull %retval.sroa.12.0.i22.i.i26, ptr noundef nonnull align 8 dereferenceable(32) %add.ptr.i.i.i) #22 %_M_node_count.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 40 %39 = load i64, ptr %_M_node_count.i.i.i.i, align 8 %inc.i.i.i.i = add i64 %39, 1 @@ -14312,7 +14313,7 @@ if.then32.i.i: ; preds = %_ZNKSt4lessINSt7__c %27 = getelementptr i8, ptr %call.i.i.i, i64 24 %.val9.i.i = load ptr, ptr %27, align 8 %cmp35.i.i = icmp eq ptr %.val9.i.i, null - br i1 %cmp35.i.i, label %if.then.i, label %invoke.cont7.i + br i1 %cmp35.i.i, label %if.then.i, label %cleanup.i if.else42.i.i: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit26.i.i %__x.021.i30.i.i = load ptr, ptr %0, align 8 @@ -14473,9 +14474,9 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %cmp.i.i9.i103.i.i = icmp slt i32 %call.i.i7.i100.i.i, 0 br i1 %cmp.i.i9.i103.i.i, label %if.then.i, label %if.then.i13.i -invoke.cont7.i: ; preds = %if.then64.i.i, %if.then50.i.i, %if.then32.i.i, %if.then18.i.i, %if.then9.i.i - %retval.sroa.0.0.i.i = phi ptr [ null, %if.then9.i.i ], [ %24, %if.then18.i.i ], [ null, %if.then50.i.i ], [ %__y.addr.0.lcssa.i.i.i19, %if.then32.i.i ], [ %call.i73.i.i, %if.then64.i.i ] - %retval.sroa.12.0.i.i = phi ptr [ %16, %if.then9.i.i ], [ %24, %if.then18.i.i ], [ %34, %if.then50.i.i ], [ %__y.addr.0.lcssa.i.i.i19, %if.then32.i.i ], [ %call.i73.i.i, %if.then64.i.i ] +invoke.cont7.i: ; preds = %if.then64.i.i, %if.then50.i.i, %if.then18.i.i, %if.then9.i.i + %retval.sroa.0.0.i.i = phi ptr [ null, %if.then9.i.i ], [ %24, %if.then18.i.i ], [ null, %if.then50.i.i ], [ %call.i73.i.i, %if.then64.i.i ] + %retval.sroa.12.0.i.i = phi ptr [ %16, %if.then9.i.i ], [ %24, %if.then18.i.i ], [ %34, %if.then50.i.i ], [ %call.i73.i.i, %if.then64.i.i ] %tobool.not.i = icmp eq ptr %retval.sroa.12.0.i.i, null br i1 %tobool.not.i, label %if.then.i13.i, label %if.then.i @@ -14503,9 +14504,10 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %cmp.i.i.i.i12.i = icmp slt i32 %call.i.i.i.i9.i, 0 br label %cleanup.i -cleanup.i: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i11.i, %if.then.i - %45 = phi i1 [ true, %if.then.i ], [ %cmp.i.i.i.i12.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i11.i ] - tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %45, ptr noundef nonnull %call5.i.i.i.i.i.i, ptr noundef nonnull %retval.sroa.12.0.i11.i, ptr noundef nonnull align 8 dereferenceable(32) %add.ptr.i.i.i) #22 +cleanup.i: ; preds = %if.then32.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i11.i, %if.then.i + %retval.sroa.12.0.i11.i29 = phi ptr [ %retval.sroa.12.0.i11.i, %if.then.i ], [ %retval.sroa.12.0.i11.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i11.i ], [ %__y.addr.0.lcssa.i.i.i19, %if.then32.i.i ] + %45 = phi i1 [ true, %if.then.i ], [ %cmp.i.i.i.i12.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i11.i ], [ true, %if.then32.i.i ] + tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %45, ptr noundef nonnull %call5.i.i.i.i.i.i, ptr noundef nonnull %retval.sroa.12.0.i11.i29, ptr noundef nonnull align 8 dereferenceable(32) %add.ptr.i.i.i) #22 %_M_node_count.i.i.i = getelementptr inbounds i8, ptr %this, i64 40 %46 = load i64, ptr %_M_node_count.i.i.i, align 8 %inc.i.i.i = add i64 %46, 1 diff --git a/bench/fmt/optimized/compile-test.cc.ll b/bench/fmt/optimized/compile-test.cc.ll index f9f68627b98..c6088d6738a 100644 --- a/bench/fmt/optimized/compile-test.cc.ll +++ b/bench/fmt/optimized/compile-test.cc.ll @@ -26331,11 +26331,10 @@ for.end.i: ; preds = %if.else24.i, %if.el %align.125.i = phi i8 [ %align.1.ph.i, %_ZN3fmt3v106detail6fill_tIcEaSENS0_17basic_string_viewIcEE.exit.i ], [ %align.1.ph.i, %if.else.i ], [ 0, %if.else24.i ] %begin.addr.0.i = phi ptr [ %add.ptr22.i, %_ZN3fmt3v106detail6fill_tIcEaSENS0_17basic_string_viewIcEE.exit.i ], [ %incdec.ptr.i, %if.else.i ], [ %0, %if.else24.i ] %align29.i = getelementptr inbounds i8, ptr %this, i64 9 + %8 = zext nneg i8 %align.125.i to i16 %bf.load.i = load i16, ptr %align29.i, align 1 - %8 = and i8 %align.125.i, 15 - %bf.value.i = zext nneg i8 %8 to i16 %bf.clear.i = and i16 %bf.load.i, -16 - %bf.set.i = or disjoint i16 %bf.clear.i, %bf.value.i + %bf.set.i = or disjoint i16 %bf.clear.i, %8 store i16 %bf.set.i, ptr %align29.i, align 1 br label %_ZN3fmt3v106detail11parse_alignIcEEPKT_S5_S5_RNS0_12format_specsIS3_EE.exit @@ -35272,11 +35271,10 @@ for.end.i: ; preds = %if.else24.i, %if.el %align.125.i = phi i8 [ %align.1.ph.i, %_ZN3fmt3v106detail6fill_tIcEaSENS0_17basic_string_viewIcEE.exit.i ], [ %align.1.ph.i, %if.else.i ], [ 0, %if.else24.i ] %begin.addr.0.i = phi ptr [ %add.ptr22.i, %_ZN3fmt3v106detail6fill_tIcEaSENS0_17basic_string_viewIcEE.exit.i ], [ %incdec.ptr.i, %if.else.i ], [ %0, %if.else24.i ] %align29.i = getelementptr inbounds i8, ptr %this, i64 9 + %8 = zext nneg i8 %align.125.i to i16 %bf.load.i = load i16, ptr %align29.i, align 1 - %8 = and i8 %align.125.i, 15 - %bf.value.i = zext nneg i8 %8 to i16 %bf.clear.i = and i16 %bf.load.i, -16 - %bf.set.i = or disjoint i16 %bf.clear.i, %bf.value.i + %bf.set.i = or disjoint i16 %bf.clear.i, %8 store i16 %bf.set.i, ptr %align29.i, align 1 br label %_ZN3fmt3v106detail11parse_alignIcEEPKT_S5_S5_RNS0_12format_specsIS3_EE.exit diff --git a/bench/fmt/optimized/std-test.cc.ll b/bench/fmt/optimized/std-test.cc.ll index d817e0a4948..b889ff1c08c 100644 --- a/bench/fmt/optimized/std-test.cc.ll +++ b/bench/fmt/optimized/std-test.cc.ll @@ -12530,11 +12530,10 @@ for.end.i: ; preds = %if.else24.i, %if.el %align.125.i = phi i8 [ %align.1.ph.i, %_ZN3fmt3v106detail6fill_tIcEaSENS0_17basic_string_viewIcEE.exit.i ], [ %align.1.ph.i, %if.else.i ], [ 0, %if.else24.i ] %begin.addr.0.i = phi ptr [ %add.ptr22.i, %_ZN3fmt3v106detail6fill_tIcEaSENS0_17basic_string_viewIcEE.exit.i ], [ %incdec.ptr.i, %if.else.i ], [ %0, %if.else24.i ] %align29.i = getelementptr inbounds i8, ptr %this, i64 9 + %8 = zext nneg i8 %align.125.i to i16 %bf.load.i = load i16, ptr %align29.i, align 1 - %8 = and i8 %align.125.i, 15 - %bf.value.i = zext nneg i8 %8 to i16 %bf.clear.i = and i16 %bf.load.i, -16 - %bf.set.i = or disjoint i16 %bf.clear.i, %bf.value.i + %bf.set.i = or disjoint i16 %bf.clear.i, %8 store i16 %bf.set.i, ptr %align29.i, align 1 br label %_ZN3fmt3v106detail11parse_alignIcEEPKT_S5_S5_RNS0_12format_specsIS3_EE.exit diff --git a/bench/fmt/optimized/xchar-test.cc.ll b/bench/fmt/optimized/xchar-test.cc.ll index 4f008365ffd..a213947dfef 100644 --- a/bench/fmt/optimized/xchar-test.cc.ll +++ b/bench/fmt/optimized/xchar-test.cc.ll @@ -91126,11 +91126,10 @@ for.end.i: ; preds = %if.else24.i, %if.el %align.125.i = phi i8 [ %align.1.ph.i, %_ZN3fmt3v106detail6fill_tIcEaSENS0_17basic_string_viewIcEE.exit.i ], [ %align.1.ph.i, %if.else.i ], [ 0, %if.else24.i ] %begin.addr.0.i = phi ptr [ %add.ptr22.i, %_ZN3fmt3v106detail6fill_tIcEaSENS0_17basic_string_viewIcEE.exit.i ], [ %incdec.ptr.i, %if.else.i ], [ %0, %if.else24.i ] %align29.i = getelementptr inbounds i8, ptr %this, i64 9 + %8 = zext nneg i8 %align.125.i to i16 %bf.load.i = load i16, ptr %align29.i, align 1 - %8 = and i8 %align.125.i, 15 - %bf.value.i = zext nneg i8 %8 to i16 %bf.clear.i = and i16 %bf.load.i, -16 - %bf.set.i = or disjoint i16 %bf.clear.i, %bf.value.i + %bf.set.i = or disjoint i16 %bf.clear.i, %8 store i16 %bf.set.i, ptr %align29.i, align 1 br label %_ZN3fmt3v106detail11parse_alignIcEEPKT_S5_S5_RNS0_12format_specsIS3_EE.exit @@ -99216,11 +99215,10 @@ for.end.i: ; preds = %if.else23.i, %_ZN3f %align.125.i = phi i8 [ %align.1.ph.i, %_ZN3fmt3v106detail6fill_tIwEaSENS0_17basic_string_viewIwEE.exit.i ], [ %align.1.ph.i, %if.then7.i ], [ 0, %if.else23.i ] %begin.addr.0.i = phi ptr [ %add.ptr21.i, %_ZN3fmt3v106detail6fill_tIwEaSENS0_17basic_string_viewIwEE.exit.i ], [ %add.ptr.i, %if.then7.i ], [ %0, %if.else23.i ] %align28.i = getelementptr inbounds i8, ptr %this, i64 9 + %5 = zext nneg i8 %align.125.i to i16 %bf.load.i = load i16, ptr %align28.i, align 1 - %5 = and i8 %align.125.i, 15 - %bf.value.i = zext nneg i8 %5 to i16 %bf.clear.i = and i16 %bf.load.i, -16 - %bf.set.i = or disjoint i16 %bf.clear.i, %bf.value.i + %bf.set.i = or disjoint i16 %bf.clear.i, %5 store i16 %bf.set.i, ptr %align28.i, align 1 br label %_ZN3fmt3v106detail11parse_alignIwEEPKT_S5_S5_RNS0_12format_specsIS3_EE.exit @@ -102587,11 +102585,10 @@ for.end.i: ; preds = %if.else23.i, %_ZN3f %align.125.i = phi i8 [ %align.1.ph.i, %_ZN3fmt3v106detail6fill_tIwEaSENS0_17basic_string_viewIwEE.exit.i ], [ %align.1.ph.i, %if.then7.i ], [ 0, %if.else23.i ] %begin.addr.0.i = phi ptr [ %add.ptr21.i, %_ZN3fmt3v106detail6fill_tIwEaSENS0_17basic_string_viewIwEE.exit.i ], [ %add.ptr.i, %if.then7.i ], [ %0, %if.else23.i ] %align28.i = getelementptr inbounds i8, ptr %this, i64 9 + %5 = zext nneg i8 %align.125.i to i16 %bf.load.i = load i16, ptr %align28.i, align 1 - %5 = and i8 %align.125.i, 15 - %bf.value.i = zext nneg i8 %5 to i16 %bf.clear.i = and i16 %bf.load.i, -16 - %bf.set.i = or disjoint i16 %bf.clear.i, %bf.value.i + %bf.set.i = or disjoint i16 %bf.clear.i, %5 store i16 %bf.set.i, ptr %align28.i, align 1 br label %_ZN3fmt3v106detail11parse_alignIwEEPKT_S5_S5_RNS0_12format_specsIS3_EE.exit diff --git a/bench/folly/optimized/DeterministicSchedule.cpp.ll b/bench/folly/optimized/DeterministicSchedule.cpp.ll index 32835a6dd60..016c13bebec 100644 --- a/bench/folly/optimized/DeterministicSchedule.cpp.ll +++ b/bench/folly/optimized/DeterministicSchedule.cpp.ll @@ -6534,7 +6534,6 @@ _ZN5folly20SingletonThreadLocalINS_4test12_GLOBAL__N_114PerThreadStateENS_6detai br label %while.body while.body: ; preds = %_ZN5folly4test21DeterministicSchedule17afterSharedAccessEv.exit, %_ZN5folly20SingletonThreadLocalINS_4test12_GLOBAL__N_114PerThreadStateENS_6detail10DefaultTagENS4_11DefaultMakeIS3_EEvE3getEv.exit - %started.021 = phi i8 [ 0, %_ZN5folly20SingletonThreadLocalINS_4test12_GLOBAL__N_114PerThreadStateENS_6detail10DefaultTagENS4_11DefaultMakeIS3_EEvE3getEv.exit ], [ %started.1, %_ZN5folly4test21DeterministicSchedule17afterSharedAccessEv.exit ] %3 = load ptr, ptr %0, align 8, !tbaa !48 %4 = icmp eq ptr %3, null br i1 %4, label %cond.false.i.i, label %cond.true.i.i, !prof !50 @@ -6575,7 +6574,6 @@ if.then: ; preds = %_ZN5folly4test21Det br label %if.end if.end: ; preds = %if.then, %_ZN5folly4test21DeterministicSchedule18beforeSharedAccessEv.exit - %started.1 = phi i8 [ 1, %if.then ], [ %started.021, %_ZN5folly4test21DeterministicSchedule18beforeSharedAccessEv.exit ] %7 = load ptr, ptr %0, align 8, !tbaa !48 %8 = icmp eq ptr %7, null br i1 %8, label %cond.false.i.i19, label %cond.true.i.i14, !prof !50 @@ -6627,9 +6625,7 @@ _ZNKSt8functionIFmmEEclEm.exit.i: ; preds = %if.end.i br label %_ZN5folly4test21DeterministicSchedule17afterSharedAccessEv.exit _ZN5folly4test21DeterministicSchedule17afterSharedAccessEv.exit: ; preds = %_ZNKSt8functionIFmmEEclEm.exit.i, %_ZN5folly20SingletonThreadLocalINS_4test12_GLOBAL__N_114PerThreadStateENS_6detail10DefaultTagENS4_11DefaultMakeIS3_EEvE3getEv.exit.i16 - %16 = and i8 %started.1, 1 - %tobool.not = icmp eq i8 %16, 0 - br i1 %tobool.not, label %while.body, label %while.end, !llvm.loop !287 + br i1 %tobool.not.i.i.not, label %while.body, label %while.end, !llvm.loop !287 while.end: ; preds = %_ZN5folly4test21DeterministicSchedule17afterSharedAccessEv.exit call void @_ZN5folly4test21DeterministicSchedule19atomic_thread_fenceESt12memory_order(i32 noundef 5) diff --git a/bench/folly/optimized/EDFThreadPoolExecutor.cpp.ll b/bench/folly/optimized/EDFThreadPoolExecutor.cpp.ll index f70dd719427..82b128c5d55 100644 --- a/bench/folly/optimized/EDFThreadPoolExecutor.cpp.ll +++ b/bench/folly/optimized/EDFThreadPoolExecutor.cpp.ll @@ -4353,13 +4353,11 @@ _ZN5folly6detail17distributed_mutex33recordTimedWaiterAndClearTimedBitERbRm.exit br i1 %cmp, label %cleanup80.thread, label %while.end59 cleanup80.thread: ; preds = %_ZN5folly6detail17distributed_mutex33recordTimedWaiterAndClearTimedBitERbRm.exit - %tobool26 = icmp ne i8 %timedWaiter.1, 0 - %frombool.i = zext i1 %tobool26 to i8 store ptr null, ptr %agg.result, align 8, !tbaa !207 %expected_.i = getelementptr inbounds i8, ptr %agg.result, i64 8 store i64 %or, ptr %expected_.i, align 8, !tbaa !208 %timedWaiters_.i = getelementptr inbounds i8, ptr %agg.result, i64 16 - store i8 %frombool.i, ptr %timedWaiters_.i, align 8, !tbaa !204 + store i8 %timedWaiter.1, ptr %timedWaiters_.i, align 8, !tbaa !204 %combined_.i = getelementptr inbounds i8, ptr %agg.result, i64 17 store i8 0, ptr %combined_.i, align 1, !tbaa !198 %waker_.i = getelementptr inbounds i8, ptr %agg.result, i64 24 @@ -4463,18 +4461,16 @@ _ZN5folly6detail17distributed_mutex6detachINS1_6WaiterISt6atomicEEZNS_16Throttle cleanup80.thread153: ; preds = %_ZN5folly6detail17distributed_mutex6detachINS1_6WaiterISt6atomicEEZNS_16ThrottledLifoSem21maybeStartWakingChainEvEUlvE_EEvRNS1_17RequestWithReturnIT0_EERT_bRNS_4UnitE.exit, %if.end62 %and18.i123 = select i1 %cmp63, i64 0, i64 %9 %15 = inttoptr i64 %and18.i123 to ptr - %tobool75 = icmp ne i8 %timedWaiter.1, 0 %16 = or i1 %cmp66, %cmp67 %17 = load i64, ptr %agg.tmp120.sroa.5.0..sroa_idx, align 8, !tbaa !47 %and18.i124 = and i64 %17, -2 %18 = inttoptr i64 %and18.i124 to ptr - %frombool.i125 = zext i1 %tobool75 to i8 %frombool1.i = zext i1 %16 to i8 store ptr %15, ptr %agg.result, align 8, !tbaa !207 %expected_.i126 = getelementptr inbounds i8, ptr %agg.result, i64 8 store i64 %spec.select, ptr %expected_.i126, align 8, !tbaa !208 %timedWaiters_.i127 = getelementptr inbounds i8, ptr %agg.result, i64 16 - store i8 %frombool.i125, ptr %timedWaiters_.i127, align 8, !tbaa !204 + store i8 %timedWaiter.1, ptr %timedWaiters_.i127, align 8, !tbaa !204 %combined_.i128 = getelementptr inbounds i8, ptr %agg.result, i64 17 store i8 %frombool1.i, ptr %combined_.i128, align 1, !tbaa !198 %waker_.i129 = getelementptr inbounds i8, ptr %agg.result, i64 24 @@ -5533,13 +5529,11 @@ _ZN5folly6detail17distributed_mutex33recordTimedWaiterAndClearTimedBitERbRm.exit br i1 %cmp, label %cleanup79.thread, label %while.end58 cleanup79.thread: ; preds = %_ZN5folly6detail17distributed_mutex33recordTimedWaiterAndClearTimedBitERbRm.exit - %tobool25 = icmp ne i8 %timedWaiter.1, 0 - %frombool.i = zext i1 %tobool25 to i8 store ptr null, ptr %agg.result, align 8, !tbaa !207 %expected_.i = getelementptr inbounds i8, ptr %agg.result, i64 8 store i64 %or, ptr %expected_.i, align 8, !tbaa !208 %timedWaiters_.i = getelementptr inbounds i8, ptr %agg.result, i64 16 - store i8 %frombool.i, ptr %timedWaiters_.i, align 8, !tbaa !204 + store i8 %timedWaiter.1, ptr %timedWaiters_.i, align 8, !tbaa !204 %combined_.i = getelementptr inbounds i8, ptr %agg.result, i64 17 store i8 0, ptr %combined_.i, align 1, !tbaa !198 %waker_.i = getelementptr inbounds i8, ptr %agg.result, i64 24 @@ -5641,18 +5635,16 @@ _ZN5folly6detail17distributed_mutex6detachINS1_6WaiterISt6atomicEEZNS_16Throttle cleanup79.thread152: ; preds = %_ZN5folly6detail17distributed_mutex6detachINS1_6WaiterISt6atomicEEZNS_16ThrottledLifoSem16tryWaitUntilSlowINSt6chrono3_V212steady_clockENS8_8durationIlSt5ratioILl1ELl1000000000EEEEEEbRKNS8_10time_pointIT_T0_EEEUlvE_EEvRNS1_20RequestWithoutReturnISH_EERSG_bRNS_4UnitE.exit, %if.end61 %and18.i122 = select i1 %cmp62, i64 0, i64 %9 %14 = inttoptr i64 %and18.i122 to ptr - %tobool74 = icmp ne i8 %timedWaiter.1, 0 %15 = or i1 %cmp65, %cmp66 %16 = load i64, ptr %agg.tmp119.sroa.5.0..sroa_idx, align 8, !tbaa !47 %and18.i123 = and i64 %16, -2 %17 = inttoptr i64 %and18.i123 to ptr - %frombool.i124 = zext i1 %tobool74 to i8 %frombool1.i = zext i1 %15 to i8 store ptr %14, ptr %agg.result, align 8, !tbaa !207 %expected_.i125 = getelementptr inbounds i8, ptr %agg.result, i64 8 store i64 %spec.select, ptr %expected_.i125, align 8, !tbaa !208 %timedWaiters_.i126 = getelementptr inbounds i8, ptr %agg.result, i64 16 - store i8 %frombool.i124, ptr %timedWaiters_.i126, align 8, !tbaa !204 + store i8 %timedWaiter.1, ptr %timedWaiters_.i126, align 8, !tbaa !204 %combined_.i127 = getelementptr inbounds i8, ptr %agg.result, i64 17 store i8 %frombool1.i, ptr %combined_.i127, align 1, !tbaa !198 %waker_.i128 = getelementptr inbounds i8, ptr %agg.result, i64 24 @@ -5873,13 +5865,11 @@ _ZN5folly6detail17distributed_mutex33recordTimedWaiterAndClearTimedBitERbRm.exit br i1 %cmp, label %cleanup79.thread, label %while.end58 cleanup79.thread: ; preds = %_ZN5folly6detail17distributed_mutex33recordTimedWaiterAndClearTimedBitERbRm.exit - %tobool25 = icmp ne i8 %timedWaiter.1, 0 - %frombool.i = zext i1 %tobool25 to i8 store ptr null, ptr %agg.result, align 8, !tbaa !207 %expected_.i = getelementptr inbounds i8, ptr %agg.result, i64 8 store i64 %or, ptr %expected_.i, align 8, !tbaa !208 %timedWaiters_.i = getelementptr inbounds i8, ptr %agg.result, i64 16 - store i8 %frombool.i, ptr %timedWaiters_.i, align 8, !tbaa !204 + store i8 %timedWaiter.1, ptr %timedWaiters_.i, align 8, !tbaa !204 %combined_.i = getelementptr inbounds i8, ptr %agg.result, i64 17 store i8 0, ptr %combined_.i, align 1, !tbaa !198 %waker_.i = getelementptr inbounds i8, ptr %agg.result, i64 24 @@ -5984,18 +5974,16 @@ _ZN5folly6detail17distributed_mutex6detachINS1_6WaiterISt6atomicEEZNS_16Throttle cleanup79.thread152: ; preds = %_ZN5folly6detail17distributed_mutex6detachINS1_6WaiterISt6atomicEEZNS_16ThrottledLifoSem16tryWaitUntilSlowINSt6chrono3_V212steady_clockENS8_8durationIlSt5ratioILl1ELl1000000000EEEEEEbRKNS8_10time_pointIT_T0_EEEUlvE0_EEvRNS1_17RequestWithReturnISH_EERSG_bRNS_4UnitE.exit, %if.end61 %and18.i122 = select i1 %cmp62, i64 0, i64 %10 %17 = inttoptr i64 %and18.i122 to ptr - %tobool74 = icmp ne i8 %timedWaiter.1, 0 %18 = or i1 %cmp65, %cmp66 %19 = load i64, ptr %agg.tmp119.sroa.5.0..sroa_idx, align 8, !tbaa !47 %and18.i123 = and i64 %19, -2 %20 = inttoptr i64 %and18.i123 to ptr - %frombool.i124 = zext i1 %tobool74 to i8 %frombool1.i = zext i1 %18 to i8 store ptr %17, ptr %agg.result, align 8, !tbaa !207 %expected_.i125 = getelementptr inbounds i8, ptr %agg.result, i64 8 store i64 %spec.select, ptr %expected_.i125, align 8, !tbaa !208 %timedWaiters_.i126 = getelementptr inbounds i8, ptr %agg.result, i64 16 - store i8 %frombool.i124, ptr %timedWaiters_.i126, align 8, !tbaa !204 + store i8 %timedWaiter.1, ptr %timedWaiters_.i126, align 8, !tbaa !204 %combined_.i127 = getelementptr inbounds i8, ptr %agg.result, i64 17 store i8 %frombool1.i, ptr %combined_.i127, align 1, !tbaa !198 %waker_.i128 = getelementptr inbounds i8, ptr %agg.result, i64 24 @@ -6136,13 +6124,11 @@ _ZN5folly6detail17distributed_mutex33recordTimedWaiterAndClearTimedBitERbRm.exit br i1 %cmp, label %cleanup80.thread, label %while.end59 cleanup80.thread: ; preds = %_ZN5folly6detail17distributed_mutex33recordTimedWaiterAndClearTimedBitERbRm.exit - %tobool26 = icmp ne i8 %timedWaiter.1, 0 - %frombool.i = zext i1 %tobool26 to i8 store ptr null, ptr %agg.result, align 8, !tbaa !207 %expected_.i = getelementptr inbounds i8, ptr %agg.result, i64 8 store i64 %or, ptr %expected_.i, align 8, !tbaa !208 %timedWaiters_.i = getelementptr inbounds i8, ptr %agg.result, i64 16 - store i8 %frombool.i, ptr %timedWaiters_.i, align 8, !tbaa !204 + store i8 %timedWaiter.1, ptr %timedWaiters_.i, align 8, !tbaa !204 %combined_.i = getelementptr inbounds i8, ptr %agg.result, i64 17 store i8 0, ptr %combined_.i, align 1, !tbaa !198 %waker_.i = getelementptr inbounds i8, ptr %agg.result, i64 24 @@ -6246,18 +6232,16 @@ _ZN5folly6detail17distributed_mutex6detachINS1_6WaiterISt6atomicEEZNS_16Throttle cleanup80.thread153: ; preds = %_ZN5folly6detail17distributed_mutex6detachINS1_6WaiterISt6atomicEEZNS_16ThrottledLifoSem16tryWaitUntilSlowINSt6chrono3_V212steady_clockENS8_8durationIlSt5ratioILl1ELl1000000000EEEEEEbRKNS8_10time_pointIT_T0_EEEUlvE1_EEvRNS1_17RequestWithReturnISH_EERSG_bRNS_4UnitE.exit, %if.end62 %and18.i123 = select i1 %cmp63, i64 0, i64 %9 %15 = inttoptr i64 %and18.i123 to ptr - %tobool75 = icmp ne i8 %timedWaiter.1, 0 %16 = or i1 %cmp66, %cmp67 %17 = load i64, ptr %agg.tmp120.sroa.5.0..sroa_idx, align 8, !tbaa !47 %and18.i124 = and i64 %17, -2 %18 = inttoptr i64 %and18.i124 to ptr - %frombool.i125 = zext i1 %tobool75 to i8 %frombool1.i = zext i1 %16 to i8 store ptr %15, ptr %agg.result, align 8, !tbaa !207 %expected_.i126 = getelementptr inbounds i8, ptr %agg.result, i64 8 store i64 %spec.select, ptr %expected_.i126, align 8, !tbaa !208 %timedWaiters_.i127 = getelementptr inbounds i8, ptr %agg.result, i64 16 - store i8 %frombool.i125, ptr %timedWaiters_.i127, align 8, !tbaa !204 + store i8 %timedWaiter.1, ptr %timedWaiters_.i127, align 8, !tbaa !204 %combined_.i128 = getelementptr inbounds i8, ptr %agg.result, i64 17 store i8 %frombool1.i, ptr %combined_.i128, align 1, !tbaa !198 %waker_.i129 = getelementptr inbounds i8, ptr %agg.result, i64 24 diff --git a/bench/folly/optimized/FunctionScheduler.cpp.ll b/bench/folly/optimized/FunctionScheduler.cpp.ll index 0e23ae907e0..5a7acc55a6b 100644 --- a/bench/folly/optimized/FunctionScheduler.cpp.ll +++ b/bench/folly/optimized/FunctionScheduler.cpp.ll @@ -2099,8 +2099,7 @@ if.end81: ; preds = %_ZNSt8__detail8_Ada cleanup95: ; preds = %if.end81, %if.then32, %if.then18 %__reject.1 = phi i8 [ %frombool94, %if.end81 ], [ %__reject.0, %if.then18 ], [ %__reject.0, %if.then32 ] %__x.1 = phi double [ %__x.0, %if.end81 ], [ %20, %if.then18 ], [ %24, %if.then32 ] - %35 = and i8 %__reject.1, 1 - %tobool100.not = icmp eq i8 %35, 0 + %tobool100.not = icmp eq i8 %__reject.1, 0 br i1 %tobool100.not, label %do.end, label %do.body, !llvm.loop !115 do.end: ; preds = %cleanup95 @@ -2121,20 +2120,20 @@ do.body121: ; preds = %do.body121.preheade for.cond.cleanup.i.i261.loopexit: ; preds = %for.body.i.i247 store i64 %rem.i.i.i.i.i253.1, ptr %__urng, align 8, !tbaa !80 - %div17.i.i262 = fdiv double %37, %conv16.i.i258.1 + %div17.i.i262 = fdiv double %36, %conv16.i.i258.1 %cmp18.i.i263 = fcmp ult double %div17.i.i262, 1.000000e+00 br i1 %cmp18.i.i263, label %_ZNSt8__detail8_AdaptorISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEdEclEv.exit267, label %if.then.i.i264, !prof !109 for.body.i.i247: ; preds = %do.body121, %for.body.i.i247 %__k.038.i.i248 = phi i64 [ %dec.i.i259.1, %for.body.i.i247 ], [ %dec.i.i259.prol, %do.body121 ] %__tmp.037.i.i249 = phi double [ %conv16.i.i258.1, %for.body.i.i247 ], [ 0x41DFFFFFFF800000, %do.body121 ] - %__sum.036.i.i250 = phi double [ %37, %for.body.i.i247 ], [ %conv14.i.i255.prol, %do.body121 ] + %__sum.036.i.i250 = phi double [ %36, %for.body.i.i247 ], [ %conv14.i.i255.prol, %do.body121 ] %rem.i.i.i3435.i.i251 = phi i64 [ %rem.i.i.i.i.i253.1, %for.body.i.i247 ], [ %rem.i.i.i.i.i253.prol, %do.body121 ] %mul.i.i.i.i.i252 = mul nuw nsw i64 %rem.i.i.i3435.i.i251, 16807 %rem.i.i.i.i.i253 = urem i64 %mul.i.i.i.i.i252, 2147483647 %sub13.i.i254 = add nsw i64 %rem.i.i.i.i.i253, -1 %conv14.i.i255 = uitofp i64 %sub13.i.i254 to double - %36 = tail call double @llvm.fmuladd.f64(double %conv14.i.i255, double %__tmp.037.i.i249, double %__sum.036.i.i250) + %35 = tail call double @llvm.fmuladd.f64(double %conv14.i.i255, double %__tmp.037.i.i249, double %__sum.036.i.i250) %conv15.i.i256 = fpext double %__tmp.037.i.i249 to x86_fp80 %mul.i.i257 = fmul x86_fp80 %conv15.i.i256, 0xK401DFFFFFFFC00000000 %conv16.i.i258 = fptrunc x86_fp80 %mul.i.i257 to double @@ -2142,7 +2141,7 @@ for.body.i.i247: ; preds = %do.body121, %for.bo %rem.i.i.i.i.i253.1 = urem i64 %mul.i.i.i.i.i252.1, 2147483647 %sub13.i.i254.1 = add nsw i64 %rem.i.i.i.i.i253.1, -1 %conv14.i.i255.1 = uitofp i64 %sub13.i.i254.1 to double - %37 = tail call double @llvm.fmuladd.f64(double %conv14.i.i255.1, double %conv16.i.i258, double %36) + %36 = tail call double @llvm.fmuladd.f64(double %conv14.i.i255.1, double %conv16.i.i258, double %35) %conv15.i.i256.1 = fpext double %conv16.i.i258 to x86_fp80 %mul.i.i257.1 = fmul x86_fp80 %conv15.i.i256.1, 0xK401DFFFFFFFC00000000 %conv16.i.i258.1 = fptrunc x86_fp80 %mul.i.i257.1 to double @@ -2158,8 +2157,8 @@ _ZNSt8__detail8_AdaptorISt26linear_congruential_engineImLm16807ELm0ELm2147483647 %__ret.0.i.i266 = phi double [ %call20.i.i265, %if.then.i.i264 ], [ %div17.i.i262, %for.cond.cleanup.i.i261.loopexit ] %mul123 = fmul double %__prod.0, %__ret.0.i.i266 %add124 = add nuw nsw i64 %__x120.0, 1 - %38 = load double, ptr %_M_lm_thr126, align 8, !tbaa !101 - %cmp127 = fcmp ogt double %mul123, %38 + %37 = load double, ptr %_M_lm_thr126, align 8, !tbaa !101 + %cmp127 = fcmp ogt double %mul123, %37 br i1 %cmp127, label %do.body121, label %cleanup132, !llvm.loop !110 cleanup132: ; preds = %_ZNSt8__detail8_AdaptorISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEdEclEv.exit267, %_ZNSt8__detail8_AdaptorISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEdEclEv.exit267.us19, %_ZNSt8__detail8_AdaptorISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEdEclEv.exit267.us, %do.body121.preheader.split.us, %do.end diff --git a/bench/folly/optimized/HeapTimekeeper.cpp.ll b/bench/folly/optimized/HeapTimekeeper.cpp.ll index 8c5f2e774c8..dbd4949891b 100644 --- a/bench/folly/optimized/HeapTimekeeper.cpp.ll +++ b/bench/folly/optimized/HeapTimekeeper.cpp.ll @@ -728,11 +728,9 @@ _ZN5folly6detail17distributed_mutex33recordTimedWaiterAndClearTimedBitERbRm.exit br i1 %cmp.i.i, label %"_ZN5folly6detail17distributed_mutex18lockImplementationISt6atomicLb1ES3_ImENS1_20RequestWithoutReturnIZNS_14HeapTimekeeper6workerEvE3$_0EEEENS1_16DistributedMutexIT_XT0_EE26DistributedMutexStateProxyERSB_RT1_RT2_.exit.thread.i", label %while.end58.i.i "_ZN5folly6detail17distributed_mutex18lockImplementationISt6atomicLb1ES3_ImENS1_20RequestWithoutReturnIZNS_14HeapTimekeeper6workerEvE3$_0EEEENS1_16DistributedMutexIT_XT0_EE26DistributedMutexStateProxyERSB_RT1_RT2_.exit.thread.i": ; preds = %_ZN5folly6detail17distributed_mutex33recordTimedWaiterAndClearTimedBitERbRm.exit.i.i - %tobool25.i.i = icmp ne i8 %timedWaiter.1.i.i, 0 - %frombool.i.i.i = zext i1 %tobool25.i.i to i8 store ptr null, ptr %ref.tmp2.i, align 8, !tbaa !46, !alias.scope !42 store i64 %or.i.i, ptr %expected_.i125.i.i, align 8, !tbaa !48, !alias.scope !42 - store i8 %frombool.i.i.i, ptr %timedWaiters_.i126.i.i, align 8, !tbaa !49, !alias.scope !42 + store i8 %timedWaiter.1.i.i, ptr %timedWaiters_.i126.i.i, align 8, !tbaa !49, !alias.scope !42 store i8 0, ptr %combined_.i127.i.i, align 1, !tbaa !50, !alias.scope !42 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %waker_.i128.i.i, i8 0, i64 16, i1 false), !alias.scope !42 store ptr %nextSleeper.0.i.i, ptr %ready_.i130.i.i, align 8, !tbaa !51, !alias.scope !42 @@ -996,16 +994,14 @@ cleanup79.i.i: ; preds = %for.inc.us.i, %_ZN5 %37 = and i64 %previous.0.i.i, -2 %38 = inttoptr i64 %37 to ptr %39 = select i1 %cmp62.i.i479, ptr null, ptr %38 - %tobool74.i.i = icmp ne i8 %timedWaiter.1.i.i, 0 %40 = or i1 %cmp66.i.i482, %cmp65.i.i481 %41 = load i64, ptr %agg.tmp119.sroa.5.0..sroa_idx.i.i, align 8, !tbaa !69, !noalias !42 %and18.i123.i.i = and i64 %41, -2 %42 = inttoptr i64 %and18.i123.i.i to ptr - %frombool.i124.i.i = zext i1 %tobool74.i.i to i8 %frombool1.i.i.i = zext i1 %40 to i8 store ptr %39, ptr %ref.tmp2.i, align 8, !tbaa !46, !alias.scope !42 store i64 %spec.select.i.i480, ptr %expected_.i125.i.i, align 8, !tbaa !48, !alias.scope !42 - store i8 %frombool.i124.i.i, ptr %timedWaiters_.i126.i.i, align 8, !tbaa !49, !alias.scope !42 + store i8 %timedWaiter.1.i.i, ptr %timedWaiters_.i126.i.i, align 8, !tbaa !49, !alias.scope !42 store i8 %frombool1.i.i.i, ptr %combined_.i127.i.i, align 1, !tbaa !50, !alias.scope !42 store i64 %36, ptr %waker_.i128.i.i, align 8, !tbaa !70, !alias.scope !42 store ptr %42, ptr %waiters_.i129.i.i, align 8, !tbaa !71, !alias.scope !42 @@ -1069,7 +1065,8 @@ terminate.lpad.i.i.i.i: ; preds = %if.then.i17.i unreachable if.end.i189: ; preds = %"_ZN5folly6detail17distributed_mutex18lockImplementationISt6atomicLb1ES3_ImENS1_20RequestWithoutReturnIZNS_14HeapTimekeeper6workerEvE3$_0EEEENS1_16DistributedMutexIT_XT0_EE26DistributedMutexStateProxyERSB_RT1_RT2_.exit.i" - br i1 %tobool74.i.i, label %if.then.i19.i, label %invoke.cont4, !prof !66 + %tobool74.i.i.not = icmp eq i8 %timedWaiter.1.i.i, 0 + br i1 %tobool74.i.i.not, label %invoke.cont4, label %if.then.i19.i, !prof !45 if.then.i19.i: ; preds = %if.end.i189 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i.i) #13 @@ -1174,11 +1171,9 @@ _ZN5folly6detail17distributed_mutex33recordTimedWaiterAndClearTimedBitERbRm.exit br i1 %cmp.i.i217, label %invoke.cont.thread.i, label %while.end59.i.i invoke.cont.thread.i: ; preds = %_ZN5folly6detail17distributed_mutex33recordTimedWaiterAndClearTimedBitERbRm.exit.i.i214 - %tobool26.i.i = icmp ne i8 %timedWaiter.1.i.i215, 0 - %frombool.i.i.i245 = zext i1 %tobool26.i.i to i8 store ptr null, ptr %ref.tmp3.i, align 8, !tbaa !46, !alias.scope !78 store i64 %or.i.i202, ptr %expected_.i126.i.i, align 8, !tbaa !48, !alias.scope !78 - store i8 %frombool.i.i.i245, ptr %timedWaiters_.i127.i.i, align 8, !tbaa !49, !alias.scope !78 + store i8 %timedWaiter.1.i.i215, ptr %timedWaiters_.i127.i.i, align 8, !tbaa !49, !alias.scope !78 store i8 0, ptr %combined_.i128.i.i, align 1, !tbaa !50, !alias.scope !78 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %waker_.i129.i.i, i8 0, i64 16, i1 false), !alias.scope !78 store ptr %nextSleeper.0.i.i205, ptr %ready_.i131.i.i, align 8, !tbaa !51, !alias.scope !78 @@ -1290,16 +1285,14 @@ cleanup80.i.i: ; preds = %call1.i.i32.i.noexc invoke.cont.i: ; preds = %"_ZN5folly6detail17distributed_mutex6detachINS1_6WaiterISt6atomicEEZNS_14HeapTimekeeper6workerEvE3$_1EEvRNS1_17RequestWithReturnIT0_EERT_bRNS_4UnitE.exit.i.i", %if.end62.i.i %and18.i123.i.i223 = select i1 %cmp63.i.i, i64 0, i64 %63 %68 = inttoptr i64 %and18.i123.i.i223 to ptr - %tobool75.i.i = icmp ne i8 %timedWaiter.1.i.i215, 0 %69 = or i1 %cmp66.i.i222, %cmp67.i.i %70 = load i64, ptr %agg.tmp120.sroa.5.0..sroa_idx.i.i, align 8, !tbaa !69, !noalias !78 %and18.i124.i.i = and i64 %70, -2 %71 = inttoptr i64 %and18.i124.i.i to ptr - %frombool.i125.i.i = zext i1 %tobool75.i.i to i8 %frombool1.i.i.i224 = zext i1 %69 to i8 store ptr %68, ptr %ref.tmp3.i, align 8, !tbaa !46, !alias.scope !78 store i64 %spec.select.i.i221, ptr %expected_.i126.i.i, align 8, !tbaa !48, !alias.scope !78 - store i8 %frombool.i125.i.i, ptr %timedWaiters_.i127.i.i, align 8, !tbaa !49, !alias.scope !78 + store i8 %timedWaiter.1.i.i215, ptr %timedWaiters_.i127.i.i, align 8, !tbaa !49, !alias.scope !78 store i8 %frombool1.i.i.i224, ptr %combined_.i128.i.i, align 1, !tbaa !50, !alias.scope !78 store i64 %62, ptr %waker_.i129.i.i, align 8, !tbaa !70, !alias.scope !78 store ptr %71, ptr %waiters_.i130.i.i, align 8, !tbaa !71, !alias.scope !78 @@ -1328,7 +1321,8 @@ terminate.lpad.i.i.i.i227: ; preds = %if.then.i.i225 unreachable if.end.i229: ; preds = %invoke.cont.i, %invoke.cont.i - br i1 %tobool75.i.i, label %if.then.i34.i, label %invoke.cont46, !prof !66 + %tobool75.i.i.not = icmp eq i8 %timedWaiter.1.i.i215, 0 + br i1 %tobool75.i.i.not, label %invoke.cont46, label %if.then.i34.i, !prof !45 if.then.i34.i: ; preds = %if.end.i229 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i.i197) #13 @@ -2245,13 +2239,11 @@ _ZN5folly6detail17distributed_mutex33recordTimedWaiterAndClearTimedBitERbRm.exit br i1 %cmp.i.i, label %invoke.cont.thread.i, label %while.end61.i.i invoke.cont.thread.i: ; preds = %_ZN5folly6detail17distributed_mutex33recordTimedWaiterAndClearTimedBitERbRm.exit.i.i - %tobool27.i.i = icmp ne i8 %timedWaiter.1.i.i, 0 - %frombool.i.i.i = zext i1 %tobool27.i.i to i8 store ptr null, ptr %ref.tmp3.i, align 8, !tbaa !46, !alias.scope !130 %expected_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp3.i, i64 8 store i64 %or.i.i, ptr %expected_.i.i.i, align 8, !tbaa !48, !alias.scope !130 %timedWaiters_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp3.i, i64 16 - store i8 %frombool.i.i.i, ptr %timedWaiters_.i.i.i, align 8, !tbaa !49, !alias.scope !130 + store i8 %timedWaiter.1.i.i, ptr %timedWaiters_.i.i.i, align 8, !tbaa !49, !alias.scope !130 %combined_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp3.i, i64 17 store i8 0, ptr %combined_.i.i.i, align 1, !tbaa !50, !alias.scope !130 %waker_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp3.i, i64 24 @@ -2366,18 +2358,16 @@ cleanup82.i.i: ; preds = %call1.i.i32.i.noexc invoke.cont.i: ; preds = %"_ZN5folly6detail17distributed_mutex6detachINS1_6WaiterISt6atomicEEZNS_14HeapTimekeeperD1EvE3$_0EEvRNS1_17RequestWithReturnIT0_EERT_bRNS_4UnitE.exit.i.i", %if.end64.i.i %and18.i125.i.i = select i1 %cmp65.i.i, i64 0, i64 %9 %14 = inttoptr i64 %and18.i125.i.i to ptr - %tobool77.i.i = icmp ne i8 %timedWaiter.1.i.i, 0 %15 = or i1 %cmp68.i.i, %cmp69.i.i %16 = load i64, ptr %agg.tmp122.sroa.5.0..sroa_idx.i.i, align 8, !tbaa !69, !noalias !130 %and18.i126.i.i = and i64 %16, -2 %17 = inttoptr i64 %and18.i126.i.i to ptr - %frombool.i127.i.i = zext i1 %tobool77.i.i to i8 %frombool1.i.i.i = zext i1 %15 to i8 store ptr %14, ptr %ref.tmp3.i, align 8, !tbaa !46, !alias.scope !130 %expected_.i128.i.i = getelementptr inbounds i8, ptr %ref.tmp3.i, i64 8 store i64 %spec.select.i.i, ptr %expected_.i128.i.i, align 8, !tbaa !48, !alias.scope !130 %timedWaiters_.i129.i.i = getelementptr inbounds i8, ptr %ref.tmp3.i, i64 16 - store i8 %frombool.i127.i.i, ptr %timedWaiters_.i129.i.i, align 8, !tbaa !49, !alias.scope !130 + store i8 %timedWaiter.1.i.i, ptr %timedWaiters_.i129.i.i, align 8, !tbaa !49, !alias.scope !130 %combined_.i130.i.i = getelementptr inbounds i8, ptr %ref.tmp3.i, i64 17 store i8 %frombool1.i.i.i, ptr %combined_.i130.i.i, align 1, !tbaa !50, !alias.scope !130 %waker_.i131.i.i = getelementptr inbounds i8, ptr %ref.tmp3.i, i64 24 @@ -2410,7 +2400,8 @@ terminate.lpad.i.i.i.i: ; preds = %if.then.i.i unreachable if.end.i5: ; preds = %invoke.cont.i, %invoke.cont.i - br i1 %tobool77.i.i, label %if.then.i33.i, label %invoke.cont, !prof !66 + %tobool77.i.i.not = icmp eq i8 %timedWaiter.1.i.i, 0 + br i1 %tobool77.i.i.not, label %invoke.cont, label %if.then.i33.i, !prof !45 if.then.i33.i: ; preds = %if.end.i5 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i.i) #13 @@ -3036,13 +3027,11 @@ _ZN5folly6detail17distributed_mutex33recordTimedWaiterAndClearTimedBitERbRm.exit br i1 %cmp.i.i, label %invoke.cont.thread.i, label %while.end58.i.i invoke.cont.thread.i: ; preds = %_ZN5folly6detail17distributed_mutex33recordTimedWaiterAndClearTimedBitERbRm.exit.i.i - %tobool25.i.i = icmp ne i8 %timedWaiter.1.i.i, 0 - %frombool.i.i.i = zext i1 %tobool25.i.i to i8 store ptr null, ptr %ref.tmp2.i, align 8, !tbaa !46, !alias.scope !177 %expected_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp2.i, i64 8 store i64 %or.i.i, ptr %expected_.i.i.i, align 8, !tbaa !48, !alias.scope !177 %timedWaiters_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp2.i, i64 16 - store i8 %frombool.i.i.i, ptr %timedWaiters_.i.i.i, align 8, !tbaa !49, !alias.scope !177 + store i8 %timedWaiter.1.i.i, ptr %timedWaiters_.i.i.i, align 8, !tbaa !49, !alias.scope !177 %combined_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp2.i, i64 17 store i8 0, ptr %combined_.i.i.i, align 1, !tbaa !50, !alias.scope !177 %waker_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp2.i, i64 24 @@ -3148,18 +3137,16 @@ cleanup79.i.i: ; preds = %_ZN5folly6detail17d invoke.cont.i: ; preds = %"_ZN5folly6detail17distributed_mutex6detachINS1_6WaiterISt6atomicEEZNS_14HeapTimekeeper7enqueueENS6_2OpEE3$_0EEvRNS1_17RequestWithReturnIT0_EERT_bRNS_4UnitE.exit.i.i", %if.end61.i.i %and18.i123.i.i = select i1 %cmp62.i.i, i64 0, i64 %10 %15 = inttoptr i64 %and18.i123.i.i to ptr - %tobool74.i.i = icmp ne i8 %timedWaiter.1.i.i, 0 %16 = or i1 %cmp65.i.i, %cmp66.i.i %17 = load i64, ptr %agg.tmp120.sroa.5.0..sroa_idx.i.i, align 8, !tbaa !69, !noalias !177 %and18.i124.i.i = and i64 %17, -2 %18 = inttoptr i64 %and18.i124.i.i to ptr - %frombool.i125.i.i = zext i1 %tobool74.i.i to i8 %frombool1.i.i.i = zext i1 %16 to i8 store ptr %15, ptr %ref.tmp2.i, align 8, !tbaa !46, !alias.scope !177 %expected_.i126.i.i = getelementptr inbounds i8, ptr %ref.tmp2.i, i64 8 store i64 %spec.select.i.i, ptr %expected_.i126.i.i, align 8, !tbaa !48, !alias.scope !177 %timedWaiters_.i127.i.i = getelementptr inbounds i8, ptr %ref.tmp2.i, i64 16 - store i8 %frombool.i125.i.i, ptr %timedWaiters_.i127.i.i, align 8, !tbaa !49, !alias.scope !177 + store i8 %timedWaiter.1.i.i, ptr %timedWaiters_.i127.i.i, align 8, !tbaa !49, !alias.scope !177 %combined_.i128.i.i = getelementptr inbounds i8, ptr %ref.tmp2.i, i64 17 store i8 %frombool1.i.i.i, ptr %combined_.i128.i.i, align 1, !tbaa !50, !alias.scope !177 %waker_.i129.i.i = getelementptr inbounds i8, ptr %ref.tmp2.i, i64 24 @@ -3312,7 +3299,8 @@ lpad6.i: ; preds = %cond.true.i.i.i.i.i br label %ehcleanup14.i if.end.i3: ; preds = %invoke.cont.i, %invoke.cont.i - br i1 %tobool74.i.i, label %if.then.i38.i, label %"_ZN5folly6detail17distributed_mutex16DistributedMutexISt6atomicLb1EE12lock_combineIZNS_14HeapTimekeeper7enqueueENS6_2OpEE3$_0EENS_13invoke_detail6traitsIRKT_E6resultIEESB_.exit", !prof !66 + %tobool74.i.i.not = icmp eq i8 %timedWaiter.1.i.i, 0 + br i1 %tobool74.i.i.not, label %"_ZN5folly6detail17distributed_mutex16DistributedMutexISt6atomicLb1EE12lock_combineIZNS_14HeapTimekeeper7enqueueENS6_2OpEE3$_0EENS_13invoke_detail6traitsIRKT_E6resultIEESB_.exit", label %if.then.i38.i, !prof !45 if.then.i38.i: ; preds = %if.end.i3 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i.i) #13 diff --git a/bench/freetype/optimized/ftbase.c.ll b/bench/freetype/optimized/ftbase.c.ll index 4d44493c662..9e9715ad2f1 100644 --- a/bench/freetype/optimized/ftbase.c.ll +++ b/bench/freetype/optimized/ftbase.c.ll @@ -6195,10 +6195,10 @@ ft_mem_free.exit.i: ; preds = %FT_Stream_Close.exi br label %71 71: ; preds = %.lr.ph, %114 - %.2277 = phi ptr [ null, %.lr.ph ], [ %.3, %114 ] - %.096276 = phi ptr [ %.ptr, %.lr.ph ], [ %115, %114 ] - %.3194275 = phi i32 [ 11, %.lr.ph ], [ %.5, %114 ] - %72 = load ptr, ptr %.096276, align 8 + %.2278 = phi ptr [ null, %.lr.ph ], [ %.3, %114 ] + %.096277 = phi ptr [ %.ptr, %.lr.ph ], [ %115, %114 ] + %.3194276 = phi i32 [ 11, %.lr.ph ], [ %.5, %114 ] + %72 = load ptr, ptr %.096277, align 8 %73 = load ptr, ptr %72, align 8 %74 = load i64, ptr %73, align 8 %75 = and i64 %74, 1 @@ -6227,7 +6227,7 @@ ft_mem_free.exit.i: ; preds = %FT_Stream_Close.exi br i1 %.not119, label %112, label %85 85: ; preds = %84 - %86 = load ptr, ptr %.096276, align 8 + %86 = load ptr, ptr %.096277, align 8 %87 = load ptr, ptr %86, align 8 %88 = getelementptr inbounds i8, ptr %87, i64 16 %89 = load ptr, ptr %88, align 8 @@ -6291,9 +6291,9 @@ ft_mem_free.exit.i148: ; preds = %FT_Stream_Close.exi br i1 %.not122, label %114, label %FT_Stream_Seek.exit 114: ; preds = %71, %112 - %.5 = phi i32 [ %.3194275, %71 ], [ %.4195, %112 ] - %.3 = phi ptr [ %.2277, %71 ], [ %72, %112 ] - %115 = getelementptr inbounds i8, ptr %.096276, i64 8 + %.5 = phi i32 [ %.3194276, %71 ], [ %.4195, %112 ] + %.3 = phi ptr [ %.2278, %71 ], [ %72, %112 ] + %115 = getelementptr inbounds i8, ptr %.096277, i64 8 %116 = icmp ult ptr %115, %.ptr288 br i1 %116, label %71, label %FT_Stream_Seek.exit, !llvm.loop !24 @@ -6313,15 +6313,15 @@ FT_Stream_Seek.exit: ; preds = %112, %114, %27 br i1 %.not136, label %268, label %.thread .thread: ; preds = %117 - %.pre304 = load ptr, ptr %10, align 8 + %.pre305 = load ptr, ptr %10, align 8 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %6) - %.not.i176 = icmp eq ptr %.pre304, null + %.not.i176 = icmp eq ptr %.pre305, null br i1 %.not.i176, label %.thread228, label %118 118: ; preds = %.thread.thread, %.thread - %.095211216319 = phi ptr [ %72, %.thread.thread ], [ %.095, %.thread ] - %.098210218315 = phi ptr [ %34, %.thread.thread ], [ %.098, %.thread ] - %119 = phi ptr [ %95, %.thread.thread ], [ %.pre304, %.thread ] + %.095211216320 = phi ptr [ %72, %.thread.thread ], [ %.095, %.thread ] + %.098210218316 = phi ptr [ %34, %.thread.thread ], [ %.098, %.thread ] + %119 = phi ptr [ %95, %.thread.thread ], [ %.pre305, %.thread ] %120 = getelementptr inbounds i8, ptr %119, i64 40 %121 = load ptr, ptr %120, align 8 %.not.i.i177 = icmp eq ptr %121, null @@ -6396,9 +6396,9 @@ FT_Stream_Read.exit.i: ; preds = %134 br i1 %or.cond23.i, label %IsMacBinary.exit.thread226, label %IsMacBinary.exit .thread228: ; preds = %134, %124, %122, %.thread - %.not.i176321 = phi i1 [ false, %134 ], [ false, %124 ], [ false, %122 ], [ true, %.thread ] - %.095211216318 = phi ptr [ %.095211216319, %134 ], [ %.095211216319, %124 ], [ %.095211216319, %122 ], [ %.095, %.thread ] - %.098210218314 = phi ptr [ %.098210218315, %134 ], [ %.098210218315, %124 ], [ %.098210218315, %122 ], [ %.098, %.thread ] + %.not.i176322 = phi i1 [ false, %134 ], [ false, %124 ], [ false, %122 ], [ true, %.thread ] + %.095211216319 = phi ptr [ %.095211216320, %134 ], [ %.095211216320, %124 ], [ %.095211216320, %122 ], [ %.095, %.thread ] + %.098210218315 = phi ptr [ %.098210218316, %134 ], [ %.098210218316, %124 ], [ %.098210218316, %122 ], [ %.098, %.thread ] %159 = phi ptr [ %119, %134 ], [ %119, %124 ], [ %119, %122 ], [ null, %.thread ] call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %6) br label %185 @@ -6446,9 +6446,9 @@ IsMacBinary.exit: ; preds = %151 ] 185: ; preds = %.thread228, %184, %184 - %.not.i176320 = phi i1 [ %.not.i176321, %.thread228 ], [ false, %184 ], [ false, %184 ] - %.095211216317 = phi ptr [ %.095211216318, %.thread228 ], [ %.095211216319, %184 ], [ %.095211216319, %184 ] - %.098210218313 = phi ptr [ %.098210218314, %.thread228 ], [ %.098210218315, %184 ], [ %.098210218315, %184 ] + %.not.i176321 = phi i1 [ %.not.i176322, %.thread228 ], [ false, %184 ], [ false, %184 ] + %.095211216318 = phi ptr [ %.095211216319, %.thread228 ], [ %.095211216320, %184 ], [ %.095211216320, %184 ] + %.098210218314 = phi ptr [ %.098210218315, %.thread228 ], [ %.098210218316, %184 ], [ %.098210218316, %184 ] %186 = phi ptr [ %159, %.thread228 ], [ %119, %184 ], [ %119, %184 ] %.0.i230 = phi i32 [ 85, %.thread228 ], [ %.0.i, %184 ], [ %.0.i, %184 ] %187 = load i32, ptr %1, align 8 @@ -6465,7 +6465,7 @@ IsMacBinary.exit: ; preds = %151 %192 = load ptr, ptr %191, align 8 %193 = getelementptr inbounds i8, ptr %186, i64 40 %194 = getelementptr inbounds i8, ptr %186, i64 16 - br i1 %.not.i176320, label %.split.us.preheader.i.i, label %.split.i.i + br i1 %.not.i176321, label %.split.us.preheader.i.i, label %.split.i.i .split.us.preheader.i.i: ; preds = %189, %.split.us.preheader.i.i %indvars.iv28.i.i = phi i64 [ %indvars.iv.next29.i.i, %.split.us.preheader.i.i ], [ 0, %189 ] @@ -6519,10 +6519,9 @@ FT_Raccess_Guess.exit.i.preheader: ; preds = %212, %.split.us.pre br label %FT_Raccess_Guess.exit.i FT_Raccess_Guess.exit.i: ; preds = %FT_Raccess_Guess.exit.i.preheader, %248 - %indvars.iv298 = phi i64 [ %indvars.iv.next299, %248 ], [ 0, %FT_Raccess_Guess.exit.i.preheader ] + %indvars.iv299 = phi i64 [ %indvars.iv.next300, %248 ], [ 0, %FT_Raccess_Guess.exit.i.preheader ] %.0.i170284 = phi i8 [ %.1.i173, %248 ], [ 0, %FT_Raccess_Guess.exit.i.preheader ] - %.033.i283 = phi i32 [ %.235.i, %248 ], [ 2, %FT_Raccess_Guess.exit.i.preheader ] - %213 = getelementptr inbounds [9 x %struct.ft_raccess_guess_rec_], ptr @ft_raccess_guess_table, i64 0, i64 %indvars.iv298, i32 1 + %213 = getelementptr inbounds [9 x %struct.ft_raccess_guess_rec_], ptr @ft_raccess_guess_table, i64 0, i64 %indvars.iv299, i32 1 %214 = load i32, ptr %213, align 8 %.off.i.i = add i32 %214, -3 %switch.i.i = icmp ult i32 %.off.i.i, 2 @@ -6531,13 +6530,13 @@ FT_Raccess_Guess.exit.i: ; preds = %FT_Raccess_Guess.ex br i1 %or.cond.i, label %248, label %216 216: ; preds = %FT_Raccess_Guess.exit.i - %217 = getelementptr inbounds [9 x i32], ptr %9, i64 0, i64 %indvars.iv298 + %217 = getelementptr inbounds [9 x i32], ptr %9, i64 0, i64 %indvars.iv299 %218 = load i32, ptr %217, align 4 %.not.i172 = icmp eq i32 %218, 0 br i1 %.not.i172, label %219, label %248 219: ; preds = %216 - %220 = getelementptr inbounds [9 x ptr], ptr %7, i64 0, i64 %indvars.iv298 + %220 = getelementptr inbounds [9 x ptr], ptr %7, i64 0, i64 %indvars.iv299 %221 = load ptr, ptr %220, align 8 %.not43.i = icmp eq ptr %221, null br i1 %.not43.i, label %222, label %224 @@ -6567,18 +6566,18 @@ ft_mem_free.exit.i.i: ; preds = %230 %233 = getelementptr inbounds i8, ptr %226, i64 16 %234 = load ptr, ptr %233, align 8 call void %234(ptr noundef nonnull %226, ptr noundef nonnull %229) #34 + %235 = and i32 %232, 255 + %236 = icmp eq i32 %235, 81 br label %FT_Stream_New.exit.i.thread FT_Stream_New.exit.i.thread: ; preds = %224, %ft_mem_free.exit.i.i - %.0.i.i174.ph = phi i32 [ %232, %ft_mem_free.exit.i.i ], [ 64, %224 ] - %235 = and i32 %.0.i.i174.ph, 255 - %236 = icmp eq i32 %235, 81 - %or.cond50.i233 = and i1 %switch.i.i, %236 + %.0.i.i174.ph = phi i1 [ %236, %ft_mem_free.exit.i.i ], [ false, %224 ] + %or.cond50.i233 = and i1 %switch.i.i, %.0.i.i174.ph %.2.i234 = select i1 %or.cond50.i233, i8 1, i8 %.0.i170284 br label %248 237: ; preds = %230 - %238 = getelementptr inbounds [9 x i64], ptr %8, i64 0, i64 %indvars.iv298 + %238 = getelementptr inbounds [9 x i64], ptr %8, i64 0, i64 %indvars.iv299 %239 = load i64, ptr %238, align 8 %240 = call fastcc i32 @IsMacResource(ptr noundef nonnull %0, ptr noundef nonnull %229, i64 noundef %239, i64 noundef range(i64 -2147483647, 2147483648) %.089, ptr noundef %3) %241 = load ptr, ptr %231, align 8 @@ -6603,20 +6602,19 @@ FT_Stream_Free.exit.i: ; preds = %237, %244 br label %248 248: ; preds = %FT_Stream_New.exit.i.thread, %247, %216, %FT_Raccess_Guess.exit.i - %.235.i = phi i32 [ %.033.i283, %FT_Raccess_Guess.exit.i ], [ %.033.i283, %216 ], [ %240, %247 ], [ %.0.i.i174.ph, %FT_Stream_New.exit.i.thread ] %.1.i173 = phi i8 [ %.0.i170284, %FT_Raccess_Guess.exit.i ], [ %.0.i170284, %216 ], [ %spec.select.i175, %247 ], [ %.2.i234, %FT_Stream_New.exit.i.thread ] - %indvars.iv.next299 = add nuw nsw i64 %indvars.iv298, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next299, 9 + %indvars.iv.next300 = add nuw nsw i64 %indvars.iv299, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next300, 9 br i1 %exitcond.not, label %249, label %FT_Raccess_Guess.exit.i, !llvm.loop !26 249: ; preds = %FT_Stream_Free.exit.i, %248 - %.134.i = phi i32 [ 0, %FT_Stream_Free.exit.i ], [ %.235.i, %248 ] + %.lcssa = phi i1 [ true, %FT_Stream_Free.exit.i ], [ false, %248 ] %250 = getelementptr inbounds i8, ptr %190, i64 16 br label %251 251: ; preds = %249, %256 - %indvars.iv300 = phi i64 [ 0, %249 ], [ %indvars.iv.next301, %256 ] - %252 = getelementptr inbounds [9 x ptr], ptr %7, i64 0, i64 %indvars.iv300 + %indvars.iv301 = phi i64 [ 0, %249 ], [ %indvars.iv.next302, %256 ] + %252 = getelementptr inbounds [9 x ptr], ptr %7, i64 0, i64 %indvars.iv301 %253 = load ptr, ptr %252, align 8 %.not47.i = icmp eq ptr %253, null br i1 %.not47.i, label %256, label %254 @@ -6628,31 +6626,30 @@ FT_Stream_Free.exit.i: ; preds = %237, %244 br label %256 256: ; preds = %254, %251 - %indvars.iv.next301 = add nuw nsw i64 %indvars.iv300, 1 - %exitcond303.not = icmp eq i64 %indvars.iv.next301, 9 - br i1 %exitcond303.not, label %load_face_in_embedded_rfork.exit, label %251, !llvm.loop !27 + %indvars.iv.next302 = add nuw nsw i64 %indvars.iv301, 1 + %exitcond304.not = icmp eq i64 %indvars.iv.next302, 9 + br i1 %exitcond304.not, label %load_face_in_embedded_rfork.exit, label %251, !llvm.loop !27 load_face_in_embedded_rfork.exit: ; preds = %256 - %.not46.i = icmp eq i32 %.134.i, 0 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %7) call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %8) call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %9) - br i1 %.not46.i, label %load_mac_face.exit.thread, label %FT_Stream_Seek.exit.thread199 + br i1 %.lcssa, label %load_mac_face.exit.thread, label %FT_Stream_Seek.exit.thread199 load_mac_face.exit: ; preds = %184, %185 - %.not.i176324 = phi i1 [ %.not.i176320, %185 ], [ false, %184 ] - %.095211216316 = phi ptr [ %.095211216317, %185 ], [ %.095211216319, %184 ] - %.098210218312 = phi ptr [ %.098210218313, %185 ], [ %.098210218315, %184 ] + %.not.i176325 = phi i1 [ %.not.i176321, %185 ], [ false, %184 ] + %.095211216317 = phi ptr [ %.095211216318, %185 ], [ %.095211216320, %184 ] + %.098210218313 = phi ptr [ %.098210218314, %185 ], [ %.098210218316, %184 ] %257 = phi ptr [ %186, %185 ], [ %119, %184 ] %.1.i = phi i32 [ %.0.i230, %185 ], [ %.0.i, %184 ] %.not137 = icmp eq i32 %.1.i, 0 br i1 %.not137, label %load_mac_face.exit.thread, label %268 load_mac_face.exit.thread: ; preds = %load_face_in_embedded_rfork.exit, %load_mac_face.exit - %.not.i176323 = phi i1 [ %.not.i176320, %load_face_in_embedded_rfork.exit ], [ %.not.i176324, %load_mac_face.exit ] + %.not.i176324 = phi i1 [ %.not.i176321, %load_face_in_embedded_rfork.exit ], [ %.not.i176325, %load_mac_face.exit ] %258 = phi ptr [ %186, %load_face_in_embedded_rfork.exit ], [ %257, %load_mac_face.exit ] %259 = load i8, ptr %12, align 1 - br i1 %.not.i176323, label %FT_Stream_Free.exit149, label %260 + br i1 %.not.i176324, label %FT_Stream_Free.exit149, label %260 260: ; preds = %load_mac_face.exit.thread %261 = getelementptr inbounds i8, ptr %258, i64 56 @@ -6677,8 +6674,8 @@ ft_mem_free.exit.i155: ; preds = %FT_Stream_Close.exi br label %FT_Stream_Free.exit149 268: ; preds = %load_mac_face.exit, %117 - %.098210219 = phi ptr [ %.098, %117 ], [ %.098210218312, %load_mac_face.exit ] - %.095211217 = phi ptr [ %.095, %117 ], [ %.095211216316, %load_mac_face.exit ] + %.098210219 = phi ptr [ %.098, %117 ], [ %.098210218313, %load_mac_face.exit ] + %.095211217 = phi ptr [ %.095, %117 ], [ %.095211216317, %load_mac_face.exit ] %.7 = phi i32 [ %.0191, %117 ], [ %.1.i, %load_mac_face.exit ] %269 = and i32 %.7, 255 %.not138 = icmp eq i32 %269, 2 @@ -6686,8 +6683,8 @@ ft_mem_free.exit.i155: ; preds = %FT_Stream_Close.exi br label %FT_Stream_Seek.exit.thread199 FT_Stream_Seek.exit.thread199: ; preds = %64, %268, %load_face_in_embedded_rfork.exit, %30, %FT_Stream_Seek.exit - %.095204 = phi ptr [ %.095, %FT_Stream_Seek.exit ], [ null, %30 ], [ %.095211216317, %load_face_in_embedded_rfork.exit ], [ %.095211217, %268 ], [ null, %64 ] - %.098203 = phi ptr [ %.098, %FT_Stream_Seek.exit ], [ null, %30 ], [ %.098210218313, %load_face_in_embedded_rfork.exit ], [ %.098210219, %268 ], [ %34, %64 ] + %.095204 = phi ptr [ %.095, %FT_Stream_Seek.exit ], [ null, %30 ], [ %.095211216318, %load_face_in_embedded_rfork.exit ], [ %.095211217, %268 ], [ null, %64 ] + %.098203 = phi ptr [ %.098, %FT_Stream_Seek.exit ], [ null, %30 ], [ %.098210218314, %load_face_in_embedded_rfork.exit ], [ %.098210219, %268 ], [ %34, %64 ] %.6 = phi i32 [ %.0191, %FT_Stream_Seek.exit ], [ 6, %30 ], [ 2, %load_face_in_embedded_rfork.exit ], [ %spec.select, %268 ], [ 11, %64 ] %270 = load ptr, ptr %10, align 8 %271 = load i8, ptr %12, align 1 diff --git a/bench/g2o/optimized/hyper_graph.cpp.ll b/bench/g2o/optimized/hyper_graph.cpp.ll index b62afcacafb..d9d83b79e38 100644 --- a/bench/g2o/optimized/hyper_graph.cpp.ll +++ b/bench/g2o/optimized/hyper_graph.cpp.ll @@ -1135,7 +1135,7 @@ _ZNSt3setIPN3g2o10HyperGraph4EdgeESt4lessIS3_ESaIS3_EEC2ERKS7_.exit: ; preds = % .lr.ph60: ; preds = %_ZNSt3setIPN3g2o10HyperGraph4EdgeESt4lessIS3_ESaIS3_EEC2ERKS7_.exit, %._crit_edge %.02059 = phi i8 [ %.1.lcssa, %._crit_edge ], [ 1, %_ZNSt3setIPN3g2o10HyperGraph4EdgeESt4lessIS3_ESaIS3_EEC2ERKS7_.exit ] - %.sroa.034.058 = phi ptr [ %120, %._crit_edge ], [ %.0.i.i.i.i.i.i, %_ZNSt3setIPN3g2o10HyperGraph4EdgeESt4lessIS3_ESaIS3_EEC2ERKS7_.exit ] + %.sroa.034.058 = phi ptr [ %119, %._crit_edge ], [ %.0.i.i.i.i.i.i, %_ZNSt3setIPN3g2o10HyperGraph4EdgeESt4lessIS3_ESaIS3_EEC2ERKS7_.exit ] %88 = getelementptr inbounds nuw i8, ptr %.sroa.034.058, i64 32 %89 = load ptr, ptr %88, align 8 %90 = getelementptr inbounds nuw i8, ptr %89, i64 8 @@ -1145,15 +1145,15 @@ _ZNSt3setIPN3g2o10HyperGraph4EdgeESt4lessIS3_ESaIS3_EEC2ERKS7_.exit: ; preds = % %.not63 = icmp eq ptr %92, %93 br i1 %.not63, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.lr.ph60, %111 - %94 = phi ptr [ %112, %111 ], [ %93, %.lr.ph60 ] - %95 = phi ptr [ %113, %111 ], [ %92, %.lr.ph60 ] - %.156 = phi i8 [ %.2, %111 ], [ %.02059, %.lr.ph60 ] - %.02155 = phi i64 [ %114, %111 ], [ 0, %.lr.ph60 ] +.lr.ph: ; preds = %.lr.ph60, %110 + %94 = phi ptr [ %111, %110 ], [ %93, %.lr.ph60 ] + %95 = phi ptr [ %112, %110 ], [ %92, %.lr.ph60 ] + %.156 = phi i8 [ %.2, %110 ], [ %.02059, %.lr.ph60 ] + %.02155 = phi i64 [ %113, %110 ], [ 0, %.lr.ph60 ] %96 = getelementptr inbounds ptr, ptr %94, i64 %.02155 %97 = load ptr, ptr %96, align 8 %98 = icmp eq ptr %97, %2 - br i1 %98, label %99, label %111 + br i1 %98, label %99, label %110 99: ; preds = %.lr.ph %100 = trunc i64 %.02155 to i32 @@ -1164,76 +1164,75 @@ _ZNSt3setIPN3g2o10HyperGraph4EdgeESt4lessIS3_ESaIS3_EEC2ERKS7_.exit: ; preds = % to label %105 unwind label %.loopexit 105: ; preds = %99 - %106 = and i8 %.156, 1 - %107 = icmp ne i8 %106, 0 - %108 = select i1 %104, i1 %107, i1 false - %109 = zext i1 %108 to i8 + %106 = icmp ne i8 %.156, 0 + %107 = select i1 %104, i1 %106, i1 false + %108 = zext i1 %107 to i8 %.pre70 = load ptr, ptr %91, align 8 %.pre71 = load ptr, ptr %90, align 8 - br label %111 + br label %110 .loopexit: ; preds = %99 %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %110 + br label %109 -.loopexit.split-lp: ; preds = %122 +.loopexit.split-lp: ; preds = %121 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %110 + br label %109 -110: ; preds = %.loopexit.split-lp, %.loopexit +109: ; preds = %.loopexit.split-lp, %.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @_ZNSt3setIPN3g2o10HyperGraph4EdgeESt4lessIS3_ESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %6) #18 resume { ptr, i32 } %lpad.phi -111: ; preds = %.lr.ph, %105 - %112 = phi ptr [ %.pre71, %105 ], [ %94, %.lr.ph ] - %113 = phi ptr [ %.pre70, %105 ], [ %95, %.lr.ph ] - %.2 = phi i8 [ %109, %105 ], [ %.156, %.lr.ph ] - %114 = add nuw i64 %.02155, 1 - %115 = ptrtoint ptr %113 to i64 - %116 = ptrtoint ptr %112 to i64 - %117 = sub i64 %115, %116 - %118 = ashr exact i64 %117, 3 - %119 = icmp ult i64 %114, %118 - br i1 %119, label %.lr.ph, label %._crit_edge, !llvm.loop !14 - -._crit_edge: ; preds = %111, %.lr.ph60 - %.1.lcssa = phi i8 [ %.02059, %.lr.ph60 ], [ %.2, %111 ] - %120 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.034.058) #21 - %.not = icmp eq ptr %120, %72 +110: ; preds = %.lr.ph, %105 + %111 = phi ptr [ %.pre71, %105 ], [ %94, %.lr.ph ] + %112 = phi ptr [ %.pre70, %105 ], [ %95, %.lr.ph ] + %.2 = phi i8 [ %108, %105 ], [ %.156, %.lr.ph ] + %113 = add nuw i64 %.02155, 1 + %114 = ptrtoint ptr %112 to i64 + %115 = ptrtoint ptr %111 to i64 + %116 = sub i64 %114, %115 + %117 = ashr exact i64 %116, 3 + %118 = icmp ult i64 %113, %117 + br i1 %118, label %.lr.ph, label %._crit_edge, !llvm.loop !14 + +._crit_edge: ; preds = %110, %.lr.ph60 + %.1.lcssa = phi i8 [ %.02059, %.lr.ph60 ], [ %.2, %110 ] + %119 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.034.058) #21 + %.not = icmp eq ptr %119, %72 br i1 %.not, label %._crit_edge61.loopexit, label %.lr.ph60, !llvm.loop !15 ._crit_edge61.loopexit: ; preds = %._crit_edge - %121 = trunc nuw i8 %.1.lcssa to i1 + %120 = trunc nuw i8 %.1.lcssa to i1 br label %._crit_edge61 ._crit_edge61: ; preds = %_ZNSt13unordered_mapIiPN3g2o10HyperGraph6VertexESt4hashIiESt8equal_toIiESaISt4pairIKiS3_EEE4findERS9_.exit32, %._crit_edge61.loopexit, %_ZNSt3setIPN3g2o10HyperGraph4EdgeESt4lessIS3_ESaIS3_EEC2ERKS7_.exit - %.020.lcssa = phi i1 [ true, %_ZNSt3setIPN3g2o10HyperGraph4EdgeESt4lessIS3_ESaIS3_EEC2ERKS7_.exit ], [ %121, %._crit_edge61.loopexit ], [ true, %_ZNSt13unordered_mapIiPN3g2o10HyperGraph6VertexESt4hashIiESt8equal_toIiESaISt4pairIKiS3_EEE4findERS9_.exit32 ] - br i1 %3, label %122, label %127 - -122: ; preds = %._crit_edge61 - %123 = load ptr, ptr %0, align 8 - %124 = getelementptr inbounds i8, ptr %123, i64 16 - %125 = load ptr, ptr %124, align 8 - %126 = invoke noundef zeroext i1 %125(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %2, i1 noundef zeroext false) - to label %127 unwind label %.loopexit.split-lp - -127: ; preds = %122, %._crit_edge61 - %128 = load ptr, ptr %73, align 8 - invoke void @_ZNSt8_Rb_treeIPN3g2o10HyperGraph4EdgeES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %6, ptr noundef %128) - to label %_ZNSt3setIPN3g2o10HyperGraph4EdgeESt4lessIS3_ESaIS3_EED2Ev.exit unwind label %129 - -129: ; preds = %127 - %130 = landingpad { ptr, i32 } + %.020.lcssa = phi i1 [ true, %_ZNSt3setIPN3g2o10HyperGraph4EdgeESt4lessIS3_ESaIS3_EEC2ERKS7_.exit ], [ %120, %._crit_edge61.loopexit ], [ true, %_ZNSt13unordered_mapIiPN3g2o10HyperGraph6VertexESt4hashIiESt8equal_toIiESaISt4pairIKiS3_EEE4findERS9_.exit32 ] + br i1 %3, label %121, label %126 + +121: ; preds = %._crit_edge61 + %122 = load ptr, ptr %0, align 8 + %123 = getelementptr inbounds i8, ptr %122, i64 16 + %124 = load ptr, ptr %123, align 8 + %125 = invoke noundef zeroext i1 %124(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %2, i1 noundef zeroext false) + to label %126 unwind label %.loopexit.split-lp + +126: ; preds = %121, %._crit_edge61 + %127 = load ptr, ptr %73, align 8 + invoke void @_ZNSt8_Rb_treeIPN3g2o10HyperGraph4EdgeES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %6, ptr noundef %127) + to label %_ZNSt3setIPN3g2o10HyperGraph4EdgeESt4lessIS3_ESaIS3_EED2Ev.exit unwind label %128 + +128: ; preds = %126 + %129 = landingpad { ptr, i32 } catch ptr null - %131 = extractvalue { ptr, i32 } %130, 0 - call void @__clang_call_terminate(ptr %131) #19 + %130 = extractvalue { ptr, i32 } %129, 0 + call void @__clang_call_terminate(ptr %130) #19 unreachable -_ZNSt3setIPN3g2o10HyperGraph4EdgeESt4lessIS3_ESaIS3_EED2Ev.exit: ; preds = %.lr.ph.i.i.i.i, %37, %14, %.lr.ph.i.i.i.i24, %67, %46, %51, %19, %127 - %.0 = phi i1 [ %.020.lcssa, %127 ], [ false, %19 ], [ false, %51 ], [ false, %46 ], [ false, %67 ], [ false, %.lr.ph.i.i.i.i24 ], [ false, %14 ], [ false, %37 ], [ false, %.lr.ph.i.i.i.i ] +_ZNSt3setIPN3g2o10HyperGraph4EdgeESt4lessIS3_ESaIS3_EED2Ev.exit: ; preds = %.lr.ph.i.i.i.i, %37, %14, %.lr.ph.i.i.i.i24, %67, %46, %51, %19, %126 + %.0 = phi i1 [ %.020.lcssa, %126 ], [ false, %19 ], [ false, %51 ], [ false, %46 ], [ false, %67 ], [ false, %.lr.ph.i.i.i.i24 ], [ false, %14 ], [ false, %37 ], [ false, %.lr.ph.i.i.i.i ] ret i1 %.0 } diff --git a/bench/git/optimized/cache-tree.ll b/bench/git/optimized/cache-tree.ll index 4a23271ef4a..57f4c3804ee 100644 --- a/bench/git/optimized/cache-tree.ll +++ b/bench/git/optimized/cache-tree.ll @@ -617,12 +617,12 @@ for.body.us.i: ; preds = %for.body.lr.ph.i, % br i1 %tobool.not.us.i, label %for.inc.us.i, label %if.then.us.i if.then.us.i: ; preds = %for.body.us.i - %inc.us.i = add i32 %funny.035.us.i, 1 - %cmp4.us.i = icmp ugt i32 %inc.us.i, 10 - %6 = load ptr, ptr @stderr, align 8 + %cmp4.us.i = icmp ugt i32 %funny.035.us.i, 9 br i1 %cmp4.us.i, label %for.end.thread.i, label %if.end6.us.i if.end6.us.i: ; preds = %if.then.us.i + %inc.us.i = add nuw nsw i32 %funny.035.us.i, 1 + %6 = load ptr, ptr @stderr, align 8 %name.us.i = getelementptr inbounds i8, ptr %3, i64 108 %oid.us.i = getelementptr inbounds i8, ptr %3, i64 72 %call7.us.i = tail call ptr @oid_to_hex(ptr noundef nonnull %oid.us.i) #14 @@ -654,7 +654,8 @@ for.body.i: ; preds = %for.inc.i, %for.bod br i1 %tobool.not.i, label %for.inc.i, label %return for.end.thread.i: ; preds = %if.then.us.i - %14 = tail call i64 @fwrite(ptr nonnull @.str.15, i64 4, i64 1, ptr %6) #17 + %14 = load ptr, ptr @stderr, align 8 + %15 = tail call i64 @fwrite(ptr nonnull @.str.15, i64 4, i64 1, ptr %14) #17 br label %return for.inc.i: ; preds = %for.body.i @@ -663,38 +664,38 @@ for.inc.i: ; preds = %for.body.i br i1 %exitcond.not, label %for.cond14.preheader.i, label %for.body.i, !llvm.loop !9 for.end.i: ; preds = %for.inc.us.i - %15 = icmp eq i32 %funny.2.us.i, 0 - br i1 %15, label %for.cond14.preheader.i, label %return + %16 = icmp eq i32 %funny.2.us.i, 0 + br i1 %16, label %for.cond14.preheader.i, label %return for.cond14.preheader.i: ; preds = %for.inc.i, %for.end.i - %16 = phi i32 [ %7, %for.end.i ], [ %0, %for.inc.i ] - %cmp1637.i = icmp ugt i32 %16, 1 + %17 = phi i32 [ %7, %for.end.i ], [ %0, %for.inc.i ] + %cmp1637.i = icmp ugt i32 %17, 1 br i1 %cmp1637.i, label %for.body17.i, label %if.end for.body17.i: ; preds = %for.cond14.preheader.i, %for.inc49.i - %17 = phi i32 [ %26, %for.inc49.i ], [ %16, %for.cond14.preheader.i ] + %18 = phi i32 [ %27, %for.inc49.i ], [ %17, %for.cond14.preheader.i ] %indvars.iv49.i = phi i64 [ %indvars.iv.next50.i, %for.inc49.i ], [ 0, %for.cond14.preheader.i ] %indvars.iv47.i = phi i64 [ %indvars.iv.next48.i, %for.inc49.i ], [ 1, %for.cond14.preheader.i ] %funny.338.i = phi i32 [ %funny.5.i, %for.inc49.i ], [ 0, %for.cond14.preheader.i ] - %18 = load ptr, ptr %istate, align 8 - %arrayidx20.i = getelementptr inbounds ptr, ptr %18, i64 %indvars.iv49.i - %19 = load ptr, ptr %arrayidx20.i, align 8 - %arrayidx24.i = getelementptr inbounds ptr, ptr %18, i64 %indvars.iv47.i - %20 = load ptr, ptr %arrayidx24.i, align 8 - %name25.i = getelementptr inbounds i8, ptr %19, i64 108 - %name27.i = getelementptr inbounds i8, ptr %20, i64 108 - %ce_namelen.i = getelementptr inbounds i8, ptr %19, i64 64 - %21 = load i32, ptr %ce_namelen.i, align 8 - %ce_namelen29.i = getelementptr inbounds i8, ptr %20, i64 64 - %22 = load i32, ptr %ce_namelen29.i, align 8 - %cmp30.i = icmp ult i32 %21, %22 + %19 = load ptr, ptr %istate, align 8 + %arrayidx20.i = getelementptr inbounds ptr, ptr %19, i64 %indvars.iv49.i + %20 = load ptr, ptr %arrayidx20.i, align 8 + %arrayidx24.i = getelementptr inbounds ptr, ptr %19, i64 %indvars.iv47.i + %21 = load ptr, ptr %arrayidx24.i, align 8 + %name25.i = getelementptr inbounds i8, ptr %20, i64 108 + %name27.i = getelementptr inbounds i8, ptr %21, i64 108 + %ce_namelen.i = getelementptr inbounds i8, ptr %20, i64 64 + %22 = load i32, ptr %ce_namelen.i, align 8 + %ce_namelen29.i = getelementptr inbounds i8, ptr %21, i64 64 + %23 = load i32, ptr %ce_namelen29.i, align 8 + %cmp30.i = icmp ult i32 %22, %23 br i1 %cmp30.i, label %land.lhs.true.i, label %for.inc49.i land.lhs.true.i: ; preds = %for.body17.i - %idxprom31.i = sext i32 %21 to i64 + %idxprom31.i = sext i32 %22 to i64 %arrayidx32.i = getelementptr inbounds i8, ptr %name27.i, i64 %idxprom31.i - %23 = load i8, ptr %arrayidx32.i, align 1 - %cmp33.i = icmp eq i8 %23, 47 + %24 = load i8, ptr %arrayidx32.i, align 1 + %cmp33.i = icmp eq i8 %24, 47 br i1 %cmp33.i, label %land.lhs.true35.i, label %for.inc49.i land.lhs.true35.i: ; preds = %land.lhs.true.i @@ -705,24 +706,24 @@ land.lhs.true35.i: ; preds = %land.lhs.true.i if.then40.i: ; preds = %land.lhs.true35.i %inc41.i = add i32 %funny.338.i, 1 %cmp42.i = icmp ugt i32 %inc41.i, 10 - %24 = load ptr, ptr @stderr, align 8 + %25 = load ptr, ptr @stderr, align 8 br i1 %cmp42.i, label %for.end51.thread.i, label %if.end46.i for.end51.thread.i: ; preds = %if.then40.i - %25 = tail call i64 @fwrite(ptr nonnull @.str.15, i64 4, i64 1, ptr %24) #17 + %26 = tail call i64 @fwrite(ptr nonnull @.str.15, i64 4, i64 1, ptr %25) #17 br label %return if.end46.i: ; preds = %if.then40.i - %call47.i = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %24, ptr noundef nonnull @.str.17, ptr noundef nonnull %name25.i, ptr noundef nonnull %name27.i) #17 + %call47.i = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %25, ptr noundef nonnull @.str.17, ptr noundef nonnull %name25.i, ptr noundef nonnull %name27.i) #17 %.pre54.i = load i32, ptr %cache_nr.i, align 4 br label %for.inc49.i for.inc49.i: ; preds = %if.end46.i, %land.lhs.true35.i, %land.lhs.true.i, %for.body17.i - %26 = phi i32 [ %.pre54.i, %if.end46.i ], [ %17, %land.lhs.true35.i ], [ %17, %land.lhs.true.i ], [ %17, %for.body17.i ] + %27 = phi i32 [ %.pre54.i, %if.end46.i ], [ %18, %land.lhs.true35.i ], [ %18, %land.lhs.true.i ], [ %18, %for.body17.i ] %funny.5.i = phi i32 [ %inc41.i, %if.end46.i ], [ %funny.338.i, %land.lhs.true35.i ], [ %funny.338.i, %land.lhs.true.i ], [ %funny.338.i, %for.body17.i ] %indvars.iv.next48.i = add nuw nsw i64 %indvars.iv47.i, 1 - %27 = zext i32 %26 to i64 - %cmp16.i = icmp samesign ult i64 %indvars.iv.next48.i, %27 + %28 = zext i32 %27 to i64 + %cmp16.i = icmp samesign ult i64 %indvars.iv.next48.i, %28 %indvars.iv.next50.i = add nuw nsw i64 %indvars.iv49.i, 1 br i1 %cmp16.i, label %for.body17.i, label %verify_cache.exit, !llvm.loop !10 @@ -732,8 +733,8 @@ verify_cache.exit: ; preds = %for.inc49.i if.end: ; preds = %entry, %for.cond14.preheader.i, %verify_cache.exit %cache_tree = getelementptr inbounds i8, ptr %istate, i64 32 - %28 = load ptr, ptr %cache_tree, align 8 - %tobool1.not = icmp eq ptr %28, null + %29 = load ptr, ptr %cache_tree, align 8 + %tobool1.not = icmp eq ptr %29, null br i1 %tobool1.not, label %if.then2, label %if.end5 if.then2: ; preds = %if.end @@ -748,8 +749,8 @@ if.end5: ; preds = %if.then2, %if.end br i1 %tobool6.not, label %land.lhs.true, label %if.end10 land.lhs.true: ; preds = %if.end5 - %29 = load ptr, ptr @the_repository, align 8 - %call7 = tail call i32 @repo_has_promisor_remote(ptr noundef %29) #14 + %30 = load ptr, ptr @the_repository, align 8 + %call7 = tail call i32 @repo_has_promisor_remote(ptr noundef %30) #14 %tobool8.not = icmp eq i32 %call7, 0 br i1 %tobool8.not, label %if.end10, label %if.then9 @@ -759,18 +760,18 @@ if.then9: ; preds = %land.lhs.true if.end10: ; preds = %if.then9, %land.lhs.true, %if.end5 %call11 = tail call i64 @trace_performance_enter() #14 - %30 = load ptr, ptr @the_repository, align 8 - tail call void (ptr, i32, ptr, ptr, ptr, ...) @trace2_region_enter_fl(ptr noundef nonnull @.str, i32 noundef 482, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef %30) #14 + %31 = load ptr, ptr @the_repository, align 8 + tail call void (ptr, i32, ptr, ptr, ptr, ...) @trace2_region_enter_fl(ptr noundef nonnull @.str, i32 noundef 482, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef %31) #14 tail call void @begin_odb_transaction() #14 - %31 = load ptr, ptr %cache_tree, align 8 - %32 = load ptr, ptr %istate, align 8 - %33 = load i32, ptr %cache_nr.i, align 4 - %call13 = call fastcc i32 @update_one(ptr noundef %31, ptr noundef %32, i32 noundef %33, ptr noundef nonnull @.str.3, i32 noundef 0, ptr noundef %skip, i32 noundef %flags) + %32 = load ptr, ptr %cache_tree, align 8 + %33 = load ptr, ptr %istate, align 8 + %34 = load i32, ptr %cache_nr.i, align 4 + %call13 = call fastcc i32 @update_one(ptr noundef %32, ptr noundef %33, i32 noundef %34, ptr noundef nonnull @.str.3, i32 noundef 0, ptr noundef %skip, i32 noundef %flags) tail call void @end_odb_transaction() #14 - %34 = load ptr, ptr @the_repository, align 8 - tail call void (ptr, i32, ptr, ptr, ptr, ...) @trace2_region_leave_fl(ptr noundef nonnull @.str, i32 noundef 487, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef %34) #14 - %35 = load i32, ptr getelementptr inbounds (i8, ptr @trace_perf_key, i64 8), align 8 - %tobool.not.i13 = icmp eq i32 %35, 0 + %35 = load ptr, ptr @the_repository, align 8 + tail call void (ptr, i32, ptr, ptr, ptr, ...) @trace2_region_leave_fl(ptr noundef nonnull @.str, i32 noundef 487, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef %35) #14 + %36 = load i32, ptr getelementptr inbounds (i8, ptr @trace_perf_key, i64 8), align 8 + %tobool.not.i13 = icmp eq i32 %36, 0 %bf.load.i = load i8, ptr getelementptr inbounds (i8, ptr @trace_perf_key, i64 12), align 4 %bf.clear.i = and i8 %bf.load.i, 1 %tobool15.not20 = icmp ne i8 %bf.clear.i, 0 @@ -788,8 +789,8 @@ do.end: ; preds = %if.end10, %if.then1 if.end20: ; preds = %do.end %cache_changed = getelementptr inbounds i8, ptr %istate, i64 20 - %36 = load i32, ptr %cache_changed, align 4 - %or = or i32 %36, 32 + %37 = load i32, ptr %cache_changed, align 4 + %or = or i32 %37, 32 store i32 %or, ptr %cache_changed, align 4 br label %return diff --git a/bench/git/optimized/grep.ll b/bench/git/optimized/grep.ll index 23eb8b97b2a..68a42c5c338 100644 --- a/bench/git/optimized/grep.ll +++ b/bench/git/optimized/grep.ll @@ -3600,45 +3600,39 @@ if.end: ; preds = %if.then, %entry br label %while.cond.outer while.cond.outer: ; preds = %while.cond.outer.backedge, %if.end - %match.0.ph = phi i32 [ 0, %if.end ], [ %match.1, %while.cond.outer.backedge ] %hit.0.ph = phi i32 [ 0, %if.end ], [ %hit.2, %while.cond.outer.backedge ] - %6 = icmp eq i32 %match.0.ph, 2 br label %while.cond while.cond: ; preds = %while.cond.outer, %strbuf_setlen.exit - %match.0 = phi i1 [ false, %strbuf_setlen.exit ], [ %6, %while.cond.outer ] %call = call i32 @tree_entry(ptr noundef nonnull %tree, ptr noundef nonnull %entry2) #13 %tobool6.not = icmp eq i32 %call, 0 br i1 %tobool6.not, label %while.end, label %while.body while.body: ; preds = %while.cond %entry2.val = load i32, ptr %5, align 8 - br i1 %match.0, label %if.end20, label %if.then9 - -if.then9: ; preds = %while.body - %7 = load ptr, ptr %buf, align 8 - %add.ptr = getelementptr inbounds i8, ptr %7, i64 %idx.ext + %6 = load ptr, ptr %buf, align 8 + %add.ptr = getelementptr inbounds i8, ptr %6, i64 %idx.ext %call.i32 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %add.ptr) #15 call void @strbuf_add(ptr noundef nonnull %name, ptr noundef %add.ptr, i64 noundef %call.i32) #13 - %8 = load ptr, ptr %index, align 8 - %call10 = call i32 @tree_entry_interesting(ptr noundef %8, ptr noundef nonnull %entry2, ptr noundef nonnull %name, ptr noundef nonnull %pathspec) #13 - %9 = load i64, ptr %name, align 8 - %spec.select.i = call i64 @llvm.usub.sat.i64(i64 %9, i64 1) + %7 = load ptr, ptr %index, align 8 + %call10 = call i32 @tree_entry_interesting(ptr noundef %7, ptr noundef nonnull %entry2, ptr noundef nonnull %name, ptr noundef nonnull %pathspec) #13 + %8 = load i64, ptr %name, align 8 + %spec.select.i = call i64 @llvm.usub.sat.i64(i64 %8, i64 1) %cmp.i = icmp ugt i64 %name_base_len.0, %spec.select.i br i1 %cmp.i, label %if.then.i, label %if.end.i -if.then.i: ; preds = %if.then9 +if.then.i: ; preds = %while.body call void (ptr, i32, ptr, ...) @BUG_fl(ptr noundef nonnull @.str.133, i32 noundef 167, ptr noundef nonnull @.str.134) #14 unreachable -if.end.i: ; preds = %if.then9 +if.end.i: ; preds = %while.body store i64 %name_base_len.0, ptr %len2.i, align 8 - %10 = load ptr, ptr %buf.i, align 8 - %cmp3.not.i = icmp eq ptr %10, @strbuf_slopbuf + %9 = load ptr, ptr %buf.i, align 8 + %cmp3.not.i = icmp eq ptr %9, @strbuf_slopbuf br i1 %cmp3.not.i, label %strbuf_setlen.exit, label %if.then4.i if.then4.i: ; preds = %if.end.i - %arrayidx.i = getelementptr inbounds i8, ptr %10, i64 %name_base_len.0 + %arrayidx.i = getelementptr inbounds i8, ptr %9, i64 %name_base_len.0 store i8 0, ptr %arrayidx.i, align 1 br label %strbuf_setlen.exit @@ -3648,13 +3642,12 @@ strbuf_setlen.exit: ; preds = %if.end.i, %if.then4 i32 0, label %while.cond ] -if.end20: ; preds = %strbuf_setlen.exit, %while.body - %match.1 = phi i32 [ 2, %while.body ], [ %call10, %strbuf_setlen.exit ] - %11 = load ptr, ptr %path, align 8 +if.end20: ; preds = %strbuf_setlen.exit + %10 = load ptr, ptr %path, align 8 %conv21 = sext i32 %entry2.val to i64 - call void @strbuf_add(ptr noundef nonnull %base, ptr noundef %11, i64 noundef %conv21) #13 - %12 = load i32, ptr %mode, align 4 - %and = and i32 %12, 61440 + call void @strbuf_add(ptr noundef nonnull %base, ptr noundef %10, i64 noundef %conv21) #13 + %11 = load i32, ptr %mode, align 4 + %and = and i32 %11, 61440 %trunc = trunc nuw i32 %and to i16 switch i16 %trunc, label %if.else46 [ i16 -32768, label %if.then24 @@ -3662,19 +3655,19 @@ if.end20: ; preds = %strbuf_setlen.exit, ] if.then24: ; preds = %if.end20 - %13 = load ptr, ptr %buf, align 8 - %add.ptr29 = getelementptr inbounds i8, ptr %13, i64 %idx.ext + %12 = load ptr, ptr %buf, align 8 + %add.ptr29 = getelementptr inbounds i8, ptr %12, i64 %idx.ext %cond = select i1 %tobool26.not, ptr null, ptr %add.ptr29 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %pathbuf.i) call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %gs.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %pathbuf.i, ptr noundef nonnull align 8 dereferenceable(24) @__const.grep_submodule.base, i64 24, i1 false) - call fastcc void @grep_source_name(ptr noundef nonnull %opt, ptr noundef %13, i32 noundef %tn_len, ptr noundef %pathbuf.i) - %14 = load ptr, ptr %buf.i33, align 8 - %15 = load ptr, ptr %repo1, align 8 - call void @grep_source_init_oid(ptr noundef nonnull %gs.i, ptr noundef %14, ptr noundef %cond, ptr noundef nonnull %entry2, ptr noundef %15) #13 + call fastcc void @grep_source_name(ptr noundef nonnull %opt, ptr noundef %12, i32 noundef %tn_len, ptr noundef %pathbuf.i) + %13 = load ptr, ptr %buf.i33, align 8 + %14 = load ptr, ptr %repo1, align 8 + call void @grep_source_init_oid(ptr noundef nonnull %gs.i, ptr noundef %13, ptr noundef %cond, ptr noundef nonnull %entry2, ptr noundef %14) #13 call void @strbuf_release(ptr noundef nonnull %pathbuf.i) #13 - %16 = load i32, ptr @num_threads, align 4 - %cmp.i34 = icmp sgt i32 %16, 1 + %15 = load i32, ptr @num_threads, align 4 + %cmp.i34 = icmp sgt i32 %15, 1 br i1 %cmp.i34, label %if.then.i36, label %if.else.i if.then.i36: ; preds = %if.then24 @@ -3694,8 +3687,8 @@ grep_oid.exit: ; preds = %if.then.i36, %if.el br label %if.end62 if.then35: ; preds = %if.end20 - %17 = load ptr, ptr @the_repository, align 8 - %call37 = call ptr @repo_read_object_file(ptr noundef %17, ptr noundef nonnull %entry2, ptr noundef nonnull %type, ptr noundef nonnull %size) #13 + %16 = load ptr, ptr @the_repository, align 8 + %call37 = call ptr @repo_read_object_file(ptr noundef %16, ptr noundef nonnull %entry2, ptr noundef nonnull %type, ptr noundef nonnull %size) #13 %tobool38.not = icmp eq ptr %call37, null br i1 %tobool38.not, label %if.then39, label %if.end43 @@ -3706,14 +3699,14 @@ if.then39: ; preds = %if.then35 unreachable if.end43: ; preds = %if.then35 - %18 = load i64, ptr %base, align 8 - %tobool.not.i.i = icmp eq i64 %18, 0 + %17 = load i64, ptr %base, align 8 + %tobool.not.i.i = icmp eq i64 %17, 0 br i1 %tobool.not.i.i, label %if.then.i40, label %strbuf_avail.exit.i strbuf_avail.exit.i: ; preds = %if.end43 - %19 = load i64, ptr %len, align 8 - %.neg.i = add i64 %19, 1 - %tobool.not.i = icmp eq i64 %18, %.neg.i + %18 = load i64, ptr %len, align 8 + %.neg.i = add i64 %18, 1 + %tobool.not.i = icmp eq i64 %17, %.neg.i br i1 %tobool.not.i, label %if.then.i40, label %strbuf_addch.exit if.then.i40: ; preds = %strbuf_avail.exit.i, %if.end43 @@ -3724,40 +3717,40 @@ if.then.i40: ; preds = %strbuf_avail.exit.i strbuf_addch.exit: ; preds = %strbuf_avail.exit.i, %if.then.i40 %inc.pre-phi.i = phi i64 [ %.pre8.i, %if.then.i40 ], [ %.neg.i, %strbuf_avail.exit.i ] - %20 = phi i64 [ %.pre.i, %if.then.i40 ], [ %19, %strbuf_avail.exit.i ] - %21 = load ptr, ptr %buf, align 8 + %19 = phi i64 [ %.pre.i, %if.then.i40 ], [ %18, %strbuf_avail.exit.i ] + %20 = load ptr, ptr %buf, align 8 store i64 %inc.pre-phi.i, ptr %len, align 8 - %arrayidx.i39 = getelementptr inbounds i8, ptr %21, i64 %20 + %arrayidx.i39 = getelementptr inbounds i8, ptr %20, i64 %19 store i8 47, ptr %arrayidx.i39, align 1 - %22 = load ptr, ptr %buf, align 8 - %23 = load i64, ptr %len, align 8 - %arrayidx3.i = getelementptr inbounds i8, ptr %22, i64 %23 + %21 = load ptr, ptr %buf, align 8 + %22 = load i64, ptr %len, align 8 + %arrayidx3.i = getelementptr inbounds i8, ptr %21, i64 %22 store i8 0, ptr %arrayidx3.i, align 1 - %24 = load i64, ptr %size, align 8 - call void @init_tree_desc(ptr noundef nonnull %sub, ptr noundef nonnull %call37, i64 noundef %24) #13 + %23 = load i64, ptr %size, align 8 + call void @init_tree_desc(ptr noundef nonnull %sub, ptr noundef nonnull %call37, i64 noundef %23) #13 %call44 = call fastcc i32 @grep_tree(ptr noundef %opt, ptr noundef %pathspec, ptr noundef %sub, ptr noundef %base, i32 noundef %tn_len, i32 noundef %check_attr) %or45 = or i32 %call44, %hit.0.ph call void @free(ptr noundef nonnull %call37) #13 br label %if.end62 if.else46: ; preds = %if.end20 - %25 = load i32, ptr @recurse_submodules, align 4 - %tobool47.not = icmp ne i32 %25, 0 + %24 = load i32, ptr @recurse_submodules, align 4 + %tobool47.not = icmp ne i32 %24, 0 %cmp50 = icmp eq i32 %and, 57344 %or.cond = and i1 %cmp50, %tobool47.not br i1 %or.cond, label %if.then52, label %if.end62 if.then52: ; preds = %if.else46 - %26 = load ptr, ptr %buf, align 8 - %add.ptr57 = getelementptr inbounds i8, ptr %26, i64 %idx.ext - %call58 = call fastcc i32 @grep_submodule(ptr noundef %opt, ptr noundef %pathspec, ptr noundef nonnull %entry2, ptr noundef %26, ptr noundef %add.ptr57, i32 noundef 1) + %25 = load ptr, ptr %buf, align 8 + %add.ptr57 = getelementptr inbounds i8, ptr %25, i64 %idx.ext + %call58 = call fastcc i32 @grep_submodule(ptr noundef %opt, ptr noundef %pathspec, ptr noundef nonnull %entry2, ptr noundef %25, ptr noundef %add.ptr57, i32 noundef 1) %or59 = or i32 %call58, %hit.0.ph br label %if.end62 if.end62: ; preds = %strbuf_addch.exit, %if.then52, %if.else46, %grep_oid.exit %hit.2 = phi i32 [ %or, %grep_oid.exit ], [ %or45, %strbuf_addch.exit ], [ %or59, %if.then52 ], [ %hit.0.ph, %if.else46 ] - %27 = load i64, ptr %base, align 8 - %spec.select.i41 = call i64 @llvm.usub.sat.i64(i64 %27, i64 1) + %26 = load i64, ptr %base, align 8 + %spec.select.i41 = call i64 @llvm.usub.sat.i64(i64 %26, i64 1) %cmp.i42 = icmp ugt i64 %conv63, %spec.select.i41 br i1 %cmp.i42, label %if.then.i49, label %if.end.i43 @@ -3767,12 +3760,12 @@ if.then.i49: ; preds = %if.end62 if.end.i43: ; preds = %if.end62 store i64 %conv63, ptr %len, align 8 - %28 = load ptr, ptr %buf, align 8 - %cmp3.not.i46 = icmp eq ptr %28, @strbuf_slopbuf + %27 = load ptr, ptr %buf, align 8 + %cmp3.not.i46 = icmp eq ptr %27, @strbuf_slopbuf br i1 %cmp3.not.i46, label %strbuf_setlen.exit50, label %if.then4.i47 if.then4.i47: ; preds = %if.end.i43 - %arrayidx.i48 = getelementptr inbounds i8, ptr %28, i64 %conv63 + %arrayidx.i48 = getelementptr inbounds i8, ptr %27, i64 %conv63 store i8 0, ptr %arrayidx.i48, align 1 br label %strbuf_setlen.exit50 @@ -3781,8 +3774,8 @@ strbuf_setlen.exit50: ; preds = %if.end.i43, %if.the br i1 %tobool64.not, label %while.cond.outer.backedge, label %land.lhs.true65 land.lhs.true65: ; preds = %strbuf_setlen.exit50 - %29 = load i32, ptr %status_only, align 8 - %tobool66.not = icmp eq i32 %29, 0 + %28 = load i32, ptr %status_only, align 8 + %tobool66.not = icmp eq i32 %28, 0 br i1 %tobool66.not, label %while.cond.outer.backedge, label %while.end while.cond.outer.backedge: ; preds = %land.lhs.true65, %strbuf_setlen.exit50 diff --git a/bench/graphviz/optimized/lu.c.ll b/bench/graphviz/optimized/lu.c.ll index 7c9522f8dee..c42f2e8822c 100644 --- a/bench/graphviz/optimized/lu.c.ll +++ b/bench/graphviz/optimized/lu.c.ll @@ -145,75 +145,74 @@ define range(i32 0, 2) i32 @lu_decompose(ptr nocapture noundef readonly %0, i32 50: ; preds = %48 %51 = getelementptr inbounds i32, ptr %.pre133.pre, i64 %indvars.iv111 %52 = load i32, ptr %51, align 4 - %53 = sext i32 %.273 to i64 - %54 = getelementptr inbounds i32, ptr %.pre133.pre, i64 %53 - %55 = load i32, ptr %54, align 4 - store i32 %55, ptr %51, align 4 - store i32 %52, ptr %54, align 4 + %53 = getelementptr inbounds i32, ptr %.pre133.pre, i64 %49 + %54 = load i32, ptr %53, align 4 + store i32 %54, ptr %51, align 4 + store i32 %52, ptr %53, align 4 br label %.lr.ph95.us.preheader .lr.ph95.us.preheader: ; preds = %48, %50 - %56 = getelementptr inbounds i32, ptr %.pre133.pre, i64 %indvars.iv111 - %57 = load i32, ptr %56, align 4 - %58 = sext i32 %57 to i64 - %59 = getelementptr inbounds ptr, ptr %.pre.pre, i64 %58 - %60 = load ptr, ptr %59, align 8 - %61 = getelementptr inbounds double, ptr %60, i64 %indvars.iv111 - %62 = load double, ptr %61, align 8 + %55 = getelementptr inbounds i32, ptr %.pre133.pre, i64 %indvars.iv111 + %56 = load i32, ptr %55, align 4 + %57 = sext i32 %56 to i64 + %58 = getelementptr inbounds ptr, ptr %.pre.pre, i64 %57 + %59 = load ptr, ptr %58, align 8 + %60 = getelementptr inbounds double, ptr %59, i64 %indvars.iv111 + %61 = load double, ptr %60, align 8 %indvars.iv.next112 = add nuw nsw i64 %indvars.iv111, 1 br label %.lr.ph95.us .lr.ph95.us: ; preds = %.lr.ph95.us.preheader, %._crit_edge96.us %indvars.iv125 = phi i64 [ %indvars.iv118, %.lr.ph95.us.preheader ], [ %indvars.iv.next126, %._crit_edge96.us ] - %63 = getelementptr inbounds i32, ptr %.pre133.pre, i64 %indvars.iv125 - %64 = load i32, ptr %63, align 4 - %65 = sext i32 %64 to i64 - %66 = getelementptr inbounds ptr, ptr %.pre.pre, i64 %65 - %67 = load ptr, ptr %66, align 8 - %68 = getelementptr inbounds double, ptr %67, i64 %indvars.iv111 - %69 = load double, ptr %68, align 8 - %70 = fdiv double %69, %62 - store double %70, ptr %68, align 8 - %71 = fneg double %70 - br label %72 - -72: ; preds = %.lr.ph95.us, %72 - %indvars.iv120 = phi i64 [ %indvars.iv118, %.lr.ph95.us ], [ %indvars.iv.next121, %72 ] - %73 = load i32, ptr %56, align 4 - %74 = sext i32 %73 to i64 - %75 = getelementptr inbounds ptr, ptr %.pre.pre, i64 %74 - %76 = load ptr, ptr %75, align 8 - %77 = getelementptr inbounds double, ptr %76, i64 %indvars.iv120 - %78 = load double, ptr %77, align 8 - %79 = load i32, ptr %63, align 4 - %80 = sext i32 %79 to i64 - %81 = getelementptr inbounds ptr, ptr %.pre.pre, i64 %80 - %82 = load ptr, ptr %81, align 8 - %83 = getelementptr inbounds double, ptr %82, i64 %indvars.iv120 - %84 = load double, ptr %83, align 8 - %85 = tail call double @llvm.fmuladd.f64(double %71, double %78, double %84) - store double %85, ptr %83, align 8 + %62 = getelementptr inbounds i32, ptr %.pre133.pre, i64 %indvars.iv125 + %63 = load i32, ptr %62, align 4 + %64 = sext i32 %63 to i64 + %65 = getelementptr inbounds ptr, ptr %.pre.pre, i64 %64 + %66 = load ptr, ptr %65, align 8 + %67 = getelementptr inbounds double, ptr %66, i64 %indvars.iv111 + %68 = load double, ptr %67, align 8 + %69 = fdiv double %68, %61 + store double %69, ptr %67, align 8 + %70 = fneg double %69 + br label %71 + +71: ; preds = %.lr.ph95.us, %71 + %indvars.iv120 = phi i64 [ %indvars.iv118, %.lr.ph95.us ], [ %indvars.iv.next121, %71 ] + %72 = load i32, ptr %55, align 4 + %73 = sext i32 %72 to i64 + %74 = getelementptr inbounds ptr, ptr %.pre.pre, i64 %73 + %75 = load ptr, ptr %74, align 8 + %76 = getelementptr inbounds double, ptr %75, i64 %indvars.iv120 + %77 = load double, ptr %76, align 8 + %78 = load i32, ptr %62, align 4 + %79 = sext i32 %78 to i64 + %80 = getelementptr inbounds ptr, ptr %.pre.pre, i64 %79 + %81 = load ptr, ptr %80, align 8 + %82 = getelementptr inbounds double, ptr %81, i64 %indvars.iv120 + %83 = load double, ptr %82, align 8 + %84 = tail call double @llvm.fmuladd.f64(double %70, double %77, double %83) + store double %84, ptr %82, align 8 %indvars.iv.next121 = add nuw nsw i64 %indvars.iv120, 1 %exitcond124.not = icmp eq i64 %indvars.iv.next121, %wide.trip.count128 - br i1 %exitcond124.not, label %._crit_edge96.us, label %72 + br i1 %exitcond124.not, label %._crit_edge96.us, label %71 -._crit_edge96.us: ; preds = %72 +._crit_edge96.us: ; preds = %71 %indvars.iv.next126 = add nuw nsw i64 %indvars.iv125, 1 %exitcond129.not = icmp eq i64 %indvars.iv.next126, %wide.trip.count128 br i1 %exitcond129.not, label %.loopexit, label %.lr.ph95.us ._crit_edge102: ; preds = %.loopexit, %.preheader81.thread, %.preheader81 - %86 = phi i32 [ %13, %.preheader81.thread ], [ %30, %.preheader81 ], [ %30, %.loopexit ] - %87 = sext i32 %86 to i64 - %88 = getelementptr inbounds i32, ptr %.pre133.pre, i64 %87 - %89 = load i32, ptr %88, align 4 - %90 = sext i32 %89 to i64 - %91 = getelementptr inbounds ptr, ptr %.pre.pre, i64 %90 - %92 = load ptr, ptr %91, align 8 - %93 = getelementptr inbounds double, ptr %92, i64 %87 - %94 = load double, ptr %93, align 8 - %95 = fcmp une double %94, 0.000000e+00 - %. = zext i1 %95 to i32 + %85 = phi i32 [ %13, %.preheader81.thread ], [ %30, %.preheader81 ], [ %30, %.loopexit ] + %86 = sext i32 %85 to i64 + %87 = getelementptr inbounds i32, ptr %.pre133.pre, i64 %86 + %88 = load i32, ptr %87, align 4 + %89 = sext i32 %88 to i64 + %90 = getelementptr inbounds ptr, ptr %.pre.pre, i64 %89 + %91 = load ptr, ptr %90, align 8 + %92 = getelementptr inbounds double, ptr %91, i64 %86 + %93 = load double, ptr %92, align 8 + %94 = fcmp une double %93, 0.000000e+00 + %. = zext i1 %94 to i32 br label %.loopexit82 .loopexit82: ; preds = %.preheader, %._crit_edge, %._crit_edge102, %.split.us diff --git a/bench/graphviz/optimized/xlayout.c.ll b/bench/graphviz/optimized/xlayout.c.ll index 0785683388d..ecdcec2634a 100644 --- a/bench/graphviz/optimized/xlayout.c.ll +++ b/bench/graphviz/optimized/xlayout.c.ll @@ -82,7 +82,7 @@ define void @fdp_xLayout(ptr noundef %0, ptr nocapture noundef readonly %1) loca 30: ; preds = %27, %25 %.not26 = icmp eq i32 %.020, 0 - br i1 %.not26, label %491, label %31 + br i1 %.not26, label %x_layout.exit, label %31 31: ; preds = %30 %32 = tail call i32 @agnnodes(ptr noundef %0) #10 @@ -238,11 +238,11 @@ cntOverlaps.exit.i: ; preds = %._crit_edge.i.i %120 = add nsw i32 %32, -1 %121 = mul nsw i32 %120, %32 %122 = sitofp i32 %121 to double + %umax = tail call i32 @llvm.umax.i32(i32 %.020, i32 1) br label %123 123: ; preds = %adjust.exit.thread.i, %.lr.ph59.i %.02858.i = phi i32 [ 0, %.lr.ph59.i ], [ %486, %adjust.exit.thread.i ] - %.02957.i = phi i32 [ %.1.lcssa.i.i, %.lr.ph59.i ], [ %.2.i, %adjust.exit.thread.i ] %.sroa.3.056.i = phi double [ %.sroa.3.0.copyload.i, %.lr.ph59.i ], [ %487, %adjust.exit.thread.i ] store double %.sroa.3.056.i, ptr @xParams.2, align 8 store i32 %.sroa.0.0.copyload.i, ptr @xParams.0, align 8 @@ -805,23 +805,16 @@ adjust.exit.thread43.i: ; preds = %481, %443 br i1 %485, label %.lr.ph.i, label %adjust.exit.thread.i adjust.exit.thread.i: ; preds = %.lr.ph.i, %adjust.exit.thread43.i, %.lr.ph.i.preheader, %xinit_params.exit.i - %.2.i = phi i32 [ %.02957.i, %xinit_params.exit.i ], [ %.02957.i, %.lr.ph.i.preheader ], [ %.1.lcssa.i37.i, %adjust.exit.thread43.i ], [ %.1.lcssa.i37.i, %.lr.ph.i ] %486 = add nuw nsw i32 %.02858.i, 1 %487 = fadd double %.sroa.3.0.copyload.i, %.sroa.3.056.i - %488 = icmp ne i32 %.2.i, 0 - %489 = icmp samesign ult i32 %486, %.020 - %490 = select i1 %488, i1 %489, i1 false - br i1 %490, label %123, label %x_layout.exit + %exitcond.not = icmp eq i32 %486, %umax + br i1 %exitcond.not, label %x_layout.exit, label %123 -x_layout.exit: ; preds = %adjust.exit.thread.i - %.not27 = icmp eq i32 %.2.i, 0 - br i1 %.not27, label %x_layout.exit.thread, label %491 - -491: ; preds = %x_layout.exit, %30 - %492 = tail call i32 @removeOverlapAs(ptr noundef %0, ptr noundef %.0) #10 +x_layout.exit: ; preds = %adjust.exit.thread.i, %30 + %488 = tail call i32 @removeOverlapAs(ptr noundef %0, ptr noundef %.0) #10 br label %x_layout.exit.thread -x_layout.exit.thread: ; preds = %._crit_edge.i36.i, %._crit_edge86.i.i, %41, %cntOverlaps.exit.i, %x_layout.exit, %491 +x_layout.exit.thread: ; preds = %._crit_edge.i36.i, %._crit_edge86.i.i, %41, %cntOverlaps.exit.i, %x_layout.exit ret void } @@ -876,6 +869,9 @@ declare i32 @llvm.smax.i32(i32, i32) #9 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare double @llvm.sqrt.f64(double) #9 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umax.i32(i32, i32) #9 + attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nofree nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/gromacs/optimized/dlarrex.cpp.ll b/bench/gromacs/optimized/dlarrex.cpp.ll index 211f86ac846..b60fe9920dd 100644 --- a/bench/gromacs/optimized/dlarrex.cpp.ll +++ b/bench/gromacs/optimized/dlarrex.cpp.ll @@ -1088,13 +1088,13 @@ define void @dlarrex_(ptr nocapture noundef readonly %0, ptr noundef %1, ptr noc %wide.trip.count962 = zext i32 %523 to i64 br label %.lr.ph817 -.lr.ph817: ; preds = %.lr.ph817.preheader, %581 - %524 = phi i32 [ %513, %.lr.ph817.preheader ], [ %582, %581 ] - %indvars.iv959 = phi i64 [ 1, %.lr.ph817.preheader ], [ %indvars.iv.next960, %581 ] - %.6612.neg815 = phi i32 [ -1, %.lr.ph817.preheader ], [ %.6612.neg, %581 ] - %.5814 = phi i32 [ %.4, %.lr.ph817.preheader ], [ %.6, %581 ] - %.0590813 = phi i32 [ %507, %.lr.ph817.preheader ], [ %.1591, %581 ] - %.6612812 = phi i32 [ 1, %.lr.ph817.preheader ], [ %.7, %581 ] +.lr.ph817: ; preds = %.lr.ph817.preheader, %582 + %524 = phi i32 [ %513, %.lr.ph817.preheader ], [ %583, %582 ] + %indvars.iv959 = phi i64 [ 1, %.lr.ph817.preheader ], [ %indvars.iv.next960, %582 ] + %.6612.neg815 = phi i32 [ -1, %.lr.ph817.preheader ], [ %.6612.neg, %582 ] + %.5814 = phi i32 [ %.4, %.lr.ph817.preheader ], [ %.6, %582 ] + %.0590813 = phi i32 [ %507, %.lr.ph817.preheader ], [ %.1591, %582 ] + %.6612812 = phi i32 [ 1, %.lr.ph817.preheader ], [ %.7, %582 ] %525 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv959 %526 = load i32, ptr %525, align 4 %527 = sext i32 %526 to i64 @@ -1111,7 +1111,7 @@ define void @dlarrex_(ptr nocapture noundef readonly %0, ptr noundef %1, ptr noc %534 = load i32, ptr %11, align 4 %535 = zext i32 %534 to i64 %536 = icmp eq i64 %indvars.iv959, %535 - br i1 %536, label %540, label %573 + br i1 %536, label %540, label %574 537: ; preds = %.lr.ph817 %538 = trunc i64 %indvars.iv959 to i32 @@ -1120,7 +1120,7 @@ define void @dlarrex_(ptr nocapture noundef readonly %0, ptr noundef %1, ptr noc 540: ; preds = %533, %537 %.0592 = phi i32 [ %539, %537 ], [ %534, %533 ] - %541 = add i32 %.6612.neg815, 1 + %541 = add nsw i32 %.6612.neg815, 1 %542 = add i32 %541, %.0592 store i32 %542, ptr %20, align 4 %543 = sext i32 %.6612812 to i64 @@ -1135,71 +1135,72 @@ define void @dlarrex_(ptr nocapture noundef readonly %0, ptr noundef %1, ptr noc %546 = sub nsw i32 %545, %.5814 %547 = add nsw i32 %546, 1 %548 = add i32 %547, %.6612.neg815 - %549 = add i32 %.0592, 1 - br label %550 - -550: ; preds = %.lr.ph806, %550 - %indvars.iv954 = phi i64 [ %543, %.lr.ph806 ], [ %indvars.iv.next955, %550 ] - %551 = trunc nsw i64 %indvars.iv954 to i32 - %552 = add i32 %548, %551 - %553 = getelementptr inbounds i32, ptr %30, i64 %indvars.iv954 - store i32 %552, ptr %553, align 4 - %indvars.iv.next955 = add nsw i64 %indvars.iv954, 1 - %lftr.wideiv957 = trunc i64 %indvars.iv.next955 to i32 - %exitcond958.not = icmp eq i32 %549, %lftr.wideiv957 - br i1 %exitcond958.not, label %._crit_edge807, label %550, !llvm.loop !28 - -._crit_edge807: ; preds = %550, %540 - %554 = load i32, ptr %531, align 4 - %555 = load i32, ptr %1, align 4 - %556 = load i32, ptr %525, align 4 - %557 = add nsw i32 %556, %555 - %558 = sext i32 %557 to i64 - %559 = getelementptr inbounds i32, ptr %27, i64 %558 - %560 = load i32, ptr %559, align 4 - store i32 %560, ptr %24, align 4 - %561 = sext i32 %554 to i64 - %gep809 = getelementptr i32, ptr %invariant.gep808, i64 %561 - %562 = load i32, ptr %gep809, align 4 - %563 = add nsw i32 %562, 1 - %564 = load i32, ptr %11, align 4 - %565 = zext i32 %564 to i64 - %566 = icmp eq i64 %indvars.iv959, %565 - %567 = icmp slt i32 %.0592, %564 - %or.cond653 = and i1 %566, %567 - %568 = trunc nuw nsw i64 %indvars.iv959 to i32 - br i1 %or.cond653, label %569, label %581 - -569: ; preds = %._crit_edge807 - %570 = sub i32 %560, %562 - %571 = sext i32 %564 to i64 - %572 = getelementptr inbounds i32, ptr %30, i64 %571 - store i32 %570, ptr %572, align 4 - br label %581 - -573: ; preds = %533 + %549 = zext nneg i32 %.6612812 to i64 + %550 = add i32 %.0592, 1 + %wide.trip.count957 = zext i32 %550 to i64 + br label %551 + +551: ; preds = %.lr.ph806, %551 + %indvars.iv954 = phi i64 [ %549, %.lr.ph806 ], [ %indvars.iv.next955, %551 ] + %552 = trunc nuw nsw i64 %indvars.iv954 to i32 + %553 = add i32 %548, %552 + %554 = getelementptr inbounds i32, ptr %30, i64 %indvars.iv954 + store i32 %553, ptr %554, align 4 + %indvars.iv.next955 = add nuw nsw i64 %indvars.iv954, 1 + %exitcond958.not = icmp eq i64 %indvars.iv.next955, %wide.trip.count957 + br i1 %exitcond958.not, label %._crit_edge807, label %551, !llvm.loop !28 + +._crit_edge807: ; preds = %551, %540 + %555 = load i32, ptr %531, align 4 + %556 = load i32, ptr %1, align 4 + %557 = load i32, ptr %525, align 4 + %558 = add nsw i32 %557, %556 + %559 = sext i32 %558 to i64 + %560 = getelementptr inbounds i32, ptr %27, i64 %559 + %561 = load i32, ptr %560, align 4 + store i32 %561, ptr %24, align 4 + %562 = sext i32 %555 to i64 + %gep809 = getelementptr i32, ptr %invariant.gep808, i64 %562 + %563 = load i32, ptr %gep809, align 4 + %564 = add nsw i32 %563, 1 + %565 = load i32, ptr %11, align 4 + %566 = zext i32 %565 to i64 + %567 = icmp eq i64 %indvars.iv959, %566 + %568 = icmp slt i32 %.0592, %565 + %or.cond653 = and i1 %567, %568 + %569 = trunc nuw nsw i64 %indvars.iv959 to i32 + br i1 %or.cond653, label %570, label %582 + +570: ; preds = %._crit_edge807 + %571 = sub i32 %561, %563 + %572 = sext i32 %565 to i64 + %573 = getelementptr inbounds i32, ptr %30, i64 %572 + store i32 %571, ptr %573, align 4 + br label %582 + +574: ; preds = %533 store i32 %524, ptr %20, align 4 - %574 = load i32, ptr %1, align 4 - %575 = load i32, ptr %525, align 4 - %576 = add nsw i32 %575, %574 - %577 = sext i32 %576 to i64 - %578 = getelementptr inbounds i32, ptr %27, i64 %577 - %579 = load i32, ptr %578, align 4 - %580 = call i32 @llvm.smin.i32(i32 %524, i32 %579) - store i32 %580, ptr %24, align 4 - br label %581 - -581: ; preds = %573, %569, %._crit_edge807 - %582 = phi i32 [ %560, %569 ], [ %560, %._crit_edge807 ], [ %580, %573 ] - %.7 = phi i32 [ %568, %569 ], [ %568, %._crit_edge807 ], [ %.6612812, %573 ] - %.1591 = phi i32 [ %554, %569 ], [ %554, %._crit_edge807 ], [ %.0590813, %573 ] - %.6 = phi i32 [ %563, %569 ], [ %563, %._crit_edge807 ], [ %.5814, %573 ] + %575 = load i32, ptr %1, align 4 + %576 = load i32, ptr %525, align 4 + %577 = add nsw i32 %576, %575 + %578 = sext i32 %577 to i64 + %579 = getelementptr inbounds i32, ptr %27, i64 %578 + %580 = load i32, ptr %579, align 4 + %581 = call i32 @llvm.smin.i32(i32 %524, i32 %580) + store i32 %581, ptr %24, align 4 + br label %582 + +582: ; preds = %574, %570, %._crit_edge807 + %583 = phi i32 [ %561, %570 ], [ %561, %._crit_edge807 ], [ %581, %574 ] + %.7 = phi i32 [ %569, %570 ], [ %569, %._crit_edge807 ], [ %.6612812, %574 ] + %.1591 = phi i32 [ %555, %570 ], [ %555, %._crit_edge807 ], [ %.0590813, %574 ] + %.6 = phi i32 [ %564, %570 ], [ %564, %._crit_edge807 ], [ %.5814, %574 ] %indvars.iv.next960 = add nuw nsw i64 %indvars.iv959, 1 - %.6612.neg = sub i32 0, %.7 + %.6612.neg = sub nsw i32 0, %.7 %exitcond963.not = icmp eq i64 %indvars.iv.next960, %wide.trip.count962 br i1 %exitcond963.not, label %.loopexit, label %.lr.ph817, !llvm.loop !29 -.loopexit: ; preds = %._crit_edge739, %581, %.lr.ph822, %._crit_edge827, %521, %.preheader, %399, %434 +.loopexit: ; preds = %._crit_edge739, %582, %.lr.ph822, %._crit_edge827, %521, %.preheader, %399, %434 ret void } diff --git a/bench/hermes/optimized/TargetParser.cpp.ll b/bench/hermes/optimized/TargetParser.cpp.ll index 4a74dd78613..14cd8d9a5f3 100644 --- a/bench/hermes/optimized/TargetParser.cpp.ll +++ b/bench/hermes/optimized/TargetParser.cpp.ll @@ -9179,9 +9179,7 @@ while.body.i.i.i: ; preds = %entry, %while.body. _ZN12_GLOBAL__N_112getArchEntryEN4llvh6AMDGPU7GPUKindENS0_8ArrayRefINS_7GPUInfoEEE.exit: ; preds = %while.body.i.i.i %cmp.i = icmp eq ptr %__first.addr.1.i.i.i, getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_110AMDGCNGPUsE, i64 1280) - %tobool.not4 = icmp eq ptr %__first.addr.1.i.i.i, null - %tobool.not = or i1 %cmp.i, %tobool.not4 - br i1 %tobool.not, label %return, label %if.then + br i1 %cmp.i, label %return, label %if.then if.then: ; preds = %_ZN12_GLOBAL__N_112getArchEntryEN4llvh6AMDGPU7GPUKindENS0_8ArrayRefINS_7GPUInfoEEE.exit %CanonicalName = getelementptr inbounds i8, ptr %__first.addr.1.i.i.i, i64 16 @@ -9221,9 +9219,7 @@ while.body.i.i.i: ; preds = %entry, %while.body. _ZN12_GLOBAL__N_112getArchEntryEN4llvh6AMDGPU7GPUKindENS0_8ArrayRefINS_7GPUInfoEEE.exit: ; preds = %while.body.i.i.i %cmp.i = icmp eq ptr %__first.addr.1.i.i.i, getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_18R600GPUsE, i64 1040) - %tobool.not4 = icmp eq ptr %__first.addr.1.i.i.i, null - %tobool.not = or i1 %cmp.i, %tobool.not4 - br i1 %tobool.not, label %return, label %if.then + br i1 %cmp.i, label %return, label %if.then if.then: ; preds = %_ZN12_GLOBAL__N_112getArchEntryEN4llvh6AMDGPU7GPUKindENS0_8ArrayRefINS_7GPUInfoEEE.exit %CanonicalName = getelementptr inbounds i8, ptr %__first.addr.1.i.i.i, i64 16 @@ -9339,9 +9335,7 @@ while.body.i.i.i: ; preds = %entry, %while.body. _ZN12_GLOBAL__N_112getArchEntryEN4llvh6AMDGPU7GPUKindENS0_8ArrayRefINS_7GPUInfoEEE.exit: ; preds = %while.body.i.i.i %cmp.i = icmp eq ptr %__first.addr.1.i.i.i, getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_110AMDGCNGPUsE, i64 1280) - %tobool.not2 = icmp eq ptr %__first.addr.1.i.i.i, null - %tobool.not = or i1 %cmp.i, %tobool.not2 - br i1 %tobool.not, label %return, label %if.then + br i1 %cmp.i, label %return, label %if.then if.then: ; preds = %_ZN12_GLOBAL__N_112getArchEntryEN4llvh6AMDGPU7GPUKindENS0_8ArrayRefINS_7GPUInfoEEE.exit %Features = getelementptr inbounds i8, ptr %__first.addr.1.i.i.i, i64 36 @@ -9376,9 +9370,7 @@ while.body.i.i.i: ; preds = %entry, %while.body. _ZN12_GLOBAL__N_112getArchEntryEN4llvh6AMDGPU7GPUKindENS0_8ArrayRefINS_7GPUInfoEEE.exit: ; preds = %while.body.i.i.i %cmp.i = icmp eq ptr %__first.addr.1.i.i.i, getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_18R600GPUsE, i64 1040) - %tobool.not2 = icmp eq ptr %__first.addr.1.i.i.i, null - %tobool.not = or i1 %cmp.i, %tobool.not2 - br i1 %tobool.not, label %return, label %if.then + br i1 %cmp.i, label %return, label %if.then if.then: ; preds = %_ZN12_GLOBAL__N_112getArchEntryEN4llvh6AMDGPU7GPUKindENS0_8ArrayRefINS_7GPUInfoEEE.exit %Features = getelementptr inbounds i8, ptr %__first.addr.1.i.i.i, i64 36 diff --git a/bench/hermes/optimized/UniquingStringLiteralTable.cpp.ll b/bench/hermes/optimized/UniquingStringLiteralTable.cpp.ll index 799ac9e57e7..cb31f60543f 100644 --- a/bench/hermes/optimized/UniquingStringLiteralTable.cpp.ll +++ b/bench/hermes/optimized/UniquingStringLiteralTable.cpp.ll @@ -1027,7 +1027,7 @@ _ZNKSt6vectorIZN6hermes3hbc32UniquingStringLiteralAccumulator7toTableES2_bE11Kin store i32 %kind.val, ptr %add.ptr.i.i250, align 4 %entry5.i.i.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i250, i64 4 store i64 %call63.val, ptr %entry5.i.i.i.i.i, align 4 - br i1 %cmp.i.i.i.i242, label %_ZNSt6vectorIZN6hermes3hbc32UniquingStringLiteralAccumulator7toTableES2_bE11KindedEntrySaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit21.i.i, label %for.body.i.i.i.i.i251 + br i1 %cmp.i.i.i.i242, label %_ZNSt6vectorIZN6hermes3hbc32UniquingStringLiteralAccumulator7toTableES2_bE11KindedEntrySaIS3_EE17_M_realloc_insertIJRNS0_10StringKind4KindERNS0_16StringTableEntryEEEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i, label %for.body.i.i.i.i.i251 for.body.i.i.i.i.i251: ; preds = %_ZNKSt6vectorIZN6hermes3hbc32UniquingStringLiteralAccumulator7toTableES2_bE11KindedEntrySaIS3_EE12_M_check_lenEmPKc.exit.i.i, %for.body.i.i.i.i.i251 %__cur.03.i.i.i.i.i252 = phi ptr [ %incdec.ptr1.i.i.i.i.i255, %for.body.i.i.i.i.i251 ], [ %call5.i.i.i.i.i249, %_ZNKSt6vectorIZN6hermes3hbc32UniquingStringLiteralAccumulator7toTableES2_bE11KindedEntrySaIS3_EE12_M_check_lenEmPKc.exit.i.i ] @@ -1036,18 +1036,11 @@ for.body.i.i.i.i.i251: ; preds = %_ZNKSt6vectorIZN6he %incdec.ptr.i.i.i.i.i254 = getelementptr inbounds i8, ptr %__first.addr.02.i.i.i.i.i253, i64 12 %incdec.ptr1.i.i.i.i.i255 = getelementptr inbounds i8, ptr %__cur.03.i.i.i.i.i252, i64 12 %cmp.not.i.i.i.i.i256 = icmp eq ptr %incdec.ptr.i.i.i.i.i254, %kindedEntries.sroa.20.0397 - br i1 %cmp.not.i.i.i.i.i256, label %_ZNSt6vectorIZN6hermes3hbc32UniquingStringLiteralAccumulator7toTableES2_bE11KindedEntrySaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit21.i.i, label %for.body.i.i.i.i.i251, !llvm.loop !40 + br i1 %cmp.not.i.i.i.i.i256, label %_ZNSt6vectorIZN6hermes3hbc32UniquingStringLiteralAccumulator7toTableES2_bE11KindedEntrySaIS3_EE17_M_realloc_insertIJRNS0_10StringKind4KindERNS0_16StringTableEntryEEEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i, label %for.body.i.i.i.i.i251, !llvm.loop !40 -_ZNSt6vectorIZN6hermes3hbc32UniquingStringLiteralAccumulator7toTableES2_bE11KindedEntrySaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit21.i.i: ; preds = %for.body.i.i.i.i.i251, %_ZNKSt6vectorIZN6hermes3hbc32UniquingStringLiteralAccumulator7toTableES2_bE11KindedEntrySaIS3_EE12_M_check_lenEmPKc.exit.i.i +_ZNSt6vectorIZN6hermes3hbc32UniquingStringLiteralAccumulator7toTableES2_bE11KindedEntrySaIS3_EE17_M_realloc_insertIJRNS0_10StringKind4KindERNS0_16StringTableEntryEEEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i: ; preds = %for.body.i.i.i.i.i251, %_ZNKSt6vectorIZN6hermes3hbc32UniquingStringLiteralAccumulator7toTableES2_bE11KindedEntrySaIS3_EE12_M_check_lenEmPKc.exit.i.i %__cur.0.lcssa.i.i.i.i.i257 = phi ptr [ %call5.i.i.i.i.i249, %_ZNKSt6vectorIZN6hermes3hbc32UniquingStringLiteralAccumulator7toTableES2_bE11KindedEntrySaIS3_EE12_M_check_lenEmPKc.exit.i.i ], [ %incdec.ptr1.i.i.i.i.i255, %for.body.i.i.i.i.i251 ] - %tobool.not.i.i.i259 = icmp eq ptr %kindedEntries.sroa.0.0395, null - br i1 %tobool.not.i.i.i259, label %_ZNSt6vectorIZN6hermes3hbc32UniquingStringLiteralAccumulator7toTableES2_bE11KindedEntrySaIS3_EE17_M_realloc_insertIJRNS0_10StringKind4KindERNS0_16StringTableEntryEEEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i, label %if.then.i22.i.i260 - -if.then.i22.i.i260: ; preds = %_ZNSt6vectorIZN6hermes3hbc32UniquingStringLiteralAccumulator7toTableES2_bE11KindedEntrySaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit21.i.i call void @_ZdlPv(ptr noundef nonnull %kindedEntries.sroa.0.0395) #24 - br label %_ZNSt6vectorIZN6hermes3hbc32UniquingStringLiteralAccumulator7toTableES2_bE11KindedEntrySaIS3_EE17_M_realloc_insertIJRNS0_10StringKind4KindERNS0_16StringTableEntryEEEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i - -_ZNSt6vectorIZN6hermes3hbc32UniquingStringLiteralAccumulator7toTableES2_bE11KindedEntrySaIS3_EE17_M_realloc_insertIJRNS0_10StringKind4KindERNS0_16StringTableEntryEEEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i: ; preds = %if.then.i22.i.i260, %_ZNSt6vectorIZN6hermes3hbc32UniquingStringLiteralAccumulator7toTableES2_bE11KindedEntrySaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit21.i.i %add.ptr21.i.i = getelementptr inbounds %struct.KindedEntry, ptr %call5.i.i.i.i.i249, i64 %cond.i.i.i246 br label %_ZNSt6vectorIZN6hermes3hbc32UniquingStringLiteralAccumulator7toTableES2_bE11KindedEntrySaIS3_EE12emplace_backIJRNS0_10StringKind4KindERNS0_16StringTableEntryEEEERS3_DpOT_.exit diff --git a/bench/hyperscan/optimized/accel_dfa_build_strat.cpp.ll b/bench/hyperscan/optimized/accel_dfa_build_strat.cpp.ll index a7754e06fd8..2a5a6ad01f3 100644 --- a/bench/hyperscan/optimized/accel_dfa_build_strat.cpp.ll +++ b/bench/hyperscan/optimized/accel_dfa_build_strat.cpp.ll @@ -4121,7 +4121,7 @@ lor.rhs.i: ; preds = %_ZNSt3mapItN3ue211A if.then.i: ; preds = %lor.rhs.i, %_ZNSt3mapItN3ue211AccelSchemeESt4lessItESaISt4pairIKtS1_EEE11lower_boundERS5_.exit.i store ptr %sds_proxy, ptr %ref.tmp9.i, align 8 - %call12.i29 = invoke ptr @_ZNSt8_Rb_treeItSt4pairIKtN3ue211AccelSchemeEESt10_Select1stIS4_ESt4lessItESaIS4_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESF_IJEEEEESt17_Rb_tree_iteratorIS4_ESt23_Rb_tree_const_iteratorIS4_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %agg.result, ptr %__y.addr.1.i.i.i.i23, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt19piecewise_construct, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp9.i, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp10.i) + %call12.i29 = invoke ptr @_ZNSt8_Rb_treeItSt4pairIKtN3ue211AccelSchemeEESt10_Select1stIS4_ESt4lessItESaIS4_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESF_IJEEEEESt17_Rb_tree_iteratorIS4_ESt23_Rb_tree_const_iteratorIS4_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %agg.result, ptr nonnull %__y.addr.1.i.i.i.i23, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt19piecewise_construct, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp9.i, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp10.i) to label %invoke.cont28 unwind label %lpad.loopexit.split-lp invoke.cont28: ; preds = %lor.rhs.i, %if.then.i @@ -4315,7 +4315,7 @@ invoke.cont16.i: ; preds = %invoke.cont7.i %_M_node_count.i.i.i.i = getelementptr inbounds i8, ptr %sds_region, i64 40 %70 = load i64, ptr %m_size.i.i.i.i.i.i.i.i.i.i.i, align 8, !noalias !180 %71 = icmp eq i64 %70, 0 - br i1 %71, label %if.then.i.i.i38.i, label %invoke.cont20.preheader.i + br i1 %71, label %_ZNSt6vectorItSaItEED2Ev.exit40.i, label %invoke.cont20.preheader.i invoke.cont20.preheader.i: ; preds = %invoke.cont16.i %add.ptr.i1.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i2.i.i, i64 2 @@ -4326,7 +4326,7 @@ while.cond.loopexit.i: ; preds = %for.inc.i44, %invok %pending.sroa.8.1.lcssa.i = phi ptr [ %add.ptr.i.i.i41, %invoke.cont20.i ], [ %pending.sroa.8.2.i, %for.inc.i44 ] %pending.sroa.0.1.lcssa.i = phi ptr [ %pending.sroa.0.091.i, %invoke.cont20.i ], [ %pending.sroa.0.2.i, %for.inc.i44 ] %cmp.i.i.i = icmp eq ptr %pending.sroa.0.1.lcssa.i, %pending.sroa.8.1.lcssa.i - br i1 %cmp.i.i.i, label %while.end.i, label %invoke.cont20thread-pre-split.i, !llvm.loop !185 + br i1 %cmp.i.i.i, label %_ZNSt6vectorItSaItEED2Ev.exit40.i, label %invoke.cont20thread-pre-split.i, !llvm.loop !185 invoke.cont20thread-pre-split.i: ; preds = %while.cond.loopexit.i %.pr.i = load i64, ptr %m_size.i.i.i.i.i.i.i.i.i.i.i, align 8, !noalias !180 @@ -4538,16 +4538,9 @@ for.inc.i44: ; preds = %_ZNSt6vectorItSaItE %cmp.i.i.i.i.not.i = icmp eq ptr %incdec.ptr.i.i.i.i.i, %add.ptr.i.i14.i br i1 %cmp.i.i.i.i.not.i, label %while.cond.loopexit.i, label %invoke.cont24.i -while.end.i: ; preds = %while.cond.loopexit.i - %tobool.not.i.i.i37.i = icmp eq ptr %pending.sroa.8.1.lcssa.i, null - br i1 %tobool.not.i.i.i37.i, label %_ZNSt6vectorItSaItEED2Ev.exit40.i, label %if.then.i.i.i38.i - -if.then.i.i.i38.i: ; preds = %while.end.i, %invoke.cont16.i - %.us-phi104.i = phi ptr [ %pending.sroa.0.1.lcssa.i, %while.end.i ], [ %call5.i.i.i.i2.i.i, %invoke.cont16.i ] +_ZNSt6vectorItSaItEED2Ev.exit40.i: ; preds = %while.cond.loopexit.i, %invoke.cont16.i + %.us-phi104.i = phi ptr [ %call5.i.i.i.i2.i.i, %invoke.cont16.i ], [ %pending.sroa.0.1.lcssa.i, %while.cond.loopexit.i ] call void @_ZdlPv(ptr noundef nonnull %.us-phi104.i) #23 - br label %_ZNSt6vectorItSaItEED2Ev.exit40.i - -_ZNSt6vectorItSaItEED2Ev.exit40.i: ; preds = %if.then.i.i.i38.i, %while.end.i %89 = load i64, ptr %m_capacity.i.i.i.i.i.i.i.i.i.i.i, align 8, !noalias !170 %tobool.not.i.i.i.i.i.i.i.i.i.i45 = icmp eq i64 %89, 0 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i45, label %invoke.cont36, label %if.then.i.i.i.i.i.i.i.i.i.i46 @@ -4665,7 +4658,7 @@ lor.rhs.i95: ; preds = %_ZNSt3mapItN3ue211A if.then.i100: ; preds = %lor.rhs.i95, %_ZNSt3mapItN3ue211AccelSchemeESt4lessItESaISt4pairIKtS1_EEE11lower_boundERS5_.exit.i93 store ptr %s, ptr %ref.tmp9.i77, align 8 - %call12.i103 = invoke ptr @_ZNSt8_Rb_treeItSt4pairIKtN3ue211AccelSchemeEESt10_Select1stIS4_ESt4lessItESaIS4_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESF_IJEEEEESt17_Rb_tree_iteratorIS4_ESt23_Rb_tree_const_iteratorIS4_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %agg.result, ptr %__y.addr.1.i.i.i.i88, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt19piecewise_construct, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp9.i77, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp10.i78) + %call12.i103 = invoke ptr @_ZNSt8_Rb_treeItSt4pairIKtN3ue211AccelSchemeEESt10_Select1stIS4_ESt4lessItESaIS4_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESF_IJEEEEESt17_Rb_tree_iteratorIS4_ESt23_Rb_tree_const_iteratorIS4_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %agg.result, ptr nonnull %__y.addr.1.i.i.i.i88, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt19piecewise_construct, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp9.i77, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp10.i78) to label %invoke.cont47 unwind label %lpad44 invoke.cont47: ; preds = %lor.rhs.i95, %if.then.i100 diff --git a/bench/hyperscan/optimized/ng_calc_components.cpp.ll b/bench/hyperscan/optimized/ng_calc_components.cpp.ll index 86aad4144c0..3e56f78fb60 100644 --- a/bench/hyperscan/optimized/ng_calc_components.cpp.ll +++ b/bench/hyperscan/optimized/ng_calc_components.cpp.ll @@ -6173,6 +6173,7 @@ invoke.cont51: ; preds = %if.then.i.i.i285, % %52 = load ptr, ptr %out_it4.i.i.i5.i311, align 8 %done_in.i.i.i6.i312 = getelementptr inbounds i8, ptr %43, i64 -80 %53 = load i8, ptr %done_in.i.i.i6.i312, align 8 + %frombool.i.i.i8.i314 = and i8 %53, 1 %m_predicate2.i10.i316 = getelementptr inbounds i8, ptr %43, i64 -72 %ei_end.sroa.36.48.copyload1008 = load i64, ptr %m_predicate2.i10.i316, align 8 %ei_end.sroa.44.48.m_predicate2.i10.i316.sroa_idx = getelementptr inbounds i8, ptr %43, i64 -64 @@ -6187,6 +6188,7 @@ invoke.cont51: ; preds = %if.then.i.i.i285, % %55 = load ptr, ptr %out_it4.i.i16.i322, align 8 %done_in.i.i17.i323 = getelementptr inbounds i8, ptr %43, i64 -8 %56 = load i8, ptr %done_in.i.i17.i323, align 8 + %frombool.i.i19.i325 = and i8 %56, 1 store ptr %add.ptr.i.i, ptr %_M_finish.i.i207, align 8 %57 = load i8, ptr %second, align 8 %tobool.i.i.i.i.i.i.i.i = trunc i8 %57 to i1 @@ -6212,10 +6214,10 @@ invoke.cont71: ; preds = %_ZNSt6vectorISt4pai %u.sroa.14.01120 = phi i64 [ %u.sroa.14.1, %if.end133 ], [ %u.sroa.14.0.copyload, %_ZNSt6vectorISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS1_17undirected_detail32undirected_graph_edge_descriptorIS5_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINSA_8keep_allENS1_17bad_vertex_filterISt13unordered_setIS9_St4hashIS9_ESt8equal_toIS9_ESaIS9_EEEENSA_14filtered_graphINS1_16undirected_graphIS5_RKS5_EESK_ST_EEEENSY_17adj_edge_iteratorILb0EEEEES13_EEESaIS16_EE8pop_backEv.exit ] %u.sroa.0.01119 = phi ptr [ %u.sroa.0.1, %if.end133 ], [ %u.sroa.0.0.copyload, %_ZNSt6vectorISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS1_17undirected_detail32undirected_graph_edge_descriptorIS5_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINSA_8keep_allENS1_17bad_vertex_filterISt13unordered_setIS9_St4hashIS9_ESt8equal_toIS9_ESaIS9_EEEENSA_14filtered_graphINS1_16undirected_graphIS5_RKS5_EESK_ST_EEEENSY_17adj_edge_iteratorILb0EEEEES13_EEESaIS16_EE8pop_backEv.exit ] %src_e.sroa.0.31114 = phi i8 [ %src_e.sroa.0.4, %if.end133 ], [ %src_e.sroa.0.5, %_ZNSt6vectorISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS1_17undirected_detail32undirected_graph_edge_descriptorIS5_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINSA_8keep_allENS1_17bad_vertex_filterISt13unordered_setIS9_St4hashIS9_ESt8equal_toIS9_ESaIS9_EEEENSA_14filtered_graphINS1_16undirected_graphIS5_RKS5_EESK_ST_EEEENSY_17adj_edge_iteratorILb0EEEEES13_EEESaIS16_EE8pop_backEv.exit ] - %ei_end.sroa.28.01113 = phi i8 [ %ei_end.sroa.28.1, %if.end133 ], [ %53, %_ZNSt6vectorISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS1_17undirected_detail32undirected_graph_edge_descriptorIS5_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINSA_8keep_allENS1_17bad_vertex_filterISt13unordered_setIS9_St4hashIS9_ESt8equal_toIS9_ESaIS9_EEEENSA_14filtered_graphINS1_16undirected_graphIS5_RKS5_EESK_ST_EEEENSY_17adj_edge_iteratorILb0EEEEES13_EEESaIS16_EE8pop_backEv.exit ] + %ei_end.sroa.28.01113 = phi i8 [ %ei_end.sroa.28.1, %if.end133 ], [ %frombool.i.i.i8.i314, %_ZNSt6vectorISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS1_17undirected_detail32undirected_graph_edge_descriptorIS5_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINSA_8keep_allENS1_17bad_vertex_filterISt13unordered_setIS9_St4hashIS9_ESt8equal_toIS9_ESaIS9_EEEENSA_14filtered_graphINS1_16undirected_graphIS5_RKS5_EESK_ST_EEEENSY_17adj_edge_iteratorILb0EEEEES13_EEESaIS16_EE8pop_backEv.exit ] %ei_end.sroa.36.01112 = phi i64 [ %ei_end.sroa.36.1, %if.end133 ], [ %ei_end.sroa.36.48.copyload1008, %_ZNSt6vectorISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS1_17undirected_detail32undirected_graph_edge_descriptorIS5_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINSA_8keep_allENS1_17bad_vertex_filterISt13unordered_setIS9_St4hashIS9_ESt8equal_toIS9_ESaIS9_EEEENSA_14filtered_graphINS1_16undirected_graphIS5_RKS5_EESK_ST_EEEENSY_17adj_edge_iteratorILb0EEEEES13_EEESaIS16_EE8pop_backEv.exit ] %ei_end.sroa.44.01111 = phi ptr [ %ei_end.sroa.44.1, %if.end133 ], [ %ei_end.sroa.44.48.copyload1015, %_ZNSt6vectorISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS1_17undirected_detail32undirected_graph_edge_descriptorIS5_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINSA_8keep_allENS1_17bad_vertex_filterISt13unordered_setIS9_St4hashIS9_ESt8equal_toIS9_ESaIS9_EEEENSA_14filtered_graphINS1_16undirected_graphIS5_RKS5_EESK_ST_EEEENSY_17adj_edge_iteratorILb0EEEEES13_EEESaIS16_EE8pop_backEv.exit ] - %ei_end.sroa.71.01110 = phi i8 [ %ei_end.sroa.71.1, %if.end133 ], [ %56, %_ZNSt6vectorISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS1_17undirected_detail32undirected_graph_edge_descriptorIS5_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINSA_8keep_allENS1_17bad_vertex_filterISt13unordered_setIS9_St4hashIS9_ESt8equal_toIS9_ESaIS9_EEEENSA_14filtered_graphINS1_16undirected_graphIS5_RKS5_EESK_ST_EEEENSY_17adj_edge_iteratorILb0EEEEES13_EEESaIS16_EE8pop_backEv.exit ] + %ei_end.sroa.71.01110 = phi i8 [ %ei_end.sroa.71.1, %if.end133 ], [ %frombool.i.i19.i325, %_ZNSt6vectorISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS1_17undirected_detail32undirected_graph_edge_descriptorIS5_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINSA_8keep_allENS1_17bad_vertex_filterISt13unordered_setIS9_St4hashIS9_ESt8equal_toIS9_ESaIS9_EEEENSA_14filtered_graphINS1_16undirected_graphIS5_RKS5_EESK_ST_EEEENSY_17adj_edge_iteratorILb0EEEEES13_EEESaIS16_EE8pop_backEv.exit ] %ei_end.sroa.63.01109 = phi ptr [ %ei_end.sroa.63.1, %if.end133 ], [ %55, %_ZNSt6vectorISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS1_17undirected_detail32undirected_graph_edge_descriptorIS5_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINSA_8keep_allENS1_17bad_vertex_filterISt13unordered_setIS9_St4hashIS9_ESt8equal_toIS9_ESaIS9_EEEENSA_14filtered_graphINS1_16undirected_graphIS5_RKS5_EESK_ST_EEEENSY_17adj_edge_iteratorILb0EEEEES13_EEESaIS16_EE8pop_backEv.exit ] %ei_end.sroa.54.01108 = phi ptr [ %ei_end.sroa.54.1, %if.end133 ], [ %54, %_ZNSt6vectorISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS1_17undirected_detail32undirected_graph_edge_descriptorIS5_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINSA_8keep_allENS1_17bad_vertex_filterISt13unordered_setIS9_St4hashIS9_ESt8equal_toIS9_ESaIS9_EEEENSA_14filtered_graphINS1_16undirected_graphIS5_RKS5_EESK_ST_EEEENSY_17adj_edge_iteratorILb0EEEEES13_EEESaIS16_EE8pop_backEv.exit ] %ei_end.sroa.45.sroa.0.01107 = phi i64 [ %ei_end.sroa.45.sroa.0.1, %if.end133 ], [ %ei_end.sroa.45.sroa.0.0.copyload1034, %_ZNSt6vectorISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS1_17undirected_detail32undirected_graph_edge_descriptorIS5_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINSA_8keep_allENS1_17bad_vertex_filterISt13unordered_setIS9_St4hashIS9_ESt8equal_toIS9_ESaIS9_EEEENSA_14filtered_graphINS1_16undirected_graphIS5_RKS5_EESK_ST_EEEENSY_17adj_edge_iteratorILb0EEEEES13_EEESaIS16_EE8pop_backEv.exit ] @@ -6388,9 +6390,7 @@ invoke.cont90: ; preds = %.noexc388 %86 = load i8, ptr %done_in6.i.i.i, align 8, !noalias !398 %frombool.i.i.i.i407 = and i8 %86, 1 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %second.i.i.i.i492, ptr noundef nonnull align 8 dereferenceable(24) %ei_end.sroa.0, i64 24, i1 false) - %frombool.i.i.i7.i.i415 = and i8 %ei_end.sroa.28.01113, 1 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %m_end.i11.i.i.i.i503, ptr noundef nonnull align 8 dereferenceable(24) %ei_end.sroa.45.sroa.8, i64 24, i1 false) - %frombool.i.i18.i.i426 = and i8 %ei_end.sroa.71.01110, 1 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %ref.tmp83.sroa.7.sroa.5.0.m_storage.i2.i.i.i.i.i514.sroa_idx, ptr noundef nonnull align 1 dereferenceable(7) %src_e.sroa.24, i64 7, i1 false) store ptr %u.sroa.0.01119, ptr %ref.tmp82, align 8 store i64 %u.sroa.14.01120, ptr %u.sroa.14.0.ref.tmp82.sroa_idx, align 8 @@ -6407,13 +6407,13 @@ invoke.cont90: ; preds = %.noexc388 store i8 %frombool.i.i.i.i407, ptr %done_in.i.i.i.i.i.i489, align 8, !alias.scope !401 store ptr %ei_end.sroa.9.01106, ptr %in_it.i.i.i2.i.i.i.i494, align 8, !alias.scope !401 store ptr %ei_end.sroa.19.01105, ptr %out_it.i.i.i4.i.i.i.i496, align 8, !alias.scope !401 - store i8 %frombool.i.i.i7.i.i415, ptr %done_in.i.i.i6.i.i.i.i498, align 8, !alias.scope !401 + store i8 %ei_end.sroa.28.01113, ptr %done_in.i.i.i6.i.i.i.i498, align 8, !alias.scope !401 store i64 %ei_end.sroa.36.01112, ptr %m_predicate.i9.i.i.i.i501, align 8 store ptr %ei_end.sroa.44.01111, ptr %ref.tmp83.sroa.35.sroa.2.0.m_predicate.i9.i.i.i.i501.sroa_idx, align 8 store i64 %ei_end.sroa.45.sroa.0.01107, ptr %ref.tmp83.sroa.35.sroa.3.0.m_predicate.i9.i.i.i.i501.sroa_idx, align 8 store ptr %ei_end.sroa.54.01108, ptr %in_it.i.i13.i.i.i.i505, align 8, !alias.scope !401 store ptr %ei_end.sroa.63.01109, ptr %out_it.i.i15.i.i.i.i507, align 8, !alias.scope !401 - store i8 %frombool.i.i18.i.i426, ptr %done_in.i.i17.i.i.i.i509, align 8, !alias.scope !401 + store i8 %ei_end.sroa.71.01110, ptr %done_in.i.i17.i.i.i.i509, align 8, !alias.scope !401 %87 = load ptr, ptr %_M_finish.i.i207, align 8 %88 = load ptr, ptr %_M_end_of_storage.i.i208, align 8 %cmp.not.i.i518 = icmp eq ptr %87, %88 @@ -6929,6 +6929,7 @@ invoke.cont107: ; preds = %.noexc652 %154 = load ptr, ptr %in_it.i.i.i34.i, align 8, !noalias !440 %155 = load ptr, ptr %out_it.i.i.i36.i, align 8, !noalias !440 %156 = load i8, ptr %done_in.i.i.i38.i, align 8, !noalias !440 + %frombool.i.i.i7.i.i.i = and i8 %156, 1 %ref.tmp102.sroa.26.sroa.0.0.copyload = load i64, ptr %m_predicate.i41.i, align 8 %ref.tmp102.sroa.26.sroa.2.0.copyload = load ptr, ptr %agg.tmp833.sroa.4.0.m_predicate.i41.sroa_idx.i, align 8 %ref.tmp102.sroa.26.sroa.3.0.copyload = load i64, ptr %agg.tmp833.sroa.5.0.m_predicate.i41.sroa_idx.i, align 8 @@ -6936,6 +6937,7 @@ invoke.cont107: ; preds = %.noexc652 %157 = load ptr, ptr %in_it.i.i43.i, align 8, !noalias !440 %158 = load ptr, ptr %out_it.i.i45.i, align 8, !noalias !440 %159 = load i8, ptr %done_in.i.i47.i, align 8, !noalias !440 + %frombool.i.i18.i.i.i = and i8 %159, 1 call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %ref.tmp7.i) store ptr %agg.tmp.sroa.0.0.copyload.i.fr.i.i.i.i.i.i.i587, ptr %ei, align 8 store i64 %.pn.i.i.i, ptr %ref.tmp102.sroa.0.sroa.2.0.ref.tmp105.sroa.0.0..sroa_idx, align 8 @@ -7103,10 +7105,10 @@ if.end133: ; preds = %.noexc754.if.end133 %ei_end.sroa.45.sroa.0.1 = phi i64 [ %ref.tmp102.sroa.26.sroa.3.0.copyload, %invoke.cont107 ], [ %ei_end.sroa.45.sroa.0.01107, %.noexc754.if.end133_crit_edge ] %ei_end.sroa.54.1 = phi ptr [ %157, %invoke.cont107 ], [ %ei_end.sroa.54.01108, %.noexc754.if.end133_crit_edge ] %ei_end.sroa.63.1 = phi ptr [ %158, %invoke.cont107 ], [ %ei_end.sroa.63.01109, %.noexc754.if.end133_crit_edge ] - %ei_end.sroa.71.1 = phi i8 [ %159, %invoke.cont107 ], [ %ei_end.sroa.71.01110, %.noexc754.if.end133_crit_edge ] + %ei_end.sroa.71.1 = phi i8 [ %frombool.i.i18.i.i.i, %invoke.cont107 ], [ %ei_end.sroa.71.01110, %.noexc754.if.end133_crit_edge ] %ei_end.sroa.44.1 = phi ptr [ %ref.tmp102.sroa.26.sroa.2.0.copyload, %invoke.cont107 ], [ %ei_end.sroa.44.01111, %.noexc754.if.end133_crit_edge ] %ei_end.sroa.36.1 = phi i64 [ %ref.tmp102.sroa.26.sroa.0.0.copyload, %invoke.cont107 ], [ %ei_end.sroa.36.01112, %.noexc754.if.end133_crit_edge ] - %ei_end.sroa.28.1 = phi i8 [ %156, %invoke.cont107 ], [ %ei_end.sroa.28.01113, %.noexc754.if.end133_crit_edge ] + %ei_end.sroa.28.1 = phi i8 [ %frombool.i.i.i7.i.i.i, %invoke.cont107 ], [ %ei_end.sroa.28.01113, %.noexc754.if.end133_crit_edge ] %src_e.sroa.0.4 = phi i8 [ 1, %invoke.cont107 ], [ %src_e.sroa.0.31114, %.noexc754.if.end133_crit_edge ] %u.sroa.0.1 = phi ptr [ %agg.tmp.sroa.0.0.copyload.i.fr.i.i.i.i.i.i.i587, %invoke.cont107 ], [ %u.sroa.0.01119, %.noexc754.if.end133_crit_edge ] %u.sroa.14.1 = phi i64 [ %.pn.i.i.i, %invoke.cont107 ], [ %u.sroa.14.01120, %.noexc754.if.end133_crit_edge ] diff --git a/bench/hyperscan/optimized/rose_build_role_aliasing.cpp.ll b/bench/hyperscan/optimized/rose_build_role_aliasing.cpp.ll index f7ef8ab5769..2878cc0d5df 100644 --- a/bench/hyperscan/optimized/rose_build_role_aliasing.cpp.ll +++ b/bench/hyperscan/optimized/rose_build_role_aliasing.cpp.ll @@ -11620,7 +11620,7 @@ if.then.i.i.i: ; preds = %while.end.i.i.i, %i %_M_left.i26.i.i.i = getelementptr inbounds i8, ptr %this, i64 24 %10 = load ptr, ptr %_M_left.i26.i.i.i, align 8 %cmp.i.i.i.i = icmp eq ptr %__y.0.lcssa46.i.i.i, %10 - br i1 %cmp.i.i.i.i, label %invoke.cont7.i, label %if.else.i.i.i + br i1 %cmp.i.i.i.i, label %if.then.i, label %if.else.i.i.i if.else.i.i.i: ; preds = %if.then.i.i.i %call.i.i.i.i = tail call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %__y.0.lcssa46.i.i.i) #24 @@ -11634,7 +11634,7 @@ if.end12.i.i.i: ; preds = %if.else.i.i.i, %whi to label %call16.i.i.noexc.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i call16.i.i.noexc.i: ; preds = %if.end12.i.i.i - br i1 %call16.i.i21.i, label %invoke.cont7.i, label %if.then.i3 + br i1 %call16.i.i21.i, label %if.then.i, label %if.then.i3 if.else12.i.i: ; preds = %invoke.cont.i %_M_storage.i.i.i91.i.i = getelementptr inbounds i8, ptr %__y.addr.0.lcssa.i.i.i29, i64 32 @@ -11648,7 +11648,7 @@ if.then18.i.i: ; preds = %call17.i.noexc.i %_M_left.i.i.i = getelementptr inbounds i8, ptr %this, i64 24 %11 = load ptr, ptr %_M_left.i.i.i, align 8 %cmp21.i.i = icmp eq ptr %11, %__y.addr.0.lcssa.i.i.i29 - br i1 %cmp21.i.i, label %invoke.cont7.i, label %if.else25.i.i + br i1 %cmp21.i.i, label %_ZNSt8_Rb_treeIN3ue212_GLOBAL__N_113UncalcLeafKeyESt4pairIKS2_St6vectorINS0_12graph_detail17vertex_descriptorINS0_9ue2_graphINS0_9RoseGraphENS0_15RoseVertexPropsENS0_13RoseEdgePropsEEEEESaISD_EEESt10_Select1stISG_ESt4lessIS2_ESaISG_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS4_EESR_IJEEEEESt17_Rb_tree_iteratorISG_ESt23_Rb_tree_const_iteratorISG_EDpOT_.exit, label %if.else25.i.i if.else25.i.i: ; preds = %if.then18.i.i %call.i.i.i = tail call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef %__y.addr.0.lcssa.i.i.i29) #24 @@ -11663,7 +11663,7 @@ if.then32.i.i: ; preds = %call31.i.noexc.i %_M_right.i96.i.i = getelementptr inbounds i8, ptr %call.i.i.i, i64 24 %12 = load ptr, ptr %_M_right.i96.i.i, align 8 %cmp35.i.i = icmp eq ptr %12, null - br i1 %cmp35.i.i, label %if.then.i, label %invoke.cont7.i + br i1 %cmp35.i.i, label %if.then.i, label %_ZNSt8_Rb_treeIN3ue212_GLOBAL__N_113UncalcLeafKeyESt4pairIKS2_St6vectorINS0_12graph_detail17vertex_descriptorINS0_9ue2_graphINS0_9RoseGraphENS0_15RoseVertexPropsENS0_13RoseEdgePropsEEEEESaISD_EEESt10_Select1stISG_ESt4lessIS2_ESaISG_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS4_EESR_IJEEEEESt17_Rb_tree_iteratorISG_ESt23_Rb_tree_const_iteratorISG_EDpOT_.exit if.else42.i.i: ; preds = %call31.i.noexc.i %__x.040.i101.i.i = load ptr, ptr %_M_parent.i.i.i.i, align 8 @@ -11717,7 +11717,7 @@ if.then50.i.i: ; preds = %call49.i.noexc.i %_M_right.i132.i.i = getelementptr inbounds i8, ptr %this, i64 32 %14 = load ptr, ptr %_M_right.i132.i.i, align 8 %cmp53.i.i = icmp eq ptr %14, %__y.addr.0.lcssa.i.i.i29 - br i1 %cmp53.i.i, label %invoke.cont7.i, label %if.else57.i.i + br i1 %cmp53.i.i, label %if.then.i, label %if.else57.i.i if.else57.i.i: ; preds = %if.then50.i.i %call.i135.i.i = tail call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef %__y.addr.0.lcssa.i.i.i29) #24 @@ -11776,15 +11776,15 @@ if.end12.i154.i.i: ; preds = %if.else.i169.i.i, % call16.i158.i.noexc.i: ; preds = %if.end12.i154.i.i br i1 %call16.i158.i29.i, label %if.then.i, label %if.then.i3 -invoke.cont7.i: ; preds = %if.then64.i.i, %if.then50.i.i, %if.then32.i.i, %if.then18.i.i, %call16.i.i.noexc.i, %if.then.i.i.i, %if.then9.i.i - %retval.sroa.0.2.i.i = phi ptr [ null, %if.then9.i.i ], [ %__y.addr.0.lcssa.i.i.i29, %if.then18.i.i ], [ null, %if.then50.i.i ], [ %__y.addr.0.lcssa.i.i.i29, %if.then32.i.i ], [ %call.i135.i.i, %if.then64.i.i ], [ null, %if.then.i.i.i ], [ null, %call16.i.i.noexc.i ] - %retval.sroa.12.2.i.i = phi ptr [ %9, %if.then9.i.i ], [ %__y.addr.0.lcssa.i.i.i29, %if.then18.i.i ], [ %__y.addr.0.lcssa.i.i.i29, %if.then50.i.i ], [ %__y.addr.0.lcssa.i.i.i29, %if.then32.i.i ], [ %call.i135.i.i, %if.then64.i.i ], [ %__y.0.lcssa46.i.i.i, %if.then.i.i.i ], [ %__y.0.lcssa47.i.i.i, %call16.i.i.noexc.i ] +invoke.cont7.i: ; preds = %if.then64.i.i, %if.then9.i.i + %retval.sroa.0.2.i.i = phi ptr [ null, %if.then9.i.i ], [ %call.i135.i.i, %if.then64.i.i ] + %retval.sroa.12.2.i.i = phi ptr [ %9, %if.then9.i.i ], [ %call.i135.i.i, %if.then64.i.i ] %tobool.not.i = icmp eq ptr %retval.sroa.12.2.i.i, null br i1 %tobool.not.i, label %if.then.i3, label %if.then.i -if.then.i: ; preds = %invoke.cont7.i, %call16.i158.i.noexc.i, %if.then.i165.i.i, %if.then64.i.i, %call16.i117.i.noexc.i, %if.then.i124.i.i, %if.then32.i.i - %retval.sroa.12.2.i46.i = phi ptr [ %retval.sroa.12.2.i.i, %invoke.cont7.i ], [ %__y.0.lcssa46.i166.i.i, %if.then.i165.i.i ], [ %__y.0.lcssa46.i125.i.i, %if.then.i124.i.i ], [ %call.i.i.i, %if.then32.i.i ], [ %__y.addr.0.lcssa.i.i.i29, %if.then64.i.i ], [ %__y.0.lcssa47.i114.i.i, %call16.i117.i.noexc.i ], [ %__y.0.lcssa47.i155.i.i, %call16.i158.i.noexc.i ] - %retval.sroa.0.2.i45.i = phi ptr [ %retval.sroa.0.2.i.i, %invoke.cont7.i ], [ null, %if.then.i165.i.i ], [ null, %if.then.i124.i.i ], [ null, %if.then32.i.i ], [ null, %if.then64.i.i ], [ null, %call16.i117.i.noexc.i ], [ null, %call16.i158.i.noexc.i ] +if.then.i: ; preds = %call16.i.i.noexc.i, %if.then.i.i.i, %if.then50.i.i, %invoke.cont7.i, %call16.i158.i.noexc.i, %if.then.i165.i.i, %if.then64.i.i, %call16.i117.i.noexc.i, %if.then.i124.i.i, %if.then32.i.i + %retval.sroa.12.2.i46.i = phi ptr [ %retval.sroa.12.2.i.i, %invoke.cont7.i ], [ %__y.0.lcssa46.i166.i.i, %if.then.i165.i.i ], [ %__y.0.lcssa46.i125.i.i, %if.then.i124.i.i ], [ %call.i.i.i, %if.then32.i.i ], [ %__y.addr.0.lcssa.i.i.i29, %if.then64.i.i ], [ %__y.0.lcssa47.i114.i.i, %call16.i117.i.noexc.i ], [ %__y.0.lcssa47.i155.i.i, %call16.i158.i.noexc.i ], [ %__y.0.lcssa47.i.i.i, %call16.i.i.noexc.i ], [ %__y.0.lcssa46.i.i.i, %if.then.i.i.i ], [ %__y.addr.0.lcssa.i.i.i29, %if.then50.i.i ] + %retval.sroa.0.2.i45.i = phi ptr [ %retval.sroa.0.2.i.i, %invoke.cont7.i ], [ null, %if.then.i165.i.i ], [ null, %if.then.i124.i.i ], [ null, %if.then32.i.i ], [ null, %if.then64.i.i ], [ null, %call16.i117.i.noexc.i ], [ null, %call16.i158.i.noexc.i ], [ null, %call16.i.i.noexc.i ], [ null, %if.then.i.i.i ], [ null, %if.then50.i.i ] %cmp.not.i.i31.i = icmp ne ptr %retval.sroa.0.2.i45.i, null %cmp2.i.i.i = icmp eq ptr %add.ptr.i.i.i, %retval.sroa.12.2.i46.i %or.cond.i.i.i = select i1 %cmp.not.i.i31.i, i1 true, i1 %cmp2.i.i.i @@ -11820,9 +11820,10 @@ lpad.i: ; preds = %lpad.loopexit.split tail call fastcc void @_ZNSt8_Rb_treeIN3ue212_GLOBAL__N_113UncalcLeafKeyESt4pairIKS2_St6vectorINS0_12graph_detail17vertex_descriptorINS0_9ue2_graphINS0_9RoseGraphENS0_15RoseVertexPropsENS0_13RoseEdgePropsEEEEESaISD_EEESt10_Select1stISG_ESt4lessIS2_ESaISG_EE10_Auto_nodeD2Ev(ptr nonnull %call5.i.i.i.i.i.i) #23 br label %common.resume.i -_ZNSt8_Rb_treeIN3ue212_GLOBAL__N_113UncalcLeafKeyESt4pairIKS2_St6vectorINS0_12graph_detail17vertex_descriptorINS0_9ue2_graphINS0_9RoseGraphENS0_15RoseVertexPropsENS0_13RoseEdgePropsEEEEESaISD_EEESt10_Select1stISG_ESt4lessIS2_ESaISG_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS4_EESR_IJEEEEESt17_Rb_tree_iteratorISG_ESt23_Rb_tree_const_iteratorISG_EDpOT_.exit: ; preds = %if.then.i, %lor.rhs.i.i.i - %17 = phi i1 [ true, %if.then.i ], [ %call5.i.i35.i, %lor.rhs.i.i.i ] - tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %17, ptr noundef nonnull %call5.i.i.i.i.i.i, ptr noundef nonnull %retval.sroa.12.2.i46.i, ptr noundef nonnull align 8 dereferenceable(32) %add.ptr.i.i.i) #23 +_ZNSt8_Rb_treeIN3ue212_GLOBAL__N_113UncalcLeafKeyESt4pairIKS2_St6vectorINS0_12graph_detail17vertex_descriptorINS0_9ue2_graphINS0_9RoseGraphENS0_15RoseVertexPropsENS0_13RoseEdgePropsEEEEESaISD_EEESt10_Select1stISG_ESt4lessIS2_ESaISG_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS4_EESR_IJEEEEESt17_Rb_tree_iteratorISG_ESt23_Rb_tree_const_iteratorISG_EDpOT_.exit: ; preds = %if.then32.i.i, %if.then18.i.i, %if.then.i, %lor.rhs.i.i.i + %retval.sroa.12.2.i46.i18 = phi ptr [ %retval.sroa.12.2.i46.i, %if.then.i ], [ %retval.sroa.12.2.i46.i, %lor.rhs.i.i.i ], [ %__y.addr.0.lcssa.i.i.i29, %if.then18.i.i ], [ %__y.addr.0.lcssa.i.i.i29, %if.then32.i.i ] + %17 = phi i1 [ true, %if.then.i ], [ %call5.i.i35.i, %lor.rhs.i.i.i ], [ true, %if.then18.i.i ], [ true, %if.then32.i.i ] + tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %17, ptr noundef nonnull %call5.i.i.i.i.i.i, ptr noundef nonnull %retval.sroa.12.2.i46.i18, ptr noundef nonnull align 8 dereferenceable(32) %add.ptr.i.i.i) #23 %_M_node_count.i.i34.i = getelementptr inbounds i8, ptr %this, i64 40 %18 = load i64, ptr %_M_node_count.i.i34.i, align 8 %inc.i.i.i = add i64 %18, 1 diff --git a/bench/icu/optimized/ustrcase.ll b/bench/icu/optimized/ustrcase.ll index d2f00ef6dbe..459627030df 100644 --- a/bench/icu/optimized/ustrcase.ll +++ b/bench/icu/optimized/ustrcase.ll @@ -1729,12 +1729,10 @@ if.else.i125: ; preds = %if.then166 br i1 %cmp1.i126, label %return.sink.split, label %_ZN6icu_7512_GLOBAL__N_111appendUCharEPDsiiDs.exit _ZN6icu_7512_GLOBAL__N_111appendUCharEPDsiiDs.exit: ; preds = %if.then.i, %if.else.i125 - %add.i127 = add nsw i32 %destIndex.0196, 1 - %cmp169 = icmp slt i32 %destIndex.0196, -1 + %add.i127 = add nuw nsw i32 %destIndex.0196, 1 %and171 = and i32 %data.2, 98304 %cmp172.not = icmp eq i32 %and171, 0 - %or.cond115 = select i1 %cmp169, i1 true, i1 %cmp172.not - br i1 %or.cond115, label %if.end175, label %if.then173 + br i1 %cmp172.not, label %if.end175, label %if.then173 if.then173: ; preds = %_ZN6icu_7512_GLOBAL__N_111appendUCharEPDsiiDs.exit %cmp.i131 = icmp slt i32 %add.i127, %destCapacity @@ -1751,7 +1749,7 @@ if.else.i132: ; preds = %if.then173 br i1 %cmp1.i133, label %return.sink.split, label %if.end3.i134 if.end3.i134: ; preds = %if.else.i132, %if.then.i137 - %add.i135 = add nsw i32 %destIndex.0196, 2 + %add.i135 = add nuw nsw i32 %destIndex.0196, 2 br label %if.end175 if.end175: ; preds = %if.end3.i134, %_ZN6icu_7512_GLOBAL__N_111appendUCharEPDsiiDs.exit diff --git a/bench/jsonnet/optimized/vm.cpp.ll b/bench/jsonnet/optimized/vm.cpp.ll index d356670f460..2f672c39d2b 100644 --- a/bench/jsonnet/optimized/vm.cpp.ll +++ b/bench/jsonnet/optimized/vm.cpp.ll @@ -21490,7 +21490,7 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %74 = getelementptr i8, ptr %66, i64 24 %.val10.i.i = load ptr, ptr %74, align 8 %75 = icmp eq ptr %.val10.i.i, null - br i1 %75, label %.thread.i, label %132 + br i1 %75, label %.thread.i, label %.thread.i.thread 76: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i.i %.02529.i15.i.i = load ptr, ptr %3, align 8 @@ -21651,9 +21651,9 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %131 = icmp slt i32 %127, 0 br i1 %131, label %.thread.i, label %.thread15.i -132: ; preds = %111, %99, %73, %61, %34 - %.sroa.083.0.i.i = phi ptr [ null, %34 ], [ %63, %61 ], [ null, %99 ], [ %.08.lcssa.i.i.i16, %73 ], [ %104, %111 ] - %.sroa.12.0.i.i = phi ptr [ %35, %34 ], [ %63, %61 ], [ %101, %99 ], [ %.08.lcssa.i.i.i16, %73 ], [ %104, %111 ] +132: ; preds = %111, %99, %61, %34 + %.sroa.083.0.i.i = phi ptr [ null, %34 ], [ %63, %61 ], [ null, %99 ], [ %104, %111 ] + %.sroa.12.0.i.i = phi ptr [ %35, %34 ], [ %63, %61 ], [ %101, %99 ], [ %104, %111 ] %.not.i = icmp eq ptr %.sroa.12.0.i.i, null br i1 %.not.i, label %.thread15.i, label %.thread.i @@ -21663,7 +21663,7 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %.not.i.i11.i = icmp ne ptr %.sroa.083.0.i11.i, null %133 = icmp eq ptr %.sroa.12.0.i12.i, %4 %or.cond.i.i.i = select i1 %.not.i.i11.i, i1 true, i1 %133 - br i1 %or.cond.i.i.i, label %141, label %134 + br i1 %or.cond.i.i.i, label %.thread.i.thread, label %134 134: ; preds = %.thread.i %135 = getelementptr inbounds i8, ptr %.sroa.12.0.i12.i, i64 32 @@ -21679,15 +21679,16 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i: ; preds = %134 %140 = icmp slt i32 %136, 0 - br label %141 - -141: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i, %.thread.i - %142 = phi i1 [ true, %.thread.i ], [ %140, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i ] - tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %142, ptr noundef nonnull %20, ptr noundef nonnull %.sroa.12.0.i12.i, ptr noundef nonnull align 8 dereferenceable(32) %4) #34 - %143 = getelementptr inbounds i8, ptr %0, i64 40 - %144 = load i64, ptr %143, align 8 - %145 = add i64 %144, 1 - store i64 %145, ptr %143, align 8 + br label %.thread.i.thread + +.thread.i.thread: ; preds = %73, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i, %.thread.i + %.sroa.12.0.i12.i24 = phi ptr [ %.sroa.12.0.i12.i, %.thread.i ], [ %.sroa.12.0.i12.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i ], [ %.08.lcssa.i.i.i16, %73 ] + %141 = phi i1 [ true, %.thread.i ], [ %140, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i ], [ true, %73 ] + tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %141, ptr noundef nonnull %20, ptr noundef nonnull %.sroa.12.0.i12.i24, ptr noundef nonnull align 8 dereferenceable(32) %4) #34 + %142 = getelementptr inbounds i8, ptr %0, i64 40 + %143 = load i64, ptr %142, align 8 + %144 = add i64 %143, 1 + store i64 %144, ptr %142, align 8 br label %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_MN7jsonnet8internal12_GLOBAL__N_111InterpreterEFPKNS9_3ASTERKNS9_13LocationRangeERKSt6vectorINSA_5ValueESaISJ_EEEESt10_Select1stISQ_ESt4lessIS5_ESaISQ_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJOS5_EES11_IJEEEEESt17_Rb_tree_iteratorISQ_ESt23_Rb_tree_const_iteratorISQ_EDpOT_.exit .thread15.i: ; preds = %132, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i52.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit38.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i27.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i.i.i @@ -21696,10 +21697,10 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi tail call void @_ZdlPv(ptr noundef nonnull %20) #35 br label %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_MN7jsonnet8internal12_GLOBAL__N_111InterpreterEFPKNS9_3ASTERKNS9_13LocationRangeERKSt6vectorINSA_5ValueESaISJ_EEEESt10_Select1stISQ_ESt4lessIS5_ESaISQ_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJOS5_EES11_IJEEEEESt17_Rb_tree_iteratorISQ_ESt23_Rb_tree_const_iteratorISQ_EDpOT_.exit -_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_MN7jsonnet8internal12_GLOBAL__N_111InterpreterEFPKNS9_3ASTERKNS9_13LocationRangeERKSt6vectorINSA_5ValueESaISJ_EEEESt10_Select1stISQ_ESt4lessIS5_ESaISQ_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJOS5_EES11_IJEEEEESt17_Rb_tree_iteratorISQ_ESt23_Rb_tree_const_iteratorISQ_EDpOT_.exit: ; preds = %.thread15.i, %141, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit - %.sroa.014.0 = phi ptr [ %.19.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit ], [ %20, %141 ], [ %.sroa.01.0.ph.i, %.thread15.i ] - %146 = getelementptr inbounds i8, ptr %.sroa.014.0, i64 64 - ret ptr %146 +_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_MN7jsonnet8internal12_GLOBAL__N_111InterpreterEFPKNS9_3ASTERKNS9_13LocationRangeERKSt6vectorINSA_5ValueESaISJ_EEEESt10_Select1stISQ_ESt4lessIS5_ESaISQ_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJOS5_EES11_IJEEEEESt17_Rb_tree_iteratorISQ_ESt23_Rb_tree_const_iteratorISQ_EDpOT_.exit: ; preds = %.thread15.i, %.thread.i.thread, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit + %.sroa.014.0 = phi ptr [ %.19.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit ], [ %20, %.thread.i.thread ], [ %.sroa.01.0.ph.i, %.thread15.i ] + %145 = getelementptr inbounds i8, ptr %.sroa.014.0, i64 64 + ret ptr %145 } ; Function Attrs: mustprogress uwtable @@ -62275,7 +62276,7 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %74 = getelementptr i8, ptr %66, i64 24 %.val10.i.i = load ptr, ptr %74, align 8 %75 = icmp eq ptr %.val10.i.i, null - br i1 %75, label %.thread.i, label %132 + br i1 %75, label %.thread.i, label %.thread.i.thread 76: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i.i %.02529.i15.i.i = load ptr, ptr %3, align 8 @@ -62436,9 +62437,9 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %131 = icmp slt i32 %127, 0 br i1 %131, label %.thread.i, label %.thread15.i -132: ; preds = %111, %99, %73, %61, %34 - %.sroa.083.0.i.i = phi ptr [ null, %34 ], [ %63, %61 ], [ null, %99 ], [ %.08.lcssa.i.i.i16, %73 ], [ %104, %111 ] - %.sroa.12.0.i.i = phi ptr [ %35, %34 ], [ %63, %61 ], [ %101, %99 ], [ %.08.lcssa.i.i.i16, %73 ], [ %104, %111 ] +132: ; preds = %111, %99, %61, %34 + %.sroa.083.0.i.i = phi ptr [ null, %34 ], [ %63, %61 ], [ null, %99 ], [ %104, %111 ] + %.sroa.12.0.i.i = phi ptr [ %35, %34 ], [ %63, %61 ], [ %101, %99 ], [ %104, %111 ] %.not.i = icmp eq ptr %.sroa.12.0.i.i, null br i1 %.not.i, label %.thread15.i, label %.thread.i @@ -62448,7 +62449,7 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %.not.i.i11.i = icmp ne ptr %.sroa.083.0.i11.i, null %133 = icmp eq ptr %.sroa.12.0.i12.i, %4 %or.cond.i.i.i = select i1 %.not.i.i11.i, i1 true, i1 %133 - br i1 %or.cond.i.i.i, label %141, label %134 + br i1 %or.cond.i.i.i, label %.thread.i.thread, label %134 134: ; preds = %.thread.i %135 = getelementptr inbounds i8, ptr %.sroa.12.0.i12.i, i64 32 @@ -62464,15 +62465,16 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i: ; preds = %134 %140 = icmp slt i32 %136, 0 - br label %141 - -141: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i, %.thread.i - %142 = phi i1 [ true, %.thread.i ], [ %140, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i ] - tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %142, ptr noundef nonnull %20, ptr noundef nonnull %.sroa.12.0.i12.i, ptr noundef nonnull align 8 dereferenceable(32) %4) #34 - %143 = getelementptr inbounds i8, ptr %0, i64 40 - %144 = load i64, ptr %143, align 8 - %145 = add i64 %144, 1 - store i64 %145, ptr %143, align 8 + br label %.thread.i.thread + +.thread.i.thread: ; preds = %73, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i, %.thread.i + %.sroa.12.0.i12.i24 = phi ptr [ %.sroa.12.0.i12.i, %.thread.i ], [ %.sroa.12.0.i12.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i ], [ %.08.lcssa.i.i.i16, %73 ] + %141 = phi i1 [ true, %.thread.i ], [ %140, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i ], [ true, %73 ] + tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %141, ptr noundef nonnull %20, ptr noundef nonnull %.sroa.12.0.i12.i24, ptr noundef nonnull align 8 dereferenceable(32) %4) #34 + %142 = getelementptr inbounds i8, ptr %0, i64 40 + %143 = load i64, ptr %142, align 8 + %144 = add i64 %143, 1 + store i64 %144, ptr %142, align 8 br label %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_PN7jsonnet8internal12_GLOBAL__N_19HeapThunkEESt10_Select1stISD_ESt4lessIS5_ESaISD_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJOS5_EESO_IJEEEEESt17_Rb_tree_iteratorISD_ESt23_Rb_tree_const_iteratorISD_EDpOT_.exit .thread15.i: ; preds = %132, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i52.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit38.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i27.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i.i.i @@ -62481,10 +62483,10 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi tail call void @_ZdlPv(ptr noundef nonnull %20) #35 br label %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_PN7jsonnet8internal12_GLOBAL__N_19HeapThunkEESt10_Select1stISD_ESt4lessIS5_ESaISD_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJOS5_EESO_IJEEEEESt17_Rb_tree_iteratorISD_ESt23_Rb_tree_const_iteratorISD_EDpOT_.exit -_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_PN7jsonnet8internal12_GLOBAL__N_19HeapThunkEESt10_Select1stISD_ESt4lessIS5_ESaISD_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJOS5_EESO_IJEEEEESt17_Rb_tree_iteratorISD_ESt23_Rb_tree_const_iteratorISD_EDpOT_.exit: ; preds = %.thread15.i, %141, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit - %.sroa.014.0 = phi ptr [ %.19.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit ], [ %20, %141 ], [ %.sroa.01.0.ph.i, %.thread15.i ] - %146 = getelementptr inbounds i8, ptr %.sroa.014.0, i64 64 - ret ptr %146 +_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_PN7jsonnet8internal12_GLOBAL__N_19HeapThunkEESt10_Select1stISD_ESt4lessIS5_ESaISD_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJOS5_EESO_IJEEEEESt17_Rb_tree_iteratorISD_ESt23_Rb_tree_const_iteratorISD_EDpOT_.exit: ; preds = %.thread15.i, %.thread.i.thread, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit + %.sroa.014.0 = phi ptr [ %.19.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit ], [ %20, %.thread.i.thread ], [ %.sroa.01.0.ph.i, %.thread15.i ] + %145 = getelementptr inbounds i8, ptr %.sroa.014.0, i64 64 + ret ptr %145 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/libquic/optimized/ssl_cipher.c.ll b/bench/libquic/optimized/ssl_cipher.c.ll index c69696323e2..b841d38a0b0 100644 --- a/bench/libquic/optimized/ssl_cipher.c.ll +++ b/bench/libquic/optimized/ssl_cipher.c.ll @@ -3560,27 +3560,27 @@ land.lhs.true232: ; preds = %if.then229 br i1 %tobool234.not, label %if.then235, label %if.end238.thread if.then235: ; preds = %land.lhs.true232 - %curr.047.i = load ptr, ptr %head_p, align 8 - %cmp.not48.i = icmp eq ptr %curr.047.i, null - br i1 %cmp.not48.i, label %while.end.i, label %while.body.i + %curr.050.i = load ptr, ptr %head_p, align 8 + %cmp.not51.i = icmp eq ptr %curr.050.i, null + br i1 %cmp.not51.i, label %while.end.i, label %while.body.i while.body.i: ; preds = %if.then235, %if.end.i - %curr.050.i = phi ptr [ %curr.0.i, %if.end.i ], [ %curr.047.i, %if.then235 ] - %max_strength_bits.049.i = phi i32 [ %max_strength_bits.1.i, %if.end.i ], [ 0, %if.then235 ] - %active.i = getelementptr inbounds i8, ptr %curr.050.i, i64 8 + %curr.053.i = phi ptr [ %curr.0.i, %if.end.i ], [ %curr.050.i, %if.then235 ] + %max_strength_bits.052.i = phi i32 [ %max_strength_bits.1.i, %if.end.i ], [ 0, %if.then235 ] + %active.i = getelementptr inbounds i8, ptr %curr.053.i, i64 8 %34 = load i32, ptr %active.i, align 8 %tobool.not.i = icmp eq i32 %34, 0 br i1 %tobool.not.i, label %if.end.i, label %land.lhs.true.i land.lhs.true.i: ; preds = %while.body.i - %35 = load ptr, ptr %curr.050.i, align 8 + %35 = load ptr, ptr %curr.053.i, align 8 %cmp.i.i = icmp eq ptr %35, null - br i1 %cmp.i.i, label %SSL_CIPHER_get_bits.exit.thread.i, label %if.end.i.i + br i1 %cmp.i.i, label %if.end.i, label %if.end.i.i if.end.i.i: ; preds = %land.lhs.true.i %algorithm_enc.i.i = getelementptr inbounds i8, ptr %35, i64 20 %36 = load i32, ptr %algorithm_enc.i.i, align 4 - switch i32 %36, label %sw.default.i.i [ + switch i32 %36, label %if.end.i [ i32 4, label %SSL_CIPHER_get_bits.exit.i i32 16, label %SSL_CIPHER_get_bits.exit.i i32 2, label %SSL_CIPHER_get_bits.exit.i @@ -3589,7 +3589,6 @@ if.end.i.i: ; preds = %land.lhs.true.i i32 64, label %sw.bb1.i.i i32 256, label %sw.bb1.i.i i32 1, label %sw.bb2.i.i - i32 128, label %sw.bb3.i.i ] sw.bb1.i.i: ; preds = %if.end.i.i, %if.end.i.i, %if.end.i.i, %if.end.i.i @@ -3598,20 +3597,10 @@ sw.bb1.i.i: ; preds = %if.end.i.i, %if.end sw.bb2.i.i: ; preds = %if.end.i.i br label %SSL_CIPHER_get_bits.exit.i -sw.bb3.i.i: ; preds = %if.end.i.i - br label %SSL_CIPHER_get_bits.exit.i - -sw.default.i.i: ; preds = %if.end.i.i - br label %SSL_CIPHER_get_bits.exit.i - -SSL_CIPHER_get_bits.exit.i: ; preds = %sw.default.i.i, %sw.bb3.i.i, %sw.bb2.i.i, %sw.bb1.i.i, %if.end.i.i, %if.end.i.i, %if.end.i.i - %retval.0.i.i = phi i32 [ 0, %sw.default.i.i ], [ 0, %sw.bb3.i.i ], [ 112, %sw.bb2.i.i ], [ 256, %sw.bb1.i.i ], [ 128, %if.end.i.i ], [ 128, %if.end.i.i ], [ 128, %if.end.i.i ] - %cmp1.not.i = icmp sgt i32 %retval.0.i.i, %max_strength_bits.049.i - br i1 %cmp1.not.i, label %if.end.i22.i, label %if.end.i - -SSL_CIPHER_get_bits.exit.thread.i: ; preds = %land.lhs.true.i - %spec.select.i = tail call i32 @llvm.smax.i32(i32 %max_strength_bits.049.i, i32 0) - br label %if.end.i +SSL_CIPHER_get_bits.exit.i: ; preds = %sw.bb2.i.i, %sw.bb1.i.i, %if.end.i.i, %if.end.i.i, %if.end.i.i + %retval.0.i.i = phi i32 [ 112, %sw.bb2.i.i ], [ 256, %sw.bb1.i.i ], [ 128, %if.end.i.i ], [ 128, %if.end.i.i ], [ 128, %if.end.i.i ] + %cmp1.i112 = icmp ugt i32 %retval.0.i.i, %max_strength_bits.052.i + br i1 %cmp1.i112, label %if.end.i22.i, label %if.end.i if.end.i22.i: ; preds = %SSL_CIPHER_get_bits.exit.i switch i32 %36, label %sw.default.i31.i [ @@ -3638,9 +3627,9 @@ sw.bb3.i24.i: ; preds = %if.end.i22.i sw.default.i31.i: ; preds = %if.end.i22.i br label %if.end.i -if.end.i: ; preds = %sw.default.i31.i, %sw.bb3.i24.i, %sw.bb2.i29.i, %sw.bb1.i30.i, %if.end.i22.i, %if.end.i22.i, %if.end.i22.i, %SSL_CIPHER_get_bits.exit.thread.i, %SSL_CIPHER_get_bits.exit.i, %while.body.i - %max_strength_bits.1.i = phi i32 [ %max_strength_bits.049.i, %SSL_CIPHER_get_bits.exit.i ], [ %max_strength_bits.049.i, %while.body.i ], [ 0, %sw.default.i31.i ], [ 0, %sw.bb3.i24.i ], [ 112, %sw.bb2.i29.i ], [ 256, %sw.bb1.i30.i ], [ 128, %if.end.i22.i ], [ 128, %if.end.i22.i ], [ 128, %if.end.i22.i ], [ %spec.select.i, %SSL_CIPHER_get_bits.exit.thread.i ] - %next.i = getelementptr inbounds i8, ptr %curr.050.i, i64 16 +if.end.i: ; preds = %sw.default.i31.i, %sw.bb3.i24.i, %sw.bb2.i29.i, %sw.bb1.i30.i, %if.end.i22.i, %if.end.i22.i, %if.end.i22.i, %SSL_CIPHER_get_bits.exit.i, %if.end.i.i, %land.lhs.true.i, %while.body.i + %max_strength_bits.1.i = phi i32 [ %max_strength_bits.052.i, %SSL_CIPHER_get_bits.exit.i ], [ %max_strength_bits.052.i, %while.body.i ], [ 0, %sw.default.i31.i ], [ 0, %sw.bb3.i24.i ], [ 112, %sw.bb2.i29.i ], [ 256, %sw.bb1.i30.i ], [ 128, %if.end.i22.i ], [ 128, %if.end.i22.i ], [ 128, %if.end.i22.i ], [ %max_strength_bits.052.i, %if.end.i.i ], [ %max_strength_bits.052.i, %land.lhs.true.i ] + %next.i = getelementptr inbounds i8, ptr %curr.053.i, i64 16 %curr.0.i = load ptr, ptr %next.i, align 8 %cmp.not.i = icmp eq ptr %curr.0.i, null br i1 %cmp.not.i, label %while.end.i, label %while.body.i, !llvm.loop !14 @@ -3659,21 +3648,21 @@ if.end238.thread15: ; preds = %while.end.i br label %44 if.end7.i: ; preds = %while.end.i - br i1 %cmp.not48.i, label %for.body.preheader.i, label %while.body14.i + br i1 %cmp.not51.i, label %for.body.preheader.i, label %while.body14.i for.body.preheader.i: ; preds = %if.end20.i, %if.end7.i %37 = zext nneg i32 %max_strength_bits.0.lcssa.i to i64 br label %for.body.i while.body14.i: ; preds = %if.end7.i, %if.end20.i - %curr.153.i = phi ptr [ %curr.1.i, %if.end20.i ], [ %curr.047.i, %if.end7.i ] - %active15.i = getelementptr inbounds i8, ptr %curr.153.i, i64 8 + %curr.156.i = phi ptr [ %curr.1.i, %if.end20.i ], [ %curr.050.i, %if.end7.i ] + %active15.i = getelementptr inbounds i8, ptr %curr.156.i, i64 8 %38 = load i32, ptr %active15.i, align 8 %tobool16.not.i = icmp eq i32 %38, 0 br i1 %tobool16.not.i, label %if.end20.i, label %if.then17.i if.then17.i: ; preds = %while.body14.i - %39 = load ptr, ptr %curr.153.i, align 8 + %39 = load ptr, ptr %curr.156.i, align 8 %cmp.i33.i = icmp eq ptr %39, null br i1 %cmp.i33.i, label %SSL_CIPHER_get_bits.exit44.i, label %if.end.i34.i @@ -3706,14 +3695,14 @@ sw.default.i43.i: ; preds = %if.end.i34.i SSL_CIPHER_get_bits.exit44.i: ; preds = %sw.default.i43.i, %sw.bb3.i36.i, %sw.bb2.i41.i, %sw.bb1.i42.i, %if.end.i34.i, %if.end.i34.i, %if.end.i34.i, %if.then17.i %retval.0.i40.i = phi i64 [ 0, %if.then17.i ], [ 0, %sw.default.i43.i ], [ 0, %sw.bb3.i36.i ], [ 112, %sw.bb2.i41.i ], [ 256, %sw.bb1.i42.i ], [ 128, %if.end.i34.i ], [ 128, %if.end.i34.i ], [ 128, %if.end.i34.i ] - %arrayidx.i112 = getelementptr inbounds i32, ptr %calloc.i, i64 %retval.0.i40.i - %41 = load i32, ptr %arrayidx.i112, align 4 + %arrayidx.i113 = getelementptr inbounds i32, ptr %calloc.i, i64 %retval.0.i40.i + %41 = load i32, ptr %arrayidx.i113, align 4 %inc.i = add nsw i32 %41, 1 - store i32 %inc.i, ptr %arrayidx.i112, align 4 + store i32 %inc.i, ptr %arrayidx.i113, align 4 br label %if.end20.i if.end20.i: ; preds = %SSL_CIPHER_get_bits.exit44.i, %while.body14.i - %next21.i = getelementptr inbounds i8, ptr %curr.153.i, i64 16 + %next21.i = getelementptr inbounds i8, ptr %curr.156.i, i64 16 %curr.1.i = load ptr, ptr %next21.i, align 8 %cmp12.not.i = icmp eq ptr %curr.1.i, null br i1 %cmp12.not.i, label %for.body.preheader.i, label %while.body14.i, !llvm.loop !15 @@ -4526,9 +4515,6 @@ declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.ucmp.i32.i32(i32, i32) #12 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #12 - ; Function Attrs: nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #13 diff --git a/bench/libquic/optimized/url_canon_mailtourl.cc.ll b/bench/libquic/optimized/url_canon_mailtourl.cc.ll index 83c1a223072..dd2f424c78b 100644 --- a/bench/libquic/optimized/url_canon_mailtourl.cc.ll +++ b/bench/libquic/optimized/url_canon_mailtourl.cc.ll @@ -188,21 +188,20 @@ if.then18: ; preds = %for.body %14 = load i32, ptr %ch.i, align 4 call void @_ZN3url12DoAppendUTF8INS_12CanonOutputTIcEETnPFvhPT_EXadL_ZNS_17AppendEscapedCharIhcEEvS3_PNS1_IT0_EEEEEEvjS4_(i32 noundef %14, ptr noundef nonnull %output) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %ch.i) - %15 = and i8 %success.057, 1 - %tobool2327 = icmp ne i8 %15, 0 + %tobool2327 = icmp ne i8 %success.057, 0 %tobool23 = select i1 %call.i, i1 %tobool2327, i1 false %frombool = zext i1 %tobool23 to i8 br label %for.inc if.else: ; preds = %for.body - %16 = load i32, ptr %cur_len_.i, align 4 - %17 = load i32, ptr %buffer_len_.i, align 8 - %cmp.i40 = icmp slt i32 %16, %17 + %15 = load i32, ptr %cur_len_.i, align 4 + %16 = load i32, ptr %buffer_len_.i, align 8 + %cmp.i40 = icmp slt i32 %15, %16 br i1 %cmp.i40, label %return.sink.split.i, label %if.end.i if.end.i: ; preds = %if.else - %cmp.i.i41 = icmp eq i32 %17, 0 - %spec.select60 = select i1 %cmp.i.i41, i32 16, i32 %17 + %cmp.i.i41 = icmp eq i32 %16, 0 + %spec.select60 = select i1 %cmp.i.i41, i32 16, i32 %16 br label %do.body.i.i43 do.body.i.i43: ; preds = %if.end.i, %if.end.i.i46 @@ -212,32 +211,32 @@ do.body.i.i43: ; preds = %if.end.i, %if.end.i if.end.i.i46: ; preds = %do.body.i.i43 %mul.i.i47 = shl nsw i32 %new_len.0.i.i44, 1 - %cmp5.i.not.i = icmp sgt i32 %mul.i.i47, %17 + %cmp5.i.not.i = icmp sgt i32 %mul.i.i47, %16 br i1 %cmp5.i.not.i, label %if.end5.i, label %do.body.i.i43, !llvm.loop !5 if.end5.i: ; preds = %if.end.i.i46 %vtable.i.i48 = load ptr, ptr %output, align 8 %vfn.i.i49 = getelementptr inbounds i8, ptr %vtable.i.i48, i64 16 - %18 = load ptr, ptr %vfn.i.i49, align 8 - call void %18(ptr noundef nonnull align 8 dereferenceable(24) %output, i32 noundef %mul.i.i47) - %19 = load i32, ptr %cur_len_.i, align 4 + %17 = load ptr, ptr %vfn.i.i49, align 8 + call void %17(ptr noundef nonnull align 8 dereferenceable(24) %output, i32 noundef %mul.i.i47) + %18 = load i32, ptr %cur_len_.i, align 4 br label %return.sink.split.i return.sink.split.i: ; preds = %if.else, %if.end5.i - %.sink2.i = phi i32 [ %19, %if.end5.i ], [ %16, %if.else ] + %.sink2.i = phi i32 [ %18, %if.end5.i ], [ %15, %if.else ] %.sink.i = load ptr, ptr %.sink.in.i, align 8 %idxprom8.i = sext i32 %.sink2.i to i64 %arrayidx9.i = getelementptr inbounds i8, ptr %.sink.i, i64 %idxprom8.i store i8 %13, ptr %arrayidx9.i, align 1 - %20 = load i32, ptr %cur_len_.i, align 4 - %inc11.i = add nsw i32 %20, 1 + %19 = load i32, ptr %cur_len_.i, align 4 + %inc11.i = add nsw i32 %19, 1 store i32 %inc11.i, ptr %cur_len_.i, align 4 br label %for.inc for.inc: ; preds = %do.body.i.i43, %return.sink.split.i, %if.then18 %success.1 = phi i8 [ %frombool, %if.then18 ], [ %success.057, %return.sink.split.i ], [ %success.057, %do.body.i.i43 ] - %21 = load i32, ptr %i, align 4 - %inc = add nsw i32 %21, 1 + %20 = load i32, ptr %i, align 4 + %inc = add nsw i32 %20, 1 store i32 %inc, ptr %i, align 4 %cmp = icmp slt i32 %inc, %add.i37 br i1 %cmp, label %for.body, label %for.end.loopexit, !llvm.loop !8 @@ -245,14 +244,14 @@ for.inc: ; preds = %do.body.i.i43, %ret for.end.loopexit: ; preds = %for.inc %.pre = load i32, ptr %cur_len_.i, align 4 %.pre58 = load i32, ptr %path8, align 8 - %22 = trunc nuw i8 %success.1 to i1 + %21 = trunc nuw i8 %success.1 to i1 br label %for.end for.end: ; preds = %for.end.loopexit, %if.then - %23 = phi i32 [ %9, %if.then ], [ %.pre58, %for.end.loopexit ] - %24 = phi i32 [ %9, %if.then ], [ %.pre, %for.end.loopexit ] - %success.0.lcssa = phi i1 [ true, %if.then ], [ %22, %for.end.loopexit ] - %sub = sub nsw i32 %24, %23 + %22 = phi i32 [ %9, %if.then ], [ %.pre58, %for.end.loopexit ] + %23 = phi i32 [ %9, %if.then ], [ %.pre, %for.end.loopexit ] + %success.0.lcssa = phi i1 [ true, %if.then ], [ %21, %for.end.loopexit ] + %sub = sub nsw i32 %23, %22 br label %if.end31 if.else29: ; preds = %_ZN3url12CanonOutputTIcE6AppendEPKci.exit @@ -266,10 +265,10 @@ if.end31: ; preds = %if.else29, %for.end %len.i52 = getelementptr inbounds i8, ptr %new_parsed, i64 44 store i32 %.sink, ptr %len.i52, align 4 %query = getelementptr inbounds i8, ptr %source, i64 48 - %25 = load ptr, ptr %query, align 8 + %24 = load ptr, ptr %query, align 8 %query32 = getelementptr inbounds i8, ptr %parsed, i64 48 %query33 = getelementptr inbounds i8, ptr %new_parsed, i64 48 - call void @_ZN3url17CanonicalizeQueryEPKcRKNS_9ComponentEPNS_16CharsetConverterEPNS_12CanonOutputTIcEEPS2_(ptr noundef %25, ptr noundef nonnull align 4 dereferenceable(8) %query32, ptr noundef null, ptr noundef nonnull %output, ptr noundef nonnull %query33) + call void @_ZN3url17CanonicalizeQueryEPKcRKNS_9ComponentEPNS_16CharsetConverterEPNS_12CanonOutputTIcEEPS2_(ptr noundef %24, ptr noundef nonnull align 4 dereferenceable(8) %query32, ptr noundef null, ptr noundef nonnull %output, ptr noundef nonnull %query33) ret i1 %success.2 } @@ -385,22 +384,21 @@ if.then18.i: ; preds = %for.body.i %14 = load i32, ptr %char_value.i.i, align 4 call void @_ZN3url12DoAppendUTF8INS_12CanonOutputTIcEETnPFvhPT_EXadL_ZNS_17AppendEscapedCharIhcEEvS3_PNS1_IT0_EEEEEEvjS4_(i32 noundef %14, ptr noundef nonnull %output) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %char_value.i.i) - %15 = and i8 %success.057.i, 1 - %tobool2327.i = icmp ne i8 %15, 0 + %tobool2327.i = icmp ne i8 %success.057.i, 0 %tobool23.i = select i1 %call.i.i, i1 %tobool2327.i, i1 false %frombool.i = zext i1 %tobool23.i to i8 br label %for.inc.i if.else.i: ; preds = %for.body.i %conv24.i = trunc nuw i16 %12 to i8 - %16 = load i32, ptr %cur_len_.i.i, align 4 - %17 = load i32, ptr %buffer_len_.i.i, align 8 - %cmp.i40.i = icmp slt i32 %16, %17 + %15 = load i32, ptr %cur_len_.i.i, align 4 + %16 = load i32, ptr %buffer_len_.i.i, align 8 + %cmp.i40.i = icmp slt i32 %15, %16 br i1 %cmp.i40.i, label %return.sink.split.i.i, label %if.end.i.i if.end.i.i: ; preds = %if.else.i - %cmp.i.i41.i = icmp eq i32 %17, 0 - %spec.select11 = select i1 %cmp.i.i41.i, i32 16, i32 %17 + %cmp.i.i41.i = icmp eq i32 %16, 0 + %spec.select11 = select i1 %cmp.i.i41.i, i32 16, i32 %16 br label %do.body.i.i43.i do.body.i.i43.i: ; preds = %if.end.i.i, %if.end.i.i46.i @@ -410,32 +408,32 @@ do.body.i.i43.i: ; preds = %if.end.i.i, %if.end if.end.i.i46.i: ; preds = %do.body.i.i43.i %mul.i.i47.i = shl nsw i32 %new_len.0.i.i44.i, 1 - %cmp5.i.not.i.i = icmp sgt i32 %mul.i.i47.i, %17 + %cmp5.i.not.i.i = icmp sgt i32 %mul.i.i47.i, %16 br i1 %cmp5.i.not.i.i, label %if.end5.i.i, label %do.body.i.i43.i, !llvm.loop !5 if.end5.i.i: ; preds = %if.end.i.i46.i %vtable.i.i48.i = load ptr, ptr %output, align 8 %vfn.i.i49.i = getelementptr inbounds i8, ptr %vtable.i.i48.i, i64 16 - %18 = load ptr, ptr %vfn.i.i49.i, align 8 - call void %18(ptr noundef nonnull align 8 dereferenceable(24) %output, i32 noundef %mul.i.i47.i) - %19 = load i32, ptr %cur_len_.i.i, align 4 + %17 = load ptr, ptr %vfn.i.i49.i, align 8 + call void %17(ptr noundef nonnull align 8 dereferenceable(24) %output, i32 noundef %mul.i.i47.i) + %18 = load i32, ptr %cur_len_.i.i, align 4 br label %return.sink.split.i.i return.sink.split.i.i: ; preds = %if.end5.i.i, %if.else.i - %.sink2.i.i = phi i32 [ %19, %if.end5.i.i ], [ %16, %if.else.i ] + %.sink2.i.i = phi i32 [ %18, %if.end5.i.i ], [ %15, %if.else.i ] %.sink.i.i = load ptr, ptr %.sink.in.i.i, align 8 %idxprom8.i.i = sext i32 %.sink2.i.i to i64 %arrayidx9.i.i = getelementptr inbounds i8, ptr %.sink.i.i, i64 %idxprom8.i.i store i8 %conv24.i, ptr %arrayidx9.i.i, align 1 - %20 = load i32, ptr %cur_len_.i.i, align 4 - %inc11.i.i = add nsw i32 %20, 1 + %19 = load i32, ptr %cur_len_.i.i, align 4 + %inc11.i.i = add nsw i32 %19, 1 store i32 %inc11.i.i, ptr %cur_len_.i.i, align 4 br label %for.inc.i for.inc.i: ; preds = %do.body.i.i43.i, %return.sink.split.i.i, %if.then18.i %success.1.i = phi i8 [ %frombool.i, %if.then18.i ], [ %success.057.i, %return.sink.split.i.i ], [ %success.057.i, %do.body.i.i43.i ] - %21 = load i32, ptr %i.i, align 4 - %inc.i = add nsw i32 %21, 1 + %20 = load i32, ptr %i.i, align 4 + %inc.i = add nsw i32 %20, 1 store i32 %inc.i, ptr %i.i, align 4 %cmp.i = icmp slt i32 %inc.i, %add.i37.i br i1 %cmp.i, label %for.body.i, label %for.end.loopexit.i, !llvm.loop !9 @@ -443,14 +441,14 @@ for.inc.i: ; preds = %do.body.i.i43.i, %r for.end.loopexit.i: ; preds = %for.inc.i %.pre.i = load i32, ptr %cur_len_.i.i, align 4 %.pre58.i = load i32, ptr %path8.i, align 8 - %22 = trunc nuw i8 %success.1.i to i1 + %21 = trunc nuw i8 %success.1.i to i1 br label %for.end.i for.end.i: ; preds = %for.end.loopexit.i, %if.then.i - %23 = phi i32 [ %9, %if.then.i ], [ %.pre58.i, %for.end.loopexit.i ] - %24 = phi i32 [ %9, %if.then.i ], [ %.pre.i, %for.end.loopexit.i ] - %success.0.lcssa.i = phi i1 [ true, %if.then.i ], [ %22, %for.end.loopexit.i ] - %sub.i = sub nsw i32 %24, %23 + %22 = phi i32 [ %9, %if.then.i ], [ %.pre58.i, %for.end.loopexit.i ] + %23 = phi i32 [ %9, %if.then.i ], [ %.pre.i, %for.end.loopexit.i ] + %success.0.lcssa.i = phi i1 [ true, %if.then.i ], [ %21, %for.end.loopexit.i ] + %sub.i = sub nsw i32 %23, %22 br label %_ZN3url12_GLOBAL__N_123DoCanonicalizeMailtoURLIttEEbRKNS_18URLComponentSourceIT_EERKNS_6ParsedEPNS_12CanonOutputTIcEEPS7_.exit if.else30.i: ; preds = %_ZN3url12CanonOutputTIcE6AppendEPKci.exit.i diff --git a/bench/libquic/optimized/url_canon_pathurl.cc.ll b/bench/libquic/optimized/url_canon_pathurl.cc.ll index 42f8047d76a..9677aeee2dd 100644 --- a/bench/libquic/optimized/url_canon_pathurl.cc.ll +++ b/bench/libquic/optimized/url_canon_pathurl.cc.ll @@ -549,21 +549,20 @@ if.then8: ; preds = %for.body %9 = load i32, ptr %ch.i, align 4 call void @_ZN3url12DoAppendUTF8INS_12CanonOutputTIcEETnPFvhPT_EXadL_ZNS_17AppendEscapedCharIhcEEvS3_PNS1_IT0_EEEEEEvjS4_(i32 noundef %9, ptr noundef nonnull %output) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %ch.i) - %10 = and i8 %success.050, 1 - %tobool1316 = icmp ne i8 %10, 0 + %tobool1316 = icmp ne i8 %success.050, 0 %tobool13 = select i1 %call.i, i1 %tobool1316, i1 false %frombool = zext i1 %tobool13 to i8 br label %for.inc if.else: ; preds = %for.body - %11 = load i32, ptr %cur_len_.i18, align 4 - %12 = load i32, ptr %buffer_len_.i21, align 8 - %cmp.i22 = icmp slt i32 %11, %12 + %10 = load i32, ptr %cur_len_.i18, align 4 + %11 = load i32, ptr %buffer_len_.i21, align 8 + %cmp.i22 = icmp slt i32 %10, %11 br i1 %cmp.i22, label %return.sink.split.i35, label %if.end.i23 if.end.i23: ; preds = %if.else - %cmp.i.i24 = icmp eq i32 %12, 0 - %spec.select53 = select i1 %cmp.i.i24, i32 16, i32 %12 + %cmp.i.i24 = icmp eq i32 %11, 0 + %spec.select53 = select i1 %cmp.i.i24, i32 16, i32 %11 br label %do.body.i.i26 do.body.i.i26: ; preds = %if.end.i23, %if.end.i.i29 @@ -573,46 +572,46 @@ do.body.i.i26: ; preds = %if.end.i23, %if.end if.end.i.i29: ; preds = %do.body.i.i26 %mul.i.i30 = shl nsw i32 %new_len.0.i.i27, 1 - %cmp5.i.not.i31 = icmp sgt i32 %mul.i.i30, %12 + %cmp5.i.not.i31 = icmp sgt i32 %mul.i.i30, %11 br i1 %cmp5.i.not.i31, label %if.end5.i32, label %do.body.i.i26, !llvm.loop !5 if.end5.i32: ; preds = %if.end.i.i29 %vtable.i.i33 = load ptr, ptr %output, align 8 %vfn.i.i34 = getelementptr inbounds i8, ptr %vtable.i.i33, i64 16 - %13 = load ptr, ptr %vfn.i.i34, align 8 - call void %13(ptr noundef nonnull align 8 dereferenceable(24) %output, i32 noundef %mul.i.i30) - %14 = load i32, ptr %cur_len_.i18, align 4 + %12 = load ptr, ptr %vfn.i.i34, align 8 + call void %12(ptr noundef nonnull align 8 dereferenceable(24) %output, i32 noundef %mul.i.i30) + %13 = load i32, ptr %cur_len_.i18, align 4 br label %return.sink.split.i35 return.sink.split.i35: ; preds = %if.else, %if.end5.i32 - %.sink2.i36 = phi i32 [ %14, %if.end5.i32 ], [ %11, %if.else ] + %.sink2.i36 = phi i32 [ %13, %if.end5.i32 ], [ %10, %if.else ] %.sink.i38 = load ptr, ptr %.sink.in.i37, align 8 %idxprom8.i39 = sext i32 %.sink2.i36 to i64 %arrayidx9.i40 = getelementptr inbounds i8, ptr %.sink.i38, i64 %idxprom8.i39 store i8 %8, ptr %arrayidx9.i40, align 1 - %15 = load i32, ptr %cur_len_.i18, align 4 - %inc11.i41 = add nsw i32 %15, 1 + %14 = load i32, ptr %cur_len_.i18, align 4 + %inc11.i41 = add nsw i32 %14, 1 store i32 %inc11.i41, ptr %cur_len_.i18, align 4 br label %for.inc for.inc: ; preds = %do.body.i.i26, %return.sink.split.i35, %if.then8 %success.1 = phi i8 [ %frombool, %if.then8 ], [ %success.050, %return.sink.split.i35 ], [ %success.050, %do.body.i.i26 ] - %16 = load i32, ptr %i, align 4 - %inc = add nsw i32 %16, 1 + %15 = load i32, ptr %i, align 4 + %inc = add nsw i32 %15, 1 store i32 %inc, ptr %i, align 4 %cmp = icmp slt i32 %inc, %add.i br i1 %cmp, label %for.body, label %for.end.loopexit, !llvm.loop !7 for.end.loopexit: ; preds = %for.inc %.pre51 = load i32, ptr %new_component, align 4 - %17 = trunc nuw i8 %success.1 to i1 + %16 = trunc nuw i8 %success.1 to i1 br label %for.end for.end: ; preds = %for.end.loopexit, %if.end - %18 = phi i32 [ %5, %if.end ], [ %.pre51, %for.end.loopexit ] - %success.0.lcssa = phi i1 [ true, %if.end ], [ %17, %for.end.loopexit ] - %19 = load i32, ptr %cur_len_.i18, align 4 - %sub = sub nsw i32 %19, %18 + %17 = phi i32 [ %5, %if.end ], [ %.pre51, %for.end.loopexit ] + %success.0.lcssa = phi i1 [ true, %if.end ], [ %16, %for.end.loopexit ] + %18 = load i32, ptr %cur_len_.i18, align 4 + %sub = sub nsw i32 %18, %17 br label %if.end18 if.else17: ; preds = %entry @@ -938,22 +937,21 @@ if.then8: ; preds = %for.body %10 = load i32, ptr %char_value.i, align 4 call void @_ZN3url12DoAppendUTF8INS_12CanonOutputTIcEETnPFvhPT_EXadL_ZNS_17AppendEscapedCharIhcEEvS3_PNS1_IT0_EEEEEEvjS4_(i32 noundef %10, ptr noundef nonnull %output) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %char_value.i) - %11 = and i8 %success.050, 1 - %tobool1316 = icmp ne i8 %11, 0 + %tobool1316 = icmp ne i8 %success.050, 0 %tobool13 = select i1 %call.i, i1 %tobool1316, i1 false %frombool = zext i1 %tobool13 to i8 br label %for.inc if.else: ; preds = %for.body %conv14 = trunc nuw i16 %8 to i8 - %12 = load i32, ptr %cur_len_.i18, align 4 - %13 = load i32, ptr %buffer_len_.i21, align 8 - %cmp.i22 = icmp slt i32 %12, %13 + %11 = load i32, ptr %cur_len_.i18, align 4 + %12 = load i32, ptr %buffer_len_.i21, align 8 + %cmp.i22 = icmp slt i32 %11, %12 br i1 %cmp.i22, label %return.sink.split.i35, label %if.end.i23 if.end.i23: ; preds = %if.else - %cmp.i.i24 = icmp eq i32 %13, 0 - %spec.select53 = select i1 %cmp.i.i24, i32 16, i32 %13 + %cmp.i.i24 = icmp eq i32 %12, 0 + %spec.select53 = select i1 %cmp.i.i24, i32 16, i32 %12 br label %do.body.i.i26 do.body.i.i26: ; preds = %if.end.i23, %if.end.i.i29 @@ -963,46 +961,46 @@ do.body.i.i26: ; preds = %if.end.i23, %if.end if.end.i.i29: ; preds = %do.body.i.i26 %mul.i.i30 = shl nsw i32 %new_len.0.i.i27, 1 - %cmp5.i.not.i31 = icmp sgt i32 %mul.i.i30, %13 + %cmp5.i.not.i31 = icmp sgt i32 %mul.i.i30, %12 br i1 %cmp5.i.not.i31, label %if.end5.i32, label %do.body.i.i26, !llvm.loop !5 if.end5.i32: ; preds = %if.end.i.i29 %vtable.i.i33 = load ptr, ptr %output, align 8 %vfn.i.i34 = getelementptr inbounds i8, ptr %vtable.i.i33, i64 16 - %14 = load ptr, ptr %vfn.i.i34, align 8 - call void %14(ptr noundef nonnull align 8 dereferenceable(24) %output, i32 noundef %mul.i.i30) - %15 = load i32, ptr %cur_len_.i18, align 4 + %13 = load ptr, ptr %vfn.i.i34, align 8 + call void %13(ptr noundef nonnull align 8 dereferenceable(24) %output, i32 noundef %mul.i.i30) + %14 = load i32, ptr %cur_len_.i18, align 4 br label %return.sink.split.i35 return.sink.split.i35: ; preds = %if.else, %if.end5.i32 - %.sink2.i36 = phi i32 [ %15, %if.end5.i32 ], [ %12, %if.else ] + %.sink2.i36 = phi i32 [ %14, %if.end5.i32 ], [ %11, %if.else ] %.sink.i38 = load ptr, ptr %.sink.in.i37, align 8 %idxprom8.i39 = sext i32 %.sink2.i36 to i64 %arrayidx9.i40 = getelementptr inbounds i8, ptr %.sink.i38, i64 %idxprom8.i39 store i8 %conv14, ptr %arrayidx9.i40, align 1 - %16 = load i32, ptr %cur_len_.i18, align 4 - %inc11.i41 = add nsw i32 %16, 1 + %15 = load i32, ptr %cur_len_.i18, align 4 + %inc11.i41 = add nsw i32 %15, 1 store i32 %inc11.i41, ptr %cur_len_.i18, align 4 br label %for.inc for.inc: ; preds = %do.body.i.i26, %return.sink.split.i35, %if.then8 %success.1 = phi i8 [ %frombool, %if.then8 ], [ %success.050, %return.sink.split.i35 ], [ %success.050, %do.body.i.i26 ] - %17 = load i32, ptr %i, align 4 - %inc = add nsw i32 %17, 1 + %16 = load i32, ptr %i, align 4 + %inc = add nsw i32 %16, 1 store i32 %inc, ptr %i, align 4 %cmp = icmp slt i32 %inc, %add.i br i1 %cmp, label %for.body, label %for.end.loopexit, !llvm.loop !8 for.end.loopexit: ; preds = %for.inc %.pre51 = load i32, ptr %new_component, align 4 - %18 = trunc nuw i8 %success.1 to i1 + %17 = trunc nuw i8 %success.1 to i1 br label %for.end for.end: ; preds = %for.end.loopexit, %if.end - %19 = phi i32 [ %5, %if.end ], [ %.pre51, %for.end.loopexit ] - %success.0.lcssa = phi i1 [ true, %if.end ], [ %18, %for.end.loopexit ] - %20 = load i32, ptr %cur_len_.i18, align 4 - %sub = sub nsw i32 %20, %19 + %18 = phi i32 [ %5, %if.end ], [ %.pre51, %for.end.loopexit ] + %success.0.lcssa = phi i1 [ true, %if.end ], [ %17, %for.end.loopexit ] + %19 = load i32, ptr %cur_len_.i18, align 4 + %sub = sub nsw i32 %19, %18 br label %if.end19 if.else18: ; preds = %entry diff --git a/bench/llvm/optimized/SemaCast.cpp.ll b/bench/llvm/optimized/SemaCast.cpp.ll index c7de0bece6a..adb469361d0 100644 --- a/bench/llvm/optimized/SemaCast.cpp.ll +++ b/bench/llvm/optimized/SemaCast.cpp.ll @@ -12702,7 +12702,7 @@ select.unfold95.i: ; preds = %112, %112, %112 .loopexit: ; preds = %"_ZZL28unwrapCastAwayConstnessLevelRN5clang10ASTContextERNS_8QualTypeES3_ENK3$_1clES2_.exit85.i", %.lr.ph.i, %112, %89 %.sroa.09.0.copyload = phi i64 [ %.sroa.06.0.copyload103.i, %89 ], [ %.sroa.06.0.copyload.i, %"_ZZL28unwrapCastAwayConstnessLevelRN5clang10ASTContextERNS_8QualTypeES3_ENK3$_1clES2_.exit85.i" ], [ %.sroa.06.0.copyload107.i, %.lr.ph.i ], [ %.sroa.06.0.copyload107.i, %112 ] %.0.i.ph = phi i32 [ %.043.i, %89 ], [ %.2.i, %"_ZZL28unwrapCastAwayConstnessLevelRN5clang10ASTContextERNS_8QualTypeES3_ENK3$_1clES2_.exit85.i" ], [ %.1106.i, %.lr.ph.i ], [ %.1106.i, %112 ] - %spec.select = call i32 @llvm.smax.i32(i32 %.0.i.ph, i32 %.049) + %spec.select = call i32 @llvm.umax.i32(i32 %.0.i.ph, i32 %.049) store i64 0, ptr %11, align 8 store i64 0, ptr %12, align 8 %143 = load ptr, ptr %23, align 8 @@ -19570,9 +19570,6 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #13 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.umin.i32(i32, i32) #12 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #12 - ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #14 diff --git a/bench/meilisearch-rs/optimized/3f4k2xees4fvt0r.ll b/bench/meilisearch-rs/optimized/3f4k2xees4fvt0r.ll index f1b7025c2a7..e95e89f48c7 100644 --- a/bench/meilisearch-rs/optimized/3f4k2xees4fvt0r.ll +++ b/bench/meilisearch-rs/optimized/3f4k2xees4fvt0r.ll @@ -1758,8 +1758,8 @@ _ZN5serde2de7Visitor9visit_f3217hf997214fb547ba68E.exit: ; preds = %74, %80 %101 = trunc i32 %89 to i8 %102 = and i8 %101, 63 %103 = or disjoint i8 %102, -128 - %.sroa.0.i.1.i.1.i.1.i.1.i.1..sroa_idx387 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 1 - store i8 %103, ptr %.sroa.0.i.1.i.1.i.1.i.1.i.1..sroa_idx387, align 1, !alias.scope !115, !noalias !112 + %.sroa.0.i.1.i.1.i.1.i.1.i.1..sroa_idx376 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 1 + store i8 %103, ptr %.sroa.0.i.1.i.1.i.1.i.1.i.1..sroa_idx376, align 1, !alias.scope !115, !noalias !112 br label %_ZN4core4char7methods15encode_utf8_raw17he8dc2a367b21200bE.exit.i 104: ; preds = %93 @@ -1776,8 +1776,8 @@ _ZN5serde2de7Visitor9visit_f3217hf997214fb547ba68E.exit: ; preds = %74, %80 %112 = trunc i32 %89 to i8 %113 = and i8 %112, 63 %114 = or disjoint i8 %113, -128 - %.sroa.0.i.2.i.2.i.2.i.2.i.2..sroa_idx388 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 2 - store i8 %114, ptr %.sroa.0.i.2.i.2.i.2.i.2.i.2..sroa_idx388, align 2, !alias.scope !115, !noalias !112 + %.sroa.0.i.2.i.2.i.2.i.2.i.2..sroa_idx377 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 2 + store i8 %114, ptr %.sroa.0.i.2.i.2.i.2.i.2.i.2..sroa_idx377, align 2, !alias.scope !115, !noalias !112 br label %_ZN4core4char7methods15encode_utf8_raw17he8dc2a367b21200bE.exit.i 115: ; preds = %93 @@ -1789,8 +1789,8 @@ _ZN5serde2de7Visitor9visit_f3217hf997214fb547ba68E.exit: ; preds = %74, %80 %120 = trunc i32 %119 to i8 %121 = and i8 %120, 63 %122 = or disjoint i8 %121, -128 - %.sroa.0.i.1.i.1.i.1.i.1.i.1..sroa_idx386 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 1 - store i8 %122, ptr %.sroa.0.i.1.i.1.i.1.i.1.i.1..sroa_idx386, align 1, !alias.scope !115, !noalias !112 + %.sroa.0.i.1.i.1.i.1.i.1.i.1..sroa_idx375 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 1 + store i8 %122, ptr %.sroa.0.i.1.i.1.i.1.i.1.i.1..sroa_idx375, align 1, !alias.scope !115, !noalias !112 %123 = lshr i32 %89, 6 %124 = trunc i32 %123 to i8 %125 = and i8 %124, 63 @@ -1991,24 +1991,24 @@ _ZN5serde2de7Visitor18visit_borrowed_str17h3c144ba7d5001be2E.exit: ; preds = %15 %.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %27, i64 16 %.sroa.6139.0..sroa_idx = getelementptr inbounds i8, ptr %27, i64 8 %196 = icmp eq i64 %192, 0 - br i1 %196, label %._crit_edge, label %.lr.ph251 + br i1 %196, label %._crit_edge, label %.lr.ph245 -.lr.ph251: ; preds = %188, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17ha7534cf7e0e6c42aE.exit.i" - %.sroa.0.067250 = phi ptr [ %197, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17ha7534cf7e0e6c42aE.exit.i" ], [ %190, %188 ] - %.sroa.1065.0249 = phi i64 [ %198, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17ha7534cf7e0e6c42aE.exit.i" ], [ 0, %188 ] - %197 = getelementptr inbounds i8, ptr %.sroa.0.067250, i64 32 - %198 = add nuw nsw i64 %.sroa.1065.0249, 1 +.lr.ph245: ; preds = %188, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17ha7534cf7e0e6c42aE.exit.i" + %.sroa.0.067244 = phi ptr [ %197, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17ha7534cf7e0e6c42aE.exit.i" ], [ %190, %188 ] + %.sroa.1065.0243 = phi i64 [ %198, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17ha7534cf7e0e6c42aE.exit.i" ], [ 0, %188 ] + %197 = getelementptr inbounds i8, ptr %.sroa.0.067244, i64 32 + %198 = add nuw nsw i64 %.sroa.1065.0243, 1 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %24), !noalias !193 - invoke void @"_ZN106_$LT$serde..__private..de..content..ContentRefDeserializer$LT$E$GT$$u20$as$u20$serde..de..Deserializer$GT$15deserialize_any17hc6440ba371db66e4E.llvm.815708219594649150"(ptr noalias nocapture noundef nonnull sret([72 x i8]) align 8 dereferenceable(72) %24, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %.sroa.0.067250) + invoke void @"_ZN106_$LT$serde..__private..de..content..ContentRefDeserializer$LT$E$GT$$u20$as$u20$serde..de..Deserializer$GT$15deserialize_any17hc6440ba371db66e4E.llvm.815708219594649150"(ptr noalias nocapture noundef nonnull sret([72 x i8]) align 8 dereferenceable(72) %24, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %.sroa.0.067244) to label %.noexc34 unwind label %202 -.noexc34: ; preds = %.lr.ph251 +.noexc34: ; preds = %.lr.ph245 %199 = load i64, ptr %24, align 8, !range !200, !noalias !193, !noundef !8 %200 = icmp eq i64 %199, -9223372036854775803 %201 = load ptr, ptr %.sroa.564.0..sroa_idx, align 8, !noalias !193 br i1 %200, label %204, label %220 -202: ; preds = %.lr.ph251 +202: ; preds = %.lr.ph245 %203 = landingpad { ptr, i32 } cleanup br label %.body.i @@ -2016,7 +2016,7 @@ _ZN5serde2de7Visitor18visit_borrowed_str17h3c144ba7d5001be2E.exit: ; preds = %15 .body.i: ; preds = %225, %202 %eh.lpad-body.i = phi { ptr, i32 } [ %203, %202 ], [ %226, %225 ] invoke void @"_ZN4core3ptr68drop_in_place$LT$alloc..vec..Vec$LT$serde_json..value..Value$GT$$GT$17h7b2061ab96438278E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %28) #48 - to label %common.resume214 unwind label %233, !noalias !201 + to label %common.resume211 unwind label %233, !noalias !201 204: ; preds = %.noexc34 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %24), !noalias !193 @@ -2030,7 +2030,7 @@ _ZN5serde2de7Visitor18visit_borrowed_str17h3c144ba7d5001be2E.exit: ; preds = %15 %208 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr75drop_in_place$LT$alloc..raw_vec..RawVec$LT$serde_json..value..Value$GT$$GT$17h165a087306df9527E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %28) #48 - to label %common.resume214 unwind label %218, !noalias !201 + to label %common.resume211 unwind label %218, !noalias !201 "_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17haefe810f1cd9f9f4E.llvm.4616129397091597767.exit.i.i": ; preds = %204 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26), !noalias !209 @@ -2057,9 +2057,9 @@ _ZN5serde2de7Visitor18visit_borrowed_str17h3c144ba7d5001be2E.exit: ; preds = %15 call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #49, !noalias !201 unreachable -common.resume214: ; preds = %.body.i174, %386, %207, %.body.i, %242, %396 - %common.resume214.op = phi { ptr, i32 } [ %208, %207 ], [ %eh.lpad-body.i, %.body.i ], [ %243, %242 ], [ %397, %396 ], [ %lpad.thr_comm.i, %386 ], [ %.pn.i, %.body.i174 ] - resume { ptr, i32 } %common.resume214.op +common.resume211: ; preds = %.body.i171, %386, %207, %.body.i, %242, %396 + %common.resume211.op = phi { ptr, i32 } [ %208, %207 ], [ %eh.lpad-body.i, %.body.i ], [ %243, %242 ], [ %397, %396 ], [ %lpad.thr_comm.i, %386 ], [ %.pn.i, %.body.i171 ] + resume { ptr, i32 } %common.resume211.op 220: ; preds = %.noexc34 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %.sroa.7.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(56) %.sroa.6.0..sroa_idx, i64 56, i1 false) @@ -2094,7 +2094,7 @@ common.resume214: ; preds = %.body.i174, %386, % %231 = add i64 %221, 1 store i64 %231, ptr %195, align 8, !alias.scope !214, !noalias !217 %232 = icmp eq ptr %197, %193 - br i1 %232, label %._crit_edge.loopexit, label %.lr.ph251 + br i1 %232, label %._crit_edge.loopexit, label %.lr.ph245 233: ; preds = %.body.i %234 = landingpad { ptr, i32 } @@ -2109,7 +2109,6 @@ common.resume214: ; preds = %.body.i174, %386, % ._crit_edge: ; preds = %._crit_edge.loopexit, %188 %.sroa.055.0.copyload = phi ptr [ null, %188 ], [ %.sroa.055.0.copyload.pre, %._crit_edge.loopexit ] %.sroa.1065.0.lcssa = phi i64 [ 0, %188 ], [ %198, %._crit_edge.loopexit ] - %.sroa.0.067.lcssa = phi ptr [ %190, %188 ], [ %193, %._crit_edge.loopexit ] %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %31, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.5.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %194, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28), !noalias !189 @@ -2117,7 +2116,7 @@ common.resume214: ; preds = %.body.i174, %386, % store i64 -9223372036854775804, ptr %31, align 8, !noalias !187 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %31, i64 8 store ptr %.sroa.055.0.copyload, ptr %.sroa.4.0..sroa_idx, align 8, !noalias !187 - %235 = invoke noundef i64 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hc1c9d669549e0245E.llvm.8666068179502612882"(ptr noundef nonnull %.sroa.0.067.lcssa, ptr noundef nonnull %193, i64 noundef 0) + %235 = invoke noundef i64 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hc1c9d669549e0245E.llvm.8666068179502612882"(ptr noundef nonnull %193, ptr noundef nonnull %193, i64 noundef 0) to label %.noexc unwind label %242 .noexc: ; preds = %._crit_edge @@ -2144,7 +2143,7 @@ common.resume214: ; preds = %.body.i174, %386, % %243 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h8c450484c5264072E"(ptr noalias noundef nonnull align 8 dereferenceable(72) %31) #48 - to label %common.resume214 unwind label %248, !noalias !184 + to label %common.resume211 unwind label %248, !noalias !184 244: ; preds = %.noexc call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(72) %31, i64 72, i1 false), !noalias !223 @@ -2297,19 +2296,19 @@ _ZN5serde2de7Visitor18visit_borrowed_str17h72b1d0805b8ec8afE.exit.i.i.i.i.i: ; p 304: ; preds = %250 %305 = load i64, ptr @_ZN3std4hash6random11RandomState3new4KEYS7__getit5__KEY17heee2209a1bfc2aa6E, align 8, !range !126, !noalias !281, !noundef !8 %trunc.i.i.i.i = trunc nuw i64 %305 to i1 - br i1 %trunc.i.i.i.i, label %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread199", label %_ZN3std4hash6random11RandomState3new4KEYS7__getit17h4b052c8f88cfae3bE.exit.i.i + br i1 %trunc.i.i.i.i, label %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread196", label %_ZN3std4hash6random11RandomState3new4KEYS7__getit17h4b052c8f88cfae3bE.exit.i.i _ZN3std4hash6random11RandomState3new4KEYS7__getit17h4b052c8f88cfae3bE.exit.i.i: ; preds = %304 %306 = tail call noundef align 8 ptr @"_ZN3std3sys12thread_local10fast_local12Key$LT$T$GT$14try_initialize17hfefbb9714d37a715E.llvm.8265446259410684974"(ptr noundef nonnull align 8 @_ZN3std4hash6random11RandomState3new4KEYS7__getit5__KEY17heee2209a1bfc2aa6E, ptr noalias noundef align 8 dereferenceable_or_null(24) null), !noalias !288 %307 = icmp eq ptr %306, null - br i1 %307, label %308, label %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread199" + br i1 %307, label %308, label %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread196" 308: ; preds = %_ZN3std4hash6random11RandomState3new4KEYS7__getit17h4b052c8f88cfae3bE.exit.i.i call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %3), !noalias !289 call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.ba92da305e83b5c6df8a3e9a5e69fe1b.120, i64 noundef 70, ptr noundef nonnull align 1 %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ba92da305e83b5c6df8a3e9a5e69fe1b.198, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ba92da305e83b5c6df8a3e9a5e69fe1b.122) #47, !noalias !290 unreachable -"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread199": ; preds = %304, %_ZN3std4hash6random11RandomState3new4KEYS7__getit17h4b052c8f88cfae3bE.exit.i.i +"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread196": ; preds = %304, %_ZN3std4hash6random11RandomState3new4KEYS7__getit17h4b052c8f88cfae3bE.exit.i.i %.sroa.0.0.i.i2.i.i = phi ptr [ %306, %_ZN3std4hash6random11RandomState3new4KEYS7__getit17h4b052c8f88cfae3bE.exit.i.i ], [ getelementptr inbounds (i8, ptr @_ZN3std4hash6random11RandomState3new4KEYS7__getit5__KEY17heee2209a1bfc2aa6E, i64 8), %304 ] %309 = load i64, ptr %.sroa.0.0.i.i2.i.i, align 8, !noalias !288, !noundef !8 %310 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i2.i.i, i64 8 @@ -2380,7 +2379,7 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h4b052c8f88cfae3bE.exit.i11.i %322 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h3912e219446a661dE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %20) #48 - to label %.body.i174 unwind label %384, !noalias !289 + to label %.body.i171 unwind label %384, !noalias !289 "_ZN54_$LT$$RF$mut$u20$A$u20$as$u20$serde..de..MapAccess$GT$10next_value17h9bbfc16d49591da7E.exit.i": ; preds = %"_ZN87_$LT$serde..de..value..MapDeserializer$LT$I$C$E$GT$$u20$as$u20$serde..de..MapAccess$GT$15next_value_seed17hcb7585b0b5526a73E.exit.i.i" %323 = load i64, ptr %19, align 8, !range !200, !noalias !289, !noundef !8 @@ -2417,20 +2416,20 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h4b052c8f88cfae3bE.exit.i11.i call void @__rust_dealloc(ptr noundef nonnull %337, i64 noundef %334, i64 noundef %330) #46, !noalias !289 br label %383 -.body.i174: ; preds = %356, %.loopexit.split-lp.i, %.loopexit.i, %321 +.body.i171: ; preds = %356, %.loopexit.split-lp.i, %.loopexit.i, %321 %.pn.i = phi { ptr, i32 } [ %322, %321 ], [ %357, %356 ], [ %lpad.loopexit.i, %.loopexit.i ], [ %lpad.loopexit.split-lp.i, %.loopexit.split-lp.i ] invoke void @"_ZN4core3ptr110drop_in_place$LT$indexmap..map..core..IndexMapCore$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17hf729c7aebae7823eE"(ptr noalias noundef nonnull align 8 dereferenceable(72) %22) - to label %common.resume214 unwind label %384, !noalias !289 + to label %common.resume211 unwind label %384, !noalias !289 .loopexit.i: ; preds = %381, %377, %.lr.ph %lpad.loopexit.i = landingpad { ptr, i32 } cleanup - br label %.body.i174 + br label %.body.i171 .loopexit.split-lp.i: ; preds = %361, %342, %326, %325 %lpad.loopexit.split-lp.i = landingpad { ptr, i32 } cleanup - br label %.body.i174 + br label %.body.i171 338: ; preds = %325 %339 = getelementptr inbounds i8, ptr %14, i64 8 @@ -2463,14 +2462,14 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h4b052c8f88cfae3bE.exit.i11.i br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %"_ZN4core3ptr73drop_in_place$LT$core..option..Option$LT$serde_json..value..Value$GT$$GT$17h520a7a29cd623c52E.exit29.i" - %.sroa.0.0244 = phi ptr [ %348, %"_ZN4core3ptr73drop_in_place$LT$core..option..Option$LT$serde_json..value..Value$GT$$GT$17h520a7a29cd623c52E.exit29.i" ], [ %258, %.lr.ph.preheader ] - %.sroa.14.0243 = phi i64 [ %350, %"_ZN4core3ptr73drop_in_place$LT$core..option..Option$LT$serde_json..value..Value$GT$$GT$17h520a7a29cd623c52E.exit29.i" ], [ 1, %.lr.ph.preheader ] - %348 = getelementptr inbounds i8, ptr %.sroa.0.0244, i64 64 - %349 = getelementptr inbounds i8, ptr %.sroa.0.0244, i64 32 - %350 = add nuw nsw i64 %.sroa.14.0243, 1 + %.sroa.0.0238 = phi ptr [ %348, %"_ZN4core3ptr73drop_in_place$LT$core..option..Option$LT$serde_json..value..Value$GT$$GT$17h520a7a29cd623c52E.exit29.i" ], [ %258, %.lr.ph.preheader ] + %.sroa.14.0237 = phi i64 [ %350, %"_ZN4core3ptr73drop_in_place$LT$core..option..Option$LT$serde_json..value..Value$GT$$GT$17h520a7a29cd623c52E.exit29.i" ], [ 1, %.lr.ph.preheader ] + %348 = getelementptr inbounds i8, ptr %.sroa.0.0238, i64 64 + %349 = getelementptr inbounds i8, ptr %.sroa.0.0238, i64 32 + %350 = add nuw nsw i64 %.sroa.14.0237, 1 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !314 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !314 - invoke void @"_ZN106_$LT$serde..__private..de..content..ContentRefDeserializer$LT$E$GT$$u20$as$u20$serde..de..Deserializer$GT$15deserialize_str17hbba6385c2cc53e3dE.llvm.815708219594649150"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %.sroa.0.0244) + invoke void @"_ZN106_$LT$serde..__private..de..content..ContentRefDeserializer$LT$E$GT$$u20$as$u20$serde..de..Deserializer$GT$15deserialize_str17hbba6385c2cc53e3dE.llvm.815708219594649150"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %.sroa.0.0238) to label %.noexc34.i unwind label %.loopexit.i, !noalias !289 .noexc34.i: ; preds = %.lr.ph @@ -2488,7 +2487,7 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h4b052c8f88cfae3bE.exit.i11.i %357 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h3912e219446a661dE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #48 - to label %.body.i174 unwind label %373, !noalias !314 + to label %.body.i171 unwind label %373, !noalias !314 358: ; preds = %.noexc34.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %6, i64 24, i1 false), !noalias !314 @@ -2587,7 +2586,7 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h4b052c8f88cfae3bE.exit.i11.i br i1 %382, label %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit", label %.lr.ph "_ZN4core3ptr97drop_in_place$LT$serde_json..map..Map$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17hc05a4135b8084f20E.exit31.i": ; preds = %383, %.loopexit128.i - %.sroa.10181.0 = phi ptr [ %328, %383 ], [ %.sroa.10.0120.i, %.loopexit128.i ] + %.sroa.10178.0 = phi ptr [ %328, %383 ], [ %.sroa.10.0120.i, %.loopexit128.i ] call void @"_ZN4core3ptr110drop_in_place$LT$indexmap..map..core..IndexMapCore$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17hf729c7aebae7823eE"(ptr noalias noundef nonnull align 8 dereferenceable(72) %22), !noalias !289 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %22), !noalias !289 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23), !noalias !289 @@ -2600,7 +2599,7 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h4b052c8f88cfae3bE.exit.i11.i call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %21), !noalias !289 br label %"_ZN4core3ptr97drop_in_place$LT$serde_json..map..Map$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17hc05a4135b8084f20E.exit31.i" -384: ; preds = %386, %.body.i174, %321 +384: ; preds = %386, %.body.i171, %321 %385 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #49, !noalias !289 @@ -2610,10 +2609,10 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h4b052c8f88cfae3bE.exit.i11.i %lpad.thr_comm.i = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h3912e219446a661dE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %23) #48 - to label %common.resume214 unwind label %384, !noalias !289 + to label %common.resume211 unwind label %384, !noalias !289 "_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread": ; preds = %"_ZN4core3ptr97drop_in_place$LT$serde_json..map..Map$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17hc05a4135b8084f20E.exit31.i", %"_ZN83_$LT$serde_json..value..de..KeyClassifier$u20$as$u20$serde..de..DeserializeSeed$GT$11deserialize17h35d74cbc546e008eE.exit.i.i.i", %295, %287, %261 - %.sroa.10181.1.ph = phi ptr [ %.sroa.9.0.i.i.i, %"_ZN83_$LT$serde_json..value..de..KeyClassifier$u20$as$u20$serde..de..DeserializeSeed$GT$11deserialize17h35d74cbc546e008eE.exit.i.i.i" ], [ %294, %287 ], [ %302, %295 ], [ %262, %261 ], [ %.sroa.10181.0, %"_ZN4core3ptr97drop_in_place$LT$serde_json..map..Map$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17hc05a4135b8084f20E.exit31.i" ] + %.sroa.10178.1.ph = phi ptr [ %.sroa.9.0.i.i.i, %"_ZN83_$LT$serde_json..value..de..KeyClassifier$u20$as$u20$serde..de..DeserializeSeed$GT$11deserialize17h35d74cbc546e008eE.exit.i.i.i" ], [ %294, %287 ], [ %302, %295 ], [ %262, %261 ], [ %.sroa.10178.0, %"_ZN4core3ptr97drop_in_place$LT$serde_json..map..Map$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17hc05a4135b8084f20E.exit31.i" ] call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %16) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %.sroa.14.sroa.7.i) @@ -2623,42 +2622,42 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h4b052c8f88cfae3bE.exit.i11.i "_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit": ; preds = %"_ZN4core3ptr73drop_in_place$LT$core..option..Option$LT$serde_json..value..Value$GT$$GT$17h520a7a29cd623c52E.exit29.i", %375, %"_ZN4core3ptr73drop_in_place$LT$core..option..Option$LT$serde_json..value..Value$GT$$GT$17h520a7a29cd623c52E.exit.i" %.sroa.14.1 = phi i64 [ 1, %"_ZN4core3ptr73drop_in_place$LT$core..option..Option$LT$serde_json..value..Value$GT$$GT$17h520a7a29cd623c52E.exit.i" ], [ %347, %"_ZN4core3ptr73drop_in_place$LT$core..option..Option$LT$serde_json..value..Value$GT$$GT$17h520a7a29cd623c52E.exit29.i" ], [ %350, %375 ] %.sroa.0.1 = phi ptr [ %258, %"_ZN4core3ptr73drop_in_place$LT$core..option..Option$LT$serde_json..value..Value$GT$$GT$17h520a7a29cd623c52E.exit.i" ], [ %255, %"_ZN4core3ptr73drop_in_place$LT$core..option..Option$LT$serde_json..value..Value$GT$$GT$17h520a7a29cd623c52E.exit29.i" ], [ %348, %375 ] - %.sroa.0179.0.copyload180 = load i64, ptr %22, align 8, !noalias !293 - %.sroa.10181.0.copyload183 = load ptr, ptr %.sroa.472.0..sroa_idx.i, align 8, !noalias !293 - %.sroa.15.0.copyload185 = load i64, ptr %.sroa.573.0..sroa_idx.i, align 8, !noalias !293 + %.sroa.0176.0.copyload177 = load i64, ptr %22, align 8, !noalias !293 + %.sroa.10178.0.copyload180 = load ptr, ptr %.sroa.472.0..sroa_idx.i, align 8, !noalias !293 + %.sroa.15.0.copyload182 = load i64, ptr %.sroa.573.0..sroa_idx.i, align 8, !noalias !293 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.16, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.674.0..sroa_idx.i, i64 32, i1 false), !noalias !293 - %.sroa.17.0.copyload188 = load i64, ptr %.sroa.775.0..sroa_idx.i, align 8, !noalias !293 - %.sroa.18.0.copyload190 = load i64, ptr %.sroa.876.0..sroa_idx.i, align 8, !noalias !293 + %.sroa.17.0.copyload185 = load i64, ptr %.sroa.775.0..sroa_idx.i, align 8, !noalias !293 + %.sroa.18.0.copyload187 = load i64, ptr %.sroa.876.0..sroa_idx.i, align 8, !noalias !293 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %22), !noalias !289 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23), !noalias !289 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %16) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %.sroa.14.sroa.7.i) call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %18) - %387 = icmp eq i64 %.sroa.0179.0.copyload180, -9223372036854775803 + %387 = icmp eq i64 %.sroa.0176.0.copyload177, -9223372036854775803 br i1 %387, label %394, label %388 -388: ; preds = %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit", %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread199" - %.sroa.0.3213 = phi ptr [ %252, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread199" ], [ %.sroa.0.1, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit" ] - %.sroa.18.0212 = phi i64 [ %311, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread199" ], [ %.sroa.18.0.copyload190, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit" ] - %.sroa.14.3211 = phi i64 [ 0, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread199" ], [ %.sroa.14.1, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit" ] - %.sroa.0179.1210 = phi i64 [ 0, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread199" ], [ %.sroa.0179.0.copyload180, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit" ] - %.sroa.10181.1209 = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread199" ], [ %.sroa.10181.0.copyload183, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit" ] - %.sroa.15.0208 = phi i64 [ 0, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread199" ], [ %.sroa.15.0.copyload185, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit" ] - %.sroa.17.0207 = phi i64 [ %309, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread199" ], [ %.sroa.17.0.copyload188, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit" ] - store i64 %.sroa.0179.1210, ptr %30, align 8, !noalias !227 - %.sroa.10181.0..sroa_idx = getelementptr inbounds i8, ptr %30, i64 8 - store ptr %.sroa.10181.1209, ptr %.sroa.10181.0..sroa_idx, align 8, !noalias !227 +388: ; preds = %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit", %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread196" + %.sroa.0.3210 = phi ptr [ %252, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread196" ], [ %.sroa.0.1, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit" ] + %.sroa.18.0209 = phi i64 [ %311, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread196" ], [ %.sroa.18.0.copyload187, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit" ] + %.sroa.14.3208 = phi i64 [ 0, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread196" ], [ %.sroa.14.1, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit" ] + %.sroa.0176.1207 = phi i64 [ 0, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread196" ], [ %.sroa.0176.0.copyload177, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit" ] + %.sroa.10178.1206 = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread196" ], [ %.sroa.10178.0.copyload180, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit" ] + %.sroa.15.0205 = phi i64 [ 0, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread196" ], [ %.sroa.15.0.copyload182, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit" ] + %.sroa.17.0204 = phi i64 [ %309, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread196" ], [ %.sroa.17.0.copyload185, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit" ] + store i64 %.sroa.0176.1207, ptr %30, align 8, !noalias !227 + %.sroa.10178.0..sroa_idx = getelementptr inbounds i8, ptr %30, i64 8 + store ptr %.sroa.10178.1206, ptr %.sroa.10178.0..sroa_idx, align 8, !noalias !227 %.sroa.15.0..sroa_idx = getelementptr inbounds i8, ptr %30, i64 16 - store i64 %.sroa.15.0208, ptr %.sroa.15.0..sroa_idx, align 8, !noalias !227 + store i64 %.sroa.15.0205, ptr %.sroa.15.0..sroa_idx, align 8, !noalias !227 %.sroa.16.0..sroa_idx = getelementptr inbounds i8, ptr %30, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.16.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.16, i64 32, i1 false), !noalias !227 %.sroa.17.0..sroa_idx = getelementptr inbounds i8, ptr %30, i64 56 - store i64 %.sroa.17.0207, ptr %.sroa.17.0..sroa_idx, align 8, !noalias !227 + store i64 %.sroa.17.0204, ptr %.sroa.17.0..sroa_idx, align 8, !noalias !227 %.sroa.18.0..sroa_idx = getelementptr inbounds i8, ptr %30, i64 64 - store i64 %.sroa.18.0212, ptr %.sroa.18.0..sroa_idx, align 8, !noalias !227 + store i64 %.sroa.18.0209, ptr %.sroa.18.0..sroa_idx, align 8, !noalias !227 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.16) - %389 = invoke noundef i64 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h5d8fec5b6dcde9e4E.llvm.8666068179502612882"(ptr noundef nonnull %.sroa.0.3213, ptr noundef nonnull %255, i64 noundef 0) + %389 = invoke noundef i64 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h5d8fec5b6dcde9e4E.llvm.8666068179502612882"(ptr noundef nonnull %.sroa.0.3210, ptr noundef nonnull %255, i64 noundef 0) to label %.noexc30 unwind label %396 .noexc30: ; preds = %388 @@ -2666,16 +2665,16 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h4b052c8f88cfae3bE.exit.i11.i br i1 %390, label %398, label %391 391: ; preds = %.noexc30 - %392 = add i64 %389, %.sroa.14.3211 + %392 = add i64 %389, %.sroa.14.3208 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25), !noalias !333 - store i64 %.sroa.14.3211, ptr %25, align 8, !noalias !333 + store i64 %.sroa.14.3208, ptr %25, align 8, !noalias !333 %393 = invoke fastcc noundef nonnull align 8 ptr @_ZN5serde2de5Error14invalid_length17h971d75d14d5c9588E(i64 noundef %392, ptr noundef nonnull align 1 %25, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ba92da305e83b5c6df8a3e9a5e69fe1b.294) to label %399 unwind label %396 394: ; preds = %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread", %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit" - %.sroa.10181.1198 = phi ptr [ %.sroa.10181.1.ph, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread" ], [ %.sroa.10181.0.copyload183, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit" ] + %.sroa.10178.1195 = phi ptr [ %.sroa.10178.1.ph, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit.thread" ], [ %.sroa.10178.0.copyload180, %"_ZN165_$LT$serde_json..value..de..$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$GT$9visit_map17hd1e8fac96945c76bE.exit" ] %395 = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %.sroa.10181.1198, ptr %395, align 8, !alias.scope !224, !noalias !336 + store ptr %.sroa.10178.1195, ptr %395, align 8, !alias.scope !224, !noalias !336 store i64 -9223372036854775803, ptr %0, align 8, !alias.scope !224, !noalias !336 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.16) br label %401 @@ -2684,7 +2683,7 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h4b052c8f88cfae3bE.exit.i11.i %397 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h8c450484c5264072E"(ptr noalias noundef nonnull align 8 dereferenceable(72) %30) #48 - to label %common.resume214 unwind label %402, !noalias !224 + to label %common.resume211 unwind label %402, !noalias !224 398: ; preds = %.noexc30 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(72) %30, i64 72, i1 false), !noalias !336 diff --git a/bench/minetest/optimized/profilergraph.cpp.ll b/bench/minetest/optimized/profilergraph.cpp.ll index 70c03852b5f..3a29a65b666 100644 --- a/bench/minetest/optimized/profilergraph.cpp.ll +++ b/bench/minetest/optimized/profilergraph.cpp.ll @@ -1254,8 +1254,7 @@ if.end268: ; preds = %if.end255 br i1 %98, label %if.then270, label %if.else299 if.then270: ; preds = %if.end268 - %125 = and i8 %lastscaledvalue_exists.0716, 1 - %tobool271.not = icmp eq i8 %125, 0 + %tobool271.not = icmp eq i8 %lastscaledvalue_exists.0716, 0 br i1 %tobool271.not, label %cleanup323, label %if.then272 if.then272: ; preds = %if.then270 @@ -1275,8 +1274,8 @@ if.then272: ; preds = %if.then270 %agg.tmp288.sroa.0.0.copyload = load i32, ptr %color154, align 4, !tbaa !61 %vtable291 = load ptr, ptr %driver, align 8, !tbaa !77 %vfn292 = getelementptr inbounds i8, ptr %vtable291, i64 424 - %126 = load ptr, ptr %vfn292, align 8 - invoke void %126(ptr noundef nonnull align 8 dereferenceable(8) %driver, ptr noundef nonnull align 4 dereferenceable(8) %ref.tmp279, ptr noundef nonnull align 4 dereferenceable(8) %ref.tmp284, i32 %agg.tmp288.sroa.0.0.copyload) + %125 = load ptr, ptr %vfn292, align 8 + invoke void %125(ptr noundef nonnull align 8 dereferenceable(8) %driver, ptr noundef nonnull align 4 dereferenceable(8) %ref.tmp279, ptr noundef nonnull align 4 dereferenceable(8) %ref.tmp284, i32 %agg.tmp288.sroa.0.0.copyload) to label %invoke.cont293 unwind label %lpad286 invoke.cont293: ; preds = %if.then272 @@ -1285,7 +1284,7 @@ invoke.cont293: ; preds = %if.then272 br label %cleanup323 lpad286: ; preds = %if.then272 - %127 = landingpad { ptr, i32 } + %126 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp284) #19 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp279) #19 @@ -1304,8 +1303,8 @@ if.else299: ; preds = %if.end268 %agg.tmp310.sroa.0.0.copyload = load i32, ptr %color154, align 4, !tbaa !61 %vtable313 = load ptr, ptr %driver, align 8, !tbaa !77 %vfn314 = getelementptr inbounds i8, ptr %vtable313, i64 424 - %128 = load ptr, ptr %vfn314, align 8 - invoke void %128(ptr noundef nonnull align 8 dereferenceable(8) %driver, ptr noundef nonnull align 4 dereferenceable(8) %ref.tmp303, ptr noundef nonnull align 4 dereferenceable(8) %ref.tmp306, i32 %agg.tmp310.sroa.0.0.copyload) + %127 = load ptr, ptr %vfn314, align 8 + invoke void %127(ptr noundef nonnull align 8 dereferenceable(8) %driver, ptr noundef nonnull align 4 dereferenceable(8) %ref.tmp303, ptr noundef nonnull align 4 dereferenceable(8) %ref.tmp306, i32 %agg.tmp310.sroa.0.0.copyload) to label %invoke.cont315 unwind label %lpad308 invoke.cont315: ; preds = %if.else299 @@ -1314,7 +1313,7 @@ invoke.cont315: ; preds = %if.else299 br label %cleanup323 lpad308: ; preds = %if.else299 - %129 = landingpad { ptr, i32 } + %128 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp306) #19 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp303) #19 @@ -1330,19 +1329,19 @@ cleanup323: ; preds = %invoke.cont315, %in if.then.i640: ; preds = %cleanup323 %add.ptr.i642 = getelementptr inbounds i8, ptr %__begin2230.sroa.14.0712, i64 8 - %130 = load ptr, ptr %add.ptr.i642, align 8, !tbaa !20 - %add.ptr.i.i644 = getelementptr inbounds i8, ptr %130, i64 480 + %129 = load ptr, ptr %add.ptr.i642, align 8, !tbaa !20 + %add.ptr.i.i644 = getelementptr inbounds i8, ptr %129, i64 480 br label %_ZNSt15_Deque_iteratorIN13ProfilerGraph5PieceERKS1_PS2_EppEv.exit645 _ZNSt15_Deque_iteratorIN13ProfilerGraph5PieceERKS1_PS2_EppEv.exit645: ; preds = %if.then.i640, %cleanup323 %__begin2230.sroa.14.1 = phi ptr [ %add.ptr.i642, %if.then.i640 ], [ %__begin2230.sroa.14.0712, %cleanup323 ] %__begin2230.sroa.11.1 = phi ptr [ %add.ptr.i.i644, %if.then.i640 ], [ %__begin2230.sroa.11.0713, %cleanup323 ] - %__begin2230.sroa.0.1 = phi ptr [ %130, %if.then.i640 ], [ %incdec.ptr.i637, %cleanup323 ] + %__begin2230.sroa.0.1 = phi ptr [ %129, %if.then.i640 ], [ %incdec.ptr.i637, %cleanup323 ] %cmp.i.i559.not = icmp eq ptr %__begin2230.sroa.0.1, %100 br i1 %cmp.i.i559.not, label %for.cond.cleanup234, label %for.body235 ehcleanup350: ; preds = %lpad308, %lpad286, %ehcleanup224, %ehcleanup196, %ehcleanup160, %lpad130 - %.pn461.pn.pn = phi { ptr, i32 } [ %.pn458.pn, %ehcleanup224 ], [ %.pn455.pn, %ehcleanup196 ], [ %68, %lpad130 ], [ %.pn.pn, %ehcleanup160 ], [ %127, %lpad286 ], [ %129, %lpad308 ] + %.pn461.pn.pn = phi { ptr, i32 } [ %.pn458.pn, %ehcleanup224 ], [ %.pn455.pn, %ehcleanup196 ], [ %68, %lpad130 ], [ %.pn.pn, %ehcleanup160 ], [ %126, %lpad286 ], [ %128, %lpad308 ] call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %buf) #19 br label %ehcleanup373 diff --git a/bench/minetest/optimized/sound_manager.cpp.ll b/bench/minetest/optimized/sound_manager.cpp.ll index e1b46fff112..b7e1f91d144 100644 --- a/bench/minetest/optimized/sound_manager.cpp.ll +++ b/bench/minetest/optimized/sound_manager.cpp.ll @@ -5962,21 +5962,20 @@ _ZNSt8__detail9__variant16_Variant_storageILb0EJSt9monostateN5sound29sound_manag br i1 %switch, label %while.cond2, label %while.end common.resume: ; preds = %_ZNSt11unique_lockISt5mutexED2Ev.exit13.i.i, %lpad - %common.resume.op = phi { ptr, i32 } [ %lpad.phi, %lpad ], [ %39, %_ZNSt11unique_lockISt5mutexED2Ev.exit13.i.i ] + %common.resume.op = phi { ptr, i32 } [ %lpad.phi, %lpad ], [ %38, %_ZNSt11unique_lockISt5mutexED2Ev.exit13.i.i ] resume { ptr, i32 } %common.resume.op while.end: ; preds = %_ZNSt8__detail9__variant16_Variant_storageILb0EJSt9monostateN5sound29sound_manager_messages_to_mgr8PauseAllENS4_9ResumeAllENS4_14UpdateListenerENS4_15SetListenerGainENS4_13LoadSoundFileENS4_13LoadSoundDataENS4_15AddSoundToGroupENS4_9PlaySoundENS4_11PlaySoundAtENS4_9StopSoundENS4_9FadeSoundENS4_17UpdateSoundPosVelENS4_10PleaseStopEEED2Ev.exit - %31 = and i8 %stop_requested.1, 1 - %tobool.not = icmp eq i8 %31, 0 + %tobool.not = icmp eq i8 %stop_requested.1, 0 br i1 %tobool.not, label %cleanup24, label %while.end32 cleanup24: ; preds = %while.end call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ts.i.i) #28 %call.i.i.i = call i32 @clock_gettime(i32 noundef 4, ptr noundef nonnull %ts.i.i) #28 - %32 = load i64, ptr %ts.i.i, align 8, !tbaa !201 - %mul.i.i = mul i64 %32, 1000 - %33 = load i64, ptr %tv_nsec.i.i, align 8, !tbaa !203 - %div.i.i = udiv i64 %33, 1000000 + %31 = load i64, ptr %ts.i.i, align 8, !tbaa !201 + %mul.i.i = mul i64 %31, 1000 + %32 = load i64, ptr %tv_nsec.i.i, align 8, !tbaa !203 + %div.i.i = udiv i64 %32, 1000000 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ts.i.i) #28 %add.i.i = add i64 %mul.i.i, %t_step_start.0.neg83 %sub.i57 = add i64 %add.i.i, %div.i.i @@ -5984,10 +5983,10 @@ cleanup24: ; preds = %while.end %mul = fmul nsz float %conv.i58, 0x3F50624DE0000000 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ts.i59) #28 %call.i.i60 = call i32 @clock_gettime(i32 noundef 4, ptr noundef nonnull %ts.i59) #28 - %34 = load i64, ptr %ts.i59, align 8, !tbaa !201 - %mul.i61.neg = mul i64 %34, -1000 - %35 = load i64, ptr %tv_nsec.i62, align 8, !tbaa !203 - %div.i63 = udiv i64 %35, 1000000 + %33 = load i64, ptr %ts.i59, align 8, !tbaa !201 + %mul.i61.neg = mul i64 %33, -1000 + %34 = load i64, ptr %tv_nsec.i62, align 8, !tbaa !203 + %div.i63 = udiv i64 %34, 1000000 %add.i64.neg = sub i64 %mul.i61.neg, %div.i63 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ts.i59) #28 call void @_ZN5sound18OpenALSoundManager4stepEf(ptr noundef nonnull align 8 dereferenceable(848) %this, float noundef %mul) @@ -6008,17 +6007,17 @@ if.then.i.i.i.i.i: ; preds = %while.end32 _ZNSt11unique_lockISt5mutexEC2ERS0_.exit.i.i: ; preds = %while.end32 %_M_finish.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 744 - %36 = load ptr, ptr %_M_finish.i.i.i.i, align 8, !tbaa !133 + %35 = load ptr, ptr %_M_finish.i.i.i.i, align 8, !tbaa !133 %_M_last.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 760 - %37 = load ptr, ptr %_M_last.i.i.i.i, align 8, !tbaa !134 - %add.ptr.i.i.i.i66 = getelementptr inbounds i8, ptr %37, i64 -8 - %cmp.not.i.i.i.i = icmp eq ptr %36, %add.ptr.i.i.i.i66 + %36 = load ptr, ptr %_M_last.i.i.i.i, align 8, !tbaa !134 + %add.ptr.i.i.i.i66 = getelementptr inbounds i8, ptr %36, i64 -8 + %cmp.not.i.i.i.i = icmp eq ptr %35, %add.ptr.i.i.i.i66 br i1 %cmp.not.i.i.i.i, label %if.else.i.i.i.i, label %if.then.i.i.i.i67 if.then.i.i.i.i67: ; preds = %_ZNSt11unique_lockISt5mutexEC2ERS0_.exit.i.i - store i64 8589934592, ptr %36, align 4 - %38 = load ptr, ptr %_M_finish.i.i.i.i, align 8, !tbaa !133 - %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %38, i64 8 + store i64 8589934592, ptr %35, align 4 + %37 = load ptr, ptr %_M_finish.i.i.i.i, align 8, !tbaa !133 + %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %37, i64 8 store ptr %incdec.ptr.i.i.i.i, ptr %_M_finish.i.i.i.i, align 8, !tbaa !133 br label %invoke.cont.i.i @@ -6032,7 +6031,7 @@ invoke.cont.i.i: ; preds = %if.else.i.i.i.i, %i to label %_ZN5sound18OpenALSoundManager4sendESt7variantIJSt9monostateNS_31sound_manager_messages_to_proxy18ReportRemovedSoundENS3_7StoppedEEE.exit unwind label %_ZNSt11unique_lockISt5mutexED2Ev.exit13.i.i _ZNSt11unique_lockISt5mutexED2Ev.exit13.i.i: ; preds = %invoke.cont.i.i, %if.else.i.i.i.i - %39 = landingpad { ptr, i32 } + %38 = landingpad { ptr, i32 } cleanup %call1.i.i.i.i12.i.i = call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull %m_mutex.i.i) #28 br label %common.resume diff --git a/bench/msdfgen/optimized/main.cpp.ll b/bench/msdfgen/optimized/main.cpp.ll index a665bed8c30..3f0e757bc37 100644 --- a/bench/msdfgen/optimized/main.cpp.ll +++ b/bench/msdfgen/optimized/main.cpp.ll @@ -5328,34 +5328,33 @@ sw.bb: ; preds = %for.cond br i1 %clear.0, label %while.cond.preheader, label %if.end18 while.cond.preheader: ; preds = %sw.bb - %2 = and i8 %change.0, 1 - %inc = zext nneg i8 %2 to i32 + %inc = zext nneg i8 %change.0 to i32 %spec.select = add i32 %e.0, %inc %_M_finish.i30 = getelementptr inbounds i8, ptr %contour.0, i64 8 %conv1047 = zext i32 %spec.select to i64 - %3 = load ptr, ptr %_M_finish.i30, align 8 - %4 = load ptr, ptr %contour.0, align 8 - %sub.ptr.lhs.cast.i3148 = ptrtoint ptr %3 to i64 - %sub.ptr.rhs.cast.i3249 = ptrtoint ptr %4 to i64 + %2 = load ptr, ptr %_M_finish.i30, align 8 + %3 = load ptr, ptr %contour.0, align 8 + %sub.ptr.lhs.cast.i3148 = ptrtoint ptr %2 to i64 + %sub.ptr.rhs.cast.i3249 = ptrtoint ptr %3 to i64 %sub.ptr.sub.i3350 = sub i64 %sub.ptr.lhs.cast.i3148, %sub.ptr.rhs.cast.i3249 %sub.ptr.div.i3451 = ashr exact i64 %sub.ptr.sub.i3350, 3 %cmp1252 = icmp ugt i64 %sub.ptr.div.i3451, %conv1047 br i1 %cmp1252, label %while.body, label %if.end18 while.body: ; preds = %while.cond.preheader, %while.body - %5 = phi ptr [ %7, %while.body ], [ %4, %while.cond.preheader ] + %4 = phi ptr [ %6, %while.body ], [ %3, %while.cond.preheader ] %conv1054 = phi i64 [ %conv10, %while.body ], [ %conv1047, %while.cond.preheader ] %e.253 = phi i32 [ %inc17, %while.body ], [ %spec.select, %while.cond.preheader ] - %add.ptr.i = getelementptr inbounds %"class.msdfgen::EdgeHolder", ptr %5, i64 %conv1054 + %add.ptr.i = getelementptr inbounds %"class.msdfgen::EdgeHolder", ptr %4, i64 %conv1054 %call16 = tail call noundef ptr @_ZN7msdfgen10EdgeHolderptEv(ptr noundef nonnull align 8 dereferenceable(8) %add.ptr.i) %color = getelementptr inbounds i8, ptr %call16, i64 8 store i32 7, ptr %color, align 8 %inc17 = add i32 %e.253, 1 %conv10 = zext i32 %inc17 to i64 - %6 = load ptr, ptr %_M_finish.i30, align 8 - %7 = load ptr, ptr %contour.0, align 8 - %sub.ptr.lhs.cast.i31 = ptrtoint ptr %6 to i64 - %sub.ptr.rhs.cast.i32 = ptrtoint ptr %7 to i64 + %5 = load ptr, ptr %_M_finish.i30, align 8 + %6 = load ptr, ptr %contour.0, align 8 + %sub.ptr.lhs.cast.i31 = ptrtoint ptr %5 to i64 + %sub.ptr.rhs.cast.i32 = ptrtoint ptr %6 to i64 %sub.ptr.sub.i33 = sub i64 %sub.ptr.lhs.cast.i31, %sub.ptr.rhs.cast.i32 %sub.ptr.div.i34 = ashr exact i64 %sub.ptr.sub.i33, 3 %cmp12 = icmp ugt i64 %sub.ptr.div.i34, %conv10 @@ -5363,10 +5362,10 @@ while.body: ; preds = %while.cond.preheade if.end18: ; preds = %while.body, %while.cond.preheader, %sw.bb %inc19 = add i32 %c.0, 1 - %8 = load ptr, ptr %_M_finish.i, align 8 - %9 = load ptr, ptr %shape, align 8 - %sub.ptr.lhs.cast.i36 = ptrtoint ptr %8 to i64 - %sub.ptr.rhs.cast.i37 = ptrtoint ptr %9 to i64 + %7 = load ptr, ptr %_M_finish.i, align 8 + %8 = load ptr, ptr %shape, align 8 + %sub.ptr.lhs.cast.i36 = ptrtoint ptr %7 to i64 + %sub.ptr.rhs.cast.i37 = ptrtoint ptr %8 to i64 %sub.ptr.sub.i38 = sub i64 %sub.ptr.lhs.cast.i36, %sub.ptr.rhs.cast.i37 %sub.ptr.div.i39 = sdiv exact i64 %sub.ptr.sub.i38, 24 %conv22 = zext i32 %inc19 to i64 @@ -5374,40 +5373,39 @@ if.end18: ; preds = %while.body, %while. br i1 %cmp23.not, label %if.end25, label %for.end if.end25: ; preds = %if.end18 - %add.ptr.i40 = getelementptr inbounds %"class.msdfgen::Contour", ptr %9, i64 %conv22 + %add.ptr.i40 = getelementptr inbounds %"class.msdfgen::Contour", ptr %8, i64 %conv22 br label %for.inc sw.bb29: ; preds = %for.cond br label %for.inc sw.bb30: ; preds = %for.cond, %for.cond, %for.cond, %for.cond, %for.cond, %for.cond, %for.cond, %for.cond - %tobool31.mask = and i8 %change.0, 1 - %inc33 = zext nneg i8 %tobool31.mask to i32 + %inc33 = zext nneg i8 %change.0 to i32 %spec.select28 = add i32 %e.0, %inc33 %conv35 = zext i32 %spec.select28 to i64 %_M_finish.i41 = getelementptr inbounds i8, ptr %contour.0, i64 8 - %10 = load ptr, ptr %_M_finish.i41, align 8 - %11 = load ptr, ptr %contour.0, align 8 - %sub.ptr.lhs.cast.i42 = ptrtoint ptr %10 to i64 - %sub.ptr.rhs.cast.i43 = ptrtoint ptr %11 to i64 + %9 = load ptr, ptr %_M_finish.i41, align 8 + %10 = load ptr, ptr %contour.0, align 8 + %sub.ptr.lhs.cast.i42 = ptrtoint ptr %9 to i64 + %sub.ptr.rhs.cast.i43 = ptrtoint ptr %10 to i64 %sub.ptr.sub.i44 = sub i64 %sub.ptr.lhs.cast.i42, %sub.ptr.rhs.cast.i43 %sub.ptr.div.i45 = ashr exact i64 %sub.ptr.sub.i44, 3 %cmp38 = icmp ugt i64 %sub.ptr.div.i45, %conv35 br i1 %cmp38, label %if.then39, label %for.inc if.then39: ; preds = %sw.bb30 - %12 = and i8 %1, -33 - %13 = icmp eq i8 %12, 67 - %conv44 = select i1 %13, i32 6, i32 0 - %14 = icmp eq i8 %12, 77 - %conv51 = select i1 %14, i32 5, i32 0 + %11 = and i8 %1, -33 + %12 = icmp eq i8 %11, 67 + %conv44 = select i1 %12, i32 6, i32 0 + %13 = icmp eq i8 %11, 77 + %conv51 = select i1 %13, i32 5, i32 0 %or = or i32 %conv44, %conv51 - %15 = icmp eq i8 %12, 89 - %conv59 = select i1 %15, i32 3, i32 0 + %14 = icmp eq i8 %11, 89 + %conv59 = select i1 %14, i32 3, i32 0 %or61 = or i32 %or, %conv59 - %16 = icmp eq i8 %12, 87 - %or70 = select i1 %16, i32 7, i32 %or61 - %add.ptr.i46 = getelementptr inbounds %"class.msdfgen::EdgeHolder", ptr %11, i64 %conv35 + %15 = icmp eq i8 %11, 87 + %or70 = select i1 %15, i32 7, i32 %or61 + %add.ptr.i46 = getelementptr inbounds %"class.msdfgen::EdgeHolder", ptr %10, i64 %conv35 %call74 = tail call noundef ptr @_ZN7msdfgen10EdgeHolderptEv(ptr noundef nonnull align 8 dereferenceable(8) %add.ptr.i46) %color75 = getelementptr inbounds i8, ptr %call74, i64 8 store i32 %or70, ptr %color75, align 8 diff --git a/bench/nix/optimized/derivations.ll b/bench/nix/optimized/derivations.ll index bf1a5427b53..7a5183b6f78 100644 --- a/bench/nix/optimized/derivations.ll +++ b/bench/nix/optimized/derivations.ll @@ -5217,7 +5217,7 @@ _ZNK3nix12_GLOBAL__N_116StringViewStream4peekEv.exit: ; preds = %49 br i1 %62, label %63, label %65 63: ; preds = %58 - %64 = icmp ult i64 %.079.i.i.i.i, 2 + %64 = icmp samesign ult i64 %.079.i.i.i.i, 2 br i1 %64, label %_ZNK3nix16BackedStringView7isOwnedEv.exit.i, label %65 65: ; preds = %63, %58 @@ -5523,7 +5523,7 @@ _ZN3nix16BackedStringViewD2Ev.exit58: ; preds = %132, %_ZNSt8__detai br i1 %149, label %150, label %152 150: ; preds = %145 - %151 = icmp ult i64 %.079.i.i.i.i.i, 2 + %151 = icmp samesign ult i64 %.079.i.i.i.i.i, 2 br i1 %151, label %_ZNK3nix16BackedStringView7isOwnedEv.exit.i.i, label %152 152: ; preds = %150, %145 @@ -5562,7 +5562,7 @@ _ZSt3getINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_St17basic_strin br i1 %162, label %163, label %165 163: ; preds = %158 - %164 = icmp ult i64 %.079.i.i.i.i19.i, 2 + %164 = icmp samesign ult i64 %.079.i.i.i.i19.i, 2 br i1 %164, label %_ZNK3nix16BackedStringView7isOwnedEv.exit.i21.i, label %165 165: ; preds = %163, %158 @@ -5601,7 +5601,7 @@ _ZSt3getINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_St17basic_strin br i1 %175, label %176, label %178 176: ; preds = %171 - %177 = icmp ult i64 %.079.i.i.i.i38.i, 2 + %177 = icmp samesign ult i64 %.079.i.i.i.i38.i, 2 br i1 %177, label %_ZNK3nix16BackedStringView7isOwnedEv.exit.i40.i, label %178 178: ; preds = %176, %171 @@ -5891,7 +5891,7 @@ _ZN3nixL9endOfListERNS_12_GLOBAL__N_116StringViewStreamE.exit68.thread: ; preds br i1 %252, label %253, label %255 253: ; preds = %248 - %254 = icmp ult i64 %.079.i.i.i.i.i70, 2 + %254 = icmp samesign ult i64 %.079.i.i.i.i.i70, 2 br i1 %254, label %_ZNK3nix16BackedStringView7isOwnedEv.exit.i.i72, label %255 255: ; preds = %253, %248 @@ -5964,7 +5964,7 @@ _ZN3nixL9parsePathERNS_12_GLOBAL__N_116StringViewStreamE.exit: ; preds = %_ZSt3g br i1 %269, label %270, label %272 270: ; preds = %265 - %271 = icmp ult i64 %.079.i.i.i.i89, 2 + %271 = icmp samesign ult i64 %.079.i.i.i.i89, 2 br i1 %271, label %_ZNK3nix16BackedStringView7isOwnedEv.exit.i91, label %272 272: ; preds = %270, %265 @@ -7375,7 +7375,7 @@ define linkonce_odr { i64, ptr } @_ZNK3nix16BackedStringViewdeEv(ptr noundef non br i1 %8, label %9, label %11 9: ; preds = %4 - %10 = icmp ult i64 %.079.i.i.i, 2 + %10 = icmp samesign ult i64 %.079.i.i.i, 2 br i1 %10, label %_ZNK3nix16BackedStringView7isOwnedEv.exit, label %11 11: ; preds = %9, %4 @@ -7694,7 +7694,7 @@ define linkonce_odr void @_ZNO3nix16BackedStringView7toOwnedB5cxx11Ev(ptr dead_o br i1 %10, label %11, label %13 11: ; preds = %6 - %12 = icmp ult i64 %.079.i.i.i, 2 + %12 = icmp samesign ult i64 %.079.i.i.i, 2 br i1 %12, label %_ZNK3nix16BackedStringView7isOwnedEv.exit, label %13 13: ; preds = %11, %6 @@ -8473,7 +8473,7 @@ _ZN3nixL9endOfListERNS_12_GLOBAL__N_116StringViewStreamE.exit.thread: ; preds = br i1 %28, label %29, label %31 29: ; preds = %24 - %30 = icmp ult i64 %.079.i.i.i.i.i, 2 + %30 = icmp samesign ult i64 %.079.i.i.i.i.i, 2 br i1 %30, label %_ZNK3nix16BackedStringView7isOwnedEv.exit.i.i, label %31 31: ; preds = %29, %24 @@ -10728,7 +10728,7 @@ _ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4less 196: ; preds = %.loopexit, %.loopexit.split-lp, %176 %.pn93 = phi { ptr, i32 } [ %.pn84.pn.pn.pn.pn.pn.pn.pn, %176 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %10) #28 - br label %575 + br label %574 197: ; preds = %4 %switch.i.i.i128 = icmp samesign ugt i8 %.sroa.2268.0.extract.trunc, 1 @@ -10788,7 +10788,7 @@ _ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4less 218: ; preds = %.loopexit.split-lp296, %.loopexit295 %lpad.phi299 = phi { ptr, i32 } [ %lpad.loopexit297, %.loopexit295 ], [ %lpad.loopexit.split-lp298, %.loopexit.split-lp296 ] call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %22) #28 - br label %575 + br label %574 ._crit_edge382: ; preds = %215 %.pre448 = load ptr, ptr %200, align 8 @@ -11227,7 +11227,7 @@ select.unfold: ; preds = %_ZNKSt3mapINSt7__cx 356: ; preds = %354 invoke void @__cxa_throw(ptr nonnull %353, ptr nonnull @_ZTIN3nix5ErrorE, ptr nonnull @_ZN3nix5ErrorD2Ev) #29 - to label %576 unwind label %360 + to label %575 unwind label %360 357: ; preds = %_ZN3nix3getISt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_4HashESt4lessIS7_ESaISt4pairIKS7_S8_EEEEEPKNT_11mapped_typeERKSG_RKNSG_8key_typeE.exit %358 = landingpad { ptr, i32 } @@ -11855,43 +11855,42 @@ _ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N _ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEEC2ERKSE_.exit182: ; preds = %._crit_edge378.thread, %563, %._crit_edge378 %565 = phi ptr [ %.pre447, %563 ], [ null, %._crit_edge378 ], [ null, %._crit_edge378.thread ] %566 = getelementptr inbounds i8, ptr %0, i64 48 - %567 = and i8 %.075.lcssa, 1 - store i8 %567, ptr %566, align 8 + store i8 %.075.lcssa, ptr %566, align 8 invoke void @_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3nix4HashEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E(ptr noundef nonnull align 8 dereferenceable(48) %30, ptr noundef %565) - to label %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEED2Ev.exit183 unwind label %568 + to label %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEED2Ev.exit183 unwind label %567 -568: ; preds = %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEEC2ERKSE_.exit182 - %569 = landingpad { ptr, i32 } +567: ; preds = %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEEC2ERKSE_.exit182 + %568 = landingpad { ptr, i32 } catch ptr null - %570 = extractvalue { ptr, i32 } %569, 0 - call void @__clang_call_terminate(ptr %570) #30 + %569 = extractvalue { ptr, i32 } %568, 0 + call void @__clang_call_terminate(ptr %569) #30 unreachable _ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEED2Ev.exit183: ; preds = %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEEC2ERKSE_.exit182 - %571 = load ptr, ptr %246, align 8 - invoke void @_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3nix14DerivedPathMapISt3setIS5_St4lessIS5_ESaIS5_EEE9ChildNodeEESt10_Select1stISH_ESC_SaISH_EE8_M_eraseEPSt13_Rb_tree_nodeISH_E(ptr noundef nonnull align 8 dereferenceable(48) %23, ptr noundef %571) - to label %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEED2Ev.exit unwind label %572 + %570 = load ptr, ptr %246, align 8 + invoke void @_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3nix14DerivedPathMapISt3setIS5_St4lessIS5_ESaIS5_EEE9ChildNodeEESt10_Select1stISH_ESC_SaISH_EE8_M_eraseEPSt13_Rb_tree_nodeISH_E(ptr noundef nonnull align 8 dereferenceable(48) %23, ptr noundef %570) + to label %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEED2Ev.exit unwind label %571 -572: ; preds = %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEED2Ev.exit183 - %573 = landingpad { ptr, i32 } +571: ; preds = %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEED2Ev.exit183 + %572 = landingpad { ptr, i32 } catch ptr null - %574 = extractvalue { ptr, i32 } %573, 0 - call void @__clang_call_terminate(ptr %574) #30 + %573 = extractvalue { ptr, i32 } %572, 0 + call void @__clang_call_terminate(ptr %573) #30 unreachable .body: ; preds = %.loopexit305, %.loopexit.split-lp306, %323, %317, %_ZN3nix4SyncISt3mapINS_9StorePathENS_7DrvHashESt4lessIS2_ESaISt4pairIKS2_S3_EEESt5mutexE4LockD2Ev.exit191, %550, %548, %514 %.pn81.pn = phi { ptr, i32 } [ %.pn81, %514 ], [ %lpad.phi304, %550 ], [ %549, %548 ], [ %.pn.i, %323 ], [ %318, %317 ], [ %304, %_ZN3nix4SyncISt3mapINS_9StorePathENS_7DrvHashESt4lessIS2_ESaISt4pairIKS2_S3_EEESt5mutexE4LockD2Ev.exit191 ], [ %lpad.loopexit307, %.loopexit305 ], [ %lpad.loopexit.split-lp308, %.loopexit.split-lp306 ] call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix14DerivedPathMapISt3setIS5_St4lessIS5_ESaIS5_EEE9ChildNodeESA_SaISt4pairIKS5_SE_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %23) #28 - br label %575 + br label %574 _ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEED2Ev.exit: ; preds = %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEED2Ev.exit183, %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEEC2ERKSE_.exit137, %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix4HashESt4lessIS5_ESaISt4pairIKS5_S7_EEEC2ERKSE_.exit ret void -575: ; preds = %.body, %218, %196 +574: ; preds = %.body, %218, %196 %.pn93.pn = phi { ptr, i32 } [ %.pn93, %196 ], [ %lpad.phi299, %218 ], [ %.pn81.pn, %.body ] resume { ptr, i32 } %.pn93.pn -576: ; preds = %356 +575: ; preds = %356 unreachable } @@ -15553,7 +15552,7 @@ _ZN3nix10DerivationD2Ev.exit.i: ; preds = %288 br i1 %320, label %321, label %323 321: ; preds = %317 - %322 = icmp ult i64 %.079.i.i.i, 5 + %322 = icmp samesign ult i64 %.079.i.i.i, 5 br i1 %322, label %_ZSt17holds_alternativeIN3nix16DerivationOutput8DeferredEJNS1_14InputAddressedENS1_7CAFixedENS1_10CAFloatingES2_NS1_6ImpureEEEbRKSt7variantIJDpT0_EE.exit.i, label %323 323: ; preds = %321, %317 diff --git a/bench/node/optimized/libnode.crypto_common.ll b/bench/node/optimized/libnode.crypto_common.ll index 07c160ca9bf..f38c0ae0787 100644 --- a/bench/node/optimized/libnode.crypto_common.ll +++ b/bench/node/optimized/libnode.crypto_common.ll @@ -4225,13 +4225,9 @@ for.end.i29: ; preds = %for.inc.i, %if.then %object.sroa.0.1.i = phi ptr [ %call20.i, %if.end58.i ], [ %call20.i, %if.then.i.i16.i ], [ %object.sroa.0.0.i, %for.cond.i28 ], [ %object.sroa.0.0.i, %for.inc.i ] %call64.i = tail call i32 @OPENSSL_sk_num(ptr noundef nonnull %call1.i185191) #17 %cmp65.i = icmp eq i32 %i.020.i, %call64.i - br i1 %cmp65.i, label %_ZN4node6crypto12_GLOBAL__N_122AddIssuerChainToObjectEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEEN2v85LocalINS8_6ObjectEEEOS2_I13stack_st_X509NS0_18StackOfX509DeleterEEPNS_11EnvironmentE.exit, label %for.cond.i28, !llvm.loop !25 + br i1 %cmp65.i, label %if.end85, label %for.cond.i28, !llvm.loop !25 -_ZN4node6crypto12_GLOBAL__N_122AddIssuerChainToObjectEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEEN2v85LocalINS8_6ObjectEEEOS2_I13stack_st_X509NS0_18StackOfX509DeleterEEPNS_11EnvironmentE.exit: ; preds = %for.end.i29 - %cmp.i.i313.not = icmp eq ptr %object.sroa.0.1.i, null - br i1 %cmp.i.i313.not, label %if.then.i62, label %if.end85 - -if.end85: ; preds = %_ZN4node6crypto12_GLOBAL__N_122AddIssuerChainToObjectEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEEN2v85LocalINS8_6ObjectEEEOS2_I13stack_st_X509NS0_18StackOfX509DeleterEEPNS_11EnvironmentE.exit +if.end85: ; preds = %for.end.i29 %18 = load ptr, ptr %isolate_.i.i, align 8 %call3.i36 = tail call ptr @_ZN2v87Isolate17GetCurrentContextEv(ptr noundef nonnull align 1 dereferenceable(1) %18) #17 br label %while.cond.i @@ -4368,9 +4364,9 @@ land.lhs.true103: ; preds = %if.end98 %spec.select = select i1 %call137, ptr %call65, ptr null br label %if.then.i62 -if.then.i62: ; preds = %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i, %if.end.i34, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i, %land.lhs.true103, %do.end62, %_ZN4node6crypto12_GLOBAL__N_122AddIssuerChainToObjectEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEEN2v85LocalINS8_6ObjectEEEOS2_I13stack_st_X509NS0_18StackOfX509DeleterEEPNS_11EnvironmentE.exit, %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit, %if.end98 - %retval.sroa.0.2124 = phi ptr [ %call65, %if.end98 ], [ null, %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit ], [ null, %_ZN4node6crypto12_GLOBAL__N_122AddIssuerChainToObjectEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEEN2v85LocalINS8_6ObjectEEEOS2_I13stack_st_X509NS0_18StackOfX509DeleterEEPNS_11EnvironmentE.exit ], [ null, %do.end62 ], [ %spec.select, %land.lhs.true103 ], [ null, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i ], [ null, %if.end.i34 ], [ null, %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i ] - %cert.sroa.0.1123 = phi ptr [ %cert.sroa.0.12, %if.end98 ], [ %cert.sroa.0.12, %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit ], [ %cert.sroa.0.7, %_ZN4node6crypto12_GLOBAL__N_122AddIssuerChainToObjectEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEEN2v85LocalINS8_6ObjectEEEOS2_I13stack_st_X509NS0_18StackOfX509DeleterEEPNS_11EnvironmentE.exit ], [ null, %do.end62 ], [ %cert.sroa.0.12, %land.lhs.true103 ], [ %cert.sroa.0.11, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i ], [ %cert.sroa.0.6, %if.end.i34 ], [ %cert.sroa.0.6, %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i ] +if.then.i62: ; preds = %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i, %if.end.i34, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i, %land.lhs.true103, %do.end62, %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit, %if.end98 + %retval.sroa.0.2124 = phi ptr [ %call65, %if.end98 ], [ null, %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit ], [ null, %do.end62 ], [ %spec.select, %land.lhs.true103 ], [ null, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i ], [ null, %if.end.i34 ], [ null, %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i ] + %cert.sroa.0.1123 = phi ptr [ %cert.sroa.0.12, %if.end98 ], [ %cert.sroa.0.12, %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit ], [ null, %do.end62 ], [ %cert.sroa.0.12, %land.lhs.true103 ], [ %cert.sroa.0.11, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i ], [ %cert.sroa.0.6, %if.end.i34 ], [ %cert.sroa.0.6, %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i ] call void @OPENSSL_sk_pop_free(ptr noundef nonnull %call1.i185191, ptr noundef nonnull @X509_free) #17 br label %cleanup145 diff --git a/bench/nori/optimized/bitmap.cpp.ll b/bench/nori/optimized/bitmap.cpp.ll index 069f031b4e7..b8108af8af7 100644 --- a/bench/nori/optimized/bitmap.cpp.ll +++ b/bench/nori/optimized/bitmap.cpp.ll @@ -2476,10 +2476,10 @@ define hidden noundef ptr @_Z21stbi_write_png_to_memPhiiiiPi(ptr nocapture nound select.unfold: ; preds = %.lr.ph309, %.preheader %.0176.lcssa = phi i32 [ 0, %.preheader ], [ %146, %.lr.ph309 ] - %147 = icmp slt i32 %.0176.lcssa, %.1313 + %147 = icmp samesign ult i32 %.0176.lcssa, %.1313 %148 = trunc nsw i64 %indvars.iv344 to i32 %spec.select201 = select i1 %147, i32 %148, i32 %.1180312 - %spec.select202 = tail call i32 @llvm.smin.i32(i32 %.0176.lcssa, i32 %.1313) + %spec.select202 = tail call i32 @llvm.umin.i32(i32 %.0176.lcssa, i32 %.1313) %indvars.iv.next345 = add nsw i64 %indvars.iv344, 1 %149 = and i64 %indvars.iv.next345, 4294967295 %exitcond347.not = icmp eq i64 %149, 5 @@ -5254,9 +5254,6 @@ declare i32 @llvm.umin.i32(i32, i32) #23 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #25 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smin.i32(i32, i32) #23 - ; Function Attrs: nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #26 diff --git a/bench/nuttx/optimized/lib_fopen.c.ll b/bench/nuttx/optimized/lib_fopen.c.ll index 18dc5e2cd99..62cc46ef358 100644 --- a/bench/nuttx/optimized/lib_fopen.c.ll +++ b/bench/nuttx/optimized/lib_fopen.c.ll @@ -106,112 +106,107 @@ declare ptr @lib_get_streams() local_unnamed_addr #1 define i32 @lib_mode2oflags(ptr nocapture noundef readonly %0) local_unnamed_addr #0 { br label %2 -2: ; preds = %38, %1 - %.025 = phi ptr [ %0, %1 ], [ %39, %38 ] - %.023 = phi i32 [ 0, %1 ], [ %.124, %38 ] - %.0 = phi i32 [ 0, %1 ], [ %.1, %38 ] +2: ; preds = %33, %1 + %.025 = phi ptr [ %0, %1 ], [ %34, %33 ] + %.023 = phi i32 [ 0, %1 ], [ %.124, %33 ] + %.0 = phi i32 [ 0, %1 ], [ %.1, %33 ] %3 = load i8, ptr %.025, align 1 - switch i8 %3, label %40 [ + switch i8 %3, label %35 [ i8 0, label %.loopexit i8 114, label %4 i8 119, label %6 i8 97, label %8 i8 43, label %10 - i8 109, label %21 - i8 98, label %22 - i8 101, label %26 - i8 120, label %30 - i8 116, label %34 + i8 109, label %20 + i8 98, label %21 + i8 101, label %24 + i8 120, label %27 + i8 116, label %30 ] 4: ; preds = %2 %5 = icmp eq i32 %.023, 0 - br i1 %5, label %38, label %40 + br i1 %5, label %33, label %35 6: ; preds = %2 %7 = icmp eq i32 %.023, 0 - br i1 %7, label %38, label %40 + br i1 %7, label %33, label %35 8: ; preds = %2 %9 = icmp eq i32 %.023, 0 - br i1 %9, label %38, label %40 + br i1 %9, label %33, label %35 10: ; preds = %2 - %11 = and i32 %.023, 7 - switch i32 %11, label %40 [ - i32 1, label %12 - i32 2, label %15 - i32 4, label %18 + switch i32 %.023, label %35 [ + i32 1, label %11 + i32 2, label %14 + i32 4, label %17 ] -12: ; preds = %10 - %13 = and i32 %.0, 1288 - %14 = or disjoint i32 %13, 3 - br label %38 +11: ; preds = %10 + %12 = and i32 %.0, 1288 + %13 = or disjoint i32 %12, 3 + br label %33 -15: ; preds = %10 - %16 = and i32 %.0, 1288 - %17 = or disjoint i32 %16, 39 - br label %38 +14: ; preds = %10 + %15 = and i32 %.0, 1288 + %16 = or disjoint i32 %15, 39 + br label %33 -18: ; preds = %10 - %19 = and i32 %.0, 1288 - %20 = or disjoint i32 %19, 23 - br label %38 +17: ; preds = %10 + %18 = and i32 %.0, 1288 + %19 = or disjoint i32 %18, 23 + br label %33 -21: ; preds = %2 +20: ; preds = %2 %.not32 = icmp eq i32 %.023, 1 - br i1 %.not32, label %38, label %40 + br i1 %.not32, label %33, label %35 + +21: ; preds = %2 + %.not31 = icmp eq i32 %.023, 0 + br i1 %.not31, label %35, label %22 -22: ; preds = %2 - %23 = and i32 %.023, 7 - %.not31 = icmp eq i32 %23, 0 - br i1 %.not31, label %40, label %24 +22: ; preds = %21 + %23 = and i32 %.0, -257 + br label %33 -24: ; preds = %22 - %25 = and i32 %.0, -257 - br label %38 +24: ; preds = %2 + %.not30 = icmp eq i32 %.023, 0 + br i1 %.not30, label %35, label %25 -26: ; preds = %2 - %27 = and i32 %.023, 7 - %.not30 = icmp eq i32 %27, 0 - br i1 %.not30, label %40, label %28 +25: ; preds = %24 + %26 = or i32 %.0, 1024 + br label %33 -28: ; preds = %26 - %29 = or i32 %.0, 1024 - br label %38 +27: ; preds = %2 + %.not29 = icmp eq i32 %.023, 0 + br i1 %.not29, label %35, label %28 + +28: ; preds = %27 + %29 = or i32 %.0, 8 + br label %33 30: ; preds = %2 - %31 = and i32 %.023, 7 - %.not29 = icmp eq i32 %31, 0 - br i1 %.not29, label %40, label %32 - -32: ; preds = %30 - %33 = or i32 %.0, 8 - br label %38 - -34: ; preds = %2 - %35 = and i32 %.023, 7 - %.not28 = icmp eq i32 %35, 0 - br i1 %.not28, label %40, label %36 - -36: ; preds = %34 - %37 = or i32 %.0, 256 - br label %38 - -38: ; preds = %8, %6, %4, %24, %28, %32, %36, %18, %15, %12, %21 - %.124 = phi i32 [ %.023, %36 ], [ %.023, %32 ], [ %.023, %28 ], [ %.023, %24 ], [ 1, %21 ], [ %.023, %18 ], [ %.023, %15 ], [ %.023, %12 ], [ 1, %4 ], [ 2, %6 ], [ 4, %8 ] - %.1 = phi i32 [ %37, %36 ], [ %33, %32 ], [ %29, %28 ], [ %25, %24 ], [ %.0, %21 ], [ %20, %18 ], [ %17, %15 ], [ %14, %12 ], [ 257, %4 ], [ 294, %6 ], [ 278, %8 ] - %39 = getelementptr inbounds i8, ptr %.025, i64 1 + %.not28 = icmp eq i32 %.023, 0 + br i1 %.not28, label %35, label %31 + +31: ; preds = %30 + %32 = or i32 %.0, 256 + br label %33 + +33: ; preds = %8, %6, %4, %22, %25, %28, %31, %17, %14, %11, %20 + %.124 = phi i32 [ %.023, %31 ], [ %.023, %28 ], [ %.023, %25 ], [ %.023, %22 ], [ 1, %20 ], [ 4, %17 ], [ 2, %14 ], [ 1, %11 ], [ 1, %4 ], [ 2, %6 ], [ 4, %8 ] + %.1 = phi i32 [ %32, %31 ], [ %29, %28 ], [ %26, %25 ], [ %23, %22 ], [ %.0, %20 ], [ %19, %17 ], [ %16, %14 ], [ %13, %11 ], [ 257, %4 ], [ 294, %6 ], [ 278, %8 ] + %34 = getelementptr inbounds i8, ptr %.025, i64 1 br label %2, !llvm.loop !6 -40: ; preds = %2, %4, %6, %8, %10, %21, %22, %26, %30, %34 - %41 = tail call ptr @__errno() #6 - store i32 22, ptr %41, align 4 +35: ; preds = %2, %4, %6, %8, %10, %20, %21, %24, %27, %30 + %36 = tail call ptr @__errno() #6 + store i32 22, ptr %36, align 4 br label %.loopexit -.loopexit: ; preds = %2, %40 - %.026 = phi i32 [ -1, %40 ], [ %.0, %2 ] +.loopexit: ; preds = %2, %35 + %.026 = phi i32 [ -1, %35 ], [ %.0, %2 ] ret i32 %.026 } diff --git a/bench/nuttx/optimized/sched_mergeprioritized.c.ll b/bench/nuttx/optimized/sched_mergeprioritized.c.ll index 7553bb2bfca..fd5cb0699d5 100644 --- a/bench/nuttx/optimized/sched_mergeprioritized.c.ll +++ b/bench/nuttx/optimized/sched_mergeprioritized.c.ll @@ -41,11 +41,11 @@ define void @nxsched_merge_prioritized(ptr nocapture noundef %0, ptr nocapture n store ptr %7, ptr %17, align 8 br label %.loopexit -18: ; preds = %.preheader, %56 - %.050 = phi ptr [ %.151, %56 ], [ %13, %.preheader ] - %19 = phi ptr [ %.1, %56 ], [ %5, %.preheader ] +18: ; preds = %.preheader, %58 + %.050 = phi ptr [ %.151, %58 ], [ %13, %.preheader ] + %19 = phi ptr [ %.1, %58 ], [ %5, %.preheader ] %20 = icmp eq ptr %.050, null - br i1 %20, label %21, label %32 + br i1 %20, label %21, label %34 21: ; preds = %18 %22 = load ptr, ptr %1, align 8 @@ -59,76 +59,80 @@ define void @nxsched_merge_prioritized(ptr nocapture noundef %0, ptr nocapture n br label %.loopexit 26: ; preds = %21 - %27 = load ptr, ptr %15, align 8 - store ptr %19, ptr %27, align 8 - %28 = load ptr, ptr %15, align 8 - %29 = load ptr, ptr %4, align 8 - %30 = getelementptr inbounds i8, ptr %29, i64 8 - store ptr %28, ptr %30, align 8 - %31 = load ptr, ptr %8, align 8 - store ptr %31, ptr %15, align 8 + %27 = icmp eq ptr %19, null + br i1 %27, label %.loopexit, label %28 + +28: ; preds = %26 + %29 = load ptr, ptr %15, align 8 + store ptr %19, ptr %29, align 8 + %30 = load ptr, ptr %15, align 8 + %31 = load ptr, ptr %4, align 8 + %32 = getelementptr inbounds i8, ptr %31, i64 8 + store ptr %30, ptr %32, align 8 + %33 = load ptr, ptr %8, align 8 + store ptr %33, ptr %15, align 8 br label %.loopexit -32: ; preds = %18 - %33 = getelementptr inbounds i8, ptr %19, i64 28 - %34 = load i8, ptr %33, align 4 - %35 = getelementptr inbounds i8, ptr %.050, i64 28 +34: ; preds = %18 + %35 = getelementptr inbounds i8, ptr %19, i64 28 %36 = load i8, ptr %35, align 4 - %37 = icmp ugt i8 %34, %36 - br i1 %37, label %38, label %54 - -38: ; preds = %32 - %39 = call ptr @dq_remfirst(ptr noundef nonnull %4) #3 - %40 = load ptr, ptr %1, align 8 - %.not58 = icmp eq ptr %40, null - %41 = icmp eq ptr %.050, %40 - %or.cond = or i1 %.not58, %41 - br i1 %or.cond, label %42, label %48 - -42: ; preds = %38 - %43 = getelementptr inbounds i8, ptr %39, i64 8 - store ptr null, ptr %43, align 8 - %44 = load ptr, ptr %1, align 8 - store ptr %44, ptr %39, align 8 - %.not59 = icmp eq ptr %44, null - br i1 %.not59, label %45, label %46 - -45: ; preds = %42 - store ptr %39, ptr %1, align 8 - store ptr %39, ptr %15, align 8 - br label %52 - -46: ; preds = %42 - %47 = getelementptr inbounds i8, ptr %44, i64 8 - store ptr %39, ptr %47, align 8 - store ptr %39, ptr %1, align 8 - br label %52 - -48: ; preds = %38 - %49 = getelementptr inbounds i8, ptr %.050, i64 8 - %50 = load ptr, ptr %49, align 8 - store ptr %.050, ptr %39, align 8 - %51 = getelementptr inbounds i8, ptr %39, i64 8 - store ptr %50, ptr %51, align 8 - store ptr %39, ptr %50, align 8 - store ptr %39, ptr %49, align 8 - br label %52 - -52: ; preds = %48, %45, %46 - %53 = load ptr, ptr %4, align 8 - br label %56 - -54: ; preds = %32 - %55 = load ptr, ptr %.050, align 8 - br label %56 - -56: ; preds = %54, %52 - %.151 = phi ptr [ %.050, %52 ], [ %55, %54 ] - %.1 = phi ptr [ %53, %52 ], [ %19, %54 ] + %37 = getelementptr inbounds i8, ptr %.050, i64 28 + %38 = load i8, ptr %37, align 4 + %39 = icmp ugt i8 %36, %38 + br i1 %39, label %40, label %56 + +40: ; preds = %34 + %41 = call ptr @dq_remfirst(ptr noundef nonnull %4) #3 + %42 = load ptr, ptr %1, align 8 + %.not58 = icmp eq ptr %42, null + %43 = icmp eq ptr %.050, %42 + %or.cond = or i1 %.not58, %43 + br i1 %or.cond, label %44, label %50 + +44: ; preds = %40 + %45 = getelementptr inbounds i8, ptr %41, i64 8 + store ptr null, ptr %45, align 8 + %46 = load ptr, ptr %1, align 8 + store ptr %46, ptr %41, align 8 + %.not59 = icmp eq ptr %46, null + br i1 %.not59, label %47, label %48 + +47: ; preds = %44 + store ptr %41, ptr %1, align 8 + store ptr %41, ptr %15, align 8 + br label %54 + +48: ; preds = %44 + %49 = getelementptr inbounds i8, ptr %46, i64 8 + store ptr %41, ptr %49, align 8 + store ptr %41, ptr %1, align 8 + br label %54 + +50: ; preds = %40 + %51 = getelementptr inbounds i8, ptr %.050, i64 8 + %52 = load ptr, ptr %51, align 8 + store ptr %.050, ptr %41, align 8 + %53 = getelementptr inbounds i8, ptr %41, i64 8 + store ptr %52, ptr %53, align 8 + store ptr %41, ptr %52, align 8 + store ptr %41, ptr %51, align 8 + br label %54 + +54: ; preds = %50, %47, %48 + %55 = load ptr, ptr %4, align 8 + br label %58 + +56: ; preds = %34 + %57 = load ptr, ptr %.050, align 8 + br label %58 + +58: ; preds = %56, %54 + %.151 = phi ptr [ %.050, %54 ], [ %57, %56 ] + %.1 = phi ptr [ %55, %54 ], [ %19, %56 ] %.not60 = icmp eq ptr %.1, null br i1 %.not60, label %.loopexit, label %18, !llvm.loop !8 -.loopexit: ; preds = %56, %26, %24, %3, %16 +.loopexit: ; preds = %58, %26, %28, %24, %3, %16 ret void } diff --git a/bench/oiio/optimized/environment.cpp.ll b/bench/oiio/optimized/environment.cpp.ll index 6d2b9b8cc08..26c3a67ddfc 100644 --- a/bench/oiio/optimized/environment.cpp.ll +++ b/bench/oiio/optimized/environment.cpp.ll @@ -735,8 +735,7 @@ if.then12.i: ; preds = %for.body.i %z4.i42.i = getelementptr inbounds i8, ptr %add.ptr.i38.i, i64 8 %21 = load float, ptr %z4.i42.i, align 4 %call20.i = call noundef zeroext i1 @_ZN18OpenImageIO_v2_6_03pvt17TextureSystemImpl11environmentEPNS_13TextureSystem13TextureHandleEPNS2_9PerthreadERNS_10TextureOptENS_9Vec3ParamIfEESA_SA_iPfSB_SB_(ptr noundef nonnull align 8 dereferenceable(184) %this, ptr noundef nonnull %call.i2.i5, ptr noundef %call.i, ptr noundef nonnull align 8 dereferenceable(104) %opt.i, <2 x float> %agg.tmp.sroa.0.4.vec.insert.i, float %13, <2 x float> %agg.tmp13.sroa.0.4.vec.insert.i, float %17, <2 x float> %agg.tmp16.sroa.0.4.vec.insert.i, float %21, i32 noundef %nchannels, ptr noundef %result.addr.051.i, ptr noundef %dresultds.addr.150.i, ptr noundef %dresultdt.addr.149.i) - %22 = and i8 %ok.048.i, 1 - %tobool2326.i = icmp ne i8 %22, 0 + %tobool2326.i = icmp ne i8 %ok.048.i, 0 %tobool23.i = select i1 %call20.i, i1 %tobool2326.i, i1 false %frombool.i = zext i1 %tobool23.i to i8 br label %if.end24.i @@ -755,11 +754,11 @@ if.end24.i: ; preds = %if.then12.i, %for.b br i1 %exitcond.not.i, label %for.end.loopexit.i, label %for.body.i, !llvm.loop !4 for.end.loopexit.i: ; preds = %if.end24.i - %23 = trunc nuw i8 %ok.1.i to i1 + %22 = trunc nuw i8 %ok.1.i to i1 br label %_ZN18OpenImageIO_v2_6_03pvt17TextureSystemImpl11environmentEPNS_13TextureSystem13TextureHandleEPNS2_9PerthreadERNS_14TextureOptionsEPhiiNS_10VaryingRefIN9Imath_2_54Vec3IfEEEESE_SE_iPfSF_SF_.exit _ZN18OpenImageIO_v2_6_03pvt17TextureSystemImpl11environmentEPNS_13TextureSystem13TextureHandleEPNS2_9PerthreadERNS_14TextureOptionsEPhiiNS_10VaryingRefIN9Imath_2_54Vec3IfEEEESE_SE_iPfSF_SF_.exit: ; preds = %cond.end.i, %if.end.i, %for.end.loopexit.i - %retval.0.i = phi i1 [ false, %cond.end.i ], [ true, %if.end.i ], [ %23, %for.end.loopexit.i ] + %retval.0.i = phi i1 [ false, %cond.end.i ], [ true, %if.end.i ], [ %22, %for.end.loopexit.i ] call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %opt.i) ret i1 %retval.0.i } @@ -844,8 +843,7 @@ if.then12: ; preds = %for.body %z4.i42 = getelementptr inbounds i8, ptr %add.ptr.i38, i64 8 %23 = load float, ptr %z4.i42, align 4 %call20 = call noundef zeroext i1 @_ZN18OpenImageIO_v2_6_03pvt17TextureSystemImpl11environmentEPNS_13TextureSystem13TextureHandleEPNS2_9PerthreadERNS_10TextureOptENS_9Vec3ParamIfEESA_SA_iPfSB_SB_(ptr noundef nonnull align 8 dereferenceable(184) %this, ptr noundef nonnull %texture_handle, ptr noundef %thread_info, ptr noundef nonnull align 8 dereferenceable(104) %opt, <2 x float> %agg.tmp.sroa.0.4.vec.insert, float %9, <2 x float> %agg.tmp13.sroa.0.4.vec.insert, float %16, <2 x float> %agg.tmp16.sroa.0.4.vec.insert, float %23, i32 noundef %nchannels, ptr noundef %result.addr.051, ptr noundef %dresultds.addr.150, ptr noundef %dresultdt.addr.149) - %24 = and i8 %ok.048, 1 - %tobool2326 = icmp ne i8 %24, 0 + %tobool2326 = icmp ne i8 %ok.048, 0 %tobool23 = select i1 %call20, i1 %tobool2326, i1 false %frombool = zext i1 %tobool23 to i8 br label %if.end24 @@ -864,11 +862,11 @@ if.end24: ; preds = %if.then12, %for.bod br i1 %exitcond.not, label %for.end.loopexit, label %for.body, !llvm.loop !4 for.end.loopexit: ; preds = %if.end24 - %25 = trunc nuw i8 %ok.1 to i1 + %24 = trunc nuw i8 %ok.1 to i1 br label %return return: ; preds = %if.end, %for.end.loopexit, %entry - %retval.0 = phi i1 [ false, %entry ], [ true, %if.end ], [ %25, %for.end.loopexit ] + %retval.0 = phi i1 [ false, %entry ], [ true, %if.end ], [ %24, %for.end.loopexit ] ret i1 %retval.0 } @@ -2018,8 +2016,7 @@ if.then.us: ; preds = %for.body.us %agg.tmp97.sroa.0.0.vec.insert.us = insertelement <2 x float> poison, float %26, i64 0 %agg.tmp97.sroa.0.4.vec.insert.us = insertelement <2 x float> %agg.tmp97.sroa.0.0.vec.insert.us, float %27, i64 1 %call99.us = call noundef zeroext i1 @_ZN18OpenImageIO_v2_6_03pvt17TextureSystemImpl11environmentEPNS_13TextureSystem13TextureHandleEPNS2_9PerthreadERNS_10TextureOptENS_9Vec3ParamIfEESA_SA_iPfSB_SB_(ptr noundef nonnull align 8 dereferenceable(184) %this, ptr noundef %texture_handle, ptr noundef %thread_info, ptr noundef nonnull align 8 dereferenceable(104) %opt, <2 x float> %agg.tmp95.sroa.0.4.vec.insert.us, float %22, <2 x float> %agg.tmp96.sroa.0.4.vec.insert.us, float %25, <2 x float> %agg.tmp97.sroa.0.4.vec.insert.us, float %28, i32 noundef %nchannels, ptr noundef %cond, ptr noundef null, ptr noundef null) - %29 = and i8 %ok.0123.us, 1 - %tobool10472.us = icmp ne i8 %29, 0 + %tobool10472.us = icmp ne i8 %ok.0123.us, 0 %tobool104.us = select i1 %call99.us, i1 %tobool10472.us, i1 false %frombool105.us = zext i1 %tobool104.us to i8 br i1 %cmp75116, label %for.body109.us.preheader, label %for.inc120.us @@ -2031,10 +2028,10 @@ for.body109.us.preheader: ; preds = %if.then.us for.body109.us: ; preds = %for.body109.us.preheader, %for.body109.us %indvars.iv133 = phi i64 [ 0, %for.body109.us.preheader ], [ %indvars.iv.next134, %for.body109.us ] %arrayidx111.us = getelementptr inbounds float, ptr %cond, i64 %indvars.iv133 - %30 = load float, ptr %arrayidx111.us, align 4 + %29 = load float, ptr %arrayidx111.us, align 4 %.idx = shl nsw i64 %indvars.iv133, 6 %gep = getelementptr inbounds i8, ptr %invariant.gep, i64 %.idx - store float %30, ptr %gep, align 4 + store float %29, ptr %gep, align 4 %indvars.iv.next134 = add nuw nsw i64 %indvars.iv133, 1 %exitcond139.not = icmp eq i64 %indvars.iv.next134, %wide.trip.count138 br i1 %exitcond139.not, label %for.inc120.us, label %for.body109.us, !llvm.loop !28 @@ -2056,49 +2053,48 @@ for.body: ; preds = %cond.end, %for.inc1 if.then: ; preds = %for.body %arrayidx = getelementptr inbounds [16 x float], ptr %options, i64 0, i64 %indvars.iv128 - %31 = load float, ptr %arrayidx, align 4 - store float %31, ptr %sblur.i, align 8 + %30 = load float, ptr %arrayidx, align 4 + store float %30, ptr %sblur.i, align 8 %arrayidx26 = getelementptr inbounds [16 x float], ptr %tblur, i64 0, i64 %indvars.iv128 - %32 = load float, ptr %arrayidx26, align 4 - store float %32, ptr %tblur.i, align 4 + %31 = load float, ptr %arrayidx26, align 4 + store float %31, ptr %tblur.i, align 4 %arrayidx29 = getelementptr inbounds [16 x float], ptr %swidth, i64 0, i64 %indvars.iv128 - %33 = load float, ptr %arrayidx29, align 4 - store float %33, ptr %swidth.i, align 8 + %32 = load float, ptr %arrayidx29, align 4 + store float %32, ptr %swidth.i, align 8 %arrayidx32 = getelementptr inbounds [16 x float], ptr %twidth, i64 0, i64 %indvars.iv128 - %34 = load float, ptr %arrayidx32, align 4 - store float %34, ptr %twidth.i, align 4 + %33 = load float, ptr %arrayidx32, align 4 + store float %33, ptr %twidth.i, align 4 %arrayidx35 = getelementptr inbounds [16 x float], ptr %rnd, i64 0, i64 %indvars.iv128 - %35 = load float, ptr %arrayidx35, align 4 - store float %35, ptr %0, align 4 + %34 = load float, ptr %arrayidx35, align 4 + store float %34, ptr %0, align 4 %arrayidx37 = getelementptr inbounds float, ptr %R, i64 %indvars.iv128 - %36 = load float, ptr %arrayidx37, align 4 - %37 = or disjoint i64 %indvars.iv128, 16 - %arrayidx39 = getelementptr inbounds float, ptr %R, i64 %37 - %38 = load float, ptr %arrayidx39, align 4 - %39 = or disjoint i64 %indvars.iv128, 32 - %arrayidx42 = getelementptr inbounds float, ptr %R, i64 %39 - %40 = load float, ptr %arrayidx42, align 4 + %35 = load float, ptr %arrayidx37, align 4 + %36 = or disjoint i64 %indvars.iv128, 16 + %arrayidx39 = getelementptr inbounds float, ptr %R, i64 %36 + %37 = load float, ptr %arrayidx39, align 4 + %38 = or disjoint i64 %indvars.iv128, 32 + %arrayidx42 = getelementptr inbounds float, ptr %R, i64 %38 + %39 = load float, ptr %arrayidx42, align 4 %arrayidx45 = getelementptr inbounds float, ptr %dRdx, i64 %indvars.iv128 - %41 = load float, ptr %arrayidx45, align 4 - %arrayidx48 = getelementptr inbounds float, ptr %dRdx, i64 %37 - %42 = load float, ptr %arrayidx48, align 4 - %arrayidx51 = getelementptr inbounds float, ptr %dRdx, i64 %39 - %43 = load float, ptr %arrayidx51, align 4 + %40 = load float, ptr %arrayidx45, align 4 + %arrayidx48 = getelementptr inbounds float, ptr %dRdx, i64 %36 + %41 = load float, ptr %arrayidx48, align 4 + %arrayidx51 = getelementptr inbounds float, ptr %dRdx, i64 %38 + %42 = load float, ptr %arrayidx51, align 4 %arrayidx54 = getelementptr inbounds float, ptr %dRdy, i64 %indvars.iv128 - %44 = load float, ptr %arrayidx54, align 4 - %arrayidx57 = getelementptr inbounds float, ptr %dRdy, i64 %37 - %45 = load float, ptr %arrayidx57, align 4 - %arrayidx60 = getelementptr inbounds float, ptr %dRdy, i64 %39 - %46 = load float, ptr %arrayidx60, align 4 - %agg.tmp.sroa.0.0.vec.insert = insertelement <2 x float> poison, float %36, i64 0 - %agg.tmp.sroa.0.4.vec.insert = insertelement <2 x float> %agg.tmp.sroa.0.0.vec.insert, float %38, i64 1 - %agg.tmp64.sroa.0.0.vec.insert = insertelement <2 x float> poison, float %41, i64 0 - %agg.tmp64.sroa.0.4.vec.insert = insertelement <2 x float> %agg.tmp64.sroa.0.0.vec.insert, float %42, i64 1 - %agg.tmp65.sroa.0.0.vec.insert = insertelement <2 x float> poison, float %44, i64 0 - %agg.tmp65.sroa.0.4.vec.insert = insertelement <2 x float> %agg.tmp65.sroa.0.0.vec.insert, float %45, i64 1 - %call67 = call noundef zeroext i1 @_ZN18OpenImageIO_v2_6_03pvt17TextureSystemImpl11environmentEPNS_13TextureSystem13TextureHandleEPNS2_9PerthreadERNS_10TextureOptENS_9Vec3ParamIfEESA_SA_iPfSB_SB_(ptr noundef nonnull align 8 dereferenceable(184) %this, ptr noundef %texture_handle, ptr noundef %thread_info, ptr noundef nonnull align 8 dereferenceable(104) %opt, <2 x float> %agg.tmp.sroa.0.4.vec.insert, float %40, <2 x float> %agg.tmp64.sroa.0.4.vec.insert, float %43, <2 x float> %agg.tmp65.sroa.0.4.vec.insert, float %46, i32 noundef %nchannels, ptr noundef %cond, ptr noundef %add.ptr, ptr noundef %add.ptr21) - %47 = and i8 %ok.0123, 1 - %tobool7273 = icmp ne i8 %47, 0 + %43 = load float, ptr %arrayidx54, align 4 + %arrayidx57 = getelementptr inbounds float, ptr %dRdy, i64 %36 + %44 = load float, ptr %arrayidx57, align 4 + %arrayidx60 = getelementptr inbounds float, ptr %dRdy, i64 %38 + %45 = load float, ptr %arrayidx60, align 4 + %agg.tmp.sroa.0.0.vec.insert = insertelement <2 x float> poison, float %35, i64 0 + %agg.tmp.sroa.0.4.vec.insert = insertelement <2 x float> %agg.tmp.sroa.0.0.vec.insert, float %37, i64 1 + %agg.tmp64.sroa.0.0.vec.insert = insertelement <2 x float> poison, float %40, i64 0 + %agg.tmp64.sroa.0.4.vec.insert = insertelement <2 x float> %agg.tmp64.sroa.0.0.vec.insert, float %41, i64 1 + %agg.tmp65.sroa.0.0.vec.insert = insertelement <2 x float> poison, float %43, i64 0 + %agg.tmp65.sroa.0.4.vec.insert = insertelement <2 x float> %agg.tmp65.sroa.0.0.vec.insert, float %44, i64 1 + %call67 = call noundef zeroext i1 @_ZN18OpenImageIO_v2_6_03pvt17TextureSystemImpl11environmentEPNS_13TextureSystem13TextureHandleEPNS2_9PerthreadERNS_10TextureOptENS_9Vec3ParamIfEESA_SA_iPfSB_SB_(ptr noundef nonnull align 8 dereferenceable(184) %this, ptr noundef %texture_handle, ptr noundef %thread_info, ptr noundef nonnull align 8 dereferenceable(104) %opt, <2 x float> %agg.tmp.sroa.0.4.vec.insert, float %39, <2 x float> %agg.tmp64.sroa.0.4.vec.insert, float %42, <2 x float> %agg.tmp65.sroa.0.4.vec.insert, float %45, i32 noundef %nchannels, ptr noundef %cond, ptr noundef %add.ptr, ptr noundef %add.ptr21) + %tobool7273 = icmp ne i8 %ok.0123, 0 %tobool72 = select i1 %call67, i1 %tobool7273, i1 false %frombool73 = zext i1 %tobool72 to i8 br i1 %cmp75116, label %for.body76, label %for.inc120 @@ -2106,19 +2102,19 @@ if.then: ; preds = %for.body for.body76: ; preds = %if.then, %for.body76 %indvars.iv = phi i64 [ %indvars.iv.next, %for.body76 ], [ 0, %if.then ] %arrayidx78 = getelementptr inbounds float, ptr %cond, i64 %indvars.iv - %48 = load float, ptr %arrayidx78, align 4 - %49 = shl nsw i64 %indvars.iv, 4 - %50 = add nuw nsw i64 %49, %indvars.iv128 - %arrayidx82 = getelementptr inbounds float, ptr %result, i64 %50 - store float %48, ptr %arrayidx82, align 4 + %46 = load float, ptr %arrayidx78, align 4 + %47 = shl nsw i64 %indvars.iv, 4 + %48 = add nuw nsw i64 %47, %indvars.iv128 + %arrayidx82 = getelementptr inbounds float, ptr %result, i64 %48 + store float %46, ptr %arrayidx82, align 4 %arrayidx84 = getelementptr inbounds float, ptr %add.ptr, i64 %indvars.iv - %51 = load float, ptr %arrayidx84, align 4 - %arrayidx88 = getelementptr inbounds float, ptr %dresultds, i64 %50 - store float %51, ptr %arrayidx88, align 4 + %49 = load float, ptr %arrayidx84, align 4 + %arrayidx88 = getelementptr inbounds float, ptr %dresultds, i64 %48 + store float %49, ptr %arrayidx88, align 4 %arrayidx90 = getelementptr inbounds float, ptr %add.ptr21, i64 %indvars.iv - %52 = load float, ptr %arrayidx90, align 4 - %arrayidx94 = getelementptr inbounds float, ptr %dresultdt, i64 %50 - store float %52, ptr %arrayidx94, align 4 + %50 = load float, ptr %arrayidx90, align 4 + %arrayidx94 = getelementptr inbounds float, ptr %dresultdt, i64 %48 + store float %50, ptr %arrayidx94, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count138 br i1 %exitcond.not, label %for.inc120, label %for.body76, !llvm.loop !30 diff --git a/bench/opencv/optimized/hybrid_binarizer.cpp.ll b/bench/opencv/optimized/hybrid_binarizer.cpp.ll index f0bbced96c9..d8acc2bae93 100644 --- a/bench/opencv/optimized/hybrid_binarizer.cpp.ll +++ b/bench/opencv/optimized/hybrid_binarizer.cpp.ll @@ -623,8 +623,8 @@ _ZN5zxing15HybridBinarizer17getBlockThresholdEiiiiiiii.exit.us: ; preds = %_ZN5z %99 = load i8, ptr %gep, align 1 %100 = zext i8 %99 to i32 %101 = add nsw i32 %.184101.us, %100 - %spec.select97.us = tail call i32 @llvm.smin.i32(i32 %.181102.us, i32 %100) - %.279.us = tail call i32 @llvm.smax.i32(i32 %.178103.us, i32 %100) + %spec.select97.us = tail call i32 @llvm.umin.i32(i32 %.181102.us, i32 %100) + %.279.us = tail call i32 @llvm.umax.i32(i32 %.178103.us, i32 %100) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 8 br i1 %exitcond.not, label %83, label %98, !llvm.loop !8 @@ -1978,7 +1978,10 @@ declare void @_ZSt20__throw_length_errorPKc(ptr noundef) local_unnamed_addr #6 declare i32 @llvm.smin.i32(i32, i32) #7 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #7 +declare i32 @llvm.umin.i32(i32, i32) #7 + +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umax.i32(i32, i32) #7 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8 diff --git a/bench/opencv/optimized/pose_graph.cpp.ll b/bench/opencv/optimized/pose_graph.cpp.ll index 564483ea30a..ee27ccbf01d 100644 --- a/bench/opencv/optimized/pose_graph.cpp.ll +++ b/bench/opencv/optimized/pose_graph.cpp.ll @@ -1043,7 +1043,7 @@ _ZNSt6vectorImSaImEE9push_backERKm.exit62: ; preds = %72, %57, %67, %52, %.sroa.06.0.in.i.i.i75.us = phi ptr [ %20, %147 ], [ %.sroa.06.0.i.i.i76.us, %151 ] %.sroa.06.0.i.i.i76.us = load ptr, ptr %.sroa.06.0.in.i.i.i75.us, align 8 %.not.i.i.i77.us = icmp eq ptr %.sroa.06.0.i.i.i76.us, null - br i1 %.not.i.i.i77.us, label %.thread119, label %151 + br i1 %.not.i.i.i77.us, label %_ZNSt6vectorImSaImEED2Ev.exit, label %151 151: ; preds = %150 %152 = getelementptr inbounds i8, ptr %.sroa.06.0.i.i.i76.us, i64 8 @@ -1055,7 +1055,7 @@ _ZNSt6vectorImSaImEE9push_backERKm.exit62: ; preds = %72, %57, %67, %52, %.sroa.06.0.in.i.i.i88.us = phi ptr [ %20, %.loopexit134.us ], [ %.sroa.06.0.i.i.i89.us, %156 ] %.sroa.06.0.i.i.i89.us = load ptr, ptr %.sroa.06.0.in.i.i.i88.us, align 8 %.not.i.i.i90.us = icmp eq ptr %.sroa.06.0.i.i.i89.us, null - br i1 %.not.i.i.i90.us, label %.thread119, label %156 + br i1 %.not.i.i.i90.us, label %_ZNSt6vectorImSaImEED2Ev.exit, label %156 156: ; preds = %155 %157 = getelementptr inbounds i8, ptr %.sroa.06.0.i.i.i89.us, i64 8 @@ -1066,7 +1066,7 @@ _ZNSt6vectorImSaImEE9push_backERKm.exit62: ; preds = %72, %57, %67, %52, .loopexit.us: ; preds = %156 %160 = add nuw i64 %.030191.us, 1 %exitcond232.not = icmp eq i64 %160, %14 - br i1 %exitcond232.not, label %.thread119, label %.split.us.split, !llvm.loop !56 + br i1 %exitcond232.not, label %_ZNSt6vectorImSaImEED2Ev.exit, label %.split.us.split, !llvm.loop !56 .loopexit134.us: ; preds = %151 %161 = getelementptr inbounds i8, ptr %148, i64 8 @@ -1092,7 +1092,7 @@ _ZNSt6vectorImSaImEE9push_backERKm.exit62: ; preds = %72, %57, %67, %52, %167 = getelementptr inbounds ptr, ptr %146, i64 %166 %168 = load ptr, ptr %167, align 8 %.not.i.i.i.i.i67 = icmp eq ptr %168, null - br i1 %.not.i.i.i.i.i67, label %.thread119, label %169 + br i1 %.not.i.i.i.i.i67, label %_ZNSt6vectorImSaImEED2Ev.exit, label %169 169: ; preds = %163 %170 = load ptr, ptr %168, align 8 @@ -1109,14 +1109,14 @@ _ZNSt6vectorImSaImEE9push_backERKm.exit62: ; preds = %72, %57, %67, %52, %.018.i.i.i.i.i69 = phi ptr [ %176, %174 ], [ %170, %169 ] %176 = load ptr, ptr %.018.i.i.i.i.i69, align 8 %.not16.i.i.i.i.i70 = icmp eq ptr %176, null - br i1 %.not16.i.i.i.i.i70, label %.thread119, label %177 + br i1 %.not16.i.i.i.i.i70, label %_ZNSt6vectorImSaImEED2Ev.exit, label %177 177: ; preds = %.lr.ph.i.i.i.i.i68 %178 = getelementptr inbounds i8, ptr %176, i64 8 %179 = load i64, ptr %178, align 8 %180 = urem i64 %179, %145 %.not17.i.i.i.i.i71 = icmp eq i64 %180, %166 - br i1 %.not17.i.i.i.i.i71, label %174, label %.thread119, !llvm.loop !54 + br i1 %.not17.i.i.i.i.i71, label %174, label %_ZNSt6vectorImSaImEED2Ev.exit, !llvm.loop !54 .thread123: ; preds = %174, %169 %181 = getelementptr inbounds i8, ptr %164, i64 8 @@ -1125,7 +1125,7 @@ _ZNSt6vectorImSaImEE9push_backERKm.exit62: ; preds = %72, %57, %67, %52, %184 = getelementptr inbounds ptr, ptr %146, i64 %183 %185 = load ptr, ptr %184, align 8 %.not.i.i.i.i.i80 = icmp eq ptr %185, null - br i1 %.not.i.i.i.i.i80, label %.thread119, label %186 + br i1 %.not.i.i.i.i.i80, label %_ZNSt6vectorImSaImEED2Ev.exit, label %186 186: ; preds = %.thread123 %187 = load ptr, ptr %185, align 8 @@ -1142,72 +1142,65 @@ _ZNSt6vectorImSaImEE9push_backERKm.exit62: ; preds = %72, %57, %67, %52, %.018.i.i.i.i.i82 = phi ptr [ %193, %191 ], [ %187, %186 ] %193 = load ptr, ptr %.018.i.i.i.i.i82, align 8 %.not16.i.i.i.i.i83 = icmp eq ptr %193, null - br i1 %.not16.i.i.i.i.i83, label %.thread119, label %194 + br i1 %.not16.i.i.i.i.i83, label %_ZNSt6vectorImSaImEED2Ev.exit, label %194 194: ; preds = %.lr.ph.i.i.i.i.i81 %195 = getelementptr inbounds i8, ptr %193, i64 8 %196 = load i64, ptr %195, align 8 %197 = urem i64 %196, %145 %.not17.i.i.i.i.i84 = icmp eq i64 %197, %183 - br i1 %.not17.i.i.i.i.i84, label %191, label %.thread119, !llvm.loop !54 + br i1 %.not17.i.i.i.i.i84, label %191, label %_ZNSt6vectorImSaImEED2Ev.exit, !llvm.loop !54 .loopexit132: ; preds = %191, %186 %198 = add nuw i64 %.030191, 1 %exitcond229.not = icmp eq i64 %198, %14 - br i1 %exitcond229.not, label %.thread119, label %.split.split, !llvm.loop !56 + br i1 %exitcond229.not, label %_ZNSt6vectorImSaImEED2Ev.exit, label %.split.split, !llvm.loop !56 -.thread119: ; preds = %.loopexit132, %163, %.thread123, %177, %.lr.ph.i.i.i.i.i68, %.lr.ph.i.i.i.i.i81, %194, %.loopexit.us, %150, %155 +_ZNSt6vectorImSaImEED2Ev.exit: ; preds = %.loopexit132, %163, %.thread123, %177, %.lr.ph.i.i.i.i.i68, %.lr.ph.i.i.i.i.i81, %194, %.loopexit.us, %150, %155 %199 = phi i1 [ false, %155 ], [ false, %150 ], [ true, %.loopexit.us ], [ false, %194 ], [ false, %.lr.ph.i.i.i.i.i81 ], [ false, %.lr.ph.i.i.i.i.i68 ], [ false, %177 ], [ true, %.loopexit132 ], [ false, %163 ], [ false, %.thread123 ] %200 = and i1 %106, %199 - %.not.i.i.i92 = icmp eq ptr %.sroa.8.2, null - br i1 %.not.i.i.i92, label %_ZNSt6vectorImSaImEED2Ev.exit, label %201 - -201: ; preds = %.thread119 call void @_ZdlPv(ptr noundef nonnull %.sroa.099.4) #28 - br label %_ZNSt6vectorImSaImEED2Ev.exit - -_ZNSt6vectorImSaImEED2Ev.exit: ; preds = %.thread119, %201 - %202 = load ptr, ptr %20, align 8 - %.not5.i.i.i.i = icmp eq ptr %202, null + %201 = load ptr, ptr %20, align 8 + %.not5.i.i.i.i = icmp eq ptr %201, null br i1 %.not5.i.i.i.i, label %_ZNSt10_HashtableImmSaImENSt8__detail9_IdentityESt8equal_toImESt4hashImENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE5clearEv.exit.i.i, label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %_ZNSt6vectorImSaImEED2Ev.exit, %.lr.ph.i.i.i.i - %.06.i.i.i.i = phi ptr [ %203, %.lr.ph.i.i.i.i ], [ %202, %_ZNSt6vectorImSaImEED2Ev.exit ] - %203 = load ptr, ptr %.06.i.i.i.i, align 8 + %.06.i.i.i.i = phi ptr [ %202, %.lr.ph.i.i.i.i ], [ %201, %_ZNSt6vectorImSaImEED2Ev.exit ] + %202 = load ptr, ptr %.06.i.i.i.i, align 8 call void @_ZdlPv(ptr noundef nonnull %.06.i.i.i.i) #28 - %.not.i.i.i.i = icmp eq ptr %203, null + %.not.i.i.i.i = icmp eq ptr %202, null br i1 %.not.i.i.i.i, label %_ZNSt10_HashtableImmSaImENSt8__detail9_IdentityESt8equal_toImESt4hashImENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE5clearEv.exit.i.i, label %.lr.ph.i.i.i.i, !llvm.loop !57 _ZNSt10_HashtableImmSaImENSt8__detail9_IdentityESt8equal_toImESt4hashImENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE5clearEv.exit.i.i: ; preds = %.lr.ph.i.i.i.i, %_ZNSt6vectorImSaImEED2Ev.exit - %204 = load ptr, ptr %3, align 8 - %205 = load i64, ptr %19, align 8 - %206 = shl i64 %205, 3 - call void @llvm.memset.p0.i64(ptr align 8 %204, i8 0, i64 %206, i1 false) + %203 = load ptr, ptr %3, align 8 + %204 = load i64, ptr %19, align 8 + %205 = shl i64 %204, 3 + call void @llvm.memset.p0.i64(ptr align 8 %203, i8 0, i64 %205, i1 false) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %20, i8 0, i64 16, i1 false) - %207 = load ptr, ptr %3, align 8 - %208 = icmp eq ptr %207, %18 - br i1 %208, label %_ZNSt13unordered_setImSt4hashImESt8equal_toImESaImEED2Ev.exit, label %209 + %206 = load ptr, ptr %3, align 8 + %207 = icmp eq ptr %206, %18 + br i1 %207, label %_ZNSt13unordered_setImSt4hashImESt8equal_toImESaImEED2Ev.exit, label %208 -209: ; preds = %_ZNSt10_HashtableImmSaImENSt8__detail9_IdentityESt8equal_toImESt4hashImENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE5clearEv.exit.i.i - call void @_ZdlPv(ptr noundef %207) #28 +208: ; preds = %_ZNSt10_HashtableImmSaImENSt8__detail9_IdentityESt8equal_toImESt4hashImENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE5clearEv.exit.i.i + call void @_ZdlPv(ptr noundef %206) #28 br label %_ZNSt13unordered_setImSt4hashImESt8equal_toImESaImEED2Ev.exit .loopexit.split-lp: ; preds = %.loopexit142, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %136 %.sroa.099.3 = phi ptr [ %.sroa.099.4, %136 ], [ %.sroa.099.2186, %.loopexit142 ], [ %.sroa.099.1190, %.loopexit.split-lp.loopexit ], [ %.sroa.099.0.ph.ph, %.loopexit.split-lp.loopexit.split-lp ] %.pn45 = phi { ptr, i32 } [ %.pn, %136 ], [ %lpad.loopexit, %.loopexit142 ], [ %lpad.loopexit143, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp144, %.loopexit.split-lp.loopexit.split-lp ] %.not.i.i.i93 = icmp eq ptr %.sroa.099.3, null - br i1 %.not.i.i.i93, label %_ZNSt6vectorImSaImEED2Ev.exit94, label %210 + br i1 %.not.i.i.i93, label %_ZNSt6vectorImSaImEED2Ev.exit94, label %209 -210: ; preds = %.loopexit.split-lp +209: ; preds = %.loopexit.split-lp call void @_ZdlPv(ptr noundef nonnull %.sroa.099.3) #28 br label %_ZNSt6vectorImSaImEED2Ev.exit94 -_ZNSt6vectorImSaImEED2Ev.exit94: ; preds = %.loopexit.split-lp, %210 +_ZNSt6vectorImSaImEED2Ev.exit94: ; preds = %.loopexit.split-lp, %209 call void @_ZNSt13unordered_setImSt4hashImESt8equal_toImESaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %3) #24 resume { ptr, i32 } %.pn45 -_ZNSt13unordered_setImSt4hashImESt8equal_toImESaImEED2Ev.exit: ; preds = %209, %_ZNSt10_HashtableImmSaImENSt8__detail9_IdentityESt8equal_toImESt4hashImENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE5clearEv.exit.i.i, %1 - %.0 = phi i1 [ false, %1 ], [ %200, %_ZNSt10_HashtableImmSaImENSt8__detail9_IdentityESt8equal_toImESt4hashImENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE5clearEv.exit.i.i ], [ %200, %209 ] +_ZNSt13unordered_setImSt4hashImESt8equal_toImESaImEED2Ev.exit: ; preds = %208, %_ZNSt10_HashtableImmSaImENSt8__detail9_IdentityESt8equal_toImESt4hashImENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE5clearEv.exit.i.i, %1 + %.0 = phi i1 [ false, %1 ], [ %200, %_ZNSt10_HashtableImmSaImENSt8__detail9_IdentityESt8equal_toImESt4hashImENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE5clearEv.exit.i.i ], [ %200, %208 ] ret i1 %.0 } diff --git a/bench/opencv/optimized/tf_importer.cpp.ll b/bench/opencv/optimized/tf_importer.cpp.ll index ae0ca0fa92c..0062f803297 100644 --- a/bench/opencv/optimized/tf_importer.cpp.ll +++ b/bench/opencv/optimized/tf_importer.cpp.ll @@ -10582,7 +10582,7 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %69 = getelementptr i8, ptr %61, i64 24 %.val10.i.i = load ptr, ptr %69, align 8 %70 = icmp eq ptr %.val10.i.i, null - br i1 %70, label %.thread.i, label %127 + br i1 %70, label %.thread.i, label %.thread.i.thread 71: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit13.i.i %.01115.i14.i.i = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN2cv3dnn14dnn4_v2024052112_GLOBAL__N_110TFImporter16buildDispatchMapB5cxx11EvE8dispatchB5cxx11, i64 16), align 8 @@ -10741,9 +10741,9 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %126 = icmp slt i32 %122, 0 br i1 %126, label %.thread.i, label %.thread14.i -127: ; preds = %106, %95, %68, %57, %30 - %.sroa.021.0.i.i = phi ptr [ null, %30 ], [ %58, %57 ], [ null, %95 ], [ %.08.lcssa.i.i.i5, %68 ], [ %99, %106 ] - %.sroa.12.0.i.i = phi ptr [ %31, %30 ], [ %58, %57 ], [ %96, %95 ], [ %.08.lcssa.i.i.i5, %68 ], [ %99, %106 ] +127: ; preds = %106, %95, %57, %30 + %.sroa.021.0.i.i = phi ptr [ null, %30 ], [ %58, %57 ], [ null, %95 ], [ %99, %106 ] + %.sroa.12.0.i.i = phi ptr [ %31, %30 ], [ %58, %57 ], [ %96, %95 ], [ %99, %106 ] %.not.i = icmp eq ptr %.sroa.12.0.i.i, null br i1 %.not.i, label %.thread14.i, label %.thread.i @@ -10753,7 +10753,7 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %.not.i.i11.i = icmp ne ptr %.sroa.021.0.i10.i, null %128 = icmp eq ptr %.sroa.12.0.i11.i, getelementptr inbounds (i8, ptr @_ZZN2cv3dnn14dnn4_v2024052112_GLOBAL__N_110TFImporter16buildDispatchMapB5cxx11EvE8dispatchB5cxx11, i64 8) %or.cond.i.i.i = select i1 %.not.i.i11.i, i1 true, i1 %128 - br i1 %or.cond.i.i.i, label %136, label %129 + br i1 %or.cond.i.i.i, label %.thread.i.thread, label %129 129: ; preds = %.thread.i %130 = getelementptr inbounds i8, ptr %.sroa.12.0.i11.i, i64 32 @@ -10769,14 +10769,15 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i: ; preds = %129 %135 = icmp slt i32 %131, 0 - br label %136 - -136: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i, %.thread.i - %137 = phi i1 [ true, %.thread.i ], [ %135, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i ] - tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %137, ptr noundef nonnull %17, ptr noundef nonnull %.sroa.12.0.i11.i, ptr noundef nonnull align 8 dereferenceable(32) getelementptr inbounds (i8, ptr @_ZZN2cv3dnn14dnn4_v2024052112_GLOBAL__N_110TFImporter16buildDispatchMapB5cxx11EvE8dispatchB5cxx11, i64 8)) #26 - %138 = load i64, ptr getelementptr inbounds (i8, ptr @_ZZN2cv3dnn14dnn4_v2024052112_GLOBAL__N_110TFImporter16buildDispatchMapB5cxx11EvE8dispatchB5cxx11, i64 40), align 8 - %139 = add i64 %138, 1 - store i64 %139, ptr getelementptr inbounds (i8, ptr @_ZZN2cv3dnn14dnn4_v2024052112_GLOBAL__N_110TFImporter16buildDispatchMapB5cxx11EvE8dispatchB5cxx11, i64 40), align 8 + br label %.thread.i.thread + +.thread.i.thread: ; preds = %68, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i, %.thread.i + %.sroa.12.0.i11.i13 = phi ptr [ %.sroa.12.0.i11.i, %.thread.i ], [ %.sroa.12.0.i11.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i ], [ %.08.lcssa.i.i.i5, %68 ] + %136 = phi i1 [ true, %.thread.i ], [ %135, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i ], [ true, %68 ] + tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %136, ptr noundef nonnull %17, ptr noundef nonnull %.sroa.12.0.i11.i13, ptr noundef nonnull align 8 dereferenceable(32) getelementptr inbounds (i8, ptr @_ZZN2cv3dnn14dnn4_v2024052112_GLOBAL__N_110TFImporter16buildDispatchMapB5cxx11EvE8dispatchB5cxx11, i64 8)) #26 + %137 = load i64, ptr getelementptr inbounds (i8, ptr @_ZZN2cv3dnn14dnn4_v2024052112_GLOBAL__N_110TFImporter16buildDispatchMapB5cxx11EvE8dispatchB5cxx11, i64 40), align 8 + %138 = add i64 %137, 1 + store i64 %138, ptr getelementptr inbounds (i8, ptr @_ZZN2cv3dnn14dnn4_v2024052112_GLOBAL__N_110TFImporter16buildDispatchMapB5cxx11EvE8dispatchB5cxx11, i64 40), align 8 br label %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_MN2cv3dnn14dnn4_v2024052112_GLOBAL__N_110TFImporterEFvRN17opencv_tensorflow8GraphDefERKNSD_7NodeDefERNSA_11LayerParamsEEESt10_Select1stISN_ESt4lessIS5_ESaISN_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJOS5_EESY_IJEEEEESt17_Rb_tree_iteratorISN_ESt23_Rb_tree_const_iteratorISN_EDpOT_.exit .thread14.i: ; preds = %127, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit12.i50.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit36.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit12.i26.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit12.i.i.i @@ -10785,10 +10786,10 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi tail call void @_ZdlPv(ptr noundef nonnull %17) #30 br label %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_MN2cv3dnn14dnn4_v2024052112_GLOBAL__N_110TFImporterEFvRN17opencv_tensorflow8GraphDefERKNSD_7NodeDefERNSA_11LayerParamsEEESt10_Select1stISN_ESt4lessIS5_ESaISN_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJOS5_EESY_IJEEEEESt17_Rb_tree_iteratorISN_ESt23_Rb_tree_const_iteratorISN_EDpOT_.exit -_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_MN2cv3dnn14dnn4_v2024052112_GLOBAL__N_110TFImporterEFvRN17opencv_tensorflow8GraphDefERKNSD_7NodeDefERNSA_11LayerParamsEEESt10_Select1stISN_ESt4lessIS5_ESaISN_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJOS5_EESY_IJEEEEESt17_Rb_tree_iteratorISN_ESt23_Rb_tree_const_iteratorISN_EDpOT_.exit: ; preds = %.thread14.i, %136, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit - %.sroa.03.0 = phi ptr [ %.19.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit ], [ %17, %136 ], [ %.sroa.01.0.ph.i, %.thread14.i ] - %140 = getelementptr inbounds i8, ptr %.sroa.03.0, i64 64 - ret ptr %140 +_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_MN2cv3dnn14dnn4_v2024052112_GLOBAL__N_110TFImporterEFvRN17opencv_tensorflow8GraphDefERKNSD_7NodeDefERNSA_11LayerParamsEEESt10_Select1stISN_ESt4lessIS5_ESaISN_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJOS5_EESY_IJEEEEESt17_Rb_tree_iteratorISN_ESt23_Rb_tree_const_iteratorISN_EDpOT_.exit: ; preds = %.thread14.i, %.thread.i.thread, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit + %.sroa.03.0 = phi ptr [ %.19.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit ], [ %17, %.thread.i.thread ], [ %.sroa.01.0.ph.i, %.thread14.i ] + %139 = getelementptr inbounds i8, ptr %.sroa.03.0, i64 64 + ret ptr %139 } ; Function Attrs: mustprogress uwtable diff --git a/bench/openjdk/optimized/threadService.ll b/bench/openjdk/optimized/threadService.ll index c07a8f3053c..2c8e2c4f2e8 100644 --- a/bench/openjdk/optimized/threadService.ll +++ b/bench/openjdk/optimized/threadService.ll @@ -1461,7 +1461,7 @@ _ZN13DeadlockCycleC2Ev.exit: ; preds = %._crit_edge, %49 %55 = load ptr, ptr %3, align 8 %56 = load ptr, ptr %55, align 8 %.not98192 = icmp eq ptr %56, null - br i1 %.not98192, label %._crit_edge202.thread, label %.lr.ph201 + br i1 %.not98192, label %._crit_edge202, label %.lr.ph201 .lr.ph201: ; preds = %_ZN13DeadlockCycleC2Ev.exit %57 = getelementptr inbounds i8, ptr %0, i64 4 @@ -1853,9 +1853,9 @@ _ZN13DeadlockCycleC2Ev.exit135: ; preds = %226, %230 br i1 %or.cond3, label %.critedge, label %_ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118.thread, !llvm.loop !17 _ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118.thread.sink.split: ; preds = %_ZN13DeadlockCycleC2Ev.exit135, %_ZN13DeadlockCycleC2Ev.exit119 - %.sink238 = phi ptr [ %144, %_ZN13DeadlockCycleC2Ev.exit119 ], [ %227, %_ZN13DeadlockCycleC2Ev.exit135 ] + %.sink233 = phi ptr [ %144, %_ZN13DeadlockCycleC2Ev.exit119 ], [ %227, %_ZN13DeadlockCycleC2Ev.exit135 ] %.182.ph = phi ptr [ %.283, %_ZN13DeadlockCycleC2Ev.exit119 ], [ %.3, %_ZN13DeadlockCycleC2Ev.exit135 ] - %240 = getelementptr inbounds i8, ptr %.sink238, i64 8 + %240 = getelementptr inbounds i8, ptr %.sink233, i64 8 store ptr null, ptr %240, align 8 br label %_ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118.thread @@ -1863,12 +1863,12 @@ _ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118.thread: ; %.191 = phi ptr [ %.090194, %_ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118 ], [ %.393173, %219 ], [ %.090194, %_ZNK7oopDesc4is_aEP5Klass.exit.i117 ], [ %.090194, %_ZNK7oopDesc5klassEv.exit.i.i105 ], [ null, %101 ], [ %.393173, %_ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118.thread.sink.split ], [ %.393173, %.lr.ph.i.i.i127 ], [ %.393173, %179 ], [ null, %237 ], [ %.393173, %_ZNK7oopDesc4is_aEP5Klass.exit.thread ], [ %.393173, %_ZNK7oopDesc4is_aEP5Klass.exit ], [ %.393173, %176 ], [ %.393173, %_ZNK7oopDesc4is_aEP5Klass.exit.i133 ], [ %.393173, %_ZNK7oopDesc5klassEv.exit.i.i121 ], [ %.090194, %.lr.ph.i.i.i111 ] %.182 = phi ptr [ %.081196, %_ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118 ], [ %.081196, %219 ], [ %.081196, %_ZNK7oopDesc4is_aEP5Klass.exit.i117 ], [ %.081196, %_ZNK7oopDesc5klassEv.exit.i.i105 ], [ %.081196, %101 ], [ %.182.ph, %_ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118.thread.sink.split ], [ %.081196, %.lr.ph.i.i.i127 ], [ %.081196, %_ZNK7oopDesc5klassEv.exit.i.i121 ], [ %.081196, %_ZNK7oopDesc4is_aEP5Klass.exit.i133 ], [ %.081196, %176 ], [ %.081196, %_ZNK7oopDesc4is_aEP5Klass.exit ], [ %.081196, %_ZNK7oopDesc4is_aEP5Klass.exit.thread ], [ %.081196, %237 ], [ %.081196, %179 ], [ %.081196, %.lr.ph.i.i.i111 ] %.180 = phi ptr [ %.079197, %_ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118 ], [ %.079197, %219 ], [ %.079197, %_ZNK7oopDesc4is_aEP5Klass.exit.i117 ], [ %.079197, %_ZNK7oopDesc5klassEv.exit.i.i105 ], [ %.079197, %101 ], [ %.077198, %_ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118.thread.sink.split ], [ %.079197, %.lr.ph.i.i.i127 ], [ %.079197, %_ZNK7oopDesc5klassEv.exit.i.i121 ], [ %.079197, %_ZNK7oopDesc4is_aEP5Klass.exit.i133 ], [ %.079197, %176 ], [ %.079197, %_ZNK7oopDesc4is_aEP5Klass.exit ], [ %.079197, %_ZNK7oopDesc4is_aEP5Klass.exit.thread ], [ %.079197, %237 ], [ %.079197, %179 ], [ %.079197, %.lr.ph.i.i.i111 ] - %.178 = phi ptr [ %.077198, %_ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118 ], [ %.077198, %219 ], [ %.077198, %_ZNK7oopDesc4is_aEP5Klass.exit.i117 ], [ %.077198, %_ZNK7oopDesc5klassEv.exit.i.i105 ], [ %.077198, %101 ], [ %.sink238, %_ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118.thread.sink.split ], [ %.077198, %.lr.ph.i.i.i127 ], [ %.077198, %_ZNK7oopDesc5klassEv.exit.i.i121 ], [ %.077198, %_ZNK7oopDesc4is_aEP5Klass.exit.i133 ], [ %.077198, %176 ], [ %.077198, %_ZNK7oopDesc4is_aEP5Klass.exit ], [ %.077198, %_ZNK7oopDesc4is_aEP5Klass.exit.thread ], [ %.077198, %237 ], [ %.077198, %179 ], [ %.077198, %.lr.ph.i.i.i111 ] + %.178 = phi ptr [ %.077198, %_ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118 ], [ %.077198, %219 ], [ %.077198, %_ZNK7oopDesc4is_aEP5Klass.exit.i117 ], [ %.077198, %_ZNK7oopDesc5klassEv.exit.i.i105 ], [ %.077198, %101 ], [ %.sink233, %_ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118.thread.sink.split ], [ %.077198, %.lr.ph.i.i.i127 ], [ %.077198, %_ZNK7oopDesc5klassEv.exit.i.i121 ], [ %.077198, %_ZNK7oopDesc4is_aEP5Klass.exit.i133 ], [ %.077198, %176 ], [ %.077198, %_ZNK7oopDesc4is_aEP5Klass.exit ], [ %.077198, %_ZNK7oopDesc4is_aEP5Klass.exit.thread ], [ %.077198, %237 ], [ %.077198, %179 ], [ %.077198, %.lr.ph.i.i.i111 ] %.1 = phi i32 [ %.0200, %_ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118 ], [ %.2176, %219 ], [ %.0200, %_ZNK7oopDesc4is_aEP5Klass.exit.i117 ], [ %.0200, %_ZNK7oopDesc5klassEv.exit.i.i105 ], [ %.2170, %101 ], [ %.2176, %_ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118.thread.sink.split ], [ %.2176, %.lr.ph.i.i.i127 ], [ %.2176, %179 ], [ %.2, %237 ], [ %.2176, %_ZNK7oopDesc4is_aEP5Klass.exit.thread ], [ %.2176, %_ZNK7oopDesc4is_aEP5Klass.exit ], [ %.2176, %176 ], [ %.2176, %_ZNK7oopDesc4is_aEP5Klass.exit.i133 ], [ %.2176, %_ZNK7oopDesc5klassEv.exit.i.i121 ], [ %.0200, %.lr.ph.i.i.i111 ] %241 = add i32 %.sroa.5.1193, 1 %242 = load i32, ptr %57, align 4 %.not.i136 = icmp ult i32 %241, %242 - br i1 %.not.i136, label %_ZN18JavaThreadIterator4nextEv.exit138, label %._crit_edge202 + br i1 %.not.i136, label %_ZN18JavaThreadIterator4nextEv.exit138, label %._crit_edge202.loopexit _ZN18JavaThreadIterator4nextEv.exit138: ; preds = %_ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118.thread %243 = load ptr, ptr %3, align 8 @@ -1876,42 +1876,38 @@ _ZN18JavaThreadIterator4nextEv.exit138: ; preds = %_ZN13ThreadService2 %245 = getelementptr inbounds ptr, ptr %243, i64 %244 %246 = load ptr, ptr %245, align 8 %.not98 = icmp eq ptr %246, null - br i1 %.not98, label %._crit_edge202, label %58, !llvm.loop !18 - -._crit_edge202: ; preds = %_ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118.thread, %_ZN18JavaThreadIterator4nextEv.exit138 - %247 = icmp eq ptr %.178, null - br i1 %247, label %255, label %._crit_edge202.thread - -._crit_edge202.thread: ; preds = %_ZN13DeadlockCycleC2Ev.exit, %._crit_edge202 - %.077.lcssa225 = phi ptr [ %.178, %._crit_edge202 ], [ %46, %_ZN13DeadlockCycleC2Ev.exit ] - %.081.lcssa223 = phi ptr [ %.182, %._crit_edge202 ], [ null, %_ZN13DeadlockCycleC2Ev.exit ] - %248 = load ptr, ptr %.077.lcssa225, align 8 - %249 = icmp eq ptr %248, null - br i1 %249, label %_ZN13DeadlockCycleD2Ev.exit, label %250 - -250: ; preds = %._crit_edge202.thread - %251 = getelementptr inbounds i8, ptr %248, i64 16 - %252 = load i64, ptr %251, align 8 - %253 = and i64 %252, 1 - %.not.i.i139 = icmp eq i64 %253, 0 - br i1 %.not.i.i139, label %_ZN13GrowableArrayIP10JavaThreadED2Ev.exit.i, label %254 - -254: ; preds = %250 - store i32 0, ptr %248, align 4 - tail call void @_ZN26GrowableArrayWithAllocatorIP10JavaThread13GrowableArrayIS1_EE13shrink_to_fitEv(ptr noundef nonnull align 8 dereferenceable(24) %248) + br i1 %.not98, label %._crit_edge202.loopexit, label %58, !llvm.loop !18 + +._crit_edge202.loopexit: ; preds = %_ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118.thread, %_ZN18JavaThreadIterator4nextEv.exit138 + %.pre = load ptr, ptr %.178, align 8 + br label %._crit_edge202 + +._crit_edge202: ; preds = %._crit_edge202.loopexit, %_ZN13DeadlockCycleC2Ev.exit + %247 = phi ptr [ %47, %_ZN13DeadlockCycleC2Ev.exit ], [ %.pre, %._crit_edge202.loopexit ] + %.081.lcssa = phi ptr [ null, %_ZN13DeadlockCycleC2Ev.exit ], [ %.182, %._crit_edge202.loopexit ] + %.077.lcssa = phi ptr [ %46, %_ZN13DeadlockCycleC2Ev.exit ], [ %.178, %._crit_edge202.loopexit ] + %248 = icmp eq ptr %247, null + br i1 %248, label %_ZN13DeadlockCycleD2Ev.exit, label %249 + +249: ; preds = %._crit_edge202 + %250 = getelementptr inbounds i8, ptr %247, i64 16 + %251 = load i64, ptr %250, align 8 + %252 = and i64 %251, 1 + %.not.i.i139 = icmp eq i64 %252, 0 + br i1 %.not.i.i139, label %_ZN13GrowableArrayIP10JavaThreadED2Ev.exit.i, label %253 + +253: ; preds = %249 + store i32 0, ptr %247, align 4 + tail call void @_ZN26GrowableArrayWithAllocatorIP10JavaThread13GrowableArrayIS1_EE13shrink_to_fitEv(ptr noundef nonnull align 8 dereferenceable(24) %247) br label %_ZN13GrowableArrayIP10JavaThreadED2Ev.exit.i -_ZN13GrowableArrayIP10JavaThreadED2Ev.exit.i: ; preds = %254, %250 - tail call void @_ZN6AnyObjdlEPv(ptr noundef nonnull %248) #13 +_ZN13GrowableArrayIP10JavaThreadED2Ev.exit.i: ; preds = %253, %249 + tail call void @_ZN6AnyObjdlEPv(ptr noundef nonnull %247) #13 br label %_ZN13DeadlockCycleD2Ev.exit -_ZN13DeadlockCycleD2Ev.exit: ; preds = %._crit_edge202.thread, %_ZN13GrowableArrayIP10JavaThreadED2Ev.exit.i - tail call void @_Z8FreeHeapPv(ptr noundef nonnull %.077.lcssa225) #13 - br label %255 - -255: ; preds = %_ZN13DeadlockCycleD2Ev.exit, %._crit_edge202 - %.081.lcssa224 = phi ptr [ %.081.lcssa223, %_ZN13DeadlockCycleD2Ev.exit ], [ %.182, %._crit_edge202 ] - ret ptr %.081.lcssa224 +_ZN13DeadlockCycleD2Ev.exit: ; preds = %._crit_edge202, %_ZN13GrowableArrayIP10JavaThreadED2Ev.exit.i + tail call void @_Z8FreeHeapPv(ptr noundef nonnull %.077.lcssa) #13 + ret ptr %.081.lcssa } declare noundef ptr @_ZN10JavaThread20current_park_blockerEv(ptr noundef nonnull align 8 dereferenceable(1800)) local_unnamed_addr #1 diff --git a/bench/openspiel/optimized/hex.cc.ll b/bench/openspiel/optimized/hex.cc.ll index 9adb47b4220..87073a222dc 100644 --- a/bench/openspiel/optimized/hex.cc.ll +++ b/bench/openspiel/optimized/hex.cc.ll @@ -1968,14 +1968,10 @@ _ZNSt6vectorIiSaIiEE9push_backERKi.exit: ; preds = %_ZNSt6vectorIiSaIiE br i1 %.not, label %._crit_edge.loopexit, label %.lr.ph 93: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit - %.not.i.i.i28 = icmp eq ptr %.sroa.8.1.lcssa, null - br i1 %.not.i.i.i28, label %_ZNSt6vectorIiSaIiEED2Ev.exit30, label %94 - -94: ; preds = %93 - %95 = ptrtoint ptr %.sroa.17.1.lcssa to i64 - %96 = ptrtoint ptr %.sroa.8.1.lcssa to i64 - %97 = sub i64 %95, %96 - tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.040.1.lcssa, i64 noundef %97) #26 + %94 = ptrtoint ptr %.sroa.17.1.lcssa to i64 + %95 = ptrtoint ptr %.sroa.8.1.lcssa to i64 + %96 = sub i64 %94, %95 + tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.040.1.lcssa, i64 noundef %96) #26 br label %_ZNSt6vectorIiSaIiEED2Ev.exit30 _ZNSt6vectorIiSaIiEED2Ev.exit27: ; preds = %87, %85, %52 @@ -1983,24 +1979,24 @@ _ZNSt6vectorIiSaIiEED2Ev.exit27: ; preds = %87, %85, %52 %.sroa.040.2 = phi ptr [ %.sroa.040.075, %52 ], [ %.sroa.040.170, %85 ], [ %.sroa.040.170, %87 ] %.pn = phi { ptr, i32 } [ %53, %52 ], [ %lpad.phi, %85 ], [ %lpad.phi, %87 ] %.not.i.i.i31 = icmp eq ptr %.sroa.040.2, null - br i1 %.not.i.i.i31, label %.body, label %98 + br i1 %.not.i.i.i31, label %.body, label %97 -98: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit27 - %99 = ptrtoint ptr %.sroa.17.2 to i64 - %100 = ptrtoint ptr %.sroa.040.2 to i64 - %101 = sub i64 %99, %100 - tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.040.2, i64 noundef %101) #26 +97: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit27 + %98 = ptrtoint ptr %.sroa.17.2 to i64 + %99 = ptrtoint ptr %.sroa.040.2 to i64 + %100 = sub i64 %98, %99 + tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.040.2, i64 noundef %100) #26 br label %.body -_ZNSt6vectorIiSaIiEED2Ev.exit30: ; preds = %94, %93, %17, %17, %27, %25 - %102 = getelementptr inbounds nuw i8, ptr %0, i64 88 - %103 = load i32, ptr %102, align 8 - %104 = sub nsw i32 1, %103 - store i32 %104, ptr %102, align 8 +_ZNSt6vectorIiSaIiEED2Ev.exit30: ; preds = %93, %17, %17, %27, %25 + %101 = getelementptr inbounds nuw i8, ptr %0, i64 88 + %102 = load i32, ptr %101, align 8 + %103 = sub nsw i32 1, %102 + store i32 %103, ptr %101, align 8 ret void -.body: ; preds = %98, %_ZNSt6vectorIiSaIiEED2Ev.exit27, %15 - %.pn.pn = phi { ptr, i32 } [ %16, %15 ], [ %.pn, %_ZNSt6vectorIiSaIiEED2Ev.exit27 ], [ %.pn, %98 ] +.body: ; preds = %97, %_ZNSt6vectorIiSaIiEED2Ev.exit27, %15 + %.pn.pn = phi { ptr, i32 } [ %16, %15 ], [ %.pn, %_ZNSt6vectorIiSaIiEED2Ev.exit27 ], [ %.pn, %97 ] resume { ptr, i32 } %.pn.pn } diff --git a/bench/openssl/optimized/libssl-lib-ssl_lib.ll b/bench/openssl/optimized/libssl-lib-ssl_lib.ll index 47b0d7dc415..1ed6ad43c0f 100644 --- a/bench/openssl/optimized/libssl-lib-ssl_lib.ll +++ b/bench/openssl/optimized/libssl-lib-ssl_lib.ll @@ -14145,7 +14145,6 @@ for.body.lr.ph.i: ; preds = %for.cond.preheader. br label %for.body.i for.body.i: ; preds = %for.inc.i, %for.body.lr.ph.i - %scts_extracted.119.i = phi i32 [ 0, %for.body.lr.ph.i ], [ %scts_extracted.2.i, %for.inc.i ] %i.018.i = phi i32 [ 0, %for.body.lr.ph.i ], [ %inc.i, %for.inc.i ] %scts.117.i = phi ptr [ null, %for.body.lr.ph.i ], [ %scts.2.i, %for.inc.i ] %call23.i = call ptr @OCSP_resp_get0(ptr noundef nonnull %call15.i, i32 noundef %i.018.i) #24 @@ -14156,66 +14155,60 @@ if.end27.i: ; preds = %for.body.i %call28.i = call ptr @OCSP_SINGLERESP_get1_ext_d2i(ptr noundef nonnull %call23.i, i32 noundef 954, ptr noundef null, ptr noundef null) #24 %call30.i = call fastcc i32 @ct_move_scts(ptr noundef %scts29.i, ptr noundef %call28.i, i32 noundef 3) %cmp31.i = icmp slt i32 %call30.i, 0 - br i1 %cmp31.i, label %ct_extract_ocsp_response_scts.exit.loopexit, label %for.inc.i + br i1 %cmp31.i, label %ct_extract_ocsp_response_scts.exit, label %for.inc.i for.inc.i: ; preds = %if.end27.i, %for.body.i %scts.2.i = phi ptr [ %scts.117.i, %for.body.i ], [ %call28.i, %if.end27.i ] - %scts_extracted.2.i = phi i32 [ %scts_extracted.119.i, %for.body.i ], [ %call30.i, %if.end27.i ] %inc.i = add nuw nsw i32 %i.018.i, 1 %call20.i = call i32 @OCSP_resp_count(ptr noundef nonnull %call15.i) #24 %cmp21.i = icmp slt i32 %inc.i, %call20.i - br i1 %cmp21.i, label %for.body.i, label %ct_extract_ocsp_response_scts.exit.loopexit, !llvm.loop !21 + br i1 %cmp21.i, label %for.body.i, label %lor.lhs.false17.critedge, !llvm.loop !21 -ct_extract_ocsp_response_scts.exit.loopexit: ; preds = %for.inc.i, %if.end27.i - %scts.0.i.ph = phi ptr [ %call28.i, %if.end27.i ], [ %scts.2.i, %for.inc.i ] - %scts_extracted.0.i13.ph = phi i32 [ %call30.i, %if.end27.i ], [ %scts_extracted.2.i, %for.inc.i ] - %7 = icmp slt i32 %scts_extracted.0.i13.ph, 0 - call void @SCT_LIST_free(ptr noundef %scts.0.i.ph) #24 +ct_extract_ocsp_response_scts.exit: ; preds = %if.end27.i + call void @SCT_LIST_free(ptr noundef %call28.i) #24 call void @OCSP_BASICRESP_free(ptr noundef nonnull %call15.i) #24 call void @OCSP_RESPONSE_free(ptr noundef nonnull %call.i12) #24 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %p.i11) - br i1 %7, label %return, label %lor.lhs.false17 + br label %return -lor.lhs.false17.critedge: ; preds = %for.cond.preheader.i, %if.end14.i, %if.end.i, %lor.lhs.false.i, %lor.lhs.false - %br.0.i.ph = phi ptr [ %call15.i, %for.cond.preheader.i ], [ null, %if.end14.i ], [ null, %if.end.i ], [ null, %lor.lhs.false.i ], [ null, %lor.lhs.false ] - %rsp.0.i.ph = phi ptr [ %call.i12, %for.cond.preheader.i ], [ %call.i12, %if.end14.i ], [ null, %if.end.i ], [ null, %lor.lhs.false.i ], [ null, %lor.lhs.false ] - call void @SCT_LIST_free(ptr noundef null) #24 +lor.lhs.false17.critedge: ; preds = %for.inc.i, %for.cond.preheader.i, %if.end14.i, %if.end.i, %lor.lhs.false.i, %lor.lhs.false + %br.0.i.ph = phi ptr [ %call15.i, %for.cond.preheader.i ], [ null, %if.end14.i ], [ null, %if.end.i ], [ null, %lor.lhs.false.i ], [ null, %lor.lhs.false ], [ %call15.i, %for.inc.i ] + %rsp.0.i.ph = phi ptr [ %call.i12, %for.cond.preheader.i ], [ %call.i12, %if.end14.i ], [ null, %if.end.i ], [ null, %lor.lhs.false.i ], [ null, %lor.lhs.false ], [ %call.i12, %for.inc.i ] + %scts.0.i.ph = phi ptr [ null, %for.cond.preheader.i ], [ null, %if.end14.i ], [ null, %if.end.i ], [ null, %lor.lhs.false.i ], [ null, %lor.lhs.false ], [ %scts.2.i, %for.inc.i ] + call void @SCT_LIST_free(ptr noundef %scts.0.i.ph) #24 call void @OCSP_BASICRESP_free(ptr noundef %br.0.i.ph) #24 call void @OCSP_RESPONSE_free(ptr noundef %rsp.0.i.ph) #24 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %p.i11) - br label %lor.lhs.false17 - -lor.lhs.false17: ; preds = %lor.lhs.false17.critedge, %ct_extract_ocsp_response_scts.exit.loopexit %session.i = getelementptr inbounds i8, ptr %cond1124, i64 2176 - %8 = load ptr, ptr %session.i, align 8 - %cmp.not.i14 = icmp eq ptr %8, null + %7 = load ptr, ptr %session.i, align 8 + %cmp.not.i14 = icmp eq ptr %7, null br i1 %cmp.not.i14, label %if.end21, label %cond.end.i -cond.end.i: ; preds = %lor.lhs.false17 - %peer.i = getelementptr inbounds i8, ptr %8, i64 704 - %9 = load ptr, ptr %peer.i, align 8 - %cmp2.not.i = icmp eq ptr %9, null +cond.end.i: ; preds = %lor.lhs.false17.critedge + %peer.i = getelementptr inbounds i8, ptr %7, i64 704 + %8 = load ptr, ptr %peer.i, align 8 + %cmp2.not.i = icmp eq ptr %8, null br i1 %cmp2.not.i, label %if.end21, label %ct_extract_x509v3_extension_scts.exit ct_extract_x509v3_extension_scts.exit: ; preds = %cond.end.i - %call.i16 = call ptr @X509_get_ext_d2i(ptr noundef nonnull %9, i32 noundef 951, ptr noundef null, ptr noundef null) #24 + %call.i16 = call ptr @X509_get_ext_d2i(ptr noundef nonnull %8, i32 noundef 951, ptr noundef null, ptr noundef null) #24 %scts3.i = getelementptr inbounds i8, ptr %cond1124, i64 2776 %call4.i = call fastcc i32 @ct_move_scts(ptr noundef %scts3.i, ptr noundef %call.i16, i32 noundef 2) call void @SCT_LIST_free(ptr noundef %call.i16) #24 %cmp19 = icmp slt i32 %call4.i, 0 br i1 %cmp19, label %return, label %if.end21 -if.end21: ; preds = %lor.lhs.false17, %cond.end.i, %ct_extract_x509v3_extension_scts.exit +if.end21: ; preds = %lor.lhs.false17.critedge, %cond.end.i, %ct_extract_x509v3_extension_scts.exit store i32 1, ptr %scts_parsed, align 8 br label %if.end23 if.end23: ; preds = %if.end21, %if.end %scts = getelementptr inbounds i8, ptr %cond1124, i64 2776 - %10 = load ptr, ptr %scts, align 8 + %9 = load ptr, ptr %scts, align 8 br label %return -return: ; preds = %cond.false, %entry, %ct_extract_x509v3_extension_scts.exit, %ct_extract_ocsp_response_scts.exit.loopexit, %ct_extract_tls_extension_scts.exit, %cond.end10, %if.end23 - %retval.0 = phi ptr [ %10, %if.end23 ], [ null, %cond.end10 ], [ null, %ct_extract_tls_extension_scts.exit ], [ null, %ct_extract_ocsp_response_scts.exit.loopexit ], [ null, %ct_extract_x509v3_extension_scts.exit ], [ null, %entry ], [ null, %cond.false ] +return: ; preds = %ct_extract_ocsp_response_scts.exit, %cond.false, %entry, %ct_extract_x509v3_extension_scts.exit, %ct_extract_tls_extension_scts.exit, %cond.end10, %if.end23 + %retval.0 = phi ptr [ %9, %if.end23 ], [ null, %cond.end10 ], [ null, %ct_extract_tls_extension_scts.exit ], [ null, %ct_extract_ocsp_response_scts.exit ], [ null, %ct_extract_x509v3_extension_scts.exit ], [ null, %entry ], [ null, %cond.false ] ret ptr %retval.0 } diff --git a/bench/openusd/optimized/clipSetDefinition.cpp.ll b/bench/openusd/optimized/clipSetDefinition.cpp.ll index 7f60857e4bb..827c1b7c77b 100644 --- a/bench/openusd/optimized/clipSetDefinition.cpp.ll +++ b/bench/openusd/optimized/clipSetDefinition.cpp.ll @@ -7356,7 +7356,7 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %103 = getelementptr i8, ptr %95, i64 24 %.val10.i.i.i = load ptr, ptr %103, align 8 %104 = icmp eq ptr %.val10.i.i.i, null - br i1 %104, label %.thread.i.i, label %161 + br i1 %104, label %.thread.i.i, label %.thread.i.i.thread 105: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i.i.i %.02529.i15.i.i.i = load ptr, ptr %4, align 8 @@ -7517,9 +7517,9 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %160 = icmp slt i32 %156, 0 br i1 %160, label %.thread.i.i, label %.thread26.i.i -161: ; preds = %140, %128, %102, %90, %63 - %.sroa.083.0.i.i.i = phi ptr [ null, %63 ], [ %92, %90 ], [ null, %128 ], [ %.08.lcssa.i.i.i26, %102 ], [ %133, %140 ] - %.sroa.12.0.i.i.i = phi ptr [ %64, %63 ], [ %92, %90 ], [ %130, %128 ], [ %.08.lcssa.i.i.i26, %102 ], [ %133, %140 ] +161: ; preds = %140, %128, %90, %63 + %.sroa.083.0.i.i.i = phi ptr [ null, %63 ], [ %92, %90 ], [ null, %128 ], [ %133, %140 ] + %.sroa.12.0.i.i.i = phi ptr [ %64, %63 ], [ %92, %90 ], [ %130, %128 ], [ %133, %140 ] %.not.i.i = icmp eq ptr %.sroa.12.0.i.i.i, null br i1 %.not.i.i, label %.thread26.i.i, label %.thread.i.i @@ -7529,7 +7529,7 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %.not.i.i9.i.i = icmp ne ptr %.sroa.083.0.i22.i.i, null %162 = icmp eq ptr %.sroa.12.0.i23.i.i, %5 %or.cond.i.i.i.i = select i1 %.not.i.i9.i.i, i1 true, i1 %162 - br i1 %or.cond.i.i.i.i, label %170, label %163 + br i1 %or.cond.i.i.i.i, label %.thread.i.i.thread, label %163 163: ; preds = %.thread.i.i %164 = getelementptr inbounds nuw i8, ptr %.sroa.12.0.i23.i.i, i64 32 @@ -7545,15 +7545,16 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i10.i.i: ; preds = %163 %169 = icmp slt i32 %165, 0 - br label %170 - -170: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i10.i.i, %.thread.i.i - %171 = phi i1 [ true, %.thread.i.i ], [ %169, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i10.i.i ] - tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %171, ptr noundef nonnull %21, ptr noundef nonnull %.sroa.12.0.i23.i.i, ptr noundef nonnull align 8 dereferenceable(32) %5) #22 - %172 = getelementptr inbounds i8, ptr %0, i64 40 - %173 = load i64, ptr %172, align 8 - %174 = add i64 %173, 1 - store i64 %174, ptr %172, align 8 + br label %.thread.i.i.thread + +.thread.i.i.thread: ; preds = %102, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i10.i.i, %.thread.i.i + %.sroa.12.0.i23.i.i34 = phi ptr [ %.sroa.12.0.i23.i.i, %.thread.i.i ], [ %.sroa.12.0.i23.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i10.i.i ], [ %.08.lcssa.i.i.i26, %102 ] + %170 = phi i1 [ true, %.thread.i.i ], [ %169, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i10.i.i ], [ true, %102 ] + tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %170, ptr noundef nonnull %21, ptr noundef nonnull %.sroa.12.0.i23.i.i34, ptr noundef nonnull align 8 dereferenceable(32) %5) #22 + %171 = getelementptr inbounds i8, ptr %0, i64 40 + %172 = load i64, ptr %171, align 8 + %173 = add i64 %172, 1 + store i64 %173, ptr %171, align 8 br label %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_18_ClipSetESt4lessIS5_ESaISt4pairIKS5_S8_EEE12emplace_hintIJRSC_SH_EEESt17_Rb_tree_iteratorISD_ESt23_Rb_tree_const_iteratorISD_EDpOT_.exit .thread26.i.i: ; preds = %161, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i52.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit38.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i27.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i.i.i.i @@ -7563,8 +7564,8 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi tail call void @_ZdlPvm(ptr noundef nonnull %21, i64 noundef 160) #21 br label %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_18_ClipSetESt4lessIS5_ESaISt4pairIKS5_S8_EEE12emplace_hintIJRSC_SH_EEESt17_Rb_tree_iteratorISD_ESt23_Rb_tree_const_iteratorISD_EDpOT_.exit -_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_18_ClipSetESt4lessIS5_ESaISt4pairIKS5_S8_EEE12emplace_hintIJRSC_SH_EEESt17_Rb_tree_iteratorISD_ESt23_Rb_tree_const_iteratorISD_EDpOT_.exit: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit, %.thread26.i.i, %170 - %.sroa.024.0 = phi ptr [ %21, %170 ], [ %.sroa.012.0.ph.i.i, %.thread26.i.i ], [ %.19.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit ] +_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_18_ClipSetESt4lessIS5_ESaISt4pairIKS5_S8_EEE12emplace_hintIJRSC_SH_EEESt17_Rb_tree_iteratorISD_ESt23_Rb_tree_const_iteratorISD_EDpOT_.exit: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit, %.thread26.i.i, %.thread.i.i.thread + %.sroa.024.0 = phi ptr [ %21, %.thread.i.i.thread ], [ %.sroa.012.0.ph.i.i, %.thread26.i.i ], [ %.19.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit ] ret ptr %.sroa.024.0 } diff --git a/bench/openusd/optimized/read.c.ll b/bench/openusd/optimized/read.c.ll index 49aba940a26..d2c205dbed6 100644 --- a/bench/openusd/optimized/read.c.ll +++ b/bench/openusd/optimized/read.c.ll @@ -2528,40 +2528,40 @@ define hidden range(i32 0, 27) i32 @avifDecoderNthImageMaxExtent(ptr nocapture n avifDecoderNearestKeyframe.exit: ; preds = %15 %27 = trunc nuw i64 %indvars.iv.i to i32 - %.not3777 = icmp ult i32 %1, %27 - br i1 %.not3777, label %avifDecoderItemMaxExtent.exit.thread, label %.preheader.lr.ph + %.not3778 = icmp ult i32 %1, %27 + br i1 %.not3778, label %avifDecoderItemMaxExtent.exit.thread, label %.preheader.lr.ph .preheader.lr.ph: ; preds = %.loopexit.i, %.lr.ph.i, %7, %avifDecoderNearestKeyframe.exit - %.06.i87 = phi i32 [ %27, %avifDecoderNearestKeyframe.exit ], [ 0, %7 ], [ 0, %.lr.ph.i ], [ 0, %.loopexit.i ] + %.06.i89 = phi i32 [ %27, %avifDecoderNearestKeyframe.exit ], [ 0, %7 ], [ 0, %.lr.ph.i ], [ 0, %.loopexit.i ] %28 = getelementptr inbounds nuw i8, ptr %2, i64 8 %29 = getelementptr inbounds nuw i8, ptr %8, i64 44 %30 = load i32, ptr %29, align 4 - %.not79 = icmp eq i32 %30, 0 - br i1 %.not79, label %avifDecoderItemMaxExtent.exit.thread, label %.preheader + %.not80 = icmp eq i32 %30, 0 + br i1 %.not80, label %avifDecoderItemMaxExtent.exit.thread, label %.preheader .preheader: ; preds = %.preheader.lr.ph, %._crit_edge %31 = phi ptr [ %123, %._crit_edge ], [ %8, %.preheader.lr.ph ] - %.03178 = phi i32 [ %124, %._crit_edge ], [ %.06.i87, %.preheader.lr.ph ] + %.03179 = phi i32 [ %124, %._crit_edge ], [ %.06.i89, %.preheader.lr.ph ] %32 = getelementptr inbounds nuw i8, ptr %31, i64 44 %33 = load i32, ptr %32, align 4 - %.not80 = icmp eq i32 %33, 0 - br i1 %.not80, label %._crit_edge, label %.lr.ph + %.not81 = icmp eq i32 %33, 0 + br i1 %.not81, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %.preheader - %34 = zext i32 %.03178 to i64 + %34 = zext i32 %.03179 to i64 br label %35 35: ; preds = %.lr.ph, %avifExtentMerge.exit %36 = phi ptr [ %31, %.lr.ph ], [ %119, %avifExtentMerge.exit ] - %.03276 = phi i32 [ 0, %.lr.ph ], [ %118, %avifExtentMerge.exit ] + %.03277 = phi i32 [ 0, %.lr.ph ], [ %118, %avifExtentMerge.exit ] %37 = getelementptr inbounds nuw i8, ptr %36, i64 32 %38 = load ptr, ptr %37, align 8 - %39 = zext i32 %.03276 to i64 + %39 = zext i32 %.03277 to i64 %40 = getelementptr inbounds %struct.avifTile, ptr %38, i64 %39 %41 = load ptr, ptr %40, align 8 %42 = getelementptr inbounds nuw i8, ptr %41, i64 12 %43 = load i32, ptr %42, align 4 - %.not38 = icmp ult i32 %.03178, %43 + %.not38 = icmp ult i32 %.03179, %43 br i1 %.not38, label %44, label %avifDecoderItemMaxExtent.exit.thread 44: ; preds = %35 @@ -2615,68 +2615,62 @@ avifDecoderNearestKeyframe.exit: ; preds = %15 74: ; preds = %96, %70 %indvars.iv.i44 = phi i64 [ 0, %70 ], [ %indvars.iv.next.i45, %96 ] - %.05091.i = phi i64 [ %72, %70 ], [ %.2.i, %96 ] - %.05190.i = phi i64 [ %68, %70 ], [ %.253.i, %96 ] - %.05689.i = phi i64 [ -1, %70 ], [ %.258.i, %96 ] - %.06087.i = phi i64 [ 0, %70 ], [ %.262.i, %96 ] + %.05083.i = phi i64 [ %72, %70 ], [ %.2.i, %96 ] + %.05182.i = phi i64 [ %68, %70 ], [ %.253.i, %96 ] + %.05681.i = phi i64 [ -1, %70 ], [ %.258.i, %96 ] + %.06079.i = phi i64 [ 0, %70 ], [ %.262.i, %96 ] %75 = getelementptr inbounds %struct.avifExtent, ptr %73, i64 %indvars.iv.i44 %76 = load i64, ptr %75, align 8 %77 = getelementptr inbounds nuw i8, ptr %75, i64 8 %78 = load i64, ptr %77, align 8 - %.not71.i = icmp eq i64 %.05091.i, 0 + %.not71.i = icmp eq i64 %.05083.i, 0 br i1 %.not71.i, label %88, label %79 79: ; preds = %74 - %.not72.i = icmp ult i64 %.05091.i, %78 + %.not72.i = icmp ult i64 %.05083.i, %78 br i1 %.not72.i, label %82, label %80 80: ; preds = %79 - %81 = sub nuw i64 %.05091.i, %78 + %81 = sub nuw i64 %.05083.i, %78 br label %96 82: ; preds = %79 %83 = xor i64 %76, -1 - %84 = icmp ugt i64 %.05091.i, %83 + %84 = icmp ugt i64 %.05083.i, %83 br i1 %84, label %avifDecoderItemMaxExtent.exit.thread, label %85 85: ; preds = %82 - %86 = add i64 %76, %.05091.i - %87 = sub i64 %78, %.05091.i + %86 = add i64 %76, %.05083.i + %87 = sub i64 %78, %.05083.i br label %88 88: ; preds = %85, %74 %.055.i = phi i64 [ %86, %85 ], [ %76, %74 ] %.054.i = phi i64 [ %87, %85 ], [ %78, %74 ] - %89 = tail call i64 @llvm.umin.i64(i64 %.054.i, i64 %.05190.i) + %89 = tail call i64 @llvm.umin.i64(i64 %.054.i, i64 %.05182.i) %90 = xor i64 %.055.i, -1 %91 = icmp ugt i64 %89, %90 br i1 %91, label %avifDecoderItemMaxExtent.exit.thread, label %92 92: ; preds = %88 %93 = add i64 %89, %.055.i - %spec.select.i = tail call i64 @llvm.umin.i64(i64 %.05689.i, i64 %.055.i) - %.363.i = tail call i64 @llvm.umax.i64(i64 %.06087.i, i64 %93) - %94 = sub i64 %.05190.i, %89 + %spec.select.i = tail call i64 @llvm.umin.i64(i64 %.05681.i, i64 %.055.i) + %.363.i = tail call i64 @llvm.umax.i64(i64 %.06079.i, i64 %93) + %94 = sub i64 %.05182.i, %89 %95 = icmp eq i64 %94, 0 - br i1 %95, label %.thread.i, label %96 + br i1 %95, label %97, label %96 96: ; preds = %92, %80 - %.262.i = phi i64 [ %.06087.i, %80 ], [ %.363.i, %92 ] - %.258.i = phi i64 [ %.05689.i, %80 ], [ %spec.select.i, %92 ] - %.253.i = phi i64 [ %.05190.i, %80 ], [ %94, %92 ] + %.262.i = phi i64 [ %.06079.i, %80 ], [ %.363.i, %92 ] + %.258.i = phi i64 [ %.05681.i, %80 ], [ %spec.select.i, %92 ] + %.253.i = phi i64 [ %.05182.i, %80 ], [ %94, %92 ] %.2.i = phi i64 [ %81, %80 ], [ 0, %92 ] %indvars.iv.next.i45 = add nuw nsw i64 %indvars.iv.i44, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i45, %wide.trip.count.i - br i1 %exitcond.not.i, label %97, label %74, !llvm.loop !28 + br i1 %exitcond.not.i, label %avifDecoderItemMaxExtent.exit.thread, label %74, !llvm.loop !28 -97: ; preds = %96 - %.not73.i = icmp eq i64 %.253.i, 0 - br i1 %.not73.i, label %.thread.i, label %avifDecoderItemMaxExtent.exit.thread - -.thread.i: ; preds = %92, %97 - %.15780.i = phi i64 [ %.258.i, %97 ], [ %spec.select.i, %92 ] - %.16179.i = phi i64 [ %.262.i, %97 ], [ %.363.i, %92 ] - %98 = sub i64 %.16179.i, %.15780.i +97: ; preds = %92 + %98 = sub i64 %.363.i, %spec.select.i br label %avifDecoderItemMaxExtent.exit 99: ; preds = %44 @@ -2686,9 +2680,9 @@ avifDecoderNearestKeyframe.exit: ; preds = %15 %103 = load i64, ptr %102, align 8 br label %avifDecoderItemMaxExtent.exit -avifDecoderItemMaxExtent.exit: ; preds = %.thread.i, %99 - %.sroa.0.2 = phi i64 [ %101, %99 ], [ %.15780.i, %.thread.i ] - %.sroa.6.2 = phi i64 [ %103, %99 ], [ %98, %.thread.i ] +avifDecoderItemMaxExtent.exit: ; preds = %97, %99 + %.sroa.0.2 = phi i64 [ %101, %99 ], [ %spec.select.i, %97 ] + %.sroa.6.2 = phi i64 [ %103, %99 ], [ %98, %97 ] %104 = xor i64 %.sroa.0.2, -1 %105 = icmp ugt i64 %.sroa.6.2, %104 br i1 %105, label %avifDecoderItemMaxExtent.exit.thread, label %106 @@ -2729,7 +2723,7 @@ avifExtentMerge.exit.sink.split: ; preds = %111, %109 br label %avifExtentMerge.exit avifExtentMerge.exit: ; preds = %avifExtentMerge.exit.sink.split, %.thread, %110 - %118 = add nuw i32 %.03276, 1 + %118 = add nuw i32 %.03277, 1 %119 = load ptr, ptr %5, align 8 %120 = getelementptr inbounds nuw i8, ptr %119, i64 44 %121 = load i32, ptr %120, align 4 @@ -2738,12 +2732,12 @@ avifExtentMerge.exit: ; preds = %avifExtentMerge.exi ._crit_edge: ; preds = %avifExtentMerge.exit, %.preheader %123 = phi ptr [ %31, %.preheader ], [ %119, %avifExtentMerge.exit ] - %124 = add i32 %.03178, 1 + %124 = add i32 %.03179, 1 %.not37 = icmp ugt i32 %124, %1 br i1 %.not37, label %avifDecoderItemMaxExtent.exit.thread, label %.preheader, !llvm.loop !30 -avifDecoderItemMaxExtent.exit.thread: ; preds = %._crit_edge, %97, %66, %61, %52, %avifDecoderItemMaxExtent.exit, %49, %35, %88, %82, %.preheader.lr.ph, %avifDecoderNearestKeyframe.exit, %3 - %.0 = phi i32 [ 3, %3 ], [ 0, %avifDecoderNearestKeyframe.exit ], [ 0, %.preheader.lr.ph ], [ 9, %82 ], [ 9, %88 ], [ 20, %52 ], [ 3, %61 ], [ 20, %66 ], [ 20, %97 ], [ 9, %avifDecoderItemMaxExtent.exit ], [ %51, %49 ], [ 16, %35 ], [ 0, %._crit_edge ] +avifDecoderItemMaxExtent.exit.thread: ; preds = %._crit_edge, %66, %61, %52, %avifDecoderItemMaxExtent.exit, %49, %35, %82, %88, %96, %.preheader.lr.ph, %avifDecoderNearestKeyframe.exit, %3 + %.0 = phi i32 [ 3, %3 ], [ 0, %avifDecoderNearestKeyframe.exit ], [ 0, %.preheader.lr.ph ], [ 20, %96 ], [ 9, %88 ], [ 9, %82 ], [ 20, %52 ], [ 3, %61 ], [ 20, %66 ], [ 9, %avifDecoderItemMaxExtent.exit ], [ %51, %49 ], [ 16, %35 ], [ 0, %._crit_edge ] ret i32 %.0 } diff --git a/bench/openusd/optimized/stbImage.cpp.ll b/bench/openusd/optimized/stbImage.cpp.ll index 38fe973d274..2f19ce3460f 100644 --- a/bench/openusd/optimized/stbImage.cpp.ll +++ b/bench/openusd/optimized/stbImage.cpp.ll @@ -48291,24 +48291,28 @@ _ZL17stbi__malloc_mad2iii.exit.thread: ; preds = %_ZL17stbi__malloc_m .split52.us: ; preds = %_ZL10stbi__get8P13stbi__context.exit157.us.us call void @free(ptr noundef %57) #46 - call void @free(ptr noundef nonnull %.1118.us) #46 + call void @free(ptr noundef %.1118.us) #46 %269 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) store ptr @.str.107, ptr %269, align 8 br label %._crit_edge60.thread .thread: ; preds = %128, %100 call void @free(ptr noundef %57) #46 - call void @free(ptr noundef nonnull %.1118.us) #46 + call void @free(ptr noundef %.1118.us) #46 %270 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) store ptr @.str.107, ptr %270, align 8 br label %._crit_edge60.thread ._crit_edge60: ; preds = %._crit_edge56.us + %.not141 = icmp eq ptr %.1118.us, null + br i1 %.not141, label %._crit_edge60.thread, label %271 + +271: ; preds = %._crit_edge60 call void @free(ptr noundef nonnull %.1118.us) #46 br label %._crit_edge60.thread -._crit_edge60.thread: ; preds = %.preheader17, %202, %._crit_edge60, %.thread, %.split52.us, %_ZL17stbi__malloc_mad2iii.exit.thread, %.split68.us, %58, %54, %50, %46, %.tail.thread, %25, %._crit_edge.thread, %11 - %.0 = phi ptr [ null, %11 ], [ null, %25 ], [ null, %.tail.thread ], [ null, %46 ], [ null, %50 ], [ null, %.split68.us ], [ null, %.split52.us ], [ null, %.thread ], [ null, %_ZL17stbi__malloc_mad2iii.exit.thread ], [ null, %58 ], [ null, %54 ], [ null, %._crit_edge.thread ], [ %57, %._crit_edge60 ], [ %57, %202 ], [ %57, %.preheader17 ] +._crit_edge60.thread: ; preds = %.preheader17, %202, %271, %._crit_edge60, %.thread, %.split52.us, %_ZL17stbi__malloc_mad2iii.exit.thread, %.split68.us, %58, %54, %50, %46, %.tail.thread, %25, %._crit_edge.thread, %11 + %.0 = phi ptr [ null, %11 ], [ null, %25 ], [ null, %.tail.thread ], [ null, %46 ], [ null, %50 ], [ null, %.split68.us ], [ null, %.split52.us ], [ null, %.thread ], [ null, %_ZL17stbi__malloc_mad2iii.exit.thread ], [ null, %58 ], [ null, %54 ], [ null, %._crit_edge.thread ], [ %57, %._crit_edge60 ], [ %57, %271 ], [ %57, %202 ], [ %57, %.preheader17 ] ret ptr %.0 } diff --git a/bench/pbrt-v4/optimized/stbimage.cpp.ll b/bench/pbrt-v4/optimized/stbimage.cpp.ll index 40265b76cee..59a1af14c5b 100644 --- a/bench/pbrt-v4/optimized/stbimage.cpp.ll +++ b/bench/pbrt-v4/optimized/stbimage.cpp.ll @@ -9651,7 +9651,7 @@ if.end138.us: ; preds = %if.then130.us, %if. for.inc210.us: ; preds = %for.body198.us %indvars.iv.next135 = add nuw nsw i64 %indvars.iv134, 1 %exitcond139.not = icmp eq i64 %indvars.iv.next135, %wide.trip.count138 - br i1 %exitcond139.not, label %if.then214, label %for.body97.us, !llvm.loop !80 + br i1 %exitcond139.not, label %for.end212, label %for.body97.us, !llvm.loop !80 for.body198.us: ; preds = %for.body198.lr.ph.us, %for.body198.us %indvars.iv126 = phi i64 [ 0, %for.body198.lr.ph.us ], [ %indvars.iv.next127, %for.body198.us ] @@ -10110,24 +10110,28 @@ if.then133: ; preds = %if.then130.us if.then155: ; preds = %_ZL10stbi__get8P13stbi__context.exit140.us.us call void @free(ptr noundef %call68) #33 - call void @free(ptr noundef nonnull %scanline.1.us) #33 + call void @free(ptr noundef %scanline.1.us) #33 %80 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) store ptr @.str.39, ptr %80, align 8 br label %return if.then173: ; preds = %if.else170.us.us call void @free(ptr noundef %call68) #33 - call void @free(ptr noundef nonnull %scanline.1.us) #33 + call void @free(ptr noundef %scanline.1.us) #33 %81 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) store ptr @.str.39, ptr %81, align 8 br label %return -if.then214: ; preds = %for.inc210.us +for.end212: ; preds = %for.inc210.us + %tobool213.not = icmp eq ptr %scanline.1.us, null + br i1 %tobool213.not, label %return, label %if.then214 + +if.then214: ; preds = %for.end212 call void @free(ptr noundef nonnull %scanline.1.us) #33 br label %return -return: ; preds = %for.cond95.preheader, %for.cond78, %if.then214, %if.then173, %if.then155, %if.then133, %if.then124, %if.then70, %if.then63, %if.then50, %if.then44, %if.then35, %if.then24, %if.then15, %if.then - %retval.0 = phi ptr [ null, %if.then ], [ null, %if.then24 ], [ null, %if.then35 ], [ null, %if.then44 ], [ null, %if.then50 ], [ null, %if.then124 ], [ null, %if.then155 ], [ null, %if.then173 ], [ null, %if.then133 ], [ null, %if.then70 ], [ null, %if.then63 ], [ null, %if.then15 ], [ %call68, %if.then214 ], [ %call68, %for.cond78 ], [ %call68, %for.cond95.preheader ] +return: ; preds = %for.cond95.preheader, %for.cond78, %if.then214, %for.end212, %if.then173, %if.then155, %if.then133, %if.then124, %if.then70, %if.then63, %if.then50, %if.then44, %if.then35, %if.then24, %if.then15, %if.then + %retval.0 = phi ptr [ null, %if.then ], [ null, %if.then24 ], [ null, %if.then35 ], [ null, %if.then44 ], [ null, %if.then50 ], [ null, %if.then124 ], [ null, %if.then155 ], [ null, %if.then173 ], [ null, %if.then133 ], [ null, %if.then70 ], [ null, %if.then63 ], [ null, %if.then15 ], [ %call68, %for.end212 ], [ %call68, %if.then214 ], [ %call68, %for.cond78 ], [ %call68, %for.cond95.preheader ] ret ptr %retval.0 } diff --git a/bench/php/optimized/zend_compile.ll b/bench/php/optimized/zend_compile.ll index deb7191e79e..28f0f44aa78 100644 --- a/bench/php/optimized/zend_compile.ll +++ b/bench/php/optimized/zend_compile.ll @@ -32344,15 +32344,15 @@ define internal fastcc zeroext i1 @zend_propagate_list_refs(ptr nocapture nounde %4 = getelementptr inbounds i8, ptr %0, i64 16 br label %5 -5: ; preds = %.lr.ph, %25 - %.pre2021 = phi i32 [ %3, %.lr.ph ], [ %.pre2022, %25 ] - %6 = phi i32 [ %3, %.lr.ph ], [ %26, %25 ] - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %25 ] - %.017 = phi i8 [ 0, %.lr.ph ], [ %.1, %25 ] +5: ; preds = %.lr.ph, %24 + %.pre2021 = phi i32 [ %3, %.lr.ph ], [ %.pre2022, %24 ] + %6 = phi i32 [ %3, %.lr.ph ], [ %25, %24 ] + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %24 ] + %.017 = phi i8 [ 0, %.lr.ph ], [ %.1, %24 ] %7 = getelementptr inbounds [1 x ptr], ptr %4, i64 0, i64 %indvars.iv %8 = load ptr, ptr %7, align 8 %.not = icmp eq ptr %8, null - br i1 %.not, label %25, label %9 + br i1 %.not, label %24, label %9 9: ; preds = %5 %10 = getelementptr inbounds i8, ptr %8, i64 8 @@ -32377,28 +32377,27 @@ define internal fastcc zeroext i1 @zend_propagate_list_refs(ptr nocapture nounde 18: ; preds = %._crit_edge19, %14 %.pre20 = phi i32 [ %.pre2021, %._crit_edge19 ], [ %.pre20.pre, %14 ] %19 = phi i16 [ %.pre, %._crit_edge19 ], [ %16, %14 ] - %20 = and i8 %.017, 1 - %21 = zext nneg i8 %20 to i16 - %22 = or i16 %19, %21 - %23 = icmp ne i16 %22, 0 - %24 = zext i1 %23 to i8 - br label %25 + %20 = zext nneg i8 %.017 to i16 + %21 = or i16 %19, %20 + %22 = icmp ne i16 %21, 0 + %23 = zext i1 %22 to i8 + br label %24 -25: ; preds = %5, %18 +24: ; preds = %5, %18 %.pre2022 = phi i32 [ %.pre20, %18 ], [ %.pre2021, %5 ] - %26 = phi i32 [ %.pre20, %18 ], [ %6, %5 ] - %.1 = phi i8 [ %24, %18 ], [ %.017, %5 ] + %25 = phi i32 [ %.pre20, %18 ], [ %6, %5 ] + %.1 = phi i8 [ %23, %18 ], [ %.017, %5 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %27 = zext i32 %26 to i64 - %28 = icmp samesign ult i64 %indvars.iv.next, %27 - br i1 %28, label %5, label %._crit_edge.loopexit + %26 = zext i32 %25 to i64 + %27 = icmp samesign ult i64 %indvars.iv.next, %26 + br i1 %27, label %5, label %._crit_edge.loopexit -._crit_edge.loopexit: ; preds = %25 - %29 = trunc nuw i8 %.1 to i1 +._crit_edge.loopexit: ; preds = %24 + %28 = trunc nuw i8 %.1 to i1 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %1 - %.0.lcssa = phi i1 [ false, %1 ], [ %29, %._crit_edge.loopexit ] + %.0.lcssa = phi i1 [ false, %1 ], [ %28, %._crit_edge.loopexit ] ret i1 %.0.lcssa } @@ -32772,27 +32771,26 @@ zend_compile_expr.exit66: ; preds = %144 br i1 %158, label %44, label %._crit_edge ._crit_edge: ; preds = %155 - %159 = and i8 %.1, 1 - %160 = icmp eq i8 %159, 0 - br i1 %160, label %._crit_edge.thread, label %161 + %159 = icmp eq i8 %.1, 0 + br i1 %159, label %._crit_edge.thread, label %160 ._crit_edge.thread: ; preds = %4, %zval_make_interned_string.exit, %._crit_edge call void (i32, ptr, ...) @zend_error_noreturn(i32 noundef 64, ptr noundef nonnull @.str.237) #29 unreachable -161: ; preds = %._crit_edge +160: ; preds = %._crit_edge %.not53 = icmp eq ptr %0, null - br i1 %.not53, label %163, label %162 + br i1 %.not53, label %162, label %161 -162: ; preds = %161 +161: ; preds = %160 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 24, i1 false) - br label %164 + br label %163 -163: ; preds = %161 +162: ; preds = %160 call fastcc void @zend_do_free(ptr noundef %2) - br label %164 + br label %163 -164: ; preds = %163, %162 +163: ; preds = %162, %161 ret void } diff --git a/bench/postgres/optimized/fe-misc.ll b/bench/postgres/optimized/fe-misc.ll index 1e939a3ba41..5b069d00d9d 100644 --- a/bench/postgres/optimized/fe-misc.ll +++ b/bench/postgres/optimized/fe-misc.ll @@ -831,10 +831,10 @@ define internal fastcc range(i32 -1, 2) i32 @pqSendSome(ptr noundef %0, i32 noun 13: ; preds = %10 %14 = tail call i32 @pqReadData(ptr noundef nonnull %0) %15 = icmp slt i32 %14, 0 - br i1 %15, label %80, label %16 + br i1 %15, label %78, label %16 16: ; preds = %13, %10 - br label %80 + br label %78 17: ; preds = %2 %18 = load i32, ptr %6, align 4 @@ -860,10 +860,10 @@ define internal fastcc range(i32 -1, 2) i32 @pqSendSome(ptr noundef %0, i32 noun %29 = getelementptr inbounds i8, ptr %0, i64 768 store ptr %28, ptr %29, align 8 store i32 0, ptr %6, align 4 - br label %80 + br label %78 30: ; preds = %.outer.split, %34 - %31 = call i64 @pqsecure_write(ptr noundef %0, ptr noundef %.038.ph86, i64 noundef %74) #19 + %31 = call i64 @pqsecure_write(ptr noundef %0, ptr noundef %.038.ph86, i64 noundef %72) #19 %32 = trunc i64 %31 to i32 %33 = icmp slt i32 %32, 0 br i1 %33, label %34, label %47 @@ -885,7 +885,7 @@ define internal fastcc range(i32 -1, 2) i32 @pqSendSome(ptr noundef %0, i32 noun 39: ; preds = %37 %40 = call i32 @pqReadData(ptr noundef nonnull %0) %41 = icmp slt i32 %40, 0 - br i1 %41, label %80, label %42 + br i1 %41, label %78, label %42 42: ; preds = %39, %37 %43 = load i8, ptr %7, align 1 @@ -893,7 +893,7 @@ define internal fastcc range(i32 -1, 2) i32 @pqSendSome(ptr noundef %0, i32 noun %45 = xor i8 %44, 1 %46 = zext nneg i8 %45 to i32 %. = sub nsw i32 0, %46 - br label %80 + br label %78 47: ; preds = %30 %48 = and i64 %31, 2147483647 @@ -931,7 +931,7 @@ pqSocketPoll.exit.us.i: ; preds = %58, %64 %62 = call i32 @poll(ptr noundef nonnull %3, i64 noundef 1, i32 noundef -1) #19 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) %63 = icmp slt i32 %62, 0 - br i1 %63, label %64, label %70 + br i1 %63, label %64, label %pqWait.exit 64: ; preds = %pqSocketPoll.exit.us.i %65 = tail call ptr @__errno_location() #21 @@ -952,45 +952,41 @@ pqSocketCheck.exit.thread: ; preds = %68, %.critedge.i call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %4) br label %pqWait.exit.thread -70: ; preds = %pqSocketPoll.exit.us.i +pqWait.exit: ; preds = %pqSocketPoll.exit.us.i call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %4) - %71 = icmp eq i32 %62, 0 - br i1 %71, label %72, label %pqWait.exit + %70 = icmp eq i32 %62, 0 + br i1 %70, label %71, label %.outer.split, !llvm.loop !10 -72: ; preds = %70 +71: ; preds = %pqWait.exit call void (ptr, ptr, ...) @libpq_append_conn_error(ptr noundef nonnull %0, ptr noundef nonnull @.str.6) br label %pqWait.exit.thread -pqWait.exit: ; preds = %70 - %73 = icmp sgt i32 %.14250, 0 - br i1 %73, label %.outer.split, label %pqWait.exit.thread, !llvm.loop !10 - -.outer.split: ; preds = %.outer.split.lr.ph, %pqWait.exit +.outer.split: ; preds = %pqWait.exit, %.outer.split.lr.ph %.037.ph87 = phi i32 [ %18, %.outer.split.lr.ph ], [ %.254, %pqWait.exit ] %.038.ph86 = phi ptr [ %19, %.outer.split.lr.ph ], [ %.24052, %pqWait.exit ] %.041.ph85 = phi i32 [ %1, %.outer.split.lr.ph ], [ %.14250, %pqWait.exit ] - %74 = zext nneg i32 %.041.ph85 to i64 + %72 = zext nneg i32 %.041.ph85 to i64 br label %30 -pqWait.exit.thread: ; preds = %47, %pqWait.exit, %55, %.thread, %.preheader, %pqSocketCheck.exit.thread, %72 - %.139 = phi ptr [ %.24052, %72 ], [ %.24052, %pqSocketCheck.exit.thread ], [ %19, %.preheader ], [ %49, %47 ], [ %.24052, %pqWait.exit ], [ %.24052, %55 ], [ %.24052, %.thread ] - %.1 = phi i32 [ %.254, %72 ], [ %.254, %pqSocketCheck.exit.thread ], [ %18, %.preheader ], [ %51, %47 ], [ %.254, %pqWait.exit ], [ %.254, %55 ], [ %.254, %.thread ] - %.036 = phi i32 [ -1, %72 ], [ -1, %pqSocketCheck.exit.thread ], [ 0, %.preheader ], [ 0, %47 ], [ 0, %pqWait.exit ], [ 1, %55 ], [ -1, %.thread ] - %75 = icmp sgt i32 %.1, 0 - br i1 %75, label %76, label %79 +pqWait.exit.thread: ; preds = %47, %55, %.thread, %.preheader, %pqSocketCheck.exit.thread, %71 + %.139 = phi ptr [ %.24052, %71 ], [ %.24052, %pqSocketCheck.exit.thread ], [ %19, %.preheader ], [ %49, %47 ], [ %.24052, %55 ], [ %.24052, %.thread ] + %.1 = phi i32 [ %.254, %71 ], [ %.254, %pqSocketCheck.exit.thread ], [ %18, %.preheader ], [ %51, %47 ], [ %.254, %55 ], [ %.254, %.thread ] + %.036 = phi i32 [ -1, %71 ], [ -1, %pqSocketCheck.exit.thread ], [ 0, %.preheader ], [ 0, %47 ], [ 1, %55 ], [ -1, %.thread ] + %73 = icmp sgt i32 %.1, 0 + br i1 %73, label %74, label %77 -76: ; preds = %pqWait.exit.thread - %77 = load ptr, ptr %5, align 8 - %78 = zext nneg i32 %.1 to i64 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %77, ptr align 1 %.139, i64 %78, i1 false) - br label %79 +74: ; preds = %pqWait.exit.thread + %75 = load ptr, ptr %5, align 8 + %76 = zext nneg i32 %.1 to i64 + call void @llvm.memmove.p0.p0.i64(ptr align 1 %75, ptr align 1 %.139, i64 %76, i1 false) + br label %77 -79: ; preds = %76, %pqWait.exit.thread +77: ; preds = %74, %pqWait.exit.thread store i32 %.1, ptr %6, align 4 - br label %80 + br label %78 -80: ; preds = %42, %39, %13, %79, %27, %16 - %.0 = phi i32 [ 0, %16 ], [ 0, %27 ], [ %.036, %79 ], [ -1, %13 ], [ -1, %39 ], [ %., %42 ] +78: ; preds = %42, %39, %13, %77, %27, %16 + %.0 = phi i32 [ 0, %16 ], [ 0, %27 ], [ %.036, %77 ], [ -1, %13 ], [ -1, %39 ], [ %., %42 ] ret i32 %.0 } diff --git a/bench/postgres/optimized/spell.ll b/bench/postgres/optimized/spell.ll index 0689c6eb1a6..170351a9fc6 100644 --- a/bench/postgres/optimized/spell.ll +++ b/bench/postgres/optimized/spell.ll @@ -831,8 +831,7 @@ default.unreachable.i: ; preds = %.lr.ph.i br i1 %or.cond, label %parse_affentry.exit.thread101, label %.critedge2.thread parse_affentry.exit.thread101: ; preds = %210 - %.mask = and i8 %.072163, 1 - %214 = zext nneg i8 %.mask to i32 + %214 = zext nneg i8 %.072163 to i32 call fastcc void @NIAddAffix(ptr noundef %0, ptr noundef %14, i8 noundef signext %.068167, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %17, i32 noundef %214) br label %.critedge2.thread @@ -849,7 +848,7 @@ parse_affentry.exit.thread101: ; preds = %210 ._crit_edge: ; preds = %.critedge2.thread, %24 call void @tsearch_readline_end(ptr noundef nonnull %18) #15 - br label %507 + br label %506 216: ; preds = %93, %96, %.tail, %.tail104, %.critedge4.thread, %83, %91 br i1 %.0169, label %217, label %221 @@ -1109,7 +1108,7 @@ sub_1.i: ; preds = %sub_0.i unreachable 324: ; preds = %.tail164.thread.i, %.lr.ph196.i - %325 = phi ptr [ %313, %.lr.ph196.i ], [ %505, %.tail164.thread.i ] + %325 = phi ptr [ %313, %.lr.ph196.i ], [ %504, %.tail164.thread.i ] %.0114195.i = phi ptr [ null, %.lr.ph196.i ], [ %.1.i93, %.tail164.thread.i ] %.0116194.i = phi i8 [ 0, %.lr.ph196.i ], [ %.1117.i, %.tail164.thread.i ] %.0118193.i = phi i32 [ 0, %.lr.ph196.i ], [ %.1119.i, %.tail164.thread.i ] @@ -1533,9 +1532,8 @@ getCompoundAffixFlagValue.exit.i: ; preds = %getCompoundAffixFla 501: ; preds = %500, %497 %502 = or i8 %.0.i94, %.0116194.i - %503 = and i8 %.0122191.i, 1 - %504 = zext nneg i8 %503 to i32 - call fastcc void @NIAddAffix(ptr noundef nonnull %0, ptr noundef %9, i8 noundef signext %502, ptr noundef %493, ptr noundef %492, ptr noundef %487, i32 noundef %504) + %503 = zext nneg i8 %.0122191.i to i32 + call fastcc void @NIAddAffix(ptr noundef nonnull %0, ptr noundef %9, i8 noundef signext %502, ptr noundef %493, ptr noundef %492, ptr noundef %487, i32 noundef %503) call void @pfree(ptr noundef %487) #15 call void @pfree(ptr noundef %492) #15 call void @pfree(ptr noundef %493) #15 @@ -1548,29 +1546,29 @@ getCompoundAffixFlagValue.exit.i: ; preds = %getCompoundAffixFla %.1117.i = phi i8 [ %.0116194.i, %324 ], [ %.0116194.i, %328 ], [ %.0116194.i, %330 ], [ %.0116194.i, %cpstrdup.exit.i ], [ %.0116194.i, %370 ], [ %.0116194.i, %.tail155.thread.i ], [ %.0116194.i, %.tail164.i ], [ %.0116194.i, %419 ], [ %.0116194.i, %425 ], [ %.0116194.i, %501 ], [ %..i, %431 ], [ %.0116194.i, %sub_1166.i ], [ %.0116194.i, %.tail159.i ], [ %.0116194.i, %sub_1161.i ], [ %.0116194.i, %.tail155.i ], [ %.0116194.i, %sub_0160.i ], [ %.0116194.i, %428 ] %.1.i93 = phi ptr [ %.0114195.i, %324 ], [ %.0114195.i, %328 ], [ %.0114195.i, %330 ], [ %355, %cpstrdup.exit.i ], [ %355, %370 ], [ %355, %.tail155.thread.i ], [ %355, %.tail164.i ], [ %355, %419 ], [ %355, %425 ], [ %355, %501 ], [ %355, %431 ], [ %355, %sub_1166.i ], [ %355, %.tail159.i ], [ %355, %sub_1161.i ], [ %355, %.tail155.i ], [ %355, %sub_0160.i ], [ %355, %428 ] call void @pfree(ptr noundef nonnull %325) #15 - %505 = call ptr @tsearch_readline(ptr noundef nonnull %13) #15 - %.not132.i = icmp eq ptr %505, null + %504 = call ptr @tsearch_readline(ptr noundef nonnull %13) #15 + %.not132.i = icmp eq ptr %504, null br i1 %.not132.i, label %._crit_edge197.i, label %324, !llvm.loop !20 ._crit_edge197.i: ; preds = %.tail164.thread.i call void @tsearch_readline_end(ptr noundef nonnull %13) #15 %.not133.i = icmp eq ptr %.1.i93, null - br i1 %.not133.i, label %NIImportOOAffixes.exit, label %506 + br i1 %.not133.i, label %NIImportOOAffixes.exit, label %505 -506: ; preds = %._crit_edge197.i +505: ; preds = %._crit_edge197.i call void @pfree(ptr noundef nonnull %.1.i93) #15 br label %NIImportOOAffixes.exit -NIImportOOAffixes.exit: ; preds = %._crit_edge197.thread.i, %._crit_edge197.i, %506 +NIImportOOAffixes.exit: ; preds = %._crit_edge197.thread.i, %._crit_edge197.i, %505 call void @llvm.lifetime.end.p0(i64 8192, ptr nonnull %8) call void @llvm.lifetime.end.p0(i64 8192, ptr nonnull %9) call void @llvm.lifetime.end.p0(i64 8192, ptr nonnull %10) call void @llvm.lifetime.end.p0(i64 8192, ptr nonnull %11) call void @llvm.lifetime.end.p0(i64 8192, ptr nonnull %12) call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %13) - br label %507 + br label %506 -507: ; preds = %NIImportOOAffixes.exit, %._crit_edge +506: ; preds = %NIImportOOAffixes.exit, %._crit_edge ret void } diff --git a/bench/protobuf/optimized/printer.cc.ll b/bench/protobuf/optimized/printer.cc.ll index 7cceca014c8..e6dac9b0f67 100644 --- a/bench/protobuf/optimized/printer.cc.ll +++ b/bench/protobuf/optimized/printer.cc.ll @@ -422,9 +422,9 @@ while.cond.preheader: ; preds = %entry _ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i.lr.ph: ; preds = %while.cond.preheader %is_raw_string = getelementptr inbounds i8, ptr %agg.result, i64 24 - %lhsc375 = load i8, ptr %format_string.coerce1, align 1 - %cmp7.i.i376 = icmp eq i8 %lhsc375, 10 - br i1 %cmp7.i.i376, label %while.body, label %invoke.cont15 + %lhsc374 = load i8, ptr %format_string.coerce1, align 1 + %cmp7.i.i375 = icmp eq i8 %lhsc374, 10 + br i1 %cmp7.i.i375, label %while.body, label %invoke.cont15 _ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i.loopexit: ; preds = %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i36 %lhsc = load i8, ptr %format_string.sroa.9.2272, align 1 @@ -432,15 +432,15 @@ _ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_ br i1 %cmp7.i.i, label %while.body, label %invoke.cont15, !llvm.loop !4 while.body: ; preds = %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i.lr.ph, %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i.loopexit - %format_string.sroa.0.1279378 = phi i64 [ %format_string.sroa.0.2271, %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i.loopexit ], [ %format_string.coerce0, %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i.lr.ph ] - %format_string.sroa.9.1280377 = phi ptr [ %format_string.sroa.9.2272, %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i.loopexit ], [ %format_string.coerce1, %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i.lr.ph ] + %format_string.sroa.0.1279377 = phi i64 [ %format_string.sroa.0.2271, %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i.loopexit ], [ %format_string.coerce0, %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i.lr.ph ] + %format_string.sroa.9.1280376 = phi ptr [ %format_string.sroa.9.2272, %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i.loopexit ], [ %format_string.coerce1, %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i.lr.ph ] store i8 1, ptr %is_raw_string, align 8 - %format_string.sroa.0.2267 = add i64 %format_string.sroa.0.1279378, -1 + %format_string.sroa.0.2267 = add i64 %format_string.sroa.0.1279377, -1 %cmp.not.i.i35269 = icmp eq i64 %format_string.sroa.0.2267, 0 br i1 %cmp.not.i.i35269, label %if.then9, label %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i36 _ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i36: ; preds = %while.body, %while.body6 - %format_string.sroa.9.2272.pn = phi ptr [ %format_string.sroa.9.2272, %while.body6 ], [ %format_string.sroa.9.1280377, %while.body ] + %format_string.sroa.9.2272.pn = phi ptr [ %format_string.sroa.9.2272, %while.body6 ], [ %format_string.sroa.9.1280376, %while.body ] %format_string.sroa.0.2271 = phi i64 [ %format_string.sroa.0.2, %while.body6 ], [ %format_string.sroa.0.2267, %while.body ] %raw_string_indent.2270 = phi i64 [ %inc, %while.body6 ], [ 0, %while.body ] %format_string.sroa.9.2272 = getelementptr inbounds i8, ptr %format_string.sroa.9.2272.pn, i64 1 @@ -768,7 +768,7 @@ for.body64: ; preds = %for.body64.lr.ph, % %17 = load ptr, ptr %add.ptr.i.i82, align 8 %18 = load ptr, ptr %_M_finish.i.i130, align 8 %cmp.i.i131 = icmp eq ptr %17, %18 - %.pre331 = trunc i8 %is_var.0302 to i1 + %.pre331 = trunc nuw i8 %is_var.0302 to i1 br i1 %cmp.i.i131, label %if.end92, label %land.lhs.true land.lhs.true: ; preds = %for.body64 @@ -809,8 +809,7 @@ if.end92: ; preds = %for.body64, %_ZNSt1 br i1 %or.cond.not, label %if.then96, label %if.end103 if.then96: ; preds = %land.lhs.true, %if.end92 - %tobool93.pre-phi344 = phi i1 [ %tobool93.pre-phi, %if.end92 ], [ true, %land.lhs.true ] - %frombool = and i8 %is_var.0302, 1 + %tobool93.pre-phi343 = phi i1 [ %tobool93.pre-phi, %if.end92 ], [ true, %land.lhs.true ] %19 = load ptr, ptr %_M_end_of_storage.i.i, align 8 %cmp.not.i.i154 = icmp eq ptr %18, %19 br i1 %cmp.not.i.i154, label %if.else.i.i, label %if.then.i.i155 @@ -820,7 +819,7 @@ if.then.i.i155: ; preds = %if.then96 %ref.tmp98.sroa.0.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %18, i64 8 store ptr %chunk.sroa.6.0.copyload, ptr %ref.tmp98.sroa.0.sroa.3.0..sroa_idx, align 8 %ref.tmp98.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %18, i64 16 - store i8 %frombool, ptr %ref.tmp98.sroa.3.0..sroa_idx, align 8 + store i8 %is_var.0302, ptr %ref.tmp98.sroa.3.0..sroa_idx, align 8 %ref.tmp98.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %18, i64 17 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %ref.tmp98.sroa.4.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(7) %ref.tmp98.sroa.4, i64 7, i1 false) %20 = load ptr, ptr %_M_finish.i.i130, align 8 @@ -864,7 +863,7 @@ _ZNSt12_Vector_baseIN6google8protobuf2io7Printer6Format5ChunkESaIS5_EE11_M_alloc %ref.tmp98.sroa.0.sroa.3.0.add.ptr.i.i.i158.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i.i.i158, i64 8 store ptr %chunk.sroa.6.0.copyload, ptr %ref.tmp98.sroa.0.sroa.3.0.add.ptr.i.i.i158.sroa_idx, align 8 %ref.tmp98.sroa.3.0.add.ptr.i.i.i158.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i.i.i158, i64 16 - store i8 %frombool, ptr %ref.tmp98.sroa.3.0.add.ptr.i.i.i158.sroa_idx, align 8 + store i8 %is_var.0302, ptr %ref.tmp98.sroa.3.0.add.ptr.i.i.i158.sroa_idx, align 8 %ref.tmp98.sroa.4.0.add.ptr.i.i.i158.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i.i.i158, i64 17 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %ref.tmp98.sroa.4.0.add.ptr.i.i.i158.sroa_idx, ptr noundef nonnull align 1 dereferenceable(7) %ref.tmp98.sroa.4, i64 7, i1 false) br i1 %cmp.i.i131, label %_ZNSt6vectorIN6google8protobuf2io7Printer6Format5ChunkESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit19.i.i.i, label %for.body.i.i.i.i.i.i @@ -896,17 +895,16 @@ _ZNSt6vectorIN6google8protobuf2io7Printer6Format5ChunkESaIS5_EE17_M_realloc_inse br label %if.end103 if.end103: ; preds = %if.end92, %_ZNSt6vectorIN6google8protobuf2io7Printer6Format5ChunkESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i, %if.then.i.i155 - %tobool93.pre-phi343 = phi i1 [ %tobool93.pre-phi344, %_ZNSt6vectorIN6google8protobuf2io7Printer6Format5ChunkESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i ], [ %tobool93.pre-phi344, %if.then.i.i155 ], [ %tobool93.pre-phi, %if.end92 ] - %lnot.pre-phi = phi i8 [ %frombool, %_ZNSt6vectorIN6google8protobuf2io7Printer6Format5ChunkESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i ], [ %frombool, %if.then.i.i155 ], [ %is_var.0302, %if.end92 ] + %tobool93.pre-phi342 = phi i1 [ %tobool93.pre-phi, %if.end92 ], [ %tobool93.pre-phi343, %_ZNSt6vectorIN6google8protobuf2io7Printer6Format5ChunkESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i ], [ %tobool93.pre-phi343, %if.then.i.i155 ] %add105 = add i64 %chunk.sroa.0.0.copyload, %total_len.0301 %add108 = add i64 %add105, 2 - %spec.select = select i1 %tobool93.pre-phi343, i64 %add108, i64 %add105 - %frombool111 = xor i8 %lnot.pre-phi, 1 + %spec.select = select i1 %tobool93.pre-phi342, i64 %add108, i64 %add105 + %lnot = xor i8 %is_var.0302, 1 br label %for.inc for.inc: ; preds = %if.end103, %if.then79 %total_len.1 = phi i64 [ %spec.select, %if.end103 ], [ %add90, %if.then79 ] - %is_var.1 = phi i8 [ %frombool111, %if.end103 ], [ %is_var.0302, %if.then79 ] + %is_var.1 = phi i8 [ %lnot, %if.end103 ], [ %is_var.0302, %if.then79 ] %22 = load i32, ptr %state_.i.i86, align 8 %cmp.i161 = icmp eq i32 %22, 1 br i1 %cmp.i161, label %if.then.i166, label %if.end.i162 @@ -5655,7 +5653,7 @@ for.body.i.i.i: ; preds = %for.inc.i.i.i, %if. br i1 %tobool.i.i.i, label %if.then.i.i.i, label %for.inc.i.i.i if.then.i.i.i: ; preds = %for.body.i.i.i - %cmp1.i.i.i = icmp ult i64 %__n.05.i.i.i, 2 + %cmp1.i.i.i = icmp samesign ult i64 %__n.05.i.i.i, 2 br i1 %cmp1.i.i.i, label %_ZSt17holds_alternativeISt8functionIFbvEEJSt17basic_string_viewIcSt11char_traitsIcEES2_EEbRKSt7variantIJDpT0_EE.exit.i, label %for.inc.i.i.i for.inc.i.i.i: ; preds = %if.then.i.i.i, %for.body.i.i.i @@ -5790,7 +5788,7 @@ for.body.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i br i1 %tobool.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i, label %for.inc.i.i.i.i.i.i if.then.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i - %cmp1.i.i.i.i.i.i = icmp ult i64 %__n.05.i.i.i.i.i.i, 2 + %cmp1.i.i.i.i.i.i = icmp samesign ult i64 %__n.05.i.i.i.i.i.i, 2 br i1 %cmp1.i.i.i.i.i.i, label %_ZSt17holds_alternativeISt8functionIFbvEEJSt17basic_string_viewIcSt11char_traitsIcEES2_EEbRKSt7variantIJDpT0_EE.exit.i.i.i.i, label %for.inc.i.i.i.i.i.i for.inc.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i, %for.body.i.i.i.i.i.i diff --git a/bench/qdrant-rs/optimized/1qtu8dw3f0ctj9yc.ll b/bench/qdrant-rs/optimized/1qtu8dw3f0ctj9yc.ll index 285088090d2..d18a23bcf55 100644 --- a/bench/qdrant-rs/optimized/1qtu8dw3f0ctj9yc.ll +++ b/bench/qdrant-rs/optimized/1qtu8dw3f0ctj9yc.ll @@ -890,81 +890,80 @@ define { i32, float } @_ZN6sparse6common13sparse_vector12SparseVector5score17ha9 %18 = load ptr, ptr %17, align 8, !nonnull !5 %19 = getelementptr inbounds i8, ptr %0, i64 32 %20 = load ptr, ptr %19, align 8, !nonnull !5 - br label %25 + br label %24 -._crit_edge.loopexit: ; preds = %36 - %21 = and i8 %.140, 1 - %22 = zext nneg i8 %21 to i32 +._crit_edge.loopexit: ; preds = %35 + %21 = zext nneg i8 %.140 to i32 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %2 %.041.lcssa = phi float [ 0.000000e+00, %2 ], [ %.142, %._crit_edge.loopexit ] - %.039.lcssa = phi i32 [ 0, %2 ], [ %22, %._crit_edge.loopexit ] - %23 = insertvalue { i32, float } poison, i32 %.039.lcssa, 0 - %24 = insertvalue { i32, float } %23, float %.041.lcssa, 1 - ret { i32, float } %24 - -25: ; preds = %.lr.ph, %36 - %.03670 = phi i64 [ 0, %.lr.ph ], [ %.1, %36 ] - %.03769 = phi i64 [ 0, %.lr.ph ], [ %.138, %36 ] - %.03968 = phi i8 [ 0, %.lr.ph ], [ %.140, %36 ] - %.04167 = phi float [ 0.000000e+00, %.lr.ph ], [ %.142, %36 ] - %26 = getelementptr inbounds [0 x i32], ptr %12, i64 0, i64 %.03670 - %27 = getelementptr inbounds [0 x i32], ptr %10, i64 0, i64 %.03769 + %.039.lcssa = phi i32 [ 0, %2 ], [ %21, %._crit_edge.loopexit ] + %22 = insertvalue { i32, float } poison, i32 %.039.lcssa, 0 + %23 = insertvalue { i32, float } %22, float %.041.lcssa, 1 + ret { i32, float } %23 + +24: ; preds = %.lr.ph, %35 + %.03670 = phi i64 [ 0, %.lr.ph ], [ %.1, %35 ] + %.03769 = phi i64 [ 0, %.lr.ph ], [ %.138, %35 ] + %.03968 = phi i8 [ 0, %.lr.ph ], [ %.140, %35 ] + %.04167 = phi float [ 0.000000e+00, %.lr.ph ], [ %.142, %35 ] + %25 = getelementptr inbounds [0 x i32], ptr %12, i64 0, i64 %.03670 + %26 = getelementptr inbounds [0 x i32], ptr %10, i64 0, i64 %.03769 + %27 = load i32, ptr %25, align 4, !noundef !5 %28 = load i32, ptr %26, align 4, !noundef !5 - %29 = load i32, ptr %27, align 4, !noundef !5 - %.0 = tail call i8 @llvm.ucmp.i8.i32(i32 %28, i32 %29) + %.0 = tail call i8 @llvm.ucmp.i8.i32(i32 %27, i32 %28) switch i8 %.0, label %default.unreachable [ - i8 -1, label %30 - i8 0, label %32 - i8 1, label %34 + i8 -1, label %29 + i8 0, label %31 + i8 1, label %33 ] -default.unreachable: ; preds = %25 +default.unreachable: ; preds = %24 unreachable -30: ; preds = %25 - %31 = add nuw i64 %.03670, 1 - br label %36 - -32: ; preds = %25 - %33 = icmp ult i64 %.03670, %14 - br i1 %33, label %39, label %41, !prof !154 - -34: ; preds = %25 - %35 = add nuw i64 %.03769, 1 - br label %36 - -36: ; preds = %42, %34, %30 - %.142 = phi float [ %.04167, %34 ], [ %48, %42 ], [ %.04167, %30 ] - %.140 = phi i8 [ %.03968, %34 ], [ 1, %42 ], [ %.03968, %30 ] - %.138 = phi i64 [ %35, %34 ], [ %50, %42 ], [ %.03769, %30 ] - %.1 = phi i64 [ %.03670, %34 ], [ %49, %42 ], [ %31, %30 ] - %37 = icmp ult i64 %.1, %4 - %38 = icmp ult i64 %.138, %6 - %or.cond = select i1 %37, i1 %38, i1 false - br i1 %or.cond, label %25, label %._crit_edge.loopexit - -39: ; preds = %32 - %40 = icmp ult i64 %.03769, %16 - br i1 %40, label %42, label %51, !prof !154 - -41: ; preds = %32 +29: ; preds = %24 + %30 = add nuw i64 %.03670, 1 + br label %35 + +31: ; preds = %24 + %32 = icmp ult i64 %.03670, %14 + br i1 %32, label %38, label %40, !prof !154 + +33: ; preds = %24 + %34 = add nuw i64 %.03769, 1 + br label %35 + +35: ; preds = %41, %33, %29 + %.142 = phi float [ %.04167, %33 ], [ %47, %41 ], [ %.04167, %29 ] + %.140 = phi i8 [ %.03968, %33 ], [ 1, %41 ], [ %.03968, %29 ] + %.138 = phi i64 [ %34, %33 ], [ %49, %41 ], [ %.03769, %29 ] + %.1 = phi i64 [ %.03670, %33 ], [ %48, %41 ], [ %30, %29 ] + %36 = icmp ult i64 %.1, %4 + %37 = icmp ult i64 %.138, %6 + %or.cond = select i1 %36, i1 %37, i1 false + br i1 %or.cond, label %24, label %._crit_edge.loopexit + +38: ; preds = %31 + %39 = icmp ult i64 %.03769, %16 + br i1 %39, label %41, label %50, !prof !154 + +40: ; preds = %31 tail call void @_ZN4core9panicking18panic_bounds_check17he5254f424ac3a4c4E(i64 noundef %.03670, i64 noundef %14, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.30f34e5a9fd2306e2b5288d77ea6d58a.19) #21 unreachable -42: ; preds = %39 - %43 = getelementptr inbounds [0 x float], ptr %20, i64 0, i64 %.03670 - %44 = load float, ptr %43, align 4, !noundef !5 - %45 = getelementptr inbounds [0 x float], ptr %18, i64 0, i64 %.03769 - %46 = load float, ptr %45, align 4, !noundef !5 - %47 = fmul float %44, %46 - %48 = fadd float %.04167, %47 - %49 = add nuw i64 %.03670, 1 - %50 = add nuw i64 %.03769, 1 - br label %36 - -51: ; preds = %39 +41: ; preds = %38 + %42 = getelementptr inbounds [0 x float], ptr %20, i64 0, i64 %.03670 + %43 = load float, ptr %42, align 4, !noundef !5 + %44 = getelementptr inbounds [0 x float], ptr %18, i64 0, i64 %.03769 + %45 = load float, ptr %44, align 4, !noundef !5 + %46 = fmul float %43, %45 + %47 = fadd float %.04167, %46 + %48 = add nuw i64 %.03670, 1 + %49 = add nuw i64 %.03769, 1 + br label %35 + +50: ; preds = %38 tail call void @_ZN4core9panicking18panic_bounds_check17he5254f424ac3a4c4E(i64 noundef %.03769, i64 noundef %16, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.30f34e5a9fd2306e2b5288d77ea6d58a.20) #21 unreachable } diff --git a/bench/qemu/optimized/block_vhdx-log.c.ll b/bench/qemu/optimized/block_vhdx-log.c.ll index aaf0a195fff..f66206bcbe5 100644 --- a/bench/qemu/optimized/block_vhdx-log.c.ll +++ b/bench/qemu/optimized/block_vhdx-log.c.ll @@ -133,8 +133,8 @@ if.end34: ; preds = %if.end28 br label %for.cond.i for.cond.i: ; preds = %if.end44.i, %if.end34 - %9 = phi i32 [ 0, %if.end34 ], [ %20, %if.end44.i ] - %candidate.sroa.0.0.i = phi i8 [ 0, %if.end34 ], [ %19, %if.end44.i ] + %9 = phi i32 [ 0, %if.end34 ], [ %19, %if.end44.i ] + %candidate.sroa.0.0.i = phi i8 [ 0, %if.end34 ], [ %18, %if.end44.i ] %candidate.sroa.6.0.i = phi i32 [ 0, %if.end34 ], [ %candidate.sroa.6.1.i, %if.end44.i ] %candidate.sroa.8.0.i = phi i32 [ 0, %if.end34 ], [ %candidate.sroa.8.1.i, %if.end44.i ] %candidate.sroa.9.0.i = phi i32 [ 0, %if.end34 ], [ %candidate.sroa.9.1.i, %if.end44.i ] @@ -184,8 +184,7 @@ if.then30.i: ; preds = %if.end16.i, %if.end %call1243.i.lcssa = phi i32 [ %call1239.i, %if.end16.i.preheader ], [ %call12.i, %if.end16.i ] %current.sroa.8.242.i.lcssa = phi i32 [ %11, %if.end16.i.preheader ], [ %16, %if.end16.i ] %current.sroa.41.241.i.lcssa = phi i32 [ 1, %if.end16.i.preheader ], [ %inc.i, %if.end16.i ] - %18 = and i8 %candidate.sroa.0.0.i, 1 - %cmp34.i = icmp eq i8 %18, 0 + %cmp34.i = icmp eq i8 %candidate.sroa.0.0.i, 0 %cmp40.i = icmp ugt i64 %current.sroa.12.64.copyload.i, %candidate.sroa.11.0.i %or.cond.i = select i1 %cmp34.i, i1 true, i1 %cmp40.i br i1 %or.cond.i, label %if.then42.i, label %if.end44.i @@ -199,17 +198,17 @@ if.then42.i: ; preds = %if.then30.i if.end44.i: ; preds = %if.then42.i, %if.then30.i, %if.end.i %ret.126.i = phi i32 [ %call1243.i.lcssa, %if.then42.i ], [ %call1243.i.lcssa, %if.then30.i ], [ %call.i, %if.end.i ] - %19 = phi i8 [ 1, %if.then42.i ], [ %candidate.sroa.0.0.i, %if.then30.i ], [ %candidate.sroa.0.0.i, %if.end.i ] + %18 = phi i8 [ 1, %if.then42.i ], [ %candidate.sroa.0.0.i, %if.then30.i ], [ %candidate.sroa.0.0.i, %if.end.i ] %candidate.sroa.6.1.i = phi i32 [ %current.sroa.41.241.i.lcssa, %if.then42.i ], [ %candidate.sroa.6.0.i, %if.then30.i ], [ %candidate.sroa.6.0.i, %if.end.i ] %candidate.sroa.8.1.i = phi i32 [ %current.sroa.8.242.i.lcssa, %if.then42.i ], [ %candidate.sroa.8.0.i, %if.then30.i ], [ %candidate.sroa.8.0.i, %if.end.i ] %candidate.sroa.9.1.i = phi i32 [ %9, %if.then42.i ], [ %candidate.sroa.9.0.i, %if.then30.i ], [ %candidate.sroa.9.0.i, %if.end.i ] %candidate.sroa.11.1.i = phi i64 [ %current.sroa.12.64.copyload.i, %if.then42.i ], [ %candidate.sroa.11.0.i, %if.then30.i ], [ %candidate.sroa.11.0.i, %if.end.i ] - %20 = load i32, ptr %read.i, align 4 - %cmp46.i = icmp ult i32 %20, %9 + %19 = load i32, ptr %read.i, align 4 + %cmp46.i = icmp ult i32 %19, %9 br i1 %cmp46.i, label %for.end50.i, label %for.cond.i for.end50.i: ; preds = %if.end44.i - store i8 %19, ptr %logs, align 8 + store i8 %18, ptr %logs, align 8 %candidate.sroa.5.0..sroa_idx.i = getelementptr inbounds i8, ptr %logs, i64 1 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %candidate.sroa.5.0..sroa_idx.i, ptr noundef nonnull align 1 dereferenceable(3) %candidate.sroa.5.i, i64 3, i1 false) %candidate.sroa.6.0..sroa_idx.i = getelementptr inbounds i8, ptr %logs, i64 4 @@ -226,7 +225,7 @@ for.end50.i: ; preds = %if.end44.i store i64 %candidate.sroa.11.1.i, ptr %candidate.sroa.11.0..sroa_idx.i, align 8 %candidate.sroa.14.0..sroa_idx.i = getelementptr inbounds i8, ptr %logs, i64 88 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %candidate.sroa.14.0..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(40) %candidate.sroa.14.i, i64 40, i1 false) - %tobool52.i = trunc nuw i8 %19 to i1 + %tobool52.i = trunc nuw i8 %18 to i1 br i1 %tobool52.i, label %if.then41, label %if.end39 vhdx_log_search.exit.thread: ; preds = %if.then3.i, %for.cond.i, %if.end22.i diff --git a/bench/qemu/optimized/hw_ufs_lu.c.ll b/bench/qemu/optimized/hw_ufs_lu.c.ll index 986c3b9f2f8..9edc60beb3b 100644 --- a/bench/qemu/optimized/hw_ufs_lu.c.ll +++ b/bench/qemu/optimized/hw_ufs_lu.c.ll @@ -73,9 +73,9 @@ entry: %cdb = getelementptr inbounds i8, ptr %req, i64 64 %0 = load i8, ptr %cdb, align 4 %.sink2.i.i.sroa.gep = getelementptr inbounds i8, ptr %outbuf, i64 6 - %.sink2.i.i.sroa.gep29 = getelementptr inbounds i8, ptr %outbuf, i64 4 + %.sink2.i.i.sroa.gep30 = getelementptr inbounds i8, ptr %outbuf, i64 4 %.sink1.i.i.sroa.gep = getelementptr inbounds i8, ptr %outbuf, i64 7 - %.sink1.i.i.sroa.gep30 = getelementptr inbounds i8, ptr %outbuf, i64 5 + %.sink1.i.i.sroa.gep31 = getelementptr inbounds i8, ptr %outbuf, i64 5 switch i8 %0, label %sw.epilog.thread [ i8 -96, label %sw.bb i8 18, label %sw.bb5 @@ -91,7 +91,6 @@ sw.bb: ; preds = %entry for.cond.preheader.i: ; preds = %sw.bb %req.val = load ptr, ptr %req, align 8 - %invariant.gep.i = getelementptr inbounds i8, ptr %outbuf, i64 1 %lus.i = getelementptr inbounds i8, ptr %req.val, i64 3304 br label %for.body.i @@ -109,18 +108,18 @@ if.then6.i: ; preds = %for.body.i br i1 %cmp8.i, label %ufs_emulate_report_luns.exit.thread34, label %if.end11.i ufs_emulate_report_luns.exit.thread34: ; preds = %if.then6.i - %sub.i36 = add i32 %len.01.i, -8 + %sub.i36 = add nsw i32 %len.01.i, -8 %3 = tail call i32 @llvm.bswap.i32(i32 %sub.i36) store i32 %3, ptr %outbuf, align 16 br label %sw.epilog if.end11.i: ; preds = %if.then6.i - %idx.ext.i = sext i32 %len.01.i to i64 + %idx.ext.i = zext nneg i32 %len.01.i to i64 %add.ptr.i = getelementptr i8, ptr %outbuf, i64 %idx.ext.i store i64 0, ptr %add.ptr.i, align 1 - %gep.i = getelementptr i8, ptr %invariant.gep.i, i64 %idx.ext.i + %arrayidx16.i = getelementptr i8, ptr %add.ptr.i, i64 1 %4 = trunc nuw nsw i64 %indvars.iv.i to i8 - store i8 %4, ptr %gep.i, align 1 + store i8 %4, ptr %arrayidx16.i, align 1 br label %for.inc.i for.inc.i: ; preds = %if.end11.i, %for.body.i @@ -130,7 +129,7 @@ for.inc.i: ; preds = %if.end11.i, %for.bo br i1 %exitcond.not.i, label %ufs_emulate_report_luns.exit, label %for.body.i, !llvm.loop !5 ufs_emulate_report_luns.exit: ; preds = %for.inc.i - %sub.i = add i32 %len.1.i, -8 + %sub.i = add nsw i32 %len.1.i, -8 %5 = tail call i32 @llvm.bswap.i32(i32 %sub.i) store i32 %5, ptr %outbuf, align 16 %cmp = icmp eq i32 %len.1.i, -1 @@ -159,13 +158,13 @@ if.then1.i: ; preds = %sw.bb5 ] sw.bb17.i.i: ; preds = %if.then1.i - store i8 63, ptr %.sink2.i.i.sroa.gep29, align 4 - store i8 -1, ptr %.sink1.i.i.sroa.gep30, align 1 + store i8 63, ptr %.sink2.i.i.sroa.gep30, align 4 + store i8 -1, ptr %.sink1.i.i.sroa.gep31, align 1 br label %if.end.i.i if.end.i.i: ; preds = %sw.bb17.i.i, %if.then1.i - %.sink2.i.i.sroa.phi = phi ptr [ %.sink2.i.i.sroa.gep, %sw.bb17.i.i ], [ %.sink2.i.i.sroa.gep29, %if.then1.i ] - %.sink1.i.i.sroa.phi = phi ptr [ %.sink1.i.i.sroa.gep, %sw.bb17.i.i ], [ %.sink1.i.i.sroa.gep30, %if.then1.i ] + %.sink2.i.i.sroa.phi = phi ptr [ %.sink2.i.i.sroa.gep, %sw.bb17.i.i ], [ %.sink2.i.i.sroa.gep30, %if.then1.i ] + %.sink1.i.i.sroa.phi = phi ptr [ %.sink1.i.i.sroa.gep, %sw.bb17.i.i ], [ %.sink1.i.i.sroa.gep31, %if.then1.i ] %.sink.i.i = phi i8 [ 0, %sw.bb17.i.i ], [ -121, %if.then1.i ] %buflen.0.i.i = phi i32 [ 8, %sw.bb17.i.i ], [ 6, %if.then1.i ] store i8 0, ptr %.sink2.i.i.sroa.phi, align 1 @@ -187,8 +186,8 @@ if.end10.i: ; preds = %if.end2.i store i8 6, ptr %arrayidx13.i, align 2 %arrayidx14.i = getelementptr inbounds i8, ptr %outbuf, i64 3 store i8 2, ptr %arrayidx14.i, align 1 - store i8 31, ptr %.sink2.i.i.sroa.gep29, align 4 - store i8 0, ptr %.sink1.i.i.sroa.gep30, align 1 + store i8 31, ptr %.sink2.i.i.sroa.gep30, align 4 + store i8 0, ptr %.sink1.i.i.sroa.gep31, align 1 store i8 0, ptr %.sink2.i.i.sroa.gep, align 2 store i8 2, ptr %.sink1.i.i.sroa.gep, align 1 %arrayidx19.i = getelementptr inbounds i8, ptr %outbuf, i64 8 @@ -247,7 +246,7 @@ if.end68: ; preds = %sw.epilog.thread, % br i1 %cmp.i, label %if.then.i, label %if.else.i if.then.i: ; preds = %if.end68 - %sub.i28 = sub nuw i32 %16, %cond48 + %sub.i29 = sub nuw i32 %16, %cond48 br label %if.end13.sink.split.i if.else.i: ; preds = %if.end68 @@ -259,7 +258,7 @@ if.then5.i: ; preds = %if.else.i br label %if.end13.sink.split.i if.end13.sink.split.i: ; preds = %if.then5.i, %if.then.i - %sub6.sink.i = phi i32 [ %sub6.i, %if.then5.i ], [ %sub.i28, %if.then.i ] + %sub6.sink.i = phi i32 [ %sub6.i, %if.then5.i ], [ %sub.i29, %if.then.i ] %flags.0.ph.i = phi i8 [ 64, %if.then5.i ], [ 32, %if.then.i ] %17 = call noundef i32 @llvm.bswap.i32(i32 %sub6.sink.i) %18 = getelementptr inbounds i8, ptr %req, i64 348 diff --git a/bench/qemu/optimized/util_async.c.ll b/bench/qemu/optimized/util_async.c.ll index cc2dccd7cc6..29360aa5333 100644 --- a/bench/qemu/optimized/util_async.c.ll +++ b/bench/qemu/optimized/util_async.c.ll @@ -497,10 +497,9 @@ while.end10.i: ; preds = %if.then.i, %for.bod aio_compute_bh_timeout.exit: ; preds = %while.end10.i %conv.i = sext i32 %timeout.addr.1.i to i64 - %cmp = icmp eq i32 %timeout.addr.1.i, 0 - br i1 %cmp, label %return, label %if.end + br label %if.end -if.end: ; preds = %entry, %aio_compute_bh_timeout.exit +if.end: ; preds = %aio_compute_bh_timeout.exit, %entry %conv.i36 = phi i64 [ %conv.i, %aio_compute_bh_timeout.exit ], [ -1, %entry ] %bh_slice_list = getelementptr inbounds i8, ptr %ctx, i64 184 %s.043 = load ptr, ptr %bh_slice_list, align 8 @@ -568,8 +567,8 @@ if.else: ; preds = %for.end %cond.i = tail call noundef i64 @llvm.umin.i64(i64 range(i64 -1, 10000001) %timeout.0.in.lcssa, i64 range(i64 1, 0) %call9) br label %return -return: ; preds = %if.then.i, %aio_compute_bh_timeout.exit29, %if.then.i26, %for.end, %aio_compute_bh_timeout.exit, %if.else - %retval.0 = phi i64 [ %cond.i, %if.else ], [ 0, %aio_compute_bh_timeout.exit ], [ 0, %for.end ], [ 0, %if.then.i26 ], [ 0, %aio_compute_bh_timeout.exit29 ], [ 0, %if.then.i ] +return: ; preds = %if.then.i, %aio_compute_bh_timeout.exit29, %if.then.i26, %for.end, %if.else + %retval.0 = phi i64 [ %cond.i, %if.else ], [ 0, %for.end ], [ 0, %if.then.i26 ], [ 0, %aio_compute_bh_timeout.exit29 ], [ 0, %if.then.i ] ret i64 %retval.0 } @@ -1376,8 +1375,7 @@ while.end10.i.i: ; preds = %if.then.i.i, %for.b aio_compute_bh_timeout.exit.i: ; preds = %while.end10.i.i %conv.i.i = sext i32 %timeout.addr.1.i.i to i64 - %cmp.i = icmp eq i32 %timeout.addr.1.i.i, 0 - br i1 %cmp.i, label %aio_compute_timeout.exit, label %if.end.i + br label %if.end.i if.end.i: ; preds = %aio_compute_bh_timeout.exit.i, %entry %conv.i36.i = phi i64 [ %conv.i.i, %aio_compute_bh_timeout.exit.i ], [ -1, %entry ] @@ -1447,8 +1445,8 @@ if.else.i: ; preds = %for.end.i %cond.i.i = tail call noundef i64 @llvm.umin.i64(i64 range(i64 -1, 10000001) %timeout.0.in.lcssa.i, i64 range(i64 1, 0) %call9.i) br label %aio_compute_timeout.exit -aio_compute_timeout.exit: ; preds = %if.then.i.i, %aio_compute_bh_timeout.exit29.i, %if.then.i26.i, %aio_compute_bh_timeout.exit.i, %for.end.i, %if.else.i - %retval.0.i = phi i64 [ %cond.i.i, %if.else.i ], [ 0, %aio_compute_bh_timeout.exit.i ], [ 0, %for.end.i ], [ 0, %if.then.i26.i ], [ 0, %aio_compute_bh_timeout.exit29.i ], [ 0, %if.then.i.i ] +aio_compute_timeout.exit: ; preds = %if.then.i.i, %aio_compute_bh_timeout.exit29.i, %if.then.i26.i, %for.end.i, %if.else.i + %retval.0.i = phi i64 [ %cond.i.i, %if.else.i ], [ 0, %for.end.i ], [ 0, %if.then.i26.i ], [ 0, %aio_compute_bh_timeout.exit29.i ], [ 0, %if.then.i.i ] %call9 = tail call i32 @qemu_timeout_ns_to_ms(i64 noundef %retval.0.i) #13 store i32 %call9, ptr %timeout, align 4 %call10 = tail call zeroext i1 @aio_prepare(ptr noundef %source) #13 diff --git a/bench/raylib/optimized/raudio.c.ll b/bench/raylib/optimized/raudio.c.ll index 53af6852f5d..5d1038f8184 100644 --- a/bench/raylib/optimized/raudio.c.ll +++ b/bench/raylib/optimized/raudio.c.ll @@ -68747,6 +68747,7 @@ get_bits.exit.thread.i: ; preds = %._crit_edge581.i, % %857 = getelementptr inbounds i8, ptr %32, i64 17 %858 = getelementptr inbounds i8, ptr %0, i64 196 %859 = getelementptr inbounds i8, ptr %0, i64 328 + %wide.trip.count.i434.i = zext i32 %33 to i64 %860 = getelementptr inbounds i8, ptr %0, i64 156 br label %862 @@ -68913,7 +68914,7 @@ draw_line.exit.i.i: ; preds = %.lr.ph.i.i.i, %920, %951 = fmul float %946, %950 store float %951, ptr %949, align 4 %indvars.iv.next8.i.i = add nuw nsw i64 %indvars.iv7.i.i, 1 - %exitcond.not.i435.i = icmp eq i64 %indvars.iv.next8.i.i, %853 + %exitcond.not.i435.i = icmp eq i64 %indvars.iv.next8.i.i, %wide.trip.count.i434.i br i1 %exitcond.not.i435.i, label %do_floor.exit.i, label %948 do_floor.exit.i: ; preds = %948, %._crit_edge.i432.i, %881, %867 @@ -71176,7 +71177,7 @@ setup_temp_free.exit1095: ; preds = %658, %651, %481 857: ; preds = %853, %848 %.11104 = phi i8 [ %.01103, %848 ], [ %spec.select1107, %853 ] %.126.i = phi i32 [ %.02530.i, %848 ], [ %spec.select1108, %853 ] - %858 = icmp sgt i32 %.02431.i, %851 + %858 = icmp ugt i32 %.02431.i, %851 br i1 %858, label %859, label %863 859: ; preds = %857 @@ -76409,7 +76410,7 @@ stb_vorbis_open_filename.exit: ; preds = %4 %40 = shl nsw i32 %.04157, 1 %41 = sext i32 %40 to i64 %42 = shl nsw i64 %41, 1 - %43 = call ptr @realloc(ptr noundef %.04058, i64 noundef %42) #84 + %43 = call ptr @realloc(ptr noundef nonnull %.04058, i64 noundef %42) #84 %44 = icmp eq ptr %43, null br i1 %44, label %45, label %._crit_edge64 @@ -76432,7 +76433,7 @@ stb_vorbis_open_filename.exit: ; preds = %4 %49 = sext i32 %36 to i64 %50 = getelementptr inbounds i16, ptr %.1, i64 %49 %51 = sub nsw i32 %.142, %36 - %52 = call i32 @stb_vorbis_get_frame_short_interleaved(ptr noundef nonnull %14, i32 noundef %48, ptr noundef %50, i32 noundef %51) + %52 = call i32 @stb_vorbis_get_frame_short_interleaved(ptr noundef nonnull %14, i32 noundef %48, ptr noundef nonnull %50, i32 noundef %51) %53 = icmp eq i32 %52, 0 br i1 %53, label %._crit_edge, label %.lr.ph @@ -76523,7 +76524,7 @@ define hidden i32 @stb_vorbis_decode_memory(ptr noundef %0, i32 noundef %1, ptr %33 = shl nsw i32 %.04257, 1 %34 = sext i32 %33 to i64 %35 = shl nsw i64 %34, 1 - %36 = call ptr @realloc(ptr noundef %.04158, i64 noundef %35) #84 + %36 = call ptr @realloc(ptr noundef nonnull %.04158, i64 noundef %35) #84 %37 = icmp eq ptr %36, null br i1 %37, label %38, label %._crit_edge64 @@ -76546,7 +76547,7 @@ define hidden i32 @stb_vorbis_decode_memory(ptr noundef %0, i32 noundef %1, ptr %42 = sext i32 %29 to i64 %43 = getelementptr inbounds i16, ptr %.1, i64 %42 %44 = sub nsw i32 %.143, %29 - %45 = call i32 @stb_vorbis_get_frame_short_interleaved(ptr noundef nonnull %7, i32 noundef %41, ptr noundef %43, i32 noundef %44) + %45 = call i32 @stb_vorbis_get_frame_short_interleaved(ptr noundef nonnull %7, i32 noundef %41, ptr noundef nonnull %43, i32 noundef %44) %46 = icmp eq i32 %45, 0 br i1 %46, label %._crit_edge, label %.lr.ph @@ -80473,7 +80474,7 @@ drmp3_L3_save_reservoir.exit: ; preds = %.loopexit, %1852 %1949 = zext i8 %1948 to i32 %1950 = lshr i32 255, %1946 %1951 = and i32 %1950, %1949 - %1952 = icmp sgt i32 %1947, 8 + %1952 = icmp samesign ugt i32 %1947, 8 br i1 %1952, label %.lr.ph.i.i168, label %._crit_edge.i.i151 .lr.ph.i.i168: ; preds = %1942, %.lr.ph.i.i168 @@ -80494,7 +80495,7 @@ drmp3_L3_save_reservoir.exit: ; preds = %.loopexit, %1852 %.021.lcssa.i.i = phi i32 [ %1951, %1942 ], [ %1957, %.lr.ph.i.i168 ] %.020.lcssa.i.i = phi i32 [ 0, %1942 ], [ %1955, %.lr.ph.i.i168 ] %.018.lcssa.i.i = phi i32 [ %1947, %1942 ], [ %1953, %.lr.ph.i.i168 ] - %1959 = sub nsw i32 8, %.018.lcssa.i.i + %1959 = sub nuw nsw i32 8, %.018.lcssa.i.i %1960 = lshr i32 %.021.lcssa.i.i, %1959 %1961 = or i32 %1960, %.020.lcssa.i.i %1962 = zext i32 %1961 to i64 @@ -80525,7 +80526,7 @@ drmp3_bs_get_bits.exit.i152: ; preds = %._crit_edge.i.i151, %1978 = zext i8 %1977 to i32 %1979 = lshr i32 255, %1975 %1980 = and i32 %1979, %1978 - %1981 = icmp sgt i32 %1976, 8 + %1981 = icmp samesign ugt i32 %1976, 8 br i1 %1981, label %.lr.ph.i63.i, label %._crit_edge.i58.i .lr.ph.i63.i: ; preds = %1971, %.lr.ph.i63.i @@ -80546,7 +80547,7 @@ drmp3_bs_get_bits.exit.i152: ; preds = %._crit_edge.i.i151, %.021.lcssa.i59.i = phi i32 [ %1980, %1971 ], [ %1986, %.lr.ph.i63.i ] %.020.lcssa.i60.i = phi i32 [ 0, %1971 ], [ %1984, %.lr.ph.i63.i ] %.018.lcssa.i61.i = phi i32 [ %1976, %1971 ], [ %1982, %.lr.ph.i63.i ] - %1988 = sub nsw i32 8, %.018.lcssa.i61.i + %1988 = sub nuw nsw i32 8, %.018.lcssa.i61.i %1989 = lshr i32 %.021.lcssa.i59.i, %1988 %1990 = or i32 %1989, %.020.lcssa.i60.i %1991 = zext i32 %1990 to i64 diff --git a/bench/re2/optimized/parse.cc.ll b/bench/re2/optimized/parse.cc.ll index 2318a0e9c22..323742dd204 100644 --- a/bench/re2/optimized/parse.cc.ll +++ b/bench/re2/optimized/parse.cc.ll @@ -3115,7 +3115,7 @@ for.body.lr.ph: ; preds = %entry %_M_end_of_storage.i = getelementptr inbounds i8, ptr %splices, i64 16 %0 = zext nneg i32 %nsub to i64 %1 = add nuw i32 %nsub, 1 - %wide.trip.count = zext i32 %1 to i64 + %wide.trip.count68 = zext i32 %1 to i64 br label %for.body for.body: ; preds = %for.body.lr.ph, %for.inc35 @@ -3142,8 +3142,8 @@ land.rhs.i: ; preds = %if.then, %while.bod br i1 %cmp2.not.i, label %while.end.i.thread, label %while.body.i while.end.i.thread: ; preds = %land.rhs.i - %parse_flags_.i71 = getelementptr inbounds i8, ptr %re.addr.016.i, i64 2 - %5 = load i16, ptr %parse_flags_.i71, align 2 + %parse_flags_.i72 = getelementptr inbounds i8, ptr %re.addr.016.i, i64 2 + %5 = load i16, ptr %parse_flags_.i72, align 2 br label %_ZN3re26Regexp13LeadingStringEPS0_PiPNS0_10ParseFlagsE.exit while.body.i: ; preds = %land.rhs.i @@ -3179,12 +3179,12 @@ if.then8.i: ; preds = %while.end.i br label %_ZN3re26Regexp13LeadingStringEPS0_PiPNS0_10ParseFlagsE.exit _ZN3re26Regexp13LeadingStringEPS0_PiPNS0_10ParseFlagsE.exit: ; preds = %while.end.i.thread, %while.end.i, %if.then.i, %if.then8.i - %and.i73.in.in = phi i16 [ %11, %if.then8.i ], [ %11, %if.then.i ], [ %11, %while.end.i ], [ %5, %while.end.i.thread ] + %and.i74.in.in = phi i16 [ %11, %if.then8.i ], [ %11, %if.then.i ], [ %11, %while.end.i ], [ %5, %while.end.i.thread ] %nrune_i.1 = phi i32 [ %16, %if.then8.i ], [ 1, %if.then.i ], [ 0, %while.end.i ], [ 0, %while.end.i.thread ] %retval.0.i = phi ptr [ %15, %if.then8.i ], [ %12, %if.then.i ], [ null, %while.end.i ], [ null, %while.end.i.thread ] - %and.i73.in = and i16 %and.i73.in.in, 1 - %and.i73 = zext nneg i16 %and.i73.in to i32 - %cmp2 = icmp eq i32 %runeflags.056, %and.i73 + %and.i74.in = and i16 %and.i74.in.in, 1 + %and.i74 = zext nneg i16 %and.i74.in to i32 + %cmp2 = icmp eq i32 %runeflags.056, %and.i74 br i1 %cmp2, label %while.cond.preheader, label %if.end14 while.cond.preheader: ; preds = %_ZN3re26Regexp13LeadingStringEPS0_PiPNS0_10ParseFlagsE.exit @@ -3220,12 +3220,12 @@ while.end: ; preds = %while.body, %while. br i1 %cmp11.not, label %if.end14, label %for.inc35 if.end14: ; preds = %while.cond.preheader, %_ZN3re26Regexp13LeadingStringEPS0_PiPNS0_10ParseFlagsE.exit, %while.end, %for.body - %runeflags_i.0 = phi i32 [ %runeflags.056, %while.end ], [ %and.i73, %_ZN3re26Regexp13LeadingStringEPS0_PiPNS0_10ParseFlagsE.exit ], [ 0, %for.body ], [ %runeflags.056, %while.cond.preheader ] + %runeflags_i.0 = phi i32 [ %runeflags.056, %while.end ], [ %and.i74, %_ZN3re26Regexp13LeadingStringEPS0_PiPNS0_10ParseFlagsE.exit ], [ 0, %for.body ], [ %runeflags.056, %while.cond.preheader ] %nrune_i.0 = phi i32 [ %nrune_i.1, %while.end ], [ %nrune_i.1, %_ZN3re26Regexp13LeadingStringEPS0_PiPNS0_10ParseFlagsE.exit ], [ 0, %for.body ], [ %nrune_i.1, %while.cond.preheader ] %rune_i.0 = phi ptr [ %retval.0.i, %while.end ], [ %retval.0.i, %_ZN3re26Regexp13LeadingStringEPS0_PiPNS0_10ParseFlagsE.exit ], [ null, %for.body ], [ %retval.0.i, %while.cond.preheader ] %21 = zext i32 %start.052 to i64 %cmp15 = icmp eq i64 %indvars.iv65, %21 - %add = add nsw i32 %start.052, 1 + %add = add nuw nsw i32 %start.052, 1 %22 = zext i32 %add to i64 %cmp17 = icmp eq i64 %indvars.iv65, %22 %or.cond31 = select i1 %cmp15, i1 true, i1 %cmp17 @@ -3233,46 +3233,45 @@ if.end14: ; preds = %while.cond.preheade if.else19: ; preds = %if.end14 %call20 = tail call noundef ptr @_ZN3re26Regexp13LiteralStringEPiiNS0_10ParseFlagsE(ptr noundef %rune.054, i32 noundef %nrune.055, i32 noundef %runeflags.056) - %23 = sext i32 %start.052 to i64 - %cmp2249 = icmp sgt i64 %indvars.iv65, %23 + %cmp2249 = icmp samesign ugt i64 %indvars.iv65, %21 br i1 %cmp2249, label %for.body23, label %for.end for.body23: ; preds = %if.else19, %for.body23 - %indvars.iv61 = phi i64 [ %indvars.iv.next62, %for.body23 ], [ %23, %if.else19 ] + %indvars.iv61 = phi i64 [ %indvars.iv.next62, %for.body23 ], [ %21, %if.else19 ] %arrayidx25 = getelementptr inbounds ptr, ptr %sub, i64 %indvars.iv61 - %24 = load ptr, ptr %arrayidx25, align 8 - tail call void @_ZN3re26Regexp19RemoveLeadingStringEPS0_i(ptr noundef %24, i32 noundef %nrune.055) - %indvars.iv.next62 = add nsw i64 %indvars.iv61, 1 - %25 = and i64 %indvars.iv.next62, 4294967295 - %exitcond64.not = icmp eq i64 %25, %indvars.iv65 + %23 = load ptr, ptr %arrayidx25, align 8 + tail call void @_ZN3re26Regexp19RemoveLeadingStringEPS0_i(ptr noundef %23, i32 noundef %nrune.055) + %indvars.iv.next62 = add nuw nsw i64 %indvars.iv61, 1 + %exitcond64.not = icmp eq i64 %indvars.iv.next62, %indvars.iv65 br i1 %exitcond64.not, label %for.end, label %for.body23, !llvm.loop !23 for.end: ; preds = %for.body23, %if.else19 - %add.ptr = getelementptr inbounds ptr, ptr %sub, i64 %23 - %26 = trunc nuw nsw i64 %indvars.iv65 to i32 - %sub28 = sub nsw i32 %26, %start.052 - %27 = load ptr, ptr %_M_finish.i, align 8 - %28 = load ptr, ptr %_M_end_of_storage.i, align 8 - %cmp.not.i = icmp eq ptr %27, %28 + %idx.ext = sext i32 %start.052 to i64 + %add.ptr = getelementptr inbounds ptr, ptr %sub, i64 %idx.ext + %24 = trunc nuw nsw i64 %indvars.iv65 to i32 + %sub28 = sub nsw i32 %24, %start.052 + %25 = load ptr, ptr %_M_finish.i, align 8 + %26 = load ptr, ptr %_M_end_of_storage.i, align 8 + %cmp.not.i = icmp eq ptr %25, %26 br i1 %cmp.not.i, label %if.else.i, label %if.then.i32 if.then.i32: ; preds = %for.end - store ptr %call20, ptr %27, align 8 - %sub3.i.i.i.i = getelementptr inbounds i8, ptr %27, i64 8 + store ptr %call20, ptr %25, align 8 + %sub3.i.i.i.i = getelementptr inbounds i8, ptr %25, i64 8 store ptr %add.ptr, ptr %sub3.i.i.i.i, align 8 - %nsub4.i.i.i.i = getelementptr inbounds i8, ptr %27, i64 16 + %nsub4.i.i.i.i = getelementptr inbounds i8, ptr %25, i64 16 store i32 %sub28, ptr %nsub4.i.i.i.i, align 8 - %nsuffix.i.i.i.i = getelementptr inbounds i8, ptr %27, i64 20 + %nsuffix.i.i.i.i = getelementptr inbounds i8, ptr %25, i64 20 store i32 -1, ptr %nsuffix.i.i.i.i, align 4 - %29 = load ptr, ptr %_M_finish.i, align 8 - %incdec.ptr.i = getelementptr inbounds i8, ptr %29, i64 24 + %27 = load ptr, ptr %_M_finish.i, align 8 + %incdec.ptr.i = getelementptr inbounds i8, ptr %27, i64 24 store ptr %incdec.ptr.i, ptr %_M_finish.i, align 8 br label %if.end31 if.else.i: ; preds = %for.end - %30 = load ptr, ptr %splices, align 8 - %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %27 to i64 - %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %30 to i64 + %28 = load ptr, ptr %splices, align 8 + %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %25 to i64 + %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %28 to i64 %sub.ptr.sub.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i %cmp.i.i33 = icmp eq i64 %sub.ptr.sub.i.i.i, 9223372036854775800 br i1 %cmp.i.i33, label %if.then.i.i, label %_ZNKSt6vectorIN3re26SpliceESaIS1_EE12_M_check_lenEmPKc.exit.i @@ -3286,8 +3285,8 @@ _ZNKSt6vectorIN3re26SpliceESaIS1_EE12_M_check_lenEmPKc.exit.i: ; preds = %if.els %.sroa.speculated.i.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i, i64 1) %add.i.i = add nsw i64 %.sroa.speculated.i.i, %sub.ptr.div.i.i.i %cmp7.i.i = icmp ult i64 %add.i.i, %sub.ptr.div.i.i.i - %31 = tail call i64 @llvm.umin.i64(i64 %add.i.i, i64 384307168202282325) - %cond.i.i = select i1 %cmp7.i.i, i64 384307168202282325, i64 %31 + %29 = tail call i64 @llvm.umin.i64(i64 %add.i.i, i64 384307168202282325) + %cond.i.i = select i1 %cmp7.i.i, i64 384307168202282325, i64 %29 %cmp.not.i.i = icmp eq i64 %cond.i.i, 0 br i1 %cmp.not.i.i, label %invoke.cont.i, label %cond.true.i.i @@ -3306,26 +3305,26 @@ invoke.cont.i: ; preds = %cond.true.i.i, %_ZN store i32 %sub28, ptr %nsub4.i.i.i.i35, align 8 %nsuffix.i.i.i.i36 = getelementptr inbounds i8, ptr %add.ptr.i, i64 20 store i32 -1, ptr %nsuffix.i.i.i.i36, align 4 - %cmp.not5.i.i.i.i = icmp eq ptr %30, %27 + %cmp.not5.i.i.i.i = icmp eq ptr %28, %25 br i1 %cmp.not5.i.i.i.i, label %_ZNSt6vectorIN3re26SpliceESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit26.i, label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %invoke.cont.i, %for.body.i.i.i.i %__cur.07.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i, %for.body.i.i.i.i ], [ %cond.i17.i, %invoke.cont.i ] - %__first.addr.06.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %for.body.i.i.i.i ], [ %30, %invoke.cont.i ] + %__first.addr.06.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %for.body.i.i.i.i ], [ %28, %invoke.cont.i ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %__cur.07.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %__first.addr.06.i.i.i.i, i64 24, i1 false), !alias.scope !24 %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.06.i.i.i.i, i64 24 %incdec.ptr1.i.i.i.i = getelementptr inbounds i8, ptr %__cur.07.i.i.i.i, i64 24 - %cmp.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %27 + %cmp.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %25 br i1 %cmp.not.i.i.i.i, label %_ZNSt6vectorIN3re26SpliceESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit26.i, label %for.body.i.i.i.i, !llvm.loop !28 _ZNSt6vectorIN3re26SpliceESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit26.i: ; preds = %for.body.i.i.i.i, %invoke.cont.i %__cur.0.lcssa.i.i.i.i = phi ptr [ %cond.i17.i, %invoke.cont.i ], [ %incdec.ptr1.i.i.i.i, %for.body.i.i.i.i ] %incdec.ptr.i37 = getelementptr inbounds i8, ptr %__cur.0.lcssa.i.i.i.i, i64 24 - %tobool.not.i.i = icmp eq ptr %30, null + %tobool.not.i.i = icmp eq ptr %28, null br i1 %tobool.not.i.i, label %_ZNSt6vectorIN3re26SpliceESaIS1_EE17_M_realloc_insertIJRPNS0_6RegexpEPS6_iEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit, label %if.then.i27.i if.then.i27.i: ; preds = %_ZNSt6vectorIN3re26SpliceESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit26.i - tail call void @_ZdlPv(ptr noundef nonnull %30) #28 + tail call void @_ZdlPv(ptr noundef nonnull %28) #28 br label %_ZNSt6vectorIN3re26SpliceESaIS1_EE17_M_realloc_insertIJRPNS0_6RegexpEPS6_iEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit _ZNSt6vectorIN3re26SpliceESaIS1_EE17_M_realloc_insertIJRPNS0_6RegexpEPS6_iEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit: ; preds = %_ZNSt6vectorIN3re26SpliceESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit26.i, %if.then.i27.i @@ -3339,17 +3338,17 @@ if.end31: ; preds = %_ZNSt6vectorIN3re26 br i1 %cmp1, label %if.then33, label %for.inc35 if.then33: ; preds = %if.end31 - %32 = trunc nuw nsw i64 %indvars.iv65 to i32 + %30 = trunc nuw nsw i64 %indvars.iv65 to i32 br label %for.inc35 for.inc35: ; preds = %while.end, %if.end31, %if.then33 - %start.1 = phi i32 [ %32, %if.then33 ], [ %start.052, %if.end31 ], [ %start.052, %while.end ] + %start.1 = phi i32 [ %30, %if.then33 ], [ %start.052, %if.end31 ], [ %start.052, %while.end ] %rune.1 = phi ptr [ %rune_i.0, %if.then33 ], [ %rune.054, %if.end31 ], [ %rune.054, %while.end ] %nrune.1 = phi i32 [ %nrune_i.0, %if.then33 ], [ %nrune.055, %if.end31 ], [ %same.0.lcssa, %while.end ] %runeflags.1 = phi i32 [ %runeflags_i.0, %if.then33 ], [ %runeflags.056, %if.end31 ], [ %runeflags.056, %while.end ] %indvars.iv.next66 = add nuw nsw i64 %indvars.iv65, 1 - %exitcond68.not = icmp eq i64 %indvars.iv.next66, %wide.trip.count - br i1 %exitcond68.not, label %for.end37, label %for.body, !llvm.loop !29 + %exitcond69.not = icmp eq i64 %indvars.iv.next66, %wide.trip.count68 + br i1 %exitcond69.not, label %for.end37, label %for.body, !llvm.loop !29 for.end37: ; preds = %for.inc35, %entry ret void diff --git a/bench/recastnavigation/optimized/NavMeshPruneTool.cpp.ll b/bench/recastnavigation/optimized/NavMeshPruneTool.cpp.ll index e91e4a8ab97..6d03d4b8771 100644 --- a/bench/recastnavigation/optimized/NavMeshPruneTool.cpp.ll +++ b/bench/recastnavigation/optimized/NavMeshPruneTool.cpp.ll @@ -484,7 +484,7 @@ define dso_local void @_ZN16NavMeshPruneTool11handleClickEPKfS1_b(ptr nocapture %10 = getelementptr inbounds i8, ptr %0, i64 8 %11 = load ptr, ptr %10, align 8 %.not = icmp eq ptr %11, null - br i1 %.not, label %197, label %12 + br i1 %.not, label %196, label %12 12: ; preds = %4 %13 = load ptr, ptr %11, align 8 @@ -492,7 +492,7 @@ define dso_local void @_ZN16NavMeshPruneTool11handleClickEPKfS1_b(ptr nocapture %15 = load ptr, ptr %14, align 8 %16 = tail call noundef ptr %15(ptr noundef nonnull align 8 dereferenceable(200) %11) %.not11 = icmp eq ptr %16, null - br i1 %.not11, label %197, label %17 + br i1 %.not11, label %196, label %17 17: ; preds = %12 %18 = load ptr, ptr %10, align 8 @@ -501,7 +501,7 @@ define dso_local void @_ZN16NavMeshPruneTool11handleClickEPKfS1_b(ptr nocapture %21 = load ptr, ptr %20, align 8 %22 = tail call noundef ptr %21(ptr noundef nonnull align 8 dereferenceable(200) %18) %.not12 = icmp eq ptr %22, null - br i1 %.not12, label %197, label %23 + br i1 %.not12, label %196, label %23 23: ; preds = %17 %24 = load ptr, ptr %10, align 8 @@ -510,7 +510,7 @@ define dso_local void @_ZN16NavMeshPruneTool11handleClickEPKfS1_b(ptr nocapture %27 = load ptr, ptr %26, align 8 %28 = tail call noundef ptr %27(ptr noundef nonnull align 8 dereferenceable(200) %24) %.not13 = icmp eq ptr %28, null - br i1 %.not13, label %197, label %29 + br i1 %.not13, label %196, label %29 29: ; preds = %23 %30 = getelementptr inbounds i8, ptr %0, i64 24 @@ -892,19 +892,15 @@ _ZNSt6vectorIjSaIjEE9push_backERKj.exit56.i: ; preds = %_ZNSt6vectorIjSaIjE br i1 %.not14.i, label %.loopexit.i, label %.lr.ph.i, !llvm.loop !11 195: ; preds = %.loopexit.i - %.not.i.i.i57.i = icmp eq ptr %.sroa.8.1.lcssa.i, null - br i1 %.not.i.i.i57.i, label %_ZL12floodNavmeshP9dtNavMeshP12NavmeshFlagsjh.exit, label %196 - -196: ; preds = %195 call void @_ZdlPv(ptr noundef nonnull %.sroa.0.2.lcssa.i) #16 br label %_ZL12floodNavmeshP9dtNavMeshP12NavmeshFlagsjh.exit -_ZL12floodNavmeshP9dtNavMeshP12NavmeshFlagsjh.exit: ; preds = %_ZN12NavmeshFlags8getFlagsEj.exit.i, %195, %196 +_ZL12floodNavmeshP9dtNavMeshP12NavmeshFlagsjh.exit: ; preds = %_ZN12NavmeshFlags8getFlagsEj.exit.i, %195 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) - br label %197 + br label %196 -197: ; preds = %23, %17, %12, %4, %_ZL12floodNavmeshP9dtNavMeshP12NavmeshFlagsjh.exit +196: ; preds = %23, %17, %12, %4, %_ZL12floodNavmeshP9dtNavMeshP12NavmeshFlagsjh.exit ret void } diff --git a/bench/redis/optimized/defrag.ll b/bench/redis/optimized/defrag.ll index 61099c29e05..5f268d66c9e 100644 --- a/bench/redis/optimized/defrag.ll +++ b/bench/redis/optimized/defrag.ll @@ -1091,14 +1091,13 @@ if.end25: ; preds = %while.body.if.end25 while.end.loopexit: ; preds = %if.end25 %.pre15 = load ptr, ptr %ql, align 8 - %9 = icmp ne i32 %bookmark_failed.1, 0 - %10 = zext i1 %9 to i64 + %9 = zext nneg i32 %bookmark_failed.1 to i64 br label %while.end while.end: ; preds = %while.end.loopexit, %if.end8 - %11 = phi ptr [ %0, %if.end8 ], [ %.pre15, %while.end.loopexit ] - %bookmark_failed.0.lcssa = phi i64 [ 0, %if.end8 ], [ %10, %while.end.loopexit ] - %call27 = call i32 @quicklistBookmarkDelete(ptr noundef %11, ptr noundef nonnull @.str.6) #11 + %10 = phi ptr [ %0, %if.end8 ], [ %.pre15, %while.end.loopexit ] + %bookmark_failed.0.lcssa = phi i64 [ 0, %if.end8 ], [ %9, %while.end.loopexit ] + %call27 = call i32 @quicklistBookmarkDelete(ptr noundef %10, ptr noundef nonnull @.str.6) #11 store i64 0, ptr %cursor, align 8 br label %return diff --git a/bench/ruby/optimized/compile.ll b/bench/ruby/optimized/compile.ll index 5729f6d8266..2e72c399f00 100644 --- a/bench/ruby/optimized/compile.ll +++ b/bench/ruby/optimized/compile.ll @@ -84177,17 +84177,16 @@ pm_lookup_local_index.exit196: ; preds = %pm_lookup_local_ind br i1 %exitcond46.not, label %.loopexit1.loopexit, label %32, !llvm.loop !272 .loopexit1.loopexit: ; preds = %.loopexit - %250 = and i8 %.2142, 1 - %251 = zext nneg i8 %250 to i32 + %250 = zext nneg i8 %.2142 to i32 br label %.loopexit1 .loopexit1: ; preds = %.loopexit1.loopexit, %19, %14, %17 %.0143 = phi i8 [ 0, %17 ], [ 0, %14 ], [ %23, %19 ], [ %.2145, %.loopexit1.loopexit ] - %.0140 = phi i32 [ 0, %17 ], [ 0, %14 ], [ 0, %19 ], [ %251, %.loopexit1.loopexit ] + %.0140 = phi i32 [ 0, %17 ], [ 0, %14 ], [ 0, %19 ], [ %250, %.loopexit1.loopexit ] %.0 = phi i32 [ 0, %17 ], [ 0, %14 ], [ 0, %19 ], [ %.2, %.loopexit1.loopexit ] - %252 = and i8 %.0143, 1 - %253 = zext nneg i8 %252 to i32 - %spec.select157 = add i32 %.0, %253 + %251 = and i8 %.0143, 1 + %252 = zext nneg i8 %251 to i32 + %spec.select157 = add i32 %.0, %252 %.4 = add i32 %spec.select157, %.0140 ret i32 %.4 } diff --git a/bench/rust-analyzer-rs/optimized/10elsj6wik4dx3zk.ll b/bench/rust-analyzer-rs/optimized/10elsj6wik4dx3zk.ll index e010a766af2..32923604e64 100644 --- a/bench/rust-analyzer-rs/optimized/10elsj6wik4dx3zk.ll +++ b/bench/rust-analyzer-rs/optimized/10elsj6wik4dx3zk.ll @@ -13800,8 +13800,8 @@ _ZN5serde2de7Visitor9visit_f3217hdb3f2c10284f06f1E.exit: ; preds = %55, %61 %82 = trunc i32 %70 to i8 %83 = and i8 %82, 63 %84 = or disjoint i8 %83, -128 - %.sroa.0.i.1.i.1.i.1..sroa_idx232 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 1 - store i8 %84, ptr %.sroa.0.i.1.i.1.i.1..sroa_idx232, align 1, !alias.scope !4204, !noalias !4201 + %.sroa.0.i.1.i.1.i.1..sroa_idx221 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 1 + store i8 %84, ptr %.sroa.0.i.1.i.1.i.1..sroa_idx221, align 1, !alias.scope !4204, !noalias !4201 br label %_ZN5serde2de7Visitor10visit_char17he662b05e25006de5E.exit 85: ; preds = %74 @@ -13818,8 +13818,8 @@ _ZN5serde2de7Visitor9visit_f3217hdb3f2c10284f06f1E.exit: ; preds = %55, %61 %93 = trunc i32 %70 to i8 %94 = and i8 %93, 63 %95 = or disjoint i8 %94, -128 - %.sroa.0.i.2.i.2.i.2..sroa_idx233 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 2 - store i8 %95, ptr %.sroa.0.i.2.i.2.i.2..sroa_idx233, align 2, !alias.scope !4204, !noalias !4201 + %.sroa.0.i.2.i.2.i.2..sroa_idx222 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 2 + store i8 %95, ptr %.sroa.0.i.2.i.2.i.2..sroa_idx222, align 2, !alias.scope !4204, !noalias !4201 br label %_ZN5serde2de7Visitor10visit_char17he662b05e25006de5E.exit 96: ; preds = %74 @@ -13831,8 +13831,8 @@ _ZN5serde2de7Visitor9visit_f3217hdb3f2c10284f06f1E.exit: ; preds = %55, %61 %101 = trunc i32 %100 to i8 %102 = and i8 %101, 63 %103 = or disjoint i8 %102, -128 - %.sroa.0.i.1.i.1.i.1..sroa_idx231 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 1 - store i8 %103, ptr %.sroa.0.i.1.i.1.i.1..sroa_idx231, align 1, !alias.scope !4204, !noalias !4201 + %.sroa.0.i.1.i.1.i.1..sroa_idx220 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 1 + store i8 %103, ptr %.sroa.0.i.1.i.1.i.1..sroa_idx220, align 1, !alias.scope !4204, !noalias !4201 %104 = lshr i32 %70, 6 %105 = trunc i32 %104 to i8 %106 = and i8 %105, 63 @@ -14000,12 +14000,12 @@ _ZN5serde2de7Visitor10visit_char17he662b05e25006de5E.exit: ; preds = %76, %78, % br i1 %168, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %160, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h2ccf7530aaaa4898E.exit.i" - %.sroa.0.059198 = phi ptr [ %169, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h2ccf7530aaaa4898E.exit.i" ], [ %162, %160 ] - %.sroa.11.0197 = phi i64 [ %170, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h2ccf7530aaaa4898E.exit.i" ], [ 0, %160 ] - %169 = getelementptr inbounds i8, ptr %.sroa.0.059198, i64 32 - %170 = add i64 %.sroa.11.0197, 1 + %.sroa.0.059192 = phi ptr [ %169, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h2ccf7530aaaa4898E.exit.i" ], [ %162, %160 ] + %.sroa.11.0191 = phi i64 [ %170, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h2ccf7530aaaa4898E.exit.i" ], [ 0, %160 ] + %169 = getelementptr inbounds i8, ptr %.sroa.0.059192, i64 32 + %170 = add i64 %.sroa.11.0191, 1 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %4), !noalias !4267 - invoke void @"_ZN106_$LT$serde..__private..de..content..ContentRefDeserializer$LT$E$GT$$u20$as$u20$serde..de..Deserializer$GT$15deserialize_any17h421ffa1b9296fc28E"(ptr noalias nocapture noundef nonnull sret({ i64, [8 x i64] }) align 8 dereferenceable(72) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %.sroa.0.059198) + invoke void @"_ZN106_$LT$serde..__private..de..content..ContentRefDeserializer$LT$E$GT$$u20$as$u20$serde..de..Deserializer$GT$15deserialize_any17h421ffa1b9296fc28E"(ptr noalias nocapture noundef nonnull sret({ i64, [8 x i64] }) align 8 dereferenceable(72) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %.sroa.0.059192) to label %.noexc39 unwind label %174 .noexc39: ; preds = %.lr.ph @@ -14115,7 +14115,6 @@ common.resume: ; preds = %245, %214, %.body.i ._crit_edge: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h2ccf7530aaaa4898E.exit.i", %160 %.sroa.11.0.lcssa = phi i64 [ 0, %160 ], [ %170, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h2ccf7530aaaa4898E.exit.i" ] - %.sroa.0.059.lcssa = phi ptr [ %162, %160 ], [ %169, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h2ccf7530aaaa4898E.exit.i" ] %.sroa.055.0.copyload = load ptr, ptr %7, align 8, !noalias !4263 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.10, ptr noundef nonnull align 8 dereferenceable(16) %166, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !4263 @@ -14125,7 +14124,7 @@ common.resume: ; preds = %245, %214, %.body.i store ptr %.sroa.055.0.copyload, ptr %.sroa.4.0..sroa_idx, align 8, !noalias !4261 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %13, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %.sroa.5.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(56) %.sroa.10, i64 56, i1 false) - %207 = invoke noundef i64 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h82c1873695b690dcE.llvm.15005499655690089915"(ptr noundef nonnull %.sroa.0.059.lcssa, ptr noundef nonnull %165, i64 noundef 0) + %207 = invoke noundef i64 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h82c1873695b690dcE.llvm.15005499655690089915"(ptr noundef nonnull %165, ptr noundef nonnull %165, i64 noundef 0) to label %.noexc unwind label %214 .noexc: ; preds = %._crit_edge diff --git a/bench/rust-analyzer-rs/optimized/3xzp7fojhwn2ktpr.ll b/bench/rust-analyzer-rs/optimized/3xzp7fojhwn2ktpr.ll index c35b275a72b..5cd5aa8ba7a 100644 --- a/bench/rust-analyzer-rs/optimized/3xzp7fojhwn2ktpr.ll +++ b/bench/rust-analyzer-rs/optimized/3xzp7fojhwn2ktpr.ll @@ -1819,7 +1819,7 @@ define void @_ZN10lsp_server3msg7Message5_read17h5b352df54788db57E(ptr noalias n br label %42 42: ; preds = %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hcaa853dd8193a8e7E.exit.thread.i", %3 - %.sroa.023.0.i = phi i64 [ 0, %3 ], [ %.sroa.023.1.i, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hcaa853dd8193a8e7E.exit.thread.i" ] + %.sroa.023.0.i = phi i1 [ false, %3 ], [ %.sroa.023.1.i, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hcaa853dd8193a8e7E.exit.thread.i" ] %.sroa.3.0.i = phi i64 [ undef, %3 ], [ %.sroa.3.1.i, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hcaa853dd8193a8e7E.exit.thread.i" ] store i64 0, ptr %.sroa.553.0..sroa_idx.i, align 8, !noalias !270 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30), !noalias !270 @@ -1880,8 +1880,8 @@ define void @_ZN10lsp_server3msg7Message5_read17h5b352df54788db57E(ptr noalias n store i64 1, ptr %.sroa.5.0..sroa_idx.i, align 8, !noalias !296 %.sroa.7.0..sroa_idx.i = getelementptr inbounds i8, ptr %18, i64 16 store ptr %28, ptr %.sroa.7.0..sroa_idx.i, align 8, !noalias !296 - %.sroa.8138.0..sroa_idx.i = getelementptr inbounds i8, ptr %18, i64 24 - store i64 1, ptr %.sroa.8138.0..sroa_idx.i, align 8, !noalias !296 + %.sroa.8139.0..sroa_idx.i = getelementptr inbounds i8, ptr %18, i64 24 + store i64 1, ptr %.sroa.8139.0..sroa_idx.i, align 8, !noalias !296 %.sroa.10.0..sroa_idx.i = getelementptr inbounds i8, ptr %18, i64 32 store ptr null, ptr %.sroa.10.0..sroa_idx.i, align 8, !noalias !296 invoke void @_ZN5alloc3fmt6format12format_inner17h20bbaee2ca87fbecE(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %29, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %18) @@ -1895,8 +1895,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %61 64: ; preds = %54 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27), !noalias !270 - %switch103.i = icmp eq i64 %.sroa.023.0.i, 0 - br i1 %switch103.i, label %66, label %72 + br i1 %.sroa.023.0.i, label %72, label %66 65: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i.i" store ptr %49, ptr %27, align 8, !noalias !270 @@ -1909,9 +1908,9 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %61 66: ; preds = %64 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17), !noalias !270 %67 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17hbae2052cc9444101E"(i64 noundef 17, i1 noundef zeroext false) - to label %.noexc121.i unwind label %.loopexit.split-lp.i, !noalias !270 + to label %.noexc122.i unwind label %.loopexit.split-lp.i, !noalias !270 -.noexc121.i: ; preds = %66 +.noexc122.i: ; preds = %66 %68 = extractvalue { i64, ptr } %67, 0 %69 = extractvalue { i64, ptr } %67, 1 %70 = icmp ne ptr %69, null @@ -1946,7 +1945,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %61 %.pre.i = load i64, ptr %73, align 8, !noalias !270 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17hd19825e187916615E.exit.i" -78: ; preds = %.noexc121.i +78: ; preds = %.noexc122.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17), !noalias !270 br label %.critedge.i @@ -1961,7 +1960,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %61 85: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17hd19825e187916615E.exit.i" %86 = icmp eq ptr %84, null - br i1 %86, label %87, label %.noexc128.i + br i1 %86, label %87, label %.noexc129.i 87: ; preds = %85 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23), !noalias !270 @@ -2004,39 +2003,39 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %61 100: ; preds = %96 %101 = getelementptr inbounds i8, ptr %16, i64 8 - %.sroa.6162.24.copyload.i = load i64, ptr %101, align 8, !noalias !308 - %.sroa.8163.24..sroa_idx.i = getelementptr inbounds i8, ptr %16, i64 16 - %.sroa.8163.24.copyload.i = load i64, ptr %.sroa.8163.24..sroa_idx.i, align 8, !noalias !308 - %.sroa.0159.0.copyload.i = load i64, ptr %22, align 8, !noalias !310 + %.sroa.6163.24.copyload.i = load i64, ptr %101, align 8, !noalias !308 + %.sroa.8164.24..sroa_idx.i = getelementptr inbounds i8, ptr %16, i64 16 + %.sroa.8164.24.copyload.i = load i64, ptr %.sroa.8164.24..sroa_idx.i, align 8, !noalias !308 + %.sroa.0160.0.copyload.i = load i64, ptr %22, align 8, !noalias !310 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16), !noalias !308 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22), !noalias !270 - %102 = icmp eq i64 %.sroa.0159.0.copyload.i, -9223372036854775808 + %102 = icmp eq i64 %.sroa.0160.0.copyload.i, -9223372036854775808 br i1 %102, label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hc03a730cf482a3f0E.exit.i", label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hc03a730cf482a3f0E.exit.thread.i" "_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hc03a730cf482a3f0E.exit.thread.i": ; preds = %100 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %15), !noalias !312 - store i64 %.sroa.0159.0.copyload.i, ptr %15, align 8, !noalias !316 - %.sroa.6.0..sroa_idx146.i = getelementptr inbounds i8, ptr %15, i64 8 - store i64 %92, ptr %.sroa.6.0..sroa_idx146.i, align 8, !noalias !316 - %.sroa.8148.0..sroa_idx149.i = getelementptr inbounds i8, ptr %15, i64 16 - store ptr %93, ptr %.sroa.8148.0..sroa_idx149.i, align 8, !noalias !316 - %.sroa.9.0..sroa_idx151.i = getelementptr inbounds i8, ptr %15, i64 24 - store i64 %.sroa.6162.24.copyload.i, ptr %.sroa.9.0..sroa_idx151.i, align 8, !noalias !316 - %.sroa.10153.0..sroa_idx154.i = getelementptr inbounds i8, ptr %15, i64 32 - store i64 %.sroa.8163.24.copyload.i, ptr %.sroa.10153.0..sroa_idx154.i, align 8, !noalias !316 + store i64 %.sroa.0160.0.copyload.i, ptr %15, align 8, !noalias !316 + %.sroa.6.0..sroa_idx147.i = getelementptr inbounds i8, ptr %15, i64 8 + store i64 %92, ptr %.sroa.6.0..sroa_idx147.i, align 8, !noalias !316 + %.sroa.8149.0..sroa_idx150.i = getelementptr inbounds i8, ptr %15, i64 16 + store ptr %93, ptr %.sroa.8149.0..sroa_idx150.i, align 8, !noalias !316 + %.sroa.9.0..sroa_idx152.i = getelementptr inbounds i8, ptr %15, i64 24 + store i64 %.sroa.6163.24.copyload.i, ptr %.sroa.9.0..sroa_idx152.i, align 8, !noalias !316 + %.sroa.10154.0..sroa_idx155.i = getelementptr inbounds i8, ptr %15, i64 32 + store i64 %.sroa.8164.24.copyload.i, ptr %.sroa.10154.0..sroa_idx155.i, align 8, !noalias !316 %103 = call noundef nonnull ptr @_ZN3std2io5error5Error3new17hc2a42e52785b0597E(i8 noundef 21, ptr noalias nocapture noundef nonnull align 8 dereferenceable(40) %15), !noalias !270 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %15), !noalias !312 br label %.thread211.i "_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hc03a730cf482a3f0E.exit.i": ; preds = %100, %.thread196.i - %.sroa.9.0164204.i = phi i64 [ %91, %.thread196.i ], [ %.sroa.6162.24.copyload.i, %100 ] - %.sroa.0141.0.i = phi i64 [ %.sroa.6.8.copyload.i, %.thread196.i ], [ %92, %100 ] - %.sroa.5142.0.i = phi ptr [ %89, %.thread196.i ], [ %93, %100 ] - %104 = icmp eq i64 %.sroa.0141.0.i, -9223372036854775808 + %.sroa.9.0165204.i = phi i64 [ %91, %.thread196.i ], [ %.sroa.6163.24.copyload.i, %100 ] + %.sroa.0142.0.i = phi i64 [ %.sroa.6.8.copyload.i, %.thread196.i ], [ %92, %100 ] + %.sroa.5143.0.i = phi ptr [ %89, %.thread196.i ], [ %93, %100 ] + %104 = icmp eq i64 %.sroa.0142.0.i, -9223372036854775808 br i1 %104, label %.thread211.i, label %108 .thread211.i: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hc03a730cf482a3f0E.exit.i", %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hc03a730cf482a3f0E.exit.thread.i" - %.sroa.5142.0210.i = phi ptr [ %103, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hc03a730cf482a3f0E.exit.thread.i" ], [ %.sroa.5142.0.i, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hc03a730cf482a3f0E.exit.i" ] + %.sroa.5143.0210.i = phi ptr [ %103, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hc03a730cf482a3f0E.exit.thread.i" ], [ %.sroa.5143.0.i, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hc03a730cf482a3f0E.exit.i" ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23), !noalias !270 br label %.thread @@ -2047,24 +2046,24 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %61 to label %common.resume unwind label %118, !noalias !270 107: ; preds = %117, %108 - %.sroa.19.0.copyload = phi i64 [ %.sroa.19.0.copyload.pre, %117 ], [ %.sroa.9.0164204.i, %108 ] - %.sroa.11.0.copyload = phi ptr [ %.sroa.11.0.copyload.pre, %117 ], [ %.sroa.5142.0.i, %108 ] - %.sroa.0.0.copyload = phi i64 [ %.sroa.0.0.copyload.pre, %117 ], [ %.sroa.0141.0.i, %108 ] + %.sroa.19.0.copyload = phi i64 [ %.sroa.19.0.copyload.pre, %117 ], [ %.sroa.9.0165204.i, %108 ] + %.sroa.11.0.copyload = phi ptr [ %.sroa.11.0.copyload.pre, %117 ], [ %.sroa.5143.0.i, %108 ] + %.sroa.0.0.copyload = phi i64 [ %.sroa.0.0.copyload.pre, %117 ], [ %.sroa.0142.0.i, %108 ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23), !noalias !270 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24), !noalias !270 br label %_ZN10lsp_server3msg13read_msg_text17hbebe57ac13cd9c4bE.exit 108: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hc03a730cf482a3f0E.exit.i" - store i64 %.sroa.0141.0.i, ptr %23, align 8, !noalias !270 + store i64 %.sroa.0142.0.i, ptr %23, align 8, !noalias !270 %.sroa.440.0..sroa_idx.i = getelementptr inbounds i8, ptr %23, i64 8 - store ptr %.sroa.5142.0.i, ptr %.sroa.440.0..sroa_idx.i, align 8, !noalias !270 + store ptr %.sroa.5143.0.i, ptr %.sroa.440.0..sroa_idx.i, align 8, !noalias !270 %.sroa.541.0..sroa_idx.i = getelementptr inbounds i8, ptr %23, i64 16 - store i64 %.sroa.9.0164204.i, ptr %.sroa.541.0..sroa_idx.i, align 8, !noalias !270 + store i64 %.sroa.9.0165204.i, ptr %.sroa.541.0..sroa_idx.i, align 8, !noalias !270 %109 = load atomic i64, ptr @_ZN3log20MAX_LOG_LEVEL_FILTER17h8181aaeb9cdead2fE monotonic, align 8, !noalias !270 %110 = icmp ult i64 %109, 6 call void @llvm.assume(i1 %110) - %switch.selectcmp108.i = icmp samesign ugt i64 %109, 3 - br i1 %switch.selectcmp108.i, label %111, label %107 + %switch.selectcmp109.i = icmp samesign ugt i64 %109, 3 + br i1 %switch.selectcmp109.i, label %111, label %107 111: ; preds = %108 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %21), !noalias !270 @@ -2099,21 +2098,21 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %61 unreachable .thread: ; preds = %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h6515dcdeb7f45a27E.exit.i", %.thread211.i - %.sroa.11.1 = phi ptr [ %.sroa.5142.0210.i, %.thread211.i ], [ %84, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h6515dcdeb7f45a27E.exit.i" ] + %.sroa.11.1 = phi ptr [ %.sroa.5143.0210.i, %.thread211.i ], [ %84, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h6515dcdeb7f45a27E.exit.i" ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24), !noalias !270 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31), !noalias !270 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) br label %186 -.noexc128.i: ; preds = %85 +.noexc129.i: ; preds = %85 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14), !noalias !323 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h88223068117532dcE.llvm.12355220772335189349"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %14, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %24), !noalias !270 %120 = getelementptr inbounds i8, ptr %14, i64 8 %121 = load i64, ptr %120, align 8, !range !217, !noalias !323, !noundef !12 - %.not.i.i.i127.i = icmp eq i64 %121, 0 - br i1 %.not.i.i.i127.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h6515dcdeb7f45a27E.exit.i", label %122 + %.not.i.i.i128.i = icmp eq i64 %121, 0 + br i1 %.not.i.i.i128.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h6515dcdeb7f45a27E.exit.i", label %122 -122: ; preds = %.noexc128.i +122: ; preds = %.noexc129.i %123 = getelementptr inbounds i8, ptr %14, i64 16 %124 = load i64, ptr %123, align 8, !noalias !323, !noundef !12 %125 = icmp eq i64 %124, 0 @@ -2124,7 +2123,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %61 call void @__rust_dealloc(ptr noundef nonnull %127, i64 noundef %124, i64 noundef %121) #25, !noalias !270 br label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h6515dcdeb7f45a27E.exit.i" -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h6515dcdeb7f45a27E.exit.i": ; preds = %126, %122, %.noexc128.i +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h6515dcdeb7f45a27E.exit.i": ; preds = %126, %122, %.noexc129.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14), !noalias !323 br label %.thread @@ -2175,8 +2174,8 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %61 store ptr @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h90eb11c3f46dacdfE", ptr %143, align 8, !noalias !330 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %11), !noalias !333 store ptr @anon.585b5cbd798993e2d8ebdce45e1754fd.44, ptr %11, align 8, !noalias !344 - %.sroa.5.0..sroa_idx.i129.i = getelementptr inbounds i8, ptr %11, i64 8 - store i64 1, ptr %.sroa.5.0..sroa_idx.i129.i, align 8, !noalias !344 + %.sroa.5.0..sroa_idx.i130.i = getelementptr inbounds i8, ptr %11, i64 8 + store i64 1, ptr %.sroa.5.0..sroa_idx.i130.i, align 8, !noalias !344 %.sroa.7.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %11, i64 16 store ptr %12, ptr %.sroa.7.0..sroa_idx.i.i, align 8, !noalias !344 %.sroa.8.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %11, i64 24 @@ -2184,9 +2183,9 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %61 %.sroa.10.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %11, i64 32 store ptr null, ptr %.sroa.10.0..sroa_idx.i.i, align 8, !noalias !344 invoke void @_ZN5alloc3fmt6format12format_inner17h20bbaee2ca87fbecE(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %13, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %11) - to label %.noexc130.i unwind label %.loopexit.split-lp.i, !noalias !270 + to label %.noexc131.i unwind label %.loopexit.split-lp.i, !noalias !270 -.noexc130.i: ; preds = %142 +.noexc131.i: ; preds = %142 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %11), !noalias !333 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12), !noalias !330 %144 = invoke noundef nonnull ptr @_ZN3std2io5error5Error3new17h535fb90a2a95d008E(i8 noundef 21, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %13) @@ -2207,30 +2206,30 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %61 store ptr getelementptr inbounds (i8, ptr @anon.585b5cbd798993e2d8ebdce45e1754fd.54, i64 14), ptr %40, align 8, !noalias !352 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8), !noalias !355 invoke void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h50e334fa8a4e4d68E.llvm.17977180195277954181"(ptr noalias nocapture noundef nonnull sret({ i64, { i64, [1 x i64] } }) align 8 dereferenceable(24) %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %10) - to label %.noexc133.i unwind label %.loopexit.i, !noalias !270 + to label %.noexc134.i unwind label %.loopexit.i, !noalias !270 -.noexc133.i: ; preds = %148 +.noexc134.i: ; preds = %148 %150 = load i64, ptr %8, align 8, !noalias !355, !noundef !12 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8), !noalias !355 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !358 invoke void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h50e334fa8a4e4d68E.llvm.17977180195277954181"(ptr noalias nocapture noundef nonnull sret({ i64, { i64, [1 x i64] } }) align 8 dereferenceable(24) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %9) - to label %.noexc134.i unwind label %.loopexit.i, !noalias !270 + to label %.noexc135.i unwind label %.loopexit.i, !noalias !270 -.noexc134.i: ; preds = %.noexc133.i +.noexc135.i: ; preds = %.noexc134.i %151 = load i64, ptr %7, align 8, !noalias !358, !noundef !12 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !358 %152 = invoke noundef i64 @_ZN4core3cmp6min_by17hda628e9ff2fdd992E.llvm.1953615252569051166(i64 noundef %150, i64 noundef %151) - to label %.noexc135.i unwind label %.loopexit.i, !noalias !270 + to label %.noexc136.i unwind label %.loopexit.i, !noalias !270 -.noexc135.i: ; preds = %.noexc134.i +.noexc136.i: ; preds = %.noexc135.i %153 = load ptr, ptr %10, align 8, !noalias !352, !nonnull !12, !noundef !12 %154 = load ptr, ptr %9, align 8, !noalias !352, !nonnull !12, !noundef !12 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9), !noalias !345 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10), !noalias !345 br label %155 -155: ; preds = %157, %.noexc135.i - %156 = phi i64 [ %158, %157 ], [ 0, %.noexc135.i ] +155: ; preds = %157, %.noexc136.i + %156 = phi i64 [ %158, %157 ], [ 0, %.noexc136.i ] %exitcond.not.i.i = icmp eq i64 %156, %152 br i1 %exitcond.not.i.i, label %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hcaa853dd8193a8e7E.exit.i", label %157 @@ -2251,12 +2250,12 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %61 %.not.i.i.i = icmp eq i8 %165, %166 br i1 %.not.i.i.i, label %155, label %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hcaa853dd8193a8e7E.exit.thread.i" -167: ; preds = %.noexc130.i +167: ; preds = %.noexc131.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13), !noalias !270 br label %176 "_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hcaa853dd8193a8e7E.exit.thread.i": ; preds = %157, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h35c961e19655ea66E.exit.thread.i", %145 - %.sroa.023.1.i = phi i64 [ 1, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h35c961e19655ea66E.exit.thread.i" ], [ %.sroa.023.0.i, %145 ], [ %.sroa.023.0.i, %157 ] + %.sroa.023.1.i = phi i1 [ true, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h35c961e19655ea66E.exit.thread.i" ], [ %.sroa.023.0.i, %145 ], [ %.sroa.023.0.i, %157 ] %.sroa.3.1.i = phi i64 [ %170, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h35c961e19655ea66E.exit.thread.i" ], [ %.sroa.3.0.i, %145 ], [ %.sroa.3.0.i, %157 ] call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %26), !noalias !270 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27), !noalias !270 @@ -2269,8 +2268,8 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %61 168: ; preds = %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hcaa853dd8193a8e7E.exit.i" %169 = load i8, ptr %25, align 8, !range !80, !alias.scope !364, !noalias !367, !noundef !12 - %trunc.i136.i = trunc nuw i8 %169 to i1 - br i1 %trunc.i136.i, label %171, label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h35c961e19655ea66E.exit.thread.i" + %trunc.i137.i = trunc nuw i8 %169 to i1 + br i1 %trunc.i137.i, label %171, label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h35c961e19655ea66E.exit.thread.i" "_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h35c961e19655ea66E.exit.thread.i": ; preds = %168 %170 = load i64, ptr %41, align 8, !alias.scope !364, !noalias !367, !noundef !12 @@ -2322,12 +2321,12 @@ common.resume: ; preds = %190, %94, %105, %12 %common.resume.op = phi { ptr, i32 } [ %lpad.phi.i, %185 ], [ %lpad.thr_comm190.i, %128 ], [ %95, %94 ], [ %106, %105 ], [ %191, %190 ] resume { ptr, i32 } %common.resume.op -.loopexit.i: ; preds = %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hcaa853dd8193a8e7E.exit.i", %.noexc134.i, %.noexc133.i, %148, %136, %129, %65, %42 +.loopexit.i: ; preds = %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hcaa853dd8193a8e7E.exit.i", %.noexc135.i, %.noexc134.i, %148, %136, %129, %65, %42 %lpad.loopexit.i = landingpad { ptr, i32 } cleanup br label %185 -.loopexit.split-lp.i: ; preds = %171, %.noexc130.i, %142, %135, %.noexc121.i, %66, %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i, %61, %60 +.loopexit.split-lp.i: ; preds = %171, %.noexc131.i, %142, %135, %.noexc122.i, %66, %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i, %61, %60 %lpad.loopexit.split-lp.i = landingpad { ptr, i32 } cleanup br label %185 diff --git a/bench/stb/optimized/stb_image.c.ll b/bench/stb/optimized/stb_image.c.ll index a25300f66f1..b7c3af18183 100644 --- a/bench/stb/optimized/stb_image.c.ll +++ b/bench/stb/optimized/stb_image.c.ll @@ -4762,7 +4762,7 @@ if.end153.us: ; preds = %if.then145.us, %if. for.inc241.us: ; preds = %for.body229.us %indvars.iv.next317 = add nuw nsw i64 %indvars.iv316, 1 %exitcond321.not = icmp eq i64 %indvars.iv.next317, %wide.trip.count320 - br i1 %exitcond321.not, label %if.then245, label %for.body108.us, !llvm.loop !30 + br i1 %exitcond321.not, label %for.end243, label %for.body108.us, !llvm.loop !30 for.body229.us: ; preds = %for.body229.lr.ph.us, %for.body229.us %indvars.iv308 = phi i64 [ 0, %for.body229.lr.ph.us ], [ %indvars.iv.next309, %for.body229.us ] @@ -4771,7 +4771,7 @@ for.body229.us: ; preds = %for.body229.lr.ph.u %add.ptr234.us = getelementptr inbounds float, ptr %call74, i64 %20 %21 = shl nsw i64 %indvars.iv308, 2 %add.ptr237.us = getelementptr inbounds i8, ptr %scanline.1.us, i64 %21 - call void @stbi__hdr_convert(ptr noundef nonnull %add.ptr234.us, ptr noundef nonnull %add.ptr237.us, i32 noundef %spec.store.select) + call void @stbi__hdr_convert(ptr noundef nonnull %add.ptr234.us, ptr noundef %add.ptr237.us, i32 noundef %spec.store.select) %indvars.iv.next309 = add nuw nsw i64 %indvars.iv308, 1 %exitcond315.not = icmp eq i64 %indvars.iv.next309, %wide.trip.count314 br i1 %exitcond315.not, label %for.inc241.us, label %for.body229.us, !llvm.loop !31 @@ -5220,24 +5220,28 @@ if.then148: ; preds = %if.then145.us if.then178: ; preds = %stbi__get8.exit145.us.us call void @free(ptr noundef %call74) #37 - call void @free(ptr noundef nonnull %scanline.1.us) #37 + call void @free(ptr noundef %scanline.1.us) #37 %80 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @stbi__g_failure_reason) store ptr @.str.87, ptr %80, align 8 br label %return if.then202: ; preds = %if.else194.us.us, %if.end.i106.us.us call void @free(ptr noundef %call74) #37 - call void @free(ptr noundef nonnull %scanline.1.us) #37 + call void @free(ptr noundef %scanline.1.us) #37 %81 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @stbi__g_failure_reason) store ptr @.str.87, ptr %81, align 8 br label %return -if.then245: ; preds = %for.inc241.us +for.end243: ; preds = %for.inc241.us + %tobool244.not = icmp eq ptr %scanline.1.us, null + br i1 %tobool244.not, label %return, label %if.then245 + +if.then245: ; preds = %for.end243 call void @free(ptr noundef nonnull %scanline.1.us) #37 br label %return -return: ; preds = %for.cond105.preheader, %for.cond86, %if.then245, %if.then202, %if.then178, %if.then148, %if.then138, %if.then76, %if.then69, %if.then55, %if.then48, %if.then38, %if.then26, %if.then17, %if.then - %retval.0 = phi ptr [ null, %if.then ], [ null, %if.then26 ], [ null, %if.then38 ], [ null, %if.then48 ], [ null, %if.then55 ], [ null, %if.then138 ], [ null, %if.then178 ], [ null, %if.then202 ], [ null, %if.then148 ], [ null, %if.then76 ], [ null, %if.then69 ], [ null, %if.then17 ], [ %call74, %if.then245 ], [ %call74, %for.cond86 ], [ %call74, %for.cond105.preheader ] +return: ; preds = %for.cond105.preheader, %for.cond86, %if.then245, %for.end243, %if.then202, %if.then178, %if.then148, %if.then138, %if.then76, %if.then69, %if.then55, %if.then48, %if.then38, %if.then26, %if.then17, %if.then + %retval.0 = phi ptr [ null, %if.then ], [ null, %if.then26 ], [ null, %if.then38 ], [ null, %if.then48 ], [ null, %if.then55 ], [ null, %if.then138 ], [ null, %if.then178 ], [ null, %if.then202 ], [ null, %if.then148 ], [ null, %if.then76 ], [ null, %if.then69 ], [ null, %if.then17 ], [ %call74, %for.end243 ], [ %call74, %if.then245 ], [ %call74, %for.cond86 ], [ %call74, %for.cond105.preheader ] ret ptr %retval.0 } diff --git a/bench/stb/optimized/stb_rect_pack.c.ll b/bench/stb/optimized/stb_rect_pack.c.ll index 0e79ad5a3ae..17fb1f2e781 100644 --- a/bench/stb/optimized/stb_rect_pack.c.ll +++ b/bench/stb/optimized/stb_rect_pack.c.ll @@ -307,41 +307,12 @@ stbrp__skyline_find_min_y.exit.loopexit.us: ; preds = %if.end31.i.us br i1 %cmp13, label %if.then14.us, label %if.else.us while.body.lr.ph.split: ; preds = %while.body.lr.ph - br i1 %cmp13, label %cond.false, label %while.body - -while.body: ; preds = %while.body.lr.ph.split, %if.end29 - %node.0111 = phi ptr [ %node.0, %if.end29 ], [ %node.0104, %while.body.lr.ph.split ] - %best.0110 = phi ptr [ %best.1, %if.end29 ], [ null, %while.body.lr.ph.split ] - %prev.0109 = phi ptr [ %next, %if.end29 ], [ %active_head, %while.body.lr.ph.split ] - %best_y.0108 = phi i32 [ %best_y.1, %if.end29 ], [ 1073741824, %while.body.lr.ph.split ] - %best_waste.0107 = phi i32 [ %best_waste.1, %if.end29 ], [ 1073741824, %while.body.lr.ph.split ] - %cmp22 = icmp sgt i32 %best_y.0108, 0 - br i1 %cmp22, label %if.then26, label %lor.lhs.false23 - -lor.lhs.false23: ; preds = %while.body - %cmp24 = icmp eq i32 %best_y.0108, 0 - %cmp25 = icmp sgt i32 %best_waste.0107, 0 - %or.cond = select i1 %cmp24, i1 %cmp25, i1 false - br i1 %or.cond, label %if.then26, label %if.end29 - -if.then26: ; preds = %lor.lhs.false23, %while.body - br label %if.end29 - -if.end29: ; preds = %if.then26, %lor.lhs.false23 - %best_waste.1 = phi i32 [ 0, %if.then26 ], [ %best_waste.0107, %lor.lhs.false23 ] - %best_y.1 = phi i32 [ 0, %if.then26 ], [ %best_y.0108, %lor.lhs.false23 ] - %best.1 = phi ptr [ %prev.0109, %if.then26 ], [ %best.0110, %lor.lhs.false23 ] - %next = getelementptr inbounds i8, ptr %node.0111, i64 8 - %node.0 = load ptr, ptr %next, align 8 - %15 = load i32, ptr %node.0, align 8 - %add8 = add nsw i32 %15, %sub2 - %cmp10.not = icmp sgt i32 %add8, %1 - br i1 %cmp10.not, label %while.end, label %while.body, !llvm.loop !7 - -while.end: ; preds = %if.end29, %if.end29.us - %best_waste.0.lcssa = phi i32 [ %best_waste.1.us, %if.end29.us ], [ %best_waste.1, %if.end29 ] - %best_y.0.lcssa = phi i32 [ %best_y.1.us, %if.end29.us ], [ %best_y.1, %if.end29 ] - %best.0.lcssa = phi ptr [ %best.1.us, %if.end29.us ], [ %best.1, %if.end29 ] + br i1 %cmp13, label %cond.false, label %while.end + +while.end: ; preds = %if.end29.us, %while.body.lr.ph.split + %best_waste.0.lcssa = phi i32 [ 0, %while.body.lr.ph.split ], [ %best_waste.1.us, %if.end29.us ] + %best_y.0.lcssa = phi i32 [ 0, %while.body.lr.ph.split ], [ %best_y.1.us, %if.end29.us ] + %best.0.lcssa = phi ptr [ %active_head, %while.body.lr.ph.split ], [ %best.1.us, %if.end29.us ] %cmp31 = icmp eq ptr %best.0.lcssa, null br i1 %cmp31, label %cond.end, label %cond.false @@ -349,18 +320,18 @@ cond.false: ; preds = %while.body.lr.ph.sp %best.0.lcssa188 = phi ptr [ %best.0.lcssa, %while.end ], [ %active_head, %while.body.lr.ph.split ] %best_y.0.lcssa187 = phi i32 [ %best_y.0.lcssa, %while.end ], [ 0, %while.body.lr.ph.split ] %best_waste.0.lcssa186 = phi i32 [ %best_waste.0.lcssa, %while.end ], [ 1073741824, %while.body.lr.ph.split ] - %16 = load ptr, ptr %best.0.lcssa188, align 8 - %17 = load i32, ptr %16, align 8 + %15 = load ptr, ptr %best.0.lcssa188, align 8 + %16 = load i32, ptr %15, align 8 br label %cond.end cond.end: ; preds = %if.end, %while.end, %cond.false %best.0.lcssa180 = phi ptr [ %best.0.lcssa188, %cond.false ], [ null, %while.end ], [ null, %if.end ] %best_y.0.lcssa179 = phi i32 [ %best_y.0.lcssa187, %cond.false ], [ %best_y.0.lcssa, %while.end ], [ 1073741824, %if.end ] %best_waste.0.lcssa178 = phi i32 [ %best_waste.0.lcssa186, %cond.false ], [ %best_waste.0.lcssa, %while.end ], [ 1073741824, %if.end ] - %cond = phi i32 [ %17, %cond.false ], [ 0, %while.end ], [ 0, %if.end ] + %cond = phi i32 [ %16, %cond.false ], [ 0, %while.end ], [ 0, %if.end ] %heuristic33 = getelementptr inbounds i8, ptr %c, i64 16 - %18 = load i32, ptr %heuristic33, align 8 - %cmp34 = icmp eq i32 %18, 1 + %17 = load i32, ptr %heuristic33, align 8 + %cmp34 = icmp eq i32 %17, 1 br i1 %cmp34, label %if.then35, label %if.end79 if.then35: ; preds = %cond.end @@ -368,93 +339,93 @@ if.then35: ; preds = %cond.end br i1 %cmp41161, label %while.body42, label %while.body46.preheader while.body42: ; preds = %if.then35, %while.body42 - %tail.0162 = phi ptr [ %19, %while.body42 ], [ %node.0104, %if.then35 ] + %tail.0162 = phi ptr [ %18, %while.body42 ], [ %node.0104, %if.then35 ] %next43 = getelementptr inbounds i8, ptr %tail.0162, i64 8 - %19 = load ptr, ptr %next43, align 8 - %20 = load i32, ptr %19, align 8 - %cmp41 = icmp slt i32 %20, %sub2 + %18 = load ptr, ptr %next43, align 8 + %19 = load i32, ptr %18, align 8 + %cmp41 = icmp slt i32 %19, %sub2 br i1 %cmp41, label %while.body42, label %while.body46.preheader, !llvm.loop !8 while.body46.preheader: ; preds = %while.body42, %if.then35 - %tail.1169.ph = phi ptr [ %node.0104, %if.then35 ], [ %19, %while.body42 ] + %tail.1169.ph = phi ptr [ %node.0104, %if.then35 ], [ %18, %while.body42 ] br label %while.body46 while.body46: ; preds = %while.body46.preheader, %if.end76 %best.3170 = phi ptr [ %best.4, %if.end76 ], [ %best.0.lcssa180, %while.body46.preheader ] - %tail.1169 = phi ptr [ %33, %if.end76 ], [ %tail.1169.ph, %while.body46.preheader ] + %tail.1169 = phi ptr [ %32, %if.end76 ], [ %tail.1169.ph, %while.body46.preheader ] %node.1168 = phi ptr [ %node.2, %if.end76 ], [ %node.0104, %while.body46.preheader ] %prev.1167 = phi ptr [ %prev.2, %if.end76 ], [ %active_head, %while.body46.preheader ] %best_y.3166 = phi i32 [ %best_y.4, %if.end76 ], [ %best_y.0.lcssa179, %while.body46.preheader ] %best_x.1165 = phi i32 [ %best_x.2, %if.end76 ], [ %cond, %while.body46.preheader ] %best_waste.2164 = phi i32 [ %best_waste.3, %if.end76 ], [ %best_waste.0.lcssa178, %while.body46.preheader ] - %21 = load i32, ptr %tail.1169, align 8 - %sub48 = sub nsw i32 %21, %sub2 + %20 = load i32, ptr %tail.1169, align 8 + %sub48 = sub nsw i32 %20, %sub2 br label %while.cond51 while.cond51: ; preds = %while.cond51, %while.body46 %prev.2 = phi ptr [ %prev.1167, %while.body46 ], [ %next52, %while.cond51 ] - %node.2 = phi ptr [ %node.1168, %while.body46 ], [ %22, %while.cond51 ] + %node.2 = phi ptr [ %node.1168, %while.body46 ], [ %21, %while.cond51 ] %next52 = getelementptr inbounds i8, ptr %node.2, i64 8 - %22 = load ptr, ptr %next52, align 8 - %23 = load i32, ptr %22, align 8 - %cmp54.not = icmp sgt i32 %23, %sub48 + %21 = load ptr, ptr %next52, align 8 + %22 = load i32, ptr %21, align 8 + %cmp54.not = icmp sgt i32 %22, %sub48 br i1 %cmp54.not, label %while.end58, label %while.cond51, !llvm.loop !9 while.end58: ; preds = %while.cond51 - %24 = load i32, ptr %node.2, align 8 - %cmp29.i65 = icmp slt i32 %24, %21 + %23 = load i32, ptr %node.2, align 8 + %cmp29.i65 = icmp slt i32 %23, %20 br i1 %cmp29.i65, label %while.body.i68, label %stbrp__skyline_find_min_y.exit100 while.body.i68: ; preds = %while.end58, %if.end31.i84 - %25 = phi i32 [ %31, %if.end31.i84 ], [ %24, %while.end58 ] + %24 = phi i32 [ %30, %if.end31.i84 ], [ %23, %while.end58 ] %waste_area.033.i69 = phi i32 [ %waste_area.1.i88, %if.end31.i84 ], [ 0, %while.end58 ] %visited_width.032.i70 = phi i32 [ %visited_width.1.i89, %if.end31.i84 ], [ 0, %while.end58 ] %min_y.031.i71 = phi i32 [ %min_y.1.i85, %if.end31.i84 ], [ 0, %while.end58 ] - %node.030.i72 = phi ptr [ %32, %if.end31.i84 ], [ %node.2, %while.end58 ] + %node.030.i72 = phi ptr [ %31, %if.end31.i84 ], [ %node.2, %while.end58 ] %y.i73 = getelementptr inbounds i8, ptr %node.030.i72, i64 4 - %26 = load i32, ptr %y.i73, align 4 - %cmp1.i74 = icmp sgt i32 %26, %min_y.031.i71 + %25 = load i32, ptr %y.i73, align 4 + %cmp1.i74 = icmp sgt i32 %25, %min_y.031.i71 br i1 %cmp1.i74, label %if.then.i91, label %if.else16.i75 if.then.i91: ; preds = %while.body.i68 - %sub.i92 = sub nsw i32 %26, %min_y.031.i71 + %sub.i92 = sub nsw i32 %25, %min_y.031.i71 %mul.i93 = mul nsw i32 %sub.i92, %visited_width.032.i70 - %cmp6.i94 = icmp slt i32 %25, %sub48 + %cmp6.i94 = icmp slt i32 %24, %sub48 %next.i95 = getelementptr inbounds i8, ptr %node.030.i72, i64 8 - %27 = load ptr, ptr %next.i95, align 8 - %28 = load i32, ptr %27, align 8 + %26 = load ptr, ptr %next.i95, align 8 + %27 = load i32, ptr %26, align 8 br i1 %cmp6.i94, label %if.then7.i98, label %if.else.i96 if.then7.i98: ; preds = %if.then.i91 - %sub9.i99 = sub nsw i32 %28, %sub48 + %sub9.i99 = sub nsw i32 %27, %sub48 br label %if.end31.i84 if.else.i96: ; preds = %if.then.i91 - %sub14.i97 = sub nsw i32 %28, %25 + %sub14.i97 = sub nsw i32 %27, %24 br label %if.end31.i84 if.else16.i75: ; preds = %while.body.i68 %next17.i76 = getelementptr inbounds i8, ptr %node.030.i72, i64 8 - %29 = load ptr, ptr %next17.i76, align 8 - %30 = load i32, ptr %29, align 8 - %sub20.i77 = sub nsw i32 %30, %25 + %28 = load ptr, ptr %next17.i76, align 8 + %29 = load i32, ptr %28, align 8 + %sub20.i77 = sub nsw i32 %29, %24 %add21.i78 = add nsw i32 %sub20.i77, %visited_width.032.i70 %cmp22.i79 = icmp sgt i32 %add21.i78, %sub2 %sub24.i80 = sub nsw i32 %sub2, %visited_width.032.i70 %spec.select.i81 = select i1 %cmp22.i79, i32 %sub24.i80, i32 %sub20.i77 - %sub27.i82 = sub nsw i32 %min_y.031.i71, %26 + %sub27.i82 = sub nsw i32 %min_y.031.i71, %25 %mul28.i83 = mul nsw i32 %spec.select.i81, %sub27.i82 br label %if.end31.i84 if.end31.i84: ; preds = %if.else16.i75, %if.else.i96, %if.then7.i98 - %31 = phi i32 [ %28, %if.then7.i98 ], [ %28, %if.else.i96 ], [ %30, %if.else16.i75 ] - %32 = phi ptr [ %27, %if.then7.i98 ], [ %27, %if.else.i96 ], [ %29, %if.else16.i75 ] - %min_y.1.i85 = phi i32 [ %26, %if.then7.i98 ], [ %26, %if.else.i96 ], [ %min_y.031.i71, %if.else16.i75 ] + %30 = phi i32 [ %27, %if.then7.i98 ], [ %27, %if.else.i96 ], [ %29, %if.else16.i75 ] + %31 = phi ptr [ %26, %if.then7.i98 ], [ %26, %if.else.i96 ], [ %28, %if.else16.i75 ] + %min_y.1.i85 = phi i32 [ %25, %if.then7.i98 ], [ %25, %if.else.i96 ], [ %min_y.031.i71, %if.else16.i75 ] %sub9.pn.i86 = phi i32 [ %sub9.i99, %if.then7.i98 ], [ %sub14.i97, %if.else.i96 ], [ %spec.select.i81, %if.else16.i75 ] %mul.pn.i87 = phi i32 [ %mul.i93, %if.then7.i98 ], [ %mul.i93, %if.else.i96 ], [ %mul28.i83, %if.else16.i75 ] %waste_area.1.i88 = add nsw i32 %mul.pn.i87, %waste_area.033.i69 %visited_width.1.i89 = add nsw i32 %sub9.pn.i86, %visited_width.032.i70 - %cmp.i90 = icmp slt i32 %31, %21 + %cmp.i90 = icmp slt i32 %30, %20 br i1 %cmp.i90, label %while.body.i68, label %stbrp__skyline_find_min_y.exit100, !llvm.loop !6 stbrp__skyline_find_min_y.exit100: ; preds = %if.end31.i84, %while.end58 @@ -487,23 +458,23 @@ if.end76: ; preds = %if.then73, %lor.lhs %best_y.4 = phi i32 [ %min_y.0.lcssa.i66, %if.then73 ], [ %best_y.3166, %lor.lhs.false69 ], [ %best_y.3166, %stbrp__skyline_find_min_y.exit100 ] %best.4 = phi ptr [ %prev.2, %if.then73 ], [ %best.3170, %lor.lhs.false69 ], [ %best.3170, %stbrp__skyline_find_min_y.exit100 ] %next77 = getelementptr inbounds i8, ptr %tail.1169, i64 8 - %33 = load ptr, ptr %next77, align 8 - %tobool.not = icmp eq ptr %33, null + %32 = load ptr, ptr %next77, align 8 + %tobool.not = icmp eq ptr %32, null br i1 %tobool.not, label %if.end79, label %while.body46, !llvm.loop !10 if.end79: ; preds = %if.end76, %cond.end %best_x.0 = phi i32 [ %cond, %cond.end ], [ %best_x.2, %if.end76 ] %best_y.2 = phi i32 [ %best_y.0.lcssa179, %cond.end ], [ %best_y.4, %if.end76 ] %best.2 = phi ptr [ %best.0.lcssa180, %cond.end ], [ %best.4, %if.end76 ] - %34 = zext i32 %best_y.2 to i64 - %35 = shl nuw i64 %34, 32 - %36 = zext i32 %best_x.0 to i64 - %37 = or disjoint i64 %35, %36 + %33 = zext i32 %best_y.2 to i64 + %34 = shl nuw i64 %33, 32 + %35 = zext i32 %best_x.0 to i64 + %36 = or disjoint i64 %34, %35 br label %return return: ; preds = %entry, %lor.lhs.false, %if.end79 %retval.sroa.5.0 = phi ptr [ %best.2, %if.end79 ], [ null, %lor.lhs.false ], [ null, %entry ] - %retval.sroa.0.0.insert.insert = phi i64 [ %37, %if.end79 ], [ 0, %lor.lhs.false ], [ 0, %entry ] + %retval.sroa.0.0.insert.insert = phi i64 [ %36, %if.end79 ], [ 0, %lor.lhs.false ], [ 0, %entry ] %.fca.0.insert = insertvalue { i64, ptr } poison, i64 %retval.sroa.0.0.insert.insert, 0 %.fca.1.insert = insertvalue { i64, ptr } %.fca.0.insert, ptr %retval.sroa.5.0, 1 ret { i64, ptr } %.fca.1.insert diff --git a/bench/stb/optimized/stb_vorbis.c.ll b/bench/stb/optimized/stb_vorbis.c.ll index 41299e75710..45f32c4141a 100644 --- a/bench/stb/optimized/stb_vorbis.c.ll +++ b/bench/stb/optimized/stb_vorbis.c.ll @@ -1689,7 +1689,7 @@ if.end: ; preds = %if.then, %land.lhs. %conv16.pre-phi = phi i32 [ %conv13, %if.then ], [ %conv, %land.lhs.true ], [ %conv, %for.body ] %4 = phi i16 [ %3, %if.then ], [ %0, %land.lhs.true ], [ %0, %for.body ] %low.1 = phi i32 [ %conv13, %if.then ], [ %low.020, %land.lhs.true ], [ %low.020, %for.body ] - %cmp17 = icmp sgt i32 %high.021, %conv16.pre-phi + %cmp17 = icmp ugt i32 %high.021, %conv16.pre-phi br i1 %cmp17, label %land.lhs.true19, label %for.inc land.lhs.true19: ; preds = %if.end @@ -6617,7 +6617,7 @@ for.cond40.preheader: ; preds = %for.end %idxprom44 = sext i32 %ly.0.lcssa to i64 %arrayidx45 = getelementptr inbounds [256 x float], ptr @inverse_db_table, i64 0, i64 %idxprom44 %15 = zext nneg i32 %lx.0.lcssa to i64 - %wide.trip.count = sext i32 %shr to i64 + %wide.trip.count = zext i32 %shr to i64 br label %for.body43 for.body43: ; preds = %for.cond40.preheader, %for.body43 @@ -8111,6 +8111,7 @@ for.body465.lr.ph: ; preds = %for.cond461.prehead %submap_floor.i = getelementptr inbounds i8, ptr %arrayidx3, i64 17 %floor_types.i = getelementptr inbounds i8, ptr %f, i64 196 %floor_config.i = getelementptr inbounds i8, ptr %f, i64 328 + %wide.trip.count.i461 = zext i32 %shr to i64 %error.i.i472 = getelementptr inbounds i8, ptr %f, i64 156 br label %for.body465 @@ -8231,7 +8232,7 @@ for.body43.i: ; preds = %for.body43.i, %for. %mul48.i = fmul float %160, %161 store float %mul48.i, ptr %arrayidx47.i, align 4 %indvars.iv.next36.i = add nuw nsw i64 %indvars.iv35.i, 1 - %exitcond.not.i462 = icmp eq i64 %indvars.iv.next36.i, %conv473 + %exitcond.not.i462 = icmp eq i64 %indvars.iv.next36.i, %wide.trip.count.i461 br i1 %exitcond.not.i462, label %for.inc484, label %for.body43.i, !llvm.loop !66 for.inc484: ; preds = %for.body43.i, %for.end.i458, %if.then.i, %if.then469 @@ -10620,7 +10621,7 @@ land.lhs.true.i: ; preds = %for.body.i1004 if.end.i1008: ; preds = %land.lhs.true.i, %for.body.i1004 %low.1 = phi i8 [ %low.0, %for.body.i1004 ], [ %spec.select1044, %land.lhs.true.i ] %low.1.i = phi i32 [ %low.020.i, %for.body.i1004 ], [ %spec.select1045, %land.lhs.true.i ] - %cmp17.i = icmp sgt i32 %high.021.i, %conv.i1007 + %cmp17.i = icmp ugt i32 %high.021.i, %conv.i1007 br i1 %cmp17.i, label %land.lhs.true19.i, label %for.inc.i land.lhs.true19.i: ; preds = %if.end.i1008 @@ -16741,7 +16742,7 @@ if.then24: ; preds = %if.end17 %mul25 = shl nsw i32 %total.046, 1 %conv26 = sext i32 %mul25 to i64 %mul27 = shl nsw i64 %conv26, 1 - %call28 = call ptr @realloc(ptr noundef %data.047, i64 noundef %mul27) #37 + %call28 = call ptr @realloc(ptr noundef nonnull %data.047, i64 noundef %mul27) #37 %cmp29 = icmp eq ptr %call28, null br i1 %cmp29, label %if.end.i29, label %if.then24.if.end33_crit_edge @@ -16764,7 +16765,7 @@ if.end33: ; preds = %if.then24.if.end33_ %idx.ext = sext i32 %add20 to i64 %add.ptr = getelementptr inbounds i16, ptr %data.1, i64 %idx.ext %sub = sub nsw i32 %total.1, %add20 - %call13 = call i32 @stb_vorbis_get_frame_short_interleaved(ptr noundef nonnull %call7.i.i, i32 noundef %6, ptr noundef %add.ptr, i32 noundef %sub) + %call13 = call i32 @stb_vorbis_get_frame_short_interleaved(ptr noundef nonnull %call7.i.i, i32 noundef %6, ptr noundef nonnull %add.ptr, i32 noundef %sub) %cmp14 = icmp eq i32 %call13, 0 br i1 %cmp14, label %if.end.i35, label %if.end17 @@ -16850,7 +16851,7 @@ if.then24: ; preds = %if.end17 %mul25 = shl nsw i32 %total.043, 1 %conv26 = sext i32 %mul25 to i64 %mul27 = shl nsw i64 %conv26, 1 - %call28 = call ptr @realloc(ptr noundef %data.044, i64 noundef %mul27) #37 + %call28 = call ptr @realloc(ptr noundef nonnull %data.044, i64 noundef %mul27) #37 %cmp29 = icmp eq ptr %call28, null br i1 %cmp29, label %if.end.i28, label %if.then24.if.end33_crit_edge @@ -16873,7 +16874,7 @@ if.end33: ; preds = %if.then24.if.end33_ %idx.ext = sext i32 %add20 to i64 %add.ptr = getelementptr inbounds i16, ptr %data.1, i64 %idx.ext %sub = sub nsw i32 %total.1, %add20 - %call13 = call i32 @stb_vorbis_get_frame_short_interleaved(ptr noundef nonnull %call, i32 noundef %6, ptr noundef %add.ptr, i32 noundef %sub) + %call13 = call i32 @stb_vorbis_get_frame_short_interleaved(ptr noundef nonnull %call, i32 noundef %6, ptr noundef nonnull %add.ptr, i32 noundef %sub) %cmp14 = icmp eq i32 %call13, 0 br i1 %cmp14, label %if.end.i34, label %if.end17 diff --git a/bench/vcpkg/optimized/dependencies.cpp.ll b/bench/vcpkg/optimized/dependencies.cpp.ll index a811905ec89..80ed682c7c3 100644 --- a/bench/vcpkg/optimized/dependencies.cpp.ll +++ b/bench/vcpkg/optimized/dependencies.cpp.ll @@ -8093,7 +8093,7 @@ _ZNSt3setIN5vcpkg11PackageSpecESt4lessIS1_ESaIS1_EE4findERKS1_.exit: ; preds = % br i1 %56, label %_ZNSt3setIN5vcpkg11PackageSpecESt4lessIS1_ESaIS1_EE4findERKS1_.exit.thread, label %57 57: ; preds = %_ZNSt3setIN5vcpkg11PackageSpecESt4lessIS1_ESaIS1_EE4findERKS1_.exit - %58 = call noundef nonnull ptr @_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_(ptr noundef %.19.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %32) #26 + %58 = call noundef nonnull ptr @_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_(ptr noundef nonnull %.19.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %32) #26 %59 = getelementptr inbounds i8, ptr %58, i64 32 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(40) %59) #26 call void @_ZdlPv(ptr noundef nonnull %58) #27 @@ -32700,7 +32700,7 @@ common.resume.i.i: ; preds = %.loopexit.split-lp. %137 = getelementptr i8, ptr %133, i64 24 %.val10.i.i.i = load ptr, ptr %137, align 8 %138 = icmp eq ptr %.val10.i.i.i, null - br i1 %138, label %.thread.i.i, label %171 + br i1 %138, label %.thread.i.i, label %.thread.i.i.thread 139: ; preds = %.noexc12.i.i %.02426.i13.i.i.i = load ptr, ptr %4, align 8 @@ -32813,9 +32813,9 @@ common.resume.i.i: ; preds = %.loopexit.split-lp. .noexc18.i.i: ; preds = %168 br i1 %170, label %.thread.i.i, label %.thread36.i.i -171: ; preds = %158, %150, %136, %128, %113 - %.sroa.075.0.i.i.i = phi ptr [ null, %113 ], [ %130, %128 ], [ null, %150 ], [ %.08.lcssa.i.i.i27, %136 ], [ %155, %158 ] - %.sroa.12.0.i.i.i = phi ptr [ %114, %113 ], [ %130, %128 ], [ %152, %150 ], [ %.08.lcssa.i.i.i27, %136 ], [ %155, %158 ] +171: ; preds = %158, %150, %128, %113 + %.sroa.075.0.i.i.i = phi ptr [ null, %113 ], [ %130, %128 ], [ null, %150 ], [ %155, %158 ] + %.sroa.12.0.i.i.i = phi ptr [ %114, %113 ], [ %130, %128 ], [ %152, %150 ], [ %155, %158 ] %.not.i.i = icmp eq ptr %.sroa.12.0.i.i.i, null br i1 %.not.i.i, label %.thread36.i.i, label %.thread.i.i @@ -32825,12 +32825,12 @@ common.resume.i.i: ; preds = %.loopexit.split-lp. %.not.i.i19.i.i = icmp ne ptr %.sroa.075.0.i32.i.i, null %172 = icmp eq ptr %.sroa.12.0.i33.i.i, %5 %or.cond.i.i.i.i = select i1 %.not.i.i19.i.i, i1 true, i1 %172 - br i1 %or.cond.i.i.i.i, label %176, label %173 + br i1 %or.cond.i.i.i.i, label %.thread.i.i.thread, label %173 173: ; preds = %.thread.i.i %174 = getelementptr inbounds i8, ptr %.sroa.12.0.i33.i.i, i64 32 %175 = invoke noundef zeroext i1 @_ZNK5vcpkg11PackageSpecltERKS0_(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(40) %174) - to label %176 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.i + to label %.thread.i.i.thread unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.i .loopexit.i.i: ; preds = %.lr.ph.i.i.i.i %lpad.loopexit.i.i = landingpad { ptr, i32 } @@ -32857,25 +32857,26 @@ common.resume.i.i: ; preds = %.loopexit.split-lp. tail call fastcc void @_ZNSt8_Rb_treeIN5vcpkg11PackageSpecESt4pairIKS1_NS0_12_GLOBAL__N_121VersionedPackageGraph15PackageNodeDataEESt10_Select1stIS7_ESt4lessIS1_ESaIS7_EE10_Auto_nodeD2Ev(ptr nonnull %13) #26 br label %common.resume.i.i -176: ; preds = %173, %.thread.i.i - %177 = phi i1 [ true, %.thread.i.i ], [ %175, %173 ] - tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %177, ptr noundef nonnull %13, ptr noundef nonnull %.sroa.12.0.i33.i.i, ptr noundef nonnull align 8 dereferenceable(32) %5) #26 - %178 = getelementptr inbounds i8, ptr %0, i64 40 - %179 = load i64, ptr %178, align 8 - %180 = add i64 %179, 1 - store i64 %180, ptr %178, align 8 +.thread.i.i.thread: ; preds = %136, %173, %.thread.i.i + %.sroa.12.0.i33.i.i35 = phi ptr [ %.sroa.12.0.i33.i.i, %.thread.i.i ], [ %.sroa.12.0.i33.i.i, %173 ], [ %.08.lcssa.i.i.i27, %136 ] + %176 = phi i1 [ true, %.thread.i.i ], [ %175, %173 ], [ true, %136 ] + tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %176, ptr noundef nonnull %13, ptr noundef nonnull %.sroa.12.0.i33.i.i35, ptr noundef nonnull align 8 dereferenceable(32) %5) #26 + %177 = getelementptr inbounds i8, ptr %0, i64 40 + %178 = load i64, ptr %177, align 8 + %179 = add i64 %178, 1 + store i64 %179, ptr %177, align 8 br label %_ZNSt3mapIN5vcpkg11PackageSpecENS0_12_GLOBAL__N_121VersionedPackageGraph15PackageNodeDataESt4lessIS1_ESaISt4pairIKS1_S4_EEE12emplace_hintIJRS8_S4_EEESt17_Rb_tree_iteratorIS9_ESt23_Rb_tree_const_iteratorIS9_EDpOT_.exit .thread36.i.i: ; preds = %171, %.noexc18.i.i, %.noexc15.i.i, %.noexc14.i.i, %.noexc10.i.i %.sroa.022.0.ph.i.i = phi ptr [ %.sroa.075.0.i.i.i, %171 ], [ %.sroa.014.0.i44.i.i.i, %.noexc18.i.i ], [ %.sroa.014.0.i23.i.i.i, %.noexc14.i.i ], [ %.sroa.014.0.i.i.i.i, %.noexc10.i.i ], [ %.08.lcssa.i.i.i27, %.noexc15.i.i ] - %181 = getelementptr inbounds i8, ptr %13, i64 72 - tail call fastcc void @_ZN5vcpkg12_GLOBAL__N_121VersionedPackageGraph15PackageNodeDataD2Ev(ptr noundef nonnull align 8 dereferenceable(209) %181) #26 + %180 = getelementptr inbounds i8, ptr %13, i64 72 + tail call fastcc void @_ZN5vcpkg12_GLOBAL__N_121VersionedPackageGraph15PackageNodeDataD2Ev(ptr noundef nonnull align 8 dereferenceable(209) %180) #26 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %14) #26 tail call void @_ZdlPv(ptr noundef nonnull %13) #27 br label %_ZNSt3mapIN5vcpkg11PackageSpecENS0_12_GLOBAL__N_121VersionedPackageGraph15PackageNodeDataESt4lessIS1_ESaISt4pairIKS1_S4_EEE12emplace_hintIJRS8_S4_EEESt17_Rb_tree_iteratorIS9_ESt23_Rb_tree_const_iteratorIS9_EDpOT_.exit -_ZNSt3mapIN5vcpkg11PackageSpecENS0_12_GLOBAL__N_121VersionedPackageGraph15PackageNodeDataESt4lessIS1_ESaISt4pairIKS1_S4_EEE12emplace_hintIJRS8_S4_EEESt17_Rb_tree_iteratorIS9_ESt23_Rb_tree_const_iteratorIS9_EDpOT_.exit: ; preds = %9, %.thread36.i.i, %176 - %.sroa.025.0 = phi ptr [ %13, %176 ], [ %.sroa.022.0.ph.i.i, %.thread36.i.i ], [ %.19.i.i.i, %9 ] +_ZNSt3mapIN5vcpkg11PackageSpecENS0_12_GLOBAL__N_121VersionedPackageGraph15PackageNodeDataESt4lessIS1_ESaISt4pairIKS1_S4_EEE12emplace_hintIJRS8_S4_EEESt17_Rb_tree_iteratorIS9_ESt23_Rb_tree_const_iteratorIS9_EDpOT_.exit: ; preds = %9, %.thread36.i.i, %.thread.i.i.thread + %.sroa.025.0 = phi ptr [ %13, %.thread.i.i.thread ], [ %.sroa.022.0.ph.i.i, %.thread36.i.i ], [ %.19.i.i.i, %9 ] ret ptr %.sroa.025.0 } diff --git a/bench/velox/optimized/LeadLag.cpp.ll b/bench/velox/optimized/LeadLag.cpp.ll index 38398216dd7..e55d67a65ef 100644 --- a/bench/velox/optimized/LeadLag.cpp.ll +++ b/bench/velox/optimized/LeadLag.cpp.ll @@ -6637,7 +6637,7 @@ for.inc33.i: ; preds = %_ZNSt6vectorIiSaIiE for.end35.i: ; preds = %for.inc33.i %cmp.i.i.i131 = icmp eq ptr %defaultValueRowNumbers.sroa.0.2.i, %defaultValueRowNumbers.sroa.12.1.i - br i1 %cmp.i.i.i131, label %cleanup.i, label %if.end38.i + br i1 %cmp.i.i.i131, label %if.then.i.i.i52.i, label %if.end38.i if.end38.i: ; preds = %for.end35.i %142 = load i8, ptr %_M_engaged.i.i.i126, align 8 @@ -6694,15 +6694,11 @@ for.inc64.i: ; preds = %for.body53.i %exitcond.not.i136 = icmp eq i64 %indvars.iv.next117.i, %umax.i br i1 %exitcond.not.i136, label %if.then.i.i.i52.i, label %for.body53.i, !llvm.loop !59 -cleanup.i: ; preds = %for.end35.i - %tobool.not.i.i.i51.i = icmp eq ptr %defaultValueRowNumbers.sroa.12.1.i, null - br i1 %tobool.not.i.i.i51.i, label %_ZN8facebook5velox6window9prestosql12_GLOBAL__N_115LeadLagFunctionILb1EE15setDefaultValueERKSt10shared_ptrINS0_10BaseVectorEEi.exit, label %if.then.i.i.i52.i - -if.then.i.i.i52.i: ; preds = %for.inc64.i, %cleanup.i +if.then.i.i.i52.i: ; preds = %for.inc64.i, %for.end35.i call void @_ZdlPv(ptr noundef nonnull %defaultValueRowNumbers.sroa.0.2.i) #24 br label %_ZN8facebook5velox6window9prestosql12_GLOBAL__N_115LeadLagFunctionILb1EE15setDefaultValueERKSt10shared_ptrINS0_10BaseVectorEEi.exit -_ZN8facebook5velox6window9prestosql12_GLOBAL__N_115LeadLagFunctionILb1EE15setDefaultValueERKSt10shared_ptrINS0_10BaseVectorEEi.exit: ; preds = %for.inc.i119, %for.cond.preheader.i, %land.lhs.true.i, %if.end.i.i129, %cleanup.i, %if.then.i.i.i52.i +_ZN8facebook5velox6window9prestosql12_GLOBAL__N_115LeadLagFunctionILb1EE15setDefaultValueERKSt10shared_ptrINS0_10BaseVectorEEi.exit: ; preds = %for.inc.i119, %for.cond.preheader.i, %land.lhs.true.i, %if.end.i.i129, %if.then.i.i.i52.i %partitionOffset_ = getelementptr inbounds i8, ptr %this, i64 192 %151 = load i32, ptr %partitionOffset_, align 8 %152 = trunc i64 %div7 to i32 @@ -11101,7 +11097,7 @@ for.inc33.i: ; preds = %_ZNSt6vectorIiSaIiE for.end35.i: ; preds = %for.inc33.i %cmp.i.i.i136 = icmp eq ptr %defaultValueRowNumbers.sroa.0.2.i, %defaultValueRowNumbers.sroa.12.1.i - br i1 %cmp.i.i.i136, label %cleanup.i, label %if.end38.i + br i1 %cmp.i.i.i136, label %if.then.i.i.i52.i, label %if.end38.i if.end38.i: ; preds = %for.end35.i %146 = load i8, ptr %_M_engaged.i.i.i131, align 8 @@ -11158,15 +11154,11 @@ for.inc64.i: ; preds = %for.body53.i %exitcond.not.i141 = icmp eq i64 %indvars.iv.next117.i, %umax.i br i1 %exitcond.not.i141, label %if.then.i.i.i52.i, label %for.body53.i, !llvm.loop !108 -cleanup.i: ; preds = %for.end35.i - %tobool.not.i.i.i51.i = icmp eq ptr %defaultValueRowNumbers.sroa.12.1.i, null - br i1 %tobool.not.i.i.i51.i, label %_ZN8facebook5velox6window9prestosql12_GLOBAL__N_115LeadLagFunctionILb0EE15setDefaultValueERKSt10shared_ptrINS0_10BaseVectorEEi.exit, label %if.then.i.i.i52.i - -if.then.i.i.i52.i: ; preds = %for.inc64.i, %cleanup.i +if.then.i.i.i52.i: ; preds = %for.inc64.i, %for.end35.i call void @_ZdlPv(ptr noundef nonnull %defaultValueRowNumbers.sroa.0.2.i) #24 br label %_ZN8facebook5velox6window9prestosql12_GLOBAL__N_115LeadLagFunctionILb0EE15setDefaultValueERKSt10shared_ptrINS0_10BaseVectorEEi.exit -_ZN8facebook5velox6window9prestosql12_GLOBAL__N_115LeadLagFunctionILb0EE15setDefaultValueERKSt10shared_ptrINS0_10BaseVectorEEi.exit: ; preds = %for.inc.i124, %for.cond.preheader.i, %land.lhs.true.i, %if.end.i.i134, %cleanup.i, %if.then.i.i.i52.i +_ZN8facebook5velox6window9prestosql12_GLOBAL__N_115LeadLagFunctionILb0EE15setDefaultValueERKSt10shared_ptrINS0_10BaseVectorEEi.exit: ; preds = %for.inc.i124, %for.cond.preheader.i, %land.lhs.true.i, %if.end.i.i134, %if.then.i.i.i52.i %partitionOffset_ = getelementptr inbounds i8, ptr %this, i64 192 %155 = load i32, ptr %partitionOffset_, align 8 %156 = trunc i64 %div7 to i32 diff --git a/bench/verilator/optimized/V3Descope.cpp.ll b/bench/verilator/optimized/V3Descope.cpp.ll index 24a50c4d320..aaaa45186c7 100644 --- a/bench/verilator/optimized/V3Descope.cpp.ll +++ b/bench/verilator/optimized/V3Descope.cpp.ll @@ -1877,54 +1877,53 @@ _ZNSt8multimapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8AstCFuncSt4 19: ; preds = %_ZNSt8multimapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8AstCFuncSt4lessIS5_ESaISt4pairIKS5_S7_EEE5clearEv.exit %20 = getelementptr inbounds i8, ptr %15, i64 32 - %.011.i = load ptr, ptr %20, align 8 - %.not12.i = icmp eq ptr %.011.i, null - br i1 %.not12.i, label %_ZN14DescopeVisitor14modIsSingletonEP13AstNodeModule.exit, label %_ZN7AstNode9privateIsI8AstScopePS_EEbPKS_.exit.i - -_ZN7AstNode9privateIsI8AstScopePS_EEbPKS_.exit.i: ; preds = %19, %25 - %.014.i = phi ptr [ %.0.i, %25 ], [ %.011.i, %19 ] - %.0713.i = phi i32 [ %.1.i, %25 ], [ 0, %19 ] - %21 = getelementptr inbounds i8, ptr %.014.i, i64 64 + %.012.i = load ptr, ptr %20, align 8 + %.not13.i = icmp eq ptr %.012.i, null + br i1 %.not13.i, label %_ZN14DescopeVisitor14modIsSingletonEP13AstNodeModule.exit, label %_ZN7AstNode9privateIsI8AstScopePS_EEbPKS_.exit.i + +_ZN7AstNode9privateIsI8AstScopePS_EEbPKS_.exit.i: ; preds = %19, %24 + %.015.i = phi ptr [ %.0.i, %24 ], [ %.012.i, %19 ] + %.0714.i = phi i32 [ %.1.i, %24 ], [ 0, %19 ] + %21 = getelementptr inbounds i8, ptr %.015.i, i64 64 %.sroa.0.0.copyload.i.i.i.i = load i16, ptr %21, align 8 %22 = icmp eq i16 %.sroa.0.0.copyload.i.i.i.i, 37 - br i1 %22, label %23, label %25 + br i1 %22, label %23, label %24 23: ; preds = %_ZN7AstNode9privateIsI8AstScopePS_EEbPKS_.exit.i - %24 = icmp sgt i32 %.0713.i, 0 - br i1 %24, label %_ZN14DescopeVisitor14modIsSingletonEP13AstNodeModule.exit, label %25 + %.not10.i = icmp eq i32 %.0714.i, 0 + br i1 %.not10.i, label %24, label %_ZN14DescopeVisitor14modIsSingletonEP13AstNodeModule.exit -25: ; preds = %23, %_ZN7AstNode9privateIsI8AstScopePS_EEbPKS_.exit.i - %.1.i = phi i32 [ 1, %23 ], [ %.0713.i, %_ZN7AstNode9privateIsI8AstScopePS_EEbPKS_.exit.i ] - %26 = getelementptr inbounds i8, ptr %.014.i, i64 8 - %.0.i = load ptr, ptr %26, align 8 +24: ; preds = %23, %_ZN7AstNode9privateIsI8AstScopePS_EEbPKS_.exit.i + %.1.i = phi i32 [ 1, %23 ], [ %.0714.i, %_ZN7AstNode9privateIsI8AstScopePS_EEbPKS_.exit.i ] + %25 = getelementptr inbounds i8, ptr %.015.i, i64 8 + %.0.i = load ptr, ptr %25, align 8 %.not.i = icmp eq ptr %.0.i, null br i1 %.not.i, label %._crit_edge.loopexit.i, label %_ZN7AstNode9privateIsI8AstScopePS_EEbPKS_.exit.i, !llvm.loop !8 -._crit_edge.loopexit.i: ; preds = %25 - %27 = icmp eq i32 %.1.i, 1 - %28 = zext i1 %27 to i8 +._crit_edge.loopexit.i: ; preds = %24 + %26 = trunc nuw nsw i32 %.1.i to i8 br label %_ZN14DescopeVisitor14modIsSingletonEP13AstNodeModule.exit _ZN14DescopeVisitor14modIsSingletonEP13AstNodeModule.exit: ; preds = %23, %._crit_edge.loopexit.i, %19, %_ZNSt8multimapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8AstCFuncSt4lessIS5_ESaISt4pairIKS5_S7_EEE5clearEv.exit - %.08.i = phi i8 [ 1, %_ZNSt8multimapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8AstCFuncSt4lessIS5_ESaISt4pairIKS5_S7_EEE5clearEv.exit ], [ 0, %19 ], [ %28, %._crit_edge.loopexit.i ], [ 0, %23 ] - %29 = getelementptr inbounds i8, ptr %0, i64 64 - store i8 %.08.i, ptr %29, align 8 + %.08.i = phi i8 [ 1, %_ZNSt8multimapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8AstCFuncSt4lessIS5_ESaISt4pairIKS5_S7_EEE5clearEv.exit ], [ 0, %19 ], [ %26, %._crit_edge.loopexit.i ], [ 0, %23 ] + %27 = getelementptr inbounds i8, ptr %0, i64 64 + store i8 %.08.i, ptr %27, align 8 invoke void @_ZN7AstNode15iterateChildrenER9VNVisitor(ptr noundef nonnull align 8 dereferenceable(152) %1, ptr noundef nonnull align 8 dereferenceable(32) %0) - to label %_ZN9VNVisitor15iterateChildrenEP7AstNode.exit unwind label %31 + to label %_ZN9VNVisitor15iterateChildrenEP7AstNode.exit unwind label %29 _ZN9VNVisitor15iterateChildrenEP7AstNode.exit: ; preds = %_ZN14DescopeVisitor14modIsSingletonEP13AstNodeModule.exit invoke void @_ZN14DescopeVisitor22makePublicFuncWrappersEv(ptr noundef nonnull align 8 dereferenceable(168) %0) - to label %30 unwind label %31 + to label %28 unwind label %29 -30: ; preds = %_ZN9VNVisitor15iterateChildrenEP7AstNode.exit +28: ; preds = %_ZN9VNVisitor15iterateChildrenEP7AstNode.exit store ptr %4, ptr %3, align 8 ret void -31: ; preds = %_ZN14DescopeVisitor14modIsSingletonEP13AstNodeModule.exit, %_ZN9VNVisitor15iterateChildrenEP7AstNode.exit - %32 = landingpad { ptr, i32 } +29: ; preds = %_ZN14DescopeVisitor14modIsSingletonEP13AstNodeModule.exit, %_ZN9VNVisitor15iterateChildrenEP7AstNode.exit + %30 = landingpad { ptr, i32 } cleanup store ptr %4, ptr %3, align 8 - resume { ptr, i32 } %32 + resume { ptr, i32 } %30 } declare void @_ZN14VNVisitorConst5visitEP13AstNodePreSel(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) unnamed_addr #0 diff --git a/bench/wireshark/optimized/packet-gcsna.c.ll b/bench/wireshark/optimized/packet-gcsna.c.ll index b7d237e63f2..034048ffe1f 100644 --- a/bench/wireshark/optimized/packet-gcsna.c.ll +++ b/bench/wireshark/optimized/packet-gcsna.c.ll @@ -162,10 +162,11 @@ define internal i32 @dissect_gcsna(ptr noundef %0, ptr noundef %1, ptr noundef % br i1 %.not34, label %._crit_edge.thread, label %.lr.ph .lr.ph: ; preds = %12, %gcsna_message_decode.exit + %.033 = phi i16 [ %.1, %gcsna_message_decode.exit ], [ 1, %12 ] %.02832 = phi i32 [ %.129, %gcsna_message_decode.exit ], [ 0, %12 ] %16 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef %.02832) #2 %17 = add i32 %.02832, 1 - switch i8 %16, label %155 [ + switch i8 %16, label %gcsna_message_decode.exit [ i8 1, label %18 i8 2, label %80 i8 3, label %89 @@ -389,20 +390,26 @@ gcsna_message_GCSNAServiceReject.exit.i: ; preds = %.lr.ph.i19.i, %145, %storemerge.i.i = add nuw nsw i32 %152, %153 br label %gcsna_message_decode.exit -gcsna_message_decode.exit: ; preds = %gcsna_message_GCSNA1xCircuitService.exit.i, %80, %gcsna_message_GCSNAServiceReject.exit.i - %.129 = phi i32 [ %storemerge.i.i, %gcsna_message_GCSNAServiceReject.exit.i ], [ %88, %80 ], [ %79, %gcsna_message_GCSNA1xCircuitService.exit.i ] +gcsna_message_decode.exit: ; preds = %.lr.ph, %gcsna_message_GCSNA1xCircuitService.exit.i, %80, %gcsna_message_GCSNAServiceReject.exit.i + %.129 = phi i32 [ %storemerge.i.i, %gcsna_message_GCSNAServiceReject.exit.i ], [ %88, %80 ], [ %79, %gcsna_message_GCSNA1xCircuitService.exit.i ], [ %17, %.lr.ph ] + %.1 = phi i16 [ %.033, %gcsna_message_GCSNAServiceReject.exit.i ], [ 1, %80 ], [ %.033, %gcsna_message_GCSNA1xCircuitService.exit.i ], [ 0, %.lr.ph ] %154 = tail call i32 @tvb_captured_length_remaining(ptr noundef %0, i32 noundef %.129) #2 - %.not43 = icmp eq i32 %154, 0 - br i1 %.not43, label %._crit_edge.thread, label %.lr.ph, !llvm.loop !8 + %155 = icmp ne i32 %154, 0 + %156 = icmp ne i16 %.1, 0 + %157 = select i1 %155, i1 %156, i1 false + br i1 %157, label %.lr.ph, label %._crit_edge, !llvm.loop !8 -155: ; preds = %.lr.ph - %156 = tail call i32 @tvb_captured_length_remaining(ptr noundef %0, i32 noundef %17) #2 - %157 = tail call ptr @expert_add_info(ptr noundef %1, ptr noundef %9, ptr noundef nonnull @ei_gcsna_error) #2 +._crit_edge: ; preds = %gcsna_message_decode.exit + %158 = icmp eq i16 %.1, 0 + br i1 %158, label %159, label %._crit_edge.thread + +159: ; preds = %._crit_edge + %160 = tail call ptr @expert_add_info(ptr noundef %1, ptr noundef %9, ptr noundef nonnull @ei_gcsna_error) #2 br label %._crit_edge.thread -._crit_edge.thread: ; preds = %gcsna_message_decode.exit, %12, %155, %4 - %158 = tail call i32 @tvb_reported_length(ptr noundef %0) #2 - ret i32 %158 +._crit_edge.thread: ; preds = %12, %._crit_edge, %159, %4 + %161 = tail call i32 @tvb_reported_length(ptr noundef %0) #2 + ret i32 %161 } declare void @proto_register_field_array(i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #1 diff --git a/bench/wireshark/optimized/packet-thrift.c.ll b/bench/wireshark/optimized/packet-thrift.c.ll index 307e5af35c6..ae2653b2de5 100644 --- a/bench/wireshark/optimized/packet-thrift.c.ll +++ b/bench/wireshark/optimized/packet-thrift.c.ll @@ -2723,13 +2723,13 @@ dissect_thrift_t_stop.exit: ; preds = %132, %131, %110, %1 } ; Function Attrs: nounwind uwtable -define i32 @dissect_thrift_t_struct(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, ptr nocapture noundef readonly %9) local_unnamed_addr #0 { +define range(i32 1, 0) i32 @dissect_thrift_t_struct(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, ptr nocapture noundef readonly %9) local_unnamed_addr #0 { %11 = tail call fastcc i32 @dissect_thrift_t_struct_expert(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, ptr noundef %9, ptr noundef null) ret i32 %11 } ; Function Attrs: nounwind uwtable -define internal fastcc i32 @dissect_thrift_t_struct_expert(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, ptr nocapture noundef readonly %9, ptr noundef %10) unnamed_addr #0 { +define internal fastcc range(i32 1, 0) i32 @dissect_thrift_t_struct_expert(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, ptr nocapture noundef readonly %9, ptr noundef %10) unnamed_addr #0 { %12 = alloca i32, align 4 %13 = alloca %struct._thrift_field_header_t, align 8 %14 = alloca i32, align 4 @@ -2807,7 +2807,7 @@ thread-pre-split: ; preds = %24, %25 %47 = getelementptr inbounds i8, ptr %9, i64 16 %48 = load i32, ptr %47, align 8 %.not96109 = icmp eq i32 %48, 0 - br i1 %.not96109, label %._crit_edge.thread, label %.lr.ph + br i1 %.not96109, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %45 %49 = getelementptr inbounds i8, ptr %13, i64 8 @@ -2932,72 +2932,68 @@ thread-pre-split104: ; preds = %97, %93, %102 store i64 %115, ptr %46, align 8 br label %.backedge -._crit_edge: ; preds = %.backedge - %116 = icmp slt i32 %68, 0 - br i1 %116, label %dissect_thrift_t_stop.exit, label %._crit_edge.thread +._crit_edge: ; preds = %.backedge, %45 + %116 = phi i32 [ %28, %45 ], [ %68, %.backedge ] + %117 = tail call i32 @tvb_reported_length_remaining(ptr noundef %0, i32 noundef %116) #7 + %118 = icmp slt i32 %117, 1 + br i1 %118, label %dissect_thrift_t_stop.exit, label %119 -._crit_edge.thread: ; preds = %45, %._crit_edge - %117 = phi i32 [ %68, %._crit_edge ], [ %28, %45 ] - %118 = tail call i32 @tvb_reported_length_remaining(ptr noundef %0, i32 noundef %117) #7 - %119 = icmp slt i32 %118, 1 - br i1 %119, label %dissect_thrift_t_stop.exit, label %120 +119: ; preds = %._crit_edge + %120 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef %116) #7 + %.not.i = icmp eq i8 %120, 0 + br i1 %.not.i, label %123, label %121 -120: ; preds = %._crit_edge.thread - %121 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef %117) #7 - %.not.i = icmp eq i8 %121, 0 - br i1 %.not.i, label %124, label %122 - -122: ; preds = %120 - %123 = tail call ptr @proto_tree_add_expert(ptr noundef %.1, ptr noundef %1, ptr noundef nonnull @ei_thrift_wrong_type, ptr noundef %0, i32 noundef %117, i32 noundef 1) #7 +121: ; preds = %119 + %122 = tail call ptr @proto_tree_add_expert(ptr noundef %.1, ptr noundef %1, ptr noundef nonnull @ei_thrift_wrong_type, ptr noundef %0, i32 noundef %116, i32 noundef 1) #7 br label %dissect_thrift_t_stop.exit -124: ; preds = %120 - %125 = load i32, ptr @show_internal_thrift_fields, align 4 - %.not16.i = icmp eq i32 %125, 0 - br i1 %.not16.i, label %129, label %126 +123: ; preds = %119 + %124 = load i32, ptr @show_internal_thrift_fields, align 4 + %.not16.i = icmp eq i32 %124, 0 + br i1 %.not16.i, label %128, label %125 -126: ; preds = %124 - %127 = load i32, ptr @hf_thrift_type, align 4 - %128 = tail call ptr @proto_tree_add_item(ptr noundef %.1, i32 noundef %127, ptr noundef %0, i32 noundef %117, i32 noundef 1, i32 noundef 0) #7 - br label %129 +125: ; preds = %123 + %126 = load i32, ptr @hf_thrift_type, align 4 + %127 = tail call ptr @proto_tree_add_item(ptr noundef %.1, i32 noundef %126, ptr noundef %0, i32 noundef %116, i32 noundef 1, i32 noundef 0) #7 + br label %128 -129: ; preds = %126, %124 - %130 = add nuw i32 %117, 1 +128: ; preds = %125, %123 + %129 = add nuw i32 %116, 1 br label %dissect_thrift_t_stop.exit -dissect_thrift_t_stop.exit: ; preds = %._crit_edge, %._crit_edge.thread, %122, %129 - %.0.i = phi i32 [ -2, %122 ], [ %130, %129 ], [ %68, %._crit_edge ], [ -1, %._crit_edge.thread ] +dissect_thrift_t_stop.exit: ; preds = %._crit_edge, %121, %128 + %.0.i = phi i32 [ -2, %121 ], [ %129, %128 ], [ -1, %._crit_edge ] %.not97 = icmp eq ptr %10, null - br i1 %.not97, label %133, label %131 + br i1 %.not97, label %132, label %130 -131: ; preds = %dissect_thrift_t_stop.exit - %132 = tail call ptr @expert_add_info(ptr noundef %1, ptr noundef %.082, ptr noundef nonnull %10) #7 - br label %133 +130: ; preds = %dissect_thrift_t_stop.exit + %131 = tail call ptr @expert_add_info(ptr noundef %1, ptr noundef %.082, ptr noundef nonnull %10) #7 + br label %132 -133: ; preds = %131, %dissect_thrift_t_stop.exit - %134 = icmp sgt i32 %.0.i, 0 - %or.cond = select i1 %16, i1 %134, i1 false - br i1 %or.cond, label %135, label %136 +132: ; preds = %130, %dissect_thrift_t_stop.exit + %133 = icmp sgt i32 %.0.i, 0 + %or.cond = select i1 %16, i1 %133, i1 false + br i1 %or.cond, label %134, label %135 -135: ; preds = %133 +134: ; preds = %132 tail call void @proto_item_set_end(ptr noundef %.082, ptr noundef %0, i32 noundef %.0.i) #7 - br label %136 + br label %135 -136: ; preds = %135, %133 - br i1 %.not93, label %139, label %137 +135: ; preds = %134, %132 + br i1 %.not93, label %138, label %136 -137: ; preds = %136 - %138 = sext i32 %6 to i64 - store i64 %138, ptr %46, align 8 - br label %139 +136: ; preds = %135 + %137 = sext i32 %6 to i64 + store i64 %137, ptr %46, align 8 + br label %138 -139: ; preds = %137, %136 - %140 = load i32, ptr @proto_thrift, align 4 - tail call void @p_set_proto_depth(ptr noundef %1, i32 noundef %140, i32 noundef %.0) #7 +138: ; preds = %136, %135 + %139 = load i32, ptr @proto_thrift, align 4 + tail call void @p_set_proto_depth(ptr noundef %1, i32 noundef %139, i32 noundef %.0) #7 br label %.loopexit -.loopexit: ; preds = %111, %108, %102, %97, %59, %30, %thread-pre-split, %139, %81, %71, %37 - %.081 = phi i32 [ -1, %37 ], [ -2, %71 ], [ -2, %81 ], [ %.0.i, %139 ], [ %28, %thread-pre-split ], [ -1, %30 ], [ %., %59 ], [ -1, %111 ], [ %109, %108 ], [ -1, %102 ], [ -1, %97 ] +.loopexit: ; preds = %111, %108, %102, %97, %59, %30, %thread-pre-split, %138, %81, %71, %37 + %.081 = phi i32 [ -1, %37 ], [ -2, %71 ], [ -2, %81 ], [ %.0.i, %138 ], [ %28, %thread-pre-split ], [ -1, %30 ], [ %., %59 ], [ -1, %111 ], [ %109, %108 ], [ -1, %102 ], [ -1, %97 ] ret i32 %.081 } @@ -6374,7 +6370,7 @@ thrift_get_varint_enc.exit250: ; preds = %71 %262 = call ptr @expert_add_info(ptr noundef nonnull %1, ptr noundef %.0219, ptr noundef nonnull @ei_thrift_protocol_exception) #7 %263 = load i32, ptr @hf_thrift_exception, align 4 %264 = load i32, ptr @ett_thrift_exception, align 4 - %265 = call fastcc i32 @dissect_thrift_t_struct_expert(ptr noundef %237, ptr noundef nonnull %1, ptr noundef %22, i32 noundef 0, ptr noundef nonnull %4, i32 noundef 0, i32 noundef 0, i32 noundef %263, i32 noundef %264, ptr noundef nonnull @thrift_exception, ptr noundef null) + %265 = call fastcc range(i32 1, 0) i32 @dissect_thrift_t_struct_expert(ptr noundef %237, ptr noundef nonnull %1, ptr noundef %22, i32 noundef 0, ptr noundef nonnull %4, i32 noundef 0, i32 noundef 0, i32 noundef %263, i32 noundef %264, ptr noundef nonnull @thrift_exception, ptr noundef null) br label %266 266: ; preds = %255, %259, %261 diff --git a/bench/wireshark/optimized/sequence_diagram.cpp.ll b/bench/wireshark/optimized/sequence_diagram.cpp.ll index 194a1edd9b2..0184a52cd79 100644 --- a/bench/wireshark/optimized/sequence_diagram.cpp.ll +++ b/bench/wireshark/optimized/sequence_diagram.cpp.ll @@ -3783,15 +3783,11 @@ _ZNK9QMultiMapId11WSCPSeqDataE10constBeginEv.exit.._crit_edge_crit_edge: ; preds %29 = getelementptr inbounds i8, ptr %28, i64 16 %.sroa.0.0.i.i11 = select i1 %.not.i.i10, ptr null, ptr %29 %.not = icmp eq ptr %27, %.sroa.0.0.i.i11 - br i1 %.not, label %._crit_edge.loopexit, label %13, !llvm.loop !57 + br i1 %.not, label %._crit_edge, label %13, !llvm.loop !57 -._crit_edge.loopexit: ; preds = %26 - %30 = and i8 %.1, 1 - br label %._crit_edge - -._crit_edge: ; preds = %_ZNK9QMultiMapId11WSCPSeqDataE10constBeginEv.exit.._crit_edge_crit_edge, %._crit_edge.loopexit - %.fca.0.load = phi double [ %.fca.0.load.pre, %_ZNK9QMultiMapId11WSCPSeqDataE10constBeginEv.exit.._crit_edge_crit_edge ], [ %.fca.0.load21, %._crit_edge.loopexit ] - %.0.lcssa = phi i8 [ 0, %_ZNK9QMultiMapId11WSCPSeqDataE10constBeginEv.exit.._crit_edge_crit_edge ], [ %30, %._crit_edge.loopexit ] +._crit_edge: ; preds = %26, %_ZNK9QMultiMapId11WSCPSeqDataE10constBeginEv.exit.._crit_edge_crit_edge + %.fca.0.load = phi double [ %.fca.0.load.pre, %_ZNK9QMultiMapId11WSCPSeqDataE10constBeginEv.exit.._crit_edge_crit_edge ], [ %.fca.0.load21, %26 ] + %.0.lcssa = phi i8 [ 0, %_ZNK9QMultiMapId11WSCPSeqDataE10constBeginEv.exit.._crit_edge_crit_edge ], [ %.1, %26 ] store i8 %.0.lcssa, ptr %1, align 1 %.fca.0.insert = insertvalue { double, double } poison, double %.fca.0.load, 0 %.fca.1.gep = getelementptr inbounds i8, ptr %4, i64 8 diff --git a/bench/wolfssl/optimized/benchmark.c.ll b/bench/wolfssl/optimized/benchmark.c.ll index 102bfdf8c8d..1b6da48eab2 100644 --- a/bench/wolfssl/optimized/benchmark.c.ll +++ b/bench/wolfssl/optimized/benchmark.c.ll @@ -1762,15 +1762,11 @@ bench_stats_check.exit: ; preds = %for.end34 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %tv.i.i23) %sub.i = fsub double %add.i.i30, %add.i.i %cmp.i31 = fcmp uge double %sub.i, 1.000000e+00 - br i1 %cmp.i31, label %exit_aes_enc, label %do.body, !llvm.loop !12 + br i1 %cmp.i31, label %for.body43, label %do.body, !llvm.loop !12 -exit_aes_enc: ; preds = %bench_stats_check.exit +for.body43: ; preds = %bench_stats_check.exit %18 = load i32, ptr @bench_size, align 4 call fastcc void @bench_stats_sym_finish(ptr noundef %encLabel, i32 noundef %add, i32 noundef %18, double noundef %add.i.i, i32 noundef %ret.1.lcssa) - %cmp38 = icmp slt i32 %ret.1.lcssa, 0 - br i1 %cmp38, label %exit, label %for.body43 - -for.body43: ; preds = %exit_aes_enc %call46 = call i32 @wc_AesSetKey(ptr noundef nonnull %enc, ptr noundef %key, i32 noundef %keySz, ptr noundef %iv, i32 noundef 1) #16 %cmp47.not = icmp eq i32 %call46, 0 br i1 %cmp47.not, label %do.end56, label %if.then48 @@ -1873,7 +1869,7 @@ exit_aes_dec: ; preds = %bench_stats_check.e call fastcc void @bench_stats_sym_finish(ptr noundef %decLabel, i32 noundef %count.3, i32 noundef %33, double noundef %add.i.i43, i32 noundef %ret.5) br label %exit -exit: ; preds = %exit_aes_enc.thread, %exit_aes_enc, %exit_aes_dec, %if.then48, %if.then7, %if.then +exit: ; preds = %exit_aes_enc.thread, %exit_aes_dec, %if.then48, %if.then7, %if.then call void @wc_AesFree(ptr noundef nonnull %enc) #16 ret void } diff --git a/bench/wolfssl/optimized/sp_int.c.ll b/bench/wolfssl/optimized/sp_int.c.ll index 5d97ce35aaa..b09a44feac6 100644 --- a/bench/wolfssl/optimized/sp_int.c.ll +++ b/bench/wolfssl/optimized/sp_int.c.ll @@ -15180,11 +15180,9 @@ if.end90: ; preds = %if.end84 br i1 %cmp81, label %if.then93, label %do.end98 if.then93: ; preds = %_sp_sub_off.exit441, %if.end90 - %cmp.i442 = icmp eq ptr %c.addr.0520, null %cmp2.not.i = icmp eq ptr %c.addr.0520, %inv - %brmerge.i = or i1 %cmp2.not.i, %cmp.i442 %spec.store.select.mux.i = select i1 %cmp2.not.i, i32 0, i32 -3 - br i1 %brmerge.i, label %do.end98, label %land.lhs.true.i + br i1 %cmp2.not.i, label %do.end98, label %land.lhs.true.i land.lhs.true.i: ; preds = %if.then93 %143 = load i32, ptr %c.addr.0520, align 8 diff --git a/bench/xgboost/optimized/auc.cc.ll b/bench/xgboost/optimized/auc.cc.ll index 7f9e8ef2e6b..55e75063cea 100644 --- a/bench/xgboost/optimized/auc.cc.ll +++ b/bench/xgboost/optimized/auc.cc.ll @@ -10697,9 +10697,9 @@ _ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIv %100 = icmp sgt i64 %3, 0 br i1 %100, label %.lr.ph86, label %._crit_edge87 -.lr.ph86: ; preds = %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E6__initEv.exit, %197 - %.085 = phi i64 [ %202, %197 ], [ 0, %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E6__initEv.exit ] - %.sroa.067.084 = phi ptr [ %109, %197 ], [ %2, %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E6__initEv.exit ] +.lr.ph86: ; preds = %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E6__initEv.exit, %195 + %.085 = phi i64 [ %200, %195 ], [ 0, %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E6__initEv.exit ] + %.sroa.067.084 = phi ptr [ %109, %195 ], [ %2, %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E6__initEv.exit ] %101 = load ptr, ptr %28, align 8 %102 = getelementptr inbounds i8, ptr %101, i64 4 %103 = load i32, ptr %102, align 4 @@ -10719,7 +10719,7 @@ _ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIv %115 = load i32, ptr %22, align 4 %116 = add i32 %115, %114 %.not28.i = icmp ult i32 %116, 2 - br i1 %113, label %117, label %157 + br i1 %113, label %117, label %156 117: ; preds = %.lr.ph86 %118 = load i64, ptr %.029.lcssa92, align 8 @@ -10731,7 +10731,7 @@ _ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIv %.02330.i = phi i8 [ %.124.i, %.thread.i ], [ 1, %117 ] %.02529.i = phi i64 [ %.126.i, %.thread.i ], [ %118, %117 ] %.032.i = lshr i32 %.032.in.i, 1 - %119 = trunc i8 %.02330.i to i1 + %119 = trunc nuw i8 %.02330.i to i1 %120 = load ptr, ptr %28, align 8 %121 = zext nneg i32 %.032.i to i64 %122 = getelementptr inbounds %"struct.__gnu_parallel::_LoserTreeBase::_Loser", ptr %120, i64 %121 @@ -10774,8 +10774,8 @@ _ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIv br i1 %146, label %147, label %.thread.i 147: ; preds = %143, %131, %126, %125 - %148 = and i8 %.02330.i, 1 - store i8 %148, ptr %122, align 1 + %148 = and i8 %123, 1 + store i8 %.02330.i, ptr %122, align 1 %149 = load ptr, ptr %28, align 8 %150 = getelementptr inbounds %"struct.__gnu_parallel::_LoserTreeBase::_Loser", ptr %149, i64 %121, i32 1 %151 = load i32, ptr %150, align 4 @@ -10788,126 +10788,124 @@ _ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIv .thread.i: ; preds = %147, %143, %141, %130, %126 %.126.i = phi i64 [ %154, %147 ], [ %.02529.i, %130 ], [ %.02529.i, %141 ], [ %.02529.i, %143 ], [ %.02529.i, %126 ] - %.124.i = phi i8 [ %123, %147 ], [ %.02330.i, %130 ], [ %.02330.i, %141 ], [ %.02330.i, %143 ], [ %.02330.i, %126 ] + %.124.i = phi i8 [ %148, %147 ], [ %.02330.i, %130 ], [ %.02330.i, %141 ], [ %.02330.i, %143 ], [ %.02330.i, %126 ] %.1.i = phi i32 [ %151, %147 ], [ %.02231.i, %130 ], [ %.02231.i, %141 ], [ %.02231.i, %143 ], [ %.02231.i, %126 ] %.not.i45 = icmp ult i32 %.032.in.i, 4 br i1 %.not.i45, label %._crit_edge.loopexit.i, label %.lr.ph.i44, !llvm.loop !104 ._crit_edge.loopexit.i: ; preds = %.thread.i %.pre.i46 = load ptr, ptr %28, align 8 - %155 = and i8 %.124.i, 1 br label %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E19__delete_min_insertEmb.exit _ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E19__delete_min_insertEmb.exit: ; preds = %117, %._crit_edge.loopexit.i - %156 = phi ptr [ %101, %117 ], [ %.pre.i46, %._crit_edge.loopexit.i ] + %155 = phi ptr [ %101, %117 ], [ %.pre.i46, %._crit_edge.loopexit.i ] %.025.lcssa.i = phi i64 [ %118, %117 ], [ %.126.i, %._crit_edge.loopexit.i ] - %.023.lcssa.i = phi i8 [ 1, %117 ], [ %155, %._crit_edge.loopexit.i ] + %.023.lcssa.i = phi i8 [ 1, %117 ], [ %.124.i, %._crit_edge.loopexit.i ] %.022.lcssa.i = phi i32 [ %114, %117 ], [ %.1.i, %._crit_edge.loopexit.i ] - store i8 %.023.lcssa.i, ptr %156, align 8 - br label %197 + store i8 %.023.lcssa.i, ptr %155, align 8 + br label %195 -157: ; preds = %.lr.ph86 - %158 = load i64, ptr %110, align 8 +156: ; preds = %.lr.ph86 + %157 = load i64, ptr %110, align 8 br i1 %.not28.i, label %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E19__delete_min_insertEmb.exit66, label %.lr.ph.i49 -.lr.ph.i49: ; preds = %157, %.thread.i55 - %.032.in.i50 = phi i32 [ %.032.i54, %.thread.i55 ], [ %116, %157 ] - %.02231.i51 = phi i32 [ %.1.i58, %.thread.i55 ], [ %114, %157 ] - %.02330.i52 = phi i8 [ %.124.i57, %.thread.i55 ], [ 0, %157 ] - %.02529.i53 = phi i64 [ %.126.i56, %.thread.i55 ], [ %158, %157 ] +.lr.ph.i49: ; preds = %156, %.thread.i55 + %.032.in.i50 = phi i32 [ %.032.i54, %.thread.i55 ], [ %116, %156 ] + %.02231.i51 = phi i32 [ %.1.i58, %.thread.i55 ], [ %114, %156 ] + %.02330.i52 = phi i8 [ %.124.i57, %.thread.i55 ], [ 0, %156 ] + %.02529.i53 = phi i64 [ %.126.i56, %.thread.i55 ], [ %157, %156 ] %.032.i54 = lshr i32 %.032.in.i50, 1 - %159 = trunc i8 %.02330.i52 to i1 - %160 = load ptr, ptr %28, align 8 - %161 = zext nneg i32 %.032.i54 to i64 - %162 = getelementptr inbounds %"struct.__gnu_parallel::_LoserTreeBase::_Loser", ptr %160, i64 %161 - %163 = load i8, ptr %162, align 8 - %164 = trunc i8 %163 to i1 - br i1 %159, label %165, label %170 - -165: ; preds = %.lr.ph.i49 - br i1 %164, label %166, label %187 - -166: ; preds = %165 - %167 = getelementptr inbounds i8, ptr %162, i64 4 - %168 = load i32, ptr %167, align 4 - %169 = icmp slt i32 %168, %.02231.i51 - br i1 %169, label %187, label %.thread.i55 - -170: ; preds = %.lr.ph.i49 - br i1 %164, label %.thread.i55, label %171 - -171: ; preds = %170 - %172 = getelementptr inbounds i8, ptr %162, i64 8 - %173 = load ptr, ptr %.sroa.2.0..sroa_idx.i.i, align 8 - %174 = load ptr, ptr %173, align 8 - %175 = load i64, ptr %172, align 8 - %176 = getelementptr inbounds float, ptr %174, i64 %175 - %177 = getelementptr inbounds float, ptr %174, i64 %.02529.i53 - %178 = load float, ptr %176, align 4 - %179 = load float, ptr %177, align 4 - %180 = fcmp ogt float %178, %179 - br i1 %180, label %187, label %181 + %158 = trunc nuw i8 %.02330.i52 to i1 + %159 = load ptr, ptr %28, align 8 + %160 = zext nneg i32 %.032.i54 to i64 + %161 = getelementptr inbounds %"struct.__gnu_parallel::_LoserTreeBase::_Loser", ptr %159, i64 %160 + %162 = load i8, ptr %161, align 8 + %163 = trunc i8 %162 to i1 + br i1 %158, label %164, label %169 -181: ; preds = %171 - %182 = fcmp ogt float %179, %178 - br i1 %182, label %.thread.i55, label %183 +164: ; preds = %.lr.ph.i49 + br i1 %163, label %165, label %186 -183: ; preds = %181 - %184 = getelementptr inbounds %"struct.__gnu_parallel::_LoserTreeBase::_Loser", ptr %160, i64 %161, i32 1 - %185 = load i32, ptr %184, align 4 - %186 = icmp slt i32 %185, %.02231.i51 - br i1 %186, label %187, label %.thread.i55 - -187: ; preds = %183, %171, %166, %165 - %188 = and i8 %.02330.i52, 1 - store i8 %188, ptr %162, align 1 - %189 = load ptr, ptr %28, align 8 - %190 = getelementptr inbounds %"struct.__gnu_parallel::_LoserTreeBase::_Loser", ptr %189, i64 %161, i32 1 - %191 = load i32, ptr %190, align 4 - store i32 %.02231.i51, ptr %190, align 4 - %192 = load ptr, ptr %28, align 8 - %193 = getelementptr inbounds %"struct.__gnu_parallel::_LoserTreeBase::_Loser", ptr %192, i64 %161, i32 2 - %194 = load i64, ptr %193, align 8 - store i64 %.02529.i53, ptr %193, align 8 +165: ; preds = %164 + %166 = getelementptr inbounds i8, ptr %161, i64 4 + %167 = load i32, ptr %166, align 4 + %168 = icmp slt i32 %167, %.02231.i51 + br i1 %168, label %186, label %.thread.i55 + +169: ; preds = %.lr.ph.i49 + br i1 %163, label %.thread.i55, label %170 + +170: ; preds = %169 + %171 = getelementptr inbounds i8, ptr %161, i64 8 + %172 = load ptr, ptr %.sroa.2.0..sroa_idx.i.i, align 8 + %173 = load ptr, ptr %172, align 8 + %174 = load i64, ptr %171, align 8 + %175 = getelementptr inbounds float, ptr %173, i64 %174 + %176 = getelementptr inbounds float, ptr %173, i64 %.02529.i53 + %177 = load float, ptr %175, align 4 + %178 = load float, ptr %176, align 4 + %179 = fcmp ogt float %177, %178 + br i1 %179, label %186, label %180 + +180: ; preds = %170 + %181 = fcmp ogt float %178, %177 + br i1 %181, label %.thread.i55, label %182 + +182: ; preds = %180 + %183 = getelementptr inbounds %"struct.__gnu_parallel::_LoserTreeBase::_Loser", ptr %159, i64 %160, i32 1 + %184 = load i32, ptr %183, align 4 + %185 = icmp slt i32 %184, %.02231.i51 + br i1 %185, label %186, label %.thread.i55 + +186: ; preds = %182, %170, %165, %164 + %187 = and i8 %162, 1 + store i8 %.02330.i52, ptr %161, align 1 + %188 = load ptr, ptr %28, align 8 + %189 = getelementptr inbounds %"struct.__gnu_parallel::_LoserTreeBase::_Loser", ptr %188, i64 %160, i32 1 + %190 = load i32, ptr %189, align 4 + store i32 %.02231.i51, ptr %189, align 4 + %191 = load ptr, ptr %28, align 8 + %192 = getelementptr inbounds %"struct.__gnu_parallel::_LoserTreeBase::_Loser", ptr %191, i64 %160, i32 2 + %193 = load i64, ptr %192, align 8 + store i64 %.02529.i53, ptr %192, align 8 br label %.thread.i55 -.thread.i55: ; preds = %187, %183, %181, %170, %166 - %.126.i56 = phi i64 [ %194, %187 ], [ %.02529.i53, %170 ], [ %.02529.i53, %181 ], [ %.02529.i53, %183 ], [ %.02529.i53, %166 ] - %.124.i57 = phi i8 [ %163, %187 ], [ %.02330.i52, %170 ], [ %.02330.i52, %181 ], [ %.02330.i52, %183 ], [ %.02330.i52, %166 ] - %.1.i58 = phi i32 [ %191, %187 ], [ %.02231.i51, %170 ], [ %.02231.i51, %181 ], [ %.02231.i51, %183 ], [ %.02231.i51, %166 ] +.thread.i55: ; preds = %186, %182, %180, %169, %165 + %.126.i56 = phi i64 [ %193, %186 ], [ %.02529.i53, %169 ], [ %.02529.i53, %180 ], [ %.02529.i53, %182 ], [ %.02529.i53, %165 ] + %.124.i57 = phi i8 [ %187, %186 ], [ %.02330.i52, %169 ], [ %.02330.i52, %180 ], [ %.02330.i52, %182 ], [ %.02330.i52, %165 ] + %.1.i58 = phi i32 [ %190, %186 ], [ %.02231.i51, %169 ], [ %.02231.i51, %180 ], [ %.02231.i51, %182 ], [ %.02231.i51, %165 ] %.not.i59 = icmp ult i32 %.032.in.i50, 4 br i1 %.not.i59, label %._crit_edge.loopexit.i60, label %.lr.ph.i49, !llvm.loop !104 ._crit_edge.loopexit.i60: ; preds = %.thread.i55 %.pre.i61 = load ptr, ptr %28, align 8 - %195 = and i8 %.124.i57, 1 br label %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E19__delete_min_insertEmb.exit66 -_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E19__delete_min_insertEmb.exit66: ; preds = %157, %._crit_edge.loopexit.i60 - %196 = phi ptr [ %101, %157 ], [ %.pre.i61, %._crit_edge.loopexit.i60 ] - %.025.lcssa.i63 = phi i64 [ %158, %157 ], [ %.126.i56, %._crit_edge.loopexit.i60 ] - %.023.lcssa.i64 = phi i8 [ 0, %157 ], [ %195, %._crit_edge.loopexit.i60 ] - %.022.lcssa.i65 = phi i32 [ %114, %157 ], [ %.1.i58, %._crit_edge.loopexit.i60 ] - store i8 %.023.lcssa.i64, ptr %196, align 8 - br label %197 +_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E19__delete_min_insertEmb.exit66: ; preds = %156, %._crit_edge.loopexit.i60 + %194 = phi ptr [ %101, %156 ], [ %.pre.i61, %._crit_edge.loopexit.i60 ] + %.025.lcssa.i63 = phi i64 [ %157, %156 ], [ %.126.i56, %._crit_edge.loopexit.i60 ] + %.023.lcssa.i64 = phi i8 [ 0, %156 ], [ %.124.i57, %._crit_edge.loopexit.i60 ] + %.022.lcssa.i65 = phi i32 [ %114, %156 ], [ %.1.i58, %._crit_edge.loopexit.i60 ] + store i8 %.023.lcssa.i64, ptr %194, align 8 + br label %195 -197: ; preds = %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E19__delete_min_insertEmb.exit, %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E19__delete_min_insertEmb.exit66 +195: ; preds = %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E19__delete_min_insertEmb.exit, %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E19__delete_min_insertEmb.exit66 %.022.lcssa.i.sink = phi i32 [ %.022.lcssa.i, %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E19__delete_min_insertEmb.exit ], [ %.022.lcssa.i65, %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E19__delete_min_insertEmb.exit66 ] %.025.lcssa.i.sink = phi i64 [ %.025.lcssa.i, %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E19__delete_min_insertEmb.exit ], [ %.025.lcssa.i63, %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E19__delete_min_insertEmb.exit66 ] + %196 = load ptr, ptr %28, align 8 + %197 = getelementptr inbounds i8, ptr %196, i64 4 + store i32 %.022.lcssa.i.sink, ptr %197, align 4 %198 = load ptr, ptr %28, align 8 - %199 = getelementptr inbounds i8, ptr %198, i64 4 - store i32 %.022.lcssa.i.sink, ptr %199, align 4 - %200 = load ptr, ptr %28, align 8 - %201 = getelementptr inbounds i8, ptr %200, i64 8 - store i64 %.025.lcssa.i.sink, ptr %201, align 8 - %202 = add nuw nsw i64 %.085, 1 - %exitcond90.not = icmp eq i64 %202, %3 + %199 = getelementptr inbounds i8, ptr %198, i64 8 + store i64 %.025.lcssa.i.sink, ptr %199, align 8 + %200 = add nuw nsw i64 %.085, 1 + %exitcond90.not = icmp eq i64 %200, %3 br i1 %exitcond90.not, label %._crit_edge87, label %.lr.ph86, !llvm.loop !105 -._crit_edge87: ; preds = %197, %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E6__initEv.exit - %.sroa.067.0.lcssa = phi ptr [ %2, %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E6__initEv.exit ], [ %109, %197 ] - %203 = load ptr, ptr %28, align 8 - call void @_ZdlPv(ptr noundef %203) #10 +._crit_edge87: ; preds = %195, %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E6__initEv.exit + %.sroa.067.0.lcssa = phi ptr [ %2, %_ZN14__gnu_parallel10_LoserTreeILb1EmZN7xgboost6common7ArgSortImPKffSt7greaterIvEEESt6vectorIT_SaIS9_EEPKNS1_7ContextET0_SF_T2_EUlRKmSI_E_E6__initEv.exit ], [ %109, %195 ] + %201 = load ptr, ptr %28, align 8 + call void @_ZdlPv(ptr noundef %201) #10 ret ptr %.sroa.067.0.lcssa } diff --git a/bench/yalantinglibs/optimized/conformance_test_runner.cc.ll b/bench/yalantinglibs/optimized/conformance_test_runner.cc.ll index b54ad1f8a3d..5abd5e1207f 100644 --- a/bench/yalantinglibs/optimized/conformance_test_runner.cc.ll +++ b/bench/yalantinglibs/optimized/conformance_test_runner.cc.ll @@ -3000,7 +3000,7 @@ if.then: ; preds = %entry br label %return for.body: ; preds = %for.cond.preheader, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit121 - %all_ok.0289 = phi i1 [ true, %for.cond.preheader ], [ %78, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit121 ] + %all_ok.0289 = phi i1 [ true, %for.cond.preheader ], [ %77, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit121 ] %__begin2.sroa.0.0288 = phi ptr [ %0, %for.cond.preheader ], [ %incdec.ptr.i122, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit121 ] %11 = load ptr, ptr %__begin2.sroa.0.0288, align 8 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp.i) @@ -3810,14 +3810,10 @@ for.inc120: ; preds = %_ZNSt7__cxx1112basi %arg.4 = phi i32 [ %inc, %invoke.cont21 ], [ %arg.0286, %if.then30 ], [ %arg.0286, %if.then37 ], [ %arg.0286, %if.then44 ], [ %arg.2, %for.end ], [ %inc52, %if.end56 ], [ %arg.3275, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit ], [ %argc, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit90 ] %inc121 = add nsw i32 %arg.4, 1 %cmp = icmp slt i32 %inc121, %argc - br i1 %cmp, label %for.body8, label %for.end122.loopexit, !llvm.loop !31 + br i1 %cmp, label %for.body8, label %for.end122, !llvm.loop !31 -for.end122.loopexit: ; preds = %for.inc120 - %74 = and i8 %performance.1, 1 - br label %for.end122 - -for.end122: ; preds = %for.end122.loopexit, %for.cond7.preheader - %performance.0.lcssa = phi i8 [ 0, %for.cond7.preheader ], [ %74, %for.end122.loopexit ] +for.end122: ; preds = %for.inc120, %for.cond7.preheader + %performance.0.lcssa = phi i8 [ 0, %for.cond7.preheader ], [ %performance.1, %for.inc120 ] store ptr getelementptr inbounds (i8, ptr @_ZTVN6google8protobuf14ForkPipeRunnerE, i64 16), ptr %runner, align 8 store i32 -1, ptr %child_pid_.i, align 8 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %executable_.i, ptr noundef nonnull align 8 dereferenceable(32) %program) @@ -3828,7 +3824,7 @@ for.end122: ; preds = %for.end122.loopexit to label %invoke.cont124 unwind label %lpad2.i lpad2.i: ; preds = %.noexc93 - %75 = landingpad { ptr, i32 } + %74 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %executable_.i) #31 br label %ehcleanup135 @@ -3841,8 +3837,8 @@ invoke.cont124: ; preds = %.noexc93 store ptr %7, ptr %current_test_name_.i, align 8 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp.i.i) #31 store i64 0, ptr %_M_string_length.i.i.i.i92, align 8 - %76 = load ptr, ptr %current_test_name_.i, align 8 - store i8 0, ptr %76, align 1 + %75 = load ptr, ptr %current_test_name_.i, align 8 + store i8 0, ptr %75, align 1 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i.i) call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp.i95) call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp.i95) #31 @@ -3850,8 +3846,8 @@ invoke.cont124: ; preds = %.noexc93 store ptr %8, ptr %output, align 8 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp.i95) #31 store i64 0, ptr %_M_string_length.i.i.i96, align 8 - %77 = load ptr, ptr %output, align 8 - store i8 0, ptr %77, align 1 + %76 = load ptr, ptr %output, align 8 + store i8 0, ptr %76, align 1 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i95) br i1 %all_ok.0289, label %land.rhs, label %land.end @@ -3860,72 +3856,72 @@ land.rhs: ; preds = %invoke.cont124 to label %land.end unwind label %lpad126 land.end: ; preds = %land.rhs, %invoke.cont124 - %78 = phi i1 [ false, %invoke.cont124 ], [ %call128, %land.rhs ] - %79 = load ptr, ptr %output, align 8 - %80 = load i64, ptr %_M_string_length.i.i.i96, align 8 - %81 = load ptr, ptr @stderr, align 8 - %call132 = call i64 @fwrite(ptr noundef %79, i64 noundef 1, i64 noundef %80, ptr noundef %81) #29 - %82 = load ptr, ptr %output, align 8 - %cmp.i.i.i97 = icmp eq ptr %82, %8 + %77 = phi i1 [ false, %invoke.cont124 ], [ %call128, %land.rhs ] + %78 = load ptr, ptr %output, align 8 + %79 = load i64, ptr %_M_string_length.i.i.i96, align 8 + %80 = load ptr, ptr @stderr, align 8 + %call132 = call i64 @fwrite(ptr noundef %78, i64 noundef 1, i64 noundef %79, ptr noundef %80) #29 + %81 = load ptr, ptr %output, align 8 + %cmp.i.i.i97 = icmp eq ptr %81, %8 br i1 %cmp.i.i.i97, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i100, label %if.then.i.i98 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i100: ; preds = %land.end - %83 = load i64, ptr %_M_string_length.i.i.i96, align 8 - %cmp3.i.i.i102 = icmp ult i64 %83, 16 + %82 = load i64, ptr %_M_string_length.i.i.i96, align 8 + %cmp3.i.i.i102 = icmp ult i64 %82, 16 call void @llvm.assume(i1 %cmp3.i.i.i102) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit103 if.then.i.i98: ; preds = %land.end - call void @_ZdlPv(ptr noundef %82) #32 + call void @_ZdlPv(ptr noundef %81) #32 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit103 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit103: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i100, %if.then.i.i98 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %output) #31 call void @_ZN6google8protobuf14ForkPipeRunnerD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %runner) #31 call void @_ZN11conformance10FailureSetD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %failure_list) #31 - %84 = load ptr, ptr %failure_list_filename, align 8 - %cmp.i.i.i104 = icmp eq ptr %84, %3 + %83 = load ptr, ptr %failure_list_filename, align 8 + %cmp.i.i.i104 = icmp eq ptr %83, %3 br i1 %cmp.i.i.i104, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i107, label %if.then.i.i105 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i107: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit103 - %85 = load i64, ptr %_M_string_length.i.i.i51, align 8 - %cmp3.i.i.i109 = icmp ult i64 %85, 16 + %84 = load i64, ptr %_M_string_length.i.i.i51, align 8 + %cmp3.i.i.i109 = icmp ult i64 %84, 16 call void @llvm.assume(i1 %cmp3.i.i.i109) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit110 if.then.i.i105: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit103 - call void @_ZdlPv(ptr noundef %84) #32 + call void @_ZdlPv(ptr noundef %83) #32 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit110 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit110: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i107, %if.then.i.i105 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %failure_list_filename) #31 - %86 = load ptr, ptr %program_args, align 8 - %87 = load ptr, ptr %_M_finish.i.i80, align 8 - %cmp.not3.i.i.i.i = icmp eq ptr %86, %87 + %85 = load ptr, ptr %program_args, align 8 + %86 = load ptr, ptr %_M_finish.i.i80, align 8 + %cmp.not3.i.i.i.i = icmp eq ptr %85, %86 br i1 %cmp.not3.i.i.i.i, label %invoke.cont.i112, label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit110, %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i.i - %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i.i ], [ %86, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit110 ] - %88 = load ptr, ptr %__first.addr.04.i.i.i.i, align 8 - %89 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i, i64 16 - %cmp.i.i.i.i.i.i.i.i.i = icmp eq ptr %88, %89 + %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i.i ], [ %85, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit110 ] + %87 = load ptr, ptr %__first.addr.04.i.i.i.i, align 8 + %88 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i, i64 16 + %cmp.i.i.i.i.i.i.i.i.i = icmp eq ptr %87, %88 br i1 %cmp.i.i.i.i.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i %_M_string_length.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i, i64 8 - %90 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i, align 8 - %cmp3.i.i.i.i.i.i.i.i.i = icmp ult i64 %90, 16 + %89 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i, align 8 + %cmp3.i.i.i.i.i.i.i.i.i = icmp ult i64 %89, 16 call void @llvm.assume(i1 %cmp3.i.i.i.i.i.i.i.i.i) br label %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i.i if.then.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i - call void @_ZdlPv(ptr noundef %88) #32 + call void @_ZdlPv(ptr noundef %87) #32 br label %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i.i _ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %__first.addr.04.i.i.i.i) #31 %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i, i64 32 - %cmp.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %87 + %cmp.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %86 br i1 %cmp.not.i.i.i.i, label %invoke.contthread-pre-split.i, label %for.body.i.i.i.i, !llvm.loop !32 invoke.contthread-pre-split.i: ; preds = %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i.i @@ -3933,27 +3929,27 @@ invoke.contthread-pre-split.i: ; preds = %_ZSt8_DestroyINSt7_ br label %invoke.cont.i112 invoke.cont.i112: ; preds = %invoke.contthread-pre-split.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit110 - %91 = phi ptr [ %.pr.i, %invoke.contthread-pre-split.i ], [ %86, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit110 ] - %tobool.not.i.i.i113 = icmp eq ptr %91, null + %90 = phi ptr [ %.pr.i, %invoke.contthread-pre-split.i ], [ %85, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit110 ] + %tobool.not.i.i.i113 = icmp eq ptr %90, null br i1 %tobool.not.i.i.i113, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit, label %if.then.i.i.i114 if.then.i.i.i114: ; preds = %invoke.cont.i112 - call void @_ZdlPv(ptr noundef nonnull %91) #32 + call void @_ZdlPv(ptr noundef nonnull %90) #32 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit: ; preds = %invoke.cont.i112, %if.then.i.i.i114 - %92 = load ptr, ptr %program, align 8 - %cmp.i.i.i115 = icmp eq ptr %92, %2 + %91 = load ptr, ptr %program, align 8 + %cmp.i.i.i115 = icmp eq ptr %91, %2 br i1 %cmp.i.i.i115, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i118, label %if.then.i.i116 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i118: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit - %93 = load i64, ptr %_M_string_length.i.i.i, align 8 - %cmp3.i.i.i120 = icmp ult i64 %93, 16 + %92 = load i64, ptr %_M_string_length.i.i.i, align 8 + %cmp3.i.i.i120 = icmp ult i64 %92, 16 call void @llvm.assume(i1 %cmp3.i.i.i120) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit121 if.then.i.i116: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit - call void @_ZdlPv(ptr noundef %92) #32 + call void @_ZdlPv(ptr noundef %91) #32 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit121 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit121: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i118, %if.then.i.i116 @@ -3963,14 +3959,14 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit121: ; preds = %_Z br i1 %cmp.i, label %for.end141, label %for.body lpad126: ; preds = %land.rhs - %94 = landingpad { ptr, i32 } + %93 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %output) #31 call void @_ZN6google8protobuf14ForkPipeRunnerD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %runner) #31 br label %ehcleanup135 ehcleanup135: ; preds = %lpad9.loopexit, %lpad9.loopexit.split-lp.loopexit.split-lp, %lpad9.loopexit.split-lp.loopexit, %lpad2.i, %lpad6.i171, %lpad6.i, %lpad126, %ehcleanup - %.pn47 = phi { ptr, i32 } [ %.pn, %ehcleanup ], [ %94, %lpad126 ], [ %75, %lpad2.i ], [ %lpad.phi211, %lpad6.i ], [ %lpad.phi, %lpad6.i171 ], [ %lpad.loopexit212, %lpad9.loopexit ], [ %lpad.loopexit215, %lpad9.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp216, %lpad9.loopexit.split-lp.loopexit.split-lp ] + %.pn47 = phi { ptr, i32 } [ %.pn, %ehcleanup ], [ %93, %lpad126 ], [ %74, %lpad2.i ], [ %lpad.phi211, %lpad6.i ], [ %lpad.phi, %lpad6.i171 ], [ %lpad.loopexit212, %lpad9.loopexit ], [ %lpad.loopexit215, %lpad9.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp216, %lpad9.loopexit.split-lp.loopexit.split-lp ] call void @_ZN11conformance10FailureSetD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %failure_list) #31 br label %ehcleanup136 @@ -3982,7 +3978,7 @@ ehcleanup136: ; preds = %ehcleanup135, %lpad resume { ptr, i32 } %.pn47.pn for.end141: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit121 - %not.all_ok.0 = xor i1 %78, true + %not.all_ok.0 = xor i1 %77, true %cond = zext i1 %not.all_ok.0 to i32 br label %return diff --git a/bench/yosys/optimized/liberty.ll b/bench/yosys/optimized/liberty.ll index 4c127b44c56..616107b4ac2 100644 --- a/bench/yosys/optimized/liberty.ll +++ b/bench/yosys/optimized/liberty.ll @@ -427,12 +427,12 @@ define void @_ZN5Yosys14parse_type_mapERSt3mapINSt7__cxx1112basic_stringIcSt11ch %.not6890 = icmp eq ptr %5, %7 br i1 %.not6890, label %._crit_edge94, label %.lr.ph93 -.lr.ph93: ; preds = %2, %82 - %.sroa.059.091 = phi ptr [ %83, %82 ], [ %5, %2 ] +.lr.ph93: ; preds = %2, %81 + %.sroa.059.091 = phi ptr [ %82, %81 ], [ %5, %2 ] %8 = load ptr, ptr %.sroa.059.091, align 8 %9 = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str) #23 %.not69 = icmp eq i32 %9, 0 - br i1 %.not69, label %10, label %82 + br i1 %.not69, label %10, label %81 10: ; preds = %.lr.ph93 %11 = getelementptr inbounds i8, ptr %8, i64 64 @@ -443,7 +443,7 @@ define void @_ZN5Yosys14parse_type_mapERSt3mapINSt7__cxx1112basic_stringIcSt11ch %16 = ptrtoint ptr %14 to i64 %17 = sub i64 %15, %16 %.not = icmp eq i64 %17, 32 - br i1 %.not, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit, label %82 + br i1 %.not, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit, label %81 _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit: ; preds = %10 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %14) @@ -471,12 +471,12 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.e %.not71 = icmp eq i32 %27, 0 br i1 %.not71, label %29, label %.loopexit -.loopexit73: ; preds = %77 +.loopexit73: ; preds = %76 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %28 -.loopexit.split-lp: ; preds = %74 +.loopexit.split-lp: ; preds = %73 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %28 @@ -561,54 +561,50 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.e %.167 = phi i8 [ 1, %69 ], [ %.06682, %66 ], [ %.06682, %56 ] %71 = getelementptr inbounds i8, ptr %.sroa.029.083, i64 8 %.not70 = icmp eq ptr %71, %21 - br i1 %.not70, label %._crit_edge.loopexit, label %.lr.ph + br i1 %.not70, label %._crit_edge, label %.lr.ph -._crit_edge.loopexit: ; preds = %70 - %72 = and i8 %.167, 1 - br label %._crit_edge - -._crit_edge: ; preds = %._crit_edge.loopexit, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit - %.066.lcssa = phi i8 [ 0, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit ], [ %72, %._crit_edge.loopexit ] - %.064.lcssa = phi i32 [ -1, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit ], [ %.165, %._crit_edge.loopexit ] - %.062.lcssa = phi i32 [ -1, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit ], [ %.163, %._crit_edge.loopexit ] - %.0.lcssa = phi i32 [ -1, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit ], [ %.1, %._crit_edge.loopexit ] +._crit_edge: ; preds = %70, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit + %.066.lcssa = phi i8 [ 0, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit ], [ %.167, %70 ] + %.064.lcssa = phi i32 [ -1, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit ], [ %.165, %70 ] + %.062.lcssa = phi i32 [ -1, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit ], [ %.163, %70 ] + %.0.lcssa = phi i32 [ -1, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit ], [ %.1, %70 ] %.sroa.speculated40 = call i32 @llvm.smax.i32(i32 %.062.lcssa, i32 %.064.lcssa) %.sroa.speculated37 = call i32 @llvm.smin.i32(i32 %.064.lcssa, i32 %.062.lcssa) %reass.sub = sub i32 %.sroa.speculated40, %.sroa.speculated37 - %73 = add i32 %reass.sub, 1 - %.not25 = icmp eq i32 %.0.lcssa, %73 - br i1 %.not25, label %77, label %74 + %72 = add i32 %reass.sub, 1 + %.not25 = icmp eq i32 %.0.lcssa, %72 + br i1 %.not25, label %76, label %73 -74: ; preds = %._crit_edge - %75 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %3) #23 - invoke void (ptr, ...) @_ZN5Yosys9log_errorEPKcz(ptr noundef nonnull @.str.12, ptr noundef %75, i32 noundef %.0.lcssa, i32 noundef %.062.lcssa, i32 noundef %.064.lcssa) #25 - to label %76 unwind label %.loopexit.split-lp +73: ; preds = %._crit_edge + %74 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %3) #23 + invoke void (ptr, ...) @_ZN5Yosys9log_errorEPKcz(ptr noundef nonnull @.str.12, ptr noundef %74, i32 noundef %.0.lcssa, i32 noundef %.062.lcssa, i32 noundef %.064.lcssa) #25 + to label %75 unwind label %.loopexit.split-lp -76: ; preds = %74 +75: ; preds = %73 unreachable -77: ; preds = %._crit_edge - %78 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt5tupleIJiibEESt4lessIS5_ESaISt4pairIKS5_S7_EEEixERSB_(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %3) - to label %79 unwind label %.loopexit73 +76: ; preds = %._crit_edge + %77 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt5tupleIJiibEESt4lessIS5_ESaISt4pairIKS5_S7_EEEixERSB_(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %3) + to label %78 unwind label %.loopexit73 -79: ; preds = %77 - %80 = getelementptr inbounds i8, ptr %78, i64 8 - store i32 %.0.lcssa, ptr %80, align 4 - %81 = getelementptr inbounds i8, ptr %78, i64 4 - store i32 %.sroa.speculated37, ptr %81, align 4 - store i8 %.066.lcssa, ptr %78, align 4 +78: ; preds = %76 + %79 = getelementptr inbounds i8, ptr %77, i64 8 + store i32 %.0.lcssa, ptr %79, align 4 + %80 = getelementptr inbounds i8, ptr %77, i64 4 + store i32 %.sroa.speculated37, ptr %80, align 4 + store i8 %.066.lcssa, ptr %77, align 4 br label %.loopexit -.loopexit: ; preds = %32, %25, %79 +.loopexit: ; preds = %32, %25, %78 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #23 - br label %82 + br label %81 -82: ; preds = %.lr.ph93, %10, %.loopexit - %83 = getelementptr inbounds i8, ptr %.sroa.059.091, i64 8 - %.not68 = icmp eq ptr %83, %7 +81: ; preds = %.lr.ph93, %10, %.loopexit + %82 = getelementptr inbounds i8, ptr %.sroa.059.091, i64 8 + %.not68 = icmp eq ptr %82, %7 br i1 %.not68, label %._crit_edge94, label %.lr.ph93 -._crit_edge94: ; preds = %82, %2 +._crit_edge94: ; preds = %81, %2 ret void } diff --git a/bench/yosys/optimized/show.ll b/bench/yosys/optimized/show.ll index 73c9221ae10..1912f50d6a8 100644 --- a/bench/yosys/optimized/show.ll +++ b/bench/yosys/optimized/show.ll @@ -44021,7 +44021,7 @@ _ZNSt3mapIN5Yosys5RTLIL8IdStringEiSt4lessIS2_ESaISt4pairIKS2_iEEE11lower_boundER %1183 = getelementptr inbounds i8, ptr %1174, i64 36 store i32 0, ptr %1183, align 4 store ptr %1174, ptr %625, align 8 - %1184 = invoke { ptr, ptr } @_ZNSt8_Rb_treeIN5Yosys5RTLIL8IdStringESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4_(ptr noundef nonnull align 8 dereferenceable(48) %220, ptr %.19.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(4) %1182) + %1184 = invoke { ptr, ptr } @_ZNSt8_Rb_treeIN5Yosys5RTLIL8IdStringESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4_(ptr noundef nonnull align 8 dereferenceable(48) %220, ptr nonnull %.19.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(4) %1182) to label %1185 unwind label %1198 1185: ; preds = %1181 @@ -44592,7 +44592,7 @@ _ZNSt3mapIN5Yosys5RTLIL8IdStringEiSt4lessIS2_ESaISt4pairIKS2_iEEE11lower_boundER %1387 = getelementptr inbounds i8, ptr %1378, i64 36 store i32 0, ptr %1387, align 4 store ptr %1378, ptr %629, align 8 - %1388 = invoke { ptr, ptr } @_ZNSt8_Rb_treeIN5Yosys5RTLIL8IdStringESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4_(ptr noundef nonnull align 8 dereferenceable(48) %220, ptr %.19.i.i.i.i.i500, ptr noundef nonnull align 4 dereferenceable(4) %1386) + %1388 = invoke { ptr, ptr } @_ZNSt8_Rb_treeIN5Yosys5RTLIL8IdStringESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4_(ptr noundef nonnull align 8 dereferenceable(48) %220, ptr nonnull %.19.i.i.i.i.i500, ptr noundef nonnull align 4 dereferenceable(4) %1386) to label %1389 unwind label %1402 1389: ; preds = %1385 @@ -45290,7 +45290,7 @@ _ZNSt3mapIN5Yosys5RTLIL8IdStringEiSt4lessIS2_ESaISt4pairIKS2_iEEE11lower_boundER %1642 = getelementptr inbounds i8, ptr %1633, i64 36 store i32 0, ptr %1642, align 4 store ptr %1633, ptr %635, align 8 - %1643 = invoke { ptr, ptr } @_ZNSt8_Rb_treeIN5Yosys5RTLIL8IdStringESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4_(ptr noundef nonnull align 8 dereferenceable(48) %220, ptr %.19.i.i.i.i.i581, ptr noundef nonnull align 4 dereferenceable(4) %1641) + %1643 = invoke { ptr, ptr } @_ZNSt8_Rb_treeIN5Yosys5RTLIL8IdStringESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4_(ptr noundef nonnull align 8 dereferenceable(48) %220, ptr nonnull %.19.i.i.i.i.i581, ptr noundef nonnull align 4 dereferenceable(4) %1641) to label %1644 unwind label %1657 1644: ; preds = %1640 @@ -45603,7 +45603,7 @@ _ZNSt3mapIN5Yosys5RTLIL8IdStringEiSt4lessIS2_ESaISt4pairIKS2_iEEE11lower_boundER %1768 = getelementptr inbounds i8, ptr %1759, i64 36 store i32 0, ptr %1768, align 4 store ptr %1759, ptr %637, align 8 - %1769 = invoke { ptr, ptr } @_ZNSt8_Rb_treeIN5Yosys5RTLIL8IdStringESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4_(ptr noundef nonnull align 8 dereferenceable(48) %220, ptr %.19.i.i.i.i.i625, ptr noundef nonnull align 4 dereferenceable(4) %1767) + %1769 = invoke { ptr, ptr } @_ZNSt8_Rb_treeIN5Yosys5RTLIL8IdStringESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4_(ptr noundef nonnull align 8 dereferenceable(48) %220, ptr nonnull %.19.i.i.i.i.i625, ptr noundef nonnull align 4 dereferenceable(4) %1767) to label %1770 unwind label %1783 1770: ; preds = %1766 @@ -76908,7 +76908,7 @@ _ZNSt3mapIN5Yosys5RTLIL8IdStringEiSt4lessIS2_ESaISt4pairIKS2_iEEE11lower_boundER .critedge.i: ; preds = %28, %_ZNSt3mapIN5Yosys5RTLIL8IdStringEiSt4lessIS2_ESaISt4pairIKS2_iEEE11lower_boundERS6_.exit.i store ptr %1, ptr %5, align 8 - %32 = call ptr @_ZNSt8_Rb_treeIN5Yosys5RTLIL8IdStringESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS4_EESG_IJEEEEESt17_Rb_tree_iteratorIS5_ESt23_Rb_tree_const_iteratorIS5_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %7, ptr %.19.i.i.i.i, ptr noundef nonnull align 1 dereferenceable(1) @_ZStL19piecewise_construct, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 1 dereferenceable(1) %6) + %32 = call ptr @_ZNSt8_Rb_treeIN5Yosys5RTLIL8IdStringESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS4_EESG_IJEEEEESt17_Rb_tree_iteratorIS5_ESt23_Rb_tree_const_iteratorIS5_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %7, ptr nonnull %.19.i.i.i.i, ptr noundef nonnull align 1 dereferenceable(1) @_ZStL19piecewise_construct, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 1 dereferenceable(1) %6) br label %_ZNSt3mapIN5Yosys5RTLIL8IdStringEiSt4lessIS2_ESaISt4pairIKS2_iEEEixERS6_.exit _ZNSt3mapIN5Yosys5RTLIL8IdStringEiSt4lessIS2_ESaISt4pairIKS2_iEEEixERS6_.exit: ; preds = %28, %.critedge.i @@ -79905,7 +79905,7 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %93 = getelementptr i8, ptr %85, i64 24 %.val10.i.i = load ptr, ptr %93, align 8 %94 = icmp eq ptr %.val10.i.i, null - br i1 %94, label %.thread.i, label %151 + br i1 %94, label %.thread.i, label %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N12_GLOBAL__N_110ShowWorker8net_connEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESM_IJEEEEESt17_Rb_tree_iteratorISB_ESt23_Rb_tree_const_iteratorISB_EDpOT_.exit 95: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i.i %.02529.i15.i.i = load ptr, ptr %3, align 8 @@ -80066,9 +80066,9 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %150 = icmp slt i32 %146, 0 br i1 %150, label %.thread.i, label %164 -151: ; preds = %130, %118, %92, %80, %53 - %.sroa.083.0.i.i = phi ptr [ null, %53 ], [ %82, %80 ], [ null, %118 ], [ %.08.lcssa.i.i.i17, %92 ], [ %123, %130 ] - %.sroa.12.0.i.i = phi ptr [ %54, %53 ], [ %82, %80 ], [ %120, %118 ], [ %.08.lcssa.i.i.i17, %92 ], [ %123, %130 ] +151: ; preds = %130, %118, %80, %53 + %.sroa.083.0.i.i = phi ptr [ null, %53 ], [ %82, %80 ], [ null, %118 ], [ %123, %130 ] + %.sroa.12.0.i.i = phi ptr [ %54, %53 ], [ %82, %80 ], [ %120, %118 ], [ %123, %130 ] %.not.i = icmp eq ptr %.sroa.12.0.i.i, null br i1 %.not.i, label %164, label %.thread.i @@ -80096,9 +80096,10 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %159 = icmp slt i32 %155, 0 br label %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N12_GLOBAL__N_110ShowWorker8net_connEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESM_IJEEEEESt17_Rb_tree_iteratorISB_ESt23_Rb_tree_const_iteratorISB_EDpOT_.exit -_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N12_GLOBAL__N_110ShowWorker8net_connEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESM_IJEEEEESt17_Rb_tree_iteratorISB_ESt23_Rb_tree_const_iteratorISB_EDpOT_.exit: ; preds = %.thread.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i - %160 = phi i1 [ true, %.thread.i ], [ %159, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i ] - tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %160, ptr noundef nonnull %20, ptr noundef nonnull %.sroa.12.0.i12.i, ptr noundef nonnull align 8 dereferenceable(32) %4) #27 +_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N12_GLOBAL__N_110ShowWorker8net_connEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESM_IJEEEEESt17_Rb_tree_iteratorISB_ESt23_Rb_tree_const_iteratorISB_EDpOT_.exit: ; preds = %92, %.thread.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i + %.sroa.12.0.i12.i25 = phi ptr [ %.sroa.12.0.i12.i, %.thread.i ], [ %.sroa.12.0.i12.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i ], [ %.08.lcssa.i.i.i17, %92 ] + %160 = phi i1 [ true, %.thread.i ], [ %159, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i ], [ true, %92 ] + tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %160, ptr noundef nonnull %20, ptr noundef nonnull %.sroa.12.0.i12.i25, ptr noundef nonnull align 8 dereferenceable(32) %4) #27 %161 = getelementptr inbounds i8, ptr %0, i64 40 %162 = load i64, ptr %161, align 8 %163 = add i64 %162, 1 diff --git a/bench/yosys/optimized/submod.ll b/bench/yosys/optimized/submod.ll index 2a1162df36e..c18ed33135e 100644 --- a/bench/yosys/optimized/submod.ll +++ b/bench/yosys/optimized/submod.ll @@ -37938,7 +37938,7 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %88 = getelementptr i8, ptr %80, i64 24 %.val10.i.i = load ptr, ptr %88, align 8 %89 = icmp eq ptr %.val10.i.i, null - br i1 %89, label %.thread.i, label %146 + br i1 %89, label %.thread.i, label %.thread.i.thread 90: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i.i %.02529.i15.i.i = load ptr, ptr %3, align 8 @@ -38099,9 +38099,9 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %145 = icmp slt i32 %141, 0 br i1 %145, label %.thread.i, label %.thread15.i -146: ; preds = %125, %113, %87, %75, %48 - %.sroa.083.0.i.i = phi ptr [ null, %48 ], [ %77, %75 ], [ null, %113 ], [ %.08.lcssa.i.i.i16, %87 ], [ %118, %125 ] - %.sroa.12.0.i.i = phi ptr [ %49, %48 ], [ %77, %75 ], [ %115, %113 ], [ %.08.lcssa.i.i.i16, %87 ], [ %118, %125 ] +146: ; preds = %125, %113, %75, %48 + %.sroa.083.0.i.i = phi ptr [ null, %48 ], [ %77, %75 ], [ null, %113 ], [ %118, %125 ] + %.sroa.12.0.i.i = phi ptr [ %49, %48 ], [ %77, %75 ], [ %115, %113 ], [ %118, %125 ] %.not.i = icmp eq ptr %.sroa.12.0.i.i, null br i1 %.not.i, label %.thread15.i, label %.thread.i @@ -38111,7 +38111,7 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %.not.i.i11.i = icmp ne ptr %.sroa.083.0.i11.i, null %147 = icmp eq ptr %.sroa.12.0.i12.i, %4 %or.cond.i.i.i = select i1 %.not.i.i11.i, i1 true, i1 %147 - br i1 %or.cond.i.i.i, label %155, label %148 + br i1 %or.cond.i.i.i, label %.thread.i.thread, label %148 148: ; preds = %.thread.i %149 = getelementptr inbounds i8, ptr %.sroa.12.0.i12.i, i64 32 @@ -38127,48 +38127,49 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i: ; preds = %148 %154 = icmp slt i32 %150, 0 - br label %155 - -155: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i, %.thread.i - %156 = phi i1 [ true, %.thread.i ], [ %154, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i ] - tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %156, ptr noundef nonnull %20, ptr noundef nonnull %.sroa.12.0.i12.i, ptr noundef nonnull align 8 dereferenceable(32) %4) #24 - %157 = getelementptr inbounds i8, ptr %0, i64 40 - %158 = load i64, ptr %157, align 8 - %159 = add i64 %158, 1 - store i64 %159, ptr %157, align 8 + br label %.thread.i.thread + +.thread.i.thread: ; preds = %87, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i, %.thread.i + %.sroa.12.0.i12.i24 = phi ptr [ %.sroa.12.0.i12.i, %.thread.i ], [ %.sroa.12.0.i12.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i ], [ %.08.lcssa.i.i.i16, %87 ] + %155 = phi i1 [ true, %.thread.i ], [ %154, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i12.i ], [ true, %87 ] + tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %155, ptr noundef nonnull %20, ptr noundef nonnull %.sroa.12.0.i12.i24, ptr noundef nonnull align 8 dereferenceable(32) %4) #24 + %156 = getelementptr inbounds i8, ptr %0, i64 40 + %157 = load i64, ptr %156, align 8 + %158 = add i64 %157, 1 + store i64 %158, ptr %156, align 8 br label %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N12_GLOBAL__N_112SubmodWorker9SubModuleEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESM_IJEEEEESt17_Rb_tree_iteratorISB_ESt23_Rb_tree_const_iteratorISB_EDpOT_.exit .thread15.i: ; preds = %146, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i52.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit38.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i27.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i.i.i %.sroa.01.0.ph.i = phi ptr [ %.sroa.083.0.i.i, %146 ], [ %.sroa.015.0.i51.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i52.i.i ], [ %.sroa.015.0.i26.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i27.i.i ], [ %.sroa.015.0.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit14.i.i.i ], [ %.08.lcssa.i.i.i16, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit38.i.i ] - %160 = getelementptr inbounds i8, ptr %20, i64 152 - %161 = load ptr, ptr %160, align 8 - %.not.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %161, null - br i1 %.not.i.i.i.i.i.i.i.i.i.i.i.i, label %_ZNSt6vectorIN5Yosys7hashlib4poolIPNS0_5RTLIL4CellENS1_8hash_opsIS5_EEE7entry_tESaIS9_EED2Ev.exit.i.i.i.i.i.i.i.i.i, label %162 + %159 = getelementptr inbounds i8, ptr %20, i64 152 + %160 = load ptr, ptr %159, align 8 + %.not.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %160, null + br i1 %.not.i.i.i.i.i.i.i.i.i.i.i.i, label %_ZNSt6vectorIN5Yosys7hashlib4poolIPNS0_5RTLIL4CellENS1_8hash_opsIS5_EEE7entry_tESaIS9_EED2Ev.exit.i.i.i.i.i.i.i.i.i, label %161 -162: ; preds = %.thread15.i - tail call void @_ZdlPv(ptr noundef nonnull %161) #25 +161: ; preds = %.thread15.i + tail call void @_ZdlPv(ptr noundef nonnull %160) #25 br label %_ZNSt6vectorIN5Yosys7hashlib4poolIPNS0_5RTLIL4CellENS1_8hash_opsIS5_EEE7entry_tESaIS9_EED2Ev.exit.i.i.i.i.i.i.i.i.i -_ZNSt6vectorIN5Yosys7hashlib4poolIPNS0_5RTLIL4CellENS1_8hash_opsIS5_EEE7entry_tESaIS9_EED2Ev.exit.i.i.i.i.i.i.i.i.i: ; preds = %162, %.thread15.i - %163 = load ptr, ptr %36, align 8 - %.not.i.i.i1.i.i.i.i.i.i.i.i.i = icmp eq ptr %163, null - br i1 %.not.i.i.i1.i.i.i.i.i.i.i.i.i, label %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N12_GLOBAL__N_112SubmodWorker9SubModuleEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE12_M_drop_nodeEPSt13_Rb_tree_nodeISB_E.exit.i.i, label %164 +_ZNSt6vectorIN5Yosys7hashlib4poolIPNS0_5RTLIL4CellENS1_8hash_opsIS5_EEE7entry_tESaIS9_EED2Ev.exit.i.i.i.i.i.i.i.i.i: ; preds = %161, %.thread15.i + %162 = load ptr, ptr %36, align 8 + %.not.i.i.i1.i.i.i.i.i.i.i.i.i = icmp eq ptr %162, null + br i1 %.not.i.i.i1.i.i.i.i.i.i.i.i.i, label %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N12_GLOBAL__N_112SubmodWorker9SubModuleEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE12_M_drop_nodeEPSt13_Rb_tree_nodeISB_E.exit.i.i, label %163 -164: ; preds = %_ZNSt6vectorIN5Yosys7hashlib4poolIPNS0_5RTLIL4CellENS1_8hash_opsIS5_EEE7entry_tESaIS9_EED2Ev.exit.i.i.i.i.i.i.i.i.i - tail call void @_ZdlPv(ptr noundef nonnull %163) #25 +163: ; preds = %_ZNSt6vectorIN5Yosys7hashlib4poolIPNS0_5RTLIL4CellENS1_8hash_opsIS5_EEE7entry_tESaIS9_EED2Ev.exit.i.i.i.i.i.i.i.i.i + tail call void @_ZdlPv(ptr noundef nonnull %162) #25 br label %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N12_GLOBAL__N_112SubmodWorker9SubModuleEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE12_M_drop_nodeEPSt13_Rb_tree_nodeISB_E.exit.i.i -_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N12_GLOBAL__N_112SubmodWorker9SubModuleEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE12_M_drop_nodeEPSt13_Rb_tree_nodeISB_E.exit.i.i: ; preds = %164, %_ZNSt6vectorIN5Yosys7hashlib4poolIPNS0_5RTLIL4CellENS1_8hash_opsIS5_EEE7entry_tESaIS9_EED2Ev.exit.i.i.i.i.i.i.i.i.i +_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N12_GLOBAL__N_112SubmodWorker9SubModuleEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE12_M_drop_nodeEPSt13_Rb_tree_nodeISB_E.exit.i.i: ; preds = %163, %_ZNSt6vectorIN5Yosys7hashlib4poolIPNS0_5RTLIL4CellENS1_8hash_opsIS5_EEE7entry_tESaIS9_EED2Ev.exit.i.i.i.i.i.i.i.i.i tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #24 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(120) %34) #24 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(152) %21) #24 tail call void @_ZdlPv(ptr noundef nonnull %20) #25 br label %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N12_GLOBAL__N_112SubmodWorker9SubModuleEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESM_IJEEEEESt17_Rb_tree_iteratorISB_ESt23_Rb_tree_const_iteratorISB_EDpOT_.exit -_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N12_GLOBAL__N_112SubmodWorker9SubModuleEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESM_IJEEEEESt17_Rb_tree_iteratorISB_ESt23_Rb_tree_const_iteratorISB_EDpOT_.exit: ; preds = %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N12_GLOBAL__N_112SubmodWorker9SubModuleEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE12_M_drop_nodeEPSt13_Rb_tree_nodeISB_E.exit.i.i, %155, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit - %.sroa.014.0 = phi ptr [ %.19.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit ], [ %20, %155 ], [ %.sroa.01.0.ph.i, %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N12_GLOBAL__N_112SubmodWorker9SubModuleEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE12_M_drop_nodeEPSt13_Rb_tree_nodeISB_E.exit.i.i ] - %165 = getelementptr inbounds i8, ptr %.sroa.014.0, i64 64 - ret ptr %165 +_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N12_GLOBAL__N_112SubmodWorker9SubModuleEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESM_IJEEEEESt17_Rb_tree_iteratorISB_ESt23_Rb_tree_const_iteratorISB_EDpOT_.exit: ; preds = %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N12_GLOBAL__N_112SubmodWorker9SubModuleEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE12_M_drop_nodeEPSt13_Rb_tree_nodeISB_E.exit.i.i, %.thread.i.thread, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit + %.sroa.014.0 = phi ptr [ %.19.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit ], [ %20, %.thread.i.thread ], [ %.sroa.01.0.ph.i, %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N12_GLOBAL__N_112SubmodWorker9SubModuleEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE12_M_drop_nodeEPSt13_Rb_tree_nodeISB_E.exit.i.i ] + %164 = getelementptr inbounds i8, ptr %.sroa.014.0, i64 64 + ret ptr %164 } ; Function Attrs: nounwind diff --git a/bench/z3/optimized/algebraic_numbers.cpp.ll b/bench/z3/optimized/algebraic_numbers.cpp.ll index 5451bdbb73a..a2ee79b3069 100644 --- a/bench/z3/optimized/algebraic_numbers.cpp.ll +++ b/bench/z3/optimized/algebraic_numbers.cpp.ll @@ -5491,10 +5491,14 @@ for.body.i.i: ; preds = %for.body.i.i, %whil store ptr null, ptr %m_ptr.i.i.i, align 8 %it.020.i.i.add = add nuw nsw i64 %it.020.i.i.idx, 16 %cmp8.not.i.i = icmp eq i64 %it.020.i.i.add, 32 - br i1 %cmp8.not.i.i, label %_ZN6vectorI3mpzLb0EjE7reserveEj.exit, label %for.body.i.i, !llvm.loop !12 + br i1 %cmp8.not.i.i, label %_ZN6vectorI3mpzLb0EjE7reserveEj.exit.loopexit, label %for.body.i.i, !llvm.loop !12 + +_ZN6vectorI3mpzLb0EjE7reserveEj.exit.loopexit: ; preds = %for.body.i.i + %.pre = load ptr, ptr %a, align 8 + br label %_ZN6vectorI3mpzLb0EjE7reserveEj.exit -_ZN6vectorI3mpzLb0EjE7reserveEj.exit: ; preds = %for.body.i.i, %_ZNK6vectorI3mpzLb0EjE4sizeEv.exit.thread.i - %8 = load ptr, ptr %a, align 8 +_ZN6vectorI3mpzLb0EjE7reserveEj.exit: ; preds = %_ZN6vectorI3mpzLb0EjE7reserveEj.exit.loopexit, %_ZNK6vectorI3mpzLb0EjE4sizeEv.exit.thread.i + %8 = phi ptr [ %.pre, %_ZN6vectorI3mpzLb0EjE7reserveEj.exit.loopexit ], [ %0, %_ZNK6vectorI3mpzLb0EjE4sizeEv.exit.thread.i ] %cmp.i13 = icmp eq ptr %8, null br i1 %cmp.i13, label %if.then3, label %if.else diff --git a/bench/z3/optimized/smt_context.cpp.ll b/bench/z3/optimized/smt_context.cpp.ll index e5d597dcbc7..17187c372a8 100644 --- a/bench/z3/optimized/smt_context.cpp.ll +++ b/bench/z3/optimized/smt_context.cpp.ll @@ -28648,7 +28648,7 @@ do.end: ; preds = %do.cond br i1 %call55, label %return, label %if.end57 if.end57: ; preds = %do.end - %cmp58 = icmp eq i32 %result.1, 2 + %cmp58 = icmp ne i32 %result.1, 0 %cmp59 = icmp ne i32 %f.121, 0 %or.cond = select i1 %cmp58, i1 %cmp59, i1 false br i1 %or.cond, label %return.sink.split, label %if.end61 @@ -28663,12 +28663,13 @@ land.lhs.true63: ; preds = %if.end61 return.sink.split: ; preds = %land.lhs.true63, %if.end57 %f.121.lcssa.sink = phi i32 [ %f.121, %if.end57 ], [ 7, %land.lhs.true63 ] + %retval.0.ph = phi i32 [ %result.1, %if.end57 ], [ 2, %land.lhs.true63 ] %m_last_search_failure = getelementptr inbounds i8, ptr %this, i64 11388 store i32 %f.121.lcssa.sink, ptr %m_last_search_failure, align 4 br label %return return: ; preds = %if.end47, %return.sink.split, %if.end61, %land.lhs.true63, %do.end, %if.end - %retval.0 = phi i32 [ %call5, %if.end ], [ 1, %do.end ], [ 0, %land.lhs.true63 ], [ %result.1, %if.end61 ], [ 2, %return.sink.split ], [ %ok9.0, %if.end47 ] + %retval.0 = phi i32 [ %call5, %if.end ], [ 1, %do.end ], [ 0, %land.lhs.true63 ], [ %result.1, %if.end61 ], [ %retval.0.ph, %return.sink.split ], [ %ok9.0, %if.end47 ] ret i32 %retval.0 } diff --git a/bench/z3/optimized/upolynomial_factorization.cpp.ll b/bench/z3/optimized/upolynomial_factorization.cpp.ll index 037f4cb7a94..096ff9f1a90 100644 --- a/bench/z3/optimized/upolynomial_factorization.cpp.ll +++ b/bench/z3/optimized/upolynomial_factorization.cpp.ll @@ -2799,7 +2799,7 @@ for.cond2.preheader.preheader: ; preds = %entry br label %for.cond2.preheader for.cond2.preheader: ; preds = %for.cond2.preheader.preheader, %for.end80 - %2 = phi i32 [ %1, %for.cond2.preheader.preheader ], [ %129, %for.end80 ] + %2 = phi i32 [ %1, %for.cond2.preheader.preheader ], [ %128, %for.end80 ] %indvars.iv450 = phi i64 [ 0, %for.cond2.preheader.preheader ], [ %indvars.iv.next451, %for.end80 ] %null_rank.0447 = phi i32 [ 0, %for.cond2.preheader.preheader ], [ %spec.select, %for.end80 ] %cmp4441.not = icmp eq i32 %2, 0 @@ -3679,18 +3679,17 @@ for.inc78: ; preds = %for.inc74, %for.con br i1 %cmp4, label %for.body5, label %for.end80.loopexit, !llvm.loop !21 for.end80.loopexit: ; preds = %for.inc78 - %126 = and i8 %column_found.1, 1 - %127 = xor i8 %126, 1 - %128 = zext nneg i8 %127 to i32 + %126 = xor i8 %column_found.1, 1 + %127 = zext nneg i8 %126 to i32 br label %for.end80 for.end80: ; preds = %for.end80.loopexit, %for.cond2.preheader - %129 = phi i32 [ 0, %for.cond2.preheader ], [ %123, %for.end80.loopexit ] - %column_found.0.lcssa = phi i32 [ 1, %for.cond2.preheader ], [ %128, %for.end80.loopexit ] + %128 = phi i32 [ 0, %for.cond2.preheader ], [ %123, %for.end80.loopexit ] + %column_found.0.lcssa = phi i32 [ 1, %for.cond2.preheader ], [ %127, %for.end80.loopexit ] %spec.select = add i32 %null_rank.0447, %column_found.0.lcssa %indvars.iv.next451 = add nuw nsw i64 %indvars.iv450, 1 - %130 = zext i32 %129 to i64 - %cmp = icmp samesign ult i64 %indvars.iv.next451, %130 + %129 = zext i32 %128 to i64 + %cmp = icmp samesign ult i64 %indvars.iv.next451, %129 br i1 %cmp, label %for.cond2.preheader, label %for.end86.loopexit449, !llvm.loop !22 for.end86.loopexit449: ; preds = %for.end80 @@ -3698,17 +3697,17 @@ for.end86.loopexit449: ; preds = %for.end80 br label %for.end86 for.end86: ; preds = %for.end86.loopexit449, %entry - %131 = phi ptr [ %0, %entry ], [ %.pre, %for.end86.loopexit449 ] + %130 = phi ptr [ %0, %entry ], [ %.pre, %for.end86.loopexit449 ] %null_rank.0.lcssa = phi i32 [ 0, %entry ], [ %spec.select, %for.end86.loopexit449 ] - %132 = load ptr, ptr %131, align 8 - invoke void @_ZN11mpz_managerILb0EE3delEPS0_R3mpz(ptr noundef nonnull align 8 dereferenceable(600) %132, ptr noundef nonnull align 8 dereferenceable(16) %m_num.i) + %131 = load ptr, ptr %130, align 8 + invoke void @_ZN11mpz_managerILb0EE3delEPS0_R3mpz(ptr noundef nonnull align 8 dereferenceable(600) %131, ptr noundef nonnull align 8 dereferenceable(16) %m_num.i) to label %_ZN15_scoped_numeralI13mpzzp_managerED2Ev.exit130 unwind label %terminate.lpad.i129 terminate.lpad.i129: ; preds = %for.end86 - %133 = landingpad { ptr, i32 } + %132 = landingpad { ptr, i32 } catch ptr null - %134 = extractvalue { ptr, i32 } %133, 0 - call void @__clang_call_terminate(ptr %134) #20 + %133 = extractvalue { ptr, i32 } %132, 0 + call void @__clang_call_terminate(ptr %133) #20 unreachable _ZN15_scoped_numeralI13mpzzp_managerED2Ev.exit130: ; preds = %for.end86 diff --git a/bench/zed-rs/optimized/553y3uma3m7pxzk4dar8hjwb6.ll b/bench/zed-rs/optimized/553y3uma3m7pxzk4dar8hjwb6.ll index d3560e24dc8..57ca99b636f 100644 --- a/bench/zed-rs/optimized/553y3uma3m7pxzk4dar8hjwb6.ll +++ b/bench/zed-rs/optimized/553y3uma3m7pxzk4dar8hjwb6.ll @@ -3139,10 +3139,10 @@ define hidden void @"_ZN167_$LT$serde..de..impls..$LT$impl$u20$serde..de..Deseri 9: ; preds = %13, %11 resume { ptr, i32 } %lpad.phi -10: ; preds = %42, %3 - %.sroa.15.0 = phi i64 [ 0, %3 ], [ %.pre-phi.i, %42 ] - %.sroa.9.0 = phi ptr [ inttoptr (i64 8 to ptr), %3 ], [ %.sroa.9.1, %42 ] - %.sroa.09.0 = phi i64 [ 0, %3 ], [ %.sroa.09.1, %42 ] +10: ; preds = %41, %3 + %.sroa.15.0 = phi i64 [ 0, %3 ], [ %.pre-phi.i, %41 ] + %.sroa.9.0 = phi ptr [ inttoptr (i64 8 to ptr), %3 ], [ %.sroa.9.1, %41 ] + %.sroa.09.0 = phi i64 [ 0, %3 ], [ %.sroa.09.1, %41 ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) invoke void @"_ZN75_$LT$serde_json..de..SeqAccess$LT$R$GT$$u20$as$u20$serde..de..SeqAccess$GT$17next_element_seed17hf8e6e023eb089fa5E"(ptr noalias nocapture noundef nonnull sret([16 x i8]) align 8 dereferenceable(16) %4, ptr noalias noundef nonnull align 8 dereferenceable(16) %5) to label %_ZN5serde2de9SeqAccess12next_element17h94cfe3803087363fE.exit unwind label %.loopexit @@ -3152,7 +3152,7 @@ define hidden void @"_ZN167_$LT$serde..de..impls..$LT$impl$u20$serde..de..Deseri cleanup br label %11 -.loopexit.split-lp: ; preds = %41 +.loopexit.split-lp: ; preds = %40 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %11 @@ -3172,7 +3172,7 @@ _ZN5serde2de9SeqAccess12next_element17h94cfe3803087363fE.exit: ; preds = %10 %15 = load i8, ptr %8, align 4, !range !229, !noundef !4 switch i8 %15, label %22 [ i8 3, label %16 - i8 2, label %44 + i8 2, label %43 ] 16: ; preds = %_ZN5serde2de9SeqAccess12next_element17h94cfe3803087363fE.exit @@ -3197,11 +3197,11 @@ _ZN5serde2de9SeqAccess12next_element17h94cfe3803087363fE.exit: ; preds = %10 ._crit_edge.i: ; preds = %22 %.pre2.i = add i64 %.sroa.15.0, 1 - br label %42 + br label %41 24: ; preds = %22 %25 = icmp eq i64 %.sroa.15.0, -1 - br i1 %25, label %41, label %26 + br i1 %25, label %40, label %26 26: ; preds = %24 %27 = add nuw i64 %.sroa.15.0, 1 @@ -3209,55 +3209,53 @@ _ZN5serde2de9SeqAccess12next_element17h94cfe3803087363fE.exit: ; preds = %10 %.sroa.0.0.sroa.speculated.i.i.i.i = call noundef i64 @llvm.umax.i64(i64 %28, i64 %27) %.sroa.0.0.sroa.speculated.i17.i.i.i = call noundef i64 @llvm.umax.i64(i64 %.sroa.0.0.sroa.speculated.i.i.i.i, i64 4) %29 = icmp ugt i64 %.sroa.0.0.sroa.speculated.i.i.i.i, 576460752303423487 - br i1 %29, label %41, label %_ZN4core5alloc6layout6Layout5array5inner17h723f9d59cfd8d3d8E.llvm.10185040963944003897.exit.thread.i.i.i + br i1 %29, label %40, label %_ZN4core5alloc6layout6Layout5array5inner17h723f9d59cfd8d3d8E.llvm.10185040963944003897.exit.thread.i.i.i _ZN4core5alloc6layout6Layout5array5inner17h723f9d59cfd8d3d8E.llvm.10185040963944003897.exit.thread.i.i.i: ; preds = %26 %30 = shl nuw nsw i64 %.sroa.0.0.sroa.speculated.i17.i.i.i, 4 %31 = icmp eq i64 %.sroa.15.0, 0 - br i1 %31, label %37, label %32 + br i1 %31, label %36, label %32 32: ; preds = %_ZN4core5alloc6layout6Layout5array5inner17h723f9d59cfd8d3d8E.llvm.10185040963944003897.exit.thread.i.i.i %33 = shl nuw i64 %.sroa.15.0, 4 - %34 = icmp ne ptr %.sroa.9.0, null + %34 = icmp uge i64 %30, %33 call void @llvm.assume(i1 %34) - %35 = icmp uge i64 %30, %33 - call void @llvm.assume(i1 %35) - %36 = call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.sroa.9.0, i64 noundef %33, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %30) #55, !noalias !300 + %35 = call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.sroa.9.0, i64 noundef %33, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %30) #55, !noalias !300 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i.i.i" -37: ; preds = %_ZN4core5alloc6layout6Layout5array5inner17h723f9d59cfd8d3d8E.llvm.10185040963944003897.exit.thread.i.i.i - %38 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !300 - %39 = call noalias noundef align 8 ptr @__rust_alloc(i64 noundef range(i64 1, 0) %30, i64 noundef range(i64 0, -9223372036854775807) 8) #55, !noalias !300 +36: ; preds = %_ZN4core5alloc6layout6Layout5array5inner17h723f9d59cfd8d3d8E.llvm.10185040963944003897.exit.thread.i.i.i + %37 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !300 + %38 = call noalias noundef align 8 ptr @__rust_alloc(i64 noundef range(i64 1, 0) %30, i64 noundef range(i64 0, -9223372036854775807) 8) #55, !noalias !300 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i.i.i" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i.i.i": ; preds = %37, %32 - %.sroa.06.0.i.i.pn.i.i.i.i = phi ptr [ %36, %32 ], [ %39, %37 ] - %40 = icmp eq ptr %.sroa.06.0.i.i.pn.i.i.i.i, null - br i1 %40, label %41, label %42 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i.i.i": ; preds = %36, %32 + %.sroa.06.0.i.i.pn.i.i.i.i = phi ptr [ %35, %32 ], [ %38, %36 ] + %39 = icmp eq ptr %.sroa.06.0.i.i.pn.i.i.i.i, null + br i1 %39, label %40, label %41 -41: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i.i.i", %26, %24 +40: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i.i.i", %26, %24 %.sroa.4.0.i.ph.i.i = phi i64 [ %30, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i.i.i" ], [ undef, %26 ], [ undef, %24 ] %.sroa.0.0.i.ph.i.i = phi i64 [ 8, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i.i.i" ], [ 0, %26 ], [ 0, %24 ] invoke void @_ZN5alloc7raw_vec12handle_error17hc0e4a0ae60df49a1E(i64 noundef %.sroa.0.0.i.ph.i.i, i64 %.sroa.4.0.i.ph.i.i) #67 to label %.noexc unwind label %.loopexit.split-lp -.noexc: ; preds = %41 +.noexc: ; preds = %40 unreachable -42: ; preds = %._crit_edge.i, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i.i.i" +41: ; preds = %._crit_edge.i, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i.i.i" %.sroa.9.1 = phi ptr [ %.sroa.9.0, %._crit_edge.i ], [ %.sroa.06.0.i.i.pn.i.i.i.i, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i.i.i" ] %.sroa.09.1 = phi i64 [ %.sroa.09.0, %._crit_edge.i ], [ %.sroa.0.0.sroa.speculated.i17.i.i.i, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i.i.i" ] %.pre-phi.i = phi i64 [ %.pre2.i, %._crit_edge.i ], [ %27, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i.i.i" ] - %43 = getelementptr inbounds { i64, i32, i8, [3 x i8] }, ptr %.sroa.9.1, i64 %.sroa.15.0 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %43, ptr noundef nonnull align 8 dereferenceable(12) %.sroa.014, i64 12, i1 false), !noalias !311 - %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %43, i64 12 + %42 = getelementptr inbounds { i64, i32, i8, [3 x i8] }, ptr %.sroa.9.1, i64 %.sroa.15.0 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %42, ptr noundef nonnull align 8 dereferenceable(12) %.sroa.014, i64 12, i1 false), !noalias !311 + %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %42, i64 12 store i8 %15, ptr %.sroa.2.0..sroa_idx, align 4, !noalias !311 - %.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %43, i64 13 + %.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %42, i64 13 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %.sroa.3.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(3) %.sroa.3, i64 3, i1 false), !noalias !311 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) br label %10 -44: ; preds = %_ZN5serde2de9SeqAccess12next_element17h94cfe3803087363fE.exit +43: ; preds = %_ZN5serde2de9SeqAccess12next_element17h94cfe3803087363fE.exit call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) store i64 %.sroa.09.0, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 @@ -3266,7 +3264,7 @@ _ZN4core5alloc6layout6Layout5array5inner17h723f9d59cfd8d3d8E.llvm.10185040963944 store i64 %.sroa.15.0, ptr %.sroa.517.0..sroa_idx, align 8 br label %"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$editor..ClipboardSelection$GT$$GT$17h28e08daab41cd862E.exit8" -"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$editor..ClipboardSelection$GT$$GT$17h28e08daab41cd862E.exit8": ; preds = %20, %16, %44 +"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$editor..ClipboardSelection$GT$$GT$17h28e08daab41cd862E.exit8": ; preds = %20, %16, %43 ret void } diff --git a/bench/zxing/optimized/PDFDetector.cpp.ll b/bench/zxing/optimized/PDFDetector.cpp.ll index 769509c7a80..432c2622add 100644 --- a/bench/zxing/optimized/PDFDetector.cpp.ll +++ b/bench/zxing/optimized/PDFDetector.cpp.ll @@ -2252,7 +2252,7 @@ _ZNK5ZXing9BitMatrix3getEii.exit: ; preds = %_ZNK5ZXing9BitMatri br i1 %.not.i.i.i.i74, label %_ZNK5ZXing9BitMatrix3getEii.exit, label %._crit_edge, !llvm.loop !31 55: ; preds = %.lr.ph, %.critedge - %.059130 = phi i1 [ false, %.lr.ph ], [ %.1, %.critedge ] + %.059130 = phi i8 [ 0, %.lr.ph ], [ %.1, %.critedge ] %.161129 = phi i32 [ %44, %.lr.ph ], [ %.3, %.critedge ] %.063126 = phi i32 [ %44, %.lr.ph ], [ %134, %.critedge ] %.064125 = phi i32 [ 0, %.lr.ph ], [ %.266, %.critedge ] @@ -2276,8 +2276,9 @@ _ZNK5ZXing9BitMatrix3getEii.exit76: ; preds = %55 %66 = getelementptr inbounds i8, ptr %61, i64 %59 %67 = load i8, ptr %66, align 1 %68 = icmp ne i8 %67, 0 - %69 = xor i1 %.059130, %68 - br i1 %69, label %70, label %76 + %69 = zext i1 %68 to i8 + %.not = icmp eq i8 %.059130, %69 + br i1 %.not, label %76, label %70 70: ; preds = %_ZNK5ZXing9BitMatrix3getEii.exit76 %71 = sext i32 %.064125 to i64 @@ -2401,13 +2402,13 @@ _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T_S8_S7_.ex %131 = load ptr, ptr %5, align 8 %132 = getelementptr inbounds i32, ptr %131, i64 %130 store i32 1, ptr %132, align 4 - %133 = xor i1 %.059130, true + %133 = xor i8 %.059130, 1 br label %.critedge .critedge: ; preds = %70, %129 %.266 = phi i32 [ %.064125, %70 ], [ %.165, %129 ] %.3 = phi i32 [ %.161129, %70 ], [ %.2, %129 ] - %.1 = phi i1 [ %.059130, %70 ], [ %133, %129 ] + %.1 = phi i8 [ %.059130, %70 ], [ %133, %129 ] %134 = add i32 %.063126, 1 %exitcond.not = icmp eq i32 %134, %3 br i1 %exitcond.not, label %.critedge._crit_edge, label %55, !llvm.loop !34 diff --git a/bench/zxing/optimized/ReadBarcode.cpp.ll b/bench/zxing/optimized/ReadBarcode.cpp.ll index eeb0b9e0b57..720b9b1fca7 100644 --- a/bench/zxing/optimized/ReadBarcode.cpp.ll +++ b/bench/zxing/optimized/ReadBarcode.cpp.ll @@ -3449,12 +3449,13 @@ _ZNSt6vectorItSaItEE5clearEv.exit.._crit_edge_crit_edge: ; preds = %_ZNSt6vector %35 = phi ptr [ %30, %.lr.ph ], [ %73, %_ZNSt6vectorItSaItEE9push_backEOt.exit ] %.063 = phi ptr [ %20, %.lr.ph ], [ %.1, %_ZNSt6vectorItSaItEE9push_backEOt.exit ] %.02762 = phi ptr [ %20, %.lr.ph ], [ %74, %_ZNSt6vectorItSaItEE9push_backEOt.exit ] - %.02861 = phi i1 [ false, %.lr.ph ], [ %.129, %_ZNSt6vectorItSaItEE9push_backEOt.exit ] + %.02861 = phi i8 [ 0, %.lr.ph ], [ %.129, %_ZNSt6vectorItSaItEE9push_backEOt.exit ] %36 = load i8, ptr %.02762, align 1 %37 = load i8, ptr %31, align 8 %38 = icmp ule i8 %36, %37 - %39 = xor i1 %.02861, %38 - br i1 %39, label %40, label %_ZNSt6vectorItSaItEE9push_backEOt.exit + %39 = zext i1 %38 to i8 + %.not32 = icmp eq i8 %.02861, %39 + br i1 %.not32, label %_ZNSt6vectorItSaItEE9push_backEOt.exit, label %40 40: ; preds = %34 %41 = ptrtoint ptr %.02762 to i64 @@ -3530,7 +3531,7 @@ _ZNSt6vectorItSaItEE17_M_realloc_insertIJtEEEvN9__gnu_cxx17__normal_iteratorIPtS _ZNSt6vectorItSaItEE9push_backEOt.exit: ; preds = %_ZNSt6vectorItSaItEE17_M_realloc_insertIJtEEEvN9__gnu_cxx17__normal_iteratorIPtS1_EEDpOT_.exit.i.i, %47, %34 %73 = phi ptr [ %35, %34 ], [ %49, %47 ], [ %70, %_ZNSt6vectorItSaItEE17_M_realloc_insertIJtEEEvN9__gnu_cxx17__normal_iteratorIPtS1_EEDpOT_.exit.i.i ] - %.129 = phi i1 [ %.02861, %34 ], [ %38, %47 ], [ %38, %_ZNSt6vectorItSaItEE17_M_realloc_insertIJtEEEvN9__gnu_cxx17__normal_iteratorIPtS1_EEDpOT_.exit.i.i ] + %.129 = phi i8 [ %.02861, %34 ], [ %39, %47 ], [ %39, %_ZNSt6vectorItSaItEE17_M_realloc_insertIJtEEEvN9__gnu_cxx17__normal_iteratorIPtS1_EEDpOT_.exit.i.i ] %.1 = phi ptr [ %.063, %34 ], [ %.02762, %47 ], [ %.02762, %_ZNSt6vectorItSaItEE17_M_realloc_insertIJtEEEvN9__gnu_cxx17__normal_iteratorIPtS1_EEDpOT_.exit.i.i ] %74 = getelementptr inbounds i8, ptr %.02762, i64 %32 %.not = icmp eq ptr %74, %25 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index 820278fb20a..2610613dfa7 100755 --- a/scripts/setup_pre_commit_patch.sh +++ b/scripts/setup_pre_commit_patch.sh @@ -2,7 +2,7 @@ set -euo pipefail shopt -s inherit_errexit -export GITHUB_PATCH_ID="/llvm-project/commit/" +export GITHUB_PATCH_ID=llvm/llvm-project/pull/114689 # Please rebase manually # git fetch origin