diff --git a/bench/abc/optimized/giaResub.c.ll b/bench/abc/optimized/giaResub.c.ll index 81facd7ffb1..1194ca76e0d 100644 --- a/bench/abc/optimized/giaResub.c.ll +++ b/bench/abc/optimized/giaResub.c.ll @@ -10246,12 +10246,12 @@ define range(i32 1, 0) i32 @Gia_ManResubPerformMux_rec(ptr noundef %0, i32 nound %4 = icmp eq i32 %2, 0 %5 = icmp slt i32 %1, 3 %or.cond = or i1 %5, %4 - br i1 %or.cond, label %149, label %6 + br i1 %or.cond, label %150, label %6 6: ; preds = %3 %7 = tail call i32 @Gia_ManResubFindBestBinate(ptr noundef %0) %8 = icmp eq i32 %7, -1 - br i1 %8, label %149, label %9 + br i1 %8, label %150, label %9 9: ; preds = %6 %10 = load i32, ptr %0, align 8 @@ -10404,11 +10404,11 @@ Abc_TtAndSharp.exit107: ; preds = %.lr.ph22.i103, %.lr 70: ; preds = %68, %69 %.not82 = icmp eq ptr %13, null - br i1 %.not82, label %149, label %71 + br i1 %.not82, label %150, label %71 71: ; preds = %70 tail call void @free(ptr noundef nonnull %13) #30 - br label %149 + br label %150 .thread: ; preds = %Abc_TtAndSharp.exit107, %64 %.068146 = phi i32 [ %66, %64 ], [ %62, %Abc_TtAndSharp.exit107 ] @@ -10529,7 +10529,7 @@ Abc_TtAndSharp.exit139.thread: ; preds = %.preheader.i132, %. %.neg80 = add i32 %.neg.neg, %1 %109 = add i32 %.neg80, %.neg79 %110 = icmp slt i32 %109, 3 - br i1 %110, label %149, label %111 + br i1 %110, label %150, label %111 111: ; preds = %106 %112 = tail call i32 @Gia_ManResubPerform_rec(ptr noundef nonnull %0, i32 noundef %1, i32 noundef 0) @@ -10540,7 +10540,7 @@ Abc_TtAndSharp.exit139.thread: ; preds = %.preheader.i132, %. %115 = add nsw i32 %2, -1 %116 = tail call i32 @Gia_ManResubPerformMux_rec(ptr noundef nonnull %0, i32 noundef %1, i32 noundef %115) %117 = icmp eq i32 %116, -1 - br i1 %117, label %149, label %.thread149 + br i1 %117, label %150, label %.thread149 .thread149: ; preds = %111, %114 %.069151 = phi i32 [ %116, %114 ], [ %112, %111 ] @@ -10577,17 +10577,18 @@ Abc_TtAndSharp.exit139.thread: ; preds = %.preheader.i132, %. %.val.i143 = load i32, ptr %140, align 4 %141 = sdiv i32 %.val.i143, 2 %142 = add nsw i32 %141, %.val18.i142 - %143 = tail call i32 @llvm.smin.i32(i32 %127, i32 %136) - %144 = tail call i32 @llvm.smax.i32(i32 %127, i32 %136) - %145 = or disjoint i32 %143, 1 + %143 = icmp sgt i32 %124, %133 + %144 = select i1 %143, i32 %136, i32 %127 + %145 = select i1 %143, i32 %127, i32 %136 %146 = or disjoint i32 %144, 1 - tail call fastcc void @Vec_IntPushTwo(ptr noundef %139, i32 noundef %145, i32 noundef %146) - %147 = shl nsw i32 %142, 1 - %148 = or disjoint i32 %147, 1 - br label %149 - -149: ; preds = %114, %106, %71, %70, %6, %3, %.thread149 - %.0 = phi i32 [ %148, %.thread149 ], [ -1, %3 ], [ -1, %6 ], [ -1, %70 ], [ -1, %71 ], [ -1, %106 ], [ -1, %114 ] + %147 = or disjoint i32 %145, 1 + tail call fastcc void @Vec_IntPushTwo(ptr noundef %139, i32 noundef %146, i32 noundef %147) + %148 = shl nsw i32 %142, 1 + %149 = or disjoint i32 %148, 1 + br label %150 + +150: ; preds = %114, %106, %71, %70, %6, %3, %.thread149 + %.0 = phi i32 [ %149, %.thread149 ], [ -1, %3 ], [ -1, %6 ], [ -1, %70 ], [ -1, %71 ], [ -1, %106 ], [ -1, %114 ] ret i32 %.0 } diff --git a/bench/abseil-cpp/optimized/raw_hash_set_test.cc.ll b/bench/abseil-cpp/optimized/raw_hash_set_test.cc.ll index 3664d0b8e04..26a3c5b486c 100644 --- a/bench/abseil-cpp/optimized/raw_hash_set_test.cc.ll +++ b/bench/abseil-cpp/optimized/raw_hash_set_test.cc.ll @@ -72620,15 +72620,15 @@ invoke.cont9.i: ; preds = %while.end.i.i.i.i, %sub.ptr.lhs.cast.i15.i = ptrtoint ptr %64 to i64 %sub.ptr.rhs.cast.i16.i = ptrtoint ptr %65 to i64 %sub.ptr.sub.i17.i = sub i64 %sub.ptr.lhs.cast.i15.i, %sub.ptr.rhs.cast.i16.i - %sub.ptr.div.i18.i = ashr exact i64 %sub.ptr.sub.i17.i, 3 %sub.ptr.lhs.cast.i20.i = ptrtoint ptr %probe_histogram.i.sroa.13.4 to i64 %sub.ptr.rhs.cast.i21.i = ptrtoint ptr %probe_histogram.i.sroa.0.4 to i64 %sub.ptr.sub.i22.i = sub i64 %sub.ptr.lhs.cast.i20.i, %sub.ptr.rhs.cast.i21.i - %sub.ptr.div.i23.i = ashr exact i64 %sub.ptr.sub.i22.i, 3 - %cmp.i24.i = icmp ult i64 %sub.ptr.div.i18.i, %sub.ptr.div.i23.i + %cmp.i24.i = icmp ult i64 %sub.ptr.sub.i17.i, %sub.ptr.sub.i22.i br i1 %cmp.i24.i, label %if.then.i27.i, label %invoke.cont17.i if.then.i27.i: ; preds = %invoke.cont9.i + %sub.ptr.div.i23.i = ashr exact i64 %sub.ptr.sub.i22.i, 3 + %sub.ptr.div.i18.i = ashr exact i64 %sub.ptr.sub.i17.i, 3 %sub.i.i = sub nuw nsw i64 %sub.ptr.div.i23.i, %sub.ptr.div.i18.i %66 = load ptr, ptr %_M_end_of_storage.i, align 8 %sub.ptr.lhs.cast.i = ptrtoint ptr %66 to i64 @@ -72734,7 +72734,8 @@ for.body.i.i: ; preds = %invoke.cont17.i, %f br i1 %cmp.i.not.i.i, label %for.body41.preheader.i, label %for.body.i.i, !llvm.loop !3062 for.body41.preheader.i: ; preds = %for.body.i.i - %umax.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i23.i, i64 1) + %sub.ptr.div.i35.i = ashr exact i64 %sub.ptr.sub.i22.i, 3 + %umax.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i35.i, i64 1) br label %for.body41.i for.body41.i: ; preds = %for.body41.i, %for.body41.preheader.i @@ -74876,7 +74877,7 @@ if.then9: ; preds = %if.then %sub.ptr.rhs.cast.i = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 - %cmp15 = icmp ugt i64 %sub.ptr.div.i, %sub.ptr.div.i.i.i + %cmp15 = icmp ugt i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i.i br i1 %cmp15, label %_ZSt22__uninitialized_move_aIPlS0_SaIlEET0_T_S3_S2_RT1_.exit, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEmEvRT_T0_.exit _ZSt22__uninitialized_move_aIPlS0_SaIlEET0_T_S3_S2_RT1_.exit: ; preds = %if.then9 @@ -77761,15 +77762,15 @@ invoke.cont21.i: ; preds = %while.end.i.i.i.i.i %sub.ptr.lhs.cast.i34.i = ptrtoint ptr %68 to i64 %sub.ptr.rhs.cast.i35.i = ptrtoint ptr %69 to i64 %sub.ptr.sub.i36.i = sub i64 %sub.ptr.lhs.cast.i34.i, %sub.ptr.rhs.cast.i35.i - %sub.ptr.div.i37.i = ashr exact i64 %sub.ptr.sub.i36.i, 3 %sub.ptr.lhs.cast.i39.i = ptrtoint ptr %probe_histogram.sroa.12.3.i to i64 %sub.ptr.rhs.cast.i40.i = ptrtoint ptr %probe_histogram.sroa.0.3.i to i64 %sub.ptr.sub.i41.i = sub i64 %sub.ptr.lhs.cast.i39.i, %sub.ptr.rhs.cast.i40.i %sub.ptr.div.i42.i = ashr exact i64 %sub.ptr.sub.i41.i, 3 - %cmp.i.i = icmp ult i64 %sub.ptr.div.i37.i, %sub.ptr.div.i42.i + %cmp.i.i = icmp ult i64 %sub.ptr.sub.i36.i, %sub.ptr.sub.i41.i br i1 %cmp.i.i, label %if.then.i.i, label %invoke.cont29.i if.then.i.i: ; preds = %invoke.cont21.i + %sub.ptr.div.i37.i = ashr exact i64 %sub.ptr.sub.i36.i, 3 %sub.i.i = sub nuw nsw i64 %sub.ptr.div.i42.i, %sub.ptr.div.i37.i %70 = load ptr, ptr %_M_end_of_storage.i, align 8 %sub.ptr.lhs.cast.i = ptrtoint ptr %70 to i64 diff --git a/bench/actix-rs/optimized/4vksfexudgt1qids.ll b/bench/actix-rs/optimized/4vksfexudgt1qids.ll index b368d47a56a..a7a9598310a 100644 --- a/bench/actix-rs/optimized/4vksfexudgt1qids.ll +++ b/bench/actix-rs/optimized/4vksfexudgt1qids.ll @@ -1706,7 +1706,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17hfb4783fc25b01e0cE.exit.th 317: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h280ec58ea6554c49E.exit.i.i" call void @llvm.experimental.noalias.scope.decl(metadata !155) - %318 = icmp eq i64 %313, %310 + %318 = icmp eq ptr %.sroa.5153.sroa.6.0.copyload.i.i, %.sroa.5153.sroa.0.0.copyload.i.i br i1 %318, label %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9pop_front17hbd03db94297fd2b3E.exit.thread.i.i.i", label %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9pop_front17hbd03db94297fd2b3E.exit.i.i.i" "_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9pop_front17hbd03db94297fd2b3E.exit.thread.i.i.i": ; preds = %338, %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9pop_front17hbd03db94297fd2b3E.exit.i.i.i", %317, %316 @@ -6534,7 +6534,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h21ec12be87758784E.exit.thread" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #36, !noalias !830 br label %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit @@ -6593,7 +6593,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h5189aa5b513d081aE.exit.thread" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 2, i64 noundef %11) #36, !noalias !834 br label %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit @@ -6652,7 +6652,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2a5ff6a611c644dbE.exit.thread" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 2, i64 noundef %11) #36, !noalias !838 br label %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit @@ -7075,7 +7075,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hedc0225ad56fa8dbE.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #36, !noalias !884 br label %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.i @@ -7262,7 +7262,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h787 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 2 @@ -7273,30 +7273,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h787 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 4) #36 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %17 = shl nuw i64 %1, 2 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #36 - %.not34 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not34, ptr inttoptr (i64 4 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not34, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" - %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #36 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 4 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not34, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" + %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 + br label %21 -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -7324,7 +7322,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h851 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 2 @@ -7335,30 +7333,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h851 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 2) #36 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %17 = shl nuw i64 %1, 2 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 2, i64 noundef %17) #36 - %.not34 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not34, ptr inttoptr (i64 2 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not34, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" - %storemerge = phi ptr [ inttoptr (i64 2 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %18 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 2, i64 noundef %17) #36 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 2 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not34, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" + %storemerge = phi ptr [ inttoptr (i64 2 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 + br label %21 -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -7386,7 +7382,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hb30 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 2 @@ -7397,30 +7393,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hb30 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 2) #36 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %17 = shl nuw i64 %1, 2 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 2, i64 noundef %17) #36 - %.not34 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not34, ptr inttoptr (i64 2 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not34, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" - %storemerge = phi ptr [ inttoptr (i64 2 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %18 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 2, i64 noundef %17) #36 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 2 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not34, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" + %storemerge = phi ptr [ inttoptr (i64 2 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 + br label %21 -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -7510,7 +7504,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h21ec12be87758784E.exit.thread.i" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #36, !noalias !905 br label %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.i @@ -7637,7 +7631,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h5189aa5b513d081aE.exit.thread.i" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 2, i64 noundef %11) #36, !noalias !919 br label %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.i @@ -7755,7 +7749,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2a5ff6a611c644dbE.exit.thread.i" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 2, i64 noundef %11) #36, !noalias !933 br label %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.i diff --git a/bench/annoy/optimized/annoymodule.ll b/bench/annoy/optimized/annoymodule.ll index a8750ddb9b3..8b98594dc27 100644 --- a/bench/annoy/optimized/annoymodule.ll +++ b/bench/annoy/optimized/annoymodule.ll @@ -4899,7 +4899,7 @@ _ZNSt6vectorIiSaIiEE9push_backERKi.exit118: ; preds = %_ZNSt6vectorIiSaIiE br i1 %366, label %.lr.ph169, label %.loopexit141, !llvm.loop !21 367: ; preds = %263 - %368 = icmp ugt i64 %269, %277 + %368 = icmp ugt i64 %268, %276 %369 = zext i1 %368 to i64 br i1 %2, label %370, label %373 @@ -5731,7 +5731,7 @@ define linkonce_odr void @_ZNSt6vectorIiSaIiEE15_M_range_insertIN9__gnu_cxx17__n %18 = ptrtoint ptr %1 to i64 %19 = sub i64 %15, %18 %20 = ashr exact i64 %19, 2 - %21 = icmp ugt i64 %20, %9 + %21 = icmp ugt i64 %19, %8 br i1 %21, label %22, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEmEvRT_T0_.exit 22: ; preds = %17 @@ -7171,7 +7171,7 @@ define linkonce_odr void @_ZNSt6vectorIiSaIiEE15_M_range_insertIPKiEEvN9__gnu_cx %18 = ptrtoint ptr %1 to i64 %19 = sub i64 %15, %18 %20 = ashr exact i64 %19, 2 - %21 = icmp ugt i64 %20, %9 + %21 = icmp ugt i64 %19, %8 br i1 %21, label %22, label %_ZSt7advanceIPKimEvRT_T0_.exit 22: ; preds = %17 @@ -10372,7 +10372,7 @@ _ZNSt6vectorIiSaIiEE9push_backERKi.exit118: ; preds = %_ZNSt6vectorIiSaIiE br i1 %370, label %.lr.ph168, label %.loopexit140, !llvm.loop !72 371: ; preds = %267 - %372 = icmp ugt i64 %273, %281 + %372 = icmp ugt i64 %272, %280 %373 = zext i1 %372 to i64 br i1 %2, label %374, label %377 @@ -14030,7 +14030,7 @@ _ZNSt6vectorIiSaIiEE9push_backERKi.exit118: ; preds = %_ZNSt6vectorIiSaIiE br i1 %370, label %.lr.ph168, label %.loopexit140, !llvm.loop !99 371: ; preds = %267 - %372 = icmp ugt i64 %273, %281 + %372 = icmp ugt i64 %272, %280 %373 = zext i1 %372 to i64 br i1 %2, label %374, label %377 @@ -18312,7 +18312,7 @@ _ZNSt6vectorIiSaIiEE9push_backERKi.exit118: ; preds = %_ZNSt6vectorIiSaIiE br i1 %338, label %.lr.ph167, label %.loopexit140, !llvm.loop !127 339: ; preds = %235 - %340 = icmp ugt i64 %241, %249 + %340 = icmp ugt i64 %240, %248 %341 = zext i1 %340 to i64 br i1 %2, label %342, label %345 @@ -22546,7 +22546,7 @@ _ZNSt6vectorIiSaIiEE9push_backERKi.exit118: ; preds = %_ZNSt6vectorIiSaIiE br i1 %373, label %.lr.ph168, label %.loopexit140, !llvm.loop !168 374: ; preds = %270 - %375 = icmp ugt i64 %276, %284 + %375 = icmp ugt i64 %275, %283 %376 = zext i1 %375 to i64 br i1 %2, label %377, label %380 diff --git a/bench/arrow/optimized/diff.cc.ll b/bench/arrow/optimized/diff.cc.ll index a96acfc763a..c88016227bc 100644 --- a/bench/arrow/optimized/diff.cc.ll +++ b/bench/arrow/optimized/diff.cc.ll @@ -5606,17 +5606,17 @@ if.then: ; preds = %entry br label %cleanup lpad.loopexit: ; preds = %while.body - %lpad.loopexit20 = landingpad { ptr, i32 } + %lpad.loopexit17 = landingpad { ptr, i32 } cleanup br label %lpad lpad.loopexit.split-lp: ; preds = %while.end, %_ZNSt10unique_ptrIN5arrow15ValueComparatorESt14default_deleteIS1_EED2Ev.exit, %if.then.i, %_ZSt4copyIPKbSt13_Bit_iteratorET0_T_S4_S3_.exit50.i - %lpad.loopexit.split-lp21 = landingpad { ptr, i32 } + %lpad.loopexit.split-lp18 = landingpad { ptr, i32 } cleanup br label %lpad lpad: ; preds = %lpad.loopexit.split-lp, %lpad.loopexit - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit20, %lpad.loopexit ], [ %lpad.loopexit.split-lp21, %lpad.loopexit.split-lp ] + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit17, %lpad.loopexit ], [ %lpad.loopexit.split-lp18, %lpad.loopexit.split-lp ] call void @_ZN5arrow6ResultISt10unique_ptrINS_15ValueComparatorESt14default_deleteIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp) #20 resume { ptr, i32 } %lpad.phi @@ -5692,8 +5692,10 @@ _ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i: ; preds = %if.then.i13.i, if.else.i: ; preds = %invoke.cont21 %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %this, i64 88 %21 = load ptr, ptr %_M_finish.i.i, align 8 - %cmp24.not.i = icmp eq ptr %21, %20 - br i1 %cmp24.not.i, label %_ZSt22__uninitialized_copy_aIPKlPllET0_T_S4_S3_RSaIT1_E.exit.i, label %if.then25.i + %sub.ptr.lhs.cast.i14.i = ptrtoint ptr %21 to i64 + %sub.ptr.sub.i16.i = sub i64 %sub.ptr.lhs.cast.i14.i, %sub.ptr.rhs.cast.i.i + %cmp24.not.i = icmp ult i64 %sub.ptr.sub.i16.i, 8 + br i1 %cmp24.not.i, label %if.else29.i, label %if.then25.i if.then25.i: ; preds = %if.else.i store i64 %add.i, ptr %20, align 8 @@ -5706,75 +5708,83 @@ invoke.cont.i.i: ; preds = %if.then25.i store ptr %add.ptr.i.i.i.i.i.i, ptr %_M_finish.i.i, align 8 br label %invoke.cont24 -_ZSt22__uninitialized_copy_aIPKlPllET0_T_S4_S3_RSaIT1_E.exit.i: ; preds = %if.else.i - %sub.ptr.lhs.cast.i14.i = ptrtoint ptr %21 to i64 - %sub.ptr.sub.i16.i = sub i64 %sub.ptr.lhs.cast.i14.i, %sub.ptr.rhs.cast.i.i - %gepdiff = sub nsw i64 8, %sub.ptr.sub.i16.i - %incdec.ptr4.sink.i.i45.i.ptr = getelementptr inbounds i8, ptr %ref.tmp16, i64 %sub.ptr.sub.i16.i - call void @llvm.memmove.p0.p0.i64(ptr align 8 %21, ptr nonnull align 8 %incdec.ptr4.sink.i.i45.i.ptr, i64 %gepdiff, i1 false) - %add.ptr.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %21, i64 %gepdiff +if.else29.i: ; preds = %if.else.i + %add.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp16, i64 %sub.ptr.sub.i16.i + %tobool.not.i.i.i.i.i28.i = icmp eq ptr %21, %20 + br i1 %tobool.not.i.i.i.i.i28.i, label %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i, label %if.then.i.i.i.i.i29.i + +if.then.i.i.i.i.i29.i: ; preds = %if.else29.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %20, ptr noundef nonnull align 8 dereferenceable(1) %ref.tmp16, i64 %sub.ptr.sub.i16.i, i1 false) + %.pre49.i = load ptr, ptr %_M_finish.i.i, align 8 + br label %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i + +_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i: ; preds = %if.then.i.i.i.i.i29.i, %if.else29.i + %22 = phi ptr [ %21, %if.else29.i ], [ %.pre49.i, %if.then.i.i.i.i.i29.i ] + %gepdiff = sub nuw nsw i64 8, %sub.ptr.sub.i16.i + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %22, ptr nonnull align 8 %add.ptr.i.i.i, i64 %gepdiff, i1 false) + %add.ptr.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %22, i64 %gepdiff store ptr %add.ptr.i.i.i.i.i.i.i.i.i, ptr %_M_finish.i.i, align 8 br label %invoke.cont24 -invoke.cont24: ; preds = %_ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i, %if.then25.i, %invoke.cont.i.i, %_ZSt22__uninitialized_copy_aIPKlPllET0_T_S4_S3_RSaIT1_E.exit.i +invoke.cont24: ; preds = %_ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i, %if.then25.i, %invoke.cont.i.i, %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i store i8 1, ptr %ref.tmp27, align 1 %insert_ = getelementptr inbounds nuw i8, ptr %this, i64 104 %add.ptr.i.i7 = getelementptr inbounds nuw i8, ptr %ref.tmp27, i64 1 %_M_finish.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 120 - %22 = load ptr, ptr %_M_finish.i.i.i, align 8 + %23 = load ptr, ptr %_M_finish.i.i.i, align 8 %_M_offset.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 128 - %23 = load i32, ptr %_M_offset.i.i.i.i, align 8 - %24 = load ptr, ptr %insert_, align 8 - %sub.ptr.lhs.cast.i.i6.i = ptrtoint ptr %22 to i64 - %sub.ptr.rhs.cast.i.i7.i = ptrtoint ptr %24 to i64 + %24 = load i32, ptr %_M_offset.i.i.i.i, align 8 + %25 = load ptr, ptr %insert_, align 8 + %sub.ptr.lhs.cast.i.i6.i = ptrtoint ptr %23 to i64 + %sub.ptr.rhs.cast.i.i7.i = ptrtoint ptr %25 to i64 %sub.ptr.sub.i.i8.i = sub i64 %sub.ptr.lhs.cast.i.i6.i, %sub.ptr.rhs.cast.i.i7.i %mul.i.i.i = shl nsw i64 %sub.ptr.sub.i.i8.i, 3 - %conv.i.i.i = zext i32 %23 to i64 + %conv.i.i.i = zext i32 %24 to i64 %add.i.i.i = add nsw i64 %mul.i.i.i, %conv.i.i.i %cmp.i13 = icmp ugt i64 %add.i.i.i, 1 br i1 %cmp.i13, label %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i, label %if.else.i14 _ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i: ; preds = %invoke.cont24 - %25 = load i64, ptr %24, align 8 - %or.i.i.i.i.i.i.i = or i64 %25, 1 - store i64 %or.i.i.i.i.i.i.i, ptr %24, align 8 - store ptr %24, ptr %_M_finish.i.i.i, align 8 + %26 = load i64, ptr %25, align 8 + %or.i.i.i.i.i.i.i = or i64 %26, 1 + store i64 %or.i.i.i.i.i.i.i, ptr %25, align 8 + store ptr %25, ptr %_M_finish.i.i.i, align 8 store i32 1, ptr %_M_offset.i.i.i.i, align 8 br label %invoke.cont32 if.else.i14: ; preds = %invoke.cont24 - %incdec.ptr.i.i.i17 = getelementptr inbounds nuw i8, ptr %ref.tmp27, i64 %add.i.i.i + %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp27, i64 %add.i.i.i %cmp9.i.i.i.i.i22.i = icmp eq i64 %add.i.i.i, 1 br i1 %cmp9.i.i.i.i.i22.i, label %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i38.i, label %_ZSt4copyIPKbSt13_Bit_iteratorET0_T_S4_S3_.exit50.i _ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i38.i: ; preds = %if.else.i14 - %26 = load i64, ptr %24, align 8 - %or.i.i.i.i.i.i49.i = or i64 %26, 1 - store i64 %or.i.i.i.i.i.i49.i, ptr %24, align 8 + %27 = load i64, ptr %25, align 8 + %or.i.i.i.i.i.i49.i = or i64 %27, 1 + store i64 %or.i.i.i.i.i.i49.i, ptr %25, align 8 %retval.sroa.0.0.copyload.i.pre.i = load ptr, ptr %_M_finish.i.i.i, align 8 %retval.sroa.2.0.copyload.i.pre.i = load i32, ptr %_M_offset.i.i.i.i, align 8 br label %_ZSt4copyIPKbSt13_Bit_iteratorET0_T_S4_S3_.exit50.i _ZSt4copyIPKbSt13_Bit_iteratorET0_T_S4_S3_.exit50.i: ; preds = %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i38.i, %if.else.i14 - %retval.sroa.2.0.copyload.i.i = phi i32 [ %retval.sroa.2.0.copyload.i.pre.i, %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i38.i ], [ %23, %if.else.i14 ] - %retval.sroa.0.0.copyload.i.i = phi ptr [ %retval.sroa.0.0.copyload.i.pre.i, %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i38.i ], [ %22, %if.else.i14 ] - invoke void @_ZNSt6vectorIbSaIbEE15_M_insert_rangeIPKbEEvSt13_Bit_iteratorT_S6_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(40) %insert_, ptr %retval.sroa.0.0.copyload.i.i, i32 %retval.sroa.2.0.copyload.i.i, ptr noundef nonnull %incdec.ptr.i.i.i17, ptr noundef nonnull %add.ptr.i.i7) + %retval.sroa.2.0.copyload.i.i = phi i32 [ %retval.sroa.2.0.copyload.i.pre.i, %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i38.i ], [ %24, %if.else.i14 ] + %retval.sroa.0.0.copyload.i.i = phi ptr [ %retval.sroa.0.0.copyload.i.pre.i, %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i38.i ], [ %23, %if.else.i14 ] + invoke void @_ZNSt6vectorIbSaIbEE15_M_insert_rangeIPKbEEvSt13_Bit_iteratorT_S6_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(40) %insert_, ptr %retval.sroa.0.0.copyload.i.i, i32 %retval.sroa.2.0.copyload.i.i, ptr noundef nonnull %incdec.ptr.i.i.i, ptr noundef nonnull %add.ptr.i.i7) to label %invoke.cont32 unwind label %lpad.loopexit.split-lp invoke.cont32: ; preds = %_ZSt4copyIPKbSt13_Bit_iteratorET0_T_S4_S3_.exit50.i, %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i - %27 = load i64, ptr %base_end_, align 8 - %28 = load i64, ptr %base_begin_, align 8 - %sub = sub nsw i64 %27, %28 - %29 = load i64, ptr %target_end_, align 8 - %30 = load i64, ptr %target_begin_, align 8 - %sub38 = sub nsw i64 %29, %30 + %28 = load i64, ptr %base_end_, align 8 + %29 = load i64, ptr %base_begin_, align 8 + %sub = sub nsw i64 %28, %29 + %30 = load i64, ptr %target_end_, align 8 + %31 = load i64, ptr %target_begin_, align 8 + %sub38 = sub nsw i64 %30, %31 %cmp = icmp eq i64 %sub, %sub38 br i1 %cmp, label %land.lhs.true, label %while.cond.preheader land.lhs.true: ; preds = %invoke.cont32 - %31 = load ptr, ptr %endpoint_base_, align 8 - %32 = load i64, ptr %31, align 8 - %cmp42 = icmp eq i64 %32, %27 + %32 = load ptr, ptr %endpoint_base_, align 8 + %33 = load i64, ptr %32, align 8 + %cmp42 = icmp eq i64 %33, %28 br i1 %cmp42, label %if.then43, label %while.cond.preheader if.then43: ; preds = %land.lhs.true @@ -5785,8 +5795,8 @@ while.cond.preheader: ; preds = %if.then43, %land.lh br label %while.cond while.cond: ; preds = %while.cond.preheader, %while.body - %33 = load i64, ptr %finish_index_, align 8 - %cmp.i.not = icmp eq i64 %33, -1 + %34 = load i64, ptr %finish_index_, align 8 + %cmp.i.not = icmp eq i64 %34, -1 br i1 %cmp.i.not, label %while.body, label %while.end while.body: ; preds = %while.cond @@ -5795,8 +5805,8 @@ while.body: ; preds = %while.cond while.end: ; preds = %while.cond %pool_ = getelementptr inbounds nuw i8, ptr %this, i64 16 - %34 = load ptr, ptr %pool_, align 8 - invoke void @_ZN5arrow23QuadraticSpaceMyersDiff8GetEditsEPNS_10MemoryPoolE(ptr sret(%"class.arrow::Result") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(144) %this, ptr noundef %34) + %35 = load ptr, ptr %pool_, align 8 + invoke void @_ZN5arrow23QuadraticSpaceMyersDiff8GetEditsEPNS_10MemoryPoolE(ptr sret(%"class.arrow::Result") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(144) %this, ptr noundef %35) to label %cleanup unwind label %lpad.loopexit.split-lp cleanup: ; preds = %while.end, %if.then diff --git a/bench/arrow/optimized/function.cc.ll b/bench/arrow/optimized/function.cc.ll index b9b9738fec9..1bdf68709d4 100644 --- a/bench/arrow/optimized/function.cc.ll +++ b/bench/arrow/optimized/function.cc.ll @@ -9414,18 +9414,18 @@ entry: %sub.ptr.lhs.cast.i = ptrtoint ptr %2 to i64 %sub.ptr.rhs.cast.i = ptrtoint ptr %3 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i - %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 24 %_M_finish.i38 = getelementptr inbounds nuw i8, ptr %args, i64 8 %4 = load ptr, ptr %_M_finish.i38, align 8 %5 = load ptr, ptr %args, align 8 %sub.ptr.lhs.cast.i39 = ptrtoint ptr %4 to i64 %sub.ptr.rhs.cast.i40 = ptrtoint ptr %5 to i64 %sub.ptr.sub.i41 = sub i64 %sub.ptr.lhs.cast.i39, %sub.ptr.rhs.cast.i40 - %sub.ptr.div.i42 = sdiv exact i64 %sub.ptr.sub.i41, 24 - %cmp.not = icmp eq i64 %sub.ptr.div.i, %sub.ptr.div.i42 + %cmp.not = icmp eq i64 %sub.ptr.sub.i, %sub.ptr.sub.i41 br i1 %cmp.not, label %if.end, label %if.then if.then: ; preds = %entry + %sub.ptr.div.i42 = sdiv exact i64 %sub.ptr.sub.i41, 24 + %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 24 store i64 %sub.ptr.div.i, ptr %ref.tmp6, align 8 store i64 %sub.ptr.div.i42, ptr %ref.tmp9, align 8 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i), !noalias !167 @@ -9567,7 +9567,6 @@ _ZN5arrow6StatusD2Ev.exit88.if.end24_crit_edge: ; preds = %_ZN5arrow6StatusD2E %.pre516 = ptrtoint ptr %.pre to i64 %.pre517 = ptrtoint ptr %.pre511 to i64 %.pre518 = sub i64 %.pre516, %.pre517 - %.pre519 = sdiv exact i64 %.pre518, 24 br label %if.end24 if.then20: ; preds = %_ZN5arrow6StatusD2Ev.exit88 @@ -9658,13 +9657,13 @@ _ZN5arrow6Status11DeleteStateEv.exit.i103: ; preds = %if.end8.sink.split. br label %cleanup160 if.end24: ; preds = %_ZN5arrow6StatusD2Ev.exit88.if.end24_crit_edge, %if.end - %sub.ptr.div.i165.pre-phi = phi i64 [ %.pre519, %_ZN5arrow6StatusD2Ev.exit88.if.end24_crit_edge ], [ %sub.ptr.div.i42, %if.end ] %sub.ptr.sub.i164.pre-phi = phi i64 [ %.pre518, %_ZN5arrow6StatusD2Ev.exit88.if.end24_crit_edge ], [ %sub.ptr.sub.i41, %if.end ] %35 = phi ptr [ %.pre511, %_ZN5arrow6StatusD2Ev.exit88.if.end24_crit_edge ], [ %5, %if.end ] %36 = phi ptr [ %.pre, %_ZN5arrow6StatusD2Ev.exit88.if.end24_crit_edge ], [ %4, %if.end ] %kernel_ctx = getelementptr inbounds nuw i8, ptr %this, i64 40 %37 = load ptr, ptr %kernel_ctx, align 8 - %cmp.i.i = icmp ugt i64 %sub.ptr.div.i165.pre-phi, 384307168202282325 + %sub.ptr.div.i165 = sdiv exact i64 %sub.ptr.sub.i164.pre-phi, 24 + %cmp.i.i = icmp ugt i64 %sub.ptr.div.i165, 384307168202282325 br i1 %cmp.i.i, label %if.then.i.i, label %_ZNSt6vectorIN5arrow5DatumESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i if.then.i.i: ; preds = %if.end24 @@ -9680,7 +9679,7 @@ _ZNSt6vectorIN5arrow5DatumESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i: ; preds = br i1 %cmp.not.i.i.i.i, label %invoke.cont30.thread, label %for.body.preheader.i.i.i.i.i invoke.cont30.thread: ; preds = %_ZNSt6vectorIN5arrow5DatumESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i - %_M_finish.i.i7.i521 = getelementptr inbounds nuw i8, ptr %args_with_cast, i64 8 + %_M_finish.i.i7.i520 = getelementptr inbounds nuw i8, ptr %args_with_cast, i64 8 br label %for.end for.body.preheader.i.i.i.i.i: ; preds = %_ZNSt6vectorIN5arrow5DatumESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i @@ -10365,7 +10364,7 @@ for.end.loopexit: ; preds = %_ZN5arrow5DatumD2Ev br label %for.end for.end: ; preds = %invoke.cont30.thread, %for.end.loopexit - %_M_finish.i.i7.i523 = phi ptr [ %_M_finish.i.i7.i, %for.end.loopexit ], [ %_M_finish.i.i7.i521, %invoke.cont30.thread ] + %_M_finish.i.i7.i522 = phi ptr [ %_M_finish.i.i7.i, %for.end.loopexit ], [ %_M_finish.i.i7.i520, %invoke.cont30.thread ] %138 = phi ptr [ %.pre515, %for.end.loopexit ], [ null, %invoke.cont30.thread ] %139 = phi ptr [ %.pre514, %for.end.loopexit ], [ null, %invoke.cont30.thread ] %140 = phi ptr [ %129, %for.end.loopexit ], [ null, %invoke.cont30.thread ] @@ -10848,9 +10847,9 @@ ehcleanup157: ; preds = %ehcleanup155, %lpad br label %ehcleanup159 cleanup158: ; preds = %if.then.i.i.i.i474, %invoke.cont.i.i, %_ZN5arrow5DatumD2Ev.exit296 - %_M_finish.i.i7.i522 = phi ptr [ %_M_finish.i.i7.i523, %if.then.i.i.i.i474 ], [ %_M_finish.i.i7.i523, %invoke.cont.i.i ], [ %_M_finish.i.i7.i, %_ZN5arrow5DatumD2Ev.exit296 ] + %_M_finish.i.i7.i521 = phi ptr [ %_M_finish.i.i7.i522, %if.then.i.i.i.i474 ], [ %_M_finish.i.i7.i522, %invoke.cont.i.i ], [ %_M_finish.i.i7.i, %_ZN5arrow5DatumD2Ev.exit296 ] %202 = load ptr, ptr %args_with_cast, align 8 - %203 = load ptr, ptr %_M_finish.i.i7.i522, align 8 + %203 = load ptr, ptr %_M_finish.i.i7.i521, align 8 %cmp.not3.i.i.i.i477 = icmp eq ptr %202, %203 br i1 %cmp.not3.i.i.i.i477, label %invoke.cont.i487, label %for.body.i.i.i.i478 diff --git a/bench/assimp/optimized/LWOAnimation.cpp.ll b/bench/assimp/optimized/LWOAnimation.cpp.ll index 1f9d94d7714..652a12323d6 100644 --- a/bench/assimp/optimized/LWOAnimation.cpp.ll +++ b/bench/assimp/optimized/LWOAnimation.cpp.ll @@ -1547,11 +1547,13 @@ if.else68: ; preds = %if.end39 %sub.ptr.rhs.cast.i127 = ptrtoint ptr %21 to i64 %sub.ptr.sub.i128 = sub i64 %sub.ptr.lhs.cast.i126, %sub.ptr.rhs.cast.i127 %sub.ptr.div.i129 = sdiv exact i64 %sub.ptr.sub.i128, 40 + %cmp.i130 = icmp ult i64 %sub.ptr.sub.i, %sub.ptr.sub.i128 %22 = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 %sub.ptr.div.i129) + %.sroa.speculated = select i1 %cmp.i130, i64 %22, i64 %sub.ptr.div.i br label %if.end85 if.end85: ; preds = %if.else68, %invoke.cont61 - %reserve.0 = phi i64 [ %conv, %invoke.cont61 ], [ %22, %if.else68 ] + %reserve.0 = phi i64 [ %conv, %invoke.cont61 ], [ %.sroa.speculated, %if.else68 ] %shr = lshr i64 %reserve.0, 1 %add = add i64 %shr, %reserve.0 %cmp.i134 = icmp ugt i64 %add, 384307168202282325 diff --git a/bench/assimp/optimized/XGLLoader.cpp.ll b/bench/assimp/optimized/XGLLoader.cpp.ll index d0d6d39d5d8..53db2d526a1 100644 --- a/bench/assimp/optimized/XGLLoader.cpp.ll +++ b/bench/assimp/optimized/XGLLoader.cpp.ll @@ -3156,16 +3156,20 @@ if.then27: ; preds = %invoke.cont25 %sub.ptr.lhs.cast.i58 = ptrtoint ptr %9 to i64 %sub.ptr.rhs.cast.i59 = ptrtoint ptr %10 to i64 %sub.ptr.sub.i60 = sub i64 %sub.ptr.lhs.cast.i58, %sub.ptr.rhs.cast.i59 + %cmp305.not = icmp eq i64 %sub.ptr.sub.i60, %sub.ptr.sub.i + br i1 %cmp305.not, label %if.end108, label %for.body31.preheader + +for.body31.preheader: ; preds = %if.then27 %sub.ptr.div.i61 = ashr exact i64 %sub.ptr.sub.i60, 3 %sub = sub nsw i64 %sub.ptr.div.i61, %sub.ptr.div.i - %cmp305.not = icmp eq i64 %sub.ptr.div.i61, %sub.ptr.div.i - br i1 %cmp305.not, label %if.end108, label %for.body31 - -for.body31: ; preds = %if.then27, %for.inc - %i.0309 = phi i64 [ %inc, %for.inc ], [ 0, %if.then27 ] - %meshes.sroa.0.2308 = phi ptr [ %meshes.sroa.0.8, %for.inc ], [ %meshes.sroa.0.0317, %if.then27 ] - %meshes.sroa.10.1307 = phi ptr [ %meshes.sroa.10.5, %for.inc ], [ %meshes.sroa.10.0316, %if.then27 ] - %meshes.sroa.20.1306 = phi ptr [ %meshes.sroa.20.5, %for.inc ], [ %meshes.sroa.20.0315, %if.then27 ] + %umax = call i64 @llvm.umax.i64(i64 %sub, i64 1) + br label %for.body31 + +for.body31: ; preds = %for.body31.preheader, %for.inc + %i.0309 = phi i64 [ %inc, %for.inc ], [ 0, %for.body31.preheader ] + %meshes.sroa.0.2308 = phi ptr [ %meshes.sroa.0.8, %for.inc ], [ %meshes.sroa.0.0317, %for.body31.preheader ] + %meshes.sroa.10.1307 = phi ptr [ %meshes.sroa.10.5, %for.inc ], [ %meshes.sroa.10.0316, %for.body31.preheader ] + %meshes.sroa.20.1306 = phi ptr [ %meshes.sroa.20.5, %for.inc ], [ %meshes.sroa.20.0315, %for.body31.preheader ] %add = add i64 %i.0309, %sub.ptr.div.i %conv = trunc i64 %add to i32 %cmp.not.i.i = icmp eq ptr %meshes.sroa.10.1307, %meshes.sroa.20.1306 @@ -3230,7 +3234,7 @@ for.inc: ; preds = %_ZNSt6vectorIjSaIjE %meshes.sroa.0.8 = phi ptr [ %call5.i.i.i.i.i.i63, %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i.i ], [ %meshes.sroa.0.2308, %if.then.i.i ] %meshes.sroa.10.5 = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.i.pn, i64 4 %inc = add nuw i64 %i.0309, 1 - %exitcond380.not = icmp eq i64 %inc, %sub + %exitcond380.not = icmp eq i64 %inc, %umax br i1 %exitcond380.not, label %if.end108, label %for.body31, !llvm.loop !27 lpad: ; preds = %entry diff --git a/bench/boost/optimized/algorithm.ll b/bench/boost/optimized/algorithm.ll index b125f946461..26a52c49204 100644 --- a/bench/boost/optimized/algorithm.ll +++ b/bench/boost/optimized/algorithm.ll @@ -122459,7 +122459,7 @@ define linkonce_odr hidden void @_ZNSt6vectorIN5boost10shared_ptrINS0_9unit_test %18 = ptrtoint ptr %1 to i64 %19 = sub i64 %15, %18 %20 = ashr exact i64 %19, 4 - %21 = icmp ugt i64 %20, %9 + %21 = icmp ugt i64 %19, %8 br i1 %21, label %.lr.ph.i.i.i.i.i.preheader, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN5boost10shared_ptrINS2_9unit_test9decorator4baseEEESt6vectorIS7_SaIS7_EEEEmEvRT_T0_.exit .lr.ph.i.i.i.i.i.preheader: ; preds = %17 diff --git a/bench/cmake/optimized/EncodingCXX.cxx.ll b/bench/cmake/optimized/EncodingCXX.cxx.ll index b557359f0ae..b2b0e230223 100644 --- a/bench/cmake/optimized/EncodingCXX.cxx.ll +++ b/bench/cmake/optimized/EncodingCXX.cxx.ll @@ -342,16 +342,16 @@ define dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN5cmsys8Enco %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load ptr, ptr %3, align 8 %5 = load ptr, ptr %0, align 8 - %.not23 = icmp eq ptr %4, %5 - br i1 %.not23, label %._crit_edge, label %.lr.ph + %.not25 = icmp eq ptr %4, %5 + br i1 %.not25, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %.preheader, %.lr.ph %6 = phi ptr [ %11, %.lr.ph ], [ %5, %.preheader ] - %.018 = phi i64 [ %9, %.lr.ph ], [ 0, %.preheader ] - %7 = getelementptr inbounds ptr, ptr %6, i64 %.018 + %.019 = phi i64 [ %9, %.lr.ph ], [ 0, %.preheader ] + %7 = getelementptr inbounds ptr, ptr %6, i64 %.019 %8 = load ptr, ptr %7, align 8 tail call void @free(ptr noundef %8) #15 - %9 = add nuw i64 %.018, 1 + %9 = add nuw i64 %.019, 1 %10 = load ptr, ptr %3, align 8 %11 = load ptr, ptr %0, align 8 %12 = ptrtoint ptr %10 to i64 @@ -362,8 +362,9 @@ define dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN5cmsys8Enco br i1 %16, label %.lr.ph, label %._crit_edge, !llvm.loop !10 ._crit_edge: ; preds = %.lr.ph, %.preheader - %.lcssa16 = phi ptr [ %4, %.preheader ], [ %10, %.lr.ph ] - %.lcssa15 = phi ptr [ %5, %.preheader ], [ %11, %.lr.ph ] + %.lcssa17 = phi ptr [ %4, %.preheader ], [ %10, %.lr.ph ] + %.lcssa16 = phi ptr [ %5, %.preheader ], [ %11, %.lr.ph ] + %.lcssa15 = phi i64 [ 0, %.preheader ], [ %14, %.lr.ph ] %.lcssa = phi i64 [ 0, %.preheader ], [ %15, %.lr.ph ] %17 = getelementptr inbounds nuw i8, ptr %1, i64 8 %18 = load ptr, ptr %17, align 8 @@ -371,54 +372,54 @@ define dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN5cmsys8Enco %20 = ptrtoint ptr %18 to i64 %21 = ptrtoint ptr %19 to i64 %22 = sub i64 %20, %21 - %23 = ashr exact i64 %22, 3 - %24 = icmp ugt i64 %23, %.lcssa - br i1 %24, label %25, label %27 + %23 = icmp ugt i64 %22, %.lcssa15 + br i1 %23, label %24, label %27 -25: ; preds = %._crit_edge - %26 = sub nuw nsw i64 %23, %.lcssa +24: ; preds = %._crit_edge + %25 = ashr exact i64 %22, 3 + %26 = sub nuw nsw i64 %25, %.lcssa tail call void @_ZNSt6vectorIPcSaIS0_EE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %26) %.pre = load ptr, ptr %3, align 8 - %.pre28 = load ptr, ptr %0, align 8 + %.pre31 = load ptr, ptr %0, align 8 br label %_ZNSt6vectorIPcSaIS0_EE6resizeEm.exit 27: ; preds = %._crit_edge - %28 = icmp ult i64 %23, %.lcssa + %28 = icmp ult i64 %22, %.lcssa15 br i1 %28, label %29, label %_ZNSt6vectorIPcSaIS0_EE6resizeEm.exit 29: ; preds = %27 - %30 = getelementptr inbounds i8, ptr %.lcssa15, i64 %22 - %.not.i.i = icmp eq ptr %.lcssa16, %30 + %30 = getelementptr inbounds i8, ptr %.lcssa16, i64 %22 + %.not.i.i = icmp eq ptr %.lcssa17, %30 br i1 %.not.i.i, label %_ZNSt6vectorIPcSaIS0_EE6resizeEm.exit, label %31 31: ; preds = %29 store ptr %30, ptr %3, align 8 br label %_ZNSt6vectorIPcSaIS0_EE6resizeEm.exit -_ZNSt6vectorIPcSaIS0_EE6resizeEm.exit: ; preds = %25, %27, %29, %31 - %32 = phi ptr [ %.pre28, %25 ], [ %.lcssa15, %27 ], [ %.lcssa15, %29 ], [ %.lcssa15, %31 ] - %33 = phi ptr [ %.pre, %25 ], [ %.lcssa16, %27 ], [ %.lcssa16, %29 ], [ %30, %31 ] - %.not24 = icmp eq ptr %33, %32 - br i1 %.not24, label %.loopexit, label %.lr.ph22 +_ZNSt6vectorIPcSaIS0_EE6resizeEm.exit: ; preds = %24, %27, %29, %31 + %32 = phi ptr [ %.pre31, %24 ], [ %.lcssa16, %27 ], [ %.lcssa16, %29 ], [ %.lcssa16, %31 ] + %33 = phi ptr [ %.pre, %24 ], [ %.lcssa17, %27 ], [ %.lcssa17, %29 ], [ %30, %31 ] + %.not26 = icmp eq ptr %33, %32 + br i1 %.not26, label %.loopexit, label %.lr.ph24 -.lr.ph22: ; preds = %_ZNSt6vectorIPcSaIS0_EE6resizeEm.exit, %40 +.lr.ph24: ; preds = %_ZNSt6vectorIPcSaIS0_EE6resizeEm.exit, %40 %34 = phi ptr [ %45, %40 ], [ %32, %_ZNSt6vectorIPcSaIS0_EE6resizeEm.exit ] - %.121 = phi i64 [ %43, %40 ], [ 0, %_ZNSt6vectorIPcSaIS0_EE6resizeEm.exit ] + %.123 = phi i64 [ %43, %40 ], [ 0, %_ZNSt6vectorIPcSaIS0_EE6resizeEm.exit ] %35 = load ptr, ptr %1, align 8 - %36 = getelementptr inbounds ptr, ptr %35, i64 %.121 + %36 = getelementptr inbounds ptr, ptr %35, i64 %.123 %37 = load ptr, ptr %36, align 8 %.not14 = icmp eq ptr %37, null br i1 %.not14, label %40, label %38 -38: ; preds = %.lr.ph22 +38: ; preds = %.lr.ph24 %39 = tail call noalias ptr @strdup(ptr noundef nonnull %37) #15 br label %40 -40: ; preds = %.lr.ph22, %38 - %41 = phi ptr [ %39, %38 ], [ null, %.lr.ph22 ] - %42 = getelementptr inbounds ptr, ptr %34, i64 %.121 +40: ; preds = %.lr.ph24, %38 + %41 = phi ptr [ %39, %38 ], [ null, %.lr.ph24 ] + %42 = getelementptr inbounds ptr, ptr %34, i64 %.123 store ptr %41, ptr %42, align 8 - %43 = add nuw i64 %.121, 1 + %43 = add nuw i64 %.123, 1 %44 = load ptr, ptr %3, align 8 %45 = load ptr, ptr %0, align 8 %46 = ptrtoint ptr %44 to i64 @@ -426,7 +427,7 @@ _ZNSt6vectorIPcSaIS0_EE6resizeEm.exit: ; preds = %25, %27, %29, %31 %48 = sub i64 %46, %47 %49 = ashr exact i64 %48, 3 %50 = icmp ult i64 %43, %49 - br i1 %50, label %.lr.ph22, label %.loopexit, !llvm.loop !11 + br i1 %50, label %.lr.ph24, label %.loopexit, !llvm.loop !11 .loopexit: ; preds = %40, %_ZNSt6vectorIPcSaIS0_EE6resizeEm.exit, %2 ret ptr %0 diff --git a/bench/coreutils-rs/optimized/1n0wbgmx15bwq5ex.ll b/bench/coreutils-rs/optimized/1n0wbgmx15bwq5ex.ll index 705210f7f10..ddfb306029b 100644 --- a/bench/coreutils-rs/optimized/1n0wbgmx15bwq5ex.ll +++ b/bench/coreutils-rs/optimized/1n0wbgmx15bwq5ex.ll @@ -685,7 +685,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf9358727f7f867fbE.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !9 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit @@ -860,7 +860,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h6c2f881b8c5c3c9bE.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !21 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit @@ -919,7 +919,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h6848bd2b7e558b08E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !25 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit @@ -1037,7 +1037,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h44102305afa99699E.exit.thread" %16 = shl nuw i64 %8, 7 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !33 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit @@ -1096,7 +1096,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hfba8beb2e00e8d06E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !37 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit @@ -1156,7 +1156,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hfff9032d9b0538f0E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !44 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit.i @@ -1215,7 +1215,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h9ece76426249c734E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !51 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit.i @@ -1333,7 +1333,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he76128c8f0662b74E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !65 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit.i @@ -1569,7 +1569,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hadd37f502b9dba23E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !93 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit.i @@ -1628,7 +1628,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h516479d53ffea6a1E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !100 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit.i @@ -1687,7 +1687,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h3758f02c64eaf05cE.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !107 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit.i @@ -1746,7 +1746,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf9358727f7f867fbE.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !114 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit.i @@ -1864,7 +1864,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h54d912fb24964381E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !128 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit.i @@ -1923,7 +1923,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hca53836176ce31e4E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !135 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit.i @@ -2109,7 +2109,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2a5b0e46cd3cb2e7E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !156 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit.i @@ -2168,7 +2168,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h079db7da8551ea64E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !163 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit.i @@ -2227,7 +2227,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf4b834d30cb6e1aaE.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !170 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit.i @@ -2458,7 +2458,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h191 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 4 @@ -2469,30 +2469,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h191 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #17 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %17 = shl nuw i64 %1, 4 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #17 - %.not34 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not34, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #17 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not34, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 - -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 + br label %21 + +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -2520,7 +2518,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h230 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 7 @@ -2531,30 +2529,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h230 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #17 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %17 = shl nuw i64 %1, 7 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #17 - %.not34 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not34, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #17 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not34, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 - -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 + br label %21 + +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: cold nonlazybind uwtable @@ -2655,7 +2651,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h44102305afa99699E.exit.thread.i" %16 = shl nuw i64 %8, 7 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !205 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit.i @@ -2714,7 +2710,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf9358727f7f867fbE.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !212 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit.i @@ -2832,7 +2828,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h6c2f881b8c5c3c9bE.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !226 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit.i @@ -2950,7 +2946,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h6848bd2b7e558b08E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !240 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit.i @@ -3068,7 +3064,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hfba8beb2e00e8d06E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !254 br label %_ZN5alloc7raw_vec11finish_grow17h7b14d3ae05b3a005E.exit.i diff --git a/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll b/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll index 1a2ed1becd4..1484ff5dbb1 100644 --- a/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll +++ b/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll @@ -2012,7 +2012,7 @@ define void @_ZN6uucore6parser10parse_glob8from_str17hb352925bc8c38089E(ptr noal br label %14 14: ; preds = %.backedge.i, %.lr.ph.i - %15 = phi i64 [ 3, %.lr.ph.i ], [ %44, %.backedge.i ] + %15 = phi i64 [ 3, %.lr.ph.i ], [ %42, %.backedge.i ] %.03671.i = phi i64 [ 0, %.lr.ph.i ], [ %.036.be.i, %.backedge.i ] %16 = icmp ult i64 %.03671.i, %10 br i1 %16, label %17, label %.invoke.i, !prof !320 @@ -2032,124 +2032,120 @@ define void @_ZN6uucore6parser10parse_glob8from_str17hb352925bc8c38089E(ptr noal %25 = getelementptr inbounds [0 x i32], ptr %.pre.i, i64 0, i64 %21 %26 = load i32, ptr %25, align 4, !range !250, !noalias !319, !noundef !13 %27 = icmp eq i32 %26, 94 - br i1 %27, label %30, label %.backedge.i + br i1 %27, label %.lr.ph.i.preheader.i, label %.backedge.i .invoke.i: ; preds = %22, %14 %28 = phi i64 [ %.03671.i, %14 ], [ %21, %22 ] %29 = phi ptr [ @anon.da59c305f0f0aed4eca35e39d10eabc9.59, %14 ], [ @anon.da59c305f0f0aed4eca35e39d10eabc9.60, %22 ] invoke void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %28, i64 noundef %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %29) #20 - to label %.cont.i unwind label %46, !noalias !319 + to label %.cont.i unwind label %44, !noalias !319 .cont.i: ; preds = %.invoke.i unreachable -30: ; preds = %24 +.lr.ph.i.preheader.i: ; preds = %24 %.idx52.i = shl nsw i64 %15, 2 + %30 = getelementptr inbounds i8, ptr %.pre.i, i64 %.idx52.i %gepdiff.i = sub nsw i64 %.idx.i, %.idx52.i %31 = lshr exact i64 %gepdiff.i, 2 - %32 = icmp eq i64 %.idx52.i, %.idx.i - br i1 %32, label %_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E.exit, label %.lr.ph.i.preheader.i - -.lr.ph.i.preheader.i: ; preds = %30 - %33 = getelementptr inbounds i8, ptr %.pre.i, i64 %.idx52.i br label %.lr.ph.i.i -.lr.ph.i.i: ; preds = %36, %.lr.ph.i.preheader.i - %.010.i.i = phi i64 [ %38, %36 ], [ 0, %.lr.ph.i.preheader.i ] - %34 = phi ptr [ %37, %36 ], [ %33, %.lr.ph.i.preheader.i ] - %.val.i.i = load i32, ptr %34, align 4, !range !250, !noalias !321, !noundef !13 - %35 = icmp eq i32 %.val.i.i, 93 - br i1 %35, label %40, label %36 - -36: ; preds = %.lr.ph.i.i - %37 = getelementptr inbounds nuw i8, ptr %34, i64 4 - %38 = add nuw nsw i64 %.010.i.i, 1 - %39 = icmp eq ptr %37, %13 - br i1 %39, label %_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E.exit, label %.lr.ph.i.i - -40: ; preds = %.lr.ph.i.i - %41 = icmp samesign ult i64 %.010.i.i, %31 - tail call void @llvm.assume(i1 %41) +.lr.ph.i.i: ; preds = %34, %.lr.ph.i.preheader.i + %.010.i.i = phi i64 [ %36, %34 ], [ 0, %.lr.ph.i.preheader.i ] + %32 = phi ptr [ %35, %34 ], [ %30, %.lr.ph.i.preheader.i ] + %.val.i.i = load i32, ptr %32, align 4, !range !250, !noalias !321, !noundef !13 + %33 = icmp eq i32 %.val.i.i, 93 + br i1 %33, label %38, label %34 + +34: ; preds = %.lr.ph.i.i + %35 = getelementptr inbounds nuw i8, ptr %32, i64 4 + %36 = add nuw nsw i64 %.010.i.i, 1 + %37 = icmp eq ptr %35, %13 + br i1 %37, label %_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E.exit, label %.lr.ph.i.i + +38: ; preds = %.lr.ph.i.i + %39 = icmp samesign ult i64 %.010.i.i, %31 + tail call void @llvm.assume(i1 %39) store i32 33, ptr %25, align 4, !noalias !319 - %42 = add i64 %.03671.i, 4 - %43 = add i64 %42, %.010.i.i + %40 = add i64 %.03671.i, 4 + %41 = add i64 %40, %.010.i.i br label %.backedge.i -.backedge.i: ; preds = %40, %24, %17 - %.036.be.i = phi i64 [ %43, %40 ], [ %21, %24 ], [ %21, %17 ] - %44 = add i64 %.036.be.i, 3 - %45 = icmp ult i64 %44, %10 - br i1 %45, label %14, label %_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E.exit +.backedge.i: ; preds = %38, %24, %17 + %.036.be.i = phi i64 [ %41, %38 ], [ %21, %24 ], [ %21, %17 ] + %42 = add i64 %.036.be.i, 3 + %43 = icmp ult i64 %42, %10 + br i1 %43, label %14, label %_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E.exit -common.resume: ; preds = %57, %46 - %common.resume.op = phi { ptr, i32 } [ %lpad.thr_comm.i, %46 ], [ %58, %57 ] +common.resume: ; preds = %55, %44 + %common.resume.op = phi { ptr, i32 } [ %lpad.thr_comm.i, %44 ], [ %56, %55 ] resume { ptr, i32 } %common.resume.op -46: ; preds = %.invoke.i +44: ; preds = %.invoke.i %lpad.thr_comm.i = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr48drop_in_place$LT$alloc..vec..Vec$LT$char$GT$$GT$17h8831d7013b4c577dE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #23 - to label %common.resume unwind label %47, !noalias !319 + to label %common.resume unwind label %45, !noalias !319 -47: ; preds = %46 - %48 = landingpad { ptr, i32 } +45: ; preds = %44 + %46 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #21, !noalias !319 unreachable -_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E.exit: ; preds = %30, %.backedge.i, %36, %3 +_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E.exit: ; preds = %.backedge.i, %34, %3 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !315 %.sroa.042.0.copyload.i = load i64, ptr %6, align 8, !noalias !315 - %49 = getelementptr inbounds i32, ptr %.pre.i, i64 %10 + %47 = getelementptr inbounds i32, ptr %.pre.i, i64 %10 store ptr %.pre.i, ptr %5, align 8, !alias.scope !324, !noalias !327 - %50 = getelementptr inbounds nuw i8, ptr %5, i64 16 - store i64 %.sroa.042.0.copyload.i, ptr %50, align 8, !alias.scope !324, !noalias !327 - %51 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store ptr %.pre.i, ptr %51, align 8, !alias.scope !324, !noalias !327 - %52 = getelementptr inbounds nuw i8, ptr %5, i64 24 - store ptr %49, ptr %52, align 8, !alias.scope !324, !noalias !327 + %48 = getelementptr inbounds nuw i8, ptr %5, i64 16 + store i64 %.sroa.042.0.copyload.i, ptr %48, align 8, !alias.scope !324, !noalias !327 + %49 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store ptr %.pre.i, ptr %49, align 8, !alias.scope !324, !noalias !327 + %50 = getelementptr inbounds nuw i8, ptr %5, i64 24 + store ptr %47, ptr %50, align 8, !alias.scope !324, !noalias !327 call void @"_ZN95_$LT$alloc..string..String$u20$as$u20$core..iter..traits..collect..FromIterator$LT$char$GT$$GT$9from_iter17h11c01ad718e74363E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %7, ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %5) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !315 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !315 - %53 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %54 = load ptr, ptr %53, align 8, !nonnull !13, !noundef !13 - %55 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %56 = load i64, ptr %55, align 8, !noundef !13 - invoke void @_ZN4glob7Pattern3new17hceb1730176251843E(ptr noalias nocapture noundef nonnull sret({ i64, [6 x i64] }) align 8 dereferenceable(56) %0, ptr noalias noundef nonnull readonly align 1 %54, i64 noundef %56) - to label %59 unwind label %57 - -57: ; preds = %_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E.exit - %58 = landingpad { ptr, i32 } + %51 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %52 = load ptr, ptr %51, align 8, !nonnull !13, !noundef !13 + %53 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %54 = load i64, ptr %53, align 8, !noundef !13 + invoke void @_ZN4glob7Pattern3new17hceb1730176251843E(ptr noalias nocapture noundef nonnull sret({ i64, [6 x i64] }) align 8 dereferenceable(56) %0, ptr noalias noundef nonnull readonly align 1 %52, i64 noundef %54) + to label %57 unwind label %55 + +55: ; preds = %_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E.exit + %56 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h117d672ecc4c51a2E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #23 - to label %common.resume unwind label %68 + to label %common.resume unwind label %66 -59: ; preds = %_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E.exit +57: ; preds = %_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E.exit call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !329 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1cce46063650d2c7E.llvm.3307611119196902081"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %7) - %60 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %61 = load i64, ptr %60, align 8, !range !189, !noalias !329, !noundef !13 - %.not.i.i.i.i = icmp eq i64 %61, 0 - br i1 %.not.i.i.i.i, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h117d672ecc4c51a2E.exit", label %62 - -62: ; preds = %59 - %63 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %64 = load i64, ptr %63, align 8, !noalias !329, !noundef !13 - %65 = icmp eq i64 %64, 0 - br i1 %65, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h117d672ecc4c51a2E.exit", label %66 - -66: ; preds = %62 - %67 = load ptr, ptr %4, align 8, !noalias !329, !nonnull !13, !noundef !13 - call void @__rust_dealloc(ptr noundef nonnull %67, i64 noundef %64, i64 noundef %61) #22 + %58 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %59 = load i64, ptr %58, align 8, !range !189, !noalias !329, !noundef !13 + %.not.i.i.i.i = icmp eq i64 %59, 0 + br i1 %.not.i.i.i.i, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h117d672ecc4c51a2E.exit", label %60 + +60: ; preds = %57 + %61 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %62 = load i64, ptr %61, align 8, !noalias !329, !noundef !13 + %63 = icmp eq i64 %62, 0 + br i1 %63, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h117d672ecc4c51a2E.exit", label %64 + +64: ; preds = %60 + %65 = load ptr, ptr %4, align 8, !noalias !329, !nonnull !13, !noundef !13 + call void @__rust_dealloc(ptr noundef nonnull %65, i64 noundef %62, i64 noundef %59) #22 br label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h117d672ecc4c51a2E.exit" -"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h117d672ecc4c51a2E.exit": ; preds = %59, %62, %66 +"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h117d672ecc4c51a2E.exit": ; preds = %57, %60, %64 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !329 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) ret void -68: ; preds = %57 - %69 = landingpad { ptr, i32 } +66: ; preds = %55 + %67 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #21 unreachable diff --git a/bench/coreutils-rs/optimized/4zjtiunpxteyreer.ll b/bench/coreutils-rs/optimized/4zjtiunpxteyreer.ll index b60e92ca856..061f52d7f7a 100644 --- a/bench/coreutils-rs/optimized/4zjtiunpxteyreer.ll +++ b/bench/coreutils-rs/optimized/4zjtiunpxteyreer.ll @@ -164,7 +164,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hc1b2a5662f7b0dcaE.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !5 br label %_ZN5alloc7raw_vec11finish_grow17h8dd366c540c261a8E.exit @@ -281,7 +281,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hc1b2a5662f7b0dcaE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !16 br label %_ZN5alloc7raw_vec11finish_grow17h8dd366c540c261a8E.exit.i @@ -403,7 +403,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h41f %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 3 @@ -414,30 +414,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h41f "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #17 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #17 - %.not34 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not34, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #17 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not34, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 - -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 + br label %21 + +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: cold nonlazybind uwtable @@ -470,7 +468,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hc1b2a5662f7b0dcaE.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !30 br label %_ZN5alloc7raw_vec11finish_grow17h8dd366c540c261a8E.exit.i diff --git a/bench/crow/optimized/example.cpp.ll b/bench/crow/optimized/example.cpp.ll index e7083ed9b90..ab4e4c83b7c 100644 --- a/bench/crow/optimized/example.cpp.ll +++ b/bench/crow/optimized/example.cpp.ll @@ -63175,7 +63175,7 @@ define linkonce_odr dso_local void @_ZN4crow6Router11validate_bpESt6vectorIPNS_9 br i1 %234, label %268, label %238 238: ; preds = %222 - %239 = icmp ugt i64 %237, %226 + %239 = icmp ugt i64 %236, %225 br i1 %239, label %240, label %253 240: ; preds = %238 @@ -63321,7 +63321,7 @@ _ZNSt6vectorIiSaIiEE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPKiS1_EEEEv %314 = sub i64 %312, %313 %315 = ashr exact i64 %314, 2 %316 = sub nsw i64 %309, %315 - %317 = icmp ult i64 %309, %315 + %317 = icmp ult i64 %308, %314 br i1 %317, label %318, label %320 318: ; preds = %303 @@ -64769,7 +64769,7 @@ define linkonce_odr dso_local void @_ZNSt6vectorIiSaIiEE15_M_range_insertIN9__gn %20 = ptrtoint ptr %1 to i64 %21 = sub i64 %16, %20 %22 = ashr exact i64 %21, 2 - %23 = icmp ugt i64 %22, %10 + %23 = icmp ugt i64 %21, %9 br i1 %23, label %24, label %37 24: ; preds = %19 diff --git a/bench/csmith/optimized/Variable.cpp.ll b/bench/csmith/optimized/Variable.cpp.ll index a37c14639c9..ea96725c60b 100644 --- a/bench/csmith/optimized/Variable.cpp.ll +++ b/bench/csmith/optimized/Variable.cpp.ll @@ -1658,8 +1658,9 @@ define dso_local noundef zeroext i1 @_Z19equal_variable_setsRKSt6vectorIPK8Varia %13 = ptrtoint ptr %11 to i64 %14 = ptrtoint ptr %12 to i64 %15 = sub i64 %13, %14 - %16 = icmp eq i64 %8, %15 - br i1 %16, label %.preheader, label %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit.thread + %16 = ashr exact i64 %15, 3 + %17 = icmp eq i64 %8, %15 + br i1 %17, label %.preheader, label %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit.thread .preheader: ; preds = %2 %.not = icmp eq ptr %4, %5 @@ -1667,6 +1668,7 @@ define dso_local noundef zeroext i1 @_Z19equal_variable_setsRKSt6vectorIPK8Varia .lr.ph: ; preds = %.preheader %.not.i = icmp eq ptr %11, %12 + %umax.i = tail call i64 @llvm.umax.i64(i64 %16, i64 1) br i1 %.not.i, label %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit.thread, label %.lr.ph.preheader.i.preheader .lr.ph.preheader.i.preheader: ; preds = %.lr.ph @@ -1674,30 +1676,30 @@ define dso_local noundef zeroext i1 @_Z19equal_variable_setsRKSt6vectorIPK8Varia br label %.lr.ph.preheader.i .lr.ph.preheader.i: ; preds = %.lr.ph.preheader.i.preheader, %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit - %.011 = phi i64 [ %24, %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit ], [ 0, %.lr.ph.preheader.i.preheader ] - %17 = getelementptr inbounds ptr, ptr %5, i64 %.011 - %18 = load ptr, ptr %17, align 8 + %.011 = phi i64 [ %25, %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit ], [ 0, %.lr.ph.preheader.i.preheader ] + %18 = getelementptr inbounds ptr, ptr %5, i64 %.011 + %19 = load ptr, ptr %18, align 8 br label %.lr.ph.i -19: ; preds = %.lr.ph.i - %20 = add nuw i64 %.07.i, 1 - %exitcond.not.i = icmp eq i64 %20, %9 +20: ; preds = %.lr.ph.i + %21 = add nuw i64 %.07.i, 1 + %exitcond.not.i = icmp eq i64 %21, %umax.i br i1 %exitcond.not.i, label %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit.thread, label %.lr.ph.i, !llvm.loop !12 -.lr.ph.i: ; preds = %19, %.lr.ph.preheader.i - %.07.i = phi i64 [ %20, %19 ], [ 0, %.lr.ph.preheader.i ] - %21 = getelementptr inbounds ptr, ptr %12, i64 %.07.i - %22 = load ptr, ptr %21, align 8 - %23 = icmp eq ptr %22, %18 - br i1 %23, label %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit, label %19 +.lr.ph.i: ; preds = %20, %.lr.ph.preheader.i + %.07.i = phi i64 [ %21, %20 ], [ 0, %.lr.ph.preheader.i ] + %22 = getelementptr inbounds ptr, ptr %12, i64 %.07.i + %23 = load ptr, ptr %22, align 8 + %24 = icmp eq ptr %23, %19 + br i1 %24, label %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit, label %20 _Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit: ; preds = %.lr.ph.i - %24 = add nuw i64 %.011, 1 - %exitcond.not = icmp eq i64 %24, %umax + %25 = add nuw i64 %.011, 1 + %exitcond.not = icmp eq i64 %25, %umax br i1 %exitcond.not, label %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit.thread, label %.lr.ph.preheader.i, !llvm.loop !14 -_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit.thread: ; preds = %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit, %19, %.preheader, %.lr.ph, %2 - %.08 = phi i1 [ false, %2 ], [ true, %.preheader ], [ false, %.lr.ph ], [ false, %19 ], [ true, %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit ] +_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit.thread: ; preds = %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit, %20, %.preheader, %.lr.ph, %2 + %.08 = phi i1 [ false, %2 ], [ true, %.preheader ], [ false, %.lr.ph ], [ false, %20 ], [ true, %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit ] ret i1 %.08 } @@ -1717,7 +1719,7 @@ define dso_local noundef zeroext i1 @_Z17sub_variable_setsRKSt6vectorIPK8Variabl %14 = ptrtoint ptr %12 to i64 %15 = sub i64 %13, %14 %16 = ashr exact i64 %15, 3 - %.not = icmp ugt i64 %9, %16 + %.not = icmp ugt i64 %8, %15 br i1 %.not, label %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit.thread, label %.preheader .preheader: ; preds = %2 @@ -1726,6 +1728,7 @@ define dso_local noundef zeroext i1 @_Z17sub_variable_setsRKSt6vectorIPK8Variabl .lr.ph: ; preds = %.preheader %.not.i = icmp eq ptr %11, %12 + %umax.i = tail call i64 @llvm.umax.i64(i64 %16, i64 1) br i1 %.not.i, label %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit.thread, label %.lr.ph.preheader.i.preheader .lr.ph.preheader.i.preheader: ; preds = %.lr.ph @@ -1740,7 +1743,7 @@ define dso_local noundef zeroext i1 @_Z17sub_variable_setsRKSt6vectorIPK8Variabl 19: ; preds = %.lr.ph.i %20 = add nuw i64 %.07.i, 1 - %exitcond.not.i = icmp eq i64 %20, %16 + %exitcond.not.i = icmp eq i64 %20, %umax.i br i1 %exitcond.not.i, label %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit.thread, label %.lr.ph.i, !llvm.loop !12 .lr.ph.i: ; preds = %19, %.lr.ph.preheader.i diff --git a/bench/cvc5/optimized/sequence.cpp.ll b/bench/cvc5/optimized/sequence.cpp.ll index 0a0e7e4e5bc..c0cd62d9a9b 100644 --- a/bench/cvc5/optimized/sequence.cpp.ll +++ b/bench/cvc5/optimized/sequence.cpp.ll @@ -953,8 +953,7 @@ if.end: ; preds = %entry %sub.ptr.lhs.cast.i.i13 = ptrtoint ptr %6 to i64 %sub.ptr.rhs.cast.i.i14 = ptrtoint ptr %7 to i64 %sub.ptr.sub.i.i15 = sub i64 %sub.ptr.lhs.cast.i.i13, %sub.ptr.rhs.cast.i.i14 - %sub.ptr.div.i.i16 = ashr exact i64 %sub.ptr.sub.i.i15, 3 - %cmp.not = icmp eq i64 %sub.ptr.div.i.i, %sub.ptr.div.i.i16 + %cmp.not = icmp eq i64 %sub.ptr.sub.i.i, %sub.ptr.sub.i.i15 br i1 %cmp.not, label %for.cond.preheader, label %if.then9 for.cond.preheader: ; preds = %if.end @@ -966,7 +965,7 @@ for.body.preheader: ; preds = %for.cond.preheader br label %for.body if.then9: ; preds = %if.end - %cmp12 = icmp ult i64 %sub.ptr.div.i.i, %sub.ptr.div.i.i16 + %cmp12 = icmp ult i64 %sub.ptr.sub.i.i, %sub.ptr.sub.i.i15 %cond13 = select i1 %cmp12, i32 -1, i32 1 br label %return @@ -1175,7 +1174,7 @@ entry: br i1 %cmp14, label %if.then, label %if.end17 if.then: ; preds = %entry - %cmp15.not = icmp eq i64 %sub.ptr.div.i.i, %sub.ptr.div.i.i16 + %cmp15.not = icmp eq i64 %sub.ptr.sub.i.i, %sub.ptr.sub.i.i15 br i1 %cmp15.not, label %if.end17, label %return if.end17: ; preds = %if.then, %entry @@ -1224,7 +1223,7 @@ entry: br i1 %cmp14, label %if.then, label %if.end17 if.then: ; preds = %entry - %cmp15.not = icmp eq i64 %sub.ptr.div.i.i, %sub.ptr.div.i.i17 + %cmp15.not = icmp eq i64 %sub.ptr.sub.i.i, %sub.ptr.sub.i.i16 br i1 %cmp15.not, label %if.end17, label %return if.end17: ; preds = %if.then, %entry @@ -1792,7 +1791,6 @@ entry: %sub.ptr.lhs.cast.i.i = ptrtoint ptr %0 to i64 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i - %sub.ptr.div.i.i = ashr exact i64 %sub.ptr.sub.i.i, 3 %d_seq.i8 = getelementptr inbounds nuw i8, ptr %y, i64 8 %_M_finish.i.i9 = getelementptr inbounds nuw i8, ptr %y, i64 16 %2 = load ptr, ptr %_M_finish.i.i9, align 8 @@ -1801,10 +1799,11 @@ entry: %sub.ptr.rhs.cast.i.i11 = ptrtoint ptr %3 to i64 %sub.ptr.sub.i.i12 = sub i64 %sub.ptr.lhs.cast.i.i10, %sub.ptr.rhs.cast.i.i11 %sub.ptr.div.i.i13 = ashr exact i64 %sub.ptr.sub.i.i12, 3 - %cmp = icmp ugt i64 %sub.ptr.div.i.i13, %sub.ptr.div.i.i + %cmp = icmp ugt i64 %sub.ptr.sub.i.i12, %sub.ptr.sub.i.i br i1 %cmp, label %return, label %if.end if.end: ; preds = %entry + %sub.ptr.div.i.i = ashr exact i64 %sub.ptr.sub.i.i, 3 %sub = sub nuw nsw i64 %sub.ptr.div.i.i, %sub.ptr.div.i.i13 %invariant.gep = getelementptr %"class.cvc5::internal::NodeTemplate", ptr %1, i64 %sub %cmp317.not = icmp eq ptr %2, %3 @@ -3030,8 +3029,7 @@ if.then: ; preds = %entry if.then9: ; preds = %if.then %sub.ptr.rhs.cast.i = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i - %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 - %cmp15 = icmp ugt i64 %sub.ptr.div.i, %sub.ptr.div.i.i.i + %cmp15 = icmp ugt i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i.i br i1 %cmp15, label %if.then16, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEEmEvRT_T0_.exit if.then16: ; preds = %if.then9 @@ -3178,6 +3176,7 @@ _ZN4cvc58internal12NodeTemplateILb1EEaSERKS2_.exit.i.i.i.i.i52: ; preds = %if.th br i1 %cmp.i.i.i.i.i56, label %for.body.i.i.i.i.i34, label %if.end109, !llvm.loop !6 _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEEmEvRT_T0_.exit: ; preds = %if.then9 + %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__first.coerce, i64 %sub.ptr.sub.i %call.i.i.i = tail call noundef ptr @_ZSt16__do_uninit_copyIN9__gnu_cxx17__normal_iteratorIPKN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEEPS5_ET0_T_SE_SD_(ptr %incdec.ptr.i.i.i, ptr %__last.coerce, ptr noundef %1) %sub = sub nuw nsw i64 %sub.ptr.div.i.i.i, %sub.ptr.div.i diff --git a/bench/diesel-rs/optimized/1e9xgs6bol3gaqxq.ll b/bench/diesel-rs/optimized/1e9xgs6bol3gaqxq.ll index ebd3240ada4..a7ebe60d96a 100644 --- a/bench/diesel-rs/optimized/1e9xgs6bol3gaqxq.ll +++ b/bench/diesel-rs/optimized/1e9xgs6bol3gaqxq.ll @@ -809,7 +809,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h7b80c3a53d8489cdE.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #21, !noalias !9 br label %_ZN5alloc7raw_vec11finish_grow17hdba5757770653b7bE.exit @@ -927,7 +927,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0301539abc7610deE.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #21, !noalias !17 br label %_ZN5alloc7raw_vec11finish_grow17hdba5757770653b7bE.exit @@ -986,7 +986,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h33136189dfc8c3d3E.exit.thread" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #21, !noalias !21 br label %_ZN5alloc7raw_vec11finish_grow17hdba5757770653b7bE.exit @@ -1163,7 +1163,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha3eaf5a836cdeedbE.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #21, !noalias !33 br label %_ZN5alloc7raw_vec11finish_grow17hdba5757770653b7bE.exit @@ -1289,7 +1289,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h74e178f8fb8f6575E.exit.thread" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #21, !noalias !41 br label %_ZN5alloc7raw_vec11finish_grow17hdba5757770653b7bE.exit @@ -1405,7 +1405,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h6241ff12e545f439E.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #21, !noalias !49 br label %_ZN5alloc7raw_vec11finish_grow17hdba5757770653b7bE.exit @@ -1718,7 +1718,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h7c1f75cba9973034E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #21, !noalias !78 br label %_ZN5alloc7raw_vec11finish_grow17hdba5757770653b7bE.exit.i @@ -1836,7 +1836,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h7b80c3a53d8489cdE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #21, !noalias !92 br label %_ZN5alloc7raw_vec11finish_grow17hdba5757770653b7bE.exit.i @@ -1895,7 +1895,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf34f9956b44593e9E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #21, !noalias !99 br label %_ZN5alloc7raw_vec11finish_grow17hdba5757770653b7bE.exit.i @@ -1954,7 +1954,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h45c51d47584ff225E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #21, !noalias !106 br label %_ZN5alloc7raw_vec11finish_grow17hdba5757770653b7bE.exit.i @@ -2013,7 +2013,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h5e7b7ef80edd3064E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #21, !noalias !113 br label %_ZN5alloc7raw_vec11finish_grow17hdba5757770653b7bE.exit.i @@ -2134,7 +2134,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h6fd %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val23 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 3 @@ -2145,30 +2145,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h6fd "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #21 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #21 - %.not37 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not37, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #21 + %.not37 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not37, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 - -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 + br label %21 + +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -2384,7 +2382,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h33136189dfc8c3d3E.exit.thread.i" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #21, !noalias !141 br label %_ZN5alloc7raw_vec11finish_grow17hdba5757770653b7bE.exit.i @@ -2443,7 +2441,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0301539abc7610deE.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #21, !noalias !148 br label %_ZN5alloc7raw_vec11finish_grow17hdba5757770653b7bE.exit.i @@ -2688,7 +2686,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha3eaf5a836cdeedbE.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #21, !noalias !176 br label %_ZN5alloc7raw_vec11finish_grow17hdba5757770653b7bE.exit.i @@ -2747,7 +2745,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h74e178f8fb8f6575E.exit.thread.i" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #21, !noalias !183 br label %_ZN5alloc7raw_vec11finish_grow17hdba5757770653b7bE.exit.i @@ -2873,7 +2871,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h7b80c3a53d8489cdE.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #21, !noalias !197 br label %_ZN5alloc7raw_vec11finish_grow17hdba5757770653b7bE.exit.i @@ -2991,7 +2989,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h6241ff12e545f439E.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #21, !noalias !211 br label %_ZN5alloc7raw_vec11finish_grow17hdba5757770653b7bE.exit.i diff --git a/bench/eastl/optimized/BenchmarkAlgorithm.cpp.ll b/bench/eastl/optimized/BenchmarkAlgorithm.cpp.ll index 7e415562e8d..8b8ff874329 100644 --- a/bench/eastl/optimized/BenchmarkAlgorithm.cpp.ll +++ b/bench/eastl/optimized/BenchmarkAlgorithm.cpp.ll @@ -11473,9 +11473,9 @@ do.body.i22.i.i.i: ; preds = %do.body.i22.i.i.i, call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %p1.0.i.i.i.i, ptr noundef nonnull align 1 dereferenceable(32) %p2.0.i.i.i.i, i64 32, i1 false) %sub.ptr.rhs.cast9.i.i.i.i = ptrtoint ptr %p2.0.i.i.i.i to i64 %sub.ptr.sub10.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i738, %sub.ptr.rhs.cast9.i.i.i.i - %sub.ptr.div11.i.i.i.i = ashr exact i64 %sub.ptr.sub10.i.i.i.i, 5 - %cmp12.i.i.i.i = icmp sgt i64 %sub.ptr.div11.i.i.i.i, 4999 + %cmp12.i.i.i.i = icmp sgt i64 %sub.ptr.sub10.i.i.i.i, 159968 %add.ptr13.i.i.i.i = getelementptr inbounds nuw i8, ptr %p2.0.i.i.i.i, i64 159968 + %sub.ptr.div11.i.i.i.i = ashr exact i64 %sub.ptr.sub10.i.i.i.i, 5 %sub.i.i.i.i = sub nsw i64 4999, %sub.ptr.div11.i.i.i.i %add.ptr14.i.i.i.i = getelementptr inbounds %"struct.(anonymous namespace)::SizedPOD", ptr %call.i.i.i.i.i260, i64 %sub.i.i.i.i %p2.1.i.i.i.i = select i1 %cmp12.i.i.i.i, ptr %add.ptr13.i.i.i.i, ptr %add.ptr14.i.i.i.i @@ -19091,9 +19091,9 @@ do.body.i20: ; preds = %do.body.i20, %for.b store i32 %11, ptr %p1.0.i, align 4 %sub.ptr.rhs.cast9.i = ptrtoint ptr %p2.0.i to i64 %sub.ptr.sub10.i = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast9.i - %sub.ptr.div11.i = ashr exact i64 %sub.ptr.sub10.i, 2 - %cmp12.i = icmp slt i64 %sub.ptr.div.i, %sub.ptr.div11.i + %cmp12.i = icmp slt i64 %sub.ptr.sub.i, %sub.ptr.sub10.i %add.ptr13.i = getelementptr inbounds i8, ptr %p2.0.i, i64 %sub.ptr.sub.i + %sub.ptr.div11.i = ashr exact i64 %sub.ptr.sub10.i, 2 %sub.i = sub nsw i64 %sub.ptr.div.i, %sub.ptr.div11.i %add.ptr14.i = getelementptr inbounds i32, ptr %first, i64 %sub.i %p2.1.i = select i1 %cmp12.i, ptr %add.ptr13.i, ptr %add.ptr14.i @@ -20003,9 +20003,9 @@ for.body.preheader: ; preds = %do.body.i br label %for.body for.body: ; preds = %for.body.preheader, %do.end - %temp.sroa.11.0 = phi i32 [ 32623592, %for.body.preheader ], [ %16, %do.end ] - %temp.sroa.5.0 = phi i8 [ 0, %for.body.preheader ], [ %17, %do.end ] - %temp.sroa.0.0 = phi i32 [ 0, %for.body.preheader ], [ %15, %do.end ] + %temp.sroa.11.0 = phi i32 [ 32623592, %for.body.preheader ], [ %17, %do.end ] + %temp.sroa.5.0 = phi i8 [ 0, %for.body.preheader ], [ %18, %do.end ] + %temp.sroa.0.0 = phi i32 [ 0, %for.body.preheader ], [ %16, %do.end ] %p.051 = phi ptr [ %add.ptr, %for.body.preheader ], [ %incdec.ptr, %do.end ] %incdec.ptr = getelementptr inbounds i8, ptr %p.051, i64 -24 %3 = load i64, ptr @_ZN10TestObject18sTOMoveAssignCountE, align 8 @@ -20025,10 +20025,10 @@ for.body: ; preds = %for.body.preheader, %.pre56 = load i64, ptr @_ZN10TestObject18sTOMoveAssignCountE, align 8 br label %do.body -do.body: ; preds = %_ZN10TestObjectaSEOS_.exit34, %for.body - %7 = phi i64 [ %.pre56, %for.body ], [ %14, %_ZN10TestObjectaSEOS_.exit34 ] - %p1.0 = phi ptr [ %incdec.ptr, %for.body ], [ %p2.0, %_ZN10TestObjectaSEOS_.exit34 ] - %p2.0 = phi ptr [ %add.ptr7, %for.body ], [ %p2.1, %_ZN10TestObjectaSEOS_.exit34 ] +do.body: ; preds = %do.cond, %for.body + %7 = phi i64 [ %.pre56, %for.body ], [ %14, %do.cond ] + %p1.0 = phi ptr [ %incdec.ptr, %for.body ], [ %p2.0, %do.cond ] + %p2.0 = phi ptr [ %add.ptr7, %for.body ], [ %p2.1, %do.cond ] %inc.i25 = add nsw i64 %7, 1 store i64 %inc.i25, ptr @_ZN10TestObject18sTOMoveAssignCountE, align 8 %cmp.not.i26 = icmp eq ptr %p2.0, %p1.0 @@ -20060,46 +20060,51 @@ _ZN10TestObjectaSEOS_.exit34: ; preds = %do.body, %if.then.i %14 = phi i64 [ %inc.i25, %do.body ], [ %.pre, %if.then.i27 ] %sub.ptr.rhs.cast11 = ptrtoint ptr %p2.0 to i64 %sub.ptr.sub12 = sub i64 %sub.ptr.lhs.cast1, %sub.ptr.rhs.cast11 - %sub.ptr.div13 = sdiv exact i64 %sub.ptr.sub12, 24 - %cmp14 = icmp slt i64 %sub.ptr.div, %sub.ptr.div13 - %add.ptr15 = getelementptr inbounds i8, ptr %p2.0, i64 %sub.ptr.sub - %sub = sub nsw i64 %sub.ptr.div, %sub.ptr.div13 - %add.ptr16 = getelementptr inbounds %struct.TestObject, ptr %first, i64 %sub - %p2.1 = select i1 %cmp14, ptr %add.ptr15, ptr %add.ptr16 + %cmp14 = icmp slt i64 %sub.ptr.sub, %sub.ptr.sub12 + br i1 %cmp14, label %do.cond, label %if.else + +if.else: ; preds = %_ZN10TestObjectaSEOS_.exit34 + %sub.ptr.div13.neg = sdiv exact i64 %sub.ptr.sub12, -24 + %15 = getelementptr %struct.TestObject, ptr %first, i64 %sub.ptr.div13.neg + br label %do.cond + +do.cond: ; preds = %_ZN10TestObjectaSEOS_.exit34, %if.else + %p2.0.pn = phi ptr [ %15, %if.else ], [ %p2.0, %_ZN10TestObjectaSEOS_.exit34 ] + %p2.1 = getelementptr i8, ptr %p2.0.pn, i64 %sub.ptr.sub %cmp17.not = icmp eq ptr %p2.1, %incdec.ptr br i1 %cmp17.not, label %do.end, label %do.body, !llvm.loop !401 -do.end: ; preds = %_ZN10TestObjectaSEOS_.exit34 +do.end: ; preds = %do.cond %inc.i35 = add nsw i64 %14, 1 store i64 %inc.i35, ptr @_ZN10TestObject18sTOMoveAssignCountE, align 8 - %15 = load i32, ptr %p2.0, align 4 + %16 = load i32, ptr %p2.0, align 4 store i32 %4, ptr %p2.0, align 4 %mMagicValue.i38 = getelementptr inbounds nuw i8, ptr %p2.0, i64 16 - %16 = load i32, ptr %mMagicValue.i38, align 4 + %17 = load i32, ptr %mMagicValue.i38, align 4 store i32 %5, ptr %mMagicValue.i38, align 4 %mbThrowOnCopy.i40 = getelementptr inbounds nuw i8, ptr %p2.0, i64 4 - %17 = load i8, ptr %mbThrowOnCopy.i40, align 1 + %18 = load i8, ptr %mbThrowOnCopy.i40, align 1 store i8 %frombool3.i.i, ptr %mbThrowOnCopy.i40, align 1 %cmp.not = icmp eq ptr %incdec.ptr, %first br i1 %cmp.not, label %for.end, label %for.body, !llvm.loop !402 for.end: ; preds = %do.end - %cmp.not.i46 = icmp eq i32 %16, 32623592 + %cmp.not.i46 = icmp eq i32 %17, 32623592 br i1 %cmp.not.i46, label %_ZN10TestObjectD2Ev.exit, label %if.then.i47 if.then.i47: ; preds = %for.end - %18 = load i32, ptr @_ZN10TestObject16sMagicErrorCountE, align 4 - %inc.i48 = add nsw i32 %18, 1 + %19 = load i32, ptr @_ZN10TestObject16sMagicErrorCountE, align 4 + %inc.i48 = add nsw i32 %19, 1 store i32 %inc.i48, ptr @_ZN10TestObject16sMagicErrorCountE, align 4 br label %_ZN10TestObjectD2Ev.exit _ZN10TestObjectD2Ev.exit: ; preds = %for.end, %if.then.i47 %add.ptr20 = getelementptr inbounds i8, ptr %first, i64 %sub.ptr.sub3 - %19 = load i64, ptr @_ZN10TestObject8sTOCountE, align 8 - %dec.i = add nsw i64 %19, -1 + %20 = load i64, ptr @_ZN10TestObject8sTOCountE, align 8 + %dec.i = add nsw i64 %20, -1 store i64 %dec.i, ptr @_ZN10TestObject8sTOCountE, align 8 - %20 = load i64, ptr @_ZN10TestObject12sTODtorCountE, align 8 - %inc3.i49 = add nsw i64 %20, 1 + %21 = load i64, ptr @_ZN10TestObject12sTODtorCountE, align 8 + %inc3.i49 = add nsw i64 %21, 1 store i64 %inc3.i49, ptr @_ZN10TestObject12sTODtorCountE, align 8 ret ptr %add.ptr20 } diff --git a/bench/eastl/optimized/TestDeque.cpp.ll b/bench/eastl/optimized/TestDeque.cpp.ll index c084dc797dc..748bb71650f 100644 --- a/bench/eastl/optimized/TestDeque.cpp.ll +++ b/bench/eastl/optimized/TestDeque.cpp.ll @@ -95807,7 +95807,7 @@ if.then: ; preds = %entry %sub.ptr.rhs.cast.i = ptrtoint ptr %4 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, 2 - %cmp3.i = icmp ult i64 %sub.ptr.div.i, %sub.ptr.div.i.i + %cmp3.i = icmp ult i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i br i1 %cmp3.i, label %if.then5.i, label %if.end26.i if.then5.i: ; preds = %if.then @@ -95855,8 +95855,7 @@ if.end26.i: ; preds = %for.body.i, %if.end %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %10 to i64 %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %11 to i64 %sub.ptr.sub.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i - %sub.ptr.div.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i, 2 - %cmp.i.i.i = icmp eq i64 %sub.ptr.div.i.i.i, %sub.ptr.div.i.i + %cmp.i.i.i = icmp eq i64 %sub.ptr.sub.i.i.i, %sub.ptr.sub.i.i br i1 %cmp.i.i.i, label %if.then.i.i.i, label %if.else.i.i.i if.then.i.i.i: ; preds = %if.end26.i @@ -95867,6 +95866,7 @@ if.then.i.i.i: ; preds = %if.end26.i br label %_ZN5eastl9DequeBaseIiNS_9allocatorELj1EE17DoReallocSubarrayEmNS2_4SideE.exit if.else.i.i.i: ; preds = %if.end26.i + %sub.ptr.div.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i, 2 %add.i.i.i = sub nsw i64 %sub.ptr.div.i.i.i, %sub.ptr.div.i.i %add.ptr4.i.i.i = getelementptr inbounds ptr, ptr %12, i64 %add.i.i.i %14 = load ptr, ptr %add.ptr4.i.i.i, align 8, !noalias !4922 @@ -95937,7 +95937,7 @@ if.then9: ; preds = %if.else %sub.ptr.rhs.cast32.i = ptrtoint ptr %2 to i64 %sub.ptr.sub33.i = sub i64 %sub.ptr.lhs.cast31.i, %sub.ptr.rhs.cast32.i %sub.ptr.div34.i = ashr exact i64 %sub.ptr.sub33.i, 2 - %cmp35.i = icmp ult i64 %sub.ptr.div34.i, %sub.ptr.div.i.i + %cmp35.i = icmp ult i64 %sub.ptr.sub33.i, %sub.ptr.sub.i.i br i1 %cmp35.i, label %if.then38.i, label %if.end78.i if.then38.i: ; preds = %if.then9 @@ -96104,7 +96104,7 @@ if.then20: ; preds = %if.else15 %sub.ptr.rhs.cast.i110 = ptrtoint ptr %43 to i64 %sub.ptr.sub.i111 = sub i64 %sub.ptr.rhs.cast8.i, %sub.ptr.rhs.cast.i110 %sub.ptr.div.i112 = ashr exact i64 %sub.ptr.sub.i111, 2 - %cmp3.i113 = icmp ult i64 %sub.ptr.div.i112, %sub.ptr.div.i.i + %cmp3.i113 = icmp ult i64 %sub.ptr.sub.i111, %sub.ptr.sub.i.i br i1 %cmp3.i113, label %if.then5.i136, label %if.end26.i114 if.then5.i136: ; preds = %if.then20 @@ -96148,17 +96148,18 @@ if.end26.i114: ; preds = %for.body.i147, %if. %sub.ptr.lhs.cast.i.i.i116 = ptrtoint ptr %48 to i64 %sub.ptr.rhs.cast.i.i.i117 = ptrtoint ptr %49 to i64 %sub.ptr.sub.i.i.i118 = sub i64 %sub.ptr.lhs.cast.i.i.i116, %sub.ptr.rhs.cast.i.i.i117 - %sub.ptr.div.i.i.i119 = ashr exact i64 %sub.ptr.sub.i.i.i118, 2 - %cmp.i.i.i120 = icmp eq i64 %sub.ptr.div.i.i.i119, %sub.ptr.div.i.i + %cmp.i.i.i120 = icmp eq i64 %sub.ptr.sub.i.i.i118, %sub.ptr.sub.i.i br i1 %cmp.i.i.i120, label %if.then.i.i.i132, label %if.else.i.i.i121 if.then.i.i.i132: ; preds = %if.end26.i114 %sub.i.i133 = sub nsw i64 0, %sub.ptr.div.i.i %51 = load ptr, ptr %mpEnd.i99, align 8, !noalias !4945 %add.ptr.i.i.i135 = getelementptr inbounds i32, ptr %48, i64 %sub.i.i133 + %.pre777 = ashr exact i64 %sub.ptr.sub.i.i.i118, 2 br label %_ZN5eastl9DequeBaseIiNS_9allocatorELj1EE17DoReallocSubarrayEmNS2_4SideE.exit156 if.else.i.i.i121: ; preds = %if.end26.i114 + %sub.ptr.div.i.i.i119 = ashr exact i64 %sub.ptr.sub.i.i.i118, 2 %add.i.i.i122 = sub nsw i64 %sub.ptr.div.i.i.i119, %sub.ptr.div.i.i %add.ptr4.i.i.i123 = getelementptr inbounds ptr, ptr %50, i64 %add.i.i.i122 %52 = load ptr, ptr %add.ptr4.i.i.i123, align 8, !noalias !4945 @@ -96167,12 +96168,13 @@ if.else.i.i.i121: ; preds = %if.end26.i114 br label %_ZN5eastl9DequeBaseIiNS_9allocatorELj1EE17DoReallocSubarrayEmNS2_4SideE.exit156 _ZN5eastl9DequeBaseIiNS_9allocatorELj1EE17DoReallocSubarrayEmNS2_4SideE.exit156: ; preds = %if.then.i.i.i132, %if.else.i.i.i121 + %sub.ptr.div.i.i168.pre-phi = phi i64 [ %.pre777, %if.then.i.i.i132 ], [ %sub.ptr.div.i.i.i119, %if.else.i.i.i121 ] %53 = phi ptr [ %51, %if.then.i.i.i132 ], [ %.pre772, %if.else.i.i.i121 ] %storemerge.i.i31.sink.i125 = phi ptr [ %add.ptr.i.i.i135, %if.then.i.i.i132 ], [ %52, %if.else.i.i.i121 ] %ref.tmp.sroa.4.0.i30.sink.i126 = phi ptr [ %49, %if.then.i.i.i132 ], [ %52, %if.else.i.i.i121 ] %ref.tmp.sroa.8.0.i29.sink.i127 = phi ptr [ %51, %if.then.i.i.i132 ], [ %add.ptr.i.i.i.i124, %if.else.i.i.i121 ] %ref.tmp.sroa.11.0.i28.sink.i128 = phi ptr [ %50, %if.then.i.i.i132 ], [ %add.ptr4.i.i.i123, %if.else.i.i.i121 ] - %add.i.i169 = add nsw i64 %sub.ptr.div.i.i.i119, %add11.i + %add.i.i169 = add nsw i64 %sub.ptr.div.i.i168.pre-phi, %add11.i %cmp.i.i = icmp eq i64 %add.i.i169, 0 br i1 %cmp.i.i, label %if.then.i.i, label %if.else.i.i @@ -96193,7 +96195,7 @@ _ZNK5eastl13DequeIteratorIiPiRiLj1EEplEl.exit: ; preds = %if.then.i.i, %if.el br i1 %cmp24.not, label %if.else37, label %if.then25 if.then25: ; preds = %_ZNK5eastl13DequeIteratorIiPiRiLj1EEplEl.exit - %add.i.i178 = add nsw i64 %sub.ptr.div.i.i.i119, %sub.ptr.div.i.i + %add.i.i178 = add nsw i64 %sub.ptr.div.i.i168.pre-phi, %sub.ptr.div.i.i %cmp.i.i179 = icmp eq i64 %add.i.i178, 0 br i1 %cmp.i.i179, label %if.then.i.i190, label %if.else.i.i180 @@ -96484,7 +96486,7 @@ if.else46: ; preds = %if.else15 %sub.ptr.lhs.cast31.i339 = ptrtoint ptr %add.ptr.i338 to i64 %sub.ptr.sub33.i341 = sub i64 %sub.ptr.lhs.cast31.i339, %sub.ptr.lhs.cast2.i.i %sub.ptr.div34.i342 = ashr exact i64 %sub.ptr.sub33.i341, 2 - %cmp35.i343 = icmp ult i64 %sub.ptr.div34.i342, %sub.ptr.div.i.i + %cmp35.i343 = icmp ult i64 %sub.ptr.sub33.i341, %sub.ptr.sub.i.i br i1 %cmp35.i343, label %if.then38.i365, label %if.end78.i344 if.then38.i365: ; preds = %if.else46 @@ -96578,7 +96580,7 @@ _ZNK5eastl13DequeIteratorIiPiRiLj1EEmiEl.exit: ; preds = %if.then.i.i412, %if br i1 %cmp52, label %if.then53, label %if.else68 if.then53: ; preds = %_ZNK5eastl13DequeIteratorIiPiRiLj1EEmiEl.exit - %cmp.i.i422 = icmp eq i64 %sub.ptr.div.i.i22.i350, %sub.ptr.div.i.i + %cmp.i.i422 = icmp eq i64 %sub.ptr.sub.i.i21.i349, %sub.ptr.sub.i.i br i1 %cmp.i.i422, label %if.then.i.i434, label %if.else.i.i423 if.then.i.i434: ; preds = %if.then53 @@ -107041,7 +107043,7 @@ if.then: ; preds = %entry %sub.ptr.rhs.cast.i = ptrtoint ptr %4 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 24 - %cmp3.i = icmp ult i64 %sub.ptr.div.i, %sub.ptr.div.i.i + %cmp3.i = icmp ult i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i br i1 %cmp3.i, label %if.then5.i, label %if.end26.i if.then5.i: ; preds = %if.then @@ -107089,8 +107091,7 @@ if.end26.i: ; preds = %for.body.i, %if.end %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %10 to i64 %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %11 to i64 %sub.ptr.sub.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i - %sub.ptr.div.i.i.i = sdiv exact i64 %sub.ptr.sub.i.i.i, 24 - %cmp.i.i.i = icmp eq i64 %sub.ptr.div.i.i.i, %sub.ptr.div.i.i + %cmp.i.i.i = icmp eq i64 %sub.ptr.sub.i.i.i, %sub.ptr.sub.i.i br i1 %cmp.i.i.i, label %if.then.i.i.i, label %if.else.i.i.i if.then.i.i.i: ; preds = %if.end26.i @@ -107101,6 +107102,7 @@ if.then.i.i.i: ; preds = %if.end26.i br label %_ZN5eastl9DequeBaseI10TestObjectNS_9allocatorELj1EE17DoReallocSubarrayEmNS3_4SideE.exit if.else.i.i.i: ; preds = %if.end26.i + %sub.ptr.div.i.i.i = sdiv exact i64 %sub.ptr.sub.i.i.i, 24 %add.i.i.i = sub nsw i64 %sub.ptr.div.i.i.i, %sub.ptr.div.i.i %add.ptr4.i.i.i = getelementptr inbounds ptr, ptr %12, i64 %add.i.i.i %14 = load ptr, ptr %add.ptr4.i.i.i, align 8, !noalias !5866 @@ -107191,7 +107193,7 @@ if.then9: ; preds = %if.else %sub.ptr.rhs.cast32.i = ptrtoint ptr %2 to i64 %sub.ptr.sub33.i = sub i64 %sub.ptr.lhs.cast31.i, %sub.ptr.rhs.cast32.i %sub.ptr.div34.i = sdiv exact i64 %sub.ptr.sub33.i, 24 - %cmp35.i = icmp ult i64 %sub.ptr.div34.i, %sub.ptr.div.i.i + %cmp35.i = icmp ult i64 %sub.ptr.sub33.i, %sub.ptr.sub.i.i br i1 %cmp35.i, label %if.then38.i, label %if.end78.i if.then38.i: ; preds = %if.then9 @@ -107378,7 +107380,7 @@ if.then20: ; preds = %if.else15 %sub.ptr.rhs.cast.i110 = ptrtoint ptr %65 to i64 %sub.ptr.sub.i111 = sub i64 %sub.ptr.rhs.cast8.i, %sub.ptr.rhs.cast.i110 %sub.ptr.div.i112 = sdiv exact i64 %sub.ptr.sub.i111, 24 - %cmp3.i113 = icmp ult i64 %sub.ptr.div.i112, %sub.ptr.div.i.i + %cmp3.i113 = icmp ult i64 %sub.ptr.sub.i111, %sub.ptr.sub.i.i br i1 %cmp3.i113, label %if.then5.i136, label %if.end26.i114 if.then5.i136: ; preds = %if.then20 @@ -107422,17 +107424,18 @@ if.end26.i114: ; preds = %for.body.i147, %if. %sub.ptr.lhs.cast.i.i.i116 = ptrtoint ptr %70 to i64 %sub.ptr.rhs.cast.i.i.i117 = ptrtoint ptr %71 to i64 %sub.ptr.sub.i.i.i118 = sub i64 %sub.ptr.lhs.cast.i.i.i116, %sub.ptr.rhs.cast.i.i.i117 - %sub.ptr.div.i.i.i119 = sdiv exact i64 %sub.ptr.sub.i.i.i118, 24 - %cmp.i.i.i120 = icmp eq i64 %sub.ptr.div.i.i.i119, %sub.ptr.div.i.i + %cmp.i.i.i120 = icmp eq i64 %sub.ptr.sub.i.i.i118, %sub.ptr.sub.i.i br i1 %cmp.i.i.i120, label %if.then.i.i.i132, label %if.else.i.i.i121 if.then.i.i.i132: ; preds = %if.end26.i114 %sub.i.i133 = sub nsw i64 0, %sub.ptr.div.i.i %73 = load ptr, ptr %mpEnd.i99, align 8, !noalias !5889 %add.ptr.i.i.i135 = getelementptr inbounds %struct.TestObject, ptr %70, i64 %sub.i.i133 + %.pre854 = sdiv exact i64 %sub.ptr.sub.i.i.i118, 24 br label %_ZN5eastl9DequeBaseI10TestObjectNS_9allocatorELj1EE17DoReallocSubarrayEmNS3_4SideE.exit156 if.else.i.i.i121: ; preds = %if.end26.i114 + %sub.ptr.div.i.i.i119 = sdiv exact i64 %sub.ptr.sub.i.i.i118, 24 %add.i.i.i122 = sub nsw i64 %sub.ptr.div.i.i.i119, %sub.ptr.div.i.i %add.ptr4.i.i.i123 = getelementptr inbounds ptr, ptr %72, i64 %add.i.i.i122 %74 = load ptr, ptr %add.ptr4.i.i.i123, align 8, !noalias !5889 @@ -107441,12 +107444,13 @@ if.else.i.i.i121: ; preds = %if.end26.i114 br label %_ZN5eastl9DequeBaseI10TestObjectNS_9allocatorELj1EE17DoReallocSubarrayEmNS3_4SideE.exit156 _ZN5eastl9DequeBaseI10TestObjectNS_9allocatorELj1EE17DoReallocSubarrayEmNS3_4SideE.exit156: ; preds = %if.then.i.i.i132, %if.else.i.i.i121 + %sub.ptr.div.i.i168.pre-phi = phi i64 [ %.pre854, %if.then.i.i.i132 ], [ %sub.ptr.div.i.i.i119, %if.else.i.i.i121 ] %75 = phi ptr [ %73, %if.then.i.i.i132 ], [ %.pre849, %if.else.i.i.i121 ] %storemerge.i.i31.sink.i125 = phi ptr [ %add.ptr.i.i.i135, %if.then.i.i.i132 ], [ %74, %if.else.i.i.i121 ] %ref.tmp.sroa.4.0.i30.sink.i126 = phi ptr [ %71, %if.then.i.i.i132 ], [ %74, %if.else.i.i.i121 ] %ref.tmp.sroa.8.0.i29.sink.i127 = phi ptr [ %73, %if.then.i.i.i132 ], [ %add.ptr.i.i.i.i124, %if.else.i.i.i121 ] %ref.tmp.sroa.11.0.i28.sink.i128 = phi ptr [ %72, %if.then.i.i.i132 ], [ %add.ptr4.i.i.i123, %if.else.i.i.i121 ] - %add.i.i169 = add nsw i64 %sub.ptr.div.i.i.i119, %add11.i + %add.i.i169 = add nsw i64 %sub.ptr.div.i.i168.pre-phi, %add11.i %cmp.i.i = icmp eq i64 %add.i.i169, 0 br i1 %cmp.i.i, label %if.then.i.i, label %if.else.i.i @@ -107467,7 +107471,7 @@ _ZNK5eastl13DequeIteratorI10TestObjectPS1_RS1_Lj1EEplEl.exit: ; preds = %if.then br i1 %cmp24.not, label %if.else37, label %if.then25 if.then25: ; preds = %_ZNK5eastl13DequeIteratorI10TestObjectPS1_RS1_Lj1EEplEl.exit - %add.i.i178 = add nsw i64 %sub.ptr.div.i.i.i119, %sub.ptr.div.i.i + %add.i.i178 = add nsw i64 %sub.ptr.div.i.i168.pre-phi, %sub.ptr.div.i.i %cmp.i.i179 = icmp eq i64 %add.i.i178, 0 br i1 %cmp.i.i179, label %if.then.i.i190, label %if.else.i.i180 @@ -107897,7 +107901,7 @@ if.else46: ; preds = %if.else15 %sub.ptr.lhs.cast31.i368 = ptrtoint ptr %add.ptr.i367 to i64 %sub.ptr.sub33.i370 = sub i64 %sub.ptr.lhs.cast31.i368, %sub.ptr.lhs.cast2.i.i %sub.ptr.div34.i371 = sdiv exact i64 %sub.ptr.sub33.i370, 24 - %cmp35.i372 = icmp ult i64 %sub.ptr.div34.i371, %sub.ptr.div.i.i + %cmp35.i372 = icmp ult i64 %sub.ptr.sub33.i370, %sub.ptr.sub.i.i br i1 %cmp35.i372, label %if.then38.i394, label %if.end78.i373 if.then38.i394: ; preds = %if.else46 @@ -107991,7 +107995,7 @@ _ZNK5eastl13DequeIteratorI10TestObjectPS1_RS1_Lj1EEmiEl.exit: ; preds = %if.then br i1 %cmp52, label %if.then53, label %if.else68 if.then53: ; preds = %_ZNK5eastl13DequeIteratorI10TestObjectPS1_RS1_Lj1EEmiEl.exit - %cmp.i.i451 = icmp eq i64 %sub.ptr.div.i.i22.i379, %sub.ptr.div.i.i + %cmp.i.i451 = icmp eq i64 %sub.ptr.sub.i.i21.i378, %sub.ptr.sub.i.i br i1 %cmp.i.i451, label %if.then.i.i463, label %if.else.i.i452 if.then.i.i463: ; preds = %if.then53 diff --git a/bench/eastl/optimized/TestExtra.cpp.ll b/bench/eastl/optimized/TestExtra.cpp.ll index 5a2302028e8..be9db512bb2 100644 --- a/bench/eastl/optimized/TestExtra.cpp.ll +++ b/bench/eastl/optimized/TestExtra.cpp.ll @@ -16634,8 +16634,8 @@ if.then: ; preds = %entry if.then4: ; preds = %if.then %sub.ptr.rhs.cast7 = ptrtoint ptr %position to i64 %sub.ptr.sub8 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast7 - %sub.ptr.div9 = sdiv exact i64 %sub.ptr.sub8, 24 - %cmp10 = icmp ult i64 %sub.ptr.div.i.i, %sub.ptr.div9 + %sub.ptr.div9.neg = sdiv exact i64 %sub.ptr.sub8, -24 + %cmp10 = icmp ult i64 %sub.ptr.sub.i.i, %sub.ptr.sub8 br i1 %cmp10, label %for.body.i.i.preheader, label %if.else for.body.i.i.preheader: ; preds = %if.then4 @@ -16815,8 +16815,7 @@ _ZN5eastl22uninitialized_copy_ptrIP10TestObjectS2_S2_EET1_T_T0_S3_.exit: ; preds for.body.i.i53.preheader: ; preds = %_ZN5eastl22uninitialized_copy_ptrIP10TestObjectS2_S2_EET1_T_T0_S3_.exit %add.ptr26 = getelementptr inbounds i8, ptr %27, i64 %sub.ptr.sub.i.i - %idx.neg27 = sub nsw i64 0, %sub.ptr.div9 - %add.ptr28 = getelementptr inbounds %struct.TestObject, ptr %add.ptr26, i64 %idx.neg27 + %add.ptr28 = getelementptr inbounds %struct.TestObject, ptr %add.ptr26, i64 %sub.ptr.div9.neg br label %for.body.i.i53 for.body.i.i53: ; preds = %for.body.i.i53.preheader, %for.body.i.i53 @@ -17930,7 +17929,7 @@ if.then4: ; preds = %if.then %sub.ptr.rhs.cast7 = ptrtoint ptr %position to i64 %sub.ptr.sub8 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast7 %sub.ptr.div9 = ashr exact i64 %sub.ptr.sub8, 2 - %cmp10 = icmp ult i64 %sub.ptr.div.i.i, %sub.ptr.div9 + %cmp10 = icmp ult i64 %sub.ptr.sub.i.i, %sub.ptr.sub8 br i1 %cmp10, label %_ZN5eastl22uninitialized_move_ptrIPiS1_S1_EET1_T_T0_S2_.exit, label %if.else _ZN5eastl22uninitialized_move_ptrIPiS1_S1_EET1_T_T0_S2_.exit: ; preds = %if.then4 @@ -19905,8 +19904,8 @@ if.then: ; preds = %entry if.then4: ; preds = %if.then %sub.ptr.rhs.cast7 = ptrtoint ptr %position to i64 %sub.ptr.sub8 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast7 - %sub.ptr.div9 = sdiv exact i64 %sub.ptr.sub8, 24 - %cmp10 = icmp ult i64 %sub.ptr.div.i.i, %sub.ptr.div9 + %sub.ptr.div9.neg = sdiv exact i64 %sub.ptr.sub8, -24 + %cmp10 = icmp ult i64 %sub.ptr.sub.i.i, %sub.ptr.sub8 br i1 %cmp10, label %for.body.i.i.preheader, label %if.else for.body.i.i.preheader: ; preds = %if.then4 @@ -20086,8 +20085,7 @@ _ZN5eastl22uninitialized_copy_ptrIPK10TestObjectS3_PS1_EET1_T_T0_S5_.exit: ; pre for.body.i.i53.preheader: ; preds = %_ZN5eastl22uninitialized_copy_ptrIPK10TestObjectS3_PS1_EET1_T_T0_S5_.exit %add.ptr26 = getelementptr inbounds i8, ptr %27, i64 %sub.ptr.sub.i.i - %idx.neg27 = sub nsw i64 0, %sub.ptr.div9 - %add.ptr28 = getelementptr inbounds %struct.TestObject, ptr %add.ptr26, i64 %idx.neg27 + %add.ptr28 = getelementptr inbounds %struct.TestObject, ptr %add.ptr26, i64 %sub.ptr.div9.neg br label %for.body.i.i53 for.body.i.i53: ; preds = %for.body.i.i53.preheader, %for.body.i.i53 @@ -20684,7 +20682,7 @@ if.then4: ; preds = %if.then %sub.ptr.rhs.cast7 = ptrtoint ptr %position to i64 %sub.ptr.sub8 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast7 %sub.ptr.div9 = ashr exact i64 %sub.ptr.sub8, 2 - %cmp10 = icmp ult i64 %sub.ptr.div.i.i, %sub.ptr.div9 + %cmp10 = icmp ult i64 %sub.ptr.sub.i.i, %sub.ptr.sub8 br i1 %cmp10, label %_ZN5eastl22uninitialized_move_ptrIPfS1_S1_EET1_T_T0_S2_.exit, label %if.else _ZN5eastl22uninitialized_move_ptrIPfS1_S1_EET1_T_T0_S2_.exit: ; preds = %if.then4 diff --git a/bench/eastl/optimized/TestFixedVector.cpp.ll b/bench/eastl/optimized/TestFixedVector.cpp.ll index 2e4d05914d0..00a85fcabe4 100644 --- a/bench/eastl/optimized/TestFixedVector.cpp.ll +++ b/bench/eastl/optimized/TestFixedVector.cpp.ll @@ -19741,7 +19741,7 @@ if.then4: ; preds = %if.then %sub.ptr.rhs.cast7 = ptrtoint ptr %position to i64 %sub.ptr.sub8 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast7 %sub.ptr.div9 = ashr exact i64 %sub.ptr.sub8, 2 - %cmp10 = icmp ult i64 %sub.ptr.div.i.i, %sub.ptr.div9 + %cmp10 = icmp ult i64 %sub.ptr.sub.i.i, %sub.ptr.sub8 br i1 %cmp10, label %_ZN5eastl22uninitialized_move_ptrIPiS1_S1_EET1_T_T0_S2_.exit, label %if.else _ZN5eastl22uninitialized_move_ptrIPiS1_S1_EET1_T_T0_S2_.exit: ; preds = %if.then4 @@ -19907,8 +19907,8 @@ if.then: ; preds = %entry if.then4: ; preds = %if.then %sub.ptr.rhs.cast7 = ptrtoint ptr %position to i64 %sub.ptr.sub8 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast7 - %sub.ptr.div9 = sdiv exact i64 %sub.ptr.sub8, 24 - %cmp10 = icmp ult i64 %sub.ptr.div.i.i, %sub.ptr.div9 + %sub.ptr.div9.neg = sdiv exact i64 %sub.ptr.sub8, -24 + %cmp10 = icmp ult i64 %sub.ptr.sub.i.i, %sub.ptr.sub8 br i1 %cmp10, label %for.body.i.i.preheader, label %if.else for.body.i.i.preheader: ; preds = %if.then4 @@ -20088,8 +20088,7 @@ _ZN5eastl22uninitialized_copy_ptrIP10TestObjectS2_S2_EET1_T_T0_S3_.exit: ; preds for.body.i.i53.preheader: ; preds = %_ZN5eastl22uninitialized_copy_ptrIP10TestObjectS2_S2_EET1_T_T0_S3_.exit %add.ptr26 = getelementptr inbounds i8, ptr %27, i64 %sub.ptr.sub.i.i - %idx.neg27 = sub nsw i64 0, %sub.ptr.div9 - %add.ptr28 = getelementptr inbounds %struct.TestObject, ptr %add.ptr26, i64 %idx.neg27 + %add.ptr28 = getelementptr inbounds %struct.TestObject, ptr %add.ptr26, i64 %sub.ptr.div9.neg br label %for.body.i.i53 for.body.i.i53: ; preds = %for.body.i.i53.preheader, %for.body.i.i53 @@ -20394,7 +20393,7 @@ if.then4: ; preds = %if.then %sub.ptr.rhs.cast7 = ptrtoint ptr %position to i64 %sub.ptr.sub8 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast7 %sub.ptr.div9 = ashr exact i64 %sub.ptr.sub8, 6 - %cmp10 = icmp ult i64 %sub.ptr.div.i.i, %sub.ptr.div9 + %cmp10 = icmp ult i64 %sub.ptr.sub.i.i, %sub.ptr.sub8 br i1 %cmp10, label %_ZN5eastl22uninitialized_move_ptrIP7Align64S2_S2_EET1_T_T0_S3_.exit, label %if.else _ZN5eastl22uninitialized_move_ptrIP7Align64S2_S2_EET1_T_T0_S3_.exit: ; preds = %if.then4 diff --git a/bench/eastl/optimized/TestVector.cpp.ll b/bench/eastl/optimized/TestVector.cpp.ll index f739adc0b19..f88306f7180 100644 --- a/bench/eastl/optimized/TestVector.cpp.ll +++ b/bench/eastl/optimized/TestVector.cpp.ll @@ -35488,7 +35488,7 @@ if.then4: ; preds = %if.then %sub.ptr.rhs.cast7 = ptrtoint ptr %position to i64 %sub.ptr.sub8 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast7 %sub.ptr.div9 = ashr exact i64 %sub.ptr.sub8, 2 - %cmp10 = icmp ult i64 %sub.ptr.div.i.i, %sub.ptr.div9 + %cmp10 = icmp ult i64 %sub.ptr.sub.i.i, %sub.ptr.sub8 br i1 %cmp10, label %_ZN5eastl22uninitialized_move_ptrIPiS1_S1_EET1_T_T0_S2_.exit, label %if.else _ZN5eastl22uninitialized_move_ptrIPiS1_S1_EET1_T_T0_S2_.exit: ; preds = %if.then4 @@ -35756,7 +35756,7 @@ if.then4: ; preds = %if.then %sub.ptr.rhs.cast7 = ptrtoint ptr %position to i64 %sub.ptr.sub8 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast7 %sub.ptr.div9 = ashr exact i64 %sub.ptr.sub8, 6 - %cmp10 = icmp ult i64 %sub.ptr.div.i.i, %sub.ptr.div9 + %cmp10 = icmp ult i64 %sub.ptr.sub.i.i, %sub.ptr.sub8 br i1 %cmp10, label %_ZN5eastl22uninitialized_move_ptrIP7Align64S2_S2_EET1_T_T0_S3_.exit, label %if.else _ZN5eastl22uninitialized_move_ptrIP7Align64S2_S2_EET1_T_T0_S3_.exit: ; preds = %if.then4 @@ -36249,8 +36249,8 @@ if.then: ; preds = %entry if.then4: ; preds = %if.then %sub.ptr.rhs.cast7 = ptrtoint ptr %position to i64 %sub.ptr.sub8 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast7 - %sub.ptr.div9 = sdiv exact i64 %sub.ptr.sub8, 24 - %cmp10 = icmp ult i64 %sub.ptr.div.i.i, %sub.ptr.div9 + %sub.ptr.div9.neg = sdiv exact i64 %sub.ptr.sub8, -24 + %cmp10 = icmp ult i64 %sub.ptr.sub.i.i, %sub.ptr.sub8 br i1 %cmp10, label %for.body.i.i.preheader, label %if.else for.body.i.i.preheader: ; preds = %if.then4 @@ -36430,8 +36430,7 @@ _ZN5eastl22uninitialized_copy_ptrIPK10TestObjectS3_PS1_EET1_T_T0_S5_.exit: ; pre for.body.i.i53.preheader: ; preds = %_ZN5eastl22uninitialized_copy_ptrIPK10TestObjectS3_PS1_EET1_T_T0_S5_.exit %add.ptr26 = getelementptr inbounds i8, ptr %27, i64 %sub.ptr.sub.i.i - %idx.neg27 = sub nsw i64 0, %sub.ptr.div9 - %add.ptr28 = getelementptr inbounds %struct.TestObject, ptr %add.ptr26, i64 %idx.neg27 + %add.ptr28 = getelementptr inbounds %struct.TestObject, ptr %add.ptr26, i64 %sub.ptr.div9.neg br label %for.body.i.i53 for.body.i.i53: ; preds = %for.body.i.i53.preheader, %for.body.i.i53 @@ -38848,7 +38847,7 @@ if.then4: ; preds = %if.then %sub.ptr.rhs.cast7 = ptrtoint ptr %position to i64 %sub.ptr.sub8 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast7 %sub.ptr.div9 = ashr exact i64 %sub.ptr.sub8, 2 - %cmp10 = icmp ult i64 %sub.ptr.div.i.i, %sub.ptr.div9 + %cmp10 = icmp ult i64 %sub.ptr.sub.i.i, %sub.ptr.sub8 br i1 %cmp10, label %_ZN5eastl22uninitialized_move_ptrIPiS1_S1_EET1_T_T0_S2_.exit, label %if.else _ZN5eastl22uninitialized_move_ptrIPiS1_S1_EET1_T_T0_S2_.exit: ; preds = %if.then4 @@ -39011,7 +39010,7 @@ if.then4: ; preds = %if.then %sub.ptr.rhs.cast7 = ptrtoint ptr %position to i64 %sub.ptr.sub8 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast7 %sub.ptr.div9 = ashr exact i64 %sub.ptr.sub8, 2 - %cmp10 = icmp ult i64 %sub.ptr.div.i.i, %sub.ptr.div9 + %cmp10 = icmp ult i64 %sub.ptr.sub.i.i, %sub.ptr.sub8 br i1 %cmp10, label %_ZN5eastl22uninitialized_move_ptrIPfS1_S1_EET1_T_T0_S2_.exit, label %if.else _ZN5eastl22uninitialized_move_ptrIPfS1_S1_EET1_T_T0_S2_.exit: ; preds = %if.then4 @@ -39173,8 +39172,8 @@ if.then: ; preds = %entry if.then4: ; preds = %if.then %sub.ptr.rhs.cast7 = ptrtoint ptr %position to i64 %sub.ptr.sub8 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast7 - %sub.ptr.div9 = sdiv exact i64 %sub.ptr.sub8, 24 - %cmp10 = icmp ult i64 %sub.ptr.div.i.i, %sub.ptr.div9 + %sub.ptr.div9.neg = sdiv exact i64 %sub.ptr.sub8, -24 + %cmp10 = icmp ult i64 %sub.ptr.sub.i.i, %sub.ptr.sub8 br i1 %cmp10, label %for.body.i.i.preheader, label %if.else for.body.i.i.preheader: ; preds = %if.then4 @@ -39354,8 +39353,7 @@ _ZN5eastl22uninitialized_copy_ptrIP10TestObjectS2_S2_EET1_T_T0_S3_.exit: ; preds for.body.i.i53.preheader: ; preds = %_ZN5eastl22uninitialized_copy_ptrIP10TestObjectS2_S2_EET1_T_T0_S3_.exit %add.ptr26 = getelementptr inbounds i8, ptr %27, i64 %sub.ptr.sub.i.i - %idx.neg27 = sub nsw i64 0, %sub.ptr.div9 - %add.ptr28 = getelementptr inbounds %struct.TestObject, ptr %add.ptr26, i64 %idx.neg27 + %add.ptr28 = getelementptr inbounds %struct.TestObject, ptr %add.ptr26, i64 %sub.ptr.div9.neg br label %for.body.i.i53 for.body.i.i53: ; preds = %for.body.i.i53.preheader, %for.body.i.i53 diff --git a/bench/eastl/optimized/string.cpp.ll b/bench/eastl/optimized/string.cpp.ll index 70a5c51bae2..840d792ac01 100644 --- a/bench/eastl/optimized/string.cpp.ll +++ b/bench/eastl/optimized/string.cpp.ll @@ -280,20 +280,17 @@ entry: %sub.ptr.lhs.cast = ptrtoint ptr %pSrcEnd to i64 %sub.ptr.rhs.cast = ptrtoint ptr %0 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = ashr exact i64 %sub.ptr.sub, 1 %1 = load ptr, ptr %pDest, align 8 %sub.ptr.lhs.cast1 = ptrtoint ptr %pDestEnd to i64 %sub.ptr.rhs.cast2 = ptrtoint ptr %1 to i64 %sub.ptr.sub3 = sub i64 %sub.ptr.lhs.cast1, %sub.ptr.rhs.cast2 - %sub.ptr.div4 = ashr exact i64 %sub.ptr.sub3, 1 - %spec.select = tail call i64 @llvm.umin.i64(i64 %sub.ptr.div, i64 %sub.ptr.div4) - %mul = shl nsw i64 %spec.select, 1 - tail call void @llvm.memmove.p0.p0.i64(ptr align 2 %1, ptr align 2 %0, i64 %mul, i1 false) + %spec.select = tail call i64 @llvm.umin.i64(i64 %sub.ptr.sub, i64 %sub.ptr.sub3) + tail call void @llvm.memmove.p0.p0.i64(ptr align 2 %1, ptr align 2 %0, i64 %spec.select, i1 false) %2 = load ptr, ptr %pSrc, align 8 - %add.ptr = getelementptr inbounds i16, ptr %2, i64 %spec.select + %add.ptr = getelementptr inbounds i8, ptr %2, i64 %spec.select store ptr %add.ptr, ptr %pSrc, align 8 %3 = load ptr, ptr %pDest, align 8 - %add.ptr5 = getelementptr inbounds i16, ptr %3, i64 %spec.select + %add.ptr5 = getelementptr inbounds i8, ptr %3, i64 %spec.select store ptr %add.ptr5, ptr %pDest, align 8 ret i1 true } @@ -588,20 +585,17 @@ entry: %sub.ptr.lhs.cast = ptrtoint ptr %pSrcEnd to i64 %sub.ptr.rhs.cast = ptrtoint ptr %0 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = ashr exact i64 %sub.ptr.sub, 2 %1 = load ptr, ptr %pDest, align 8 %sub.ptr.lhs.cast1 = ptrtoint ptr %pDestEnd to i64 %sub.ptr.rhs.cast2 = ptrtoint ptr %1 to i64 %sub.ptr.sub3 = sub i64 %sub.ptr.lhs.cast1, %sub.ptr.rhs.cast2 - %sub.ptr.div4 = ashr exact i64 %sub.ptr.sub3, 2 - %spec.select = tail call i64 @llvm.umin.i64(i64 %sub.ptr.div, i64 %sub.ptr.div4) - %mul = shl nsw i64 %spec.select, 2 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %0, i64 %mul, i1 false) + %spec.select = tail call i64 @llvm.umin.i64(i64 %sub.ptr.sub, i64 %sub.ptr.sub3) + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %0, i64 %spec.select, i1 false) %2 = load ptr, ptr %pSrc, align 8 - %add.ptr = getelementptr inbounds i32, ptr %2, i64 %spec.select + %add.ptr = getelementptr inbounds i8, ptr %2, i64 %spec.select store ptr %add.ptr, ptr %pSrc, align 8 %3 = load ptr, ptr %pDest, align 8 - %add.ptr5 = getelementptr inbounds i32, ptr %3, i64 %spec.select + %add.ptr5 = getelementptr inbounds i8, ptr %3, i64 %spec.select store ptr %add.ptr5, ptr %pDest, align 8 ret i1 true } diff --git a/bench/egg-rs/optimized/3ggxdjucv9wymjjs.ll b/bench/egg-rs/optimized/3ggxdjucv9wymjjs.ll index eb4716e6db3..a3b016effe6 100644 --- a/bench/egg-rs/optimized/3ggxdjucv9wymjjs.ll +++ b/bench/egg-rs/optimized/3ggxdjucv9wymjjs.ll @@ -107,7 +107,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$13shrink_to_fit17he0e %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val31.i = load ptr, ptr %11, align 8, !alias.scope !16 %12 = icmp eq i64 %4, 0 - br i1 %12, label %24, label %13 + br i1 %12, label %23, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 2 @@ -118,27 +118,25 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$13shrink_to_fit17he0e "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0315fd2d83659e8fE.exit.i": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val31.i, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 4) #14, !noalias !16 - br label %22 + br label %21 17: ; preds = %13 %18 = shl nuw i64 %1, 2 - %19 = icmp ule i64 %18, %14 - tail call void @llvm.assume(i1 %19) - %20 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val31.i, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef range(i64 4, 0) %18) #14, !noalias !16 - %21 = icmp eq ptr %20, null - br i1 %21, label %23, label %22 + %19 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val31.i, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef range(i64 4, 0) %18) #14, !noalias !16 + %20 = icmp eq ptr %19, null + br i1 %20, label %22, label %21 -22: ; preds = %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0315fd2d83659e8fE.exit.i" - %storemerge.i = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0315fd2d83659e8fE.exit.i" ], [ %20, %17 ] +21: ; preds = %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0315fd2d83659e8fE.exit.i" + %storemerge.i = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0315fd2d83659e8fE.exit.i" ], [ %19, %17 ] store ptr %storemerge.i, ptr %11, align 8, !alias.scope !16 store i64 %1, ptr %0, align 8, !alias.scope !16 - br label %24 + br label %23 -23: ; preds = %17 +22: ; preds = %17 tail call void @_ZN5alloc7raw_vec12handle_error17h0fc9691652206c4fE(i64 noundef 4, i64 %18) #15 unreachable -24: ; preds = %22, %10 +23: ; preds = %21, %10 ret void } @@ -407,7 +405,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h496 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val31 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %23, label %13 + br i1 %12, label %22, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 2 @@ -418,28 +416,26 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h496 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0315fd2d83659e8fE.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val31, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 4) #14 - br label %22 + br label %21 17: ; preds = %13 %18 = shl nuw i64 %1, 2 - %19 = icmp ule i64 %18, %14 - tail call void @llvm.assume(i1 %19) - %20 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val31, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef range(i64 4, 0) %18) #14 - %21 = icmp eq ptr %20, null - br i1 %21, label %23, label %22 + %19 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val31, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef range(i64 4, 0) %18) #14 + %20 = icmp eq ptr %19, null + br i1 %20, label %22, label %21 -22: ; preds = %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0315fd2d83659e8fE.exit" - %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0315fd2d83659e8fE.exit" ], [ %20, %17 ] +21: ; preds = %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0315fd2d83659e8fE.exit" + %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0315fd2d83659e8fE.exit" ], [ %19, %17 ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %23 + br label %22 -23: ; preds = %10, %17, %22 - %.sroa.4.0 = phi i64 [ undef, %22 ], [ %18, %17 ], [ undef, %10 ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %22 ], [ 4, %17 ], [ -9223372036854775807, %10 ] - %24 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %25 = insertvalue { i64, i64 } %24, i64 %.sroa.4.0, 1 - ret { i64, i64 } %25 +22: ; preds = %10, %17, %21 + %.sroa.4.0 = phi i64 [ undef, %21 ], [ %18, %17 ], [ undef, %10 ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ 4, %17 ], [ -9223372036854775807, %10 ] + %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 + ret { i64, i64 } %24 } ; Function Attrs: cold nonlazybind uwtable @@ -639,7 +635,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17hc5539cc0d 13: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h08f1bb7e97a2c174E.exit.thread.i" %14 = shl nuw i64 %2, 2 - %15 = icmp uge i64 %9, %14 + %15 = icmp uge i64 %.sroa.0.0.sroa.speculated.i23.i, %2 tail call void @llvm.assume(i1 %15) %16 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val22.i, i64 noundef %14, i64 noundef range(i64 1, 9) 4, i64 noundef %9) #14, !noalias !54 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h212a2d5c3422bc50E.exit.i.i" diff --git a/bench/entt/optimized/dense_map.cpp.ll b/bench/entt/optimized/dense_map.cpp.ll index 410726d1e32..68132e14090 100644 --- a/bench/entt/optimized/dense_map.cpp.ll +++ b/bench/entt/optimized/dense_map.cpp.ll @@ -72497,33 +72497,29 @@ _ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEP cleanup.cont367: ; preds = %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i2818, %cleanup.cont367.critedge call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %gtest_ar333) #25 %228 = load ptr, ptr %_M_finish.i.i2399, align 8, !tbaa !40 - %229 = ptrtoint ptr %228 to i64 %add.ptr.i.i.i.i2824 = getelementptr inbounds i8, ptr %228, i64 -72 - %230 = load ptr, ptr %packed.i, align 8, !tbaa !40 + %229 = load ptr, ptr %packed.i, align 8, !tbaa !40 %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %add.ptr.i.i.i.i2824 to i64 - %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %230 to i64 + %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %229 to i64 %sub.ptr.sub.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i %sub.ptr.div.i.i.i = sdiv exact i64 %sub.ptr.sub.i.i.i, 24 - %sub.ptr.sub.i.i32.i = sub i64 %229, %sub.ptr.rhs.cast.i.i.i - %sub.ptr.div.i.i33.i = sdiv exact i64 %sub.ptr.sub.i.i32.i, 24 - %cmp.not40.i = icmp eq i64 %sub.ptr.div.i.i33.i, %sub.ptr.div.i.i.i %.pre = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !55 %.pre4615 = load ptr, ptr %map, align 8, !tbaa !33 %.pre4616 = ptrtoint ptr %.pre to i64 %.pre4617 = ptrtoint ptr %.pre4615 to i64 %.pre4618 = sub i64 %.pre4616, %.pre4617 %.pre4619 = ashr exact i64 %.pre4618, 3 - br i1 %cmp.not40.i, label %invoke.cont386, label %for.body.lr.ph.i - -for.body.lr.ph.i: ; preds = %cleanup.cont367 + %230 = ptrtoint ptr %228 to i64 + %sub.ptr.sub.i.i32.i = sub i64 %230, %sub.ptr.rhs.cast.i.i.i + %sub.ptr.div.i.i33.i = sdiv exact i64 %sub.ptr.sub.i.i32.i, 24 %sub.i.i.i.i = add nsw i64 %.pre4619, -1 br label %for.body.i -for.body.i: ; preds = %_ZN4entt9dense_mapImmNS_8identityESt8equal_toImESaISt4pairIKmmEEE5eraseERS5_.exit.i, %for.body.lr.ph.i - %incdec.ptr.i.i.i43.i = phi ptr [ %228, %for.body.lr.ph.i ], [ %incdec.ptr.i.i.i42.i, %_ZN4entt9dense_mapImmNS_8identityESt8equal_toImESaISt4pairIKmmEEE5eraseERS5_.exit.i ] - %from.041.i = phi i64 [ %sub.ptr.div.i.i33.i, %for.body.lr.ph.i ], [ %sub.i, %_ZN4entt9dense_mapImmNS_8identityESt8equal_toImESaISt4pairIKmmEEE5eraseERS5_.exit.i ] +for.body.i: ; preds = %_ZN4entt9dense_mapImmNS_8identityESt8equal_toImESaISt4pairIKmmEEE5eraseERS5_.exit.i, %cleanup.cont367 + %incdec.ptr.i.i.i43.i = phi ptr [ %228, %cleanup.cont367 ], [ %incdec.ptr.i.i.i42.i, %_ZN4entt9dense_mapImmNS_8identityESt8equal_toImESaISt4pairIKmmEEE5eraseERS5_.exit.i ] + %from.041.i = phi i64 [ %sub.ptr.div.i.i33.i, %cleanup.cont367 ], [ %sub.i, %_ZN4entt9dense_mapImmNS_8identityESt8equal_toImESaISt4pairIKmmEEE5eraseERS5_.exit.i ] %sub.i = add nsw i64 %from.041.i, -1 - %element.i = getelementptr inbounds %"struct.entt::internal::dense_map_node", ptr %230, i64 %sub.i, i32 1 + %element.i = getelementptr inbounds %"struct.entt::internal::dense_map_node", ptr %229, i64 %sub.i, i32 1 %231 = load i64, ptr %element.i, align 8, !tbaa !57 %and.i.i.i.i = and i64 %231, %sub.i.i.i.i %add.ptr.i35.i = getelementptr inbounds i64, ptr %.pre4615, i64 %and.i.i.i.i @@ -72595,7 +72591,7 @@ _ZN4entt9dense_mapImmNS_8identityESt8equal_toImESaISt4pairIKmmEEE5eraseERS5_.exi %cmp.not.i = icmp eq i64 %sub.i, %sub.ptr.div.i.i.i br i1 %cmp.not.i, label %invoke.cont386, label %for.body.i, !llvm.loop !477 -invoke.cont386: ; preds = %_ZN4entt9dense_mapImmNS_8identityESt8equal_toImESaISt4pairIKmmEEE5eraseERS5_.exit.i, %cleanup.cont367 +invoke.cont386: ; preds = %_ZN4entt9dense_mapImmNS_8identityESt8equal_toImESaISt4pairIKmmEEE5eraseERS5_.exit.i call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %gtest_ar393) #25 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp394) #25 store i64 %.pre4619, ptr %ref.tmp394, align 8, !tbaa !57 diff --git a/bench/folly/optimized/CacheLocality.cpp.ll b/bench/folly/optimized/CacheLocality.cpp.ll index 9491e117c35..70626a8133a 100644 --- a/bench/folly/optimized/CacheLocality.cpp.ll +++ b/bench/folly/optimized/CacheLocality.cpp.ll @@ -1280,16 +1280,15 @@ while.cond27.preheader: ; preds = %invoke.cont24 %sub.ptr.lhs.cast.i217615 = ptrtoint ptr %numCachesByLevel.sroa.12.1 to i64 %sub.ptr.rhs.cast.i218616 = ptrtoint ptr %numCachesByLevel.sroa.0.1 to i64 %sub.ptr.sub.i219617 = sub i64 %sub.ptr.lhs.cast.i217615, %sub.ptr.rhs.cast.i218616 - %sub.ptr.div.i220618 = ashr exact i64 %sub.ptr.sub.i219617, 3 - %cmp29.not619 = icmp ugt i64 %sub.ptr.div.i220618, %sub.ptr.div.i207 + %cmp29.not619 = icmp ugt i64 %sub.ptr.sub.i219617, %sub.ptr.sub.i206 br i1 %cmp29.not619, label %while.end, label %while.body30 while.body30: ; preds = %while.cond27.preheader, %invoke.cont32 - %sub.ptr.div.i220624 = phi i64 [ %sub.ptr.div.i220, %invoke.cont32 ], [ %sub.ptr.div.i220618, %while.cond27.preheader ] %sub.ptr.sub.i219623 = phi i64 [ %sub.ptr.sub.i219, %invoke.cont32 ], [ %sub.ptr.sub.i219617, %while.cond27.preheader ] %numCachesByLevel.sroa.0.2622 = phi ptr [ %numCachesByLevel.sroa.0.3, %invoke.cont32 ], [ %numCachesByLevel.sroa.0.1, %while.cond27.preheader ] %numCachesByLevel.sroa.12.2621 = phi ptr [ %numCachesByLevel.sroa.12.3, %invoke.cont32 ], [ %numCachesByLevel.sroa.12.1, %while.cond27.preheader ] %numCachesByLevel.sroa.17.2620 = phi ptr [ %numCachesByLevel.sroa.17.3, %invoke.cont32 ], [ %numCachesByLevel.sroa.17.1, %while.cond27.preheader ] + %sub.ptr.div.i220624 = ashr exact i64 %sub.ptr.sub.i219623, 3 %cmp.not.i.i = icmp eq ptr %numCachesByLevel.sroa.12.2621, %numCachesByLevel.sroa.17.2620 br i1 %cmp.not.i.i, label %if.else.i.i, label %if.then.i.i221 @@ -1314,27 +1313,23 @@ _ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %if.else.i.i %cmp7.i.i.i.i = icmp ult i64 %add.i.i.i.i, %sub.ptr.div.i220624 %56 = call i64 @llvm.umin.i64(i64 %add.i.i.i.i, i64 1152921504606846975) %cond.i.i.i.i = select i1 %cmp7.i.i.i.i, i64 1152921504606846975, i64 %56 - %cmp.not.i.i.i.i = icmp eq i64 %cond.i.i.i.i, 0 - br i1 %cmp.not.i.i.i.i, label %_ZNSt12_Vector_baseImSaImEE11_M_allocateEm.exit.i.i.i, label %cond.true.i.i.i.i - -cond.true.i.i.i.i: ; preds = %_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i.i.i + %cmp.not.i.i.i.i = icmp ne i64 %cond.i.i.i.i, 0 + call void @llvm.assume(i1 %cmp.not.i.i.i.i) %mul.i.i.i.i.i.i = shl nuw nsw i64 %cond.i.i.i.i, 3 %call5.i.i.i.i.i.i225 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i) #31 to label %_ZNSt12_Vector_baseImSaImEE11_M_allocateEm.exit.i.i.i unwind label %lpad31.loopexit -_ZNSt12_Vector_baseImSaImEE11_M_allocateEm.exit.i.i.i: ; preds = %cond.true.i.i.i.i, %_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i.i.i - %cond.i31.i.i.i = phi ptr [ null, %_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i.i.i ], [ %call5.i.i.i.i.i.i225, %cond.true.i.i.i.i ] - %add.ptr.i.i.i = getelementptr inbounds i64, ptr %cond.i31.i.i.i, i64 %sub.ptr.div.i220624 +_ZNSt12_Vector_baseImSaImEE11_M_allocateEm.exit.i.i.i: ; preds = %_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i.i.i + %add.ptr.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i.i225, i64 %sub.ptr.sub.i219623 store i64 0, ptr %add.ptr.i.i.i, align 8, !tbaa !37 %cmp.i.i.i.i.i.i = icmp sgt i64 %sub.ptr.sub.i219623, 0 br i1 %cmp.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i, label %_ZNSt6vectorImSaImEE11_S_relocateEPmS2_S2_RS0_.exit38.i.i.i if.then.i.i.i.i.i.i: ; preds = %_ZNSt12_Vector_baseImSaImEE11_M_allocateEm.exit.i.i.i - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %cond.i31.i.i.i, ptr align 8 %numCachesByLevel.sroa.0.2622, i64 %sub.ptr.sub.i219623, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %call5.i.i.i.i.i.i225, ptr align 8 %numCachesByLevel.sroa.0.2622, i64 %sub.ptr.sub.i219623, i1 false) br label %_ZNSt6vectorImSaImEE11_S_relocateEPmS2_S2_RS0_.exit38.i.i.i _ZNSt6vectorImSaImEE11_S_relocateEPmS2_S2_RS0_.exit38.i.i.i: ; preds = %if.then.i.i.i.i.i.i, %_ZNSt12_Vector_baseImSaImEE11_M_allocateEm.exit.i.i.i - %add.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %cond.i31.i.i.i, i64 %sub.ptr.sub.i219623 %tobool.not.i.i.i.i = icmp eq ptr %numCachesByLevel.sroa.0.2622, null br i1 %tobool.not.i.i.i.i, label %_ZNSt6vectorImSaImEE17_M_realloc_insertIJmEEEvN9__gnu_cxx17__normal_iteratorIPmS1_EEDpOT_.exit.i.i, label %if.then.i39.i.i.i @@ -1343,19 +1338,18 @@ if.then.i39.i.i.i: ; preds = %_ZNSt6vectorImSaImE br label %_ZNSt6vectorImSaImEE17_M_realloc_insertIJmEEEvN9__gnu_cxx17__normal_iteratorIPmS1_EEDpOT_.exit.i.i _ZNSt6vectorImSaImEE17_M_realloc_insertIJmEEEvN9__gnu_cxx17__normal_iteratorIPmS1_EEDpOT_.exit.i.i: ; preds = %if.then.i39.i.i.i, %_ZNSt6vectorImSaImEE11_S_relocateEPmS2_S2_RS0_.exit38.i.i.i - %add.ptr19.i.i.i = getelementptr inbounds nuw i64, ptr %cond.i31.i.i.i, i64 %cond.i.i.i.i + %add.ptr19.i.i.i = getelementptr inbounds nuw i64, ptr %call5.i.i.i.i.i.i225, i64 %cond.i.i.i.i br label %invoke.cont32 invoke.cont32: ; preds = %_ZNSt6vectorImSaImEE17_M_realloc_insertIJmEEEvN9__gnu_cxx17__normal_iteratorIPmS1_EEDpOT_.exit.i.i, %if.then.i.i221 %numCachesByLevel.sroa.17.3 = phi ptr [ %add.ptr19.i.i.i, %_ZNSt6vectorImSaImEE17_M_realloc_insertIJmEEEvN9__gnu_cxx17__normal_iteratorIPmS1_EEDpOT_.exit.i.i ], [ %numCachesByLevel.sroa.17.2620, %if.then.i.i221 ] - %add.ptr.i.i.i.i.i.i.pn = phi ptr [ %add.ptr.i.i.i.i.i.i, %_ZNSt6vectorImSaImEE17_M_realloc_insertIJmEEEvN9__gnu_cxx17__normal_iteratorIPmS1_EEDpOT_.exit.i.i ], [ %numCachesByLevel.sroa.12.2621, %if.then.i.i221 ] - %numCachesByLevel.sroa.0.3 = phi ptr [ %cond.i31.i.i.i, %_ZNSt6vectorImSaImEE17_M_realloc_insertIJmEEEvN9__gnu_cxx17__normal_iteratorIPmS1_EEDpOT_.exit.i.i ], [ %numCachesByLevel.sroa.0.2622, %if.then.i.i221 ] + %add.ptr.i.i.i.i.i.i.pn = phi ptr [ %add.ptr.i.i.i, %_ZNSt6vectorImSaImEE17_M_realloc_insertIJmEEEvN9__gnu_cxx17__normal_iteratorIPmS1_EEDpOT_.exit.i.i ], [ %numCachesByLevel.sroa.12.2621, %if.then.i.i221 ] + %numCachesByLevel.sroa.0.3 = phi ptr [ %call5.i.i.i.i.i.i225, %_ZNSt6vectorImSaImEE17_M_realloc_insertIJmEEEvN9__gnu_cxx17__normal_iteratorIPmS1_EEDpOT_.exit.i.i ], [ %numCachesByLevel.sroa.0.2622, %if.then.i.i221 ] %numCachesByLevel.sroa.12.3 = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.i.i.i.i.pn, i64 8 %sub.ptr.lhs.cast.i217 = ptrtoint ptr %numCachesByLevel.sroa.12.3 to i64 %sub.ptr.rhs.cast.i218 = ptrtoint ptr %numCachesByLevel.sroa.0.3 to i64 %sub.ptr.sub.i219 = sub i64 %sub.ptr.lhs.cast.i217, %sub.ptr.rhs.cast.i218 - %sub.ptr.div.i220 = ashr exact i64 %sub.ptr.sub.i219, 3 - %cmp29.not = icmp ugt i64 %sub.ptr.div.i220, %sub.ptr.div.i207 + %cmp29.not = icmp ugt i64 %sub.ptr.sub.i219, %sub.ptr.sub.i206 br i1 %cmp29.not, label %while.end, label %while.body30, !llvm.loop !77 lpad23.loopexit: ; preds = %_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i.i @@ -1368,7 +1362,7 @@ lpad23.loopexit.split-lp: ; preds = %if.then.i.i.i213 cleanup br label %ehcleanup35 -lpad31.loopexit: ; preds = %cond.true.i.i.i.i +lpad31.loopexit: ; preds = %_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i.i.i %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %ehcleanup35 diff --git a/bench/graphviz/optimized/shapes.c.ll b/bench/graphviz/optimized/shapes.c.ll index b2e341cc25f..130ffcf382d 100644 --- a/bench/graphviz/optimized/shapes.c.ll +++ b/bench/graphviz/optimized/shapes.c.ll @@ -4463,19 +4463,19 @@ define noundef ptr @bind_shape(ptr nocapture noundef readonly %0, ptr noundef %1 %9 = tail call i32 @strcmp(ptr noundef nonnull readonly dereferenceable(1) %.0, ptr noundef nonnull dereferenceable(7) @.str.2) #29 %10 = icmp eq i32 %9, 0 %11 = load ptr, ptr @Shapes, align 16 - %.not1522 = icmp eq ptr %11, null - %or.cond = select i1 %10, i1 true, i1 %.not1522 + %.not1523 = icmp eq ptr %11, null + %or.cond = select i1 %10, i1 true, i1 %.not1523 br i1 %or.cond, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %8, %15 %12 = phi ptr [ %17, %15 ], [ %11, %8 ] - %.01323 = phi ptr [ %16, %15 ], [ @Shapes, %8 ] + %.01324 = phi ptr [ %16, %15 ], [ @Shapes, %8 ] %13 = tail call i32 @strcmp(ptr noundef nonnull readonly dereferenceable(1) %12, ptr noundef nonnull readonly dereferenceable(1) %.0) #29 %14 = icmp eq i32 %13, 0 br i1 %14, label %user_shape.exit, label %15 15: ; preds = %.lr.ph - %16 = getelementptr inbounds nuw i8, ptr %.01323, i64 32 + %16 = getelementptr inbounds nuw i8, ptr %.01324, i64 32 %17 = load ptr, ptr %16, align 8 %.not15 = icmp eq ptr %17, null br i1 %.not15, label %.loopexit, label %.lr.ph @@ -4517,19 +4517,19 @@ define noundef ptr @bind_shape(ptr nocapture noundef readonly %0, ptr noundef %1 unreachable 31: ; preds = %.loopexit.i - %32 = shl nuw i64 %.pre.i, 3 - %33 = shl nuw i64 %26, 3 - %34 = icmp eq i64 %26, 0 - br i1 %34, label %35, label %36 + %32 = icmp eq i64 %26, 0 + br i1 %32, label %33, label %34 -35: ; preds = %31 +33: ; preds = %31 tail call void @free(ptr noundef %18) #25 br label %gv_recalloc.exit.i -36: ; preds = %31 - %37 = tail call ptr @realloc(ptr noundef %18, i64 noundef range(i64 0, -7) %33) #30 +34: ; preds = %31 + %35 = shl nuw i64 %.pre.i, 3 + %36 = shl nuw i64 %26, 3 + %37 = tail call ptr @realloc(ptr noundef %18, i64 noundef range(i64 0, -7) %36) #30 %38 = icmp eq ptr %37, null - br i1 %38, label %41, label %45 + br i1 %38, label %41, label %.thread18 .thread17: ; preds = %.preheader.i.i store i64 1, ptr @N_UserShape, align 8 @@ -4537,65 +4537,61 @@ define noundef ptr @bind_shape(ptr nocapture noundef readonly %0, ptr noundef %1 %40 = icmp eq ptr %39, null br i1 %40, label %41, label %.thread18 -41: ; preds = %.thread17, %36 - %42 = phi i64 [ 8, %.thread17 ], [ %33, %36 ] +41: ; preds = %.thread17, %34 + %42 = phi i64 [ 8, %.thread17 ], [ %36, %34 ] %43 = load ptr, ptr @stderr, align 8 %44 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %43, ptr noundef nonnull @.str.4, i64 noundef range(i64 0, -7) %42) #27 tail call fastcc void @graphviz_exit() #28 unreachable -45: ; preds = %36 - %46 = icmp ugt i64 %33, %32 - br i1 %46, label %.thread18, label %gv_recalloc.exit.i - -.thread18: ; preds = %.thread17, %45 - %47 = phi i64 [ %32, %45 ], [ 0, %.thread17 ] - %48 = phi ptr [ %37, %45 ], [ %39, %.thread17 ] - %49 = getelementptr inbounds i8, ptr %48, i64 %47 - store i64 0, ptr %49, align 1 +.thread18: ; preds = %34, %.thread17 + %45 = phi i64 [ 0, %.thread17 ], [ %35, %34 ] + %46 = phi ptr [ %39, %.thread17 ], [ %37, %34 ] + %47 = getelementptr inbounds i8, ptr %46, i64 %45 + store i64 0, ptr %47, align 1 br label %gv_recalloc.exit.i -gv_recalloc.exit.i: ; preds = %.thread18, %45, %35 - %.0.i.i.i = phi ptr [ null, %35 ], [ %48, %.thread18 ], [ %37, %45 ] +gv_recalloc.exit.i: ; preds = %.thread18, %33 + %.0.i.i.i = phi ptr [ null, %33 ], [ %46, %.thread18 ] store ptr %.0.i.i.i, ptr @UserShape, align 8 - %50 = tail call noalias dereferenceable_or_null(32) ptr @calloc(i64 noundef 1, i64 noundef range(i64 1, 89) 32) #26 - %51 = icmp eq ptr %50, null - br i1 %51, label %52, label %gv_alloc.exit.i + %48 = tail call noalias dereferenceable_or_null(32) ptr @calloc(i64 noundef 1, i64 noundef range(i64 1, 89) 32) #26 + %49 = icmp eq ptr %48, null + br i1 %49, label %50, label %gv_alloc.exit.i -52: ; preds = %gv_recalloc.exit.i - %53 = load ptr, ptr @stderr, align 8 - %54 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %53, ptr noundef nonnull @.str.4, i64 noundef 32) #27 +50: ; preds = %gv_recalloc.exit.i + %51 = load ptr, ptr @stderr, align 8 + %52 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %51, ptr noundef nonnull @.str.4, i64 noundef 32) #27 tail call fastcc void @graphviz_exit() #28 unreachable gv_alloc.exit.i: ; preds = %gv_recalloc.exit.i - %55 = getelementptr inbounds ptr, ptr %.0.i.i.i, i64 %.pre.i - store ptr %50, ptr %55, align 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull align 16 dereferenceable(32) @Shapes, i64 32, i1 false) - %56 = tail call noalias ptr @strdup(ptr noundef readonly %.0) #25 - store ptr %56, ptr %50, align 8 - %57 = load ptr, ptr @Lib, align 8 - %58 = icmp eq ptr %57, null - br i1 %58, label %59, label %find_user_shape.exit.sink.split.i - -59: ; preds = %gv_alloc.exit.i - %60 = tail call i32 @strcmp(ptr noundef nonnull readonly dereferenceable(1) %.0, ptr noundef nonnull dereferenceable(7) @.str.2) #29 - %61 = icmp eq i32 %60, 0 - br i1 %61, label %find_user_shape.exit.sink.split.i, label %62 - -62: ; preds = %59 - %63 = load ptr, ptr @Shapes, align 16 - %64 = tail call i32 (i32, ptr, ...) @agerr(i32 noundef 0, ptr noundef nonnull @.str.106, ptr noundef %63, ptr noundef %56) #25 + %53 = getelementptr inbounds ptr, ptr %.0.i.i.i, i64 %.pre.i + store ptr %48, ptr %53, align 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 16 dereferenceable(32) @Shapes, i64 32, i1 false) + %54 = tail call noalias ptr @strdup(ptr noundef readonly %.0) #25 + store ptr %54, ptr %48, align 8 + %55 = load ptr, ptr @Lib, align 8 + %56 = icmp eq ptr %55, null + br i1 %56, label %57, label %find_user_shape.exit.sink.split.i + +57: ; preds = %gv_alloc.exit.i + %58 = tail call i32 @strcmp(ptr noundef nonnull readonly dereferenceable(1) %.0, ptr noundef nonnull dereferenceable(7) @.str.2) #29 + %59 = icmp eq i32 %58, 0 + br i1 %59, label %find_user_shape.exit.sink.split.i, label %60 + +60: ; preds = %57 + %61 = load ptr, ptr @Shapes, align 16 + %62 = tail call i32 (i32, ptr, ...) @agerr(i32 noundef 0, ptr noundef nonnull @.str.106, ptr noundef %61, ptr noundef %54) #25 br label %find_user_shape.exit.sink.split.i -find_user_shape.exit.sink.split.i: ; preds = %62, %59, %gv_alloc.exit.i - %.sink.i = phi i8 [ 0, %62 ], [ 1, %59 ], [ 1, %gv_alloc.exit.i ] - %65 = getelementptr inbounds nuw i8, ptr %50, i64 24 - store i8 %.sink.i, ptr %65, align 8 +find_user_shape.exit.sink.split.i: ; preds = %60, %57, %gv_alloc.exit.i + %.sink.i = phi i8 [ 0, %60 ], [ 1, %57 ], [ 1, %gv_alloc.exit.i ] + %63 = getelementptr inbounds nuw i8, ptr %48, i64 24 + store i8 %.sink.i, ptr %63, align 8 br label %user_shape.exit user_shape.exit: ; preds = %.lr.ph, %.lr.ph.i.i, %find_user_shape.exit.sink.split.i - %.1 = phi ptr [ %50, %find_user_shape.exit.sink.split.i ], [ %22, %.lr.ph.i.i ], [ %.01323, %.lr.ph ] + %.1 = phi ptr [ %48, %find_user_shape.exit.sink.split.i ], [ %22, %.lr.ph.i.i ], [ %.01324, %.lr.ph ] ret ptr %.1 } diff --git a/bench/gromacs/optimized/block.cpp.ll b/bench/gromacs/optimized/block.cpp.ll index d635470cd3a..c89f03da1f7 100644 --- a/bench/gromacs/optimized/block.cpp.ll +++ b/bench/gromacs/optimized/block.cpp.ll @@ -368,86 +368,78 @@ _ZL20pr_listoflists_titleP8_IO_FILEiPKcPKN3gmx11ListOfListsIiEE.exit: ; preds = br label %35 35: ; preds = %.lr.ph51, %._crit_edge - %.050 = phi i64 [ 0, %.lr.ph51 ], [ %69, %._crit_edge ] + %.050 = phi i64 [ 0, %.lr.ph51 ], [ %66, %._crit_edge ] %36 = tail call noundef i32 @_Z9pr_indentP8_IO_FILEi(ptr noundef %0, i32 noundef %.0.i) %37 = load ptr, ptr %33, align 8 %38 = load ptr, ptr %3, align 8 %39 = getelementptr i32, ptr %38, i64 %.050 %40 = load i32, ptr %39, align 4 - %41 = sext i32 %40 to i64 - %.idx45 = shl nsw i64 %41, 2 - %42 = getelementptr inbounds i8, ptr %37, i64 %.idx45 - %43 = getelementptr i8, ptr %39, i64 4 - %44 = load i32, ptr %43, align 4 - %45 = sext i32 %44 to i64 - %.idx = shl nsw i64 %45, 2 - %46 = getelementptr inbounds i8, ptr %37, i64 %.idx - %47 = icmp eq i32 %40, %44 - %48 = trunc i64 %.050 to i32 - br i1 %47, label %49, label %51 - -49: ; preds = %35 - %50 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.8, ptr noundef %2, i32 noundef %48) #6 - br label %55 - -51: ; preds = %35 - %52 = select i1 %4, i32 %48, i32 -1 + %41 = getelementptr i8, ptr %39, i64 4 + %42 = load i32, ptr %41, align 4 + %43 = sext i32 %42 to i64 + %.idx = shl nsw i64 %43, 2 + %44 = getelementptr inbounds i8, ptr %37, i64 %.idx + %45 = icmp eq i32 %40, %42 + %46 = trunc i64 %.050 to i32 + br i1 %45, label %.thread, label %.lr.ph.preheader + +.thread: ; preds = %35 + %47 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.8, ptr noundef %2, i32 noundef %46) #6 + br label %._crit_edge + +.lr.ph.preheader: ; preds = %35 + %48 = sext i32 %40 to i64 + %.idx45 = shl nsw i64 %48, 2 + %49 = getelementptr inbounds i8, ptr %37, i64 %.idx45 + %50 = select i1 %4, i32 %46, i32 -1 %gepdiff = sub nsw i64 %.idx, %.idx45 - %53 = ashr exact i64 %gepdiff, 2 - %54 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.13, ptr noundef %2, i32 noundef %52, i64 noundef %53) #6 - br label %55 - -55: ; preds = %51, %49 - %.pn = phi i32 [ %50, %49 ], [ %54, %51 ] - %.not46 = icmp eq i64 %.idx45, %.idx - br i1 %.not46, label %._crit_edge, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %55 - %.038 = add nsw i32 %.pn, %36 + %51 = ashr exact i64 %gepdiff, 2 + %52 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.13, ptr noundef %2, i32 noundef %50, i64 noundef %51) #6 + %.038 = add nsw i32 %52, %36 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %64 - %.149 = phi i32 [ %66, %64 ], [ %.038, %.lr.ph.preheader ] - %.03948 = phi i1 [ false, %64 ], [ true, %.lr.ph.preheader ] - %.sroa.0.047 = phi ptr [ %67, %64 ], [ %42, %.lr.ph.preheader ] - %56 = load i32, ptr %.sroa.0.047, align 4 - br i1 %.03948, label %60, label %57 +.lr.ph: ; preds = %.lr.ph.preheader, %61 + %.149 = phi i32 [ %63, %61 ], [ %.038, %.lr.ph.preheader ] + %.03948 = phi i1 [ false, %61 ], [ true, %.lr.ph.preheader ] + %.sroa.0.047 = phi ptr [ %64, %61 ], [ %49, %.lr.ph.preheader ] + %53 = load i32, ptr %.sroa.0.047, align 4 + br i1 %.03948, label %57, label %54 -57: ; preds = %.lr.ph - %58 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.9) #6 - %59 = add nsw i32 %58, %.149 - br label %60 +54: ; preds = %.lr.ph + %55 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.9) #6 + %56 = add nsw i32 %55, %.149 + br label %57 -60: ; preds = %57, %.lr.ph - %.2 = phi i32 [ %.149, %.lr.ph ], [ %59, %57 ] - %61 = icmp sgt i32 %.2, 70 - br i1 %61, label %62, label %64 +57: ; preds = %54, %.lr.ph + %.2 = phi i32 [ %.149, %.lr.ph ], [ %56, %54 ] + %58 = icmp sgt i32 %.2, 70 + br i1 %58, label %59, label %61 -62: ; preds = %60 +59: ; preds = %57 %fputc = tail call i32 @fputc(i32 10, ptr %0) - %63 = tail call noundef i32 @_Z9pr_indentP8_IO_FILEi(ptr noundef %0, i32 noundef %34) - br label %64 - -64: ; preds = %62, %60 - %.3 = phi i32 [ %63, %62 ], [ %.2, %60 ] - %65 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.11, i32 noundef %56) #6 - %66 = add nsw i32 %65, %.3 - %67 = getelementptr inbounds nuw i8, ptr %.sroa.0.047, i64 4 - %.not = icmp eq ptr %67, %46 + %60 = tail call noundef i32 @_Z9pr_indentP8_IO_FILEi(ptr noundef %0, i32 noundef %34) + br label %61 + +61: ; preds = %59, %57 + %.3 = phi i32 [ %60, %59 ], [ %.2, %57 ] + %62 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.11, i32 noundef %53) #6 + %63 = add nsw i32 %62, %.3 + %64 = getelementptr inbounds nuw i8, ptr %.sroa.0.047, i64 4 + %.not = icmp eq ptr %64, %44 br i1 %.not, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %64, %55 - %68 = tail call i64 @fwrite(ptr nonnull @.str.12, i64 2, i64 1, ptr %0) - %69 = add nuw nsw i64 %.050, 1 - %70 = load ptr, ptr %26, align 8 - %71 = load ptr, ptr %3, align 8 - %72 = ptrtoint ptr %70 to i64 - %73 = ptrtoint ptr %71 to i64 - %74 = sub i64 %72, %73 - %75 = ashr exact i64 %74, 2 - %76 = add nsw i64 %75, -1 - %77 = icmp slt i64 %69, %76 - br i1 %77, label %35, label %.loopexit, !llvm.loop !9 +._crit_edge: ; preds = %61, %.thread + %65 = tail call i64 @fwrite(ptr nonnull @.str.12, i64 2, i64 1, ptr %0) + %66 = add nuw nsw i64 %.050, 1 + %67 = load ptr, ptr %26, align 8 + %68 = load ptr, ptr %3, align 8 + %69 = ptrtoint ptr %67 to i64 + %70 = ptrtoint ptr %68 to i64 + %71 = sub i64 %69, %70 + %72 = ashr exact i64 %71, 2 + %73 = add nsw i64 %72, -1 + %74 = icmp slt i64 %66, %73 + br i1 %74, label %35, label %.loopexit, !llvm.loop !9 .loopexit: ; preds = %._crit_edge, %_ZL20pr_listoflists_titleP8_IO_FILEiPKcPKN3gmx11ListOfListsIiEE.exit, %5 ret void diff --git a/bench/harfbuzz/optimized/harfbuzz.cc.ll b/bench/harfbuzz/optimized/harfbuzz.cc.ll index 37b9373be75..105684ad573 100644 --- a/bench/harfbuzz/optimized/harfbuzz.cc.ll +++ b/bench/harfbuzz/optimized/harfbuzz.cc.ll @@ -102801,12 +102801,12 @@ _ZL9hb_memcmpPKvS0_j.exit.i.i: ; preds = %land.lhs.true10.i.i br i1 %cmp18.i.i, label %if.end.i12.i.i, label %if.end19 if.end.i12.i.i: ; preds = %_ZL9hb_memcmpPKvS0_j.exit.i.i, %land.lhs.true10.i.i - %mul.i.i7.i.i = mul i32 %13, 12 - %tobool.not.i.i.i.i = icmp eq i32 %mul.i.i7.i.i, 0 + %mul.i.i.i.i = mul i32 %13, 12 + %tobool.not.i.i.i.i = icmp eq i32 %mul.i.i.i.i, 0 br i1 %tobool.not.i.i.i.i, label %if.then16, label %_ZNK12hb_hashmap_tIPKN22hb_serialize_context_t8object_tEjLb0EE6item_teqERKS3_.exit _ZNK12hb_hashmap_tIPKN22hb_serialize_context_t8object_tEjLb0EE6item_teqERKS3_.exit: ; preds = %if.end.i12.i.i - %retval.sroa.2.8.insert.ext.i9.i.i = zext i32 %mul.i.i7.i.i to i64 + %retval.sroa.2.8.insert.ext.i9.i.i = zext i32 %mul.i.i.i.i to i64 %16 = load ptr, ptr %arrayZ.i5.i.i, align 8 %arrayZ.i.i.i = getelementptr inbounds nuw i8, ptr %8, i64 24 %17 = load ptr, ptr %arrayZ.i.i.i, align 8 @@ -103123,12 +103123,12 @@ _ZL9hb_memcmpPKvS0_j.exit.i.i: ; preds = %land.lhs.true10.i.i br i1 %cmp18.i.i, label %if.end.i12.i.i, label %if.end if.end.i12.i.i: ; preds = %_ZL9hb_memcmpPKvS0_j.exit.i.i, %land.lhs.true10.i.i - %mul.i.i7.i.i = mul i32 %10, 12 - %tobool.not.i.i.i.i = icmp eq i32 %mul.i.i7.i.i, 0 + %mul.i.i.i.i = mul i32 %10, 12 + %tobool.not.i.i.i.i = icmp eq i32 %mul.i.i.i.i, 0 br i1 %tobool.not.i.i.i.i, label %if.then, label %_ZNK12hb_hashmap_tIPKN22hb_serialize_context_t8object_tEjLb0EE6item_teqERKS3_.exit _ZNK12hb_hashmap_tIPKN22hb_serialize_context_t8object_tEjLb0EE6item_teqERKS3_.exit: ; preds = %if.end.i12.i.i - %retval.sroa.2.8.insert.ext.i9.i.i = zext i32 %mul.i.i7.i.i to i64 + %retval.sroa.2.8.insert.ext.i9.i.i = zext i32 %mul.i.i.i.i to i64 %13 = load ptr, ptr %arrayZ.i5.i.i, align 8 %arrayZ.i.i.i = getelementptr inbounds nuw i8, ptr %5, i64 24 %14 = load ptr, ptr %arrayZ.i.i.i, align 8 @@ -103370,12 +103370,12 @@ _ZL9hb_memcmpPKvS0_j.exit.i.i: ; preds = %land.lhs.true10.i.i br i1 %cmp18.i.i, label %if.end.i12.i.i, label %if.end19 if.end.i12.i.i: ; preds = %_ZL9hb_memcmpPKvS0_j.exit.i.i, %land.lhs.true10.i.i - %mul.i.i7.i.i = mul i32 %13, 12 - %tobool.not.i.i.i.i = icmp eq i32 %mul.i.i7.i.i, 0 + %mul.i.i.i.i = mul i32 %13, 12 + %tobool.not.i.i.i.i = icmp eq i32 %mul.i.i.i.i, 0 br i1 %tobool.not.i.i.i.i, label %if.then16, label %_ZNK12hb_hashmap_tIPKN22hb_serialize_context_t8object_tEjLb0EE6item_teqERKS3_.exit _ZNK12hb_hashmap_tIPKN22hb_serialize_context_t8object_tEjLb0EE6item_teqERKS3_.exit: ; preds = %if.end.i12.i.i - %retval.sroa.2.8.insert.ext.i9.i.i = zext i32 %mul.i.i7.i.i to i64 + %retval.sroa.2.8.insert.ext.i9.i.i = zext i32 %mul.i.i.i.i to i64 %16 = load ptr, ptr %arrayZ.i5.i.i, align 8 %arrayZ.i.i.i = getelementptr inbounds nuw i8, ptr %8, i64 24 %17 = load ptr, ptr %arrayZ.i.i.i, align 8 diff --git a/bench/hermes/optimized/CFG.cpp.ll b/bench/hermes/optimized/CFG.cpp.ll index 4b67656f448..792b39ccdd1 100644 --- a/bench/hermes/optimized/CFG.cpp.ll +++ b/bench/hermes/optimized/CFG.cpp.ll @@ -20266,8 +20266,10 @@ _ZNSt12_Vector_baseIPN6hermes10BasicBlockESaIS2_EE13_M_deallocateEPS2_m.exit.i: if.else.i: ; preds = %entry %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %this, i64 8 %2 = load ptr, ptr %_M_finish.i.i, align 8 - %cmp24.not.i = icmp eq ptr %2, %1 - br i1 %cmp24.not.i, label %_ZSt22__uninitialized_copy_aIPKPN6hermes10BasicBlockEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit.i, label %if.then25.i + %sub.ptr.lhs.cast.i14.i = ptrtoint ptr %2 to i64 + %sub.ptr.sub.i16.i = sub i64 %sub.ptr.lhs.cast.i14.i, %sub.ptr.rhs.cast.i.i + %cmp24.not.i = icmp ult i64 %sub.ptr.sub.i16.i, 8 + br i1 %cmp24.not.i, label %if.else29.i, label %if.then25.i if.then25.i: ; preds = %if.else.i store i64 0, ptr %1, align 8 @@ -20280,33 +20282,41 @@ if.then.i20.i: ; preds = %if.then25.i store ptr %add.ptr.i.i.i.i.i.i3, ptr %_M_finish.i.i, align 8 br label %_ZNSt6vectorIPN6hermes10BasicBlockESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit -_ZSt22__uninitialized_copy_aIPKPN6hermes10BasicBlockEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit.i: ; preds = %if.else.i - %sub.ptr.lhs.cast.i14.i = ptrtoint ptr %2 to i64 - %sub.ptr.sub.i16.i = sub i64 %sub.ptr.lhs.cast.i14.i, %sub.ptr.rhs.cast.i.i - %gepdiff = sub nsw i64 8, %sub.ptr.sub.i16.i - %incdec.ptr4.sink.i.i46.i.ptr = getelementptr inbounds i8, ptr %ref.tmp, i64 %sub.ptr.sub.i16.i - call void @llvm.memmove.p0.p0.i64(ptr align 8 %2, ptr nonnull align 8 %incdec.ptr4.sink.i.i46.i.ptr, i64 %gepdiff, i1 false) - %add.ptr.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %2, i64 %gepdiff +if.else29.i: ; preds = %if.else.i + %add.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 %sub.ptr.sub.i16.i + %tobool.not.i.i.i.i.i29.i = icmp eq ptr %2, %1 + br i1 %tobool.not.i.i.i.i.i29.i, label %_ZSt4copyIPKPN6hermes10BasicBlockEPS2_ET0_T_S7_S6_.exit32.i, label %if.then.i.i.i.i.i30.i + +if.then.i.i.i.i.i30.i: ; preds = %if.else29.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %1, ptr noundef nonnull align 8 dereferenceable(1) %ref.tmp, i64 %sub.ptr.sub.i16.i, i1 false) + %.pre50.i = load ptr, ptr %_M_finish.i.i, align 8 + br label %_ZSt4copyIPKPN6hermes10BasicBlockEPS2_ET0_T_S7_S6_.exit32.i + +_ZSt4copyIPKPN6hermes10BasicBlockEPS2_ET0_T_S7_S6_.exit32.i: ; preds = %if.then.i.i.i.i.i30.i, %if.else29.i + %3 = phi ptr [ %2, %if.else29.i ], [ %.pre50.i, %if.then.i.i.i.i.i30.i ] + %gepdiff = sub nuw nsw i64 8, %sub.ptr.sub.i16.i + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3, ptr nonnull align 8 %add.ptr.i.i.i, i64 %gepdiff, i1 false) + %add.ptr.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %3, i64 %gepdiff store ptr %add.ptr.i.i.i.i.i.i.i.i.i, ptr %_M_finish.i.i, align 8 br label %_ZNSt6vectorIPN6hermes10BasicBlockESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit -_ZNSt6vectorIPN6hermes10BasicBlockESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit: ; preds = %_ZNSt12_Vector_baseIPN6hermes10BasicBlockESaIS2_EE13_M_deallocateEPS2_m.exit.i, %if.then25.i, %if.then.i20.i, %_ZSt22__uninitialized_copy_aIPKPN6hermes10BasicBlockEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit.i +_ZNSt6vectorIPN6hermes10BasicBlockESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit: ; preds = %_ZNSt12_Vector_baseIPN6hermes10BasicBlockESaIS2_EE13_M_deallocateEPS2_m.exit.i, %if.then25.i, %if.then.i20.i, %_ZSt4copyIPKPN6hermes10BasicBlockEPS2_ET0_T_S7_S6_.exit32.i %NodeToInfo = getelementptr inbounds nuw i8, ptr %this, i64 24 %NumEntries.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 32 - %3 = load i32, ptr %NumEntries.i.i.i, align 8 - %cmp.i = icmp eq i32 %3, 0 + %4 = load i32, ptr %NumEntries.i.i.i, align 8 + %cmp.i = icmp eq i32 %4, 0 %NumTombstones.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 36 - %4 = load i32, ptr %NumTombstones.i.i.i, align 4 - %cmp3.i = icmp eq i32 %4, 0 + %5 = load i32, ptr %NumTombstones.i.i.i, align 4 + %cmp3.i = icmp eq i32 %5, 0 %or.cond = select i1 %cmp.i, i1 %cmp3.i, i1 false br i1 %or.cond, label %_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes10BasicBlockENS_14DomTreeBuilder11SemiNCAInfoINS_17DominatorTreeBaseIS3_Lb0EEEE7InfoRecENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E5clearEv.exit, label %if.end.i if.end.i: ; preds = %_ZNSt6vectorIPN6hermes10BasicBlockESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit - %mul.i = shl i32 %3, 2 + %mul.i = shl i32 %4, 2 %NumBuckets.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 40 - %5 = load i32, ptr %NumBuckets.i.i.i, align 8 - %cmp6.i = icmp ult i32 %mul.i, %5 - %cmp9.i = icmp ugt i32 %5, 64 + %6 = load i32, ptr %NumBuckets.i.i.i, align 8 + %cmp6.i = icmp ult i32 %mul.i, %6 + %cmp9.i = icmp ugt i32 %6, 64 %or.cond.i = and i1 %cmp6.i, %cmp9.i br i1 %or.cond.i, label %if.then10.i, label %if.end11.i @@ -20315,16 +20325,16 @@ if.then10.i: ; preds = %if.end.i br label %_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes10BasicBlockENS_14DomTreeBuilder11SemiNCAInfoINS_17DominatorTreeBaseIS3_Lb0EEEE7InfoRecENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E5clearEv.exit if.end11.i: ; preds = %if.end.i - %6 = load ptr, ptr %NodeToInfo, align 8 - %idx.ext.i.i = zext i32 %5 to i64 - %add.ptr.i.i1 = getelementptr inbounds nuw %"struct.llvh::detail::DenseMapPair.107", ptr %6, i64 %idx.ext.i.i - %cmp17.not13.i = icmp eq i32 %5, 0 + %7 = load ptr, ptr %NodeToInfo, align 8 + %idx.ext.i.i = zext i32 %6 to i64 + %add.ptr.i.i1 = getelementptr inbounds nuw %"struct.llvh::detail::DenseMapPair.107", ptr %7, i64 %idx.ext.i.i + %cmp17.not13.i = icmp eq i32 %6, 0 br i1 %cmp17.not13.i, label %for.end.i, label %for.body.i for.body.i: ; preds = %if.end11.i, %for.inc.i - %P.014.i = phi ptr [ %incdec.ptr.i, %for.inc.i ], [ %6, %if.end11.i ] - %7 = load ptr, ptr %P.014.i, align 8 - %magicptr.i = ptrtoint ptr %7 to i64 + %P.014.i = phi ptr [ %incdec.ptr.i, %for.inc.i ], [ %7, %if.end11.i ] + %8 = load ptr, ptr %P.014.i, align 8 + %magicptr.i = ptrtoint ptr %8 to i64 switch i64 %magicptr.i, label %if.then23.i [ i64 -8, label %for.inc.i i64 -16, label %if.end25.i @@ -20332,13 +20342,13 @@ for.body.i: ; preds = %if.end11.i, %for.in if.then23.i: ; preds = %for.body.i %ReverseChildren.i.i = getelementptr inbounds nuw i8, ptr %P.014.i, i64 40 - %8 = load ptr, ptr %ReverseChildren.i.i, align 8 + %9 = load ptr, ptr %ReverseChildren.i.i, align 8 %add.ptr.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %P.014.i, i64 56 - %cmp.i.i.i.i.i = icmp eq ptr %8, %add.ptr.i.i.i.i.i.i + %cmp.i.i.i.i.i = icmp eq ptr %9, %add.ptr.i.i.i.i.i.i br i1 %cmp.i.i.i.i.i, label %if.end25.i, label %if.then.i.i.i.i if.then.i.i.i.i: ; preds = %if.then23.i - tail call void @free(ptr noundef %8) #13 + tail call void @free(ptr noundef %9) #13 br label %if.end25.i if.end25.i: ; preds = %if.then.i.i.i.i, %if.then23.i, %for.body.i diff --git a/bench/hermes/optimized/SmallPtrSet.cpp.ll b/bench/hermes/optimized/SmallPtrSet.cpp.ll index bd87a64a063..5ca755251e3 100644 --- a/bench/hermes/optimized/SmallPtrSet.cpp.ll +++ b/bench/hermes/optimized/SmallPtrSet.cpp.ll @@ -837,37 +837,40 @@ _ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit.loopexit: ; preds = %for.body.i _ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit: ; preds = %_ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit.loopexit, %if.end49 %33 = phi i32 [ %.pre, %_ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit.loopexit ], [ %29, %if.end49 ] %cmp60 = icmp ugt i32 %33, %30 - %add.ptr64.idx = shl nuw nsw i64 %idx.ext55, 3 br i1 %cmp60, label %if.then.i.i.i.i.i57, label %if.else if.then.i.i.i.i.i57: ; preds = %_ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit + %add.ptr64.idx = shl nuw nsw i64 %idx.ext55, 3 %34 = load ptr, ptr %this, align 8 %add.ptr64 = getelementptr inbounds nuw i8, ptr %34, i64 %add.ptr64.idx %narrow = sub nuw i32 %33, %30 %35 = zext i32 %narrow to i64 - %gepdiff69 = shl nuw nsw i64 %35, 3 - %36 = load ptr, ptr %RHS, align 8 - %add.ptr71 = getelementptr inbounds nuw ptr, ptr %36, i64 %idx.ext55 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr71, ptr align 8 %add.ptr64, i64 %gepdiff69, i1 false) - br label %if.end84 + br label %if.end84.sink.split if.else: ; preds = %_ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit - %37 = load i32, ptr %NumNonEmpty51, align 4 - %idx.ext78 = zext i32 %37 to i64 - %add.ptr79.idx = shl nuw nsw i64 %idx.ext78, 3 - %tobool.not.i.i.i.i.i63 = icmp samesign eq i64 %add.ptr79.idx, %add.ptr64.idx + %36 = load i32, ptr %NumNonEmpty51, align 4 + %tobool.not.i.i.i.i.i63 = icmp eq i32 %36, %30 br i1 %tobool.not.i.i.i.i.i63, label %if.end84, label %if.then.i.i.i.i.i64 if.then.i.i.i.i.i64: ; preds = %if.else - %38 = load ptr, ptr %RHS, align 8 - %add.ptr75 = getelementptr inbounds nuw i8, ptr %38, i64 %add.ptr64.idx - %gepdiff = sub nsw i64 %add.ptr79.idx, %add.ptr64.idx - %39 = load ptr, ptr %this, align 8 + %idx.ext78 = zext i32 %36 to i64 + %add.ptr75.idx = shl nuw nsw i64 %idx.ext55, 3 + %37 = load ptr, ptr %RHS, align 8 + %add.ptr75 = getelementptr inbounds nuw i8, ptr %37, i64 %add.ptr75.idx + %38 = sub nsw i64 %idx.ext78, %idx.ext55 + br label %if.end84.sink.split + +if.end84.sink.split: ; preds = %if.then.i.i.i.i.i57, %if.then.i.i.i.i.i64 + %.sink = phi i64 [ %38, %if.then.i.i.i.i.i64 ], [ %35, %if.then.i.i.i.i.i57 ] + %this.sink = phi ptr [ %this, %if.then.i.i.i.i.i64 ], [ %RHS, %if.then.i.i.i.i.i57 ] + %add.ptr75.sink = phi ptr [ %add.ptr75, %if.then.i.i.i.i.i64 ], [ %add.ptr64, %if.then.i.i.i.i.i57 ] + %gepdiff = shl nsw i64 %.sink, 3 + %39 = load ptr, ptr %this.sink, align 8 %add.ptr82 = getelementptr inbounds nuw ptr, ptr %39, i64 %idx.ext55 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr82, ptr align 8 %add.ptr75, i64 %gepdiff, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr82, ptr align 8 %add.ptr75.sink, i64 %gepdiff, i1 false) br label %if.end84 -if.end84: ; preds = %if.then.i.i.i.i.i64, %if.else, %if.then.i.i.i.i.i57 +if.end84: ; preds = %if.end84.sink.split, %if.else %40 = load i32, ptr %NumNonEmpty50, align 4 %41 = load i32, ptr %NumNonEmpty51, align 4 store i32 %41, ptr %NumNonEmpty50, align 4 diff --git a/bench/hyperscan/optimized/ng_find_matches.cpp.ll b/bench/hyperscan/optimized/ng_find_matches.cpp.ll index ce3d419b272..da601d9d369 100644 --- a/bench/hyperscan/optimized/ng_find_matches.cpp.ll +++ b/bench/hyperscan/optimized/ng_find_matches.cpp.ll @@ -14342,8 +14342,7 @@ if.else: ; preds = %if.then %8 = load ptr, ptr %_M_finish.i94, align 8 %sub.ptr.lhs.cast.i95 = ptrtoint ptr %8 to i64 %sub.ptr.sub.i97 = sub i64 %sub.ptr.lhs.cast.i95, %sub.ptr.rhs.cast.i90 - %sub.ptr.div.i98 = ashr exact i64 %sub.ptr.sub.i97, 5 - %cmp26.not = icmp ult i64 %sub.ptr.div.i98, %sub.ptr.div.i + %cmp26.not = icmp ult i64 %sub.ptr.sub.i97, %sub.ptr.sub.i br i1 %cmp26.not, label %if.else49, label %if.then27 if.then27: ; preds = %if.else @@ -14394,6 +14393,7 @@ _ZSt8_DestroyIN5boost14dynamic_bitsetImSaImEEEEvPT_.exit.i.i.i104: ; preds = %if br i1 %cmp.i.not.i.i.i, label %if.end69, label %for.body.i.i.i101, !llvm.loop !374 if.else49: ; preds = %if.else + %sub.ptr.div.i98 = ashr exact i64 %sub.ptr.sub.i97, 5 %cmp7.i.i.i.i.i114 = icmp sgt i64 %sub.ptr.div.i98, 0 br i1 %cmp7.i.i.i.i.i114, label %for.body.i.i.i.i.i116, label %_ZSt4copyIPN5boost14dynamic_bitsetImSaImEEES4_ET0_T_S6_S5_.exit @@ -14456,7 +14456,6 @@ if.then: ; preds = %entry %sub.ptr.lhs.cast.i = ptrtoint ptr %0 to i64 %sub.ptr.rhs.cast.i = ptrtoint ptr %1 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i - %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 24 %_M_end_of_storage.i = getelementptr inbounds nuw i8, ptr %this, i64 16 %2 = load ptr, ptr %_M_end_of_storage.i, align 8 %3 = load ptr, ptr %this, align 8 @@ -14467,6 +14466,7 @@ if.then: ; preds = %entry br i1 %cmp3, label %if.then4, label %if.else if.then4: ; preds = %if.then + %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 24 %call11 = tail call noundef ptr @_ZNSt6vectorIS_ImSaImEESaIS1_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEEEPS1_mT_SB_(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %sub.ptr.div.i, ptr %1, ptr %0) %4 = load ptr, ptr %this, align 8 %_M_finish = getelementptr inbounds nuw i8, ptr %this, i64 8 @@ -14513,8 +14513,7 @@ if.else: ; preds = %if.then %8 = load ptr, ptr %_M_finish.i94, align 8 %sub.ptr.lhs.cast.i95 = ptrtoint ptr %8 to i64 %sub.ptr.sub.i97 = sub i64 %sub.ptr.lhs.cast.i95, %sub.ptr.rhs.cast.i90 - %sub.ptr.div.i98 = sdiv exact i64 %sub.ptr.sub.i97, 24 - %cmp26.not = icmp ult i64 %sub.ptr.div.i98, %sub.ptr.div.i + %cmp26.not = icmp ult i64 %sub.ptr.sub.i97, %sub.ptr.sub.i br i1 %cmp26.not, label %if.else49, label %if.then27 if.then27: ; preds = %if.else @@ -14591,15 +14590,14 @@ _ZSt4copyIPSt6vectorImSaImEES3_ET0_T_S5_S4_.exit.loopexit: ; preds = %for.body.i %.pre135 = ptrtoint ptr %.pre132 to i64 %.pre136 = ptrtoint ptr %.pre133 to i64 %.pre137 = sub i64 %.pre135, %.pre136 - %.pre138 = sdiv exact i64 %.pre137, 24 br label %_ZSt4copyIPSt6vectorImSaImEES3_ET0_T_S5_S4_.exit _ZSt4copyIPSt6vectorImSaImEES3_ET0_T_S5_S4_.exit: ; preds = %_ZSt4copyIPSt6vectorImSaImEES3_ET0_T_S5_S4_.exit.loopexit, %if.else49 - %sub.ptr.div.i130.pre-phi = phi i64 [ %.pre138, %_ZSt4copyIPSt6vectorImSaImEES3_ET0_T_S5_S4_.exit.loopexit ], [ %sub.ptr.div.i98, %if.else49 ] + %sub.ptr.div.i130.pre-phi.in = phi i64 [ %.pre137, %_ZSt4copyIPSt6vectorImSaImEES3_ET0_T_S5_S4_.exit.loopexit ], [ %sub.ptr.sub.i97, %if.else49 ] %11 = phi ptr [ %.pre134, %_ZSt4copyIPSt6vectorImSaImEES3_ET0_T_S5_S4_.exit.loopexit ], [ %0, %if.else49 ] %12 = phi ptr [ %.pre132, %_ZSt4copyIPSt6vectorImSaImEES3_ET0_T_S5_S4_.exit.loopexit ], [ %8, %if.else49 ] %13 = phi ptr [ %.pre131, %_ZSt4copyIPSt6vectorImSaImEES3_ET0_T_S5_S4_.exit.loopexit ], [ %1, %if.else49 ] - %add.ptr62 = getelementptr inbounds %"class.std::vector.122", ptr %13, i64 %sub.ptr.div.i130.pre-phi + %add.ptr62 = getelementptr inbounds i8, ptr %13, i64 %sub.ptr.div.i130.pre-phi.in %call.i.i.i = tail call noundef ptr @_ZSt16__do_uninit_copyIPSt6vectorImSaImEES3_ET0_T_S5_S4_(ptr noundef %add.ptr62, ptr noundef %11, ptr noundef %12) br label %if.end69 diff --git a/bench/hyperscan/optimized/ng_violet.cpp.ll b/bench/hyperscan/optimized/ng_violet.cpp.ll index b6b4fbd59c9..833faf8e05e 100644 --- a/bench/hyperscan/optimized/ng_violet.cpp.ll +++ b/bench/hyperscan/optimized/ng_violet.cpp.ll @@ -18996,7 +18996,7 @@ if.then13: ; preds = %if.then %sub.ptr.rhs.cast.i = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 5 - %cmp19 = icmp ugt i64 %sub.ptr.div.i, %sub.ptr.div.i.i.i.i + %cmp19 = icmp ugt i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i.i.i br i1 %cmp19, label %for.body.i.i.i.i.i.preheader, label %_ZSt7advanceISt13move_iteratorIN9__gnu_cxx17__normal_iteratorIPN3ue29CharReachESt6vectorIS4_SaIS4_EEEEEmEvRT_T0_.exit for.body.i.i.i.i.i.preheader: ; preds = %if.then13 @@ -29644,7 +29644,7 @@ if.then13: ; preds = %if.then %sub.ptr.rhs.cast.i = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 4 - %cmp19 = icmp ugt i64 %sub.ptr.div.i, %sub.ptr.div.i.i.i.i + %cmp19 = icmp ugt i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i.i.i br i1 %cmp19, label %for.body.i.i.i.i.i.preheader, label %_ZSt7advanceISt13move_iteratorIN9__gnu_cxx17__normal_iteratorIPN3ue212graph_detail17vertex_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEESt6vectorISB_SaISB_EEEEEmEvRT_T0_.exit for.body.i.i.i.i.i.preheader: ; preds = %if.then13 @@ -45588,12 +45588,10 @@ if.else12: ; preds = %entry %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i93 = ptrtoint ptr %12 to i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i94 = ptrtoint ptr %11 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i95 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i93, %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i94 - %sub.ptr.div.i.i.i.i.i.i.i.i96 = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i.i.i95, 4 %sub.ptr.lhs.cast1.i.i.i.i.i.i.i.i97 = ptrtoint ptr %14 to i64 %sub.ptr.rhs.cast2.i.i.i.i.i.i.i.i98 = ptrtoint ptr %13 to i64 %sub.ptr.sub3.i.i.i.i.i.i.i.i99 = sub i64 %sub.ptr.lhs.cast1.i.i.i.i.i.i.i.i97, %sub.ptr.rhs.cast2.i.i.i.i.i.i.i.i98 - %sub.ptr.div4.i.i.i.i.i.i.i.i100 = ashr exact i64 %sub.ptr.sub3.i.i.i.i.i.i.i.i99, 4 - %cmp.i.i.i.i.i.i.i.i101 = icmp slt i64 %sub.ptr.div4.i.i.i.i.i.i.i.i100, %sub.ptr.div.i.i.i.i.i.i.i.i96 + %cmp.i.i.i.i.i.i.i.i101 = icmp slt i64 %sub.ptr.sub3.i.i.i.i.i.i.i.i99, %sub.ptr.sub.i.i.i.i.i.i.i.i95 %add.ptr.i.i.i.i.i.i.i.i102 = getelementptr inbounds i8, ptr %11, i64 %sub.ptr.sub3.i.i.i.i.i.i.i.i99 %cond.i.i.i.i.i.i.i.i103 = select i1 %cmp.i.i.i.i.i.i.i.i101, ptr %add.ptr.i.i.i.i.i.i.i.i102, ptr %12 %cmp.not39.i.i.i.i.i.i.i104 = icmp eq ptr %cond.i.i.i.i.i.i.i.i103, %11 @@ -45733,7 +45731,7 @@ if.else42: ; preds = %_ZNK9__gnu_cxx5__op br label %cleanup80 if.else44: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPKN3ue212graph_detail17vertex_descriptorINS3_9ue2_graphINS3_11RoseInGraphENS3_17RoseInVertexPropsENS3_15RoseInEdgePropsEEEEESD_EEbT_T0_.exit37.i.i.i.i.i.i.i116, %if.then.i.i32.i.i.i.i.i.i.i126, %_ZNKSt4lessISt6vectorIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_11RoseInGraphENS1_17RoseInVertexPropsENS1_15RoseInEdgePropsEEEEESaIS9_EEEclERKSB_SE_.exit136 - %cmp.i.i.i.i.i.i.i.i201 = icmp slt i64 %sub.ptr.div.i.i.i.i.i.i.i.i96, %sub.ptr.div4.i.i.i.i.i.i.i.i100 + %cmp.i.i.i.i.i.i.i.i201 = icmp slt i64 %sub.ptr.sub.i.i.i.i.i.i.i.i95, %sub.ptr.sub3.i.i.i.i.i.i.i.i99 %add.ptr.i.i.i.i.i.i.i.i202 = getelementptr inbounds i8, ptr %13, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i95 %cond.i.i.i.i.i.i.i.i203 = select i1 %cmp.i.i.i.i.i.i.i.i201, ptr %add.ptr.i.i.i.i.i.i.i.i202, ptr %14 %cmp.not39.i.i.i.i.i.i.i204 = icmp eq ptr %cond.i.i.i.i.i.i.i.i203, %13 @@ -50867,12 +50865,10 @@ if.else12: ; preds = %entry %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i93 = ptrtoint ptr %12 to i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i94 = ptrtoint ptr %11 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i95 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i93, %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i94 - %sub.ptr.div.i.i.i.i.i.i.i.i96 = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i.i.i95, 4 %sub.ptr.lhs.cast1.i.i.i.i.i.i.i.i97 = ptrtoint ptr %14 to i64 %sub.ptr.rhs.cast2.i.i.i.i.i.i.i.i98 = ptrtoint ptr %13 to i64 %sub.ptr.sub3.i.i.i.i.i.i.i.i99 = sub i64 %sub.ptr.lhs.cast1.i.i.i.i.i.i.i.i97, %sub.ptr.rhs.cast2.i.i.i.i.i.i.i.i98 - %sub.ptr.div4.i.i.i.i.i.i.i.i100 = ashr exact i64 %sub.ptr.sub3.i.i.i.i.i.i.i.i99, 4 - %cmp.i.i.i.i.i.i.i.i101 = icmp slt i64 %sub.ptr.div4.i.i.i.i.i.i.i.i100, %sub.ptr.div.i.i.i.i.i.i.i.i96 + %cmp.i.i.i.i.i.i.i.i101 = icmp slt i64 %sub.ptr.sub3.i.i.i.i.i.i.i.i99, %sub.ptr.sub.i.i.i.i.i.i.i.i95 %add.ptr.i.i.i.i.i.i.i.i102 = getelementptr inbounds i8, ptr %11, i64 %sub.ptr.sub3.i.i.i.i.i.i.i.i99 %cond.i.i.i.i.i.i.i.i103 = select i1 %cmp.i.i.i.i.i.i.i.i101, ptr %add.ptr.i.i.i.i.i.i.i.i102, ptr %12 %cmp.not39.i.i.i.i.i.i.i104 = icmp eq ptr %cond.i.i.i.i.i.i.i.i103, %11 @@ -51012,7 +51008,7 @@ if.else42: ; preds = %_ZNK9__gnu_cxx5__op br label %cleanup80 if.else44: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPKN3ue212graph_detail17vertex_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEESD_EEbT_T0_.exit37.i.i.i.i.i.i.i116, %if.then.i.i32.i.i.i.i.i.i.i126, %_ZNKSt4lessISt6vectorIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEESaIS9_EEEclERKSB_SE_.exit136 - %cmp.i.i.i.i.i.i.i.i201 = icmp slt i64 %sub.ptr.div.i.i.i.i.i.i.i.i96, %sub.ptr.div4.i.i.i.i.i.i.i.i100 + %cmp.i.i.i.i.i.i.i.i201 = icmp slt i64 %sub.ptr.sub.i.i.i.i.i.i.i.i95, %sub.ptr.sub3.i.i.i.i.i.i.i.i99 %add.ptr.i.i.i.i.i.i.i.i202 = getelementptr inbounds i8, ptr %13, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i95 %cond.i.i.i.i.i.i.i.i203 = select i1 %cmp.i.i.i.i.i.i.i.i201, ptr %add.ptr.i.i.i.i.i.i.i.i202, ptr %14 %cmp.not39.i.i.i.i.i.i.i204 = icmp eq ptr %cond.i.i.i.i.i.i.i.i203, %13 diff --git a/bench/hyperscan/optimized/rose_build_program.cpp.ll b/bench/hyperscan/optimized/rose_build_program.cpp.ll index 12443346d04..1e1ef188d46 100644 --- a/bench/hyperscan/optimized/rose_build_program.cpp.ll +++ b/bench/hyperscan/optimized/rose_build_program.cpp.ll @@ -21077,7 +21077,6 @@ if.then: ; preds = %entry %sub.ptr.lhs.cast.i = ptrtoint ptr %0 to i64 %sub.ptr.rhs.cast.i = ptrtoint ptr %1 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i - %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 24 %_M_end_of_storage.i = getelementptr inbounds nuw i8, ptr %this, i64 16 %2 = load ptr, ptr %_M_end_of_storage.i, align 8 %3 = load ptr, ptr %this, align 8 @@ -21088,6 +21087,7 @@ if.then: ; preds = %entry br i1 %cmp3, label %if.then4, label %if.else if.then4: ; preds = %if.then + %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 24 %call11 = tail call noundef ptr @_ZNSt6vectorIS_IN3ue29LookEntryESaIS1_EESaIS3_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS3_S5_EEEEPS3_mT_SD_(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %sub.ptr.div.i, ptr %1, ptr %0) %4 = load ptr, ptr %this, align 8 %_M_finish = getelementptr inbounds nuw i8, ptr %this, i64 8 @@ -21134,8 +21134,7 @@ if.else: ; preds = %if.then %8 = load ptr, ptr %_M_finish.i94, align 8 %sub.ptr.lhs.cast.i95 = ptrtoint ptr %8 to i64 %sub.ptr.sub.i97 = sub i64 %sub.ptr.lhs.cast.i95, %sub.ptr.rhs.cast.i90 - %sub.ptr.div.i98 = sdiv exact i64 %sub.ptr.sub.i97, 24 - %cmp26.not = icmp ult i64 %sub.ptr.div.i98, %sub.ptr.div.i + %cmp26.not = icmp ult i64 %sub.ptr.sub.i97, %sub.ptr.sub.i br i1 %cmp26.not, label %if.else49, label %if.then27 if.then27: ; preds = %if.else @@ -21212,15 +21211,14 @@ _ZSt4copyIPSt6vectorIN3ue29LookEntryESaIS2_EES5_ET0_T_S7_S6_.exit.loopexit: ; pr %.pre135 = ptrtoint ptr %.pre132 to i64 %.pre136 = ptrtoint ptr %.pre133 to i64 %.pre137 = sub i64 %.pre135, %.pre136 - %.pre138 = sdiv exact i64 %.pre137, 24 br label %_ZSt4copyIPSt6vectorIN3ue29LookEntryESaIS2_EES5_ET0_T_S7_S6_.exit _ZSt4copyIPSt6vectorIN3ue29LookEntryESaIS2_EES5_ET0_T_S7_S6_.exit: ; preds = %_ZSt4copyIPSt6vectorIN3ue29LookEntryESaIS2_EES5_ET0_T_S7_S6_.exit.loopexit, %if.else49 - %sub.ptr.div.i130.pre-phi = phi i64 [ %.pre138, %_ZSt4copyIPSt6vectorIN3ue29LookEntryESaIS2_EES5_ET0_T_S7_S6_.exit.loopexit ], [ %sub.ptr.div.i98, %if.else49 ] + %sub.ptr.div.i130.pre-phi.in = phi i64 [ %.pre137, %_ZSt4copyIPSt6vectorIN3ue29LookEntryESaIS2_EES5_ET0_T_S7_S6_.exit.loopexit ], [ %sub.ptr.sub.i97, %if.else49 ] %11 = phi ptr [ %.pre134, %_ZSt4copyIPSt6vectorIN3ue29LookEntryESaIS2_EES5_ET0_T_S7_S6_.exit.loopexit ], [ %0, %if.else49 ] %12 = phi ptr [ %.pre132, %_ZSt4copyIPSt6vectorIN3ue29LookEntryESaIS2_EES5_ET0_T_S7_S6_.exit.loopexit ], [ %8, %if.else49 ] %13 = phi ptr [ %.pre131, %_ZSt4copyIPSt6vectorIN3ue29LookEntryESaIS2_EES5_ET0_T_S7_S6_.exit.loopexit ], [ %1, %if.else49 ] - %add.ptr62 = getelementptr inbounds %"class.std::vector.620", ptr %13, i64 %sub.ptr.div.i130.pre-phi + %add.ptr62 = getelementptr inbounds i8, ptr %13, i64 %sub.ptr.div.i130.pre-phi.in %call.i.i.i = tail call noundef ptr @_ZSt16__do_uninit_copyIPSt6vectorIN3ue29LookEntryESaIS2_EES5_ET0_T_S7_S6_(ptr noundef %add.ptr62, ptr noundef %11, ptr noundef %12) br label %if.end69 @@ -29452,7 +29450,7 @@ if.then: ; preds = %entry if.then13: ; preds = %if.then %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %__position.coerce317 %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 - %cmp19 = icmp ugt i64 %sub.ptr.div.i, %sub.ptr.div.i.i.i.i + %cmp19 = icmp ugt i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i.i.i br i1 %cmp19, label %for.body.i.i.i.i.i.preheader, label %_ZSt7advanceISt13move_iteratorIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3ue215RoseInstructionESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEEmEvRT_T0_.exit for.body.i.i.i.i.i.preheader: ; preds = %if.then13 diff --git a/bench/icu/optimized/umutablecptrie.ll b/bench/icu/optimized/umutablecptrie.ll index 120e18ec08d..6dd709ce141 100644 --- a/bench/icu/optimized/umutablecptrie.ll +++ b/bench/icu/optimized/umutablecptrie.ll @@ -1665,7 +1665,7 @@ _ZNK6icu_7512_GLOBAL__N_120MutableCodePointTrie3getEi.exit.i.i: ; preds = %if.el store i32 %retval.0.i.i.i, ptr %highValue.i103.i, align 4 %shr.i.i.i = ashr i32 %26, 4 %cmp12.i.i.i = icmp sgt i32 %shr.i.i.i, 0 - br i1 %cmp12.i.i.i, label %while.body.lr.ph.i.i.i, label %if.then5.i.i + br i1 %cmp12.i.i.i, label %while.body.lr.ph.i.i.i, label %for.body.lr.ph.i107.i while.body.lr.ph.i.i.i: ; preds = %_ZNK6icu_7512_GLOBAL__N_120MutableCodePointTrie3getEi.exit.i.i %flags.i33.i.i = getelementptr inbounds nuw i8, ptr %trie, i64 64 @@ -1691,7 +1691,7 @@ if.then.i.i.i: ; preds = %while.body.i.i.i while.cond.backedge.i.i.i: ; preds = %for.cond.i.i.i, %if.then.i.i.i %cmp.i.i.i = icmp sgt i64 %indvars.iv19.i.i.i, 1 - br i1 %cmp.i.i.i, label %while.body.i.i.i, label %if.then5.i.i, !llvm.loop !14 + br i1 %cmp.i.i.i, label %while.body.i.i.i, label %for.body.lr.ph.i107.i, !llvm.loop !14 if.else.i36.i.i: ; preds = %while.body.i.i.i %idx.ext.i.i.i = zext i32 %36 to i64 @@ -1727,16 +1727,12 @@ if.then.i118.i: ; preds = %_ZNK6icu_7512_GLOBA if.end.i.i: ; preds = %if.then.i118.i, %_ZNK6icu_7512_GLOBAL__N_120MutableCodePointTrie13findHighStartEv.exit.i.i %39 = phi i32 [ %38, %if.then.i118.i ], [ %retval.0.i.i.i, %_ZNK6icu_7512_GLOBAL__N_120MutableCodePointTrie13findHighStartEv.exit.i.i ] %cmp4.i117.i = icmp samesign ult i32 %and.i115.i, %cond.i - br i1 %cmp4.i117.i, label %if.then5.i.i, label %if.end11.i.i + br i1 %cmp4.i117.i, label %for.body.lr.ph.i107.i, label %if.end11.i.i -if.then5.i.i: ; preds = %while.cond.backedge.i.i.i, %if.end.i.i, %_ZNK6icu_7512_GLOBAL__N_120MutableCodePointTrie3getEi.exit.i.i - %40 = phi i32 [ %39, %if.end.i.i ], [ %retval.0.i.i.i, %_ZNK6icu_7512_GLOBAL__N_120MutableCodePointTrie3getEi.exit.i.i ], [ %retval.0.i.i.i, %while.cond.backedge.i.i.i ] - %and195200.i.i = phi i32 [ %and.i115.i, %if.end.i.i ], [ 0, %_ZNK6icu_7512_GLOBAL__N_120MutableCodePointTrie3getEi.exit.i.i ], [ 0, %while.cond.backedge.i.i.i ] - %shr.i104.i = lshr exact i32 %and195200.i.i, 4 - %cmp6246.i.i = icmp samesign ult i32 %shr.i104.i, %shr.i - br i1 %cmp6246.i.i, label %for.body.lr.ph.i107.i, label %if.end11.i.i - -for.body.lr.ph.i107.i: ; preds = %if.then5.i.i +for.body.lr.ph.i107.i: ; preds = %while.cond.backedge.i.i.i, %if.end.i.i, %_ZNK6icu_7512_GLOBAL__N_120MutableCodePointTrie3getEi.exit.i.i + %and195200.i247.i = phi i32 [ 0, %_ZNK6icu_7512_GLOBAL__N_120MutableCodePointTrie3getEi.exit.i.i ], [ %and.i115.i, %if.end.i.i ], [ 0, %while.cond.backedge.i.i.i ] + %40 = phi i32 [ %retval.0.i.i.i, %_ZNK6icu_7512_GLOBAL__N_120MutableCodePointTrie3getEi.exit.i.i ], [ %39, %if.end.i.i ], [ %retval.0.i.i.i, %while.cond.backedge.i.i.i ] + %shr.i104.i = lshr exact i32 %and195200.i247.i, 4 %flags.i108.i = getelementptr inbounds nuw i8, ptr %trie, i64 64 %41 = zext nneg i32 %shr.i104.i to i64 %wide.trip.count.i109.i = zext nneg i32 %shr.i to i64 @@ -1751,17 +1747,23 @@ for.body.i110.i: ; preds = %for.body.i110.i, %f store i32 %40, ptr %arrayidx9.i.i, align 4 %indvars.iv.next.i113.i = add nuw nsw i64 %indvars.iv.i111.i, 1 %exitcond.not.i114.i = icmp eq i64 %indvars.iv.next.i113.i, %wide.trip.count.i109.i - br i1 %exitcond.not.i114.i, label %if.end11.i.i, label %for.body.i110.i, !llvm.loop !16 - -if.end11.i.i: ; preds = %for.body.i110.i, %if.then5.i.i, %if.end.i.i - %43 = phi i32 [ %and.i115.i, %if.end.i.i ], [ %cond.i, %if.then5.i.i ], [ %cond.i, %for.body.i110.i ] - %and195199.i.i = phi i32 [ %and.i115.i, %if.end.i.i ], [ %and195200.i.i, %if.then5.i.i ], [ %and195200.i.i, %for.body.i110.i ] - store i32 %43, ptr %highStart.i.i.i, align 8 + br i1 %exitcond.not.i114.i, label %if.end11.i.i.loopexit, label %for.body.i110.i, !llvm.loop !16 + +if.end11.i.i.loopexit: ; preds = %for.body.i110.i + %data.i52.i.i.phi.trans.insert = getelementptr inbounds nuw i8, ptr %trie, i64 16 + %.pre = load ptr, ptr %data.i52.i.i.phi.trans.insert, align 8 + %.pre63 = load ptr, ptr %trie, align 8 + br label %if.end11.i.i + +if.end11.i.i: ; preds = %if.end11.i.i.loopexit, %if.end.i.i + %43 = phi ptr [ %33, %if.end.i.i ], [ %.pre63, %if.end11.i.i.loopexit ] + %44 = phi ptr [ %32, %if.end.i.i ], [ %.pre, %if.end11.i.i.loopexit ] + %45 = phi i32 [ %and.i115.i, %if.end.i.i ], [ %cond.i, %if.end11.i.i.loopexit ] + %and195199.i.i = phi i32 [ %and.i115.i, %if.end.i.i ], [ %and195200.i247.i, %if.end11.i.i.loopexit ] + store i32 %45, ptr %highStart.i.i.i, align 8 %flags.i48.i.i = getelementptr inbounds nuw i8, ptr %trie, i64 64 %data.i52.i.i = getelementptr inbounds nuw i8, ptr %trie, i64 16 - %44 = load ptr, ptr %data.i52.i.i, align 8 - %45 = load ptr, ptr %trie, align 8 - %46 = zext nneg i32 %43 to i64 + %46 = zext nneg i32 %45 to i64 br label %if.end.i39.i.i if.end.i39.i.i: ; preds = %_ZNK6icu_7512_GLOBAL__N_120MutableCodePointTrie3getEi.exit60.i.i, %if.end11.i.i @@ -1778,12 +1780,12 @@ if.end4.i46.i.i: ; preds = %if.end.i39.i.i br i1 %cmp5.i50.i.i, label %if.then6.i57.i.i, label %if.else.i51.i.i if.then6.i57.i.i: ; preds = %if.end4.i46.i.i - %arrayidx8.i58.i.i = getelementptr inbounds nuw i32, ptr %45, i64 %idxprom.i.i.i + %arrayidx8.i58.i.i = getelementptr inbounds nuw i32, ptr %43, i64 %idxprom.i.i.i br label %_ZNK6icu_7512_GLOBAL__N_120MutableCodePointTrie3getEi.exit60.i.i if.else.i51.i.i: ; preds = %if.end4.i46.i.i %48 = trunc nuw nsw i64 %indvars.iv297.i.i to i32 - %arrayidx11.i53.i.i = getelementptr inbounds nuw i32, ptr %45, i64 %idxprom.i.i.i + %arrayidx11.i53.i.i = getelementptr inbounds nuw i32, ptr %43, i64 %idxprom.i.i.i %49 = load i32, ptr %arrayidx11.i53.i.i, align 4 %and.i.i.i = and i32 %48, 15 %add.i54.i.i = add i32 %49, %and.i.i.i @@ -1804,8 +1806,8 @@ for.end21.i.i: ; preds = %_ZNK6icu_7512_GLOBA store i32 0, ptr %allSameBlocks.i.i, align 4 %mostRecent.i.i.i = getelementptr inbounds nuw i8, ptr %allSameBlocks.i.i, i64 4 store i32 -1, ptr %mostRecent.i.i.i, align 4 - %shr.i62.i.i = lshr exact i32 %43, 4 - %cmp101.i.not.i.i = icmp eq i32 %43, 0 + %shr.i62.i.i = lshr exact i32 %45, 4 + %cmp101.i.not.i.i = icmp eq i32 %45, 0 br i1 %cmp101.i.not.i.i, label %if.end25.i.i, label %for.body.lr.ph.i.i.i for.body.lr.ph.i.i.i: ; preds = %for.end21.i.i @@ -3938,13 +3940,13 @@ land.lhs.true108.i: ; preds = %if.else103.i %errorValue114.i = getelementptr inbounds nuw i8, ptr %trie, i64 44 %306 = load i32, ptr %errorValue114.i, align 4 %cmp115.i = icmp eq i32 %305, %306 - %.pre236.i.pre63 = load i32, ptr %highValue.i103.i, align 4 + %.pre236.i.pre64 = load i32, ptr %highValue.i103.i, align 4 br i1 %cmp115.i, label %land.lhs.true116.i, label %while.body.lr.ph.i land.lhs.true116.i: ; preds = %land.lhs.true108.i %arrayidx121.i = getelementptr i8, ptr %304, i64 -8 %307 = load i32, ptr %arrayidx121.i, align 4 - %cmp123.i = icmp eq i32 %307, %.pre236.i.pre63 + %cmp123.i = icmp eq i32 %307, %.pre236.i.pre64 br i1 %cmp123.i, label %if.end165.i, label %while.body.lr.ph.i land.lhs.true127.i: ; preds = %if.else103.i @@ -3969,7 +3971,7 @@ default.unreachable: ; preds = %if.else103.i unreachable while.body.lr.ph.i: ; preds = %if.else103.i.while.body.lr.ph.i_crit_edge, %land.lhs.true127.i, %land.lhs.true116.i, %land.lhs.true108.i - %.pre236.i = phi i32 [ %.pre236.i.pre, %if.else103.i.while.body.lr.ph.i_crit_edge ], [ %312, %land.lhs.true127.i ], [ %.pre236.i.pre63, %land.lhs.true116.i ], [ %.pre236.i.pre63, %land.lhs.true108.i ] + %.pre236.i = phi i32 [ %.pre236.i.pre, %if.else103.i.while.body.lr.ph.i_crit_edge ], [ %312, %land.lhs.true127.i ], [ %.pre236.i.pre64, %land.lhs.true116.i ], [ %.pre236.i.pre64, %land.lhs.true108.i ] br label %while.body.i while.body.i: ; preds = %while.body.i, %while.body.lr.ph.i diff --git a/bench/image-rs/optimized/249ukonr3l56u09i.ll b/bench/image-rs/optimized/249ukonr3l56u09i.ll index bf3cd039c0e..c09870ffc96 100644 --- a/bench/image-rs/optimized/249ukonr3l56u09i.ll +++ b/bench/image-rs/optimized/249ukonr3l56u09i.ll @@ -12136,7 +12136,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he841aceb73f43828E.exit.thread" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 1, i64 noundef %11) #32, !noalias !1377 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit @@ -12195,7 +12195,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1329199bd8d884a7E.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #32, !noalias !1381 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit @@ -12254,7 +12254,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h5ad1d566f5e31336E.exit.thread" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #32, !noalias !1385 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit @@ -12313,7 +12313,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2fc2c557b18890b5E.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #32, !noalias !1389 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit @@ -12431,7 +12431,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h9b5a81f91d032527E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #32, !noalias !1397 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit @@ -12547,7 +12547,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h464775b76fe34750E.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #32, !noalias !1405 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit @@ -12665,7 +12665,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hb764701c841712b8E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #32, !noalias !1413 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit @@ -12783,7 +12783,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he47cc05bc783287bE.exit.thread" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #32, !noalias !1421 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit @@ -12842,7 +12842,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h35282a3824e387e8E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #32, !noalias !1425 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit @@ -12958,7 +12958,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h64d60443d94cebf4E.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #32, !noalias !1433 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit @@ -13253,7 +13253,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0c04fd8d28033082E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #32, !noalias !1453 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit @@ -13312,7 +13312,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1dca65eb1d2447bdE.exit.thread" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 2, i64 noundef %11) #32, !noalias !1457 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit @@ -13371,7 +13371,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h9b4680ca086efd08E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #32, !noalias !1461 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit @@ -13430,7 +13430,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hef4274643b07d837E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #32, !noalias !1465 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit @@ -13615,7 +13615,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h7216f0f89af1f892E.exit.thread" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 2, i64 noundef %11) #32, !noalias !1477 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit @@ -13733,7 +13733,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf30d436c57c752a2E.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #32, !noalias !1485 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit @@ -13852,7 +13852,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h64d60443d94cebf4E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #32, !noalias !1499 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -13911,7 +13911,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hfeabf5d108f95f10E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #32, !noalias !1506 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -14096,7 +14096,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h044386a4087cee75E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #32, !noalias !1527 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -14155,7 +14155,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hbff875ee9f443739E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #32, !noalias !1534 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -14273,7 +14273,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2fc2c557b18890b5E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #32, !noalias !1548 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -14332,7 +14332,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hc9ebd4052e4b78b9E.exit.thread.i" %15 = shl nuw i64 %7, 2 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 4, i64 noundef %10) #32, !noalias !1555 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -14450,7 +14450,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h74c8c0d1dba8c21cE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 4, i64 noundef %10) #32, !noalias !1569 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -14647,7 +14647,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf30d436c57c752a2E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #32, !noalias !1590 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -14706,7 +14706,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h5ad1d566f5e31336E.exit.thread.i" %15 = shl nuw i64 %7, 2 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 4, i64 noundef %10) #32, !noalias !1597 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -14765,7 +14765,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha23c51f1bfa5b67dE.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #32, !noalias !1604 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -14824,7 +14824,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he47cc05bc783287bE.exit.thread.i" %15 = shl nuw i64 %7, 2 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 4, i64 noundef %10) #32, !noalias !1611 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -14883,7 +14883,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hacb7d17233020e9aE.exit.thread.i" %15 = shl nuw i64 %7, 2 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 2, i64 noundef %10) #32, !noalias !1618 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -14942,7 +14942,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hef4274643b07d837E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #32, !noalias !1625 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -15060,7 +15060,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1329199bd8d884a7E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #32, !noalias !1639 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -15171,7 +15171,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h7cc %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val23 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 4 @@ -15182,30 +15182,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h7cc "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #32 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit": ; preds = %13 %17 = shl nuw i64 %1, 4 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #32 - %.not37 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not37, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #32 + %.not37 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not37, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 + br label %21 -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: cold nonlazybind uwtable @@ -15356,7 +15354,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he47cc05bc783287bE.exit.thread.i" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #32, !noalias !1660 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -15415,7 +15413,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf30d436c57c752a2E.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #32, !noalias !1667 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -15474,7 +15472,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h464775b76fe34750E.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #32, !noalias !1674 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -15600,7 +15598,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hb764701c841712b8E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #32, !noalias !1688 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -15659,7 +15657,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h7216f0f89af1f892E.exit.thread.i" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 2, i64 noundef %11) #32, !noalias !1695 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -15915,7 +15913,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h9b4680ca086efd08E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #32, !noalias !1723 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -16033,7 +16031,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h5ad1d566f5e31336E.exit.thread.i" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #32, !noalias !1737 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -16162,7 +16160,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0c04fd8d28033082E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #32, !noalias !1751 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -16221,7 +16219,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1dca65eb1d2447bdE.exit.thread.i" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 2, i64 noundef %11) #32, !noalias !1758 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -16280,7 +16278,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1329199bd8d884a7E.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #32, !noalias !1765 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -16398,7 +16396,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h35282a3824e387e8E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #32, !noalias !1779 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -16516,7 +16514,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2fc2c557b18890b5E.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #32, !noalias !1793 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -16701,7 +16699,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h9b5a81f91d032527E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #32, !noalias !1814 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -16819,7 +16817,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h64d60443d94cebf4E.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #32, !noalias !1828 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -16946,7 +16944,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he841aceb73f43828E.exit.thread.i" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 1, i64 noundef %11) #32, !noalias !1842 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i @@ -17016,7 +17014,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hef4274643b07d837E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #32, !noalias !1849 br label %_ZN5alloc7raw_vec11finish_grow17had3ec5578d6ed844E.exit.i diff --git a/bench/influxdb-rs/optimized/59k85oi3tgixgpod.ll b/bench/influxdb-rs/optimized/59k85oi3tgixgpod.ll index 5fd97afea29..23620ea74cd 100644 --- a/bench/influxdb-rs/optimized/59k85oi3tgixgpod.ll +++ b/bench/influxdb-rs/optimized/59k85oi3tgixgpod.ll @@ -5308,7 +5308,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h622 11: ; preds = %2 %.val = load ptr, ptr %0, align 8 %12 = icmp eq i64 %5, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %11 %14 = shl nuw i64 %5, 6 @@ -5319,30 +5319,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h622 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.4074410953282169344.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val, i64 noundef %14, i64 noundef 8) #22 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit": ; preds = %13 %17 = shl nuw i64 %1, 6 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #22 - %.not37 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not37, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.4074410953282169344.exit" - %storemerge21 = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.4074410953282169344.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #22 + %.not37 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not37, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.4074410953282169344.exit" + %storemerge21 = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.4074410953282169344.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit" ] store ptr %storemerge21, ptr %0, align 8 store i64 %1, ptr %4, align 8 - br label %22 + br label %21 -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit", %11, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %11 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %11 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit", %11, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %11 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %11 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -5370,7 +5368,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h97a 11: ; preds = %2 %.val = load ptr, ptr %0, align 8 %12 = icmp eq i64 %5, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %11 %14 = shl nuw i64 %5, 5 @@ -5381,30 +5379,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h97a "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.4074410953282169344.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val, i64 noundef %14, i64 noundef 8) #22 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit": ; preds = %13 %17 = shl nuw i64 %1, 5 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #22 - %.not37 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not37, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.4074410953282169344.exit" - %storemerge21 = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.4074410953282169344.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #22 + %.not37 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not37, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.4074410953282169344.exit" + %storemerge21 = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.4074410953282169344.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit" ] store ptr %storemerge21, ptr %0, align 8 store i64 %1, ptr %4, align 8 - br label %22 + br label %21 -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit", %11, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %11 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %11 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit", %11, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %11 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %11 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h28cac65239bda101E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: cold nonlazybind uwtable diff --git a/bench/ipopt/optimized/SensIndexSchurData.ll b/bench/ipopt/optimized/SensIndexSchurData.ll index 8a37b7b6085..f2733f6b8a1 100644 --- a/bench/ipopt/optimized/SensIndexSchurData.ll +++ b/bench/ipopt/optimized/SensIndexSchurData.ll @@ -1076,36 +1076,36 @@ define void @_ZN5Ipopt14IndexSchurData12SetData_ListERKSt6vectorIiSaIiEEd(ptr no %10 = ptrtoint ptr %8 to i64 %11 = ptrtoint ptr %9 to i64 %12 = sub i64 %10, %11 - %13 = ashr exact i64 %12, 2 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %15 = load ptr, ptr %14, align 8 - %16 = load ptr, ptr %6, align 8 + %13 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %14 = load ptr, ptr %13, align 8 + %15 = load ptr, ptr %6, align 8 + %16 = ptrtoint ptr %14 to i64 %17 = ptrtoint ptr %15 to i64 - %18 = ptrtoint ptr %16 to i64 - %19 = sub i64 %17, %18 - %20 = ashr exact i64 %19, 2 - %21 = icmp ugt i64 %13, %20 - br i1 %21, label %22, label %24 - -22: ; preds = %3 - %23 = sub nuw nsw i64 %13, %20 - call void @_ZNSt6vectorIiSaIiEE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPiS1_EEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr %15, i64 noundef %23, ptr noundef nonnull align 4 dereferenceable(4) %4) + %18 = sub i64 %16, %17 + %19 = icmp ugt i64 %12, %18 + br i1 %19, label %20, label %24 + +20: ; preds = %3 + %21 = ashr exact i64 %12, 2 + %22 = ashr exact i64 %18, 2 + %23 = sub nuw nsw i64 %21, %22 + call void @_ZNSt6vectorIiSaIiEE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPiS1_EEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr %14, i64 noundef %23, ptr noundef nonnull align 4 dereferenceable(4) %4) br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit 24: ; preds = %3 - %25 = icmp ult i64 %13, %20 + %25 = icmp ult i64 %12, %18 br i1 %25, label %26, label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit 26: ; preds = %24 - %27 = getelementptr inbounds i8, ptr %16, i64 %12 - %.not.i.i = icmp eq ptr %15, %27 + %27 = getelementptr inbounds i8, ptr %15, i64 %12 + %.not.i.i = icmp eq ptr %14, %27 br i1 %.not.i.i, label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit, label %28 28: ; preds = %26 - store ptr %27, ptr %14, align 8 + store ptr %27, ptr %13, align 8 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit -_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit: ; preds = %22, %24, %26, %28 +_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit: ; preds = %20, %24, %26, %28 %29 = getelementptr inbounds nuw i8, ptr %0, i64 24 %30 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(24) %1) %31 = load ptr, ptr %0, align 8 diff --git a/bench/just-rs/optimized/4sd695eow2u4pww6.ll b/bench/just-rs/optimized/4sd695eow2u4pww6.ll index 74cd5886e37..ce87bce061f 100644 --- a/bench/just-rs/optimized/4sd695eow2u4pww6.ll +++ b/bench/just-rs/optimized/4sd695eow2u4pww6.ll @@ -5298,7 +5298,7 @@ define internal fastcc void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he9538d00950 18: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1be0bdc9d7cdd506E.exit.thread.i.i" %19 = shl nuw i64 %4, 5 - %20 = icmp uge i64 %14, %19 + %20 = icmp uge i64 %.0.sroa.speculated.i26.i.i, %4 tail call void @llvm.assume(i1 %20) %21 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i.i, i64 noundef %19, i64 noundef range(i64 1, 9) 8, i64 noundef %14) #29, !noalias !399 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i.i @@ -7190,7 +7190,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h27ed86bfe4858ab2E.exit.thread" %16 = shl nuw i64 %8, 7 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #29, !noalias !442 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit @@ -7308,7 +7308,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h030ae8581307ecc0E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #29, !noalias !450 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit @@ -7426,7 +7426,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hb262b8374ed3e488E.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #29, !noalias !458 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit @@ -7662,7 +7662,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h03e73c21e2b23a53E.exit.thread" %16 = shl nuw i64 %8, 7 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #29, !noalias !474 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit @@ -7721,7 +7721,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h804ba1ee8854eb4cE.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #29, !noalias !478 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit @@ -7896,7 +7896,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1be0bdc9d7cdd506E.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #29, !noalias !490 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit @@ -8073,7 +8073,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h152b1e5c516930daE.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #29, !noalias !502 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit @@ -8315,7 +8315,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hbeb73bf91c99e57cE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #29, !noalias !521 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i @@ -8433,7 +8433,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he0f14a84bcc1bd60E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #29, !noalias !535 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i @@ -8610,7 +8610,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h03e73c21e2b23a53E.exit.thread.i" %15 = shl nuw i64 %7, 7 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #29, !noalias !556 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i @@ -8669,7 +8669,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h50e5a4e322b6625cE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #29, !noalias !563 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i @@ -8787,7 +8787,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hdd3421be20ddff35E.exit.thread.i" %15 = shl nuw i64 %7, 2 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 4, i64 noundef %10) #29, !noalias !577 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i @@ -9082,7 +9082,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hbc68492198834147E.exit.thread.i" %15 = shl nuw i64 %7, 7 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #29, !noalias !612 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i @@ -9554,7 +9554,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h08526056bcbc10d3E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #29, !noalias !668 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i @@ -9681,7 +9681,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1be0bdc9d7cdd506E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #29, !noalias !682 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i @@ -9740,7 +9740,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h030ae8581307ecc0E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #29, !noalias !689 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i @@ -9799,7 +9799,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h9366608f180cb1f9E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #29, !noalias !696 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i @@ -9858,7 +9858,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h19f7f55be89e2390E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #29, !noalias !703 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i @@ -9976,7 +9976,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hb262b8374ed3e488E.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #29, !noalias !717 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i @@ -10094,7 +10094,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1be0bdc9d7cdd506E.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #29, !noalias !731 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i @@ -10221,7 +10221,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h27ed86bfe4858ab2E.exit.thread.i" %16 = shl nuw i64 %8, 7 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #29, !noalias !745 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i @@ -10339,7 +10339,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h03e73c21e2b23a53E.exit.thread.i" %16 = shl nuw i64 %8, 7 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #29, !noalias !759 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i @@ -10699,7 +10699,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h152b1e5c516930daE.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #29, !noalias !801 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i @@ -10758,7 +10758,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h030ae8581307ecc0E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #29, !noalias !808 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i @@ -11053,7 +11053,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h804ba1ee8854eb4cE.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #29, !noalias !843 br label %_ZN5alloc7raw_vec11finish_grow17h741efc9282277e40E.exit.i diff --git a/bench/llama.cpp/optimized/grammar-parser.cpp.ll b/bench/llama.cpp/optimized/grammar-parser.cpp.ll index 6386e683509..62e9f910544 100644 --- a/bench/llama.cpp/optimized/grammar-parser.cpp.ll +++ b/bench/llama.cpp/optimized/grammar-parser.cpp.ll @@ -625,7 +625,7 @@ while.body21: ; preds = %if.then11, %if.end4 %sub.ptr.rhs.cast.i89 = ptrtoint ptr %25 to i64 %sub.ptr.sub.i90 = sub i64 %sub.ptr.lhs.cast.i88, %sub.ptr.rhs.cast.i89 %sub.ptr.div.i91 = ashr exact i64 %sub.ptr.sub.i90, 3 - %cmp27 = icmp ult i64 %sub.ptr.div.i86, %sub.ptr.div.i91 + %cmp27 = icmp ult i64 %sub.ptr.sub.i85, %sub.ptr.sub.i90 %cond = select i1 %cmp27, i32 6, i32 %spec.select %26 = load ptr, ptr %_M_end_of_storage.i.i93, align 8 %cmp.not.i.i94 = icmp eq ptr %24, %26 @@ -4648,7 +4648,7 @@ if.then9: ; preds = %if.then %sub.ptr.rhs.cast.i = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 - %cmp15 = icmp ugt i64 %sub.ptr.div.i, %sub.ptr.div.i.i.i + %cmp15 = icmp ugt i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i.i br i1 %cmp15, label %_ZSt22__uninitialized_move_aIP21llama_grammar_elementS1_SaIS0_EET0_T_S4_S3_RT1_.exit, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIP21llama_grammar_elementSt6vectorIS2_SaIS2_EEEEmEvRT_T0_.exit _ZSt22__uninitialized_move_aIP21llama_grammar_elementS1_SaIS0_EET0_T_S4_S3_RT1_.exit: ; preds = %if.then9 diff --git a/bench/llama.cpp/optimized/train.cpp.ll b/bench/llama.cpp/optimized/train.cpp.ll index c3b48c9fd80..c9b89597b4c 100644 --- a/bench/llama.cpp/optimized/train.cpp.ll +++ b/bench/llama.cpp/optimized/train.cpp.ll @@ -6394,24 +6394,24 @@ if.end94: ; preds = %_ZNSt6vectorImSaImE %sub.ptr.lhs.cast.i417 = ptrtoint ptr %84 to i64 %sub.ptr.rhs.cast.i418 = ptrtoint ptr %83 to i64 %sub.ptr.sub.i419 = sub i64 %sub.ptr.lhs.cast.i417, %sub.ptr.rhs.cast.i418 - %sub.ptr.div.i420 = ashr exact i64 %sub.ptr.sub.i419, 3 store i64 0, ptr %ref.tmp96, align 8 %85 = load ptr, ptr %_M_finish.i.i339, align 8 %86 = load ptr, ptr %out_samples_size, align 8 %sub.ptr.lhs.cast.i.i422 = ptrtoint ptr %85 to i64 %sub.ptr.rhs.cast.i.i423 = ptrtoint ptr %86 to i64 %sub.ptr.sub.i.i424 = sub i64 %sub.ptr.lhs.cast.i.i422, %sub.ptr.rhs.cast.i.i423 - %sub.ptr.div.i.i425 = ashr exact i64 %sub.ptr.sub.i.i424, 3 - %cmp.i426 = icmp ugt i64 %sub.ptr.div.i420, %sub.ptr.div.i.i425 + %cmp.i426 = icmp ugt i64 %sub.ptr.sub.i419, %sub.ptr.sub.i.i424 br i1 %cmp.i426, label %if.then.i431, label %if.else.i427 if.then.i431: ; preds = %if.end94 + %sub.ptr.div.i420 = ashr exact i64 %sub.ptr.sub.i419, 3 + %sub.ptr.div.i.i425 = ashr exact i64 %sub.ptr.sub.i.i424, 3 %sub.i432 = sub nuw nsw i64 %sub.ptr.div.i420, %sub.ptr.div.i.i425 invoke void @_ZNSt6vectorImSaImEE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPmS1_EEmRKm(ptr noundef nonnull align 8 dereferenceable(24) %out_samples_size, ptr %85, i64 noundef %sub.i432, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp96) to label %invoke.cont97 unwind label %lpad81.loopexit.split-lp if.else.i427: ; preds = %if.end94 - %cmp6.i = icmp ult i64 %sub.ptr.div.i420, %sub.ptr.div.i.i425 + %cmp6.i = icmp ult i64 %sub.ptr.sub.i419, %sub.ptr.sub.i.i424 br i1 %cmp6.i, label %if.then7.i, label %invoke.cont97 if.then7.i: ; preds = %if.else.i427 @@ -11141,7 +11141,7 @@ if.then9: ; preds = %if.then %sub.ptr.rhs.cast.i = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 2 - %cmp15 = icmp ugt i64 %sub.ptr.div.i, %sub.ptr.div.i.i.i + %cmp15 = icmp ugt i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i.i br i1 %cmp15, label %_ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEmEvRT_T0_.exit _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit: ; preds = %if.then9 diff --git a/bench/llvm/optimized/ASTContext.cpp.ll b/bench/llvm/optimized/ASTContext.cpp.ll index 4e3352f407a..38ef3b317e9 100644 --- a/bench/llvm/optimized/ASTContext.cpp.ll +++ b/bench/llvm/optimized/ASTContext.cpp.ll @@ -6133,9 +6133,9 @@ define linkonce_odr hidden void @_ZN5clang10ASTContext22addTranslationUnitDeclEv %12 = getelementptr inbounds nuw i8, ptr %0, i64 2072 %13 = load ptr, ptr %12, align 8 %14 = icmp eq ptr %11, %13 - br i1 %14, label %.thread, label %_ZNSt6vectorIPN5clang4DeclESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit + br i1 %14, label %15, label %_ZNSt6vectorIPN5clang4DeclESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit -15: ; preds = %1 +15: ; preds = %9, %1 store ptr %3, ptr %2, align 8 %16 = getelementptr inbounds nuw i8, ptr %0, i64 22984 %17 = load ptr, ptr %16, align 8 @@ -6144,80 +6144,72 @@ define linkonce_odr hidden void @_ZN5clang10ASTContext22addTranslationUnitDeclEv %20 = sub i64 %18, %19 %21 = icmp ult i64 %20, 8 %22 = ptrtoint ptr %3 to i64 - br i1 %21, label %30, label %_ZSt4copyIPKPN5clang4DeclEPS2_ET0_T_S7_S6_.exit18.i + br i1 %21, label %23, label %27 -.thread: ; preds = %9 - store ptr %3, ptr %2, align 8 - %23 = getelementptr inbounds nuw i8, ptr %0, i64 22984 - %24 = load ptr, ptr %23, align 8 - %25 = ptrtoint ptr %24 to i64 - %26 = ptrtoint ptr %5 to i64 - %27 = sub i64 %25, %26 - %28 = icmp ult i64 %27, 8 - %29 = ptrtoint ptr %3 to i64 - br i1 %28, label %30, label %37 - -30: ; preds = %.thread, %15 - %31 = phi i64 [ %29, %.thread ], [ %22, %15 ] - %32 = phi i64 [ %27, %.thread ], [ %20, %15 ] - %33 = phi ptr [ %23, %.thread ], [ %16, %15 ] - %34 = tail call noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #31 - store i64 %31, ptr %34, align 8 +23: ; preds = %15 + %24 = tail call noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #31 + store i64 %22, ptr %24, align 8 %.not.i.i = icmp eq ptr %5, null - br i1 %.not.i.i, label %_ZNSt12_Vector_baseIPN5clang4DeclESaIS2_EE13_M_deallocateEPS2_m.exit.i, label %35 + br i1 %.not.i.i, label %_ZNSt12_Vector_baseIPN5clang4DeclESaIS2_EE13_M_deallocateEPS2_m.exit.i, label %25 -35: ; preds = %30 - tail call void @_ZdlPvm(ptr noundef nonnull %5, i64 noundef %32) #32 +25: ; preds = %23 + tail call void @_ZdlPvm(ptr noundef nonnull %5, i64 noundef %20) #32 br label %_ZNSt12_Vector_baseIPN5clang4DeclESaIS2_EE13_M_deallocateEPS2_m.exit.i -_ZNSt12_Vector_baseIPN5clang4DeclESaIS2_EE13_M_deallocateEPS2_m.exit.i: ; preds = %35, %30 - store ptr %34, ptr %4, align 8 - %36 = getelementptr inbounds nuw i8, ptr %34, i64 8 - store ptr %36, ptr %6, align 8 - store ptr %36, ptr %33, align 8 +_ZNSt12_Vector_baseIPN5clang4DeclESaIS2_EE13_M_deallocateEPS2_m.exit.i: ; preds = %25, %23 + store ptr %24, ptr %4, align 8 + %26 = getelementptr inbounds nuw i8, ptr %24, i64 8 + store ptr %26, ptr %6, align 8 + store ptr %26, ptr %16, align 8 br label %_ZNSt6vectorIPN5clang4DeclESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit -37: ; preds = %.thread - store i64 %29, ptr %5, align 8 +27: ; preds = %15 + %28 = ptrtoint ptr %7 to i64 + %29 = sub i64 %28, %19 + %.not.i = icmp ult i64 %29, 8 + br i1 %.not.i, label %33, label %30 + +30: ; preds = %27 + store i64 %22, ptr %5, align 8 %.pre.i = load ptr, ptr %6, align 8 - %38 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %.not.i16.i = icmp eq ptr %.pre.i, %38 - br i1 %.not.i16.i, label %_ZNSt6vectorIPN5clang4DeclESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit, label %39 + %31 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %.not.i16.i = icmp eq ptr %.pre.i, %31 + br i1 %.not.i16.i, label %_ZNSt6vectorIPN5clang4DeclESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit, label %32 -39: ; preds = %37 - store ptr %38, ptr %6, align 8 +32: ; preds = %30 + store ptr %31, ptr %6, align 8 br label %_ZNSt6vectorIPN5clang4DeclESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit -_ZSt4copyIPKPN5clang4DeclEPS2_ET0_T_S7_S6_.exit18.i: ; preds = %15 - %40 = ptrtoint ptr %7 to i64 - %41 = sub i64 %40, %19 - %gepdiff = sub nsw i64 8, %41 - %.not.i.i.i.i.i.i.i.i.i = icmp eq i64 %41, 8 - br i1 %.not.i.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPKPN5clang4DeclEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit.i, label %42 - -42: ; preds = %_ZSt4copyIPKPN5clang4DeclEPS2_ET0_T_S7_S6_.exit18.i - %.sink.i.i25.i.ptr = getelementptr inbounds i8, ptr %2, i64 %41 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %7, ptr nonnull align 8 %.sink.i.i25.i.ptr, i64 %gepdiff, i1 false) - br label %_ZSt22__uninitialized_copy_aIPKPN5clang4DeclEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit.i - -_ZSt22__uninitialized_copy_aIPKPN5clang4DeclEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit.i: ; preds = %42, %_ZSt4copyIPKPN5clang4DeclEPS2_ET0_T_S7_S6_.exit18.i - %43 = getelementptr inbounds i8, ptr %7, i64 %gepdiff - store ptr %43, ptr %6, align 8 +33: ; preds = %27 + %34 = getelementptr inbounds nuw i8, ptr %2, i64 %29 + br i1 %8, label %_ZSt4copyIPKPN5clang4DeclEPS2_ET0_T_S7_S6_.exit18.i, label %35 + +35: ; preds = %33 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %5, ptr noundef nonnull align 8 dereferenceable(1) %2, i64 %29, i1 false) + %.pre26.i = load ptr, ptr %6, align 8 + br label %_ZSt4copyIPKPN5clang4DeclEPS2_ET0_T_S7_S6_.exit18.i + +_ZSt4copyIPKPN5clang4DeclEPS2_ET0_T_S7_S6_.exit18.i: ; preds = %35, %33 + %36 = phi ptr [ %7, %33 ], [ %.pre26.i, %35 ] + %gepdiff = sub nuw nsw i64 8, %29 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %36, ptr nonnull align 8 %34, i64 %gepdiff, i1 false) + %37 = getelementptr inbounds nuw i8, ptr %36, i64 %gepdiff + store ptr %37, ptr %6, align 8 br label %_ZNSt6vectorIPN5clang4DeclESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit -_ZNSt6vectorIPN5clang4DeclESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit: ; preds = %_ZSt22__uninitialized_copy_aIPKPN5clang4DeclEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit.i, %39, %37, %_ZNSt12_Vector_baseIPN5clang4DeclESaIS2_EE13_M_deallocateEPS2_m.exit.i, %9 - %44 = getelementptr inbounds nuw i8, ptr %0, i64 2072 - %45 = load ptr, ptr %44, align 8 - %.not = icmp eq ptr %45, null - br i1 %.not, label %48, label %46 +_ZNSt6vectorIPN5clang4DeclESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit: ; preds = %_ZSt4copyIPKPN5clang4DeclEPS2_ET0_T_S7_S6_.exit18.i, %32, %30, %_ZNSt12_Vector_baseIPN5clang4DeclESaIS2_EE13_M_deallocateEPS2_m.exit.i, %9 + %38 = getelementptr inbounds nuw i8, ptr %0, i64 2072 + %39 = load ptr, ptr %38, align 8 + %.not = icmp eq ptr %39, null + br i1 %.not, label %42, label %40 -46: ; preds = %_ZNSt6vectorIPN5clang4DeclESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit - %47 = getelementptr inbounds nuw i8, ptr %3, i64 72 - tail call void @_ZN5clang12RedeclarableINS_19TranslationUnitDeclEE15setPreviousDeclEPS1_(ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef nonnull %45) - br label %48 +40: ; preds = %_ZNSt6vectorIPN5clang4DeclESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit + %41 = getelementptr inbounds nuw i8, ptr %3, i64 72 + tail call void @_ZN5clang12RedeclarableINS_19TranslationUnitDeclEE15setPreviousDeclEPS1_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef nonnull %39) + br label %42 -48: ; preds = %46, %_ZNSt6vectorIPN5clang4DeclESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit - store ptr %3, ptr %44, align 8 +42: ; preds = %40, %_ZNSt6vectorIPN5clang4DeclESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit + store ptr %3, ptr %38, align 8 ret void } @@ -130462,7 +130454,7 @@ define linkonce_odr void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_trait %18 = ptrtoint ptr %1 to i64 %19 = sub i64 %15, %18 %20 = ashr exact i64 %19, 5 - %21 = icmp ugt i64 %20, %9 + %21 = icmp ugt i64 %19, %8 br i1 %21, label %.lr.ph.i.i.i.i.i.preheader, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEEmEvRT_T0_.exit .lr.ph.i.i.i.i.i.preheader: ; preds = %17 diff --git a/bench/llvm/optimized/CGExprConstant.cpp.ll b/bench/llvm/optimized/CGExprConstant.cpp.ll index 133ba3616d2..b34cda01d4a 100644 --- a/bench/llvm/optimized/CGExprConstant.cpp.ll +++ b/bench/llvm/optimized/CGExprConstant.cpp.ll @@ -8782,19 +8782,17 @@ _ZN12_GLOBAL__N_17replaceIN4llvm11SmallVectorIPNS1_8ConstantELj32EEESt16initiali 779: ; preds = %739 %780 = and i8 %77, -2 %spec.select.i.i.i.i.i.i.i.i261.i = icmp eq i8 %780, 12 - br i1 %spec.select.i.i.i.i.i.i.i.i261.i, label %._crit_edge.i.i.i267.i, label %804 + br i1 %spec.select.i.i.i.i.i.i.i.i261.i, label %._crit_edge.i.i.i267.i, label %805 ._crit_edge.i.i.i267.i: ; preds = %779 - %781 = shl i64 %46, 3 - %.idx411.i = add i64 %781, 8 - %782 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(272) %17) #20 - %.idx.i = shl nsw i64 %782, 3 - %gepdiff.i = sub nsw i64 %.idx.i, %.idx411.i - %.not.i.i.i.i.i.i.i.i.i269.i = icmp eq i64 %.idx.i, %.idx411.i + %781 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(272) %17) #20 + %782 = sub nsw i64 %781, %45 + %gepdiff.i = shl nsw i64 %782, 3 + %.not.i.i.i.i.i.i.i.i.i269.i = icmp eq i64 %781, %45 br i1 %.not.i.i.i.i.i.i.i.i.i269.i, label %._crit_edge.i.i.i277.i, label %783 783: ; preds = %._crit_edge.i.i.i267.i - %784 = getelementptr inbounds i8, ptr %71, i64 %.idx411.i + %784 = getelementptr inbounds i8, ptr %71, i64 %44 call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %72, ptr align 8 %784, i64 %gepdiff.i, i1 false) br label %._crit_edge.i.i.i277.i @@ -8810,25 +8808,25 @@ _ZN12_GLOBAL__N_17replaceIN4llvm11SmallVectorIPNS1_8ConstantELj32EEESt16initiali %792 = load ptr, ptr %16, align 8 %793 = getelementptr inbounds %"class.clang::CharUnits", ptr %792, i64 %46 %794 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(272) %16) #20 - %.idx412.i = shl nsw i64 %794, 3 - %gepdiff414.i = sub nsw i64 %.idx412.i, %.idx411.i - %.not.i.i.i.i.i.i.i.i.i279.i = icmp eq i64 %.idx412.i, %.idx411.i - br i1 %.not.i.i.i.i.i.i.i.i.i279.i, label %_ZN12_GLOBAL__N_17replaceIN4llvm11SmallVectorIN5clang9CharUnitsELj32EEESt16initializer_listIS4_EEEvRT_mmT0_.exit281.i, label %795 - -795: ; preds = %._crit_edge.i.i.i277.i - %796 = getelementptr inbounds i8, ptr %792, i64 %.idx411.i - call void @llvm.memmove.p0.p0.i64(ptr align 8 %793, ptr align 8 %796, i64 %gepdiff414.i, i1 false) + %795 = sub nsw i64 %794, %45 + %gepdiff413.i = shl nsw i64 %795, 3 + %.not.i.i.i.i.i.i.i.i.i279.i = icmp eq i64 %794, %45 + br i1 %.not.i.i.i.i.i.i.i.i.i279.i, label %_ZN12_GLOBAL__N_17replaceIN4llvm11SmallVectorIN5clang9CharUnitsELj32EEESt16initializer_listIS4_EEEvRT_mmT0_.exit281.i, label %796 + +796: ; preds = %._crit_edge.i.i.i277.i + %797 = getelementptr inbounds i8, ptr %792, i64 %44 + call void @llvm.memmove.p0.p0.i64(ptr align 8 %793, ptr align 8 %797, i64 %gepdiff413.i, i1 false) br label %_ZN12_GLOBAL__N_17replaceIN4llvm11SmallVectorIN5clang9CharUnitsELj32EEESt16initializer_listIS4_EEEvRT_mmT0_.exit281.i -_ZN12_GLOBAL__N_17replaceIN4llvm11SmallVectorIN5clang9CharUnitsELj32EEESt16initializer_listIS4_EEEvRT_mmT0_.exit281.i: ; preds = %795, %._crit_edge.i.i.i277.i - %797 = getelementptr inbounds i8, ptr %793, i64 %gepdiff414.i - %798 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(272) %16) #20 - %799 = load ptr, ptr %16, align 8 - %800 = ptrtoint ptr %797 to i64 - %801 = ptrtoint ptr %799 to i64 - %802 = sub i64 %800, %801 - %803 = ashr exact i64 %802, 3 - call void @_ZN4llvm15SmallVectorBaseIjE8set_sizeEm(ptr noundef nonnull align 8 dereferenceable(272) %16, i64 noundef %803) #20 +_ZN12_GLOBAL__N_17replaceIN4llvm11SmallVectorIN5clang9CharUnitsELj32EEESt16initializer_listIS4_EEEvRT_mmT0_.exit281.i: ; preds = %796, %._crit_edge.i.i.i277.i + %798 = getelementptr inbounds i8, ptr %793, i64 %gepdiff413.i + %799 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(272) %16) #20 + %800 = load ptr, ptr %16, align 8 + %801 = ptrtoint ptr %798 to i64 + %802 = ptrtoint ptr %800 to i64 + %803 = sub i64 %801, %802 + %804 = ashr exact i64 %803, 3 + call void @_ZN4llvm15SmallVectorBaseIjE8set_sizeEm(ptr noundef nonnull align 8 dereferenceable(272) %16, i64 noundef %804) #20 br label %_ZN12_GLOBAL__N_124ConstantAggregateBuilder5splitEmN5clang9CharUnitsE.exit _ZN12_GLOBAL__N_124ConstantAggregateBuilder5splitEmN5clang9CharUnitsE.exit: ; preds = %.lr.ph.i.i.i.i.i35.i.i.i.i104.i, %.lr.ph.i.i.i.i.i.i.i.i115.i, %.lr.ph.i.i.i.i.i35.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i35.i.i.i.i217.i, %.lr.ph.i.i.i.i.i.i.i.i232.i, %_ZSt13move_backwardIPN5clang9CharUnitsES2_ET0_T_S4_S3_.exit.i.i.i.i.i, %._crit_edge.i.i.i.i73.i, %"_ZN4llvm15SmallVectorImplIN5clang9CharUnitsEE6insertINS_15mapped_iteratorINS_6detail15SafeIntIteratorIjLb0EEEZN12_GLOBAL__N_124ConstantAggregateBuilder5splitEmS2_E3$_1S2_EEvEEPS2_SD_T_SE_.exit.sink.split.i.i.i.i", %_ZSt13move_backwardIPN5clang9CharUnitsES2_ET0_T_S4_S3_.exit.i.i.i.i103.i, %._crit_edge.i.i.i.i112.i, %"_ZN4llvm15SmallVectorImplIN5clang9CharUnitsEE6insertINS_15mapped_iteratorINS_6detail15SafeIntIteratorIjLb0EEEZN12_GLOBAL__N_124ConstantAggregateBuilder5splitEmS2_E3$_2S2_EEvEEPS2_SD_T_SE_.exit.sink.split.i.i.i.i", %_ZSt13move_backwardIPN5clang9CharUnitsES2_ET0_T_S4_S3_.exit.i.i.i.i216.i, %._crit_edge.i.i.i.i229.i, %"_ZN4llvm15SmallVectorImplIN5clang9CharUnitsEE6insertINS_15mapped_iteratorINS_6detail15SafeIntIteratorIjLb0EEEZN12_GLOBAL__N_124ConstantAggregateBuilder5splitEmS2_E3$_4S2_EEvEEPS2_SD_T_SE_.exit.sink.split.i.i.i.i", %.lr.ph.i.i.i252.i._crit_edge, %_ZN12_GLOBAL__N_17replaceIN4llvm11SmallVectorIN5clang9CharUnitsELj32EEESt16initializer_listIS4_EEEvRT_mmT0_.exit281.i @@ -8836,14 +8834,14 @@ _ZN12_GLOBAL__N_124ConstantAggregateBuilder5splitEmN5clang9CharUnitsE.exit: ; pr call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) br label %27, !llvm.loop !85 -804: ; preds = %779 +805: ; preds = %779 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) br label %.loopexit -.loopexit: ; preds = %50, %41, %_ZN4llvm11upper_boundIRNS_11SmallVectorIN5clang9CharUnitsELj32EEERS3_EEDaOT_OT0_.exit, %804, %25 - %.sroa.020.0 = phi i64 [ %26, %25 ], [ undef, %804 ], [ %45, %50 ], [ %46, %41 ], [ 0, %_ZN4llvm11upper_boundIRNS_11SmallVectorIN5clang9CharUnitsELj32EEERS3_EEDaOT_OT0_.exit ] - %.sroa.5.0 = phi i8 [ 1, %25 ], [ 0, %804 ], [ 1, %_ZN4llvm11upper_boundIRNS_11SmallVectorIN5clang9CharUnitsELj32EEERS3_EEDaOT_OT0_.exit ], [ 1, %41 ], [ 1, %50 ] +.loopexit: ; preds = %50, %41, %_ZN4llvm11upper_boundIRNS_11SmallVectorIN5clang9CharUnitsELj32EEERS3_EEDaOT_OT0_.exit, %805, %25 + %.sroa.020.0 = phi i64 [ %26, %25 ], [ undef, %805 ], [ %45, %50 ], [ %46, %41 ], [ 0, %_ZN4llvm11upper_boundIRNS_11SmallVectorIN5clang9CharUnitsELj32EEERS3_EEDaOT_OT0_.exit ] + %.sroa.5.0 = phi i8 [ 1, %25 ], [ 0, %805 ], [ 1, %_ZN4llvm11upper_boundIRNS_11SmallVectorIN5clang9CharUnitsELj32EEERS3_EEDaOT_OT0_.exit ], [ 1, %41 ], [ 1, %50 ] %.fca.0.insert = insertvalue { i64, i8 } poison, i64 %.sroa.020.0, 0 %.fca.1.insert = insertvalue { i64, i8 } %.fca.0.insert, i8 %.sroa.5.0, 1 ret { i64, i8 } %.fca.1.insert diff --git a/bench/llvm/optimized/Compilation.cpp.ll b/bench/llvm/optimized/Compilation.cpp.ll index 7b42dbdc6e6..621ec1f2ea6 100644 --- a/bench/llvm/optimized/Compilation.cpp.ll +++ b/bench/llvm/optimized/Compilation.cpp.ll @@ -2113,19 +2113,18 @@ _ZNSt12_Vector_baseISt8optionalIN4llvm9StringRefEESaIS3_EE13_M_deallocateEPS3_m. %145 = ptrtoint ptr %144 to i64 %146 = sub i64 %145, %134 %.sink.i.i25.i.idx.fr = freeze i64 %146 - %147 = sdiv exact i64 %.sink.i.i25.i.idx.fr, 24 - %.not.i28 = icmp ult i64 %147, 3 - br i1 %.not.i28, label %_ZSt7advanceIPKSt8optionalIN4llvm9StringRefEEmEvRT_T0_.exit.i, label %148 + %.not.i28 = icmp ult i64 %.sink.i.i25.i.idx.fr, 72 + br i1 %.not.i28, label %_ZSt7advanceIPKSt8optionalIN4llvm9StringRefEEmEvRT_T0_.exit.i, label %147 -148: ; preds = %142 +147: ; preds = %142 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %132, ptr noundef nonnull align 8 dereferenceable(72) @constinit, i64 72, i1 false) %.pre.i = load ptr, ptr %143, align 8 - %149 = getelementptr inbounds nuw i8, ptr %132, i64 72 - %.not.i16.i = icmp eq ptr %.pre.i, %149 - br i1 %.not.i16.i, label %_ZNSt6vectorISt8optionalIN4llvm9StringRefEESaIS3_EE13_M_assign_auxIPKS3_EEvT_S9_St20forward_iterator_tag.exit, label %150 + %148 = getelementptr inbounds nuw i8, ptr %132, i64 72 + %.not.i16.i = icmp eq ptr %.pre.i, %148 + br i1 %.not.i16.i, label %_ZNSt6vectorISt8optionalIN4llvm9StringRefEESaIS3_EE13_M_assign_auxIPKS3_EEvT_S9_St20forward_iterator_tag.exit, label %149 -150: ; preds = %148 - store ptr %149, ptr %143, align 8 +149: ; preds = %147 + store ptr %148, ptr %143, align 8 br label %_ZNSt6vectorISt8optionalIN4llvm9StringRefEESaIS3_EE13_M_assign_auxIPKS3_EEvT_S9_St20forward_iterator_tag.exit _ZSt7advanceIPKSt8optionalIN4llvm9StringRefEEmEvRT_T0_.exit.i: ; preds = %142 @@ -2135,28 +2134,23 @@ _ZSt7advanceIPKSt8optionalIN4llvm9StringRefEEmEvRT_T0_.exit.i: ; preds = %142 _ZSt4copyIPKSt8optionalIN4llvm9StringRefEEPS3_ET0_T_S8_S7_.exit18.i: ; preds = %_ZSt7advanceIPKSt8optionalIN4llvm9StringRefEEmEvRT_T0_.exit.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %132, ptr noundef nonnull align 8 dereferenceable(1) @constinit, i64 %.sink.i.i25.i.idx.fr, i1 false) %.pre27.i = load ptr, ptr %143, align 8 - %.not9.i.i.i.i.i = icmp eq i64 %.sink.i.i25.i.idx.fr, 72 - br i1 %.not9.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPKSt8optionalIN4llvm9StringRefEEPS3_S3_ET0_T_S8_S7_RSaIT1_E.exit.i, label %.lr.ph.i.i.i.i.i29.preheader + br label %.lr.ph.i.i.i.i.i29.preheader .lr.ph.i.i.i.i.i29.preheader: ; preds = %_ZSt7advanceIPKSt8optionalIN4llvm9StringRefEEmEvRT_T0_.exit.i, %_ZSt4copyIPKSt8optionalIN4llvm9StringRefEEPS3_ET0_T_S8_S7_.exit18.i - %151 = phi ptr [ %.pre27.i, %_ZSt4copyIPKSt8optionalIN4llvm9StringRefEEPS3_ET0_T_S8_S7_.exit18.i ], [ %144, %_ZSt7advanceIPKSt8optionalIN4llvm9StringRefEEmEvRT_T0_.exit.i ] + %150 = phi ptr [ %.pre27.i, %_ZSt4copyIPKSt8optionalIN4llvm9StringRefEEPS3_ET0_T_S8_S7_.exit18.i ], [ %144, %_ZSt7advanceIPKSt8optionalIN4llvm9StringRefEEmEvRT_T0_.exit.i ] %scevgep = getelementptr i8, ptr @constinit, i64 %.sink.i.i25.i.idx.fr - %152 = sub i64 48, %.sink.i.i25.i.idx.fr - %153 = urem i64 %152, 24 - %154 = sub nuw i64 %152, %153 - %155 = add i64 %154, 24 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %151, ptr align 8 %scevgep, i64 %155, i1 false) - %scevgep48 = getelementptr i8, ptr %151, i64 %155 - br label %_ZSt22__uninitialized_copy_aIPKSt8optionalIN4llvm9StringRefEEPS3_S3_ET0_T_S8_S7_RSaIT1_E.exit.i - -_ZSt22__uninitialized_copy_aIPKSt8optionalIN4llvm9StringRefEEPS3_S3_ET0_T_S8_S7_RSaIT1_E.exit.i: ; preds = %.lr.ph.i.i.i.i.i29.preheader, %_ZSt4copyIPKSt8optionalIN4llvm9StringRefEEPS3_ET0_T_S8_S7_.exit18.i - %.0.lcssa.i.i.i.i.i = phi ptr [ %.pre27.i, %_ZSt4copyIPKSt8optionalIN4llvm9StringRefEEPS3_ET0_T_S8_S7_.exit18.i ], [ %scevgep48, %.lr.ph.i.i.i.i.i29.preheader ] - store ptr %.0.lcssa.i.i.i.i.i, ptr %143, align 8 + %151 = sub nsw i64 48, %.sink.i.i25.i.idx.fr + %152 = urem i64 %151, 24 + %153 = sub nuw nsw i64 %151, %152 + %154 = add nsw i64 %153, 24 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %150, ptr align 8 %scevgep, i64 %154, i1 false) + %scevgep48 = getelementptr i8, ptr %150, i64 %154 + store ptr %scevgep48, ptr %143, align 8 br label %_ZNSt6vectorISt8optionalIN4llvm9StringRefEESaIS3_EE13_M_assign_auxIPKS3_EEvT_S9_St20forward_iterator_tag.exit -_ZNSt6vectorISt8optionalIN4llvm9StringRefEESaIS3_EE13_M_assign_auxIPKS3_EEvT_S9_St20forward_iterator_tag.exit: ; preds = %_ZNSt12_Vector_baseISt8optionalIN4llvm9StringRefEESaIS3_EE13_M_deallocateEPS3_m.exit.i, %148, %150, %_ZSt22__uninitialized_copy_aIPKSt8optionalIN4llvm9StringRefEEPS3_S3_ET0_T_S8_S7_RSaIT1_E.exit.i - %156 = getelementptr inbounds nuw i8, ptr %0, i64 522 - store i8 1, ptr %156, align 2 +_ZNSt6vectorISt8optionalIN4llvm9StringRefEESaIS3_EE13_M_assign_auxIPKS3_EEvT_S9_St20forward_iterator_tag.exit: ; preds = %_ZNSt12_Vector_baseISt8optionalIN4llvm9StringRefEESaIS3_EE13_M_deallocateEPS3_m.exit.i, %147, %149, %.lr.ph.i.i.i.i.i29.preheader + %155 = getelementptr inbounds nuw i8, ptr %0, i64 522 + store i8 1, ptr %155, align 2 ret void } diff --git a/bench/llvm/optimized/SmallPtrSet.cpp.ll b/bench/llvm/optimized/SmallPtrSet.cpp.ll index e67a93a9f4c..a1b7ff35d0e 100644 --- a/bench/llvm/optimized/SmallPtrSet.cpp.ll +++ b/bench/llvm/optimized/SmallPtrSet.cpp.ll @@ -780,7 +780,7 @@ _ZN4llvm19SmallPtrSetImplBase10MoveHelperEjOS0_.exit: ; preds = %14, %18, %21 ; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable define dso_local void @_ZN4llvm19SmallPtrSetImplBase4swapERS0_(ptr noundef nonnull align 8 dereferenceable(28) %0, ptr noundef nonnull align 8 dereferenceable(28) %1) local_unnamed_addr #6 align 2 { %3 = icmp eq ptr %0, %1 - br i1 %3, label %97, label %4 + br i1 %3, label %96, label %4 4: ; preds = %2 %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -817,7 +817,7 @@ define dso_local void @_ZN4llvm19SmallPtrSetImplBase4swapERS0_(ptr noundef nonnu %26 = load i32, ptr %24, align 8 store i32 %26, ptr %23, align 8 store i32 %25, ptr %24, align 8 - br label %97 + br label %96 27: ; preds = %13 %28 = getelementptr inbounds nuw i8, ptr %1, i64 20 @@ -853,7 +853,7 @@ _ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit: ; preds = %27, %30 store ptr %43, ptr %9, align 8 %44 = load ptr, ptr %0, align 8 store ptr %44, ptr %5, align 8 - br label %97 + br label %96 45: ; preds = %4 %46 = getelementptr inbounds nuw i8, ptr %0, i64 20 @@ -892,7 +892,7 @@ _ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit39: ; preds = %47, %49 store ptr %62, ptr %5, align 8 %63 = load ptr, ptr %1, align 8 store ptr %63, ptr %9, align 8 - br label %97 + br label %96 64: ; preds = %45 %65 = getelementptr inbounds nuw i8, ptr %1, i64 20 @@ -923,50 +923,53 @@ _ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit.loopexit: ; preds = %.lr.ph.i _ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit: ; preds = %_ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit.loopexit, %64 %75 = phi i32 [ %.pre, %_ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit.loopexit ], [ %67, %64 ] %76 = icmp ugt i32 %75, %68 - %.idx53 = shl nuw nsw i64 %69, 3 - br i1 %76, label %77, label %83 + br i1 %76, label %77, label %81 77: ; preds = %_ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit + %.idx53 = shl nuw nsw i64 %69, 3 %78 = load ptr, ptr %0, align 8 %79 = getelementptr inbounds nuw i8, ptr %78, i64 %.idx53 %narrow = sub nuw i32 %75, %68 %80 = zext i32 %narrow to i64 - %gepdiff54 = shl nuw nsw i64 %80, 3 - %81 = load ptr, ptr %1, align 8 - %82 = getelementptr inbounds nuw ptr, ptr %81, i64 %69 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %82, ptr align 8 %79, i64 %gepdiff54, i1 false) - br label %_ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit41 - -83: ; preds = %_ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit - %84 = load i32, ptr %65, align 4 - %85 = zext i32 %84 to i64 - %.idx50 = shl nuw nsw i64 %85, 3 - %.not.i.i.i.i.i42 = icmp samesign eq i64 %.idx50, %.idx53 - br i1 %.not.i.i.i.i.i42, label %_ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit41, label %86 - -86: ; preds = %83 - %87 = load ptr, ptr %1, align 8 - %88 = getelementptr inbounds nuw i8, ptr %87, i64 %.idx53 - %gepdiff = sub nsw i64 %.idx50, %.idx53 - %89 = load ptr, ptr %0, align 8 - %90 = getelementptr inbounds nuw ptr, ptr %89, i64 %69 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %90, ptr align 8 %88, i64 %gepdiff, i1 false) + br label %_ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit41.sink.split + +81: ; preds = %_ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit + %82 = load i32, ptr %65, align 4 + %.not.i.i.i.i.i42 = icmp eq i32 %82, %68 + br i1 %.not.i.i.i.i.i42, label %_ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit41, label %83 + +83: ; preds = %81 + %84 = zext i32 %82 to i64 + %.idx51 = shl nuw nsw i64 %69, 3 + %85 = load ptr, ptr %1, align 8 + %86 = getelementptr inbounds nuw i8, ptr %85, i64 %.idx51 + %87 = sub nsw i64 %84, %69 + br label %_ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit41.sink.split + +_ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit41.sink.split: ; preds = %77, %83 + %.sink57 = phi i64 [ %87, %83 ], [ %80, %77 ] + %.sink = phi ptr [ %0, %83 ], [ %1, %77 ] + %.sink55 = phi ptr [ %86, %83 ], [ %79, %77 ] + %gepdiff = shl nsw i64 %.sink57, 3 + %88 = load ptr, ptr %.sink, align 8 + %89 = getelementptr inbounds nuw ptr, ptr %88, i64 %69 + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %89, ptr align 8 %.sink55, i64 %gepdiff, i1 false) br label %_ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit41 -_ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit41: ; preds = %86, %83, %77 - %91 = load i32, ptr %46, align 4 - %92 = load i32, ptr %65, align 4 - store i32 %92, ptr %46, align 4 - store i32 %91, ptr %65, align 4 - %93 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %94 = getelementptr inbounds nuw i8, ptr %1, i64 24 +_ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit41: ; preds = %_ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit41.sink.split, %81 + %90 = load i32, ptr %46, align 4 + %91 = load i32, ptr %65, align 4 + store i32 %91, ptr %46, align 4 + store i32 %90, ptr %65, align 4 + %92 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %93 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %94 = load i32, ptr %92, align 8 %95 = load i32, ptr %93, align 8 - %96 = load i32, ptr %94, align 8 - store i32 %96, ptr %93, align 8 - store i32 %95, ptr %94, align 8 - br label %97 + store i32 %95, ptr %92, align 8 + store i32 %94, ptr %93, align 8 + br label %96 -97: ; preds = %2, %_ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit41, %_ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit39, %_ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit, %14 +96: ; preds = %2, %_ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit41, %_ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit39, %_ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit, %14 ret void } diff --git a/bench/luau/optimized/Lexer.cpp.ll b/bench/luau/optimized/Lexer.cpp.ll index 93d737cd7de..5a1b56ececb 100644 --- a/bench/luau/optimized/Lexer.cpp.ll +++ b/bench/luau/optimized/Lexer.cpp.ll @@ -4315,107 +4315,106 @@ define dso_local void @_ZN4Luau5Lexer9lookaheadEv(ptr dead_on_unwind noalias noc %17 = ptrtoint ptr %15 to i64 %18 = ptrtoint ptr %16 to i64 %19 = sub i64 %17, %18 - %20 = ashr exact i64 %19, 2 - %21 = icmp eq ptr %16, %15 - br i1 %21, label %25, label %22 + %20 = icmp eq ptr %16, %15 + br i1 %20, label %24, label %21 -22: ; preds = %2 - %23 = getelementptr inbounds i8, ptr %15, i64 -4 - %24 = load i32, ptr %23, align 4 - br label %25 +21: ; preds = %2 + %22 = getelementptr inbounds i8, ptr %15, i64 -4 + %23 = load i32, ptr %22, align 4 + br label %24 -25: ; preds = %2, %22 - %26 = phi i32 [ %24, %22 ], [ 1, %2 ] - %27 = getelementptr inbounds nuw i8, ptr %1, i64 88 - %28 = load i8, ptr %27, align 8 - %29 = trunc i8 %28 to i1 - %30 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZN4Luau5Lexer4nextEbb(ptr noundef nonnull align 8 dereferenceable(120) %1, i1 noundef zeroext %29, i1 noundef zeroext true) - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %30, i64 32, i1 false) +24: ; preds = %2, %21 + %25 = phi i32 [ %23, %21 ], [ 1, %2 ] + %26 = getelementptr inbounds nuw i8, ptr %1, i64 88 + %27 = load i8, ptr %26, align 8 + %28 = trunc i8 %27 to i1 + %29 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZN4Luau5Lexer4nextEbb(ptr noundef nonnull align 8 dereferenceable(120) %1, i1 noundef zeroext %28, i1 noundef zeroext true) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %29, i64 32, i1 false) store i32 %6, ptr %5, align 8 store i32 %8, ptr %7, align 4 store i32 %10, ptr %9, align 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 32, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %4, i64 16, i1 false) - %31 = load i8, ptr @_ZN5FFlag36LuauLexerLookaheadRemembersBraceTypeE, align 8 - %32 = trunc i8 %31 to i1 - br i1 %32, label %33, label %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE9push_backERKS2_.exit + %30 = load i8, ptr @_ZN5FFlag36LuauLexerLookaheadRemembersBraceTypeE, align 8 + %31 = trunc i8 %30 to i1 + br i1 %31, label %32, label %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE9push_backERKS2_.exit -33: ; preds = %25 - %34 = load ptr, ptr %14, align 8 - %35 = load ptr, ptr %13, align 8 +32: ; preds = %24 + %33 = load ptr, ptr %14, align 8 + %34 = load ptr, ptr %13, align 8 + %35 = ptrtoint ptr %33 to i64 %36 = ptrtoint ptr %34 to i64 - %37 = ptrtoint ptr %35 to i64 - %38 = sub i64 %36, %37 - %39 = ashr exact i64 %38, 2 - %40 = icmp ult i64 %39, %20 - br i1 %40, label %41, label %62 - -41: ; preds = %33 - %42 = getelementptr inbounds nuw i8, ptr %1, i64 112 - %43 = load ptr, ptr %42, align 8 - %.not.i = icmp eq ptr %34, %43 - br i1 %.not.i, label %47, label %44 - -44: ; preds = %41 - store i32 %26, ptr %34, align 4 - %45 = load ptr, ptr %14, align 8 - %46 = getelementptr inbounds nuw i8, ptr %45, i64 4 - store ptr %46, ptr %14, align 8 + %37 = sub i64 %35, %36 + %38 = ashr exact i64 %37, 2 + %39 = icmp ult i64 %37, %19 + br i1 %39, label %40, label %61 + +40: ; preds = %32 + %41 = getelementptr inbounds nuw i8, ptr %1, i64 112 + %42 = load ptr, ptr %41, align 8 + %.not.i = icmp eq ptr %33, %42 + br i1 %.not.i, label %46, label %43 + +43: ; preds = %40 + store i32 %25, ptr %33, align 4 + %44 = load ptr, ptr %14, align 8 + %45 = getelementptr inbounds nuw i8, ptr %44, i64 4 + store ptr %45, ptr %14, align 8 br label %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE9push_backERKS2_.exit -47: ; preds = %41 - %48 = icmp eq i64 %38, 9223372036854775804 - br i1 %48, label %49, label %_ZNKSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE12_M_check_lenEmPKc.exit.i.i +46: ; preds = %40 + %47 = icmp eq i64 %37, 9223372036854775804 + br i1 %47, label %48, label %_ZNKSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE12_M_check_lenEmPKc.exit.i.i -49: ; preds = %47 +48: ; preds = %46 tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.120) #26 unreachable -_ZNKSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE12_M_check_lenEmPKc.exit.i.i: ; preds = %47 - %.sroa.speculated.i.i.i = tail call i64 @llvm.umax.i64(i64 %39, i64 1) - %50 = add nsw i64 %.sroa.speculated.i.i.i, %39 - %51 = icmp ult i64 %50, %39 - %52 = tail call i64 @llvm.umin.i64(i64 %50, i64 2305843009213693951) - %53 = select i1 %51, i64 2305843009213693951, i64 %52 - %.not.i.i.i = icmp ne i64 %53, 0 +_ZNKSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE12_M_check_lenEmPKc.exit.i.i: ; preds = %46 + %.sroa.speculated.i.i.i = tail call i64 @llvm.umax.i64(i64 %38, i64 1) + %49 = add nsw i64 %.sroa.speculated.i.i.i, %38 + %50 = icmp ult i64 %49, %38 + %51 = tail call i64 @llvm.umin.i64(i64 %49, i64 2305843009213693951) + %52 = select i1 %50, i64 2305843009213693951, i64 %51 + %.not.i.i.i = icmp ne i64 %52, 0 tail call void @llvm.assume(i1 %.not.i.i.i) - %54 = shl nuw nsw i64 %53, 2 - %55 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %54) #28 - %56 = getelementptr inbounds i8, ptr %55, i64 %38 - store i32 %26, ptr %56, align 4 - %57 = icmp sgt i64 %38, 0 - br i1 %57, label %58, label %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i - -58: ; preds = %_ZNKSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE12_M_check_lenEmPKc.exit.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %55, ptr align 4 %35, i64 %38, i1 false) + %53 = shl nuw nsw i64 %52, 2 + %54 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %53) #28 + %55 = getelementptr inbounds i8, ptr %54, i64 %37 + store i32 %25, ptr %55, align 4 + %56 = icmp sgt i64 %37, 0 + br i1 %56, label %57, label %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i + +57: ; preds = %_ZNKSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE12_M_check_lenEmPKc.exit.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %54, ptr align 4 %34, i64 %37, i1 false) br label %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i -_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i: ; preds = %58, %_ZNKSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE12_M_check_lenEmPKc.exit.i.i - %59 = getelementptr inbounds nuw i8, ptr %56, i64 4 - %.not.i17.i.i = icmp eq ptr %35, null - br i1 %.not.i17.i.i, label %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, label %60 +_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i: ; preds = %57, %_ZNKSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE12_M_check_lenEmPKc.exit.i.i + %58 = getelementptr inbounds nuw i8, ptr %55, i64 4 + %.not.i17.i.i = icmp eq ptr %34, null + br i1 %.not.i17.i.i, label %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, label %59 -60: ; preds = %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i - tail call void @_ZdlPvm(ptr noundef nonnull %35, i64 noundef %38) #29 +59: ; preds = %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i + tail call void @_ZdlPvm(ptr noundef nonnull %34, i64 noundef %37) #29 br label %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i -_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i: ; preds = %60, %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i - store ptr %55, ptr %13, align 8 - store ptr %59, ptr %14, align 8 - %61 = getelementptr inbounds nuw i32, ptr %55, i64 %53 - store ptr %61, ptr %42, align 8 +_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i: ; preds = %59, %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i + store ptr %54, ptr %13, align 8 + store ptr %58, ptr %14, align 8 + %60 = getelementptr inbounds nuw i32, ptr %54, i64 %52 + store ptr %60, ptr %41, align 8 br label %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE9push_backERKS2_.exit -62: ; preds = %33 - %63 = icmp ugt i64 %39, %20 - br i1 %63, label %64, label %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE9push_backERKS2_.exit +61: ; preds = %32 + %62 = icmp ugt i64 %37, %19 + br i1 %62, label %63, label %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE9push_backERKS2_.exit -64: ; preds = %62 - %65 = getelementptr inbounds i8, ptr %34, i64 -4 - store ptr %65, ptr %14, align 8 +63: ; preds = %61 + %64 = getelementptr inbounds i8, ptr %33, i64 -4 + store ptr %64, ptr %14, align 8 br label %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE9push_backERKS2_.exit -_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, %44, %64, %62, %25 +_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt6vectorIN4Luau5Lexer9BraceTypeESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, %43, %63, %61, %24 ret void } diff --git a/bench/meilisearch-rs/optimized/1rhts6w5jqfcprz6.ll b/bench/meilisearch-rs/optimized/1rhts6w5jqfcprz6.ll index 95be65a7049..7a8242b9b6e 100644 --- a/bench/meilisearch-rs/optimized/1rhts6w5jqfcprz6.ll +++ b/bench/meilisearch-rs/optimized/1rhts6w5jqfcprz6.ll @@ -440,7 +440,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hcb55c093dac243b6E.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.sroa.0.0.sroa.speculated.i23, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val22, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !80 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h212a2d5c3422bc50E.exit.i" @@ -723,7 +723,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha8598f8a24b16fc4E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.sroa.0.0.sroa.speculated.i23, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val22, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !100 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h212a2d5c3422bc50E.exit.i" @@ -780,7 +780,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h30dcd78064fb712fE.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.sroa.0.0.sroa.speculated.i23, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val22, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !104 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h212a2d5c3422bc50E.exit.i" @@ -894,7 +894,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0c36f2032fff4366E.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.sroa.0.0.sroa.speculated.i23, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val22, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !112 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h212a2d5c3422bc50E.exit.i" @@ -1650,7 +1650,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hcb55c093dac243b6E.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.sroa.0.0.sroa.speculated.i23.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val22.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !126 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h212a2d5c3422bc50E.exit.i.i" @@ -1764,7 +1764,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0c36f2032fff4366E.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.sroa.0.0.sroa.speculated.i23.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val22.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !140 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h212a2d5c3422bc50E.exit.i.i" @@ -1878,7 +1878,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h30dcd78064fb712fE.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.sroa.0.0.sroa.speculated.i23.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val22.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !154 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h212a2d5c3422bc50E.exit.i.i" @@ -1992,7 +1992,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha8598f8a24b16fc4E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.sroa.0.0.sroa.speculated.i23.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val22.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !168 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h212a2d5c3422bc50E.exit.i.i" diff --git a/bench/minetest/optimized/mapgen.cpp.ll b/bench/minetest/optimized/mapgen.cpp.ll index 8197afcaffd..4fd55a0dfdf 100644 --- a/bench/minetest/optimized/mapgen.cpp.ll +++ b/bench/minetest/optimized/mapgen.cpp.ll @@ -3408,7 +3408,7 @@ for.body.lr.ph: ; preds = %invoke.cont9 br i1 %cmp18.not84, label %for.cond.cleanup, label %for.body.lr.ph.split for.body.lr.ph.split: ; preds = %for.body.lr.ph - %cmp33.not81 = icmp sgt i32 %conv16.i, %conv32 + %cmp33.not81 = icmp sgt i32 %sext79, %sext80 %Y.i = getelementptr inbounds nuw i8, ptr %6, i64 22 %m_cache_extent.i68 = getelementptr inbounds nuw i8, ptr %6, i64 20 %Z.i = getelementptr inbounds nuw i8, ptr %6, i64 12 @@ -3858,7 +3858,7 @@ for.body.lr.ph: ; preds = %entry %conv9 = ashr exact i32 %sext, 16 %sext96 = shl i32 %nmax.sroa.0.0.extract.trunc, 16 %conv13 = ashr exact i32 %sext96, 16 - %cmp14.not104 = icmp sgt i32 %conv9, %conv13 + %cmp14.not104 = icmp sgt i32 %sext, %sext96 %conv7.i = sext i16 %sub8.i.i.i to i32 %conv47 = ashr i32 %2, 16 %ndef = getelementptr inbounds nuw i8, ptr %this, i64 48 @@ -3885,6 +3885,7 @@ for.body.preheader: ; preds = %for.body.lr.ph.spli %Y9.i = getelementptr inbounds nuw i8, ptr %1, i64 10 %8 = load i16, ptr %Y9.i, align 2, !tbaa !88 %conv10.i = sext i16 %8 to i32 + %smax = tail call i32 @llvm.smax.i32(i32 %conv9, i32 %conv13) %sub11.i = sub nsw i32 %conv7.i, %conv10.i br i1 %propagate_shadow, label %for.body.preheader.split.us, label %for.body.preheader.split @@ -3948,7 +3949,7 @@ if.end57.us22.us.us: ; preds = %for.body50.us12.us. cleanup60.us26.us.us: ; preds = %for.body50.us12.us.us, %if.end57.us22.us.us, %if.else.us10.us.us %inc.us27.us.us = add nsw i32 %x.0105.us2.us.us, 1 - %exitcond.not.us28.us.us = icmp eq i32 %x.0105.us2.us.us, %conv13 + %exitcond.not.us28.us.us = icmp eq i32 %x.0105.us2.us.us, %smax br i1 %exitcond.not.us28.us.us, label %for.cond10.for.cond.cleanup15_crit_edge.split.split.us29.split.us.us, label %for.body16.us1.us.us, !llvm.loop !183 for.cond10.for.cond.cleanup15_crit_edge.split.split.us29.split.us.us: ; preds = %cleanup60.us26.us.us @@ -4010,7 +4011,7 @@ if.end57.us22: ; preds = %for.body50.us12 cleanup60.us26: ; preds = %for.body50.us12, %if.end57.us22, %for.body16.us1, %if.else.us10 %inc.us27 = add nsw i32 %x.0105.us2, 1 - %exitcond.not.us28 = icmp eq i32 %x.0105.us2, %conv13 + %exitcond.not.us28 = icmp eq i32 %x.0105.us2, %smax br i1 %exitcond.not.us28, label %for.cond10.for.cond.cleanup15_crit_edge.split.split.us29.split, label %for.body16.us1, !llvm.loop !183 for.cond10.for.cond.cleanup15_crit_edge.split.split.us29.split: ; preds = %cleanup60.us26 @@ -4064,7 +4065,7 @@ if.end57.us.us.us: ; preds = %for.body50.us.us.us cleanup60.loopexit.us.us.us: ; preds = %if.end57.us.us.us, %for.body50.us.us.us %inc.us.us.us = add nsw i32 %x.0105.us.us.us, 1 - %exitcond.not.us.us.us = icmp eq i32 %x.0105.us.us.us, %conv13 + %exitcond.not.us.us.us = icmp eq i32 %x.0105.us.us.us, %smax br i1 %exitcond.not.us.us.us, label %for.cond10.for.cond.cleanup15_crit_edge.split.split.us.split.us.us, label %for.body16.us.us.us, !llvm.loop !183 for.cond10.for.cond.cleanup15_crit_edge.split.split.us.split.us.us: ; preds = %cleanup60.loopexit.us.us.us @@ -4122,7 +4123,7 @@ if.end57.us: ; preds = %for.body50.us cleanup60.us: ; preds = %for.body50.us, %if.end57.us, %for.body16.us %inc.us = add nsw i32 %x.0105.us, 1 - %exitcond.not.us = icmp eq i32 %x.0105.us, %conv13 + %exitcond.not.us = icmp eq i32 %x.0105.us, %smax br i1 %exitcond.not.us, label %for.cond10.for.cond.cleanup15_crit_edge.split.split.us.split, label %for.body16.us, !llvm.loop !183 for.cond10.for.cond.cleanup15_crit_edge.split.split.us.split: ; preds = %cleanup60.us diff --git a/bench/mini-lsm-rs/optimized/3m8k5ep4f562pm44.ll b/bench/mini-lsm-rs/optimized/3m8k5ep4f562pm44.ll index 3b1676a8e0a..36064e4e5ac 100644 --- a/bench/mini-lsm-rs/optimized/3m8k5ep4f562pm44.ll +++ b/bench/mini-lsm-rs/optimized/3m8k5ep4f562pm44.ll @@ -5832,7 +5832,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hbc6ea8b554016d7fE.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #36, !noalias !778 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit @@ -5891,7 +5891,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h11217a50582065bcE.exit.thread" %16 = shl nuw i64 %8, 6 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #36, !noalias !782 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit @@ -5950,7 +5950,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2e390921b17be065E.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #36, !noalias !786 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit @@ -6133,7 +6133,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hfff7cc6eb992ed79E.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #36, !noalias !798 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit @@ -6311,7 +6311,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h4543917852e97903E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #36, !noalias !813 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit.i @@ -6429,7 +6429,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h35e2aad9b842b825E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #36, !noalias !827 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit.i @@ -6488,7 +6488,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2de12c6d07f3990dE.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #36, !noalias !834 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit.i @@ -6606,7 +6606,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h125dbcffae9ee106E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #36, !noalias !848 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit.i @@ -6665,7 +6665,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h49990f1f5a580926E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #36, !noalias !855 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit.i @@ -6724,7 +6724,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha451a72a32821987E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #36, !noalias !862 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit.i @@ -6783,7 +6783,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2e390921b17be065E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #36, !noalias !869 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit.i @@ -6842,7 +6842,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf6ebe267a4f05abcE.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #36, !noalias !876 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit.i @@ -6901,7 +6901,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0eec58e561c3aad9E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #36, !noalias !883 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit.i @@ -6960,7 +6960,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hbc6ea8b554016d7fE.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #36, !noalias !890 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit.i @@ -7078,7 +7078,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha7dda351c16c4a46E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #36, !noalias !904 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit.i @@ -7263,7 +7263,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h4dfd3fd5a1e2763cE.exit.thread.i" %15 = shl nuw i64 %7, 2 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 4, i64 noundef %10) #36, !noalias !925 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit.i @@ -7381,7 +7381,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hb6fce2e45a6c44e5E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #36, !noalias !939 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit.i @@ -7435,7 +7435,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h00b %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val23 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 3 @@ -7446,30 +7446,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h00b "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #36 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #36 - %.not37 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not37, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #36 + %.not37 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not37, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 + br label %21 -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -7497,7 +7495,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h2c5 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val23 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 3 @@ -7508,30 +7506,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h2c5 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #36 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #36 - %.not37 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not37, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #36 + %.not37 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not37, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 + br label %21 -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -7559,7 +7555,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hfce %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val23 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 3 @@ -7570,30 +7566,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hfce "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #36 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #36 - %.not37 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not37, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #36 + %.not37 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not37, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 + br label %21 -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: cold nonlazybind uwtable @@ -7820,7 +7814,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hbc6ea8b554016d7fE.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #36, !noalias !967 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit.i @@ -7879,7 +7873,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hfff7cc6eb992ed79E.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #36, !noalias !974 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit.i @@ -7997,7 +7991,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2e390921b17be065E.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #36, !noalias !988 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit.i @@ -8056,7 +8050,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h11217a50582065bcE.exit.thread.i" %16 = shl nuw i64 %8, 6 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #36, !noalias !995 br label %_ZN5alloc7raw_vec11finish_grow17h73e03501deafe6caE.exit.i diff --git a/bench/mini-lsm-rs/optimized/irius0l4drqwzkt.ll b/bench/mini-lsm-rs/optimized/irius0l4drqwzkt.ll index 2a8673c1524..526b5703b2d 100644 --- a/bench/mini-lsm-rs/optimized/irius0l4drqwzkt.ll +++ b/bench/mini-lsm-rs/optimized/irius0l4drqwzkt.ll @@ -1349,7 +1349,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf853e0bb385b5530E.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #24, !noalias !9 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit @@ -1408,7 +1408,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hdee046f5fe1685b0E.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #24, !noalias !13 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit @@ -1591,7 +1591,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h527bbd5a12f37297E.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #24, !noalias !25 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit @@ -1710,7 +1710,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h5e39d52af0fb3003E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #24, !noalias !36 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit.i @@ -1769,7 +1769,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hc0678401f667d27eE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #24, !noalias !43 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit.i @@ -1828,7 +1828,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h9cd96f5f64ade04eE.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #24, !noalias !50 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit.i @@ -1887,7 +1887,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hed04aa059865a823E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #24, !noalias !57 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit.i @@ -1946,7 +1946,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h819826ec8757d9a4E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #24, !noalias !64 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit.i @@ -2131,7 +2131,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h55f3cef487f53ccbE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #24, !noalias !85 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit.i @@ -2190,7 +2190,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h527bbd5a12f37297E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #24, !noalias !92 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit.i @@ -2308,7 +2308,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hdee046f5fe1685b0E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #24, !noalias !106 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit.i @@ -2367,7 +2367,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h85467ea01e227ea3E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #24, !noalias !113 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit.i @@ -2485,7 +2485,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hcf5f4ff74ca5c12cE.exit.thread.i" %15 = shl nuw i64 %7, 2 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 4, i64 noundef %10) #24, !noalias !127 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit.i @@ -2603,7 +2603,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h60aadd2100c4c42aE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #24, !noalias !141 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit.i @@ -2662,7 +2662,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h737d83c4fda60fa0E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #24, !noalias !148 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit.i @@ -2721,7 +2721,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h62d075c1f9ec2693E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #24, !noalias !155 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit.i @@ -2834,7 +2834,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h34d %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val23 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 3 @@ -2845,30 +2845,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h34d "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #24 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #24 - %.not37 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not37, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #24 + %.not37 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not37, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 + br label %21 -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -2896,7 +2894,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h7b4 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val23 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 3 @@ -2907,30 +2905,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h7b4 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #24 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #24 - %.not37 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not37, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #24 + %.not37 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not37, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 + br label %21 -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -2958,7 +2954,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h856 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val23 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 3 @@ -2969,30 +2965,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h856 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #24 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #24 - %.not37 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not37, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #24 + %.not37 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not37, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 + br label %21 -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: cold nonlazybind uwtable @@ -3093,7 +3087,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hdee046f5fe1685b0E.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #24, !noalias !176 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit.i @@ -3337,7 +3331,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf853e0bb385b5530E.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #24, !noalias !204 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit.i @@ -3396,7 +3390,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h527bbd5a12f37297E.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #24, !noalias !211 br label %_ZN5alloc7raw_vec11finish_grow17h80d3555fc29f8281E.exit.i diff --git a/bench/mold/optimized/output-chunks.cc.M68K.cc.ll b/bench/mold/optimized/output-chunks.cc.M68K.cc.ll index dccde59f991..7a3fca53141 100644 --- a/bench/mold/optimized/output-chunks.cc.M68K.cc.ll +++ b/bench/mold/optimized/output-chunks.cc.M68K.cc.ll @@ -10603,21 +10603,21 @@ for.end: ; preds = %for.end.loopexit, % %sub.ptr.lhs.cast.i22 = ptrtoint ptr %retval.sroa.0.0.i.i to i64 %sub.ptr.rhs.cast.i23 = ptrtoint ptr %22 to i64 %sub.ptr.sub.i24 = sub i64 %sub.ptr.lhs.cast.i22, %sub.ptr.rhs.cast.i23 - %sub.ptr.div.i25 = ashr exact i64 %sub.ptr.sub.i24, 3 %23 = load ptr, ptr %_M_finish.i.i, align 8 %sub.ptr.lhs.cast.i27 = ptrtoint ptr %23 to i64 %sub.ptr.sub.i29 = sub i64 %sub.ptr.lhs.cast.i27, %sub.ptr.rhs.cast.i23 - %sub.ptr.div.i30 = ashr exact i64 %sub.ptr.sub.i29, 3 store ptr %this, ptr %ref.tmp36, align 8 %24 = getelementptr inbounds nuw i8, ptr %ref.tmp36, i64 8 store ptr %ctx, ptr %24, align 8 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp.i) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %range.i.i) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %body.i.i) - %cmp1.i.i = icmp slt i64 %sub.ptr.div.i25, %sub.ptr.div.i30 + %cmp1.i.i = icmp slt i64 %sub.ptr.sub.i24, %sub.ptr.sub.i29 br i1 %cmp1.i.i, label %if.then2.i.i, label %_ZN3tbb6detail2d112parallel_forIlZN4mold3elf13DynsymSectionINS4_4M68KEE8finalizeERNS4_7ContextIS6_EEEUllE_EEvT_SC_RKT0_.exit if.then2.i.i: ; preds = %for.end + %sub.ptr.div.i30 = ashr exact i64 %sub.ptr.sub.i29, 3 + %sub.ptr.div.i25 = ashr exact i64 %sub.ptr.sub.i24, 3 %add.i.i = sub nsw i64 %sub.ptr.div.i30, %sub.ptr.div.i25 store i64 %add.i.i, ptr %range.i.i, align 8 %my_begin.i.i.i = getelementptr inbounds nuw i8, ptr %range.i.i, i64 8 @@ -11797,7 +11797,7 @@ _ZN4mold3elf14GnuHashSectionINS0_4M68KEE20get_exported_symbolsERNS0_7ContextIS2_ %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.pre-phi.i, %sub.ptr.rhs.cast.i.i.i.i %sub.ptr.div.i.i = ashr exact i64 %sub.ptr.sub.i.i, 3 %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %sub.ptr.div.i.i - %tobool.not = icmp eq i64 %sub.ptr.div.i.i.i.i, %sub.ptr.div.i.i + %tobool.not = icmp eq i64 %sub.ptr.lhs.cast.i.pre-phi.i, %sub.ptr.lhs.cast.i.i.i.i.i br i1 %tobool.not, label %_ZN4mold3elf14GnuHashSectionINS0_4M68KEE20get_exported_symbolsERNS0_7ContextIS2_EE.exit.if.end9_crit_edge, label %if.then6 _ZN4mold3elf14GnuHashSectionINS0_4M68KEE20get_exported_symbolsERNS0_7ContextIS2_EE.exit.if.end9_crit_edge: ; preds = %_ZN4mold3elf14GnuHashSectionINS0_4M68KEE20get_exported_symbolsERNS0_7ContextIS2_EE.exit @@ -11911,7 +11911,7 @@ if.then.i.i: ; preds = %_ZN4mold3elf14GnuHa unreachable _ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %_ZN4mold3elf14GnuHashSectionINS0_4M68KEE20get_exported_symbolsERNS0_7ContextIS2_EE.exit - %cmp.not.i.i.i.i = icmp eq i64 %sub.ptr.div.i.i.i.i, %sub.ptr.div.i.i + %cmp.not.i.i.i.i = icmp eq i64 %sub.ptr.lhs.cast.i.pre-phi.i, %sub.ptr.lhs.cast.i.i.i.i.i br i1 %cmp.not.i.i.i.i, label %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i @@ -11949,6 +11949,7 @@ _ZNSt6vectorIjSaIjEEC2EmRKS0_.exit: ; preds = %_ZNSt6vectorIjSaIjE for.body.lr.ph: ; preds = %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit %symbol_aux.i = getelementptr inbounds nuw i8, ptr %ctx, i64 3232 + %umax = tail call i64 @llvm.umax.i64(i64 %sub.i.i, i64 1) br label %for.body for.body: ; preds = %for.body.lr.ph, %for.body @@ -11981,13 +11982,14 @@ for.body: ; preds = %for.body.lr.ph, %fo %26 = or i32 %25, %x.0.copyload.i.i store i32 %26, ptr %arrayidx, align 1 %inc = add nuw nsw i64 %i.068, 1 - %exitcond.not = icmp eq i64 %inc, %sub.i.i + %exitcond.not = icmp eq i64 %inc, %umax br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !113 for.end: ; preds = %for.body %27 = load i32, ptr %num_bloom, align 4 %idx.ext37 = zext i32 %27 to i64 %add.ptr38 = getelementptr inbounds nuw %"class.mold::BigEndian", ptr %add.ptr16, i64 %idx.ext37 + %umax73 = tail call i64 @llvm.umax.i64(i64 %sub.i.i, i64 1) br label %for.body43 for.body43: ; preds = %for.end, %for.inc52 @@ -12009,8 +12011,8 @@ if.then: ; preds = %for.body43 for.inc52: ; preds = %for.body43, %if.then %inc53 = add nuw nsw i64 %i39.070, 1 - %exitcond73.not = icmp eq i64 %inc53, %sub.i.i - br i1 %exitcond73.not, label %for.end54, label %for.body43, !llvm.loop !114 + %exitcond74.not = icmp eq i64 %inc53, %umax73 + br i1 %exitcond74.not, label %for.end54, label %for.body43, !llvm.loop !114 for.end54: ; preds = %for.inc52 %30 = load i32, ptr %num_buckets, align 8 @@ -12019,6 +12021,7 @@ for.end54: ; preds = %for.inc52 %invariant.gep = getelementptr inbounds nuw i8, ptr %indices.sroa.0.0, i64 4 %symbol_aux.i49 = getelementptr inbounds nuw i8, ptr %ctx, i64 3232 %sub67 = add nsw i64 %sub.i.i, -1 + %umax75 = tail call i64 @llvm.umax.i64(i64 %sub.i.i, i64 1) br label %for.body62 for.body62: ; preds = %for.end54, %for.inc79 @@ -12056,8 +12059,8 @@ for.inc79: ; preds = %if.then73, %if.else %37 = tail call noundef i32 @llvm.bswap.i32(i32 %or.sink) store i32 %37, ptr %arrayidx74, align 1 %inc80 = add nuw nsw i64 %i58.072, 1 - %exitcond74.not = icmp eq i64 %inc80, %sub.i.i - br i1 %exitcond74.not, label %for.end81, label %for.body62, !llvm.loop !115 + %exitcond76.not = icmp eq i64 %inc80, %umax75 + br i1 %exitcond76.not, label %for.end81, label %for.body62, !llvm.loop !115 for.end81: ; preds = %for.inc79, %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit %tobool.not.i.i.i = icmp eq ptr %indices.sroa.0.0, null @@ -17514,24 +17517,24 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit15: ; preds = %_ZN %sub.ptr.lhs.cast.i = ptrtoint ptr %16 to i64 %sub.ptr.rhs.cast.i = ptrtoint ptr %17 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 %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %this, i64 192 %18 = load ptr, ptr %_M_finish.i.i, align 8 %19 = load ptr, ptr %offsets, align 8 %sub.ptr.lhs.cast.i.i = ptrtoint ptr %18 to i64 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %19 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i - %sub.ptr.div.i.i = ashr exact i64 %sub.ptr.sub.i.i, 3 - %cmp.i = icmp ugt i64 %sub.ptr.div.i, %sub.ptr.div.i.i + %cmp.i = icmp ugt i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i br i1 %cmp.i, label %if.then.i, label %if.else.i if.then.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit15 + %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 + %sub.ptr.div.i.i = ashr exact i64 %sub.ptr.sub.i.i, 3 %sub.i = sub nuw nsw i64 %sub.ptr.div.i, %sub.ptr.div.i.i call void @_ZNSt6vectorIlSaIlEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %offsets, i64 noundef %sub.i) br label %_ZNSt6vectorIlSaIlEE6resizeEm.exit if.else.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit15 - %cmp4.i = icmp ult i64 %sub.ptr.div.i, %sub.ptr.div.i.i + %cmp4.i = icmp ult i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i br i1 %cmp4.i, label %if.then5.i, label %_ZNSt6vectorIlSaIlEE6resizeEm.exit if.then5.i: ; preds = %if.else.i @@ -25229,7 +25232,7 @@ if.then9: ; preds = %if.then %sub.ptr.rhs.cast.i = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 - %cmp15 = icmp ugt i64 %sub.ptr.div.i, %sub.ptr.div.i.i.i + %cmp15 = icmp ugt i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i.i br i1 %cmp15, label %_ZSt22__uninitialized_move_aIPmS0_SaImEET0_T_S3_S2_RT1_.exit, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEEmEvRT_T0_.exit _ZSt22__uninitialized_move_aIPmS0_SaImEET0_T_S3_S2_RT1_.exit: ; preds = %if.then9 diff --git a/bench/ockam-rs/optimized/2aqbl4yvtvkb33bb.ll b/bench/ockam-rs/optimized/2aqbl4yvtvkb33bb.ll index e2bda2cebb4..5560562aa44 100644 --- a/bench/ockam-rs/optimized/2aqbl4yvtvkb33bb.ll +++ b/bench/ockam-rs/optimized/2aqbl4yvtvkb33bb.ll @@ -1861,7 +1861,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h915 11: ; preds = %2 %12 = icmp eq i64 %5, 0 - br i1 %12, label %21, label %13 + br i1 %12, label %20, label %13 13: ; preds = %11 %14 = shl nuw i64 %5, 3 @@ -1875,27 +1875,25 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h915 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #19 - %.not28 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not28, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not28, label %21, label %.sink.split + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #19 + %.not28 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not28, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not28, label %20, label %.sink.split .sink.split: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.exit" - %.sink29 = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ] + %.sink29 = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ] %.sink = phi i64 [ 0, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.exit" ], [ %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ] store ptr %.sink29, ptr %0, align 8 store i64 %.sink, ptr %4, align 8 - br label %21 + br label %20 -21: ; preds = %.sink.split, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit", %11 +20: ; preds = %.sink.split, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit", %11 %.sroa.4.0 = phi i64 [ undef, %11 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ], [ undef, %.sink.split ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %11 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ], [ -9223372036854775807, %.sink.split ] - %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 - ret { i64, i64 } %23 + %.sroa.0.0 = phi i64 [ -9223372036854775807, %11 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ], [ -9223372036854775807, %.sink.split ] + %21 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %22 = insertvalue { i64, i64 } %21, i64 %.sroa.4.0, 1 + ret { i64, i64 } %22 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/ockam-rs/optimized/8g2r22yshp3qi00.ll b/bench/ockam-rs/optimized/8g2r22yshp3qi00.ll index 15b994a92e4..c38bd592ae3 100644 --- a/bench/ockam-rs/optimized/8g2r22yshp3qi00.ll +++ b/bench/ockam-rs/optimized/8g2r22yshp3qi00.ll @@ -79228,7 +79228,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h149 11: ; preds = %2 %12 = icmp eq i64 %5, 0 - br i1 %12, label %21, label %13 + br i1 %12, label %20, label %13 13: ; preds = %11 %14 = shl nuw i64 %5, 3 @@ -79242,27 +79242,25 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h149 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #61 - %.not28 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not28, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not28, label %21, label %.sink.split + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #61 + %.not28 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not28, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not28, label %20, label %.sink.split .sink.split: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" - %.sink29 = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ] + %.sink29 = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ] %.sink = phi i64 [ 0, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" ], [ %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ] store ptr %.sink29, ptr %0, align 8 store i64 %.sink, ptr %4, align 8 - br label %21 + br label %20 -21: ; preds = %.sink.split, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit", %11 +20: ; preds = %.sink.split, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit", %11 %.sroa.4.0 = phi i64 [ undef, %11 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ], [ undef, %.sink.split ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %11 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ], [ -9223372036854775807, %.sink.split ] - %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 - ret { i64, i64 } %23 + %.sroa.0.0 = phi i64 [ -9223372036854775807, %11 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ], [ -9223372036854775807, %.sink.split ] + %21 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %22 = insertvalue { i64, i64 } %21, i64 %.sroa.4.0, 1 + ret { i64, i64 } %22 } ; Function Attrs: nonlazybind uwtable @@ -79348,7 +79346,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h417 11: ; preds = %2 %12 = icmp eq i64 %5, 0 - br i1 %12, label %21, label %13 + br i1 %12, label %20, label %13 13: ; preds = %11 %14 = shl nuw i64 %5, 2 @@ -79362,27 +79360,25 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h417 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit": ; preds = %13 %17 = shl nuw i64 %1, 2 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 2, i64 noundef %17) #61 - %.not28 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not28, ptr inttoptr (i64 2 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not28, label %21, label %.sink.split + %18 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 2, i64 noundef %17) #61 + %.not28 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not28, ptr inttoptr (i64 2 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not28, label %20, label %.sink.split .sink.split: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" - %.sink29 = phi ptr [ inttoptr (i64 2 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ] + %.sink29 = phi ptr [ inttoptr (i64 2 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ] %.sink = phi i64 [ 0, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" ], [ %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ] store ptr %.sink29, ptr %0, align 8 store i64 %.sink, ptr %4, align 8 - br label %21 + br label %20 -21: ; preds = %.sink.split, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit", %11 +20: ; preds = %.sink.split, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit", %11 %.sroa.4.0 = phi i64 [ undef, %11 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ], [ undef, %.sink.split ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %11 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ], [ -9223372036854775807, %.sink.split ] - %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 - ret { i64, i64 } %23 + %.sroa.0.0 = phi i64 [ -9223372036854775807, %11 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ], [ -9223372036854775807, %.sink.split ] + %21 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %22 = insertvalue { i64, i64 } %21, i64 %.sroa.4.0, 1 + ret { i64, i64 } %22 } ; Function Attrs: nonlazybind uwtable @@ -79468,7 +79464,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h8ae 11: ; preds = %2 %12 = icmp eq i64 %5, 0 - br i1 %12, label %21, label %13 + br i1 %12, label %20, label %13 13: ; preds = %11 %14 = shl nuw i64 %5, 3 @@ -79482,27 +79478,25 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h8ae "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #61 - %.not28 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not28, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not28, label %21, label %.sink.split + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #61 + %.not28 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not28, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not28, label %20, label %.sink.split .sink.split: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" - %.sink29 = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ] + %.sink29 = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ] %.sink = phi i64 [ 0, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" ], [ %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ] store ptr %.sink29, ptr %0, align 8 store i64 %.sink, ptr %4, align 8 - br label %21 + br label %20 -21: ; preds = %.sink.split, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit", %11 +20: ; preds = %.sink.split, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit", %11 %.sroa.4.0 = phi i64 [ undef, %11 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ], [ undef, %.sink.split ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %11 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ], [ -9223372036854775807, %.sink.split ] - %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 - ret { i64, i64 } %23 + %.sroa.0.0 = phi i64 [ -9223372036854775807, %11 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ], [ -9223372036854775807, %.sink.split ] + %21 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %22 = insertvalue { i64, i64 } %21, i64 %.sroa.4.0, 1 + ret { i64, i64 } %22 } ; Function Attrs: nonlazybind uwtable @@ -79529,7 +79523,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17ha77 11: ; preds = %2 %12 = icmp eq i64 %5, 0 - br i1 %12, label %21, label %13 + br i1 %12, label %20, label %13 13: ; preds = %11 %14 = shl nuw i64 %5, 2 @@ -79543,27 +79537,25 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17ha77 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit": ; preds = %13 %17 = shl nuw i64 %1, 2 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 2, i64 noundef %17) #61 - %.not28 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not28, ptr inttoptr (i64 2 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not28, label %21, label %.sink.split + %18 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 2, i64 noundef %17) #61 + %.not28 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not28, ptr inttoptr (i64 2 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not28, label %20, label %.sink.split .sink.split: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" - %.sink29 = phi ptr [ inttoptr (i64 2 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ] + %.sink29 = phi ptr [ inttoptr (i64 2 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ] %.sink = phi i64 [ 0, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" ], [ %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ] store ptr %.sink29, ptr %0, align 8 store i64 %.sink, ptr %4, align 8 - br label %21 + br label %20 -21: ; preds = %.sink.split, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit", %11 +20: ; preds = %.sink.split, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit", %11 %.sroa.4.0 = phi i64 [ undef, %11 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ], [ undef, %.sink.split ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %11 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ], [ -9223372036854775807, %.sink.split ] - %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 - ret { i64, i64 } %23 + %.sroa.0.0 = phi i64 [ -9223372036854775807, %11 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ], [ -9223372036854775807, %.sink.split ] + %21 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %22 = insertvalue { i64, i64 } %21, i64 %.sroa.4.0, 1 + ret { i64, i64 } %22 } ; Function Attrs: nonlazybind uwtable @@ -79764,7 +79756,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hdb8 11: ; preds = %2 %12 = icmp eq i64 %5, 0 - br i1 %12, label %21, label %13 + br i1 %12, label %20, label %13 13: ; preds = %11 %14 = shl nuw i64 %5, 5 @@ -79778,27 +79770,25 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hdb8 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit": ; preds = %13 %17 = shl nuw i64 %1, 5 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #61 - %.not28 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not28, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not28, label %21, label %.sink.split + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #61 + %.not28 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not28, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not28, label %20, label %.sink.split .sink.split: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" - %.sink29 = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ] + %.sink29 = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ] %.sink = phi i64 [ 0, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.6961039930124626028.exit" ], [ %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ] store ptr %.sink29, ptr %0, align 8 store i64 %.sink, ptr %4, align 8 - br label %21 + br label %20 -21: ; preds = %.sink.split, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit", %11 +20: ; preds = %.sink.split, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit", %11 %.sroa.4.0 = phi i64 [ undef, %11 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ], [ undef, %.sink.split ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %11 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ], [ -9223372036854775807, %.sink.split ] - %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 - ret { i64, i64 } %23 + %.sroa.0.0 = phi i64 [ -9223372036854775807, %11 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17he786ab5534c190c8E.exit" ], [ -9223372036854775807, %.sink.split ] + %21 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %22 = insertvalue { i64, i64 } %21, i64 %.sroa.4.0, 1 + ret { i64, i64 } %22 } ; Function Attrs: cold nonlazybind uwtable diff --git a/bench/opencv/optimized/fast_norm.cpp.ll b/bench/opencv/optimized/fast_norm.cpp.ll index 2e826b7163d..d3411da6bff 100644 --- a/bench/opencv/optimized/fast_norm.cpp.ll +++ b/bench/opencv/optimized/fast_norm.cpp.ll @@ -118,7 +118,7 @@ define hidden void @_ZN2cv3dnn8fastNormERKNS_3MatERS1_fmb(ptr noundef nonnull al br i1 %.not, label %_ZN2cv3dnn14dnn4_v20240521L5shapeERKNS_3MatE.exit.thread, label %16 16: ; preds = %5 - %17 = icmp slt i32 %.val, 0 + %17 = icmp ugt i64 %.idx, 9223372036854775804 br i1 %17, label %.noexc40, label %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i .noexc40: ; preds = %16 @@ -151,7 +151,7 @@ _ZN2cv3dnn14dnn4_v20240521L5shapeERKNS_3MatE.exit.thread: ; preds = %5, %_ZNSt12 br i1 %.not.i, label %.invoke, label %24 24: ; preds = %21 - %.not28.i = icmp samesign ugt i32 %spec.select.i, %.val + %.not28.i = icmp sgt i32 %spec.select.i, %.val br i1 %.not28.i, label %.invoke, label %.preheader.i .preheader.i: ; preds = %24 @@ -491,7 +491,7 @@ define hidden void @_ZN2cv3dnn8fastNormERKNS_3MatES3_RS1_fm(ptr noundef nonnull br i1 %.not, label %_ZN2cv3dnn14dnn4_v20240521L5shapeERKNS_3MatE.exit.thread, label %14 14: ; preds = %5 - %15 = icmp slt i32 %.val, 0 + %15 = icmp ugt i64 %.idx, 9223372036854775804 br i1 %15, label %.noexc41, label %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i .noexc41: ; preds = %14 @@ -524,7 +524,7 @@ _ZN2cv3dnn14dnn4_v20240521L5shapeERKNS_3MatE.exit.thread: ; preds = %5, %_ZNSt12 br i1 %.not.i, label %.invoke, label %22 22: ; preds = %19 - %.not28.i = icmp samesign ugt i32 %spec.select.i, %.val + %.not28.i = icmp sgt i32 %spec.select.i, %.val br i1 %.not28.i, label %.invoke, label %.preheader.i .preheader.i: ; preds = %22 @@ -700,7 +700,7 @@ define hidden void @_ZN2cv3dnn8fastNormERKNS_3MatES3_S3_RS1_fm(ptr noundef nonnu br i1 %.not, label %_ZN2cv3dnn14dnn4_v20240521L5shapeERKNS_3MatE.exit, label %15 15: ; preds = %6 - %16 = icmp slt i32 %.val, 0 + %16 = icmp ugt i64 %.idx, 9223372036854775804 br i1 %16, label %.noexc46, label %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i .noexc46: ; preds = %15 @@ -950,18 +950,18 @@ define hidden void @_ZN2cv3dnn15fastNormChannelERKNS_3MatES3_S3_RS1_f(ptr nounde %.val = load i32, ptr %12, align 4 %13 = getelementptr inbounds nuw i8, ptr %0, i64 64 %.val22 = load ptr, ptr %13, align 8 + %14 = sext i32 %.val to i64 + %.idx = shl nsw i64 %14, 2 %.not = icmp ne i32 %.val, 0 tail call void @llvm.assume(i1 %.not) - %14 = icmp slt i32 %.val, 0 - br i1 %14, label %.noexc32, label %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i + %15 = icmp ugt i64 %.idx, 9223372036854775804 + br i1 %15, label %.noexc32, label %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i .noexc32: ; preds = %5 tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.21) #17 unreachable _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i: ; preds = %5 - %15 = zext nneg i32 %.val to i64 - %.idx = shl nuw nsw i64 %15, 2 %16 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %.idx) #18 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %16, ptr align 4 %.val22, i64 %.idx, i1 false) %17 = load i32, ptr %16, align 4 @@ -1022,7 +1022,7 @@ _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i: ; preds = %5 br i1 %44, label %45, label %.invoke 45: ; preds = %42 - %.not.i = icmp samesign ult i32 %.val, 2 + %.not.i = icmp slt i32 %.val, 2 br i1 %.not.i, label %.invoke, label %49 .invoke: ; preds = %45, %42 @@ -1037,16 +1037,20 @@ _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i: ; preds = %5 49: ; preds = %45 %.not42 = icmp eq i32 %.val, 2 - br i1 %.not42, label %_ZN2cv3dnn14dnn4_v20240521L5totalERKSt6vectorIiSaIiEEii.exit, label %.lr.ph.i + br i1 %.not42, label %_ZN2cv3dnn14dnn4_v20240521L5totalERKSt6vectorIiSaIiEEii.exit, label %.lr.ph.i.preheader -.lr.ph.i: ; preds = %49, %.lr.ph.i - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.lr.ph.i ], [ 2, %49 ] - %.0231.i = phi i32 [ %52, %.lr.ph.i ], [ 1, %49 ] +.lr.ph.i.preheader: ; preds = %49 + %wide.trip.count = zext nneg i32 %.val to i64 + br label %.lr.ph.i + +.lr.ph.i: ; preds = %.lr.ph.i.preheader, %.lr.ph.i + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.lr.ph.i ], [ 2, %.lr.ph.i.preheader ] + %.0231.i = phi i32 [ %52, %.lr.ph.i ], [ 1, %.lr.ph.i.preheader ] %50 = getelementptr inbounds nuw i32, ptr %16, i64 %indvars.iv.i %51 = load i32, ptr %50, align 4 %52 = mul nsw i32 %51, %.0231.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next.i, %15 + %exitcond.not = icmp eq i64 %indvars.iv.next.i, %wide.trip.count br i1 %exitcond.not, label %_ZN2cv3dnn14dnn4_v20240521L5totalERKSt6vectorIiSaIiEEii.exit.loopexit, label %.lr.ph.i, !llvm.loop !4 _ZN2cv3dnn14dnn4_v20240521L5totalERKSt6vectorIiSaIiEEii.exit.loopexit: ; preds = %.lr.ph.i @@ -1159,18 +1163,18 @@ define hidden void @_ZN2cv3dnn13fastNormGroupERKNS_3MatES3_S3_RS1_fm(ptr noundef %.val = load i32, ptr %15, align 4 %16 = getelementptr inbounds nuw i8, ptr %0, i64 64 %.val25 = load ptr, ptr %16, align 8 + %17 = sext i32 %.val to i64 + %.idx = shl nsw i64 %17, 2 %.not = icmp ne i32 %.val, 0 tail call void @llvm.assume(i1 %.not) - %17 = icmp slt i32 %.val, 0 - br i1 %17, label %.noexc35, label %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i + %18 = icmp ugt i64 %.idx, 9223372036854775804 + br i1 %18, label %.noexc35, label %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i .noexc35: ; preds = %6 tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.21) #17 unreachable _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i: ; preds = %6 - %18 = zext nneg i32 %.val to i64 - %.idx = shl nuw nsw i64 %18, 2 %19 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %.idx) #18 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %19, ptr align 4 %.val25, i64 %.idx, i1 false) %20 = load i32, ptr %19, align 4 @@ -1232,7 +1236,7 @@ _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i: ; preds = %6 48: ; preds = %45 %49 = udiv i64 %24, %5 store i64 %49, ptr %9, align 8 - %.not.i = icmp samesign ult i32 %.val, 2 + %.not.i = icmp slt i32 %.val, 2 br i1 %.not.i, label %.invoke, label %53 .invoke: ; preds = %48, %45 @@ -1247,16 +1251,20 @@ _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i: ; preds = %6 53: ; preds = %48 %.not46 = icmp eq i32 %.val, 2 - br i1 %.not46, label %_ZN2cv3dnn14dnn4_v20240521L5totalERKSt6vectorIiSaIiEEii.exit, label %.lr.ph.i + br i1 %.not46, label %_ZN2cv3dnn14dnn4_v20240521L5totalERKSt6vectorIiSaIiEEii.exit, label %.lr.ph.i.preheader + +.lr.ph.i.preheader: ; preds = %53 + %wide.trip.count = zext nneg i32 %.val to i64 + br label %.lr.ph.i -.lr.ph.i: ; preds = %53, %.lr.ph.i - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.lr.ph.i ], [ 2, %53 ] - %.0231.i = phi i32 [ %56, %.lr.ph.i ], [ 1, %53 ] +.lr.ph.i: ; preds = %.lr.ph.i.preheader, %.lr.ph.i + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.lr.ph.i ], [ 2, %.lr.ph.i.preheader ] + %.0231.i = phi i32 [ %56, %.lr.ph.i ], [ 1, %.lr.ph.i.preheader ] %54 = getelementptr inbounds nuw i32, ptr %19, i64 %indvars.iv.i %55 = load i32, ptr %54, align 4 %56 = mul nsw i32 %55, %.0231.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next.i, %18 + %exitcond.not = icmp eq i64 %indvars.iv.next.i, %wide.trip.count br i1 %exitcond.not, label %_ZN2cv3dnn14dnn4_v20240521L5totalERKSt6vectorIiSaIiEEii.exit.loopexit, label %.lr.ph.i, !llvm.loop !4 _ZN2cv3dnn14dnn4_v20240521L5totalERKSt6vectorIiSaIiEEii.exit.loopexit: ; preds = %.lr.ph.i diff --git a/bench/opencv/optimized/latch.cpp.ll b/bench/opencv/optimized/latch.cpp.ll index ea1b3e48e1b..c13b56bf671 100644 --- a/bench/opencv/optimized/latch.cpp.ll +++ b/bench/opencv/optimized/latch.cpp.ll @@ -487,24 +487,23 @@ _ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit.i.i: ; preds = %33, %30 _ZSt7advanceIPimEvRT_T0_.exit.i.i: ; preds = %35 %.not.i.i.i.i.i17.i.i = icmp eq ptr %37, %25 - br i1 %.not.i.i.i.i.i17.i.i, label %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit18.i.thread.i, label %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit18.i.i + br i1 %.not.i.i.i.i.i17.i.i, label %_ZSt22__uninitialized_copy_aIPiS0_iET0_T_S2_S1_RSaIT1_E.exit.i.i, label %43 -_ZSt4copyIPiS0_ET0_T_S2_S1_.exit18.i.i: ; preds = %_ZSt7advanceIPimEvRT_T0_.exit.i.i +43: ; preds = %_ZSt7advanceIPimEvRT_T0_.exit.i.i tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %25, ptr noundef nonnull align 16 dereferenceable(1) @__const._ZN2cv11xfeatures2d28LATCHDescriptorExtractorImpl17setSamplingPointsEv.sampling_points_arr, i64 %39, i1 false) %.pre26.i.i = load ptr, ptr %36, align 8 - %gepdiff.i = sub nsw i64 12288, %39 - br label %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit18.i.thread.i + br label %_ZSt22__uninitialized_copy_aIPiS0_iET0_T_S2_S1_RSaIT1_E.exit.i.i -_ZSt4copyIPiS0_ET0_T_S2_S1_.exit18.i.thread.i: ; preds = %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit18.i.i, %_ZSt7advanceIPimEvRT_T0_.exit.i.i - %43 = phi i64 [ %gepdiff.i, %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit18.i.i ], [ 12288, %_ZSt7advanceIPimEvRT_T0_.exit.i.i ] - %44 = phi ptr [ %.pre26.i.i, %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit18.i.i ], [ %37, %_ZSt7advanceIPimEvRT_T0_.exit.i.i ] +_ZSt22__uninitialized_copy_aIPiS0_iET0_T_S2_S1_RSaIT1_E.exit.i.i: ; preds = %43, %_ZSt7advanceIPimEvRT_T0_.exit.i.i + %44 = phi ptr [ %37, %_ZSt7advanceIPimEvRT_T0_.exit.i.i ], [ %.pre26.i.i, %43 ] + %gepdiff = sub nsw i64 12288, %39 %.sink.i.i25.i.ptr.i = getelementptr inbounds nuw i8, ptr @__const._ZN2cv11xfeatures2d28LATCHDescriptorExtractorImpl17setSamplingPointsEv.sampling_points_arr, i64 %39 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %44, ptr nonnull align 4 %.sink.i.i25.i.ptr.i, i64 %43, i1 false) - %45 = getelementptr inbounds i8, ptr %44, i64 %43 + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %44, ptr nonnull align 4 %.sink.i.i25.i.ptr.i, i64 %gepdiff, i1 false) + %45 = getelementptr inbounds i8, ptr %44, i64 %gepdiff store ptr %45, ptr %36, align 8 br label %_ZN2cv11xfeatures2d28LATCHDescriptorExtractorImpl17setSamplingPointsEv.exit -_ZN2cv11xfeatures2d28LATCHDescriptorExtractorImpl17setSamplingPointsEv.exit: ; preds = %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit.i.i, %40, %42, %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit18.i.thread.i +_ZN2cv11xfeatures2d28LATCHDescriptorExtractorImpl17setSamplingPointsEv.exit: ; preds = %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit.i.i, %40, %42, %_ZSt22__uninitialized_copy_aIPiS0_iET0_T_S2_S1_RSaIT1_E.exit.i.i ret void } @@ -2334,24 +2333,24 @@ _ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit.i: ; preds = %13, %10 _ZSt7advanceIPimEvRT_T0_.exit.i: ; preds = %15 %.not.i.i.i.i.i17.i = icmp eq ptr %17, %5 - br i1 %.not.i.i.i.i.i17.i, label %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit18.i.thread, label %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit18.i + br i1 %.not.i.i.i.i.i17.i, label %_ZSt22__uninitialized_copy_aIPiS0_iET0_T_S2_S1_RSaIT1_E.exit.i, label %23 -_ZSt4copyIPiS0_ET0_T_S2_S1_.exit18.i: ; preds = %_ZSt7advanceIPimEvRT_T0_.exit.i +23: ; preds = %_ZSt7advanceIPimEvRT_T0_.exit.i tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %5, ptr noundef nonnull align 16 dereferenceable(1) @__const._ZN2cv11xfeatures2d28LATCHDescriptorExtractorImpl17setSamplingPointsEv.sampling_points_arr, i64 %19, i1 false) %.pre26.i = load ptr, ptr %16, align 8 - br label %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit18.i.thread - -_ZSt4copyIPiS0_ET0_T_S2_S1_.exit18.i.thread: ; preds = %_ZSt7advanceIPimEvRT_T0_.exit.i, %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit18.i - %.sink.i.i25.i.idx4 = phi i64 [ %19, %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit18.i ], [ 0, %_ZSt7advanceIPimEvRT_T0_.exit.i ] - %23 = phi ptr [ %.pre26.i, %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit18.i ], [ %17, %_ZSt7advanceIPimEvRT_T0_.exit.i ] - %24 = sub nsw i64 12288, %19 - %.sink.i.i25.i.ptr = getelementptr inbounds nuw i8, ptr @__const._ZN2cv11xfeatures2d28LATCHDescriptorExtractorImpl17setSamplingPointsEv.sampling_points_arr, i64 %.sink.i.i25.i.idx4 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %23, ptr nonnull align 4 %.sink.i.i25.i.ptr, i64 %24, i1 false) - %25 = getelementptr inbounds i8, ptr %23, i64 %24 + br label %_ZSt22__uninitialized_copy_aIPiS0_iET0_T_S2_S1_RSaIT1_E.exit.i + +_ZSt22__uninitialized_copy_aIPiS0_iET0_T_S2_S1_RSaIT1_E.exit.i: ; preds = %23, %_ZSt7advanceIPimEvRT_T0_.exit.i + %24 = phi ptr [ %17, %_ZSt7advanceIPimEvRT_T0_.exit.i ], [ %.pre26.i, %23 ] + %.sink.i.i25.i.idx = phi i64 [ 0, %_ZSt7advanceIPimEvRT_T0_.exit.i ], [ %19, %23 ] + %gepdiff = sub nsw i64 12288, %19 + %.sink.i.i25.i.ptr = getelementptr inbounds nuw i8, ptr @__const._ZN2cv11xfeatures2d28LATCHDescriptorExtractorImpl17setSamplingPointsEv.sampling_points_arr, i64 %.sink.i.i25.i.idx + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %24, ptr nonnull align 4 %.sink.i.i25.i.ptr, i64 %gepdiff, i1 false) + %25 = getelementptr inbounds i8, ptr %24, i64 %gepdiff store ptr %25, ptr %16, align 8 br label %_ZNSt6vectorIiSaIiEE13_M_assign_auxIPiEEvT_S4_St20forward_iterator_tag.exit -_ZNSt6vectorIiSaIiEE13_M_assign_auxIPiEEvT_S4_St20forward_iterator_tag.exit: ; preds = %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit.i, %20, %22, %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit18.i.thread +_ZNSt6vectorIiSaIiEE13_M_assign_auxIPiEEvT_S4_St20forward_iterator_tag.exit: ; preds = %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit.i, %20, %22, %_ZSt22__uninitialized_copy_aIPiS0_iET0_T_S2_S1_RSaIT1_E.exit.i ret void } diff --git a/bench/opencv/optimized/merge.dispatch.cpp.ll b/bench/opencv/optimized/merge.dispatch.cpp.ll index 89c6727abfe..6f7e59824ba 100644 --- a/bench/opencv/optimized/merge.dispatch.cpp.ll +++ b/bench/opencv/optimized/merge.dispatch.cpp.ll @@ -1116,7 +1116,7 @@ define void @_ZN2cv5mergeEPKNS_3MatEmRKNS_12_OutputArrayE(ptr noundef %0, i64 no 27: ; preds = %25, %23 %.pn = phi { ptr, i32 } [ %26, %25 ], [ %24, %23 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #13 - br label %235 + br label %236 28: ; preds = %3 %29 = invoke noundef zeroext i1 @_ZNK2cv3Mat5emptyEv(ptr noundef nonnull align 8 dereferenceable(96) %0) @@ -1128,7 +1128,7 @@ define void @_ZN2cv5mergeEPKNS_3MatEmRKNS_12_OutputArrayE(ptr noundef %0, i64 no 31: ; preds = %93, %90, %87, %80, %28 %32 = landingpad { ptr, i32 } cleanup - br label %235 + br label %236 33: ; preds = %30 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #13 @@ -1156,7 +1156,7 @@ define void @_ZN2cv5mergeEPKNS_3MatEmRKNS_12_OutputArrayE(ptr noundef %0, i64 no 40: ; preds = %38, %36 %.pn129 = phi { ptr, i32 } [ %39, %38 ], [ %37, %36 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #13 - br label %235 + br label %236 41: ; preds = %30 %42 = load i32, ptr %0, align 8 @@ -1205,7 +1205,7 @@ define void @_ZN2cv5mergeEPKNS_3MatEmRKNS_12_OutputArrayE(ptr noundef %0, i64 no 60: ; preds = %58, %56 %.pn127 = phi { ptr, i32 } [ %59, %58 ], [ %57, %56 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #13 - br label %235 + br label %236 61: ; preds = %49 %62 = and i32 %50, 4088 @@ -1250,7 +1250,7 @@ define void @_ZN2cv5mergeEPKNS_3MatEmRKNS_12_OutputArrayE(ptr noundef %0, i64 no 79: ; preds = %77, %75 %.pn120 = phi { ptr, i32 } [ %78, %77 ], [ %76, %75 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #13 - br label %235 + br label %236 80: ; preds = %70 %81 = getelementptr inbounds nuw i8, ptr %0, i64 4 @@ -1515,58 +1515,59 @@ _ZN2cv10AutoBufferIhLm1032EEC2Em.exit: ; preds = %.noexc139, %_ZNK2cv %195 = udiv i32 536870911, %68 %196 = zext nneg i32 %195 to i64 %197 = icmp samesign ult i32 %68, 5 - %..i.val = call i64 @llvm.umin.i64(i64 %166, i64 %194) - %198 = select i1 %197, i64 %194, i64 %..i.val - %.sroa.speculated147 = call i64 @llvm.umin.i64(i64 %198, i64 %196) - %199 = getelementptr inbounds nuw i8, ptr %17, i64 32 + %198 = icmp ult i64 %sext, %sext124 + %..i.val = select i1 %198, i64 %166, i64 %194 + %199 = select i1 %197, i64 %194, i64 %..i.val + %.sroa.speculated147 = call i64 @llvm.umin.i64(i64 %199, i64 %196) + %200 = getelementptr inbounds nuw i8, ptr %17, i64 32 %.not = icmp eq i64 %sext124, 0 - %200 = getelementptr inbounds nuw i8, ptr %190, i64 8 + %201 = getelementptr inbounds nuw i8, ptr %190, i64 8 br i1 %.not, label %.split, label %.split.us .split.us: ; preds = %191, %._crit_edge.us - %.2112.us = phi i64 [ %218, %._crit_edge.us ], [ 0, %191 ] - %201 = load i64, ptr %199, align 8 - %202 = icmp ult i64 %.2112.us, %201 - br i1 %202, label %.preheader.us, label %.split175.us + %.2112.us = phi i64 [ %219, %._crit_edge.us ], [ 0, %191 ] + %202 = load i64, ptr %200, align 8 + %203 = icmp ult i64 %.2112.us, %202 + br i1 %203, label %.preheader.us, label %.split175.us .preheader.us: ; preds = %.split.us, %.loopexit.us - %.098173.us = phi i64 [ %207, %.loopexit.us ], [ 0, %.split.us ] - %203 = sub nuw i64 %194, %.098173.us - %.sroa.speculated.us = call i64 @llvm.umin.i64(i64 %.sroa.speculated147, i64 %203) - %204 = load ptr, ptr %190, align 16 - %205 = trunc nuw nsw i64 %.sroa.speculated.us to i32 - invoke void %148(ptr noundef nonnull %200, ptr noundef %204, i32 noundef %205, i32 noundef %68) - to label %206 unwind label %.loopexit159.split.us - -206: ; preds = %.preheader.us - %207 = add i64 %.098173.us, %.sroa.speculated147 - %208 = icmp ult i64 %207, %194 - br i1 %208, label %209, label %._crit_edge.us - -209: ; preds = %206 - %210 = mul i64 %.sroa.speculated.us, %157 - %211 = load ptr, ptr %190, align 16 - %212 = getelementptr inbounds i8, ptr %211, i64 %210 - store ptr %212, ptr %190, align 16 - %213 = mul nuw nsw i64 %.sroa.speculated.us, %163 - br label %214 - -.loopexit.us: ; preds = %214 + %.098173.us = phi i64 [ %208, %.loopexit.us ], [ 0, %.split.us ] + %204 = sub nuw i64 %194, %.098173.us + %.sroa.speculated.us = call i64 @llvm.umin.i64(i64 %.sroa.speculated147, i64 %204) + %205 = load ptr, ptr %190, align 16 + %206 = trunc nuw nsw i64 %.sroa.speculated.us to i32 + invoke void %148(ptr noundef nonnull %201, ptr noundef %205, i32 noundef %206, i32 noundef %68) + to label %207 unwind label %.loopexit159.split.us + +207: ; preds = %.preheader.us + %208 = add i64 %.098173.us, %.sroa.speculated147 + %209 = icmp ult i64 %208, %194 + br i1 %209, label %210, label %._crit_edge.us + +210: ; preds = %207 + %211 = mul i64 %.sroa.speculated.us, %157 + %212 = load ptr, ptr %190, align 16 + %213 = getelementptr inbounds i8, ptr %212, i64 %211 + store ptr %213, ptr %190, align 16 + %214 = mul nuw nsw i64 %.sroa.speculated.us, %163 + br label %215 + +.loopexit.us: ; preds = %215 br label %.preheader.us, !llvm.loop !36 -214: ; preds = %214, %209 - %indvars.iv190 = phi i64 [ %indvars.iv.next191, %214 ], [ 0, %209 ] +215: ; preds = %215, %210 + %indvars.iv190 = phi i64 [ %indvars.iv.next191, %215 ], [ 0, %210 ] %indvars.iv.next191 = add nuw nsw i64 %indvars.iv190, 1 - %215 = getelementptr inbounds nuw ptr, ptr %190, i64 %indvars.iv.next191 - %216 = load ptr, ptr %215, align 8 - %217 = getelementptr inbounds nuw i8, ptr %216, i64 %213 - store ptr %217, ptr %215, align 8 + %216 = getelementptr inbounds nuw ptr, ptr %190, i64 %indvars.iv.next191 + %217 = load ptr, ptr %216, align 8 + %218 = getelementptr inbounds nuw i8, ptr %217, i64 %214 + store ptr %218, ptr %216, align 8 %exitcond194.not = icmp eq i64 %indvars.iv.next191, %wide.trip.count188 - br i1 %exitcond194.not, label %.loopexit.us, label %214, !llvm.loop !37 + br i1 %exitcond194.not, label %.loopexit.us, label %215, !llvm.loop !37 -._crit_edge.us: ; preds = %206 - %218 = add nuw i64 %.2112.us, 1 - %219 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN2cv15NAryMatIteratorppEv(ptr noundef nonnull align 8 dereferenceable(64) %17) +._crit_edge.us: ; preds = %207 + %219 = add nuw i64 %.2112.us, 1 + %220 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN2cv15NAryMatIteratorppEv(ptr noundef nonnull align 8 dereferenceable(64) %17) to label %.split.us unwind label %.loopexit.split-lp.loopexit.split.us, !llvm.loop !38 .loopexit.split-lp.loopexit.split.us: ; preds = %._crit_edge.us @@ -1580,61 +1581,61 @@ _ZN2cv10AutoBufferIhLm1032EEC2Em.exit: ; preds = %.noexc139, %_ZNK2cv br label %.loopexit.split-lp .split: ; preds = %191, %.preheader - %.2112 = phi i64 [ %222, %.preheader ], [ 0, %191 ] - %220 = load i64, ptr %199, align 8 - %221 = icmp ult i64 %.2112, %220 - br i1 %221, label %.preheader, label %.split175.us + %.2112 = phi i64 [ %223, %.preheader ], [ 0, %191 ] + %221 = load i64, ptr %200, align 8 + %222 = icmp ult i64 %.2112, %221 + br i1 %222, label %.preheader, label %.split175.us .preheader: ; preds = %.split - %222 = add nuw i64 %.2112, 1 - %223 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN2cv15NAryMatIteratorppEv(ptr noundef nonnull align 8 dereferenceable(64) %17) + %223 = add nuw i64 %.2112, 1 + %224 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN2cv15NAryMatIteratorppEv(ptr noundef nonnull align 8 dereferenceable(64) %17) to label %.split unwind label %.loopexit.split-lp.loopexit.split, !llvm.loop !38 .split175.us: ; preds = %.split.us, %.split - %224 = load ptr, ptr %16, align 8 - %.not.i.i143 = icmp eq ptr %224, %170 - br i1 %.not.i.i143, label %_ZN2cv10AutoBufferIiLm264EED2Ev.exit137, label %225 + %225 = load ptr, ptr %16, align 8 + %.not.i.i143 = icmp eq ptr %225, %170 + br i1 %.not.i.i143, label %_ZN2cv10AutoBufferIiLm264EED2Ev.exit137, label %226 -225: ; preds = %.split175.us - %226 = icmp eq ptr %224, null - br i1 %226, label %228, label %227 +226: ; preds = %.split175.us + %227 = icmp eq ptr %225, null + br i1 %227, label %229, label %228 -227: ; preds = %225 - call void @_ZdaPv(ptr noundef nonnull %224) #16 - br label %228 +228: ; preds = %226 + call void @_ZdaPv(ptr noundef nonnull %225) #16 + br label %229 -228: ; preds = %227, %225 +229: ; preds = %228, %226 store ptr %170, ptr %16, align 8 store i64 1032, ptr %171, align 8 br label %_ZN2cv10AutoBufferIiLm264EED2Ev.exit137 -_ZN2cv10AutoBufferIiLm264EED2Ev.exit137: ; preds = %228, %.split175.us, %145, %140, %95 +_ZN2cv10AutoBufferIiLm264EED2Ev.exit137: ; preds = %229, %.split175.us, %145, %140, %95 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %13) #13 - %229 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %230 = load i32, ptr %229, align 8 - %.not.i = icmp eq i32 %230, 0 - br i1 %.not.i, label %_ZN2cv5utils5trace7details6RegionD2Ev.exit, label %231 + %230 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %231 = load i32, ptr %230, align 8 + %.not.i = icmp eq i32 %231, 0 + br i1 %.not.i, label %_ZN2cv5utils5trace7details6RegionD2Ev.exit, label %232 -231: ; preds = %_ZN2cv10AutoBufferIiLm264EED2Ev.exit137 +232: ; preds = %_ZN2cv10AutoBufferIiLm264EED2Ev.exit137 invoke void @_ZN2cv5utils5trace7details6Region7destroyEv(ptr noundef nonnull align 8 dereferenceable(12) %4) - to label %_ZN2cv5utils5trace7details6RegionD2Ev.exit unwind label %232 + to label %_ZN2cv5utils5trace7details6RegionD2Ev.exit unwind label %233 -232: ; preds = %231 - %233 = landingpad { ptr, i32 } +233: ; preds = %232 + %234 = landingpad { ptr, i32 } catch ptr null - %234 = extractvalue { ptr, i32 } %233, 0 - call void @__clang_call_terminate(ptr %234) #12 + %235 = extractvalue { ptr, i32 } %234, 0 + call void @__clang_call_terminate(ptr %235) #12 unreachable -_ZN2cv5utils5trace7details6RegionD2Ev.exit: ; preds = %_ZN2cv10AutoBufferIiLm264EED2Ev.exit137, %231 +_ZN2cv5utils5trace7details6RegionD2Ev.exit: ; preds = %_ZN2cv10AutoBufferIiLm264EED2Ev.exit137, %232 ret void _ZN2cv10AutoBufferIiLm264EED2Ev.exit: ; preds = %188, %.loopexit.split-lp, %132, %126, %100, %98 %.pn125 = phi { ptr, i32 } [ %101, %100 ], [ %99, %98 ], [ %127, %126 ], [ %127, %132 ], [ %lpad.phi, %.loopexit.split-lp ], [ %lpad.phi, %188 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %13) #13 - br label %235 + br label %236 -235: ; preds = %_ZN2cv10AutoBufferIiLm264EED2Ev.exit, %79, %60, %40, %31, %27 +236: ; preds = %_ZN2cv10AutoBufferIiLm264EED2Ev.exit, %79, %60, %40, %31, %27 %.pn129.pn = phi { ptr, i32 } [ %.pn129, %40 ], [ %.pn127, %60 ], [ %.pn125, %_ZN2cv10AutoBufferIiLm264EED2Ev.exit ], [ %32, %31 ], [ %.pn120, %79 ], [ %.pn, %27 ] call void @_ZN2cv5utils5trace7details6RegionD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %4) #13 resume { ptr, i32 } %.pn129.pn diff --git a/bench/opencv/optimized/rmat.cpp.ll b/bench/opencv/optimized/rmat.cpp.ll index 4e2081b9d65..2e21f538969 100644 --- a/bench/opencv/optimized/rmat.cpp.ll +++ b/bench/opencv/optimized/rmat.cpp.ll @@ -587,51 +587,61 @@ _ZNSt12_Vector_baseImSaImEE13_M_deallocateEPmm.exit.i: ; preds = %57, %54 59: ; preds = %_ZN2cv8GMatDescD2Ev.exit %60 = getelementptr inbounds nuw i8, ptr %1, i64 64 %61 = load ptr, ptr %60, align 8 - %.not.i9 = icmp eq ptr %61, %49 - br i1 %.not.i9, label %_ZSt22__uninitialized_copy_aIPKmPmmET0_T_S4_S3_RSaIT1_E.exit.i, label %62 + %62 = ptrtoint ptr %61 to i64 + %63 = sub i64 %62, %51 + %.not.i9 = icmp ult i64 %63, 8 + br i1 %.not.i9, label %67, label %64 -62: ; preds = %59 +64: ; preds = %59 store i64 0, ptr %49, align 8 %.pre.i = load ptr, ptr %60, align 8 - %63 = getelementptr inbounds nuw i8, ptr %49, i64 8 - %.not.i16.i = icmp eq ptr %.pre.i, %63 - br i1 %.not.i16.i, label %_ZNSt6vectorImSaImEE13_M_assign_auxIPKmEEvT_S5_St20forward_iterator_tag.exit, label %64 + %65 = getelementptr inbounds nuw i8, ptr %49, i64 8 + %.not.i16.i = icmp eq ptr %.pre.i, %65 + br i1 %.not.i16.i, label %_ZNSt6vectorImSaImEE13_M_assign_auxIPKmEEvT_S5_St20forward_iterator_tag.exit, label %66 -64: ; preds = %62 - store ptr %63, ptr %60, align 8 +66: ; preds = %64 + store ptr %65, ptr %60, align 8 br label %_ZNSt6vectorImSaImEE13_M_assign_auxIPKmEEvT_S5_St20forward_iterator_tag.exit -_ZSt22__uninitialized_copy_aIPKmPmmET0_T_S4_S3_RSaIT1_E.exit.i: ; preds = %59 - %65 = ptrtoint ptr %61 to i64 - %66 = sub i64 %65, %51 - %gepdiff = sub nsw i64 8, %66 - %.sink.i.i25.i.ptr = getelementptr inbounds i8, ptr %4, i64 %66 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %61, ptr nonnull align 8 %.sink.i.i25.i.ptr, i64 %gepdiff, i1 false) - %67 = getelementptr inbounds i8, ptr %61, i64 %gepdiff - store ptr %67, ptr %60, align 8 +67: ; preds = %59 + %68 = getelementptr inbounds nuw i8, ptr %4, i64 %63 + %.not.i.i.i.i.i17.i = icmp eq ptr %61, %49 + br i1 %.not.i.i.i.i.i17.i, label %_ZSt4copyIPKmPmET0_T_S4_S3_.exit18.i, label %69 + +69: ; preds = %67 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %49, ptr noundef nonnull align 8 dereferenceable(1) %4, i64 %63, i1 false) + %.pre26.i = load ptr, ptr %60, align 8 + br label %_ZSt4copyIPKmPmET0_T_S4_S3_.exit18.i + +_ZSt4copyIPKmPmET0_T_S4_S3_.exit18.i: ; preds = %69, %67 + %70 = phi ptr [ %61, %67 ], [ %.pre26.i, %69 ] + %gepdiff = sub nuw nsw i64 8, %63 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %70, ptr nonnull align 8 %68, i64 %gepdiff, i1 false) + %71 = getelementptr inbounds nuw i8, ptr %70, i64 %gepdiff + store ptr %71, ptr %60, align 8 br label %_ZNSt6vectorImSaImEE13_M_assign_auxIPKmEEvT_S5_St20forward_iterator_tag.exit -_ZNSt6vectorImSaImEE13_M_assign_auxIPKmEEvT_S5_St20forward_iterator_tag.exit: ; preds = %_ZNSt12_Vector_baseImSaImEE13_M_deallocateEPmm.exit.i, %62, %64, %_ZSt22__uninitialized_copy_aIPKmPmmET0_T_S4_S3_RSaIT1_E.exit.i - %68 = load ptr, ptr %18, align 8 - %.not.i = icmp eq ptr %68, null - br i1 %.not.i, label %_ZNSt8functionIFvvEEaSEDn.exit, label %69 +_ZNSt6vectorImSaImEE13_M_assign_auxIPKmEEvT_S5_St20forward_iterator_tag.exit: ; preds = %_ZNSt12_Vector_baseImSaImEE13_M_deallocateEPmm.exit.i, %64, %66, %_ZSt4copyIPKmPmET0_T_S4_S3_.exit18.i + %72 = load ptr, ptr %18, align 8 + %.not.i = icmp eq ptr %72, null + br i1 %.not.i, label %_ZNSt8functionIFvvEEaSEDn.exit, label %73 -69: ; preds = %_ZNSt6vectorImSaImEE13_M_assign_auxIPKmEEvT_S5_St20forward_iterator_tag.exit - %70 = invoke noundef zeroext i1 %68(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %14, i32 noundef 3) - to label %71 unwind label %72 +73: ; preds = %_ZNSt6vectorImSaImEE13_M_assign_auxIPKmEEvT_S5_St20forward_iterator_tag.exit + %74 = invoke noundef zeroext i1 %72(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %14, i32 noundef 3) + to label %75 unwind label %76 -71: ; preds = %69 +75: ; preds = %73 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %18, i8 0, i64 16, i1 false) br label %_ZNSt8functionIFvvEEaSEDn.exit -72: ; preds = %69 - %73 = landingpad { ptr, i32 } +76: ; preds = %73 + %77 = landingpad { ptr, i32 } catch ptr null - %74 = extractvalue { ptr, i32 } %73, 0 - call void @__clang_call_terminate(ptr %74) #20 + %78 = extractvalue { ptr, i32 } %77, 0 + call void @__clang_call_terminate(ptr %78) #20 unreachable -_ZNSt8functionIFvvEEaSEDn.exit: ; preds = %_ZNSt6vectorImSaImEE13_M_assign_auxIPKmEEvT_S5_St20forward_iterator_tag.exit, %71 +_ZNSt8functionIFvvEEaSEDn.exit: ; preds = %_ZNSt6vectorImSaImEE13_M_assign_auxIPKmEEvT_S5_St20forward_iterator_tag.exit, %75 ret ptr %0 } diff --git a/bench/openexr/optimized/ImfIDManifest.cpp.ll b/bench/openexr/optimized/ImfIDManifest.cpp.ll index b2fb5c84051..a2f2989edf5 100644 --- a/bench/openexr/optimized/ImfIDManifest.cpp.ll +++ b/bench/openexr/optimized/ImfIDManifest.cpp.ll @@ -1355,7 +1355,6 @@ if.end204: ; preds = %_ZNSt6vectorINSt7__ %sub.ptr.lhs.cast.i218 = ptrtoint ptr %95 to i64 %sub.ptr.rhs.cast.i219 = ptrtoint ptr %96 to i64 %sub.ptr.sub.i220 = sub i64 %sub.ptr.lhs.cast.i218, %sub.ptr.rhs.cast.i219 - %sub.ptr.div.i221 = ashr exact i64 %sub.ptr.sub.i220, 5 %_M_finish.i.i222 = getelementptr inbounds nuw i8, ptr %retval.sroa.0.0.i517529, i64 48 %97 = load ptr, ptr %_M_finish.i.i222, align 8 %98 = load ptr, ptr %second207, align 8 @@ -1363,11 +1362,16 @@ if.end204: ; preds = %_ZNSt6vectorINSt7__ %sub.ptr.rhs.cast.i.i224 = ptrtoint ptr %98 to i64 %sub.ptr.sub.i.i225 = sub i64 %sub.ptr.lhs.cast.i.i223, %sub.ptr.rhs.cast.i.i224 %sub.ptr.div.i.i226 = ashr exact i64 %sub.ptr.sub.i.i225, 5 - %cmp.i227 = icmp ugt i64 %sub.ptr.div.i221, %sub.ptr.div.i.i226 + %cmp.i227 = icmp ugt i64 %sub.ptr.sub.i220, %sub.ptr.sub.i.i225 br i1 %cmp.i227, label %if.then.i238, label %if.else.i228 if.then.i238: ; preds = %if.end204 + %sub.ptr.div.i221 = ashr exact i64 %sub.ptr.sub.i220, 5 %sub.i239 = sub nuw nsw i64 %sub.ptr.div.i221, %sub.ptr.div.i.i226 + %cmp.not.i334 = icmp eq i64 %sub.i239, 0 + br i1 %cmp.not.i334, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE6resizeEm.exit, label %if.then.i335 + +if.then.i335: ; preds = %if.then.i238 %_M_end_of_storage.i = getelementptr inbounds nuw i8, ptr %retval.sroa.0.0.i517529, i64 56 %99 = load ptr, ptr %_M_end_of_storage.i, align 8 %sub.ptr.lhs.cast.i341 = ptrtoint ptr %99 to i64 @@ -1381,9 +1385,9 @@ if.then.i238: ; preds = %if.end204 %cmp8.not.i = icmp ult i64 %sub.ptr.div.i343, %sub.i239 br i1 %cmp8.not.i, label %if.else.i350, label %for.body.i.i.i.i346 -for.body.i.i.i.i346: ; preds = %if.then.i238, %for.body.i.i.i.i346 - %__cur.06.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i348, %for.body.i.i.i.i346 ], [ %97, %if.then.i238 ] - %__n.addr.05.i.i.i.i = phi i64 [ %dec.i.i.i.i347, %for.body.i.i.i.i346 ], [ %sub.i239, %if.then.i238 ] +for.body.i.i.i.i346: ; preds = %if.then.i335, %for.body.i.i.i.i346 + %__cur.06.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i348, %for.body.i.i.i.i346 ], [ %97, %if.then.i335 ] + %__n.addr.05.i.i.i.i = phi i64 [ %dec.i.i.i.i347, %for.body.i.i.i.i346 ], [ %sub.i239, %if.then.i335 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %__cur.06.i.i.i.i) #30 %dec.i.i.i.i347 = add i64 %__n.addr.05.i.i.i.i, -1 %incdec.ptr.i.i.i.i348 = getelementptr inbounds nuw i8, ptr %__cur.06.i.i.i.i, i64 32 @@ -1394,7 +1398,7 @@ _ZSt27__uninitialized_default_n_aIPNSt7__cxx1112basic_stringIcSt11char_traitsIcE store ptr %incdec.ptr.i.i.i.i348, ptr %_M_finish.i.i222, align 8 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE6resizeEm.exit -if.else.i350: ; preds = %if.then.i238 +if.else.i350: ; preds = %if.then.i335 %cmp.i.i351 = icmp ult i64 %sub.i345, %sub.i239 br i1 %cmp.i.i351, label %if.then.i.i.i.invoke, label %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit.i @@ -1450,7 +1454,7 @@ _ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE6resizeEm.exit if.else.i228: ; preds = %if.end204 - %cmp4.i229 = icmp ult i64 %sub.ptr.div.i221, %sub.ptr.div.i.i226 + %cmp4.i229 = icmp ult i64 %sub.ptr.sub.i220, %sub.ptr.sub.i.i225 br i1 %cmp4.i229, label %if.then5.i230, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE6resizeEm.exit if.then5.i230: ; preds = %if.else.i228 @@ -1469,7 +1473,7 @@ invoke.cont.i.i237: ; preds = %for.body.i.i.i.i.i2 store ptr %add.ptr.i231, ptr %_M_finish.i.i222, align 8 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE6resizeEm.exit -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE6resizeEm.exit: ; preds = %_ZSt27__uninitialized_default_n_aIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS5_ET_S7_T0_RSaIT1_E.exit.i, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit36.i, %if.else.i228, %if.then5.i230, %invoke.cont.i.i237 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE6resizeEm.exit: ; preds = %if.then.i238, %_ZSt27__uninitialized_default_n_aIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmS5_ET_S7_T0_RSaIT1_E.exit.i, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit36.i, %if.else.i228, %if.then5.i230, %invoke.cont.i.i237 %data.addr.promoted441 = load ptr, ptr %data.addr, align 8 %101 = load ptr, ptr %_M_finish.i217, align 8 %102 = load ptr, ptr %_components, align 8 diff --git a/bench/openexr/optimized/ImfMultiView.cpp.ll b/bench/openexr/optimized/ImfMultiView.cpp.ll index 5db5208a0f7..070cbfc4e6b 100644 --- a/bench/openexr/optimized/ImfMultiView.cpp.ll +++ b/bench/openexr/optimized/ImfMultiView.cpp.ll @@ -729,7 +729,6 @@ invoke.cont5: ; preds = %invoke.cont3 %sub.ptr.lhs.cast.i26 = ptrtoint ptr %2 to i64 %sub.ptr.rhs.cast.i27 = ptrtoint ptr %3 to i64 %sub.ptr.sub.i28 = sub i64 %sub.ptr.lhs.cast.i26, %sub.ptr.rhs.cast.i27 - %sub.ptr.div.i29 = ashr exact i64 %sub.ptr.sub.i28, 5 %cmp = icmp eq ptr %0, %1 %cmp7 = icmp eq ptr %2, %3 %or.cond = or i1 %cmp, %cmp7 @@ -770,7 +769,7 @@ lpad10: ; preds = %if.end24 br label %ehcleanup if.end15: ; preds = %land.lhs.true, %if.end - %cmp16 = icmp ugt i64 %sub.ptr.div.i29, 1 + %cmp16 = icmp ugt i64 %sub.ptr.sub.i28, 32 br i1 %cmp16, label %land.lhs.true17, label %if.end24 land.lhs.true17: ; preds = %if.end15 @@ -879,7 +878,7 @@ if.end.i.i54: ; preds = %land.rhs.i49 br label %cleanup if.end47: ; preds = %if.end38 - %cmp48.not = icmp eq i64 %sub.ptr.div.i, %sub.ptr.div.i29 + %cmp48.not = icmp eq i64 %sub.ptr.sub.i, %sub.ptr.sub.i28 br i1 %cmp48.not, label %for.body.lr.ph, label %cleanup for.body.lr.ph: ; preds = %if.end47 diff --git a/bench/openjdk/optimized/X11SurfaceData.ll b/bench/openjdk/optimized/X11SurfaceData.ll index c90dffbe30b..6c58b327e17 100644 --- a/bench/openjdk/optimized/X11SurfaceData.ll +++ b/bench/openjdk/optimized/X11SurfaceData.ll @@ -1206,125 +1206,123 @@ X11SD_DisposeOrCacheXImage.exit.i: ; preds = %137 171: ; preds = %164 %172 = load i32, ptr %4, align 4 + %173 = load i32, ptr %5, align 4 %.neg.i.i = mul i32 %172, -65536 - %173 = ashr exact i32 %.neg.i.i, 16 - %174 = load ptr, ptr @awt_display, align 8 - %175 = getelementptr inbounds nuw i8, ptr %174, i64 232 - %176 = load ptr, ptr %175, align 8 - %177 = load ptr, ptr %12, align 8 - %178 = getelementptr inbounds nuw i8, ptr %177, i64 32 - %179 = load i32, ptr %178, align 8 - %180 = sext i32 %179 to i64 - %181 = getelementptr inbounds %struct.Screen, ptr %176, i64 %180 - %182 = getelementptr inbounds nuw i8, ptr %181, i64 24 - %183 = load i32, ptr %182, align 8 - %184 = add nsw i32 %183, %173 - %185 = load i32, ptr %2, align 4 - %186 = icmp sgt i32 %185, %173 - %187 = shl i32 %185, 16 - %sext52.i.i = select i1 %186, i32 %187, i32 %.neg.i.i - %188 = load i32, ptr %51, align 4 - %sext.i.i = shl i32 %184, 16 - %189 = ashr exact i32 %sext.i.i, 16 - %190 = icmp slt i32 %188, %189 - %191 = shl i32 %188, 16 - %sext53.i.i = select i1 %190, i32 %191, i32 %sext.i.i - %192 = ashr exact i32 %sext52.i.i, 16 - %193 = ashr exact i32 %sext53.i.i, 16 - %.not54.i.i = icmp slt i32 %192, %193 - br i1 %.not54.i.i, label %194, label %X11SD_ClipToRoot.exit.thread.i - -194: ; preds = %171 - %195 = load i32, ptr %54, align 4 - %196 = load i32, ptr %5, align 4 - %.neg50.i.i = mul i32 %196, -65536 - %197 = ashr exact i32 %.neg50.i.i, 16 - %198 = getelementptr inbounds nuw i8, ptr %181, i64 28 - %199 = load i32, ptr %198, align 4 - %200 = add nsw i32 %197, %199 - %sext51.i.i = shl i32 %200, 16 + %174 = ashr exact i32 %.neg.i.i, 16 + %175 = load ptr, ptr @awt_display, align 8 + %176 = getelementptr inbounds nuw i8, ptr %175, i64 232 + %177 = load ptr, ptr %176, align 8 + %178 = load ptr, ptr %12, align 8 + %179 = getelementptr inbounds nuw i8, ptr %178, i64 32 + %180 = load i32, ptr %179, align 8 + %181 = sext i32 %180 to i64 + %182 = getelementptr inbounds %struct.Screen, ptr %177, i64 %181 + %183 = getelementptr inbounds nuw i8, ptr %182, i64 24 + %184 = load i32, ptr %183, align 8 + %185 = add nsw i32 %184, %174 + %.neg50.i.i = mul i32 %173, -65536 + %186 = ashr exact i32 %.neg50.i.i, 16 + %187 = getelementptr inbounds nuw i8, ptr %182, i64 28 + %188 = load i32, ptr %187, align 4 + %189 = add nsw i32 %188, %186 + %190 = load i32, ptr %2, align 4 + %191 = icmp sgt i32 %190, %174 + %192 = shl i32 %190, 16 + %sext52.i.i = select i1 %191, i32 %192, i32 %.neg.i.i + %193 = load i32, ptr %42, align 4 + %194 = icmp sgt i32 %193, %186 + %195 = shl i32 %193, 16 + %sext55.i.i = select i1 %194, i32 %195, i32 %.neg50.i.i + %196 = load i32, ptr %51, align 4 + %sext.i.i = shl i32 %185, 16 + %197 = ashr exact i32 %sext.i.i, 16 + %198 = icmp slt i32 %196, %197 + %199 = shl i32 %196, 16 + %sext53.i.i = select i1 %198, i32 %199, i32 %sext.i.i + %200 = load i32, ptr %54, align 4 + %sext51.i.i = shl i32 %189, 16 %201 = ashr exact i32 %sext51.i.i, 16 - %202 = icmp slt i32 %195, %201 - %203 = shl i32 %195, 16 + %202 = icmp slt i32 %200, %201 + %203 = shl i32 %200, 16 %sext56.i.i = select i1 %202, i32 %203, i32 %sext51.i.i - %204 = load i32, ptr %42, align 4 - %205 = icmp sgt i32 %204, %197 - %206 = shl i32 %204, 16 - %sext55.i.i = select i1 %205, i32 %206, i32 %.neg50.i.i - %207 = ashr exact i32 %sext55.i.i, 16 - %208 = ashr exact i32 %sext56.i.i, 16 - %.not57.i.i = icmp slt i32 %207, %208 - br i1 %.not57.i.i, label %209, label %X11SD_ClipToRoot.exit.thread.i - -X11SD_ClipToRoot.exit.thread.i: ; preds = %194, %171, %164, %159 + %.not54.i.i = icmp slt i32 %sext52.i.i, %sext53.i.i + %.not57.i.i = icmp slt i32 %sext55.i.i, %sext56.i.i + %or.cond.i.i = select i1 %.not54.i.i, i1 %.not57.i.i, i1 false + br i1 %or.cond.i.i, label %204, label %X11SD_ClipToRoot.exit.thread.i + +X11SD_ClipToRoot.exit.thread.i: ; preds = %171, %164, %159 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %7) br label %X11SD_DisposeOrCacheXImage.exit.thread11.sink.split.i -209: ; preds = %194 +204: ; preds = %171 + %205 = ashr exact i32 %sext53.i.i, 16 + %206 = ashr exact i32 %sext52.i.i, 16 + %207 = ashr exact i32 %sext56.i.i, 16 + %208 = ashr exact i32 %sext55.i.i, 16 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %7) - %210 = sub nsw i32 %193, %192 - %211 = sub nsw i32 %208, %207 - %212 = call ptr @XGetImage(ptr noundef nonnull %174, i64 noundef %110, i32 noundef %192, i32 noundef %207, i32 noundef %210, i32 noundef %211, i64 noundef -1, i32 noundef 2) #18 - %213 = icmp eq ptr %212, null - br i1 %213, label %214, label %.lr.ph.i - -214: ; preds = %209 - %215 = load ptr, ptr @awt_display, align 8 - %216 = call i32 @XGrabServer(ptr noundef %215) #18 - %217 = load ptr, ptr @awt_display, align 8 - %218 = call ptr @XGetImage(ptr noundef %217, i64 noundef %110, i32 noundef %192, i32 noundef %207, i32 noundef %210, i32 noundef %211, i64 noundef -1, i32 noundef 2) #18 - %219 = load ptr, ptr @awt_display, align 8 - %220 = call i32 @XUngrabServer(ptr noundef %219) #18 - %221 = load ptr, ptr @awt_display, align 8 - %222 = call i32 @XSync(ptr noundef %221, i32 noundef 0) #18 - %.not141.i = icmp eq ptr %218, null + %209 = sub nsw i32 %205, %206 + %210 = sub nsw i32 %207, %208 + %211 = call ptr @XGetImage(ptr noundef nonnull %175, i64 noundef %110, i32 noundef %206, i32 noundef %208, i32 noundef %209, i32 noundef %210, i64 noundef -1, i32 noundef 2) #18 + %212 = icmp eq ptr %211, null + br i1 %212, label %213, label %.lr.ph.i + +213: ; preds = %204 + %214 = load ptr, ptr @awt_display, align 8 + %215 = call i32 @XGrabServer(ptr noundef %214) #18 + %216 = load ptr, ptr @awt_display, align 8 + %217 = call ptr @XGetImage(ptr noundef %216, i64 noundef %110, i32 noundef %206, i32 noundef %208, i32 noundef %209, i32 noundef %210, i64 noundef -1, i32 noundef 2) #18 + %218 = load ptr, ptr @awt_display, align 8 + %219 = call i32 @XUngrabServer(ptr noundef %218) #18 + %220 = load ptr, ptr @awt_display, align 8 + %221 = call i32 @XSync(ptr noundef %220, i32 noundef 0) #18 + %.not141.i = icmp eq ptr %217, null br i1 %.not141.i, label %X11SD_DisposeOrCacheXImage.exit.thread11.sink.split.i, label %.lr.ph.i -.lr.ph.i: ; preds = %214, %209 - %.012121.i = phi ptr [ %218, %214 ], [ %212, %209 ] - %223 = mul nsw i32 %210, %15 - %224 = getelementptr inbounds nuw i8, ptr %.012121.i, i64 16 - %225 = load ptr, ptr %224, align 8 - %226 = getelementptr inbounds nuw i8, ptr %.012121.i, i64 44 - %227 = load i32, ptr %226, align 4 - %228 = load ptr, ptr %153, align 8 - %229 = sub nsw i32 %207, %43 - %230 = sext i32 %229 to i64 - %231 = mul nsw i64 %230, %150 - %232 = getelementptr inbounds i8, ptr %228, i64 %231 - %233 = sub nsw i32 %192, %41 - %234 = mul nsw i32 %233, %15 - %235 = sext i32 %234 to i64 - %236 = getelementptr inbounds i8, ptr %232, i64 %235 - %237 = sext i32 %223 to i64 - %238 = sext i32 %227 to i64 - br label %239 - -239: ; preds = %239, %.lr.ph.i - %.024.i = phi i32 [ %207, %.lr.ph.i ], [ %242, %239 ] - %.011723.i = phi ptr [ %225, %.lr.ph.i ], [ %241, %239 ] - %.011822.i = phi ptr [ %236, %.lr.ph.i ], [ %240, %239 ] - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.011822.i, ptr align 1 %.011723.i, i64 %237, i1 false) - %240 = getelementptr inbounds i8, ptr %.011822.i, i64 %150 - %241 = getelementptr inbounds i8, ptr %.011723.i, i64 %238 - %242 = add nsw i32 %.024.i, 1 - %exitcond.not.i = icmp eq i32 %242, %208 - br i1 %exitcond.not.i, label %._crit_edge.i, label %239, !llvm.loop !6 - -._crit_edge.i: ; preds = %239 +.lr.ph.i: ; preds = %213, %204 + %.012121.i = phi ptr [ %217, %213 ], [ %211, %204 ] + %222 = mul nsw i32 %209, %15 + %223 = getelementptr inbounds nuw i8, ptr %.012121.i, i64 16 + %224 = load ptr, ptr %223, align 8 + %225 = getelementptr inbounds nuw i8, ptr %.012121.i, i64 44 + %226 = load i32, ptr %225, align 4 + %227 = load ptr, ptr %153, align 8 + %228 = sub nsw i32 %208, %43 + %229 = sext i32 %228 to i64 + %230 = mul nsw i64 %229, %150 + %231 = getelementptr inbounds i8, ptr %227, i64 %230 + %232 = sub nsw i32 %206, %41 + %233 = mul nsw i32 %232, %15 + %234 = sext i32 %233 to i64 + %235 = getelementptr inbounds i8, ptr %231, i64 %234 + %236 = sext i32 %222 to i64 + %237 = sext i32 %226 to i64 + br label %238 + +238: ; preds = %238, %.lr.ph.i + %.024.i = phi i32 [ %208, %.lr.ph.i ], [ %241, %238 ] + %.011723.i = phi ptr [ %224, %.lr.ph.i ], [ %240, %238 ] + %.011822.i = phi ptr [ %235, %.lr.ph.i ], [ %239, %238 ] + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.011822.i, ptr align 1 %.011723.i, i64 %236, i1 false) + %239 = getelementptr inbounds i8, ptr %.011822.i, i64 %150 + %240 = getelementptr inbounds i8, ptr %.011723.i, i64 %237 + %241 = add nsw i32 %.024.i, 1 + %242 = icmp slt i32 %241, %207 + br i1 %242, label %238, label %._crit_edge.i, !llvm.loop !6 + +._crit_edge.i: ; preds = %238 %243 = getelementptr inbounds nuw i8, ptr %.012121.i, i64 96 %244 = load ptr, ptr %243, align 8 %245 = call i32 %244(ptr noundef nonnull %.012121.i) #18 br label %X11SD_DisposeOrCacheXImage.exit.thread11.sink.split.i -X11SD_DisposeOrCacheXImage.exit.thread11.sink.split.i: ; preds = %._crit_edge.i, %214, %X11SD_ClipToRoot.exit.thread.i, %155, %137 - %.sink26.i = phi ptr [ %139, %137 ], [ %144, %X11SD_ClipToRoot.exit.thread.i ], [ %144, %214 ], [ %144, %._crit_edge.i ], [ %144, %155 ] +X11SD_DisposeOrCacheXImage.exit.thread11.sink.split.i: ; preds = %._crit_edge.i, %213, %X11SD_ClipToRoot.exit.thread.i, %155, %137 + %.sink26.i = phi ptr [ %139, %137 ], [ %144, %X11SD_ClipToRoot.exit.thread.i ], [ %144, %213 ], [ %144, %._crit_edge.i ], [ %144, %155 ] %246 = getelementptr inbounds nuw i8, ptr %.sink26.i, i64 80 store ptr null, ptr %246, align 8 br label %X11SD_DisposeOrCacheXImage.exit.thread11.i diff --git a/bench/openusd/optimized/bakeSkinning.cpp.ll b/bench/openusd/optimized/bakeSkinning.cpp.ll index 4ac0c8e12c1..adc913f88a8 100644 --- a/bench/openusd/optimized/bakeSkinning.cpp.ll +++ b/bench/openusd/optimized/bakeSkinning.cpp.ll @@ -29776,23 +29776,23 @@ _ZSt9set_unionIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEENS1_IPKdS5_EE %68 = ptrtoint ptr %66 to i64 %69 = ptrtoint ptr %67 to i64 %70 = sub i64 %68, %69 - %71 = ashr exact i64 %70, 3 - %72 = load ptr, ptr %19, align 8 - %73 = ptrtoint ptr %72 to i64 - %74 = sub i64 %73, %69 - %75 = ashr exact i64 %74, 3 - %76 = icmp ugt i64 %71, %75 - br i1 %76, label %77, label %79 - -77: ; preds = %_ZSt9set_unionIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEENS1_IPKdS5_EES6_ET1_T_SB_T0_SC_SA_.exit - %78 = sub nuw nsw i64 %71, %75 + %71 = load ptr, ptr %19, align 8 + %72 = ptrtoint ptr %71 to i64 + %73 = sub i64 %72, %69 + %74 = icmp ugt i64 %70, %73 + br i1 %74, label %75, label %79 + +75: ; preds = %_ZSt9set_unionIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEENS1_IPKdS5_EES6_ET1_T_SB_T0_SC_SA_.exit + %76 = ashr exact i64 %70, 3 + %77 = ashr exact i64 %73, 3 + %78 = sub nuw nsw i64 %76, %77 tail call void @_ZNSt6vectorIdSaIdEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %78) %.pre18 = load ptr, ptr %2, align 8 br label %_ZNSt6vectorIdSaIdEE6resizeEm.exit17 79: ; preds = %_ZSt9set_unionIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEENS1_IPKdS5_EES6_ET1_T_SB_T0_SC_SA_.exit - %80 = icmp uge i64 %71, %75 - %.not.i.i16 = icmp eq ptr %72, %66 + %80 = icmp uge i64 %70, %73 + %.not.i.i16 = icmp eq ptr %71, %66 %or.cond = or i1 %.not.i.i16, %80 br i1 %or.cond, label %_ZNSt6vectorIdSaIdEE6resizeEm.exit17, label %81 @@ -29801,8 +29801,8 @@ _ZSt9set_unionIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEENS1_IPKdS5_EE store ptr %82, ptr %19, align 8 br label %_ZNSt6vectorIdSaIdEE6resizeEm.exit17 -_ZNSt6vectorIdSaIdEE6resizeEm.exit17: ; preds = %77, %79, %81 - %83 = phi ptr [ %.pre18, %77 ], [ %67, %79 ], [ %67, %81 ] +_ZNSt6vectorIdSaIdEE6resizeEm.exit17: ; preds = %75, %79, %81 + %83 = phi ptr [ %.pre18, %75 ], [ %67, %79 ], [ %67, %81 ] %84 = load ptr, ptr %1, align 8 %85 = load ptr, ptr %4, align 8 %86 = getelementptr inbounds nuw i8, ptr %1, i64 16 @@ -31213,7 +31213,7 @@ define linkonce_odr void @_ZNSt6vectorIdSaIdEE15_M_range_insertIN9__gnu_cxx17__n %18 = ptrtoint ptr %1 to i64 %19 = sub i64 %15, %18 %20 = ashr exact i64 %19, 3 - %21 = icmp ugt i64 %20, %9 + %21 = icmp ugt i64 %19, %8 br i1 %21, label %_ZSt22__uninitialized_move_aIPdS0_SaIdEET0_T_S3_S2_RT1_.exit, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEmEvRT_T0_.exit _ZSt22__uninitialized_move_aIPdS0_SaIdEET0_T_S3_S2_RT1_.exit: ; preds = %17 @@ -32952,7 +32952,7 @@ define linkonce_odr void @_ZNSt6vectorIN32pxrInternal_v0_24__pxrReserved__11UsdT %18 = ptrtoint ptr %1 to i64 %19 = sub i64 %15, %18 %20 = ashr exact i64 %19, 3 - %21 = icmp ugt i64 %20, %9 + %21 = icmp ugt i64 %19, %8 br i1 %21, label %.lr.ph.i.i.i.i.i.preheader, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEmEvRT_T0_.exit .lr.ph.i.i.i.i.i.preheader: ; preds = %17 @@ -46344,41 +46344,42 @@ _ZN32pxrInternal_v0_24__pxrReserved__17UsdSkelAnimMapper16_ResizeContainerIfEEvP br i1 %.not71, label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit, label %.lr.ph .lr.ph: ; preds = %61 - %69 = shl nuw nsw i64 %22, 2 - br label %70 + %gepdiff = shl nuw nsw i64 %22, 2 + br label %69 + +69: ; preds = %.lr.ph, %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 + %.04270 = phi i64 [ 0, %.lr.ph ], [ %86, %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 ] + %70 = getelementptr inbounds i32, ptr %68, i64 %.04270 + %71 = load i32, ptr %70, align 4 + %72 = icmp sgt i32 %71, -1 + br i1 %72, label %73, label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 + +73: ; preds = %69 + %74 = zext nneg i32 %71 to i64 + %75 = tail call noundef i64 @_ZNK32pxrInternal_v0_24__pxrReserved__7VtArrayIfE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %2) + %76 = icmp ugt i64 %75, %74 + br i1 %76, label %77, label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 -70: ; preds = %.lr.ph, %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 - %.04270 = phi i64 [ 0, %.lr.ph ], [ %85, %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 ] - %71 = getelementptr inbounds i32, ptr %68, i64 %.04270 - %72 = load i32, ptr %71, align 4 - %73 = icmp sgt i32 %72, -1 - br i1 %73, label %74, label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 - -74: ; preds = %70 - %75 = zext nneg i32 %72 to i64 - %76 = tail call noundef i64 @_ZNK32pxrInternal_v0_24__pxrReserved__7VtArrayIfE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %2) - %77 = icmp ugt i64 %76, %75 - br i1 %77, label %78, label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 - -78: ; preds = %74 - %.idx69 = mul i64 %69, %.04270 +77: ; preds = %73 + %78 = mul i64 %.04270, %22 %79 = add nuw i64 %.04270, 1 - %.idx = mul i64 %69, %79 - %.not.i.i.i.i.i49 = icmp eq i64 %.idx, %.idx69 - br i1 %.not.i.i.i.i.i49, label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50, label %80 - -80: ; preds = %78 - %81 = getelementptr inbounds i8, ptr %62, i64 %.idx69 - %82 = mul nuw nsw i32 %72, %3 - %83 = zext nneg i32 %82 to i64 - %84 = getelementptr inbounds nuw float, ptr %63, i64 %83 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %84, ptr align 4 %81, i64 %69, i1 false) + %80 = mul i64 %79, %22 + %.not.i.i.i.i.i49 = icmp eq i64 %80, %78 + br i1 %.not.i.i.i.i.i49, label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50, label %81 + +81: ; preds = %77 + %.idx69 = shl nsw i64 %78, 2 + %82 = getelementptr inbounds i8, ptr %62, i64 %.idx69 + %83 = mul nuw nsw i32 %71, %3 + %84 = zext nneg i32 %83 to i64 + %85 = getelementptr inbounds nuw float, ptr %63, i64 %84 + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %85, ptr align 4 %82, i64 %gepdiff, i1 false) br label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 -_ZSt4copyIPKfPfET0_T_S4_S3_.exit50: ; preds = %80, %78, %70, %74 - %85 = add nuw i64 %.04270, 1 - %86 = icmp ult i64 %85, %.sroa.speculated - br i1 %86, label %70, label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit, !llvm.loop !441 +_ZSt4copyIPKfPfET0_T_S4_S3_.exit50: ; preds = %81, %77, %69, %73 + %86 = add nuw i64 %.04270, 1 + %87 = icmp ult i64 %86, %.sroa.speculated + br i1 %87, label %69, label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit, !llvm.loop !441 _ZSt4copyIPKfPfET0_T_S4_S3_.exit: ; preds = %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50, %61, %54, %44, %_ZN32pxrInternal_v0_24__pxrReserved__17UsdSkelAnimMapper16_ResizeContainerIfEEvPNS_7VtArrayIT_EEmRKS3_.exit, %28, %15, %8 %.0 = phi i1 [ false, %15 ], [ true, %28 ], [ false, %8 ], [ true, %_ZN32pxrInternal_v0_24__pxrReserved__17UsdSkelAnimMapper16_ResizeContainerIfEEvPNS_7VtArrayIT_EEmRKS3_.exit ], [ true, %44 ], [ true, %54 ], [ true, %61 ], [ true, %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 ] @@ -50920,56 +50921,56 @@ define linkonce_odr void @_ZNSt6vectorIN32pxrInternal_v0_24__pxrReserved__14UsdS 17: ; preds = %5 %18 = ptrtoint ptr %1 to i64 %19 = sub i64 %15, %18 - %20 = ashr exact i64 %19, 6 - %21 = icmp ugt i64 %20, %9 - br i1 %21, label %22, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingESt6vectorIS3_SaIS3_EEEEmEvRT_T0_.exit - -22: ; preds = %17 - %23 = sub nsw i64 0, %9 - %24 = getelementptr inbounds %"class.pxrInternal_v0_24__pxrReserved__::UsdSkelBinding", ptr %13, i64 %23 - %25 = tail call noundef ptr @_ZSt16__do_uninit_copyISt13move_iteratorIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingEES3_ET0_T_S6_S5_(ptr %24, ptr %13, ptr noundef %13) - %26 = load ptr, ptr %12, align 8 - %27 = getelementptr inbounds i8, ptr %26, i64 %8 - store ptr %27, ptr %12, align 8 - %28 = ptrtoint ptr %24 to i64 - %29 = sub i64 %28, %18 - %30 = ashr exact i64 %29, 6 - %31 = icmp sgt i64 %30, 0 - br i1 %31, label %.lr.ph.i.i.i.i.i, label %_ZSt13move_backwardIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingES2_ET0_T_S4_S3_.exit - -.lr.ph.i.i.i.i.i: ; preds = %22, %.lr.ph.i.i.i.i.i - %.010.i.i.i.i.i = phi i64 [ %35, %.lr.ph.i.i.i.i.i ], [ %30, %22 ] - %.069.i.i.i.i.i = phi ptr [ %33, %.lr.ph.i.i.i.i.i ], [ %13, %22 ] - %.078.i.i.i.i.i = phi ptr [ %32, %.lr.ph.i.i.i.i.i ], [ %24, %22 ] - %32 = getelementptr inbounds i8, ptr %.078.i.i.i.i.i, i64 -64 - %33 = getelementptr inbounds i8, ptr %.069.i.i.i.i.i, i64 -64 - %34 = tail call noundef nonnull align 8 dereferenceable(64) ptr @_ZN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64) %33, ptr noundef nonnull align 8 dereferenceable(64) %32) - %35 = add nsw i64 %.010.i.i.i.i.i, -1 - %36 = icmp samesign ugt i64 %.010.i.i.i.i.i, 1 - br i1 %36, label %.lr.ph.i.i.i.i.i, label %_ZSt13move_backwardIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingES2_ET0_T_S4_S3_.exit, !llvm.loop !473 - -_ZSt13move_backwardIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingES2_ET0_T_S4_S3_.exit: ; preds = %.lr.ph.i.i.i.i.i, %22 - %37 = icmp sgt i64 %9, 0 - br i1 %37, label %.lr.ph.i.i.i.i.i51, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit + %20 = icmp ugt i64 %19, %8 + br i1 %20, label %21, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingESt6vectorIS3_SaIS3_EEEEmEvRT_T0_.exit + +21: ; preds = %17 + %22 = sub nsw i64 0, %9 + %23 = getelementptr inbounds %"class.pxrInternal_v0_24__pxrReserved__::UsdSkelBinding", ptr %13, i64 %22 + %24 = tail call noundef ptr @_ZSt16__do_uninit_copyISt13move_iteratorIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingEES3_ET0_T_S6_S5_(ptr %23, ptr %13, ptr noundef %13) + %25 = load ptr, ptr %12, align 8 + %26 = getelementptr inbounds i8, ptr %25, i64 %8 + store ptr %26, ptr %12, align 8 + %27 = ptrtoint ptr %23 to i64 + %28 = sub i64 %27, %18 + %29 = ashr exact i64 %28, 6 + %30 = icmp sgt i64 %29, 0 + br i1 %30, label %.lr.ph.i.i.i.i.i, label %_ZSt13move_backwardIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingES2_ET0_T_S4_S3_.exit + +.lr.ph.i.i.i.i.i: ; preds = %21, %.lr.ph.i.i.i.i.i + %.010.i.i.i.i.i = phi i64 [ %34, %.lr.ph.i.i.i.i.i ], [ %29, %21 ] + %.069.i.i.i.i.i = phi ptr [ %32, %.lr.ph.i.i.i.i.i ], [ %13, %21 ] + %.078.i.i.i.i.i = phi ptr [ %31, %.lr.ph.i.i.i.i.i ], [ %23, %21 ] + %31 = getelementptr inbounds i8, ptr %.078.i.i.i.i.i, i64 -64 + %32 = getelementptr inbounds i8, ptr %.069.i.i.i.i.i, i64 -64 + %33 = tail call noundef nonnull align 8 dereferenceable(64) ptr @_ZN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64) %32, ptr noundef nonnull align 8 dereferenceable(64) %31) + %34 = add nsw i64 %.010.i.i.i.i.i, -1 + %35 = icmp samesign ugt i64 %.010.i.i.i.i.i, 1 + br i1 %35, label %.lr.ph.i.i.i.i.i, label %_ZSt13move_backwardIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingES2_ET0_T_S4_S3_.exit, !llvm.loop !473 + +_ZSt13move_backwardIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingES2_ET0_T_S4_S3_.exit: ; preds = %.lr.ph.i.i.i.i.i, %21 + %36 = icmp sgt i64 %9, 0 + br i1 %36, label %.lr.ph.i.i.i.i.i51, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit .lr.ph.i.i.i.i.i51: ; preds = %_ZSt13move_backwardIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingES2_ET0_T_S4_S3_.exit, %.lr.ph.i.i.i.i.i51 - %.012.i.i.i.i.i = phi i64 [ %44, %.lr.ph.i.i.i.i.i51 ], [ %9, %_ZSt13move_backwardIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingES2_ET0_T_S4_S3_.exit ] - %.0811.i.i.i.i.i = phi ptr [ %43, %.lr.ph.i.i.i.i.i51 ], [ %1, %_ZSt13move_backwardIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingES2_ET0_T_S4_S3_.exit ] - %.0910.i.i.i.i.i = phi ptr [ %42, %.lr.ph.i.i.i.i.i51 ], [ %2, %_ZSt13move_backwardIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingES2_ET0_T_S4_S3_.exit ] - %38 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZN32pxrInternal_v0_24__pxrReserved__13UsdSchemaBaseaSERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %.0811.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(64) %.0910.i.i.i.i.i) - %39 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 24 - %40 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i, i64 24 - %41 = tail call noundef nonnull align 8 dereferenceable(40) ptr @_ZN32pxrInternal_v0_24__pxrReserved__7VtArrayINS_20UsdSkelSkinningQueryEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef nonnull align 8 dereferenceable(40) %40) - %42 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i, i64 64 - %43 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 64 - %44 = add nsw i64 %.012.i.i.i.i.i, -1 - %45 = icmp samesign ugt i64 %.012.i.i.i.i.i, 1 - br i1 %45, label %.lr.ph.i.i.i.i.i51, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit, !llvm.loop !474 + %.012.i.i.i.i.i = phi i64 [ %43, %.lr.ph.i.i.i.i.i51 ], [ %9, %_ZSt13move_backwardIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingES2_ET0_T_S4_S3_.exit ] + %.0811.i.i.i.i.i = phi ptr [ %42, %.lr.ph.i.i.i.i.i51 ], [ %1, %_ZSt13move_backwardIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingES2_ET0_T_S4_S3_.exit ] + %.0910.i.i.i.i.i = phi ptr [ %41, %.lr.ph.i.i.i.i.i51 ], [ %2, %_ZSt13move_backwardIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingES2_ET0_T_S4_S3_.exit ] + %37 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZN32pxrInternal_v0_24__pxrReserved__13UsdSchemaBaseaSERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %.0811.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(64) %.0910.i.i.i.i.i) + %38 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 24 + %39 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i, i64 24 + %40 = tail call noundef nonnull align 8 dereferenceable(40) ptr @_ZN32pxrInternal_v0_24__pxrReserved__7VtArrayINS_20UsdSkelSkinningQueryEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(40) %38, ptr noundef nonnull align 8 dereferenceable(40) %39) + %41 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i, i64 64 + %42 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 64 + %43 = add nsw i64 %.012.i.i.i.i.i, -1 + %44 = icmp samesign ugt i64 %.012.i.i.i.i.i, 1 + br i1 %44, label %.lr.ph.i.i.i.i.i51, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit, !llvm.loop !474 _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingESt6vectorIS3_SaIS3_EEEEmEvRT_T0_.exit: ; preds = %17 + %45 = ashr exact i64 %19, 6 %46 = getelementptr inbounds i8, ptr %2, i64 %19 %47 = tail call noundef ptr @_ZSt16__do_uninit_copyIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__14UsdSkelBindingESt6vectorIS3_SaIS3_EEEES4_ET0_T_SA_S9_(ptr %46, ptr %3, ptr noundef %13) - %48 = sub nuw nsw i64 %9, %20 + %48 = sub nuw nsw i64 %9, %45 %49 = load ptr, ptr %12, align 8 %50 = getelementptr inbounds %"class.pxrInternal_v0_24__pxrReserved__::UsdSkelBinding", ptr %49, i64 %48 store ptr %50, ptr %12, align 8 diff --git a/bench/openusd/optimized/skeletonAdapter.cpp.ll b/bench/openusd/optimized/skeletonAdapter.cpp.ll index 32f4c29fa4f..d349b5c631f 100644 --- a/bench/openusd/optimized/skeletonAdapter.cpp.ll +++ b/bench/openusd/optimized/skeletonAdapter.cpp.ll @@ -36584,41 +36584,42 @@ _ZN32pxrInternal_v0_24__pxrReserved__17UsdSkelAnimMapper16_ResizeContainerIfEEvP br i1 %.not71, label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit, label %.lr.ph .lr.ph: ; preds = %61 - %69 = shl nuw nsw i64 %22, 2 - br label %70 + %gepdiff = shl nuw nsw i64 %22, 2 + br label %69 -70: ; preds = %.lr.ph, %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 - %.04270 = phi i64 [ 0, %.lr.ph ], [ %85, %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 ] - %71 = getelementptr inbounds i32, ptr %68, i64 %.04270 - %72 = load i32, ptr %71, align 4 - %73 = icmp sgt i32 %72, -1 - br i1 %73, label %74, label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 +69: ; preds = %.lr.ph, %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 + %.04270 = phi i64 [ 0, %.lr.ph ], [ %86, %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 ] + %70 = getelementptr inbounds i32, ptr %68, i64 %.04270 + %71 = load i32, ptr %70, align 4 + %72 = icmp sgt i32 %71, -1 + br i1 %72, label %73, label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 -74: ; preds = %70 - %75 = zext nneg i32 %72 to i64 - %76 = tail call noundef i64 @_ZNK32pxrInternal_v0_24__pxrReserved__7VtArrayIfE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %2) - %77 = icmp ugt i64 %76, %75 - br i1 %77, label %78, label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 +73: ; preds = %69 + %74 = zext nneg i32 %71 to i64 + %75 = tail call noundef i64 @_ZNK32pxrInternal_v0_24__pxrReserved__7VtArrayIfE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %2) + %76 = icmp ugt i64 %75, %74 + br i1 %76, label %77, label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 -78: ; preds = %74 - %.idx69 = mul i64 %69, %.04270 +77: ; preds = %73 + %78 = mul i64 %.04270, %22 %79 = add nuw i64 %.04270, 1 - %.idx = mul i64 %69, %79 - %.not.i.i.i.i.i49 = icmp eq i64 %.idx, %.idx69 - br i1 %.not.i.i.i.i.i49, label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50, label %80 - -80: ; preds = %78 - %81 = getelementptr inbounds i8, ptr %62, i64 %.idx69 - %82 = mul nuw nsw i32 %72, %3 - %83 = zext nneg i32 %82 to i64 - %84 = getelementptr inbounds nuw float, ptr %63, i64 %83 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %84, ptr align 4 %81, i64 %69, i1 false) + %80 = mul i64 %79, %22 + %.not.i.i.i.i.i49 = icmp eq i64 %80, %78 + br i1 %.not.i.i.i.i.i49, label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50, label %81 + +81: ; preds = %77 + %.idx69 = shl nsw i64 %78, 2 + %82 = getelementptr inbounds i8, ptr %62, i64 %.idx69 + %83 = mul nuw nsw i32 %71, %3 + %84 = zext nneg i32 %83 to i64 + %85 = getelementptr inbounds nuw float, ptr %63, i64 %84 + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %85, ptr align 4 %82, i64 %gepdiff, i1 false) br label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 -_ZSt4copyIPKfPfET0_T_S4_S3_.exit50: ; preds = %80, %78, %70, %74 - %85 = add nuw i64 %.04270, 1 - %86 = icmp ult i64 %85, %.sroa.speculated - br i1 %86, label %70, label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit, !llvm.loop !149 +_ZSt4copyIPKfPfET0_T_S4_S3_.exit50: ; preds = %81, %77, %69, %73 + %86 = add nuw i64 %.04270, 1 + %87 = icmp ult i64 %86, %.sroa.speculated + br i1 %87, label %69, label %_ZSt4copyIPKfPfET0_T_S4_S3_.exit, !llvm.loop !149 _ZSt4copyIPKfPfET0_T_S4_S3_.exit: ; preds = %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50, %61, %54, %44, %_ZN32pxrInternal_v0_24__pxrReserved__17UsdSkelAnimMapper16_ResizeContainerIfEEvPNS_7VtArrayIT_EEmRKS3_.exit, %28, %15, %8 %.0 = phi i1 [ false, %15 ], [ true, %28 ], [ false, %8 ], [ true, %_ZN32pxrInternal_v0_24__pxrReserved__17UsdSkelAnimMapper16_ResizeContainerIfEEvPNS_7VtArrayIT_EEmRKS3_.exit ], [ true, %44 ], [ true, %54 ], [ true, %61 ], [ true, %_ZSt4copyIPKfPfET0_T_S4_S3_.exit50 ] diff --git a/bench/openusd/optimized/skinningQuery.cpp.ll b/bench/openusd/optimized/skinningQuery.cpp.ll index abcb14ab4b4..41bfe0c77c1 100644 --- a/bench/openusd/optimized/skinningQuery.cpp.ll +++ b/bench/openusd/optimized/skinningQuery.cpp.ll @@ -2885,41 +2885,42 @@ _ZN32pxrInternal_v0_24__pxrReserved__17UsdSkelAnimMapper16_ResizeContainerINS_10 br i1 %.not72, label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit, label %.lr.ph .lr.ph: ; preds = %60 - %68 = shl nuw nsw i64 %22, 7 - br label %69 - -69: ; preds = %.lr.ph, %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit50 - %.04271 = phi i64 [ 0, %.lr.ph ], [ %84, %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit50 ] - %70 = getelementptr inbounds i32, ptr %67, i64 %.04271 - %71 = load i32, ptr %70, align 4 - %72 = icmp sgt i32 %71, -1 - br i1 %72, label %73, label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit50 - -73: ; preds = %69 - %74 = zext nneg i32 %71 to i64 - %75 = tail call noundef i64 @_ZNK32pxrInternal_v0_24__pxrReserved__7VtArrayINS_10GfMatrix4dEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %2) - %76 = icmp ugt i64 %75, %74 - br i1 %76, label %77, label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit50 - -77: ; preds = %73 - %.idx70 = mul i64 %68, %.04271 - %78 = add nuw i64 %.04271, 1 - %.idx = mul i64 %68, %78 - %.not.i.i.i.i.i49 = icmp eq i64 %.idx, %.idx70 - br i1 %.not.i.i.i.i.i49, label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit50, label %79 + %gepdiff = shl nuw nsw i64 %22, 7 + br label %68 + +68: ; preds = %.lr.ph, %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit50 + %.04271 = phi i64 [ 0, %.lr.ph ], [ %85, %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit50 ] + %69 = getelementptr inbounds i32, ptr %67, i64 %.04271 + %70 = load i32, ptr %69, align 4 + %71 = icmp sgt i32 %70, -1 + br i1 %71, label %72, label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit50 + +72: ; preds = %68 + %73 = zext nneg i32 %70 to i64 + %74 = tail call noundef i64 @_ZNK32pxrInternal_v0_24__pxrReserved__7VtArrayINS_10GfMatrix4dEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %2) + %75 = icmp ugt i64 %74, %73 + br i1 %75, label %76, label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit50 -79: ; preds = %77 - %80 = getelementptr inbounds i8, ptr %61, i64 %.idx70 - %81 = mul nuw nsw i32 %71, %3 - %82 = zext nneg i32 %81 to i64 - %83 = getelementptr inbounds nuw %"class.pxrInternal_v0_24__pxrReserved__::GfMatrix4d", ptr %62, i64 %82 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %83, ptr align 8 %80, i64 %68, i1 false) +76: ; preds = %72 + %77 = mul i64 %.04271, %22 + %78 = add nuw i64 %.04271, 1 + %79 = mul i64 %78, %22 + %.not.i.i.i.i.i49 = icmp eq i64 %79, %77 + br i1 %.not.i.i.i.i.i49, label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit50, label %80 + +80: ; preds = %76 + %.idx70 = shl nsw i64 %77, 7 + %81 = getelementptr inbounds i8, ptr %61, i64 %.idx70 + %82 = mul nuw nsw i32 %70, %3 + %83 = zext nneg i32 %82 to i64 + %84 = getelementptr inbounds nuw %"class.pxrInternal_v0_24__pxrReserved__::GfMatrix4d", ptr %62, i64 %83 + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %84, ptr align 8 %81, i64 %gepdiff, i1 false) br label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit50 -_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit50: ; preds = %79, %77, %69, %73 - %84 = add nuw i64 %.04271, 1 - %85 = icmp ult i64 %84, %.sroa.speculated - br i1 %85, label %69, label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit, !llvm.loop !25 +_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit50: ; preds = %80, %76, %68, %72 + %85 = add nuw i64 %.04271, 1 + %86 = icmp ult i64 %85, %.sroa.speculated + br i1 %86, label %68, label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit, !llvm.loop !25 _ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit: ; preds = %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit50, %60, %53, %43, %_ZN32pxrInternal_v0_24__pxrReserved__17UsdSkelAnimMapper16_ResizeContainerINS_10GfMatrix4dEEEvPNS_7VtArrayIT_EEmRKS4_.exit, %28, %15, %8 %.0 = phi i1 [ false, %15 ], [ true, %28 ], [ false, %8 ], [ true, %_ZN32pxrInternal_v0_24__pxrReserved__17UsdSkelAnimMapper16_ResizeContainerINS_10GfMatrix4dEEEvPNS_7VtArrayIT_EEmRKS4_.exit ], [ true, %43 ], [ true, %53 ], [ true, %60 ], [ true, %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4dEPS1_ET0_T_S6_S5_.exit50 ] @@ -3391,41 +3392,42 @@ _ZN32pxrInternal_v0_24__pxrReserved__17UsdSkelAnimMapper16_ResizeContainerINS_10 br i1 %.not72, label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit, label %.lr.ph .lr.ph: ; preds = %60 - %68 = shl nuw nsw i64 %22, 6 - br label %69 - -69: ; preds = %.lr.ph, %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit50 - %.04271 = phi i64 [ 0, %.lr.ph ], [ %84, %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit50 ] - %70 = getelementptr inbounds i32, ptr %67, i64 %.04271 - %71 = load i32, ptr %70, align 4 - %72 = icmp sgt i32 %71, -1 - br i1 %72, label %73, label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit50 - -73: ; preds = %69 - %74 = zext nneg i32 %71 to i64 - %75 = tail call noundef i64 @_ZNK32pxrInternal_v0_24__pxrReserved__7VtArrayINS_10GfMatrix4fEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %2) - %76 = icmp ugt i64 %75, %74 - br i1 %76, label %77, label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit50 - -77: ; preds = %73 - %.idx70 = mul i64 %68, %.04271 - %78 = add nuw i64 %.04271, 1 - %.idx = mul i64 %68, %78 - %.not.i.i.i.i.i49 = icmp eq i64 %.idx, %.idx70 - br i1 %.not.i.i.i.i.i49, label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit50, label %79 + %gepdiff = shl nuw nsw i64 %22, 6 + br label %68 + +68: ; preds = %.lr.ph, %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit50 + %.04271 = phi i64 [ 0, %.lr.ph ], [ %85, %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit50 ] + %69 = getelementptr inbounds i32, ptr %67, i64 %.04271 + %70 = load i32, ptr %69, align 4 + %71 = icmp sgt i32 %70, -1 + br i1 %71, label %72, label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit50 + +72: ; preds = %68 + %73 = zext nneg i32 %70 to i64 + %74 = tail call noundef i64 @_ZNK32pxrInternal_v0_24__pxrReserved__7VtArrayINS_10GfMatrix4fEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %2) + %75 = icmp ugt i64 %74, %73 + br i1 %75, label %76, label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit50 -79: ; preds = %77 - %80 = getelementptr inbounds i8, ptr %61, i64 %.idx70 - %81 = mul nuw nsw i32 %71, %3 - %82 = zext nneg i32 %81 to i64 - %83 = getelementptr inbounds nuw %"class.pxrInternal_v0_24__pxrReserved__::GfMatrix4f", ptr %62, i64 %82 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %83, ptr align 4 %80, i64 %68, i1 false) +76: ; preds = %72 + %77 = mul i64 %.04271, %22 + %78 = add nuw i64 %.04271, 1 + %79 = mul i64 %78, %22 + %.not.i.i.i.i.i49 = icmp eq i64 %79, %77 + br i1 %.not.i.i.i.i.i49, label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit50, label %80 + +80: ; preds = %76 + %.idx70 = shl nsw i64 %77, 6 + %81 = getelementptr inbounds i8, ptr %61, i64 %.idx70 + %82 = mul nuw nsw i32 %70, %3 + %83 = zext nneg i32 %82 to i64 + %84 = getelementptr inbounds nuw %"class.pxrInternal_v0_24__pxrReserved__::GfMatrix4f", ptr %62, i64 %83 + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %84, ptr align 4 %81, i64 %gepdiff, i1 false) br label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit50 -_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit50: ; preds = %79, %77, %69, %73 - %84 = add nuw i64 %.04271, 1 - %85 = icmp ult i64 %84, %.sroa.speculated - br i1 %85, label %69, label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit, !llvm.loop !30 +_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit50: ; preds = %80, %76, %68, %72 + %85 = add nuw i64 %.04271, 1 + %86 = icmp ult i64 %85, %.sroa.speculated + br i1 %86, label %68, label %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit, !llvm.loop !30 _ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit: ; preds = %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit50, %60, %53, %43, %_ZN32pxrInternal_v0_24__pxrReserved__17UsdSkelAnimMapper16_ResizeContainerINS_10GfMatrix4fEEEvPNS_7VtArrayIT_EEmRKS4_.exit, %28, %15, %8 %.0 = phi i1 [ false, %15 ], [ true, %28 ], [ false, %8 ], [ true, %_ZN32pxrInternal_v0_24__pxrReserved__17UsdSkelAnimMapper16_ResizeContainerINS_10GfMatrix4fEEEvPNS_7VtArrayIT_EEmRKS4_.exit ], [ true, %43 ], [ true, %53 ], [ true, %60 ], [ true, %_ZSt4copyIPKN32pxrInternal_v0_24__pxrReserved__10GfMatrix4fEPS1_ET0_T_S6_S5_.exit50 ] @@ -10233,7 +10235,7 @@ define linkonce_odr void @_ZNSt6vectorIdSaIdEE15_M_range_insertIN9__gnu_cxx17__n %18 = ptrtoint ptr %1 to i64 %19 = sub i64 %15, %18 %20 = ashr exact i64 %19, 3 - %21 = icmp ugt i64 %20, %9 + %21 = icmp ugt i64 %19, %8 br i1 %21, label %_ZSt22__uninitialized_move_aIPdS0_SaIdEET0_T_S3_S2_RT1_.exit, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEmEvRT_T0_.exit _ZSt22__uninitialized_move_aIPdS0_SaIdEET0_T_S3_S2_RT1_.exit: ; preds = %17 diff --git a/bench/proxygen/optimized/HTTPMessage.cpp.ll b/bench/proxygen/optimized/HTTPMessage.cpp.ll index f16379f7038..140df52c1d8 100644 --- a/bench/proxygen/optimized/HTTPMessage.cpp.ll +++ b/bench/proxygen/optimized/HTTPMessage.cpp.ll @@ -15101,8 +15101,8 @@ if.then: ; preds = %entry if.then4: ; preds = %if.then %sub.ptr.rhs.cast.i = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i - %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 24 - %cmp10 = icmp ugt i64 %sub.ptr.div.i, %sub.ptr.div.i.i + %sub.ptr.div.i.neg = sdiv exact i64 %sub.ptr.sub.i, -24 + %cmp10 = icmp ugt i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i br i1 %cmp10, label %for.body.i.i.i.i.i.preheader, label %_ZSt7advanceIPKSt4pairIPKcN5folly5RangeIS2_EEEmEvRT_T0_.exit for.body.i.i.i.i.i.preheader: ; preds = %if.then4 @@ -15190,8 +15190,8 @@ _ZSt22__uninitialized_copy_aIPKSt4pairIPKcN5folly5RangeIS2_EEEPS6_S6_ET0_T_SB_SA _ZSt22__uninitialized_copy_aIPKSt4pairIPKcN5folly5RangeIS2_EEEPS6_S6_ET0_T_SB_SA_RSaIT1_E.exit: ; preds = %_ZSt22__uninitialized_copy_aIPKSt4pairIPKcN5folly5RangeIS2_EEEPS6_S6_ET0_T_SB_SA_RSaIT1_E.exit.loopexit, %_ZSt7advanceIPKSt4pairIPKcN5folly5RangeIS2_EEEmEvRT_T0_.exit %4 = phi ptr [ %.pre, %_ZSt22__uninitialized_copy_aIPKSt4pairIPKcN5folly5RangeIS2_EEEPS6_S6_ET0_T_SB_SA_RSaIT1_E.exit.loopexit ], [ %1, %_ZSt7advanceIPKSt4pairIPKcN5folly5RangeIS2_EEEmEvRT_T0_.exit ] - %sub = sub nuw nsw i64 %sub.ptr.div.i.i, %sub.ptr.div.i - %add.ptr36 = getelementptr inbounds %"struct.std::pair.58", ptr %4, i64 %sub + %5 = getelementptr %"struct.std::pair.58", ptr %4, i64 %sub.ptr.div.i.neg + %add.ptr36 = getelementptr i8, ptr %5, i64 %sub.ptr.sub.i.i store ptr %add.ptr36, ptr %_M_finish, align 8 %cmp.i.i.not7.i.i.i.i.i49 = icmp eq ptr %__position.coerce, %1 br i1 %cmp.i.i.not7.i.i.i.i.i49, label %_ZSt22__uninitialized_move_aIPSt4pairIPKcN5folly5RangeIS2_EEES7_SaIS6_EET0_T_SA_S9_RT1_.exit57, label %for.body.i.i.i.i.i50 @@ -15210,8 +15210,8 @@ _ZSt22__uninitialized_move_aIPSt4pairIPKcN5folly5RangeIS2_EEES7_SaIS6_EET0_T_SA_ br label %_ZSt22__uninitialized_move_aIPSt4pairIPKcN5folly5RangeIS2_EEES7_SaIS6_EET0_T_SA_S9_RT1_.exit57 _ZSt22__uninitialized_move_aIPSt4pairIPKcN5folly5RangeIS2_EEES7_SaIS6_EET0_T_SA_S9_RT1_.exit57: ; preds = %_ZSt22__uninitialized_move_aIPSt4pairIPKcN5folly5RangeIS2_EEES7_SaIS6_EET0_T_SA_S9_RT1_.exit57.loopexit, %_ZSt22__uninitialized_copy_aIPKSt4pairIPKcN5folly5RangeIS2_EEEPS6_S6_ET0_T_SB_SA_RSaIT1_E.exit - %5 = phi ptr [ %.pre124, %_ZSt22__uninitialized_move_aIPSt4pairIPKcN5folly5RangeIS2_EEES7_SaIS6_EET0_T_SA_S9_RT1_.exit57.loopexit ], [ %add.ptr36, %_ZSt22__uninitialized_copy_aIPKSt4pairIPKcN5folly5RangeIS2_EEEPS6_S6_ET0_T_SB_SA_RSaIT1_E.exit ] - %add.ptr44 = getelementptr inbounds i8, ptr %5, i64 %sub.ptr.sub.i + %6 = phi ptr [ %.pre124, %_ZSt22__uninitialized_move_aIPSt4pairIPKcN5folly5RangeIS2_EEES7_SaIS6_EET0_T_SA_S9_RT1_.exit57.loopexit ], [ %add.ptr36, %_ZSt22__uninitialized_copy_aIPKSt4pairIPKcN5folly5RangeIS2_EEEPS6_S6_ET0_T_SB_SA_RSaIT1_E.exit ] + %add.ptr44 = getelementptr inbounds i8, ptr %6, i64 %sub.ptr.sub.i store ptr %add.ptr44, ptr %_M_finish, align 8 %cmp6.i.i.i.i.i61 = icmp sgt i64 %sub.ptr.sub.i, 0 br i1 %cmp6.i.i.i.i.i61, label %for.body.preheader.i.i.i.i.i67, label %if.end87 @@ -15224,8 +15224,8 @@ for.body.i.i.i.i.i69: ; preds = %for.body.i.i.i.i.i6 %__n.09.i.i.i.i.i70 = phi i64 [ %dec.i.i.i.i.i77, %for.body.i.i.i.i.i69 ], [ %sub.ptr.div10.i.i.i.i.i68, %for.body.preheader.i.i.i.i.i67 ] %__result.addr.08.i.i.i.i.i71 = phi ptr [ %incdec.ptr1.i.i.i.i.i76, %for.body.i.i.i.i.i69 ], [ %__position.coerce, %for.body.preheader.i.i.i.i.i67 ] %__first.addr.07.i.i.i.i.i72 = phi ptr [ %incdec.ptr.i.i.i.i.i75, %for.body.i.i.i.i.i69 ], [ %__first, %for.body.preheader.i.i.i.i.i67 ] - %6 = load ptr, ptr %__first.addr.07.i.i.i.i.i72, align 8 - store ptr %6, ptr %__result.addr.08.i.i.i.i.i71, align 8 + %7 = load ptr, ptr %__first.addr.07.i.i.i.i.i72, align 8 + store ptr %7, ptr %__result.addr.08.i.i.i.i.i71, align 8 %second.i.i.i.i.i.i73 = getelementptr inbounds nuw i8, ptr %__first.addr.07.i.i.i.i.i72, i64 8 %second3.i.i.i.i.i.i74 = getelementptr inbounds nuw i8, ptr %__result.addr.08.i.i.i.i.i71, i64 8 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %second3.i.i.i.i.i.i74, ptr noundef nonnull align 8 dereferenceable(16) %second.i.i.i.i.i.i73, i64 16, i1 false) @@ -15236,8 +15236,8 @@ for.body.i.i.i.i.i69: ; preds = %for.body.i.i.i.i.i6 br i1 %cmp.i.i.i.i.i78, label %for.body.i.i.i.i.i69, label %if.end87, !llvm.loop !190 if.else50: ; preds = %if.then - %7 = load ptr, ptr %this, align 8 - %sub.ptr.rhs.cast.i.i81 = ptrtoint ptr %7 to i64 + %8 = load ptr, ptr %this, align 8 + %sub.ptr.rhs.cast.i.i81 = ptrtoint ptr %8 to i64 %sub.ptr.sub.i.i82 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i.i81 %sub.ptr.div.i.i83 = sdiv exact i64 %sub.ptr.sub.i.i82, 24 %sub.i = sub nsw i64 384307168202282325, %sub.ptr.div.i.i83 @@ -15252,8 +15252,8 @@ _ZNKSt6vectorISt4pairIPKcN5folly5RangeIS2_EEESaIS6_EE12_M_check_lenEmS2_.exit: ; %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i83, i64 %sub.ptr.div.i.i) %add.i = add nsw i64 %.sroa.speculated.i, %sub.ptr.div.i.i83 %cmp7.i = icmp ult i64 %add.i, %sub.ptr.div.i.i83 - %8 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 384307168202282325) - %cond.i = select i1 %cmp7.i, i64 384307168202282325, i64 %8 + %9 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 384307168202282325) + %cond.i = select i1 %cmp7.i, i64 384307168202282325, i64 %9 %cmp.not.i = icmp eq i64 %cond.i, 0 br i1 %cmp.not.i, label %_ZNSt12_Vector_baseISt4pairIPKcN5folly5RangeIS2_EEESaIS6_EE11_M_allocateEm.exit, label %cond.true.i @@ -15264,12 +15264,12 @@ cond.true.i: ; preds = %_ZNKSt6vectorISt4pa _ZNSt12_Vector_baseISt4pairIPKcN5folly5RangeIS2_EEESaIS6_EE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorISt4pairIPKcN5folly5RangeIS2_EEESaIS6_EE12_M_check_lenEmS2_.exit, %cond.true.i %cond.i84 = phi ptr [ %call5.i.i.i, %cond.true.i ], [ null, %_ZNKSt6vectorISt4pairIPKcN5folly5RangeIS2_EEESaIS6_EE12_M_check_lenEmS2_.exit ] - %cmp.i.i.not7.i.i.i.i.i85 = icmp eq ptr %7, %__position.coerce + %cmp.i.i.not7.i.i.i.i.i85 = icmp eq ptr %8, %__position.coerce br i1 %cmp.i.i.not7.i.i.i.i.i85, label %for.body.i.i.i.i94.preheader, label %for.body.i.i.i.i.i86 for.body.i.i.i.i.i86: ; preds = %_ZNSt12_Vector_baseISt4pairIPKcN5folly5RangeIS2_EEESaIS6_EE11_M_allocateEm.exit, %for.body.i.i.i.i.i86 %__cur.09.i.i.i.i.i87 = phi ptr [ %incdec.ptr.i.i.i.i.i90, %for.body.i.i.i.i.i86 ], [ %cond.i84, %_ZNSt12_Vector_baseISt4pairIPKcN5folly5RangeIS2_EEESaIS6_EE11_M_allocateEm.exit ] - %__first.sroa.0.08.i.i.i.i.i88 = phi ptr [ %incdec.ptr.i.i.i.i.i.i89, %for.body.i.i.i.i.i86 ], [ %7, %_ZNSt12_Vector_baseISt4pairIPKcN5folly5RangeIS2_EEESaIS6_EE11_M_allocateEm.exit ] + %__first.sroa.0.08.i.i.i.i.i88 = phi ptr [ %incdec.ptr.i.i.i.i.i.i89, %for.body.i.i.i.i.i86 ], [ %8, %_ZNSt12_Vector_baseISt4pairIPKcN5folly5RangeIS2_EEESaIS6_EE11_M_allocateEm.exit ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %__cur.09.i.i.i.i.i87, ptr noundef nonnull align 8 dereferenceable(24) %__first.sroa.0.08.i.i.i.i.i88, i64 24, i1 false) %incdec.ptr.i.i.i.i.i.i89 = getelementptr inbounds nuw i8, ptr %__first.sroa.0.08.i.i.i.i.i88, i64 24 %incdec.ptr.i.i.i.i.i90 = getelementptr inbounds nuw i8, ptr %__cur.09.i.i.i.i.i87, i64 24 @@ -15304,11 +15304,11 @@ for.body.i.i.i.i.i103: ; preds = %invoke.cont61, %for invoke.cont65: ; preds = %for.body.i.i.i.i.i103, %invoke.cont61 %__cur.0.lcssa.i.i.i.i.i109 = phi ptr [ %incdec.ptr1.i.i.i.i98, %invoke.cont61 ], [ %incdec.ptr.i.i.i.i.i107, %for.body.i.i.i.i.i103 ] - %tobool.not.i = icmp eq ptr %7, null + %tobool.not.i = icmp eq ptr %8, null br i1 %tobool.not.i, label %_ZNSt12_Vector_baseISt4pairIPKcN5folly5RangeIS2_EEESaIS6_EE13_M_deallocateEPS6_m.exit, label %if.then.i111 if.then.i111: ; preds = %invoke.cont65 - tail call void @_ZdlPv(ptr noundef nonnull %7) #35 + tail call void @_ZdlPv(ptr noundef nonnull %8) #35 br label %_ZNSt12_Vector_baseISt4pairIPKcN5folly5RangeIS2_EEESaIS6_EE13_M_deallocateEPS6_m.exit _ZNSt12_Vector_baseISt4pairIPKcN5folly5RangeIS2_EEESaIS6_EE13_M_deallocateEPS6_m.exit: ; preds = %invoke.cont65, %if.then.i111 diff --git a/bench/qdrant-rs/optimized/1tmihqgw6mdvoma8.ll b/bench/qdrant-rs/optimized/1tmihqgw6mdvoma8.ll index a3bf234dd95..806a3b996aa 100644 --- a/bench/qdrant-rs/optimized/1tmihqgw6mdvoma8.ll +++ b/bench/qdrant-rs/optimized/1tmihqgw6mdvoma8.ll @@ -599,7 +599,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h5bcb86675d70a2cfE.exit.thread" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #15, !noalias !9 br label %_ZN5alloc7raw_vec11finish_grow17he514004bbf263a70E.exit @@ -658,7 +658,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h7626fb062e0734c5E.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #15, !noalias !13 br label %_ZN5alloc7raw_vec11finish_grow17he514004bbf263a70E.exit @@ -953,7 +953,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h733c3f12b8b2bab9E.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #15, !noalias !33 br label %_ZN5alloc7raw_vec11finish_grow17he514004bbf263a70E.exit @@ -1012,7 +1012,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he73e40f2ea1da0e9E.exit.thread" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #15, !noalias !37 br label %_ZN5alloc7raw_vec11finish_grow17he514004bbf263a70E.exit @@ -1129,7 +1129,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h5bcb86675d70a2cfE.exit.thread.i" %15 = shl nuw i64 %7, 2 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 4, i64 noundef %10) #15, !noalias !48 br label %_ZN5alloc7raw_vec11finish_grow17he514004bbf263a70E.exit.i @@ -1188,7 +1188,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h70b7b60171c0c2a0E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 4, i64 noundef %10) #15, !noalias !55 br label %_ZN5alloc7raw_vec11finish_grow17he514004bbf263a70E.exit.i @@ -1551,7 +1551,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he73e40f2ea1da0e9E.exit.thread.i" %15 = shl nuw i64 %7, 2 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 4, i64 noundef %10) #15, !noalias !97 br label %_ZN5alloc7raw_vec11finish_grow17he514004bbf263a70E.exit.i @@ -1684,7 +1684,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h733c3f12b8b2bab9E.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #15, !noalias !111 br label %_ZN5alloc7raw_vec11finish_grow17he514004bbf263a70E.exit.i @@ -1743,7 +1743,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h7626fb062e0734c5E.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #15, !noalias !118 br label %_ZN5alloc7raw_vec11finish_grow17he514004bbf263a70E.exit.i @@ -1802,7 +1802,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he73e40f2ea1da0e9E.exit.thread.i" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #15, !noalias !125 br label %_ZN5alloc7raw_vec11finish_grow17he514004bbf263a70E.exit.i @@ -1979,7 +1979,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h5bcb86675d70a2cfE.exit.thread.i" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #15, !noalias !146 br label %_ZN5alloc7raw_vec11finish_grow17he514004bbf263a70E.exit.i diff --git a/bench/qemu/optimized/hw_net_ne2000.c.ll b/bench/qemu/optimized/hw_net_ne2000.c.ll index ce8b0b33bd8..573369dec98 100644 --- a/bench/qemu/optimized/hw_net_ne2000.c.ll +++ b/bench/qemu/optimized/hw_net_ne2000.c.ll @@ -113,13 +113,12 @@ ne2000_buffer_full.exit: ; preds = %lor.lhs.false %curpag.i = getelementptr inbounds nuw i8, ptr %call, i64 307 %4 = load i8, ptr %curpag.i, align 1 %conv.i = zext i8 %4 to i32 - %shl.i = shl nuw nsw i32 %conv.i, 8 %boundary1.i = getelementptr inbounds nuw i8, ptr %call, i64 284 %5 = load i8, ptr %boundary1.i, align 4 %conv2.i = zext i8 %5 to i32 - %shl3.i = shl nuw nsw i32 %conv2.i, 8 - %cmp4.i = icmp samesign ult i32 %shl.i, %shl3.i - %sub.i = sub nsw i32 %shl3.i, %shl.i + %cmp4.i = icmp ult i8 %4, %5 + %6 = sub nsw i32 %conv2.i, %conv.i + %sub.i = shl nsw i32 %6, 8 %sub9.i = sub nuw i32 %2, %3 %sub11.i = select i1 %cmp4.i, i32 0, i32 %sub9.i %avail.0.i = add i32 %sub.i, %sub11.i @@ -128,8 +127,8 @@ ne2000_buffer_full.exit: ; preds = %lor.lhs.false if.end: ; preds = %ne2000_buffer_full.exit %rxcr = getelementptr inbounds nuw i8, ptr %call, i64 297 - %6 = load i8, ptr %rxcr, align 1 - %conv3 = zext i8 %6 to i32 + %7 = load i8, ptr %rxcr, align 1 + %conv3 = zext i8 %7 to i32 %and4 = and i32 %conv3, 16 %tobool5.not = icmp eq i32 %and4, 0 br i1 %tobool5.not, label %if.else, label %if.end86 @@ -145,9 +144,9 @@ if.then9: ; preds = %if.else br i1 %tobool13.not, label %return, label %if.end86 if.else16: ; preds = %if.else - %7 = load i8, ptr %buf, align 1 - %8 = and i8 %7, 1 - %tobool19.not = icmp eq i8 %8, 0 + %8 = load i8, ptr %buf, align 1 + %9 = and i8 %8, 1 + %tobool19.not = icmp eq i8 %9, 0 br i1 %tobool19.not, label %if.else36, label %if.then20 if.then20: ; preds = %if.else16 @@ -162,8 +161,8 @@ if.end26: ; preds = %if.then20 %shr28 = lshr i32 %call27, 29 %idxprom = zext nneg i32 %shr28 to i64 %arrayidx29 = getelementptr [8 x i8], ptr %mult, i64 0, i64 %idxprom - %9 = load i8, ptr %arrayidx29, align 1 - %conv30 = zext i8 %9 to i32 + %10 = load i8, ptr %arrayidx29, align 1 + %conv30 = zext i8 %10 to i32 %and31 = and i32 %shr, 7 %shl = shl nuw nsw i32 1, %and31 %and32 = and i32 %shl, %conv30 @@ -173,80 +172,80 @@ if.end26: ; preds = %if.then20 if.end26.if.end86_crit_edge: ; preds = %if.end26 %.pre = load i8, ptr %curpag.i, align 1 %.pre77 = zext i8 %.pre to i32 - %.pre78 = shl nuw nsw i32 %.pre77, 8 br label %if.end86 if.else36: ; preds = %if.else16 %mem = getelementptr inbounds nuw i8, ptr %call, i64 8552 - %10 = load i8, ptr %mem, align 8 - %cmp = icmp eq i8 %10, %7 + %11 = load i8, ptr %mem, align 8 + %cmp = icmp eq i8 %11, %8 br i1 %cmp, label %land.lhs.true, label %return land.lhs.true: ; preds = %if.else36 %arrayidx43 = getelementptr i8, ptr %call, i64 8554 - %11 = load i8, ptr %arrayidx43, align 2 + %12 = load i8, ptr %arrayidx43, align 2 %arrayidx45 = getelementptr i8, ptr %buf, i64 1 - %12 = load i8, ptr %arrayidx45, align 1 - %cmp47 = icmp eq i8 %11, %12 + %13 = load i8, ptr %arrayidx45, align 1 + %cmp47 = icmp eq i8 %12, %13 br i1 %cmp47, label %land.lhs.true49, label %return land.lhs.true49: ; preds = %land.lhs.true %arrayidx51 = getelementptr i8, ptr %call, i64 8556 - %13 = load i8, ptr %arrayidx51, align 4 + %14 = load i8, ptr %arrayidx51, align 4 %arrayidx53 = getelementptr i8, ptr %buf, i64 2 - %14 = load i8, ptr %arrayidx53, align 1 - %cmp55 = icmp eq i8 %13, %14 + %15 = load i8, ptr %arrayidx53, align 1 + %cmp55 = icmp eq i8 %14, %15 br i1 %cmp55, label %land.lhs.true57, label %return land.lhs.true57: ; preds = %land.lhs.true49 %arrayidx59 = getelementptr i8, ptr %call, i64 8558 - %15 = load i8, ptr %arrayidx59, align 2 + %16 = load i8, ptr %arrayidx59, align 2 %arrayidx61 = getelementptr i8, ptr %buf, i64 3 - %16 = load i8, ptr %arrayidx61, align 1 - %cmp63 = icmp eq i8 %15, %16 + %17 = load i8, ptr %arrayidx61, align 1 + %cmp63 = icmp eq i8 %16, %17 br i1 %cmp63, label %land.lhs.true65, label %return land.lhs.true65: ; preds = %land.lhs.true57 %arrayidx67 = getelementptr i8, ptr %call, i64 8560 - %17 = load i8, ptr %arrayidx67, align 8 + %18 = load i8, ptr %arrayidx67, align 8 %arrayidx69 = getelementptr i8, ptr %buf, i64 4 - %18 = load i8, ptr %arrayidx69, align 1 - %cmp71 = icmp eq i8 %17, %18 + %19 = load i8, ptr %arrayidx69, align 1 + %cmp71 = icmp eq i8 %18, %19 br i1 %cmp71, label %land.lhs.true73, label %return land.lhs.true73: ; preds = %land.lhs.true65 %arrayidx75 = getelementptr i8, ptr %call, i64 8562 - %19 = load i8, ptr %arrayidx75, align 2 + %20 = load i8, ptr %arrayidx75, align 2 %arrayidx77 = getelementptr i8, ptr %buf, i64 5 - %20 = load i8, ptr %arrayidx77, align 1 - %cmp79 = icmp eq i8 %19, %20 + %21 = load i8, ptr %arrayidx77, align 1 + %cmp79 = icmp eq i8 %20, %21 br i1 %cmp79, label %if.end86, label %return if.end86: ; preds = %if.end26.if.end86_crit_edge, %if.then9, %land.lhs.true73, %if.end - %shl88.pre-phi = phi i32 [ %.pre78, %if.end26.if.end86_crit_edge ], [ %shl.i, %if.then9 ], [ %shl.i, %land.lhs.true73 ], [ %shl.i, %if.end ] - %21 = phi i8 [ %.pre, %if.end26.if.end86_crit_edge ], [ %4, %if.then9 ], [ %4, %land.lhs.true73 ], [ %4, %if.end ] - %cmp90 = icmp ugt i8 %21, -65 + %conv87.pre-phi = phi i32 [ %.pre77, %if.end26.if.end86_crit_edge ], [ %conv.i, %if.then9 ], [ %conv.i, %land.lhs.true73 ], [ %conv.i, %if.end ] + %22 = phi i8 [ %.pre, %if.end26.if.end86_crit_edge ], [ %4, %if.then9 ], [ %4, %land.lhs.true73 ], [ %4, %if.end ] + %shl88 = shl nuw nsw i32 %conv87.pre-phi, 8 + %cmp90 = icmp ugt i8 %22, -65 br i1 %cmp90, label %if.then92, label %if.end93 if.then92: ; preds = %if.end86 - %22 = load i32, ptr %start.i, align 4 + %23 = load i32, ptr %start.i, align 4 br label %if.end93 if.end93: ; preds = %if.then92, %if.end86 - %index.0 = phi i32 [ %22, %if.then92 ], [ %shl88.pre-phi, %if.end86 ] - %23 = trunc i64 %size_ to i32 - %conv94 = add i32 %23, 4 - %add96 = add i32 %23, 263 + %index.0 = phi i32 [ %23, %if.then92 ], [ %shl88, %if.end86 ] + %24 = trunc i64 %size_ to i32 + %conv94 = add i32 %24, 4 + %add96 = add i32 %24, 263 %and97 = and i32 %add96, -256 %add98 = add i32 %index.0, %and97 - %24 = load i32, ptr %stop.i, align 8 - %cmp99.not = icmp ult i32 %add98, %24 + %25 = load i32, ptr %stop.i, align 8 + %cmp99.not = icmp ult i32 %add98, %25 br i1 %cmp99.not, label %if.end105, label %if.then101 if.then101: ; preds = %if.end93 - %25 = load i32, ptr %start.i, align 4 - %sub.neg = sub nuw i32 %add98, %24 - %sub104 = add i32 %sub.neg, %25 + %26 = load i32, ptr %start.i, align 4 + %sub.neg = sub nuw i32 %add98, %25 + %sub104 = add i32 %sub.neg, %26 br label %if.end105 if.end105: ; preds = %if.then101, %if.end93 @@ -256,9 +255,9 @@ if.end105: ; preds = %if.then101, %if.end %add.ptr = getelementptr i8, ptr %mem106, i64 %idx.ext %rsr = getelementptr inbounds nuw i8, ptr %call, i64 296 store i8 1, ptr %rsr, align 8 - %26 = load i8, ptr %buf, align 1 - %27 = and i8 %26, 1 - %tobool110.not = icmp eq i8 %27, 0 + %27 = load i8, ptr %buf, align 1 + %28 = and i8 %27, 1 + %tobool110.not = icmp eq i8 %28, 0 %spec.store.select = select i1 %tobool110.not, i8 1, i8 33 store i8 %spec.store.select, ptr %rsr, align 8 store i8 %spec.store.select, ptr %add.ptr, align 1 @@ -281,15 +280,15 @@ while.body.preheader: ; preds = %if.end105 br label %while.body while.body: ; preds = %while.body.preheader, %if.end155 - %28 = phi i32 [ %29, %if.end155 ], [ %24, %while.body.preheader ] + %29 = phi i32 [ %30, %if.end155 ], [ %25, %while.body.preheader ] %index.176 = phi i32 [ %index.2, %if.end155 ], [ %add126, %while.body.preheader ] %buf.addr.075 = phi ptr [ %add.ptr148, %if.end155 ], [ %buf, %while.body.preheader ] %size.074 = phi i64 [ %sub157, %if.end155 ], [ %size_, %while.body.preheader ] - %cmp130.not = icmp ugt i32 %index.176, %28 + %cmp130.not = icmp ugt i32 %index.176, %29 br i1 %cmp130.not, label %while.end, label %if.then132 if.then132: ; preds = %while.body - %sub134 = sub nuw i32 %28, %index.176 + %sub134 = sub nuw i32 %29, %index.176 %conv137 = trunc i64 %size.074 to i32 %spec.select = tail call i32 @llvm.umin.i32(i32 %sub134, i32 %conv137) %idx.ext144 = zext i32 %index.176 to i64 @@ -298,16 +297,16 @@ if.then132: ; preds = %while.body tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr145, ptr align 1 %buf.addr.075, i64 %conv146, i1 false) %add.ptr148 = getelementptr i8, ptr %buf.addr.075, i64 %conv146 %add149 = add i32 %spec.select, %index.176 - %29 = load i32, ptr %stop.i, align 8 - %cmp151 = icmp eq i32 %add149, %29 + %30 = load i32, ptr %stop.i, align 8 + %cmp151 = icmp eq i32 %add149, %30 br i1 %cmp151, label %if.then153, label %if.end155 if.then153: ; preds = %if.then132 - %30 = load i32, ptr %start.i, align 4 + %31 = load i32, ptr %start.i, align 4 br label %if.end155 if.end155: ; preds = %if.then153, %if.then132 - %index.2 = phi i32 [ %30, %if.then153 ], [ %add149, %if.then132 ] + %index.2 = phi i32 [ %31, %if.then153 ], [ %add149, %if.then132 ] %sub157 = sub i64 %size.074, %conv146 %cmp127.not = icmp eq i64 %sub157, 0 br i1 %cmp127.not, label %while.end, label %while.body, !llvm.loop !7 @@ -315,18 +314,18 @@ if.end155: ; preds = %if.then153, %if.the while.end: ; preds = %if.end155, %while.body, %if.end105 store i8 %conv119, ptr %curpag.i, align 1 %isr = getelementptr inbounds nuw i8, ptr %call, i64 298 - %31 = load i8, ptr %isr, align 2 - %32 = or i8 %31, 1 - store i8 %32, ptr %isr, align 2 + %32 = load i8, ptr %isr, align 2 + %33 = or i8 %32, 1 + store i8 %33, ptr %isr, align 2 %imr.i = getelementptr inbounds nuw i8, ptr %call, i64 300 - %33 = load i8, ptr %imr.i, align 4 - %and4.i = and i8 %32, 127 - %34 = and i8 %and4.i, %33 + %34 = load i8, ptr %imr.i, align 4 + %and4.i = and i8 %33, 127 + %35 = and i8 %and4.i, %34 %irq.i = getelementptr inbounds nuw i8, ptr %call, i64 320 - %35 = load ptr, ptr %irq.i, align 16 - %cmp.i = icmp ne i8 %34, 0 + %36 = load ptr, ptr %irq.i, align 16 + %cmp.i = icmp ne i8 %35, 0 %conv4.i = zext i1 %cmp.i to i32 - tail call void @qemu_set_irq(ptr noundef %35, i32 noundef %conv4.i) #9 + tail call void @qemu_set_irq(ptr noundef %36, i32 noundef %conv4.i) #9 br label %return return: ; preds = %lor.lhs.false, %if.else36, %land.lhs.true, %land.lhs.true49, %land.lhs.true57, %land.lhs.true65, %land.lhs.true73, %if.end26, %if.then20, %if.then9, %entry, %ne2000_buffer_full.exit, %while.end diff --git a/bench/quantlib/optimized/andreasenhugevolatilityinterpl.ll b/bench/quantlib/optimized/andreasenhugevolatilityinterpl.ll index 496ba837ee2..c1c4c613d76 100644 --- a/bench/quantlib/optimized/andreasenhugevolatilityinterpl.ll +++ b/bench/quantlib/optimized/andreasenhugevolatilityinterpl.ll @@ -3134,18 +3134,18 @@ invoke.cont215: ; preds = %invoke.cont205 %sub.ptr.lhs.cast.i314 = ptrtoint ptr %206 to i64 %sub.ptr.rhs.cast.i315 = ptrtoint ptr %207 to i64 %sub.ptr.sub.i316 = sub i64 %sub.ptr.lhs.cast.i314, %sub.ptr.rhs.cast.i315 - %sub.ptr.div.i317 = ashr exact i64 %sub.ptr.sub.i316, 3 %_M_finish.i.i318 = getelementptr inbounds nuw i8, ptr %this, i64 256 %208 = load ptr, ptr %_M_finish.i.i318, align 8, !tbaa !147 %209 = load ptr, ptr %dT_, align 8, !tbaa !148 %sub.ptr.lhs.cast.i.i319 = ptrtoint ptr %208 to i64 %sub.ptr.rhs.cast.i.i320 = ptrtoint ptr %209 to i64 %sub.ptr.sub.i.i321 = sub i64 %sub.ptr.lhs.cast.i.i319, %sub.ptr.rhs.cast.i.i320 - %sub.ptr.div.i.i322 = ashr exact i64 %sub.ptr.sub.i.i321, 3 - %cmp.i323 = icmp ugt i64 %sub.ptr.div.i317, %sub.ptr.div.i.i322 + %cmp.i323 = icmp ugt i64 %sub.ptr.sub.i316, %sub.ptr.sub.i.i321 br i1 %cmp.i323, label %if.then.i327, label %if.else.i324 if.then.i327: ; preds = %invoke.cont215 + %sub.ptr.div.i317 = ashr exact i64 %sub.ptr.sub.i316, 3 + %sub.ptr.div.i.i322 = ashr exact i64 %sub.ptr.sub.i.i321, 3 %sub.i = sub nuw nsw i64 %sub.ptr.div.i317, %sub.ptr.div.i.i322 invoke void @_ZNSt6vectorIdSaIdEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %dT_, i64 noundef %sub.i) to label %if.then.i327.invoke.cont219_crit_edge unwind label %lpad39 @@ -3156,11 +3156,10 @@ if.then.i327.invoke.cont219_crit_edge: ; preds = %if.then.i327 %.pre1030 = ptrtoint ptr %.pre1025 to i64 %.pre1031 = ptrtoint ptr %.pre1026 to i64 %.pre1032 = sub i64 %.pre1030, %.pre1031 - %.pre1033 = ashr exact i64 %.pre1032, 3 br label %invoke.cont219 if.else.i324: ; preds = %invoke.cont215 - %cmp4.i = icmp ult i64 %sub.ptr.div.i317, %sub.ptr.div.i.i322 + %cmp4.i = icmp ult i64 %sub.ptr.sub.i316, %sub.ptr.sub.i.i321 br i1 %cmp4.i, label %if.then5.i, label %invoke.cont219 if.then5.i: ; preds = %if.else.i324 @@ -3173,7 +3172,6 @@ invoke.cont.i.i: ; preds = %if.then5.i br label %invoke.cont219 invoke.cont219: ; preds = %if.then.i327.invoke.cont219_crit_edge, %invoke.cont.i.i, %if.then5.i, %if.else.i324 - %sub.ptr.div.i333.pre-phi = phi i64 [ %.pre1033, %if.then.i327.invoke.cont219_crit_edge ], [ %sub.ptr.div.i317, %invoke.cont.i.i ], [ %sub.ptr.div.i317, %if.then5.i ], [ %sub.ptr.div.i317, %if.else.i324 ] %sub.ptr.sub.i332.pre-phi = phi i64 [ %.pre1032, %if.then.i327.invoke.cont219_crit_edge ], [ %sub.ptr.sub.i316, %invoke.cont.i.i ], [ %sub.ptr.sub.i316, %if.then5.i ], [ %sub.ptr.sub.i316, %if.else.i324 ] %_M_finish.i.i334 = getelementptr inbounds nuw i8, ptr %this, i64 232 %210 = load ptr, ptr %_M_finish.i.i334, align 8, !tbaa !147 @@ -3181,17 +3179,18 @@ invoke.cont219: ; preds = %if.then.i327.invoke %sub.ptr.lhs.cast.i.i335 = ptrtoint ptr %210 to i64 %sub.ptr.rhs.cast.i.i336 = ptrtoint ptr %211 to i64 %sub.ptr.sub.i.i337 = sub i64 %sub.ptr.lhs.cast.i.i335, %sub.ptr.rhs.cast.i.i336 - %sub.ptr.div.i.i338 = ashr exact i64 %sub.ptr.sub.i.i337, 3 - %cmp.i339 = icmp ugt i64 %sub.ptr.div.i333.pre-phi, %sub.ptr.div.i.i338 + %cmp.i339 = icmp ugt i64 %sub.ptr.sub.i332.pre-phi, %sub.ptr.sub.i.i337 br i1 %cmp.i339, label %if.then.i346, label %if.else.i340 if.then.i346: ; preds = %invoke.cont219 - %sub.i347 = sub nuw nsw i64 %sub.ptr.div.i333.pre-phi, %sub.ptr.div.i.i338 + %sub.ptr.div.i333 = ashr exact i64 %sub.ptr.sub.i332.pre-phi, 3 + %sub.ptr.div.i.i338 = ashr exact i64 %sub.ptr.sub.i.i337, 3 + %sub.i347 = sub nuw nsw i64 %sub.ptr.div.i333, %sub.ptr.div.i.i338 invoke void @_ZNSt6vectorIdSaIdEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %expiryTimes_, i64 noundef %sub.i347) to label %invoke.cont223 unwind label %lpad39 if.else.i340: ; preds = %invoke.cont219 - %cmp4.i341 = icmp ult i64 %sub.ptr.div.i333.pre-phi, %sub.ptr.div.i.i338 + %cmp4.i341 = icmp ult i64 %sub.ptr.sub.i332.pre-phi, %sub.ptr.sub.i.i337 br i1 %cmp4.i341, label %if.then5.i342, label %invoke.cont223 if.then5.i342: ; preds = %if.else.i340 @@ -7167,18 +7166,18 @@ invoke.cont210: ; preds = %invoke.cont200 %sub.ptr.lhs.cast.i317 = ptrtoint ptr %199 to i64 %sub.ptr.rhs.cast.i318 = ptrtoint ptr %200 to i64 %sub.ptr.sub.i319 = sub i64 %sub.ptr.lhs.cast.i317, %sub.ptr.rhs.cast.i318 - %sub.ptr.div.i320 = ashr exact i64 %sub.ptr.sub.i319, 3 %_M_finish.i.i321 = getelementptr inbounds nuw i8, ptr %this, i64 256 %201 = load ptr, ptr %_M_finish.i.i321, align 8, !tbaa !147 %202 = load ptr, ptr %dT_, align 8, !tbaa !148 %sub.ptr.lhs.cast.i.i322 = ptrtoint ptr %201 to i64 %sub.ptr.rhs.cast.i.i323 = ptrtoint ptr %202 to i64 %sub.ptr.sub.i.i324 = sub i64 %sub.ptr.lhs.cast.i.i322, %sub.ptr.rhs.cast.i.i323 - %sub.ptr.div.i.i325 = ashr exact i64 %sub.ptr.sub.i.i324, 3 - %cmp.i326 = icmp ugt i64 %sub.ptr.div.i320, %sub.ptr.div.i.i325 + %cmp.i326 = icmp ugt i64 %sub.ptr.sub.i319, %sub.ptr.sub.i.i324 br i1 %cmp.i326, label %if.then.i330, label %if.else.i327 if.then.i330: ; preds = %invoke.cont210 + %sub.ptr.div.i320 = ashr exact i64 %sub.ptr.sub.i319, 3 + %sub.ptr.div.i.i325 = ashr exact i64 %sub.ptr.sub.i.i324, 3 %sub.i = sub nuw nsw i64 %sub.ptr.div.i320, %sub.ptr.div.i.i325 invoke void @_ZNSt6vectorIdSaIdEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %dT_, i64 noundef %sub.i) to label %if.then.i330.invoke.cont214_crit_edge unwind label %lpad37 @@ -7189,11 +7188,10 @@ if.then.i330.invoke.cont214_crit_edge: ; preds = %if.then.i330 %.pre1033 = ptrtoint ptr %.pre1028 to i64 %.pre1034 = ptrtoint ptr %.pre1029 to i64 %.pre1035 = sub i64 %.pre1033, %.pre1034 - %.pre1036 = ashr exact i64 %.pre1035, 3 br label %invoke.cont214 if.else.i327: ; preds = %invoke.cont210 - %cmp4.i = icmp ult i64 %sub.ptr.div.i320, %sub.ptr.div.i.i325 + %cmp4.i = icmp ult i64 %sub.ptr.sub.i319, %sub.ptr.sub.i.i324 br i1 %cmp4.i, label %if.then5.i, label %invoke.cont214 if.then5.i: ; preds = %if.else.i327 @@ -7206,7 +7204,6 @@ invoke.cont.i.i: ; preds = %if.then5.i br label %invoke.cont214 invoke.cont214: ; preds = %if.then.i330.invoke.cont214_crit_edge, %invoke.cont.i.i, %if.then5.i, %if.else.i327 - %sub.ptr.div.i336.pre-phi = phi i64 [ %.pre1036, %if.then.i330.invoke.cont214_crit_edge ], [ %sub.ptr.div.i320, %invoke.cont.i.i ], [ %sub.ptr.div.i320, %if.then5.i ], [ %sub.ptr.div.i320, %if.else.i327 ] %sub.ptr.sub.i335.pre-phi = phi i64 [ %.pre1035, %if.then.i330.invoke.cont214_crit_edge ], [ %sub.ptr.sub.i319, %invoke.cont.i.i ], [ %sub.ptr.sub.i319, %if.then5.i ], [ %sub.ptr.sub.i319, %if.else.i327 ] %_M_finish.i.i337 = getelementptr inbounds nuw i8, ptr %this, i64 232 %203 = load ptr, ptr %_M_finish.i.i337, align 8, !tbaa !147 @@ -7214,17 +7211,18 @@ invoke.cont214: ; preds = %if.then.i330.invoke %sub.ptr.lhs.cast.i.i338 = ptrtoint ptr %203 to i64 %sub.ptr.rhs.cast.i.i339 = ptrtoint ptr %204 to i64 %sub.ptr.sub.i.i340 = sub i64 %sub.ptr.lhs.cast.i.i338, %sub.ptr.rhs.cast.i.i339 - %sub.ptr.div.i.i341 = ashr exact i64 %sub.ptr.sub.i.i340, 3 - %cmp.i342 = icmp ugt i64 %sub.ptr.div.i336.pre-phi, %sub.ptr.div.i.i341 + %cmp.i342 = icmp ugt i64 %sub.ptr.sub.i335.pre-phi, %sub.ptr.sub.i.i340 br i1 %cmp.i342, label %if.then.i349, label %if.else.i343 if.then.i349: ; preds = %invoke.cont214 - %sub.i350 = sub nuw nsw i64 %sub.ptr.div.i336.pre-phi, %sub.ptr.div.i.i341 + %sub.ptr.div.i336 = ashr exact i64 %sub.ptr.sub.i335.pre-phi, 3 + %sub.ptr.div.i.i341 = ashr exact i64 %sub.ptr.sub.i.i340, 3 + %sub.i350 = sub nuw nsw i64 %sub.ptr.div.i336, %sub.ptr.div.i.i341 invoke void @_ZNSt6vectorIdSaIdEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %expiryTimes_, i64 noundef %sub.i350) to label %invoke.cont218 unwind label %lpad37 if.else.i343: ; preds = %invoke.cont214 - %cmp4.i344 = icmp ult i64 %sub.ptr.div.i336.pre-phi, %sub.ptr.div.i.i341 + %cmp4.i344 = icmp ult i64 %sub.ptr.sub.i335.pre-phi, %sub.ptr.sub.i.i340 br i1 %cmp4.i344, label %if.then5.i345, label %invoke.cont218 if.then5.i345: ; preds = %if.else.i343 diff --git a/bench/quantlib/optimized/fdm3dimsolver.ll b/bench/quantlib/optimized/fdm3dimsolver.ll index 424137b2e51..fda09233c75 100644 --- a/bench/quantlib/optimized/fdm3dimsolver.ll +++ b/bench/quantlib/optimized/fdm3dimsolver.ll @@ -5164,20 +5164,18 @@ for.body: ; preds = %for.body.lr.ph, %_Z %sub.ptr.rhs.cast.i39 = ptrtoint ptr %42 to i64 %sub.ptr.sub.i40 = sub i64 %sub.ptr.lhs.cast.i38, %sub.ptr.rhs.cast.i39 %sub.ptr.div.i41 = ashr exact i64 %sub.ptr.sub.i40, 3 - %mul = shl i64 %i.097, 3 - %mul32 = mul i64 %mul, %sub.ptr.div.i36 - %add.ptr.idx = mul i64 %mul32, %sub.ptr.div.i41 + %mul = mul i64 %sub.ptr.div.i41, %sub.ptr.div.i36 + %mul32 = mul i64 %mul, %i.097 %add = add nuw i64 %i.097, 1 - %mul37 = mul i64 %sub.ptr.div.i41, %sub.ptr.div.i36 - %mul40 = shl i64 %mul37, 3 - %add.ptr41.idx = mul i64 %mul40, %add - %tobool.not.i.i.i.i.i55 = icmp samesign eq i64 %add.ptr41.idx, %add.ptr.idx + %mul40 = mul i64 %mul, %add + %tobool.not.i.i.i.i.i55 = icmp eq i64 %mul40, %mul32 br i1 %tobool.not.i.i.i.i.i55, label %invoke.cont45, label %if.then.i.i.i.i.i56 if.then.i.i.i.i.i56: ; preds = %for.body + %add.ptr.idx = shl nuw nsw i64 %mul32, 3 %43 = load ptr, ptr %rhs, align 8, !tbaa !3 %add.ptr = getelementptr inbounds nuw i8, ptr %43, i64 %add.ptr.idx - %gepdiff = sub nsw i64 %add.ptr41.idx, %add.ptr.idx + %gepdiff = shl nsw i64 %mul, 3 %44 = load ptr, ptr %resultValues_, align 8, !tbaa !91 %add.ptr.i = getelementptr inbounds nuw %"class.QuantLib::Matrix", ptr %44, i64 %i.097 %45 = load ptr, ptr %add.ptr.i, align 8, !tbaa !3 @@ -6134,20 +6132,18 @@ for.body: ; preds = %_ZN8QuantLib6Matrix %sub.ptr.rhs.cast.i60 = ptrtoint ptr %32 to i64 %sub.ptr.sub.i61 = sub i64 %sub.ptr.lhs.cast.i59, %sub.ptr.rhs.cast.i60 %sub.ptr.div.i62 = ashr exact i64 %sub.ptr.sub.i61, 3 - %mul = shl i64 %i.0148, 3 - %mul22 = mul i64 %mul, %sub.ptr.div.i57 - %add.ptr.idx = mul i64 %mul22, %sub.ptr.div.i62 + %mul = mul i64 %sub.ptr.div.i62, %sub.ptr.div.i57 + %mul22 = mul i64 %mul, %i.0148 %add = add nuw i64 %i.0148, 1 - %mul27 = mul i64 %sub.ptr.div.i62, %sub.ptr.div.i57 - %mul30 = shl i64 %mul27, 3 - %add.ptr31.idx = mul i64 %mul30, %add - %tobool.not.i.i.i.i.i = icmp samesign eq i64 %add.ptr31.idx, %add.ptr.idx + %mul30 = mul i64 %mul, %add + %tobool.not.i.i.i.i.i = icmp eq i64 %mul30, %mul22 br i1 %tobool.not.i.i.i.i.i, label %_ZSt4copyIPKdPdET0_T_S4_S3_.exit, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %for.body + %add.ptr.idx = shl nuw nsw i64 %mul22, 3 %33 = load ptr, ptr %call6, align 8, !tbaa !3 %add.ptr = getelementptr inbounds nuw i8, ptr %33, i64 %add.ptr.idx - %gepdiff = sub nsw i64 %add.ptr31.idx, %add.ptr.idx + %gepdiff = shl nsw i64 %mul, 3 %add.ptr.i = getelementptr inbounds nuw %"class.QuantLib::Matrix", ptr %16, i64 %i.0148 %34 = load ptr, ptr %add.ptr.i, align 8, !tbaa !3 call void @llvm.memmove.p0.p0.i64(ptr align 8 %34, ptr align 8 %add.ptr, i64 %gepdiff, i1 false) diff --git a/bench/quantlib/optimized/fdmmesherintegral.ll b/bench/quantlib/optimized/fdmmesherintegral.ll index 7a98e57c975..8aabca67b09 100644 --- a/bench/quantlib/optimized/fdmmesherintegral.ll +++ b/bench/quantlib/optimized/fdmmesherintegral.ll @@ -570,7 +570,7 @@ _ZN8QuantLib5ArrayC2Em.exit64: ; preds = %cond.true.i59, %inv br i1 %cmp.not.i55, label %for.cond.cleanup, label %for.body.lr.ph for.body.lr.ph: ; preds = %_ZN8QuantLib5ArrayC2Em.exit64 - %mul = shl i64 %43, 3 + %gepdiff = shl nsw i64 %43, 3 br label %for.body for.cond.cleanup: ; preds = %invoke.cont75, %_ZN8QuantLib5ArrayC2Em.exit64 @@ -643,17 +643,18 @@ lpad61: ; preds = %invoke.cont73 for.body: ; preds = %for.body.lr.ph, %invoke.cont75 %i.0118 = phi i64 [ 0, %for.body.lr.ph ], [ %add, %invoke.cont75 ] - %add.ptr.idx = mul i64 %mul, %i.0118 + %mul = mul i64 %i.0118, %43 %add = add nuw i64 %i.0118, 1 - %add.ptr70.idx = mul i64 %mul, %add - %tobool.not.i.i.i.i.i = icmp samesign eq i64 %add.ptr70.idx, %add.ptr.idx + %mul69 = mul i64 %add, %43 + %tobool.not.i.i.i.i.i = icmp eq i64 %mul69, %mul br i1 %tobool.not.i.i.i.i.i, label %invoke.cont73, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %for.body + %add.ptr.idx = shl nuw nsw i64 %mul, 3 %61 = load ptr, ptr %f, align 8, !tbaa !10 %add.ptr = getelementptr inbounds nuw i8, ptr %61, i64 %add.ptr.idx %62 = load ptr, ptr %fSub, align 8, !tbaa !10 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %62, ptr align 8 %add.ptr, i64 %mul, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 8 %62, ptr align 8 %add.ptr, i64 %gepdiff, i1 false) br label %invoke.cont73 invoke.cont73: ; preds = %if.then.i.i.i.i.i, %for.body diff --git a/bench/quantlib/optimized/issuer.ll b/bench/quantlib/optimized/issuer.ll index 195a2dc6602..5b34d3f6e8a 100644 --- a/bench/quantlib/optimized/issuer.ll +++ b/bench/quantlib/optimized/issuer.ll @@ -241,8 +241,7 @@ land.lhs.true: ; preds = %_ZNSt3setIN5boost10 %sub.ptr.lhs.cast.i32 = ptrtoint ptr %10 to i64 %sub.ptr.rhs.cast.i33 = ptrtoint ptr %11 to i64 %sub.ptr.sub.i34 = sub i64 %sub.ptr.lhs.cast.i32, %sub.ptr.rhs.cast.i33 - %sub.ptr.div.i35 = ashr exact i64 %sub.ptr.sub.i34, 4 - %cmp5 = icmp eq i64 %sub.ptr.div.i, %sub.ptr.div.i35 + %cmp5 = icmp eq i64 %sub.ptr.sub.i24, %sub.ptr.sub.i34 br i1 %cmp5, label %land.lhs.true6, label %if.then land.lhs.true6: ; preds = %land.lhs.true diff --git a/bench/quantlib/optimized/noarbsabr.ll b/bench/quantlib/optimized/noarbsabr.ll index 09d04be9e99..7fe53539131 100644 --- a/bench/quantlib/optimized/noarbsabr.ll +++ b/bench/quantlib/optimized/noarbsabr.ll @@ -3457,9 +3457,10 @@ _ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEdET_S8_S8 _ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEdET_S8_S8_RKT0_.exit: ; preds = %_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEdET_S8_S8_RKT0_.exit.loopexit, %entry %sub.ptr.lhs.cast.i.pre-phi = phi i64 [ %.pre418, %_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEdET_S8_S8_RKT0_.exit.loopexit ], [ %sub.ptr.rhs.cast.i.i.i.i.i, %entry ] + %__first.sroa.0.0.lcssa.i.i = phi ptr [ %__first.sroa.0.1.i.i, %_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEdET_S8_S8_RKT0_.exit.loopexit ], [ %0, %entry ] %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i.pre-phi, %sub.ptr.rhs.cast.i.i.i.i.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 - %cmp = icmp eq i64 %sub.ptr.div.i, %sub.ptr.div.i.i.i.i.i + %cmp = icmp eq ptr %__first.sroa.0.0.lcssa.i.i, %1 %dec = sext i1 %cmp to i64 %spec.select = add nsw i64 %sub.ptr.div.i, %dec %cmp18 = icmp eq i64 %spec.select, 0 @@ -3511,7 +3512,7 @@ _ZSt11upper_boundISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPKdSt6vect %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i72, %18 %sub.ptr.div.i.i = ashr exact i64 %sub.ptr.sub.i.i, 3 %sub41 = sub nsw i64 %sub.ptr.div.i75, %sub.ptr.div.i.i - %cmp42 = icmp eq i64 %sub.ptr.div.i75, %sub.ptr.div.i.i + %cmp42 = icmp eq i64 %18, %sub.ptr.rhs.cast.i73 %spec.select63 = select i1 %cmp42, i64 1, i64 %sub41 %19 = getelementptr double, ptr %9, i64 %spec.select63 %add.ptr.i86 = getelementptr i8, ptr %19, i64 -8 @@ -3558,7 +3559,7 @@ _ZSt11upper_boundISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPKdSt6vect %sub.ptr.sub.i.i119 = sub i64 %sub.ptr.lhs.cast.i90, %32 %sub.ptr.div.i.i120 = ashr exact i64 %sub.ptr.sub.i.i119, 3 %sub67 = sub nsw i64 %sub.ptr.div.i93, %sub.ptr.div.i.i120 - %cmp68 = icmp eq i64 %sub.ptr.div.i93, %sub.ptr.div.i.i120 + %cmp68 = icmp eq i64 %32, %sub.ptr.rhs.cast.i91 %rhoInd.0 = select i1 %cmp68, i64 1, i64 %sub67 %cmp74 = icmp eq i64 %rhoInd.0, %sub.ptr.div.i93 %dec76 = sext i1 %cmp74 to i64 @@ -3607,9 +3608,10 @@ _ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEdET_S8_S8 _ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEdET_S8_S8_RKT0_.exit152: ; preds = %_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEdET_S8_S8_RKT0_.exit152.loopexit, %_ZSt11upper_boundISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEEdET_SA_SA_RKT0_.exit113 %sub.ptr.lhs.cast.i153.pre-phi = phi i64 [ %.pre419, %_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEdET_S8_S8_RKT0_.exit152.loopexit ], [ %sub.ptr.rhs.cast.i.i.i.i.i131, %_ZSt11upper_boundISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEEdET_SA_SA_RKT0_.exit113 ] + %__first.sroa.0.0.lcssa.i.i135 = phi ptr [ %__first.sroa.0.1.i.i149, %_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEdET_S8_S8_RKT0_.exit152.loopexit ], [ %36, %_ZSt11upper_boundISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEEdET_SA_SA_RKT0_.exit113 ] %sub.ptr.sub.i155 = sub i64 %sub.ptr.lhs.cast.i153.pre-phi, %sub.ptr.rhs.cast.i.i.i.i.i131 %sub.ptr.div.i156 = ashr exact i64 %sub.ptr.sub.i155, 3 - %cmp109 = icmp eq i64 %sub.ptr.div.i156, %sub.ptr.div.i.i.i.i.i133 + %cmp109 = icmp eq ptr %__first.sroa.0.0.lcssa.i.i135, %37 %dec111 = sext i1 %cmp109 to i64 %nuInd.0 = add nsw i64 %sub.ptr.div.i156, %dec111 %cmp113.not = icmp eq i64 %nuInd.0, 0 @@ -3666,9 +3668,10 @@ _ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEdET_S8_S8 _ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEdET_S8_S8_RKT0_.exit187: ; preds = %_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEdET_S8_S8_RKT0_.exit187.loopexit, %cond.end %sub.ptr.lhs.cast.i188.pre-phi = phi i64 [ %.pre420, %_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEdET_S8_S8_RKT0_.exit187.loopexit ], [ %sub.ptr.rhs.cast.i.i.i.i.i166, %cond.end ] + %__first.sroa.0.0.lcssa.i.i170 = phi ptr [ %__first.sroa.0.1.i.i184, %_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEdET_S8_S8_RKT0_.exit187.loopexit ], [ %45, %cond.end ] %sub.ptr.sub.i190 = sub i64 %sub.ptr.lhs.cast.i188.pre-phi, %sub.ptr.rhs.cast.i.i.i.i.i166 %sub.ptr.div.i191 = ashr exact i64 %sub.ptr.sub.i190, 3 - %cmp142 = icmp eq i64 %sub.ptr.div.i191, %sub.ptr.div.i.i.i.i.i168 + %cmp142 = icmp eq ptr %__first.sroa.0.0.lcssa.i.i170, %46 br i1 %cmp142, label %if.end146, label %if.else if.else: ; preds = %_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEdET_S8_S8_RKT0_.exit187 diff --git a/bench/quantlib/optimized/overnightindexedcouponpricer.ll b/bench/quantlib/optimized/overnightindexedcouponpricer.ll index d721003396f..12add21289a 100644 --- a/bench/quantlib/optimized/overnightindexedcouponpricer.ll +++ b/bench/quantlib/optimized/overnightindexedcouponpricer.ll @@ -976,9 +976,10 @@ _ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN8QuantLib4DateESt6vectorIS3_ invoke.cont34: ; preds = %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN8QuantLib4DateESt6vectorIS3_SaIS3_EEEES3_ET_SA_SA_RKT0_.exit.loopexit.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit %sub.ptr.lhs.cast.i.pre-phi.i = phi i64 [ %.pre.i78, %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN8QuantLib4DateESt6vectorIS3_SaIS3_EEEES3_ET_SA_SA_RKT0_.exit.loopexit.i ], [ %sub.ptr.rhs.cast.i.i.i.i.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ] + %__first.sroa.0.0.lcssa.i.i.i = phi ptr [ %__first.sroa.0.1.i.i.i, %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN8QuantLib4DateESt6vectorIS3_SaIS3_EEEES3_ET_SA_SA_RKT0_.exit.loopexit.i ], [ %call24.val, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ] %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.pre-phi.i, %sub.ptr.rhs.cast.i.i.i.i.i.i %sub.ptr.div.i.i = ashr exact i64 %sub.ptr.sub.i.i, 3 - %cmp.i = icmp eq i64 %sub.ptr.div.i.i, %sub.ptr.div.i.i.i.i.i.i + %cmp.i = icmp eq ptr %__first.sroa.0.0.lcssa.i.i.i, %call24.val69 %brmerge.not.i = and i1 %cmp.i, %loadedv.i %sub.i = sext i1 %brmerge.not.i to i64 %cond.i = add nsw i64 %sub.ptr.div.i.i, %sub.i diff --git a/bench/rayon-rs/optimized/6wmzy39i6zbenyc.ll b/bench/rayon-rs/optimized/6wmzy39i6zbenyc.ll index 28d7676eabd..f418bdb4029 100644 --- a/bench/rayon-rs/optimized/6wmzy39i6zbenyc.ll +++ b/bench/rayon-rs/optimized/6wmzy39i6zbenyc.ll @@ -280,7 +280,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h6313038996a585bcE.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 129) 8, i64 noundef %11) #17, !noalias !5 br label %_ZN5alloc7raw_vec11finish_grow17hb7af431fe41f6b71E.exit @@ -339,7 +339,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h166a55d517f91ad1E.exit.thread" %16 = shl nuw i64 %8, 7 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 128 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 129) 128, i64 noundef %11) #17, !noalias !9 br label %_ZN5alloc7raw_vec11finish_grow17hb7af431fe41f6b71E.exit @@ -398,7 +398,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hfcff71d16ce5799cE.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 129) 8, i64 noundef %11) #17, !noalias !13 br label %_ZN5alloc7raw_vec11finish_grow17hb7af431fe41f6b71E.exit @@ -516,7 +516,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h811f76f5f7c44107E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 129) 8, i64 noundef %11) #17, !noalias !21 br label %_ZN5alloc7raw_vec11finish_grow17hb7af431fe41f6b71E.exit @@ -575,7 +575,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h6c7942bc5fbc31feE.exit.thread" %16 = shl nuw i64 %8, 8 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 128 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 129) 128, i64 noundef %11) #17, !noalias !25 br label %_ZN5alloc7raw_vec11finish_grow17hb7af431fe41f6b71E.exit @@ -635,7 +635,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h811f76f5f7c44107E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 129) 8, i64 noundef %10) #17, !noalias !32 br label %_ZN5alloc7raw_vec11finish_grow17hb7af431fe41f6b71E.exit.i @@ -694,7 +694,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h6313038996a585bcE.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 129) 8, i64 noundef %10) #17, !noalias !39 br label %_ZN5alloc7raw_vec11finish_grow17hb7af431fe41f6b71E.exit.i @@ -748,7 +748,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17he23 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val23 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 4 @@ -759,30 +759,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17he23 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #17 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit": ; preds = %13 %17 = shl nuw i64 %1, 4 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #17 - %.not37 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not37, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #17 + %.not37 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not37, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 - -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 + br label %21 + +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: cold nonlazybind uwtable @@ -815,7 +813,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hfcff71d16ce5799cE.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 129) 8, i64 noundef %11) #17, !noalias !46 br label %_ZN5alloc7raw_vec11finish_grow17hb7af431fe41f6b71E.exit.i @@ -933,7 +931,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h6c7942bc5fbc31feE.exit.thread.i" %16 = shl nuw i64 %8, 8 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 128 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 129) 128, i64 noundef %11) #17, !noalias !60 br label %_ZN5alloc7raw_vec11finish_grow17hb7af431fe41f6b71E.exit.i @@ -992,7 +990,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h811f76f5f7c44107E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 129) 8, i64 noundef %11) #17, !noalias !67 br label %_ZN5alloc7raw_vec11finish_grow17hb7af431fe41f6b71E.exit.i @@ -1051,7 +1049,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h6313038996a585bcE.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 129) 8, i64 noundef %11) #17, !noalias !74 br label %_ZN5alloc7raw_vec11finish_grow17hb7af431fe41f6b71E.exit.i @@ -1110,7 +1108,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h166a55d517f91ad1E.exit.thread.i" %16 = shl nuw i64 %8, 7 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 128 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 129) 128, i64 noundef %11) #17, !noalias !81 br label %_ZN5alloc7raw_vec11finish_grow17hb7af431fe41f6b71E.exit.i diff --git a/bench/regex-rs/optimized/4fmm2eszo332r12s.ll b/bench/regex-rs/optimized/4fmm2eszo332r12s.ll index c0907198ad1..c29a5f84645 100644 --- a/bench/regex-rs/optimized/4fmm2eszo332r12s.ll +++ b/bench/regex-rs/optimized/4fmm2eszo332r12s.ll @@ -191,7 +191,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h64209714f561a4aeE.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 65) 8, i64 noundef %11) #15, !noalias !5 br label %_ZN5alloc7raw_vec11finish_grow17h42922b50d50cebb2E.exit @@ -367,7 +367,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hcc9729cb4fa342ffE.exit.thread.i" %15 = shl nuw i64 %7, 6 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 64 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 65) 64, i64 noundef %10) #15, !noalias !20 br label %_ZN5alloc7raw_vec11finish_grow17h42922b50d50cebb2E.exit.i @@ -553,7 +553,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h7c91d9173a1977bfE.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 65) 8, i64 noundef %10) #15, !noalias !41 br label %_ZN5alloc7raw_vec11finish_grow17h42922b50d50cebb2E.exit.i @@ -739,7 +739,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h64209714f561a4aeE.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 65) 8, i64 noundef %11) #15, !noalias !62 br label %_ZN5alloc7raw_vec11finish_grow17h42922b50d50cebb2E.exit.i diff --git a/bench/ring-rs/optimized/33fkftca8afosh1u.ll b/bench/ring-rs/optimized/33fkftca8afosh1u.ll index 86fc58bdfa3..201487b4184 100644 --- a/bench/ring-rs/optimized/33fkftca8afosh1u.ll +++ b/bench/ring-rs/optimized/33fkftca8afosh1u.ll @@ -287,7 +287,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h59c2fbb2645a050eE.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #24, !noalias !28 br label %_ZN5alloc7raw_vec11finish_grow17he9c572a7ba3297a7E.exit @@ -346,7 +346,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0a2f3d91e85e1fe5E.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #24, !noalias !32 br label %_ZN5alloc7raw_vec11finish_grow17he9c572a7ba3297a7E.exit @@ -585,7 +585,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h838 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val23 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 3 @@ -596,30 +596,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h838 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #24 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #24 - %.not37 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not37, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #24 + %.not37 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not37, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 - -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 + br label %21 + +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: cold nonlazybind uwtable @@ -652,7 +650,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0a2f3d91e85e1fe5E.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #24, !noalias !53 br label %_ZN5alloc7raw_vec11finish_grow17he9c572a7ba3297a7E.exit.i @@ -779,7 +777,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h59c2fbb2645a050eE.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #24, !noalias !67 br label %_ZN5alloc7raw_vec11finish_grow17he9c572a7ba3297a7E.exit.i diff --git a/bench/ripgrep-rs/optimized/3qoh7w6emb933n0k.ll b/bench/ripgrep-rs/optimized/3qoh7w6emb933n0k.ll index ddca3dc2673..8272e84001b 100644 --- a/bench/ripgrep-rs/optimized/3qoh7w6emb933n0k.ll +++ b/bench/ripgrep-rs/optimized/3qoh7w6emb933n0k.ll @@ -374,7 +374,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0aa08e0a10dd1ceeE.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 65) 8, i64 noundef %11) #17, !noalias !5 br label %_ZN5alloc7raw_vec11finish_grow17h4170880ac46dc54fE.exit @@ -490,7 +490,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hc4f7e6b1f78192edE.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 65) 8, i64 noundef %11) #17, !noalias !13 br label %_ZN5alloc7raw_vec11finish_grow17h4170880ac46dc54fE.exit @@ -738,7 +738,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h01f0beed6dad7164E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 65) 8, i64 noundef %10) #17, !noalias !41 br label %_ZN5alloc7raw_vec11finish_grow17h4170880ac46dc54fE.exit.i @@ -797,7 +797,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h18c7483a81d3bf91E.exit.thread.i" %15 = shl nuw i64 %7, 2 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 65) 4, i64 noundef %10) #17, !noalias !48 br label %_ZN5alloc7raw_vec11finish_grow17h4170880ac46dc54fE.exit.i @@ -856,7 +856,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha55c7d109789912dE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 65) 8, i64 noundef %10) #17, !noalias !55 br label %_ZN5alloc7raw_vec11finish_grow17h4170880ac46dc54fE.exit.i @@ -974,7 +974,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2731c1a3b27aaf3cE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 65) 8, i64 noundef %10) #17, !noalias !69 br label %_ZN5alloc7raw_vec11finish_grow17h4170880ac46dc54fE.exit.i @@ -1033,7 +1033,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h523affce1ba6c542E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 65) 4, i64 noundef %10) #17, !noalias !76 br label %_ZN5alloc7raw_vec11finish_grow17h4170880ac46dc54fE.exit.i @@ -1092,7 +1092,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h36cc76daf409dc77E.exit.thread.i" %15 = shl nuw i64 %7, 6 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 64 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 65) 64, i64 noundef %10) #17, !noalias !83 br label %_ZN5alloc7raw_vec11finish_grow17h4170880ac46dc54fE.exit.i @@ -1219,7 +1219,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hc4f7e6b1f78192edE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 65) 8, i64 noundef %10) #17, !noalias !97 br label %_ZN5alloc7raw_vec11finish_grow17h4170880ac46dc54fE.exit.i @@ -1278,7 +1278,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hb5a99ee6b01f888fE.exit.thread.i" %15 = shl nuw i64 %7, 2 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 65) 4, i64 noundef %10) #17, !noalias !104 br label %_ZN5alloc7raw_vec11finish_grow17h4170880ac46dc54fE.exit.i @@ -1337,7 +1337,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h5f1d10db91c955acE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 65) 4, i64 noundef %10) #17, !noalias !111 br label %_ZN5alloc7raw_vec11finish_grow17h4170880ac46dc54fE.exit.i @@ -1396,7 +1396,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hbfb59d0e44f04f32E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 65) 8, i64 noundef %10) #17, !noalias !118 br label %_ZN5alloc7raw_vec11finish_grow17h4170880ac46dc54fE.exit.i @@ -1455,7 +1455,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h4a06f6bda2eda652E.exit.thread.i" %15 = shl nuw i64 %7, 6 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 64 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 65) 64, i64 noundef %10) #17, !noalias !125 br label %_ZN5alloc7raw_vec11finish_grow17h4170880ac46dc54fE.exit.i @@ -1514,7 +1514,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h37081bcf8a4ac466E.exit.thread.i" %15 = shl nuw i64 %7, 2 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 65) 4, i64 noundef %10) #17, !noalias !132 br label %_ZN5alloc7raw_vec11finish_grow17h4170880ac46dc54fE.exit.i @@ -1691,7 +1691,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hc9f7d47488ec42e4E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 65) 8, i64 noundef %10) #17, !noalias !153 br label %_ZN5alloc7raw_vec11finish_grow17h4170880ac46dc54fE.exit.i @@ -1745,7 +1745,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h62e %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 2 @@ -1756,30 +1756,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h62e "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 4) #17 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit": ; preds = %13 %17 = shl nuw i64 %1, 2 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #17 - %.not34 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not34, ptr inttoptr (i64 4 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not34, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.exit" - %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit" ] + %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #17 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 4 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not34, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.exit" + %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 - -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 + br label %21 + +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -1867,7 +1865,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h9c3 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 3 @@ -1878,30 +1876,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h9c3 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 4) #17 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #17 - %.not34 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not34, ptr inttoptr (i64 4 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not34, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.exit" - %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit" ] + %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #17 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 4 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not34, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.exit" + %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 - -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 + br label %21 + +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -1989,7 +1985,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hd27 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 2 @@ -2000,30 +1996,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hd27 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 4) #17 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit": ; preds = %13 %17 = shl nuw i64 %1, 2 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #17 - %.not34 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not34, ptr inttoptr (i64 4 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not34, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.exit" - %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit" ] + %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #17 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 4 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not34, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.exit" + %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 - -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 + br label %21 + +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hb1dee983f550002bE.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: cold nonlazybind uwtable @@ -2056,7 +2050,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hc4f7e6b1f78192edE.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 65) 8, i64 noundef %11) #17, !noalias !160 br label %_ZN5alloc7raw_vec11finish_grow17h4170880ac46dc54fE.exit.i @@ -2115,7 +2109,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0aa08e0a10dd1ceeE.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 65) 8, i64 noundef %11) #17, !noalias !167 br label %_ZN5alloc7raw_vec11finish_grow17h4170880ac46dc54fE.exit.i diff --git a/bench/rocksdb/optimized/compaction_picker.cc.ll b/bench/rocksdb/optimized/compaction_picker.cc.ll index 57cfb828816..07eb8df29b1 100644 --- a/bench/rocksdb/optimized/compaction_picker.cc.ll +++ b/bench/rocksdb/optimized/compaction_picker.cc.ll @@ -6970,8 +6970,10 @@ _ZNSt12_Vector_baseIPN7rocksdb12FileMetaDataESaIS2_EE13_M_deallocateEPS2_m.exit. if.else.i: ; preds = %if.end %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %21, i64 16 %25 = load ptr, ptr %_M_finish.i.i, align 8 - %cmp24.not.i = icmp eq ptr %25, %23 - br i1 %cmp24.not.i, label %_ZSt22__uninitialized_copy_aIPKPN7rocksdb12FileMetaDataEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit.i, label %if.then25.i + %sub.ptr.lhs.cast.i14.i = ptrtoint ptr %25 to i64 + %sub.ptr.sub.i16.i = sub i64 %sub.ptr.lhs.cast.i14.i, %sub.ptr.rhs.cast.i.i + %cmp24.not.i = icmp ult i64 %sub.ptr.sub.i16.i, 8 + br i1 %cmp24.not.i, label %if.else29.i, label %if.then25.i if.then25.i: ; preds = %if.else.i store i64 %24, ptr %23, align 8 @@ -6984,29 +6986,37 @@ invoke.cont.i.i: ; preds = %if.then25.i store ptr %add.ptr.i.i.i.i.i.i, ptr %_M_finish.i.i, align 8 br label %_ZNSt6vectorIPN7rocksdb12FileMetaDataESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit -_ZSt22__uninitialized_copy_aIPKPN7rocksdb12FileMetaDataEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit.i: ; preds = %if.else.i - %sub.ptr.lhs.cast.i14.i = ptrtoint ptr %25 to i64 - %sub.ptr.sub.i16.i = sub i64 %sub.ptr.lhs.cast.i14.i, %sub.ptr.rhs.cast.i.i - %gepdiff = sub nsw i64 8, %sub.ptr.sub.i16.i - %incdec.ptr4.sink.i.i45.i.ptr = getelementptr inbounds i8, ptr %ref.tmp, i64 %sub.ptr.sub.i16.i - call void @llvm.memmove.p0.p0.i64(ptr align 8 %25, ptr nonnull align 8 %incdec.ptr4.sink.i.i45.i.ptr, i64 %gepdiff, i1 false) - %add.ptr.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %25, i64 %gepdiff +if.else29.i: ; preds = %if.else.i + %add.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 %sub.ptr.sub.i16.i + %tobool.not.i.i.i.i.i28.i = icmp eq ptr %25, %23 + br i1 %tobool.not.i.i.i.i.i28.i, label %_ZSt4copyIPKPN7rocksdb12FileMetaDataEPS2_ET0_T_S7_S6_.exit31.i, label %if.then.i.i.i.i.i29.i + +if.then.i.i.i.i.i29.i: ; preds = %if.else29.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %23, ptr noundef nonnull align 8 dereferenceable(1) %ref.tmp, i64 %sub.ptr.sub.i16.i, i1 false) + %.pre49.i = load ptr, ptr %_M_finish.i.i, align 8 + br label %_ZSt4copyIPKPN7rocksdb12FileMetaDataEPS2_ET0_T_S7_S6_.exit31.i + +_ZSt4copyIPKPN7rocksdb12FileMetaDataEPS2_ET0_T_S7_S6_.exit31.i: ; preds = %if.then.i.i.i.i.i29.i, %if.else29.i + %26 = phi ptr [ %25, %if.else29.i ], [ %.pre49.i, %if.then.i.i.i.i.i29.i ] + %gepdiff = sub nuw nsw i64 8, %sub.ptr.sub.i16.i + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %26, ptr nonnull align 8 %add.ptr.i.i.i, i64 %gepdiff, i1 false) + %add.ptr.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %26, i64 %gepdiff store ptr %add.ptr.i.i.i.i.i.i.i.i.i, ptr %_M_finish.i.i, align 8 br label %_ZNSt6vectorIPN7rocksdb12FileMetaDataESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit -_ZNSt6vectorIPN7rocksdb12FileMetaDataESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit: ; preds = %_ZNSt12_Vector_baseIPN7rocksdb12FileMetaDataESaIS2_EE13_M_deallocateEPS2_m.exit.i, %if.then25.i, %invoke.cont.i.i, %_ZSt22__uninitialized_copy_aIPKPN7rocksdb12FileMetaDataEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit.i - %26 = load ptr, ptr %2, align 8 - %27 = load ptr, ptr %26, align 8 - %28 = load i32, ptr %27, align 4 - %29 = load ptr, ptr %19, align 8 - %30 = load ptr, ptr %29, align 8 - store i32 %28, ptr %30, align 8 - %31 = getelementptr inbounds nuw i8, ptr %this, i64 48 - %32 = load ptr, ptr %31, align 8 +_ZNSt6vectorIPN7rocksdb12FileMetaDataESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit: ; preds = %_ZNSt12_Vector_baseIPN7rocksdb12FileMetaDataESaIS2_EE13_M_deallocateEPS2_m.exit.i, %if.then25.i, %invoke.cont.i.i, %_ZSt4copyIPKPN7rocksdb12FileMetaDataEPS2_ET0_T_S7_S6_.exit31.i + %27 = load ptr, ptr %2, align 8 + %28 = load ptr, ptr %27, align 8 + %29 = load i32, ptr %28, align 4 + %30 = load ptr, ptr %19, align 8 + %31 = load ptr, ptr %30, align 8 + store i32 %29, ptr %31, align 8 + %32 = getelementptr inbounds nuw i8, ptr %this, i64 48 %33 = load ptr, ptr %32, align 8 - %34 = load ptr, ptr %19, align 8 - %35 = load ptr, ptr %34, align 8 - %call6 = tail call noundef zeroext i1 @_ZN7rocksdb16CompactionPicker22ExpandInputsToCleanCutERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_18VersionStorageInfoEPNS_20CompactionInputFilesEPPNS_11InternalKeyE(ptr noundef nonnull align 8 dereferenceable(128) %1, ptr nonnull align 8 poison, ptr noundef %33, ptr noundef %35, ptr noundef null) + %34 = load ptr, ptr %33, align 8 + %35 = load ptr, ptr %19, align 8 + %36 = load ptr, ptr %35, align 8 + %call6 = tail call noundef zeroext i1 @_ZN7rocksdb16CompactionPicker22ExpandInputsToCleanCutERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_18VersionStorageInfoEPNS_20CompactionInputFilesEPPNS_11InternalKeyE(ptr noundef nonnull align 8 dereferenceable(128) %1, ptr nonnull align 8 poison, ptr noundef %34, ptr noundef %36, ptr noundef null) br label %return return: ; preds = %land.lhs.true, %_ZNSt6vectorIPN7rocksdb12FileMetaDataESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit diff --git a/bench/rocksdb/optimized/compaction_picker_level.cc.ll b/bench/rocksdb/optimized/compaction_picker_level.cc.ll index 4a2daa1cff2..d8024efb15b 100644 --- a/bench/rocksdb/optimized/compaction_picker_level.cc.ll +++ b/bench/rocksdb/optimized/compaction_picker_level.cc.ll @@ -3250,28 +3250,28 @@ entry: %sub.ptr.sub.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i %sub.ptr.div.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i, 4 %add.i.i = add i64 %sub.ptr.div.i.i.i, %0 - %cmp.i.i.not32 = icmp eq i64 %add.i.i, 0 - br i1 %cmp.i.i.not32, label %for.end, label %invoke.cont4.lr.ph + %cmp.i.i.not31 = icmp eq i64 %add.i.i, 0 + br i1 %cmp.i.i.not31, label %for.end, label %invoke.cont4.lr.ph invoke.cont4.lr.ph: ; preds = %entry %values_.i.i = getelementptr inbounds nuw i8, ptr %level_files, i64 136 %start_level_ = getelementptr inbounds nuw i8, ptr %this, i64 32 - %compaction_picker_27 = getelementptr inbounds nuw i8, ptr %this, i64 16 + %compaction_picker_26 = getelementptr inbounds nuw i8, ptr %this, i64 16 %output_level_22 = getelementptr inbounds nuw i8, ptr %this, i64 36 %vstorage_ = getelementptr inbounds nuw i8, ptr %this, i64 8 %files = getelementptr inbounds nuw i8, ptr %this, i64 72 %_M_end_of_storage.i.i = getelementptr inbounds nuw i8, ptr %this, i64 88 - %_M_finish.i.i15 = getelementptr inbounds nuw i8, ptr %this, i64 80 + %_M_finish.i.i14 = getelementptr inbounds nuw i8, ptr %this, i64 80 %start_level_inputs_ = getelementptr inbounds nuw i8, ptr %this, i64 64 br label %invoke.cont4 invoke.cont4: ; preds = %invoke.cont4.lr.ph, %for.inc - %__begin2.sroa.2.033 = phi i64 [ 0, %invoke.cont4.lr.ph ], [ %inc.i, %for.inc ] - %cmp.i.i7 = icmp ult i64 %__begin2.sroa.2.033, 8 + %__begin2.sroa.2.032 = phi i64 [ 0, %invoke.cont4.lr.ph ], [ %inc.i, %for.inc ] + %cmp.i.i7 = icmp ult i64 %__begin2.sroa.2.032, 8 %3 = load ptr, ptr %values_.i.i, align 8 - %arrayidx.i.i = getelementptr inbounds nuw %"struct.std::pair", ptr %3, i64 %__begin2.sroa.2.033 + %arrayidx.i.i = getelementptr inbounds nuw %"struct.std::pair", ptr %3, i64 %__begin2.sroa.2.032 %4 = load ptr, ptr %vect_.i.i, align 8 - %5 = getelementptr %"struct.std::pair", ptr %4, i64 %__begin2.sroa.2.033 + %5 = getelementptr %"struct.std::pair", ptr %4, i64 %__begin2.sroa.2.032 %add.ptr.i.i.i = getelementptr i8, ptr %5, i64 -128 %retval.0.i.i = select i1 %cmp.i.i7, ptr %arrayidx.i.i, ptr %add.ptr.i.i.i %6 = load i32, ptr %retval.0.i.i, align 8 @@ -3291,22 +3291,22 @@ lor.lhs.false: ; preds = %land.lhs.true br i1 %cmp10, label %land.lhs.true11, label %cond.false lor.lhs.false.thread: ; preds = %invoke.cont4 - %cmp1026 = icmp eq i32 %6, 0 - br i1 %cmp1026, label %land.lhs.true11.thread, label %if.end23 + %cmp1025 = icmp eq i32 %6, 0 + br i1 %cmp1025, label %land.lhs.true11.thread, label %if.end23 land.lhs.true11: ; preds = %lor.lhs.false - %9 = load ptr, ptr %compaction_picker_27, align 8 + %9 = load ptr, ptr %compaction_picker_26, align 8 %_M_node_count.i.i = getelementptr inbounds nuw i8, ptr %9, i64 56 %10 = load i64, ptr %_M_node_count.i.i, align 8 %cmp.i.i9 = icmp eq i64 %10, 0 br i1 %cmp.i.i9, label %cond.true, label %for.inc land.lhs.true11.thread: ; preds = %lor.lhs.false.thread - %11 = load ptr, ptr %compaction_picker_27, align 8 - %_M_node_count.i.i29 = getelementptr inbounds nuw i8, ptr %11, i64 56 - %12 = load i64, ptr %_M_node_count.i.i29, align 8 - %cmp.i.i930 = icmp eq i64 %12, 0 - br i1 %cmp.i.i930, label %if.end23, label %for.inc + %11 = load ptr, ptr %compaction_picker_26, align 8 + %_M_node_count.i.i28 = getelementptr inbounds nuw i8, ptr %11, i64 56 + %12 = load i64, ptr %_M_node_count.i.i28, align 8 + %cmp.i.i929 = icmp eq i64 %12, 0 + br i1 %cmp.i.i929, label %if.end23, label %for.inc cond.true: ; preds = %land.lhs.true11 %base_level_.i = getelementptr inbounds nuw i8, ptr %7, i64 2800 @@ -3333,72 +3333,82 @@ if.end23: ; preds = %lor.lhs.false.threa br i1 %cmp.i, label %if.then.i, label %if.else.i if.then.i: ; preds = %if.end23 - %call5.i.i.i.i.i20 = tail call noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #21 - store i64 %17, ptr %call5.i.i.i.i.i20, align 8 - %tobool.not.i.i19 = icmp eq ptr %16, null - br i1 %tobool.not.i.i19, label %_ZNSt12_Vector_baseIPN7rocksdb12FileMetaDataESaIS2_EE13_M_deallocateEPS2_m.exit.i, label %if.then.i13.i + %call5.i.i.i.i.i19 = tail call noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #21 + store i64 %17, ptr %call5.i.i.i.i.i19, align 8 + %tobool.not.i.i18 = icmp eq ptr %16, null + br i1 %tobool.not.i.i18, label %_ZNSt12_Vector_baseIPN7rocksdb12FileMetaDataESaIS2_EE13_M_deallocateEPS2_m.exit.i, label %if.then.i13.i if.then.i13.i: ; preds = %if.then.i tail call void @_ZdlPv(ptr noundef nonnull %16) #19 br label %_ZNSt12_Vector_baseIPN7rocksdb12FileMetaDataESaIS2_EE13_M_deallocateEPS2_m.exit.i _ZNSt12_Vector_baseIPN7rocksdb12FileMetaDataESaIS2_EE13_M_deallocateEPS2_m.exit.i: ; preds = %if.then.i13.i, %if.then.i - store ptr %call5.i.i.i.i.i20, ptr %files, align 8 - %add.ptr.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i.i.i20, i64 8 - store ptr %add.ptr.i, ptr %_M_finish.i.i15, align 8 + store ptr %call5.i.i.i.i.i19, ptr %files, align 8 + %add.ptr.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i.i.i19, i64 8 + store ptr %add.ptr.i, ptr %_M_finish.i.i14, align 8 store ptr %add.ptr.i, ptr %_M_end_of_storage.i.i, align 8 br label %invoke.cont24 if.else.i: ; preds = %if.end23 - %18 = load ptr, ptr %_M_finish.i.i15, align 8 - %cmp24.not.i = icmp eq ptr %18, %16 - br i1 %cmp24.not.i, label %_ZSt22__uninitialized_copy_aIPKPN7rocksdb12FileMetaDataEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit.i, label %if.then25.i + %18 = load ptr, ptr %_M_finish.i.i14, align 8 + %sub.ptr.lhs.cast.i14.i = ptrtoint ptr %18 to i64 + %sub.ptr.sub.i16.i = sub i64 %sub.ptr.lhs.cast.i14.i, %sub.ptr.rhs.cast.i.i + %cmp24.not.i = icmp ult i64 %sub.ptr.sub.i16.i, 8 + br i1 %cmp24.not.i, label %if.else29.i, label %if.then25.i if.then25.i: ; preds = %if.else.i store i64 %17, ptr %16, align 8 - %.pre.i = load ptr, ptr %_M_finish.i.i15, align 8 + %.pre.i = load ptr, ptr %_M_finish.i.i14, align 8 %add.ptr.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %16, i64 8 %tobool.not.i19.i = icmp eq ptr %.pre.i, %add.ptr.i.i.i.i.i.i - br i1 %tobool.not.i19.i, label %invoke.cont24, label %invoke.cont.i.i16 + br i1 %tobool.not.i19.i, label %invoke.cont24, label %invoke.cont.i.i15 -invoke.cont.i.i16: ; preds = %if.then25.i - store ptr %add.ptr.i.i.i.i.i.i, ptr %_M_finish.i.i15, align 8 +invoke.cont.i.i15: ; preds = %if.then25.i + store ptr %add.ptr.i.i.i.i.i.i, ptr %_M_finish.i.i14, align 8 br label %invoke.cont24 -_ZSt22__uninitialized_copy_aIPKPN7rocksdb12FileMetaDataEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit.i: ; preds = %if.else.i - %sub.ptr.lhs.cast.i14.i = ptrtoint ptr %18 to i64 - %sub.ptr.sub.i16.i = sub i64 %sub.ptr.lhs.cast.i14.i, %sub.ptr.rhs.cast.i.i - %gepdiff = sub nsw i64 8, %sub.ptr.sub.i16.i - %incdec.ptr4.sink.i.i45.i.ptr = getelementptr inbounds i8, ptr %ref.tmp, i64 %sub.ptr.sub.i16.i - call void @llvm.memmove.p0.p0.i64(ptr align 8 %18, ptr nonnull align 8 %incdec.ptr4.sink.i.i45.i.ptr, i64 %gepdiff, i1 false) - %add.ptr.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %18, i64 %gepdiff - store ptr %add.ptr.i.i.i.i.i.i.i.i.i, ptr %_M_finish.i.i15, align 8 +if.else29.i: ; preds = %if.else.i + %add.ptr.i.i.i16 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 %sub.ptr.sub.i16.i + %tobool.not.i.i.i.i.i28.i = icmp eq ptr %18, %16 + br i1 %tobool.not.i.i.i.i.i28.i, label %_ZSt4copyIPKPN7rocksdb12FileMetaDataEPS2_ET0_T_S7_S6_.exit31.i, label %if.then.i.i.i.i.i29.i + +if.then.i.i.i.i.i29.i: ; preds = %if.else29.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %16, ptr noundef nonnull align 8 dereferenceable(1) %ref.tmp, i64 %sub.ptr.sub.i16.i, i1 false) + %.pre49.i = load ptr, ptr %_M_finish.i.i14, align 8 + br label %_ZSt4copyIPKPN7rocksdb12FileMetaDataEPS2_ET0_T_S7_S6_.exit31.i + +_ZSt4copyIPKPN7rocksdb12FileMetaDataEPS2_ET0_T_S7_S6_.exit31.i: ; preds = %if.then.i.i.i.i.i29.i, %if.else29.i + %19 = phi ptr [ %18, %if.else29.i ], [ %.pre49.i, %if.then.i.i.i.i.i29.i ] + %gepdiff = sub nuw nsw i64 8, %sub.ptr.sub.i16.i + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %19, ptr nonnull align 8 %add.ptr.i.i.i16, i64 %gepdiff, i1 false) + %add.ptr.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %19, i64 %gepdiff + store ptr %add.ptr.i.i.i.i.i.i.i.i.i, ptr %_M_finish.i.i14, align 8 br label %invoke.cont24 -invoke.cont24: ; preds = %_ZNSt12_Vector_baseIPN7rocksdb12FileMetaDataESaIS2_EE13_M_deallocateEPS2_m.exit.i, %if.then25.i, %invoke.cont.i.i16, %_ZSt22__uninitialized_copy_aIPKPN7rocksdb12FileMetaDataEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit.i - %19 = load i32, ptr %start_level_, align 8 - store i32 %19, ptr %start_level_inputs_, align 8 - %20 = load ptr, ptr %compaction_picker_27, align 8 - %21 = load ptr, ptr %this, align 8 - %22 = load ptr, ptr %vstorage_, align 8 - %call32 = tail call noundef zeroext i1 @_ZN7rocksdb16CompactionPicker22ExpandInputsToCleanCutERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_18VersionStorageInfoEPNS_20CompactionInputFilesEPPNS_11InternalKeyE(ptr noundef nonnull align 8 dereferenceable(128) %20, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef %22, ptr noundef nonnull %start_level_inputs_, ptr noundef null) +invoke.cont24: ; preds = %_ZNSt12_Vector_baseIPN7rocksdb12FileMetaDataESaIS2_EE13_M_deallocateEPS2_m.exit.i, %if.then25.i, %invoke.cont.i.i15, %_ZSt4copyIPKPN7rocksdb12FileMetaDataEPS2_ET0_T_S7_S6_.exit31.i + %20 = load i32, ptr %start_level_, align 8 + store i32 %20, ptr %start_level_inputs_, align 8 + %21 = load ptr, ptr %compaction_picker_26, align 8 + %22 = load ptr, ptr %this, align 8 + %23 = load ptr, ptr %vstorage_, align 8 + %call32 = tail call noundef zeroext i1 @_ZN7rocksdb16CompactionPicker22ExpandInputsToCleanCutERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_18VersionStorageInfoEPNS_20CompactionInputFilesEPPNS_11InternalKeyE(ptr noundef nonnull align 8 dereferenceable(128) %21, ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef %23, ptr noundef nonnull %start_level_inputs_, ptr noundef null) br i1 %call32, label %return, label %for.inc for.inc: ; preds = %land.lhs.true11.thread, %invoke.cont24, %land.lhs.true, %land.lhs.true11 - %inc.i = add nuw i64 %__begin2.sroa.2.033, 1 + %inc.i = add nuw i64 %__begin2.sroa.2.032, 1 %cmp.i.i.not = icmp eq i64 %inc.i, %add.i.i br i1 %cmp.i.i.not, label %for.end, label %invoke.cont4 for.end: ; preds = %for.inc, %entry %files39 = getelementptr inbounds nuw i8, ptr %this, i64 72 - %23 = load ptr, ptr %files39, align 8 + %24 = load ptr, ptr %files39, align 8 %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %this, i64 80 - %24 = load ptr, ptr %_M_finish.i.i, align 8 - %tobool.not.i.i = icmp eq ptr %24, %23 + %25 = load ptr, ptr %_M_finish.i.i, align 8 + %tobool.not.i.i = icmp eq ptr %25, %24 br i1 %tobool.not.i.i, label %return, label %invoke.cont.i.i invoke.cont.i.i: ; preds = %for.end - store ptr %23, ptr %_M_finish.i.i, align 8 + store ptr %24, ptr %_M_finish.i.i, align 8 br label %return return: ; preds = %invoke.cont24, %invoke.cont.i.i, %for.end diff --git a/bench/rocksdb/optimized/options_parser.cc.ll b/bench/rocksdb/optimized/options_parser.cc.ll index 880ed394fb7..d1abfa02e78 100644 --- a/bench/rocksdb/optimized/options_parser.cc.ll +++ b/bench/rocksdb/optimized/options_parser.cc.ll @@ -3990,7 +3990,6 @@ for.end: ; preds = %for.inc, %if.end45 %sub.ptr.lhs.cast.i82 = ptrtoint ptr %48 to i64 %sub.ptr.rhs.cast.i83 = ptrtoint ptr %49 to i64 %sub.ptr.sub.i84 = sub i64 %sub.ptr.lhs.cast.i82, %sub.ptr.rhs.cast.i83 - %sub.ptr.div.i85 = sdiv exact i64 %sub.ptr.sub.i84, 824 %cf_opts_.i86 = getelementptr inbounds nuw i8, ptr %parser, i64 768 %_M_finish.i87 = getelementptr inbounds nuw i8, ptr %parser, i64 776 %50 = load ptr, ptr %_M_finish.i87, align 8 @@ -3998,8 +3997,7 @@ for.end: ; preds = %for.inc, %if.end45 %sub.ptr.lhs.cast.i88 = ptrtoint ptr %50 to i64 %sub.ptr.rhs.cast.i89 = ptrtoint ptr %51 to i64 %sub.ptr.sub.i90 = sub i64 %sub.ptr.lhs.cast.i88, %sub.ptr.rhs.cast.i89 - %sub.ptr.div.i91 = sdiv exact i64 %sub.ptr.sub.i90, 824 - %cmp68.not = icmp eq i64 %sub.ptr.div.i85, %sub.ptr.div.i91 + %cmp68.not = icmp eq i64 %sub.ptr.sub.i84, %sub.ptr.sub.i90 br i1 %cmp68.not, label %if.end93, label %if.then69 if.then69: ; preds = %for.end @@ -4015,7 +4013,7 @@ if.then73: ; preds = %if.then69 br label %if.then26.invoke if.else79: ; preds = %if.then69 - %cmp84 = icmp ugt i64 %sub.ptr.div.i85, %sub.ptr.div.i91 + %cmp84 = icmp ugt i64 %sub.ptr.sub.i84, %sub.ptr.sub.i90 br i1 %cmp84, label %if.then85, label %if.end93 if.then85: ; preds = %if.else79 diff --git a/bench/rust-analyzer-rs/optimized/2h9sdfxb04e7vmwq.ll b/bench/rust-analyzer-rs/optimized/2h9sdfxb04e7vmwq.ll index 680b3f99753..8889f212f84 100644 --- a/bench/rust-analyzer-rs/optimized/2h9sdfxb04e7vmwq.ll +++ b/bench/rust-analyzer-rs/optimized/2h9sdfxb04e7vmwq.ll @@ -40,7 +40,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h34cd25d7e7b145ffE.exit.thread.i" %15 = shl nuw i64 %7, 2 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 5) 4, i64 noundef %10) #11, !noalias !8 br label %_ZN5alloc7raw_vec11finish_grow17h85b5478baf7c4cd0E.exit.i @@ -99,7 +99,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha59a57127e7e0dc2E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 5) 4, i64 noundef %10) #11, !noalias !15 br label %_ZN5alloc7raw_vec11finish_grow17h85b5478baf7c4cd0E.exit.i @@ -153,7 +153,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hb64 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 3 @@ -164,30 +164,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hb64 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 4) #11 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #11 - %.not34 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not34, ptr inttoptr (i64 4 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not34, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" - %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #11 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 4 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not34, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" + %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 - -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 + br label %21 + +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -215,7 +213,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17he20 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 2 @@ -226,30 +224,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17he20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 4) #11 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %17 = shl nuw i64 %1, 2 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #11 - %.not34 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not34, ptr inttoptr (i64 4 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not34, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" - %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #11 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 4 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not34, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" + %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 - -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 + br label %21 + +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/rust-analyzer-rs/optimized/3cshkvbicir3mqwh.ll b/bench/rust-analyzer-rs/optimized/3cshkvbicir3mqwh.ll index 604ce74cc0b..cdfd79d1f46 100644 --- a/bench/rust-analyzer-rs/optimized/3cshkvbicir3mqwh.ll +++ b/bench/rust-analyzer-rs/optimized/3cshkvbicir3mqwh.ll @@ -1885,7 +1885,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h18be3e85b7610168E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !44 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit @@ -2062,7 +2062,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h6188e168925e1ee7E.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !56 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit @@ -2121,7 +2121,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17heb4183b9f36a0663E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !60 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit @@ -2180,7 +2180,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h82e0679efc3b5363E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !64 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit @@ -2416,7 +2416,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha2de6c138233e1d3E.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !80 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit @@ -2593,7 +2593,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1b1a4ea3631ec593E.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !92 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit @@ -2652,7 +2652,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hd06016fe4a2576d2E.exit.thread" %16 = shl nuw i64 %8, 6 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !96 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit @@ -2829,7 +2829,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h5272b7d7482736afE.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !108 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit @@ -3181,7 +3181,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h858e2b7ad7b685b8E.exit.thread" %16 = shl nuw i64 %8, 7 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !132 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit @@ -3712,7 +3712,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h74d3e646bb8e1b8dE.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !168 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit @@ -3771,7 +3771,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hea1638175fefed45E.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !172 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit @@ -3949,7 +3949,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17heb4183b9f36a0663E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #20, !noalias !187 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit.i @@ -4194,7 +4194,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h82e0679efc3b5363E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #20, !noalias !215 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit.i @@ -4687,7 +4687,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h26c %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 3 @@ -4698,30 +4698,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h26c "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #20 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #20 - %.not34 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not34, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #20 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not34, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 + br label %21 -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -5827,7 +5825,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h6188e168925e1ee7E.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !285 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit.i @@ -5945,7 +5943,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h74d3e646bb8e1b8dE.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !299 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit.i @@ -6240,7 +6238,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h18be3e85b7610168E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !334 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit.i @@ -6476,7 +6474,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h82e0679efc3b5363E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !362 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit.i @@ -6653,7 +6651,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha2de6c138233e1d3E.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !383 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit.i @@ -6712,7 +6710,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h858e2b7ad7b685b8E.exit.thread.i" %16 = shl nuw i64 %8, 7 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !390 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit.i @@ -6771,7 +6769,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1b1a4ea3631ec593E.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !397 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit.i @@ -6889,7 +6887,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17heb4183b9f36a0663E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !411 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit.i @@ -7184,7 +7182,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hd06016fe4a2576d2E.exit.thread.i" %16 = shl nuw i64 %8, 6 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !446 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit.i @@ -7488,7 +7486,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hea1638175fefed45E.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !481 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit.i @@ -7547,7 +7545,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h5272b7d7482736afE.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !488 br label %_ZN5alloc7raw_vec11finish_grow17h2d5e7bb15679e0a4E.exit.i diff --git a/bench/rust-analyzer-rs/optimized/4c2n61l0gr2pm2ww.ll b/bench/rust-analyzer-rs/optimized/4c2n61l0gr2pm2ww.ll index ddd320f4d66..9996a7eb07b 100644 --- a/bench/rust-analyzer-rs/optimized/4c2n61l0gr2pm2ww.ll +++ b/bench/rust-analyzer-rs/optimized/4c2n61l0gr2pm2ww.ll @@ -79,7 +79,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$10grow_exact1 13: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h060c06686067ddc7E.exit.thread" %14 = shl nuw i64 %.val, 4 - %15 = icmp uge i64 %9, %14 + %15 = icmp uge i64 %5, %.val tail call void @llvm.assume(i1 %15) %16 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %14, i64 noundef range(i64 1, 9) 8, i64 noundef %9) #17, !noalias !5 br label %_ZN5alloc7raw_vec11finish_grow17hdb495234e48bce0aE.exit @@ -327,7 +327,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h060c06686067ddc7E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !13 br label %_ZN5alloc7raw_vec11finish_grow17hdb495234e48bce0aE.exit @@ -387,7 +387,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h394fb9a6b9a5484aE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 4, i64 noundef %10) #17, !noalias !20 br label %_ZN5alloc7raw_vec11finish_grow17hdb495234e48bce0aE.exit.i @@ -446,7 +446,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h060c06686067ddc7E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !27 br label %_ZN5alloc7raw_vec11finish_grow17hdb495234e48bce0aE.exit.i @@ -507,7 +507,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$17try_reserve 17: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h060c06686067ddc7E.exit.thread.i" %18 = shl nuw i64 %4, 4 - %19 = icmp uge i64 %13, %18 + %19 = icmp uge i64 %9, %4 tail call void @llvm.assume(i1 %19) %20 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %18, i64 noundef range(i64 1, 9) 8, i64 noundef %13) #17, !noalias !34 br label %_ZN5alloc7raw_vec11finish_grow17hdb495234e48bce0aE.exit.i @@ -574,7 +574,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h3d7 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 3 @@ -585,30 +585,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h3d7 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 4) #17 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #17 - %.not34 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not34, ptr inttoptr (i64 4 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not34, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" - %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #17 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 4 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not34, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" + %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 + br label %21 -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: cold nonlazybind uwtable @@ -700,7 +698,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h060c06686067ddc7E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !48 br label %_ZN5alloc7raw_vec11finish_grow17hdb495234e48bce0aE.exit.i diff --git a/bench/rust-analyzer-rs/optimized/4knd7984ajyqr9li.ll b/bench/rust-analyzer-rs/optimized/4knd7984ajyqr9li.ll index 68a4e0082cc..24df1f16aa5 100644 --- a/bench/rust-analyzer-rs/optimized/4knd7984ajyqr9li.ll +++ b/bench/rust-analyzer-rs/optimized/4knd7984ajyqr9li.ll @@ -332,7 +332,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he825d8d4d1419502E.exit.thread" %16 = shl nuw i64 %8, 6 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !5 br label %_ZN5alloc7raw_vec11finish_grow17h34b1335aac832e39E.exit @@ -391,7 +391,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h8e33df1003cfa68eE.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !9 br label %_ZN5alloc7raw_vec11finish_grow17h34b1335aac832e39E.exit @@ -575,7 +575,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0fbe16ce9a548307E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !27 br label %_ZN5alloc7raw_vec11finish_grow17h34b1335aac832e39E.exit.i @@ -634,7 +634,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hd84490d96f9a9d3cE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !34 br label %_ZN5alloc7raw_vec11finish_grow17h34b1335aac832e39E.exit.i @@ -693,7 +693,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he825d8d4d1419502E.exit.thread.i" %15 = shl nuw i64 %7, 6 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !41 br label %_ZN5alloc7raw_vec11finish_grow17h34b1335aac832e39E.exit.i @@ -752,7 +752,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hdf8a6ab5dfebc472E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !48 br label %_ZN5alloc7raw_vec11finish_grow17h34b1335aac832e39E.exit.i @@ -929,7 +929,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h9aaebcb95b6bd59cE.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !69 br label %_ZN5alloc7raw_vec11finish_grow17h34b1335aac832e39E.exit.i @@ -988,7 +988,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h8e0a04aa9cb5af96E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !76 br label %_ZN5alloc7raw_vec11finish_grow17h34b1335aac832e39E.exit.i @@ -1405,7 +1405,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hcca %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 5 @@ -1416,30 +1416,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hcca "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #17 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %17 = shl nuw i64 %1, 5 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #17 - %.not34 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not34, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #17 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not34, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 - -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 + br label %21 + +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -1524,7 +1522,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hea4 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 6 @@ -1535,30 +1533,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hea4 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #17 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %17 = shl nuw i64 %1, 6 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #17 - %.not34 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not34, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #17 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not34, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 - -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 + br label %21 + +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: cold nonlazybind uwtable @@ -1591,7 +1587,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he825d8d4d1419502E.exit.thread.i" %16 = shl nuw i64 %8, 6 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !125 br label %_ZN5alloc7raw_vec11finish_grow17h34b1335aac832e39E.exit.i @@ -1718,7 +1714,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h8e33df1003cfa68eE.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !139 br label %_ZN5alloc7raw_vec11finish_grow17h34b1335aac832e39E.exit.i diff --git a/bench/rustfmt-rs/optimized/4gk399kploc9gcsb.ll b/bench/rustfmt-rs/optimized/4gk399kploc9gcsb.ll index 822a4b3d533..d8902750a09 100644 --- a/bench/rustfmt-rs/optimized/4gk399kploc9gcsb.ll +++ b/bench/rustfmt-rs/optimized/4gk399kploc9gcsb.ll @@ -10696,7 +10696,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hd333a04e2146febbE.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #46, !noalias !1560 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit @@ -10873,7 +10873,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hebb57e1bb007ab7bE.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !1572 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit @@ -10932,7 +10932,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hbf8a850ad2cb7f08E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !1576 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit @@ -11050,7 +11050,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hed64b86200ff21f2E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !1584 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit @@ -11522,7 +11522,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h506ca4d363ac3037E.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !1616 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit @@ -11697,7 +11697,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h8deceb2060ef645bE.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !1628 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit @@ -11815,7 +11815,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha38cb52ac783f2aeE.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !1636 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit @@ -11933,7 +11933,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1e3096b3c9882f26E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !1644 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit @@ -12169,7 +12169,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h71a05f731aba5af4E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !1660 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit @@ -12228,7 +12228,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h37cf426de601f5d1E.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !1664 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit @@ -12287,7 +12287,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h3a21c793a3fe663aE.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #46, !noalias !1668 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit @@ -12346,7 +12346,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hfcc267c2adc14245E.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !1672 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit @@ -12405,7 +12405,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he3889806082f3c26E.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #46, !noalias !1676 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit @@ -12583,7 +12583,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hc96d395260b77c42E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #46, !noalias !1691 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -12642,7 +12642,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha106e4ad3264294bE.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #46, !noalias !1698 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -12701,7 +12701,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0db225d447c4673dE.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #46, !noalias !1705 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -12937,7 +12937,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h37cf426de601f5d1E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #46, !noalias !1733 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -13055,7 +13055,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h6708583ec53a6e81E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #46, !noalias !1747 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -13232,7 +13232,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0043d20ca4a82a70E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #46, !noalias !1768 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -13291,7 +13291,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h10177c49db30bd46E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #46, !noalias !1775 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -13468,7 +13468,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf5aea0c15f52e2bcE.exit.thread.i" %15 = shl nuw i64 %7, 2 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 4, i64 noundef %10) #46, !noalias !1796 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -13527,7 +13527,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h659ba3f063c8ee3bE.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #46, !noalias !1803 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -13645,7 +13645,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h4f5832303ba97addE.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #46, !noalias !1817 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -13763,7 +13763,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h78d3af3affd7b663E.exit.thread.i" %15 = shl nuw i64 %7, 6 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #46, !noalias !1831 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -13940,7 +13940,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h292779f47f52023cE.exit.thread.i" %15 = shl nuw i64 %7, 6 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #46, !noalias !1852 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -14176,7 +14176,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hebb57e1bb007ab7bE.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #46, !noalias !1880 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -14539,7 +14539,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hbf60dc97c73a2084E.exit.thread.i" %15 = shl nuw i64 %7, 6 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #46, !noalias !1922 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -14657,7 +14657,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1e3096b3c9882f26E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #46, !noalias !1936 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -14834,7 +14834,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h6440f628959426c9E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #46, !noalias !1957 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -15036,7 +15036,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h198 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val23 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 4 @@ -15047,30 +15047,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h198 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17ha49f72b365eb0ed2E.llvm.3925314320651144617.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef 4) #46 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit": ; preds = %13 %17 = shl nuw i64 %1, 4 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #46 - %.not37 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not37, ptr inttoptr (i64 4 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not37, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17ha49f72b365eb0ed2E.llvm.3925314320651144617.exit" - %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17ha49f72b365eb0ed2E.llvm.3925314320651144617.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit" ] + %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #46 + %.not37 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not37, ptr inttoptr (i64 4 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not37, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17ha49f72b365eb0ed2E.llvm.3925314320651144617.exit" + %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17ha49f72b365eb0ed2E.llvm.3925314320651144617.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 + br label %21 -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -15158,7 +15156,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hab0 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val23 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 3 @@ -15169,30 +15167,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hab0 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17ha49f72b365eb0ed2E.llvm.3925314320651144617.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef 1) #46 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 1, i64 noundef %17) #46 - %.not37 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not37, ptr inttoptr (i64 1 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not37, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17ha49f72b365eb0ed2E.llvm.3925314320651144617.exit" - %storemerge = phi ptr [ inttoptr (i64 1 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17ha49f72b365eb0ed2E.llvm.3925314320651144617.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit" ] + %18 = tail call noundef ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 1, i64 noundef %17) #46 + %.not37 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not37, ptr inttoptr (i64 1 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not37, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17ha49f72b365eb0ed2E.llvm.3925314320651144617.exit" + %storemerge = phi ptr [ inttoptr (i64 1 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17ha49f72b365eb0ed2E.llvm.3925314320651144617.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 + br label %21 -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hdd93971b75e5688aE.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -15403,7 +15399,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h506ca4d363ac3037E.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !1992 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -15462,7 +15458,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h8deceb2060ef645bE.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !1999 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -15521,7 +15517,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hebb57e1bb007ab7bE.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !2006 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -15580,7 +15576,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he3889806082f3c26E.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #46, !noalias !2013 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -15639,7 +15635,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h3a21c793a3fe663aE.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #46, !noalias !2020 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -15875,7 +15871,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hd333a04e2146febbE.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #46, !noalias !2048 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -15934,7 +15930,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h71a05f731aba5af4E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !2055 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -16061,7 +16057,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hed64b86200ff21f2E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !2069 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -16179,7 +16175,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h37cf426de601f5d1E.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !2083 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -16297,7 +16293,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hbf8a850ad2cb7f08E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !2097 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -16828,7 +16824,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1e3096b3c9882f26E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !2160 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -17005,7 +17001,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hfcc267c2adc14245E.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !2181 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i @@ -17123,7 +17119,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha38cb52ac783f2aeE.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #46, !noalias !2195 br label %_ZN5alloc7raw_vec11finish_grow17he1252bd5117ad614E.exit.i diff --git a/bench/syn/optimized/56htwb1zk20ney2o.ll b/bench/syn/optimized/56htwb1zk20ney2o.ll index 98848b64ab7..bb6f19aaa1e 100644 --- a/bench/syn/optimized/56htwb1zk20ney2o.ll +++ b/bench/syn/optimized/56htwb1zk20ney2o.ll @@ -1102,7 +1102,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hd35187f5b23c86adE.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !21 br label %_ZN5alloc7raw_vec11finish_grow17ha6a891d297e85e75E.exit @@ -1466,7 +1466,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hd4920898a7442099E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !63 br label %_ZN5alloc7raw_vec11finish_grow17ha6a891d297e85e75E.exit.i @@ -1584,7 +1584,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf319599a3957d8e9E.exit.thread.i" %15 = shl nuw i64 %7, 8 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !77 br label %_ZN5alloc7raw_vec11finish_grow17ha6a891d297e85e75E.exit.i @@ -1879,7 +1879,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hd35187f5b23c86adE.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !112 br label %_ZN5alloc7raw_vec11finish_grow17ha6a891d297e85e75E.exit.i @@ -2115,7 +2115,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hff36f0e0a71ff8b7E.exit.thread.i" %15 = shl nuw i64 %7, 7 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !140 br label %_ZN5alloc7raw_vec11finish_grow17ha6a891d297e85e75E.exit.i @@ -2536,7 +2536,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hd35187f5b23c86adE.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !175 br label %_ZN5alloc7raw_vec11finish_grow17ha6a891d297e85e75E.exit.i diff --git a/bench/tinygltf/optimized/tiny_gltf.cc.ll b/bench/tinygltf/optimized/tiny_gltf.cc.ll index 25ea779464d..e9a391cf3c7 100644 --- a/bench/tinygltf/optimized/tiny_gltf.cc.ll +++ b/bench/tinygltf/optimized/tiny_gltf.cc.ll @@ -120540,7 +120540,7 @@ _ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i: ; preds = %242, %239 %246 = load ptr, ptr %245, align 8 %247 = ptrtoint ptr %246 to i64 %248 = sub i64 %247, %236 - %.not.i175 = icmp ult i64 %248, 17 + %.not.i175 = icmp ult i64 %248, 24 br i1 %.not.i175, label %_ZSt7advanceIPKdmEvRT_T0_.exit.i, label %249 249: ; preds = %244 @@ -120556,24 +120556,24 @@ _ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i: ; preds = %242, %239 _ZSt7advanceIPKdmEvRT_T0_.exit.i: ; preds = %244 %.not.i.i.i.i.i17.i = icmp eq ptr %246, %234 - br i1 %.not.i.i.i.i.i17.i, label %_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i.thread, label %_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i + br i1 %.not.i.i.i.i.i17.i, label %_ZSt22__uninitialized_copy_aIPKdPddET0_T_S4_S3_RSaIT1_E.exit.i, label %252 -_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i: ; preds = %_ZSt7advanceIPKdmEvRT_T0_.exit.i +252: ; preds = %_ZSt7advanceIPKdmEvRT_T0_.exit.i call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %234, ptr noundef nonnull align 8 dereferenceable(1) %140, i64 %248, i1 false) %.pre26.i = load ptr, ptr %245, align 8 - br label %_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i.thread - -_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i.thread: ; preds = %_ZSt7advanceIPKdmEvRT_T0_.exit.i, %_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i - %.sink.i.i25.i.idx269 = phi i64 [ %248, %_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i ], [ 0, %_ZSt7advanceIPKdmEvRT_T0_.exit.i ] - %252 = phi ptr [ %.pre26.i, %_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i ], [ %246, %_ZSt7advanceIPKdmEvRT_T0_.exit.i ] - %253 = sub nsw i64 24, %248 - %.sink.i.i25.i.ptr = getelementptr inbounds nuw i8, ptr %140, i64 %.sink.i.i25.i.idx269 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %252, ptr nonnull align 8 %.sink.i.i25.i.ptr, i64 %253, i1 false) - %254 = getelementptr inbounds i8, ptr %252, i64 %253 + br label %_ZSt22__uninitialized_copy_aIPKdPddET0_T_S4_S3_RSaIT1_E.exit.i + +_ZSt22__uninitialized_copy_aIPKdPddET0_T_S4_S3_RSaIT1_E.exit.i: ; preds = %252, %_ZSt7advanceIPKdmEvRT_T0_.exit.i + %253 = phi ptr [ %246, %_ZSt7advanceIPKdmEvRT_T0_.exit.i ], [ %.pre26.i, %252 ] + %.sink.i.i25.i.idx = phi i64 [ 0, %_ZSt7advanceIPKdmEvRT_T0_.exit.i ], [ %248, %252 ] + %gepdiff = sub nsw i64 24, %248 + %.sink.i.i25.i.ptr = getelementptr inbounds nuw i8, ptr %140, i64 %.sink.i.i25.i.idx + call void @llvm.memmove.p0.p0.i64(ptr align 8 %253, ptr nonnull align 8 %.sink.i.i25.i.ptr, i64 %gepdiff, i1 false) + %254 = getelementptr inbounds i8, ptr %253, i64 %gepdiff store ptr %254, ptr %245, align 8 br label %_ZNSt6vectorIdSaIdEE6resizeEm.exit -_ZNSt6vectorIdSaIdEE6resizeEm.exit: ; preds = %_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i.thread, %251, %249, %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i, %213, %.thread264, %209, %207, %._crit_edge247 +_ZNSt6vectorIdSaIdEE6resizeEm.exit: ; preds = %_ZSt22__uninitialized_copy_aIPKdPddET0_T_S4_S3_RSaIT1_E.exit.i, %251, %249, %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i, %213, %.thread264, %209, %207, %._crit_edge247 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %142) #51 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %141, ptr noundef nonnull @.str.305, ptr noundef nonnull align 1 dereferenceable(1) %142) to label %255 unwind label %464 @@ -122421,21 +122421,21 @@ _ZN8tinygltf6detail9ObjectEndERKN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1 _ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer: ; preds = %884, %_ZN8tinygltf6detail9ObjectEndERKN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEEEE.exit148 %.ph = phi i8 [ %882, %884 ], [ %816, %_ZN8tinygltf6detail9ObjectEndERKN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEEEE.exit148 ] %.sroa.15.1.ph = phi ptr [ %885, %884 ], [ %.sroa.15.3209, %_ZN8tinygltf6detail9ObjectEndERKN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEEEE.exit148 ] - %.sroa.19.0.ph = phi i64 [ %.sroa.19.0.ph290, %884 ], [ %.sroa.19.1211, %_ZN8tinygltf6detail9ObjectEndERKN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEEEE.exit148 ] + %.sroa.19.0.ph = phi i64 [ %.sroa.19.0.ph282, %884 ], [ %.sroa.19.1211, %_ZN8tinygltf6detail9ObjectEndERKN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEEEE.exit148 ] %.sroa.8.1.ph = phi ptr [ %.sroa.8.1, %884 ], [ %.sroa.8.3213, %_ZN8tinygltf6detail9ObjectEndERKN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEEEE.exit148 ] %827 = icmp eq ptr %.sroa.15.1.ph, %.sroa.5.2 - br label %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer288 + br label %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer280 -_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer288: ; preds = %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer, %886 - %.ph289 = phi i8 [ %.ph, %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer ], [ %882, %886 ] - %.sroa.19.0.ph290 = phi i64 [ %.sroa.19.0.ph, %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer ], [ %887, %886 ] - %.sroa.8.1.ph291 = phi ptr [ %.sroa.8.1.ph, %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer ], [ %.sroa.8.1, %886 ] - %828 = icmp eq i64 %.sroa.19.0.ph290, %.sroa.7.0 +_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer280: ; preds = %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer, %886 + %.ph281 = phi i8 [ %.ph, %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer ], [ %882, %886 ] + %.sroa.19.0.ph282 = phi i64 [ %.sroa.19.0.ph, %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer ], [ %887, %886 ] + %.sroa.8.1.ph283 = phi ptr [ %.sroa.8.1.ph, %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer ], [ %.sroa.8.1, %886 ] + %828 = icmp eq i64 %.sroa.19.0.ph282, %.sroa.7.0 br label %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit -_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit: ; preds = %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer288, %_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN8nlohmann10basic_jsonISt3mapSt6vectorS7_blmdSaNS9_14adl_serializerESC_IhSaIhEEEEEEiEvRT_T0_.exit.loopexit.i - %829 = phi i8 [ %882, %_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN8nlohmann10basic_jsonISt3mapSt6vectorS7_blmdSaNS9_14adl_serializerESC_IhSaIhEEEEEEiEvRT_T0_.exit.loopexit.i ], [ %.ph289, %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer288 ] - %.sroa.8.1 = phi ptr [ %883, %_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN8nlohmann10basic_jsonISt3mapSt6vectorS7_blmdSaNS9_14adl_serializerESC_IhSaIhEEEEEEiEvRT_T0_.exit.loopexit.i ], [ %.sroa.8.1.ph291, %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer288 ] +_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit: ; preds = %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer280, %_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN8nlohmann10basic_jsonISt3mapSt6vectorS7_blmdSaNS9_14adl_serializerESC_IhSaIhEEEEEEiEvRT_T0_.exit.loopexit.i + %829 = phi i8 [ %882, %_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN8nlohmann10basic_jsonISt3mapSt6vectorS7_blmdSaNS9_14adl_serializerESC_IhSaIhEEEEEEiEvRT_T0_.exit.loopexit.i ], [ %.ph281, %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer280 ] + %.sroa.8.1 = phi ptr [ %883, %_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN8nlohmann10basic_jsonISt3mapSt6vectorS7_blmdSaNS9_14adl_serializerESC_IhSaIhEEEEEEiEvRT_T0_.exit.loopexit.i ], [ %.sroa.8.1.ph283, %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer280 ] switch i8 %829, label %831 [ i8 1, label %832 i8 2, label %830 @@ -122652,8 +122652,8 @@ _ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_ br label %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer 886: ; preds = %_ZN8tinygltf9ParameterD2Ev.exit - %887 = add nsw i64 %.sroa.19.0.ph290, 1 - br label %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer288 + %887 = add nsw i64 %.sroa.19.0.ph282, 1 + br label %_ZN8nlohmann6detail9iter_implIKNS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv.exit.outer280 .body: ; preds = %848, %844, %842, %861, %863, %866, %873, %871 %.pn123 = phi { ptr, i32 } [ %874, %873 ], [ %872, %871 ], [ %849, %848 ], [ %867, %866 ], [ %843, %842 ], [ %.pn9.i, %844 ], [ %862, %861 ], [ %.pn9.i186, %863 ] diff --git a/bench/tokio-rs/optimized/2v6yx7i5fn42f2o3.ll b/bench/tokio-rs/optimized/2v6yx7i5fn42f2o3.ll index a5d968076f5..64b78f54b1e 100644 --- a/bench/tokio-rs/optimized/2v6yx7i5fn42f2o3.ll +++ b/bench/tokio-rs/optimized/2v6yx7i5fn42f2o3.ll @@ -842,7 +842,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h8f02b98a80546e05E.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !17 br label %_ZN5alloc7raw_vec11finish_grow17h7018fe2c3f3a9a98E.exit @@ -902,7 +902,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h7d57302eecb8abffE.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #20, !noalias !24 br label %_ZN5alloc7raw_vec11finish_grow17h7018fe2c3f3a9a98E.exit.i @@ -961,7 +961,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h7350764a1e697a90E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #20, !noalias !31 br label %_ZN5alloc7raw_vec11finish_grow17h7018fe2c3f3a9a98E.exit.i @@ -1079,7 +1079,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h985ec9d2aa4924cdE.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #20, !noalias !45 br label %_ZN5alloc7raw_vec11finish_grow17h7018fe2c3f3a9a98E.exit.i @@ -1138,7 +1138,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1af0ff43a92b653eE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #20, !noalias !52 br label %_ZN5alloc7raw_vec11finish_grow17h7018fe2c3f3a9a98E.exit.i @@ -1262,7 +1262,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf09b058d65e9d414E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #20, !noalias !66 br label %_ZN5alloc7raw_vec11finish_grow17h7018fe2c3f3a9a98E.exit.i @@ -1321,7 +1321,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h4ea8abf7e45d8959E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #20, !noalias !73 br label %_ZN5alloc7raw_vec11finish_grow17h7018fe2c3f3a9a98E.exit.i @@ -1380,7 +1380,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17haeeb5643e2577f5bE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #20, !noalias !80 br label %_ZN5alloc7raw_vec11finish_grow17h7018fe2c3f3a9a98E.exit.i @@ -1498,7 +1498,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf102f3f55cb8e27aE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #20, !noalias !94 br label %_ZN5alloc7raw_vec11finish_grow17h7018fe2c3f3a9a98E.exit.i @@ -1557,7 +1557,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h4cca590b5920e57fE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #20, !noalias !101 br label %_ZN5alloc7raw_vec11finish_grow17h7018fe2c3f3a9a98E.exit.i @@ -1616,7 +1616,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h453c3e7587c1db13E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #20, !noalias !108 br label %_ZN5alloc7raw_vec11finish_grow17h7018fe2c3f3a9a98E.exit.i @@ -1675,7 +1675,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h15d1fb8781f32524E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #20, !noalias !115 br label %_ZN5alloc7raw_vec11finish_grow17h7018fe2c3f3a9a98E.exit.i @@ -1846,7 +1846,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h8cb %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val23 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 4 @@ -1857,30 +1857,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h8cb "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #20 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit": ; preds = %13 %17 = shl nuw i64 %1, 4 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #20 - %.not37 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not37, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #20 + %.not37 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not37, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 + br label %21 -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -1968,7 +1966,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hc49 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val23 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 3 @@ -1979,30 +1977,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hc49 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #20 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #20 - %.not37 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not37, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #20 + %.not37 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not37, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 + br label %21 -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable @@ -2040,7 +2036,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h8f02b98a80546e05E.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !122 br label %_ZN5alloc7raw_vec11finish_grow17h7018fe2c3f3a9a98E.exit.i diff --git a/bench/tree-sitter-rs/optimized/2x4aq17w1upt0nl8.ll b/bench/tree-sitter-rs/optimized/2x4aq17w1upt0nl8.ll index a4bed61cd3b..5e02fcc4772 100644 --- a/bench/tree-sitter-rs/optimized/2x4aq17w1upt0nl8.ll +++ b/bench/tree-sitter-rs/optimized/2x4aq17w1upt0nl8.ll @@ -455,7 +455,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h5669faa2e12d70c7E.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !17 br label %_ZN5alloc7raw_vec11finish_grow17h7204607715fdb457E.exit @@ -515,7 +515,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hd11d5e47d1a34482E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !24 br label %_ZN5alloc7raw_vec11finish_grow17h7204607715fdb457E.exit.i @@ -642,7 +642,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hebc628f1b2d16f9aE.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !38 br label %_ZN5alloc7raw_vec11finish_grow17h7204607715fdb457E.exit.i @@ -701,7 +701,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha3e6a99544201bd5E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !45 br label %_ZN5alloc7raw_vec11finish_grow17h7204607715fdb457E.exit.i @@ -760,7 +760,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h792f011ca95c2ceeE.exit.thread.i" %15 = shl nuw i64 %7, 6 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 4, i64 noundef %10) #17, !noalias !52 br label %_ZN5alloc7raw_vec11finish_grow17h7204607715fdb457E.exit.i @@ -878,7 +878,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h6e80566537507834E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i29.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !66 br label %_ZN5alloc7raw_vec11finish_grow17h7204607715fdb457E.exit.i @@ -989,7 +989,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h3dd %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val23 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 6 @@ -1000,30 +1000,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h3dd "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 4) #17 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit": ; preds = %13 %17 = shl nuw i64 %1, 6 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #17 - %.not37 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not37, ptr inttoptr (i64 4 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not37, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" - %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #17 + %.not37 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not37, ptr inttoptr (i64 4 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not37, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" + %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 - -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 + br label %21 + +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: cold nonlazybind uwtable @@ -1242,7 +1240,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h5669faa2e12d70c7E.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i29.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val28.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #17, !noalias !94 br label %_ZN5alloc7raw_vec11finish_grow17h7204607715fdb457E.exit.i diff --git a/bench/velox/optimized/Filter.cpp.ll b/bench/velox/optimized/Filter.cpp.ll index decaa3d2fb5..8fba09dac76 100644 --- a/bench/velox/optimized/Filter.cpp.ll +++ b/bench/velox/optimized/Filter.cpp.ll @@ -8846,31 +8846,40 @@ land.rhs: ; preds = %land.lhs.true5 %sub.ptr.lhs.cast.i10 = ptrtoint ptr %17 to i64 %sub.ptr.rhs.cast.i11 = ptrtoint ptr %18 to i64 %sub.ptr.sub.i12 = sub i64 %sub.ptr.lhs.cast.i10, %sub.ptr.rhs.cast.i11 + %sub.ptr.div.i13 = ashr exact i64 %sub.ptr.sub.i12, 3 %cmp11 = icmp eq i64 %sub.ptr.sub.i, %sub.ptr.sub.i12 - br i1 %cmp11, label %for.cond.preheader.split, label %return + br i1 %cmp11, label %for.cond.preheader, label %return -for.cond.preheader.split: ; preds = %land.rhs +for.cond.preheader: ; preds = %land.rhs %cmp1429.not = icmp eq ptr %15, %16 br i1 %cmp1429.not, label %return, label %_ZNKSt6vectorIlSaIlEE2atEm.exit.preheader -_ZNKSt6vectorIlSaIlEE2atEm.exit.preheader: ; preds = %for.cond.preheader.split +_ZNKSt6vectorIlSaIlEE2atEm.exit.preheader: ; preds = %for.cond.preheader %umax = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) br label %_ZNKSt6vectorIlSaIlEE2atEm.exit -_ZNKSt6vectorIlSaIlEE2atEm.exit: ; preds = %_ZNKSt6vectorIlSaIlEE2atEm.exit, %_ZNKSt6vectorIlSaIlEE2atEm.exit.preheader - %i.030 = phi i64 [ 0, %_ZNKSt6vectorIlSaIlEE2atEm.exit.preheader ], [ %inc, %_ZNKSt6vectorIlSaIlEE2atEm.exit ] +_ZNKSt6vectorIlSaIlEE2atEm.exit: ; preds = %_ZNKSt6vectorIlSaIlEE2atEm.exit27, %_ZNKSt6vectorIlSaIlEE2atEm.exit.preheader + %i.030 = phi i64 [ 0, %_ZNKSt6vectorIlSaIlEE2atEm.exit.preheader ], [ %inc, %_ZNKSt6vectorIlSaIlEE2atEm.exit27 ] + %exitcond.not = icmp eq i64 %i.030, %sub.ptr.div.i13 + br i1 %exitcond.not, label %if.then.i.i25, label %_ZNKSt6vectorIlSaIlEE2atEm.exit27 + +if.then.i.i25: ; preds = %_ZNKSt6vectorIlSaIlEE2atEm.exit + tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.114, i64 noundef %sub.ptr.div.i13, i64 noundef %sub.ptr.div.i13) #38 + unreachable + +_ZNKSt6vectorIlSaIlEE2atEm.exit27: ; preds = %_ZNKSt6vectorIlSaIlEE2atEm.exit %add.ptr.i.i = getelementptr inbounds i64, ptr %16, i64 %i.030 %19 = load i64, ptr %add.ptr.i.i, align 8 %add.ptr.i.i26 = getelementptr inbounds i64, ptr %18, i64 %i.030 %20 = load i64, ptr %add.ptr.i.i26, align 8 %cmp19.not = icmp eq i64 %19, %20 %inc = add nuw i64 %i.030, 1 - %exitcond.not = icmp ne i64 %inc, %umax - %or.cond.not = select i1 %cmp19.not, i1 %exitcond.not, i1 false + %exitcond33.not = icmp ne i64 %inc, %umax + %or.cond.not = select i1 %cmp19.not, i1 %exitcond33.not, i1 false br i1 %or.cond.not, label %_ZNKSt6vectorIlSaIlEE2atEm.exit, label %return, !llvm.loop !115 -return: ; preds = %_ZNKSt6vectorIlSaIlEE2atEm.exit, %for.cond.preheader.split, %land.lhs.true, %land.lhs.true.i, %land.lhs.true5, %land.lhs.true2, %_ZNK8facebook5velox6common6Filter17testingBaseEqualsERKS2_.exit, %entry, %land.rhs - %retval.0 = phi i1 [ false, %land.rhs ], [ false, %entry ], [ false, %_ZNK8facebook5velox6common6Filter17testingBaseEqualsERKS2_.exit ], [ false, %land.lhs.true2 ], [ false, %land.lhs.true5 ], [ false, %land.lhs.true.i ], [ false, %land.lhs.true ], [ true, %for.cond.preheader.split ], [ %cmp19.not, %_ZNKSt6vectorIlSaIlEE2atEm.exit ] +return: ; preds = %_ZNKSt6vectorIlSaIlEE2atEm.exit27, %for.cond.preheader, %land.lhs.true, %land.lhs.true.i, %land.lhs.true5, %land.lhs.true2, %_ZNK8facebook5velox6common6Filter17testingBaseEqualsERKS2_.exit, %entry, %land.rhs + %retval.0 = phi i1 [ false, %land.rhs ], [ false, %entry ], [ false, %_ZNK8facebook5velox6common6Filter17testingBaseEqualsERKS2_.exit ], [ false, %land.lhs.true2 ], [ false, %land.lhs.true5 ], [ false, %land.lhs.true.i ], [ false, %land.lhs.true ], [ true, %for.cond.preheader ], [ %cmp19.not, %_ZNKSt6vectorIlSaIlEE2atEm.exit27 ] ret i1 %retval.0 } @@ -9367,97 +9376,12 @@ land.rhs: ; preds = %_ZNK8facebook5velox %11 = load ptr, ptr %nonNegated_, align 8 %nonNegated_3 = getelementptr inbounds nuw i8, ptr %0, i64 16 %12 = load ptr, ptr %nonNegated_3, align 8 - %13 = tail call ptr @__dynamic_cast(ptr nonnull align 8 dereferenceable(16) %12, ptr nonnull @_ZTIN8facebook5velox6common6FilterE, ptr nonnull @_ZTIN8facebook5velox6common26BigintValuesUsingHashTableE, i64 0) #36 - %cmp.not.i = icmp eq ptr %13, null - br i1 %cmp.not.i, label %land.end, label %land.lhs.true.i3 - -land.lhs.true.i3: ; preds = %land.rhs - %deterministic_.i.i = getelementptr inbounds nuw i8, ptr %11, i64 9 - %14 = load i8, ptr %deterministic_.i.i, align 1 - %vtable.i.i = load ptr, ptr %12, align 8 - %vfn.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i, i64 32 - %15 = load ptr, ptr %vfn.i.i, align 8 - %call.i.i = tail call noundef zeroext i1 %15(ptr noundef nonnull align 8 dereferenceable(16) %12) - %16 = trunc i8 %14 to i1 - %17 = xor i1 %call.i.i, %16 - br i1 %17, label %land.end, label %land.lhs.true.i.i - -land.lhs.true.i.i: ; preds = %land.lhs.true.i3 - %nullAllowed_.i.i = getelementptr inbounds nuw i8, ptr %11, i64 8 - %18 = load i8, ptr %nullAllowed_.i.i, align 8 - %nullAllowed_5.i.i = getelementptr inbounds nuw i8, ptr %12, i64 8 - %19 = load i8, ptr %nullAllowed_5.i.i, align 8 - %20 = xor i8 %19, %18 - %21 = and i8 %20, 1 - %cmp8.i.i = icmp eq i8 %21, 0 - br i1 %cmp8.i.i, label %_ZNK8facebook5velox6common6Filter17testingBaseEqualsERKS2_.exit.i, label %land.end - -_ZNK8facebook5velox6common6Filter17testingBaseEqualsERKS2_.exit.i: ; preds = %land.lhs.true.i.i - %kind_.i.i4 = getelementptr inbounds nuw i8, ptr %11, i64 12 - %22 = load i32, ptr %kind_.i.i4, align 4 - %kind_.i.i.i = getelementptr inbounds nuw i8, ptr %12, i64 12 - %23 = load i32, ptr %kind_.i.i.i, align 4 - %cmp10.i.i = icmp eq i32 %22, %23 - br i1 %cmp10.i.i, label %land.lhs.true2.i, label %land.end + %call5 = tail call noundef zeroext i1 @_ZNK8facebook5velox6common26BigintValuesUsingHashTable13testingEqualsERKNS1_6FilterE(ptr noundef nonnull align 8 dereferenceable(96) %11, ptr noundef nonnull align 8 dereferenceable(16) %12) + br label %land.end -land.lhs.true2.i: ; preds = %_ZNK8facebook5velox6common6Filter17testingBaseEqualsERKS2_.exit.i - %min_.i = getelementptr inbounds nuw i8, ptr %11, i64 16 - %24 = load i64, ptr %min_.i, align 8 - %min_3.i = getelementptr inbounds nuw i8, ptr %13, i64 16 - %25 = load i64, ptr %min_3.i, align 8 - %cmp4.i = icmp eq i64 %24, %25 - br i1 %cmp4.i, label %land.lhs.true5.i, label %land.end - -land.lhs.true5.i: ; preds = %land.lhs.true2.i - %max_.i = getelementptr inbounds nuw i8, ptr %11, i64 24 - %26 = load i64, ptr %max_.i, align 8 - %max_6.i = getelementptr inbounds nuw i8, ptr %13, i64 24 - %27 = load i64, ptr %max_6.i, align 8 - %cmp7.i = icmp eq i64 %26, %27 - br i1 %cmp7.i, label %land.rhs.i5, label %land.end - -land.rhs.i5: ; preds = %land.lhs.true5.i - %values_.i = getelementptr inbounds nuw i8, ptr %11, i64 64 - %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %11, i64 72 - %28 = load ptr, ptr %_M_finish.i.i, align 8 - %29 = load ptr, ptr %values_.i, align 8 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %28 to i64 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %29 to i64 - %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i - %sub.ptr.div.i.i = ashr exact i64 %sub.ptr.sub.i.i, 3 - %values_9.i = getelementptr inbounds nuw i8, ptr %13, i64 64 - %_M_finish.i9.i = getelementptr inbounds nuw i8, ptr %13, i64 72 - %30 = load ptr, ptr %_M_finish.i9.i, align 8 - %31 = load ptr, ptr %values_9.i, align 8 - %sub.ptr.lhs.cast.i10.i = ptrtoint ptr %30 to i64 - %sub.ptr.rhs.cast.i11.i = ptrtoint ptr %31 to i64 - %sub.ptr.sub.i12.i = sub i64 %sub.ptr.lhs.cast.i10.i, %sub.ptr.rhs.cast.i11.i - %cmp11.i = icmp eq i64 %sub.ptr.sub.i.i, %sub.ptr.sub.i12.i - br i1 %cmp11.i, label %for.cond.preheader.split.i, label %land.end - -for.cond.preheader.split.i: ; preds = %land.rhs.i5 - %cmp1429.not.i = icmp eq ptr %28, %29 - br i1 %cmp1429.not.i, label %land.end, label %_ZNKSt6vectorIlSaIlEE2atEm.exit.preheader.i - -_ZNKSt6vectorIlSaIlEE2atEm.exit.preheader.i: ; preds = %for.cond.preheader.split.i - %umax.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i, i64 1) - br label %_ZNKSt6vectorIlSaIlEE2atEm.exit.i - -_ZNKSt6vectorIlSaIlEE2atEm.exit.i: ; preds = %_ZNKSt6vectorIlSaIlEE2atEm.exit.i, %_ZNKSt6vectorIlSaIlEE2atEm.exit.preheader.i - %i.030.i = phi i64 [ 0, %_ZNKSt6vectorIlSaIlEE2atEm.exit.preheader.i ], [ %inc.i, %_ZNKSt6vectorIlSaIlEE2atEm.exit.i ] - %add.ptr.i.i.i = getelementptr inbounds i64, ptr %29, i64 %i.030.i - %32 = load i64, ptr %add.ptr.i.i.i, align 8 - %add.ptr.i.i26.i = getelementptr inbounds i64, ptr %31, i64 %i.030.i - %33 = load i64, ptr %add.ptr.i.i26.i, align 8 - %cmp19.not.i = icmp eq i64 %32, %33 - %inc.i = add nuw i64 %i.030.i, 1 - %exitcond.not.i = icmp ne i64 %inc.i, %umax.i - %or.cond.not = select i1 %cmp19.not.i, i1 %exitcond.not.i, i1 false - br i1 %or.cond.not, label %_ZNKSt6vectorIlSaIlEE2atEm.exit.i, label %land.end, !llvm.loop !115 - -land.end: ; preds = %_ZNKSt6vectorIlSaIlEE2atEm.exit.i, %land.lhs.true, %land.lhs.true.i, %for.cond.preheader.split.i, %land.rhs.i5, %land.lhs.true5.i, %land.lhs.true2.i, %_ZNK8facebook5velox6common6Filter17testingBaseEqualsERKS2_.exit.i, %land.lhs.true.i.i, %land.lhs.true.i3, %land.rhs, %_ZNK8facebook5velox6common6Filter17testingBaseEqualsERKS2_.exit, %entry - %34 = phi i1 [ false, %_ZNK8facebook5velox6common6Filter17testingBaseEqualsERKS2_.exit ], [ false, %entry ], [ false, %land.rhs.i5 ], [ false, %land.rhs ], [ false, %_ZNK8facebook5velox6common6Filter17testingBaseEqualsERKS2_.exit.i ], [ false, %land.lhs.true2.i ], [ false, %land.lhs.true5.i ], [ false, %land.lhs.true.i.i ], [ false, %land.lhs.true.i3 ], [ true, %for.cond.preheader.split.i ], [ false, %land.lhs.true.i ], [ false, %land.lhs.true ], [ %cmp19.not.i, %_ZNKSt6vectorIlSaIlEE2atEm.exit.i ] - ret i1 %34 +land.end: ; preds = %land.lhs.true, %land.lhs.true.i, %land.rhs, %_ZNK8facebook5velox6common6Filter17testingBaseEqualsERKS2_.exit, %entry + %13 = phi i1 [ false, %_ZNK8facebook5velox6common6Filter17testingBaseEqualsERKS2_.exit ], [ false, %entry ], [ %call5, %land.rhs ], [ false, %land.lhs.true.i ], [ false, %land.lhs.true ] + ret i1 %13 } ; Function Attrs: mustprogress uwtable diff --git a/bench/wasmedge/optimized/formchecker.cpp.ll b/bench/wasmedge/optimized/formchecker.cpp.ll index 45baf49691a..46836319ab2 100644 --- a/bench/wasmedge/optimized/formchecker.cpp.ll +++ b/bench/wasmedge/optimized/formchecker.cpp.ll @@ -4479,62 +4479,65 @@ _ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit1257: ; preds = %.loopexit, %.l %1190 = ptrtoint ptr %2 to i64 %1191 = getelementptr inbounds nuw i8, ptr %50, i64 8 %1192 = getelementptr inbounds nuw i8, ptr %50, i64 16 - %1193 = trunc i64 %.sroa.3.0.i1294 to i32 - %.not906.not3065 = icmp eq i32 %1193, 0 - %1194 = and i64 %.sroa.3.0.i1294, 4294967295 - br label %1196 + br label %1194 -1195: ; preds = %_ZNSt6vectorISt8optionalIN8WasmEdge7ValTypeEESaIS3_EED2Ev.exit1305 +1193: ; preds = %_ZNSt6vectorISt8optionalIN8WasmEdge7ValTypeEESaIS3_EED2Ev.exit1305 %indvars.iv.next3091 = add nuw nsw i64 %indvars.iv3090, 1 %exitcond.not = icmp eq i64 %indvars.iv.next3091, %1161 - br i1 %exitcond.not, label %._crit_edge3074.loopexit, label %1196, !llvm.loop !84 + br i1 %exitcond.not, label %._crit_edge3074.loopexit, label %1194, !llvm.loop !84 -1196: ; preds = %.lr.ph3073, %1195 - %indvars.iv3090 = phi i64 [ 0, %.lr.ph3073 ], [ %indvars.iv.next3091, %1195 ] - %1197 = getelementptr inbounds nuw %"struct.WasmEdge::AST::Instruction::JumpDescriptor", ptr %1154, i64 %indvars.iv3090 - %1198 = load i32, ptr %1197, align 4 +1194: ; preds = %.lr.ph3073, %1193 + %indvars.iv3090 = phi i64 [ 0, %.lr.ph3073 ], [ %indvars.iv.next3091, %1193 ] + %1195 = getelementptr inbounds nuw %"struct.WasmEdge::AST::Instruction::JumpDescriptor", ptr %1154, i64 %indvars.iv3090 + %1196 = load i32, ptr %1195, align 4 %.val961.val = load ptr, ptr %1164, align 8 %.val961.val968 = load ptr, ptr %1165, align 8 - call fastcc void @"_ZZN8WasmEdge9Validator11FormChecker10checkInstrERKNS_3AST11InstructionEENK3$_1clEj"(ptr dead_on_unwind noalias writable align 4 %49, ptr %.val961.val, ptr %.val961.val968, i32 noundef %1198) - %1199 = load i8, ptr %49, align 4 - %1200 = trunc i8 %1199 to i1 - %1201 = load i32, ptr %1185, align 4 - br i1 %1200, label %1202, label %1279 - -1202: ; preds = %1196 - %1203 = zext i32 %1201 to i64 - %1204 = load ptr, ptr %1164, align 8 - %1205 = getelementptr inbounds nuw %"struct.WasmEdge::Validator::FormChecker::CtrlFrame", ptr %1204, i64 %1203 - %1206 = getelementptr inbounds nuw i8, ptr %1205, i64 76 - %1207 = load i32, ptr %1206, align 4 - %1208 = icmp eq i32 %1207, 3 - %1209 = getelementptr inbounds nuw i8, ptr %1205, i64 24 - %1210 = load ptr, ptr %1209, align 8 - %1211 = load ptr, ptr %1205, align 8 - %.sink6.i1297 = select i1 %1208, i64 8, i64 32 - %.sink4.i1298 = select i1 %1208, ptr %1211, ptr %1210 - %1212 = getelementptr inbounds nuw i8, ptr %1205, i64 %.sink6.i1297 - %1213 = load ptr, ptr %1212, align 8 - %1214 = ptrtoint ptr %1213 to i64 - %1215 = ptrtoint ptr %.sink4.i1298 to i64 - %1216 = sub i64 %1214, %1215 - %.sroa.3.0.i1300 = ashr exact i64 %1216, 3 - %.not905 = icmp eq i64 %.sroa.3.0.i1294, %.sroa.3.0.i1300 - br i1 %.not905, label %1219, label %1217 - -1217: ; preds = %1202 + call fastcc void @"_ZZN8WasmEdge9Validator11FormChecker10checkInstrERKNS_3AST11InstructionEENK3$_1clEj"(ptr dead_on_unwind noalias writable align 4 %49, ptr %.val961.val, ptr %.val961.val968, i32 noundef %1196) + %1197 = load i8, ptr %49, align 4 + %1198 = trunc i8 %1197 to i1 + %1199 = load i32, ptr %1185, align 4 + br i1 %1198, label %1200, label %1279 + +1200: ; preds = %1194 + %1201 = zext i32 %1199 to i64 + %1202 = load ptr, ptr %1164, align 8 + %1203 = getelementptr inbounds nuw %"struct.WasmEdge::Validator::FormChecker::CtrlFrame", ptr %1202, i64 %1201 + %1204 = getelementptr inbounds nuw i8, ptr %1203, i64 76 + %1205 = load i32, ptr %1204, align 4 + %1206 = icmp eq i32 %1205, 3 + %1207 = getelementptr inbounds nuw i8, ptr %1203, i64 24 + %1208 = load ptr, ptr %1207, align 8 + %1209 = load ptr, ptr %1203, align 8 + %.sink6.i1297 = select i1 %1206, i64 8, i64 32 + %.sink4.i1298 = select i1 %1206, ptr %1209, ptr %1208 + %1210 = getelementptr inbounds nuw i8, ptr %1203, i64 %.sink6.i1297 + %1211 = load ptr, ptr %1210, align 8 + %1212 = ptrtoint ptr %1211 to i64 + %1213 = ptrtoint ptr %.sink4.i1298 to i64 + %1214 = sub i64 %1212, %1213 + %.sroa.3.0.i1300 = ashr exact i64 %1214, 3 + %.not905 = icmp eq i64 %1184, %1214 + br i1 %.not905, label %1217, label %1215 + +1215: ; preds = %1200 %.val990.val = load ptr, ptr %1, align 8 - %1218 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val990.val997 = load ptr, ptr %1218, align 8 + %1216 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %.val990.val997 = load ptr, ptr %1216, align 8 call fastcc void @"_ZZN8WasmEdge9Validator11FormChecker10checkInstrERKNS_3AST11InstructionEENK3$_3clEN5cxx204spanIKNS_7ValTypeELm18446744073709551615EEESB_"(ptr dead_on_unwind noalias writable align 4 %0, ptr %.val990.val, ptr %.val990.val997, ptr %.sink4.i1292, i64 %.sroa.3.0.i1294, ptr %.sink4.i1298, i64 %.sroa.3.0.i1300) br label %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit1268 -1219: ; preds = %1202 - call void @_ZNSt6vectorISt8optionalIN8WasmEdge7ValTypeEESaIS3_EEC2EmRKS4_(ptr noundef nonnull align 8 dereferenceable(24) %50, i64 noundef %.sroa.3.0.i1294, ptr noundef nonnull align 1 dereferenceable(1) %51) - br i1 %.not906.not3065, label %._crit_edge3070, label %.lr.ph3069 +1217: ; preds = %1200 + call void @_ZNSt6vectorISt8optionalIN8WasmEdge7ValTypeEESaIS3_EEC2EmRKS4_(ptr noundef nonnull align 8 dereferenceable(24) %50, i64 noundef %.sroa.3.0.i1300, ptr noundef nonnull align 1 dereferenceable(1) %51) + %1218 = trunc i64 %.sroa.3.0.i1300 to i32 + %.not906.not3065 = icmp eq i32 %1218, 0 + br i1 %.not906.not3065, label %._crit_edge3070, label %.lr.ph3069.preheader -.lr.ph3069: ; preds = %1219, %1243 - %indvars.iv = phi i64 [ %1220, %1243 ], [ %1194, %1219 ] +.lr.ph3069.preheader: ; preds = %1217 + %1219 = and i64 %.sroa.3.0.i1300, 4294967295 + br label %.lr.ph3069 + +.lr.ph3069: ; preds = %.lr.ph3069.preheader, %1243 + %indvars.iv = phi i64 [ %1219, %.lr.ph3069.preheader ], [ %1220, %1243 ] %1220 = add nsw i64 %indvars.iv, -1 %1221 = getelementptr inbounds nuw %"class.WasmEdge::ValType", ptr %.sink4.i1298, i64 %1220 %.sroa.0638.0.copyload = load i64, ptr %1221, align 4 @@ -4598,7 +4601,7 @@ _ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit1257: ; preds = %.loopexit, %.l %.not906.not.wide = icmp eq i64 %1220, 0 br i1 %.not906.not.wide, label %._crit_edge3070, label %.lr.ph3069, !llvm.loop !88 -._crit_edge3070: ; preds = %1243, %1219 +._crit_edge3070: ; preds = %1243, %1217 %1244 = load ptr, ptr %1189, align 8 %1245 = load ptr, ptr %1188, align 8 %1246 = ptrtoint ptr %1244 to i64 @@ -4606,23 +4609,23 @@ _ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit1257: ; preds = %.loopexit, %.l %1248 = sub i64 %1246, %1247 %1249 = sdiv exact i64 %1248, 12 %1250 = load ptr, ptr %1164, align 8 - %1251 = getelementptr inbounds nuw %"struct.WasmEdge::Validator::FormChecker::CtrlFrame", ptr %1250, i64 %1203, i32 3 + %1251 = getelementptr inbounds nuw %"struct.WasmEdge::Validator::FormChecker::CtrlFrame", ptr %1250, i64 %1201, i32 3 %1252 = load i64, ptr %1251, align 8 %1253 = sub i64 %1249, %1252 %1254 = trunc i64 %1253 to i32 - %1255 = add i32 %1254, %1193 - %1256 = getelementptr inbounds nuw i8, ptr %1197, i64 4 + %1255 = add i32 %1254, %1218 + %1256 = getelementptr inbounds nuw i8, ptr %1195, i64 4 store i32 %1255, ptr %1256, align 4 - %1257 = getelementptr inbounds nuw i8, ptr %1197, i64 8 - store i32 %1193, ptr %1257, align 4 + %1257 = getelementptr inbounds nuw i8, ptr %1195, i64 8 + store i32 %1218, ptr %1257, align 4 %1258 = load ptr, ptr %1164, align 8 - %1259 = getelementptr inbounds nuw %"struct.WasmEdge::Validator::FormChecker::CtrlFrame", ptr %1258, i64 %1203, i32 2 + %1259 = getelementptr inbounds nuw %"struct.WasmEdge::Validator::FormChecker::CtrlFrame", ptr %1258, i64 %1201, i32 2 %1260 = load ptr, ptr %1259, align 8 %1261 = ptrtoint ptr %1260 to i64 %1262 = sub i64 %1261, %1190 %1263 = lshr exact i64 %1262, 5 %1264 = trunc i64 %1263 to i32 - %1265 = getelementptr inbounds nuw i8, ptr %1197, i64 12 + %1265 = getelementptr inbounds nuw i8, ptr %1195, i64 12 store i32 %1264, ptr %1265, align 4 %1266 = load ptr, ptr %50, align 8 %1267 = load ptr, ptr %1191, align 8 @@ -4648,14 +4651,14 @@ _ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit1257: ; preds = %.loopexit, %.l br label %_ZNSt6vectorISt8optionalIN8WasmEdge7ValTypeEESaIS3_EED2Ev.exit1305 _ZNSt6vectorISt8optionalIN8WasmEdge7ValTypeEESaIS3_EED2Ev.exit1305: ; preds = %1272, %1274 - br i1 %.not906.not3056, label %1195, label %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit1268 + br i1 %.not906.not3056, label %1193, label %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit1268 -1279: ; preds = %1196 +1279: ; preds = %1194 store i8 0, ptr %0, align 4 - store i32 %1201, ptr %1187, align 4 + store i32 %1199, ptr %1187, align 4 br label %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit1268 -._crit_edge3074.loopexit: ; preds = %1195 +._crit_edge3074.loopexit: ; preds = %1193 %.pre3100 = load ptr, ptr %1164, align 8 %.phi.trans.insert3101 = getelementptr inbounds nuw %"struct.WasmEdge::Validator::FormChecker::CtrlFrame", ptr %.pre3100, i64 %1171 %.phi.trans.insert3102 = getelementptr inbounds nuw i8, ptr %.phi.trans.insert3101, i64 76 @@ -13018,7 +13021,7 @@ _ZSteqIN8WasmEdge7ValTypeES1_ENSt9enable_ifIXsr14is_convertibleIDTeqclsr3stdE7de 5323: ; preds = %3 unreachable -_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit1268: ; preds = %_ZNSt6vectorISt8optionalIN8WasmEdge7ValTypeEESaIS3_EED2Ev.exit1305, %4414, %4410, %4364, %4360, %4340, %4336, %3949, %3945, %3925, %3921, %2920, %2918, %2602, %2600, %2319, %2317, %2145, %2143, %1963, %1836, %1834, %1517, %1515, %1007, %973, %971, %913, %816, %5306, %5289, %5272, %5255, %5238, %5221, %5204, %5191, %5178, %5165, %5152, %5139, %5126, %5113, %5100, %5087, %5074, %5061, %5048, %5035, %5022, %5009, %4996, %4983, %4970, %4957, %4944, %4931, %4918, %4905, %4892, %4879, %4866, %4853, %4840, %4827, %4814, %4801, %4788, %4775, %4762, %4749, %4736, %4723, %4710, %4697, %4684, %4671, %4658, %4649, %4640, %4631, %4622, %4613, %4604, %4595, %4586, %4577, %4568, %4559, %4550, %4541, %4532, %4515, %4498, %4485, %4484, %4467, %4454, %4437, %4428, %4415, %4382, %4365, %4312, %4303, %4294, %4285, %4271, %4261, %4247, %4237, %4223, %4213, %4199, %4189, %4175, %4165, %4151, %4141, %4128, %4126, %4118, %4109, %4100, %4091, %4082, %4069, %4056, %4043, %4030, %4021, %4012, %4003, %3994, %3985, %3976, %3963, %3950, %3889, %3876, %3863, %3850, %3841, %3832, %3823, %3814, %3805, %3796, %3787, %3778, %3769, %3760, %3751, %3742, %3733, %3724, %3715, %3706, %3697, %3688, %3679, %3670, %3661, %3652, %3643, %3634, %3625, %3616, %3607, %3598, %3593, %3588, %3583, %3578, %3577, %3573, %3549, %3546, %3528, %3524, %3509, %3496, %3491, %3482, %3473, %3464, %3455, %3446, %3437, %3428, %3419, %3410, %3401, %3392, %3383, %3374, %3365, %3356, %3347, %3338, %3329, %3328, %3324, %3300, %3296, %3269, %3251, %3247, %3219, %3197, %3192, %3183, %3177, %3172, %3165, %3152, %3151, %3142, %3137, %3119, %3112, %3105, %3103, %3082, %3070, %3066, %3050, %3042, %3039, %3035, %3020, %3010, %3003, %2998, %2986, %2982, %2973, %2964, %2960, %2953, %2946, %2939, %2934, %2782, %2763, %2756, %2747, %2745, %2740, %2734, %2714, %2693, %2687, %2684, %2661, %2657, %2632, %2611, %2608, %2559, %2544, %.thread2999, %2532, %2528, %2511, %2493, %2479, %2472, %2449, %2435, %2430, %2412, %2394, %2380, %2374, %2360, %2352, %2334, %2288, %2285, %2269, %2254, %2244, %2242, %2234, %2208, %2206, %2198, %2194, %2177, %2151, %2077, %2075, %2071, %2062, %2042, %2015, %2013, %2003, %2000, %1996, %1976, %1974, %1968, %1967, %1914, %1913, %1909, %1892, %1884, %1851, %1798, %1797, %1793, %1776, %1769, %1738, %1731, %1717, %1713, %1696, %1655, %1640, %1618, %1614, %1605, %1598, %1559, %1555, %1543, %1539, %1523, %1412, %1409, %1408, %1372, %1363, %1328, %1301, %1297, %1279, %1217, %1148, %1118, %1114, %1087, %1080, %1047, %1043, %1020, %1011, %992, %988, %982, %979, %929, %917, %831, %819, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit1255, %565, %564 +_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit1268: ; preds = %_ZNSt6vectorISt8optionalIN8WasmEdge7ValTypeEESaIS3_EED2Ev.exit1305, %4414, %4410, %4364, %4360, %4340, %4336, %3949, %3945, %3925, %3921, %2920, %2918, %2602, %2600, %2319, %2317, %2145, %2143, %1963, %1836, %1834, %1517, %1515, %1007, %973, %971, %913, %816, %5306, %5289, %5272, %5255, %5238, %5221, %5204, %5191, %5178, %5165, %5152, %5139, %5126, %5113, %5100, %5087, %5074, %5061, %5048, %5035, %5022, %5009, %4996, %4983, %4970, %4957, %4944, %4931, %4918, %4905, %4892, %4879, %4866, %4853, %4840, %4827, %4814, %4801, %4788, %4775, %4762, %4749, %4736, %4723, %4710, %4697, %4684, %4671, %4658, %4649, %4640, %4631, %4622, %4613, %4604, %4595, %4586, %4577, %4568, %4559, %4550, %4541, %4532, %4515, %4498, %4485, %4484, %4467, %4454, %4437, %4428, %4415, %4382, %4365, %4312, %4303, %4294, %4285, %4271, %4261, %4247, %4237, %4223, %4213, %4199, %4189, %4175, %4165, %4151, %4141, %4128, %4126, %4118, %4109, %4100, %4091, %4082, %4069, %4056, %4043, %4030, %4021, %4012, %4003, %3994, %3985, %3976, %3963, %3950, %3889, %3876, %3863, %3850, %3841, %3832, %3823, %3814, %3805, %3796, %3787, %3778, %3769, %3760, %3751, %3742, %3733, %3724, %3715, %3706, %3697, %3688, %3679, %3670, %3661, %3652, %3643, %3634, %3625, %3616, %3607, %3598, %3593, %3588, %3583, %3578, %3577, %3573, %3549, %3546, %3528, %3524, %3509, %3496, %3491, %3482, %3473, %3464, %3455, %3446, %3437, %3428, %3419, %3410, %3401, %3392, %3383, %3374, %3365, %3356, %3347, %3338, %3329, %3328, %3324, %3300, %3296, %3269, %3251, %3247, %3219, %3197, %3192, %3183, %3177, %3172, %3165, %3152, %3151, %3142, %3137, %3119, %3112, %3105, %3103, %3082, %3070, %3066, %3050, %3042, %3039, %3035, %3020, %3010, %3003, %2998, %2986, %2982, %2973, %2964, %2960, %2953, %2946, %2939, %2934, %2782, %2763, %2756, %2747, %2745, %2740, %2734, %2714, %2693, %2687, %2684, %2661, %2657, %2632, %2611, %2608, %2559, %2544, %.thread2999, %2532, %2528, %2511, %2493, %2479, %2472, %2449, %2435, %2430, %2412, %2394, %2380, %2374, %2360, %2352, %2334, %2288, %2285, %2269, %2254, %2244, %2242, %2234, %2208, %2206, %2198, %2194, %2177, %2151, %2077, %2075, %2071, %2062, %2042, %2015, %2013, %2003, %2000, %1996, %1976, %1974, %1968, %1967, %1914, %1913, %1909, %1892, %1884, %1851, %1798, %1797, %1793, %1776, %1769, %1738, %1731, %1717, %1713, %1696, %1655, %1640, %1618, %1614, %1605, %1598, %1559, %1555, %1543, %1539, %1523, %1412, %1409, %1408, %1372, %1363, %1328, %1301, %1297, %1279, %1215, %1148, %1118, %1114, %1087, %1080, %1047, %1043, %1020, %1011, %992, %988, %982, %979, %929, %917, %831, %819, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit1255, %565, %564 ret void _ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit1266: ; preds = %2928, %2926, %2586, %2583, %2328, %2325, %2104, %2102, %1845, %1842, %1447, %1445, %1234, %1232, %964, %962, %3298, %3249, %3037, %3022, %3012, %2784, %2736, %2716, %2659, %2474, %2073, %1998, %1961, %1005, %911, %814, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit1257 diff --git a/bench/wasmtime-rs/optimized/2ful1fsqwz7k9aan.ll b/bench/wasmtime-rs/optimized/2ful1fsqwz7k9aan.ll index 4e6db7ec7cf..1df2569b8b9 100644 --- a/bench/wasmtime-rs/optimized/2ful1fsqwz7k9aan.ll +++ b/bench/wasmtime-rs/optimized/2ful1fsqwz7k9aan.ll @@ -1416,7 +1416,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h16893dcf0c66ca57E.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 17) 8, i64 noundef %11) #17, !noalias !13 br label %_ZN5alloc7raw_vec11finish_grow17h3e098f3409a73632E.exit @@ -1532,7 +1532,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha8995590edd3f715E.exit.thread" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 17) 8, i64 noundef %11) #17, !noalias !21 br label %_ZN5alloc7raw_vec11finish_grow17h3e098f3409a73632E.exit @@ -1650,7 +1650,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h7d4a8367f93ea194E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 17) 8, i64 noundef %11) #17, !noalias !29 br label %_ZN5alloc7raw_vec11finish_grow17h3e098f3409a73632E.exit @@ -2122,7 +2122,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h14bcc4f86bda05b5E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 17) 8, i64 noundef %11) #17, !noalias !61 br label %_ZN5alloc7raw_vec11finish_grow17h3e098f3409a73632E.exit @@ -2359,7 +2359,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha79f1f1fe83439bfE.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 17) 8, i64 noundef %10) #17, !noalias !89 br label %_ZN5alloc7raw_vec11finish_grow17h3e098f3409a73632E.exit.i @@ -2486,7 +2486,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1be9f570d9577df0E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 17) 8, i64 noundef %10) #17, !noalias !103 br label %_ZN5alloc7raw_vec11finish_grow17h3e098f3409a73632E.exit.i @@ -2545,7 +2545,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hbb413629ac0ec474E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 17) 8, i64 noundef %10) #17, !noalias !110 br label %_ZN5alloc7raw_vec11finish_grow17h3e098f3409a73632E.exit.i @@ -2663,7 +2663,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h14bcc4f86bda05b5E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 17) 8, i64 noundef %10) #17, !noalias !124 br label %_ZN5alloc7raw_vec11finish_grow17h3e098f3409a73632E.exit.i @@ -2899,7 +2899,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha8995590edd3f715E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 17) 8, i64 noundef %10) #17, !noalias !152 br label %_ZN5alloc7raw_vec11finish_grow17h3e098f3409a73632E.exit.i @@ -3076,7 +3076,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h6f0e188508b7ab6bE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 17) 8, i64 noundef %10) #17, !noalias !173 br label %_ZN5alloc7raw_vec11finish_grow17h3e098f3409a73632E.exit.i @@ -3250,7 +3250,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h74d %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 3 @@ -3261,30 +3261,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h74d "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #17 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #17 - %.not34 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not34, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #17 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not34, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 - -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 + br label %21 + +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: nonlazybind uwtable @@ -3563,7 +3561,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha8995590edd3f715E.exit.thread.i" %16 = shl nuw i64 %8, 5 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 17) 8, i64 noundef %11) #17, !noalias !201 br label %_ZN5alloc7raw_vec11finish_grow17h3e098f3409a73632E.exit.i @@ -3622,7 +3620,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h14bcc4f86bda05b5E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 17) 8, i64 noundef %11) #17, !noalias !208 br label %_ZN5alloc7raw_vec11finish_grow17h3e098f3409a73632E.exit.i @@ -3976,7 +3974,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h16893dcf0c66ca57E.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 17) 8, i64 noundef %11) #17, !noalias !250 br label %_ZN5alloc7raw_vec11finish_grow17h3e098f3409a73632E.exit.i @@ -4094,7 +4092,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h7d4a8367f93ea194E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 17) 8, i64 noundef %11) #17, !noalias !264 br label %_ZN5alloc7raw_vec11finish_grow17h3e098f3409a73632E.exit.i diff --git a/bench/wasmtime-rs/optimized/2zbrxqpx49ysr6cn.ll b/bench/wasmtime-rs/optimized/2zbrxqpx49ysr6cn.ll index ede04227319..333632cfbec 100644 --- a/bench/wasmtime-rs/optimized/2zbrxqpx49ysr6cn.ll +++ b/bench/wasmtime-rs/optimized/2zbrxqpx49ysr6cn.ll @@ -181,7 +181,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h5c3be839285ff494E.exit.thread" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #17, !noalias !9 br label %_ZN5alloc7raw_vec11finish_grow17hc9f2f09a114c7e96E.exit @@ -241,7 +241,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1334a83bcc88afc7E.exit.thread.i" %15 = shl nuw i64 %7, 2 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 4, i64 noundef %10) #17, !noalias !16 br label %_ZN5alloc7raw_vec11finish_grow17hc9f2f09a114c7e96E.exit.i @@ -359,7 +359,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hbdbb4e1cac7e2fa7E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !30 br label %_ZN5alloc7raw_vec11finish_grow17hc9f2f09a114c7e96E.exit.i @@ -418,7 +418,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h88a38a5377bfd33cE.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #17, !noalias !37 br label %_ZN5alloc7raw_vec11finish_grow17hc9f2f09a114c7e96E.exit.i @@ -477,7 +477,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h5c3be839285ff494E.exit.thread.i" %15 = shl nuw i64 %7, 2 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 4, i64 noundef %10) #17, !noalias !44 br label %_ZN5alloc7raw_vec11finish_grow17hc9f2f09a114c7e96E.exit.i @@ -599,7 +599,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hb04 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 2 @@ -610,30 +610,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hb04 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 4) #17 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %17 = shl nuw i64 %1, 2 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #17 - %.not34 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not34, ptr inttoptr (i64 4 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not34, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" - %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef %17) #17 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 4 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not34, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" + %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 - -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 + br label %21 + +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: cold nonlazybind uwtable @@ -725,7 +723,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h5c3be839285ff494E.exit.thread.i" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #17, !noalias !65 br label %_ZN5alloc7raw_vec11finish_grow17hc9f2f09a114c7e96E.exit.i diff --git a/bench/wasmtime-rs/optimized/l3869xz334uj87z.ll b/bench/wasmtime-rs/optimized/l3869xz334uj87z.ll index b2c53619e12..164e23ef3f8 100644 --- a/bench/wasmtime-rs/optimized/l3869xz334uj87z.ll +++ b/bench/wasmtime-rs/optimized/l3869xz334uj87z.ll @@ -720,7 +720,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h576ad934f915625fE.exit.thread" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #22, !noalias !29 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit @@ -779,7 +779,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h15e15650dde9fd67E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !33 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit @@ -838,7 +838,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h11a03c9f50641244E.exit.thread" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #22, !noalias !37 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit @@ -954,7 +954,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0f9347df9608ea8aE.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !45 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit @@ -1072,7 +1072,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1bc01ed067abdc9fE.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !53 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit @@ -1131,7 +1131,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h53ccf550328eabfbE.exit.thread" %16 = shl nuw i64 %8, 7 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !57 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit @@ -1190,7 +1190,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hb2c20816b5aa03dbE.exit.thread" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !61 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit @@ -1249,7 +1249,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h125a2de7994c079aE.exit.thread" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #22, !noalias !65 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit @@ -1308,7 +1308,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1abc963cfe465336E.exit.thread" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !69 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit @@ -1427,7 +1427,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2aae11b818943e27E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #22, !noalias !80 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit.i @@ -1486,7 +1486,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h414254a896d87734E.exit.thread.i" %15 = shl nuw i64 %7, 5 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #22, !noalias !87 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit.i @@ -1545,7 +1545,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h060e6f8c8b6f1ae4E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #22, !noalias !94 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit.i @@ -1604,7 +1604,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h3b3a8799e4263bb0E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #22, !noalias !101 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit.i @@ -1722,7 +1722,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h40b57e31fe17d168E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 4, i64 noundef %10) #22, !noalias !115 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit.i @@ -1849,7 +1849,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h12b52e59f835e401E.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #22, !noalias !129 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit.i @@ -1908,7 +1908,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hd0aa23f92cc09cadE.exit.thread.i" %15 = shl nuw i64 %7, 3 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #22, !noalias !136 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit.i @@ -1967,7 +1967,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h 14: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1abc963cfe465336E.exit.thread.i" %15 = shl nuw i64 %7, 4 - %16 = icmp uge i64 %10, %15 + %16 = icmp uge i64 %.0.sroa.speculated.i26.i, %7 tail call void @llvm.assume(i1 %16) %17 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %15, i64 noundef range(i64 1, 9) 8, i64 noundef %10) #22, !noalias !143 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit.i @@ -2021,7 +2021,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hb1e %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %11, align 8 %12 = icmp eq i64 %4, 0 - br i1 %12, label %22, label %13 + br i1 %12, label %21, label %13 13: ; preds = %10 %14 = shl nuw i64 %4, 3 @@ -2032,30 +2032,28 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hb1e "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit": ; preds = %13 tail call void @__rust_dealloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) 8) #22 - br label %21 + br label %20 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %17 = shl nuw i64 %1, 3 - %18 = icmp ule i64 %17, %14 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #22 - %.not34 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %19 - %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not34, label %22, label %21 - -21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" - %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8, i64 noundef %17) #22 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %18 + %19 = ptrtoint ptr %.sink1.i to i64 + br i1 %.not34, label %21, label %20 + +20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" + %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] store ptr %storemerge, ptr %11, align 8 store i64 %1, ptr %0, align 8 - br label %22 - -22: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %21 - %.sroa.4.0 = phi i64 [ undef, %21 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %21 ], [ -9223372036854775807, %10 ], [ %20, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] - %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 + br label %21 + +21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %10, %20 + %.sroa.4.0 = phi i64 [ undef, %20 ], [ undef, %10 ], [ %17, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %20 ], [ -9223372036854775807, %10 ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] + %22 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, i64 } %22, i64 %.sroa.4.0, 1 + ret { i64, i64 } %23 } ; Function Attrs: cold nonlazybind uwtable @@ -2088,7 +2086,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h15e15650dde9fd67E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !150 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit.i @@ -2147,7 +2145,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1bc01ed067abdc9fE.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !157 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit.i @@ -2274,7 +2272,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h53ccf550328eabfbE.exit.thread.i" %16 = shl nuw i64 %8, 7 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !171 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit.i @@ -2333,7 +2331,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h125a2de7994c079aE.exit.thread.i" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #22, !noalias !178 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit.i @@ -2451,7 +2449,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0f9347df9608ea8aE.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !192 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit.i @@ -2510,7 +2508,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h576ad934f915625fE.exit.thread.i" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #22, !noalias !199 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit.i @@ -2569,7 +2567,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h11a03c9f50641244E.exit.thread.i" %16 = shl nuw i64 %8, 2 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 4, i64 noundef %11) #22, !noalias !206 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit.i @@ -2628,7 +2626,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h1abc963cfe465336E.exit.thread.i" %16 = shl nuw i64 %8, 4 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !213 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit.i @@ -2746,7 +2744,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ 15: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hb2c20816b5aa03dbE.exit.thread.i" %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.0.sroa.speculated.i26.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val25.i, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #22, !noalias !227 br label %_ZN5alloc7raw_vec11finish_grow17h741923f855b78c7cE.exit.i diff --git a/bench/xgboost/optimized/gblinear_model.cc.ll b/bench/xgboost/optimized/gblinear_model.cc.ll index bfb9724c510..a094a7b89ac 100644 --- a/bench/xgboost/optimized/gblinear_model.cc.ll +++ b/bench/xgboost/optimized/gblinear_model.cc.ll @@ -735,50 +735,50 @@ _ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt %16 = getelementptr inbounds nuw i8, ptr %15, i64 12 %17 = load i32, ptr %16, align 4 %18 = icmp eq i32 %17, 7 - %19 = getelementptr inbounds nuw i8, ptr %0, i64 168 - br i1 %18, label %20, label %52 - -20: ; preds = %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt4lessIvESaISt4pairIKS5_S7_EEE4findIA8_cEEDTcldtdtdefpT4_M_t10_M_find_trfp_EERKT_.exit - %21 = tail call noundef ptr @_ZN7xgboost4CastIKNS_14JsonTypedArrayIfLNS_5Value9ValueKindE7EEEKS2_EEPT_PT0_(ptr noundef nonnull %15) - %22 = getelementptr inbounds nuw i8, ptr %21, i64 16 - %23 = getelementptr inbounds nuw i8, ptr %0, i64 160 - %24 = getelementptr inbounds nuw i8, ptr %21, i64 24 - %25 = load ptr, ptr %24, align 8 - %26 = load ptr, ptr %22, align 8 + br i1 %18, label %19, label %52 + +19: ; preds = %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt4lessIvESaISt4pairIKS5_S7_EEE4findIA8_cEEDTcldtdtdefpT4_M_t10_M_find_trfp_EERKT_.exit + %20 = tail call noundef ptr @_ZN7xgboost4CastIKNS_14JsonTypedArrayIfLNS_5Value9ValueKindE7EEEKS2_EEPT_PT0_(ptr noundef nonnull %15) + %21 = getelementptr inbounds nuw i8, ptr %20, i64 16 + %22 = getelementptr inbounds nuw i8, ptr %0, i64 160 + %23 = getelementptr inbounds nuw i8, ptr %20, i64 24 + %24 = load ptr, ptr %23, align 8 + %25 = load ptr, ptr %21, align 8 + %26 = ptrtoint ptr %24 to i64 %27 = ptrtoint ptr %25 to i64 - %28 = ptrtoint ptr %26 to i64 - %29 = sub i64 %27, %28 - %30 = ashr exact i64 %29, 2 - %31 = load ptr, ptr %19, align 8 - %32 = load ptr, ptr %23, align 8 + %28 = sub i64 %26, %27 + %29 = getelementptr inbounds nuw i8, ptr %0, i64 168 + %30 = load ptr, ptr %29, align 8 + %31 = load ptr, ptr %22, align 8 + %32 = ptrtoint ptr %30 to i64 %33 = ptrtoint ptr %31 to i64 - %34 = ptrtoint ptr %32 to i64 - %35 = sub i64 %33, %34 - %36 = ashr exact i64 %35, 2 - %37 = icmp ugt i64 %30, %36 - br i1 %37, label %38, label %40 - -38: ; preds = %20 - %39 = sub nuw nsw i64 %30, %36 - tail call void @_ZNSt6vectorIfSaIfEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %39) + %34 = sub i64 %32, %33 + %35 = icmp ugt i64 %28, %34 + br i1 %35, label %36, label %40 + +36: ; preds = %19 + %37 = ashr exact i64 %28, 2 + %38 = ashr exact i64 %34, 2 + %39 = sub nuw nsw i64 %37, %38 + tail call void @_ZNSt6vectorIfSaIfEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %39) br label %_ZNSt6vectorIfSaIfEE6resizeEm.exit -40: ; preds = %20 - %41 = icmp ult i64 %30, %36 +40: ; preds = %19 + %41 = icmp ult i64 %28, %34 br i1 %41, label %42, label %_ZNSt6vectorIfSaIfEE6resizeEm.exit 42: ; preds = %40 - %43 = getelementptr inbounds i8, ptr %32, i64 %29 - %.not.i.i18 = icmp eq ptr %31, %43 + %43 = getelementptr inbounds i8, ptr %31, i64 %28 + %.not.i.i18 = icmp eq ptr %30, %43 br i1 %.not.i.i18, label %_ZNSt6vectorIfSaIfEE6resizeEm.exit, label %44 44: ; preds = %42 - store ptr %43, ptr %19, align 8 + store ptr %43, ptr %29, align 8 br label %_ZNSt6vectorIfSaIfEE6resizeEm.exit -_ZNSt6vectorIfSaIfEE6resizeEm.exit: ; preds = %38, %40, %42, %44 - %45 = load ptr, ptr %22, align 8 - %46 = load ptr, ptr %24, align 8 +_ZNSt6vectorIfSaIfEE6resizeEm.exit: ; preds = %36, %40, %42, %44 + %45 = load ptr, ptr %21, align 8 + %46 = load ptr, ptr %23, align 8 %.not.i.i.i.i.i = icmp eq ptr %46, %45 br i1 %.not.i.i.i.i.i, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEENS1_IPfS6_EEET0_T_SB_SA_.exit, label %47 @@ -786,7 +786,7 @@ _ZNSt6vectorIfSaIfEE6resizeEm.exit: ; preds = %38, %40, %42, %44 %48 = ptrtoint ptr %46 to i64 %49 = ptrtoint ptr %45 to i64 %50 = sub i64 %48, %49 - %51 = load ptr, ptr %23, align 8 + %51 = load ptr, ptr %22, align 8 tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %51, ptr align 4 %45, i64 %50, i1 false) br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEENS1_IPfS6_EEET0_T_SB_SA_.exit @@ -801,34 +801,35 @@ _ZNSt6vectorIfSaIfEE6resizeEm.exit: ; preds = %38, %40, %42, %44 %60 = sub i64 %58, %59 %61 = ashr exact i64 %60, 3 %62 = getelementptr inbounds nuw i8, ptr %0, i64 160 - %63 = load ptr, ptr %19, align 8 - %64 = load ptr, ptr %62, align 8 - %65 = ptrtoint ptr %63 to i64 + %63 = getelementptr inbounds nuw i8, ptr %0, i64 168 + %64 = load ptr, ptr %63, align 8 + %65 = load ptr, ptr %62, align 8 %66 = ptrtoint ptr %64 to i64 - %67 = sub i64 %65, %66 - %68 = ashr exact i64 %67, 2 - %69 = icmp ugt i64 %61, %68 - br i1 %69, label %70, label %72 - -70: ; preds = %52 - %71 = sub nuw nsw i64 %61, %68 - tail call void @_ZNSt6vectorIfSaIfEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %71) + %67 = ptrtoint ptr %65 to i64 + %68 = sub i64 %66, %67 + %69 = ashr exact i64 %68, 2 + %70 = icmp ugt i64 %61, %69 + br i1 %70, label %71, label %73 + +71: ; preds = %52 + %72 = sub nuw nsw i64 %61, %69 + tail call void @_ZNSt6vectorIfSaIfEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %72) br label %_ZNSt6vectorIfSaIfEE6resizeEm.exit20 -72: ; preds = %52 - %73 = icmp ult i64 %61, %68 - br i1 %73, label %74, label %_ZNSt6vectorIfSaIfEE6resizeEm.exit20 +73: ; preds = %52 + %74 = icmp ult i64 %61, %69 + br i1 %74, label %75, label %_ZNSt6vectorIfSaIfEE6resizeEm.exit20 -74: ; preds = %72 - %75 = getelementptr inbounds float, ptr %64, i64 %61 - %.not.i.i19 = icmp eq ptr %63, %75 - br i1 %.not.i.i19, label %_ZNSt6vectorIfSaIfEE6resizeEm.exit20, label %76 +75: ; preds = %73 + %76 = getelementptr inbounds float, ptr %65, i64 %61 + %.not.i.i19 = icmp eq ptr %64, %76 + br i1 %.not.i.i19, label %_ZNSt6vectorIfSaIfEE6resizeEm.exit20, label %77 -76: ; preds = %74 - store ptr %75, ptr %19, align 8 +77: ; preds = %75 + store ptr %76, ptr %63, align 8 br label %_ZNSt6vectorIfSaIfEE6resizeEm.exit20 -_ZNSt6vectorIfSaIfEE6resizeEm.exit20: ; preds = %70, %72, %74, %76 +_ZNSt6vectorIfSaIfEE6resizeEm.exit20: ; preds = %71, %73, %75, %77 %.not41 = icmp eq ptr %56, %57 br i1 %.not41, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEENS1_IPfS6_EEET0_T_SB_SA_.exit, label %.lr.ph.preheader @@ -837,18 +838,18 @@ _ZNSt6vectorIfSaIfEE6resizeEm.exit20: ; preds = %70, %72, %74, %76 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.040 = phi i64 [ %85, %.lr.ph ], [ 0, %.lr.ph.preheader ] - %77 = load ptr, ptr %54, align 8 - %78 = getelementptr inbounds %"class.xgboost::Json", ptr %77, i64 %.040 - %79 = load ptr, ptr %78, align 8 - %80 = tail call noundef ptr @_ZN7xgboost4CastIKNS_10JsonNumberEKNS_5ValueEEEPT_PT0_(ptr noundef nonnull %79) - %81 = getelementptr inbounds nuw i8, ptr %80, i64 16 - %82 = load float, ptr %81, align 4 - %83 = load ptr, ptr %62, align 8 - %84 = getelementptr inbounds float, ptr %83, i64 %.040 - store float %82, ptr %84, align 4 - %85 = add nuw i64 %.040, 1 - %exitcond.not = icmp eq i64 %85, %umax + %.040 = phi i64 [ %86, %.lr.ph ], [ 0, %.lr.ph.preheader ] + %78 = load ptr, ptr %54, align 8 + %79 = getelementptr inbounds %"class.xgboost::Json", ptr %78, i64 %.040 + %80 = load ptr, ptr %79, align 8 + %81 = tail call noundef ptr @_ZN7xgboost4CastIKNS_10JsonNumberEKNS_5ValueEEEPT_PT0_(ptr noundef nonnull %80) + %82 = getelementptr inbounds nuw i8, ptr %81, i64 16 + %83 = load float, ptr %82, align 4 + %84 = load ptr, ptr %62, align 8 + %85 = getelementptr inbounds float, ptr %84, i64 %.040 + store float %83, ptr %85, align 4 + %86 = add nuw i64 %.040, 1 + %exitcond.not = icmp eq i64 %86, %umax br i1 %exitcond.not, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEENS1_IPfS6_EEET0_T_SB_SA_.exit, label %.lr.ph, !llvm.loop !6 _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEENS1_IPfS6_EEET0_T_SB_SA_.exit: ; preds = %.lr.ph, %_ZNSt6vectorIfSaIfEE6resizeEm.exit20, %47, %_ZNSt6vectorIfSaIfEE6resizeEm.exit @@ -859,45 +860,45 @@ _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEENS1_IPfS6_EEET0_T .lr.ph.i.i.i23: ; preds = %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEENS1_IPfS6_EEET0_T_SB_SA_.exit, %.lr.ph.i.i.i23 %.0813.i.i.i24 = phi ptr [ %.08.i.i.i29, %.lr.ph.i.i.i23 ], [ %.0810.i.i.i21, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEENS1_IPfS6_EEET0_T_SB_SA_.exit ] %.012.i.i.i25 = phi ptr [ %.1.i.i.i28, %.lr.ph.i.i.i23 ], [ %6, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEENS1_IPfS6_EEET0_T_SB_SA_.exit ] - %86 = getelementptr inbounds nuw i8, ptr %.0813.i.i.i24, i64 32 - %87 = tail call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef nonnull align 1 dereferenceable(15) @.str.1) #13 - %88 = icmp slt i32 %87, 0 - %.19.in.v.i.i.i26 = select i1 %88, i64 24, i64 16 + %87 = getelementptr inbounds nuw i8, ptr %.0813.i.i.i24, i64 32 + %88 = tail call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 1 dereferenceable(15) @.str.1) #13 + %89 = icmp slt i32 %88, 0 + %.19.in.v.i.i.i26 = select i1 %89, i64 24, i64 16 %.19.in.i.i.i27 = getelementptr inbounds nuw i8, ptr %.0813.i.i.i24, i64 %.19.in.v.i.i.i26 - %.1.i.i.i28 = select i1 %88, ptr %.012.i.i.i25, ptr %.0813.i.i.i24 + %.1.i.i.i28 = select i1 %89, ptr %.012.i.i.i25, ptr %.0813.i.i.i24 %.08.i.i.i29 = load ptr, ptr %.19.in.i.i.i27, align 8 %.not.i.i.i30 = icmp eq ptr %.08.i.i.i29, null br i1 %.not.i.i.i30, label %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N7xgboost4JsonEESt10_Select1stISA_ESt4lessIvESaISA_EE17_M_lower_bound_trIA15_cvEESt23_Rb_tree_const_iteratorISA_ERKT_.exit.i.i, label %.lr.ph.i.i.i23, !llvm.loop !7 _ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N7xgboost4JsonEESt10_Select1stISA_ESt4lessIvESaISA_EE17_M_lower_bound_trIA15_cvEESt23_Rb_tree_const_iteratorISA_ERKT_.exit.i.i: ; preds = %.lr.ph.i.i.i23 %.not.i.i31 = icmp eq ptr %.1.i.i.i28, %6 - br i1 %.not.i.i31, label %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt4lessIvESaISt4pairIKS5_S7_EEE4findIA15_cEEDTcldtdtdefpT4_M_t10_M_find_trfp_EERKT_.exit, label %89 + br i1 %.not.i.i31, label %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt4lessIvESaISt4pairIKS5_S7_EEE4findIA15_cEEDTcldtdtdefpT4_M_t10_M_find_trfp_EERKT_.exit, label %90 -89: ; preds = %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N7xgboost4JsonEESt10_Select1stISA_ESt4lessIvESaISA_EE17_M_lower_bound_trIA15_cvEESt23_Rb_tree_const_iteratorISA_ERKT_.exit.i.i - %90 = getelementptr inbounds nuw i8, ptr %.1.i.i.i28, i64 32 - %91 = tail call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef nonnull align 1 dereferenceable(15) @.str.1) #13 - %92 = icmp sgt i32 %91, 0 - %spec.select.i.i32 = select i1 %92, ptr %6, ptr %.1.i.i.i28 +90: ; preds = %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N7xgboost4JsonEESt10_Select1stISA_ESt4lessIvESaISA_EE17_M_lower_bound_trIA15_cvEESt23_Rb_tree_const_iteratorISA_ERKT_.exit.i.i + %91 = getelementptr inbounds nuw i8, ptr %.1.i.i.i28, i64 32 + %92 = tail call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef nonnull align 1 dereferenceable(15) @.str.1) #13 + %93 = icmp sgt i32 %92, 0 + %spec.select.i.i32 = select i1 %93, ptr %6, ptr %.1.i.i.i28 br label %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt4lessIvESaISt4pairIKS5_S7_EEE4findIA15_cEEDTcldtdtdefpT4_M_t10_M_find_trfp_EERKT_.exit -_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt4lessIvESaISt4pairIKS5_S7_EEE4findIA15_cEEDTcldtdtdefpT4_M_t10_M_find_trfp_EERKT_.exit: ; preds = %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N7xgboost4JsonEESt10_Select1stISA_ESt4lessIvESaISA_EE17_M_lower_bound_trIA15_cvEESt23_Rb_tree_const_iteratorISA_ERKT_.exit.i.i, %89 - %.sroa.03.0.i.i33 = phi ptr [ %.1.i.i.i28, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N7xgboost4JsonEESt10_Select1stISA_ESt4lessIvESaISA_EE17_M_lower_bound_trIA15_cvEESt23_Rb_tree_const_iteratorISA_ERKT_.exit.i.i ], [ %spec.select.i.i32, %89 ] +_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt4lessIvESaISt4pairIKS5_S7_EEE4findIA15_cEEDTcldtdtdefpT4_M_t10_M_find_trfp_EERKT_.exit: ; preds = %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N7xgboost4JsonEESt10_Select1stISA_ESt4lessIvESaISA_EE17_M_lower_bound_trIA15_cvEESt23_Rb_tree_const_iteratorISA_ERKT_.exit.i.i, %90 + %.sroa.03.0.i.i33 = phi ptr [ %.1.i.i.i28, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N7xgboost4JsonEESt10_Select1stISA_ESt4lessIvESaISA_EE17_M_lower_bound_trIA15_cvEESt23_Rb_tree_const_iteratorISA_ERKT_.exit.i.i ], [ %spec.select.i.i32, %90 ] %.not = icmp eq ptr %.sroa.03.0.i.i33, %6 - br i1 %.not, label %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt4lessIvESaISt4pairIKS5_S7_EEE4findIA15_cEEDTcldtdtdefpT4_M_t10_M_find_trfp_EERKT_.exit.thread, label %93 - -93: ; preds = %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt4lessIvESaISt4pairIKS5_S7_EEE4findIA15_cEEDTcldtdtdefpT4_M_t10_M_find_trfp_EERKT_.exit - %94 = getelementptr inbounds nuw i8, ptr %.sroa.03.0.i.i33, i64 64 - %95 = load ptr, ptr %94, align 8 - %96 = tail call noundef ptr @_ZN7xgboost4CastIKNS_11JsonIntegerEKNS_5ValueEEEPT_PT0_(ptr noundef nonnull %95) - %97 = getelementptr inbounds nuw i8, ptr %96, i64 16 - %98 = load i64, ptr %97, align 8 - %99 = trunc i64 %98 to i32 + br i1 %.not, label %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt4lessIvESaISt4pairIKS5_S7_EEE4findIA15_cEEDTcldtdtdefpT4_M_t10_M_find_trfp_EERKT_.exit.thread, label %94 + +94: ; preds = %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt4lessIvESaISt4pairIKS5_S7_EEE4findIA15_cEEDTcldtdtdefpT4_M_t10_M_find_trfp_EERKT_.exit + %95 = getelementptr inbounds nuw i8, ptr %.sroa.03.0.i.i33, i64 64 + %96 = load ptr, ptr %95, align 8 + %97 = tail call noundef ptr @_ZN7xgboost4CastIKNS_11JsonIntegerEKNS_5ValueEEEPT_PT0_(ptr noundef nonnull %96) + %98 = getelementptr inbounds nuw i8, ptr %97, i64 16 + %99 = load i64, ptr %98, align 8 + %100 = trunc i64 %99 to i32 br label %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt4lessIvESaISt4pairIKS5_S7_EEE4findIA15_cEEDTcldtdtdefpT4_M_t10_M_find_trfp_EERKT_.exit.thread -_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt4lessIvESaISt4pairIKS5_S7_EEE4findIA15_cEEDTcldtdtdefpT4_M_t10_M_find_trfp_EERKT_.exit.thread: ; preds = %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt4lessIvESaISt4pairIKS5_S7_EEE4findIA15_cEEDTcldtdtdefpT4_M_t10_M_find_trfp_EERKT_.exit, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEENS1_IPfS6_EEET0_T_SB_SA_.exit, %93 - %.sink = phi i32 [ %99, %93 ], [ 0, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEENS1_IPfS6_EEET0_T_SB_SA_.exit ], [ 0, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt4lessIvESaISt4pairIKS5_S7_EEE4findIA15_cEEDTcldtdtdefpT4_M_t10_M_find_trfp_EERKT_.exit ] - %100 = getelementptr inbounds nuw i8, ptr %0, i64 144 - store i32 %.sink, ptr %100, align 8 +_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt4lessIvESaISt4pairIKS5_S7_EEE4findIA15_cEEDTcldtdtdefpT4_M_t10_M_find_trfp_EERKT_.exit.thread: ; preds = %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt4lessIvESaISt4pairIKS5_S7_EEE4findIA15_cEEDTcldtdtdefpT4_M_t10_M_find_trfp_EERKT_.exit, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEENS1_IPfS6_EEET0_T_SB_SA_.exit, %94 + %.sink = phi i32 [ %100, %94 ], [ 0, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEENS1_IPfS6_EEET0_T_SB_SA_.exit ], [ 0, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7xgboost4JsonESt4lessIvESaISt4pairIKS5_S7_EEE4findIA15_cEEDTcldtdtdefpT4_M_t10_M_find_trfp_EERKT_.exit ] + %101 = getelementptr inbounds nuw i8, ptr %0, i64 144 + store i32 %.sink, ptr %101, align 8 ret void } diff --git a/bench/zed-rs/optimized/cguh9zihnfg4v76y73tdlg6o2.ll b/bench/zed-rs/optimized/cguh9zihnfg4v76y73tdlg6o2.ll index 960ad2bc771..9ac9473e808 100644 --- a/bench/zed-rs/optimized/cguh9zihnfg4v76y73tdlg6o2.ll +++ b/bench/zed-rs/optimized/cguh9zihnfg4v76y73tdlg6o2.ll @@ -172,7 +172,7 @@ define hidden void @_ZN12aho_corasick3nfa13noncontiguous7Builder5build17hc61124d %66 = getelementptr inbounds nuw i8, ptr %16, i64 592 %67 = load ptr, ptr %66, align 16, !alias.scope !44, !noalias !47, !nonnull !5, !noundef !5 %68 = shl nuw i64 %54, 3 - %69 = icmp uge i64 %63, %68 + %69 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i.i.i179.i, %54 tail call void @llvm.assume(i1 %69) %70 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %67, i64 noundef %68, i64 noundef range(i64 1, 9) 4, i64 noundef %63) #20, !noalias !49 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i.i.i180.i" @@ -241,7 +241,7 @@ define hidden void @_ZN12aho_corasick3nfa13noncontiguous7Builder5build17hc61124d %94 = getelementptr inbounds nuw i8, ptr %16, i64 568 %95 = load ptr, ptr %94, align 8, !alias.scope !66, !noalias !69, !nonnull !5, !noundef !5 %96 = shl nuw i64 %82, 2 - %97 = icmp uge i64 %91, %96 + %97 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i.i.i191.i, %82 tail call void @llvm.assume(i1 %97) %98 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %95, i64 noundef %96, i64 noundef range(i64 1, 9) 4, i64 noundef %91) #20, !noalias !71 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i.i.i192.i" @@ -835,7 +835,7 @@ _ZN12aho_corasick4util10primitives9PatternID3new17hfbe7a56c108857afE.exit: ; pre "_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h341d247cb2f8a6caE.exit.thread.i.i.i": ; preds = %53 %57 = load ptr, ptr %.phi.trans.insert.i, align 8, !alias.scope !117, !noalias !120, !nonnull !5, !noundef !5 %58 = shl nuw nsw i64 %29, 2 - %59 = icmp samesign uge i64 %55, %58 + %59 = icmp samesign uge i64 %.sroa.0.0.sroa.speculated.i17.i.i.i, %29 tail call void @llvm.assume(i1 %59) %60 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %57, i64 noundef %58, i64 noundef range(i64 1, 9) 4, i64 noundef %55) #20, !noalias !122 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i.i.i" @@ -3598,7 +3598,7 @@ define internal fastcc void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$13shrink_to_ 10: ; preds = %2 tail call void @llvm.experimental.noalias.scope.decl(metadata !212) %11 = icmp eq i64 %4, 0 - br i1 %11, label %24, label %12 + br i1 %11, label %23, label %12 12: ; preds = %10 %13 = shl nuw i64 %4, 2 @@ -3612,24 +3612,22 @@ define internal fastcc void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$13shrink_to_ br label %17 17: ; preds = %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.exit.i" - %storemerge.i = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.exit.i" ], [ %21, %18 ] + %storemerge.i = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.exit.i" ], [ %20, %18 ] store ptr %storemerge.i, ptr %14, align 8, !alias.scope !212 store i64 %1, ptr %0, align 8, !alias.scope !212 - br label %24 + br label %23 18: ; preds = %12 %19 = shl nuw i64 %1, 2 - %20 = icmp ule i64 %19, %13 - tail call void @llvm.assume(i1 %20) - %21 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %13, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef range(i64 4, 0) %19) #20, !noalias !212 - %22 = icmp eq ptr %21, null - br i1 %22, label %23, label %17 + %20 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %13, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef range(i64 4, 0) %19) #20, !noalias !212 + %21 = icmp eq ptr %20, null + br i1 %21, label %22, label %17 -23: ; preds = %18 +22: ; preds = %18 tail call void @_ZN5alloc7raw_vec12handle_error17hc0e4a0ae60df49a1E(i64 noundef 4, i64 %19) #21 unreachable -24: ; preds = %17, %10 +23: ; preds = %17, %10 ret void } @@ -3714,7 +3712,7 @@ define internal fastcc void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$13shrink_to_ 10: ; preds = %2 tail call void @llvm.experimental.noalias.scope.decl(metadata !228) %11 = icmp eq i64 %4, 0 - br i1 %11, label %24, label %12 + br i1 %11, label %23, label %12 12: ; preds = %10 %13 = shl nuw i64 %4, 3 @@ -3728,24 +3726,22 @@ define internal fastcc void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$13shrink_to_ br label %17 17: ; preds = %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.exit.i" - %storemerge.i = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.exit.i" ], [ %21, %18 ] + %storemerge.i = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.exit.i" ], [ %20, %18 ] store ptr %storemerge.i, ptr %14, align 8, !alias.scope !228 store i64 %1, ptr %0, align 8, !alias.scope !228 - br label %24 + br label %23 18: ; preds = %12 %19 = shl nuw i64 %1, 3 - %20 = icmp ule i64 %19, %13 - tail call void @llvm.assume(i1 %20) - %21 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %13, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef range(i64 4, 0) %19) #20, !noalias !228 - %22 = icmp eq ptr %21, null - br i1 %22, label %23, label %17 + %20 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %13, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef range(i64 4, 0) %19) #20, !noalias !228 + %21 = icmp eq ptr %20, null + br i1 %21, label %22, label %17 -23: ; preds = %18 +22: ; preds = %18 tail call void @_ZN5alloc7raw_vec12handle_error17hc0e4a0ae60df49a1E(i64 noundef 4, i64 %19) #21 unreachable -24: ; preds = %17, %10 +23: ; preds = %17, %10 ret void } @@ -3830,7 +3826,7 @@ define internal fastcc void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$13shrink_to_ 10: ; preds = %2 tail call void @llvm.experimental.noalias.scope.decl(metadata !244) %11 = icmp eq i64 %4, 0 - br i1 %11, label %24, label %12 + br i1 %11, label %23, label %12 12: ; preds = %10 %13 = shl nuw i64 %4, 2 @@ -3844,24 +3840,22 @@ define internal fastcc void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$13shrink_to_ br label %17 17: ; preds = %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.exit.i" - %storemerge.i = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.exit.i" ], [ %21, %18 ] + %storemerge.i = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.exit.i" ], [ %20, %18 ] store ptr %storemerge.i, ptr %14, align 8, !alias.scope !244 store i64 %1, ptr %0, align 8, !alias.scope !244 - br label %24 + br label %23 18: ; preds = %12 %19 = shl nuw i64 %1, 2 - %20 = icmp ule i64 %19, %13 - tail call void @llvm.assume(i1 %20) - %21 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %13, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef range(i64 4, 0) %19) #20, !noalias !244 - %22 = icmp eq ptr %21, null - br i1 %22, label %23, label %17 + %20 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %13, i64 noundef range(i64 1, -9223372036854775807) 4, i64 noundef range(i64 4, 0) %19) #20, !noalias !244 + %21 = icmp eq ptr %20, null + br i1 %21, label %22, label %17 -23: ; preds = %18 +22: ; preds = %18 tail call void @_ZN5alloc7raw_vec12handle_error17hc0e4a0ae60df49a1E(i64 noundef 4, i64 %19) #21 unreachable -24: ; preds = %17, %10 +23: ; preds = %17, %10 ret void } @@ -8348,7 +8342,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amorti %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 %15 = load ptr, ptr %14, align 8, !alias.scope !279, !noalias !282, !nonnull !5, !noundef !5 %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !284 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i" @@ -9814,7 +9808,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_ %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 %15 = load ptr, ptr %14, align 8, !alias.scope !408, !noalias !411, !nonnull !5, !noundef !5 %16 = shl nuw i64 %8, 3 - %17 = icmp uge i64 %11, %16 + %17 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i, %8 tail call void @llvm.assume(i1 %17) %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %15, i64 noundef %16, i64 noundef range(i64 1, 9) 8, i64 noundef %11) #20, !noalias !413 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i" @@ -10036,7 +10030,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h0fb0f3439 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %12 = load ptr, ptr %11, align 8, !alias.scope !456, !noalias !459, !nonnull !5, !noundef !5 %13 = shl nuw i64 %2, 5 - %14 = icmp uge i64 %8, %13 + %14 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i, %2 tail call void @llvm.assume(i1 %14) %15 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %12, i64 noundef %13, i64 noundef range(i64 1, 9) 8, i64 noundef %8) #20, !noalias !461 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i" @@ -10091,7 +10085,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h0fca5febe %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %12 = load ptr, ptr %11, align 8, !alias.scope !468, !noalias !471, !nonnull !5, !noundef !5 %13 = shl nuw i64 %2, 3 - %14 = icmp uge i64 %8, %13 + %14 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i, %2 tail call void @llvm.assume(i1 %14) %15 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %12, i64 noundef %13, i64 noundef range(i64 1, 9) 8, i64 noundef %8) #20, !noalias !473 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i" @@ -10256,7 +10250,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h266c0bfbb %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %12 = load ptr, ptr %11, align 8, !alias.scope !504, !noalias !507, !nonnull !5, !noundef !5 %13 = shl nuw i64 %2, 4 - %14 = icmp uge i64 %8, %13 + %14 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i, %2 tail call void @llvm.assume(i1 %14) %15 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %12, i64 noundef %13, i64 noundef range(i64 1, 9) 8, i64 noundef %8) #20, !noalias !509 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i" @@ -10313,7 +10307,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h276eb49cf 12: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h8ca0662be4160f9bE.exit.thread.i" %13 = shl nuw i64 %2, 3 - %14 = icmp uge i64 %8, %13 + %14 = icmp uge i64 %.sroa.0.0.sroa.speculated.i18.i, %2 tail call void @llvm.assume(i1 %14) %15 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val17.i, i64 noundef %13, i64 noundef range(i64 1, 9) 8, i64 noundef %8) #20, !noalias !516 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i" @@ -10369,7 +10363,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h2cf3183d6 12: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2b629d2c8d970887E.exit.thread.i" %13 = shl nuw i64 %2, 4 - %14 = icmp uge i64 %8, %13 + %14 = icmp uge i64 %.sroa.0.0.sroa.speculated.i18.i, %2 tail call void @llvm.assume(i1 %14) %15 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val17.i, i64 noundef %13, i64 noundef range(i64 1, 9) 8, i64 noundef %8) #20, !noalias !523 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i" @@ -10478,7 +10472,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h53a1f59c4 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %12 = load ptr, ptr %11, align 8, !alias.scope !542, !noalias !545, !nonnull !5, !noundef !5 %13 = shl nuw i64 %2, 3 - %14 = icmp uge i64 %8, %13 + %14 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i, %2 tail call void @llvm.assume(i1 %14) %15 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %12, i64 noundef %13, i64 noundef range(i64 1, 9) 8, i64 noundef %8) #20, !noalias !547 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i" @@ -10533,7 +10527,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h5792db713 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %12 = load ptr, ptr %11, align 8, !alias.scope !554, !noalias !557, !nonnull !5, !noundef !5 %13 = shl nuw i64 %2, 4 - %14 = icmp uge i64 %8, %13 + %14 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i, %2 tail call void @llvm.assume(i1 %14) %15 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %12, i64 noundef %13, i64 noundef range(i64 1, 9) 8, i64 noundef %8) #20, !noalias !559 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i" @@ -10643,7 +10637,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h5875ca57a %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %12 = load ptr, ptr %11, align 8, !alias.scope !578, !noalias !581, !nonnull !5, !noundef !5 %13 = shl nuw i64 %2, 5 - %14 = icmp uge i64 %8, %13 + %14 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i, %2 tail call void @llvm.assume(i1 %14) %15 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %12, i64 noundef %13, i64 noundef range(i64 1, 9) 8, i64 noundef %8) #20, !noalias !583 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i" @@ -10698,7 +10692,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h6246a8c0b %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %12 = load ptr, ptr %11, align 8, !alias.scope !590, !noalias !593, !nonnull !5, !noundef !5 %13 = shl nuw i64 %2, 5 - %14 = icmp uge i64 %8, %13 + %14 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i, %2 tail call void @llvm.assume(i1 %14) %15 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %12, i64 noundef %13, i64 noundef range(i64 1, 9) 8, i64 noundef %8) #20, !noalias !595 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i" @@ -10808,7 +10802,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h71ac2cdfc %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %12 = load ptr, ptr %11, align 8, !alias.scope !614, !noalias !617, !nonnull !5, !noundef !5 %13 = shl nuw i64 %2, 5 - %14 = icmp uge i64 %8, %13 + %14 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i, %2 tail call void @llvm.assume(i1 %14) %15 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %12, i64 noundef %13, i64 noundef range(i64 1, 9) 8, i64 noundef %8) #20, !noalias !619 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i" @@ -10973,7 +10967,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17ha0094efc3 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %12 = load ptr, ptr %11, align 8, !alias.scope !650, !noalias !653, !nonnull !5, !noundef !5 %13 = shl nuw i64 %2, 3 - %14 = icmp uge i64 %8, %13 + %14 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i, %2 tail call void @llvm.assume(i1 %14) %15 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %12, i64 noundef %13, i64 noundef range(i64 1, 9) 8, i64 noundef %8) #20, !noalias !655 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i" @@ -11028,7 +11022,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17hbee2f0fea %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %12 = load ptr, ptr %11, align 8, !alias.scope !662, !noalias !665, !nonnull !5, !noundef !5 %13 = shl nuw i64 %2, 4 - %14 = icmp uge i64 %8, %13 + %14 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i, %2 tail call void @llvm.assume(i1 %14) %15 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %12, i64 noundef %13, i64 noundef range(i64 1, 9) 8, i64 noundef %8) #20, !noalias !667 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i" @@ -11083,7 +11077,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17hcc98b3703 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %12 = load ptr, ptr %11, align 8, !alias.scope !674, !noalias !677, !nonnull !5, !noundef !5 %13 = shl nuw i64 %2, 6 - %14 = icmp uge i64 %8, %13 + %14 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i, %2 tail call void @llvm.assume(i1 %14) %15 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %12, i64 noundef %13, i64 noundef range(i64 1, 9) 8, i64 noundef %8) #20, !noalias !679 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i" @@ -11138,7 +11132,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17hcf7a676ea %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %12 = load ptr, ptr %11, align 8, !alias.scope !686, !noalias !689, !nonnull !5, !noundef !5 %13 = shl nuw i64 %2, 4 - %14 = icmp uge i64 %8, %13 + %14 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i, %2 tail call void @llvm.assume(i1 %14) %15 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %12, i64 noundef %13, i64 noundef range(i64 1, 9) 8, i64 noundef %8) #20, !noalias !691 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i" @@ -11193,7 +11187,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17hd85cdf9b3 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %12 = load ptr, ptr %11, align 8, !alias.scope !698, !noalias !701, !nonnull !5, !noundef !5 %13 = shl nuw i64 %2, 4 - %14 = icmp uge i64 %8, %13 + %14 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i, %2 tail call void @llvm.assume(i1 %14) %15 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %12, i64 noundef %13, i64 noundef range(i64 1, 9) 8, i64 noundef %8) #20, !noalias !703 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i" @@ -11248,7 +11242,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17hf5b68c669 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %12 = load ptr, ptr %11, align 8, !alias.scope !710, !noalias !713, !nonnull !5, !noundef !5 %13 = shl nuw i64 %2, 4 - %14 = icmp uge i64 %8, %13 + %14 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i, %2 tail call void @llvm.assume(i1 %14) %15 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %12, i64 noundef %13, i64 noundef range(i64 1, 9) 8, i64 noundef %8) #20, !noalias !715 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i" @@ -11356,7 +11350,7 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17hfb8ad15de %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %12 = load ptr, ptr %11, align 8, !alias.scope !734, !noalias !737, !nonnull !5, !noundef !5 %13 = shl nuw i64 %2, 5 - %14 = icmp uge i64 %8, %13 + %14 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i, %2 tail call void @llvm.assume(i1 %14) %15 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %12, i64 noundef %13, i64 noundef range(i64 1, 9) 8, i64 noundef %8) #20, !noalias !739 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h8fe1967c46a2f3c3E.exit.i.i" diff --git a/bench/zstd/optimized/divsufsort.c.ll b/bench/zstd/optimized/divsufsort.c.ll index 75603c9d638..34f4b104f78 100644 --- a/bench/zstd/optimized/divsufsort.c.ll +++ b/bench/zstd/optimized/divsufsort.c.ll @@ -1817,7 +1817,7 @@ if.end88.i.i: ; preds = %do.body.i.i, %if.en %sub.ptr.div92.i.i = ashr exact i64 %sub.ptr.sub91.i.i, 2 %sub.ptr.sub95.i.i = sub i64 %sub.ptr.lhs.cast10.i.i, %sub.ptr.lhs.cast30.i.i %sub.ptr.div96.i.i = ashr exact i64 %sub.ptr.sub95.i.i, 2 - %cmp97.not.i.i = icmp sgt i64 %sub.ptr.div92.i.i, %sub.ptr.div96.i.i + %cmp97.not.i.i = icmp sgt i64 %sub.ptr.sub91.i.i, %sub.ptr.sub95.i.i br i1 %cmp97.not.i.i, label %if.else174.i.i, label %if.then99.i.i if.then99.i.i: ; preds = %if.end88.i.i @@ -3483,8 +3483,8 @@ tr_partition.exit.i: ; preds = %do.body130.i.i, %fo %.pre.i248 = ptrtoint ptr %add.ptr147.i.i to i64 %.pre326.i = ptrtoint ptr %add.ptr141.i.i to i64 %.pre327.i = sub i64 %.pre.i248, %.pre326.i - %.pre328.i = ashr exact i64 %.pre327.i, 2 - %cmp569.not.i.i = icmp eq i64 %sub.ptr.div515.i.i, %.pre328.i + %.pre328.i = lshr exact i64 %.pre327.i, 2 + %cmp569.not.i.i = icmp eq i64 %sub.ptr.sub514.i.i, %.pre327.i br i1 %cmp569.not.i.i, label %if.else1230.i.i, label %if.then571.i.i if.then571.i.i: ; preds = %tr_partition.exit.i @@ -3505,7 +3505,7 @@ cond.true.i702.i.i: ; preds = %cond.true576.i.i br i1 %tobool2.not.i703.i.i, label %cond.false.i710.i.i, label %cond.true3.i704.i.i cond.true3.i704.i.i: ; preds = %cond.true.i702.i.i - %shr.i705.i.i = lshr i64 %.pre328.i, 24 + %shr.i705.i.i = lshr i64 %.pre327.i, 26 %idxprom.i706.i.i = and i64 %shr.i705.i.i, 255 %arrayidx.i707.i.i = getelementptr inbounds nuw [256 x i32], ptr @lg_table, i64 0, i64 %idxprom.i706.i.i %364 = load i32, ptr %arrayidx.i707.i.i, align 4 @@ -3513,8 +3513,8 @@ cond.true3.i704.i.i: ; preds = %cond.true.i702.i.i br label %cond.end584.i.i cond.false.i710.i.i: ; preds = %cond.true.i702.i.i - %shr5.i711.i.i = lshr i64 %.pre328.i, 16 - %idxprom7.i712.i.i = and i64 %shr5.i711.i.i, 255 + %shr5.i711.i.i = lshr i64 %.pre327.i, 18 + %idxprom7.i712.i.i = and i64 %shr5.i711.i.i, 65535 %arrayidx8.i713.i.i = getelementptr inbounds nuw [256 x i32], ptr @lg_table, i64 0, i64 %idxprom7.i712.i.i %365 = load i32, ptr %arrayidx8.i713.i.i, align 4 %add9.i714.i.i = add nsw i32 %365, 16 @@ -3525,8 +3525,8 @@ cond.false10.i715.i.i: ; preds = %cond.true576.i.i br i1 %tobool12.not.i716.i.i, label %cond.false19.i722.i.i, label %cond.true13.i717.i.i cond.true13.i717.i.i: ; preds = %cond.false10.i715.i.i - %shr14.i718.i.i = lshr i64 %.pre328.i, 8 - %idxprom16.i719.i.i = and i64 %shr14.i718.i.i, 255 + %shr14.i718.i.i = lshr i64 %.pre327.i, 10 + %idxprom16.i719.i.i = and i64 %shr14.i718.i.i, 16777215 %arrayidx17.i720.i.i = getelementptr inbounds nuw [256 x i32], ptr @lg_table, i64 0, i64 %idxprom16.i719.i.i %366 = load i32, ptr %arrayidx17.i720.i.i, align 4 %add18.i721.i.i = add nsw i32 %366, 8 @@ -3580,11 +3580,12 @@ for.body613.i.i: ; preds = %if.then603.i.i, %fo br i1 %cmp611.i.i, label %for.body613.i.i, label %if.end619.i.i, !llvm.loop !54 if.end619.i.i: ; preds = %for.body613.i.i, %if.then603.i.i, %for.end600.i.i - %cmp624.i.i = icmp sgt i64 %.pre328.i, 1 + %sub.ptr.div623.i.i = ashr exact i64 %.pre327.i, 2 + %cmp624.i.i = icmp sgt i64 %sub.ptr.div623.i.i, 1 br i1 %cmp624.i.i, label %land.lhs.true.i.i, label %if.else1081.i.i land.lhs.true.i.i: ; preds = %if.end619.i.i - %conv630.i.i = trunc i64 %.pre328.i to i32 + %conv630.i.i = trunc i64 %sub.ptr.div623.i.i to i32 %cmp.not.i727.i.i = icmp slt i32 %budget.sroa.7.3.i, %conv630.i.i br i1 %cmp.not.i727.i.i, label %if.end.i731.i.i, label %if.then633.i.i @@ -3606,11 +3607,11 @@ if.then633.i.i: ; preds = %if.end4.i733.i.i, % %budget.sroa.0.5.i = phi i32 [ %sub9.i737.i.i, %if.end4.i733.i.i ], [ %budget.sroa.0.3.i, %land.lhs.true.i.i ] %budget.sroa.7.5.i = sub i32 %sub5.i735.i.pn.i, %conv630.i.i %sub.ptr.div637.i.i = ashr exact i64 %sub.ptr.sub92.i.i, 2 - %cmp642.not.i.i = icmp sgt i64 %sub.ptr.div637.i.i, %sub.ptr.div112.i.i + %cmp642.not.i.i = icmp sgt i64 %sub.ptr.sub92.i.i, %sub.ptr.sub111.i.i br i1 %cmp642.not.i.i, label %if.else862.i.i, label %if.then644.i.i if.then644.i.i: ; preds = %if.then633.i.i - %cmp653.not.i.i = icmp sgt i64 %sub.ptr.div112.i.i, %.pre328.i + %cmp653.not.i.i = icmp sgt i64 %sub.ptr.sub111.i.i, %.pre327.i br i1 %cmp653.not.i.i, label %if.else737.i.i, label %if.then655.i.i if.then655.i.i: ; preds = %if.then644.i.i @@ -3666,7 +3667,7 @@ do.body711.i.i: ; preds = %if.else703.i.i br label %for.cond.outer.i.i.backedge if.else737.i.i: ; preds = %if.then644.i.i - %cmp746.not.i.i = icmp sgt i64 %sub.ptr.div637.i.i, %.pre328.i + %cmp746.not.i.i = icmp sgt i64 %sub.ptr.sub92.i.i, %.pre327.i br i1 %cmp746.not.i.i, label %do.body820.i.i, label %if.then748.i.i if.then748.i.i: ; preds = %if.else737.i.i @@ -3730,7 +3731,7 @@ do.body820.i.i: ; preds = %if.else737.i.i br label %for.cond.outer.i.i.backedge if.else862.i.i: ; preds = %if.then633.i.i - %cmp871.not.i.i = icmp sgt i64 %sub.ptr.div637.i.i, %.pre328.i + %cmp871.not.i.i = icmp sgt i64 %sub.ptr.sub92.i.i, %.pre327.i br i1 %cmp871.not.i.i, label %if.else955.i.i, label %if.then873.i.i if.then873.i.i: ; preds = %if.else862.i.i @@ -3786,7 +3787,7 @@ do.body929.i.i: ; preds = %if.else921.i.i br label %for.cond.outer.i.i.backedge if.else955.i.i: ; preds = %if.else862.i.i - %cmp964.not.i.i = icmp sgt i64 %sub.ptr.div112.i.i, %.pre328.i + %cmp964.not.i.i = icmp sgt i64 %sub.ptr.sub111.i.i, %.pre327.i br i1 %cmp964.not.i.i, label %do.body1038.i.i, label %if.then966.i.i if.then966.i.i: ; preds = %if.else955.i.i @@ -3864,7 +3865,7 @@ if.then1091.i.i: ; preds = %if.else1081.i.i if.end1095.i.i: ; preds = %if.then1091.i.i, %if.else1081.i.i %sub.ptr.div1099.i.i = ashr exact i64 %sub.ptr.sub92.i.i, 2 - %cmp1104.not.i.i = icmp sgt i64 %sub.ptr.div1099.i.i, %sub.ptr.div112.i.i + %cmp1104.not.i.i = icmp sgt i64 %sub.ptr.sub92.i.i, %sub.ptr.sub111.i.i br i1 %cmp1104.not.i.i, label %if.else1167.i.i, label %if.then1106.i.i if.then1106.i.i: ; preds = %if.end1095.i.i @@ -5536,8 +5537,7 @@ if.end76: ; preds = %if.then26.i, %for.e %sub.ptr.sub79 = sub i64 %sub.ptr.lhs.cast77, %sub.ptr.rhs.cast78 %sub.ptr.div80 = ashr exact i64 %sub.ptr.sub79, 2 %sub.ptr.sub83 = sub i64 %sub.ptr.lhs.cast1, %sub.ptr.lhs.cast77 - %sub.ptr.div84 = ashr exact i64 %sub.ptr.sub83, 2 - %cmp85.not = icmp sgt i64 %sub.ptr.div80, %sub.ptr.div84 + %cmp85.not = icmp sgt i64 %sub.ptr.sub79, %sub.ptr.sub83 br i1 %cmp85.not, label %if.else116, label %if.then87 if.then87: ; preds = %if.end76 @@ -5575,7 +5575,7 @@ cond.false.i391: ; preds = %do.body95 br label %for.cond.backedge if.else116: ; preds = %if.end76 - %cmp121 = icmp sgt i64 %sub.ptr.div84, 1 + %cmp121 = icmp sgt i64 %sub.ptr.sub83, 4 br i1 %cmp121, label %do.body124, label %if.else146 do.body124: ; preds = %if.else116 @@ -6392,16 +6392,15 @@ if.then26.i458: ; preds = %for.end24.i456 cond.end: ; preds = %if.then26.i458, %for.end24.i456, %for.end360 %cond = phi ptr [ %add.ptr365, %for.end360 ], [ %incdec.ptr.lcssa.i451, %for.end24.i456 ], [ %incdec.ptr.lcssa.i451, %if.then26.i458 ] - %sub.ptr.div384 = ashr exact i64 %sub.ptr.sub312, 2 %sub.ptr.rhs.cast386 = ptrtoint ptr %add.ptr371 to i64 - %cmp389.not = icmp sgt i64 %sub.ptr.div384, %sub.ptr.div335 + %cmp389.not = icmp sgt i64 %sub.ptr.sub312, %sub.ptr.sub334 %sub.ptr.rhs.cast535 = ptrtoint ptr %cond to i64 %sub.ptr.sub536 = sub i64 %sub.ptr.rhs.cast386, %sub.ptr.rhs.cast535 %sub.ptr.div537 = ashr exact i64 %sub.ptr.sub536, 2 br i1 %cmp389.not, label %if.else529, label %if.then391 if.then391: ; preds = %cond.end - %cmp400.not = icmp sgt i64 %sub.ptr.div335, %sub.ptr.div537 + %cmp400.not = icmp sgt i64 %sub.ptr.sub334, %sub.ptr.sub536 br i1 %cmp400.not, label %if.else440, label %do.body403 do.body403: ; preds = %if.then391 @@ -6449,7 +6448,7 @@ ss_ilg.exit493: ; preds = %cond.true.i482, %co br label %for.cond.backedge if.else440: ; preds = %if.then391 - %cmp449.not = icmp sgt i64 %sub.ptr.div384, %sub.ptr.div537 + %cmp449.not = icmp sgt i64 %sub.ptr.sub312, %sub.ptr.sub536 %idxprom491 = sext i32 %ssize.0 to i64 %arrayidx492 = getelementptr inbounds [16 x %struct.anon], ptr %stack, i64 0, i64 %idxprom491 store ptr %add.ptr371, ptr %arrayidx492, align 8 @@ -6524,7 +6523,7 @@ cond.false.i517: ; preds = %do.body490 br label %for.cond.backedge if.else529: ; preds = %cond.end - %cmp538.not = icmp sgt i64 %sub.ptr.div384, %sub.ptr.div537 + %cmp538.not = icmp sgt i64 %sub.ptr.sub312, %sub.ptr.sub536 br i1 %cmp538.not, label %if.else578, label %do.body541 do.body541: ; preds = %if.else529 @@ -6572,7 +6571,7 @@ ss_ilg.exit535: ; preds = %cond.true.i524, %co br label %for.cond.backedge if.else578: ; preds = %if.else529 - %cmp587.not = icmp sgt i64 %sub.ptr.div335, %sub.ptr.div537 + %cmp587.not = icmp sgt i64 %sub.ptr.sub334, %sub.ptr.sub536 %idxprom629 = sext i32 %ssize.0 to i64 %arrayidx630 = getelementptr inbounds [16 x %struct.anon], ptr %stack, i64 0, i64 %idxprom629 store ptr %first.addr.0, ptr %arrayidx630, align 8 @@ -7843,7 +7842,8 @@ if.end125: ; preds = %do.body121 br label %for.cond.outer.backedge if.end140: ; preds = %if.end57 - %sub.ptr.div61.sub.ptr.div = tail call i64 @llvm.smin.i64(i64 %sub.ptr.div61, i64 %sub.ptr.div) + %cmp149 = icmp slt i64 %sub.ptr.sub60, %sub.ptr.sub + %sub.ptr.div61.sub.ptr.div = select i1 %cmp149, i64 %sub.ptr.div61, i64 %sub.ptr.div %conv163 = trunc i64 %sub.ptr.div61.sub.ptr.div to i32 %cmp165662 = icmp sgt i32 %conv163, 0 br i1 %cmp165662, label %for.body, label %if.else326 @@ -8357,9 +8357,6 @@ declare i32 @llvm.smin.i32(i32, i32) #4 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i8 @llvm.umax.i8(i8, i8) #4 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.smin.i64(i64, i64) #4 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #4 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..967da3a6f86 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/122266 export COMPTIME_MODE=0 # Please rebase manually