diff --git a/bench/abc/optimized/giaTtopt.ll b/bench/abc/optimized/giaTtopt.ll index 01eb3847b2d..e0825387cb9 100644 --- a/bench/abc/optimized/giaTtopt.ll +++ b/bench/abc/optimized/giaTtopt.ll @@ -3061,7 +3061,8 @@ _ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIP store ptr %34, ptr %11, align 8, !tbaa !76 %36 = getelementptr inbounds nuw i32, ptr %30, i64 %28 store ptr %36, ptr %13, align 8, !tbaa !78 - %.phi.trans.insert8 = getelementptr inbounds nuw %"class.std::vector.5", ptr %.pre, i64 %8, i32 0, i32 0, i32 0, i32 1 + %.phi.trans.insert8 = getelementptr inbounds nuw %"class.std::vector.5", ptr %.pre, i64 %8 + %.phi.trans.insert8 = getelementptr inbounds nuw i8, ptr %.phi.trans.insert, i64 8 %.pre9 = load ptr, ptr %.phi.trans.insert8, align 8, !tbaa !76 br label %_ZNSt6vectorIiSaIiEE9push_backERKi.exit @@ -6981,7 +6982,8 @@ _ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIP store ptr %68, ptr %45, align 8, !tbaa !76 %70 = getelementptr inbounds nuw i32, ptr %64, i64 %62 store ptr %70, ptr %47, align 8, !tbaa !78 - %.phi.trans.insert78 = getelementptr inbounds nuw %"class.std::vector.5", ptr %.pre, i64 %42, i32 0, i32 0, i32 0, i32 1 + %.phi.trans.insert78 = getelementptr inbounds nuw %"class.std::vector.5", ptr %.pre, i64 %42 + %.phi.trans.insert78 = getelementptr inbounds nuw i8, ptr %.phi.trans.insert, i64 8 %.pre79 = load ptr, ptr %.phi.trans.insert78, align 8, !tbaa !76 br label %_ZNSt6vectorIiSaIiEE9push_backERKi.exit @@ -9351,7 +9353,8 @@ _ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIP store ptr %48, ptr %25, align 8, !tbaa !76 %50 = getelementptr inbounds nuw i32, ptr %44, i64 %42 store ptr %50, ptr %27, align 8, !tbaa !78 - %.phi.trans.insert14 = getelementptr inbounds nuw %"class.std::vector.5", ptr %.pre, i64 %22, i32 0, i32 0, i32 0, i32 1 + %.phi.trans.insert14 = getelementptr inbounds nuw %"class.std::vector.5", ptr %.pre, i64 %22 + %.phi.trans.insert14 = getelementptr inbounds nuw i8, ptr %.phi.trans.insert, i64 8 %.pre15 = load ptr, ptr %.phi.trans.insert14, align 8, !tbaa !76 br label %_ZNSt6vectorIiSaIiEE9push_backERKi.exit diff --git a/bench/abseil-cpp/optimized/gmock-all.ll b/bench/abseil-cpp/optimized/gmock-all.ll index 6200d055042..ff766cd8ddb 100644 --- a/bench/abseil-cpp/optimized/gmock-all.ll +++ b/bench/abseil-cpp/optimized/gmock-all.ll @@ -5315,21 +5315,22 @@ _ZN7testing19MatchResultListenerlsIA25_cEERS0_RKT_.exit: ; preds = %68 70: ; preds = %_ZN7testing19MatchResultListenerlsIA25_cEERS0_RKT_.exit %71 = load ptr, ptr %4, align 8, !tbaa !180 - %72 = getelementptr inbounds nuw %"struct.std::pair", ptr %71, i64 %.0105, i32 1 - %73 = load i64, ptr %72, align 8, !tbaa !86 - %74 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo9_M_insertImEERSoT_(ptr noundef nonnull align 8 dereferenceable(8) %.pr86, i64 noundef %73) - to label %_ZN7testing19MatchResultListenerlsImEERS0_RKT_.exit60 unwind label %83 + %72 = getelementptr inbounds nuw %"struct.std::pair", ptr %71, i64 %.0105 + %73 = getelementptr inbounds nuw i8, ptr %72, i64 8 + %74 = load i64, ptr %73, align 8, !tbaa !86 + %75 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo9_M_insertImEERSoT_(ptr noundef nonnull align 8 dereferenceable(8) %.pr86, i64 noundef %74) + to label %_ZN7testing19MatchResultListenerlsImEERS0_RKT_.exit60 unwind label %84 _ZN7testing19MatchResultListenerlsImEERS0_RKT_.exit60: ; preds = %_ZN7testing19MatchResultListenerlsIPKcEERS0_RKT_.exit, %.lr.ph.split, %_ZN7testing19MatchResultListenerlsIA13_cEERS0_RKT_.exit, %_ZN7testing19MatchResultListenerlsImEERS0_RKT_.exit55, %_ZN7testing19MatchResultListenerlsIA25_cEERS0_RKT_.exit, %70 %75 = add nuw i64 %.0105, 1 %76 = load ptr, ptr %5, align 8, !tbaa !128 %77 = load ptr, ptr %4, align 8, !tbaa !180 - %78 = ptrtoint ptr %76 to i64 %79 = ptrtoint ptr %77 to i64 - %80 = sub i64 %78, %79 - %81 = ashr exact i64 %80, 4 - %82 = icmp ult i64 %75, %81 - br i1 %82, label %.lr.ph.splitthread-pre-split, label %.loopexit, !llvm.loop !182 + %80 = ptrtoint ptr %78 to i64 + %81 = sub i64 %79, %80 + %82 = ashr exact i64 %81, 4 + %83 = icmp ult i64 %76, %82 + br i1 %83, label %.lr.ph.splitthread-pre-split, label %.loopexit, !llvm.loop !182 83: ; preds = %70, %68, %63, %61, %58 %84 = landingpad { ptr, i32 } @@ -5356,7 +5357,7 @@ _ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit: ; preds = %.loopexit, %86 ret i1 %.022 92: ; preds = %83, %50, %31, %29 - %.pn = phi { ptr, i32 } [ %30, %29 ], [ %32, %31 ], [ %51, %50 ], [ %84, %83 ] + %.pn = phi { ptr, i32 } [ %30, %29 ], [ %32, %31 ], [ %51, %50 ], [ %84, %84 ] %93 = load ptr, ptr %4, align 8, !tbaa !180 %.not.i.i.i61 = icmp eq ptr %93, null br i1 %.not.i.i.i61, label %_ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit62, label %94 diff --git a/bench/actix-rs/optimized/4zcw438fefceam0r.ll b/bench/actix-rs/optimized/4zcw438fefceam0r.ll index 77db6331752..633a635fca6 100644 --- a/bench/actix-rs/optimized/4zcw438fefceam0r.ll +++ b/bench/actix-rs/optimized/4zcw438fefceam0r.ll @@ -6360,18 +6360,19 @@ define hidden void @"_ZN61_$LT$$u5b$V$u5d$$u20$as$u20$alloc..slice..Concat$LT$T$ br i1 %6, label %._crit_edge.critedge, label %.preheader .preheader: ; preds = %3, %.preheader - %.017.i = phi i64 [ %8, %.preheader ], [ 0, %3 ] - %.016.i = phi i64 [ %9, %.preheader ], [ 0, %3 ] - %7 = getelementptr { ptr, i64 }, ptr %1, i64 %.016.i, i32 1 - %.val21.i = load i64, ptr %7, align 8, !noundef !4 - %8 = add i64 %.val21.i, %.017.i - %9 = add nuw i64 %.016.i, 1 - %10 = icmp eq i64 %9, %2 - br i1 %10, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h7c4a50b1c0ae525dE.exit", label %.preheader + %.017.i = phi i64 [ %9, %.preheader ], [ 0, %3 ] + %.016.i = phi i64 [ %10, %.preheader ], [ 0, %3 ] + %7 = getelementptr inbounds { ptr, i64 }, ptr %1, i64 %.016.i + %8 = getelementptr i8, ptr %7, i64 8 + %.val21.i = load i64, ptr %8, align 8, !noundef !4 + %9 = add i64 %.val21.i, %.017.i + %10 = add nuw i64 %.016.i, 1 + %11 = icmp eq i64 %10, %2 + br i1 %11, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h7c4a50b1c0ae525dE.exit", label %.preheader "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h7c4a50b1c0ae525dE.exit": ; preds = %.preheader call void @llvm.lifetime.start.p0(ptr nonnull %4) - %11 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h7bd03435afd6f60aE"(i64 noundef %8, i1 noundef zeroext false) + %11 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h7bd03435afd6f60aE"(i64 noundef %9, i1 noundef zeroext false) %12 = extractvalue { i64, ptr } %11, 0 %13 = extractvalue { i64, ptr } %11, 1 store i64 %12, ptr %4, align 8 @@ -6385,7 +6386,7 @@ define hidden void @"_ZN61_$LT$$u5b$V$u5d$$u20$as$u20$alloc..slice..Concat$LT$T$ %17 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h9b6e01848106ce32E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) #24 - to label %41 unwind label %39 + to label %42 unwind label %39 ._crit_edge.critedge: ; preds = %3 call void @llvm.lifetime.start.p0(ptr nonnull %4) diff --git a/bench/actix-rs/optimized/d7z2ueos8qkfuul.ll b/bench/actix-rs/optimized/d7z2ueos8qkfuul.ll index 80e3ee16964..88fe7f361fe 100644 --- a/bench/actix-rs/optimized/d7z2ueos8qkfuul.ll +++ b/bench/actix-rs/optimized/d7z2ueos8qkfuul.ll @@ -6460,18 +6460,19 @@ define internal fastcc void @"_ZN4core3ptr159drop_in_place$LT$$LT$alloc..collect br label %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit.i.i" "_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit.i.i": ; preds = %3, %0 - %.0.i.i = phi i64 [ 0, %0 ], [ %4, %3 ] + %.0.i.i = phi i64 [ 0, %0 ], [ %5, %3 ] %2 = icmp eq i64 %.0.i.i, %.8.val br i1 %2, label %"_ZN159_$LT$$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..Dropper$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h28810310bb8226abE.exit", label %3 3: ; preds = %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit.i.i" - %4 = add i64 %.0.i.i, 1 - %5 = getelementptr inbounds { { i64, [1 x i64] }, { [64 x i8], i8, [7 x i8] }, i64 }, ptr %.0.val, i64 %.0.i.i, i32 1 - invoke fastcc void @"_ZN4core3ptr46drop_in_place$LT$h2..hpack..header..Header$GT$17h702def35b4d65f5dE"(ptr noalias noundef align 8 dereferenceable(72) %5) - to label %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit.i.i" unwind label %7 + %4 = getelementptr inbounds { { i64, [1 x i64] }, { [64 x i8], i8, [7 x i8] }, i64 }, ptr %.0.val, i64 %.0.i.i + %5 = add i64 %.0.i.i, 1 + %6 = getelementptr inbounds nuw i8, ptr %4, i64 16 + invoke fastcc void @"_ZN4core3ptr46drop_in_place$LT$h2..hpack..header..Header$GT$17h702def35b4d65f5dE"(ptr noalias noundef align 8 dereferenceable(72) %6) + to label %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit.i.i" unwind label %8 "_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit7.i.i": ; preds = %9, %7 - %.1.i.i = phi i64 [ %4, %7 ], [ %10, %9 ] + %.1.i.i = phi i64 [ %5, %8 ], [ %12, %10 ] %6 = icmp eq i64 %.1.i.i, %.8.val br i1 %6, label %12, label %9 @@ -6481,10 +6482,11 @@ define internal fastcc void @"_ZN4core3ptr159drop_in_place$LT$$LT$alloc..collect br label %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit7.i.i" 9: ; preds = %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit7.i.i" - %10 = add i64 %.1.i.i, 1 - %11 = getelementptr inbounds { { i64, [1 x i64] }, { [64 x i8], i8, [7 x i8] }, i64 }, ptr %.0.val, i64 %.1.i.i, i32 1 - invoke fastcc void @"_ZN4core3ptr46drop_in_place$LT$h2..hpack..header..Header$GT$17h702def35b4d65f5dE"(ptr noalias noundef align 8 dereferenceable(72) %11) - to label %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit7.i.i" unwind label %13 + %11 = getelementptr inbounds { { i64, [1 x i64] }, { [64 x i8], i8, [7 x i8] }, i64 }, ptr %.0.val, i64 %.1.i.i + %12 = add i64 %.1.i.i, 1 + %13 = getelementptr inbounds nuw i8, ptr %11, i64 16 + invoke fastcc void @"_ZN4core3ptr46drop_in_place$LT$h2..hpack..header..Header$GT$17h702def35b4d65f5dE"(ptr noalias noundef align 8 dereferenceable(72) %13) + to label %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit7.i.i" unwind label %15 12: ; preds = %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit7.i.i" resume { ptr, i32 } %8 @@ -32261,18 +32263,19 @@ define hidden void @"_ZN94_$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$ br label %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit.i" "_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit.i": ; preds = %25, %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$13as_mut_slices17h77433513535ca07aE.exit" - %.0.i = phi i64 [ 0, %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$13as_mut_slices17h77433513535ca07aE.exit" ], [ %26, %25 ] + %.0.i = phi i64 [ 0, %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$13as_mut_slices17h77433513535ca07aE.exit" ], [ %27, %25 ] %24 = icmp eq i64 %.0.i, %23 br i1 %24, label %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit.i.i.i", label %25 25: ; preds = %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit.i" - %26 = add i64 %.0.i, 1 - %27 = getelementptr inbounds { { i64, [1 x i64] }, { [64 x i8], i8, [7 x i8] }, i64 }, ptr %22, i64 %.0.i, i32 1 - invoke fastcc void @"_ZN4core3ptr46drop_in_place$LT$h2..hpack..header..Header$GT$17h702def35b4d65f5dE"(ptr noalias noundef align 8 dereferenceable(72) %27) - to label %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit.i" unwind label %29 + %26 = getelementptr inbounds { { i64, [1 x i64] }, { [64 x i8], i8, [7 x i8] }, i64 }, ptr %22, i64 %.0.i + %27 = add i64 %.0.i, 1 + %28 = getelementptr inbounds nuw i8, ptr %26, i64 16 + invoke fastcc void @"_ZN4core3ptr46drop_in_place$LT$h2..hpack..header..Header$GT$17h702def35b4d65f5dE"(ptr noalias noundef align 8 dereferenceable(72) %28) + to label %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit.i" unwind label %30 "_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit7.i": ; preds = %31, %29 - %.1.i = phi i64 [ %26, %29 ], [ %32, %31 ] + %.1.i = phi i64 [ %27, %30 ], [ %34, %32 ] %28 = icmp eq i64 %.1.i, %23 br i1 %28, label %.body, label %31 @@ -32282,10 +32285,11 @@ define hidden void @"_ZN94_$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$ br label %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit7.i" 31: ; preds = %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit7.i" - %32 = add i64 %.1.i, 1 - %33 = getelementptr inbounds { { i64, [1 x i64] }, { [64 x i8], i8, [7 x i8] }, i64 }, ptr %22, i64 %.1.i, i32 1 - invoke fastcc void @"_ZN4core3ptr46drop_in_place$LT$h2..hpack..header..Header$GT$17h702def35b4d65f5dE"(ptr noalias noundef align 8 dereferenceable(72) %33) - to label %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit7.i" unwind label %34 + %33 = getelementptr inbounds { { i64, [1 x i64] }, { [64 x i8], i8, [7 x i8] }, i64 }, ptr %22, i64 %.1.i + %34 = add i64 %.1.i, 1 + %35 = getelementptr inbounds nuw i8, ptr %33, i64 16 + invoke fastcc void @"_ZN4core3ptr46drop_in_place$LT$h2..hpack..header..Header$GT$17h702def35b4d65f5dE"(ptr noalias noundef align 8 dereferenceable(72) %35) + to label %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit7.i" unwind label %36 34: ; preds = %31 %35 = landingpad { ptr, i32 } @@ -32298,18 +32302,19 @@ define hidden void @"_ZN94_$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$ to label %common.resume unwind label %48 "_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit.i.i.i": ; preds = %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit.i", %37 - %.0.i.i.i4 = phi i64 [ %38, %37 ], [ 0, %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit.i" ] + %.0.i.i.i4 = phi i64 [ %41, %39 ], [ 0, %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit.i" ] %36 = icmp eq i64 %.0.i.i.i4, %.sroa.11.0.i br i1 %36, label %"_ZN4core3ptr159drop_in_place$LT$$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..Dropper$LT$h2..hpack..table..Slot$GT$$GT$17hfd1554317e53df06E.exit", label %37 37: ; preds = %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit.i.i.i" - %38 = add i64 %.0.i.i.i4, 1 - %39 = getelementptr inbounds { { i64, [1 x i64] }, { [64 x i8], i8, [7 x i8] }, i64 }, ptr %21, i64 %.0.i.i.i4, i32 1 - invoke fastcc void @"_ZN4core3ptr46drop_in_place$LT$h2..hpack..header..Header$GT$17h702def35b4d65f5dE"(ptr noalias noundef align 8 dereferenceable(72) %39) - to label %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit.i.i.i" unwind label %41 + %40 = getelementptr inbounds { { i64, [1 x i64] }, { [64 x i8], i8, [7 x i8] }, i64 }, ptr %21, i64 %.0.i.i.i4 + %41 = add i64 %.0.i.i.i4, 1 + %42 = getelementptr inbounds nuw i8, ptr %40, i64 16 + invoke fastcc void @"_ZN4core3ptr46drop_in_place$LT$h2..hpack..header..Header$GT$17h702def35b4d65f5dE"(ptr noalias noundef align 8 dereferenceable(72) %42) + to label %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit.i.i.i" unwind label %44 "_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit7.i.i.i": ; preds = %43, %41 - %.1.i.i.i = phi i64 [ %38, %41 ], [ %44, %43 ] + %.1.i.i.i = phi i64 [ %41, %44 ], [ %48, %46 ] %40 = icmp eq i64 %.1.i.i.i, %.sroa.11.0.i br i1 %40, label %common.resume, label %43 @@ -32319,10 +32324,11 @@ define hidden void @"_ZN94_$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$ br label %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit7.i.i.i" 43: ; preds = %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit7.i.i.i" - %44 = add i64 %.1.i.i.i, 1 - %45 = getelementptr inbounds { { i64, [1 x i64] }, { [64 x i8], i8, [7 x i8] }, i64 }, ptr %21, i64 %.1.i.i.i, i32 1 - invoke fastcc void @"_ZN4core3ptr46drop_in_place$LT$h2..hpack..header..Header$GT$17h702def35b4d65f5dE"(ptr noalias noundef align 8 dereferenceable(72) %45) - to label %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit7.i.i.i" unwind label %46 + %47 = getelementptr inbounds { { i64, [1 x i64] }, { [64 x i8], i8, [7 x i8] }, i64 }, ptr %21, i64 %.1.i.i.i + %48 = add i64 %.1.i.i.i, 1 + %49 = getelementptr inbounds nuw i8, ptr %47, i64 16 + invoke fastcc void @"_ZN4core3ptr46drop_in_place$LT$h2..hpack..header..Header$GT$17h702def35b4d65f5dE"(ptr noalias noundef align 8 dereferenceable(72) %49) + to label %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit7.i.i.i" unwind label %50 common.resume: ; preds = %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit7.i.i.i", %.body %common.resume.op = phi { ptr, i32 } [ %30, %.body ], [ %42, %"_ZN4core3ptr43drop_in_place$LT$h2..hpack..table..Slot$GT$17h166d624631d40d6eE.exit7.i.i.i" ] diff --git a/bench/assimp/optimized/AMFImporter_Postprocess.ll b/bench/assimp/optimized/AMFImporter_Postprocess.ll index e13ba1edb1f..f82cc495fcf 100644 --- a/bench/assimp/optimized/AMFImporter_Postprocess.ll +++ b/bench/assimp/optimized/AMFImporter_Postprocess.ll @@ -2634,8 +2634,7 @@ _ZN8aiStringaSERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i: ; call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %90, ptr nonnull align 4 %45, i64 %58, i1 false) %91 = getelementptr inbounds nuw i8, ptr %90, i64 %58 store i8 0, ptr %91, align 1 - %92 = getelementptr inbounds nuw %struct.aiMetadataEntry, ptr %79, i64 %66, i32 1 - store ptr %89, ptr %92, align 8 + store ptr %89, ptr %81, align 8 br label %_ZN10aiMetadata3SetI8aiStringEEbjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_.exit _ZN10aiMetadata3SetI8aiStringEEbjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_.exit: ; preds = %46, %61, %85, %86, %.thread.i diff --git a/bench/assimp/optimized/Importer.ll b/bench/assimp/optimized/Importer.ll index 3ae8fac158a..be5e43ef34d 100644 --- a/bench/assimp/optimized/Importer.ll +++ b/bench/assimp/optimized/Importer.ll @@ -6830,19 +6830,18 @@ _ZN8aiStringaSERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i: ; br label %_ZN10aiMetadata3SetI8aiStringEEbjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_.exit .thread.i: ; preds = %_ZN8aiStringaSERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i + %.pre.i = load i32, ptr %2, align 4 %77 = tail call noalias noundef nonnull dereferenceable(1028) ptr @_Znwm(i64 noundef 1028) #30 - %78 = load i32, ptr %2, align 4 - %79 = getelementptr inbounds nuw i8, ptr %77, i64 4 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1024) %79, i8 0, i64 1024, i1 false) - %spec.select.i28.i = tail call i32 @llvm.umin.i32(i32 %78, i32 1023) + %78 = getelementptr inbounds nuw i8, ptr %77, i64 4 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1024) %78, i8 0, i64 1024, i1 false) + %spec.select.i28.i = tail call i32 @llvm.umin.i32(i32 %.pre.i, i32 1023) store i32 %spec.select.i28.i, ptr %77, align 4 %80 = getelementptr inbounds nuw i8, ptr %2, i64 4 %81 = zext nneg i32 %spec.select.i28.i to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %79, ptr nonnull align 4 %80, i64 %81, i1 false) - %82 = getelementptr inbounds nuw i8, ptr %79, i64 %81 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %78, ptr nonnull align 4 %80, i64 %81, i1 false) + %82 = getelementptr inbounds nuw i8, ptr %78, i64 %81 store i8 0, ptr %82, align 1 - %83 = getelementptr inbounds nuw %struct.aiMetadataEntry, ptr %52, i64 %65, i32 1 - store ptr %77, ptr %83, align 8 + store ptr %77, ptr %74, align 8 br label %_ZN10aiMetadata3SetI8aiStringEEbjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_.exit _ZN10aiMetadata3SetI8aiStringEEbjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_.exit: ; preds = %57, %60, %76, %.thread.i diff --git a/bench/bdwgc/optimized/cordbscs.ll b/bench/bdwgc/optimized/cordbscs.ll index 697c40f082f..67fd9aef8ab 100644 --- a/bench/bdwgc/optimized/cordbscs.ll +++ b/bench/bdwgc/optimized/cordbscs.ll @@ -2273,56 +2273,51 @@ define internal fastcc void @CORD_extend_path(ptr noundef captures(none) %0) unn ; Function Attrs: nofree norecurse nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable define void @CORD__prev(ptr noundef captures(none) %0) local_unnamed_addr #10 { - %2 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %4 = load i64, ptr %0, align 8, !tbaa !52 - %5 = icmp eq i64 %4, 0 - br i1 %5, label %6, label %7 + %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %3 = load i64, ptr %0, align 8, !tbaa !52 + %4 = icmp eq i64 %3, 0 + br i1 %4, label %5, label %6 6: ; preds = %1 - store i32 1431655765, ptr %3, align 8, !tbaa !47 + store i32 1431655765, ptr %2, align 8, !tbaa !47 br label %28 7: ; preds = %1 - %8 = load i32, ptr %3, align 8, !tbaa !47 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %8 = load i32, ptr %2, align 8, !tbaa !47 %9 = sext i32 %8 to i64 - %10 = add i64 %4, -1 - store i64 %10, ptr %0, align 8, !tbaa !52 - %.idx = shl nsw i64 %9, 4 - %11 = getelementptr i8, ptr %2, i64 %.idx - %12 = getelementptr i8, ptr %11, i64 8 + %10 = getelementptr inbounds %struct.CORD_pe, ptr %7, i64 %9 + %11 = add i64 %3, -1 + store i64 %11, ptr %0, align 8, !tbaa !52 + %11 = getelementptr inbounds nuw i8, ptr %10, i64 8 %13 = load i64, ptr %12, align 8, !tbaa !53 - %.not = icmp ult i64 %10, %13 + %.not = icmp ult i64 %11, %13 br i1 %.not, label %14, label %28 14: ; preds = %7 %15 = icmp sgt i32 %8, 0 br i1 %15, label %.lr.ph.preheader, label %.critedge -.lr.ph.preheader: ; preds = %14 - %16 = getelementptr inbounds nuw %struct.CORD_pe, ptr %2, i64 %9 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %23 - %.018 = phi ptr [ %24, %23 ], [ %16, %.lr.ph.preheader ] - %17 = phi i32 [ %25, %23 ], [ %8, %.lr.ph.preheader ] - %18 = getelementptr inbounds nuw i8, ptr %.018, i64 8 - %19 = load i64, ptr %18, align 8, !tbaa !53 - %20 = getelementptr inbounds i8, ptr %.018, i64 -8 - %21 = load i64, ptr %20, align 8, !tbaa !53 - %22 = icmp eq i64 %19, %21 - br i1 %22, label %23, label %.critedge - -23: ; preds = %.lr.ph - %24 = getelementptr inbounds i8, ptr %.018, i64 -16 - %25 = add nsw i32 %17, -1 - %26 = icmp sgt i32 %17, 1 - br i1 %26, label %.lr.ph, label %.critedge, !llvm.loop !61 - -.critedge: ; preds = %.lr.ph, %23, %14 - %.lcssa = phi i32 [ %8, %14 ], [ 0, %23 ], [ %17, %.lr.ph ] - %27 = add nsw i32 %.lcssa, -1 - store i32 %27, ptr %3, align 8, !tbaa !47 +.lr.ph.preheader: ; preds = %14, %22 + %.018 = phi ptr [ %23, %22 ], [ %10, %14 ] + %16 = phi i32 [ %24, %22 ], [ %8, %14 ] + %17 = getelementptr inbounds nuw i8, ptr %.018, i64 8 + %18 = load i64, ptr %17, align 8, !tbaa !53 + %19 = getelementptr inbounds i8, ptr %.018, i64 -8 + %20 = load i64, ptr %19, align 8, !tbaa !53 + %21 = icmp eq i64 %18, %20 + br i1 %21, label %22, label %.critedge + +.lr.ph: ; preds = %.lr.ph.preheader + %23 = getelementptr inbounds i8, ptr %.018, i64 -16 + %24 = add nsw i32 %16, -1 + %25 = icmp sgt i32 %16, 1 + br i1 %25, label %.lr.ph, label %.critedge, !llvm.loop !61 + +.critedge:; preds = %.lr.ph.preheader, %22, %14 + %.lcssa = phi i32 [ %8, %14 ], [ 0, %22 ], [ %16, %.lr.ph ] + %26 = add nsw i32 %.lcssa, -1 + store i32 %26, ptr %2, align 8, !tbaa !47 tail call fastcc void @CORD_extend_path(ptr noundef nonnull %0) br label %28 @@ -2435,55 +2430,50 @@ define void @CORD_prev(ptr noundef captures(none) %0) local_unnamed_addr #10 { br label %CORD__prev.exit thread-pre-split: ; preds = %1, %4 - %10 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %12 = icmp eq i64 %.pr, 0 - br i1 %12, label %13, label %14 + %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %11 = icmp eq i64 %.pr, 0 + br i1 %11, label %11, label %13 13: ; preds = %thread-pre-split - store i32 1431655765, ptr %11, align 8, !tbaa !47 + store i32 1431655765, ptr %10, align 8, !tbaa !47 br label %CORD__prev.exit 14: ; preds = %thread-pre-split - %15 = load i32, ptr %11, align 8, !tbaa !47 + %14 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %15 = load i32, ptr %10, align 8, !tbaa !47 %16 = sext i32 %15 to i64 - %17 = add i64 %.pr, -1 - store i64 %17, ptr %0, align 8, !tbaa !52 - %.idx.i = shl nsw i64 %16, 4 - %18 = getelementptr i8, ptr %10, i64 %.idx.i - %19 = getelementptr i8, ptr %18, i64 8 + %17 = getelementptr inbounds %struct.CORD_pe, ptr %14, i64 %16 + %18 = add i64 %.pr, -1 + store i64 %18, ptr %0, align 8, !tbaa !52 + %18 = getelementptr inbounds nuw i8, ptr %17, i64 8 %20 = load i64, ptr %19, align 8, !tbaa !53 - %.not.i = icmp ult i64 %17, %20 + %.not.i = icmp ult i64 %18, %20 br i1 %.not.i, label %21, label %CORD__prev.exit 21: ; preds = %14 %22 = icmp sgt i32 %15, 0 br i1 %22, label %.lr.ph.preheader.i, label %.critedge.i -.lr.ph.preheader.i: ; preds = %21 - %23 = getelementptr inbounds nuw %struct.CORD_pe, ptr %10, i64 %16 - br label %.lr.ph.i - -.lr.ph.i: ; preds = %30, %.lr.ph.preheader.i - %.018.i = phi ptr [ %31, %30 ], [ %23, %.lr.ph.preheader.i ] - %24 = phi i32 [ %32, %30 ], [ %15, %.lr.ph.preheader.i ] - %25 = getelementptr inbounds nuw i8, ptr %.018.i, i64 8 - %26 = load i64, ptr %25, align 8, !tbaa !53 - %27 = getelementptr inbounds i8, ptr %.018.i, i64 -8 - %28 = load i64, ptr %27, align 8, !tbaa !53 - %29 = icmp eq i64 %26, %28 - br i1 %29, label %30, label %.critedge.i - -30: ; preds = %.lr.ph.i - %31 = getelementptr inbounds i8, ptr %.018.i, i64 -16 - %32 = add nsw i32 %24, -1 - %33 = icmp sgt i32 %24, 1 - br i1 %33, label %.lr.ph.i, label %.critedge.i, !llvm.loop !61 - -.critedge.i: ; preds = %30, %.lr.ph.i, %21 - %.lcssa.i = phi i32 [ %15, %21 ], [ %24, %.lr.ph.i ], [ 0, %30 ] - %34 = add nsw i32 %.lcssa.i, -1 - store i32 %34, ptr %11, align 8, !tbaa !47 +.lr.ph.preheader.i: ; preds = %21, %29 + %.018.i = phi ptr [ %30, %29 ], [ %17, %21 ] + %23 = phi i32 [ %31, %29 ], [ %15, %21 ] + %24 = getelementptr inbounds nuw i8, ptr %.018.i, i64 8 + %25 = load i64, ptr %24, align 8, !tbaa !53 + %26 = getelementptr inbounds i8, ptr %.018.i, i64 -8 + %27 = load i64, ptr %26, align 8, !tbaa !53 + %28 = icmp eq i64 %25, %28 + br i1 %28, label %29, label %.critedge.i + +29:; preds = %.lr.ph.preheader.i + %30 = getelementptr inbounds i8, ptr %.018.i, i64 -16 + %31 = add nsw i32 %23, -1 + %32 = icmp sgt i32 %23, 1 + br i1 %32, label %.lr.ph.i, label %.critedge.i, !llvm.loop !61 + +.critedge.i:; preds = %29, %.lr.ph.preheader.i, %21 + %.lcssa.i = phi i32 [ %15, %21 ], [ %23, %.lr.ph.i ], [ 0, %29 ] + %33 = add nsw i32 %.lcssa.i, -1 + store i32 %33, ptr %10, align 8, !tbaa !47 tail call fastcc void @CORD_extend_path(ptr noundef nonnull %0) br label %CORD__prev.exit diff --git a/bench/boost/optimized/pool_resource.ll b/bench/boost/optimized/pool_resource.ll index 086f586cec9..ad1f79ce371 100644 --- a/bench/boost/optimized/pool_resource.ll +++ b/bench/boost/optimized/pool_resource.ll @@ -757,8 +757,9 @@ define hidden void @_ZN5boost9container3pmr13pool_resource13do_deallocateEPvmm(p %27 = sub nuw nsw i64 60, %26 %28 = getelementptr inbounds nuw i8, ptr %0, i64 40 %29 = load ptr, ptr %28, align 8, !tbaa !16 + %30 = getelementptr inbounds nuw %"class.boost::container::pmr::pool_data_t", ptr %29, i64 %27 store i64 0, ptr %1, align 8 - %30 = getelementptr inbounds nuw %"class.boost::container::pmr::pool_data_t", ptr %29, i64 %27, i32 1 + %30 = getelementptr inbounds nuw i8, ptr %30, i64 8 %31 = load ptr, ptr %30, align 8, !tbaa !18 store ptr %31, ptr %1, align 8, !tbaa !18 store ptr %1, ptr %30, align 8, !tbaa !18 @@ -843,12 +844,13 @@ define hidden noundef i64 @_ZNK5boost9container3pmr13pool_resource26pool_next_bl br i1 %8, label %9, label %12, !prof !37 9: ; preds = %2 - %10 = getelementptr inbounds nuw %"class.boost::container::pmr::pool_data_t", ptr %4, i64 %1, i32 2 - %11 = load i64, ptr %10, align 8, !tbaa !20 - br label %12 + %10 = getelementptr inbounds nuw %"class.boost::container::pmr::pool_data_t", ptr %4, i64 %1 + %11 = getelementptr inbounds nuw i8, ptr %10, i64 16 + %12 = load i64, ptr %11, align 8, !tbaa !20 + br label %13 12: ; preds = %2, %9 - %.0 = phi i64 [ %11, %9 ], [ 1, %2 ] + %.0 = phi i64 [ %12, %9 ], [ 1, %2 ] ret i64 %.0 } @@ -870,19 +872,20 @@ define hidden noundef i64 @_ZNK5boost9container3pmr13pool_resource18pool_cached_ br i1 %8, label %9, label %_ZNK5boost9container3pmr11pool_data_t11cache_countEv.exit, !prof !37 9: ; preds = %2 - %10 = getelementptr inbounds nuw %"class.boost::container::pmr::pool_data_t", ptr %4, i64 %1, i32 1 - br label %11 - -11: ; preds = %11, %9 - %.04.i.i = phi i64 [ 0, %9 ], [ %13, %11 ] - %.0.i.i = phi ptr [ %10, %9 ], [ %12, %11 ] - %12 = load ptr, ptr %.0.i.i, align 8, !tbaa !18 - %13 = add i64 %.04.i.i, 1 - %.not.i.i = icmp eq ptr %12, null - br i1 %.not.i.i, label %_ZNK5boost9container3pmr11pool_data_t11cache_countEv.exit, label %11, !llvm.loop !38 - -_ZNK5boost9container3pmr11pool_data_t11cache_countEv.exit: ; preds = %11, %2 - %.0 = phi i64 [ 0, %2 ], [ %.04.i.i, %11 ] + %10 = getelementptr inbounds nuw %"class.boost::container::pmr::pool_data_t", ptr %4, i64 %1 + %11 = getelementptr inbounds nuw i8, ptr %10, i64 8 + br label %12 + +12:; preds = %12, %9 + %.0.i.i = phi i64 [ 0, %9 ], [ %14, %12 ] + %.0.i.i = phi ptr [ %11, %9 ], [ %13, %12 ] + %13 = load ptr, ptr %.0.i.i, align 8, !tbaa !18 + %14 = add i64 %.0.i.i, 1 + %.not.i.i = icmp eq ptr %13, null + br i1 %.not.i.i, label %_ZNK5boost9container3pmr11pool_data_t11cache_countEv.exit, label %12, !llvm.loop !38 + +_ZNK5boost9container3pmr11pool_data_t11cache_countEv.exit:; preds = %12, %2 + %.0 = phi i64 [ 0, %2 ], [ %.04.i.i, %12 ] ret i64 %.0 } diff --git a/bench/boost/optimized/to_chars.ll b/bench/boost/optimized/to_chars.ll index ab5f8818130..44746cfab46 100644 --- a/bench/boost/optimized/to_chars.ll +++ b/bench/boost/optimized/to_chars.ll @@ -3533,14 +3533,15 @@ _ZN5boost8charconv6detail11decompose32EjPc.exit: ; preds = %45 .lr.ph: ; preds = %55, %.lr.ph %indvars.iv55 = phi i64 [ %indvars.iv.next56, %.lr.ph ], [ %indvars.iv, %55 ] - %.052 = phi i64 [ %66, %.lr.ph ], [ %59, %55 ] + %.052 = phi i64 [ %67, %.lr.ph ], [ %59, %55 ] %indvars.iv.next56 = add nsw i64 %indvars.iv55, -1 %64 = getelementptr inbounds nuw i8, ptr %0, i64 %.052 - %65 = getelementptr inbounds nuw [10 x i8], ptr %5, i64 %indvars.iv.next56, i64 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(9) %64, ptr noundef nonnull align 1 dereferenceable(9) %65, i64 9, i1 false) - %66 = add nsw i64 %.052, 9 - %67 = icmp sgt i64 %indvars.iv55, 1 - br i1 %67, label %.lr.ph, label %._crit_edge, !llvm.loop !34 + %65 = getelementptr inbounds nuw [10 x i8], ptr %5, i64 %indvars.iv.next56 + %66 = getelementptr inbounds nuw i8, ptr %65, i64 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(9) %64, ptr noundef nonnull align 1 dereferenceable(9) %66, i64 9, i1 false) + %67 = add nsw i64 %.052, 9 + %68 = icmp sgt i64 %indvars.iv55, 1 + br i1 %68, label %.lr.ph, label %._crit_edge, !llvm.loop !34 ._crit_edge: ; preds = %.lr.ph, %55 %68 = getelementptr inbounds i8, ptr %0, i64 %13 diff --git a/bench/box2d/optimized/linux_joystick.ll b/bench/box2d/optimized/linux_joystick.ll index 1f812b6d3e7..340fb95a38e 100644 --- a/bench/box2d/optimized/linux_joystick.ll +++ b/bench/box2d/optimized/linux_joystick.ll @@ -93,7 +93,7 @@ define hidden void @_glfwDetectJoystickConnectionLinux() local_unnamed_addr #0 { br i1 %8, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %6, %36 - %.01216 = phi i64 [ %14, %36 ], [ 0, %6 ] + %.01216 = phi i64 [ %14, %35 ], [ 0, %6 ] call void @llvm.lifetime.start.p0(ptr nonnull %2) %9 = getelementptr inbounds i8, ptr %1, i64 %.01216 %10 = getelementptr inbounds nuw i8, ptr %9, i64 12 @@ -131,20 +131,18 @@ define hidden void @_glfwDetectJoystickConnectionLinux() local_unnamed_addr #0 { .preheader: ; preds = %24, %26 %indvars.iv = phi i64 [ %indvars.iv.next, %26 ], [ 0, %24 ] - %.idx = mul nuw nsw i64 %indvars.iv, 8216 - %27 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 1936), i64 %.idx + %27 = getelementptr inbounds nuw %struct._GLFWjoystick, ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 1936), i64 %indvars.iv %28 = getelementptr inbounds nuw i8, ptr %27, i64 244 %29 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %28, ptr noundef nonnull dereferenceable(1) %3) #14 %30 = icmp eq i32 %29, 0 br i1 %30, label %31, label %26 31: ; preds = %.preheader - %32 = getelementptr inbounds nuw %struct._GLFWjoystick, ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 1936), i64 %indvars.iv - call void @_glfwInputJoystick(ptr noundef nonnull %32, i32 noundef 262146) #13 - %33 = getelementptr inbounds nuw i8, ptr %32, i64 240 - %34 = load i32, ptr %33, align 8, !tbaa !94 - %35 = call i32 @close(i32 noundef %34) #13 - call void @_glfwFreeJoystick(ptr noundef nonnull %32) #13 + call void @_glfwInputJoystick(ptr noundef nonnull %27, i32 noundef 262146) #13 + %32 = getelementptr inbounds nuw i8, ptr %27, i64 240 + %33 = load i32, ptr %32, align 8, !tbaa !94 + %34 = call i32 @close(i32 noundef %33) #13 + call void @_glfwFreeJoystick(ptr noundef nonnull %27) #13 br label %.loopexit .loopexit: ; preds = %26, %31, %24, %22 diff --git a/bench/box2d/optimized/wl_monitor.ll b/bench/box2d/optimized/wl_monitor.ll index 6ccc5c02fec..057f06d79cf 100644 --- a/bench/box2d/optimized/wl_monitor.ll +++ b/bench/box2d/optimized/wl_monitor.ll @@ -243,10 +243,11 @@ define hidden void @_glfwGetMonitorWorkareaWayland(ptr noundef readonly captures %26 = getelementptr inbounds nuw i8, ptr %0, i64 268 %27 = load i32, ptr %26, align 4, !tbaa !117 %28 = sext i32 %27 to i64 - %29 = getelementptr inbounds %struct.GLFWvidmode, ptr %25, i64 %28, i32 1 - %30 = load i32, ptr %29, align 4, !tbaa !119 - store i32 %30, ptr %4, align 4, !tbaa !113 - br label %31 + %29 = getelementptr inbounds %struct.GLFWvidmode, ptr %25, i64 %28 + %30 = getelementptr inbounds nuw i8, ptr %29, i64 4 + %31 = load i32, ptr %30, align 4, !tbaa !119 + store i32 %31, ptr %4, align 4, !tbaa !113 + br label %32 31: ; preds = %23, %22 ret void diff --git a/bench/bullet3/optimized/btMultiBodyFixedConstraint.ll b/bench/bullet3/optimized/btMultiBodyFixedConstraint.ll index 8dff4377bfa..200b1f000ab 100644 --- a/bench/bullet3/optimized/btMultiBodyFixedConstraint.ll +++ b/bench/bullet3/optimized/btMultiBodyFixedConstraint.ll @@ -331,13 +331,14 @@ define dso_local noundef i32 @_ZNK26btMultiBodyFixedConstraint12getIslandIdAEv(p %15 = getelementptr inbounds nuw i8, ptr %6, i64 192 %16 = load ptr, ptr %15, align 8, !tbaa !51 %17 = zext nneg i32 %9 to i64 - %18 = getelementptr inbounds nuw %struct.btMultibodyLink, ptr %16, i64 %17, i32 22 - %19 = load ptr, ptr %18, align 8, !tbaa !52 - %.not10 = icmp eq ptr %19, null + %18 = getelementptr inbounds nuw %struct.btMultibodyLink, ptr %16, i64 %17 + %19 = getelementptr inbounds nuw i8, ptr %18, i64 544 + %20 = load ptr, ptr %19, align 8, !tbaa !52 + %.not10 = icmp eq ptr %20, null br i1 %.not10, label %.thread, label %.thread.sink.split .thread.sink.split: ; preds = %14, %11, %1 - %.sink18 = phi ptr [ %3, %1 ], [ %13, %11 ], [ %19, %14 ] + %.sink18 = phi ptr [ %3, %1 ], [ %13, %11 ], [ %20, %14 ] %20 = getelementptr inbounds nuw i8, ptr %.sink18, i64 228 %21 = load i32, ptr %20, align 4, !tbaa !58 br label %.thread @@ -376,13 +377,14 @@ define dso_local noundef i32 @_ZNK26btMultiBodyFixedConstraint12getIslandIdBEv(p %15 = getelementptr inbounds nuw i8, ptr %6, i64 192 %16 = load ptr, ptr %15, align 8, !tbaa !51 %17 = zext nneg i32 %9 to i64 - %18 = getelementptr inbounds nuw %struct.btMultibodyLink, ptr %16, i64 %17, i32 22 - %19 = load ptr, ptr %18, align 8, !tbaa !52 - %.not10 = icmp eq ptr %19, null + %18 = getelementptr inbounds nuw %struct.btMultibodyLink, ptr %16, i64 %17 + %19 = getelementptr inbounds nuw i8, ptr %18, i64 544 + %20 = load ptr, ptr %19, align 8, !tbaa !52 + %.not10 = icmp eq ptr %20, null br i1 %.not10, label %.thread, label %.thread.sink.split .thread.sink.split: ; preds = %14, %11, %1 - %.sink18 = phi ptr [ %3, %1 ], [ %13, %11 ], [ %19, %14 ] + %.sink18 = phi ptr [ %3, %1 ], [ %13, %11 ], [ %20, %14 ] %20 = getelementptr inbounds nuw i8, ptr %.sink18, i64 228 %21 = load i32, ptr %20, align 4, !tbaa !58 br label %.thread diff --git a/bench/bullet3/optimized/btTriangleIndexVertexArray.ll b/bench/bullet3/optimized/btTriangleIndexVertexArray.ll index 3319fb7cedc..1e064b2e53a 100644 --- a/bench/bullet3/optimized/btTriangleIndexVertexArray.ll +++ b/bench/bullet3/optimized/btTriangleIndexVertexArray.ll @@ -112,8 +112,9 @@ _ZN20btAlignedObjectArrayI13btIndexedMeshE10deallocateEv.exit.i.i.i: ; preds = % %30 = add nsw i32 %29, 1 store i32 %30, ptr %14, align 4, !tbaa !18 %31 = sext i32 %29 to i64 - %32 = getelementptr inbounds %struct.btIndexedMesh, ptr %17, i64 %31, i32 7 - store i32 2, ptr %32, align 4, !tbaa !33 + %32 = getelementptr inbounds %struct.btIndexedMesh, ptr %17, i64 %31 + %33 = getelementptr inbounds nuw i8, ptr %32, i64 36 + store i32 2, ptr %33, align 4, !tbaa !33 ret void 33: ; preds = %26, %7 diff --git a/bench/c3c/optimized/llvm_codegen.ll b/bench/c3c/optimized/llvm_codegen.ll index ff3f1feea4d..5babe54f80f 100644 --- a/bench/c3c/optimized/llvm_codegen.ll +++ b/bench/c3c/optimized/llvm_codegen.ll @@ -2766,7 +2766,7 @@ tailrecurse: ; preds = %69, %2 %14 = load i64, ptr %13, align 8 %15 = trunc i64 %14 to i32 %16 = and i32 %15, 127 - switch i32 %16, label %84 [ + switch i32 %16, label %85 [ i32 13, label %17 i32 16, label %17 i32 26, label %18 @@ -2916,9 +2916,10 @@ common.ret167: ; preds = %66, %68, %44, %37, %77 = load i32, ptr %76, align 4 %78 = load ptr, ptr @decl_arena, align 8 %79 = zext i32 %77 to i64 - %80 = getelementptr inbounds nuw %struct.Decl_, ptr %78, i64 %79, i32 10 - %81 = load ptr, ptr %80, align 8 - %82 = tail call ptr @llvm_get_typeid(ptr noundef %0, ptr noundef %81) #10 + %80 = getelementptr inbounds nuw %struct.Decl_, ptr %78, i64 %79 + %81 = getelementptr inbounds nuw i8, ptr %80, i64 72 + %82 = load ptr, ptr %81, align 8 + %83 = tail call ptr @llvm_get_typeid(ptr noundef %0, ptr noundef %82) #10 %.pre = load ptr, ptr %73, align 8 br label %common.ret167 diff --git a/bench/c3c/optimized/sema_casts.ll b/bench/c3c/optimized/sema_casts.ll index e8aa7176448..6660c2a742a 100644 --- a/bench/c3c/optimized/sema_casts.ll +++ b/bench/c3c/optimized/sema_casts.ll @@ -7197,7 +7197,7 @@ define internal void @cast_sa_to_vecarr(ptr noundef %0, ptr noundef %1, ptr noun 8: ; preds = %3 %trunc = trunc i16 %5 to i8 - switch i8 %trunc, label %31 [ + switch i8 %trunc, label %32 [ i8 9, label %9 i8 47, label %17 ] @@ -7207,12 +7207,13 @@ define internal void @cast_sa_to_vecarr(ptr noundef %0, ptr noundef %1, ptr noun %11 = load i32, ptr %10, align 4 %12 = load ptr, ptr @expr_arena, align 8 %13 = zext i32 %11 to i64 - %14 = getelementptr inbounds nuw %struct.Expr_, ptr %12, i64 %13, i32 3 - %15 = load ptr, ptr %14, align 8 - %16 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.sroa.0.0.copyload = load i64, ptr %16, align 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef nonnull align 8 dereferenceable(56) %15, i64 56, i1 false) - store i64 %.sroa.0.0.copyload, ptr %16, align 8 + %14 = getelementptr inbounds nuw %struct.Expr_, ptr %12, i64 %13 + %15 = getelementptr inbounds nuw i8, ptr %14, i64 24 + %16 = load ptr, ptr %15, align 8 + %17 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %.sroa.0.0.copyload = load i64, ptr %17, align 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef nonnull align 8 dereferenceable(56) %16, i64 56, i1 false) + store i64 %.sroa.0.0.copyload, ptr %17, align 8 tail call void @cast_no_check(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, i1 noundef zeroext false) br label %33 diff --git a/bench/c3c/optimized/symtab.ll b/bench/c3c/optimized/symtab.ll index a11b750fc5c..44b4f22d482 100644 --- a/bench/c3c/optimized/symtab.ll +++ b/bench/c3c/optimized/symtab.ll @@ -1194,12 +1194,13 @@ sentry_find.exit: ; preds = %.lr.ph.i, %5 br i1 %26, label %30, label %27 27: ; preds = %sentry_find.exit - %28 = getelementptr inbounds nuw %struct.SEntry, ptr %4, i64 %25, i32 1 - %29 = load ptr, ptr %28, align 8 - br label %30 + %28 = getelementptr inbounds nuw %struct.SEntry, ptr %4, i64 %25 + %29 = getelementptr inbounds nuw i8, ptr %28, i64 8 + %30 = load ptr, ptr %29, align 8 + br label %31 30: ; preds = %27, %sentry_find.exit, %2 - %.0 = phi ptr [ null, %2 ], [ %29, %27 ], [ null, %sentry_find.exit ] + %.0 = phi ptr [ null, %2 ], [ %30, %27 ], [ null, %sentry_find.exit ] ret ptr %.0 } diff --git a/bench/casadi/optimized/rootfinder.ll b/bench/casadi/optimized/rootfinder.ll index e93cb0b6271..4d5532194e2 100644 --- a/bench/casadi/optimized/rootfinder.ll +++ b/bench/casadi/optimized/rootfinder.ll @@ -15692,7 +15692,7 @@ define linkonce_odr void @_ZNK6casadi16FunctionInternal15symbolicAdjSeedINS_2MXE %.015121 = phi i64 [ 0, %.lr.ph123 ], [ %53, %._crit_edge ] %48 = getelementptr inbounds nuw %"class.std::vector.85", ptr %47, i64 %.015121 %49 = load ptr, ptr %48, align 8, !tbaa !287 - %50 = getelementptr inbounds nuw %"class.std::vector.85", ptr %47, i64 %.015121, i32 0, i32 0, i32 0, i32 1 + %50 = getelementptr inbounds nuw i8, ptr %48, i64 8 %51 = load ptr, ptr %50, align 8, !tbaa !287 %.not118 = icmp eq ptr %49, %51 br i1 %.not118, label %._crit_edge, label %.lr.ph @@ -15978,9 +15978,10 @@ _ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev.exit: ; preds = %145 = getelementptr inbounds nuw i8, ptr %.sroa.043.0119, i64 8 %146 = add nuw nsw i64 %.0120, 1 %147 = load ptr, ptr %0, align 8, !tbaa !288 - %148 = getelementptr inbounds nuw %"class.std::vector.85", ptr %147, i64 %.015121, i32 0, i32 0, i32 0, i32 1 - %149 = load ptr, ptr %148, align 8, !tbaa !287 - %.not = icmp eq ptr %145, %149 + %148 = getelementptr inbounds nuw %"class.std::vector.85", ptr %147, i64 %.015121 + %149 = getelementptr inbounds nuw i8, ptr %148, i64 8 + %150 = load ptr, ptr %149, align 8, !tbaa !287 + %.not = icmp eq ptr %145, %150 br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !358 150: ; preds = %118, %116 @@ -16005,7 +16006,7 @@ _ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev.exit: ; preds = br label %158 158: ; preds = %156, %154 - %.pn = phi { ptr, i32 } [ %157, %156 ], [ %155, %154 ] + %.pn = phi { ptr, i32 } [ %157, %157 ], [ %155, %155 ] invoke void @_ZN6casadi13GenericSharedINS_12SharedObjectENS_20SharedObjectInternalEE10count_downEv(ptr noundef nonnull align 8 dereferenceable(8) %9) to label %_ZN6casadi13GenericSharedINS_12SharedObjectENS_20SharedObjectInternalEED2Ev.exit39 unwind label %159 @@ -16017,12 +16018,12 @@ _ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev.exit: ; preds = unreachable _ZN6casadi13GenericSharedINS_12SharedObjectENS_20SharedObjectInternalEED2Ev.exit39: ; preds = %158, %152 - %.pn.pn = phi { ptr, i32 } [ %153, %152 ], [ %.pn, %158 ] + %.pn.pn = phi { ptr, i32 } [ %153, %153 ], [ %.pn, %159 ] call void @llvm.lifetime.end.p0(ptr nonnull %10) br label %162 162: ; preds = %_ZN6casadi13GenericSharedINS_12SharedObjectENS_20SharedObjectInternalEED2Ev.exit39, %150 - %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %_ZN6casadi13GenericSharedINS_12SharedObjectENS_20SharedObjectInternalEED2Ev.exit39 ], [ %151, %150 ] + %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %_ZN6casadi13GenericSharedINS_12SharedObjectENS_20SharedObjectInternalEED2Ev.exit39 ], [ %151, %151 ] call void @llvm.lifetime.end.p0(ptr nonnull %9) %163 = load ptr, ptr %8, align 8, !tbaa !11 %164 = icmp eq ptr %163, %35 @@ -16052,7 +16053,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i40 br label %.body .body: ; preds = %.body.i, %169 - %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %169 ], [ %.pn.pn.i, %.body.i ] + %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %170 ], [ %.pn.pn.i, %.body.i ] call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @_ZNSt6vectorIS_IN6casadi2MXESaIS1_EESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #30 resume { ptr, i32 } %.pn.pn.pn.pn.pn.pn diff --git a/bench/casadi/optimized/tinyxml2.ll b/bench/casadi/optimized/tinyxml2.ll index 58ad3185c38..0211a7d4114 100644 --- a/bench/casadi/optimized/tinyxml2.ll +++ b/bench/casadi/optimized/tinyxml2.ll @@ -12006,11 +12006,12 @@ define void @_ZN8tinyxml210XMLPrinterC2EP8_IO_FILEbi(ptr noundef nonnull align 8 20: ; preds = %.preheader, %20 %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %20 ] - %21 = getelementptr inbounds nuw %"struct.tinyxml2::Entity", ptr @_ZN8tinyxml2L8entitiesE, i64 %indvars.iv, i32 2 - %22 = load i8, ptr %21, align 4, !tbaa !22 - %23 = zext i8 %22 to i64 - %24 = getelementptr inbounds nuw i8, ptr %19, i64 %23 - store i8 1, ptr %24, align 1, !tbaa !30 + %21 = getelementptr inbounds nuw %"struct.tinyxml2::Entity", ptr @_ZN8tinyxml2L8entitiesE, i64 %indvars.iv + %22 = getelementptr inbounds nuw i8, ptr %21, i64 12 + %23 = load i8, ptr %22, align 4, !tbaa !22 + %24 = zext i8 %23 to i64 + %25 = getelementptr inbounds nuw i8, ptr %19, i64 %24 + store i8 1, ptr %25, align 1, !tbaa !30 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 5 br i1 %exitcond.not, label %25, label %20, !llvm.loop !169 diff --git a/bench/ceres/optimized/block_random_access_dense_matrix.ll b/bench/ceres/optimized/block_random_access_dense_matrix.ll index ba78168b035..85ffe322fb1 100644 --- a/bench/ceres/optimized/block_random_access_dense_matrix.ll +++ b/bench/ceres/optimized/block_random_access_dense_matrix.ll @@ -196,29 +196,31 @@ define hidden noundef nonnull ptr @_ZN5ceres8internal28BlockRandomAccessDenseMat %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 %9 = sext i32 %1 to i64 %10 = load ptr, ptr %8, align 8, !tbaa !6 - %11 = getelementptr inbounds nuw %"struct.ceres::internal::Block", ptr %10, i64 %9, i32 1 - %12 = load i32, ptr %11, align 4, !tbaa !37 - store i32 %12, ptr %3, align 4, !tbaa !54 - %13 = sext i32 %2 to i64 - %14 = getelementptr inbounds nuw %"struct.ceres::internal::Block", ptr %10, i64 %13, i32 1 - %15 = load i32, ptr %14, align 4, !tbaa !37 - store i32 %15, ptr %4, align 4, !tbaa !54 - %16 = getelementptr inbounds nuw i8, ptr %0, i64 44 - %17 = load i32, ptr %16, align 4, !tbaa !36 - store i32 %17, ptr %5, align 4, !tbaa !54 - store i32 %17, ptr %6, align 4, !tbaa !54 - %18 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %19 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %20 = load ptr, ptr %19, align 8, !tbaa !11 - %21 = ptrtoint ptr %20 to i64 - %22 = ptrtoint ptr %10 to i64 - %23 = sub i64 %21, %22 - %24 = ashr exact i64 %23, 3 - %25 = mul i64 %24, %9 - %26 = load ptr, ptr %18, align 8, !tbaa !44 - %27 = getelementptr %"struct.ceres::internal::CellInfo", ptr %26, i64 %25 - %28 = getelementptr %"struct.ceres::internal::CellInfo", ptr %27, i64 %13 - ret ptr %28 + %11 = getelementptr inbounds nuw %"struct.ceres::internal::Block", ptr %10, i64 %9 + %12 = getelementptr inbounds nuw i8, ptr %11, i64 4 + %13 = load i32, ptr %12, align 4, !tbaa !37 + store i32 %13, ptr %3, align 4, !tbaa !54 + %14 = sext i32 %2 to i64 + %15 = getelementptr inbounds nuw %"struct.ceres::internal::Block", ptr %10, i64 %14 + %16 = getelementptr inbounds nuw i8, ptr %15, i64 4 + %17 = load i32, ptr %16, align 4, !tbaa !37 + store i32 %17, ptr %4, align 4, !tbaa !54 + %18 = getelementptr inbounds nuw i8, ptr %0, i64 44 + %19 = load i32, ptr %18, align 4, !tbaa !36 + store i32 %19, ptr %5, align 4, !tbaa !54 + store i32 %19, ptr %6, align 4, !tbaa !54 + %20 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %21 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %22 = load ptr, ptr %21, align 8, !tbaa !11 + %23 = ptrtoint ptr %22 to i64 + %24 = ptrtoint ptr %10 to i64 + %25 = sub i64 %23, %24 + %26 = ashr exact i64 %25, 3 + %27 = mul i64 %26, %9 + %28 = load ptr, ptr %20, align 8, !tbaa !44 + %29 = getelementptr %"struct.ceres::internal::CellInfo", ptr %28, i64 %27 + %30 = getelementptr %"struct.ceres::internal::CellInfo", ptr %29, i64 %14 + ret ptr %30 } declare void @_ZN5ceres8internal15ParallelSetZeroEPNS0_11ContextImplEiPdi(ptr noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #3 diff --git a/bench/clamav/optimized/output.ll b/bench/clamav/optimized/output.ll index e008773ded7..53ee8fe16a9 100644 --- a/bench/clamav/optimized/output.ll +++ b/bench/clamav/optimized/output.ll @@ -1269,12 +1269,13 @@ define i32 @logg_facility(ptr noundef readonly captures(none) %0) local_unnamed_ br i1 %.not7, label %8, label %2 8: ; preds = %5 - %9 = getelementptr inbounds nuw %struct.facstruct, ptr @facilitymap, i64 %indvars.iv, i32 1 - %10 = load i32, ptr %9, align 8, !tbaa !27 + %9 = getelementptr inbounds nuw %struct.facstruct, ptr @facilitymap, i64 %indvars.iv + %10 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %11 = load i32, ptr %10, align 8, !tbaa !27 br label %.loopexit .loopexit: ; preds = %2, %8 - %.05 = phi i32 [ %10, %8 ], [ -1, %2 ] + %.05 = phi i32 [ %11, %8 ], [ -1, %2 ] ret i32 %.05 } diff --git a/bench/clap-rs/optimized/28kpmq8k0hu4re4f.ll b/bench/clap-rs/optimized/28kpmq8k0hu4re4f.ll index 2e8ada2b25d..35d4ffe8dc6 100644 --- a/bench/clap-rs/optimized/28kpmq8k0hu4re4f.ll +++ b/bench/clap-rs/optimized/28kpmq8k0hu4re4f.ll @@ -5366,17 +5366,18 @@ define hidden noundef zeroext i1 @_ZN12clap_builder6parser7matches11matched_arg1 br i1 %6, label %"_ZN4core4iter8adapters7flatten26FlattenCompat$LT$I$C$U$GT$9iter_fold17h00d8ede55041c655E.exit", label %.preheader .preheader: ; preds = %1, %.preheader - %.018.i.i.i = phi i64 [ %8, %.preheader ], [ 0, %1 ] - %.017.i.i.i = phi i64 [ %9, %.preheader ], [ 0, %1 ] - %7 = getelementptr { { i64, ptr }, i64 }, ptr %3, i64 %.017.i.i.i, i32 1 - %.val22.i.i.i = load i64, ptr %7, align 8, !noalias !1100, !noundef !4 - %8 = add i64 %.val22.i.i.i, %.018.i.i.i - %9 = add nuw i64 %.017.i.i.i, 1 - %10 = icmp eq i64 %9, %5 - br i1 %10, label %"_ZN4core4iter8adapters7flatten26FlattenCompat$LT$I$C$U$GT$9iter_fold17h00d8ede55041c655E.exit.loopexit", label %.preheader + %.018.i.i.i = phi i64 [ %9, %.preheader ], [ 0, %1 ] + %.017.i.i.i = phi i64 [ %10, %.preheader ], [ 0, %1 ] + %7 = getelementptr inbounds { { i64, ptr }, i64 }, ptr %3, i64 %.017.i.i.i + %8 = getelementptr i8, ptr %7, i64 16 + %.val22.i.i.i = load i64, ptr %8, align 8, !noalias !1100, !noundef !4 + %9 = add i64 %.val22.i.i.i, %.018.i.i.i + %10 = add nuw i64 %.017.i.i.i, 1 + %11 = icmp eq i64 %10, %5 + br i1 %11, label %"_ZN4core4iter8adapters7flatten26FlattenCompat$LT$I$C$U$GT$9iter_fold17h00d8ede55041c655E.exit.loopexit", label %.preheader "_ZN4core4iter8adapters7flatten26FlattenCompat$LT$I$C$U$GT$9iter_fold17h00d8ede55041c655E.exit.loopexit": ; preds = %.preheader - %11 = icmp eq i64 %8, 0 + %11 = icmp eq i64 %9, 0 br label %"_ZN4core4iter8adapters7flatten26FlattenCompat$LT$I$C$U$GT$9iter_fold17h00d8ede55041c655E.exit" "_ZN4core4iter8adapters7flatten26FlattenCompat$LT$I$C$U$GT$9iter_fold17h00d8ede55041c655E.exit": ; preds = %"_ZN4core4iter8adapters7flatten26FlattenCompat$LT$I$C$U$GT$9iter_fold17h00d8ede55041c655E.exit.loopexit", %1 diff --git a/bench/cmake/optimized/uv-common.ll b/bench/cmake/optimized/uv-common.ll index 44f9cf028f5..e7e641742bc 100644 --- a/bench/cmake/optimized/uv-common.ll +++ b/bench/cmake/optimized/uv-common.ll @@ -2765,16 +2765,17 @@ define dso_local i64 @uv__count_bufs(ptr noundef readonly captures(none) %0, i32 .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] - %.08 = phi i64 [ 0, %.lr.ph.preheader ], [ %5, %.lr.ph ] - %3 = getelementptr inbounds nuw %struct.uv_buf_t, ptr %0, i64 %indvars.iv, i32 1 - %4 = load i64, ptr %3, align 8, !tbaa !58 - %5 = add i64 %4, %.08 + %.08 = phi i64 [ 0, %.lr.ph.preheader ], [ %6, %.lr.ph ] + %3 = getelementptr inbounds nuw %struct.uv_buf_t, ptr %0, i64 %indvars.iv + %4 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %5 = load i64, ptr %4, align 8, !tbaa !58 + %6 = add i64 %5, %.08 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !61 ._crit_edge: ; preds = %.lr.ph, %2 - %.0.lcssa = phi i64 [ 0, %2 ], [ %5, %.lr.ph ] + %.0.lcssa = phi i64 [ 0, %2 ], [ %6, %.lr.ph ] ret i64 %.0.lcssa } diff --git a/bench/cmake/optimized/zstd_decompress_block.ll b/bench/cmake/optimized/zstd_decompress_block.ll index 31b111ce85f..853d9019f88 100644 --- a/bench/cmake/optimized/zstd_decompress_block.ll +++ b/bench/cmake/optimized/zstd_decompress_block.ll @@ -616,8 +616,7 @@ define dso_local void @ZSTD_buildFSETable(ptr noundef captures(none) %0, ptr nou 21: ; preds = %17 %22 = add i32 %.0.i11.i, -1 %23 = zext i32 %.0.i11.i to i64 - %.idx132.i.i = shl nuw nsw i64 %23, 3 - %24 = getelementptr inbounds nuw i8, ptr %10, i64 %.idx132.i.i + %24 = getelementptr inbounds nuw %struct.ZSTD_seqSymbol, ptr %10, i64 %23 %25 = getelementptr inbounds nuw i8, ptr %24, i64 4 %26 = trunc nuw i64 %indvars.iv.i to i32 store i32 %26, ptr %25, align 4, !tbaa !38 @@ -695,8 +694,7 @@ define dso_local void @ZSTD_buildFSETable(ptr noundef captures(none) %0, ptr nou %51 = and i64 %.0124.i33.i, %36 %52 = load i8, ptr %50, align 1, !tbaa !8 %53 = zext i8 %52 to i32 - %.idx131.i.i = shl nuw nsw i64 %51, 3 - %54 = getelementptr inbounds nuw i8, ptr %10, i64 %.idx131.i.i + %54 = getelementptr inbounds nuw %struct.ZSTD_seqSymbol, ptr %10, i64 %51 %55 = getelementptr inbounds nuw i8, ptr %54, i64 4 store i32 %53, ptr %55, align 4, !tbaa !38 %56 = add nuw nsw i64 %.0124.i33.i, %37 @@ -704,8 +702,7 @@ define dso_local void @ZSTD_buildFSETable(ptr noundef captures(none) %0, ptr nou %58 = getelementptr inbounds nuw i8, ptr %50, i64 1 %59 = load i8, ptr %58, align 1, !tbaa !8 %60 = zext i8 %59 to i32 - %.idx131.i.i.c = shl nuw nsw i64 %57, 3 - %61 = getelementptr inbounds nuw i8, ptr %10, i64 %.idx131.i.i.c + %61 = getelementptr inbounds nuw %struct.ZSTD_seqSymbol, ptr %10, i64 %57 %62 = getelementptr inbounds nuw i8, ptr %61, i64 4 store i32 %60, ptr %62, align 4, !tbaa !38 %63 = add nuw nsw i64 %.0124.i33.i, %39 @@ -738,8 +735,7 @@ define dso_local void @ZSTD_buildFSETable(ptr noundef captures(none) %0, ptr nou %.0114.i14.i = phi i32 [ %84, %83 ], [ 0, %.lr.ph16.preheader.i ] %.1116.i13.i = phi i32 [ %.2.i.i, %83 ], [ %.0115.i20.i, %.lr.ph16.preheader.i ] %78 = zext nneg i32 %.1116.i13.i to i64 - %.idx.i.i = shl nuw nsw i64 %78, 3 - %79 = getelementptr inbounds nuw i8, ptr %10, i64 %.idx.i.i + %79 = getelementptr inbounds nuw %struct.ZSTD_seqSymbol, ptr %10, i64 %78 %80 = getelementptr inbounds nuw i8, ptr %79, i64 4 store i32 %77, ptr %80, align 4, !tbaa !38 br label %81 diff --git a/bench/coreutils-rs/optimized/2145dndjkhee8wnm.ll b/bench/coreutils-rs/optimized/2145dndjkhee8wnm.ll index 4483b84f638..1015aeb6684 100644 --- a/bench/coreutils-rs/optimized/2145dndjkhee8wnm.ll +++ b/bench/coreutils-rs/optimized/2145dndjkhee8wnm.ll @@ -565,11 +565,12 @@ define hidden { i64, ptr } @"_ZN4core3ops8function5impls80_$LT$impl$u20$core..op "_ZN4core4iter6traits8iterator8Iterator10min_by_key3key28_$u7b$$u7b$closure$u7d$$u7d$17h8c0afec8b61d0f5dE.llvm.4103517291658523209.exit": ; preds = %2 %8 = load ptr, ptr %0, align 8, !alias.scope !149, !noalias !150, !nonnull !9, !align !10, !noundef !9 - %9 = getelementptr inbounds { i64, ptr, i64, i64, float, i8, i8, [2 x i8] }, ptr %8, i64 %3, i32 2 - %10 = load i64, ptr %9, align 8, !noalias !152, !noundef !9 - %11 = insertvalue { i64, ptr } poison, i64 %10, 0 - %12 = insertvalue { i64, ptr } %11, ptr %1, 1 - ret { i64, ptr } %12 + %9 = getelementptr inbounds { i64, ptr, i64, i64, float, i8, i8, [2 x i8] }, ptr %8, i64 %3 + %10 = getelementptr inbounds nuw i8, ptr %9, i64 16 + %11 = load i64, ptr %10, align 8, !noalias !152, !noundef !9 + %12 = insertvalue { i64, ptr } poison, i64 %11, 0 + %13 = insertvalue { i64, ptr } %12, ptr %1, 1 + ret { i64, ptr } %13 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: read) uwtable @@ -784,11 +785,12 @@ define hidden { i64, ptr } @"_ZN4core4iter6traits8iterator8Iterator10min_by_key3 "_ZN6uu_fmt9linebreak15build_best_path28_$u7b$$u7b$closure$u7d$$u7d$17h16aa7e90a7292ba9E.llvm.4103517291658523209.exit": ; preds = %2 %8 = load ptr, ptr %0, align 8, !alias.scope !208, !noalias !213, !nonnull !9, !align !10, !noundef !9 - %9 = getelementptr inbounds { i64, ptr, i64, i64, float, i8, i8, [2 x i8] }, ptr %8, i64 %3, i32 2 - %10 = load i64, ptr %9, align 8, !noalias !211, !noundef !9 - %11 = insertvalue { i64, ptr } poison, i64 %10, 0 - %12 = insertvalue { i64, ptr } %11, ptr %1, 1 - ret { i64, ptr } %12 + %9 = getelementptr inbounds { i64, ptr, i64, i64, float, i8, i8, [2 x i8] }, ptr %8, i64 %3 + %10 = getelementptr inbounds nuw i8, ptr %9, i64 16 + %11 = load i64, ptr %10, align 8, !noalias !211, !noundef !9 + %12 = insertvalue { i64, ptr } poison, i64 %11, 0 + %13 = insertvalue { i64, ptr } %12, ptr %1, 1 + ret { i64, ptr } %13 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: read) uwtable @@ -1283,9 +1285,10 @@ define hidden noundef i64 @"_ZN6uu_fmt9linebreak15build_best_path28_$u7b$$u7b$cl 8: ; preds = %2 %9 = load ptr, ptr %0, align 8, !nonnull !9, !align !10, !noundef !9 - %10 = getelementptr inbounds { i64, ptr, i64, i64, float, i8, i8, [2 x i8] }, ptr %9, i64 %4, i32 2 - %11 = load i64, ptr %10, align 8, !noundef !9 - ret i64 %11 + %10 = getelementptr inbounds { i64, ptr, i64, i64, float, i8, i8, [2 x i8] }, ptr %9, i64 %4 + %11 = getelementptr inbounds nuw i8, ptr %10, i64 16 + %12 = load i64, ptr %11, align 8, !noundef !9 + ret i64 %12 12: ; preds = %2 tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %4, i64 noundef %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.4729153cc5e57b06a2546f9cbb0a1cbf.10.llvm.4103517291658523209) #25 diff --git a/bench/coreutils-rs/optimized/2wc2yx8ferzqfnf3.ll b/bench/coreutils-rs/optimized/2wc2yx8ferzqfnf3.ll index 06a153508f1..ccd055e2cf2 100644 --- a/bench/coreutils-rs/optimized/2wc2yx8ferzqfnf3.ll +++ b/bench/coreutils-rs/optimized/2wc2yx8ferzqfnf3.ll @@ -1301,11 +1301,10 @@ define hidden void @"_ZN13number_prefix21NumberPrefix$LT$F$GT$13format_number17h ret void ._crit_edge: ; preds = %.lr.ph - %16 = getelementptr i8, ptr %5, i64 %8 - %17 = getelementptr i8, ptr %16, i64 -1 - %18 = load i8, ptr %17, align 1, !range !183, !noundef !9 - %19 = getelementptr inbounds nuw i8, ptr %0, i64 1 - store i8 %18, ptr %19, align 1 + %16 = getelementptr i8, ptr %5, i64 %.017 + %17 = load i8, ptr %16, align 1, !range !183, !noundef !9 + %18 = getelementptr inbounds nuw i8, ptr %0, i64 1 + store i8 %17, ptr %18, align 1 br label %11 } diff --git a/bench/cpython/optimized/gcmodule.ll b/bench/cpython/optimized/gcmodule.ll index f843ca712b0..ed27e552fc2 100644 --- a/bench/cpython/optimized/gcmodule.ll +++ b/bench/cpython/optimized/gcmodule.ll @@ -1102,15 +1102,13 @@ define internal ptr @gc_get_count(ptr readnone captures(none) %0, ptr readnone c %10 = getelementptr inbounds nuw i8, ptr %6, i64 7632 %11 = load i32, ptr %10, align 8, !tbaa !26 %12 = sext i32 %11 to i64 - %.idx.i = mul nsw i64 %12, 24 - %13 = getelementptr i8, ptr %9, i64 %.idx.i - %14 = getelementptr i8, ptr %13, i64 20 + %13 = getelementptr %struct.gc_generation, ptr %9, i64 %12 + %13 = getelementptr inbounds nuw i8, ptr %13, i64 20 %15 = load i32, ptr %14, align 4, !tbaa !27 %16 = xor i32 %11, 1 %17 = sext i32 %16 to i64 - %.idx5.i = mul nsw i64 %17, 24 - %18 = getelementptr i8, ptr %9, i64 %.idx5.i - %19 = getelementptr i8, ptr %18, i64 20 + %18 = getelementptr %struct.gc_generation, ptr %9, i64 %17 + %18 = getelementptr inbounds nuw i8, ptr %18, i64 20 %20 = load i32, ptr %19, align 4, !tbaa !27 %21 = tail call ptr (ptr, ...) @Py_BuildValue(ptr noundef nonnull @.str.20, i32 noundef %8, i32 noundef %15, i32 noundef %20) #5 ret ptr %21 diff --git a/bench/cvc5/optimized/minisat.ll b/bench/cvc5/optimized/minisat.ll index 5e82549f764..3ef4524f94a 100644 --- a/bench/cvc5/optimized/minisat.ll +++ b/bench/cvc5/optimized/minisat.ll @@ -2294,7 +2294,7 @@ define hidden noundef zeroext i1 @_ZNK4cvc58internal4prop16MinisatSatSolver10isD br i1 %10, label %11, label %_ZNK4cvc58internal7Minisat6Solver10isDecisionEi.exit 11: ; preds = %2 - %12 = getelementptr inbounds %"struct.cvc5::internal::Minisat::Solver::VarData", ptr %6, i64 %7, i32 1 + %12 = getelementptr inbounds nuw i8, ptr %8, i64 4 %13 = load i32, ptr %12, align 4, !tbaa !397 %14 = icmp sgt i32 %13, 0 br label %_ZNK4cvc58internal7Minisat6Solver10isDecisionEi.exit @@ -2312,26 +2312,27 @@ define hidden noundef zeroext i1 @_ZNK4cvc58internal4prop16MinisatSatSolver7isFi %6 = load ptr, ptr %5, align 8, !tbaa !394 %sext = shl i64 %1, 32 %7 = ashr exact i64 %sext, 32 - %8 = getelementptr inbounds %"struct.cvc5::internal::Minisat::Solver::VarData", ptr %6, i64 %7, i32 3 - %9 = load i32, ptr %8, align 4, !tbaa !398 - %10 = icmp eq i32 %9, 0 - br i1 %10, label %11, label %19 - -11: ; preds = %2 - %12 = getelementptr inbounds %"struct.cvc5::internal::Minisat::Solver::VarData", ptr %6, i64 %7, i32 2 - %13 = load i32, ptr %12, align 4, !tbaa !399 - %14 = icmp eq i32 %13, 0 - br i1 %14, label %15, label %19 - -15: ; preds = %11 - %16 = getelementptr inbounds %"struct.cvc5::internal::Minisat::Solver::VarData", ptr %6, i64 %7, i32 1 - %17 = load i32, ptr %16, align 4, !tbaa !397 - %18 = icmp eq i32 %17, 0 - br label %19 - -19: ; preds = %15, %11, %2 - %20 = phi i1 [ false, %11 ], [ false, %2 ], [ %18, %15 ] - ret i1 %20 + %8 = getelementptr inbounds %"struct.cvc5::internal::Minisat::Solver::VarData", ptr %6, i64 %7 + %9 = getelementptr inbounds nuw i8, ptr %8, i64 12 + %10 = load i32, ptr %9, align 4, !tbaa !398 + %11 = icmp eq i32 %10, 0 + br i1 %11, label %12, label %20 + +12: ; preds = %2 + %13 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %14 = load i32, ptr %13, align 4, !tbaa !399 + %15 = icmp eq i32 %14, 0 + br i1 %15, label %16, label %20 + +16: ; preds = %12 + %17 = getelementptr inbounds nuw i8, ptr %8, i64 4 + %18 = load i32, ptr %17, align 4, !tbaa !397 + %19 = icmp eq i32 %18, 0 + br label %20 + +20:; preds = %16, %12, %2 + %21 = phi i1 [ false, %12 ], [ false, %2 ], [ %19, %16 ] + ret i1 %21 } ; Function Attrs: mustprogress uwtable diff --git a/bench/cvc5/optimized/node_manager.ll b/bench/cvc5/optimized/node_manager.ll index f5d94dce83a..e3063baf617 100644 --- a/bench/cvc5/optimized/node_manager.ll +++ b/bench/cvc5/optimized/node_manager.ll @@ -23483,22 +23483,23 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit109: ; preds = %27 br label %_ZN4cvc58internal8TypeNodeC2ERKS1_.exit132 438: ; preds = %5 - %439 = getelementptr inbounds nuw %"struct.std::pair.357", ptr %25, i64 %22, i32 1 - %440 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %441 = load ptr, ptr %440, align 8, !tbaa !128 - %442 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.not10.i.i.i.i = icmp eq ptr %441, null + %439 = getelementptr inbounds nuw %"struct.std::pair.357", ptr %25, i64 %22 + %440 = getelementptr inbounds nuw i8, ptr %439, i64 32 + %441 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %442 = load ptr, ptr %441, align 8, !tbaa !128 + %443 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %.not10.i.i.i.i = icmp eq ptr %442, null br i1 %.not10.i.i.i.i, label %.critedge.i, label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %438 - %443 = load ptr, ptr %439, align 8, !tbaa !132 + %443 = load ptr, ptr %440, align 8, !tbaa !132 %444 = load i64, ptr %443, align 8 %445 = and i64 %444, 1099511627775 br label %446 446: ; preds = %446, %.lr.ph.i.i.i.i - %.012.i.i.i.i = phi ptr [ %441, %.lr.ph.i.i.i.i ], [ %.1.i.i.i.i, %446 ] - %.0811.i.i.i.i = phi ptr [ %442, %.lr.ph.i.i.i.i ], [ %.19.i.i.i.i, %446 ] + %.012.i.i.i.i = phi ptr [ %442, %.lr.ph.i.i.i.i ], [ %.1.i.i.i.i, %447 ] + %.0811.i.i.i.i = phi ptr [ %443, %.lr.ph.i.i.i.i ], [ %.19.i.i.i.i, %447 ] %447 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 32 %448 = load ptr, ptr %447, align 8, !tbaa !132 %449 = load i64, ptr %448, align 8 @@ -23512,7 +23513,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit109: ; preds = %27 br i1 %.not.i.i.i.i133, label %_ZNSt3mapIN4cvc58internal8TypeNodeES_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_11NodeManager12RecTypeCacheESt4lessIS8_ESaISt4pairIKS8_SA_EEESB_IS2_ESaISD_IKS2_SH_EEE11lower_boundERSJ_.exit.i, label %446, !llvm.loop !472 _ZNSt3mapIN4cvc58internal8TypeNodeES_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_11NodeManager12RecTypeCacheESt4lessIS8_ESaISt4pairIKS8_SA_EEESB_IS2_ESaISD_IKS2_SH_EEE11lower_boundERSJ_.exit.i: ; preds = %446 - %452 = icmp eq ptr %.19.i.i.i.i, %442 + %452 = icmp eq ptr %.19.i.i.i.i, %443 br i1 %452, label %.critedge.i, label %453 453: ; preds = %_ZNSt3mapIN4cvc58internal8TypeNodeES_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_11NodeManager12RecTypeCacheESt4lessIS8_ESaISt4pairIKS8_SA_EEESB_IS2_ESaISD_IKS2_SH_EEE11lower_boundERSJ_.exit.i @@ -23524,9 +23525,9 @@ _ZNSt3mapIN4cvc58internal8TypeNodeES_INSt7__cxx1112basic_stringIcSt11char_traits br i1 %458, label %.critedge.i, label %_ZNSt3mapIN4cvc58internal8TypeNodeES_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_11NodeManager12RecTypeCacheESt4lessIS8_ESaISt4pairIKS8_SA_EEESB_IS2_ESaISD_IKS2_SH_EEEixERSJ_.exit .critedge.i: ; preds = %453, %_ZNSt3mapIN4cvc58internal8TypeNodeES_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_11NodeManager12RecTypeCacheESt4lessIS8_ESaISt4pairIKS8_SA_EEESB_IS2_ESaISD_IKS2_SH_EEE11lower_boundERSJ_.exit.i, %438 - %.08.lcssa.i.i.i11.i = phi ptr [ %.19.i.i.i.i, %453 ], [ %.19.i.i.i.i, %_ZNSt3mapIN4cvc58internal8TypeNodeES_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_11NodeManager12RecTypeCacheESt4lessIS8_ESaISt4pairIKS8_SA_EEESB_IS2_ESaISD_IKS2_SH_EEE11lower_boundERSJ_.exit.i ], [ %442, %438 ] + %.08.lcssa.i.i.i11.i = phi ptr [ %.19.i.i.i.i, %454 ], [ %.19.i.i.i.i, %_ZNSt3mapIN4cvc58internal8TypeNodeES_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_11NodeManager12RecTypeCacheESt4lessIS8_ESaISt4pairIKS8_SA_EEESB_IS2_ESaISD_IKS2_SH_EEE11lower_boundERSJ_.exit.i ], [ %443, %438 ] call void @llvm.lifetime.start.p0(ptr nonnull %6) - store ptr %439, ptr %6, align 8, !tbaa !294 + store ptr %440, ptr %6, align 8, !tbaa !294 call void @llvm.lifetime.start.p0(ptr nonnull %7) %459 = call ptr @_ZNSt8_Rb_treeIN4cvc58internal8TypeNodeESt4pairIKS2_St3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_11NodeManager12RecTypeCacheESt4lessISB_ESaIS3_IKSB_SD_EEEESt10_Select1stISK_ESE_IS2_ESaISK_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS4_EESU_IJEEEEESt17_Rb_tree_iteratorISK_ESt23_Rb_tree_const_iteratorISK_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr %.08.lcssa.i.i.i11.i, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt19piecewise_construct, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 1 dereferenceable(1) %7) call void @llvm.lifetime.end.p0(ptr nonnull %7) @@ -23535,8 +23536,8 @@ _ZNSt3mapIN4cvc58internal8TypeNodeES_INSt7__cxx1112basic_stringIcSt11char_traits br label %_ZNSt3mapIN4cvc58internal8TypeNodeES_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_11NodeManager12RecTypeCacheESt4lessIS8_ESaISt4pairIKS8_SA_EEESB_IS2_ESaISD_IKS2_SH_EEEixERSJ_.exit _ZNSt3mapIN4cvc58internal8TypeNodeES_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_11NodeManager12RecTypeCacheESt4lessIS8_ESaISt4pairIKS8_SA_EEESB_IS2_ESaISD_IKS2_SH_EEEixERSJ_.exit: ; preds = %453, %.critedge.i - %460 = phi ptr [ %.pre, %.critedge.i ], [ %25, %453 ] - %.sroa.06.0.i = phi ptr [ %459, %.critedge.i ], [ %.19.i.i.i.i, %453 ] + %460 = phi ptr [ %.pre, %.critedge.i ], [ %25, %454 ] + %.sroa.06.0.i = phi ptr [ %459, %.critedge.i ], [ %.19.i.i.i.i, %454 ] %461 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i, i64 40 %462 = getelementptr inbounds nuw %"struct.std::pair.357", ptr %460, i64 %22 %463 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4cvc58internal11NodeManager12RecTypeCacheESt4lessIS5_ESaISt4pairIKS5_S9_EEEixERSD_(ptr noundef nonnull align 8 dereferenceable(48) %461, ptr noundef nonnull align 8 dereferenceable(32) %462) diff --git a/bench/darktable/optimized/AbstractLJpegDecoder.ll b/bench/darktable/optimized/AbstractLJpegDecoder.ll index 8f301049954..f918bb9a014 100644 --- a/bench/darktable/optimized/AbstractLJpegDecoder.ll +++ b/bench/darktable/optimized/AbstractLJpegDecoder.ll @@ -1896,8 +1896,7 @@ _ZN8rawspeed10ByteStream7getByteEv.exit31: ; preds = %_ZN8rawspeed10ByteS 60: ; preds = %53 %61 = sext i32 %spec.select to i64 - %.idx = shl nuw nsw i64 %61, 4 - %62 = getelementptr inbounds nuw i8, ptr %3, i64 %.idx + %62 = getelementptr inbounds nuw %"struct.rawspeed::JpegComponentInfo", ptr %3, i64 %61 %63 = getelementptr inbounds nuw i8, ptr %62, i64 4 store i32 %47, ptr %63, align 4, !tbaa !218 %64 = add nuw nsw i32 %.045, 1 diff --git a/bench/delta-rs/optimized/11w0at10aiwuq3yr.ll b/bench/delta-rs/optimized/11w0at10aiwuq3yr.ll index 93343d0dd5d..db03fe7cb9b 100644 --- a/bench/delta-rs/optimized/11w0at10aiwuq3yr.ll +++ b/bench/delta-rs/optimized/11w0at10aiwuq3yr.ll @@ -99012,17 +99012,18 @@ define hidden noundef i64 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u2 br label %11 11: ; preds = %11, %6 - %.017 = phi i64 [ %2, %6 ], [ %13, %11 ] - %.016 = phi i64 [ 0, %6 ], [ %14, %11 ] - %12 = getelementptr { { { i64, ptr, {} }, i64 }, ptr, i64 }, ptr %0, i64 %.016, i32 2 - %.val = load i64, ptr %12, align 8, !noundef !22 - %13 = add i64 %.val, %.017 - %14 = add nuw i64 %.016, 1 - %15 = icmp eq i64 %14, %10 - br i1 %15, label %.loopexit, label %11 + %.017 = phi i64 [ %2, %6 ], [ %14, %11 ] + %.016 = phi i64 [ 0, %6 ], [ %15, %11 ] + %12 = getelementptr inbounds { { { i64, ptr, {} }, i64 }, ptr, i64 }, ptr %0, i64 %.016 + %13 = getelementptr i8, ptr %12, i64 32 + %.val = load i64, ptr %13, align 8, !noundef !22 + %14 = add i64 %.val, %.017 + %15 = add nuw i64 %.016, 1 + %16 = icmp eq i64 %15, %10 + br i1 %16, label %.loopexit, label %11 .loopexit: ; preds = %11, %3 - %.0 = phi i64 [ %2, %3 ], [ %13, %11 ] + %.0 = phi i64 [ %2, %3 ], [ %14, %11 ] ret i64 %.0 } @@ -106292,17 +106293,18 @@ define noundef i64 @_ZN14deltalake_core6kernel8snapshot13EagerSnapshot11files_co br i1 %6, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h41b740fb9f6b4fddE.llvm.5991570310944373761.exit", label %.preheader .preheader: ; preds = %1, %.preheader - %.017.i = phi i64 [ %8, %.preheader ], [ 0, %1 ] - %.016.i = phi i64 [ %9, %.preheader ], [ 0, %1 ] - %7 = getelementptr { { { i64, ptr, {} }, i64 }, ptr, i64 }, ptr %3, i64 %.016.i, i32 2 - %.val.i = load i64, ptr %7, align 8, !noundef !22 - %8 = add i64 %.val.i, %.017.i - %9 = add nuw i64 %.016.i, 1 - %10 = icmp eq i64 %9, %5 - br i1 %10, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h41b740fb9f6b4fddE.llvm.5991570310944373761.exit", label %.preheader + %.017.i = phi i64 [ %9, %.preheader ], [ 0, %1 ] + %.016.i = phi i64 [ %10, %.preheader ], [ 0, %1 ] + %7 = getelementptr inbounds { { { i64, ptr, {} }, i64 }, ptr, i64 }, ptr %3, i64 %.016.i + %8 = getelementptr i8, ptr %7, i64 32 + %.val.i = load i64, ptr %8, align 8, !noundef !22 + %9 = add i64 %.val.i, %.017.i + %10 = add nuw i64 %.016.i, 1 + %11 = icmp eq i64 %10, %5 + br i1 %11, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h41b740fb9f6b4fddE.llvm.5991570310944373761.exit", label %.preheader "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h41b740fb9f6b4fddE.llvm.5991570310944373761.exit": ; preds = %.preheader, %1 - %.0.i = phi i64 [ 0, %1 ], [ %8, %.preheader ] + %.0.i = phi i64 [ 0, %1 ], [ %9, %.preheader ] ret i64 %.0.i } @@ -119345,17 +119347,18 @@ define noundef i64 @"_ZN14deltalake_core10operations11transaction5state136_$LT$i br i1 %6, label %_ZN14deltalake_core6kernel8snapshot13EagerSnapshot11files_count17heae798999003a4d0E.exit, label %.preheader.i .preheader.i: ; preds = %1, %.preheader.i - %.017.i.i = phi i64 [ %8, %.preheader.i ], [ 0, %1 ] - %.016.i.i = phi i64 [ %9, %.preheader.i ], [ 0, %1 ] - %7 = getelementptr { { { i64, ptr, {} }, i64 }, ptr, i64 }, ptr %3, i64 %.016.i.i, i32 2 - %.val.i.i = load i64, ptr %7, align 8, !noalias !30205, !noundef !22 - %8 = add i64 %.val.i.i, %.017.i.i - %9 = add nuw i64 %.016.i.i, 1 - %10 = icmp eq i64 %9, %5 - br i1 %10, label %_ZN14deltalake_core6kernel8snapshot13EagerSnapshot11files_count17heae798999003a4d0E.exit, label %.preheader.i + %.017.i.i = phi i64 [ %9, %.preheader.i ], [ 0, %1 ] + %.016.i.i = phi i64 [ %10, %.preheader.i ], [ 0, %1 ] + %7 = getelementptr inbounds { { { i64, ptr, {} }, i64 }, ptr, i64 }, ptr %3, i64 %.016.i.i + %8 = getelementptr i8, ptr %7, i64 32 + %.val.i.i = load i64, ptr %8, align 8, !noalias !30205, !noundef !22 + %9 = add i64 %.val.i.i, %.017.i.i + %10 = add nuw i64 %.016.i.i, 1 + %11 = icmp eq i64 %10, %5 + br i1 %11, label %_ZN14deltalake_core6kernel8snapshot13EagerSnapshot11files_count17heae798999003a4d0E.exit, label %.preheader.i _ZN14deltalake_core6kernel8snapshot13EagerSnapshot11files_count17heae798999003a4d0E.exit: ; preds = %.preheader.i, %1 - %.0.i.i = phi i64 [ 0, %1 ], [ %8, %.preheader.i ] + %.0.i.i = phi i64 [ 0, %1 ], [ %9, %.preheader.i ] ret i64 %.0.i.i } diff --git a/bench/delta-rs/optimized/3e84m8xk6w9g4bb2.ll b/bench/delta-rs/optimized/3e84m8xk6w9g4bb2.ll index 24b2457145f..665a8b9321e 100644 --- a/bench/delta-rs/optimized/3e84m8xk6w9g4bb2.ll +++ b/bench/delta-rs/optimized/3e84m8xk6w9g4bb2.ll @@ -14426,9 +14426,10 @@ define hidden void @"_ZN11bytes_utils9segmented21SegmentedBuf$LT$B$GT$11clean_em %.not.i.i = icmp ult i64 %12, %5 %14 = select i1 %.not.i.i, i64 0, i64 %5 %.0.i.i = sub nuw i64 %12, %14 - %15 = getelementptr inbounds { ptr, ptr, i64, { ptr } }, ptr %7, i64 %.0.i.i, i32 2 - %16 = load i64, ptr %15, align 8, !noundef !4 - %.not6 = icmp eq i64 %16, 0 + %15 = getelementptr inbounds { ptr, ptr, i64, { ptr } }, ptr %7, i64 %.0.i.i + %16 = getelementptr inbounds nuw i8, ptr %15, i64 16 + %17 = load i64, ptr %16, align 8, !noundef !4 + %.not6 = icmp eq i64 %17, 0 br i1 %.not6, label %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9pop_front17ha5f647017460ca81E.llvm.6856721295753646745.exit", label %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$3get17h40a9f6a21c935d99E.llvm.6856721295753646745.exit.thread" "_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$3get17h40a9f6a21c935d99E.llvm.6856721295753646745.exit.thread": ; preds = %11, %"_ZN4core3ptr68drop_in_place$LT$core..option..Option$LT$bytes..bytes..Bytes$GT$$GT$17h9c8d3ba0997b4d45E.llvm.6856721295753646745.exit", %1 @@ -14458,7 +14459,7 @@ define hidden void @"_ZN11bytes_utils9segmented21SegmentedBuf$LT$B$GT$11clean_em %25 = load ptr, ptr %24, align 8, !noalias !1776, !nonnull !4, !noundef !4 %26 = load ptr, ptr %9, align 8, !alias.scope !1776, !noundef !4 %27 = load i64, ptr %10, align 8, !alias.scope !1776, !noundef !4 - call void %25(ptr noalias noundef nonnull align 8 dereferenceable(8) %8, ptr noundef %26, i64 noundef %27) + call void %26(ptr noalias noundef nonnull align 8 dereferenceable(8) %8, ptr noundef %26, i64 noundef %27) br label %"_ZN4core3ptr68drop_in_place$LT$core..option..Option$LT$bytes..bytes..Bytes$GT$$GT$17h9c8d3ba0997b4d45E.llvm.6856721295753646745.exit" "_ZN4core3ptr68drop_in_place$LT$core..option..Option$LT$bytes..bytes..Bytes$GT$$GT$17h9c8d3ba0997b4d45E.llvm.6856721295753646745.exit": ; preds = %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9pop_front17ha5f647017460ca81E.llvm.6856721295753646745.exit", %23 @@ -14504,9 +14505,10 @@ define hidden void @"_ZN11bytes_utils9segmented21SegmentedBuf$LT$B$GT$4push17h4f %.not.i.i.i = icmp ult i64 %19, %12 %21 = select i1 %.not.i.i.i, i64 0, i64 %12 %.0.i.i.i = sub nuw i64 %19, %21 - %22 = getelementptr inbounds { ptr, ptr, i64, { ptr } }, ptr %14, i64 %.0.i.i.i, i32 2 - %23 = load i64, ptr %22, align 8, !noalias !1777, !noundef !4 - %.not6.i = icmp eq i64 %23, 0 + %22 = getelementptr inbounds { ptr, ptr, i64, { ptr } }, ptr %14, i64 %.0.i.i.i + %23 = getelementptr inbounds nuw i8, ptr %22, i64 16 + %24 = load i64, ptr %23, align 8, !noalias !1777, !noundef !4 + %.not6.i = icmp eq i64 %24, 0 br i1 %.not6.i, label %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9pop_front17ha5f647017460ca81E.llvm.6856721295753646745.exit.i", label %"_ZN11bytes_utils9segmented21SegmentedBuf$LT$B$GT$11clean_empty17h10847d1ad59ed8cfE.llvm.6856721295753646745.exit" "_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9pop_front17ha5f647017460ca81E.llvm.6856721295753646745.exit.i": ; preds = %18 @@ -14533,7 +14535,7 @@ define hidden void @"_ZN11bytes_utils9segmented21SegmentedBuf$LT$B$GT$4push17h4f %32 = load ptr, ptr %31, align 8, !noalias !1801, !nonnull !4, !noundef !4 %33 = load ptr, ptr %16, align 8, !alias.scope !1802, !noalias !1777, !noundef !4 %34 = load i64, ptr %17, align 8, !alias.scope !1802, !noalias !1777, !noundef !4 - call void %32(ptr noalias noundef nonnull align 8 dereferenceable(8) %15, ptr noundef %33, i64 noundef %34) + call void %33(ptr noalias noundef nonnull align 8 dereferenceable(8) %15, ptr noundef %33, i64 noundef %34) br label %"_ZN4core3ptr68drop_in_place$LT$core..option..Option$LT$bytes..bytes..Bytes$GT$$GT$17h9c8d3ba0997b4d45E.llvm.6856721295753646745.exit.i" "_ZN4core3ptr68drop_in_place$LT$core..option..Option$LT$bytes..bytes..Bytes$GT$$GT$17h9c8d3ba0997b4d45E.llvm.6856721295753646745.exit.i": ; preds = %30, %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9pop_front17ha5f647017460ca81E.llvm.6856721295753646745.exit.i" diff --git a/bench/diesel-rs/optimized/3btvyztn2iiarpvf.ll b/bench/diesel-rs/optimized/3btvyztn2iiarpvf.ll index 410c3b04db7..e16742dfa8e 100644 --- a/bench/diesel-rs/optimized/3btvyztn2iiarpvf.ll +++ b/bench/diesel-rs/optimized/3btvyztn2iiarpvf.ll @@ -5218,10 +5218,11 @@ define noundef zeroext i1 @"_ZN129_$LT$diesel..mysql..connection..stmt..iterator "_ZN101_$LT$diesel..mysql..connection..bind..OutputBinds$u20$as$u20$core..ops..index..Index$LT$usize$GT$$GT$5index17h667f4de3bf8bd3b5E.exit": ; preds = %1 %9 = getelementptr inbounds nuw i8, ptr %2, i64 16 %10 = load ptr, ptr %9, align 8, !alias.scope !816, !noalias !817, !nonnull !10, !noundef !10 - %11 = getelementptr inbounds { ptr, i64, i64, i32, i32, { i8, i8 }, i8, [5 x i8] }, ptr %10, i64 %4, i32 6 - %12 = load i8, ptr %11, align 2, !alias.scope !823, !noundef !10 - %13 = icmp ne i8 %12, 0 - ret i1 %13 + %11 = getelementptr inbounds { ptr, i64, i64, i32, i32, { i8, i8 }, i8, [5 x i8] }, ptr %10, i64 %4 + %12 = getelementptr inbounds nuw i8, ptr %11, i64 34 + %13 = load i8, ptr %12, align 2, !alias.scope !823, !noundef !10 + %14 = icmp ne i8 %13, 0 + ret i1 %14 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/eastl/optimized/BenchmarkSort.ll b/bench/eastl/optimized/BenchmarkSort.ll index 0d209f06f13..ea3802ead3d 100644 --- a/bench/eastl/optimized/BenchmarkSort.ll +++ b/bench/eastl/optimized/BenchmarkSort.ll @@ -7979,7 +7979,8 @@ if.end29.i: ; preds = %if.then.i, %if.end7 %length34.i = getelementptr i8, ptr %29, i64 -24 %31 = load i64, ptr %length34.i, align 8 %sub35.i = add nsw i64 %stack_curr.addr.063.i34, -1 - %length37.i = getelementptr inbounds nuw %"struct.eastl::Internal::tim_sort_run", ptr %run_stack, i64 %sub35.i, i32 1 + %length37.i = getelementptr inbounds nuw %"struct.eastl::Internal::tim_sort_run", ptr %run_stack, i64 %sub35.i + %length37.i = getelementptr inbounds nuw i8, ptr %arrayidx36.i, i64 8 %32 = load i64, ptr %length37.i, align 8 %add38.i = add nsw i64 %32, %31 %cmp39.not.i = icmp sgt i64 %30, %add38.i @@ -7994,8 +7995,7 @@ if.then42.i: ; preds = %if.then40.i %arrayidx47.i = getelementptr i8, ptr %29, i64 -32 %add52.i = add nsw i64 %31, %30 store i64 %add52.i, ptr %length31.i, align 8 - %arrayidx53.i = getelementptr inbounds nuw %"struct.eastl::Internal::tim_sort_run", ptr %run_stack, i64 %sub35.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %arrayidx47.i, ptr noundef nonnull align 16 dereferenceable(16) %arrayidx53.i, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %arrayidx47.i, ptr noundef nonnull align 16 dereferenceable(16) %length37.i, i64 16, i1 false) br label %if.end79.i if.else56.i: ; preds = %if.then40.i @@ -8544,7 +8544,8 @@ if.end29.i: ; preds = %if.then.i, %if.end7 %length34.i = getelementptr i8, ptr %11, i64 -24 %13 = load i64, ptr %length34.i, align 8 %sub35.i = add nsw i64 %stack_curr.addr.063.i32, -1 - %length37.i = getelementptr inbounds nuw %"struct.eastl::Internal::tim_sort_run", ptr %run_stack, i64 %sub35.i, i32 1 + %length37.i = getelementptr inbounds nuw %"struct.eastl::Internal::tim_sort_run", ptr %run_stack, i64 %sub35.i + %length37.i = getelementptr inbounds nuw i8, ptr %arrayidx36.i, i64 8 %14 = load i64, ptr %length37.i, align 8 %add38.i = add nsw i64 %14, %13 %cmp39.not.i = icmp sgt i64 %12, %add38.i @@ -8559,8 +8560,7 @@ if.then42.i: ; preds = %if.then40.i %arrayidx47.i = getelementptr i8, ptr %11, i64 -32 %add52.i = add nsw i64 %13, %12 store i64 %add52.i, ptr %length31.i, align 8 - %arrayidx53.i = getelementptr inbounds nuw %"struct.eastl::Internal::tim_sort_run", ptr %run_stack, i64 %sub35.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %arrayidx47.i, ptr noundef nonnull align 16 dereferenceable(16) %arrayidx53.i, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %arrayidx47.i, ptr noundef nonnull align 16 dereferenceable(16) %length37.i, i64 16, i1 false) br label %if.end79.i if.else56.i: ; preds = %if.then40.i @@ -25006,7 +25006,8 @@ if.end12: ; preds = %_ZN5eastl8Internal3 store i64 %15, ptr %arrayidx, align 8 %17 = load i64, ptr %len, align 8 %18 = load i64, ptr %stack_curr, align 8 - %length = getelementptr inbounds %"struct.eastl::Internal::tim_sort_run", ptr %run_stack, i64 %18, i32 1 + %length = getelementptr inbounds %"struct.eastl::Internal::tim_sort_run", ptr %run_stack, i64 %18 + %length = getelementptr inbounds nuw i8, ptr %arrayidx13, i64 8 store i64 %17, ptr %length, align 8 %19 = load i64, ptr %stack_curr, align 8 %inc = add nsw i64 %19, 1 @@ -25071,7 +25072,8 @@ if.end29: ; preds = %while.body.preheade %length34 = getelementptr i8, ptr %2, i64 -24 %4 = load i64, ptr %length34, align 8 %sub35 = add nsw i64 %stack_curr.addr.06369, -1 - %length37 = getelementptr inbounds nuw %"struct.eastl::Internal::tim_sort_run", ptr %run_stack, i64 %sub35, i32 1 + %length37 = getelementptr inbounds nuw %"struct.eastl::Internal::tim_sort_run", ptr %run_stack, i64 %sub35 + %length37 = getelementptr inbounds nuw i8, ptr %arrayidx36, i64 8 %5 = load i64, ptr %length37, align 8 %add38 = add nsw i64 %5, %4 %cmp39.not = icmp sgt i64 %3, %add38 @@ -25088,8 +25090,7 @@ if.then42: ; preds = %if.then40 %7 = load i64, ptr %length31, align 8 %add52 = add nsw i64 %7, %6 store i64 %add52, ptr %length31, align 8 - %arrayidx53 = getelementptr inbounds nuw %"struct.eastl::Internal::tim_sort_run", ptr %run_stack, i64 %sub35 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %arrayidx47, ptr noundef nonnull align 8 dereferenceable(16) %arrayidx53, i64 16, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %arrayidx47, ptr noundef nonnull align 8 dereferenceable(16) %length37, i64 16, i1 false) br label %if.end79 if.else56: ; preds = %if.then40 @@ -28260,7 +28261,8 @@ if.end12: ; preds = %_ZN5eastl8Internal3 store i64 %46, ptr %arrayidx, align 8 %48 = load i64, ptr %len, align 8 %49 = load i64, ptr %stack_curr, align 8 - %length = getelementptr inbounds %"struct.eastl::Internal::tim_sort_run", ptr %run_stack, i64 %49, i32 1 + %length = getelementptr inbounds %"struct.eastl::Internal::tim_sort_run", ptr %run_stack, i64 %49 + %length = getelementptr inbounds nuw i8, ptr %arrayidx13, i64 8 store i64 %48, ptr %length, align 8 %50 = load i64, ptr %stack_curr, align 8 %inc = add nsw i64 %50, 1 @@ -31689,7 +31691,8 @@ if.end12: ; preds = %_ZN5eastl8Internal3 store i64 %5, ptr %arrayidx, align 8 %7 = load i64, ptr %len, align 8 %8 = load i64, ptr %stack_curr, align 8 - %length = getelementptr inbounds %"struct.eastl::Internal::tim_sort_run", ptr %run_stack, i64 %8, i32 1 + %length = getelementptr inbounds %"struct.eastl::Internal::tim_sort_run", ptr %run_stack, i64 %8 + %length = getelementptr inbounds nuw i8, ptr %arrayidx13, i64 8 store i64 %7, ptr %length, align 8 %9 = load i64, ptr %stack_curr, align 8 %inc = add nsw i64 %9, 1 diff --git a/bench/eastl/optimized/TestIntrusiveHash.ll b/bench/eastl/optimized/TestIntrusiveHash.ll index 91ecbd186eb..41a96342a19 100644 --- a/bench/eastl/optimized/TestIntrusiveHash.ll +++ b/bench/eastl/optimized/TestIntrusiveHash.ll @@ -142,7 +142,8 @@ arrayctor.loop: ; preds = %arrayctor.loop, %en for.body: ; preds = %arrayctor.loop, %for.body %i.03046 = phi i64 [ %inc, %for.body ], [ 0, %arrayctor.loop ] %conv = trunc nuw nsw i64 %i.03046 to i32 - %mX = getelementptr inbounds nuw %"struct.(anonymous namespace)::SetWidget", ptr %swArray, i64 %i.03046, i32 1 + %mX = getelementptr inbounds nuw %"struct.(anonymous namespace)::SetWidget", ptr %swArray, i64 %i.03046 + %mX = getelementptr inbounds nuw i8, ptr %arrayidx, i64 8 store i32 %conv, ptr %mX, align 8 %inc = add nuw nsw i64 %i.03046, 1 %exitcond.not = icmp eq i64 %inc, 100 diff --git a/bench/egg-rs/optimized/1m5ocab1mrcx5l24.ll b/bench/egg-rs/optimized/1m5ocab1mrcx5l24.ll index c4ffc597b93..43f0a7defd8 100644 --- a/bench/egg-rs/optimized/1m5ocab1mrcx5l24.ll +++ b/bench/egg-rs/optimized/1m5ocab1mrcx5l24.ll @@ -118,8 +118,9 @@ define hidden noundef nonnull align 8 dereferenceable(40) ptr @"_ZN8indexmap3map "_ZN84_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17hc19996dc9490530eE.llvm.16079354848027093366.exit": ; preds = %1 %11 = getelementptr inbounds nuw i8, ptr %6, i64 8 %12 = load ptr, ptr %11, align 8, !alias.scope !14, !noalias !17, !nonnull !4, !noundef !4 - %13 = getelementptr inbounds { i64, { i64, i64, i64, i64, i64 }, i32, [1 x i32] }, ptr %12, i64 %5, i32 1 - ret ptr %13 + %13 = getelementptr inbounds { i64, { i64, i64, i64, i64, i64 }, i32, [1 x i32] }, ptr %12, i64 %5 + %14 = getelementptr inbounds nuw i8, ptr %13, i64 8 + ret ptr %14 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/elfshaker-rs/optimized/3a1f053714hdbf2r1u9m19s6u.ll b/bench/elfshaker-rs/optimized/3a1f053714hdbf2r1u9m19s6u.ll index 095df59d8ac..9183b47e980 100644 --- a/bench/elfshaker-rs/optimized/3a1f053714hdbf2r1u9m19s6u.ll +++ b/bench/elfshaker-rs/optimized/3a1f053714hdbf2r1u9m19s6u.ll @@ -1896,11 +1896,11 @@ define void @_ZN9elfshaker4repo10repository10Repository11loose_packs17hfcd2a2c08 31: ; preds = %29 invoke void @_ZN4core5slice4sort8unstable7ipnsort17h7b712eae05929f1eE(ptr noalias noundef nonnull align 8 %25, i64 noundef %27, ptr noalias noundef nonnull align 1 %3) - to label %.split28.i.i.preheader unwind label %33, !noalias !108 + to label %.split27.i.i.preheader unwind label %33, !noalias !108 32: ; preds = %29 invoke void @_ZN4core5slice4sort6shared9smallsort25insertion_sort_shift_left17hc6f160e39bcef990E(ptr noalias noundef nonnull align 8 %25, i64 noundef %27, i64 noundef 1, ptr noalias noundef nonnull align 1 %3) - to label %.split28.i.i.preheader unwind label %33, !noalias !108 + to label %.split27.i.i.preheader unwind label %33, !noalias !108 33: ; preds = %.invoke.i.i, %32, %31 %34 = landingpad { ptr, i32 } @@ -1908,14 +1908,14 @@ define void @_ZN9elfshaker4repo10repository10Repository11loose_packs17hfcd2a2c08 invoke void @"_ZN4core3ptr121drop_in_place$LT$alloc..vec..Vec$LT$$LP$$LP$std..time..SystemTime$C$elfshaker..repo..pack..PackId$RP$$C$usize$RP$$GT$$GT$17h96b0126f0a1017d3E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #23 to label %.body.i unwind label %51, !noalias !108 -.split28.i.i: ; preds = %.split28.i.i.preheader, %44 - %.sroa.0.130.i.i = phi i64 [ %.sroa.0.1.i.i, %44 ], [ 1, %.split28.i.i.preheader ] - %.sroa.0.029.i.i = phi i64 [ %.sroa.0.130.i.i, %44 ], [ 0, %.split28.i.i.preheader ] +.split28.i.i: ; preds = %.split28.i.i.preheader, %47 + %.sroa.0.130.i.i = phi i64 [ %.sroa.0.1.i.i, %47 ], [ 1, %.split27.i.i.preheader ] + %.sroa.0.029.i.i = phi i64 [ %.sroa.0.130.i.i, %47 ], [ 0, %.split27.i.i.preheader ] %35 = load i64, ptr %26, align 8, !noalias !94, !noundef !5 %36 = icmp ult i64 %.sroa.0.029.i.i, %35 br i1 %36, label %.split.i.i, label %.invoke.i.i -37: ; preds = %44 +37: ; preds = %47 invoke void @"_ZN4core3ptr121drop_in_place$LT$alloc..vec..Vec$LT$$LP$$LP$std..time..SystemTime$C$elfshaker..repo..pack..PackId$RP$$C$usize$RP$$GT$$GT$17h96b0126f0a1017d3E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) to label %.noexc2.i unwind label %53, !noalias !108 @@ -1925,40 +1925,39 @@ define void @_ZN9elfshaker4repo10repository10Repository11loose_packs17hfcd2a2c08 .split.i.i: ; preds = %.split28.i.i %38 = load ptr, ptr %24, align 8, !noalias !94, !nonnull !5, !noundef !5 - %39 = getelementptr inbounds nuw { { { { { i64, i32, [1 x i32] } } }, { { { { { i64, ptr, {} }, {} }, i64 } } } }, i64 }, ptr %38, i64 %.sroa.0.029.i.i, i32 1 - %.sroa.06.026.i.i = load i64, ptr %39, align 8, !noalias !108, !noundef !5 - %40 = icmp ult i64 %.sroa.06.026.i.i, %.sroa.0.029.i.i - br i1 %40, label %.lr.ph.i.i, label %._crit_edge.i.i - -.lr.ph.i.i: ; preds = %.split.i.i, %.lr.ph.i.i - %.sroa.06.027.i.i = phi i64 [ %.sroa.06.0.i.i, %.lr.ph.i.i ], [ %.sroa.06.026.i.i, %.split.i.i ] - %41 = getelementptr inbounds nuw { { { { { i64, i32, [1 x i32] } } }, { { { { { i64, ptr, {} }, {} }, i64 } } } }, i64 }, ptr %38, i64 %.sroa.06.027.i.i, i32 1 - %.sroa.06.0.i.i = load i64, ptr %41, align 8, !noalias !108, !noundef !5 - %42 = icmp ult i64 %.sroa.06.0.i.i, %.sroa.0.029.i.i - br i1 %42, label %.lr.ph.i.i, label %._crit_edge.i.i - -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %.split.i.i - %.sroa.06.0.lcssa.i.i = phi i64 [ %.sroa.06.026.i.i, %.split.i.i ], [ %.sroa.06.0.i.i, %.lr.ph.i.i ] - store i64 %.sroa.06.0.lcssa.i.i, ptr %39, align 8, !noalias !108 - %43 = icmp ult i64 %.sroa.06.0.lcssa.i.i, %20 - br i1 %43, label %44, label %.invoke.i.i - -44: ; preds = %._crit_edge.i.i - %45 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } } }, ptr %18, i64 %.sroa.0.029.i.i - %46 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } } }, ptr %18, i64 %.sroa.06.0.lcssa.i.i + br label %39 + +39:; preds = %39, %.split.i.i + %40 = phi i64 [ %.sroa.0.028.i.i, %.split.i.i ], [ %.sroa.06.0.i.i, %39 ] + %41 = getelementptr inbounds nuw { { { { { i64, i32, [1 x i32] } } }, { { { { { i64, ptr, {} }, {} }, i64 } } } }, i64 }, ptr %38, i64 %40 + %.sroa.06.0.in.i.i = getelementptr inbounds nuw i8, ptr %41, i64 40 + %.sroa.06.0.i.i = load i64, ptr %.sroa.06.0.in.i.i, align 8, !noalias !108, !noundef !5 + %42 = icmp ult i64 %.sroa.06.0.i.i, %.sroa.0.028.i.i + br i1 %42, label %39, label %43 + +43: ; preds = %39 + %44 = getelementptr inbounds nuw { { { { { i64, i32, [1 x i32] } } }, { { { { { i64, ptr, {} }, {} }, i64 } } } }, i64 }, ptr %38, i64 %.sroa.0.028.i.i + %45 = getelementptr inbounds nuw i8, ptr %44, i64 40 + store i64 %.sroa.06.0.i.i, ptr %45, align 8, !noalias !108 + %46 = icmp ult i64 %.sroa.06.0.i.i, %20 + br i1 %46, label %47, label %.invoke.i.i + +47: ; preds = %43 + %48 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } } }, ptr %18, i64 %.sroa.0.028.i.i + %45 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } } }, ptr %18, i64 %.sroa.06.0.i.i call void @llvm.lifetime.start.p0(ptr nonnull %4) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %45, i64 24, i1 false), !noalias !109 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %45, ptr noundef nonnull align 8 dereferenceable(24) %46, i64 24, i1 false), !alias.scope !91, !noalias !109 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false), !noalias !109 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %48, i64 24, i1 false), !noalias !109 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr noundef nonnull align 8 dereferenceable(24) %49, i64 24, i1 false), !alias.scope !91, !noalias !109 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false), !noalias !109 call void @llvm.lifetime.end.p0(ptr nonnull %4) %47 = icmp ult i64 %.sroa.0.130.i.i, %20 %48 = zext i1 %47 to i64 %.sroa.0.1.i.i = add nuw i64 %.sroa.0.130.i.i, %48 br i1 %47, label %.split28.i.i, label %37 -.invoke.i.i: ; preds = %._crit_edge.i.i, %.split28.i.i - %49 = phi i64 [ %.sroa.0.029.i.i, %.split28.i.i ], [ %.sroa.06.0.lcssa.i.i, %._crit_edge.i.i ] - %50 = phi i64 [ %35, %.split28.i.i ], [ %20, %._crit_edge.i.i ] +.invoke.i.i: ; preds = %43, %.split28.i.i + %49 = phi i64 [ %.sroa.0.029.i.i, %.split27.i.i ], [ %.sroa.06.0.i.i, %43 ] + %50 = phi i64 [ %35, %.split27.i.i ], [ %20, %43 ] invoke void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef %49, i64 noundef %50, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.7d7fa6b3a568edea7c5b2245a49c0080.59) #25 to label %.cont.i.i unwind label %33, !noalias !108 @@ -1977,9 +1976,9 @@ define void @_ZN9elfshaker4repo10repository10Repository11loose_packs17hfcd2a2c08 br label %.body.i .body.i: ; preds = %53, %33 - %eh.lpad-body.i = phi { ptr, i32 } [ %54, %53 ], [ %34, %33 ] + %eh.lpad-body.i = phi { ptr, i32 } [ %54, %56 ], [ %34, %33 ] invoke void @"_ZN4core3ptr73drop_in_place$LT$alloc..vec..Vec$LT$elfshaker..repo..pack..PackId$GT$$GT$17hacce5c24ec70cb06E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %8) #23 - to label %57 unwind label %55, !noalias !108 + to label %60 unwind label %55, !noalias !108 55: ; preds = %.body.i %56 = landingpad { ptr, i32 } diff --git a/bench/elfshaker-rs/optimized/9f70t9k6da07jnr9o42fbjzc5.ll b/bench/elfshaker-rs/optimized/9f70t9k6da07jnr9o42fbjzc5.ll index 74b34b6ecb6..871793c1bb0 100644 --- a/bench/elfshaker-rs/optimized/9f70t9k6da07jnr9o42fbjzc5.ll +++ b/bench/elfshaker-rs/optimized/9f70t9k6da07jnr9o42fbjzc5.ll @@ -943,18 +943,19 @@ define hidden void @"_ZN4core3ptr121drop_in_place$LT$alloc..vec..Vec$LT$$LP$$LP$ br label %"_ZN4core3ptr98drop_in_place$LT$$LP$$LP$std..time..SystemTime$C$elfshaker..repo..pack..PackId$RP$$C$usize$RP$$GT$17h47c11108871c8501E.exit.i.i" "_ZN4core3ptr98drop_in_place$LT$$LP$$LP$std..time..SystemTime$C$elfshaker..repo..pack..PackId$RP$$C$usize$RP$$GT$17h47c11108871c8501E.exit.i.i": ; preds = %5, %1 - %.sroa.0.0.i.i = phi i64 [ 0, %1 ], [ %6, %5 ] + %.sroa.0.0.i.i = phi i64 [ 0, %1 ], [ %7, %5 ] %4 = icmp eq i64 %.sroa.0.0.i.i, %.val1 br i1 %4, label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h407a199f1ef53c19E.exit", label %5 5: ; preds = %"_ZN4core3ptr98drop_in_place$LT$$LP$$LP$std..time..SystemTime$C$elfshaker..repo..pack..PackId$RP$$C$usize$RP$$GT$17h47c11108871c8501E.exit.i.i" - %6 = add i64 %.sroa.0.0.i.i, 1 - %7 = getelementptr inbounds nuw { { { { { i64, i32, [1 x i32] } } }, { { { { { i64, ptr, {} }, {} }, i64 } } } }, i64 }, ptr %.val, i64 %.sroa.0.0.i.i, i32 0, i32 1 - invoke void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h7b457fe588a7441eE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7, i64 noundef 1, i64 noundef 1) - to label %"_ZN4core3ptr98drop_in_place$LT$$LP$$LP$std..time..SystemTime$C$elfshaker..repo..pack..PackId$RP$$C$usize$RP$$GT$17h47c11108871c8501E.exit.i.i" unwind label %9 + %6 = getelementptr inbounds nuw { { { { { i64, i32, [1 x i32] } } }, { { { { { i64, ptr, {} }, {} }, i64 } } } }, i64 }, ptr %.val, i64 %.sroa.0.0.i.i + %7 = add i64 %.sroa.0.0.i.i, 1 + %8 = getelementptr inbounds nuw i8, ptr %6, i64 16 + invoke void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h7b457fe588a7441eE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %8, i64 noundef 1, i64 noundef 1) + to label %"_ZN4core3ptr98drop_in_place$LT$$LP$$LP$std..time..SystemTime$C$elfshaker..repo..pack..PackId$RP$$C$usize$RP$$GT$17h47c11108871c8501E.exit.i.i" unwind label %10 "_ZN4core3ptr98drop_in_place$LT$$LP$$LP$std..time..SystemTime$C$elfshaker..repo..pack..PackId$RP$$C$usize$RP$$GT$17h47c11108871c8501E.exit7.i.i": ; preds = %11, %9 - %.sroa.0.1.i.i = phi i64 [ %6, %9 ], [ %12, %11 ] + %.sroa.0.1.i.i = phi i64 [ %7, %10 ], [ %14, %12 ] %8 = icmp eq i64 %.sroa.0.1.i.i, %.val1 br i1 %8, label %.body, label %11 @@ -964,10 +965,11 @@ define hidden void @"_ZN4core3ptr121drop_in_place$LT$alloc..vec..Vec$LT$$LP$$LP$ br label %"_ZN4core3ptr98drop_in_place$LT$$LP$$LP$std..time..SystemTime$C$elfshaker..repo..pack..PackId$RP$$C$usize$RP$$GT$17h47c11108871c8501E.exit7.i.i" 11: ; preds = %"_ZN4core3ptr98drop_in_place$LT$$LP$$LP$std..time..SystemTime$C$elfshaker..repo..pack..PackId$RP$$C$usize$RP$$GT$17h47c11108871c8501E.exit7.i.i" - %12 = add i64 %.sroa.0.1.i.i, 1 - %13 = getelementptr inbounds nuw { { { { { i64, i32, [1 x i32] } } }, { { { { { i64, ptr, {} }, {} }, i64 } } } }, i64 }, ptr %.val, i64 %.sroa.0.1.i.i, i32 0, i32 1 - invoke void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h7b457fe588a7441eE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %13, i64 noundef 1, i64 noundef 1) - to label %"_ZN4core3ptr98drop_in_place$LT$$LP$$LP$std..time..SystemTime$C$elfshaker..repo..pack..PackId$RP$$C$usize$RP$$GT$17h47c11108871c8501E.exit7.i.i" unwind label %14 + %13 = getelementptr inbounds nuw { { { { { i64, i32, [1 x i32] } } }, { { { { { i64, ptr, {} }, {} }, i64 } } } }, i64 }, ptr %.val, i64 %.sroa.0.1.i.i + %14 = add i64 %.sroa.0.1.i.i, 1 + %15 = getelementptr inbounds nuw i8, ptr %13, i64 16 + invoke void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h7b457fe588a7441eE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %15, i64 noundef 1, i64 noundef 1) + to label %"_ZN4core3ptr98drop_in_place$LT$$LP$$LP$std..time..SystemTime$C$elfshaker..repo..pack..PackId$RP$$C$usize$RP$$GT$17h47c11108871c8501E.exit7.i.i" unwind label %16 14: ; preds = %11 %15 = landingpad { ptr, i32 } diff --git a/bench/entt/optimized/group.ll b/bench/entt/optimized/group.ll index 88b1ad964fe..ee65043f05b 100644 --- a/bench/entt/optimized/group.ll +++ b/bench/entt/optimized/group.ll @@ -14873,21 +14873,22 @@ _ZNK4entt16basic_sparse_setINS_6entityESaIS1_EE7currentES1_.exit: ; preds = %._c %.07 = phi i64 [ %10, %.lr.ph ], [ %48, %_ZN4entt16basic_sparse_setINS_6entityESaIS1_EE6removeES1_.exit ] %47 = load ptr, ptr %3, align 8, !tbaa !308 %48 = add i64 %.07, -1 - %49 = getelementptr inbounds %"struct.entt::internal::dense_map_node", ptr %47, i64 %48, i32 1, i32 1 - %50 = load ptr, ptr %49, align 8, !tbaa !309 - %51 = getelementptr inbounds nuw i8, ptr %50, i64 8 - %52 = getelementptr inbounds nuw i8, ptr %50, i64 16 - %53 = load ptr, ptr %52, align 8, !tbaa !282 - %54 = load ptr, ptr %51, align 8, !tbaa !159 - %55 = ptrtoint ptr %53 to i64 + %49 = getelementptr inbounds %"struct.entt::internal::dense_map_node", ptr %47, i64 %48 + %50 = getelementptr inbounds nuw i8, ptr %49, i64 16 + %51 = load ptr, ptr %50, align 8, !tbaa !309 + %52 = getelementptr inbounds nuw i8, ptr %51, i64 8 + %53 = getelementptr inbounds nuw i8, ptr %51, i64 16 + %54 = load ptr, ptr %53, align 8, !tbaa !282 + %55 = load ptr, ptr %52, align 8, !tbaa !159 %56 = ptrtoint ptr %54 to i64 - %57 = sub i64 %55, %56 - %58 = ashr exact i64 %57, 3 - %59 = icmp ult i64 %13, %58 - br i1 %59, label %60, label %_ZN4entt16basic_sparse_setINS_6entityESaIS1_EE6removeES1_.exit + %57 = ptrtoint ptr %55 to i64 + %58 = sub i64 %56, %57 + %59 = ashr exact i64 %58, 3 + %60 = icmp ult i64 %13, %59 + br i1 %60, label %61, label %_ZN4entt16basic_sparse_setINS_6entityESaIS1_EE6removeES1_.exit 60: ; preds = %46 - %61 = getelementptr inbounds nuw ptr, ptr %54, i64 %13 + %61 = getelementptr inbounds nuw ptr, ptr %55, i64 %13 %62 = load ptr, ptr %61, align 8, !tbaa !44 %.not.i.i.i = icmp eq ptr %62, null br i1 %.not.i.i.i, label %_ZN4entt16basic_sparse_setINS_6entityESaIS1_EE6removeES1_.exit, label %_ZNK4entt16basic_sparse_setINS_6entityESaIS1_EE8containsES1_.exit.i @@ -14900,15 +14901,15 @@ _ZNK4entt16basic_sparse_setINS_6entityESaIS1_EE8containsES1_.exit.i: ; preds = % br i1 %66, label %67, label %_ZN4entt16basic_sparse_setINS_6entityESaIS1_EE6removeES1_.exit 67: ; preds = %_ZNK4entt16basic_sparse_setINS_6entityESaIS1_EE8containsES1_.exit.i - %68 = getelementptr inbounds nuw i8, ptr %50, i64 32 + %68 = getelementptr inbounds nuw i8, ptr %51, i64 32 %69 = and i32 %64, 1048575 %narrow.i.i.i = add nuw nsw i32 %69, 1 %70 = zext nneg i32 %narrow.i.i.i to i64 %71 = zext nneg i32 %69 to i64 - %72 = load ptr, ptr %50, align 8, !tbaa !4 + %72 = load ptr, ptr %51, align 8, !tbaa !4 %73 = getelementptr inbounds nuw i8, ptr %72, i64 16 %74 = load ptr, ptr %73, align 8 - tail call void %74(ptr noundef nonnull align 8 dereferenceable(80) %50, ptr nonnull %68, i64 %70, ptr nonnull %68, i64 %71) + tail call void %75(ptr noundef nonnull align 8 dereferenceable(80) %51, ptr nonnull %68, i64 %70, ptr nonnull %68, i64 %71) br label %_ZN4entt16basic_sparse_setINS_6entityESaIS1_EE6removeES1_.exit _ZN4entt16basic_sparse_setINS_6entityESaIS1_EE6removeES1_.exit: ; preds = %46, %60, %_ZNK4entt16basic_sparse_setINS_6entityESaIS1_EE8containsES1_.exit.i, %67 diff --git a/bench/faiss/optimized/MatrixStats.ll b/bench/faiss/optimized/MatrixStats.ll index 361b2591a09..12704836c63 100644 --- a/bench/faiss/optimized/MatrixStats.ll +++ b/bench/faiss/optimized/MatrixStats.ll @@ -828,15 +828,16 @@ _ZNSt13unordered_mapImN5faiss11MatrixStats10OccurrenceESt4hashImESt8equal_toImES br i1 %.not118, label %._crit_edge202.thread, label %294 288: ; preds = %.lr.ph201, %288 - %.087199 = phi i64 [ 0, %.lr.ph201 ], [ %293, %288 ] + %.087199 = phi i64 [ 0, %.lr.ph201 ], [ %294, %288 ] %.088198 = phi i64 [ 0, %.lr.ph201 ], [ %.189, %288 ] - %289 = getelementptr inbounds nuw %"struct.faiss::MatrixStats::PerDimStats", ptr %286, i64 %.087199, i32 10 - %290 = load double, ptr %289, align 8, !tbaa !20 - %291 = fcmp olt double %290, %287 - %292 = zext i1 %291 to i64 - %.189 = add i64 %.088198, %292 - %293 = add nuw i64 %.087199, 1 - %exitcond221.not = icmp eq i64 %293, %2 + %289 = getelementptr inbounds nuw %"struct.faiss::MatrixStats::PerDimStats", ptr %286, i64 %.087199 + %290 = getelementptr inbounds nuw i8, ptr %289, i64 72 + %291 = load double, ptr %290, align 8, !tbaa !20 + %292 = fcmp olt double %291, %287 + %293 = zext i1 %292 to i64 + %293 = add i64 %.088198, %293 + %294 = add nuw i64 %.087199, 1 + %exitcond221.not = icmp eq i64 %294, %2 br i1 %exitcond221.not, label %._crit_edge202, label %288, !llvm.loop !74 294: ; preds = %._crit_edge202 diff --git a/bench/fish-rs/optimized/czs708r0zvy58e2j6rsq7a88i.ll b/bench/fish-rs/optimized/czs708r0zvy58e2j6rsq7a88i.ll index a2976f6aac4..091a812965c 100644 --- a/bench/fish-rs/optimized/czs708r0zvy58e2j6rsq7a88i.ll +++ b/bench/fish-rs/optimized/czs708r0zvy58e2j6rsq7a88i.ll @@ -7991,8 +7991,9 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6retain17h389bfb9fa4bb76ffE" br i1 %.not1.i11.i, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17h35d6f920834ec6f2E.exit.i", label %.lr.ph.i 10: ; preds = %.lr.ph.i - %11 = getelementptr { i32, i32, i32, i32, i8, i8, i8, [1 x i8] }, ptr %8, i64 %14, i32 5 - %.val.i.i = load i8, ptr %11, align 1, !range !1139, !noalias !1140, !noundef !3 + %11 = getelementptr inbounds nuw { i32, i32, i32, i32, i8, i8, i8, [1 x i8] }, ptr %8, i64 %15 + %12 = getelementptr i8, ptr %11, i64 17 + %.val.i.i = load i8, ptr %12, align 1, !range !1139, !noalias !1140, !noundef !3 %.not1.i.i = icmp eq i8 %.val.i.i, 10 br i1 %.not1.i.i, label %._crit_edge.loopexit.i, label %.lr.ph.i @@ -8012,30 +8013,30 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6retain17h389bfb9fa4bb76ffE" br i1 %.not2.i.i, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17ha618c2a0832af060E.exit.i", label %.lr.ph.i3.i .lr.ph.i3.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17h35d6f920834ec6f2E.exit.i", %.backedge.i.i - %15 = phi i64 [ %22, %.backedge.i.i ], [ 1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17h35d6f920834ec6f2E.exit.i" ] %16 = phi i64 [ %23, %.backedge.i.i ], [ 1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17h35d6f920834ec6f2E.exit.i" ] - %17 = phi i64 [ %.sink.i.i, %.backedge.i.i ], [ %.sroa.4.0.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17h35d6f920834ec6f2E.exit.i" ] - %18 = getelementptr inbounds nuw { i32, i32, i32, i32, i8, i8, i8, [1 x i8] }, ptr %8, i64 %17 - %19 = getelementptr i8, ptr %18, i64 17 - %.val.i4.i = load i8, ptr %19, align 1, !range !1139, !noalias !1141, !noundef !3 + %17 = phi i64 [ %24, %.backedge.i.i ], [ 1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17h35d6f920834ec6f2E.exit.i" ] + %18 = phi i64 [ %.sink.i.i, %.backedge.i.i ], [ %.sroa.4.0.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17h35d6f920834ec6f2E.exit.i" ] + %19 = getelementptr inbounds nuw { i32, i32, i32, i32, i8, i8, i8, [1 x i8] }, ptr %8, i64 %18 + %20 = getelementptr i8, ptr %19, i64 17 + %.val.i4.i = load i8, ptr %20, align 1, !range !1139, !noalias !1141, !noundef !3 %.not1.i5.i = icmp eq i8 %.val.i4.i, 10 br i1 %.not1.i5.i, label %20, label %24 20: ; preds = %.lr.ph.i3.i - %21 = add i64 %16, 1 + %21 = add i64 %17, 1 br label %.backedge.i.i .backedge.i.i: ; preds = %24, %20 - %22 = phi i64 [ %21, %20 ], [ %15, %24 ] - %23 = phi i64 [ %21, %20 ], [ %16, %24 ] - %.sink.i.i = add i64 %17, 1 + %22 = phi i64 [ %21, %21 ], [ %16, %25 ] + %23 = phi i64 [ %21, %21 ], [ %17, %25 ] + %.sink.i.i = add i64 %18, 1 %.not.i6.i = icmp eq i64 %.sink.i.i, %4 br i1 %.not.i6.i, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17ha618c2a0832af060E.exit.i", label %.lr.ph.i3.i 24: ; preds = %.lr.ph.i3.i - %25 = sub i64 %17, %16 + %25 = sub i64 %18, %17 %26 = getelementptr inbounds nuw { i32, i32, i32, i32, i8, i8, i8, [1 x i8] }, ptr %8, i64 %25 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %26, ptr noundef nonnull align 4 dereferenceable(20) %18, i64 20, i1 false), !noalias !1141 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %26, ptr noundef nonnull align 4 dereferenceable(20) %19, i64 20, i1 false), !noalias !1141 br label %.backedge.i.i "_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17ha618c2a0832af060E.exit.i": ; preds = %.lr.ph.i, %.backedge.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17h35d6f920834ec6f2E.exit.i" diff --git a/bench/fish-rs/optimized/e69mx4kebbw5h90l2bpw0bwyt.ll b/bench/fish-rs/optimized/e69mx4kebbw5h90l2bpw0bwyt.ll index d13925cef66..d8fab13c1e1 100644 --- a/bench/fish-rs/optimized/e69mx4kebbw5h90l2bpw0bwyt.ll +++ b/bench/fish-rs/optimized/e69mx4kebbw5h90l2bpw0bwyt.ll @@ -59103,14 +59103,15 @@ define { i64, i64 } @_ZN4fish21reader_history_search19ReaderHistorySearch19searc %13 = load ptr, ptr %12, align 8, !nonnull !3, !noundef !3 %14 = getelementptr inbounds nuw i8, ptr %0, i64 280 %15 = load i64, ptr %14, align 8, !noundef !3 - %16 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, i64 }, ptr %13, i64 %7, i32 0, i32 0, i32 1 - %17 = load i64, ptr %16, align 8, !noundef !3 - %18 = icmp ult i64 %17, 2305843009213693952 - tail call void @llvm.assume(i1 %18) - %19 = add i64 %17, %15 - %20 = insertvalue { i64, i64 } poison, i64 %15, 0 - %21 = insertvalue { i64, i64 } %20, i64 %19, 1 - ret { i64, i64 } %21 + %16 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, i64 }, ptr %13, i64 %7 + %17 = getelementptr inbounds nuw i8, ptr %16, i64 16 + %18 = load i64, ptr %17, align 8, !noundef !3 + %19 = icmp ult i64 %18, 2305843009213693952 + tail call void @llvm.assume(i1 %19) + %20 = add i64 %18, %15 + %21 = insertvalue { i64, i64 } poison, i64 %15, 0 + %22 = insertvalue { i64, i64 } %21, i64 %20, 1 + ret { i64, i64 } %22 22: ; preds = %5 tail call void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef %7, i64 noundef %9, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.eb71500b7c601d0c05b6c58f9f119b67.837) #32 @@ -59141,8 +59142,9 @@ define void @_ZN4fish21reader_history_search19ReaderHistorySearch22search_range_ %15 = load ptr, ptr %14, align 8, !nonnull !3, !noundef !3 %16 = getelementptr inbounds nuw i8, ptr %1, i64 280 %17 = load i64, ptr %16, align 8, !noundef !3 - %18 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, i64 }, ptr %15, i64 %7, i32 1 - %19 = load i64, ptr %18, align 8, !noundef !3 + %18 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, i64 }, ptr %15, i64 %7 + %19 = getelementptr inbounds nuw i8, ptr %18, i64 24 + %20 = load i64, ptr %19, align 8, !noundef !3 tail call void @llvm.experimental.noalias.scope.decl(metadata !6005) tail call void @llvm.experimental.noalias.scope.decl(metadata !6008) %20 = getelementptr inbounds nuw i8, ptr %1, i64 24 @@ -59155,17 +59157,17 @@ define void @_ZN4fish21reader_history_search19ReaderHistorySearch22search_range_ unreachable _ZN4fish21reader_history_search19ReaderHistorySearch13search_string17h58eea65f84026addE.exit: ; preds = %13 - %23 = add i64 %19, %17 + %23 = add i64 %20, %17 %24 = getelementptr inbounds nuw i8, ptr %1, i64 40 %25 = load i64, ptr %24, align 8, !alias.scope !6012, !noundef !3 %26 = tail call { i32, i32 } @_ZN4fish15parse_constants11SourceRange3new17he1a688aaeb7d0534E(i64 noundef %23, i64 noundef %25) %27 = extractvalue { i32, i32 } %26, 0 %28 = extractvalue { i32, i32 } %26, 1 %29 = getelementptr inbounds nuw i8, ptr %0, i64 4 - store i32 %27, ptr %29, align 4 - %30 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i32 %28, ptr %30, align 4 - br label %32 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i32 %29, ptr %31, align 4 + br label %33 31: ; preds = %9 tail call void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef %7, i64 noundef %11, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.eb71500b7c601d0c05b6c58f9f119b67.838) #32 diff --git a/bench/flac/optimized/utils.ll b/bench/flac/optimized/utils.ll index e7bd57b55ee..75db94071ba 100644 --- a/bench/flac/optimized/utils.ll +++ b/bench/flac/optimized/utils.ll @@ -106,9 +106,8 @@ safe_realloc_add_3op_.exit: ; preds = %15 %22 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %16) #15 %23 = sub i64 %10, %22 %strncat = tail call ptr @strncat(ptr noundef nonnull dereferenceable(1) %16, ptr nonnull %1, i64 %23) - %24 = getelementptr i8, ptr %16, i64 %10 - %25 = getelementptr i8, ptr %24, i64 -1 - store i8 0, ptr %25, align 1, !tbaa !11 + %24 = getelementptr i8, ptr %16, i64 %9 + store i8 0, ptr %24, align 1, !tbaa !11 br label %safe_strncat.exit safe_strncat.exit: ; preds = %21, %6 diff --git a/bench/fmt/optimized/gmock-gtest-all.ll b/bench/fmt/optimized/gmock-gtest-all.ll index 87f380ce375..b249b5d1925 100644 --- a/bench/fmt/optimized/gmock-gtest-all.ll +++ b/bench/fmt/optimized/gmock-gtest-all.ll @@ -102711,21 +102711,22 @@ _ZN7testing19MatchResultListenerlsIA25_cEERS0_RKT_.exit: ; preds = %68 70: ; preds = %_ZN7testing19MatchResultListenerlsIA25_cEERS0_RKT_.exit %71 = load ptr, ptr %4, align 8, !tbaa !1866 - %72 = getelementptr inbounds nuw %"struct.std::pair.226", ptr %71, i64 %.0105, i32 1 - %73 = load i64, ptr %72, align 8, !tbaa !43 - %74 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo9_M_insertImEERSoT_(ptr noundef nonnull align 8 dereferenceable(8) %.pr86, i64 noundef %73) - to label %_ZN7testing19MatchResultListenerlsImEERS0_RKT_.exit60 unwind label %83 + %72 = getelementptr inbounds nuw %"struct.std::pair.226", ptr %71, i64 %.0105 + %73 = getelementptr inbounds nuw i8, ptr %72, i64 8 + %74 = load i64, ptr %73, align 8, !tbaa !43 + %75 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo9_M_insertImEERSoT_(ptr noundef nonnull align 8 dereferenceable(8) %.pr86, i64 noundef %74) + to label %_ZN7testing19MatchResultListenerlsImEERS0_RKT_.exit60 unwind label %84 _ZN7testing19MatchResultListenerlsImEERS0_RKT_.exit60: ; preds = %_ZN7testing19MatchResultListenerlsIPKcEERS0_RKT_.exit, %.lr.ph.split, %_ZN7testing19MatchResultListenerlsIA13_cEERS0_RKT_.exit, %_ZN7testing19MatchResultListenerlsImEERS0_RKT_.exit55, %_ZN7testing19MatchResultListenerlsIA25_cEERS0_RKT_.exit, %70 %75 = add nuw i64 %.0105, 1 %76 = load ptr, ptr %5, align 8, !tbaa !1811 %77 = load ptr, ptr %4, align 8, !tbaa !1866 - %78 = ptrtoint ptr %76 to i64 %79 = ptrtoint ptr %77 to i64 - %80 = sub i64 %78, %79 - %81 = ashr exact i64 %80, 4 - %82 = icmp ult i64 %75, %81 - br i1 %82, label %.lr.ph.splitthread-pre-split, label %.loopexit, !llvm.loop !1867 + %80 = ptrtoint ptr %78 to i64 + %81 = sub i64 %79, %80 + %82 = ashr exact i64 %81, 4 + %83 = icmp ult i64 %76, %82 + br i1 %83, label %.lr.ph.splitthread-pre-split, label %.loopexit, !llvm.loop !1867 83: ; preds = %70, %68, %63, %61, %58 %84 = landingpad { ptr, i32 } @@ -102752,7 +102753,7 @@ _ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit: ; preds = %.loopexit, %86 ret i1 %.022 92: ; preds = %83, %50, %31, %29 - %.pn = phi { ptr, i32 } [ %30, %29 ], [ %32, %31 ], [ %51, %50 ], [ %84, %83 ] + %.pn = phi { ptr, i32 } [ %30, %29 ], [ %32, %31 ], [ %51, %50 ], [ %84, %84 ] %93 = load ptr, ptr %4, align 8, !tbaa !1866 %.not.i.i.i61 = icmp eq ptr %93, null br i1 %.not.i.i.i61, label %_ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit62, label %94 diff --git a/bench/folly/optimized/EventBase.ll b/bench/folly/optimized/EventBase.ll index 6023e15c11a..cdc56a8ee77 100644 --- a/bench/folly/optimized/EventBase.ll +++ b/bench/folly/optimized/EventBase.ll @@ -8325,34 +8325,36 @@ _ZN5folly3f146detail8F14ChunkIPNS_6detail18EventBaseLocalBaseEE8clearTagEm.exit. %66 = icmp eq ptr %65, %51 br i1 %66, label %.thread.i, label %.lr.ph.i -.thread.i: ; preds = %76, %57 - %.011.lcssa.i = phi i8 [ 0, %57 ], [ -16, %76 ] - %67 = phi i64 [ %64, %57 ], [ %78, %76 ] - %68 = getelementptr inbounds nuw %"struct.folly::f14::detail::F14Chunk", ptr %60, i64 %67, i32 1 - %69 = load i8, ptr %68, align 2, !tbaa !450 - %70 = add i8 %69, %.011.lcssa.i - store i8 %70, ptr %68, align 2, !tbaa !450 +.thread.i: ; preds = %78, %57 + %.011.lcssa.i = phi i8 [ 0, %57 ], [ -16, %78 ] + %67 = phi i64 [ %64, %57 ], [ %80, %78 ] + %68 = getelementptr inbounds nuw %"struct.folly::f14::detail::F14Chunk", ptr %60, i64 %67 + %69 = getelementptr inbounds nuw i8, ptr %68, i64 14 + %70 = load i8, ptr %69, align 2, !tbaa !450 + %71 = add i8 %70, %.011.lcssa.i + store i8 %71, ptr %69, align 2, !tbaa !450 br label %_ZN5folly3f146detail8F14TableINS1_20ValueContainerPolicyIPNS_6detail18EventBaseLocalBaseEvvvvEEE10eraseBlankENS1_11F14ItemIterIPNS1_8F14ChunkIS6_EEEESt4pairImmE.exit -.lr.ph.i: ; preds = %57, %76 - %71 = phi i64 [ %78, %76 ], [ %64, %57 ] - %.01027.i = phi i64 [ %77, %76 ], [ %3, %57 ] - %72 = getelementptr inbounds nuw %"struct.folly::f14::detail::F14Chunk", ptr %60, i64 %71, i32 2 - %73 = load i8, ptr %72, align 1, !tbaa !454 - %.not.i17.i = icmp eq i8 %73, -2 - br i1 %.not.i17.i, label %76, label %74 - -74: ; preds = %.lr.ph.i - %75 = add i8 %73, -1 - store i8 %75, ptr %72, align 1, !tbaa !454 - br label %76 - -76: ; preds = %74, %.lr.ph.i - %77 = add i64 %59, %.01027.i - %78 = and i64 %77, %63 - %79 = getelementptr inbounds nuw %"struct.folly::f14::detail::F14Chunk", ptr %60, i64 %78 - %80 = icmp eq ptr %79, %51 - br i1 %80, label %.thread.i, label %.lr.ph.i +.lr.ph.i: ; preds = %57, %78 + %71 = phi i64 [ %80, %78 ], [ %64, %57 ] + %.01027.i = phi i64 [ %79, %78 ], [ %3, %57 ] + %72 = getelementptr inbounds nuw %"struct.folly::f14::detail::F14Chunk", ptr %60, i64 %72 + %74 = getelementptr inbounds nuw i8, ptr %72, i64 15 + %75 = load i8, ptr %74, align 1, !tbaa !454 + %.not.i17.i = icmp eq i8 %75, -2 + br i1 %.not.i17.i, label %78, label %76 + +76:; preds = %.lr.ph.i + %77 = add i8 %75, -1 + store i8 %77, ptr %74, align 1, !tbaa !454 + br label %78 + +78:; preds = %76, %.lr.ph.i + %79 = add i64 %57, %.01027.i + %80 = and i64 %79, %63 + %81 = getelementptr inbounds nuw %"struct.folly::f14::detail::F14Chunk", ptr %60, i64 %80 + %82 = icmp eq ptr %81, %51 + br i1 %82, label %.thread.i, label %.lr.ph.i _ZN5folly3f146detail8F14TableINS1_20ValueContainerPolicyIPNS_6detail18EventBaseLocalBaseEvvvvEEE10eraseBlankENS1_11F14ItemIterIPNS1_8F14ChunkIS6_EEEESt4pairImmE.exit: ; preds = %_ZN5folly3f146detail8F14ChunkIPNS_6detail18EventBaseLocalBaseEE8clearTagEm.exit.i, %.thread.i ret void @@ -9438,28 +9440,30 @@ _ZN5folly3f146detail8F14ChunkIjE8clearTagEm.exit.i.i: ; preds = %26 br i1 %45, label %.thread.i.i, label %.lr.ph.i.i .thread.i.i: ; preds = %55, %37 - %.011.lcssa.i.i = phi i8 [ 0, %37 ], [ -16, %55 ] - %46 = phi i64 [ %43, %37 ], [ %57, %55 ] - %47 = getelementptr inbounds nuw %"struct.folly::f14::detail::F14Chunk.157", ptr %39, i64 %46, i32 1 - %48 = load i8, ptr %47, align 2, !tbaa !455 - %49 = add i8 %48, %.011.lcssa.i.i - store i8 %49, ptr %47, align 2, !tbaa !455 + %.011.lcssa.i.i = phi i8 [ 0, %37 ], [ -16, %57 ] + %46 = phi i64 [ %43, %37 ], [ %57, %57 ] + %47 = getelementptr inbounds nuw %"struct.folly::f14::detail::F14Chunk.157", ptr %39, i64 %46 + %48 = getelementptr inbounds nuw i8, ptr %47, i64 14 + %49 = load i8, ptr %48, align 2, !tbaa !455 + %50 = add i8 %49, %.011.lcssa.i.i + store i8 %50, ptr %48, align 2, !tbaa !455 br label %_ZN5folly3f146detail8F14TableINS1_21VectorContainerPolicyImSt10unique_ptrIvPFvPvEEvvvSt17integral_constantIbLb1EEEEE9eraseImplENS1_11F14ItemIterIPNS1_8F14ChunkIjEEEESt4pairImmE.exit .lr.ph.i.i: ; preds = %37, %55 - %50 = phi i64 [ %57, %55 ], [ %43, %37 ] - %.01027.i.i = phi i64 [ %56, %55 ], [ %.sroa.04.0, %37 ] - %51 = getelementptr inbounds nuw %"struct.folly::f14::detail::F14Chunk.157", ptr %39, i64 %50, i32 2 - %52 = load i8, ptr %51, align 1, !tbaa !497 - %.not.i17.i.i = icmp eq i8 %52, -2 - br i1 %.not.i17.i.i, label %55, label %53 - -53: ; preds = %.lr.ph.i.i - %54 = add i8 %52, -1 - store i8 %54, ptr %51, align 1, !tbaa !497 - br label %55 + %50 = phi i64 [ %57, %57 ], [ %43, %37 ] + %.01027.i.i = phi i64 [ %56, %57 ], [ %.sroa.04.0, %37 ] + %51 = getelementptr inbounds nuw %"struct.folly::f14::detail::F14Chunk.157", ptr %39, i64 %50 + %53 = getelementptr inbounds nuw i8, ptr %51, i64 15 + %54 = load i8, ptr %53, align 1, !tbaa !497 + %.not.i17.i.i = icmp eq i8 %54, -2 + br i1 %.not.i17.i.i, label %57, label %55 + +55:; preds = %.lr.ph.i.i + %56 = add i8 %54, -1 + store i8 %56, ptr %53, align 1, !tbaa !497 + br label %57 -55: ; preds = %53, %.lr.ph.i.i +55: ; preds = %55, %.lr.ph.i.i %56 = add i64 %.01027.i.i, %.sroa.5.0 %57 = and i64 %56, %42 %58 = getelementptr inbounds nuw %"struct.folly::f14::detail::F14Chunk.157", ptr %39, i64 %57 diff --git a/bench/foundations-rs/optimized/208outlkq19x3hykb3fof84u4.ll b/bench/foundations-rs/optimized/208outlkq19x3hykb3fof84u4.ll index 5765b0e1daa..1ad1028b3e8 100644 --- a/bench/foundations-rs/optimized/208outlkq19x3hykb3fof84u4.ll +++ b/bench/foundations-rs/optimized/208outlkq19x3hykb3fof84u4.ll @@ -3987,17 +3987,18 @@ define internal { i64, ptr } @"_ZN3std2io5impls74_$LT$impl$u20$std..io..Write$u2 br label %._crit_edge .preheader: ; preds = %3, %.preheader - %.sroa.07.0.i = phi i64 [ %7, %.preheader ], [ 0, %3 ] - %.sroa.09.0.i = phi i64 [ %8, %.preheader ], [ 0, %3 ] - %6 = getelementptr { { { ptr, i64 }, {} } }, ptr %1, i64 %.sroa.09.0.i, i32 0, i32 0, i32 1 - %.val.i = load i64, ptr %6, align 8, !noundef !4 - %7 = add i64 %.val.i, %.sroa.07.0.i - %8 = add nuw i64 %.sroa.09.0.i, 1 - %9 = icmp eq i64 %8, %2 - br i1 %9, label %.lr.ph.preheader, label %.preheader + %.sroa.07.0.i = phi i64 [ %8, %.preheader ], [ 0, %3 ] + %.sroa.09.0.i = phi i64 [ %9, %.preheader ], [ 0, %3 ] + %6 = getelementptr inbounds nuw { { { ptr, i64 }, {} } }, ptr %1, i64 %.sroa.09.0.i + %7 = getelementptr i8, ptr %6, i64 8 + %.val.i = load i64, ptr %7, align 8, !noundef !4 + %8 = add i64 %.val.i, %.sroa.07.0.i + %9 = add nuw i64 %.sroa.09.0.i, 1 + %10 = icmp eq i64 %9, %2 + br i1 %10, label %.lr.ph.preheader, label %.preheader .lr.ph.preheader: ; preds = %.preheader - tail call void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h0d61fde354d6f2a1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.e9ef04808737cbe8ef653d32af212bbe.63) + tail call void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h0d61fde354d6f2a1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %8, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.e9ef04808737cbe8ef653d32af212bbe.63) br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph @@ -4012,7 +4013,7 @@ define internal { i64, ptr } @"_ZN3std2io5impls74_$LT$impl$u20$std..io..Write$u2 br i1 %15, label %._crit_edge.loopexit, label %.lr.ph ._crit_edge.loopexit: ; preds = %.lr.ph - %16 = inttoptr i64 %7 to ptr + %16 = inttoptr i64 %8 to ptr br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h0fefea0aab1879d0E.exit.thread" @@ -4039,17 +4040,18 @@ define internal noalias noundef ptr @"_ZN3std2io5impls74_$LT$impl$u20$std..io..W br label %"_ZN3std2io5impls74_$LT$impl$u20$std..io..Write$u20$for$u20$alloc..vec..Vec$LT$u8$C$A$GT$$GT$14write_vectored17h7b4fa458f99376d2E.exit" .preheader.i: ; preds = %3, %.preheader.i - %.sroa.07.0.i.i = phi i64 [ %7, %.preheader.i ], [ 0, %3 ] - %.sroa.09.0.i.i = phi i64 [ %8, %.preheader.i ], [ 0, %3 ] - %6 = getelementptr { { { ptr, i64 }, {} } }, ptr %1, i64 %.sroa.09.0.i.i, i32 0, i32 0, i32 1 - %.val.i.i = load i64, ptr %6, align 8, !alias.scope !428, !noalias !431, !noundef !4 - %7 = add i64 %.val.i.i, %.sroa.07.0.i.i - %8 = add nuw i64 %.sroa.09.0.i.i, 1 - %9 = icmp eq i64 %8, %2 - br i1 %9, label %.lr.ph.preheader.i, label %.preheader.i + %.sroa.07.0.i.i = phi i64 [ %8, %.preheader.i ], [ 0, %3 ] + %.sroa.09.0.i.i = phi i64 [ %9, %.preheader.i ], [ 0, %3 ] + %6 = getelementptr inbounds nuw { { { ptr, i64 }, {} } }, ptr %1, i64 %.sroa.09.0.i.i + %7 = getelementptr i8, ptr %6, i64 8 + %.val.i.i = load i64, ptr %7, align 8, !alias.scope !428, !noalias !431, !noundef !4 + %8 = add i64 %.val.i.i, %.sroa.07.0.i.i + %9 = add nuw i64 %.sroa.09.0.i.i, 1 + %10 = icmp eq i64 %9, %2 + br i1 %10, label %.lr.ph.preheader.i, label %.preheader.i .lr.ph.preheader.i: ; preds = %.preheader.i - tail call void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h0d61fde354d6f2a1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.e9ef04808737cbe8ef653d32af212bbe.63), !noalias !428 + tail call void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h0d61fde354d6f2a1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %8, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.e9ef04808737cbe8ef653d32af212bbe.63), !noalias !428 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i diff --git a/bench/foundations-rs/optimized/dh385e1vps3pv71hnt480a6fj.ll b/bench/foundations-rs/optimized/dh385e1vps3pv71hnt480a6fj.ll index a603d99e24a..479293aabb2 100644 --- a/bench/foundations-rs/optimized/dh385e1vps3pv71hnt480a6fj.ll +++ b/bench/foundations-rs/optimized/dh385e1vps3pv71hnt480a6fj.ll @@ -506,7 +506,8 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ %5 = phi i64 [ %7, %.lr.ph.i ], [ %.sroa.4.0.copyload, %3 ] %.sroa.0.010.i = phi i64 [ %6, %.lr.ph.i ], [ %0, %3 ] %6 = add nuw i64 %.sroa.0.010.i, 1 - %.sroa.43.0..sroa_idx.i.i = getelementptr inbounds { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %.sroa.7.0.copyload, i64 %5, i32 1 + %.sroa.43.0..sroa_idx.i.i = getelementptr inbounds nuw { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %.sroa.7.0.copyload, i64 %5 + %.sroa.43.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %7, i64 32 store i8 0, ptr %.sroa.43.0..sroa_idx.i.i, align 8, !noalias !19 %7 = add i64 %5, 1 %exitcond.not.i = icmp eq i64 %6, %1 @@ -605,7 +606,8 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ %5 = phi i64 [ %7, %.lr.ph.i ], [ %.sroa.4.0.copyload, %3 ] %.sroa.0.010.i = phi i64 [ %6, %.lr.ph.i ], [ %0, %3 ] %6 = add nuw i64 %.sroa.0.010.i, 1 - %.sroa.43.0..sroa_idx.i.i = getelementptr inbounds { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %.sroa.7.0.copyload, i64 %5, i32 1 + %.sroa.43.0..sroa_idx.i.i = getelementptr inbounds nuw { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %.sroa.7.0.copyload, i64 %5 + %.sroa.43.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %7, i64 32 store i8 0, ptr %.sroa.43.0..sroa_idx.i.i, align 8, !noalias !57 %7 = add i64 %5, 1 %exitcond.not.i = icmp eq i64 %6, %1 @@ -932,7 +934,8 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ %5 = phi i64 [ %7, %.lr.ph.i ], [ %.sroa.4.0.copyload, %3 ] %.sroa.0.010.i = phi i64 [ %6, %.lr.ph.i ], [ %0, %3 ] %6 = add nuw i64 %.sroa.0.010.i, 1 - %.sroa.43.0..sroa_idx.i.i = getelementptr inbounds { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %.sroa.7.0.copyload, i64 %5, i32 1 + %.sroa.43.0..sroa_idx.i.i = getelementptr inbounds nuw { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %.sroa.7.0.copyload, i64 %5 + %.sroa.43.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %7, i64 32 store i8 0, ptr %.sroa.43.0..sroa_idx.i.i, align 8, !noalias !146 %7 = add i64 %5, 1 %exitcond.not.i = icmp eq i64 %6, %1 @@ -1098,7 +1101,8 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ %5 = phi i64 [ %7, %.lr.ph.i ], [ %.sroa.4.0.copyload, %3 ] %.sroa.0.010.i = phi i64 [ %6, %.lr.ph.i ], [ %0, %3 ] %6 = add nuw i64 %.sroa.0.010.i, 1 - %.sroa.4.0..sroa_idx.i.i = getelementptr inbounds { { { [12 x i64] } }, { i64 } }, ptr %.sroa.7.0.copyload, i64 %5, i32 1 + %.sroa.4.0..sroa_idx.i.i = getelementptr inbounds nuw { { { [12 x i64] } }, { i64 } }, ptr %.sroa.7.0.copyload, i64 %5 + %.sroa.4.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %7, i64 96 store i64 %.sroa.0.010.i, ptr %.sroa.4.0..sroa_idx.i.i, align 8, !noalias !185 %7 = add i64 %5, 1 %exitcond.not.i = icmp eq i64 %6, %1 diff --git a/bench/freetype/optimized/cff.ll b/bench/freetype/optimized/cff.ll index 4bb8bc2b431..be77a1da636 100644 --- a/bench/freetype/optimized/cff.ll +++ b/bench/freetype/optimized/cff.ll @@ -9988,14 +9988,16 @@ define internal fastcc void @cff_vstore_done(ptr noundef captures(none) %0, ptr br i1 %.not30, label %.loopexit, label %.lr.ph28 .lr.ph28: ; preds = %.preheader, %.lr.ph28 - %19 = phi ptr [ %22, %.lr.ph28 ], [ %17, %.preheader ] + %19 = phi ptr [ %23, %.lr.ph28 ], [ %17, %.preheader ] %indvars.iv32 = phi i64 [ %indvars.iv.next33, %.lr.ph28 ], [ 0, %.preheader ] - %20 = getelementptr inbounds nuw %struct.CFF_VarData_, ptr %19, i64 %indvars.iv32, i32 1 - %21 = load ptr, ptr %20, align 8, !tbaa !483 - tail call void @ft_mem_free(ptr noundef %1, ptr noundef %21) #19 - %22 = load ptr, ptr %16, align 8, !tbaa !478 - %23 = getelementptr inbounds nuw %struct.CFF_VarData_, ptr %22, i64 %indvars.iv32, i32 1 - store ptr null, ptr %23, align 8, !tbaa !483 + %20 = getelementptr inbounds nuw %struct.CFF_VarData_, ptr %19, i64 %indvars.iv32 + %21 = getelementptr inbounds nuw i8, ptr %20, i64 8 + %22 = load ptr, ptr %21, align 8, !tbaa !483 + tail call void @ft_mem_free(ptr noundef %1, ptr noundef %22) #19 + %23 = load ptr, ptr %16, align 8, !tbaa !478 + %24 = getelementptr inbounds nuw %struct.CFF_VarData_, ptr %23, i64 %indvars.iv32 + %25 = getelementptr inbounds nuw i8, ptr %24, i64 8 + store ptr null, ptr %25, align 8, !tbaa !483 %indvars.iv.next33 = add nuw nsw i64 %indvars.iv32, 1 %24 = load i32, ptr %0, align 8, !tbaa !477 %25 = zext i32 %24 to i64 @@ -10003,7 +10005,7 @@ define internal fastcc void @cff_vstore_done(ptr noundef captures(none) %0, ptr br i1 %26, label %.lr.ph28, label %.loopexit, !llvm.loop !610 .loopexit: ; preds = %.lr.ph28, %.preheader, %.loopexit25 - %27 = phi ptr [ %17, %.preheader ], [ null, %.loopexit25 ], [ %22, %.lr.ph28 ] + %27 = phi ptr [ %17, %.preheader ], [ null, %.loopexit25 ], [ %23, %.lr.ph28 ] tail call void @ft_mem_free(ptr noundef %1, ptr noundef %27) #19 store ptr null, ptr %16, align 8, !tbaa !478 ret void diff --git a/bench/g2o/optimized/marginal_covariance_cholesky.ll b/bench/g2o/optimized/marginal_covariance_cholesky.ll index c0d6b4a6468..87c13f5ac06 100644 --- a/bench/g2o/optimized/marginal_covariance_cholesky.ll +++ b/bench/g2o/optimized/marginal_covariance_cholesky.ll @@ -4501,18 +4501,18 @@ define linkonce_odr void @_ZN3g2o17SparseBlockMatrixIN5Eigen6MatrixIdLin1ELin1EL .lr.ph34.split.us: ; preds = %.lr.ph34, %._crit_edge.split.us44.thread %14 = phi ptr [ %51, %._crit_edge.split.us44.thread ], [ %6, %.lr.ph34 ] %indvars.iv50 = phi i64 [ %indvars.iv.next51, %._crit_edge.split.us44.thread ], [ 0, %.lr.ph34 ] - %15 = getelementptr inbounds nuw %"class.std::map", ptr %14, i64 %indvars.iv50, i32 0, i32 0, i32 1, i32 0, i32 2 - %16 = load ptr, ptr %15, align 8, !tbaa !109 - %17 = getelementptr inbounds nuw %"class.std::map", ptr %14, i64 %indvars.iv50 - %18 = getelementptr inbounds nuw i8, ptr %17, i64 8 - %.not19.us = icmp eq ptr %16, %18 + %15 = getelementptr inbounds nuw %"class.std::map", ptr %14, i64 %indvars.iv50 + %16 = getelementptr inbounds nuw i8, ptr %15, i64 24 + %17 = load ptr, ptr %16, align 8, !tbaa !109 + %18 = getelementptr inbounds nuw i8, ptr %15, i64 8 + %.not19.us = icmp eq ptr %17, %18 %.pre54 = load i8, ptr %13, align 8, !tbaa !70, !range !81 br i1 %.not19.us, label %._crit_edge.split.us44, label %.lr.ph.us .lr.ph.split.split.us43: ; preds = %.lr.ph.us, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us39 %19 = phi ptr [ %37, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us39 ], [ %14, %.lr.ph.us ] %20 = phi ptr [ %38, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us39 ], [ %14, %.lr.ph.us ] - %.sroa.015.020.us36 = phi ptr [ %39, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us39 ], [ %16, %.lr.ph.us ] + %.sroa.015.020.us36 = phi ptr [ %39, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us39 ], [ %17, %.lr.ph.us ] %21 = getelementptr inbounds nuw i8, ptr %.sroa.015.020.us36, i64 40 %22 = load ptr, ptr %21, align 8, !tbaa !127 %23 = load i8, ptr %13, align 8, !tbaa !70, !range !81, !noundef !63 @@ -4561,7 +4561,7 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us39: ._crit_edge.split.us44: ; preds = %._crit_edge.split.us44.loopexit, %.lr.ph34.split.us %42 = phi ptr [ %14, %.lr.ph34.split.us ], [ %37, %._crit_edge.split.us44.loopexit ] %43 = phi i8 [ %.pre54, %.lr.ph34.split.us ], [ %.pre53, %._crit_edge.split.us44.loopexit ] - %.lcssa18.us = phi ptr [ %17, %.lr.ph34.split.us ], [ %40, %._crit_edge.split.us44.loopexit ] + %.lcssa18.us = phi ptr [ %15, %.lr.ph34.split.us ], [ %40, %._crit_edge.split.us44.loopexit ] %.lcssa.us = phi ptr [ %18, %.lr.ph34.split.us ], [ %41, %._crit_edge.split.us44.loopexit ] %44 = trunc nuw i8 %43 to i1 br i1 %44, label %45, label %._crit_edge.split.us44.thread @@ -4601,7 +4601,7 @@ _ZNSt3mapIiPN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEESt4lessIiESaISt4pairIKiS3_ br i1 %59, label %.lr.ph.split.split.us43, label %.lr.ph.split.split.us.us .lr.ph.split.split.us.us: ; preds = %.lr.ph.us, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us26.us - %.sroa.015.020.us23.us = phi ptr [ %69, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us26.us ], [ %16, %.lr.ph.us ] + %.sroa.015.020.us23.us = phi ptr [ %69, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us26.us ], [ %17, %.lr.ph.us ] %60 = getelementptr inbounds nuw i8, ptr %.sroa.015.020.us23.us, i64 40 %61 = load ptr, ptr %60, align 8, !tbaa !127 %62 = getelementptr inbounds nuw i8, ptr %61, i64 8 @@ -4639,18 +4639,20 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us26. 72: ; preds = %.lr.ph34.split.split, %._crit_edge.split.us %indvars.iv = phi i64 [ 0, %.lr.ph34.split.split ], [ %indvars.iv.next, %._crit_edge.split.us ] - %73 = getelementptr inbounds nuw %"class.std::map", ptr %6, i64 %indvars.iv, i32 0, i32 0, i32 1, i32 0, i32 2 - %74 = load ptr, ptr %73, align 8, !tbaa !109 - %75 = getelementptr inbounds nuw %"class.std::map", ptr %6, i64 %indvars.iv, i32 0, i32 0, i32 1 - %.not19 = icmp eq ptr %74, %75 + %73 = getelementptr inbounds nuw %"class.std::map", ptr %6, i64 %indvars.iv + %74 = getelementptr inbounds nuw i8, ptr %73, i64 24 + %75 = load ptr, ptr %74, align 8, !tbaa !109 + %76 = getelementptr inbounds nuw %"class.std::map", ptr %6, i64 %indvars.iv + %77 = getelementptr inbounds nuw i8, ptr %76, i64 8 + %.not19 = icmp eq ptr %75, %77 br i1 %.not19, label %._crit_edge.split.us, label %.lr.ph .lr.ph: ; preds = %72 - %76 = getelementptr inbounds nuw %"class.std::map", ptr %6, i64 %indvars.iv, i32 0, i32 0, i32 1 + %76 = getelementptr inbounds nuw i8, ptr %73, i64 8 br label %77 77: ; preds = %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us, %.lr.ph - %.sroa.015.020.us = phi ptr [ %74, %.lr.ph ], [ %87, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us ] + %.sroa.015.020.us = phi ptr [ %75, %.lr.ph ], [ %87, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us ] %78 = getelementptr inbounds nuw i8, ptr %.sroa.015.020.us, i64 40 %79 = load ptr, ptr %78, align 8, !tbaa !127 %80 = getelementptr inbounds nuw i8, ptr %79, i64 8 diff --git a/bench/g2o/optimized/vertex_ellipse.ll b/bench/g2o/optimized/vertex_ellipse.ll index 1848f273cae..84943d1aa17 100644 --- a/bench/g2o/optimized/vertex_ellipse.ll +++ b/bench/g2o/optimized/vertex_ellipse.ll @@ -642,28 +642,29 @@ define noundef zeroext i1 @_ZNK3g2o13VertexEllipse5writeERSo(ptr noundef nonnull ret i1 %51 .lr.ph: ; preds = %2, %.lr.ph - %52 = phi ptr [ %66, %.lr.ph ], [ %44, %2 ] - %.08 = phi i64 [ %64, %.lr.ph ], [ 0, %2 ] + %52 = phi ptr [ %67, %.lr.ph ], [ %44, %2 ] + %.08 = phi i64 [ %65, %.lr.ph ], [ 0, %2 ] %53 = getelementptr inbounds nuw %"class.Eigen::Matrix.13", ptr %52, i64 %.08 %54 = load float, ptr %53, align 4, !tbaa !6 %55 = fpext float %54 to double %56 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo9_M_insertIdEERSoT_(ptr noundef nonnull align 8 dereferenceable(8) %1, double noundef %55) %57 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull @.str, i64 noundef 1) %58 = load ptr, ptr %33, align 16, !tbaa !9 - %59 = getelementptr inbounds nuw %"class.Eigen::Matrix.13", ptr %58, i64 %.08, i32 0, i32 0, i32 0, i32 0, i64 1 - %60 = load float, ptr %59, align 4, !tbaa !6 - %61 = fpext float %60 to double - %62 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo9_M_insertIdEERSoT_(ptr noundef nonnull align 8 dereferenceable(8) %56, double noundef %61) - %63 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull @.str, i64 noundef 1) - %64 = add nuw i64 %.08, 1 - %65 = load ptr, ptr %34, align 8, !tbaa !54 - %66 = load ptr, ptr %33, align 16, !tbaa !9 - %67 = ptrtoint ptr %65 to i64 + %59 = getelementptr inbounds nuw %"class.Eigen::Matrix.13", ptr %58, i64 %.08 + %60 = getelementptr inbounds nuw i8, ptr %59, i64 4 + %61 = load float, ptr %60, align 4, !tbaa !6 + %62 = fpext float %61 to double + %63 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo9_M_insertIdEERSoT_(ptr noundef nonnull align 8 dereferenceable(8) %56, double noundef %62) + %64 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull @.str, i64 noundef 1) + %65 = add nuw i64 %.08, 1 + %66 = load ptr, ptr %34, align 8, !tbaa !54 + %67 = load ptr, ptr %33, align 16, !tbaa !9 %68 = ptrtoint ptr %66 to i64 - %69 = sub i64 %67, %68 - %70 = ashr exact i64 %69, 3 - %71 = icmp ult i64 %64, %70 - br i1 %71, label %.lr.ph, label %._crit_edge, !llvm.loop !72 + %69 = ptrtoint ptr %67 to i64 + %70 = sub i64 %68, %69 + %71 = ashr exact i64 %70, 3 + %72 = icmp ult i64 %65, %71 + br i1 %72, label %.lr.ph, label %._crit_edge, !llvm.loop !72 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/graphviz/optimized/dotinit.ll b/bench/graphviz/optimized/dotinit.ll index 34dc24dd661..8225a012d53 100644 --- a/bench/graphviz/optimized/dotinit.ll +++ b/bench/graphviz/optimized/dotinit.ll @@ -471,9 +471,10 @@ define internal fastcc void @dot_cleanup_graph(ptr noundef %0) unnamed_addr #0 { %30 = phi ptr [ %21, %.lr.ph32.preheader ], [ %35, %.lr.ph32 ] %31 = getelementptr inbounds nuw i8, ptr %30, i64 264 %32 = load ptr, ptr %31, align 8, !tbaa !99 - %33 = getelementptr inbounds %struct.rank_t, ptr %32, i64 %indvars.iv, i32 3 - %34 = load ptr, ptr %33, align 8, !tbaa !102 - tail call void @free(ptr noundef %34) #15 + %33 = getelementptr inbounds %struct.rank_t, ptr %32, i64 %indvars.iv + %34 = getelementptr inbounds nuw i8, ptr %33, i64 24 + %35 = load ptr, ptr %34, align 8, !tbaa !102 + tail call void @free(ptr noundef %35) #15 %indvars.iv.next = add nsw i64 %indvars.iv, 1 %35 = load ptr, ptr %4, align 8, !tbaa !3 %36 = getelementptr inbounds nuw i8, ptr %35, i64 340 diff --git a/bench/graphviz/optimized/heap.ll b/bench/graphviz/optimized/heap.ll index 6891c425459..4acaaad3c5f 100644 --- a/bench/graphviz/optimized/heap.ll +++ b/bench/graphviz/optimized/heap.ll @@ -197,18 +197,20 @@ define { double, double } @PQ_min(ptr noundef captures(none) %0) local_unnamed_a %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 %.promoted = load i32, ptr %3, align 8, !tbaa !22 %4 = sext i32 %.promoted to i64 - %5 = getelementptr inbounds %struct.Halfedge, ptr %2, i64 %4, i32 7 - %6 = load ptr, ptr %5, align 8, !tbaa !23 - %7 = icmp eq ptr %6, null - br i1 %7, label %.lr.ph, label %12 + %5 = getelementptr inbounds %struct.Halfedge, ptr %2, i64 %4 + %6 = getelementptr inbounds nuw i8, ptr %5, i64 48 + %7 = load ptr, ptr %6, align 8, !tbaa !23 + %8 = icmp eq ptr %7, null + br i1 %8, label %.lr.ph, label %14 .lr.ph: ; preds = %1, %.lr.ph %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %4, %1 ] %indvars.iv.next = add nsw i64 %indvars.iv, 1 - %8 = getelementptr inbounds %struct.Halfedge, ptr %2, i64 %indvars.iv.next, i32 7 - %9 = load ptr, ptr %8, align 8, !tbaa !23 - %10 = icmp eq ptr %9, null - br i1 %10, label %.lr.ph, label %._crit_edge, !llvm.loop !29 + %8 = getelementptr inbounds %struct.Halfedge, ptr %2, i64 %indvars.iv.next + %10 = getelementptr inbounds nuw i8, ptr %8, i64 48 + %11 = load ptr, ptr %10, align 8, !tbaa !23 + %12 = icmp eq ptr %11, null + br i1 %12, label %.lr.ph, label %._crit_edge, !llvm.loop !29 ._crit_edge: ; preds = %.lr.ph %11 = trunc nsw i64 %indvars.iv.next to i32 @@ -216,7 +218,7 @@ define { double, double } @PQ_min(ptr noundef captures(none) %0) local_unnamed_a br label %12 12: ; preds = %._crit_edge, %1 - %.lcssa = phi ptr [ %9, %._crit_edge ], [ %6, %1 ] + %.lcssa = phi ptr [ %11, %._crit_edge ], [ %7, %1 ] %13 = getelementptr inbounds nuw i8, ptr %.lcssa, i64 32 %14 = load ptr, ptr %13, align 8, !tbaa !3 %15 = load double, ptr %14, align 8, !tbaa !24 @@ -233,16 +235,17 @@ define ptr @PQextractmin(ptr noundef captures(none) %0) local_unnamed_addr #4 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 %4 = load i32, ptr %3, align 8, !tbaa !22 %5 = sext i32 %4 to i64 - %6 = getelementptr inbounds %struct.Halfedge, ptr %2, i64 %5, i32 7 - %7 = load ptr, ptr %6, align 8, !tbaa !23 - %8 = getelementptr inbounds nuw i8, ptr %7, i64 48 - %9 = load ptr, ptr %8, align 8, !tbaa !23 - store ptr %9, ptr %6, align 8, !tbaa !23 - %10 = getelementptr inbounds nuw i8, ptr %0, i64 12 - %11 = load i32, ptr %10, align 4, !tbaa !27 - %12 = add nsw i32 %11, -1 - store i32 %12, ptr %10, align 4, !tbaa !27 - ret ptr %7 + %6 = getelementptr inbounds %struct.Halfedge, ptr %2, i64 %5 + %7 = getelementptr inbounds nuw i8, ptr %6, i64 48 + %8 = load ptr, ptr %7, align 8, !tbaa !23 + %9 = getelementptr inbounds nuw i8, ptr %8, i64 48 + %10 = load ptr, ptr %9, align 8, !tbaa !23 + store ptr %10, ptr %7, align 8, !tbaa !23 + %11 = getelementptr inbounds nuw i8, ptr %0, i64 12 + %12 = load i32, ptr %11, align 4, !tbaa !27 + %13 = add nsw i32 %12, -1 + store i32 %13, ptr %11, align 4, !tbaa !27 + ret ptr %8 } ; Function Attrs: mustprogress nounwind willreturn uwtable diff --git a/bench/graphviz/optimized/sgraph.ll b/bench/graphviz/optimized/sgraph.ll index fd86e413a3f..e2777b90a49 100644 --- a/bench/graphviz/optimized/sgraph.ll +++ b/bench/graphviz/optimized/sgraph.ll @@ -90,8 +90,9 @@ define void @reset(ptr noundef captures(none) initializes((0, 8)) %0) local_unna 20: ; preds = %.lr.ph17, %20 %indvars.iv19 = phi i64 [ %.0.lcssa26, %.lr.ph17 ], [ %indvars.iv.next20, %20 ] - %21 = getelementptr inbounds nuw %struct.snode, ptr %13, i64 %indvars.iv19, i32 4 - store i16 0, ptr %21, align 8, !tbaa !15 + %21 = getelementptr inbounds nuw %struct.snode, ptr %13, i64 %indvars.iv19 + %22 = getelementptr inbounds nuw i8, ptr %21, i64 24 + store i16 0, ptr %22, align 8, !tbaa !15 %indvars.iv.next20 = add nuw nsw i64 %indvars.iv19, 1 %exitcond23.not = icmp eq i64 %indvars.iv.next20, %wide.trip.count22 br i1 %exitcond23.not, label %._crit_edge, label %20, !llvm.loop !24 @@ -188,7 +189,7 @@ gv_calloc.exit25: ; preds = %.thread.i24, %29 br i1 %41, label %.lr.ph31, label %._crit_edge .lr.ph31: ; preds = %.preheader.thread, %.preheader - %.0.lcssa47 = phi ptr [ %48, %.preheader.thread ], [ %20, %.preheader ] + %.0.lcssa47 = phi ptr [ %49, %.preheader.thread ], [ %20, %.preheader ] %.019.lcssa46 = phi i64 [ %49, %.preheader.thread ], [ 0, %.preheader ] %42 = add nsw i32 %3, 2 %43 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -199,10 +200,11 @@ gv_calloc.exit25: ; preds = %.thread.i24, %29 46: ; preds = %.lr.ph, %46 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %46 ] - %.027 = phi ptr [ %20, %.lr.ph ], [ %48, %46 ] - %47 = getelementptr inbounds nuw %struct.snode, ptr %40, i64 %indvars.iv, i32 7 - store ptr %.027, ptr %47, align 8, !tbaa !28 - %48 = getelementptr inbounds nuw i8, ptr %.027, i64 24 + %.027 = phi ptr [ %20, %.lr.ph ], [ %49, %46 ] + %47 = getelementptr inbounds nuw %struct.snode, ptr %40, i64 %indvars.iv + %48 = getelementptr inbounds nuw i8, ptr %47, i64 48 + store ptr %.027, ptr %48, align 8, !tbaa !28 + %49 = getelementptr inbounds nuw i8, ptr %.027, i64 24 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.preheader.thread, label %46, !llvm.loop !29 @@ -212,11 +214,12 @@ gv_calloc.exit25: ; preds = %.thread.i24, %29 br label %.lr.ph31 50: ; preds = %.lr.ph31, %50 - %indvars.iv34 = phi i64 [ %.019.lcssa46, %.lr.ph31 ], [ %indvars.iv.next35, %50 ] - %.130 = phi ptr [ %.0.lcssa47, %.lr.ph31 ], [ %52, %50 ] - %51 = getelementptr inbounds nuw %struct.snode, ptr %44, i64 %indvars.iv34, i32 7 - store ptr %.130, ptr %51, align 8, !tbaa !28 - %52 = getelementptr inbounds i32, ptr %.130, i64 %45 + %indvars.iv34 = phi i64 [ %.019.lcssa46, %.lr.ph31 ], [ %indvars.iv.next35, %51 ] + %.130 = phi ptr [ %.0.lcssa47, %.lr.ph31 ], [ %54, %51 ] + %51 = getelementptr inbounds nuw %struct.snode, ptr %44, i64 %indvars.iv34 + %53 = getelementptr inbounds nuw i8, ptr %51, i64 48 + store ptr %.130, ptr %53, align 8, !tbaa !28 + %54 = getelementptr inbounds i32, ptr %.130, i64 %45 %indvars.iv.next35 = add nuw nsw i64 %indvars.iv34, 1 %exitcond38.not = icmp eq i64 %indvars.iv.next35, %wide.trip.count37 br i1 %exitcond38.not, label %._crit_edge, label %50, !llvm.loop !30 diff --git a/bench/gromacs/optimized/parrinellorahmanbarostat.ll b/bench/gromacs/optimized/parrinellorahmanbarostat.ll index 4e880a761aa..733103d3b34 100644 --- a/bench/gromacs/optimized/parrinellorahmanbarostat.ll +++ b/bench/gromacs/optimized/parrinellorahmanbarostat.ll @@ -2009,11 +2009,11 @@ define void @_ZN3gmx24ParrinelloRahmanBarostat20scaleBoxAndPositionsEv(ptr nound %exitcond.not = icmp eq i64 %indvars.iv.next, %indvars.iv56 br i1 %exitcond.not, label %28, label %29, !llvm.loop !265 -._crit_edge: ; preds = %116, %10 +._crit_edge: ; preds = %117, %10 ret void -36: ; preds = %.lr.ph, %116 - %indvars.iv64 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next65, %116 ] +36: ; preds = %.lr.ph, %117 + %indvars.iv64 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next65, %117 ] %37 = load ptr, ptr %16, align 8, !tbaa !195 %38 = load ptr, ptr %37, align 8, !tbaa !227 %39 = getelementptr inbounds nuw i8, ptr %38, i64 520 @@ -2052,7 +2052,7 @@ define void @_ZN3gmx24ParrinelloRahmanBarostat20scaleBoxAndPositionsEv(ptr nound %67 = fmul float %57, %66 store <2 x float> %.sroa.0.4.vec.insert.i, ptr %45, align 4 store float %67, ptr %56, align 4, !tbaa !156 - br label %116 + br label %117 68: ; preds = %36 %69 = getelementptr inbounds nuw i16, ptr %40, i64 %indvars.iv64 @@ -2108,19 +2108,20 @@ define void @_ZN3gmx24ParrinelloRahmanBarostat20scaleBoxAndPositionsEv(ptr nound %107 = getelementptr inbounds nuw i8, ptr %72, i64 8 %108 = load i32, ptr %107, align 4, !tbaa !269 %.not36 = icmp eq i32 %108, 0 - br i1 %.not36, label %109, label %116 + br i1 %.not36, label %109, label %117 109: ; preds = %106 %110 = load ptr, ptr %27, align 8, !tbaa !150 %111 = getelementptr i8, ptr %110, i64 32 %112 = load float, ptr %111, align 4, !tbaa !153 - %113 = getelementptr inbounds nuw %"class.gmx::BasicVector", ptr %22, i64 %indvars.iv64, i32 0, i64 2 - %114 = load float, ptr %113, align 4, !tbaa !153 - %115 = fmul float %112, %114 - store float %115, ptr %113, align 4, !tbaa !153 - br label %116 - -116: ; preds = %106, %109, %44 + %113 = getelementptr inbounds nuw %"class.gmx::BasicVector", ptr %22, i64 %indvars.iv64 + %114 = getelementptr inbounds nuw i8, ptr %113, i64 8 + %115 = load float, ptr %114, align 4, !tbaa !153 + %116 = fmul float %112, %115 + store float %116, ptr %114, align 4, !tbaa !153 + br label %117 + +117: ; preds = %106, %109, %44 %indvars.iv.next65 = add nuw nsw i64 %indvars.iv64, 1 %exitcond67.not = icmp eq i64 %indvars.iv.next65, %wide.trip.count br i1 %exitcond67.not, label %._crit_edge, label %36, !llvm.loop !270 diff --git a/bench/harfbuzz/optimized/hb-ot-cff1-table.ll b/bench/harfbuzz/optimized/hb-ot-cff1-table.ll index 2817ef9ad85..fcf6e3283d0 100644 --- a/bench/harfbuzz/optimized/hb-ot-cff1-table.ll +++ b/bench/harfbuzz/optimized/hb-ot-cff1-table.ll @@ -244,13 +244,14 @@ define hidden noundef range(i32 0, 256) i32 @_ZN2OT4cff131lookup_expert_charset_ br i1 %.not.not.i.i.i.i, label %_ZN17hb_sorted_array_tIK12sid_to_gid_tE7bsearchIjEEPS1_RKT_S4_.exit.thread, label %2, !llvm.loop !11 16: ; preds = %12 - %17 = getelementptr inbounds nuw %struct.sid_to_gid_t, ptr @_ZL25expert_charset_sid_to_gid, i64 %5, i32 1 - %18 = load i8, ptr %17, align 2, !tbaa !13 - %19 = zext i8 %18 to i32 + %17 = getelementptr inbounds nuw %struct.sid_to_gid_t, ptr @_ZL25expert_charset_sid_to_gid, i64 %5 + %18 = getelementptr inbounds nuw i8, ptr %17, i64 2 + %19 = load i8, ptr %18, align 2, !tbaa !13 + %20 = zext i8 %19 to i32 br label %_ZN17hb_sorted_array_tIK12sid_to_gid_tE7bsearchIjEEPS1_RKT_S4_.exit.thread _ZN17hb_sorted_array_tIK12sid_to_gid_tE7bsearchIjEEPS1_RKT_S4_.exit.thread: ; preds = %15, %16 - %20 = phi i32 [ %19, %16 ], [ 0, %15 ] + %20 = phi i32 [ %20, %16 ], [ 0, %15 ] ret i32 %20 } @@ -291,13 +292,14 @@ define hidden noundef range(i32 0, 256) i32 @_ZN2OT4cff138lookup_expert_subset_c br i1 %.not.not.i.i.i.i, label %_ZN17hb_sorted_array_tIK12sid_to_gid_tE7bsearchIjEEPS1_RKT_S4_.exit.thread, label %2, !llvm.loop !11 16: ; preds = %12 - %17 = getelementptr inbounds nuw %struct.sid_to_gid_t, ptr @_ZL32expert_subset_charset_sid_to_gid, i64 %5, i32 1 - %18 = load i8, ptr %17, align 2, !tbaa !13 - %19 = zext i8 %18 to i32 + %17 = getelementptr inbounds nuw %struct.sid_to_gid_t, ptr @_ZL32expert_subset_charset_sid_to_gid, i64 %5 + %18 = getelementptr inbounds nuw i8, ptr %17, i64 2 + %19 = load i8, ptr %18, align 2, !tbaa !13 + %20 = zext i8 %19 to i32 br label %_ZN17hb_sorted_array_tIK12sid_to_gid_tE7bsearchIjEEPS1_RKT_S4_.exit.thread _ZN17hb_sorted_array_tIK12sid_to_gid_tE7bsearchIjEEPS1_RKT_S4_.exit.thread: ; preds = %15, %16 - %20 = phi i32 [ %19, %16 ], [ 0, %15 ] + %20 = phi i32 [ %20, %16 ], [ 0, %15 ] ret i32 %20 } diff --git a/bench/hdf5/optimized/H5FSdbg.ll b/bench/hdf5/optimized/H5FSdbg.ll index 56834f2fee2..b8e583a7326 100644 --- a/bench/hdf5/optimized/H5FSdbg.ll +++ b/bench/hdf5/optimized/H5FSdbg.ll @@ -174,7 +174,7 @@ define range(i32 -1, 1) i32 @H5FS_sect_debug(ptr noundef readonly captures(none) 11: ; preds = %5 %12 = xor i1 %9, true %13 = select i1 %7, i1 true, i1 %12 - br i1 %13, label %14, label %29, !prof !10 + br i1 %13, label %14, label %30, !prof !10 14: ; preds = %.thread, %11 %15 = getelementptr inbounds nuw i8, ptr %0, i64 408 @@ -182,24 +182,25 @@ define range(i32 -1, 1) i32 @H5FS_sect_debug(ptr noundef readonly captures(none) %17 = getelementptr inbounds nuw i8, ptr %1, i64 16 %18 = load i32, ptr %17, align 8, !tbaa !46 %19 = zext i32 %18 to i64 - %20 = getelementptr inbounds nuw %struct.H5FS_section_class_t, ptr %16, i64 %19, i32 16 - %21 = load ptr, ptr %20, align 8, !tbaa !48 - %.not = icmp eq ptr %21, null - br i1 %.not, label %29, label %22 - -22: ; preds = %14 - %23 = tail call i32 %21(ptr noundef nonnull %1, ptr noundef %2, i32 noundef %3, i32 noundef %4) #7 - %24 = icmp slt i32 %23, 0 - br i1 %24, label %25, label %29 - -25: ; preds = %22 - %26 = load i64, ptr @H5E_FSPACE_g, align 8, !tbaa !20 - %27 = load i64, ptr @H5E_BADITER_g, align 8, !tbaa !20 - %28 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5FS_sect_debug, i32 noundef 176, i64 noundef %26, i64 noundef %27, ptr noundef nonnull @.str.25) #7 - br label %29 - -29: ; preds = %25, %22, %14, %11 - %.0 = phi i32 [ -1, %25 ], [ 0, %22 ], [ 0, %14 ], [ 0, %11 ] + %20 = getelementptr inbounds nuw %struct.H5FS_section_class_t, ptr %16, i64 %19 + %21 = getelementptr inbounds nuw i8, ptr %20, i64 128 + %22 = load ptr, ptr %21, align 8, !tbaa !48 + %.not = icmp eq ptr %22, null + br i1 %.not, label %30, label %23 + +23:; preds = %14 + %24 = tail call i32 %22(ptr noundef nonnull %1, ptr noundef %2, i32 noundef %3, i32 noundef %4) #7 + %25 = icmp slt i32 %24, 0 + br i1 %25, label %26, label %30 + +26:; preds = %23 + %27 = load i64, ptr @H5E_FSPACE_g, align 8, !tbaa !20 + %28 = load i64, ptr @H5E_BADITER_g, align 8, !tbaa !20 + %29 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5FS_sect_debug, i32 noundef 176, i64 noundef %27, i64 noundef %28, ptr noundef nonnull @.str.25) #7 + br label %30 + +30:; preds = %26, %23, %14, %11 + %.0 = phi i32 [ -1, %26 ], [ 0, %23 ], [ 0, %14 ], [ 0, %11 ] ret i32 %.0 } diff --git a/bench/hdf5/optimized/H5SMtest.ll b/bench/hdf5/optimized/H5SMtest.ll index 597dad8ffb7..7a8b587e106 100644 --- a/bench/hdf5/optimized/H5SMtest.ll +++ b/bench/hdf5/optimized/H5SMtest.ll @@ -77,10 +77,11 @@ define range(i32 -1, 1) i32 @H5SM__get_mesg_count_test(ptr noundef %0, i32 nound 33: ; preds = %26 %34 = getelementptr inbounds nuw i8, ptr %17, i64 264 %35 = load ptr, ptr %34, align 8, !tbaa !16 - %36 = getelementptr inbounds nuw %struct.H5SM_index_header_t, ptr %35, i64 %27, i32 4 - %37 = load i64, ptr %36, align 8, !tbaa !26 - store i64 %37, ptr %2, align 8, !tbaa !3 - br label %42 + %36 = getelementptr inbounds nuw %struct.H5SM_index_header_t, ptr %35, i64 %27 + %37 = getelementptr inbounds nuw i8, ptr %36, i64 32 + %38 = load i64, ptr %37, align 8, !tbaa !26 + store i64 %38, ptr %2, align 8, !tbaa !3 + br label %43 .thread: ; preds = %13 store i64 0, ptr %2, align 8, !tbaa !3 @@ -110,7 +111,7 @@ define range(i32 -1, 1) i32 @H5SM__get_mesg_count_test(ptr noundef %0, i32 nound br label %50 50: ; preds = %3, %46, %42, %.thread, %38 - %.021 = phi i32 [ -1, %46 ], [ %.1.ph, %42 ], [ -1, %38 ], [ 0, %3 ], [ 0, %.thread ] + %.021 = phi i32 [ -1, %47 ], [ %.1.ph, %43 ], [ -1, %39 ], [ 0, %3 ], [ 0, %.thread ] %51 = load i64, ptr %4, align 8, !tbaa !3 call void @H5AC_tag(i64 noundef %51, ptr noundef null) #3 call void @llvm.lifetime.end.p0(ptr nonnull %4) diff --git a/bench/html5ever-rs/optimized/2p0p1zz6gwjy9c4w.ll b/bench/html5ever-rs/optimized/2p0p1zz6gwjy9c4w.ll index af4a0481099..e1ed2abbf79 100644 --- a/bench/html5ever-rs/optimized/2p0p1zz6gwjy9c4w.ll +++ b/bench/html5ever-rs/optimized/2p0p1zz6gwjy9c4w.ll @@ -827,10 +827,11 @@ define hidden void @"_ZN4core3ptr181drop_in_place$LT$$u5b$lock_api..mutex..Mutex br i1 %3, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %2, %"_ZN4core3ptr171drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$core..option..Option$LT$alloc..boxed..Box$LT$string_cache..dynamic_set..Entry$GT$$GT$$GT$$GT$17h6834cd0fd8d9fe4fE.llvm.10022686776672290337.exit" - %.08 = phi i64 [ %4, %"_ZN4core3ptr171drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$core..option..Option$LT$alloc..boxed..Box$LT$string_cache..dynamic_set..Entry$GT$$GT$$GT$$GT$17h6834cd0fd8d9fe4fE.llvm.10022686776672290337.exit" ], [ 0, %2 ] - %4 = add nuw i64 %.08, 1 + %.08 = phi i64 [ %5, %"_ZN4core3ptr171drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$core..option..Option$LT$alloc..boxed..Box$LT$string_cache..dynamic_set..Entry$GT$$GT$$GT$$GT$17h6834cd0fd8d9fe4fE.llvm.10022686776672290337.exit" ], [ 0, %2 ] + %4 = getelementptr inbounds { { { i8 } }, [7 x i8], ptr }, ptr %0, i64 %.08 + %5 = add nuw i64 %.08, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !274) - %5 = getelementptr inbounds { { { i8 } }, [7 x i8], ptr }, ptr %0, i64 %.08, i32 2 + %5 = getelementptr inbounds nuw i8, ptr %4, i64 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !277) tail call void @llvm.experimental.noalias.scope.decl(metadata !280) %6 = load ptr, ptr %5, align 8, !alias.scope !283, !noundef !4 @@ -852,14 +853,14 @@ define hidden void @"_ZN4core3ptr181drop_in_place$LT$$u5b$lock_api..mutex..Mutex br label %"_ZN4core3ptr171drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$core..option..Option$LT$alloc..boxed..Box$LT$string_cache..dynamic_set..Entry$GT$$GT$$GT$$GT$17h6834cd0fd8d9fe4fE.llvm.10022686776672290337.exit" "_ZN4core3ptr171drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$core..option..Option$LT$alloc..boxed..Box$LT$string_cache..dynamic_set..Entry$GT$$GT$$GT$$GT$17h6834cd0fd8d9fe4fE.llvm.10022686776672290337.exit": ; preds = %.lr.ph, %"_ZN4core3ptr78drop_in_place$LT$alloc..boxed..Box$LT$string_cache..dynamic_set..Entry$GT$$GT$17h0a8829758edaec9bE.llvm.10022686776672290337.exit.i.i.i" - %10 = icmp eq i64 %4, %1 + %10 = icmp eq i64 %5, %1 br i1 %10, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %"_ZN4core3ptr171drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$core..option..Option$LT$alloc..boxed..Box$LT$string_cache..dynamic_set..Entry$GT$$GT$$GT$$GT$17h6834cd0fd8d9fe4fE.llvm.10022686776672290337.exit", %2 ret void 11: ; preds = %13, %.body - %.1 = phi i64 [ %4, %.body ], [ %15, %13 ] + %.1 = phi i64 [ %5, %.body ], [ %15, %14 ] %12 = icmp eq i64 %.1, %1 br i1 %12, label %16, label %13 @@ -928,9 +929,10 @@ define hidden void @"_ZN4core3ptr206drop_in_place$LT$alloc..boxed..Box$LT$$u5b$l .lr.ph.i: ; preds = %1, %"_ZN4core3ptr171drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$core..option..Option$LT$alloc..boxed..Box$LT$string_cache..dynamic_set..Entry$GT$$GT$$GT$$GT$17h6834cd0fd8d9fe4fE.llvm.10022686776672290337.exit.i" %.08.i = phi i64 [ %6, %"_ZN4core3ptr171drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$core..option..Option$LT$alloc..boxed..Box$LT$string_cache..dynamic_set..Entry$GT$$GT$$GT$$GT$17h6834cd0fd8d9fe4fE.llvm.10022686776672290337.exit.i" ], [ 0, %1 ] - %6 = add nuw i64 %.08.i, 1 + %6 = getelementptr inbounds { { { i8 } }, [7 x i8], ptr }, ptr %2, i64 %.08.i + %7 = add nuw i64 %.08.i, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !306) - %7 = getelementptr inbounds { { { i8 } }, [7 x i8], ptr }, ptr %2, i64 %.08.i, i32 2 + %7 = getelementptr inbounds nuw i8, ptr %6, i64 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !309) tail call void @llvm.experimental.noalias.scope.decl(metadata !312) %8 = load ptr, ptr %7, align 8, !alias.scope !315, !noundef !4 @@ -964,7 +966,7 @@ define hidden void @"_ZN4core3ptr206drop_in_place$LT$alloc..boxed..Box$LT$$u5b$l %16 = getelementptr inbounds { { { i8 } }, [7 x i8], ptr }, ptr %2, i64 %.1.i %17 = add i64 %.1.i, 1 invoke void @"_ZN4core3ptr171drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$core..option..Option$LT$alloc..boxed..Box$LT$string_cache..dynamic_set..Entry$GT$$GT$$GT$$GT$17h6834cd0fd8d9fe4fE.llvm.10022686776672290337"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %16) #25 - to label %13 unwind label %18 + to label %14 unwind label %18 18: ; preds = %15 %19 = landingpad { ptr, i32 } diff --git a/bench/html5ever-rs/optimized/2smemja2l5hlqxk7.ll b/bench/html5ever-rs/optimized/2smemja2l5hlqxk7.ll index dd2a1ea6908..14db6d88ba3 100644 --- a/bench/html5ever-rs/optimized/2smemja2l5hlqxk7.ll +++ b/bench/html5ever-rs/optimized/2smemja2l5hlqxk7.ll @@ -59,8 +59,6 @@ define noundef zeroext i1 @"_ZN73_$LT$markup5ever..interface..ExpandedName$u20$a 12: ; preds = %2 %13 = inttoptr i64 %8 to ptr - %14 = getelementptr inbounds nuw i8, ptr %13, i64 8 - %15 = load i64, ptr %14, align 8, !noalias !6, !noundef !4 br label %"_ZN82_$LT$string_cache..atom..Atom$LT$Static$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h8a818541783fc6ecE.exit" 16: ; preds = %2 @@ -79,24 +77,29 @@ define noundef zeroext i1 @"_ZN73_$LT$markup5ever..interface..ExpandedName$u20$a br i1 %23, label %24, label %27, !prof !13 24: ; preds = %21 - %25 = getelementptr inbounds nuw { ptr, i64 }, ptr @anon.6dd4c94a770fa611fd0f90a1f94be9fc.1125.llvm.11517934075587973166, i64 %22, i32 1 - %26 = load i64, ptr %25, align 8, !noalias !6, !noundef !4 + %25 = getelementptr inbounds nuw { ptr, i64 }, ptr @anon.6dd4c94a770fa611fd0f90a1f94be9fc.1125.llvm.11517934075587973166, i64 %22 br label %"_ZN82_$LT$string_cache..atom..Atom$LT$Static$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h8a818541783fc6ecE.exit" 27: ; preds = %21 tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %22, i64 noundef 8, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.016dfb9ce9075adca8c7fec1e32a579b.7) #5, !noalias !6 unreachable -"_ZN82_$LT$string_cache..atom..Atom$LT$Static$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h8a818541783fc6ecE.exit": ; preds = %16, %12, %24 - %.pn9.i = phi i64 [ %15, %12 ], [ %26, %24 ], [ %18, %16 ] - %28 = icmp eq i64 %.pn9.i, 0 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 8 - br i1 %28, label %30, label %37 +"_ZN82_$LT$string_cache..atom..Atom$LT$Static$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h8a818541783fc6ecE.exit": ; preds = %22, %12 + %.pn9.i = phi ptr [ %13, %12 ], [ %23, %22 ] + %25 = getelementptr inbounds nuw i8, ptr %.pn9.i, i64 8 + %26 = load i64, ptr %25, align 8, !noalias !6, !noundef !4 + br label %"_ZN82_$LT$string_cache..atom..Atom$LT$Static$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h8a818541783fc6ecE.exit" + +"_ZN82_$LT$string_cache..atom..Atom$LT$Static$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h8a818541783fc6ecE.exit": ; preds = %"_ZN82_$LT$string_cache..atom..Atom$LT$Static$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h8a818541783fc6ecE.exit.sink.split", %14 + %.pn9.i = phi i64 [ %16, %14 ], [ %26, %"_ZN82_$LT$string_cache..atom..Atom$LT$Static$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h8a818541783fc6ecE.exit.sink.split" ] + %27 = icmp eq i64 %.pn9.i, 0 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 + br i1 %27, label %29, label %36 30: ; preds = %"_ZN82_$LT$string_cache..atom..Atom$LT$Static$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h8a818541783fc6ecE.exit" call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @llvm.lifetime.start.p0(ptr nonnull %5) - store ptr %29, ptr %5, align 8 + store ptr %28, ptr %5, align 8 %31 = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17he12a90a8b2e89b03E", ptr %31, align 8 store ptr @anon.016dfb9ce9075adca8c7fec1e32a579b.8, ptr %6, align 8, !alias.scope !14, !noalias !17 @@ -120,7 +123,7 @@ define noundef zeroext i1 @"_ZN73_$LT$markup5ever..interface..ExpandedName$u20$a %38 = getelementptr inbounds nuw i8, ptr %3, i64 8 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h47802257a9daf330E", ptr %38, align 8 %39 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store ptr %29, ptr %39, align 8 + store ptr %28, ptr %39, align 8 %40 = getelementptr inbounds nuw i8, ptr %3, i64 24 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17he12a90a8b2e89b03E", ptr %40, align 8 store ptr @anon.016dfb9ce9075adca8c7fec1e32a579b.11, ptr %4, align 8, !alias.scope !20, !noalias !23 @@ -138,7 +141,7 @@ define noundef zeroext i1 @"_ZN73_$LT$markup5ever..interface..ExpandedName$u20$a br label %46 46: ; preds = %37, %30 - %.0.in = phi i1 [ %36, %30 ], [ %45, %37 ] + %.0.in = phi i1 [ %36, %29 ], [ %45, %36 ] ret i1 %.0.in } diff --git a/bench/hwloc/optimized/hwloc-annotate.ll b/bench/hwloc/optimized/hwloc-annotate.ll index 86b59dc1ba1..ba7bb5e7768 100644 --- a/bench/hwloc/optimized/hwloc-annotate.ll +++ b/bench/hwloc/optimized/hwloc-annotate.ll @@ -3267,25 +3267,25 @@ define internal fastcc i64 @hwloc_utils_parse_flags(ptr noundef %0, ptr noundef %indvars.iv116 = phi i64 [ %indvars.iv.next117, %50 ], [ 0, %38 ] %.064102.us = phi i32 [ %.165.us, %50 ], [ 0, %38 ] %.3100.us = phi i64 [ %.4.us, %50 ], [ %.069, %38 ] - %42 = getelementptr inbounds nuw %struct.hwloc_utils_parsing_flag, ptr %1, i64 %indvars.iv116, i32 1 - %43 = load ptr, ptr %42, align 8, !tbaa !99 - %44 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %43, ptr noundef nonnull dereferenceable(1) %31) #29 - %.not83.us = icmp eq ptr %44, null - br i1 %.not83.us, label %50, label %45 - -45: ; preds = %.split.us + %42 = getelementptr inbounds nuw %struct.hwloc_utils_parsing_flag, ptr %1, i64 %indvars.iv116 + %43 = getelementptr inbounds nuw i8, ptr %42, i64 8 + %44 = load ptr, ptr %43, align 8, !tbaa !99 + %45 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %44, ptr noundef nonnull dereferenceable(1) %31) #29 + %.not83.us = icmp eq ptr %45, null + br i1 %.not83.us, label %50, label %46 + +46: ; preds = %.split.us %.not85.us = icmp eq i32 %.064102.us, 0 br i1 %.not85.us, label %46, label %.split104.us -46: ; preds = %45 - %47 = getelementptr inbounds nuw %struct.hwloc_utils_parsing_flag, ptr %1, i64 %indvars.iv116 - %48 = load i64, ptr %47, align 8, !tbaa !101 +46: ; preds = %46 + %48 = load i64, ptr %42, align 8, !tbaa !101 %49 = or i64 %48, %.3100.us br label %50 50: ; preds = %46, %.split.us - %.4.us = phi i64 [ %49, %46 ], [ %.3100.us, %.split.us ] - %.165.us = phi i32 [ 1, %46 ], [ %.064102.us, %.split.us ] + %.4.us = phi i64 [ %49, %47 ], [ %.3100.us, %.split.us ] + %.165.us = phi i32 [ 1, %47 ], [ %.064102.us, %.split.us ] %indvars.iv.next117 = add nuw nsw i64 %indvars.iv116, 1 %exitcond120.not = icmp eq i64 %indvars.iv.next117, %wide.trip.count119 br i1 %exitcond120.not, label %.split106.us, label %.split.us, !llvm.loop !102 @@ -3294,34 +3294,34 @@ define internal fastcc i64 @hwloc_utils_parse_flags(ptr noundef %0, ptr noundef %indvars.iv = phi i64 [ 0, %.split ], [ %indvars.iv.next, %65 ] %.064102 = phi i32 [ 0, %.split ], [ %.165, %65 ] %.3100 = phi i64 [ %.069, %.split ], [ %.4, %65 ] - %52 = getelementptr inbounds nuw %struct.hwloc_utils_parsing_flag, ptr %1, i64 %indvars.iv, i32 1 - %53 = load ptr, ptr %52, align 8, !tbaa !99 - %54 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %53) #29 - %55 = getelementptr inbounds nuw i8, ptr %53, i64 %54 - %56 = getelementptr inbounds i8, ptr %55, i64 %41 - %57 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) %56) #29 - %.not84 = icmp eq i32 %57, 0 - br i1 %.not84, label %58, label %65 - -58: ; preds = %51 + %52 = getelementptr inbounds nuw %struct.hwloc_utils_parsing_flag, ptr %1, i64 %indvars.iv + %53 = getelementptr inbounds nuw i8, ptr %52, i64 8 + %54 = load ptr, ptr %53, align 8, !tbaa !99 + %55 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %54) #29 + %56 = getelementptr inbounds nuw i8, ptr %54, i64 %55 + %57 = getelementptr inbounds i8, ptr %56, i64 %41 + %58 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) %57) #29 + %.not84 = icmp eq i32 %58, 0 + br i1 %.not84, label %59, label %65 + +59: ; preds = %51 %.not85 = icmp eq i32 %.064102, 0 br i1 %.not85, label %61, label %.split104.us -.split104.us: ; preds = %58, %45 +.split104.us: ; preds = %59, %46 %59 = load ptr, ptr @stderr, align 8, !tbaa !9 %60 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %59, ptr noundef nonnull @.str.87, ptr noundef %3, ptr noundef nonnull %31) #31 tail call fastcc void @hwloc_utils_parsing_flag_error(ptr noundef %3, ptr noundef %1, i32 noundef %2) br label %.thread -61: ; preds = %58 - %62 = getelementptr inbounds nuw %struct.hwloc_utils_parsing_flag, ptr %1, i64 %indvars.iv - %63 = load i64, ptr %62, align 8, !tbaa !101 +61: ; preds = %59 + %63 = load i64, ptr %52, align 8, !tbaa !101 %64 = or i64 %63, %.3100 br label %65 65: ; preds = %51, %61 - %.4 = phi i64 [ %.3100, %51 ], [ %64, %61 ] - %.165 = phi i32 [ %.064102, %51 ], [ 1, %61 ] + %.4 = phi i64 [ %.3100, %51 ], [ %64, %62 ] + %.165 = phi i32 [ %.064102, %51 ], [ 1, %62 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.split106.us, label %51, !llvm.loop !102 @@ -3376,11 +3376,12 @@ define internal fastcc void @hwloc_utils_parsing_flag_error(ptr noundef %0, ptr %7 = load ptr, ptr @stderr, align 8, !tbaa !9 %8 = tail call i64 @fwrite(ptr nonnull @.str.90, i64 2, i64 1, ptr %7) #34 %9 = load ptr, ptr @stderr, align 8, !tbaa !9 - %10 = getelementptr inbounds nuw %struct.hwloc_utils_parsing_flag, ptr %1, i64 %indvars.iv, i32 1 - %11 = load ptr, ptr %10, align 8, !tbaa !99 - %fputs = tail call i32 @fputs(ptr %11, ptr %9) #34 - %12 = load ptr, ptr @stderr, align 8, !tbaa !9 - %fputc = tail call i32 @fputc(i32 10, ptr %12) + %10 = getelementptr inbounds nuw %struct.hwloc_utils_parsing_flag, ptr %1, i64 %indvars.iv + %11 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %12 = load ptr, ptr %11, align 8, !tbaa !99 + %fputs = tail call i32 @fputs(ptr %12, ptr %9) #34 + %13 = load ptr, ptr @stderr, align 8, !tbaa !9 + %fputc = tail call i32 @fputc(i32 10, ptr %13) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %13, label %6, !llvm.loop !103 diff --git a/bench/hwloc/optimized/hwloc-ps.ll b/bench/hwloc/optimized/hwloc-ps.ll index 04f95440e8e..ce80d2580d0 100644 --- a/bench/hwloc/optimized/hwloc-ps.ll +++ b/bench/hwloc/optimized/hwloc-ps.ll @@ -1540,21 +1540,21 @@ define internal fastcc void @print_process_lstopo_misc(ptr noundef %0) unnamed_a br label %23 23: ; preds = %.lr.ph, %46 - %24 = phi i32 [ %21, %.lr.ph ], [ %47, %46 ] - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %46 ] + %24 = phi i32 [ %21, %.lr.ph ], [ %47, %47 ] + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %47 ] %25 = load ptr, ptr %22, align 8, !tbaa !44 - %26 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %25, i64 %indvars.iv, i32 1 - %27 = load ptr, ptr %26, align 8, !tbaa !45 - %.not21 = icmp eq ptr %27, null - br i1 %.not21, label %46, label %28 + %26 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %25, i64 %indvars.iv + %27 = getelementptr inbounds nuw i8, ptr %26, i64 8 + %28 = load ptr, ptr %27, align 8, !tbaa !45 + %.not21 = icmp eq ptr %28, null + br i1 %.not21, label %47, label %29 28: ; preds = %23 call void @llvm.lifetime.start.p0(ptr nonnull %4) - %29 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %25, i64 %indvars.iv - %30 = getelementptr inbounds nuw i8, ptr %29, i64 20 + %29 = getelementptr inbounds nuw i8, ptr %26, i64 20 %31 = load i8, ptr %30, align 4, !tbaa !34 %.not22 = icmp eq i8 %31, 0 - %32 = load i64, ptr %29, align 8, !tbaa !47 + %32 = load i64, ptr %26, align 8, !tbaa !47 br i1 %.not22, label %35, label %33 33: ; preds = %28 @@ -1567,14 +1567,15 @@ define internal fastcc void @print_process_lstopo_misc(ptr noundef %0) unnamed_a 37: ; preds = %35, %33 %38 = load ptr, ptr %22, align 8, !tbaa !44 - %39 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %38, i64 %indvars.iv, i32 1 - %40 = load ptr, ptr %39, align 8, !tbaa !45 - %41 = call i32 @hwloc_bitmap_asprintf(ptr noundef nonnull %3, ptr noundef %40) #16 - %42 = load ptr, ptr @lstopo_misc_output, align 8, !tbaa !11 - %43 = load ptr, ptr %3, align 8, !tbaa !8 - %44 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %42, ptr noundef nonnull @.str.92, ptr noundef nonnull %4, ptr noundef %43) #16 - %45 = load ptr, ptr %3, align 8, !tbaa !8 - call void @free(ptr noundef %45) #16 + %39 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %38, i64 %indvars.iv + %40 = getelementptr inbounds nuw i8, ptr %39, i64 8 + %41 = load ptr, ptr %40, align 8, !tbaa !45 + %42 = call i32 @hwloc_bitmap_asprintf(ptr noundef nonnull %3, ptr noundef %41) #16 + %43 = load ptr, ptr @lstopo_misc_output, align 8, !tbaa !11 + %44 = load ptr, ptr %3, align 8, !tbaa !8 + %45 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %43, ptr noundef nonnull @.str.92, ptr noundef nonnull %4, ptr noundef %44) #16 + %46 = load ptr, ptr %3, align 8, !tbaa !8 + call void @free(ptr noundef %46) #16 call void @llvm.lifetime.end.p0(ptr nonnull %4) %.pre = load i32, ptr %20, align 4, !tbaa !42 br label %46 diff --git a/bench/hyperscan/optimized/tamarama.ll b/bench/hyperscan/optimized/tamarama.ll index a27e12d4b61..2af1320fffa 100644 --- a/bench/hyperscan/optimized/tamarama.ll +++ b/bench/hyperscan/optimized/tamarama.ll @@ -210,8 +210,7 @@ loadActiveIdx.exit: ; preds = %3, %46, %48, %56, % %63 = getelementptr inbounds nuw i8, ptr %1, i64 8 %64 = load i32, ptr %63, align 8 %65 = zext i32 %64 to i64 - %.idx = mul nuw nsw i64 %65, 24 - %66 = getelementptr inbounds nuw i8, ptr %62, i64 %.idx + %66 = getelementptr inbounds nuw %struct.mq_item, ptr %62, i64 %65 %67 = getelementptr inbounds nuw i8, ptr %66, i64 8 %68 = load i64, ptr %67, align 8 %69 = getelementptr inbounds nuw i8, ptr %2, i64 104 @@ -296,8 +295,7 @@ findEngineForTop.exit: ; preds = %101, %94, %._crit_e 104: ; preds = %findEngineForTop.exit %105 = zext i32 %80 to i64 - %.idx45 = mul nuw nsw i64 %105, 24 - %106 = getelementptr inbounds nuw i8, ptr %62, i64 %.idx45 + %106 = getelementptr inbounds nuw %struct.mq_item, ptr %62, i64 %105 %107 = getelementptr inbounds nuw i8, ptr %106, i64 8 %108 = load i64, ptr %107, align 8 %109 = load i32, ptr %4, align 4, !alias.scope !8 diff --git a/bench/imgui/optimized/imgui_demo.ll b/bench/imgui/optimized/imgui_demo.ll index b093f21e0d2..26380bdbd98 100644 --- a/bench/imgui/optimized/imgui_demo.ll +++ b/bench/imgui/optimized/imgui_demo.ll @@ -28255,7 +28255,7 @@ define linkonce_odr void @_ZN18ExampleDualListBox4ShowEv(ptr noundef nonnull ali br label %28 .loopexit: ; preds = %84, %.thread - %.162 = phi i32 [ %.054, %.thread ], [ %.1, %84 ] + %.162 = phi i32 [ %.054, %.thread ], [ %.1, %83 ] %20 = call noundef zeroext i1 @_ZN5ImGui19TableSetColumnIndexEi(i32 noundef 1) call void @_ZN5ImGui7NewLineEv() call void @llvm.lifetime.start.p0(ptr nonnull %9) @@ -28274,10 +28274,10 @@ define linkonce_odr void @_ZN18ExampleDualListBox4ShowEv(ptr noundef nonnull ali br i1 %.not.not, label %85, label %87 28: ; preds = %12, %84 - %29 = phi i1 [ true, %12 ], [ false, %84 ] - %indvars.iv56 = phi i64 [ 0, %12 ], [ 1, %84 ] - %.054 = phi i32 [ -1, %12 ], [ %.1, %84 ] - %.04053 = phi float [ 0.000000e+00, %12 ], [ %.14146, %84 ] + %29 = phi i1 [ true, %12 ], [ false, %83 ] + %indvars.iv56 = phi i64 [ 0, %12 ], [ 1, %83 ] + %.054 = phi i32 [ -1, %12 ], [ %.1, %83 ] + %.04053 = phi float [ 0.000000e+00, %12 ], [ %.14146, %83 ] %30 = getelementptr inbounds nuw %struct.ImVector.18, ptr %0, i64 %indvars.iv56 %31 = getelementptr inbounds nuw %struct.ImGuiSelectionBasicStorage, ptr %13, i64 %indvars.iv56 %32 = select i1 %29, i32 0, i32 2 @@ -28336,7 +28336,7 @@ define linkonce_odr void @_ZN18ExampleDualListBox4ShowEv(ptr noundef nonnull ali %50 = load i32, ptr %31, align 8, !tbaa !410 %51 = load i32, ptr %30, align 8, !tbaa !424 %52 = call noundef ptr @_ZN5ImGui16BeginMultiSelectEiii(i32 noundef 0, i32 noundef %50, i32 noundef %51) - %53 = getelementptr inbounds nuw %struct.ImVector.18, ptr %0, i64 %indvars.iv56, i32 2 + %53 = getelementptr inbounds nuw i8, ptr %30, i64 8 %54 = load ptr, ptr %53, align 8, !tbaa !427 %55 = getelementptr inbounds nuw i8, ptr %31, i64 8 store ptr %54, ptr %55, align 8, !tbaa !422 @@ -28348,23 +28348,22 @@ define linkonce_odr void @_ZN18ExampleDualListBox4ShowEv(ptr noundef nonnull ali br i1 %58, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %49 - %59 = getelementptr inbounds nuw i8, ptr %30, i64 8 - %60 = trunc nuw nsw i64 %indvars.iv56 to i32 - br label %63 - -._crit_edge: ; preds = %80, %49 - %.2.lcssa = phi i32 [ %.054, %49 ], [ %.3, %80 ] - %61 = call noundef ptr @_ZN5ImGui14EndMultiSelectEv() - %62 = load ptr, ptr %53, align 8, !tbaa !427 - store ptr %62, ptr %55, align 8, !tbaa !422 + %59 = trunc nuw nsw i64 %indvars.iv56 to i32 + br label %62 + +._crit_edge: ; preds = %79, %49 + %.2.lcssa = phi i32 [ %.054, %49 ], [ %.3, %79 ] + %60 = call noundef ptr @_ZN5ImGui14EndMultiSelectEv() + %61 = load ptr, ptr %53, align 8, !tbaa !427 + store ptr %61, ptr %55, align 8, !tbaa !422 store ptr @_ZZN18ExampleDualListBox22ApplySelectionRequestsEP18ImGuiMultiSelectIOiENUlP26ImGuiSelectionBasicStorageiE_8__invokeES3_i, ptr %56, align 8, !tbaa !423 - call void @_ZN26ImGuiSelectionBasicStorage13ApplyRequestsEP18ImGuiMultiSelectIO(ptr noundef nonnull align 8 dereferenceable(48) %31, ptr noundef %61) + call void @_ZN26ImGuiSelectionBasicStorage13ApplyRequestsEP18ImGuiMultiSelectIO(ptr noundef nonnull align 8 dereferenceable(48) %31, ptr noundef %60) br label %84 63: ; preds = %.lr.ph, %80 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %80 ] - %.250 = phi i32 [ %.054, %.lr.ph ], [ %.3, %80 ] - %64 = load ptr, ptr %59, align 8, !tbaa !427 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %79 ] + %.250 = phi i32 [ %.054, %.lr.ph ], [ %.3, %79 ] + %64 = load ptr, ptr %53, align 8, !tbaa !427 %65 = getelementptr inbounds nuw i32, ptr %64, i64 %indvars.iv %66 = load i32, ptr %65, align 4, !tbaa !54 %67 = call noundef zeroext i1 @_ZNK26ImGuiSelectionBasicStorage8ContainsEj(ptr noundef nonnull align 8 dereferenceable(48) %31, i32 noundef %66) @@ -28392,13 +28391,13 @@ define linkonce_odr void @_ZN18ExampleDualListBox4ShowEv(ptr noundef nonnull ali br label %78 78: ; preds = %77, %75 - %.4 = phi i32 [ %60, %77 ], [ %.250, %75 ] + %.4 = phi i32 [ %59, %76 ], [ %.250, %74 ] %79 = call noundef zeroext i1 @_ZN5ImGui20IsMouseDoubleClickedEi(i32 noundef 0) - %spec.select45 = select i1 %79, i32 %60, i32 %.4 + %spec.select45 = select i1 %79, i32 %59, i32 %.4 br label %80 80: ; preds = %78, %63 - %.3 = phi i32 [ %.250, %63 ], [ %spec.select45, %78 ] + %.3 = phi i32 [ %.250, %62 ], [ %spec.select45, %77 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %81 = load i32, ptr %30, align 8, !tbaa !424 %82 = sext i32 %81 to i64 @@ -29741,7 +29740,7 @@ define internal fastcc void @_ZL20EditTableSizingFlagsPi(ptr noundef captures(no br i1 %exitcond.not, label %.critedge, label %5, !llvm.loop !494 10: ; preds = %5 - %11 = getelementptr inbounds nuw %struct.EnumDesc, ptr @_ZZL20EditTableSizingFlagsPiE8policies, i64 %indvars.iv, i32 1 + %11 = getelementptr inbounds nuw i8, ptr %6, i64 8 %12 = load ptr, ptr %11, align 8, !tbaa !495 %.not = icmp eq i64 %indvars.iv, 0 %13 = select i1 %.not, i64 0, i64 15 diff --git a/bench/influxdb-rs/optimized/3k3vgyqcou07q2z6.ll b/bench/influxdb-rs/optimized/3k3vgyqcou07q2z6.ll index 22a8b890562..73035bc9d9e 100644 --- a/bench/influxdb-rs/optimized/3k3vgyqcou07q2z6.ll +++ b/bench/influxdb-rs/optimized/3k3vgyqcou07q2z6.ll @@ -2530,12 +2530,11 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h04f38ee2be7a7c br i1 %7, label %"_ZN4core3ptr94drop_in_place$LT$$u5b$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$u5d$$GT$17h9141162b19c90bb6E.exit", label %.lr.ph .lr.ph: ; preds = %1, %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h73d88f013b698eddE.exit2" - %.0.i4 = phi i64 [ %8, %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h73d88f013b698eddE.exit2" ], [ 0, %1 ] - %8 = add nuw i64 %.0.i4, 1 + %.0.i4 = phi i64 [ %9, %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h73d88f013b698eddE.exit2" ], [ 0, %1 ] + %8 = getelementptr inbounds { i8, ptr }, ptr %6, i64 %.0.i4 + %9 = add nuw i64 %.0.i3, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !293) - %.idx = shl nsw i64 %.0.i4, 4 - %9 = getelementptr i8, ptr %6, i64 %.idx - %10 = getelementptr i8, ptr %9, i64 8 + %10 = getelementptr inbounds nuw i8, ptr %8, i64 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !296) tail call void @llvm.experimental.noalias.scope.decl(metadata !299) %11 = load ptr, ptr %10, align 8, !alias.scope !302, !nonnull !5, !noundef !5 @@ -2549,22 +2548,21 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h04f38ee2be7a7c to label %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h73d88f013b698eddE.exit2" unwind label %16 "_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h73d88f013b698eddE.exit2": ; preds = %14, %.lr.ph - %15 = icmp eq i64 %8, %5 + %15 = icmp eq i64 %9, %5 br i1 %15, label %"_ZN4core3ptr94drop_in_place$LT$$u5b$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$u5d$$GT$17h9141162b19c90bb6E.exit.loopexit", label %.lr.ph 16: ; preds = %14 %17 = landingpad { ptr, i32 } cleanup - %18 = icmp eq i64 %8, %5 + %18 = icmp eq i64 %9, %5 br i1 %18, label %._crit_edge, label %.lr.ph6 .lr.ph6: ; preds = %16, %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h73d88f013b698eddE.exit" - %.1.i5 = phi i64 [ %19, %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h73d88f013b698eddE.exit" ], [ %8, %16 ] - %19 = add i64 %.1.i5, 1 + %.1.i5 = phi i64 [ %20, %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h73d88f013b698eddE.exit" ], [ %9, %16 ] + %19 = getelementptr inbounds { i8, ptr }, ptr %6, i64 %.1.i5 + %20 = add i64 %.1.i4, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !303) - %.idx3 = shl nsw i64 %.1.i5, 4 - %20 = getelementptr i8, ptr %6, i64 %.idx3 - %21 = getelementptr i8, ptr %20, i64 8 + %21 = getelementptr inbounds nuw i8, ptr %19, i64 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !306) tail call void @llvm.experimental.noalias.scope.decl(metadata !309) %22 = load ptr, ptr %21, align 8, !alias.scope !312, !nonnull !5, !noundef !5 @@ -2578,7 +2576,7 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h04f38ee2be7a7c to label %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h73d88f013b698eddE.exit" unwind label %27 "_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h73d88f013b698eddE.exit": ; preds = %25, %.lr.ph6 - %26 = icmp eq i64 %19, %5 + %26 = icmp eq i64 %20, %5 br i1 %26, label %._crit_edge, label %.lr.ph6 ._crit_edge: ; preds = %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h73d88f013b698eddE.exit", %16 diff --git a/bench/influxdb-rs/optimized/u7z03ejdn0bs7a8.ll b/bench/influxdb-rs/optimized/u7z03ejdn0bs7a8.ll index 5f64af8ac63..d293d65f7b3 100644 --- a/bench/influxdb-rs/optimized/u7z03ejdn0bs7a8.ll +++ b/bench/influxdb-rs/optimized/u7z03ejdn0bs7a8.ll @@ -5836,11 +5836,10 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h91b441016dc821 br label %10 10: ; preds = %.lr.ph, %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h24a994e6158b0fe3E.exit1" - %.0.i4 = phi i64 [ 0, %.lr.ph ], [ %11, %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h24a994e6158b0fe3E.exit1" ] - %11 = add nuw i64 %.0.i4, 1 - %.idx = shl nsw i64 %.0.i4, 4 - %12 = getelementptr i8, ptr %7, i64 %.idx - %13 = getelementptr i8, ptr %12, i64 8 + %.0.i4 = phi i64 [ 0, %.lr.ph ], [ %12, %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h24a994e6158b0fe3E.exit1" ] + %11 = getelementptr inbounds { i8, ptr }, ptr %7, i64 %.0.i4 + %12 = add nuw i64 %.0.i4, 1 + %12 = getelementptr inbounds nuw i8, ptr %11, i64 8 call void @llvm.experimental.noalias.scope.decl(metadata !1061) %14 = load ptr, ptr %13, align 8, !alias.scope !1061, !nonnull !5, !noundef !5 %15 = atomicrmw sub ptr %14, i64 1 release, align 8, !noalias !1061 @@ -5858,7 +5857,7 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h91b441016dc821 .noexc: ; preds = %17 call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !1067 %20 = load ptr, ptr %13, align 8, !alias.scope !1067, !nonnull !5, !noundef !5 - %21 = getelementptr i8, ptr %12, i64 16 + %21 = getelementptr inbounds nuw i8, ptr %11, i64 16 store ptr %20, ptr %2, align 8, !noalias !1067 store ptr %21, ptr %9, align 8, !noalias !1067 invoke void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hcc320f1cf26f78adE.llvm.12494526139044184965"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2) @@ -5869,11 +5868,11 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h91b441016dc821 br label %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h24a994e6158b0fe3E.exit1" "_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h24a994e6158b0fe3E.exit1": ; preds = %.noexc2, %10 - %22 = icmp eq i64 %11, %6 + %22 = icmp eq i64 %12, %6 br i1 %22, label %"_ZN4core3ptr94drop_in_place$LT$$u5b$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$u5d$$GT$17he1c8843f3f974729E.exit.loopexit", label %10 "_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h24a994e6158b0fe3E.exit": ; preds = %26, %24 - %.1.i = phi i64 [ %11, %24 ], [ %27, %26 ] + %.1.i = phi i64 [ %12, %24 ], [ %28, %26 ] %23 = icmp eq i64 %.1.i, %6 br i1 %23, label %30, label %26 @@ -5883,10 +5882,9 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h91b441016dc821 br label %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h24a994e6158b0fe3E.exit" 26: ; preds = %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h24a994e6158b0fe3E.exit" - %27 = add i64 %.1.i, 1 - %.idx3 = shl nsw i64 %.1.i, 4 - %28 = getelementptr i8, ptr %7, i64 %.idx3 - %29 = getelementptr i8, ptr %28, i64 8 + %27 = getelementptr inbounds { i8, ptr }, ptr %7, i64 %.1.i + %28 = add i64 %.1.i, 1 + %28 = getelementptr inbounds nuw i8, ptr %27, i64 8 invoke fastcc void @"_ZN71_$LT$alloc..sync..Arc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6fb8201f1593869cE"(ptr noalias noundef align 8 dereferenceable(8) %29) to label %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h24a994e6158b0fe3E.exit" unwind label %31 diff --git a/bench/just-rs/optimized/3022oi333lxf39jd.ll b/bench/just-rs/optimized/3022oi333lxf39jd.ll index ce6afd6c925..a2cc8d2066a 100644 --- a/bench/just-rs/optimized/3022oi333lxf39jd.ll +++ b/bench/just-rs/optimized/3022oi333lxf39jd.ll @@ -5548,12 +5548,13 @@ define hidden void @"_ZN4core3ptr49drop_in_place$LT$$u5b$just..scope..Scope$u5d$ br i1 %5, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %2, %"_ZN4core3ptr39drop_in_place$LT$just..scope..Scope$GT$17h1ad04fbdeea48f32E.exit" - %.08 = phi i64 [ %6, %"_ZN4core3ptr39drop_in_place$LT$just..scope..Scope$GT$17h1ad04fbdeea48f32E.exit" ], [ 0, %2 ] - %6 = add nuw i64 %.08, 1 - %7 = getelementptr inbounds { ptr, { { { ptr, [1 x i64] }, i64, { {} }, {} } } }, ptr %0, i64 %.08, i32 1 + %.08 = phi i64 [ %7, %"_ZN4core3ptr39drop_in_place$LT$just..scope..Scope$GT$17h1ad04fbdeea48f32E.exit" ], [ 0, %2 ] + %6 = getelementptr inbounds { ptr, { { { ptr, [1 x i64] }, i64, { {} }, {} } } }, ptr %0, i64 %.08 + %7 = add nuw i64 %.08, 1 + %8 = getelementptr inbounds nuw i8, ptr %6, i64 8 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !1212 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !1212 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) invoke void @"_ZN119_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17ha210ce3422d4db24E.llvm.1798434116971987782"(ptr noalias noundef nonnull sret({ { { i64, [3 x i64] }, { i64, [3 x i64] } }, i64, {} }) align 8 captures(none) dereferenceable(72) %4, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %3) to label %.noexc unwind label %11 @@ -5564,14 +5565,14 @@ define hidden void @"_ZN4core3ptr49drop_in_place$LT$$u5b$just..scope..Scope$u5d$ "_ZN4core3ptr39drop_in_place$LT$just..scope..Scope$GT$17h1ad04fbdeea48f32E.exit": ; preds = %.noexc call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !1212 - %8 = icmp eq i64 %6, %1 + %8 = icmp eq i64 %7, %1 br i1 %8, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %"_ZN4core3ptr39drop_in_place$LT$just..scope..Scope$GT$17h1ad04fbdeea48f32E.exit", %2 ret void 9: ; preds = %13, %11 - %.1 = phi i64 [ %6, %11 ], [ %15, %13 ] + %.1 = phi i64 [ %7, %12 ], [ %15, %14 ] %10 = icmp eq i64 %.1, %1 br i1 %10, label %16, label %13 @@ -5584,7 +5585,7 @@ define hidden void @"_ZN4core3ptr49drop_in_place$LT$$u5b$just..scope..Scope$u5d$ %14 = getelementptr inbounds { ptr, { { { ptr, [1 x i64] }, i64, { {} }, {} } } }, ptr %0, i64 %.1 %15 = add i64 %.1, 1 invoke void @"_ZN4core3ptr39drop_in_place$LT$just..scope..Scope$GT$17h1ad04fbdeea48f32E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %14) #19 - to label %9 unwind label %17 + to label %10 unwind label %17 16: ; preds = %9 resume { ptr, i32 } %12 @@ -9395,8 +9396,9 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h0313f1149a332e4a .lr.ph.i: ; preds = %8, %"_ZN4core3ptr39drop_in_place$LT$just..scope..Scope$GT$17h1ad04fbdeea48f32E.exit.i" %.08.i = phi i64 [ %14, %"_ZN4core3ptr39drop_in_place$LT$just..scope..Scope$GT$17h1ad04fbdeea48f32E.exit.i" ], [ 0, %8 ] - %14 = add nuw i64 %.08.i, 1 - %15 = getelementptr inbounds { ptr, { { { ptr, [1 x i64] }, i64, { {} }, {} } } }, ptr %12, i64 %.08.i, i32 1 + %14 = getelementptr inbounds { ptr, { { { ptr, [1 x i64] }, i64, { {} }, {} } } }, ptr %12, i64 %.08.i + %15 = add nuw i64 %.08.i, 1 + %16 = getelementptr inbounds nuw i8, ptr %14, i64 8 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !1744 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !1744 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %15, i64 24, i1 false) @@ -9414,7 +9416,7 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h0313f1149a332e4a br i1 %16, label %"_ZN4core3ptr49drop_in_place$LT$$u5b$just..scope..Scope$u5d$$GT$17he4522c5b7e09ad10E.llvm.4740080591946275097.exit", label %.lr.ph.i 17: ; preds = %21, %19 - %.1.i = phi i64 [ %14, %19 ], [ %23, %21 ] + %.1.i = phi i64 [ %14, %20 ], [ %23, %22 ] %18 = icmp eq i64 %.1.i, %9 br i1 %18, label %24, label %21 @@ -9427,7 +9429,7 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h0313f1149a332e4a %22 = getelementptr inbounds { ptr, { { { ptr, [1 x i64] }, i64, { {} }, {} } } }, ptr %12, i64 %.1.i %23 = add i64 %.1.i, 1 invoke void @"_ZN4core3ptr39drop_in_place$LT$just..scope..Scope$GT$17h1ad04fbdeea48f32E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %22) #19 - to label %17 unwind label %25 + to label %18 unwind label %25 24: ; preds = %17 resume { ptr, i32 } %20 diff --git a/bench/lean4/optimized/static.ll b/bench/lean4/optimized/static.ll index 52688c9dc4a..ccd8be669ed 100644 --- a/bench/lean4/optimized/static.ll +++ b/bench/lean4/optimized/static.ll @@ -4719,8 +4719,7 @@ define i64 @mi_malloc_good_size(i64 noundef %0) local_unnamed_addr #12 personali _ZL6mi_binm.exit.i: ; preds = %11, %7 %.0.i.i = phi i64 [ %10, %7 ], [ %18, %11 ] - %.idx.i.i = mul nuw nsw i64 %.0.i.i, 24 - %19 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1280), i64 %.idx.i.i + %19 = getelementptr inbounds nuw %struct.mi_page_queue_s, ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1280), i64 %.0.i.i %20 = getelementptr inbounds nuw i8, ptr %19, i64 16 %21 = load i64, ptr %20, align 8, !tbaa !60 br label %mi_good_size.exit @@ -4779,8 +4778,7 @@ define i64 @mi_good_size(i64 noundef %0) local_unnamed_addr #12 personality ptr _ZL6mi_binm.exit: ; preds = %7, %11 %.0.i = phi i64 [ %10, %7 ], [ %18, %11 ] - %.idx.i = mul nuw nsw i64 %.0.i, 24 - %19 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1280), i64 %.idx.i + %19 = getelementptr inbounds nuw %struct.mi_page_queue_s, ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1280), i64 %.0.i %20 = getelementptr inbounds nuw i8, ptr %19, i64 16 %21 = load i64, ptr %20, align 8, !tbaa !60 br label %_ZL12_mi_align_upmm.exit @@ -19823,8 +19821,7 @@ _ZL6mi_binm.exit: ; preds = %5, %9, %11 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define hidden noundef i64 @_Z12_mi_bin_sizem(i64 noundef %0) local_unnamed_addr #7 { - %.idx = mul nuw nsw i64 %0, 24 - %2 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1280), i64 %.idx + %2 = getelementptr inbounds nuw %struct.mi_page_queue_s, ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1280), i64 %0 %3 = getelementptr inbounds nuw i8, ptr %2, i64 16 %4 = load i64, ptr %3, align 8, !tbaa !60 ret i64 %4 @@ -30683,8 +30680,7 @@ _ZL23mi_heap_buf_print_countP13mi_heap_buf_sPKcP15mi_stat_count_sb.exit: ; preds ; Function Attrs: mustprogress nounwind uwtable define internal fastcc void @_ZL27mi_heap_buf_print_count_binP13mi_heap_buf_sPKcP15mi_stat_count_smb(ptr noundef nonnull captures(none) %0, ptr noundef readonly captures(none) %1, i64 noundef range(i64 0, 74) %2, i1 noundef zeroext %3) unnamed_addr #2 personality ptr @__gxx_personality_v0 { %5 = alloca [128 x i8], align 16 - %.idx.i = mul nuw nsw i64 %2, 24 - %6 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1280), i64 %.idx.i + %6 = getelementptr inbounds nuw %struct.mi_page_queue_s, ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1280), i64 %2 %7 = getelementptr inbounds nuw i8, ptr %6, i64 16 %8 = load i64, ptr %7, align 8, !tbaa !60 %9 = icmp ult i64 %8, 8193 @@ -31510,8 +31506,7 @@ define internal fastcc noundef ptr @_ZL38mi_heap_malloc_zero_aligned_at_genericP _ZL6mi_binm.exit.i.i: ; preds = %21, %18 %.0.i.i.i = phi i64 [ %20, %18 ], [ %28, %21 ] - %.idx.i.i.i = mul nuw nsw i64 %.0.i.i.i, 24 - %29 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1280), i64 %.idx.i.i.i + %29 = getelementptr inbounds nuw %struct.mi_page_queue_s, ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1280), i64 %.0.i.i.i %30 = getelementptr inbounds nuw i8, ptr %29, i64 16 %31 = load i64, ptr %30, align 8, !tbaa !60 br label %_ZL30mi_malloc_is_naturally_alignedmm.exit diff --git a/bench/libevent/optimized/buffer.ll b/bench/libevent/optimized/buffer.ll index 57fac7dba77..40dd4f4fa2b 100644 --- a/bench/libevent/optimized/buffer.ll +++ b/bench/libevent/optimized/buffer.ll @@ -979,16 +979,17 @@ define i64 @evbuffer_add_iovec(ptr noundef %0, ptr noundef readonly captures(non .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] - %.031 = phi i64 [ 0, %.lr.ph.preheader ], [ %14, %.lr.ph ] - %12 = getelementptr inbounds nuw %struct.iovec, ptr %1, i64 %indvars.iv, i32 1 - %13 = load i64, ptr %12, align 8 - %14 = add i64 %13, %.031 + %.031 = phi i64 [ 0, %.lr.ph.preheader ], [ %15, %.lr.ph ] + %12 = getelementptr inbounds nuw %struct.iovec, ptr %1, i64 %indvars.iv + %13 = getelementptr inbounds nuw i8, ptr %12, i64 8 + %14 = load i64, ptr %13, align 8 + %15 = add i64 %14, %.031 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !7 ._crit_edge: ; preds = %.lr.ph - %15 = tail call i32 @evbuffer_expand_fast_(ptr noundef nonnull %0, i64 noundef %14, i32 noundef 2) + %15 = tail call i32 @evbuffer_expand_fast_(ptr noundef nonnull %0, i64 noundef %15, i32 noundef 2) %16 = icmp sgt i32 %15, -1 br i1 %16, label %.lr.ph34.preheader, label %.loopexit @@ -997,8 +998,8 @@ define i64 @evbuffer_add_iovec(ptr noundef %0, ptr noundef readonly captures(non br label %.lr.ph34 .lr.ph34: ; preds = %.lr.ph34.preheader, %23 - %indvars.iv39 = phi i64 [ 0, %.lr.ph34.preheader ], [ %indvars.iv.next40, %23 ] - %.02333 = phi i64 [ 0, %.lr.ph34.preheader ], [ %25, %23 ] + %indvars.iv39 = phi i64 [ 0, %.lr.ph34.preheader ], [ %indvars.iv.next40, %24 ] + %.02333 = phi i64 [ 0, %.lr.ph34.preheader ], [ %25, %24 ] %17 = getelementptr inbounds nuw %struct.iovec, ptr %1, i64 %indvars.iv39 %18 = load ptr, ptr %17, align 8 %19 = getelementptr inbounds nuw i8, ptr %17, i64 8 @@ -1015,14 +1016,14 @@ define i64 @evbuffer_add_iovec(ptr noundef %0, ptr noundef readonly captures(non br i1 %exitcond43.not, label %.loopexit, label %.lr.ph34, !llvm.loop !8 .loopexit: ; preds = %.lr.ph34, %23, %._crit_edge.thread, %._crit_edge - %.1 = phi i64 [ 0, %._crit_edge ], [ 0, %._crit_edge.thread ], [ %.02333, %.lr.ph34 ], [ %25, %23 ] + %.1 = phi i64 [ 0, %._crit_edge ], [ 0, %._crit_edge.thread ], [ %.02333, %.lr.ph34 ], [ %25, %24 ] %26 = load ptr, ptr %4, align 8 %.not29 = icmp eq ptr %26, null br i1 %.not29, label %30, label %27 27: ; preds = %.loopexit %28 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @evthread_lock_fns_, i64 32), align 8 - %29 = tail call i32 %28(i32 noundef 0, ptr noundef nonnull %26) #16 + %29 = tail call i32 %29(i32 noundef 0, ptr noundef nonnull %26) #16 br label %30 30: ; preds = %27, %.loopexit @@ -2478,33 +2479,34 @@ define range(i32 -1, 1) i32 @evbuffer_commit_space(ptr noundef %0, ptr noundef r br i1 %90, label %.loopexit95, label %65 .lr.ph102: ; preds = %.lr.ph102.preheader, %100 - %indvars.iv104 = phi i64 [ 0, %.lr.ph102.preheader ], [ %indvars.iv.next105, %100 ] - %.167100 = phi i64 [ 0, %.lr.ph102.preheader ], [ %98, %100 ] - %.06999 = phi ptr [ %.070, %.lr.ph102.preheader ], [ %101, %100 ] - %91 = getelementptr inbounds nuw %struct.iovec, ptr %1, i64 %indvars.iv104, i32 1 - %92 = load i64, ptr %91, align 8 - %93 = load ptr, ptr %.06999, align 8 - %94 = getelementptr inbounds nuw i8, ptr %93, i64 24 - %95 = load i64, ptr %94, align 8 - %96 = add i64 %95, %92 - store i64 %96, ptr %94, align 8 - %97 = load i64, ptr %91, align 8 - %98 = add i64 %97, %.167100 - %.not83 = icmp eq i64 %97, 0 - br i1 %.not83, label %100, label %99 - -99: ; preds = %.lr.ph102 + %indvars.iv104 = phi i64 [ 0, %.lr.ph102.preheader ], [ %indvars.iv.next105, %101 ] + %.167100 = phi i64 [ 0, %.lr.ph102.preheader ], [ %99, %101 ] + %.06999 = phi ptr [ %.070, %.lr.ph102.preheader ], [ %101, %101 ] + %91 = getelementptr inbounds nuw %struct.iovec, ptr %1, i64 %indvars.iv104 + %92 = getelementptr inbounds nuw i8, ptr %91, i64 8 + %93 = load i64, ptr %92, align 8 + %94 = load ptr, ptr %.06999, align 8 + %95 = getelementptr inbounds nuw i8, ptr %94, i64 24 + %96 = load i64, ptr %95, align 8 + %97 = add i64 %96, %93 + store i64 %97, ptr %95, align 8 + %98 = load i64, ptr %92, align 8 + %99 = add i64 %98, %.167100 + %.not83 = icmp eq i64 %98, 0 + br i1 %.not83, label %101, label %100 + +100: ; preds = %.lr.ph102 store ptr %.06999, ptr %47, align 8 br label %100 -100: ; preds = %99, %.lr.ph102 +100: ; preds = %100, %.lr.ph102 %101 = load ptr, ptr %.06999, align 8 %indvars.iv.next105 = add nuw nsw i64 %indvars.iv104, 1 %exitcond108.not = icmp eq i64 %indvars.iv.next105, %wide.trip.count107 br i1 %exitcond108.not, label %.loopexit, label %.lr.ph102, !llvm.loop !16 .loopexit: ; preds = %100, %63, %42, %45 - %.066 = phi i64 [ %44, %45 ], [ 0, %42 ], [ 0, %63 ], [ %98, %100 ] + %.066 = phi i64 [ %44, %45 ], [ 0, %42 ], [ 0, %63 ], [ %99, %101 ] %102 = getelementptr inbounds nuw i8, ptr %0, i64 24 %103 = load i64, ptr %102, align 8 %104 = add i64 %103, %.066 @@ -2524,7 +2526,7 @@ define range(i32 -1, 1) i32 @evbuffer_commit_space(ptr noundef %0, ptr noundef r 109: ; preds = %.loopexit95 %110 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @evthread_lock_fns_, i64 32), align 8 - %111 = tail call i32 %110(i32 noundef 0, ptr noundef nonnull %108) #16 + %111 = tail call i32 %111(i32 noundef 0, ptr noundef nonnull %108) #16 br label %112 112: ; preds = %109, %.loopexit95 diff --git a/bench/libigl/optimized/ViewerData.ll b/bench/libigl/optimized/ViewerData.ll index b4315dbc00d..1ee3c6b629f 100644 --- a/bench/libigl/optimized/ViewerData.ll +++ b/bench/libigl/optimized/ViewerData.ll @@ -7509,7 +7509,7 @@ define dso_local void @_ZN3igl6opengl10ViewerData13update_labelsERNS0_6MeshGL6Te _ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi1ELin1ELin1EEEE6resizeEll.exit: ; preds = %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit %16 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %17 = sext i32 %65 to i64 + %17 = sext i32 %66 to i64 %18 = mul nsw i64 %17, 3 tail call void @_ZN5Eigen12DenseStorageIfLin1ELin1ELin1ELi1EE6resizeElll(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %18, i64 noundef %17, i64 noundef 3) %19 = getelementptr inbounds nuw i8, ptr %1, i64 48 @@ -7602,14 +7602,15 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEm.exit.loopexit.us.us: br i1 %exitcond79.not, label %._crit_edge.split.us.us.loopexit, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.preheader.us.us, !llvm.loop !410 _ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit: ; preds = %.preheader, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit - %.03761 = phi i32 [ %65, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit ], [ 0, %.preheader ] - %.04060 = phi i64 [ %66, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit ], [ 0, %.preheader ] - %62 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %10, i64 %.04060, i32 1 - %63 = load i64, ptr %62, align 8, !tbaa !72 - %64 = trunc i64 %63 to i32 - %65 = add i32 %.03761, %64 - %66 = add nuw nsw i64 %.04060, 1 - %exitcond.not = icmp eq i64 %66, %6 + %.03761 = phi i32 [ %66, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit ], [ 0, %.preheader ] + %.04060 = phi i64 [ %67, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit ], [ 0, %.preheader ] + %62 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %10, i64 %.04060 + %63 = getelementptr inbounds nuw i8, ptr %62, i64 8 + %64 = load i64, ptr %63, align 8, !tbaa !72 + %65 = trunc i64 %64 to i32 + %66 = add i32 %.03761, %65 + %67 = add nuw nsw i64 %.04060, 1 + %exitcond.not = icmp eq i64 %67, %6 br i1 %exitcond.not, label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi1ELin1ELin1EEEE6resizeEll.exit, label %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit, !llvm.loop !411 67: ; preds = %.preheader diff --git a/bench/libjpeg-turbo/optimized/rdswitch.ll b/bench/libjpeg-turbo/optimized/rdswitch.ll index 902ec848900..efc12914181 100644 --- a/bench/libjpeg-turbo/optimized/rdswitch.ll +++ b/bench/libjpeg-turbo/optimized/rdswitch.ll @@ -772,7 +772,7 @@ define dso_local range(i32 0, 2) i32 @set_quant_slots(ptr noundef readonly captu %.01119 = phi ptr [ %1, %2 ], [ %.2, %.critedge ] %7 = load i8, ptr %.01119, align 1, !tbaa !51 %.not = icmp eq i8 %7, 0 - br i1 %.not, label %24, label %8 + br i1 %.not, label %25, label %8 8: ; preds = %6 store i8 44, ptr %4, align 1, !tbaa !51 @@ -795,30 +795,32 @@ define dso_local range(i32 0, 2) i32 @set_quant_slots(ptr noundef readonly captu 17: ; preds = %12 %18 = load ptr, ptr %5, align 8, !tbaa !54 - %19 = getelementptr inbounds nuw %struct.jpeg_component_info, ptr %18, i64 %indvars.iv, i32 4 - store i32 %13, ptr %19, align 8, !tbaa !55 - br label %20 - -20: ; preds = %22, %17 - %.1 = phi ptr [ %.01119, %17 ], [ %23, %22 ] - %21 = load i8, ptr %.1, align 1, !tbaa !51 - %.not16 = icmp eq i8 %21, 0 - br i1 %.not16, label %.critedge, label %22 - -22: ; preds = %20 - %23 = getelementptr inbounds nuw i8, ptr %.1, i64 1 - %.not17 = icmp eq i8 %21, 44 - br i1 %.not17, label %.critedge, label %20, !llvm.loop !57 - -24: ; preds = %6 - %25 = load i32, ptr %3, align 4, !tbaa !11 - %26 = load ptr, ptr %5, align 8, !tbaa !54 - %27 = getelementptr inbounds nuw %struct.jpeg_component_info, ptr %26, i64 %indvars.iv, i32 4 - store i32 %25, ptr %27, align 8, !tbaa !55 + %19 = getelementptr inbounds nuw %struct.jpeg_component_info, ptr %18, i64 %indvars.iv + %20 = getelementptr inbounds nuw i8, ptr %19, i64 16 + store i32 %13, ptr %20, align 8, !tbaa !55 + br label %21 + +21: ; preds = %23, %17 + %.1 = phi ptr [ %.01119, %17 ], [ %24, %23 ] + %22 = load i8, ptr %.1, align 1, !tbaa !51 + %.not16 = icmp eq i8 %22, 0 + br i1 %.not16, label %.critedge, label %23 + +23: ; preds = %21 + %24 = getelementptr inbounds nuw i8, ptr %.1, i64 1 + %.not17 = icmp eq i8 %22, 44 + br i1 %.not17, label %.critedge, label %21, !llvm.loop !57 + +25:; preds = %6 + %26 = load i32, ptr %3, align 4, !tbaa !11 + %27 = load ptr, ptr %5, align 8, !tbaa !54 + %28 = getelementptr inbounds nuw %struct.jpeg_component_info, ptr %27, i64 %indvars.iv + %29 = getelementptr inbounds nuw i8, ptr %28, i64 16 + store i32 %26, ptr %29, align 8, !tbaa !55 br label %.critedge -.critedge: ; preds = %20, %22, %24 - %.2 = phi ptr [ %.01119, %24 ], [ %.1, %20 ], [ %23, %22 ] +.critedge: ; preds = %21, %23, %25 + %.2 = phi ptr [ %.01119, %25 ], [ %.1, %21 ], [ %24, %23 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 10 br i1 %exitcond.not, label %.loopexit, label %6, !llvm.loop !58 @@ -848,7 +850,7 @@ define dso_local range(i32 0, 2) i32 @set_sample_factors(ptr noundef readonly ca %.02531 = phi ptr [ %1, %2 ], [ %.2, %.critedge ] %9 = load i8, ptr %.02531, align 1, !tbaa !51 %.not = icmp eq i8 %9, 0 - br i1 %.not, label %36, label %10 + br i1 %.not, label %37, label %10 10: ; preds = %8 store i8 44, ptr %6, align 1, !tbaa !51 @@ -882,34 +884,36 @@ define dso_local range(i32 0, 2) i32 @set_sample_factors(ptr noundef readonly ca 27: ; preds = %18 %28 = load ptr, ptr %7, align 8, !tbaa !54 - %29 = getelementptr inbounds nuw %struct.jpeg_component_info, ptr %28, i64 %indvars.iv, i32 2 - store i32 %19, ptr %29, align 8, !tbaa !59 - %30 = load i32, ptr %4, align 4, !tbaa !11 - %31 = getelementptr inbounds nuw %struct.jpeg_component_info, ptr %28, i64 %indvars.iv, i32 3 - store i32 %30, ptr %31, align 4, !tbaa !60 - br label %32 - -32: ; preds = %34, %27 - %.1 = phi ptr [ %.02531, %27 ], [ %35, %34 ] - %33 = load i8, ptr %.1, align 1, !tbaa !51 - %.not29 = icmp eq i8 %33, 0 - br i1 %.not29, label %.critedge, label %34 - -34: ; preds = %32 - %35 = getelementptr inbounds nuw i8, ptr %.1, i64 1 - %.not30 = icmp eq i8 %33, 44 - br i1 %.not30, label %.critedge, label %32, !llvm.loop !61 - -36: ; preds = %8 - %37 = load ptr, ptr %7, align 8, !tbaa !54 - %38 = getelementptr inbounds nuw %struct.jpeg_component_info, ptr %37, i64 %indvars.iv, i32 2 - store i32 1, ptr %38, align 8, !tbaa !59 - %39 = getelementptr inbounds nuw %struct.jpeg_component_info, ptr %37, i64 %indvars.iv, i32 3 - store i32 1, ptr %39, align 4, !tbaa !60 + %29 = getelementptr inbounds nuw %struct.jpeg_component_info, ptr %28, i64 %indvars.iv + %30 = getelementptr inbounds nuw i8, ptr %29, i64 8 + store i32 %19, ptr %30, align 8, !tbaa !59 + %31 = load i32, ptr %4, align 4, !tbaa !11 + %32 = getelementptr inbounds nuw i8, ptr %29, i64 12 + store i32 %31, ptr %32, align 4, !tbaa !60 + br label %33 + +33: ; preds = %35, %27 + %.1 = phi ptr [ %.02531, %27 ], [ %36, %35 ] + %34 = load i8, ptr %.1, align 1, !tbaa !51 + %.not29 = icmp eq i8 %34, 0 + br i1 %.not29, label %.critedge, label %35 + +35: ; preds = %33 + %36 = getelementptr inbounds nuw i8, ptr %.1, i64 1 + %.not30 = icmp eq i8 %34, 44 + br i1 %.not30, label %.critedge, label %33, !llvm.loop !61 + +37:; preds = %8 + %38 = load ptr, ptr %7, align 8, !tbaa !54 + %39 = getelementptr inbounds nuw %struct.jpeg_component_info, ptr %38, i64 %indvars.iv + %39 = getelementptr inbounds nuw i8, ptr %39, i64 8 + store i32 1, ptr %39, align 8, !tbaa !59 + %41 = getelementptr inbounds nuw i8, ptr %39, i64 12 + store i32 1, ptr %41, align 4, !tbaa !60 br label %.critedge -.critedge: ; preds = %32, %34, %36 - %.2 = phi ptr [ %.02531, %36 ], [ %.1, %32 ], [ %35, %34 ] +.critedge: ; preds = %33, %35, %37 + %.2 = phi ptr [ %.02531, %37 ], [ %.1, %33 ], [ %36, %35 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 10 br i1 %exitcond.not, label %.loopexit, label %8, !llvm.loop !62 diff --git a/bench/libquic/optimized/activity_tracker.ll b/bench/libquic/optimized/activity_tracker.ll index 74dd84a6537..d77bffb5438 100644 --- a/bench/libquic/optimized/activity_tracker.ll +++ b/bench/libquic/optimized/activity_tracker.ll @@ -1689,8 +1689,9 @@ define void @_ZN4base5debug14ScopedActivity12ChangeActionEh(ptr noundef nonnull %14 = load ptr, ptr %13, align 8, !tbaa !32 %15 = add i32 %9, -1 %16 = zext i32 %15 to i64 - %17 = getelementptr inbounds nuw %"struct.base::debug::Activity", ptr %14, i64 %16, i32 3 - store i8 %3, ptr %17, align 8, !tbaa !11 + %17 = getelementptr inbounds nuw %"struct.base::debug::Activity", ptr %14, i64 %16 + %18 = getelementptr inbounds nuw i8, ptr %17, i64 96 + store i8 %3, ptr %18, align 8, !tbaa !11 br label %_ZN4base5debug21ThreadActivityTracker14ScopedActivity17ChangeTypeAndDataENS0_8Activity4TypeERKNS0_12ActivityDataE.exit _ZN4base5debug21ThreadActivityTracker14ScopedActivity17ChangeTypeAndDataENS0_8Activity4TypeERKNS0_12ActivityDataE.exit: ; preds = %2, %5, %12 @@ -1724,8 +1725,9 @@ define void @_ZN4base5debug14ScopedActivity10ChangeInfoEi(ptr noundef nonnull re %15 = load ptr, ptr %14, align 8, !tbaa !32 %16 = add i32 %10, -1 %17 = zext i32 %16 to i64 - %18 = getelementptr inbounds nuw %"struct.base::debug::Activity", ptr %15, i64 %17, i32 5 - store i64 %.sroa.0.0.insert.insert.i, ptr %18, align 8, !tbaa !12 + %18 = getelementptr inbounds nuw %"struct.base::debug::Activity", ptr %15, i64 %17 + %19 = getelementptr inbounds nuw i8, ptr %18, i64 104 + store i64 %.sroa.0.0.insert.insert.i, ptr %19, align 8, !tbaa !12 br label %_ZN4base5debug21ThreadActivityTracker14ScopedActivity17ChangeTypeAndDataENS0_8Activity4TypeERKNS0_12ActivityDataE.exit _ZN4base5debug21ThreadActivityTracker14ScopedActivity17ChangeTypeAndDataENS0_8Activity4TypeERKNS0_12ActivityDataE.exit: ; preds = %2, %6, %13 diff --git a/bench/libquic/optimized/err.ll b/bench/libquic/optimized/err.ll index 31bf80f77b4..a780db76f23 100644 --- a/bench/libquic/optimized/err.ll +++ b/bench/libquic/optimized/err.ll @@ -292,12 +292,13 @@ err_get_state.exit.i: ; preds = %5, %0 %13 = add i32 %8, 1 %14 = and i32 %13, 15 %15 = zext nneg i32 %14 to i64 - %16 = getelementptr inbounds nuw %struct.err_error_st, ptr %.06.i.i, i64 %15, i32 2 - %17 = load i32, ptr %16, align 8, !tbaa !13 + %16 = getelementptr inbounds nuw %struct.err_error_st, ptr %.06.i.i, i64 %15 + %17 = getelementptr inbounds nuw i8, ptr %16, i64 16 + %18 = load i32, ptr %17, align 8, !tbaa !13 br label %get_error_values.exit get_error_values.exit: ; preds = %3, %5, %err_get_state.exit.i, %12 - %.0.i = phi i32 [ 0, %err_get_state.exit.i ], [ %17, %12 ], [ 0, %3 ], [ 0, %5 ] + %.0.i = phi i32 [ 0, %err_get_state.exit.i ], [ %18, %12 ], [ 0, %3 ], [ 0, %5 ] ret i32 %.0.i } @@ -394,12 +395,13 @@ err_get_state.exit.i: ; preds = %5, %0 12: ; preds = %err_get_state.exit.i %13 = zext i32 %10 to i64 - %14 = getelementptr inbounds nuw %struct.err_error_st, ptr %.06.i.i, i64 %13, i32 2 - %15 = load i32, ptr %14, align 8, !tbaa !13 + %14 = getelementptr inbounds nuw %struct.err_error_st, ptr %.06.i.i, i64 %13 + %15 = getelementptr inbounds nuw i8, ptr %14, i64 16 + %16 = load i32, ptr %15, align 8, !tbaa !13 br label %get_error_values.exit get_error_values.exit: ; preds = %3, %5, %err_get_state.exit.i, %12 - %.0.i = phi i32 [ 0, %err_get_state.exit.i ], [ %15, %12 ], [ 0, %3 ], [ 0, %5 ] + %.0.i = phi i32 [ 0, %err_get_state.exit.i ], [ %16, %12 ], [ 0, %3 ], [ 0, %5 ] ret i32 %.0.i } @@ -1285,10 +1287,11 @@ err_get_state.exit: ; preds = %0, %5 12: ; preds = %err_get_state.exit %13 = zext i32 %10 to i64 - %14 = getelementptr inbounds nuw %struct.err_error_st, ptr %.06.i, i64 %13, i32 4 - %15 = load i8, ptr %14, align 2, !tbaa !17 - %16 = or i8 %15, 32 - store i8 %16, ptr %14, align 2, !tbaa !17 + %14 = getelementptr inbounds nuw %struct.err_error_st, ptr %.06.i, i64 %13 + %15 = getelementptr inbounds nuw i8, ptr %14, i64 22 + %16 = load i8, ptr %15, align 2, !tbaa !17 + %17 = or i8 %16, 32 + store i8 %17, ptr %15, align 2, !tbaa !17 br label %err_get_state.exit.thread err_get_state.exit.thread: ; preds = %5, %3, %err_get_state.exit, %12 diff --git a/bench/libquic/optimized/heap_profiler_allocation_context.ll b/bench/libquic/optimized/heap_profiler_allocation_context.ll index 2ba0feb626b..45246633973 100644 --- a/bench/libquic/optimized/heap_profiler_allocation_context.ll +++ b/bench/libquic/optimized/heap_profiler_allocation_context.ll @@ -241,12 +241,13 @@ define noundef range(i64 0, 4294967296) i64 @_ZNK9base_hash4hashIN4base11trace_e .lr.ph: ; preds = %2, %.lr.ph %.08 = phi i64 [ %13, %.lr.ph ], [ 0, %2 ] - %10 = getelementptr inbounds nuw %"struct.base::trace_event::StackFrame", ptr %1, i64 %.08, i32 1 - %11 = load ptr, ptr %10, align 8, !tbaa !3 - %12 = getelementptr inbounds nuw ptr, ptr %3, i64 %.08 - store ptr %11, ptr %12, align 8, !tbaa !20 - %13 = add nuw i64 %.08, 1 - %.not = icmp eq i64 %13, %5 + %10 = getelementptr inbounds nuw %"struct.base::trace_event::StackFrame", ptr %1, i64 %.08 + %11 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %12 = load ptr, ptr %11, align 8, !tbaa !3 + %13 = getelementptr inbounds nuw ptr, ptr %3, i64 %.08 + store ptr %12, ptr %13, align 8, !tbaa !20 + %14 = add nuw i64 %.08, 1 + %.not = icmp eq i64 %14, %5 br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !21 } @@ -262,13 +263,14 @@ define noundef i64 @_ZNK9base_hash4hashIN4base11trace_event17AllocationContextEE br i1 %.not7.i, label %_ZNK9base_hash4hashIN4base11trace_event9BacktraceEEclERKS3_.exit, label %.lr.ph.i .lr.ph.i: ; preds = %2, %.lr.ph.i - %.08.i = phi i64 [ %9, %.lr.ph.i ], [ 0, %2 ] - %6 = getelementptr inbounds nuw %"struct.base::trace_event::StackFrame", ptr %1, i64 %.08.i, i32 1 - %7 = load ptr, ptr %6, align 8, !tbaa !3 - %8 = getelementptr inbounds nuw ptr, ptr %3, i64 %.08.i - store ptr %7, ptr %8, align 8, !tbaa !20 - %9 = add nuw i64 %.08.i, 1 - %.not.i = icmp eq i64 %9, %5 + %.08.i = phi i64 [ %10, %.lr.ph.i ], [ 0, %2 ] + %6 = getelementptr inbounds nuw %"struct.base::trace_event::StackFrame", ptr %1, i64 %.08.i + %7 = getelementptr inbounds nuw i8, ptr %6, i64 8 + %8 = load ptr, ptr %7, align 8, !tbaa !3 + %9 = getelementptr inbounds nuw ptr, ptr %3, i64 %.08.i + store ptr %8, ptr %9, align 8, !tbaa !20 + %10 = add nuw i64 %.08.i, 1 + %.not.i = icmp eq i64 %10, %5 br i1 %.not.i, label %_ZNK9base_hash4hashIN4base11trace_event9BacktraceEEclERKS3_.exit, label %.lr.ph.i, !llvm.loop !21 _ZNK9base_hash4hashIN4base11trace_event9BacktraceEEclERKS3_.exit: ; preds = %.lr.ph.i, %2 diff --git a/bench/libwebp/optimized/muxinternal.ll b/bench/libwebp/optimized/muxinternal.ll index 3c8a9d52623..554afeae7ae 100644 --- a/bench/libwebp/optimized/muxinternal.ll +++ b/bench/libwebp/optimized/muxinternal.ll @@ -94,12 +94,13 @@ define hidden i32 @ChunkGetIdFromTag(i32 noundef %0) local_unnamed_addr #4 { br i1 %7, label %8, label %2 8: ; preds = %5 - %9 = getelementptr inbounds nuw %struct.ChunkInfo, ptr @kChunks, i64 %indvars.iv, i32 1 - %10 = load i32, ptr %9, align 4, !tbaa !20 + %9 = getelementptr inbounds nuw %struct.ChunkInfo, ptr @kChunks, i64 %indvars.iv + %10 = getelementptr inbounds nuw i8, ptr %9, i64 4 + %11 = load i32, ptr %10, align 4, !tbaa !20 br label %.loopexit .loopexit: ; preds = %2, %8 - %.06 = phi i32 [ %10, %8 ], [ 9, %2 ] + %.06 = phi i32 [ %11, %8 ], [ 9, %2 ] ret i32 %.06 } @@ -663,8 +664,8 @@ define hidden i32 @MuxImageCount(ptr noundef readonly captures(address_is_null) br i1 %.not18, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %2, %24 - %.021 = phi i32 [ %.3, %24 ], [ 0, %2 ] - %.01219 = phi ptr [ %26, %24 ], [ %0, %2 ] + %.021 = phi i32 [ %.3, %25 ], [ 0, %2 ] + %.01219 = phi ptr [ %26, %25 ], [ %0, %2 ] switch i32 %1, label %9 [ i32 10, label %3 i32 3, label %GetChunkListFromId.exit @@ -711,12 +712,13 @@ GetChunkListFromId.exit: ; preds = %.lr.ph, %5, %7 br i1 %18, label %19, label %13 19: ; preds = %16 - %20 = getelementptr inbounds nuw %struct.ChunkInfo, ptr @kChunks, i64 %indvars.iv.i, i32 1 - %21 = load i32, ptr %20, align 4, !tbaa !20 + %20 = getelementptr inbounds nuw %struct.ChunkInfo, ptr @kChunks, i64 %indvars.iv.i + %21 = getelementptr inbounds nuw i8, ptr %20, i64 4 + %22 = load i32, ptr %21, align 4, !tbaa !20 br label %ChunkGetIdFromTag.exit ChunkGetIdFromTag.exit: ; preds = %13, %19 - %.06.i = phi i32 [ %21, %19 ], [ 9, %13 ] + %.06.i = phi i32 [ %22, %19 ], [ 9, %13 ] %22 = icmp eq i32 %.06.i, %1 %23 = zext i1 %22 to i32 %spec.select = add nsw i32 %.021, %23 @@ -730,7 +732,7 @@ ChunkGetIdFromTag.exit: ; preds = %13, %19 br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !42 ._crit_edge: ; preds = %24, %2 - %.0.lcssa = phi i32 [ 0, %2 ], [ %.3, %24 ] + %.0.lcssa = phi i32 [ 0, %2 ], [ %.3, %25 ] ret i32 %.0.lcssa } diff --git a/bench/libwebp/optimized/muxread.ll b/bench/libwebp/optimized/muxread.ll index b115b5aaf39..850a8a62485 100644 --- a/bench/libwebp/optimized/muxread.ll +++ b/bench/libwebp/optimized/muxread.ll @@ -756,9 +756,10 @@ define range(i32 -1, 2) i32 @WebPMuxGetChunk(ptr noundef readonly captures(addre 7: ; preds = %3 %8 = tail call i32 @ChunkGetIndexFromFourCC(ptr noundef nonnull %1) #5 %9 = zext i32 %8 to i64 - %10 = getelementptr inbounds nuw %struct.ChunkInfo, ptr @kChunks, i64 %9, i32 1 - %11 = load i32, ptr %10, align 4, !tbaa !38 - switch i32 %11, label %12 [ + %10 = getelementptr inbounds nuw %struct.ChunkInfo, ptr @kChunks, i64 %9 + %11 = getelementptr inbounds nuw i8, ptr %10, i64 4 + %12 = load i32, ptr %11, align 4, !tbaa !38 + switch i32 %12, label %13 [ i32 3, label %IsWPI.exit i32 5, label %IsWPI.exit i32 6, label %IsWPI.exit @@ -786,7 +787,7 @@ define range(i32 -1, 2) i32 @WebPMuxGetChunk(ptr noundef readonly captures(addre br label %IsWPI.exit IsWPI.exit: ; preds = %7, %7, %7, %21, %15, %3, %13 - %.0 = phi i32 [ %14, %13 ], [ -1, %3 ], [ 1, %21 ], [ 0, %15 ], [ -1, %7 ], [ -1, %7 ], [ -1, %7 ] + %.0 = phi i32 [ %14, %14 ], [ -1, %3 ], [ 1, %21 ], [ 0, %16 ], [ -1, %7 ], [ -1, %7 ], [ -1, %7 ] ret i32 %.0 } @@ -1046,9 +1047,10 @@ IsWPI.exit: ; preds = %6, %6, %6 14: ; preds = %.lr.ph.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %15 = getelementptr inbounds nuw %struct.ChunkInfo, ptr @kChunks, i64 %indvars.iv.next.i, i32 1 - %16 = load i32, ptr %15, align 4, !tbaa !38 - %.not.i = icmp eq i32 %16, 10 + %15 = getelementptr inbounds nuw %struct.ChunkInfo, ptr @kChunks, i64 %indvars.iv.next.i + %16 = getelementptr inbounds nuw i8, ptr %15, i64 4 + %17 = load i32, ptr %16, align 4, !tbaa !38 + %.not.i = icmp eq i32 %17, 10 br i1 %.not.i, label %ChunkGetIndexFromId.exit, label %.lr.ph.i, !llvm.loop !60 ._crit_edge.loopexit.split.loop.exit14.i: ; preds = %.lr.ph.i diff --git a/bench/lief/optimized/oid.ll b/bench/lief/optimized/oid.ll index 454802d3536..c166a64ef59 100644 --- a/bench/lief/optimized/oid.ll +++ b/bench/lief/optimized/oid.ll @@ -1377,9 +1377,8 @@ oid_subidentifier_num_bytes.exit: ; preds = %4 11: ; preds = %oid_subidentifier_num_bytes.exit %12 = trunc i32 %2 to i8 %13 = and i8 %12, 127 - %14 = getelementptr i8, ptr %7, i64 %6 - %15 = getelementptr i8, ptr %14, i64 -1 - store i8 %13, ptr %15, align 1, !tbaa !48 + %14 = getelementptr i8, ptr %7, i64 %.0.i + store i8 %13, ptr %14, align 1, !tbaa !48 %.not22 = icmp eq i64 %.0.i, 0 br i1 %.not22, label %._crit_edge, label %.lr.ph diff --git a/bench/lief/optimized/psa_util.ll b/bench/lief/optimized/psa_util.ll index a7447009b0c..9dc7490837a 100644 --- a/bench/lief/optimized/psa_util.ll +++ b/bench/lief/optimized/psa_util.ll @@ -58,17 +58,18 @@ define hidden i32 @psa_status_to_mbedtls(i32 noundef %0, ptr noundef readonly ca br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !8 11: ; preds = %.lr.ph - %12 = getelementptr inbounds nuw %struct.mbedtls_error_pair_t, ptr %1, i64 %.01117, i32 1 - %13 = load i16, ptr %12, align 2, !tbaa !10 - %14 = sext i16 %13 to i32 - br label %16 + %12 = getelementptr inbounds nuw %struct.mbedtls_error_pair_t, ptr %1, i64 %.01117 + %13 = getelementptr inbounds nuw i8, ptr %12, i64 2 + %14 = load i16, ptr %13, align 2, !tbaa !10 + %15 = sext i16 %14 to i32 + br label %17 ._crit_edge: ; preds = %9, %4 %15 = tail call i32 %3(i32 noundef %0) #7 br label %16 16: ; preds = %11, %._crit_edge - %.1 = phi i32 [ %15, %._crit_edge ], [ %14, %11 ] + %.1 = phi i32 [ %15, %._crit_edge ], [ %15, %11 ] ret i32 %.1 } diff --git a/bench/llama.cpp/optimized/log.ll b/bench/llama.cpp/optimized/log.ll index 800d36ff9a5..5dbede2a9c7 100644 --- a/bench/llama.cpp/optimized/log.ll +++ b/bench/llama.cpp/optimized/log.ll @@ -325,7 +325,7 @@ _ZNSt10lock_guardISt5mutexEC2ERS0_.exit: ; preds = %1 7: ; preds = %_ZNSt10lock_guardISt5mutexEC2ERS0_.exit %8 = tail call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %0) #24 - br label %26 + br label %27 9: ; preds = %_ZNSt10lock_guardISt5mutexEC2ERS0_.exit store i8 0, ptr %4, align 2, !tbaa !45 @@ -333,25 +333,26 @@ _ZNSt10lock_guardISt5mutexEC2ERS0_.exit: ; preds = %1 %11 = getelementptr inbounds nuw i8, ptr %0, i64 152 %12 = load i64, ptr %11, align 8, !tbaa !48 %13 = load ptr, ptr %10, align 8, !tbaa !39 - %14 = getelementptr inbounds nuw %struct.common_log_entry, ptr %13, i64 %12, i32 5 - store i8 1, ptr %14, align 8, !tbaa !49 - %15 = add i64 %12, 1 - %16 = getelementptr inbounds nuw i8, ptr %0, i64 128 - %17 = load ptr, ptr %16, align 8, !tbaa !40 - %18 = ptrtoint ptr %17 to i64 - %19 = ptrtoint ptr %13 to i64 - %20 = sub i64 %18, %19 - %21 = sdiv exact i64 %20, 48 - %22 = urem i64 %15, %21 - store i64 %22, ptr %11, align 8, !tbaa !48 - %23 = getelementptr inbounds nuw i8, ptr %0, i64 48 - tail call void @_ZNSt18condition_variable10notify_oneEv(ptr noundef nonnull align 8 dereferenceable(48) %23) #24 - %24 = tail call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %0) #24 - %25 = getelementptr inbounds nuw i8, ptr %0, i64 40 - tail call void @_ZNSt6thread4joinEv(ptr noundef nonnull align 8 dereferenceable(8) %25) - br label %26 - -26: ; preds = %7, %9 + %14 = getelementptr inbounds nuw %struct.common_log_entry, ptr %13, i64 %12 + %15 = getelementptr inbounds nuw i8, ptr %14, i64 40 + store i8 1, ptr %15, align 8, !tbaa !49 + %16 = add i64 %12, 1 + %17 = getelementptr inbounds nuw i8, ptr %0, i64 128 + %18 = load ptr, ptr %17, align 8, !tbaa !40 + %19 = ptrtoint ptr %18 to i64 + %20 = ptrtoint ptr %13 to i64 + %21 = sub i64 %19, %20 + %22 = sdiv exact i64 %21, 48 + %23 = urem i64 %16, %22 + store i64 %23, ptr %11, align 8, !tbaa !48 + %24 = getelementptr inbounds nuw i8, ptr %0, i64 48 + tail call void @_ZNSt18condition_variable10notify_oneEv(ptr noundef nonnull align 8 dereferenceable(48) %24) #24 + %25 = tail call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %0) #24 + %26 = getelementptr inbounds nuw i8, ptr %0, i64 40 + tail call void @_ZNSt6thread4joinEv(ptr noundef nonnull align 8 dereferenceable(8) %26) + br label %27 + +27: ; preds = %7, %9 ret void } @@ -678,7 +679,7 @@ _ZN16common_log_entryaSEOS_.exit: ; preds = %81, %97 %118 = icmp ult i64 %113, %117 br i1 %118, label %.lr.ph, label %._crit_edge -._crit_edge.loopexit: ; preds = %140 +._crit_edge.loopexit: ; preds = %141 %.pre = load ptr, ptr %13, align 8, !tbaa !39 %.pre48 = load ptr, ptr %61, align 8, !tbaa !40 br label %._crit_edge @@ -686,7 +687,7 @@ _ZN16common_log_entryaSEOS_.exit: ; preds = %81, %97 ._crit_edge: ; preds = %._crit_edge.loopexit, %115 %119 = phi ptr [ %106, %115 ], [ %.pre48, %._crit_edge.loopexit ] %120 = phi ptr [ %107, %115 ], [ %.pre, %._crit_edge.loopexit ] - %.lcssa = phi ptr [ %77, %115 ], [ %142, %._crit_edge.loopexit ] + %.lcssa = phi ptr [ %77, %115 ], [ %143, %._crit_edge.loopexit ] %121 = getelementptr inbounds nuw i8, ptr %0, i64 136 %122 = load ptr, ptr %121, align 8, !tbaa !43 store ptr %.lcssa, ptr %13, align 8, !tbaa !39 @@ -736,30 +737,31 @@ _ZNSt6vectorI16common_log_entrySaIS0_EED2Ev.exit: ; preds = %_ZSt8_DestroyIP16co cleanup br label %149 -.lr.ph: ; preds = %115, %140 - %138 = phi ptr [ %142, %140 ], [ %77, %115 ] - %.043 = phi i64 [ %141, %140 ], [ %113, %115 ] - %139 = getelementptr inbounds nuw %struct.common_log_entry, ptr %138, i64 %.043, i32 4 - invoke void @_ZNSt6vectorIcSaIcEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %139, i64 noundef 256) - to label %140 unwind label %147 - -140: ; preds = %.lr.ph - %141 = add nuw i64 %.043, 1 - %142 = load ptr, ptr %6, align 8, !tbaa !39 - %143 = ptrtoint ptr %142 to i64 - %144 = sub i64 %116, %143 - %145 = sdiv exact i64 %144, 48 - %146 = icmp ult i64 %141, %145 - br i1 %146, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !66 - -147: ; preds = %.lr.ph - %148 = landingpad { ptr, i32 } +.lr.ph: ; preds = %115, %141 + %138 = phi ptr [ %143, %141 ], [ %77, %115 ] + %.043 = phi i64 [ %142, %141 ], [ %113, %115 ] + %139 = getelementptr inbounds nuw %struct.common_log_entry, ptr %138, i64 %.043 + %140 = getelementptr inbounds nuw i8, ptr %139, i64 16 + invoke void @_ZNSt6vectorIcSaIcEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %140, i64 noundef 256) + to label %141 unwind label %148 + +141:; preds = %.lr.ph + %142 = add nuw i64 %.043, 1 + %143 = load ptr, ptr %6, align 8, !tbaa !39 + %144 = ptrtoint ptr %143 to i64 + %145 = sub i64 %116, %144 + %146 = sdiv exact i64 %145, 48 + %147 = icmp ult i64 %142, %146 + br i1 %147, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !66 + +148:; preds = %.lr.ph + %149 = landingpad { ptr, i32 } cleanup call void @_ZNSt6vectorI16common_log_entrySaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #24 br label %149 -149: ; preds = %147, %136 - %.pn = phi { ptr, i32 } [ %148, %147 ], [ %137, %136 ] +149: ; preds = %148, %136 + %.pn = phi { ptr, i32 } [ %149, %148 ], [ %137, %136 ] call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %154 @@ -773,7 +775,7 @@ _ZNSt6vectorI16common_log_entrySaIS0_EED2Ev.exit: ; preds = %_ZSt8_DestroyIP16co ret void 154: ; preds = %149, %41 - %.pn.pn = phi { ptr, i32 } [ %.pn, %149 ], [ %42, %41 ] + %.pn.pn = phi { ptr, i32 } [ %.pn, %150 ], [ %42, %41 ] %155 = call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %0) #24 resume { ptr, i32 } %.pn.pn } diff --git a/bench/lua/optimized/ltm.ll b/bench/lua/optimized/ltm.ll index 0541d31e557..60bd3d1e862 100644 --- a/bench/lua/optimized/ltm.ll +++ b/bench/lua/optimized/ltm.ll @@ -816,8 +816,9 @@ define hidden void @luaT_adjustvarargs(ptr noundef %0, i32 noundef %1, ptr nound %46 = getelementptr inbounds nuw i8, ptr %39, i64 8 store i8 %45, ptr %46, align 8, !tbaa !24 %47 = load ptr, ptr %2, align 8, !tbaa !31 - %48 = getelementptr inbounds nuw %union.StackValue, ptr %47, i64 %indvars.iv, i32 0, i32 1 - store i8 0, ptr %48, align 8, !tbaa !31 + %48 = getelementptr inbounds nuw %union.StackValue, ptr %47, i64 %indvars.iv + %49 = getelementptr inbounds nuw i8, ptr %48, i64 8 + store i8 0, ptr %49, align 8, !tbaa !31 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph @@ -916,8 +917,9 @@ define hidden void @luaT_getvarargs(ptr noundef %0, ptr noundef readonly capture .lr.ph40: ; preds = %.lr.ph40.preheader, %.lr.ph40 %indvars.iv42 = phi i64 [ %34, %.lr.ph40.preheader ], [ %indvars.iv.next43, %.lr.ph40 ] - %44 = getelementptr inbounds nuw %union.StackValue, ptr %.0, i64 %indvars.iv42, i32 0, i32 1 - store i8 0, ptr %44, align 8, !tbaa !31 + %44 = getelementptr inbounds nuw %union.StackValue, ptr %.0, i64 %indvars.iv42 + %45 = getelementptr inbounds nuw i8, ptr %44, i64 8 + store i8 0, ptr %45, align 8, !tbaa !31 %indvars.iv.next43 = add nuw nsw i64 %indvars.iv42, 1 %exitcond46.not = icmp eq i64 %indvars.iv.next43, %wide.trip.count45 br i1 %exitcond46.not, label %._crit_edge, label %.lr.ph40 diff --git a/bench/luajit/optimized/lib_ffi.ll b/bench/luajit/optimized/lib_ffi.ll index d488c678aa3..c8ab0139154 100644 --- a/bench/luajit/optimized/lib_ffi.ll +++ b/bench/luajit/optimized/lib_ffi.ll @@ -1599,42 +1599,43 @@ ffi_clib_index.exit: ; preds = %20 %57 = icmp slt i32 %56, -1879048192 br i1 %57, label %.lr.ph, label %._crit_edge -.lr.ph: ; preds = %.preheader, %66 - %58 = phi i32 [ %70, %66 ], [ %56, %.preheader ] - %59 = phi i64 [ %68, %66 ], [ %54, %.preheader ] - %.02635 = phi i32 [ %.127, %66 ], [ 0, %.preheader ] +.lr.ph: ; preds = %.preheader, %67 + %58 = phi i32 [ %71, %67 ], [ %56, %.preheader ] + %59 = phi i64 [ %69, %67 ], [ %54, %.preheader ] + %.02635 = phi i32 [ %.127, %67 ], [ 0, %.preheader ] %60 = and i32 %58, 16711680 %61 = icmp eq i32 %60, 65536 - br i1 %61, label %62, label %66 + br i1 %61, label %62, label %67 62: ; preds = %.lr.ph - %63 = getelementptr inbounds nuw %struct.CType, ptr %48, i64 %59, i32 1 - %64 = load i32, ptr %63, align 4, !tbaa !58 - %65 = or i32 %64, %.02635 - br label %66 - -66: ; preds = %62, %.lr.ph - %.127 = phi i32 [ %65, %62 ], [ %.02635, %.lr.ph ] - %67 = and i32 %58, 65535 - %68 = zext nneg i32 %67 to i64 - %69 = getelementptr inbounds nuw %struct.CType, ptr %48, i64 %68 - %70 = load i32, ptr %69, align 8, !tbaa !52 - %71 = icmp slt i32 %70, -1879048192 - br i1 %71, label %.lr.ph, label %._crit_edge - -._crit_edge: ; preds = %66, %.preheader - %.026.lcssa = phi i32 [ 0, %.preheader ], [ %.127, %66 ] - %.lcssa34 = phi ptr [ %55, %.preheader ], [ %69, %66 ] - %.lcssa = phi i32 [ %56, %.preheader ], [ %70, %66 ] - %72 = or i32 %.lcssa, %.026.lcssa - %73 = and i32 %72, 33554432 - %.not.not = icmp eq i32 %73, 0 - br i1 %.not.not, label %74, label %.critedge33 - -74: ; preds = %._crit_edge - %75 = getelementptr inbounds nuw i8, ptr %45, i64 16 - %76 = load ptr, ptr %75, align 8, !tbaa !56 - tail call void @lj_cconv_ct_tv(ptr noundef nonnull %41, ptr noundef nonnull %.lcssa34, ptr noundef %76, ptr noundef nonnull %29, i32 noundef 0) #9 + %63 = getelementptr inbounds nuw %struct.CType, ptr %48, i64 %59 + %64 = getelementptr inbounds nuw i8, ptr %63, i64 4 + %65 = load i32, ptr %64, align 4, !tbaa !58 + %66 = or i32 %65, %.02635 + br label %67 + +67: ; preds = %62, %.lr.ph + %.127 = phi i32 [ %66, %62 ], [ %.02635, %.lr.ph ] + %68 = and i32 %58, 65535 + %69 = zext nneg i32 %68 to i64 + %70 = getelementptr inbounds nuw %struct.CType, ptr %48, i64 %69 + %71 = load i32, ptr %70, align 8, !tbaa !52 + %72 = icmp slt i32 %71, -1879048192 + br i1 %72, label %.lr.ph, label %._crit_edge + +._crit_edge:; preds = %67, %.preheader + %.lcssa34 = phi i32 [ 0, %.preheader ], [ %.127, %67 ] + %.lcssa = phi ptr [ %55, %.preheader ], [ %70, %67 ] + %.lcssa = phi i32 [ %56, %.preheader ], [ %71, %67 ] + %73 = or i32 %.lcssa, %.lcssa34 + %74 = and i32 %73, 33554432 + %.not.not = icmp eq i32 %74, 0 + br i1 %.not.not, label %75, label %.critedge33 + +75: ; preds = %._crit_edge + %76 = getelementptr inbounds nuw i8, ptr %45, i64 16 + %77 = load ptr, ptr %76, align 8, !tbaa !56 + tail call void @lj_cconv_ct_tv(ptr noundef nonnull %41, ptr noundef nonnull %.lcssa34, ptr noundef %77, ptr noundef nonnull %29, i32 noundef 0) #9 ret i32 0 .critedge33: ; preds = %35, %._crit_edge, %32, %ffi_clib_index.exit diff --git a/bench/luajit/optimized/lj_opt_loop.ll b/bench/luajit/optimized/lj_opt_loop.ll index 0b04968f675..2ab4f733cd3 100644 --- a/bench/luajit/optimized/lj_opt_loop.ll +++ b/bench/luajit/optimized/lj_opt_loop.ll @@ -141,39 +141,42 @@ lj_snap_grow_buf.exit.i: ; preds = %29, %3 %35 = load ptr, ptr %34, align 8, !tbaa !56 %36 = add nsw i32 %23, -1 %37 = zext i32 %36 to i64 - %38 = getelementptr inbounds nuw %struct.SnapShot, ptr %35, i64 %37, i32 5 - %39 = load i8, ptr %38, align 2, !tbaa !57 - %40 = zext i8 %39 to i32 - %41 = mul nsw i32 %33, %40 - %42 = add i32 %41, %32 - %43 = getelementptr inbounds nuw i8, ptr %5, i64 368 - %44 = load i32, ptr %43, align 8, !tbaa !59 - %45 = icmp ugt i32 %42, %44 - br i1 %45, label %46, label %lj_snap_grow_map.exit.i, !prof !55 - -46: ; preds = %lj_snap_grow_buf.exit.i - tail call void @lj_snap_grow_map_(ptr noundef nonnull %5, i32 noundef %42) #4 + %38 = getelementptr inbounds nuw %struct.SnapShot, ptr %35, i64 %37 + %39 = getelementptr inbounds nuw i8, ptr %38, i64 10 + %40 = load i8, ptr %39, align 2, !tbaa !57 + %41 = zext i8 %40 to i32 + %42 = mul nsw i32 %33, %41 + %43 = add i32 %42, %32 + %44 = getelementptr inbounds nuw i8, ptr %5, i64 368 + %45 = load i32, ptr %44, align 8, !tbaa !59 + %46 = icmp ugt i32 %43, %45 + br i1 %46, label %47, label %lj_snap_grow_map.exit.i, !prof !55 + +47: ; preds = %lj_snap_grow_buf.exit.i + tail call void @lj_snap_grow_map_(ptr noundef nonnull %5, i32 noundef %43) #4 %.pre.i = load ptr, ptr %34, align 8, !tbaa !56 + %.phi.trans.insert.i = getelementptr inbounds nuw %struct.SnapShot, ptr %.pre.i, i64 %37 + %.phi.trans.insert198.i = getelementptr inbounds nuw i8, ptr %.phi.trans.insert.i, i64 10 + %.pre199.i = load i8, ptr %.phi.trans.insert198.i, align 2, !tbaa !57 br label %lj_snap_grow_map.exit.i -lj_snap_grow_map.exit.i: ; preds = %46, %lj_snap_grow_buf.exit.i - %47 = phi ptr [ %35, %lj_snap_grow_buf.exit.i ], [ %.pre.i, %46 ] - %48 = getelementptr inbounds nuw %struct.SnapShot, ptr %47, i64 %37 - %49 = getelementptr inbounds nuw i8, ptr %5, i64 56 - %50 = load ptr, ptr %49, align 8, !tbaa !60 - %51 = load i32, ptr %48, align 4, !tbaa !61 - %52 = zext i32 %51 to i64 - %53 = getelementptr inbounds nuw i32, ptr %50, i64 %52 - %54 = getelementptr inbounds nuw i8, ptr %48, i64 10 - %55 = load i8, ptr %54, align 2, !tbaa !57 - %56 = zext i8 %55 to i64 - %57 = getelementptr inbounds nuw i32, ptr %53, i64 %56 +lj_snap_grow_map.exit.i: ; preds = %47, %lj_snap_grow_buf.exit.i + %47 = phi i8 [ %40, %lj_snap_grow_buf.exit.i ], [ %.pre199.i, %47 ] + %49 = phi ptr [ %35, %lj_snap_grow_buf.exit.i ], [ %.pre.i, %47 ] + %49 = getelementptr inbounds nuw %struct.SnapShot, ptr %49, i64 %37 + %51 = getelementptr inbounds nuw i8, ptr %5, i64 56 + %51 = load ptr, ptr %51, align 8, !tbaa !60 + %53 = load i32, ptr %50, align 4, !tbaa !61 + %54 = zext i32 %53 to i64 + %54 = getelementptr inbounds nuw i32, ptr %52, i64 %54 + %56 = zext i8 %47 to i64 + %57 = getelementptr inbounds nuw i32, ptr %55, i64 %56 store i32 -16777216, ptr %57, align 4, !tbaa !62 %58 = icmp ugt i32 %7, 32769 br i1 %58, label %.lr.ph.i, label %._crit_edge.i .lr.ph.i: ; preds = %lj_snap_grow_map.exit.i - %59 = getelementptr inbounds nuw i8, ptr %47, i64 12 + %59 = getelementptr inbounds nuw i8, ptr %49, i64 12 %60 = getelementptr inbounds nuw i8, ptr %5, i64 182 %61 = getelementptr inbounds nuw i8, ptr %5, i64 32 %wide.trip.count.i = zext i32 %7 to i64 @@ -191,7 +194,7 @@ lj_snap_grow_map.exit.i: ; preds = %46, %lj_snap_grow_b 66: ; preds = %62 %67 = getelementptr inbounds nuw i8, ptr %.0141187.i, i64 12 - %68 = load ptr, ptr %49, align 8, !tbaa !60 + %68 = load ptr, ptr %51, align 8, !tbaa !60 %69 = load i32, ptr %.0141187.i, align 4, !tbaa !61 %70 = zext i32 %69 to i64 %.idx.i.i = shl nuw nsw i64 %70, 2 @@ -255,7 +258,7 @@ lj_snap_grow_map.exit.i: ; preds = %46, %lj_snap_grow_b %.074.lcssa.i.i = phi i32 [ 0, %92 ], [ %.175.i.i, %138 ] %.073.lcssa.i.i = phi i32 [ 0, %92 ], [ %.1.i.i, %138 ] %104 = zext i32 %.074.lcssa.i.i to i64 - %105 = getelementptr inbounds nuw i32, ptr %53, i64 %104 + %105 = getelementptr inbounds nuw i32, ptr %55, i64 %104 %106 = load i32, ptr %105, align 4, !tbaa !62 %107 = lshr i32 %106, 24 %108 = icmp samesign ult i32 %107, %84 @@ -269,7 +272,7 @@ lj_snap_grow_map.exit.i: ; preds = %46, %lj_snap_grow_b %110 = getelementptr inbounds nuw i32, ptr %71, i64 %109 %111 = load i32, ptr %110, align 4, !tbaa !62 %112 = zext i32 %.07483.i.i to i64 - %113 = getelementptr inbounds nuw i32, ptr %53, i64 %112 + %113 = getelementptr inbounds nuw i32, ptr %55, i64 %112 %114 = load i32, ptr %113, align 4, !tbaa !62 %115 = lshr i32 %114, 24 %116 = lshr i32 %111, 24 @@ -325,7 +328,7 @@ lj_snap_grow_map.exit.i: ; preds = %46, %lj_snap_grow_b %144 = getelementptr inbounds nuw i32, ptr %103, i64 %143 store i32 %140, ptr %144, align 4, !tbaa !62 %145 = zext i32 %141 to i64 - %146 = getelementptr inbounds nuw i32, ptr %53, i64 %145 + %146 = getelementptr inbounds nuw i32, ptr %55, i64 %145 %147 = load i32, ptr %146, align 4, !tbaa !62 %148 = lshr i32 %147, 24 %149 = icmp samesign ult i32 %148, %84 @@ -598,7 +601,7 @@ loop_subst_snap.exit.i: ; preds = %.lr.ph93.i.i, %._cr br label %.thread171.i .thread171.i: ; preds = %281, %273, %270, %262, %258, %255, %253, %235, %._crit_edge199.i, %197, %194 - %.8.i = phi i32 [ %.0137188.i, %194 ], [ %.0137188.i, %197 ], [ %.3.i, %235 ], [ %.3.i, %._crit_edge199.i ], [ %.5.i, %270 ], [ %.5.i, %273 ], [ %283, %281 ], [ %.0137188.i, %262 ], [ %.0137188.i, %253 ], [ %.0137188.i, %258 ], [ %.0137188.i, %255 ] + %.8.i = phi i32 [ %.0137188.i, %194 ], [ %.0137188.i, %197 ], [ %.3.i, %235 ], [ %.3.i, %._crit_edge201.i ], [ %.5.i, %270 ], [ %.5.i, %273 ], [ %283, %281 ], [ %.0137188.i, %262 ], [ %.0137188.i, %253 ], [ %.0137188.i, %258 ], [ %.0137188.i, %255 ] %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond.not.i, label %._crit_edge.i, label %62, !llvm.loop !76 @@ -622,7 +625,7 @@ loop_subst_snap.exit.i: ; preds = %.lr.ph93.i.i, %._cr br label %294 294: ; preds = %288, %._crit_edge.i - %295 = load ptr, ptr %49, align 8, !tbaa !60 + %295 = load ptr, ptr %51, align 8, !tbaa !60 %296 = getelementptr inbounds nuw i8, ptr %.pre201.i, i64 10 %297 = load i8, ptr %296, align 2, !tbaa !57 %298 = zext i8 %297 to i64 @@ -825,7 +828,7 @@ loop_subst_snap.exit.i: ; preds = %.lr.ph93.i.i, %._cr %402 = load ptr, ptr %34, align 8, !tbaa !56 %403 = zext i32 %.0142194.i.i to i64 %404 = getelementptr inbounds nuw %struct.SnapShot, ptr %402, i64 %403 - %405 = load ptr, ptr %49, align 8, !tbaa !60 + %405 = load ptr, ptr %51, align 8, !tbaa !60 %406 = load i32, ptr %404, align 4, !tbaa !61 %407 = zext i32 %406 to i64 %408 = getelementptr inbounds nuw i32, ptr %405, i64 %407 diff --git a/bench/meilisearch-rs/optimized/3m3x2x3yg1gvj93u.ll b/bench/meilisearch-rs/optimized/3m3x2x3yg1gvj93u.ll index 5f6e1c75aa7..219de432b97 100644 --- a/bench/meilisearch-rs/optimized/3m3x2x3yg1gvj93u.ll +++ b/bench/meilisearch-rs/optimized/3m3x2x3yg1gvj93u.ll @@ -3646,7 +3646,7 @@ _ZN9hashbrown3raw5inner13RawTableInner25find_insert_slot_in_group17hd0a8816f9dc6 126: ; preds = %121 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h9b1935f87e96afeaE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %1) - to label %149 unwind label %127, !noalias !961 + to label %150 unwind label %127, !noalias !961 127: ; preds = %126 %128 = landingpad { ptr, i32 } @@ -3678,10 +3678,11 @@ _ZN9hashbrown3raw5inner13RawTableInner25find_insert_slot_in_group17hd0a8816f9dc6 136: ; preds = %78 %.val = load ptr, ptr %10, align 8, !nonnull !9, !noundef !9 - %137 = getelementptr inbounds { { { { i64, ptr, {} }, i64 } }, { i64, [8 x i64] }, i64 }, ptr %.val, i64 %.val2.i.i.i.i, i32 1 - %138 = getelementptr inbounds nuw i8, ptr %0, i64 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %138, ptr noundef nonnull align 8 dereferenceable(72) %137, i64 72, i1 false) - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %137, ptr noundef nonnull align 8 dereferenceable(72) %4, i64 72, i1 false) + %137 = getelementptr inbounds { { { { i64, ptr, {} }, i64 } }, { i64, [8 x i64] }, i64 }, ptr %.val, i64 %.val2.i.i.i.i + %138 = getelementptr inbounds nuw i8, ptr %137, i64 24 + %139 = getelementptr inbounds nuw i8, ptr %0, i64 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %139, ptr noundef nonnull align 8 dereferenceable(72) %138, i64 72, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %138, ptr noundef nonnull align 8 dereferenceable(72) %4, i64 72, i1 false) store i64 %.val2.i.i.i.i, ptr %0, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !965 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hdccf034b0721b487E.llvm.7557364402226394005"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3) @@ -3727,7 +3728,7 @@ _ZN9hashbrown3raw5inner13RawTableInner25find_insert_slot_in_group17hd0a8816f9dc6 %156 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h549226b8aa462334E.llvm.15137815808512737898"(ptr noalias noundef nonnull align 8 dereferenceable(72) %4) #33 - to label %159 unwind label %157 + to label %160 unwind label %157 157: ; preds = %159, %155 %158 = landingpad { ptr, i32 } @@ -3736,7 +3737,7 @@ _ZN9hashbrown3raw5inner13RawTableInner25find_insert_slot_in_group17hd0a8816f9dc6 unreachable .critedge: ; preds = %135, %127, %159 - %eh.lpad-body14 = phi { ptr, i32 } [ %156, %159 ], [ %132, %135 ], [ %128, %127 ] + %eh.lpad-body14 = phi { ptr, i32 } [ %156, %160 ], [ %132, %135 ], [ %128, %127 ] resume { ptr, i32 } %eh.lpad-body14 159: ; preds = %155 diff --git a/bench/mini-lsm-rs/optimized/211qm7emy1a6xqse.ll b/bench/mini-lsm-rs/optimized/211qm7emy1a6xqse.ll index 38f5fc96a1c..2c90210905a 100644 --- a/bench/mini-lsm-rs/optimized/211qm7emy1a6xqse.ll +++ b/bench/mini-lsm-rs/optimized/211qm7emy1a6xqse.ll @@ -5508,22 +5508,23 @@ _ZN15crossbeam_utils7backoff7Backoff6snooze17h2e565c48092f7405E.llvm.14580040072 %31 = icmp eq i64 %30, 0 br i1 %31, label %"_ZN17crossbeam_channel7flavors4list14Block$LT$T$GT$7destroy17h64ccf7a490ebc855E.exit", label %42 -.lr.ph.i4: ; preds = %"_ZN17crossbeam_channel7flavors4list13Slot$LT$T$GT$10wait_write17he2b851909be590c1E.exit", %41 - %.sroa.01.010.i = phi i64 [ %32, %41 ], [ 0, %"_ZN17crossbeam_channel7flavors4list13Slot$LT$T$GT$10wait_write17he2b851909be590c1E.exit" ] +.lr.ph.i4: ; preds = %"_ZN17crossbeam_channel7flavors4list13Slot$LT$T$GT$10wait_write17he2b851909be590c1E.exit", %42 + %.sroa.01.010.i = phi i64 [ %32, %42 ], [ 0, %"_ZN17crossbeam_channel7flavors4list13Slot$LT$T$GT$10wait_write17he2b851909be590c1E.exit" ] %32 = add nuw nsw i64 %.sroa.01.010.i, 1 - %33 = getelementptr inbounds nuw { { { [3 x i64] } }, { i64 } }, ptr %6, i64 %.sroa.01.010.i, i32 1 - %34 = load atomic i64, ptr %33 acquire, align 8 - %35 = and i64 %34, 2 - %36 = icmp eq i64 %35, 0 - br i1 %36, label %37, label %41 - -37: ; preds = %.lr.ph.i4 - %38 = atomicrmw or ptr %33, i64 4 acq_rel, align 8 - %39 = and i64 %38, 2 - %40 = icmp eq i64 %39, 0 - br i1 %40, label %"_ZN17crossbeam_channel7flavors4list14Block$LT$T$GT$7destroy17h64ccf7a490ebc855E.exit", label %41 + %33 = getelementptr inbounds nuw { { { [3 x i64] } }, { i64 } }, ptr %6, i64 %.sroa.01.010.i + %34 = getelementptr inbounds nuw i8, ptr %33, i64 24 + %35 = load atomic i64, ptr %34 acquire, align 8 + %36 = and i64 %35, 2 + %37 = icmp eq i64 %36, 0 + br i1 %37, label %38, label %42 -41: ; preds = %37, %.lr.ph.i4 +41: ; preds = %.lr.ph.i4 + %39 = atomicrmw or ptr %34, i64 4 acq_rel, align 8 + %40 = and i64 %39, 2 + %41 = icmp eq i64 %40, 0 + br i1 %41, label %"_ZN17crossbeam_channel7flavors4list14Block$LT$T$GT$7destroy17h64ccf7a490ebc855E.exit", label %42 + +42: ; preds = %38, %.lr.ph.i4 %exitcond.not.i = icmp eq i64 %32, 30 br i1 %exitcond.not.i, label %"_ZN17crossbeam_channel7flavors4list14Block$LT$T$GT$7destroy17h64ccf7a490ebc855E.exit.sink.split", label %.lr.ph.i4 @@ -5532,16 +5533,17 @@ _ZN15crossbeam_utils7backoff7Backoff6snooze17h2e565c48092f7405E.llvm.14580040072 br i1 %43, label %.lr.ph.i6, label %"_ZN17crossbeam_channel7flavors4list14Block$LT$T$GT$7destroy17h64ccf7a490ebc855E.exit.sink.split" .lr.ph.i6: ; preds = %42, %53 - %.sroa.01.010.i7 = phi i64 [ %44, %53 ], [ %25, %42 ] + %.sroa.01.010.i7 = phi i64 [ %44, %55 ], [ %25, %43 ] %44 = add nuw nsw i64 %.sroa.01.010.i7, 1 - %45 = getelementptr inbounds nuw { { { [3 x i64] } }, { i64 } }, ptr %6, i64 %.sroa.01.010.i7, i32 1 - %46 = load atomic i64, ptr %45 acquire, align 8 - %47 = and i64 %46, 2 - %48 = icmp eq i64 %47, 0 - br i1 %48, label %49, label %53 + %45 = getelementptr inbounds nuw { { { [3 x i64] } }, { i64 } }, ptr %6, i64 %.sroa.01.010.i7 + %47 = getelementptr inbounds nuw i8, ptr %45, i64 24 + %48 = load atomic i64, ptr %47 acquire, align 8 + %49 = and i64 %48, 2 + %50 = icmp eq i64 %49, 0 + br i1 %50, label %51, label %55 49: ; preds = %.lr.ph.i6 - %50 = atomicrmw or ptr %45, i64 4 acq_rel, align 8 + %50 = atomicrmw or ptr %47, i64 4 acq_rel, align 8 %51 = and i64 %50, 2 %52 = icmp eq i64 %51, 0 br i1 %52, label %"_ZN17crossbeam_channel7flavors4list14Block$LT$T$GT$7destroy17h64ccf7a490ebc855E.exit", label %53 @@ -5550,11 +5552,11 @@ _ZN15crossbeam_utils7backoff7Backoff6snooze17h2e565c48092f7405E.llvm.14580040072 %exitcond.not.i8 = icmp eq i64 %44, 30 br i1 %exitcond.not.i8, label %"_ZN17crossbeam_channel7flavors4list14Block$LT$T$GT$7destroy17h64ccf7a490ebc855E.exit.sink.split", label %.lr.ph.i6 -"_ZN17crossbeam_channel7flavors4list14Block$LT$T$GT$7destroy17h64ccf7a490ebc855E.exit.sink.split": ; preds = %53, %41, %42 +"_ZN17crossbeam_channel7flavors4list14Block$LT$T$GT$7destroy17h64ccf7a490ebc855E.exit.sink.split": ; preds = %53, %42, %42 tail call void @__rust_dealloc(ptr noundef nonnull %6, i64 noundef 1000, i64 noundef 8) #16 br label %"_ZN17crossbeam_channel7flavors4list14Block$LT$T$GT$7destroy17h64ccf7a490ebc855E.exit" -"_ZN17crossbeam_channel7flavors4list14Block$LT$T$GT$7destroy17h64ccf7a490ebc855E.exit": ; preds = %49, %37, %"_ZN17crossbeam_channel7flavors4list14Block$LT$T$GT$7destroy17h64ccf7a490ebc855E.exit.sink.split", %28 +"_ZN17crossbeam_channel7flavors4list14Block$LT$T$GT$7destroy17h64ccf7a490ebc855E.exit": ; preds = %49, %38, %"_ZN17crossbeam_channel7flavors4list14Block$LT$T$GT$7destroy17h64ccf7a490ebc855E.exit.sink.split", %28 %54 = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) br label %27 diff --git a/bench/mitsuba3/optimized/x86rapass.ll b/bench/mitsuba3/optimized/x86rapass.ll index 3080dbae564..d50474b3801 100644 --- a/bench/mitsuba3/optimized/x86rapass.ll +++ b/bench/mitsuba3/optimized/x86rapass.ll @@ -839,9 +839,9 @@ define hidden noundef i32 @_ZN6asmjit9_abi_1_103x8612RACFGBuilder6onInstEPNS0_8I br label %.loopexit37 .loopexit37: ; preds = %.loopexit37.loopexit, %25 - %534 = phi i1 [ false, %25 ], [ %532, %.loopexit37.loopexit ] - %535 = phi i32 [ 0, %25 ], [ %527, %.loopexit37.loopexit ] - %536 = phi i1 [ true, %25 ], [ %533, %.loopexit37.loopexit ] + %534 = phi i1 [ false, %25 ], [ %532, %.loopexit38.loopexit ] + %535 = phi i32 [ 0, %25 ], [ %527, %.loopexit38.loopexit ] + %536 = phi i1 [ true, %25 ], [ %533, %.loopexit38.loopexit ] %537 = getelementptr inbounds nuw i8, ptr %1, i64 56 %538 = load i32, ptr %537, align 4, !tbaa !37 %539 = icmp eq i32 %538, 0 @@ -932,7 +932,7 @@ define hidden noundef i32 @_ZN6asmjit9_abi_1_103x8612RACFGBuilder6onInstEPNS0_8I br label %596 596: ; preds = %594, %589, %586, %.loopexit37 - %597 = phi i32 [ %595, %594 ], [ %535, %.loopexit37 ], [ %591, %589 ], [ %535, %586 ] + %597 = phi i32 [ %595, %594 ], [ %535, %.loopexit38 ], [ %591, %589 ], [ %535, %586 ] %598 = load i32, ptr %6, align 8, !tbaa !27 %599 = and i32 %598, 1 %600 = icmp eq i32 %599, 0 @@ -1062,11 +1062,11 @@ define hidden noundef i32 @_ZN6asmjit9_abi_1_103x8612RACFGBuilder6onInstEPNS0_8I br label %.loopexit36.preheader .loopexit36.preheader: ; preds = %.loopexit36.loopexit, %655 - %.ph = phi ptr [ %685, %.loopexit36.loopexit ], [ %651, %655 ] + %.ph = phi ptr [ %685, %.loopexit37.loopexit ], [ %651, %655 ] br label %.loopexit36 .loopexit36: ; preds = %.loopexit36.preheader, %.loopexit36 - %686 = phi ptr [ %697, %.loopexit36 ], [ %.ph, %.loopexit36.preheader ] + %686 = phi ptr [ %697, %.loopexit37 ], [ %.ph, %.loopexit37.preheader ] %687 = getelementptr inbounds nuw i8, ptr %686, i64 8 %688 = load i32, ptr %687, align 4, !tbaa !105 %689 = and i32 %688, 16777216 @@ -1083,7 +1083,7 @@ define hidden noundef i32 @_ZN6asmjit9_abi_1_103x8612RACFGBuilder6onInstEPNS0_8I br i1 %698, label %.loopexit, label %.loopexit36, !llvm.loop !116 .loopexit: ; preds = %.loopexit36, %650, %647 - %699 = phi ptr [ %649, %647 ], [ %651, %650 ], [ %653, %.loopexit36 ] + %699 = phi ptr [ %649, %647 ], [ %651, %650 ], [ %653, %.loopexit37 ] %700 = getelementptr inbounds nuw i8, ptr %3, i64 64 %701 = ptrtoint ptr %699 to i64 %702 = ptrtoint ptr %700 to i64 @@ -1101,7 +1101,8 @@ define hidden noundef i32 @_ZN6asmjit9_abi_1_103x8612RACFGBuilder6onInstEPNS0_8I %710 = lshr i32 %709, 14 %711 = and i32 %710, 1023 %712 = zext nneg i32 %711 to i64 - %713 = getelementptr inbounds nuw %"struct.asmjit::_abi_1_10::x86::InstDB::CommonInfo", ptr @_ZN6asmjit9_abi_1_103x866InstDB16_commonInfoTableE, i64 %712, i32 1 + %713 = getelementptr inbounds nuw %"struct.asmjit::_abi_1_10::x86::InstDB::CommonInfo", ptr @_ZN6asmjit9_abi_1_103x866InstDB16_commonInfoTableE, i64 %712 + %713 = getelementptr inbounds nuw i8, ptr %.split, i64 4 %714 = load i32, ptr %713, align 4 %715 = lshr i32 %714, 30 %716 = trunc nuw nsw i32 %715 to i8 @@ -1217,7 +1218,8 @@ define hidden noundef i32 @_ZN6asmjit9_abi_1_103x8612RACFGBuilder6onInstEPNS0_8I %783 = lshr i32 %782, 14 %784 = and i32 %783, 1023 %785 = zext nneg i32 %784 to i64 - %786 = getelementptr inbounds nuw %"struct.asmjit::_abi_1_10::x86::InstDB::CommonInfo", ptr @_ZN6asmjit9_abi_1_103x866InstDB16_commonInfoTableE, i64 %785, i32 1 + %786 = getelementptr inbounds nuw %"struct.asmjit::_abi_1_10::x86::InstDB::CommonInfo", ptr @_ZN6asmjit9_abi_1_103x866InstDB16_commonInfoTableE, i64 %785 + %786 = getelementptr inbounds nuw i8, ptr %.split36, i64 4 %787 = load i32, ptr %786, align 4 %788 = lshr i32 %787, 27 %789 = and i32 %788, 7 @@ -1957,7 +1959,7 @@ define hidden noundef i32 @_ZN6asmjit9_abi_1_103x8612RACFGBuilder12moveVecToPtrE %10 = load i32, ptr %2, align 4, !tbaa !137 %11 = and i32 %10, 255 %12 = zext nneg i32 %11 to i64 - %13 = getelementptr inbounds nuw %"struct.asmjit::_abi_1_10::TypeUtils::TypeData", ptr @_ZN6asmjit9_abi_1_109TypeUtils9_typeDataE, i64 0, i32 1, i64 %12 + %13 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN6asmjit9_abi_1_109TypeUtils9_typeDataE, i64 256), i64 %12 %14 = load i8, ptr %13, align 1, !tbaa !11 %15 = icmp eq i8 %14, 0 br i1 %15, label %124, label %16 @@ -2027,7 +2029,8 @@ define hidden noundef i32 @_ZN6asmjit9_abi_1_103x8612RACFGBuilder12moveVecToPtrE %64 = getelementptr inbounds nuw i8, ptr %60, i64 80 %65 = load i32, ptr %64, align 4, !tbaa !37 %66 = lshr i32 %65, 3 - %67 = getelementptr inbounds nuw %"struct.asmjit::_abi_1_10::ArchTraits", ptr @_ZN6asmjit9_abi_1_1011_archTraitsE, i64 %63, i32 10 + %67 = getelementptr inbounds nuw %"struct.asmjit::_abi_1_10::ArchTraits", ptr @_ZN6asmjit9_abi_1_1011_archTraitsE, i64 %63 + %67 = getelementptr inbounds nuw i8, ptr %.split, i64 148 %68 = and i32 %66, 31 %69 = zext nneg i32 %68 to i64 %70 = getelementptr inbounds nuw i8, ptr %67, i64 %69 @@ -2325,7 +2328,7 @@ define hidden noundef i32 @_ZN6asmjit9_abi_1_103x8612RACFGBuilder17moveRegToStac 97: ; preds = %93 %98 = and i32 %11, 255 %99 = zext nneg i32 %98 to i64 - %100 = getelementptr inbounds nuw %"struct.asmjit::_abi_1_10::TypeUtils::TypeData", ptr @_ZN6asmjit9_abi_1_109TypeUtils9_typeDataE, i64 0, i32 1, i64 %99 + %100 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN6asmjit9_abi_1_109TypeUtils9_typeDataE, i64 256), i64 %99 %101 = load i8, ptr %100, align 1, !tbaa !11 %102 = zext i8 %101 to i32 %103 = shl nuw i32 %102, 24 diff --git a/bench/mold/optimized/thread_dispatcher.ll b/bench/mold/optimized/thread_dispatcher.ll index 8bb077a5758..79c5854781f 100644 --- a/bench/mold/optimized/thread_dispatcher.ll +++ b/bench/mold/optimized/thread_dispatcher.ll @@ -625,8 +625,7 @@ _ZN3tbb6detail2d18rw_mutex4lockEv.exit: ; preds = %_ZN3tbb6detail2d18r %49 = getelementptr inbounds nuw i8, ptr %45, i64 220 %50 = load i32, ptr %49, align 4, !tbaa !42 %51 = zext i32 %50 to i64 - %.idx.i = mul nuw nsw i64 %51, 24 - %52 = getelementptr inbounds nuw i8, ptr %31, i64 %.idx.i + %52 = getelementptr inbounds nuw %"class.tbb::detail::r1::intrusive_list", ptr %31, i64 %51 %53 = getelementptr inbounds nuw i8, ptr %52, i64 16 %54 = load i64, ptr %53, align 8, !tbaa !84 %55 = add i64 %54, -1 @@ -720,8 +719,7 @@ define void @_ZN3tbb6detail2r117thread_dispatcher13remove_clientERNS1_24thread_d %6 = getelementptr inbounds nuw i8, ptr %5, i64 220 %7 = load i32, ptr %6, align 4, !tbaa !42 %8 = zext i32 %7 to i64 - %.idx = mul nuw nsw i64 %8, 24 - %9 = getelementptr inbounds nuw i8, ptr %3, i64 %.idx + %9 = getelementptr inbounds nuw %"class.tbb::detail::r1::intrusive_list", ptr %3, i64 %8 %10 = getelementptr inbounds nuw i8, ptr %9, i64 16 %11 = load i64, ptr %10, align 8, !tbaa !84 %12 = add i64 %11, -1 diff --git a/bench/msdfgen/optimized/Scanline.ll b/bench/msdfgen/optimized/Scanline.ll index 64d2300e309..2331b66be66 100644 --- a/bench/msdfgen/optimized/Scanline.ll +++ b/bench/msdfgen/optimized/Scanline.ll @@ -127,7 +127,8 @@ while.body: ; preds = %while.body.lr.ph, % if.then: ; preds = %while.body %conv21 = sext i32 %ai.0150 to i64 - %direction = getelementptr inbounds %"struct.msdfgen::Scanline::Intersection", ptr %0, i64 %conv21, i32 1 + %direction = getelementptr inbounds %"struct.msdfgen::Scanline::Intersection", ptr %0, i64 %conv21 + %direction = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 8 %8 = load i32, ptr %direction, align 8 switch i32 %fillRule, label %_ZN7msdfgen17interpretFillRuleEiNS_8FillRuleE.exit [ i32 0, label %sw.bb.i @@ -177,7 +178,8 @@ if.end: ; preds = %cond.true28, %_ZN7m if.then42: ; preds = %if.end %conv44 = sext i32 %bi.0151 to i64 - %direction46 = getelementptr inbounds %"struct.msdfgen::Scanline::Intersection", ptr %3, i64 %conv44, i32 1 + %direction46 = getelementptr inbounds %"struct.msdfgen::Scanline::Intersection", ptr %3, i64 %conv44 + %direction46 = getelementptr inbounds nuw i8, ptr %add.ptr.i81, i64 8 %10 = load i32, ptr %direction46, align 8 switch i32 %fillRule, label %_ZN7msdfgen17interpretFillRuleEiNS_8FillRuleE.exit92 [ i32 0, label %sw.bb.i90 @@ -247,7 +249,8 @@ while.body69: ; preds = %while.body69.lr.ph, if.then84: ; preds = %while.body69 %conv86 = sext i32 %ai.2163 to i64 - %direction88 = getelementptr inbounds %"struct.msdfgen::Scanline::Intersection", ptr %0, i64 %conv86, i32 1 + %direction88 = getelementptr inbounds %"struct.msdfgen::Scanline::Intersection", ptr %0, i64 %conv86 + %direction88 = getelementptr inbounds nuw i8, ptr %add.ptr.i106, i64 8 %13 = load i32, ptr %direction88, align 8 switch i32 %fillRule, label %_ZN7msdfgen17interpretFillRuleEiNS_8FillRuleE.exit117 [ i32 0, label %sw.bb.i115 @@ -297,7 +300,8 @@ if.end104: ; preds = %cond.true96, %_ZN7m if.then111: ; preds = %if.end104 %conv113 = sext i32 %bi.2164 to i64 - %direction115 = getelementptr inbounds %"struct.msdfgen::Scanline::Intersection", ptr %3, i64 %conv113, i32 1 + %direction115 = getelementptr inbounds %"struct.msdfgen::Scanline::Intersection", ptr %3, i64 %conv113 + %direction115 = getelementptr inbounds nuw i8, ptr %add.ptr.i129, i64 8 %15 = load i32, ptr %direction115, align 8 switch i32 %fillRule, label %_ZN7msdfgen17interpretFillRuleEiNS_8FillRuleE.exit140 [ i32 0, label %sw.bb.i138 @@ -844,7 +848,8 @@ _ZNK7msdfgen8Scanline6moveToEd.exit: ; preds = %while.cond.i, %if.e if.then: ; preds = %_ZNK7msdfgen8Scanline6moveToEd.exit %conv = zext nneg i32 %index.1.sink.i to i64 - %direction = getelementptr inbounds nuw %"struct.msdfgen::Scanline::Intersection", ptr %0, i64 %conv, i32 1 + %direction = getelementptr inbounds nuw %"struct.msdfgen::Scanline::Intersection", ptr %0, i64 %conv + %direction = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 8 %9 = load i32, ptr %direction, align 8 br label %return @@ -926,7 +931,8 @@ _ZNK7msdfgen8Scanline6moveToEd.exit.i: ; preds = %while.cond.i.i, %if if.then.i: ; preds = %_ZNK7msdfgen8Scanline6moveToEd.exit.i %conv.i = zext nneg i32 %index.1.sink.i.i to i64 - %direction.i = getelementptr inbounds nuw %"struct.msdfgen::Scanline::Intersection", ptr %0, i64 %conv.i, i32 1 + %direction.i = getelementptr inbounds nuw %"struct.msdfgen::Scanline::Intersection", ptr %0, i64 %conv.i + %direction.i = getelementptr inbounds nuw i8, ptr %add.ptr.i.i, i64 8 %9 = load i32, ptr %direction.i, align 8 br label %_ZNK7msdfgen8Scanline16sumIntersectionsEd.exit diff --git a/bench/nghttp2/optimized/nghttp2_frame.ll b/bench/nghttp2/optimized/nghttp2_frame.ll index 2da55f1bcb3..137099544cd 100644 --- a/bench/nghttp2/optimized/nghttp2_frame.ll +++ b/bench/nghttp2/optimized/nghttp2_frame.ll @@ -452,18 +452,19 @@ define hidden void @nghttp2_frame_origin_init(ptr noundef captures(none) %0, ptr br i1 %.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %3, %.lr.ph - %.015 = phi i64 [ %8, %.lr.ph ], [ 0, %3 ] - %.01214 = phi i64 [ %7, %.lr.ph ], [ 0, %3 ] - %4 = getelementptr inbounds nuw %struct.nghttp2_origin_entry, ptr %1, i64 %.015, i32 1 - %5 = load i64, ptr %4, align 8, !tbaa !53 - %6 = add i64 %.01214, 2 - %7 = add i64 %6, %5 - %8 = add nuw i64 %.015, 1 - %exitcond.not = icmp eq i64 %8, %2 + %.015 = phi i64 [ %9, %.lr.ph ], [ 0, %3 ] + %.01214 = phi i64 [ %8, %.lr.ph ], [ 0, %3 ] + %4 = getelementptr inbounds nuw %struct.nghttp2_origin_entry, ptr %1, i64 %.015 + %5 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %6 = load i64, ptr %5, align 8, !tbaa !53 + %7 = add i64 %.01214, 2 + %8 = add i64 %7, %6 + %9 = add nuw i64 %.015, 1 + %exitcond.not = icmp eq i64 %9, %2 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !55 ._crit_edge: ; preds = %.lr.ph, %3 - %.012.lcssa = phi i64 [ 0, %3 ], [ %7, %.lr.ph ] + %.012.lcssa = phi i64 [ 0, %3 ], [ %8, %.lr.ph ] store i64 %.012.lcssa, ptr %0, align 8, !tbaa !3 %9 = getelementptr inbounds nuw i8, ptr %0, i64 12 store i8 12, ptr %9, align 4, !tbaa !9 diff --git a/bench/nghttp2/optimized/nghttp2_map.ll b/bench/nghttp2/optimized/nghttp2_map.ll index 183ac077506..448af05883d 100644 --- a/bench/nghttp2/optimized/nghttp2_map.ll +++ b/bench/nghttp2/optimized/nghttp2_map.ll @@ -57,26 +57,27 @@ define hidden i32 @nghttp2_map_each(ptr noundef readonly captures(none) %0, ptr %12 = zext i32 %11 to i64 br label %13 -13: ; preds = %7, %20 - %.01316 = phi i64 [ 0, %7 ], [ %21, %20 ] +13: ; preds = %7, %21 + %.01316 = phi i64 [ 0, %7 ], [ %22, %21 ] %14 = load ptr, ptr %0, align 8, !tbaa !10 - %15 = getelementptr inbounds nuw %struct.nghttp2_map_bucket, ptr %14, i64 %.01316, i32 2 - %16 = load ptr, ptr %15, align 8, !tbaa !13 - %17 = icmp eq ptr %16, null - br i1 %17, label %20, label %18 - -18: ; preds = %13 - %19 = tail call i32 %1(ptr noundef nonnull %16, ptr noundef %2) #12 - %.not = icmp eq i32 %19, 0 - br i1 %.not, label %20, label %.loopexit - -20: ; preds = %18, %13 - %21 = add nuw nsw i64 %.01316, 1 - %exitcond.not = icmp eq i64 %21, %12 + %15 = getelementptr inbounds nuw %struct.nghttp2_map_bucket, ptr %14, i64 %.01316 + %16 = getelementptr inbounds nuw i8, ptr %15, i64 8 + %17 = load ptr, ptr %16, align 8, !tbaa !13 + %18 = icmp eq ptr %17, null + br i1 %18, label %21, label %19 + +19:; preds = %13 + %20 = tail call i32 %1(ptr noundef nonnull %17, ptr noundef %2) #12 + %.not = icmp eq i32 %20, 0 + br i1 %.not, label %21, label %.loopexit + +21:; preds = %19, %13 + %22 = add nuw nsw i64 %.01316, 1 + %exitcond.not = icmp eq i64 %22, %12 br i1 %exitcond.not, label %.loopexit, label %13, !llvm.loop !16 -.loopexit: ; preds = %20, %18, %3 - %.0 = phi i32 [ 0, %3 ], [ 0, %20 ], [ %19, %18 ] +.loopexit: ; preds = %21, %19, %3 + %.0 = phi i32 [ 0, %3 ], [ 0, %21 ], [ %20, %19 ] ret i32 %.0 } @@ -390,38 +391,40 @@ define hidden ptr @nghttp2_map_find(ptr noundef readonly captures(none) %0, i32 %14 = xor i32 %notmask, -1 %15 = zext nneg i32 %14 to i64 %16 = load ptr, ptr %0, align 8, !tbaa !10 - %17 = getelementptr inbounds nuw %struct.nghttp2_map_bucket, ptr %16, i64 %13, i32 2 - %18 = load ptr, ptr %17, align 8, !tbaa !13 - %19 = icmp eq ptr %18, null - br i1 %19, label %.loopexit, label %.lr.ph.preheader - -.lr.ph: ; preds = %27 - %20 = add nuw nsw i64 %.0151926, 1 - %21 = load i32, ptr %30, align 8, !tbaa !21 - %22 = zext i32 %21 to i64 - %.not = icmp samesign ult i64 %.0151926, %22 + %17 = getelementptr inbounds nuw %struct.nghttp2_map_bucket, ptr %16, i64 %13 + %18 = getelementptr inbounds nuw i8, ptr %17, i64 8 + %19 = load ptr, ptr %18, align 8, !tbaa !13 + %20 = icmp eq ptr %19, null + br i1 %20, label %.loopexit, label %.lr.ph.preheader + +.lr.ph:; preds = %29 + %21 = add nuw nsw i64 %.0151926, 1 + %22 = load i32, ptr %32, align 8, !tbaa !21 + %23 = zext i32 %22 to i64 + %.not = icmp samesign ult i64 %.0151926, %23 br i1 %.not, label %.lr.ph.preheader, label %.loopexit .lr.ph.preheader: ; preds = %6, %.lr.ph - %.0161827 = phi i64 [ %29, %.lr.ph ], [ %13, %6 ] - %.0151926 = phi i64 [ %20, %.lr.ph ], [ 0, %6 ] - %23 = phi ptr [ %32, %.lr.ph ], [ %18, %6 ] - %24 = getelementptr inbounds nuw %struct.nghttp2_map_bucket, ptr %16, i64 %.0161827, i32 1 - %25 = load i32, ptr %24, align 4, !tbaa !20 - %26 = icmp eq i32 %25, %1 - br i1 %26, label %.loopexit, label %27 - -27: ; preds = %.lr.ph.preheader - %28 = add nuw nsw i64 %.0161827, 1 - %29 = and i64 %28, %15 - %30 = getelementptr inbounds nuw %struct.nghttp2_map_bucket, ptr %16, i64 %29 - %31 = getelementptr inbounds nuw i8, ptr %30, i64 8 - %32 = load ptr, ptr %31, align 8, !tbaa !13 - %33 = icmp eq ptr %32, null - br i1 %33, label %.loopexit, label %.lr.ph - -.loopexit: ; preds = %.lr.ph, %27, %.lr.ph.preheader, %6, %2 - %.0 = phi ptr [ null, %2 ], [ null, %6 ], [ null, %.lr.ph ], [ null, %27 ], [ %23, %.lr.ph.preheader ] + %.0161827 = phi i64 [ %31, %.lr.ph ], [ %13, %6 ] + %.0151926 = phi i64 [ %21, %.lr.ph ], [ 0, %6 ] + %23 = phi ptr [ %34, %.lr.ph ], [ %19, %6 ] + %24 = getelementptr inbounds nuw %struct.nghttp2_map_bucket, ptr %16, i64 %.0161827 + %26 = getelementptr inbounds nuw i8, ptr %24, i64 4 + %27 = load i32, ptr %26, align 4, !tbaa !20 + %28 = icmp eq i32 %27, %1 + br i1 %28, label %.loopexit, label %29 + +29:; preds = %.lr.ph.preheader + %30 = add nuw nsw i64 %.0161827, 1 + %31 = and i64 %30, %15 + %31 = getelementptr inbounds nuw %struct.nghttp2_map_bucket, ptr %16, i64 %31 + %33 = getelementptr inbounds nuw i8, ptr %31, i64 8 + %34 = load ptr, ptr %33, align 8, !tbaa !13 + %35 = icmp eq ptr %34, null + br i1 %35, label %.loopexit, label %.lr.ph + +.loopexit: ; preds = %.lr.ph, %29, %.lr.ph.preheader, %6, %2 + %.0 = phi ptr [ null, %2 ], [ null, %6 ], [ null, %.lr.ph ], [ null, %29 ], [ %24, %.lr.ph.preheader ] ret ptr %.0 } diff --git a/bench/ninja/optimized/subprocess-posix.ll b/bench/ninja/optimized/subprocess-posix.ll index 0e9932a0bab..104f6d42634 100644 --- a/bench/ninja/optimized/subprocess-posix.ll +++ b/bench/ninja/optimized/subprocess-posix.ll @@ -1207,10 +1207,10 @@ _ZNSt6vectorI6pollfdSaIS0_EE9push_backERKS0_.exit: ; preds = %_ZNSt6vectorI6poll br label %_ZNSt6vectorI6pollfdSaIS0_EED2Ev.exit 57: ; preds = %.lr.ph96, %97 - %.pre104107 = phi ptr [ %52, %.lr.ph96 ], [ %.pre104108, %97 ] - %58 = phi ptr [ %52, %.lr.ph96 ], [ %98, %97 ] - %.01194 = phi i64 [ 0, %.lr.ph96 ], [ %.112, %97 ] - %.sroa.031.093 = phi ptr [ %51, %.lr.ph96 ], [ %.sroa.031.1, %97 ] + %.pre104107 = phi ptr [ %52, %.lr.ph96 ], [ %.pre104108, %98 ] + %58 = phi ptr [ %52, %.lr.ph96 ], [ %98, %98 ] + %.01194 = phi i64 [ 0, %.lr.ph96 ], [ %.112, %98 ] + %.sroa.031.093 = phi ptr [ %51, %.lr.ph96 ], [ %.sroa.031.1, %98 ] %59 = load ptr, ptr %.sroa.031.093, align 8, !tbaa !43 %60 = getelementptr inbounds nuw i8, ptr %59, i64 32 %61 = load i32, ptr %60, align 8, !tbaa !14 @@ -1219,14 +1219,15 @@ _ZNSt6vectorI6pollfdSaIS0_EE9push_backERKS0_.exit: ; preds = %_ZNSt6vectorI6poll 63: ; preds = %57 %64 = add i64 %.01194, 1 - %65 = getelementptr inbounds nuw %struct.pollfd, ptr %.sroa.057.1, i64 %.01194, i32 2 - %66 = load i16, ptr %65, align 2, !tbaa !50 - %.not = icmp eq i16 %66, 0 - br i1 %.not, label %95, label %67 + %65 = getelementptr inbounds nuw %struct.pollfd, ptr %.sroa.057.1, i64 %.01194 + %66 = getelementptr inbounds nuw i8, ptr %65, i64 6 + %67 = load i16, ptr %66, align 2, !tbaa !50 + %.not = icmp eq i16 %67, 0 + br i1 %.not, label %96, label %68 67: ; preds = %63 invoke void @_ZN10Subprocess11OnPipeReadyEv(ptr noundef nonnull align 8 dereferenceable(41) %59) - to label %68 unwind label %93 + to label %69 unwind label %93 68: ; preds = %67 %69 = load ptr, ptr %.sroa.031.093, align 8, !tbaa !43 @@ -1292,10 +1293,10 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPP10SubprocessSt6vectorIS3_SaIS3_EEEES8 br label %97 97: ; preds = %57, %95, %90 - %.pre104108 = phi ptr [ %.pre104107, %57 ], [ %.pre104, %95 ], [ %92, %90 ] - %98 = phi ptr [ %58, %57 ], [ %.pre104, %95 ], [ %92, %90 ] - %.sroa.031.1 = phi ptr [ %.sroa.031.093, %57 ], [ %96, %95 ], [ %84, %90 ] - %.112 = phi i64 [ %.01194, %57 ], [ %64, %95 ], [ %64, %90 ] + %.pre104108 = phi ptr [ %.pre104107, %57 ], [ %.pre104, %96 ], [ %92, %91 ] + %98 = phi ptr [ %58, %57 ], [ %.pre104, %96 ], [ %92, %91 ] + %.sroa.031.1 = phi ptr [ %.sroa.031.093, %57 ], [ %96, %96 ], [ %84, %91 ] + %.112 = phi i64 [ %.01194, %57 ], [ %64, %96 ], [ %64, %91 ] %.not71 = icmp eq ptr %.sroa.031.1, %98 br i1 %.not71, label %._crit_edge97.loopexit, label %57 @@ -1308,9 +1309,9 @@ _ZNSt6vectorI6pollfdSaIS0_EED2Ev.exit: ; preds = %50, %._crit_edge97. ret i1 %.0 .thread: ; preds = %43, %93, %36 - %.sroa.14.082 = phi ptr [ %.sroa.10.087, %36 ], [ %.sroa.14.1, %93 ], [ %.sroa.14.1, %43 ] - %.sroa.057.079 = phi ptr [ %.sroa.057.088, %36 ], [ %.sroa.057.1, %93 ], [ %.sroa.057.1, %43 ] - %.pn2267 = phi { ptr, i32 } [ %lpad.phi, %36 ], [ %94, %93 ], [ %44, %43 ] + %.sroa.14.082 = phi ptr [ %.sroa.10.087, %36 ], [ %.sroa.14.1, %94 ], [ %.sroa.14.1, %43 ] + %.sroa.057.079 = phi ptr [ %.sroa.057.088, %36 ], [ %.sroa.057.1, %94 ], [ %.sroa.057.1, %43 ] + %.pn2267 = phi { ptr, i32 } [ %lpad.phi, %36 ], [ %94, %94 ], [ %44, %43 ] %102 = ptrtoint ptr %.sroa.14.082 to i64 %103 = ptrtoint ptr %.sroa.057.079 to i64 %104 = sub i64 %102, %103 diff --git a/bench/nix/optimized/add-to-store.ll b/bench/nix/optimized/add-to-store.ll index d1a51357f20..6b2b67312f8 100644 --- a/bench/nix/optimized/add-to-store.ll +++ b/bench/nix/optimized/add-to-store.ll @@ -11330,15 +11330,16 @@ define linkonce_odr noundef nonnull align 8 dereferenceable(224) ptr @_ZN5boost1 br i1 %.not16, label %.critedge, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm.exit .critedge: ; preds = %21, %8, %25 - %33 = getelementptr inbounds %"struct.boost::io::detail::format_item", ptr %9, i64 %.018, i32 2 - %34 = getelementptr inbounds nuw i8, ptr %33, i64 8 + %33 = getelementptr inbounds %"struct.boost::io::detail::format_item", ptr %9, i64 %.018 + %34 = getelementptr inbounds nuw i8, ptr %33, i64 16 %35 = load i64, ptr %34, align 8 %.not17 = icmp eq i64 %35, 0 br i1 %.not17, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm.exit, label %.sink.split.i.i .sink.split.i.i: ; preds = %.critedge + %36 = getelementptr inbounds nuw i8, ptr %33, i64 8 store i64 0, ptr %34, align 8 - %36 = load ptr, ptr %33, align 8 + %36 = load ptr, ptr %36, align 8 store i8 0, ptr %36, align 1 %.pre = load ptr, ptr %2, align 8 %.pre23 = load ptr, ptr %0, align 8 @@ -11386,7 +11387,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm.exit: ; preds = % br label %.lr.ph19 .lr.ph19: ; preds = %.lr.ph19.preheader, %69 - %indvars.iv = phi i64 [ 0, %.lr.ph19.preheader ], [ %indvars.iv.next, %69 ] + %indvars.iv = phi i64 [ 0, %.lr.ph19.preheader ], [ %indvars.iv.next, %70 ] %62 = trunc nsw i64 %indvars.iv to i32 %63 = sdiv i32 %62, 64 %.sext = sext i32 %63 to i64 diff --git a/bench/nuttx/optimized/lib_memoryregion.ll b/bench/nuttx/optimized/lib_memoryregion.ll index a475ed915b0..8c4e16be10a 100644 --- a/bench/nuttx/optimized/lib_memoryregion.ll +++ b/bench/nuttx/optimized/lib_memoryregion.ll @@ -55,13 +55,13 @@ define range(i64 -22, 6148914691236517207) i64 @parse_memory_region(ptr noundef %21 = add nuw nsw i64 %20, 1 br label %41 -.lr.ph49: ; preds = %.preheader, %34 - %.248 = phi i64 [ %37, %34 ], [ %.061, %.preheader ] - %.03247 = phi ptr [ %36, %34 ], [ %0, %.preheader ] +.lr.ph49: ; preds = %.preheader, %36 + %.248 = phi i64 [ %39, %36 ], [ %.061, %.preheader ] + %.03247 = phi ptr [ %38, %36 ], [ %0, %.preheader ] %22 = urem i64 %.248, 3 %23 = udiv i64 %.248, 3 %24 = call i64 @strtoul(ptr noundef nonnull %.03247, ptr noundef nonnull %4, i32 noundef 0) - switch i64 %22, label %31 [ + switch i64 %22, label %32 [ i64 0, label %25 i64 1, label %28 ] @@ -70,32 +70,34 @@ define range(i64 -22, 6148914691236517207) i64 @parse_memory_region(ptr noundef %26 = udiv i64 %.248, 3 %27 = getelementptr inbounds nuw %struct.memory_region_s, ptr %1, i64 %26 store i64 %24, ptr %27, align 8 - br label %34 + br label %36 28: ; preds = %.lr.ph49 %29 = udiv i64 %.248, 3 - %30 = getelementptr inbounds nuw %struct.memory_region_s, ptr %1, i64 %29, i32 1 - store i64 %24, ptr %30, align 8 - br label %34 - -31: ; preds = %.lr.ph49 - %32 = trunc i64 %24 to i32 - %33 = getelementptr inbounds nuw %struct.memory_region_s, ptr %1, i64 %23, i32 2 - store i32 %32, ptr %33, align 8 - br label %34 - -34: ; preds = %28, %31, %25 - %35 = load ptr, ptr %4, align 8 - %36 = getelementptr inbounds nuw i8, ptr %35, i64 1 - %37 = add nuw i64 %.248, 1 - %38 = load i8, ptr %36, align 1 - %.not37 = icmp ne i8 %38, 0 - %39 = icmp ult i64 %37, %16 - %or.cond39 = select i1 %.not37, i1 %39, i1 false + %30 = getelementptr inbounds nuw %struct.memory_region_s, ptr %1, i64 %29 + %31 = getelementptr inbounds nuw i8, ptr %30, i64 8 + store i64 %24, ptr %31, align 8 + br label %36 + +32:; preds = %.lr.ph49 + %33 = trunc i64 %24 to i32 + %34 = getelementptr inbounds nuw %struct.memory_region_s, ptr %1, i64 %23 + %35 = getelementptr inbounds nuw i8, ptr %34, i64 16 + store i32 %33, ptr %35, align 8 + br label %36 + +36: ; preds = %28, %32, %25 + %37 = load ptr, ptr %4, align 8 + %38 = getelementptr inbounds nuw i8, ptr %37, i64 1 + %39 = add nuw i64 %.248, 1 + %40 = load i8, ptr %38, align 1 + %.not37 = icmp ne i8 %40, 0 + %41 = icmp ult i64 %39, %16 + %or.cond39 = select i1 %.not37, i1 %41, i1 false br i1 %or.cond39, label %.lr.ph49, label %.critedge, !llvm.loop !8 -.critedge: ; preds = %34, %.preheader - %.2.lcssa = phi i64 [ %.061, %.preheader ], [ %37, %34 ] +.critedge: ; preds = %36, %.preheader + %.2.lcssa = phi i64 [ %.061, %.preheader ], [ %39, %36 ] %40 = udiv i64 %.2.lcssa, 3 br label %41 @@ -151,13 +153,13 @@ parse_memory_region.exit.thread22: ; preds = %parse_memory_region %.not3745.i.not = icmp eq i8 %20, 0 br i1 %.not3745.i.not, label %parse_memory_region.exit20, label %.lr.ph49.i -.lr.ph49.i: ; preds = %.preheader.i, %33 - %.248.i = phi i64 [ %36, %33 ], [ 0, %.preheader.i ] - %.03247.i = phi ptr [ %35, %33 ], [ %0, %.preheader.i ] +.lr.ph49.i: ; preds = %.preheader.i, %35 + %.248.i = phi i64 [ %38, %35 ], [ 0, %.preheader.i ] + %.03247.i = phi ptr [ %37, %35 ], [ %0, %.preheader.i ] %21 = urem i64 %.248.i, 3 %22 = udiv i64 %.248.i, 3 %23 = call i64 @strtoul(ptr noundef nonnull %.03247.i, ptr noundef nonnull %2, i32 noundef 0) - switch i64 %21, label %30 [ + switch i64 %21, label %31 [ i64 0, label %24 i64 1, label %27 ] @@ -166,31 +168,33 @@ parse_memory_region.exit.thread22: ; preds = %parse_memory_region %25 = udiv i64 %.248.i, 3 %26 = getelementptr inbounds nuw %struct.memory_region_s, ptr %17, i64 %25 store i64 %23, ptr %26, align 8 - br label %33 + br label %35 27: ; preds = %.lr.ph49.i %28 = udiv i64 %.248.i, 3 - %29 = getelementptr inbounds nuw %struct.memory_region_s, ptr %17, i64 %28, i32 1 - store i64 %23, ptr %29, align 8 - br label %33 - -30: ; preds = %.lr.ph49.i - %31 = trunc i64 %23 to i32 - %32 = getelementptr inbounds nuw %struct.memory_region_s, ptr %17, i64 %22, i32 2 - store i32 %31, ptr %32, align 8 - br label %33 - -33: ; preds = %30, %27, %24 - %34 = load ptr, ptr %2, align 8 - %35 = getelementptr inbounds nuw i8, ptr %34, i64 1 - %36 = add nuw i64 %.248.i, 1 - %37 = load i8, ptr %35, align 1 - %.not37.i = icmp ne i8 %37, 0 - %38 = icmp ult i64 %36, %19 - %or.cond39.i = select i1 %.not37.i, i1 %38, i1 false + %29 = getelementptr inbounds nuw %struct.memory_region_s, ptr %17, i64 %28 + %30 = getelementptr inbounds nuw i8, ptr %29, i64 8 + store i64 %23, ptr %30, align 8 + br label %35 + +31:; preds = %.lr.ph49.i + %32 = trunc i64 %23 to i32 + %33 = getelementptr inbounds nuw %struct.memory_region_s, ptr %17, i64 %22 + %34 = getelementptr inbounds nuw i8, ptr %33, i64 16 + store i32 %32, ptr %34, align 8 + br label %35 + +35: ; preds = %31, %27, %24 + %36 = load ptr, ptr %2, align 8 + %37 = getelementptr inbounds nuw i8, ptr %36, i64 1 + %38 = add nuw i64 %.248.i, 1 + %39 = load i8, ptr %37, align 1 + %.not37.i = icmp ne i8 %39, 0 + %40 = icmp ult i64 %38, %19 + %or.cond39.i = select i1 %.not37.i, i1 %40, i1 false br i1 %or.cond39.i, label %.lr.ph49.i, label %parse_memory_region.exit20, !llvm.loop !8 -parse_memory_region.exit20: ; preds = %33, %.preheader.i +parse_memory_region.exit20: ; preds = %35, %.preheader.i call void @llvm.lifetime.end.p0(ptr nonnull %2) br label %parse_memory_region.exit.thread diff --git a/bench/ockam-rs/optimized/1u7cc2g6nvmoyh9z.ll b/bench/ockam-rs/optimized/1u7cc2g6nvmoyh9z.ll index 39a06cd9c89..99c4d8b4f30 100644 --- a/bench/ockam-rs/optimized/1u7cc2g6nvmoyh9z.ll +++ b/bench/ockam-rs/optimized/1u7cc2g6nvmoyh9z.ll @@ -3989,9 +3989,10 @@ define hidden void @"_ZN4core3ptr139drop_in_place$LT$crossbeam_queue..array_queu %32 = icmp ult i64 %31, %27 %33 = select i1 %32, i64 0, i64 %27 %.05.i = sub nuw i64 %31, %33 - %34 = getelementptr inbounds { { i64 }, { { [9 x i64] } } }, ptr %29, i64 %.05.i, i32 1, i32 0, i32 0, i64 1 - invoke void @"_ZN4core3ptr70drop_in_place$LT$sqlx_sqlite..connection..worker..ConnectionWorker$GT$17hd327e693c66ac7f2E.llvm.9153531805506995525"(ptr noalias noundef nonnull align 8 dereferenceable(24) %34) - to label %.noexc unwind label %36 + %34 = getelementptr inbounds { { i64 }, { { [9 x i64] } } }, ptr %29, i64 %.05.i + %35 = getelementptr inbounds nuw i8, ptr %34, i64 16 + invoke void @"_ZN4core3ptr70drop_in_place$LT$sqlx_sqlite..connection..worker..ConnectionWorker$GT$17hd327e693c66ac7f2E.llvm.9153531805506995525"(ptr noalias noundef nonnull align 8 dereferenceable(24) %35) + to label %.noexc unwind label %37 .noexc: ; preds = %30 %35 = add nuw i64 %.sroa.0.015.i, 1 @@ -29942,8 +29943,9 @@ define hidden void @"_ZN91_$LT$crossbeam_queue..array_queue..ArrayQueue$LT$T$GT$ %33 = icmp ult i64 %32, %27 %34 = select i1 %33, i64 0, i64 %27 %.05 = sub nuw i64 %32, %34 - %35 = getelementptr inbounds { { i64 }, { { [9 x i64] } } }, ptr %29, i64 %.05, i32 1, i32 0, i32 0, i64 1 - tail call void @"_ZN4core3ptr70drop_in_place$LT$sqlx_sqlite..connection..worker..ConnectionWorker$GT$17hd327e693c66ac7f2E.llvm.9153531805506995525"(ptr noalias noundef nonnull align 8 dereferenceable(24) %35) + %35 = getelementptr inbounds { { i64 }, { { [9 x i64] } } }, ptr %29, i64 %.05 + %35 = getelementptr inbounds nuw i8, ptr %35, i64 16 + tail call void @"_ZN4core3ptr70drop_in_place$LT$sqlx_sqlite..connection..worker..ConnectionWorker$GT$17hd327e693c66ac7f2E.llvm.9153531805506995525"(ptr noalias noundef nonnull align 8 dereferenceable(24) %36) %exitcond.not = icmp eq i64 %31, %.0 br i1 %exitcond.not, label %._crit_edge, label %30 } diff --git a/bench/ockam-rs/optimized/32cbw7iiw6inrqgd.ll b/bench/ockam-rs/optimized/32cbw7iiw6inrqgd.ll index c7c5b58b0bb..c637ce92ad6 100644 --- a/bench/ockam-rs/optimized/32cbw7iiw6inrqgd.ll +++ b/bench/ockam-rs/optimized/32cbw7iiw6inrqgd.ll @@ -258,7 +258,8 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ %5 = phi i64 [ %7, %.lr.ph.i ], [ %.sroa.4.0.copyload, %3 ] %.sroa.0.06.i = phi i64 [ %6, %.lr.ph.i ], [ %0, %3 ] %6 = add nuw i64 %.sroa.0.06.i, 1 - %.sroa.0.sroa.4.0..sroa_idx.i.i = getelementptr inbounds { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %.sroa.7.0.copyload, i64 %5, i32 1 + %.sroa.0.sroa.4.0..sroa_idx.i.i = getelementptr inbounds { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %.sroa.7.0.copyload, i64 %5 + %.sroa.0.sroa.4.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %7, i64 32 store i8 0, ptr %.sroa.0.sroa.4.0..sroa_idx.i.i, align 8, !noalias !54 %7 = add i64 %5, 1 %exitcond.not.i = icmp eq i64 %6, %1 @@ -7286,7 +7287,8 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator4fold17h0d604f220a031a tail call void @llvm.experimental.noalias.scope.decl(metadata !1606) tail call void @llvm.experimental.noalias.scope.decl(metadata !1607) tail call void @llvm.experimental.noalias.scope.decl(metadata !1608) - %.sroa.0.sroa.4.0..sroa_idx.i = getelementptr inbounds { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %6, i64 %9, i32 1 + %.sroa.0.sroa.4.0..sroa_idx.i = getelementptr inbounds { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %6, i64 %9 + %.sroa.0.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %11, i64 32 store i8 0, ptr %.sroa.0.sroa.4.0..sroa_idx.i, align 8, !noalias !1596 %11 = add i64 %9, 1 %exitcond.not = icmp eq i64 %10, %1 @@ -7712,7 +7714,8 @@ define hidden void @"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d %4 = load ptr, ptr %3, align 8, !alias.scope !1784, !noalias !1785, !noundef !4 %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 %6 = load i64, ptr %5, align 8, !alias.scope !1784, !noalias !1785, !noundef !4 - %.sroa.0.sroa.4.0..sroa_idx = getelementptr inbounds { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %4, i64 %6, i32 1 + %.sroa.0.sroa.4.0..sroa_idx = getelementptr inbounds { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %4, i64 %6 + %.sroa.0.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 32 store i8 0, ptr %.sroa.0.sroa.4.0..sroa_idx, align 8, !noalias !1784 %7 = add i64 %6, 1 store i64 %7, ptr %5, align 8, !alias.scope !1784, !noalias !1785 diff --git a/bench/open3d/optimized/PinholeCameraTrajectory.ll b/bench/open3d/optimized/PinholeCameraTrajectory.ll index 5f95978f027..d1bb3e04dfa 100644 --- a/bench/open3d/optimized/PinholeCameraTrajectory.ll +++ b/bench/open3d/optimized/PinholeCameraTrajectory.ll @@ -500,7 +500,7 @@ _ZNSt6vectorIN6open3d6camera23PinholeCameraParametersESaIS2_EE6resizeEm.exit.pre br label %_ZNSt6vectorIN6open3d6camera23PinholeCameraParametersESaIS2_EE6resizeEm.exit _ZNSt6vectorIN6open3d6camera23PinholeCameraParametersESaIS2_EE6resizeEm.exit: ; preds = %_ZNSt6vectorIN6open3d6camera23PinholeCameraParametersESaIS2_EE6resizeEm.exit.preheader, %120 - %.034 = phi i64 [ %121, %120 ], [ 0, %_ZNSt6vectorIN6open3d6camera23PinholeCameraParametersESaIS2_EE6resizeEm.exit.preheader ] + %.034 = phi i64 [ %121, %122 ], [ 0, %_ZNSt6vectorIN6open3d6camera23PinholeCameraParametersESaIS2_EE6resizeEm.exit.preheader ] %97 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %10) to label %98 unwind label %100 @@ -525,12 +525,13 @@ _ZNSt6vectorIN6open3d6camera23PinholeCameraParametersESaIS2_EE6resizeEm.exit: ; to label %108 unwind label %112 108: ; preds = %105 - %109 = getelementptr inbounds nuw %"class.open3d::camera::PinholeCameraParameters", ptr %106, i64 %.034, i32 1 - %110 = invoke noundef zeroext i1 @_ZN6open3d6camera22PinholeCameraIntrinsic20ConvertFromJsonValueERKN4Json5ValueE(ptr noundef nonnull align 8 dereferenceable(88) %109, ptr noundef nonnull align 8 dereferenceable(40) %107) - to label %111 unwind label %112 + %109 = getelementptr inbounds nuw %"class.open3d::camera::PinholeCameraParameters", ptr %106, i64 %.034 + %110 = getelementptr inbounds nuw i8, ptr %109, i64 8 + %111 = invoke noundef zeroext i1 @_ZN6open3d6camera22PinholeCameraIntrinsic20ConvertFromJsonValueERKN4Json5ValueE(ptr noundef nonnull align 8 dereferenceable(88) %110, ptr noundef nonnull align 8 dereferenceable(40) %107) + to label %112 unwind label %113 111: ; preds = %108 - br i1 %110, label %114, label %.critedge82 + br i1 %111, label %114, label %.critedge82 112: ; preds = %117, %114, %108, %105, %102 %113 = landingpad { ptr, i32 } @@ -540,25 +541,26 @@ _ZNSt6vectorIN6open3d6camera23PinholeCameraParametersESaIS2_EE6resizeEm.exit: ; 114: ; preds = %111 %115 = load ptr, ptr %76, align 8, !tbaa !20 %116 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK4Json5ValueixEPKc(ptr noundef nonnull align 8 dereferenceable(40) %104, ptr noundef nonnull @.str.12) - to label %117 unwind label %112 + to label %118 unwind label %112 117: ; preds = %114 - %118 = getelementptr inbounds nuw %"class.open3d::camera::PinholeCameraParameters", ptr %115, i64 %.034, i32 2 - %119 = invoke noundef zeroext i1 @_ZN6open3d7utility16IJsonConvertible26EigenMatrix4dFromJsonArrayERN5Eigen6MatrixIdLi4ELi4ELi2ELi4ELi4EEERKN4Json5ValueE(ptr noundef nonnull align 8 dereferenceable(128) %118, ptr noundef nonnull align 8 dereferenceable(40) %116) - to label %120 unwind label %112 + %118 = getelementptr inbounds nuw %"class.open3d::camera::PinholeCameraParameters", ptr %115, i64 %.034 + %120 = getelementptr inbounds nuw i8, ptr %119, i64 96 + %121 = invoke noundef zeroext i1 @_ZN6open3d7utility16IJsonConvertible26EigenMatrix4dFromJsonArrayERN5Eigen6MatrixIdLi4ELi4ELi2ELi4ELi4EEERKN4Json5ValueE(ptr noundef nonnull align 8 dereferenceable(128) %120, ptr noundef nonnull align 8 dereferenceable(40) %117) + to label %122 unwind label %113 120: ; preds = %117 %121 = add nuw nsw i64 %.034, 1 - br i1 %119, label %_ZNSt6vectorIN6open3d6camera23PinholeCameraParametersESaIS2_EE6resizeEm.exit, label %.critedge82, !llvm.loop !23 + br i1 %121, label %_ZNSt6vectorIN6open3d6camera23PinholeCameraParametersESaIS2_EE6resizeEm.exit, label %.critedge82, !llvm.loop !23 .critedge82: ; preds = %120, %98, %111, %72 - %.1 = phi i1 [ false, %72 ], [ %.not71.not.not.not, %111 ], [ %.not71.not.not.not, %98 ], [ %.not71.not.not.not, %120 ] + %.1 = phi i1 [ false, %72 ], [ %.not71.not.not.not, %112 ], [ %.not71.not.not.not, %98 ], [ %.not71.not.not.not, %122 ] call void @_ZN4Json5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #18 call void @llvm.lifetime.end.p0(ptr nonnull %10) br label %123 122: ; preds = %100, %112, %73 - %.pn72 = phi { ptr, i32 } [ %74, %73 ], [ %113, %112 ], [ %101, %100 ] + %.pn72 = phi { ptr, i32 } [ %74, %73 ], [ %113, %113 ], [ %101, %100 ] call void @_ZN4Json5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #18 call void @llvm.lifetime.end.p0(ptr nonnull %10) br label %124 @@ -568,7 +570,7 @@ _ZNSt6vectorIN6open3d6camera23PinholeCameraParametersESaIS2_EE6resizeEm.exit: ; ret i1 %.0 124: ; preds = %122, %66 - %.pn72.pn = phi { ptr, i32 } [ %.pn72, %122 ], [ %.pn.pn.pn.pn.pn.pn.pn.pn, %66 ] + %.pn72.pn = phi { ptr, i32 } [ %.pn72, %124 ], [ %.pn.pn.pn.pn.pn.pn.pn.pn, %66 ] resume { ptr, i32 } %.pn72.pn } diff --git a/bench/openexr/optimized/ImfCompression.ll b/bench/openexr/optimized/ImfCompression.ll index 423b8d6ea6a..c3787f7bfd0 100644 --- a/bench/openexr/optimized/ImfCompression.ll +++ b/bench/openexr/optimized/ImfCompression.ll @@ -869,12 +869,13 @@ define noundef i32 @_ZN7Imf_3_426getCompressionNumScanlinesENS_11CompressionE(i3 2: ; preds = %1 %3 = zext nneg i32 %0 to i64 - %4 = getelementptr inbounds nuw %"struct.Imf_3_4::CompressionDesc", ptr @_ZN7Imf_3_4L8IdToDescE, i64 %3, i32 2 - %5 = load i32, ptr %4, align 8, !tbaa !35 - br label %6 + %4 = getelementptr inbounds nuw %"struct.Imf_3_4::CompressionDesc", ptr @_ZN7Imf_3_4L8IdToDescE, i64 %3 + %5 = getelementptr inbounds nuw i8, ptr %4, i64 64 + %6 = load i32, ptr %5, align 8, !tbaa !35 + br label %7 6: ; preds = %1, %2 - %.0 = phi i32 [ %5, %2 ], [ -1, %1 ] + %.0 = phi i32 [ %6, %2 ], [ -1, %1 ] ret i32 %.0 } @@ -885,10 +886,11 @@ define noundef zeroext i1 @_ZN7Imf_3_418isLossyCompressionENS_11CompressionE(i32 2: ; preds = %1 %3 = zext nneg i32 %0 to i64 - %4 = getelementptr inbounds nuw %"struct.Imf_3_4::CompressionDesc", ptr @_ZN7Imf_3_4L8IdToDescE, i64 %3, i32 3 - %5 = load i8, ptr %4, align 4, !tbaa !39, !range !40, !noundef !41 - %6 = trunc nuw i8 %5 to i1 - br label %7 + %4 = getelementptr inbounds nuw %"struct.Imf_3_4::CompressionDesc", ptr @_ZN7Imf_3_4L8IdToDescE, i64 %3 + %5 = getelementptr inbounds nuw i8, ptr %4, i64 68 + %6 = load i8, ptr %5, align 4, !tbaa !39, !range !40, !noundef !41 + %7 = trunc nuw i8 %6 to i1 + br label %8 7: ; preds = %2, %1 %8 = phi i1 [ false, %1 ], [ %6, %2 ] @@ -902,10 +904,11 @@ define noundef zeroext i1 @_ZN7Imf_3_422isValidDeepCompressionENS_11CompressionE 2: ; preds = %1 %3 = zext nneg i32 %0 to i64 - %4 = getelementptr inbounds nuw %"struct.Imf_3_4::CompressionDesc", ptr @_ZN7Imf_3_4L8IdToDescE, i64 %3, i32 4 - %5 = load i8, ptr %4, align 1, !tbaa !42, !range !40, !noundef !41 - %6 = trunc nuw i8 %5 to i1 - br label %7 + %4 = getelementptr inbounds nuw %"struct.Imf_3_4::CompressionDesc", ptr @_ZN7Imf_3_4L8IdToDescE, i64 %3 + %5 = getelementptr inbounds nuw i8, ptr %4, i64 69 + %6 = load i8, ptr %5, align 1, !tbaa !42, !range !40, !noundef !41 + %7 = trunc nuw i8 %6 to i1 + br label %8 7: ; preds = %2, %1 %8 = phi i1 [ false, %1 ], [ %6, %2 ] diff --git a/bench/openmpi/optimized/psquash_flex128.ll b/bench/openmpi/optimized/psquash_flex128.ll index e1021bc027b..1fc5930302a 100644 --- a/bench/openmpi/optimized/psquash_flex128.ll +++ b/bench/openmpi/optimized/psquash_flex128.ll @@ -44,10 +44,11 @@ define internal noundef i32 @flex128_init() #0 { 2: ; preds = %0 %3 = zext nneg i32 %1 to i64 - %4 = getelementptr inbounds nuw %struct.pmix_output_desc_t, ptr @pmix_output_info, i64 %3, i32 2 - %5 = load i32, ptr %4, align 4, !tbaa !33 - %6 = icmp sgt i32 %5, 1 - br i1 %6, label %7, label %8 + %4 = getelementptr inbounds nuw %struct.pmix_output_desc_t, ptr @pmix_output_info, i64 %3 + %5 = getelementptr inbounds nuw i8, ptr %4, i64 4 + %6 = load i32, ptr %5, align 4, !tbaa !33 + %7 = icmp sgt i32 %6, 1 + br i1 %7, label %8, label %9 7: ; preds = %2 tail call void (i32, ptr, ...) @pmix_output(i32 noundef %1, ptr noundef nonnull @.str.1) #6 @@ -65,10 +66,11 @@ define internal void @flex128_finalize() #0 { 2: ; preds = %0 %3 = zext nneg i32 %1 to i64 - %4 = getelementptr inbounds nuw %struct.pmix_output_desc_t, ptr @pmix_output_info, i64 %3, i32 2 - %5 = load i32, ptr %4, align 4, !tbaa !33 - %6 = icmp sgt i32 %5, 1 - br i1 %6, label %7, label %8 + %4 = getelementptr inbounds nuw %struct.pmix_output_desc_t, ptr @pmix_output_info, i64 %3 + %5 = getelementptr inbounds nuw i8, ptr %4, i64 4 + %6 = load i32, ptr %5, align 4, !tbaa !33 + %7 = icmp sgt i32 %6, 1 + br i1 %7, label %8, label %9 7: ; preds = %2 tail call void (i32, ptr, ...) @pmix_output(i32 noundef %1, ptr noundef nonnull @.str.2) #6 diff --git a/bench/openssl/optimized/filterprov.ll b/bench/openssl/optimized/filterprov.ll index 2c933c2432b..1d62131b655 100644 --- a/bench/openssl/optimized/filterprov.ll +++ b/bench/openssl/optimized/filterprov.ll @@ -192,9 +192,8 @@ define dso_local range(i32 0, 2) i32 @filter_provider_set_filter(i32 noundef %0, 29: ; preds = %25 %30 = load i32, ptr getelementptr inbounds nuw (i8, ptr @ourglobals, i64 2016), align 8, !tbaa !28 %31 = sext i32 %30 to i64 - %.idx = mul nsw i64 %31, 200 - %32 = getelementptr i8, ptr getelementptr inbounds nuw (i8, ptr @ourglobals, i64 16), i64 %.idx - %33 = getelementptr i8, ptr %32, i64 8 + %32 = getelementptr inbounds %struct.anon, ptr getelementptr inbounds nuw (i8, ptr @ourglobals, i64 16), i64 %31 + %32 = getelementptr inbounds nuw i8, ptr %32, i64 8 %34 = getelementptr inbounds nuw %struct.ossl_algorithm_st, ptr %33, i64 %indvars.iv call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(32) %.04677, i64 32, i1 false), !tbaa.struct !29 %.pr = load ptr, ptr %.04677, align 8, !tbaa !24 @@ -345,8 +344,7 @@ define internal void @filter_unquery(ptr readnone captures(none) %0, i32 noundef .lr.ph: ; preds = %.lr.ph.preheader, %13 %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %13 ] - %.idx = mul nuw nsw i64 %indvars.iv, 200 - %14 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @ourglobals, i64 16), i64 %.idx + %14 = getelementptr inbounds nuw %struct.anon, ptr getelementptr inbounds nuw (i8, ptr @ourglobals, i64 16), i64 %indvars.iv %15 = getelementptr inbounds nuw i8, ptr %14, i64 8 %16 = icmp eq ptr %15, %2 br i1 %16, label %.loopexit, label %13 diff --git a/bench/openusd/optimized/entropymode.ll b/bench/openusd/optimized/entropymode.ll index 96aa85c4c71..3683e35f019 100644 --- a/bench/openusd/optimized/entropymode.ll +++ b/bench/openusd/optimized/entropymode.ll @@ -753,9 +753,10 @@ get_ref_frame_buf.exit.thread: ; preds = %get_ref_frame_map_i 19: ; preds = %.preheader, %19 %indvars.iv22 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next23, %19 ] %20 = load ptr, ptr %10, align 16 - %21 = getelementptr inbounds nuw %struct.RefCntBuffer, ptr %20, i64 %indvars.iv22, i32 22, i32 0, i64 0, i64 10, i64 2 - %22 = load ptr, ptr %4, align 16 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(21264) %21, ptr noundef nonnull align 4 dereferenceable(21264) %22, i64 21264, i1 false) + %21 = getelementptr inbounds nuw %struct.RefCntBuffer, ptr %20, i64 %indvars.iv22 + %22 = getelementptr inbounds nuw i8, ptr %21, i64 1616 + %23 = load ptr, ptr %4, align 16 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(21264) %22, ptr noundef nonnull align 4 dereferenceable(21264) %23, i64 21264, i1 false) %indvars.iv.next23 = add nuw nsw i64 %indvars.iv22, 1 %exitcond25.not = icmp eq i64 %indvars.iv.next23, 16 br i1 %exitcond25.not, label %.loopexit, label %19, !llvm.loop !15 @@ -992,9 +993,10 @@ get_ref_frame_buf.exit.thread.i: ; preds = %109, %get_ref_frame 112: ; preds = %112, %.preheader.i %indvars.iv22.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next23.i, %112 ] %113 = load ptr, ptr %103, align 16 - %114 = getelementptr inbounds nuw %struct.RefCntBuffer, ptr %113, i64 %indvars.iv22.i, i32 22, i32 0, i64 0, i64 10, i64 2 - %115 = load ptr, ptr %39, align 16 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(21264) %114, ptr noundef nonnull align 4 dereferenceable(21264) %115, i64 21264, i1 false) + %114 = getelementptr inbounds nuw %struct.RefCntBuffer, ptr %113, i64 %indvars.iv22.i + %115 = getelementptr inbounds nuw i8, ptr %114, i64 1616 + %116 = load ptr, ptr %39, align 16 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(21264) %115, ptr noundef nonnull align 4 dereferenceable(21264) %116, i64 21264, i1 false) %indvars.iv.next23.i = add nuw nsw i64 %indvars.iv22.i, 1 %exitcond25.not.i = icmp eq i64 %indvars.iv.next23.i, 16 br i1 %exitcond25.not.i, label %av1_setup_frame_contexts.exit, label %112, !llvm.loop !15 diff --git a/bench/openvdb/optimized/AttributeSet.ll b/bench/openvdb/optimized/AttributeSet.ll index 88af9c87220..c1876c43e4d 100644 --- a/bench/openvdb/optimized/AttributeSet.ll +++ b/bench/openvdb/optimized/AttributeSet.ll @@ -4147,7 +4147,8 @@ define noundef zeroext i1 @_ZNK7openvdb5v11_06points12AttributeSet8isSharedEm(pt entry: %mAttrs = getelementptr inbounds nuw i8, ptr %this, i64 16 %0 = load ptr, ptr %mAttrs, align 8 - %_M_refcount.i = getelementptr inbounds %"class.std::shared_ptr.18", ptr %0, i64 %pos, i32 0, i32 1 + %_M_refcount.i = getelementptr inbounds %"class.std::shared_ptr.18", ptr %0, i64 %pos + %_M_refcount.i = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 8 %1 = load ptr, ptr %_M_refcount.i, align 8 %tobool.not.i.i = icmp eq ptr %1, null br i1 %tobool.not.i.i, label %_ZNKSt12__shared_ptrIN7openvdb5v11_06points14AttributeArrayELN9__gnu_cxx12_Lock_policyE2EE9use_countEv.exit, label %cond.true.i.i @@ -5349,6 +5350,7 @@ for.body: ; preds = %for.body.lr.ph, %fo %groupsToDrop.sroa.0.0296 = phi ptr [ null, %for.body.lr.ph ], [ %groupsToDrop.sroa.0.1, %for.inc ] %groupsToDrop.sroa.8.0294 = phi ptr [ null, %for.body.lr.ph ], [ %groupsToDrop.sroa.8.1, %for.inc ] %groupsToDrop.sroa.14.0292 = phi ptr [ null, %for.body.lr.ph ], [ %groupsToDrop.sroa.14.1, %for.inc ] + %add.ptr.i = getelementptr inbounds %"struct.openvdb::v11_0::points::AttributeSet::Util::NameAndType", ptr %3, i64 %storemerge300 %4 = load atomic i8, ptr @_ZGVZN7openvdb5v11_06points19TypedAttributeArrayIhNS1_10GroupCodecEE13attributeTypeB5cxx11EvE9sTypeNameB5cxx11 acquire, align 8 %guard.uninitialized.i = icmp eq i8 %4, 0 br i1 %guard.uninitialized.i, label %init.check.i, label %invoke.cont5, !prof !13 @@ -5380,7 +5382,7 @@ lpad.i: ; preds = %init.i br label %ehcleanup invoke.cont5: ; preds = %invoke.cont.i, %init.check.i, %for.body - %type = getelementptr inbounds %"struct.openvdb::v11_0::points::AttributeSet::Util::NameAndType", ptr %3, i64 %storemerge300, i32 1 + %type = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 32 %call8 = call noundef zeroext i1 @_ZSteqINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EbRKSt4pairIT_T0_ESB_(ptr noundef nonnull align 8 dereferenceable(64) %type, ptr noundef nonnull align 8 dereferenceable(64) @_ZZN7openvdb5v11_06points19TypedAttributeArrayIhNS1_10GroupCodecEE13attributeTypeB5cxx11EvE9sTypeNameB5cxx11) br i1 %call8, label %if.then9, label %for.inc diff --git a/bench/openvdb/optimized/FindActiveValues.ll b/bench/openvdb/optimized/FindActiveValues.ll index d42e1bc11f6..2d6b09b5cb1 100644 --- a/bench/openvdb/optimized/FindActiveValues.ll +++ b/bench/openvdb/optimized/FindActiveValues.ll @@ -178566,7 +178566,8 @@ for.body44: ; preds = %invoke.cont38, %_ZN %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj5EEEEppEv.exit117 ], [ 0, %invoke.cont38 ] %iter36.sroa.0.0147 = phi i32 [ %retval.0.i.i.i99, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj5EEEEppEv.exit117 ], [ %add.i.i77, %invoke.cont38 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData", ptr %call5.i.i.i.i2.i.i70, i64 %indvars.iv, i32 3 + %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData", ptr %call5.i.i.i.i2.i.i70, i64 %indvars.iv + %level = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 28 store i32 %iter36.sroa.0.0147, ptr %level, align 4 %add.i.i88 = add i32 %iter36.sroa.0.0147, 1 %shr.i.i.i89 = lshr i32 %add.i.i88, 6 @@ -178977,7 +178978,8 @@ for.body29: ; preds = %invoke.cont23, %_ZN %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj4EEEEppEv.exit68 ], [ 0, %invoke.cont23 ] %iter21.sroa.0.090 = phi i32 [ %retval.0.i.i.i50, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj4EEEEppEv.exit68 ], [ %add.i.i28, %invoke.cont23 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData", ptr %call5.i.i.i.i2.i.i21, i64 %indvars.iv, i32 3 + %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData", ptr %call5.i.i.i.i2.i.i21, i64 %indvars.iv + %level = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 28 store i32 %iter21.sroa.0.090, ptr %level, align 4 %add.i.i39 = add i32 %iter21.sroa.0.090, 1 %shr.i.i.i40 = lshr i32 %add.i.i39, 6 @@ -181583,7 +181585,8 @@ for.body44: ; preds = %invoke.cont38, %_ZN %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj5EEEEppEv.exit117 ], [ 0, %invoke.cont38 ] %iter36.sroa.0.0147 = phi i32 [ %retval.0.i.i.i99, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj5EEEEppEv.exit117 ], [ %add.i.i77, %invoke.cont38 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.471", ptr %call5.i.i.i.i2.i.i70, i64 %indvars.iv, i32 2 + %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.471", ptr %call5.i.i.i.i2.i.i70, i64 %indvars.iv + %level = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 28 store i32 %iter36.sroa.0.0147, ptr %level, align 4 %add.i.i88 = add i32 %iter36.sroa.0.0147, 1 %shr.i.i.i89 = lshr i32 %add.i.i88, 6 @@ -181993,7 +181996,8 @@ for.body29: ; preds = %invoke.cont23, %_ZN %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj4EEEEppEv.exit68 ], [ 0, %invoke.cont23 ] %iter21.sroa.0.090 = phi i32 [ %retval.0.i.i.i50, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj4EEEEppEv.exit68 ], [ %add.i.i28, %invoke.cont23 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.471", ptr %call5.i.i.i.i2.i.i21, i64 %indvars.iv, i32 2 + %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.471", ptr %call5.i.i.i.i2.i.i21, i64 %indvars.iv + %level = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 28 store i32 %iter21.sroa.0.090, ptr %level, align 4 %add.i.i39 = add i32 %iter21.sroa.0.090, 1 %shr.i.i.i40 = lshr i32 %add.i.i39, 6 @@ -184595,7 +184599,8 @@ for.body44: ; preds = %invoke.cont38, %_ZN %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj5EEEEppEv.exit117 ], [ 0, %invoke.cont38 ] %iter36.sroa.0.0147 = phi i32 [ %retval.0.i.i.i99, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj5EEEEppEv.exit117 ], [ %add.i.i77, %invoke.cont38 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.573", ptr %call5.i.i.i.i2.i.i70, i64 %indvars.iv, i32 2 + %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.573", ptr %call5.i.i.i.i2.i.i70, i64 %indvars.iv + %level = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 32 store i32 %iter36.sroa.0.0147, ptr %level, align 8 %add.i.i88 = add i32 %iter36.sroa.0.0147, 1 %shr.i.i.i89 = lshr i32 %add.i.i88, 6 @@ -185005,7 +185010,8 @@ for.body29: ; preds = %invoke.cont23, %_ZN %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj4EEEEppEv.exit68 ], [ 0, %invoke.cont23 ] %iter21.sroa.0.090 = phi i32 [ %retval.0.i.i.i50, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj4EEEEppEv.exit68 ], [ %add.i.i28, %invoke.cont23 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.573", ptr %call5.i.i.i.i2.i.i21, i64 %indvars.iv, i32 2 + %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.573", ptr %call5.i.i.i.i2.i.i21, i64 %indvars.iv + %level = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 32 store i32 %iter21.sroa.0.090, ptr %level, align 8 %add.i.i39 = add i32 %iter21.sroa.0.090, 1 %shr.i.i.i40 = lshr i32 %add.i.i39, 6 @@ -187607,7 +187613,8 @@ for.body44: ; preds = %invoke.cont38, %_ZN %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj5EEEEppEv.exit117 ], [ 0, %invoke.cont38 ] %iter36.sroa.0.0147 = phi i32 [ %retval.0.i.i.i99, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj5EEEEppEv.exit117 ], [ %add.i.i77, %invoke.cont38 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.623", ptr %call5.i.i.i.i2.i.i70, i64 %indvars.iv, i32 2 + %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.623", ptr %call5.i.i.i.i2.i.i70, i64 %indvars.iv + %level = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 28 store i32 %iter36.sroa.0.0147, ptr %level, align 4 %add.i.i88 = add i32 %iter36.sroa.0.0147, 1 %shr.i.i.i89 = lshr i32 %add.i.i88, 6 @@ -188017,7 +188024,8 @@ for.body29: ; preds = %invoke.cont23, %_ZN %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj4EEEEppEv.exit68 ], [ 0, %invoke.cont23 ] %iter21.sroa.0.090 = phi i32 [ %retval.0.i.i.i50, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj4EEEEppEv.exit68 ], [ %add.i.i28, %invoke.cont23 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.623", ptr %call5.i.i.i.i2.i.i21, i64 %indvars.iv, i32 2 + %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.623", ptr %call5.i.i.i.i2.i.i21, i64 %indvars.iv + %level = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 28 store i32 %iter21.sroa.0.090, ptr %level, align 4 %add.i.i39 = add i32 %iter21.sroa.0.090, 1 %shr.i.i.i40 = lshr i32 %add.i.i39, 6 @@ -190619,7 +190627,8 @@ for.body44: ; preds = %invoke.cont38, %_ZN %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj5EEEEppEv.exit117 ], [ 0, %invoke.cont38 ] %iter36.sroa.0.0147 = phi i32 [ %retval.0.i.i.i99, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj5EEEEppEv.exit117 ], [ %add.i.i77, %invoke.cont38 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.679", ptr %call5.i.i.i.i2.i.i70, i64 %indvars.iv, i32 2 + %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.679", ptr %call5.i.i.i.i2.i.i70, i64 %indvars.iv + %level = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 32 store i32 %iter36.sroa.0.0147, ptr %level, align 8 %add.i.i88 = add i32 %iter36.sroa.0.0147, 1 %shr.i.i.i89 = lshr i32 %add.i.i88, 6 @@ -191029,7 +191038,8 @@ for.body29: ; preds = %invoke.cont23, %_ZN %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj4EEEEppEv.exit68 ], [ 0, %invoke.cont23 ] %iter21.sroa.0.090 = phi i32 [ %retval.0.i.i.i50, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj4EEEEppEv.exit68 ], [ %add.i.i28, %invoke.cont23 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.679", ptr %call5.i.i.i.i2.i.i21, i64 %indvars.iv, i32 2 + %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.679", ptr %call5.i.i.i.i2.i.i21, i64 %indvars.iv + %level = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 32 store i32 %iter21.sroa.0.090, ptr %level, align 8 %add.i.i39 = add i32 %iter21.sroa.0.090, 1 %shr.i.i.i40 = lshr i32 %add.i.i39, 6 @@ -193446,7 +193456,8 @@ for.body44: ; preds = %invoke.cont38, %_ZN %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj5EEEEppEv.exit117 ], [ 0, %invoke.cont38 ] %iter36.sroa.0.0147 = phi i32 [ %retval.0.i.i.i99, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj5EEEEppEv.exit117 ], [ %add.i.i77, %invoke.cont38 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.729", ptr %call5.i.i.i.i2.i.i70, i64 %indvars.iv, i32 2 + %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.729", ptr %call5.i.i.i.i2.i.i70, i64 %indvars.iv + %level = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 36 store i32 %iter36.sroa.0.0147, ptr %level, align 4 %add.i.i88 = add i32 %iter36.sroa.0.0147, 1 %shr.i.i.i89 = lshr i32 %add.i.i88, 6 @@ -193855,7 +193866,8 @@ for.body29: ; preds = %invoke.cont23, %_ZN %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj4EEEEppEv.exit68 ], [ 0, %invoke.cont23 ] %iter21.sroa.0.090 = phi i32 [ %retval.0.i.i.i50, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj4EEEEppEv.exit68 ], [ %add.i.i28, %invoke.cont23 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.729", ptr %call5.i.i.i.i2.i.i21, i64 %indvars.iv, i32 2 + %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.729", ptr %call5.i.i.i.i2.i.i21, i64 %indvars.iv + %level = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 36 store i32 %iter21.sroa.0.090, ptr %level, align 4 %add.i.i39 = add i32 %iter21.sroa.0.090, 1 %shr.i.i.i40 = lshr i32 %add.i.i39, 6 @@ -196272,7 +196284,8 @@ for.body44: ; preds = %invoke.cont38, %_ZN %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj5EEEEppEv.exit117 ], [ 0, %invoke.cont38 ] %iter36.sroa.0.0147 = phi i32 [ %retval.0.i.i.i99, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj5EEEEppEv.exit117 ], [ %add.i.i77, %invoke.cont38 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.788", ptr %call5.i.i.i.i2.i.i70, i64 %indvars.iv, i32 2 + %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.788", ptr %call5.i.i.i.i2.i.i70, i64 %indvars.iv + %level = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 48 store i32 %iter36.sroa.0.0147, ptr %level, align 8 %add.i.i88 = add i32 %iter36.sroa.0.0147, 1 %shr.i.i.i89 = lshr i32 %add.i.i88, 6 @@ -196681,7 +196694,8 @@ for.body29: ; preds = %invoke.cont23, %_ZN %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj4EEEEppEv.exit68 ], [ 0, %invoke.cont23 ] %iter21.sroa.0.090 = phi i32 [ %retval.0.i.i.i50, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj4EEEEppEv.exit68 ], [ %add.i.i28, %invoke.cont23 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.788", ptr %call5.i.i.i.i2.i.i21, i64 %indvars.iv, i32 2 + %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.788", ptr %call5.i.i.i.i2.i.i21, i64 %indvars.iv + %level = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 48 store i32 %iter21.sroa.0.090, ptr %level, align 8 %add.i.i39 = add i32 %iter21.sroa.0.090, 1 %shr.i.i.i40 = lshr i32 %add.i.i39, 6 @@ -199098,7 +199112,8 @@ for.body44: ; preds = %invoke.cont38, %_ZN %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj5EEEEppEv.exit117 ], [ 0, %invoke.cont38 ] %iter36.sroa.0.0147 = phi i32 [ %retval.0.i.i.i99, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj5EEEEppEv.exit117 ], [ %add.i.i77, %invoke.cont38 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.839", ptr %call5.i.i.i.i2.i.i70, i64 %indvars.iv, i32 2 + %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.839", ptr %call5.i.i.i.i2.i.i70, i64 %indvars.iv + %level = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 36 store i32 %iter36.sroa.0.0147, ptr %level, align 4 %add.i.i88 = add i32 %iter36.sroa.0.0147, 1 %shr.i.i.i89 = lshr i32 %add.i.i88, 6 @@ -199507,7 +199522,8 @@ for.body29: ; preds = %invoke.cont23, %_ZN %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj4EEEEppEv.exit68 ], [ 0, %invoke.cont23 ] %iter21.sroa.0.090 = phi i32 [ %retval.0.i.i.i50, %_ZN7openvdb5v11_04util14OnMaskIteratorINS1_8NodeMaskILj4EEEEppEv.exit68 ], [ %add.i.i28, %invoke.cont23 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.839", ptr %call5.i.i.i.i2.i.i21, i64 %indvars.iv, i32 2 + %level = getelementptr inbounds nuw %"struct.openvdb::v11_0::tools::TileData.839", ptr %call5.i.i.i.i2.i.i21, i64 %indvars.iv + %level = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 36 store i32 %iter21.sroa.0.090, ptr %level, align 4 %add.i.i39 = add i32 %iter21.sroa.0.090, 1 %shr.i.i.i40 = lshr i32 %add.i.i39, 6 diff --git a/bench/openvdb/optimized/Queue.ll b/bench/openvdb/optimized/Queue.ll index d784d059f24..75d2e8d9250 100644 --- a/bench/openvdb/optimized/Queue.ll +++ b/bench/openvdb/optimized/Queue.ll @@ -10,6 +10,12 @@ target triple = "x86_64-unknown-linux-gnu" %"struct.std::ios_base::_Words" = type { ptr, i64 } %"class.std::locale" = type { ptr } %"struct.std::piecewise_construct_t" = type { i8 } +%"struct.tbb::detail::d2::hash_map_base>, tbb::detail::d1::spin_rw_mutex>::bucket" = type { %"class.tbb::detail::d1::spin_rw_mutex", %"struct.std::atomic.6" } +%"class.tbb::detail::d1::spin_rw_mutex" = type { %"struct.std::atomic.4" } +%"struct.std::atomic.4" = type { %"struct.std::__atomic_base.5" } +%"struct.std::__atomic_base.5" = type { i64 } +%"struct.std::atomic.6" = type { %"struct.std::__atomic_base.7" } +%"struct.std::__atomic_base.7" = type { ptr } %"struct.std::atomic.8" = type { %"struct.std::__atomic_base.9" } %"struct.std::__atomic_base.9" = type { ptr } %struct.timespec = type { i64, i64 } @@ -57,12 +63,6 @@ target triple = "x86_64-unknown-linux-gnu" %"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr } %"class.std::allocator.17" = type { i8 } %"class.tbb::detail::d2::concurrent_hash_map::bucket_accessor" = type { %"class.tbb::detail::d1::rw_scoped_lock.base", ptr } -%"struct.tbb::detail::d2::hash_map_base>, tbb::detail::d1::spin_rw_mutex>::bucket" = type { %"class.tbb::detail::d1::spin_rw_mutex", %"struct.std::atomic.6" } -%"class.tbb::detail::d1::spin_rw_mutex" = type { %"struct.std::atomic.4" } -%"struct.std::atomic.4" = type { %"struct.std::__atomic_base.5" } -%"struct.std::__atomic_base.5" = type { i64 } -%"struct.std::atomic.6" = type { %"struct.std::__atomic_base.7" } -%"struct.std::__atomic_base.7" = type { ptr } %"struct.std::_Rb_tree>, std::_Select1st>>, std::less>::_Auto_node" = type { ptr, ptr } $__clang_call_terminate = comdat any @@ -260,9 +260,8 @@ for.cond4.preheader.i.i.i.i: ; preds = %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %for.body.i.i.i.i, %entry %i.07.i.i.i.i = phi i64 [ %inc.i.i.i.i, %for.body.i.i.i.i ], [ 0, %entry ] - %node_list.idx.i.i.i.i = shl nuw nsw i64 %i.07.i.i.i.i, 4 - %1 = getelementptr inbounds nuw i8, ptr %my_embedded_segment.ptr.i.i.i.i, i64 %node_list.idx.i.i.i.i - %node_list.i.i.i.i = getelementptr inbounds nuw i8, ptr %1, i64 8 + %arrayidx.i.i.i.i = getelementptr inbounds nuw %"struct.tbb::detail::d2::hash_map_base>, tbb::detail::d1::spin_rw_mutex>::bucket", ptr %my_embedded_segment.ptr.i.i.i.i, i64 %i.07.i.i.i.i + %1 = getelementptr inbounds nuw i8, ptr %arrayidx.i.i.i.i, i64 8 store atomic i64 0, ptr %node_list.i.i.i.i monotonic, align 8 %inc.i.i.i.i = add nuw nsw i64 %i.07.i.i.i.i, 1 %cmp.not.i.i.i.i = icmp eq i64 %inc.i.i.i.i, 2 @@ -2853,7 +2852,8 @@ for.end.i.i: ; preds = %for.cond.i.i %arrayidx.i.i.i = getelementptr inbounds nuw %"struct.std::atomic.8", ptr %my_table.i.i.i, i64 %xor.i.i.i.i.i.i %17 = load atomic i64, ptr %arrayidx.i.i.i acquire, align 8 %atomic-temp.i.0.i.i.i.i = inttoptr i64 %17 to ptr - %node_list.i.i = getelementptr inbounds %"struct.tbb::detail::d2::hash_map_base>, tbb::detail::d1::spin_rw_mutex>::bucket", ptr %atomic-temp.i.0.i.i.i.i, i64 %sub.i.i.i, i32 1 + %node_list.i.i = getelementptr inbounds %"struct.tbb::detail::d2::hash_map_base>, tbb::detail::d1::spin_rw_mutex>::bucket", ptr %atomic-temp.i.0.i.i.i.i, i64 %sub.i.i.i + %node_list.i.i = getelementptr inbounds nuw i8, ptr %arrayidx4.i.i.i, i64 8 %18 = load atomic i64, ptr %node_list.i.i acquire, align 8 %cmp.i.i.i18 = icmp eq i64 %18, 3 %spec.select = select i1 %cmp.i.i.i18, i32 1, i32 2 @@ -3655,7 +3655,8 @@ for.end.i.i: ; preds = %for.cond.i.i %arrayidx.i.i.i = getelementptr inbounds nuw %"struct.std::atomic.8", ptr %my_table.i.i.i, i64 %xor.i.i.i.i.i.i %17 = load atomic i64, ptr %arrayidx.i.i.i acquire, align 8 %atomic-temp.i.0.i.i.i.i = inttoptr i64 %17 to ptr - %node_list.i.i = getelementptr inbounds %"struct.tbb::detail::d2::hash_map_base>, tbb::detail::d1::spin_rw_mutex>::bucket", ptr %atomic-temp.i.0.i.i.i.i, i64 %sub.i.i.i, i32 1 + %node_list.i.i = getelementptr inbounds %"struct.tbb::detail::d2::hash_map_base>, tbb::detail::d1::spin_rw_mutex>::bucket", ptr %atomic-temp.i.0.i.i.i.i, i64 %sub.i.i.i + %node_list.i.i = getelementptr inbounds nuw i8, ptr %arrayidx4.i.i.i, i64 8 %18 = load atomic i64, ptr %node_list.i.i acquire, align 8 %cmp.i.i.i = icmp eq i64 %18, 3 br i1 %cmp.i.i.i, label %if.end, label %cleanup @@ -4060,7 +4061,8 @@ for.end.i.i: ; preds = %for.cond.i.i %arrayidx.i.i.i = getelementptr inbounds nuw %"struct.std::atomic.8", ptr %my_table.i.i.i, i64 %xor.i.i.i.i.i.i %32 = load atomic i64, ptr %arrayidx.i.i.i acquire, align 8 %atomic-temp.i.0.i.i.i.i = inttoptr i64 %32 to ptr - %node_list.i.i = getelementptr inbounds %"struct.tbb::detail::d2::hash_map_base>, tbb::detail::d1::spin_rw_mutex>::bucket", ptr %atomic-temp.i.0.i.i.i.i, i64 %sub.i.i.i, i32 1 + %node_list.i.i = getelementptr inbounds %"struct.tbb::detail::d2::hash_map_base>, tbb::detail::d1::spin_rw_mutex>::bucket", ptr %atomic-temp.i.0.i.i.i.i, i64 %sub.i.i.i + %node_list.i.i = getelementptr inbounds nuw i8, ptr %arrayidx4.i.i.i, i64 8 %33 = load atomic i64, ptr %node_list.i.i acquire, align 8 %cmp.i.i.i65 = icmp eq i64 %33, 3 br i1 %cmp.i.i.i65, label %if.end31, label %cleanup @@ -4614,7 +4616,8 @@ do.body.i.i: ; preds = %_ZN3tbb6detail2d213 for.body.i.i: ; preds = %for.inc15.i.i, %do.body.i.i %i.026.i.i = phi i64 [ 0, %do.body.i.i ], [ %inc.i.i, %for.inc15.i.i ] - %node_list.i.i = getelementptr inbounds %"struct.tbb::detail::d2::hash_map_base>, tbb::detail::d1::spin_rw_mutex>::bucket", ptr %atomic-temp.i.0.i.i.i, i64 %i.026.i.i, i32 1 + %node_list.i.i = getelementptr inbounds %"struct.tbb::detail::d2::hash_map_base>, tbb::detail::d1::spin_rw_mutex>::bucket", ptr %atomic-temp.i.0.i.i.i, i64 %i.026.i.i + %node_list.i.i = getelementptr inbounds nuw i8, ptr %arrayidx5.i.i, i64 8 %6 = load atomic i64, ptr %node_list.i.i monotonic, align 8 %cmp.i24.i.i = icmp ugt i64 %6, 63 br i1 %cmp.i24.i.i, label %for.body9.i.i, label %for.inc15.i.i diff --git a/bench/ozz-animation/optimized/raw_track.ll b/bench/ozz-animation/optimized/raw_track.ll index 2b8ff52d869..ac6f38507ce 100644 --- a/bench/ozz-animation/optimized/raw_track.ll +++ b/bench/ozz-animation/optimized/raw_track.ll @@ -113,17 +113,18 @@ define weak_odr dso_local noundef zeroext i1 @_ZNK3ozz9animation7offline8interna br label %.lr.ph .lr.ph: ; preds = %.lr.ph, %.lr.ph.preheader - %.01523 = phi i64 [ 0, %.lr.ph.preheader ], [ %14, %.lr.ph ] - %.01622 = phi float [ -1.000000e+00, %.lr.ph.preheader ], [ %10, %.lr.ph ] - %9 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawTrackKeyframe", ptr %4, i64 %.01523, i32 1 - %10 = load float, ptr %9, align 4, !tbaa !11 - %11 = fcmp uge float %10, 0.000000e+00 - %12 = fcmp ule float %10, 1.000000e+00 - %or.cond.not29 = and i1 %11, %12 - %13 = fcmp ugt float %10, %.01622 - %or.cond20 = and i1 %13, %or.cond.not29 - %14 = add nuw i64 %.01523, 1 - %exitcond.not = icmp ne i64 %14, %8 + %.01523 = phi i64 [ 0, %.lr.ph.preheader ], [ %15, %.lr.ph ] + %.01622 = phi float [ -1.000000e+00, %.lr.ph.preheader ], [ %11, %.lr.ph ] + %9 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawTrackKeyframe", ptr %4, i64 %.01523 + %10 = getelementptr inbounds nuw i8, ptr %9, i64 4 + %11 = load float, ptr %10, align 4, !tbaa !11 + %12 = fcmp uge float %11, 0.000000e+00 + %13 = fcmp ule float %11, 1.000000e+00 + %or.cond.not29 = and i1 %12, %13 + %14 = fcmp ugt float %11, %.01622 + %or.cond20 = and i1 %14, %or.cond.not29 + %15 = add nuw i64 %.01523, 1 + %exitcond.not = icmp ne i64 %15, %8 %or.cond.not = select i1 %or.cond20, i1 %exitcond.not, i1 false br i1 %or.cond.not, label %.lr.ph, label %.critedge, !llvm.loop !15 @@ -164,17 +165,18 @@ define weak_odr dso_local noundef zeroext i1 @_ZNK3ozz9animation7offline8interna br label %.lr.ph .lr.ph: ; preds = %.lr.ph, %.lr.ph.preheader - %.01523 = phi i64 [ 0, %.lr.ph.preheader ], [ %14, %.lr.ph ] - %.01622 = phi float [ -1.000000e+00, %.lr.ph.preheader ], [ %10, %.lr.ph ] - %9 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawTrackKeyframe.7", ptr %4, i64 %.01523, i32 1 - %10 = load float, ptr %9, align 4, !tbaa !21 - %11 = fcmp uge float %10, 0.000000e+00 - %12 = fcmp ule float %10, 1.000000e+00 - %or.cond.not29 = and i1 %11, %12 - %13 = fcmp ugt float %10, %.01622 - %or.cond20 = and i1 %13, %or.cond.not29 - %14 = add nuw i64 %.01523, 1 - %exitcond.not = icmp ne i64 %14, %8 + %.01523 = phi i64 [ 0, %.lr.ph.preheader ], [ %15, %.lr.ph ] + %.01622 = phi float [ -1.000000e+00, %.lr.ph.preheader ], [ %11, %.lr.ph ] + %9 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawTrackKeyframe.7", ptr %4, i64 %.01523 + %10 = getelementptr inbounds nuw i8, ptr %9, i64 4 + %11 = load float, ptr %10, align 4, !tbaa !21 + %12 = fcmp uge float %11, 0.000000e+00 + %13 = fcmp ule float %11, 1.000000e+00 + %or.cond.not29 = and i1 %12, %13 + %14 = fcmp ugt float %11, %.01622 + %or.cond20 = and i1 %14, %or.cond.not29 + %15 = add nuw i64 %.01523, 1 + %exitcond.not = icmp ne i64 %15, %8 %or.cond.not = select i1 %or.cond20, i1 %exitcond.not, i1 false br i1 %or.cond.not, label %.lr.ph, label %.critedge, !llvm.loop !24 @@ -301,17 +303,18 @@ define weak_odr dso_local noundef zeroext i1 @_ZNK3ozz9animation7offline8interna br label %.lr.ph .lr.ph: ; preds = %.lr.ph, %.lr.ph.preheader - %.01523 = phi i64 [ 0, %.lr.ph.preheader ], [ %14, %.lr.ph ] - %.01622 = phi float [ -1.000000e+00, %.lr.ph.preheader ], [ %10, %.lr.ph ] - %9 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawTrackKeyframe.13", ptr %4, i64 %.01523, i32 1 - %10 = load float, ptr %9, align 4, !tbaa !44 - %11 = fcmp uge float %10, 0.000000e+00 - %12 = fcmp ule float %10, 1.000000e+00 - %or.cond.not29 = and i1 %11, %12 - %13 = fcmp ugt float %10, %.01622 - %or.cond20 = and i1 %13, %or.cond.not29 - %14 = add nuw i64 %.01523, 1 - %exitcond.not = icmp ne i64 %14, %8 + %.01523 = phi i64 [ 0, %.lr.ph.preheader ], [ %15, %.lr.ph ] + %.01622 = phi float [ -1.000000e+00, %.lr.ph.preheader ], [ %11, %.lr.ph ] + %9 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawTrackKeyframe.13", ptr %4, i64 %.01523 + %10 = getelementptr inbounds nuw i8, ptr %9, i64 4 + %11 = load float, ptr %10, align 4, !tbaa !44 + %12 = fcmp uge float %11, 0.000000e+00 + %13 = fcmp ule float %11, 1.000000e+00 + %or.cond.not29 = and i1 %12, %13 + %14 = fcmp ugt float %11, %.01622 + %or.cond20 = and i1 %14, %or.cond.not29 + %15 = add nuw i64 %.01523, 1 + %exitcond.not = icmp ne i64 %15, %8 %or.cond.not = select i1 %or.cond20, i1 %exitcond.not, i1 false br i1 %or.cond.not, label %.lr.ph, label %.critedge, !llvm.loop !47 @@ -438,17 +441,18 @@ define weak_odr dso_local noundef zeroext i1 @_ZNK3ozz9animation7offline8interna br label %.lr.ph .lr.ph: ; preds = %.lr.ph, %.lr.ph.preheader - %.01523 = phi i64 [ 0, %.lr.ph.preheader ], [ %14, %.lr.ph ] - %.01622 = phi float [ -1.000000e+00, %.lr.ph.preheader ], [ %10, %.lr.ph ] - %9 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawTrackKeyframe.19", ptr %4, i64 %.01523, i32 1 - %10 = load float, ptr %9, align 4, !tbaa !54 - %11 = fcmp uge float %10, 0.000000e+00 - %12 = fcmp ule float %10, 1.000000e+00 - %or.cond.not29 = and i1 %11, %12 - %13 = fcmp ugt float %10, %.01622 - %or.cond20 = and i1 %13, %or.cond.not29 - %14 = add nuw i64 %.01523, 1 - %exitcond.not = icmp ne i64 %14, %8 + %.01523 = phi i64 [ 0, %.lr.ph.preheader ], [ %15, %.lr.ph ] + %.01622 = phi float [ -1.000000e+00, %.lr.ph.preheader ], [ %11, %.lr.ph ] + %9 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawTrackKeyframe.19", ptr %4, i64 %.01523 + %10 = getelementptr inbounds nuw i8, ptr %9, i64 4 + %11 = load float, ptr %10, align 4, !tbaa !54 + %12 = fcmp uge float %11, 0.000000e+00 + %13 = fcmp ule float %11, 1.000000e+00 + %or.cond.not29 = and i1 %12, %13 + %14 = fcmp ugt float %11, %.01622 + %or.cond20 = and i1 %14, %or.cond.not29 + %15 = add nuw i64 %.01523, 1 + %exitcond.not = icmp ne i64 %15, %8 %or.cond.not = select i1 %or.cond20, i1 %exitcond.not, i1 false br i1 %or.cond.not, label %.lr.ph, label %.critedge, !llvm.loop !57 @@ -575,17 +579,18 @@ define weak_odr dso_local noundef zeroext i1 @_ZNK3ozz9animation7offline8interna br label %.lr.ph .lr.ph: ; preds = %.lr.ph, %.lr.ph.preheader - %.01523 = phi i64 [ 0, %.lr.ph.preheader ], [ %14, %.lr.ph ] - %.01622 = phi float [ -1.000000e+00, %.lr.ph.preheader ], [ %10, %.lr.ph ] - %9 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawTrackKeyframe.25", ptr %4, i64 %.01523, i32 1 - %10 = load float, ptr %9, align 4, !tbaa !64 - %11 = fcmp uge float %10, 0.000000e+00 - %12 = fcmp ule float %10, 1.000000e+00 - %or.cond.not29 = and i1 %11, %12 - %13 = fcmp ugt float %10, %.01622 - %or.cond20 = and i1 %13, %or.cond.not29 - %14 = add nuw i64 %.01523, 1 - %exitcond.not = icmp ne i64 %14, %8 + %.01523 = phi i64 [ 0, %.lr.ph.preheader ], [ %15, %.lr.ph ] + %.01622 = phi float [ -1.000000e+00, %.lr.ph.preheader ], [ %11, %.lr.ph ] + %9 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawTrackKeyframe.25", ptr %4, i64 %.01523 + %10 = getelementptr inbounds nuw i8, ptr %9, i64 4 + %11 = load float, ptr %10, align 4, !tbaa !64 + %12 = fcmp uge float %11, 0.000000e+00 + %13 = fcmp ule float %11, 1.000000e+00 + %or.cond.not29 = and i1 %12, %13 + %14 = fcmp ugt float %11, %.01622 + %or.cond20 = and i1 %14, %or.cond.not29 + %15 = add nuw i64 %.01523, 1 + %exitcond.not = icmp ne i64 %15, %8 %or.cond.not = select i1 %or.cond20, i1 %exitcond.not, i1 false br i1 %or.cond.not, label %.lr.ph, label %.critedge, !llvm.loop !67 diff --git a/bench/pbrt-v4/optimized/image.ll b/bench/pbrt-v4/optimized/image.ll index bc3c7e6d797..1396e1c5578 100644 --- a/bench/pbrt-v4/optimized/image.ll +++ b/bench/pbrt-v4/optimized/image.ll @@ -7143,10 +7143,11 @@ _ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__c .lr.ph.split.us.us: ; preds = %.preheader.us, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread28.us.us %.034.us.us = phi i64 [ %51, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread28.us.us ], [ 0, %.preheader.us ] - %48 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %27, i64 %.034.us.us, i32 1 - %49 = load i64, ptr %48, align 8, !tbaa !21 - %50 = icmp eq i64 %49, 0 - br i1 %50, label %.critedge.us, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread28.us.us + %48 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %27, i64 %.034.us.us + %49 = getelementptr inbounds nuw i8, ptr %48, i64 8 + %50 = load i64, ptr %49, align 8, !tbaa !21 + %51 = icmp eq i64 %50, 0 + br i1 %51, label %.critedge.us, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread28.us.us _ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread28.us.us: ; preds = %.lr.ph.split.us.us %51 = add nuw i64 %.034.us.us, 1 @@ -7203,7 +7204,7 @@ _ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__c %70 = load ptr, ptr %6, align 8, !tbaa !114 %71 = getelementptr inbounds nuw i8, ptr %70, i64 24 %72 = load ptr, ptr %71, align 8 - invoke void %72(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull %.pr, i64 noundef %69, i64 noundef 4) + invoke void %73(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull %.pr, i64 noundef %69, i64 noundef 4) to label %_ZN4pbrt16ImageChannelDescD2Ev.exit unwind label %73 73: ; preds = %68 diff --git a/bench/pbrt-v4/optimized/scene.ll b/bench/pbrt-v4/optimized/scene.ll index 6839d145732..bc1dab44e71 100644 --- a/bench/pbrt-v4/optimized/scene.ll +++ b/bench/pbrt-v4/optimized/scene.ll @@ -24077,10 +24077,11 @@ _ZNKSt8functionIFN4pstd3pmr21polymorphic_allocatorISt4byteEEvEEclEv.exit: ; pred %48 = load ptr, ptr %47, align 8, !tbaa !635 %49 = call ptr %48(ptr noundef nonnull align 8 dereferenceable(32) %46) %50 = load ptr, ptr %10, align 8, !tbaa !632 - %51 = getelementptr inbounds nuw %"class.pstd::optional.475", ptr %50, i64 %32, i32 1 - %52 = load i8, ptr %51, align 8, !tbaa !633, !range !168, !noundef !169 - %53 = trunc nuw i8 %52 to i1 - br i1 %53, label %.preheader, label %.loopexit + %51 = getelementptr inbounds nuw %"class.pstd::optional.475", ptr %50, i64 %32 + %52 = getelementptr inbounds nuw i8, ptr %51, i64 16 + %53 = load i8, ptr %52, align 8, !tbaa !633, !range !168, !noundef !169 + %54 = trunc nuw i8 %53 to i1 + br i1 %54, label %.preheader, label %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit33 .preheader: ; preds = %_ZNKSt8functionIFN4pstd3pmr21polymorphic_allocatorISt4byteEEvEEclEv.exit %54 = load ptr, ptr %11, align 8, !tbaa !631 @@ -24089,43 +24090,40 @@ _ZNKSt8functionIFN4pstd3pmr21polymorphic_allocatorISt4byteEEvEEclEv.exit: ; pred %57 = sub i64 %55, %56 %58 = sdiv exact i64 %57, 24 %.rhs.trunc36 = trunc i64 %58 to i32 - br label %59 - -59: ; preds = %.preheader, %65 - %.127 = phi i32 [ %61, %65 ], [ %indvars58, %.preheader ] - %.2 = phi i32 [ %.3, %65 ], [ %.02546, %.preheader ] - %60 = add i32 %.2, %.127 - %61 = add nuw nsw i32 %.127, 1 - %62 = zext i32 %60 to i64 - %.not = icmp ugt i64 %58, %62 - br i1 %.not, label %65, label %63 - -63: ; preds = %59 - %64 = urem i32 %60, %.rhs.trunc36 - %.pre = zext i32 %64 to i64 br label %65 -65: ; preds = %63, %59 - %.pre-phi = phi i64 [ %.pre, %63 ], [ %62, %59 ] - %.3 = phi i32 [ %64, %63 ], [ %60, %59 ] - %66 = getelementptr inbounds nuw %"class.pstd::optional.475", ptr %50, i64 %.pre-phi, i32 1 - %67 = load i8, ptr %66, align 8, !tbaa !633, !range !168, !noundef !169 - %68 = trunc nuw i8 %67 to i1 - br i1 %68, label %59, label %.loopexit.loopexit, !llvm.loop !636 +65: ; preds = %.preheader, %66 + %.pre-phi = phi i32 [ %62, %66 ], [ %indvars58, %.preheader ] + %.3 = phi i32 [ %.3, %66 ], [ %.02546, %.preheader ] + %61 = add i32 %.2, %.pre-phi + %62 = add nuw nsw i32 %.127, 1 + %63 = zext i32 %61 to i64 + %.not = icmp ugt i64 %59, %63 + br i1 %.not, label %66, label %64 .loopexit.loopexit: ; preds = %65 - %.pre59 = zext i32 %.3 to i64 - br label %.loopexit + %65 = urem i32 %61, %.rhs.trunc36 + %.pre = zext i32 %65 to i.loopexit.loopexit + br label %66 -.loopexit: ; preds = %.loopexit.loopexit, %_ZNKSt8functionIFN4pstd3pmr21polymorphic_allocatorISt4byteEEvEEclEv.exit - %.pre-phi60 = phi i64 [ %.pre59, %.loopexit.loopexit ], [ %32, %_ZNKSt8functionIFN4pstd3pmr21polymorphic_allocatorISt4byteEEvEEclEv.exit ] - %69 = load i64, ptr %2, align 8, !tbaa !156 +.loopexit: ; preds = %.loopexit.loopexit, %60 + %.pre-phi60 = phi i64 [ %.pre, %64 ], [ %63, %60 ] + %.3 = phi i32 [ %65, %64 ], [ %61, %60 ] %70 = getelementptr inbounds nuw %"class.pstd::optional.475", ptr %50, i64 %.pre-phi60 %71 = getelementptr inbounds nuw i8, ptr %70, i64 16 - store i64 %69, ptr %70, align 8, !tbaa !156 - %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %70, i64 8 + %69 = load i8, ptr %71, align 8, !tbaa !633, !range !168, !noundef !169 + %70 = trunc nuw i8 %69 to i1 + br i1 %70, label %60, label %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit33, !llvm.loop !636 + +_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit33: ; preds = %66, %_ZNKSt8functionIFN4pstd3pmr21polymorphic_allocatorISt4byteEEvEEclEv.exit + %.pre-phi59 = phi i64 [ %32, %_ZNKSt8functionIFN4pstd3pmr21polymorphic_allocatorISt4byteEEvEEclEv.exit ], [ %.pre-phi, %66 ] + %71 = getelementptr inbounds nuw %"class.pstd::optional.475", ptr %50, i64 %.pre-phi59 + %72 = getelementptr inbounds nuw i8, ptr %71, i64 16 + %73 = load i64, ptr %2, align 8, !tbaa !156 + store i64 %73, ptr %71, align 8, !tbaa !156 + %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %71, i64 8 store ptr %49, ptr %.sroa.4.0..sroa_idx, align 8, !tbaa !53 - store i8 1, ptr %71, align 8, !tbaa !633 + store i8 1, ptr %72, align 8, !tbaa !633 br label %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit32 72: ; preds = %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit @@ -24140,7 +24138,7 @@ _ZNKSt8functionIFN4pstd3pmr21polymorphic_allocatorISt4byteEEvEEclEv.exit: ; pred br label %_ZNSt12shared_mutex11lock_sharedEv.exit _ZNSt12shared_mutex11lock_sharedEv.exit: ; preds = %75, %72 - %.4 = phi i32 [ %76, %75 ], [ %73, %72 ] + %.4 = phi i32 [ %76, %77 ], [ %73, %74 ] call void @llvm.lifetime.start.p0(ptr nonnull %3) %77 = trunc nuw i64 %indvars.iv.next to i32 store i32 %77, ptr %3, align 4, !tbaa !158 @@ -24149,8 +24147,8 @@ _ZNSt12shared_mutex11lock_sharedEv.exit: ; preds = %75, %72 %exitcond.not = icmp eq i64 %indvars.iv.next, %28 br i1 %exitcond.not, label %_ZNSt12shared_mutex11lock_sharedEv.exit._crit_edge, label %31, !llvm.loop !637 -_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit32: ; preds = %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit, %.loopexit - %.pn = phi ptr [ %70, %.loopexit ], [ %33, %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit ] +_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit32: ; preds = %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit, %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit33 + %.pn = phi ptr [ %71, %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit33 ], [ %33, %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit ] %78 = call noundef i32 @pthread_rwlock_unlock(ptr noundef nonnull align 8 dereferenceable(56) %0) #35 %.0 = getelementptr inbounds nuw i8, ptr %.pn, i64 8 call void @llvm.lifetime.end.p0(ptr nonnull %2) diff --git a/bench/pola-rs/optimized/3x54p4wb06gbq1xatuv6m3z64.ll b/bench/pola-rs/optimized/3x54p4wb06gbq1xatuv6m3z64.ll index 4d6e95ec110..400e99fd4a3 100644 --- a/bench/pola-rs/optimized/3x54p4wb06gbq1xatuv6m3z64.ll +++ b/bench/pola-rs/optimized/3x54p4wb06gbq1xatuv6m3z64.ll @@ -20003,14 +20003,13 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ %199 = zext i32 %198 to i64 %200 = icmp ugt i64 %192, %199 call void @llvm.assume(i1 %200) - %201 = getelementptr inbounds nuw i8, ptr %190, i64 12 - %202 = load i32, ptr %201, align 4, !alias.scope !4485, !noalias !4490, !noundef !30 - %203 = zext i32 %202 to i64 - %.idx.i.i.i = mul nuw nsw i64 %199, 24 - %204 = getelementptr inbounds nuw i8, ptr %191, i64 24 - %205 = getelementptr inbounds nuw i8, ptr %204, i64 %.idx.i.i.i + %201 = getelementptr inbounds nuw { ptr, ptr, i64 }, ptr %191, i64 %199 + %202 = getelementptr inbounds nuw i8, ptr %190, i64 12 + %203 = load i32, ptr %202, align 4, !alias.scope !4485, !noalias !4490, !noundef !30 + %204 = zext i32 %203 to i64 + %204 = getelementptr inbounds nuw i8, ptr %201, i64 24 %206 = load ptr, ptr %205, align 8, !alias.scope !4491, !noalias !4494, !noundef !30 - %207 = getelementptr inbounds nuw i8, ptr %206, i64 %203 + %207 = getelementptr inbounds nuw i8, ptr %206, i64 %204 %.not98.i.i.i = icmp eq ptr %206, null br i1 %.not98.i.i.i, label %.thread37.i.i.i, label %208 diff --git a/bench/portaudio/optimized/pa_linux_pulseaudio.ll b/bench/portaudio/optimized/pa_linux_pulseaudio.ll index 3b7108a275a..d40b14fb51c 100644 --- a/bench/portaudio/optimized/pa_linux_pulseaudio.ll +++ b/bench/portaudio/optimized/pa_linux_pulseaudio.ll @@ -299,73 +299,70 @@ define range(i32 -9992, 1) i32 @_PaPulseAudio_AddAudioDevice(ptr noundef capture store i32 2, ptr %17, align 8, !tbaa !32 %18 = getelementptr inbounds nuw i8, ptr %0, i64 272 %19 = load i32, ptr %18, align 8, !tbaa !35 - %.idx = mul nsw i64 %16, 72 - %20 = getelementptr i8, ptr %13, i64 %.idx - %21 = getelementptr i8, ptr %20, i64 16 - store i32 %19, ptr %21, align 8, !tbaa !36 - %22 = getelementptr inbounds nuw i8, ptr %0, i64 264 - %23 = load ptr, ptr %22, align 8, !tbaa !28 - %24 = shl i64 %11, 32 - %sext = add i64 %24, 4294967296 - %25 = ashr exact i64 %sext, 32 - %26 = tail call ptr @PaUtil_GroupAllocateZeroInitializedMemory(ptr noundef %23, i64 noundef %25) #14 - %27 = getelementptr inbounds nuw i8, ptr %0, i64 74008 - %28 = load i32, ptr %14, align 8, !tbaa !24 - %29 = sext i32 %28 to i64 - %30 = getelementptr inbounds ptr, ptr %27, i64 %29 - store ptr %26, ptr %30, align 8, !tbaa !23 - %31 = load ptr, ptr %22, align 8, !tbaa !28 - %32 = shl i64 %12, 32 - %sext50 = add i64 %32, 4294967296 - %33 = ashr exact i64 %sext50, 32 - %34 = tail call ptr @PaUtil_GroupAllocateZeroInitializedMemory(ptr noundef %31, i64 noundef %33) #14 - %35 = load i32, ptr %14, align 8, !tbaa !24 - %36 = sext i32 %35 to i64 - %37 = getelementptr inbounds ptr, ptr %27, i64 %36 - %38 = load ptr, ptr %37, align 8, !tbaa !23 - %39 = icmp ne ptr %38, null - %40 = icmp ne ptr %34, null - %or.cond = select i1 %39, i1 true, i1 %40 - br i1 %or.cond, label %42, label %41 + %20 = getelementptr inbounds nuw i8, ptr %17, i64 16 + store i32 %19, ptr %20, align 8, !tbaa !36 + %21 = getelementptr inbounds nuw i8, ptr %0, i64 264 + %22 = load ptr, ptr %21, align 8, !tbaa !28 + %23 = shl i64 %11, 32 + %sext = add i64 %23, 4294967296 + %24 = ashr exact i64 %sext, 32 + %25 = tail call ptr @PaUtil_GroupAllocateZeroInitializedMemory(ptr noundef %22, i64 noundef %24) #14 + %26 = getelementptr inbounds nuw i8, ptr %0, i64 74008 + %27 = load i32, ptr %14, align 8, !tbaa !24 + %28 = sext i32 %27 to i64 + %29 = getelementptr inbounds ptr, ptr %26, i64 %28 + store ptr %25, ptr %29, align 8, !tbaa !23 + %30 = load ptr, ptr %21, align 8, !tbaa !28 + %31 = shl i64 %12, 32 + %sext50 = add i64 %31, 4294967296 + %32 = ashr exact i64 %sext50, 32 + %33 = tail call ptr @PaUtil_GroupAllocateZeroInitializedMemory(ptr noundef %30, i64 noundef %32) #14 + %34 = load i32, ptr %14, align 8, !tbaa !24 + %35 = sext i32 %34 to i64 + %36 = getelementptr inbounds ptr, ptr %26, i64 %35 + %37 = load ptr, ptr %36, align 8, !tbaa !23 + %38 = icmp ne ptr %37, null + %39 = icmp ne ptr %33, null + %or.cond = select i1 %38, i1 true, i1 %39 + br i1 %or.cond, label %41, label %40 + +40:; preds = %10 + tail call void @PaUtil_SetLastHostErrorInfo(i32 noundef 0, i64 noundef 0, ptr noundef nonnull @.str.8) #14 + br label %59 41: ; preds = %10 - tail call void @PaUtil_SetLastHostErrorInfo(i32 noundef 0, i64 noundef 0, ptr noundef nonnull @.str.8) #14 - br label %60 - -42: ; preds = %10 - %43 = icmp sgt i32 %35, 1023 - br i1 %43, label %60, label %44 - -44: ; preds = %42 - %45 = tail call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %38, i64 noundef %25, ptr noundef nonnull @.str.2, ptr noundef nonnull %2) #14 - %46 = tail call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %34, i64 noundef %33, ptr noundef nonnull @.str.2, ptr noundef nonnull %1) #14 - %47 = load i32, ptr %14, align 8, !tbaa !24 - %48 = sext i32 %47 to i64 - %.idx51 = mul nsw i64 %48, 72 - %49 = getelementptr i8, ptr %13, i64 %.idx51 - %50 = getelementptr i8, ptr %49, i64 8 - store ptr %34, ptr %50, align 8, !tbaa !37 - %51 = getelementptr i8, ptr %49, i64 20 - store i32 %3, ptr %51, align 4, !tbaa !38 - %52 = getelementptr i8, ptr %49, i64 24 - store i32 %4, ptr %52, align 8, !tbaa !39 - %53 = getelementptr i8, ptr %49, i64 32 - store double %5, ptr %53, align 8, !tbaa !40 - %54 = getelementptr i8, ptr %49, i64 40 - store double %7, ptr %54, align 8, !tbaa !41 - %55 = getelementptr i8, ptr %49, i64 48 - store double %6, ptr %55, align 8, !tbaa !42 - %56 = getelementptr i8, ptr %49, i64 56 - store double %8, ptr %56, align 8, !tbaa !43 - %57 = sitofp i64 %9 to double - %58 = getelementptr i8, ptr %49, i64 64 - store double %57, ptr %58, align 8, !tbaa !44 - %59 = add nsw i32 %47, 1 - store i32 %59, ptr %14, align 8, !tbaa !24 - br label %60 - -60: ; preds = %42, %44, %41 - %.0 = phi i32 [ 0, %44 ], [ -9992, %41 ], [ -9985, %42 ] + %42 = icmp sgt i32 %34, 1023 + br i1 %42, label %59, label %43 + +42: ; preds = %41 + %44 = tail call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %37, i64 noundef %24, ptr noundef nonnull @.str.2, ptr noundef nonnull %2) #14 + %45 = tail call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %33, i64 noundef %32, ptr noundef nonnull @.str.2, ptr noundef nonnull %1) #14 + %46 = load i32, ptr %14, align 8, !tbaa !24 + %47 = sext i32 %46 to i64 + %48 = getelementptr inbounds %struct.PaDeviceInfo, ptr %13, i64 %47 + %49 = getelementptr inbounds nuw i8, ptr %48, i64 8 + store ptr %33, ptr %49, align 8, !tbaa !37 + %50 = getelementptr inbounds nuw i8, ptr %48, i64 20 + store i32 %3, ptr %50, align 4, !tbaa !38 + %49 = getelementptr inbounds nuw i8, ptr %48, i64 24 + store i32 %4, ptr %49, align 8, !tbaa !39 + %52 = getelementptr inbounds nuw i8, ptr %48, i64 32 + store double %5, ptr %52, align 8, !tbaa !40 + %53 = getelementptr inbounds nuw i8, ptr %48, i64 40 + store double %7, ptr %53, align 8, !tbaa !41 + %54 = getelementptr inbounds nuw i8, ptr %48, i64 48 + store double %6, ptr %54, align 8, !tbaa !42 + %55 = getelementptr inbounds nuw i8, ptr %48, i64 56 + store double %8, ptr %55, align 8, !tbaa !43 + %56 = sitofp i64 %9 to double + %55 = getelementptr inbounds nuw i8, ptr %48, i64 64 + store double %56, ptr %55, align 8, !tbaa !44 + %58 = add nsw i32 %46, 1 + store i32 %58, ptr %14, align 8, !tbaa !24 + br label %59 + +59:; preds = %41, %43, %40 + %.0 = phi i32 [ 0, %43 ], [ -9992, %40 ], [ -9985, %41 ] ret i32 %.0 } diff --git a/bench/proxygen/optimized/HPACKCodec.ll b/bench/proxygen/optimized/HPACKCodec.ll index ab9660fcdde..d0059b1a1af 100644 --- a/bench/proxygen/optimized/HPACKCodec.ll +++ b/bench/proxygen/optimized/HPACKCodec.ll @@ -2513,15 +2513,16 @@ _ZN5folly18threadlocal_detail10StaticMetaIvvE8instanceEv.exit: ; preds = %entry, for.body: ; preds = %_ZN5folly18threadlocal_detail10StaticMetaIvvE8instanceEv.exit, %for.body %i.032 = phi i64 [ %inc, %for.body ], [ 0, %_ZN5folly18threadlocal_detail10StaticMetaIvvE8instanceEv.exit ] %2 = load ptr, ptr %head_, align 8 - %node = getelementptr inbounds %"struct.folly::threadlocal_detail::ElementWrapper", ptr %2, i64 %i.032, i32 3 + %node = getelementptr inbounds %"struct.folly::threadlocal_detail::ElementWrapper", ptr %2, i64 %i.032 + %node = getelementptr inbounds nuw i8, ptr %arrayidx, i64 24 %conv = trunc i64 %i.032 to i32 %bf.value.i = and i32 %conv, 2147483647 store i32 %bf.value.i, ptr %node, align 8 - %next.i = getelementptr inbounds nuw i8, ptr %node, i64 24 + %next.i = getelementptr inbounds nuw i8, ptr %node, i64 48 store ptr %head_, ptr %next.i, align 8 - %prev.i = getelementptr inbounds nuw i8, ptr %node, i64 16 + %prev.i = getelementptr inbounds nuw i8, ptr %node, i64 40 store ptr %head_, ptr %prev.i, align 8 - %parent.i = getelementptr inbounds nuw i8, ptr %node, i64 8 + %parent.i = getelementptr inbounds nuw i8, ptr %node, i64 32 store ptr %head_, ptr %parent.i, align 8 %inc = add nuw i64 %i.032, 1 %exitcond.not = icmp eq i64 %inc, %1 @@ -2550,7 +2551,8 @@ _ZN5folly18threadlocal_detail10StaticMetaIvvE8instanceEv.exit21: ; preds = %for. for.body8: ; preds = %_ZN5folly18threadlocal_detail10StaticMetaIvvE8instanceEv.exit21, %for.inc20 %i5.034 = phi i64 [ %inc21, %for.inc20 ], [ 0, %_ZN5folly18threadlocal_detail10StaticMetaIvvE8instanceEv.exit21 ] %6 = load ptr, ptr %call3, align 8 - %node11 = getelementptr inbounds %"struct.folly::threadlocal_detail::ElementWrapper", ptr %6, i64 %i5.034, i32 3 + %node11 = getelementptr inbounds %"struct.folly::threadlocal_detail::ElementWrapper", ptr %6, i64 %i5.034 + %node11 = getelementptr inbounds nuw i8, ptr %arrayidx10, i64 24 %bf.load.i = load i32, ptr %node11, align 8 %bf.cast.i = icmp slt i32 %bf.load.i, 0 br i1 %bf.cast.i, label %for.inc20, label %if.then @@ -2559,12 +2561,13 @@ if.then: ; preds = %for.body8 %conv16 = trunc i64 %i5.034 to i32 %bf.set5.i = or i32 %conv16, -2147483648 store i32 %bf.set5.i, ptr %node11, align 8 - %parent.i23 = getelementptr inbounds nuw i8, ptr %node11, i64 8 + %parent.i23 = getelementptr inbounds nuw i8, ptr %node11, i64 32 store ptr %call3, ptr %parent.i23, align 8 - %prev.i24 = getelementptr inbounds nuw i8, ptr %node11, i64 16 + %prev.i24 = getelementptr inbounds nuw i8, ptr %node11, i64 40 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %prev.i24, i8 0, i64 16, i1 false) %7 = load ptr, ptr %call3, align 8 - %node19 = getelementptr inbounds %"struct.folly::threadlocal_detail::ElementWrapper", ptr %7, i64 %i5.034, i32 3 + %node19 = getelementptr inbounds %"struct.folly::threadlocal_detail::ElementWrapper", ptr %7, i64 %i5.034 + %node19 = getelementptr inbounds nuw i8, ptr %arrayidx18, i64 24 tail call void @_ZN5folly18threadlocal_detail15ThreadEntryNode10initIfZeroEb(ptr noundef nonnull align 8 dereferenceable(32) %node19, i1 noundef zeroext false) br label %for.inc20 diff --git a/bench/proxygen/optimized/HTTP2PriorityQueue.ll b/bench/proxygen/optimized/HTTP2PriorityQueue.ll index f94e3268f71..97dcbb514d0 100644 --- a/bench/proxygen/optimized/HTTP2PriorityQueue.ll +++ b/bench/proxygen/optimized/HTTP2PriorityQueue.ll @@ -7364,10 +7364,10 @@ while.cond78: ; preds = %while.end74, %while if.then.i81: ; preds = %while.cond78 %33 = load ptr, ptr %this, align 8 + %add.ptr87 = getelementptr inbounds %"struct.folly::f14::detail::F14Chunk", ptr %33, i64 %i.0 %conv89 = zext nneg i8 %32 to i64 %sub90 = add nsw i64 %conv89, -1 - %rawItems_.i.i.i72 = getelementptr inbounds %"struct.folly::f14::detail::F14Chunk", ptr %33, i64 %i.0, i32 3 - %arrayidx.i.i.i.i.i73 = getelementptr inbounds nuw %"union.std::aligned_storage<16, 8>::type", ptr %rawItems_.i.i.i72, i64 %sub90 + %rawItems_.i.i.i72 = getelementptr %"union.std::aligned_storage<16, 8>::type", ptr %add.ptr87, i64 %conv89 %cmp.i.i77 = icmp ult i8 %32, 17 call void @llvm.assume(i1 %cmp.i.i77) %34 = ptrtoint ptr %arrayidx.i.i.i.i.i73 to i64 @@ -8264,10 +8264,12 @@ while.body.i.i.i.i: ; preds = %while.body.i.i.i, % %__holeIndex.addr.030.i.i.i.i = phi i64 [ %spec.select.i.i.i.i, %while.body.i.i.i.i ], [ %__parent.0.i.i.i, %while.body.i.i.i ] %add.i.i.i.i = shl i64 %__holeIndex.addr.030.i.i.i.i, 1 %mul.i.i.i.i = add i64 %add.i.i.i.i, 2 + %add.ptr.i.i.i.i.i = getelementptr inbounds %"struct.std::pair.21", ptr %__first.coerce, i64 %mul.i.i.i.i %sub3.i.i.i.i = or disjoint i64 %add.i.i.i.i, 1 - %2 = getelementptr %"struct.std::pair.21", ptr %__first.coerce, i64 %mul.i.i.i.i, i32 1 + %2 = getelementptr inbounds %"struct.std::pair.21", ptr %__first.coerce, i64 %sub3.i.i.i.i + %2 = getelementptr i8, ptr %add.ptr.i.i.i.i.i, i64 8 %call.val.i.i.i.i.i = load double, ptr %2, align 8 - %3 = getelementptr %"struct.std::pair.21", ptr %__first.coerce, i64 %sub3.i.i.i.i, i32 1 + %3 = getelementptr i8, ptr %add.ptr.i17.i.i.i.i, i64 8 %call3.val.i.i.i.i.i = load double, ptr %3, align 8 %cmp.i.i.i.i.i.i = fcmp ogt double %call.val.i.i.i.i.i, %call3.val.i.i.i.i.i %spec.select.i.i.i.i = select i1 %cmp.i.i.i.i.i.i, i64 %sub3.i.i.i.i, i64 %mul.i.i.i.i @@ -8355,10 +8357,12 @@ while.body.i.i15: ; preds = %while.body.i.i, %wh %__holeIndex.addr.030.i.i = phi i64 [ %spec.select.i.i, %while.body.i.i15 ], [ 0, %while.body.i.i ] %add.i.i = shl i64 %__holeIndex.addr.030.i.i, 1 %mul.i.i = add i64 %add.i.i, 2 + %add.ptr.i.i.i = getelementptr inbounds %"struct.std::pair.21", ptr %__first.coerce, i64 %mul.i.i %sub3.i.i = or disjoint i64 %add.i.i, 1 - %12 = getelementptr %"struct.std::pair.21", ptr %__first.coerce, i64 %mul.i.i, i32 1 + %12 = getelementptr inbounds %"struct.std::pair.21", ptr %__first.coerce, i64 %sub3.i.i + %12 = getelementptr i8, ptr %add.ptr.i.i.i, i64 8 %call.val.i.i.i16 = load double, ptr %12, align 8 - %13 = getelementptr %"struct.std::pair.21", ptr %__first.coerce, i64 %sub3.i.i, i32 1 + %13 = getelementptr i8, ptr %add.ptr.i17.i.i, i64 8 %call3.val.i.i.i17 = load double, ptr %13, align 8 %cmp.i.i.i.i18 = fcmp ogt double %call.val.i.i.i16, %call3.val.i.i.i17 %spec.select.i.i = select i1 %cmp.i.i.i.i18, i64 %sub3.i.i, i64 %mul.i.i diff --git a/bench/qdrant-rs/optimized/56pxyf4u4f2wpi3v.ll b/bench/qdrant-rs/optimized/56pxyf4u4f2wpi3v.ll index 50ff713bb43..c20208d3afb 100644 --- a/bench/qdrant-rs/optimized/56pxyf4u4f2wpi3v.ll +++ b/bench/qdrant-rs/optimized/56pxyf4u4f2wpi3v.ll @@ -41,19 +41,20 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ br label %11 11: ; preds = %11, %6 - %12 = phi i64 [ %.sroa.5.0.copyload, %6 ], [ %15, %11 ] - %.0.i = phi i64 [ 0, %6 ], [ %16, %11 ] - %13 = getelementptr { i32, float }, ptr %0, i64 %.0.i, i32 1 - %.val19.i = load float, ptr %13, align 4, !noalias !4, !noundef !7 - %14 = getelementptr inbounds float, ptr %.sroa.8.0.copyload, i64 %12 - store float %.val19.i, ptr %14, align 4, !noalias !8 - %15 = add i64 %12, 1 - %16 = add nuw i64 %.0.i, 1 - %17 = icmp eq i64 %16, %10 - br i1 %17, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h84f38ab7170006a3E.llvm.952538468121597485.exit", label %11 + %12 = phi i64 [ %.sroa.5.0.copyload, %6 ], [ %16, %11 ] + %.0.i = phi i64 [ 0, %6 ], [ %17, %11 ] + %13 = getelementptr inbounds { i32, float }, ptr %0, i64 %.0.i + %14 = getelementptr i8, ptr %13, i64 4 + %.val19.i = load float, ptr %14, align 4, !noalias !4, !noundef !7 + %15 = getelementptr inbounds float, ptr %.sroa.8.0.copyload, i64 %12 + store float %.val19.i, ptr %15, align 4, !noalias !8 + %16 = add i64 %12, 1 + %17 = add nuw i64 %.0.i, 1 + %18 = icmp eq i64 %17, %10 + br i1 %18, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h84f38ab7170006a3E.llvm.952538468121597485.exit", label %11 "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h84f38ab7170006a3E.llvm.952538468121597485.exit": ; preds = %11, %3 - %storemerge = phi i64 [ %.sroa.5.0.copyload, %3 ], [ %15, %11 ] + %storemerge = phi i64 [ %.sroa.5.0.copyload, %3 ], [ %16, %11 ] %18 = icmp ne ptr %.sroa.0.0.copyload, null tail call void @llvm.assume(i1 %18) store i64 %storemerge, ptr %.sroa.0.0.copyload, align 8, !noalias !4 @@ -1523,8 +1524,9 @@ define hidden void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core. 16: ; preds = %6, %16 %17 = phi i64 [ %.promoted, %6 ], [ %20, %16 ] %.0 = phi i64 [ 0, %6 ], [ %21, %16 ] - %18 = getelementptr { i32, float }, ptr %0, i64 %.0, i32 1 - %.val19 = load float, ptr %18, align 4, !noundef !7 + %18 = getelementptr inbounds { i32, float }, ptr %0, i64 %.0 + %19 = getelementptr i8, ptr %18, i64 4 + %.val19 = load float, ptr %19, align 4, !noundef !7 tail call void @llvm.experimental.noalias.scope.decl(metadata !379) tail call void @llvm.experimental.noalias.scope.decl(metadata !380) tail call void @llvm.experimental.noalias.scope.decl(metadata !381) diff --git a/bench/qemu/optimized/fdt_ro.ll b/bench/qemu/optimized/fdt_ro.ll index 96cb93e0473..a55c1233612 100644 --- a/bench/qemu/optimized/fdt_ro.ll +++ b/bench/qemu/optimized/fdt_ro.ll @@ -542,29 +542,30 @@ define dso_local i32 @fdt_num_mem_rsv(ptr noundef readonly captures(none) %0) lo %48 = getelementptr inbounds nuw i8, ptr %46, i64 %47 br label %.split -.split: ; preds = %.split.preheader, %56 - %49 = phi i32 [ %59, %56 ], [ %18, %.split.preheader ] - %.09 = phi i32 [ %57, %56 ], [ 0, %.split.preheader ] +.split: ; preds = %.split.preheader, %57 + %49 = phi i32 [ %60, %57 ], [ %18, %.split.preheader ] + %.09 = phi i32 [ %58, %57 ], [ 0, %.split.preheader ] %50 = zext i32 %49 to i64 %51 = icmp ult i64 %37, %50 br i1 %51, label %fdt_mem_rsv.exit.thread.split, label %52 52: ; preds = %.split %53 = sext i32 %.09 to i64 - %54 = getelementptr inbounds %struct.fdt_reserve_entry, ptr %48, i64 %53, i32 1 - %.val = load i64, ptr %54, align 8 - %55 = icmp eq i64 %.val, 0 - br i1 %55, label %fdt_mem_rsv.exit.thread.split, label %56 - -56: ; preds = %52 - %57 = add i32 %.09, 1 - %58 = shl i32 %57, 4 - %59 = add i32 %18, %58 - %60 = icmp ult i32 %59, %18 - br i1 %60, label %fdt_mem_rsv.exit.thread.split, label %.split, !llvm.loop !5 - -fdt_mem_rsv.exit.thread.split: ; preds = %52, %56, %.split - %.05.split.ph = phi i32 [ -8, %.split ], [ -8, %56 ], [ %.09, %52 ] + %54 = getelementptr inbounds %struct.fdt_reserve_entry, ptr %48, i64 %53 + %55 = getelementptr inbounds nuw i8, ptr %54, i64 8 + %.val = load i64, ptr %55, align 8 + %56 = icmp eq i64 %.val, 0 + br i1 %56, label %fdt_mem_rsv.exit.thread.split, label %57 + +57:; preds = %52 + %58 = add i32 %.09, 1 + %59 = shl i32 %58, 4 + %60 = add i32 %18, %59 + %61 = icmp ult i32 %60, %18 + br i1 %61, label %fdt_mem_rsv.exit.thread.split, label %.split, !llvm.loop !5 + +fdt_mem_rsv.exit.thread.split:; preds = %52, %57, %.split + %.05.split.ph = phi i32 [ -8, %.split ], [ -8, %57 ], [ %.09, %52 ] ret i32 %.05.split.ph } diff --git a/bench/quiche-rs/optimized/6lp2oyapnsojevo64mk9ap806.ll b/bench/quiche-rs/optimized/6lp2oyapnsojevo64mk9ap806.ll index ac2b3a0362e..626b0c7ad0c 100644 --- a/bench/quiche-rs/optimized/6lp2oyapnsojevo64mk9ap806.ll +++ b/bench/quiche-rs/optimized/6lp2oyapnsojevo64mk9ap806.ll @@ -7398,10 +7398,11 @@ define hidden void @"_ZN6quiche8recovery11gcongestion3bbr17bandwidth_sampler27Co %44 = select i1 %.not.i27, i64 0, i64 %43 %.sroa.01.0.i28 = sub nuw i64 %42, %44 %45 = load ptr, ptr %15, align 8, !alias.scope !319, !nonnull !12, !noundef !12 - %46 = getelementptr inbounds nuw { i64, { [24 x i32], i32, [1 x i32] } }, ptr %45, i64 %.sroa.01.0.i28, i32 1, i32 1 - %47 = load i32, ptr %46, align 8, !range !326, !noundef !12 - %.not21 = icmp eq i32 %47, 1000000000 - br i1 %.not21, label %48, label %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$3get17h5a0993452aac7285E.exit29.thread" + %46 = getelementptr inbounds nuw { i64, { [24 x i32], i32, [1 x i32] } }, ptr %45, i64 %.sroa.01.0.i28 + %47 = getelementptr inbounds nuw i8, ptr %46, i64 104 + %48 = load i32, ptr %47, align 8, !range !326, !noundef !12 + %.not21 = icmp eq i32 %48, 1000000000 + br i1 %.not21, label %49, label %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$3get17h5a0993452aac7285E.exit29.thread" "_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$3get17h5a0993452aac7285E.exit29.thread": ; preds = %.lr.ph, %48, %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$7get_mut17h4285cf3e7e8e3b89E.exit.thread" call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %0, ptr noundef nonnull align 8 dereferenceable(96) %.sroa.03, i64 96, i1 false) diff --git a/bench/rayon-rs/optimized/5ev50in5ju1pej99.ll b/bench/rayon-rs/optimized/5ev50in5ju1pej99.ll index 7bab5a54f15..cb01acf4905 100644 --- a/bench/rayon-rs/optimized/5ev50in5ju1pej99.ll +++ b/bench/rayon-rs/optimized/5ev50in5ju1pej99.ll @@ -2267,9 +2267,9 @@ define hidden void @_ZN10rayon_core8registry9main_loop17h1548e426449e3194E.llvm. unreachable 8: ; preds = %41, %46, %9 - %.pn = phi { ptr, i32 } [ %lpad.thr_comm, %46 ], [ %lpad.thr_comm.split-lp, %41 ], [ %10, %9 ] + %.pn = phi { ptr, i32 } [ %lpad.thr_comm, %49 ], [ %lpad.thr_comm.split-lp, %44 ], [ %10, %9 ] invoke void @"_ZN4core3ptr55drop_in_place$LT$rayon_core..registry..WorkerThread$GT$17h3ecc8cb5b41cf5ceE"(ptr noalias noundef nonnull align 128 dereferenceable(384) %4) #22 - to label %49 unwind label %47 + to label %52 unwind label %47 9: ; preds = %19, %7, %20 %10 = landingpad { ptr, i32 } @@ -2300,59 +2300,62 @@ define hidden void @_ZN10rayon_core8registry9main_loop17h1548e426449e3194E.llvm. 20: ; preds = %11 %21 = getelementptr i8, ptr %13, i64 512 %.val = load ptr, ptr %21, align 8, !nonnull !4, !noundef !4 - %22 = getelementptr inbounds { { ptr, i8 }, { { { i64 } } }, { { { { i32 } }, { { i8 } }, i8, [2 x i8] }, { { { i32 } } } }, { { { { i32 } }, { { i8 } }, i8, [2 x i8] }, { { { i32 } } } } }, ptr %.val, i64 %15, i32 2 - invoke fastcc void @"_ZN73_$LT$rayon_core..latch..LockLatch$u20$as$u20$rayon_core..latch..Latch$GT$3set17h4a937e1e37716d94E"(ptr noundef %22) - to label %23 unwind label %9 - -23: ; preds = %20 - %24 = getelementptr inbounds nuw i8, ptr %13, i64 432 - %25 = load ptr, ptr %24, align 16, !noundef !4 - %.not = icmp eq ptr %25, null - br i1 %.not, label %27, label %26 - -26: ; preds = %23 - invoke void @_ZN10rayon_core8registry8Registry12catch_unwind17h7201d1f7228249caE(ptr noundef nonnull align 128 %16, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %24, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %3) - to label %27 unwind label %46 - -27: ; preds = %26, %23 - %28 = load ptr, ptr %12, align 16, !nonnull !4, !noundef !4 - %29 = load i64, ptr %14, align 128, !noundef !4 - %30 = getelementptr i8, ptr %28, i64 512 - %31 = getelementptr i8, ptr %28, i64 520 - %.val3.i = load i64, ptr %31, align 8, !noundef !4 - %32 = icmp ult i64 %29, %.val3.i - br i1 %32, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h2b09e8088fcb6a7fE.exit.i", label %.invoke, !prof !253 - -.invoke: ; preds = %_ZN10rayon_core8registry12WorkerThread10wait_until17ha3b8b40015096664E.exit.i, %27 - %33 = phi i64 [ %.val3.i, %27 ], [ %.val1.i, %_ZN10rayon_core8registry12WorkerThread10wait_until17ha3b8b40015096664E.exit.i ] - %34 = phi ptr [ @anon.d61528429f0bdeb9caa8633bd1eca0a2.58, %27 ], [ @anon.d61528429f0bdeb9caa8633bd1eca0a2.59, %_ZN10rayon_core8registry12WorkerThread10wait_until17ha3b8b40015096664E.exit.i ] - invoke void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %29, i64 noundef %33, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %34) #21 - to label %.cont unwind label %46 + %22 = getelementptr inbounds { { ptr, i8 }, { { { i64 } } }, { { { { i32 } }, { { i8 } }, i8, [2 x i8] }, { { { i32 } } } }, { { { { i32 } }, { { i8 } }, i8, [2 x i8] }, { { { i32 } } } } }, ptr %.val, i64 %15 + %23 = getelementptr inbounds nuw i8, ptr %22, i64 24 + invoke fastcc void @"_ZN73_$LT$rayon_core..latch..LockLatch$u20$as$u20$rayon_core..latch..Latch$GT$3set17h4a937e1e37716d94E"(ptr noundef %23) + to label %24 unwind label %9 + +24: ; preds = %20 + %25 = getelementptr inbounds nuw i8, ptr %13, i64 432 + %26 = load ptr, ptr %25, align 16, !noundef !4 + %.not = icmp eq ptr %26, null + br i1 %.not, label %28, label %27 + +27:; preds = %24 + invoke void @_ZN10rayon_core8registry8Registry12catch_unwind17h7201d1f7228249caE(ptr noundef nonnull align 128 %16, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %25, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %3) + to label %28 unwind label %49 + +28:; preds = %27, %24 + %29 = load ptr, ptr %12, align 16, !nonnull !4, !noundef !4 + %30 = load i64, ptr %14, align 128, !noundef !4 + %31 = getelementptr i8, ptr %29, i64 512 + %32 = getelementptr i8, ptr %29, i64 520 + %.val3.i = load i64, ptr %32, align 8, !noundef !4 + %33 = icmp ult i64 %30, %.val3.i + br i1 %33, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h2b09e8088fcb6a7fE.exit.i", label %.invoke, !prof !253 + +.invoke:; preds = %_ZN10rayon_core8registry12WorkerThread10wait_until17ha3b8b40015096664E.exit.i, %28 + %34 = phi i64 [ %.val3.i, %28 ], [ %.val1.i, %_ZN10rayon_core8registry12WorkerThread10wait_until17ha3b8b40015096664E.exit.i ] + %35 = phi ptr [ @anon.d61528429f0bdeb9caa8633bd1eca0a2.58, %28 ], [ @anon.d61528429f0bdeb9caa8633bd1eca0a2.59, %_ZN10rayon_core8registry12WorkerThread10wait_until17ha3b8b40015096664E.exit.i ] + invoke void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %30, i64 noundef %34, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %35) #21 + to label %.cont unwind label %49 .cont: ; preds = %.invoke unreachable -"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h2b09e8088fcb6a7fE.exit.i": ; preds = %27 - %.val2.i = load ptr, ptr %30, align 8, !nonnull !4, !noundef !4 - %35 = getelementptr inbounds { { ptr, i8 }, { { { i64 } } }, { { { { i32 } }, { { i8 } }, i8, [2 x i8] }, { { { i32 } } } }, { { { { i32 } }, { { i8 } }, i8, [2 x i8] }, { { { i32 } } } } }, ptr %.val2.i, i64 %29, i32 1 - %36 = load atomic i64, ptr %35 acquire, align 8 - %37 = icmp eq i64 %36, 3 - br i1 %37, label %_ZN10rayon_core8registry12WorkerThread10wait_until17ha3b8b40015096664E.exit.i, label %38 +"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h2b09e8088fcb6a7fE.exit.i": ; preds = %28 + %.val2.i = load ptr, ptr %31, align 8, !nonnull !4, !noundef !4 + %35 = getelementptr inbounds { { ptr, i8 }, { { { i64 } } }, { { { { i32 } }, { { i8 } }, i8, [2 x i8] }, { { { i32 } } } }, { { { { i32 } }, { { i8 } }, i8, [2 x i8] }, { { { i32 } } } } }, ptr %.val2.i, i64 %30 + %37 = getelementptr inbounds nuw i8, ptr %35, i64 16 + %38 = load atomic i64, ptr %37 acquire, align 8 + %39 = icmp eq i64 %38, 3 + br i1 %39, label %_ZN10rayon_core8registry12WorkerThread10wait_until17ha3b8b40015096664E.exit.i, label %40 38: ; preds = %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h2b09e8088fcb6a7fE.exit.i" - invoke void @_ZN10rayon_core8registry12WorkerThread15wait_until_cold17hf6974e652baf1fc0E(ptr noundef nonnull align 128 %4, ptr noundef nonnull align 8 %35) + invoke void @_ZN10rayon_core8registry12WorkerThread15wait_until_cold17hf6974e652baf1fc0E(ptr noundef nonnull align 128 %4, ptr noundef nonnull align 8 %37) to label %_ZN10rayon_core8registry12WorkerThread10wait_until17ha3b8b40015096664E.exit.i unwind label %46 _ZN10rayon_core8registry12WorkerThread10wait_until17ha3b8b40015096664E.exit.i: ; preds = %38, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h2b09e8088fcb6a7fE.exit.i" - %.val1.i = load i64, ptr %31, align 8, !noundef !4 - %39 = icmp ult i64 %29, %.val1.i + %.val1.i = load i64, ptr %32, align 8, !noundef !4 + %39 = icmp ult i64 %30, %.val1.i br i1 %39, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h2b09e8088fcb6a7fE.exit4.i", label %.invoke, !prof !253 "_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h2b09e8088fcb6a7fE.exit4.i": ; preds = %_ZN10rayon_core8registry12WorkerThread10wait_until17ha3b8b40015096664E.exit.i - %.val.i = load ptr, ptr %30, align 8, !nonnull !4, !noundef !4 - %40 = getelementptr inbounds { { ptr, i8 }, { { { i64 } } }, { { { { i32 } }, { { i8 } }, i8, [2 x i8] }, { { { i32 } } } }, { { { { i32 } }, { { i8 } }, i8, [2 x i8] }, { { { i32 } } } } }, ptr %.val.i, i64 %29, i32 3 - invoke fastcc void @"_ZN73_$LT$rayon_core..latch..LockLatch$u20$as$u20$rayon_core..latch..Latch$GT$3set17h4a937e1e37716d94E"(ptr noundef %40) - to label %_ZN10rayon_core8registry12WorkerThread22wait_until_out_of_work17hee0b3f7a77fabe23E.exit unwind label %46 + %.val.i = load ptr, ptr %31, align 8, !nonnull !4, !noundef !4 + %40 = getelementptr inbounds { { ptr, i8 }, { { { i64 } } }, { { { { i32 } }, { { i8 } }, i8, [2 x i8] }, { { { i32 } } } }, { { { { i32 } }, { { i8 } }, i8, [2 x i8] }, { { { i32 } } } } }, ptr %.val.i, i64 %30 + %43 = getelementptr inbounds nuw i8, ptr %40, i64 36 + invoke fastcc void @"_ZN73_$LT$rayon_core..latch..LockLatch$u20$as$u20$rayon_core..latch..Latch$GT$3set17h4a937e1e37716d94E"(ptr noundef %43) + to label %_ZN10rayon_core8registry12WorkerThread22wait_until_out_of_work17hee0b3f7a77fabe23E.exit unwind label %49 41: ; preds = %44 %lpad.thr_comm.split-lp = landingpad { ptr, i32 } @@ -2367,7 +2370,7 @@ _ZN10rayon_core8registry12WorkerThread22wait_until_out_of_work17hee0b3f7a77fabe2 44: ; preds = %_ZN10rayon_core8registry12WorkerThread22wait_until_out_of_work17hee0b3f7a77fabe23E.exit invoke void @_ZN10rayon_core8registry8Registry12catch_unwind17h0b46656f477527b3E(ptr noundef nonnull align 128 %16, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %42, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %3) - to label %45 unwind label %41 + to label %48 unwind label %41 45: ; preds = %44, %_ZN10rayon_core8registry12WorkerThread22wait_until_out_of_work17hee0b3f7a77fabe23E.exit call void @llvm.lifetime.end.p0(ptr nonnull %3) @@ -2375,7 +2378,7 @@ _ZN10rayon_core8registry12WorkerThread22wait_until_out_of_work17hee0b3f7a77fabe2 call void @llvm.lifetime.end.p0(ptr nonnull %4) ret void -46: ; preds = %.invoke, %26, %38, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h2b09e8088fcb6a7fE.exit4.i" +46: ; preds = %.invoke, %27, %38, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h2b09e8088fcb6a7fE.exit4.i" %lpad.thr_comm = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr53drop_in_place$LT$rayon_core..unwind..AbortIfPanic$GT$17h981eb812ff12ac33E"(ptr noalias noundef nonnull align 1 %2) #22 diff --git a/bench/recastnavigation/optimized/Sample_TempObstacles.ll b/bench/recastnavigation/optimized/Sample_TempObstacles.ll index bac9c7a82dd..f9142d67726 100644 --- a/bench/recastnavigation/optimized/Sample_TempObstacles.ll +++ b/bench/recastnavigation/optimized/Sample_TempObstacles.ll @@ -1011,69 +1011,71 @@ define dso_local void @_Z9drawTilesP11duDebugDrawP11dtTileCache(ptr noundef %0, br label %39 21: ; preds = %.lr.ph, %35 - %22 = phi i32 [ %7, %.lr.ph ], [ %36, %35 ] - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %35 ] + %22 = phi i32 [ %7, %.lr.ph ], [ %36, %36 ] + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %36 ] %23 = load ptr, ptr %9, align 8 - %24 = getelementptr inbounds nuw %struct.dtCompressedTile, ptr %23, i64 %indvars.iv, i32 1 - %25 = load ptr, ptr %24, align 8 - %.not32 = icmp eq ptr %25, null - br i1 %.not32, label %35, label %26 - -26: ; preds = %21 - call void @_ZNK11dtTileCache19calcTightTileBoundsEPK22dtTileCacheLayerHeaderPfS3_(ptr noundef nonnull align 8 dereferenceable(912) %1, ptr noundef nonnull %25, ptr noundef nonnull %4, ptr noundef nonnull %5) - %27 = trunc nuw nsw i64 %indvars.iv to i32 - %28 = call noundef i32 @_Z10duIntToColii(i32 noundef %27, i32 noundef 64) - call void @_Z15duCalcBoxColorsPjjj(ptr noundef nonnull %3, i32 noundef %28, i32 noundef %28) - %29 = load float, ptr %4, align 4 - %30 = load float, ptr %10, align 4 - %31 = load float, ptr %11, align 4 - %32 = load float, ptr %5, align 4 - %33 = load float, ptr %12, align 4 - %34 = load float, ptr %13, align 4 - call void @_Z14duDebugDrawBoxP11duDebugDrawffffffPKj(ptr noundef %0, float noundef %29, float noundef %30, float noundef %31, float noundef %32, float noundef %33, float noundef %34, ptr noundef nonnull %3) + %24 = getelementptr inbounds nuw %struct.dtCompressedTile, ptr %23, i64 %indvars.iv + %25 = getelementptr inbounds nuw i8, ptr %24, i64 8 + %26 = load ptr, ptr %25, align 8 + %.not32 = icmp eq ptr %26, null + br i1 %.not32, label %36, label %27 + +27:; preds = %21 + call void @_ZNK11dtTileCache19calcTightTileBoundsEPK22dtTileCacheLayerHeaderPfS3_(ptr noundef nonnull align 8 dereferenceable(912) %1, ptr noundef nonnull %26, ptr noundef nonnull %4, ptr noundef nonnull %5) + %28 = trunc nuw nsw i64 %indvars.iv to i32 + %29 = call noundef i32 @_Z10duIntToColii(i32 noundef %28, i32 noundef 64) + call void @_Z15duCalcBoxColorsPjjj(ptr noundef nonnull %3, i32 noundef %29, i32 noundef %29) + %30 = load float, ptr %4, align 4 + %31 = load float, ptr %10, align 4 + %32 = load float, ptr %11, align 4 + %33 = load float, ptr %5, align 4 + %34 = load float, ptr %12, align 4 + %35 = load float, ptr %13, align 4 + call void @_Z14duDebugDrawBoxP11duDebugDrawffffffPKj(ptr noundef %0, float noundef %30, float noundef %31, float noundef %32, float noundef %33, float noundef %34, float noundef %35, ptr noundef nonnull %3) %.pre = load i32, ptr %6, align 4 br label %35 -35: ; preds = %21, %26 - %36 = phi i32 [ %22, %21 ], [ %.pre, %26 ] +35: ; preds = %21, %27 + %36 = phi i32 [ %22, %21 ], [ %.pre, %27 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %37 = sext i32 %36 to i64 %38 = icmp slt i64 %indvars.iv.next, %37 br i1 %38, label %21, label %.preheader, !llvm.loop !11 39: ; preds = %.lr.ph35, %61 - %40 = phi i32 [ %36, %.lr.ph35 ], [ %62, %61 ] - %indvars.iv37 = phi i64 [ 0, %.lr.ph35 ], [ %indvars.iv.next38, %61 ] + %40 = phi i32 [ %36, %.lr.ph35 ], [ %62, %63 ] + %indvars.iv37 = phi i64 [ 0, %.lr.ph35 ], [ %indvars.iv.next38, %63 ] %41 = load ptr, ptr %15, align 8 - %42 = getelementptr inbounds nuw %struct.dtCompressedTile, ptr %41, i64 %indvars.iv37, i32 1 - %43 = load ptr, ptr %42, align 8 - %.not = icmp eq ptr %43, null - br i1 %.not, label %61, label %44 - -44: ; preds = %39 - call void @_ZNK11dtTileCache19calcTightTileBoundsEPK22dtTileCacheLayerHeaderPfS3_(ptr noundef nonnull align 8 dereferenceable(912) %1, ptr noundef nonnull %43, ptr noundef nonnull %4, ptr noundef nonnull %5) - %45 = trunc nuw nsw i64 %indvars.iv37 to i32 - %46 = call noundef i32 @_Z10duIntToColii(i32 noundef %45, i32 noundef 255) - %47 = load float, ptr %16, align 4 - %48 = fmul float %47, 0x3FB99999A0000000 - %49 = load float, ptr %4, align 4 - %50 = fsub float %49, %48 - %51 = load float, ptr %17, align 4 - %52 = fsub float %51, %48 - %53 = load float, ptr %18, align 4 - %54 = fsub float %53, %48 - %55 = load float, ptr %5, align 4 - %56 = fadd float %48, %55 - %57 = load float, ptr %19, align 4 - %58 = fadd float %48, %57 - %59 = load float, ptr %20, align 4 - %60 = fadd float %48, %59 - call void @_Z18duDebugDrawBoxWireP11duDebugDrawffffffjf(ptr noundef %0, float noundef %50, float noundef %52, float noundef %54, float noundef %56, float noundef %58, float noundef %60, i32 noundef %46, float noundef 2.000000e+00) + %42 = getelementptr inbounds nuw %struct.dtCompressedTile, ptr %41, i64 %indvars.iv37 + %44 = getelementptr inbounds nuw i8, ptr %42, i64 8 + %45 = load ptr, ptr %44, align 8 + %.not = icmp eq ptr %45, null + br i1 %.not, label %63, label %46 + +46:; preds = %40 + call void @_ZNK11dtTileCache19calcTightTileBoundsEPK22dtTileCacheLayerHeaderPfS3_(ptr noundef nonnull align 8 dereferenceable(912) %1, ptr noundef nonnull %45, ptr noundef nonnull %4, ptr noundef nonnull %5) + %47 = trunc nuw nsw i64 %indvars.iv37 to i32 + %48 = call noundef i32 @_Z10duIntToColii(i32 noundef %47, i32 noundef 255) + %49 = load float, ptr %16, align 4 + %50 = fmul float %49, 0x3FB99999A0000000 + %51 = load float, ptr %4, align 4 + %52 = fsub float %51, %50 + %53 = load float, ptr %17, align 4 + %54 = fsub float %53, %50 + %55 = load float, ptr %18, align 4 + %56 = fsub float %55, %50 + %57 = load float, ptr %5, align 4 + %58 = fadd float %50, %57 + %59 = load float, ptr %19, align 4 + %60 = fadd float %50, %59 + %61 = load float, ptr %20, align 4 + %62 = fadd float %50, %61 + call void @_Z18duDebugDrawBoxWireP11duDebugDrawffffffjf(ptr noundef %0, float noundef %52, float noundef %54, float noundef %56, float noundef %58, float noundef %60, float noundef %62, i32 noundef %48, float noundef 2.000000e+00) %.pre40 = load i32, ptr %6, align 4 br label %61 -61: ; preds = %39, %44 - %62 = phi i32 [ %40, %39 ], [ %.pre40, %44 ] +61: ; preds = %39, %46 + %62 = phi i32 [ %40, %40 ], [ %.pre40, %46 ] %indvars.iv.next38 = add nuw nsw i64 %indvars.iv37, 1 %63 = sext i32 %62 to i64 %64 = icmp slt i64 %indvars.iv.next38, %63 diff --git a/bench/redis/optimized/latency.ll b/bench/redis/optimized/latency.ll index 1ed596ba4e9..22a35a7c4ef 100644 --- a/bench/redis/optimized/latency.ll +++ b/bench/redis/optimized/latency.ll @@ -200,13 +200,11 @@ define dso_local void @latencyAddSample(ptr noundef %0, i64 noundef %1) local_un %39 = getelementptr inbounds %struct.latencySample, ptr %23, i64 %38 store i32 %37, ptr %39, align 4, !tbaa !41 %40 = trunc i64 %1 to i32 - %.idx = shl nsw i64 %38, 3 - %41 = getelementptr i8, ptr %23, i64 %.idx - %42 = getelementptr i8, ptr %41, i64 4 - store i32 %40, ptr %42, align 4, !tbaa !43 - %43 = add nsw i32 %20, 1 - %44 = icmp eq i32 %43, 160 - %spec.select = select i1 %44, i32 0, i32 %43 + %41 = getelementptr inbounds nuw i8, ptr %39, i64 4 + store i32 %40, ptr %41, align 4, !tbaa !43 + %42 = add nsw i32 %20, 1 + %43 = icmp eq i32 %42, 160 + %spec.select = select i1 %43, i32 0, i32 %42 store i32 %spec.select, ptr %.0, align 4, !tbaa !40 br label %45 diff --git a/bench/redis/optimized/lvm.ll b/bench/redis/optimized/lvm.ll index 27eb7e88b00..3528aba666b 100644 --- a/bench/redis/optimized/lvm.ll +++ b/bench/redis/optimized/lvm.ll @@ -1316,9 +1316,9 @@ traceexec.exit: ; preds = %.thread820, %71, %7 store i32 %103, ptr %104, align 8, !tbaa !4 br label %.backedge.backedge -.backedge.backedge: ; preds = %965, %873, %122, %97, %105, %113, %125, %136, %142, %152, %180, %208, %210, %413, %449, %458, %492, %516, %585, %605, %629, %769, %816, %875, %913, %179, %175, %170, %158, %250, %245, %277, %272, %304, %299, %331, %326, %361, %353, %388, %383, %401, %397, %436, %427, %422, %648, %694, %726, %724, %722, %839, %91, %851, %948 - %.0716.be = phi ptr [ %33, %948 ], [ %.11727, %851 ], [ %33, %91 ], [ %.11727, %839 ], [ %33, %722 ], [ %33, %724 ], [ %730, %726 ], [ %33, %694 ], [ %33, %648 ], [ %33, %422 ], [ %33, %427 ], [ %33, %436 ], [ %33, %397 ], [ %33, %401 ], [ %33, %383 ], [ %33, %388 ], [ %33, %353 ], [ %33, %361 ], [ %33, %326 ], [ %33, %331 ], [ %33, %299 ], [ %33, %304 ], [ %33, %272 ], [ %33, %277 ], [ %33, %245 ], [ %33, %250 ], [ %33, %158 ], [ %33, %170 ], [ %33, %175 ], [ %33, %179 ], [ %.12728.lcssa, %913 ], [ %33, %875 ], [ %817, %816 ], [ %776, %769 ], [ %630, %629 ], [ %606, %605 ], [ %587, %585 ], [ %518, %516 ], [ %494, %492 ], [ %462, %458 ], [ %33, %449 ], [ %33, %413 ], [ %33, %210 ], [ %33, %208 ], [ %33, %180 ], [ %33, %152 ], [ %33, %142 ], [ %33, %136 ], [ %33, %125 ], [ %spec.select, %113 ], [ %33, %105 ], [ %33, %97 ], [ %33, %122 ], [ %.11727, %873 ], [ %33, %965 ] - %.0712.be = phi ptr [ %.13, %948 ], [ %.1713, %851 ], [ %.1713, %91 ], [ %.1713, %839 ], [ %.1713, %722 ], [ %.1713, %724 ], [ %.1713, %726 ], [ %695, %694 ], [ %649, %648 ], [ %.1713, %422 ], [ %.1713, %427 ], [ %437, %436 ], [ %.1713, %397 ], [ %402, %401 ], [ %.1713, %383 ], [ %389, %388 ], [ %.1713, %353 ], [ %362, %361 ], [ %.1713, %326 ], [ %332, %331 ], [ %.1713, %299 ], [ %305, %304 ], [ %.1713, %272 ], [ %278, %277 ], [ %.1713, %245 ], [ %251, %250 ], [ %.1713, %158 ], [ %.1713, %170 ], [ %.1713, %175 ], [ %.1713, %179 ], [ %914, %913 ], [ %.1713, %875 ], [ %798, %816 ], [ %.1713, %769 ], [ %.1713, %629 ], [ %.1713, %605 ], [ %586, %585 ], [ %517, %516 ], [ %493, %492 ], [ %.1713, %458 ], [ %450, %449 ], [ %.1713, %413 ], [ %224, %210 ], [ %209, %208 ], [ %193, %180 ], [ %157, %152 ], [ %151, %142 ], [ %141, %136 ], [ %.1713, %125 ], [ %.1713, %113 ], [ %.1713, %105 ], [ %.1713, %97 ], [ %.1713, %122 ], [ %.1713, %873 ], [ %.13, %965 ] +.backedge.backedge: ; preds = %962, %873, %122, %97, %105, %113, %125, %136, %142, %152, %180, %208, %210, %413, %449, %458, %492, %516, %585, %605, %629, %769, %816, %875, %913, %179, %175, %170, %158, %250, %245, %277, %272, %304, %299, %331, %326, %361, %353, %388, %383, %401, %397, %436, %427, %422, %648, %694, %726, %724, %722, %839, %91, %851, %948 + %.0716.be = phi ptr [ %33, %948 ], [ %.11727, %851 ], [ %33, %91 ], [ %.11727, %839 ], [ %33, %722 ], [ %33, %724 ], [ %730, %726 ], [ %33, %694 ], [ %33, %648 ], [ %33, %422 ], [ %33, %427 ], [ %33, %436 ], [ %33, %397 ], [ %33, %401 ], [ %33, %383 ], [ %33, %388 ], [ %33, %353 ], [ %33, %361 ], [ %33, %326 ], [ %33, %331 ], [ %33, %299 ], [ %33, %304 ], [ %33, %272 ], [ %33, %277 ], [ %33, %245 ], [ %33, %250 ], [ %33, %158 ], [ %33, %170 ], [ %33, %175 ], [ %33, %179 ], [ %.12728.lcssa, %913 ], [ %33, %875 ], [ %817, %816 ], [ %776, %769 ], [ %630, %629 ], [ %606, %605 ], [ %587, %585 ], [ %518, %516 ], [ %494, %492 ], [ %462, %458 ], [ %33, %449 ], [ %33, %413 ], [ %33, %210 ], [ %33, %208 ], [ %33, %180 ], [ %33, %152 ], [ %33, %142 ], [ %33, %136 ], [ %33, %125 ], [ %spec.select, %113 ], [ %33, %105 ], [ %33, %97 ], [ %33, %122 ], [ %.11727, %873 ], [ %33, %962 ] + %.0712.be = phi ptr [ %.13, %948 ], [ %.1713, %851 ], [ %.1713, %91 ], [ %.1713, %839 ], [ %.1713, %722 ], [ %.1713, %724 ], [ %.1713, %726 ], [ %695, %694 ], [ %649, %648 ], [ %.1713, %422 ], [ %.1713, %427 ], [ %437, %436 ], [ %.1713, %397 ], [ %402, %401 ], [ %.1713, %383 ], [ %389, %388 ], [ %.1713, %353 ], [ %362, %361 ], [ %.1713, %326 ], [ %332, %331 ], [ %.1713, %299 ], [ %305, %304 ], [ %.1713, %272 ], [ %278, %277 ], [ %.1713, %245 ], [ %251, %250 ], [ %.1713, %158 ], [ %.1713, %170 ], [ %.1713, %175 ], [ %.1713, %179 ], [ %914, %913 ], [ %.1713, %875 ], [ %798, %816 ], [ %.1713, %769 ], [ %.1713, %629 ], [ %.1713, %605 ], [ %586, %585 ], [ %517, %516 ], [ %493, %492 ], [ %.1713, %458 ], [ %450, %449 ], [ %.1713, %413 ], [ %224, %210 ], [ %209, %208 ], [ %193, %180 ], [ %157, %152 ], [ %151, %142 ], [ %141, %136 ], [ %.1713, %125 ], [ %.1713, %113 ], [ %.1713, %105 ], [ %.1713, %97 ], [ %.1713, %122 ], [ %.1713, %873 ], [ %.13, %962 ] br label %.backedge 105: ; preds = %91 @@ -2808,8 +2808,8 @@ luaV_tonumber.exit818.thread: ; preds = %763 %wide.trip.count = zext nneg i32 %.0731 to i64 br label %952 -952: ; preds = %.lr.ph, %965 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %965 ] +952: ; preds = %.lr.ph, %962 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %962 ] %953 = icmp slt i64 %indvars.iv, %950 br i1 %953, label %954, label %963 @@ -2822,16 +2822,13 @@ luaV_tonumber.exit818.thread: ; preds = %763 store i64 %959, ptr %958, align 8, !tbaa !9 %960 = getelementptr inbounds nuw i8, ptr %957, i64 8 %961 = load i32, ptr %960, align 8, !tbaa !4 - %962 = getelementptr inbounds nuw i8, ptr %958, i64 8 - store i32 %961, ptr %962, align 8, !tbaa !4 - br label %965 + br label %963 -963: ; preds = %952 - %964 = getelementptr inbounds nuw %struct.lua_TValue, ptr %.0729, i64 %indvars.iv, i32 1 - store i32 0, ptr %964, align 8, !tbaa !4 - br label %965 - -965: ; preds = %954, %963 +963: ; preds = %952, %954 + %.sink963 = phi i32 [ %961, %954 ], [ 0, %952 ] + %963 = getelementptr inbounds nuw %struct.lua_TValue, ptr %.0729, i64 %indvars.iv + %964 = getelementptr inbounds nuw i8, ptr %963, i64 8 + store i32 %.sink963, ptr %964, align 8, !tbaa !4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.backedge.backedge, label %952, !llvm.loop !87 diff --git a/bench/redis/optimized/redis-check-aof.ll b/bench/redis/optimized/redis-check-aof.ll index f3d5c6bda67..ce0f9105b62 100644 --- a/bench/redis/optimized/redis-check-aof.ll +++ b/bench/redis/optimized/redis-check-aof.ll @@ -258,28 +258,19 @@ define dso_local range(i32 0, 2) i32 @readString(ptr noundef captures(none) %0, readBytes.exit: ; preds = %14 %24 = load ptr, ptr %1, align 8, !tbaa !12 - %25 = getelementptr inbounds nuw i8, ptr %24, i64 %9 + %25 = getelementptr i8, ptr %24, i64 %9 %26 = load i8, ptr %25, align 1 %.not3.i = icmp eq i8 %26, 13 - br i1 %.not3.i, label %.tail.i, label %readBytes.exit._crit_edge + %27 = getelementptr inbounds nuw i8, ptr %25, i64 1 + %28 = load i8, ptr %27, align 1 + %29 = icmp eq i8 %28, 10 + %or.cond24 = select i1 %.not3.i, i1 %29, i1 false + br i1 %or.cond24, label %36, label %readBytes.exit._crit_edge readBytes.exit._crit_edge: ; preds = %readBytes.exit - %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %25, i64 1 - %.pre = load i8, ptr %.phi.trans.insert, align 1, !tbaa !5 - br label %31 - -.tail.i: ; preds = %readBytes.exit - %27 = getelementptr i8, ptr %24, i64 %15 - %28 = getelementptr inbounds i8, ptr %27, i64 -1 - %29 = load i8, ptr %28, align 1 - %30 = icmp eq i8 %29, 10 - br i1 %30, label %39, label %31 - -31: ; preds = %readBytes.exit._crit_edge, %.tail.i - %32 = phi i8 [ %.pre, %readBytes.exit._crit_edge ], [ %29, %.tail.i ] call void @llvm.lifetime.start.p0(ptr nonnull %3) %33 = sext i8 %26 to i32 - %34 = sext i8 %32 to i32 + %34 = sext i8 %28 to i32 %35 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %3, i64 noundef 1024, ptr noundef nonnull @.str.1, i32 noundef %33, i32 noundef %34) #16 %36 = load i64, ptr @epos, align 8, !tbaa !8 %37 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) @error, i64 noundef 1044, ptr noundef nonnull @.str.2, i64 noundef %36, ptr noundef nonnull %3) #16 @@ -289,16 +280,15 @@ readBytes.exit._crit_edge: ; preds = %readBytes.exit store ptr null, ptr %1, align 8, !tbaa !12 br label %43 -39: ; preds = %.tail.i +39: ; preds = %readBytes.exit %40 = load i64, ptr @line, align 8, !tbaa !10 %41 = add nsw i64 %40, 1 store i64 %41, ptr @line, align 8, !tbaa !10 - %42 = getelementptr i8, ptr %24, i64 %9 - store i8 0, ptr %42, align 1, !tbaa !5 - br label %43 + store i8 0, ptr %25, align 1, !tbaa !5 + br label %39 -43: ; preds = %2, %39, %31, %19, %10 - %.0 = phi i32 [ 0, %10 ], [ 1, %39 ], [ 0, %31 ], [ 0, %19 ], [ 0, %2 ] +43: ; preds = %2, %39, %readBytes.exit._crit_edge, %19, %10 + %.0 = phi i32 [ 0, %10 ], [ 1, %36 ], [ 0, %readBytes.exit._crit_edge ], [ 0, %19 ], [ 0, %2 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) ret i32 %.0 } diff --git a/bench/ripgrep-rs/optimized/5ckxrdy9v0i8g3uf.ll b/bench/ripgrep-rs/optimized/5ckxrdy9v0i8g3uf.ll index f7962d927e4..79397bb3553 100644 --- a/bench/ripgrep-rs/optimized/5ckxrdy9v0i8g3uf.ll +++ b/bench/ripgrep-rs/optimized/5ckxrdy9v0i8g3uf.ll @@ -285,7 +285,7 @@ define hidden { i64, i64 } @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$20bina ; Function Attrs: inlinehint nonlazybind uwtable define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17h6a87aff857aa28b1E.llvm.6679066857390535418"(ptr noalias noundef writeonly sret({ ptr, [1 x i64] }) align 8 captures(none) dereferenceable(16) %0, i64 noundef %1, i64 noundef %2) unnamed_addr #4 { %switch = icmp eq i64 %1, 0 - br i1 %switch, label %4, label %12 + br i1 %switch, label %4, label %13 4: ; preds = %3 %5 = icmp ult i64 %2, 10 @@ -296,22 +296,23 @@ define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17h6a87aff857aa28b1 unreachable "_ZN12grep_printer17hyperlink_aliases4find28_$u7b$$u7b$closure$u7d$$u7d$17h797a182f808414daE.llvm.6679066857390535418.exit": ; preds = %4 - %7 = getelementptr inbounds nuw { { ptr, i64 }, { ptr, i64 } }, ptr @anon.0923cb38b7fdc9785e1561170331db22.28.llvm.6679066857390535418, i64 %2, i32 1 - %8 = load ptr, ptr %7, align 8, !nonnull !5, !align !29, !noundef !5 - %9 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %10 = load i64, ptr %9, align 8, !noundef !5 - store ptr %8, ptr %0, align 8 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %10, ptr %11, align 8 - br label %14 - -12: ; preds = %3 - %13 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %2, ptr %13, align 8 + %7 = getelementptr inbounds nuw { { ptr, i64 }, { ptr, i64 } }, ptr @anon.0923cb38b7fdc9785e1561170331db22.28.llvm.6679066857390535418, i64 %2 + %8 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %9 = load ptr, ptr %8, align 8, !nonnull !5, !align !29, !noundef !5 + %10 = getelementptr inbounds nuw i8, ptr %7, i64 24 + %11 = load i64, ptr %10, align 8, !noundef !5 + store ptr %9, ptr %0, align 8 + %12 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %11, ptr %12, align 8 + br label %15 + +13: ; preds = %3 + %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %2, ptr %14, align 8 store ptr null, ptr %0, align 8 br label %14 -14: ; preds = %"_ZN12grep_printer17hyperlink_aliases4find28_$u7b$$u7b$closure$u7d$$u7d$17h797a182f808414daE.llvm.6679066857390535418.exit", %12 +14: ; preds = %"_ZN12grep_printer17hyperlink_aliases4find28_$u7b$$u7b$closure$u7d$$u7d$17h797a182f808414daE.llvm.6679066857390535418.exit", %13 ret void } @@ -353,9 +354,9 @@ define hidden { ptr, i64 } @_ZN12grep_printer17hyperlink_aliases4find17h74de6dce br i1 %19, label %3, label %"_ZN4core6result19Result$LT$T$C$E$GT$3map17h6a87aff857aa28b1E.llvm.6679066857390535418.exit" "_ZN12grep_printer17hyperlink_aliases4find28_$u7b$$u7b$closure$u7d$$u7d$17h797a182f808414daE.llvm.6679066857390535418.exit.i": ; preds = %3 - %20 = getelementptr inbounds nuw { { ptr, i64 }, { ptr, i64 } }, ptr @anon.0923cb38b7fdc9785e1561170331db22.28.llvm.6679066857390535418, i64 %5, i32 1 + %20 = getelementptr inbounds nuw i8, ptr %7, i64 16 %21 = load ptr, ptr %20, align 8, !noalias !82, !nonnull !5, !align !29, !noundef !5 - %22 = getelementptr inbounds nuw i8, ptr %20, i64 8 + %22 = getelementptr inbounds nuw i8, ptr %7, i64 24 %23 = load i64, ptr %22, align 8, !noalias !82, !noundef !5 br label %"_ZN4core6result19Result$LT$T$C$E$GT$3map17h6a87aff857aa28b1E.llvm.6679066857390535418.exit" @@ -370,18 +371,19 @@ define hidden { ptr, i64 } @_ZN12grep_printer17hyperlink_aliases4find17h74de6dce ; Function Attrs: inlinehint nonlazybind uwtable define hidden { ptr, i64 } @"_ZN12grep_printer17hyperlink_aliases4find28_$u7b$$u7b$closure$u7d$$u7d$17h797a182f808414daE.llvm.6679066857390535418"(i64 noundef %0) unnamed_addr #4 { %2 = icmp ult i64 %0, 10 - br i1 %2, label %3, label %10, !prof !63 + br i1 %2, label %3, label %11, !prof !63 3: ; preds = %1 - %4 = getelementptr inbounds nuw { { ptr, i64 }, { ptr, i64 } }, ptr @anon.0923cb38b7fdc9785e1561170331db22.28.llvm.6679066857390535418, i64 %0, i32 1 - %5 = load ptr, ptr %4, align 8, !nonnull !5, !align !29, !noundef !5 - %6 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %7 = load i64, ptr %6, align 8, !noundef !5 - %8 = insertvalue { ptr, i64 } poison, ptr %5, 0 - %9 = insertvalue { ptr, i64 } %8, i64 %7, 1 - ret { ptr, i64 } %9 - -10: ; preds = %1 + %4 = getelementptr inbounds nuw { { ptr, i64 }, { ptr, i64 } }, ptr @anon.0923cb38b7fdc9785e1561170331db22.28.llvm.6679066857390535418, i64 %0 + %5 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %6 = load ptr, ptr %5, align 8, !nonnull !5, !align !29, !noundef !5 + %7 = getelementptr inbounds nuw i8, ptr %4, i64 24 + %8 = load i64, ptr %7, align 8, !noundef !5 + %9 = insertvalue { ptr, i64 } poison, ptr %6, 0 + %10 = insertvalue { ptr, i64 } %9, i64 %8, 1 + ret { ptr, i64 } %10 + +11: ; preds = %1 tail call void @_ZN4core9panicking18panic_bounds_check17he5254f424ac3a4c4E(i64 noundef %0, i64 noundef 10, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.0923cb38b7fdc9785e1561170331db22.30.llvm.6679066857390535418) #15 unreachable } diff --git a/bench/ruby/optimized/file.ll b/bench/ruby/optimized/file.ll index 293db9de477..cb9baef349a 100644 --- a/bench/ruby/optimized/file.ll +++ b/bench/ruby/optimized/file.ll @@ -11483,7 +11483,7 @@ define internal fastcc range(i64 1, 0) i64 @apply2files(ptr noundef %0, i32 noun br label %26 26: ; preds = %.lr.ph, %RSTRING_PTR.exit - %storemerge32 = phi i32 [ 0, %.lr.ph ], [ %53, %RSTRING_PTR.exit ] + %storemerge32 = phi i32 [ 0, %.lr.ph ], [ %52, %RSTRING_PTR.exit ] %27 = sext i32 %storemerge32 to i64 %28 = getelementptr i64, ptr %2, i64 %27 %29 = load i64, ptr %28, align 8, !tbaa !12 @@ -11541,14 +11541,12 @@ RSTRING_PTR.exit: ; preds = %rb_get_path.exit, % %49 = sext i32 %48 to i64 %50 = getelementptr %struct.apply_filename, ptr %25, i64 %49 store ptr %.sroa.2.0.i, ptr %50, align 8, !tbaa !337 - %.idx = shl nsw i64 %49, 4 - %51 = getelementptr i8, ptr %25, i64 %.idx - %52 = getelementptr i8, ptr %51, i64 8 - store i64 %42, ptr %52, align 8, !tbaa !339 - %53 = add i32 %48, 1 - store i32 %53, ptr %24, align 8, !tbaa !26 - %54 = icmp slt i32 %53, %1 - br i1 %54, label %26, label %._crit_edge, !llvm.loop !340 + %51 = getelementptr inbounds nuw i8, ptr %50, i64 8 + store i64 %42, ptr %51, align 8, !tbaa !339 + %52 = add i32 %48, 1 + store i32 %52, ptr %24, align 8, !tbaa !26 + %53 = icmp slt i32 %52, %1 + br i1 %53, label %26, label %._crit_edge, !llvm.loop !340 ._crit_edge: ; preds = %RSTRING_PTR.exit, %16 %55 = phi ptr [ %18, %16 ], [ %23, %RSTRING_PTR.exit ] diff --git a/bench/ruby/optimized/re.ll b/bench/ruby/optimized/re.ll index d6ab5652461..9eac6632799 100644 --- a/bench/ruby/optimized/re.ll +++ b/bench/ruby/optimized/re.ll @@ -6310,23 +6310,24 @@ backref_number_check.exit: ; preds = %10 rb_long2num_inline.exit: ; preds = %29, %32 %34 = phi ptr [ %25, %29 ], [ %.pre, %32 ] %.0.i = phi i64 [ %31, %29 ], [ %33, %32 ] - %35 = getelementptr %struct.rmatch_offset, ptr %34, i64 %17, i32 1 - %36 = load i64, ptr %35, align 8, !tbaa !232 - %37 = add i64 %36, 4611686018427387904 - %or.cond.i14 = icmp sgt i64 %37, -1 - br i1 %or.cond.i14, label %38, label %41 - -38: ; preds = %rb_long2num_inline.exit - %39 = shl nsw i64 %36, 1 - %40 = or disjoint i64 %39, 1 + %35 = getelementptr %struct.rmatch_offset, ptr %34, i64 %17 + %36 = getelementptr inbounds nuw i8, ptr %35, i64 8 + %37 = load i64, ptr %36, align 8, !tbaa !232 + %38 = add i64 %37, 4611686018427387904 + %or.cond.i14 = icmp sgt i64 %38, -1 + br i1 %or.cond.i14, label %39, label %42 + +39:; preds = %rb_long2num_inline.exit + %40 = shl nsw i64 %37, 1 + %41 = or disjoint i64 %40, 1 br label %rb_long2num_inline.exit16 41: ; preds = %rb_long2num_inline.exit - %42 = tail call i64 @rb_int2big(i64 noundef %36) #29 + %42 = tail call i64 @rb_int2big(i64 noundef %37) #29 br label %rb_long2num_inline.exit16 -rb_long2num_inline.exit16: ; preds = %38, %41 - %.0.i15 = phi i64 [ %40, %38 ], [ %42, %41 ] +rb_long2num_inline.exit16: ; preds = %39, %41 + %.0.i15 = phi i64 [ %41, %39 ], [ %42, %42 ] %43 = tail call i64 @rb_assoc_new(i64 noundef %.0.i, i64 noundef %.0.i15) #29 br label %44 @@ -6642,23 +6643,24 @@ backref_number_check.exit: ; preds = %10 tail call fastcc void @update_char_offset(i64 noundef %0) %22 = getelementptr i8, ptr %4, i64 56 %23 = load ptr, ptr %22, align 8, !tbaa !224 - %24 = getelementptr %struct.rmatch_offset, ptr %23, i64 %17, i32 1 - %25 = load i64, ptr %24, align 8, !tbaa !232 - %26 = add i64 %25, 4611686018427387904 - %or.cond.i = icmp sgt i64 %26, -1 - br i1 %or.cond.i, label %27, label %30 + %24 = getelementptr %struct.rmatch_offset, ptr %23, i64 %17 + %25 = getelementptr inbounds nuw i8, ptr %24, i64 8 + %26 = load i64, ptr %25, align 8, !tbaa !232 + %27 = add i64 %26, 4611686018427387904 + %or.cond.i = icmp sgt i64 %27, -1 + br i1 %or.cond.i, label %28, label %31 27: ; preds = %21 - %28 = shl nsw i64 %25, 1 + %28 = shl nsw i64 %26, 1 %29 = or disjoint i64 %28, 1 br label %rb_long2num_inline.exit 30: ; preds = %21 - %31 = tail call i64 @rb_int2big(i64 noundef %25) #29 + %31 = tail call i64 @rb_int2big(i64 noundef %26) #29 br label %rb_long2num_inline.exit rb_long2num_inline.exit: ; preds = %30, %27, %backref_number_check.exit - %.0 = phi i64 [ 4, %backref_number_check.exit ], [ %29, %27 ], [ %31, %30 ] + %.0 = phi i64 [ 4, %backref_number_check.exit ], [ %29, %28 ], [ %31, %31 ] ret i64 %.0 } @@ -10985,7 +10987,7 @@ define internal fastcc void @update_char_offset(i64 noundef %0) unnamed_addr #1 store i64 %28, ptr %29, align 8, !tbaa !230 %30 = getelementptr i64, ptr %25, i64 %indvars.iv127 %31 = load i64, ptr %30, align 8, !tbaa !18 - %32 = getelementptr %struct.rmatch_offset, ptr %23, i64 %indvars.iv127, i32 1 + %32 = getelementptr inbounds nuw i8, ptr %29, i64 8 store i64 %31, ptr %32, align 8, !tbaa !232 %indvars.iv.next128 = add nuw nsw i64 %indvars.iv127, 1 %exitcond131.not = icmp eq i64 %indvars.iv.next128, %wide.trip.count130 @@ -11179,7 +11181,7 @@ bsearch.exit94: ; preds = %110 %115 = getelementptr i8, ptr %39, i64 %105 %116 = getelementptr inbounds nuw i8, ptr %115, i64 8 %117 = load i64, ptr %116, align 8, !tbaa !298 - %118 = getelementptr %struct.rmatch_offset, ptr %98, i64 %indvars.iv122, i32 1 + %118 = getelementptr inbounds nuw i8, ptr %99, i64 8 store i64 %117, ptr %118, align 8, !tbaa !232 br label %119 @@ -11724,7 +11726,7 @@ define internal noundef i32 @match_inspect_name_iter(ptr noundef %0, ptr noundef %14 = sext i32 %13 to i64 %15 = getelementptr %struct.backref_name_tag, ptr %5, i64 %14 store ptr %0, ptr %15, align 8, !tbaa !239 - %16 = getelementptr %struct.backref_name_tag, ptr %5, i64 %14, i32 1 + %16 = getelementptr inbounds nuw i8, ptr %15, i64 8 store i64 %10, ptr %16, align 8, !tbaa !241 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count diff --git a/bench/rust-analyzer-rs/optimized/4yvp88cqyyaanzkc.ll b/bench/rust-analyzer-rs/optimized/4yvp88cqyyaanzkc.ll index e9f2b51fff9..8fbcd8f8a67 100644 --- a/bench/rust-analyzer-rs/optimized/4yvp88cqyyaanzkc.ll +++ b/bench/rust-analyzer-rs/optimized/4yvp88cqyyaanzkc.ll @@ -6979,8 +6979,8 @@ define void @"_ZN114_$LT$span..SpanData$LT$span..hygiene..SyntaxContextId$GT$$u2 %.not.i.not = icmp ugt i64 %6, %4 %7 = getelementptr inbounds nuw i8, ptr %1, i64 8 %8 = load ptr, ptr %7, align 8, !alias.scope !2385, !nonnull !23 - %9 = getelementptr inbounds nuw { i64, { i32, { i32, i32 }, { i32, i32 } }, {}, [4 x i8] }, ptr %8, i64 %4, i32 1 - br i1 %.not.i.not, label %13, label %10 + %9 = getelementptr inbounds nuw { i64, { i32, { i32, i32 }, { i32, i32 } }, {}, [4 x i8] }, ptr %8, i64 %4 + br i1 %.not.i.not, label %"_ZN93_$LT$indexmap..set..IndexSet$LT$T$C$S$GT$$u20$as$u20$core..ops..index..Index$LT$usize$GT$$GT$5index17h5aa218c18d888b21E.exit", label %10 10: ; preds = %3 %.not.i.not.i.not = icmp eq i64 %6, 0 @@ -6990,12 +6990,9 @@ define void @"_ZN114_$LT$span..SpanData$LT$span..hygiene..SyntaxContextId$GT$$u2 tail call void @_ZN4core6option13expect_failed17hea24986454718b4fE(ptr noalias noundef nonnull readonly align 1 @anon.6d440324aa0d31fec9489b428205da9e.72.llvm.1590763243138948660, i64 noundef 29, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.82330f67cb894bb82cb1b85bd5bbfa08.47.llvm.6093752533286553222) #31, !noalias !2388 unreachable -"_ZN93_$LT$indexmap..set..IndexSet$LT$T$C$S$GT$$u20$as$u20$core..ops..index..Index$LT$usize$GT$$GT$5index17h5aa218c18d888b21E.exit": ; preds = %10 - %12 = getelementptr inbounds nuw i8, ptr %8, i64 8 - br label %13 - -13: ; preds = %3, %"_ZN93_$LT$indexmap..set..IndexSet$LT$T$C$S$GT$$u20$as$u20$core..ops..index..Index$LT$usize$GT$$GT$5index17h5aa218c18d888b21E.exit" - %.0 = phi ptr [ %12, %"_ZN93_$LT$indexmap..set..IndexSet$LT$T$C$S$GT$$u20$as$u20$core..ops..index..Index$LT$usize$GT$$GT$5index17h5aa218c18d888b21E.exit" ], [ %9, %3 ] +"_ZN93_$LT$indexmap..set..IndexSet$LT$T$C$S$GT$$u20$as$u20$core..ops..index..Index$LT$usize$GT$$GT$5index17h5aa218c18d888b21E.exit": ; preds = %10, %3 + %.pn = phi ptr [ %9, %3 ], [ %8, %10 ] + %.0 = getelementptr inbounds nuw i8, ptr %.pn, i64 8 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %0, ptr noundef nonnull align 4 dereferenceable(20) %.0, i64 20, i1 false) ret void } diff --git a/bench/rustfmt-rs/optimized/3n0n7c4xrusd0kzl.ll b/bench/rustfmt-rs/optimized/3n0n7c4xrusd0kzl.ll index ed36d5ed334..64a7de8630c 100644 --- a/bench/rustfmt-rs/optimized/3n0n7c4xrusd0kzl.ll +++ b/bench/rustfmt-rs/optimized/3n0n7c4xrusd0kzl.ll @@ -11632,7 +11632,8 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. %15 = phi i64 [ %17, %.lr.ph.i.i.i.i.i ], [ %13, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i" ] %.sroa.0.06.i.i.i.i.i = phi i64 [ %16, %.lr.ph.i.i.i.i.i ], [ %1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i" ] %16 = add nuw i64 %.sroa.0.06.i.i.i.i.i, 1 - %.sroa.0.sroa.4.0..sroa_idx.i.i.i.i.i.i = getelementptr inbounds { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %12, i64 %15, i32 1 + %.sroa.0.sroa.4.0..sroa_idx.i.i.i.i.i.i = getelementptr inbounds { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %12, i64 %15 + %.sroa.0.sroa.4.0..sroa_idx.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %17, i64 32 store i8 0, ptr %.sroa.0.sroa.4.0..sroa_idx.i.i.i.i.i.i, align 8, !noalias !2143 %17 = add i64 %15, 1 %exitcond.not.i.i.i.i.i = icmp eq i64 %16, %2 @@ -22645,7 +22646,8 @@ define hidden void @"_ZN98_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..s %15 = phi i64 [ %17, %.lr.ph.i.i.i.i.i.i ], [ %13, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i.i" ] %.sroa.0.06.i.i.i.i.i.i = phi i64 [ %16, %.lr.ph.i.i.i.i.i.i ], [ %1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i.i" ] %16 = add nuw i64 %.sroa.0.06.i.i.i.i.i.i, 1 - %.sroa.0.sroa.4.0..sroa_idx.i.i.i.i.i.i.i = getelementptr inbounds { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %12, i64 %15, i32 1 + %.sroa.0.sroa.4.0..sroa_idx.i.i.i.i.i.i.i = getelementptr inbounds { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %12, i64 %15 + %.sroa.0.sroa.4.0..sroa_idx.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %17, i64 32 store i8 0, ptr %.sroa.0.sroa.4.0..sroa_idx.i.i.i.i.i.i.i, align 8, !noalias !4169 %17 = add i64 %15, 1 %exitcond.not.i.i.i.i.i.i = icmp eq i64 %16, %2 diff --git a/bench/salsa-rs/optimized/0re58vbodfo9fw2ucr33a7vsy.ll b/bench/salsa-rs/optimized/0re58vbodfo9fw2ucr33a7vsy.ll index 6e2dd6282ca..3eee7b66fce 100644 --- a/bench/salsa-rs/optimized/0re58vbodfo9fw2ucr33a7vsy.ll +++ b/bench/salsa-rs/optimized/0re58vbodfo9fw2ucr33a7vsy.ll @@ -1799,50 +1799,52 @@ define hidden void @"_ZN4core3ptr78drop_in_place$LT$alloc..vec..Vec$LT$salsa..ac br i1 %4, label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h75dc4634d20f063fE.exit", label %.lr.ph.i.i .lr.ph.i.i: ; preds = %1, %"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit.i.i" - %.sroa.0.09.i.i = phi i64 [ %5, %"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit.i.i" ], [ 0, %1 ] - %5 = add nuw i64 %.sroa.0.09.i.i, 1 - %6 = getelementptr inbounds nuw { { i32, i32 }, i64, { { ptr, {} } }, i32, i8, [3 x i8] }, ptr %.val, i64 %.sroa.0.09.i.i, i32 2 - %7 = load ptr, ptr %6, align 8, !alias.scope !274, !nonnull !10, !noundef !10 - %8 = icmp eq ptr %7, @_ZN8thin_vec12EMPTY_HEADER17h7d37299671e5afb2E - br i1 %8, label %"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit.i.i", label %9, !prof !138 - -9: ; preds = %.lr.ph.i.i - invoke void @"_ZN68_$LT$thin_vec..ThinVec$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop18drop_non_singleton17h56dbbea0c991fbdfE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %6) - to label %"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit.i.i" unwind label %11 - -"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit.i.i": ; preds = %9, %.lr.ph.i.i - %10 = icmp eq i64 %5, %.val1 - br i1 %10, label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h75dc4634d20f063fE.exit", label %.lr.ph.i.i - -11: ; preds = %9 - %12 = landingpad { ptr, i32 } + %.sroa.0.09.i.i = phi i64 [ %6, %"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit.i.i" ], [ 0, %1 ] + %5 = getelementptr inbounds nuw { { i32, i32 }, i64, { { ptr, {} } }, i32, i8, [3 x i8] }, ptr %.val, i64 %.sroa.0.09.i.i + %6 = add nuw i64 %.sroa.0.09.i.i, 1 + %7 = getelementptr inbounds nuw i8, ptr %5, i64 16 + %8 = load ptr, ptr %7, align 8, !alias.scope !274, !nonnull !10, !noundef !10 + %9 = icmp eq ptr %8, @_ZN8thin_vec12EMPTY_HEADER17h7d37299671e5afb2E + br i1 %9, label %"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit.i.i", label %10, !prof !138 + +10:; preds = %.lr.ph.i.i + invoke void @"_ZN68_$LT$thin_vec..ThinVec$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop18drop_non_singleton17h56dbbea0c991fbdfE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %7) + to label %"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit.i.i" unwind label %12 + +"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit.i.i":; preds = %10, %.lr.ph.i.i + %11 = icmp eq i64 %6, %.val1 + br i1 %11, label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h75dc4634d20f063fE.exit", label %.lr.ph.i.i + +12:; preds = %10 + %13 = landingpad { ptr, i32 } cleanup - %13 = icmp eq i64 %5, %.val1 + %13 = icmp eq i64 %6, %.val1 br i1 %13, label %.body, label %.lr.ph12.i.i -.lr.ph12.i.i: ; preds = %11, %"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit8.i.i" - %.sroa.0.110.i.i = phi i64 [ %14, %"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit8.i.i" ], [ %5, %11 ] - %14 = add i64 %.sroa.0.110.i.i, 1 - %15 = getelementptr inbounds nuw { { i32, i32 }, i64, { { ptr, {} } }, i32, i8, [3 x i8] }, ptr %.val, i64 %.sroa.0.110.i.i, i32 2 - %16 = load ptr, ptr %15, align 8, !alias.scope !285, !nonnull !10, !noundef !10 - %17 = icmp eq ptr %16, @_ZN8thin_vec12EMPTY_HEADER17h7d37299671e5afb2E - br i1 %17, label %"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit8.i.i", label %18, !prof !138 +.lr.ph12.i.i: ; preds = %12, %"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit8.i.i" + %.sroa.0.110.i.i = phi i64 [ %16, %"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit8.i.i" ], [ %6, %12 ] + %15 = getelementptr inbounds nuw { { i32, i32 }, i64, { { ptr, {} } }, i32, i8, [3 x i8] }, ptr %.val, i64 %.sroa.0.110.i.i + %16 = add i64 %.sroa.0.110.i.i, 1 + %17 = getelementptr inbounds nuw i8, ptr %15, i64 16 + %18 = load ptr, ptr %17, align 8, !alias.scope !285, !nonnull !10, !noundef !10 + %19 = icmp eq ptr %18, @_ZN8thin_vec12EMPTY_HEADER17h7d37299671e5afb2E + br i1 %19, label %"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit8.i.i", label %20, !prof !138 -18: ; preds = %.lr.ph12.i.i - invoke void @"_ZN68_$LT$thin_vec..ThinVec$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop18drop_non_singleton17h56dbbea0c991fbdfE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %15) - to label %"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit8.i.i" unwind label %20 +20:; preds = %.lr.ph12.i.i + invoke void @"_ZN68_$LT$thin_vec..ThinVec$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop18drop_non_singleton17h56dbbea0c991fbdfE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %17) + to label %"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit8.i.i" unwind label %22 -"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit8.i.i": ; preds = %18, %.lr.ph12.i.i - %19 = icmp eq i64 %14, %.val1 - br i1 %19, label %.body, label %.lr.ph12.i.i +"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit8.i.i":; preds = %20, %.lr.ph12.i.i + %21 = icmp eq i64 %16, %.val1 + br i1 %21, label %.body, label %.lr.ph12.i.i -20: ; preds = %18 - %21 = landingpad { ptr, i32 } +22:; preds = %20 + %23 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #17 unreachable -.body: ; preds = %"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit8.i.i", %11 +.body: ; preds = %"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit8.i.i", %12 invoke void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17ha2dadf1cb820e75eE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %0, i64 noundef 8, i64 noundef 32) to label %"_ZN4core3ptr85drop_in_place$LT$alloc..raw_vec..RawVec$LT$salsa..active_query..CapturedQuery$GT$$GT$17h5b91a78bedc50687E.exit" unwind label %22 @@ -1857,7 +1859,7 @@ define hidden void @"_ZN4core3ptr78drop_in_place$LT$alloc..vec..Vec$LT$salsa..ac unreachable "_ZN4core3ptr85drop_in_place$LT$alloc..raw_vec..RawVec$LT$salsa..active_query..CapturedQuery$GT$$GT$17h5b91a78bedc50687E.exit": ; preds = %.body - resume { ptr, i32 } %12 + resume { ptr, i32 } %13 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(readwrite, inaccessiblemem: none) uwtable diff --git a/bench/sdl/optimized/SDL_hidapihaptic_lg4ff.ll b/bench/sdl/optimized/SDL_hidapihaptic_lg4ff.ll index ad9156c6236..19dedd992b4 100644 --- a/bench/sdl/optimized/SDL_hidapihaptic_lg4ff.ll +++ b/bench/sdl/optimized/SDL_hidapihaptic_lg4ff.ll @@ -269,8 +269,9 @@ define internal void @SDL_HIDAPI_HapticDriverLg4ff_Close(ptr noundef readonly ca 6: ; preds = %6, %1 %indvars.iv.i = phi i64 [ 0, %1 ], [ %indvars.iv.next.i, %6 ] - %7 = getelementptr inbounds nuw %struct.lg4ff_effect_state, ptr %3, i64 %indvars.iv.i, i32 5 - store i32 0, ptr %7, align 8 + %7 = getelementptr inbounds nuw %struct.lg4ff_effect_state, ptr %3, i64 %indvars.iv.i + %8 = getelementptr inbounds nuw i8, ptr %7, i64 104 + store i32 0, ptr %8, align 8 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 16 br i1 %exitcond.not.i, label %SDL_HIDAPI_HapticDriverLg4ff_StopEffects.exit, label %6, !llvm.loop !6 @@ -586,7 +587,7 @@ lg4ff_effect_slot_valid_active.exit.thread.i: ; preds = %lg4ff_effect_slot_v 14: ; preds = %lg4ff_effect_slot_valid_active.exit.i %15 = tail call i64 @SDL_GetTicks_REAL() #8 - %16 = getelementptr inbounds nuw %struct.lg4ff_effect_state, ptr %4, i64 %7, i32 5 + %16 = getelementptr inbounds nuw i8, ptr %8, i64 104 %17 = load i32, ptr %16, align 8 %18 = and i32 %17, 1 %.not14.i.i = icmp eq i32 %18, 0 @@ -655,14 +656,14 @@ define internal zeroext i1 @SDL_HIDAPI_HapticDriverLg4ff_GetEffectStatus(ptr nou lg4ff_effect_slot_valid_active.exit: ; preds = %2 %7 = zext nneg i32 %1 to i64 - %8 = getelementptr inbounds nuw %struct.lg4ff_effect_state, ptr %4, i64 %7 + %8 = getelementptr %struct.lg4ff_effect_state, ptr %4, i64 %7 %9 = getelementptr inbounds nuw i8, ptr %8, i64 156 %10 = load i8, ptr %9, align 4, !range !7, !noundef !8 %11 = trunc nuw i8 %10 to i1 br i1 %11, label %12, label %lg4ff_effect_slot_valid_active.exit.thread 12: ; preds = %lg4ff_effect_slot_valid_active.exit - %13 = getelementptr %struct.lg4ff_effect_state, ptr %4, i64 %7, i32 5 + %13 = getelementptr i8, ptr %8, i64 104 %14 = load i32, ptr %13, align 8 %15 = and i32 %14, 1 %.not = icmp ne i32 %15, 0 @@ -847,8 +848,9 @@ define internal noundef zeroext i1 @SDL_HIDAPI_HapticDriverLg4ff_StopEffects(ptr 6: ; preds = %1, %6 %indvars.iv = phi i64 [ 0, %1 ], [ %indvars.iv.next, %6 ] - %7 = getelementptr inbounds nuw %struct.lg4ff_effect_state, ptr %3, i64 %indvars.iv, i32 5 - store i32 0, ptr %7, align 8 + %7 = getelementptr inbounds nuw %struct.lg4ff_effect_state, ptr %3, i64 %indvars.iv + %8 = getelementptr inbounds nuw i8, ptr %7, i64 104 + store i32 0, ptr %8, align 8 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 16 br i1 %exitcond.not, label %8, label %6, !llvm.loop !6 diff --git a/bench/sdl/optimized/SDL_keysym_to_keycode.ll b/bench/sdl/optimized/SDL_keysym_to_keycode.ll index 0e0f44b3d84..2dcb574f55c 100644 --- a/bench/sdl/optimized/SDL_keysym_to_keycode.ll +++ b/bench/sdl/optimized/SDL_keysym_to_keycode.ll @@ -26,8 +26,9 @@ define hidden i32 @SDL_GetKeyCodeFromKeySym(i32 noundef %0, i32 noundef %1, i16 br i1 %8, label %.thread, label %5 .thread: ; preds = %.preheader - %9 = getelementptr inbounds nuw %struct.anon, ptr @keysym_to_keycode_table, i64 %indvars.iv, i32 1 - %10 = load i32, ptr %9, align 4 + %9 = getelementptr inbounds nuw %struct.anon, ptr @keysym_to_keycode_table, i64 %indvars.iv + %10 = getelementptr inbounds nuw i8, ptr %9, i64 4 + %11 = load i32, ptr %10, align 4 br label %.critedge 11: ; preds = %5 @@ -40,7 +41,7 @@ define hidden i32 @SDL_GetKeyCodeFromKeySym(i32 noundef %0, i32 noundef %1, i16 br label %.critedge .critedge: ; preds = %.thread, %13, %11, %3 - %.1 = phi i32 [ %14, %13 ], [ 0, %11 ], [ %4, %3 ], [ %10, %.thread ] + %.1 = phi i32 [ %14, %14 ], [ 0, %12 ], [ %4, %3 ], [ %11, %.thread ] ret i32 %.1 } diff --git a/bench/sentencepiece/optimized/bpe_model_trainer.ll b/bench/sentencepiece/optimized/bpe_model_trainer.ll index 29c5999c720..dcb3e404d24 100644 --- a/bench/sentencepiece/optimized/bpe_model_trainer.ll +++ b/bench/sentencepiece/optimized/bpe_model_trainer.ll @@ -1434,8 +1434,8 @@ define void @_ZNK13sentencepiece3bpe7Trainer11ComputeFreqEPNS1_6SymbolE(ptr noun %12 = getelementptr inbounds nuw i8, ptr %0, i64 88 br label %13 -13: ; preds = %.lr.ph, %42 - %.sroa.025.030 = phi ptr [ %7, %.lr.ph ], [ %.sroa.025.1, %42 ] +13: ; preds = %.lr.ph, %43 + %.sroa.025.030 = phi ptr [ %7, %.lr.ph ], [ %.sroa.025.1, %43 ] %14 = getelementptr inbounds nuw i8, ptr %.sroa.025.030, i64 32 %15 = load i64, ptr %14, align 8, !tbaa !24 %16 = load ptr, ptr %1, align 8, !tbaa !98 @@ -1465,24 +1465,25 @@ define void @_ZNK13sentencepiece3bpe7Trainer11ComputeFreqEPNS1_6SymbolE(ptr noun %33 = load i64, ptr %11, align 8, !tbaa !45 %34 = add i64 %33, -1 store i64 %34, ptr %11, align 8, !tbaa !45 - br label %42 + br label %43 35: ; preds = %25 %36 = load ptr, ptr %12, align 8, !tbaa !104 - %37 = getelementptr inbounds nuw %"struct.std::pair.70", ptr %36, i64 %17, i32 1 - %38 = load i64, ptr %37, align 8, !tbaa !107 - %39 = load i64, ptr %3, align 8, !tbaa !68 - %40 = add i64 %39, %38 - store i64 %40, ptr %3, align 8, !tbaa !68 - %41 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.025.030) #29 - br label %42 - -42: ; preds = %35, %30 - %.sroa.025.1 = phi ptr [ %41, %35 ], [ %31, %30 ] + %37 = getelementptr inbounds nuw %"struct.std::pair.70", ptr %36, i64 %17 + %38 = getelementptr inbounds nuw i8, ptr %37, i64 32 + %39 = load i64, ptr %38, align 8, !tbaa !107 + %40 = load i64, ptr %3, align 8, !tbaa !68 + %41 = add i64 %40, %39 + store i64 %41, ptr %3, align 8, !tbaa !68 + %42 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.025.030) #29 + br label %43 + +43: ; preds = %35, %30 + %.sroa.025.1 = phi ptr [ %42, %35 ], [ %31, %30 ] %.not28 = icmp eq ptr %.sroa.025.1, %8 br i1 %.not28, label %.loopexit, label %13, !llvm.loop !112 -.loopexit: ; preds = %42, %5, %2 +.loopexit: ; preds = %43, %5, %2 ret void } diff --git a/bench/smol-rs/optimized/45vbdutx5dtz1hlf.ll b/bench/smol-rs/optimized/45vbdutx5dtz1hlf.ll index 67a084749b9..9b42298b6b8 100644 --- a/bench/smol-rs/optimized/45vbdutx5dtz1hlf.ll +++ b/bench/smol-rs/optimized/45vbdutx5dtz1hlf.ll @@ -8999,16 +8999,17 @@ define hidden void @"_ZN85_$LT$concurrent_queue..bounded..Bounded$LT$T$GT$$u20$a br i1 %36, label %37, label %75, !prof !2220 37: ; preds = %.lr.ph.i - %38 = getelementptr inbounds { { i64 }, ptr }, ptr %31, i64 %.0.i, i32 1 + %38 = getelementptr inbounds { { i64 }, ptr }, ptr %31, i64 %.0.i + %39 = getelementptr inbounds nuw i8, ptr %38, i64 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !2221) tail call void @llvm.experimental.noalias.scope.decl(metadata !2224) - %39 = load ptr, ptr %38, align 8, !alias.scope !2227, !noalias !2217, !nonnull !5, !noundef !5 + %39 = load ptr, ptr %39, align 8, !alias.scope !2227, !noalias !2217, !nonnull !5, !noundef !5 %40 = getelementptr inbounds nuw i8, ptr %39, i64 8 %41 = load atomic i64, ptr %40 acquire, align 8, !noalias !2228 br label %42 42: ; preds = %45, %37 - %.0.i.i.i = phi i64 [ %41, %37 ], [ %.sroa.07.0.i.i.i.i, %45 ] + %.0.i.i.i = phi i64 [ %41, %37 ], [ %.sroa.07.0.i.i.i.i, %46 ] %43 = and i64 %.0.i.i.i, 12 %44 = icmp eq i64 %43, 0 br i1 %44, label %45, label %48 @@ -9024,7 +9025,7 @@ define hidden void @"_ZN85_$LT$concurrent_queue..bounded..Bounded$LT$T$GT$$u20$a %49 = load ptr, ptr %39, align 8, !noalias !2228, !nonnull !5, !align !4, !noundef !5 %50 = getelementptr inbounds nuw i8, ptr %49, i64 8 %51 = load ptr, ptr %50, align 8, !noalias !2228, !nonnull !5, !noundef !5 - tail call void %51(ptr noundef nonnull %39), !noalias !2228 + tail call void %52(ptr noundef nonnull %39), !noalias !2228 %52 = atomicrmw and ptr %40, i64 -2 acq_rel, align 8, !noalias !2228 %53 = and i64 %52, 32 %54 = icmp eq i64 %53, 0 @@ -9050,7 +9051,7 @@ define hidden void @"_ZN85_$LT$concurrent_queue..bounded..Bounded$LT$T$GT$$u20$a tail call void @llvm.experimental.noalias.scope.decl(metadata !2234) %66 = getelementptr inbounds nuw i8, ptr %61, i64 8 %67 = load ptr, ptr %66, align 8, !alias.scope !2237, !noalias !2240, !nonnull !5, !noundef !5 - invoke void %67(ptr noundef %63) + invoke void %68(ptr noundef %63) to label %"_ZN4core3ptr51drop_in_place$LT$async_task..runnable..Runnable$GT$17h41e61eb678c80758E.exit.i" unwind label %68, !noalias !2241 common.resume.i.i.i.i: ; preds = %68 @@ -9072,7 +9073,7 @@ common.resume.i.i.i.i: ; preds = %68 %72 = load ptr, ptr %39, align 8, !noalias !2228, !nonnull !5, !align !4, !noundef !5 %73 = getelementptr inbounds nuw i8, ptr %72, i64 24 %74 = load ptr, ptr %73, align 8, !noalias !2228, !nonnull !5, !noundef !5 - tail call void %74(ptr noundef nonnull %39), !noalias !2228 + tail call void %75(ptr noundef nonnull %39), !noalias !2228 %exitcond.not.i = icmp eq i64 %32, %.08.i br i1 %exitcond.not.i, label %"_ZN85_$LT$concurrent_queue..bounded..Bounded$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17h8fcc4ca0ba26d37cE.exit", label %.lr.ph.i diff --git a/bench/stb/optimized/stb_include.ll b/bench/stb/optimized/stb_include.ll index 253cc67b0dd..80092e06504 100644 --- a/bench/stb/optimized/stb_include.ll +++ b/bench/stb/optimized/stb_include.ll @@ -97,9 +97,10 @@ define void @stb_include_free_includes(ptr noundef captures(none) %0, i32 nounde .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] - %4 = getelementptr inbounds nuw %struct.include_info, ptr %0, i64 %indvars.iv, i32 2 - %5 = load ptr, ptr %4, align 8, !tbaa !14 - tail call void @free(ptr noundef %5) #16 + %4 = getelementptr inbounds nuw %struct.include_info, ptr %0, i64 %indvars.iv + %5 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %6 = load ptr, ptr %5, align 8, !tbaa !14 + tail call void @free(ptr noundef %6) #16 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !16 @@ -438,7 +439,7 @@ stb_include_itoa.exit: ; preds = %stb_include_itoa.ex %strlen53 = call i64 @strlen(ptr nonnull dereferenceable(1) %7) %endptr54 = getelementptr inbounds i8, ptr %7, i64 %strlen53 store i16 34, ptr %endptr54, align 1 - %23 = getelementptr inbounds nuw %struct.include_info, ptr %.pre, i64 %indvars.iv, i32 2 + %23 = getelementptr inbounds nuw i8, ptr %16, i64 8 %24 = load ptr, ptr %23, align 8, !tbaa !14 %25 = icmp eq ptr %24, null br i1 %25, label %28, label %26 @@ -504,9 +505,10 @@ stb_include_file.exit: ; preds = %39 .lr.ph.i: ; preds = %.lr.ph.i.preheader, %.lr.ph.i %indvars.iv.i65 = phi i64 [ %indvars.iv.next.i66, %.lr.ph.i ], [ 0, %.lr.ph.i.preheader ] - %46 = getelementptr inbounds nuw %struct.include_info, ptr %.pre, i64 %indvars.iv.i65, i32 2 - %47 = load ptr, ptr %46, align 8, !tbaa !14 - call void @free(ptr noundef %47) #16 + %46 = getelementptr inbounds nuw %struct.include_info, ptr %.pre, i64 %indvars.iv.i65 + %47 = getelementptr inbounds nuw i8, ptr %46, i64 8 + %48 = load ptr, ptr %47, align 8, !tbaa !14 + call void @free(ptr noundef %48) #16 %indvars.iv.next.i66 = add nuw nsw i64 %indvars.iv.i65, 1 %exitcond.not.i67 = icmp eq i64 %indvars.iv.next.i66, %wide.trip.count br i1 %exitcond.not.i67, label %.thread, label %.lr.ph.i, !llvm.loop !16 @@ -521,18 +523,18 @@ stb_include_file.exit: ; preds = %39 br label %53 53: ; preds = %48, %33, %34 - %.1 = phi i64 [ %30, %33 ], [ %36, %34 ], [ %50, %48 ] - %.145 = phi ptr [ %31, %33 ], [ %37, %34 ], [ %51, %48 ] + %.1 = phi i64 [ %30, %33 ], [ %36, %34 ], [ %50, %49 ] + %.145 = phi ptr [ %31, %33 ], [ %37, %34 ], [ %51, %49 ] store i64 9118724144243466, ptr %7, align 16 - %54 = getelementptr inbounds nuw %struct.include_info, ptr %.pre, i64 %indvars.iv, i32 3 + %54 = getelementptr inbounds nuw i8, ptr %16, i64 16 %55 = load i32, ptr %54, align 8, !tbaa !15 store i64 2314885530818453536, ptr %12, align 2 store i8 0, ptr %13, align 2, !tbaa !7 br label %56 56: ; preds = %56, %53 - %indvars.iv.i68 = phi i64 [ 1, %53 ], [ %indvars.iv.next.i71, %56 ] - %.01215.i69 = phi i32 [ %55, %53 ], [ %58, %56 ] + %indvars.iv.i68 = phi i64 [ 1, %54 ], [ %indvars.iv.next.i71, %57 ] + %.01215.i69 = phi i32 [ %55, %54 ], [ %58, %57 ] %57 = srem i32 %.01215.i69, 10 %58 = sdiv i32 %.01215.i69, 10 %59 = trunc nsw i32 %57 to i8 @@ -557,7 +559,7 @@ stb_include_itoa.exit73: ; preds = %56 %67 = call ptr @realloc(ptr noundef %.145, i64 noundef %66) #15 %68 = getelementptr inbounds nuw i8, ptr %67, i64 %.1 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %68, ptr nonnull readonly align 16 %7, i64 %65, i1 false) - %69 = getelementptr inbounds nuw %struct.include_info, ptr %.pre, i64 %indvars.iv, i32 1 + %69 = getelementptr inbounds nuw i8, ptr %16, i64 4 %70 = load i32, ptr %69, align 4, !tbaa !13 %71 = sext i32 %70 to i64 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 @@ -583,9 +585,10 @@ stb_include_itoa.exit73: ; preds = %56 .lr.ph.i76: ; preds = %.lr.ph.i76, %.lr.ph.preheader.i74 %indvars.iv.i77 = phi i64 [ 0, %.lr.ph.preheader.i74 ], [ %indvars.iv.next.i78, %.lr.ph.i76 ] - %78 = getelementptr inbounds nuw %struct.include_info, ptr %.pre, i64 %indvars.iv.i77, i32 2 - %79 = load ptr, ptr %78, align 8, !tbaa !14 - call void @free(ptr noundef %79) #16 + %78 = getelementptr inbounds nuw %struct.include_info, ptr %.pre, i64 %indvars.iv.i77 + %80 = getelementptr inbounds nuw i8, ptr %78, i64 8 + %81 = load ptr, ptr %80, align 8, !tbaa !14 + call void @free(ptr noundef %81) #16 %indvars.iv.next.i78 = add nuw nsw i64 %indvars.iv.i77, 1 %exitcond.not.i79 = icmp eq i64 %indvars.iv.next.i78, %wide.trip.count.i75 br i1 %exitcond.not.i79, label %.thread, label %.lr.ph.i76, !llvm.loop !16 diff --git a/bench/stockfish/optimized/position.ll b/bench/stockfish/optimized/position.ll index d4442717405..85a2019f4d4 100644 --- a/bench/stockfish/optimized/position.ll +++ b/bench/stockfish/optimized/position.ll @@ -1053,55 +1053,57 @@ _ZNSt5arrayIN9Stockfish4MoveELm8192EE4fillERKS1_.exit.preheader: ; preds = %.lr. br i1 %52, label %.lr.ph80, label %.loopexit .lr.ph80: ; preds = %51 - %53 = getelementptr inbounds nuw %"struct.Stockfish::Magic", ptr @_ZN9Stockfish12BishopMagicsE, i64 %indvars.iv102, i32 2 - %54 = getelementptr inbounds nuw %"struct.Stockfish::Magic", ptr @_ZN9Stockfish10RookMagicsE, i64 %indvars.iv102, i32 2 - %55 = getelementptr inbounds nuw i64, ptr %48, i64 %indvars.iv102 - %56 = shl nuw nsw i64 %indvars.iv102, 6 - %57 = getelementptr inbounds nuw i64, ptr %50, i64 %indvars.iv102 - br label %58 - -58: ; preds = %.lr.ph80, %._crit_edge + %53 = getelementptr inbounds nuw %"struct.Stockfish::Magic", ptr @_ZN9Stockfish12BishopMagicsE, i64 %indvars.iv102 + %54 = getelementptr inbounds nuw i8, ptr %53, i64 16 + %55 = getelementptr inbounds nuw %"struct.Stockfish::Magic", ptr @_ZN9Stockfish10RookMagicsE, i64 %indvars.iv102 + %56 = getelementptr inbounds nuw i8, ptr %55, i64 16 + %57 = getelementptr inbounds nuw i64, ptr %48, i64 %indvars.iv102 + %58 = shl nuw nsw i64 %indvars.iv102, 6 + %59 = getelementptr inbounds nuw i64, ptr %50, i64 %indvars.iv102 + br label %60 + +60: ; preds = %.lr.ph80, %._crit_edge %indvars.iv98 = phi i64 [ %indvars.iv96, %.lr.ph80 ], [ %indvars.iv.next99, %._crit_edge ] - switch i32 %46, label %71 [ + switch i32 %46, label %73 [ i32 1, label %._crit_edge i32 3, label %59 i32 4, label %62 i32 5, label %65 ] -59: ; preds = %58 - %60 = load ptr, ptr %53, align 16 +59: ; preds = %60 + %60 = load ptr, ptr %54, align 16 %61 = load i64, ptr %60, align 8 br label %_ZN9Stockfish10attacks_bbENS_9PieceTypeENS_6SquareEm.exit -62: ; preds = %58 - %63 = load ptr, ptr %54, align 16 +62: ; preds = %60 + %63 = load ptr, ptr %56, align 16 %64 = load i64, ptr %63, align 8 br label %_ZN9Stockfish10attacks_bbENS_9PieceTypeENS_6SquareEm.exit -65: ; preds = %58 - %66 = load ptr, ptr %53, align 16 - %67 = load i64, ptr %66, align 8 +65: ; preds = %60 %68 = load ptr, ptr %54, align 16 %69 = load i64, ptr %68, align 8 - %70 = or i64 %69, %67 + %70 = load ptr, ptr %56, align 16 + %71 = load i64, ptr %70, align 8 + %72 = or i64 %71, %69 br label %_ZN9Stockfish10attacks_bbENS_9PieceTypeENS_6SquareEm.exit -71: ; preds = %58 - %72 = load i64, ptr %55, align 8 +71: ; preds = %60 + %72 = load i64, ptr %57, align 8 br label %_ZN9Stockfish10attacks_bbENS_9PieceTypeENS_6SquareEm.exit _ZN9Stockfish10attacks_bbENS_9PieceTypeENS_6SquareEm.exit: ; preds = %59, %62, %65, %71 - %.0.i = phi i64 [ %72, %71 ], [ %61, %59 ], [ %64, %62 ], [ %70, %65 ] + %.0.i = phi i64 [ %72, %73 ], [ %61, %61 ], [ %64, %64 ], [ %72, %67 ] %73 = shl nuw i64 1, %indvars.iv98 %74 = and i64 %.0.i, %73 %.not26 = icmp eq i64 %74, 0 br i1 %.not26, label %._crit_edge, label %75 75: ; preds = %_ZN9Stockfish10attacks_bbENS_9PieceTypeENS_6SquareEm.exit - %76 = add nuw nsw i64 %indvars.iv98, %56 + %76 = add nuw nsw i64 %indvars.iv98, %58 %77 = trunc i64 %76 to i16 - %78 = load i64, ptr %57, align 8 + %78 = load i64, ptr %59, align 8 %79 = getelementptr inbounds nuw i64, ptr %50, i64 %indvars.iv98 %80 = load i64, ptr %79, align 8 %81 = xor i64 %78, %80 @@ -1141,10 +1143,10 @@ _ZN9Stockfish10attacks_bbENS_9PieceTypeENS_6SquareEm.exit: ; preds = %59, %62, % %101 = icmp eq i16 %.sroa.0.0.copyload.i, 0 br i1 %101, label %._crit_edge, label %.lr.ph, !llvm.loop !26 -._crit_edge: ; preds = %.lr.ph, %75, %58, %_ZN9Stockfish10attacks_bbENS_9PieceTypeENS_6SquareEm.exit +._crit_edge: ; preds = %.lr.ph, %75, %60, %_ZN9Stockfish10attacks_bbENS_9PieceTypeENS_6SquareEm.exit %indvars.iv.next99 = add nuw nsw i64 %indvars.iv98, 1 %exitcond101.not = icmp eq i64 %indvars.iv.next99, 64 - br i1 %exitcond101.not, label %.loopexit, label %58, !llvm.loop !27 + br i1 %exitcond101.not, label %.loopexit, label %60, !llvm.loop !27 _ZNSt5arrayIN9Stockfish4MoveELm8192EE4fillERKS1_.exit: ; preds = %.loopexit %.021.add = add nuw nsw i64 %.021.idx84, 4 diff --git a/bench/tls-rs/optimized/7y9936vu35zt2sp.ll b/bench/tls-rs/optimized/7y9936vu35zt2sp.ll index c97d3e30fb1..076349ba213 100644 --- a/bench/tls-rs/optimized/7y9936vu35zt2sp.ll +++ b/bench/tls-rs/optimized/7y9936vu35zt2sp.ll @@ -165,17 +165,18 @@ define hidden noundef i64 @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$G br label %11 11: ; preds = %11, %6 - %.018.i = phi i64 [ %2, %6 ], [ %13, %11 ] - %.017.i = phi i64 [ 0, %6 ], [ %14, %11 ] - %12 = getelementptr { ptr, i64 }, ptr %0, i64 %.017.i, i32 1 - %.val.i = load i64, ptr %12, align 8, !noundef !4 - %13 = add i64 %.val.i, %.018.i - %14 = add nuw i64 %.017.i, 1 - %15 = icmp eq i64 %14, %10 - br i1 %15, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hc84f9768e1814115E.llvm.403688954652204928.exit", label %11 + %.018.i = phi i64 [ %2, %6 ], [ %14, %11 ] + %.017.i = phi i64 [ 0, %6 ], [ %15, %11 ] + %12 = getelementptr inbounds { ptr, i64 }, ptr %0, i64 %.017.i + %13 = getelementptr i8, ptr %12, i64 8 + %.val.i = load i64, ptr %13, align 8, !noundef !4 + %14 = add i64 %.val.i, %.018.i + %15 = add nuw i64 %.017.i, 1 + %16 = icmp eq i64 %15, %10 + br i1 %16, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hc84f9768e1814115E.llvm.403688954652204928.exit", label %11 "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hc84f9768e1814115E.llvm.403688954652204928.exit": ; preds = %11, %3 - %.0.i = phi i64 [ %2, %3 ], [ %13, %11 ] + %.0.i = phi i64 [ %2, %3 ], [ %14, %11 ] ret i64 %.0.i } @@ -5736,17 +5737,18 @@ define hidden noundef i64 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u2 br label %11 11: ; preds = %11, %6 - %.018 = phi i64 [ %2, %6 ], [ %13, %11 ] - %.017 = phi i64 [ 0, %6 ], [ %14, %11 ] - %12 = getelementptr { ptr, i64 }, ptr %0, i64 %.017, i32 1 - %.val = load i64, ptr %12, align 8, !noundef !4 - %13 = add i64 %.val, %.018 - %14 = add nuw i64 %.017, 1 - %15 = icmp eq i64 %14, %10 - br i1 %15, label %.loopexit, label %11 + %.018 = phi i64 [ %2, %6 ], [ %14, %11 ] + %.017 = phi i64 [ 0, %6 ], [ %15, %11 ] + %12 = getelementptr inbounds { ptr, i64 }, ptr %0, i64 %.017 + %13 = getelementptr i8, ptr %12, i64 8 + %.val = load i64, ptr %13, align 8, !noundef !4 + %14 = add i64 %.val, %.018 + %15 = add nuw i64 %.017, 1 + %16 = icmp eq i64 %15, %10 + br i1 %16, label %.loopexit, label %11 .loopexit: ; preds = %11, %3 - %.0 = phi i64 [ %2, %3 ], [ %13, %11 ] + %.0 = phi i64 [ %2, %3 ], [ %14, %11 ] ret i64 %.0 } diff --git a/bench/tokenizers-rs/optimized/10h1ju7dwsvagf79.ll b/bench/tokenizers-rs/optimized/10h1ju7dwsvagf79.ll index 04ff96d706b..cb9ee8fbd8f 100644 --- a/bench/tokenizers-rs/optimized/10h1ju7dwsvagf79.ll +++ b/bench/tokenizers-rs/optimized/10h1ju7dwsvagf79.ll @@ -3120,7 +3120,7 @@ define hidden void @"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT br i1 %.not.not39, label %.lr.ph, label %._crit_edge ._crit_edge: ; preds = %.lr.ph, %2 - %.sroa.12.0.lcssa = phi i64 [ %1, %2 ], [ %35, %.lr.ph ] + %.sroa.12.0.lcssa = phi i64 [ %1, %2 ], [ %37, %.lr.ph ] %.0.in.lcssa = phi i64 [ %.0.in37, %2 ], [ %.0.in, %.lr.ph ] %.0.lcssa = phi i64 [ %.038, %2 ], [ %.0, %.lr.ph ] %10 = add i64 %4, -2 @@ -3177,21 +3177,23 @@ define hidden void @"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT .lr.ph: ; preds = %2, %.lr.ph %.042 = phi i64 [ %.0, %.lr.ph ], [ %.038, %2 ] %.0.in41 = phi i64 [ %.0.in, %.lr.ph ], [ %.0.in37, %2 ] - %.sroa.12.040 = phi i64 [ %35, %.lr.ph ], [ %1, %2 ] - %29 = add nuw i64 %.0.in41, 2 - %30 = icmp ult i64 %29, %4 - tail call void @llvm.assume(i1 %30) - %31 = getelementptr { ptr, ptr, double, double }, ptr %6, i64 %.042, i32 2 - %.val = load double, ptr %31, align 8, !alias.scope !871, !noalias !876, !noundef !4 - %32 = getelementptr { ptr, ptr, double, double }, ptr %6, i64 %29, i32 2 - %.val27 = load double, ptr %32, align 8, !alias.scope !876, !noalias !871, !noundef !4 - %33 = fcmp olt double %.val, %.val27 - %34 = zext i1 %33 to i64 - %35 = add nuw i64 %.042, %34 - %36 = getelementptr inbounds { ptr, ptr, double, double }, ptr %6, i64 %35 - %37 = getelementptr inbounds { ptr, ptr, double, double }, ptr %6, i64 %.sroa.12.040 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(32) %36, i64 32, i1 false), !noalias !879 - %.0.in = shl i64 %35, 1 + %.sroa.12.040 = phi i64 [ %37, %.lr.ph ], [ %1, %2 ] + %29 = getelementptr inbounds { ptr, ptr, double, double }, ptr %6, i64 %.042 + %30 = add nuw i64 %.0.in41, 2 + %31 = icmp ult i64 %30, %4 + tail call void @llvm.assume(i1 %31) + %32 = getelementptr inbounds { ptr, ptr, double, double }, ptr %6, i64 %30 + %32 = getelementptr i8, ptr %29, i64 16 + %.val27 = load double, ptr %32, align 8, !alias.scope !871, !noalias !876, !noundef !4 + %34 = getelementptr i8, ptr %32, i64 16 + %.val27 = load double, ptr %34, align 8, !alias.scope !876, !noalias !871, !noundef !4 + %35 = fcmp olt double %.val27, %.val27 + %36 = zext i1 %35 to i64 + %37 = add nuw i64 %.042, %36 + %38 = getelementptr inbounds { ptr, ptr, double, double }, ptr %6, i64 %37 + %39 = getelementptr inbounds { ptr, ptr, double, double }, ptr %6, i64 %.sroa.12.040 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(32) %38, i64 32, i1 false), !noalias !879 + %.0.in = shl i64 %37, 1 %.0 = or disjoint i64 %.0.in, 1 %.not.not = icmp ult i64 %.0.in, %9 br i1 %.not.not, label %.lr.ph, label %._crit_edge @@ -3310,7 +3312,7 @@ _ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394. br i1 %.not.not39.i.not.i, label %._crit_edge.i.i, label %.lr.ph.i1.i ._crit_edge.i.i: ; preds = %.lr.ph.i1.i, %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit.i - %.sroa.12.0.lcssa.i.i = phi i64 [ 0, %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit.i ], [ %44, %.lr.ph.i1.i ] + %.sroa.12.0.lcssa.i.i = phi i64 [ 0, %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit.i ], [ %46, %.lr.ph.i1.i ] %.0.in.lcssa.i.i = phi i64 [ 0, %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit.i ], [ %.0.in.i.i, %.lr.ph.i1.i ] %.0.lcssa.i.i = phi i64 [ 1, %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit.i ], [ %.0.i.i, %.lr.ph.i1.i ] %22 = add i64 %5, -3 @@ -3357,21 +3359,23 @@ _ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394. .lr.ph.i1.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit.i, %.lr.ph.i1.i %.042.i.i = phi i64 [ %.0.i.i, %.lr.ph.i1.i ], [ 1, %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit.i ] %.0.in41.i.i = phi i64 [ %.0.in.i.i, %.lr.ph.i1.i ], [ 0, %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit.i ] - %.sroa.12.040.i.i = phi i64 [ %44, %.lr.ph.i1.i ], [ 0, %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit.i ] - %38 = add nuw i64 %.0.in41.i.i, 2 - %39 = icmp ult i64 %38, %7 - tail call void @llvm.assume(i1 %39) - %40 = getelementptr { ptr, ptr, double, double }, ptr %11, i64 %.042.i.i, i32 2 - %.val.i.i = load double, ptr %40, align 8, !alias.scope !927, !noalias !932, !noundef !4 - %41 = getelementptr { ptr, ptr, double, double }, ptr %11, i64 %38, i32 2 - %.val27.i.i = load double, ptr %41, align 8, !alias.scope !935, !noalias !936, !noundef !4 - %42 = fcmp olt double %.val.i.i, %.val27.i.i - %43 = zext i1 %42 to i64 - %44 = add nuw i64 %.042.i.i, %43 - %45 = getelementptr inbounds { ptr, ptr, double, double }, ptr %11, i64 %44 - %46 = getelementptr inbounds { ptr, ptr, double, double }, ptr %11, i64 %.sroa.12.040.i.i - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull align 8 dereferenceable(32) %45, i64 32, i1 false), !noalias !937 - %.0.in.i.i = shl i64 %44, 1 + %.sroa.12.040.i.i = phi i64 [ %46, %.lr.ph.i1.i ], [ 0, %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit.i ] + %38 = getelementptr inbounds { ptr, ptr, double, double }, ptr %11, i64 %.042.i.i + %39 = add nuw i64 %.0.in41.i.i, 2 + %40 = icmp ult i64 %39, %7 + tail call void @llvm.assume(i1 %40) + %41 = getelementptr inbounds { ptr, ptr, double, double }, ptr %11, i64 %39 + %41 = getelementptr i8, ptr %38, i64 16 + %.val27.i.i = load double, ptr %41, align 8, !alias.scope !927, !noalias !932, !noundef !4 + %43 = getelementptr i8, ptr %41, i64 16 + %.val27.i.i = load double, ptr %43, align 8, !alias.scope !935, !noalias !936, !noundef !4 + %44 = fcmp olt double %.val27.i.i, %.val27.i.i + %45 = zext i1 %41 to i64 + %46 = add nuw i64 %.042.i.i, %45 + %47 = getelementptr inbounds { ptr, ptr, double, double }, ptr %11, i64 %46 + %48 = getelementptr inbounds { ptr, ptr, double, double }, ptr %11, i64 %.sroa.12.040.i.i + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 8 dereferenceable(32) %47, i64 32, i1 false), !noalias !937 + %.0.in.i.i = shl i64 %46, 1 %.0.i.i = or disjoint i64 %.0.in.i.i, 1 %.not.not.i.i = icmp ult i64 %.0.in.i.i, %21 br i1 %.not.not.i.i, label %.lr.ph.i1.i, label %._crit_edge.i.i @@ -3470,7 +3474,7 @@ _ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394. br i1 %.not.not39.i.not, label %._crit_edge.i, label %.lr.ph.i1 ._crit_edge.i: ; preds = %.lr.ph.i1, %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit - %.sroa.12.0.lcssa.i = phi i64 [ 0, %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit ], [ %39, %.lr.ph.i1 ] + %.sroa.12.0.lcssa.i = phi i64 [ 0, %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit ], [ %41, %.lr.ph.i1 ] %.0.in.lcssa.i = phi i64 [ 0, %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit ], [ %.0.in.i, %.lr.ph.i1 ] %.0.lcssa.i = phi i64 [ 1, %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit ], [ %.0.i, %.lr.ph.i1 ] %17 = add i64 %5, -2 @@ -3517,21 +3521,23 @@ _ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394. .lr.ph.i1: ; preds = %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit, %.lr.ph.i1 %.042.i = phi i64 [ %.0.i, %.lr.ph.i1 ], [ 1, %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit ] %.0.in41.i = phi i64 [ %.0.in.i, %.lr.ph.i1 ], [ 0, %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit ] - %.sroa.12.040.i = phi i64 [ %39, %.lr.ph.i1 ], [ 0, %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit ] - %33 = add nuw i64 %.0.in41.i, 2 - %34 = icmp ult i64 %33, %5 - tail call void @llvm.assume(i1 %34) - %35 = getelementptr { ptr, ptr, double, double }, ptr %10, i64 %.042.i, i32 2 - %.val.i = load double, ptr %35, align 8, !alias.scope !980, !noalias !985, !noundef !4 - %36 = getelementptr { ptr, ptr, double, double }, ptr %10, i64 %33, i32 2 - %.val27.i = load double, ptr %36, align 8, !alias.scope !988, !noalias !989, !noundef !4 - %37 = fcmp olt double %.val.i, %.val27.i - %38 = zext i1 %37 to i64 - %39 = add nuw i64 %.042.i, %38 - %40 = getelementptr inbounds { ptr, ptr, double, double }, ptr %10, i64 %39 - %41 = getelementptr inbounds { ptr, ptr, double, double }, ptr %10, i64 %.sroa.12.040.i - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 8 dereferenceable(32) %40, i64 32, i1 false), !noalias !990 - %.0.in.i = shl i64 %39, 1 + %.sroa.12.040.i = phi i64 [ %41, %.lr.ph.i1 ], [ 0, %_ZN4core3ptr19swap_nonoverlapping17h52a53e9c3d3177a6E.llvm.11083375685992158394.exit ] + %33 = getelementptr inbounds { ptr, ptr, double, double }, ptr %10, i64 %.042.i + %34 = add nuw i64 %.0.in41.i, 2 + %35 = icmp ult i64 %34, %5 + tail call void @llvm.assume(i1 %35) + %36 = getelementptr inbounds { ptr, ptr, double, double }, ptr %10, i64 %34 + %36 = getelementptr i8, ptr %33, i64 16 + %.val27.i = load double, ptr %36, align 8, !alias.scope !980, !noalias !985, !noundef !4 + %38 = getelementptr i8, ptr %36, i64 16 + %.val27.i = load double, ptr %38, align 8, !alias.scope !988, !noalias !989, !noundef !4 + %39 = fcmp olt double %.val27.i, %.val27.i + %40 = zext i1 %39 to i64 + %41 = add nuw i64 %.042.i, %40 + %42 = getelementptr inbounds { ptr, ptr, double, double }, ptr %10, i64 %41 + %43 = getelementptr inbounds { ptr, ptr, double, double }, ptr %10, i64 %.sroa.12.040.i + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull align 8 dereferenceable(32) %42, i64 32, i1 false), !noalias !990 + %.0.in.i = shl i64 %41, 1 %.0.i = or disjoint i64 %.0.in.i, 1 %.not.not.i = icmp ult i64 %.0.in.i, %16 br i1 %.not.not.i, label %.lr.ph.i1, label %._crit_edge.i diff --git a/bench/tokio-rs/optimized/r9h5225tdo2hxm6.ll b/bench/tokio-rs/optimized/r9h5225tdo2hxm6.ll index 5a84359b5f9..49e9a184f05 100644 --- a/bench/tokio-rs/optimized/r9h5225tdo2hxm6.ll +++ b/bench/tokio-rs/optimized/r9h5225tdo2hxm6.ll @@ -11531,9 +11531,10 @@ define hidden void @"_ZN5tokio6signal8registry17Registry$LT$S$GT$12record_event1 5: ; preds = %2 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 %7 = load ptr, ptr %6, align 8, !alias.scope !1862, !nonnull !10 - %8 = getelementptr inbounds { { ptr, { i8 }, [7 x i8] }, { { { i32 } } }, { i8 }, [3 x i8] }, ptr %7, i64 %1, i32 0, i32 1 - store atomic i8 1, ptr %8 seq_cst, align 1 - br label %9 + %8 = getelementptr inbounds { { ptr, { i8 }, [7 x i8] }, { { { i32 } } }, { i8 }, [3 x i8] }, ptr %7, i64 %1 + %9 = getelementptr inbounds nuw i8, ptr %8, i64 8 + store atomic i8 1, ptr %9 seq_cst, align 1 + br label %10 9: ; preds = %5, %2 ret void @@ -11562,8 +11563,9 @@ define hidden void @_ZN5tokio6signal8registry7Globals12record_event17h1735c98652 5: ; preds = %2 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 %7 = load ptr, ptr %6, align 8, !alias.scope !1868, !nonnull !10 - %8 = getelementptr inbounds { { ptr, { i8 }, [7 x i8] }, { { { i32 } } }, { i8 }, [3 x i8] }, ptr %7, i64 %1, i32 0, i32 1 - store atomic i8 1, ptr %8 seq_cst, align 1, !noalias !1865 + %8 = getelementptr inbounds { { ptr, { i8 }, [7 x i8] }, { { { i32 } } }, { i8 }, [3 x i8] }, ptr %7, i64 %1 + %9 = getelementptr inbounds nuw i8, ptr %8, i64 8 + store atomic i8 1, ptr %9 seq_cst, align 1, !noalias !1865 br label %"_ZN5tokio6signal8registry17Registry$LT$S$GT$12record_event17h6f35a1a3570ff76aE.llvm.11424388141523703806.exit" "_ZN5tokio6signal8registry17Registry$LT$S$GT$12record_event17h6f35a1a3570ff76aE.llvm.11424388141523703806.exit": ; preds = %2, %5 @@ -11811,8 +11813,9 @@ define hidden void @_ZN5tokio6signal4unix6action17h1723847c55edb8b2E(ptr noalias 9: ; preds = %2 %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 %11 = load ptr, ptr %10, align 8, !alias.scope !1904, !nonnull !10 - %12 = getelementptr inbounds { { ptr, { i8 }, [7 x i8] }, { { { i32 } } }, { i8 }, [3 x i8] }, ptr %11, i64 %6, i32 0, i32 1 - store atomic i8 1, ptr %12 seq_cst, align 1, !noalias !1907 + %12 = getelementptr inbounds { { ptr, { i8 }, [7 x i8] }, { { { i32 } } }, { i8 }, [3 x i8] }, ptr %11, i64 %6 + %13 = getelementptr inbounds nuw i8, ptr %12, i64 8 + store atomic i8 1, ptr %13 seq_cst, align 1, !noalias !1907 br label %_ZN5tokio6signal8registry7Globals12record_event17h1735c986523b981dE.llvm.11424388141523703806.exit _ZN5tokio6signal8registry7Globals12record_event17h1735c986523b981dE.llvm.11424388141523703806.exit: ; preds = %2, %9 diff --git a/bench/tree-sitter-rs/optimized/s186efq8x74ief6.ll b/bench/tree-sitter-rs/optimized/s186efq8x74ief6.ll index c369a63b1f8..64e70213cae 100644 --- a/bench/tree-sitter-rs/optimized/s186efq8x74ief6.ll +++ b/bench/tree-sitter-rs/optimized/s186efq8x74ief6.ll @@ -332,9 +332,10 @@ define hidden void @"_ZN8indexmap3map4core25IndexMapCore$LT$K$C$V$GT$11insert_fu .critedge: ; preds = %12 %19 = getelementptr inbounds nuw i8, ptr %1, i64 8 %20 = load ptr, ptr %19, align 8, !alias.scope !48, !noalias !51, !nonnull !5, !noundef !5 - %21 = getelementptr inbounds { { { { i64, ptr }, i64 } }, { i64, [8 x i64] }, i64 }, ptr %20, i64 %.fca.1.extract, i32 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %9, ptr noundef nonnull align 8 dereferenceable(72) %21, i64 72, i1 false) - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %21, ptr noundef nonnull align 8 dereferenceable(72) %4, i64 72, i1 false) + %21 = getelementptr inbounds { { { { i64, ptr }, i64 } }, { i64, [8 x i64] }, i64 }, ptr %20, i64 %.fca.1.extract + %22 = getelementptr inbounds nuw i8, ptr %21, i64 24 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %9, ptr noundef nonnull align 8 dereferenceable(72) %22, i64 72, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %22, ptr noundef nonnull align 8 dereferenceable(72) %4, i64 72, i1 false) store i64 %.fca.1.extract, ptr %0, align 8 %22 = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %22, ptr noundef nonnull align 8 dereferenceable(72) %9, i64 72, i1 false) @@ -365,7 +366,7 @@ define hidden void @"_ZN8indexmap3map4core25IndexMapCore$LT$K$C$V$GT$11insert_fu %lpad.thr_comm = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h7efca45dfd54dc8bE.llvm.10823498929142229777"(ptr noalias noundef nonnull align 8 dereferenceable(72) %4) #14 - to label %34 unwind label %32 + to label %35 unwind label %32 32: ; preds = %34, %31 %33 = landingpad { ptr, i32 } diff --git a/bench/typst-rs/optimized/4m3ebbqd1xx21e5m.ll b/bench/typst-rs/optimized/4m3ebbqd1xx21e5m.ll index 744f7bc4949..b805967d8cb 100644 --- a/bench/typst-rs/optimized/4m3ebbqd1xx21e5m.ll +++ b/bench/typst-rs/optimized/4m3ebbqd1xx21e5m.ll @@ -1578,7 +1578,7 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$ br i1 %.not27, label %"_ZN4core3ptr114drop_in_place$LT$core..array..iter..IntoIter$LT$$LP$$RF$str$C$alloc..vec..Vec$LT$$RF$str$GT$$RP$$C$2_usize$GT$$GT$17hcdbd8028ca161f2eE.exit", label %27 common.resume: ; preds = %"_ZN4core3ptr69drop_in_place$LT$$LP$$RF$str$C$alloc..vec..Vec$LT$$RF$str$GT$$RP$$GT$17hb1256f9fae9381d6E.llvm.16845035774076767816.exit7.i.i.i", %47, %51 - %common.resume.op = phi { ptr, i32 } [ %48, %51 ], [ %48, %47 ], [ %41, %"_ZN4core3ptr69drop_in_place$LT$$LP$$RF$str$C$alloc..vec..Vec$LT$$RF$str$GT$$RP$$GT$17hb1256f9fae9381d6E.llvm.16845035774076767816.exit7.i.i.i" ] + %common.resume.op = phi { ptr, i32 } [ %48, %53 ], [ %48, %49 ], [ %42, %"_ZN4core3ptr69drop_in_place$LT$$LP$$RF$str$C$alloc..vec..Vec$LT$$RF$str$GT$$RP$$GT$17hb1256f9fae9381d6E.llvm.16845035774076767816.exit7.i.i.i" ] resume { ptr, i32 } %common.resume.op "_ZN4core3ptr114drop_in_place$LT$core..array..iter..IntoIter$LT$$LP$$RF$str$C$alloc..vec..Vec$LT$$RF$str$GT$$RP$$C$2_usize$GT$$GT$17hcdbd8028ca161f2eE.exit": ; preds = %"_ZN4core3ptr69drop_in_place$LT$$LP$$RF$str$C$alloc..vec..Vec$LT$$RF$str$GT$$RP$$GT$17hb1256f9fae9381d6E.llvm.16845035774076767816.exit.i.i.i", %.thread19, %24 @@ -1595,31 +1595,33 @@ common.resume: ; preds = %"_ZN4core3ptr69drop br label %"_ZN4core3ptr69drop_in_place$LT$$LP$$RF$str$C$alloc..vec..Vec$LT$$RF$str$GT$$RP$$GT$17hb1256f9fae9381d6E.llvm.16845035774076767816.exit.i.i.i" "_ZN4core3ptr69drop_in_place$LT$$LP$$RF$str$C$alloc..vec..Vec$LT$$RF$str$GT$$RP$$GT$17hb1256f9fae9381d6E.llvm.16845035774076767816.exit.i.i.i": ; preds = %36, %27 - %.0.i.i.i = phi i64 [ 0, %27 ], [ %37, %36 ] + %.0.i.i.i = phi i64 [ 0, %27 ], [ %38, %36 ] %35 = icmp eq i64 %.0.i.i.i, %34 br i1 %35, label %"_ZN4core3ptr114drop_in_place$LT$core..array..iter..IntoIter$LT$$LP$$RF$str$C$alloc..vec..Vec$LT$$RF$str$GT$$RP$$C$2_usize$GT$$GT$17hcdbd8028ca161f2eE.exit", label %36 36: ; preds = %"_ZN4core3ptr69drop_in_place$LT$$LP$$RF$str$C$alloc..vec..Vec$LT$$RF$str$GT$$RP$$GT$17hb1256f9fae9381d6E.llvm.16845035774076767816.exit.i.i.i" - %37 = add i64 %.0.i.i.i, 1 - %38 = getelementptr inbounds { { ptr, i64 }, { { i64, ptr, {} }, i64 } }, ptr %33, i64 %.0.i.i.i, i32 1 - invoke void @"_ZN4core3ptr51drop_in_place$LT$alloc..vec..Vec$LT$$RF$str$GT$$GT$17hfb97dfeb8f7a6ffcE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %38) - to label %"_ZN4core3ptr69drop_in_place$LT$$LP$$RF$str$C$alloc..vec..Vec$LT$$RF$str$GT$$RP$$GT$17hb1256f9fae9381d6E.llvm.16845035774076767816.exit.i.i.i" unwind label %40 - -"_ZN4core3ptr69drop_in_place$LT$$LP$$RF$str$C$alloc..vec..Vec$LT$$RF$str$GT$$RP$$GT$17hb1256f9fae9381d6E.llvm.16845035774076767816.exit7.i.i.i": ; preds = %42, %40 - %.1.i.i.i = phi i64 [ %37, %40 ], [ %43, %42 ] - %39 = icmp eq i64 %.1.i.i.i, %34 - br i1 %39, label %common.resume, label %42 - -40: ; preds = %36 - %41 = landingpad { ptr, i32 } + %37 = getelementptr inbounds { { ptr, i64 }, { { i64, ptr, {} }, i64 } }, ptr %33, i64 %.0.i.i.i + %38 = add i64 %.0.i.i.i, 1 + %39 = getelementptr inbounds nuw i8, ptr %37, i64 16 + invoke void @"_ZN4core3ptr51drop_in_place$LT$alloc..vec..Vec$LT$$RF$str$GT$$GT$17hfb97dfeb8f7a6ffcE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %39) + to label %"_ZN4core3ptr69drop_in_place$LT$$LP$$RF$str$C$alloc..vec..Vec$LT$$RF$str$GT$$RP$$GT$17hb1256f9fae9381d6E.llvm.16845035774076767816.exit.i.i.i" unwind label %41 + +"_ZN4core3ptr69drop_in_place$LT$$LP$$RF$str$C$alloc..vec..Vec$LT$$RF$str$GT$$RP$$GT$17hb1256f9fae9381d6E.llvm.16845035774076767816.exit7.i.i.i": ; preds = %43, %41 + %.1.i.i.i = phi i64 [ %38, %41 ], [ %45, %43 ] + %40 = icmp eq i64 %.1.i.i.i, %34 + br i1 %40, label %common.resume, label %43 + +41:; preds = %36 + %42 = landingpad { ptr, i32 } cleanup br label %"_ZN4core3ptr69drop_in_place$LT$$LP$$RF$str$C$alloc..vec..Vec$LT$$RF$str$GT$$RP$$GT$17hb1256f9fae9381d6E.llvm.16845035774076767816.exit7.i.i.i" 42: ; preds = %"_ZN4core3ptr69drop_in_place$LT$$LP$$RF$str$C$alloc..vec..Vec$LT$$RF$str$GT$$RP$$GT$17hb1256f9fae9381d6E.llvm.16845035774076767816.exit7.i.i.i" - %43 = add i64 %.1.i.i.i, 1 - %44 = getelementptr inbounds { { ptr, i64 }, { { i64, ptr, {} }, i64 } }, ptr %33, i64 %.1.i.i.i, i32 1 - invoke void @"_ZN4core3ptr51drop_in_place$LT$alloc..vec..Vec$LT$$RF$str$GT$$GT$17hfb97dfeb8f7a6ffcE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %44) - to label %"_ZN4core3ptr69drop_in_place$LT$$LP$$RF$str$C$alloc..vec..Vec$LT$$RF$str$GT$$RP$$GT$17hb1256f9fae9381d6E.llvm.16845035774076767816.exit7.i.i.i" unwind label %45 + %44 = getelementptr inbounds { { ptr, i64 }, { { i64, ptr, {} }, i64 } }, ptr %33, i64 %.1.i.i.i + %45 = add i64 %.1.i.i.i, 1 + %46 = getelementptr inbounds nuw i8, ptr %44, i64 16 + invoke void @"_ZN4core3ptr51drop_in_place$LT$alloc..vec..Vec$LT$$RF$str$GT$$GT$17hfb97dfeb8f7a6ffcE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %46) + to label %"_ZN4core3ptr69drop_in_place$LT$$LP$$RF$str$C$alloc..vec..Vec$LT$$RF$str$GT$$RP$$GT$17hb1256f9fae9381d6E.llvm.16845035774076767816.exit7.i.i.i" unwind label %47 45: ; preds = %42 %46 = landingpad { ptr, i32 } @@ -4418,11 +4420,12 @@ _ZN4core4iter6traits8iterator8Iterator8try_fold17h3b3502f7a9ed6d38E.exit.thread. %.sink36 = phi i64 [ %17, %16 ], [ %40, %39 ] %45 = getelementptr inbounds nuw i8, ptr %.lcssa34.sink, i64 8 %46 = load ptr, ptr %45, align 8, !noalias !4, !nonnull !4, !noundef !4 - %47 = getelementptr inbounds { { { { [2 x i64] } } }, i64, { { i8, [31 x i8] }, ptr, i8, [7 x i8] } }, ptr %46, i64 %.sink36, i32 2 + %47 = getelementptr inbounds { { { { [2 x i64] } } }, i64, { { i8, [31 x i8] }, ptr, i8, [7 x i8] } }, ptr %46, i64 %.sink36 + %48 = getelementptr inbounds nuw i8, ptr %47, i64 24 br label %_ZN4core4iter6traits8iterator8Iterator8try_fold17h3b3502f7a9ed6d38E.exit.thread _ZN4core4iter6traits8iterator8Iterator8try_fold17h3b3502f7a9ed6d38E.exit.thread: ; preds = %"_ZN4core4iter6traits8iterator8Iterator8find_map5check28_$u7b$$u7b$closure$u7d$$u7d$17h9e6987ca5bb6ee6cE.exit.i", %_ZN4core4iter6traits8iterator8Iterator8try_fold17h3b3502f7a9ed6d38E.exit.thread.sink.split, %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h4ac128f48349e5afE.exit", %28 - %.0 = phi ptr [ null, %28 ], [ %26, %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h4ac128f48349e5afE.exit" ], [ %47, %_ZN4core4iter6traits8iterator8Iterator8try_fold17h3b3502f7a9ed6d38E.exit.thread.sink.split ], [ null, %"_ZN4core4iter6traits8iterator8Iterator8find_map5check28_$u7b$$u7b$closure$u7d$$u7d$17h9e6987ca5bb6ee6cE.exit.i" ] + %.0 = phi ptr [ null, %28 ], [ %26, %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h4ac128f48349e5afE.exit" ], [ %48, %_ZN4core4iter6traits8iterator8Iterator8try_fold17h3b3502f7a9ed6d38E.exit.thread.sink.split ], [ null, %"_ZN4core4iter6traits8iterator8Iterator8find_map5check28_$u7b$$u7b$closure$u7d$$u7d$17h9e6987ca5bb6ee6cE.exit.i" ] ret ptr %.0 } @@ -5572,11 +5575,12 @@ _ZN4core4iter6traits8iterator8Iterator8try_fold17h22ddfba63af05661E.exit.thread. %.sink36 = phi i64 [ %17, %16 ], [ %40, %39 ] %45 = getelementptr inbounds nuw i8, ptr %.lcssa34.sink, i64 8 %46 = load ptr, ptr %45, align 8, !noalias !4, !nonnull !4, !noundef !4 - %47 = getelementptr inbounds { { { { [2 x i64] } } }, i64, { { i8, [31 x i8] }, ptr, i8, [7 x i8] } }, ptr %46, i64 %.sink36, i32 2 + %47 = getelementptr inbounds { { { { [2 x i64] } } }, i64, { { i8, [31 x i8] }, ptr, i8, [7 x i8] } }, ptr %46, i64 %.sink36 + %48 = getelementptr inbounds nuw i8, ptr %47, i64 24 br label %_ZN4core4iter6traits8iterator8Iterator8try_fold17h22ddfba63af05661E.exit.thread _ZN4core4iter6traits8iterator8Iterator8try_fold17h22ddfba63af05661E.exit.thread: ; preds = %"_ZN4core4iter6traits8iterator8Iterator8find_map5check28_$u7b$$u7b$closure$u7d$$u7d$17h44a291402eea8086E.exit.i", %_ZN4core4iter6traits8iterator8Iterator8try_fold17h22ddfba63af05661E.exit.thread.sink.split, %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h34ed52f3039c75c3E.exit", %28 - %.0 = phi ptr [ null, %28 ], [ %26, %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h34ed52f3039c75c3E.exit" ], [ %47, %_ZN4core4iter6traits8iterator8Iterator8try_fold17h22ddfba63af05661E.exit.thread.sink.split ], [ null, %"_ZN4core4iter6traits8iterator8Iterator8find_map5check28_$u7b$$u7b$closure$u7d$$u7d$17h44a291402eea8086E.exit.i" ] + %.0 = phi ptr [ null, %28 ], [ %26, %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h34ed52f3039c75c3E.exit" ], [ %48, %_ZN4core4iter6traits8iterator8Iterator8try_fold17h22ddfba63af05661E.exit.thread.sink.split ], [ null, %"_ZN4core4iter6traits8iterator8Iterator8find_map5check28_$u7b$$u7b$closure$u7d$$u7d$17h44a291402eea8086E.exit.i" ] ret ptr %.0 } diff --git a/bench/uv-rs/optimized/b1g2y9imcx7brty5xgizhygb8.ll b/bench/uv-rs/optimized/b1g2y9imcx7brty5xgizhygb8.ll index 8444fa35479..144817c250a 100644 --- a/bench/uv-rs/optimized/b1g2y9imcx7brty5xgizhygb8.ll +++ b/bench/uv-rs/optimized/b1g2y9imcx7brty5xgizhygb8.ll @@ -162,9 +162,8 @@ define internal fastcc { i64, ptr } @"_ZN100_$LT$core..iter..adapters..take..Tak %28 = ptrtoint ptr %26 to i64 %29 = sub nuw i64 %27, %28 %.not.i.not.i2 = icmp ult i64 %23, %29 - %30 = getelementptr inbounds i8, ptr %26, i64 %23 - %31 = getelementptr inbounds nuw i8, ptr %30, i64 1 - %storemerge.i.i3 = select i1 %.not.i.not.i2, ptr %31, ptr %25 + %30 = getelementptr inbounds i8, ptr %26, i64 %4 + %storemerge.i.i3 = select i1 %.not.i.not.i2, ptr %30, ptr %25 store ptr %storemerge.i.i3, ptr %0, align 8, !alias.scope !10 br i1 %.not.i.not.i2, label %32, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17hf6be4fb9cf2347b1E.exit6" diff --git a/bench/verilator/optimized/V3Delayed.ll b/bench/verilator/optimized/V3Delayed.ll index c9fc7a30539..9bb97f7c9e5 100644 --- a/bench/verilator/optimized/V3Delayed.ll +++ b/bench/verilator/optimized/V3Delayed.ll @@ -5192,40 +5192,41 @@ _ZNSt3setIP10AstSenTreeSt4lessIS1_ESaIS1_EE5clearEv.exit: ; preds = %._crit_edge 52: ; preds = %.lr.ph30, %_ZN20AstUserAllocatorBaseI11AstVarScopeN14DelayedVisitor12VarScopeInfoELi1EEclIJEEERS2_PS0_DpOT_.exit %53 = phi ptr [ %35, %.lr.ph30 ], [ %85, %_ZN20AstUserAllocatorBaseI11AstVarScopeN14DelayedVisitor12VarScopeInfoELi1EEclIJEEERS2_PS0_DpOT_.exit ] %.029 = phi i64 [ %10, %.lr.ph30 ], [ %83, %_ZN20AstUserAllocatorBaseI11AstVarScopeN14DelayedVisitor12VarScopeInfoELi1EEclIJEEERS2_PS0_DpOT_.exit ] - %54 = getelementptr inbounds nuw %"struct.DelayedVisitor::NBA", ptr %53, i64 %.029, i32 1 - %55 = load ptr, ptr %54, align 8, !tbaa !245 - %56 = getelementptr inbounds nuw i8, ptr %55, i64 112 - %57 = load i32, ptr %56, align 8, !tbaa !148 - %58 = load i32, ptr @_ZN12VNUser1InUse12s_userCntGblE, align 4, !tbaa !16 - %59 = icmp ne i32 %57, %58 - %60 = getelementptr inbounds nuw i8, ptr %55, i64 104 - %61 = load i64, ptr %60, align 8 - %62 = inttoptr i64 %61 to ptr - %.not7.i = icmp eq i64 %61, 0 - %.not.i = select i1 %59, i1 true, i1 %.not7.i - br i1 %.not.i, label %63, label %_ZN20AstUserAllocatorBaseI11AstVarScopeN14DelayedVisitor12VarScopeInfoELi1EEclIJEEERS2_PS0_DpOT_.exit - -63: ; preds = %52 - %64 = load ptr, ptr %41, align 8, !tbaa !197 - %65 = load ptr, ptr %42, align 8, !tbaa !198 - %66 = getelementptr inbounds i8, ptr %65, i64 -56 - %.not.i.i = icmp eq ptr %64, %66 - br i1 %.not.i.i, label %70, label %67 - -67: ; preds = %63 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %64, i8 0, i64 56, i1 false) - %68 = load ptr, ptr %41, align 8, !tbaa !197 - %69 = getelementptr inbounds nuw i8, ptr %68, i64 56 - store ptr %69, ptr %41, align 8, !tbaa !197 + %54 = getelementptr inbounds nuw %"struct.DelayedVisitor::NBA", ptr %53, i64 %.029 + %55 = getelementptr inbounds nuw i8, ptr %54, i64 8 + %56 = load ptr, ptr %55, align 8, !tbaa !245 + %57 = getelementptr inbounds nuw i8, ptr %56, i64 112 + %58 = load i32, ptr %57, align 8, !tbaa !148 + %59 = load i32, ptr @_ZN12VNUser1InUse12s_userCntGblE, align 4, !tbaa !16 + %60 = icmp ne i32 %58, %59 + %61 = getelementptr inbounds nuw i8, ptr %56, i64 104 + %62 = load i64, ptr %61, align 8 + %63 = inttoptr i64 %62 to ptr + %.not7.i = icmp eq i64 %62, 0 + %.not.i = select i1 %60, i1 true, i1 %.not7.i + br i1 %.not.i, label %64, label %_ZN20AstUserAllocatorBaseI11AstVarScopeN14DelayedVisitor12VarScopeInfoELi1EEclIJEEERS2_PS0_DpOT_.exit + +64:; preds = %52 + %65 = load ptr, ptr %41, align 8, !tbaa !197 + %66 = load ptr, ptr %42, align 8, !tbaa !198 + %67 = getelementptr inbounds i8, ptr %66, i64 -56 + %.not.i.i = icmp eq ptr %65, %67 + br i1 %.not.i.i, label %71, label %68 + +68:; preds = %64 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %65, i8 0, i64 56, i1 false) + %69 = load ptr, ptr %41, align 8, !tbaa !197 + %70 = getelementptr inbounds nuw i8, ptr %69, i64 56 + store ptr %70, ptr %41, align 8, !tbaa !197 br label %_ZNSt5dequeIN14DelayedVisitor12VarScopeInfoESaIS1_EE12emplace_backIJEEERS1_DpOT_.exit.i -70: ; preds = %63 +70: ; preds = %64 tail call void @_ZNSt5dequeIN14DelayedVisitor12VarScopeInfoESaIS1_EE16_M_push_back_auxIJEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %40) %.pre.i = load ptr, ptr %41, align 8, !tbaa !199, !noalias !301 br label %_ZNSt5dequeIN14DelayedVisitor12VarScopeInfoESaIS1_EE12emplace_backIJEEERS1_DpOT_.exit.i -_ZNSt5dequeIN14DelayedVisitor12VarScopeInfoESaIS1_EE12emplace_backIJEEERS1_DpOT_.exit.i: ; preds = %70, %67 - %71 = phi ptr [ %.pre.i, %70 ], [ %69, %67 ] +_ZNSt5dequeIN14DelayedVisitor12VarScopeInfoESaIS1_EE12emplace_backIJEEERS1_DpOT_.exit.i: ; preds = %70, %68 + %71 = phi ptr [ %.pre.i, %71 ], [ %70, %68 ] %72 = load ptr, ptr %43, align 8, !tbaa !203, !noalias !304 %73 = icmp eq ptr %71, %72 br i1 %73, label %74, label %_ZNSt5dequeIN14DelayedVisitor12VarScopeInfoESaIS1_EE4backEv.exit.i @@ -5238,26 +5239,26 @@ _ZNSt5dequeIN14DelayedVisitor12VarScopeInfoESaIS1_EE12emplace_backIJEEERS1_DpOT_ br label %_ZNSt5dequeIN14DelayedVisitor12VarScopeInfoESaIS1_EE4backEv.exit.i _ZNSt5dequeIN14DelayedVisitor12VarScopeInfoESaIS1_EE4backEv.exit.i: ; preds = %74, %_ZNSt5dequeIN14DelayedVisitor12VarScopeInfoESaIS1_EE12emplace_backIJEEERS1_DpOT_.exit.i - %79 = phi ptr [ %78, %74 ], [ %71, %_ZNSt5dequeIN14DelayedVisitor12VarScopeInfoESaIS1_EE12emplace_backIJEEERS1_DpOT_.exit.i ] + %79 = phi ptr [ %78, %75 ], [ %71, %_ZNSt5dequeIN14DelayedVisitor12VarScopeInfoESaIS1_EE12emplace_backIJEEERS1_DpOT_.exit.i ] %80 = getelementptr inbounds i8, ptr %79, i64 -56 %81 = ptrtoint ptr %80 to i64 - store i64 %81, ptr %60, align 8, !tbaa !14 + store i64 %81, ptr %61, align 8, !tbaa !14 %82 = load i32, ptr @_ZN12VNUser1InUse12s_userCntGblE, align 4, !tbaa !16 - store i32 %82, ptr %56, align 8, !tbaa !148 + store i32 %82, ptr %57, align 8, !tbaa !148 br label %_ZN20AstUserAllocatorBaseI11AstVarScopeN14DelayedVisitor12VarScopeInfoELi1EEclIJEEERS2_PS0_DpOT_.exit _ZN20AstUserAllocatorBaseI11AstVarScopeN14DelayedVisitor12VarScopeInfoELi1EEclIJEEERS2_PS0_DpOT_.exit: ; preds = %52, %_ZNSt5dequeIN14DelayedVisitor12VarScopeInfoESaIS1_EE4backEv.exit.i - %.0.i = phi ptr [ %62, %52 ], [ %80, %_ZNSt5dequeIN14DelayedVisitor12VarScopeInfoESaIS1_EE4backEv.exit.i ] + %.0.i = phi ptr [ %63, %52 ], [ %80, %_ZNSt5dequeIN14DelayedVisitor12VarScopeInfoESaIS1_EE4backEv.exit.i ] tail call void @_ZN14DelayedVisitor12VarScopeInfo14addSensitivityEP10AstSenItem(ptr noundef nonnull align 8 dereferenceable(56) %.0.i, ptr noundef %.015.lcssa) %83 = add nuw i64 %.029, 1 %84 = load ptr, ptr %4, align 8, !tbaa !236 %85 = load ptr, ptr %3, align 8, !tbaa !68 - %86 = ptrtoint ptr %84 to i64 %87 = ptrtoint ptr %85 to i64 - %88 = sub i64 %86, %87 - %89 = ashr exact i64 %88, 4 - %90 = icmp ult i64 %83, %89 - br i1 %90, label %52, label %._crit_edge31, !llvm.loop !307 + %88 = ptrtoint ptr %86 to i64 + %89 = sub i64 %87, %88 + %90 = ashr exact i64 %89, 4 + %91 = icmp ult i64 %84, %90 + br i1 %91, label %52, label %._crit_edge31, !llvm.loop !307 91: ; preds = %_ZN9VNVisitor15iterateChildrenEP7AstNode.exit, %._crit_edge31 ret void diff --git a/bench/verilator/optimized/V3Subst.ll b/bench/verilator/optimized/V3Subst.ll index ea4347d03ea..af6105999c8 100644 --- a/bench/verilator/optimized/V3Subst.ll +++ b/bench/verilator/optimized/V3Subst.ll @@ -4202,7 +4202,7 @@ _ZNK13SubstVarEntry9wordNumOkEi.exit.i: ; preds = %131, %130 br i1 %137, label %138, label %_ZNK13SubstVarEntry11getWordStepEi.exit 138: ; preds = %_ZNK13SubstVarEntry9wordNumOkEi.exit.i - %139 = getelementptr inbounds nuw %class.SubstVarWord, ptr %108, i64 %107, i32 1 + %139 = getelementptr inbounds nuw i8, ptr %109, i64 8 %140 = load i32, ptr %139, align 8, !tbaa !189 br label %_ZNK13SubstVarEntry11getWordStepEi.exit @@ -4216,37 +4216,39 @@ _ZNK13SubstVarEntry11getWordStepEi.exit: ; preds = %_ZNK13SubstVarEntry 144: ; preds = %_ZNK13SubstVarEntry11getWordStepEi.exit call void @_ZN12SubstVisitor15replaceSubstEtcEP7AstNodeP11AstNodeExpr(ptr noundef nonnull align 8 dereferenceable(144) %0, ptr noundef nonnull %1, ptr noundef nonnull %129) - br label %149 + br label %150 145: ; preds = %_ZNK13SubstVarEntry11getWordStepEi.exit %146 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !130 - %147 = getelementptr inbounds nuw %class.SubstVarWord, ptr %146, i64 %107, i32 2 - store i8 1, ptr %147, align 4, !tbaa !131 - %148 = getelementptr inbounds nuw i8, ptr %100, i64 9 - store i8 1, ptr %148, align 1, !tbaa !190 - br label %149 - -149: ; preds = %144, %145 + %147 = getelementptr inbounds nuw %class.SubstVarWord, ptr %146, i64 %107 + %148 = getelementptr inbounds nuw i8, ptr %147, i64 12 + store i8 1, ptr %148, align 4, !tbaa !131 + %149 = getelementptr inbounds nuw i8, ptr %100, i64 9 + store i8 1, ptr %149, align 1, !tbaa !190 + br label %150 + +150: ; preds = %144, %145 call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %156 _ZN13SubstVarEntry9substWordEP7AstNodei.exit.thread: ; preds = %_ZN12SubstVisitor9getEntrypEP9AstVarRef.exit._ZN13SubstVarEntry9substWordEP7AstNodei.exit.thread_crit_edge, %106, %_ZN13SubstVarEntry9substWordEP7AstNodei.exit %.pre-phi = phi i64 [ %.pre49, %_ZN12SubstVisitor9getEntrypEP9AstVarRef.exit._ZN13SubstVarEntry9substWordEP7AstNodei.exit.thread_crit_edge ], [ %107, %106 ], [ %107, %_ZN13SubstVarEntry9substWordEP7AstNodei.exit ] %150 = phi ptr [ %.pre, %_ZN12SubstVisitor9getEntrypEP9AstVarRef.exit._ZN13SubstVarEntry9substWordEP7AstNodei.exit.thread_crit_edge ], [ %108, %106 ], [ %108, %_ZN13SubstVarEntry9substWordEP7AstNodei.exit ] - %151 = getelementptr inbounds nuw %class.SubstVarWord, ptr %150, i64 %.pre-phi, i32 2 - store i8 1, ptr %151, align 4, !tbaa !131 - %152 = getelementptr inbounds nuw i8, ptr %100, i64 9 - store i8 1, ptr %152, align 1, !tbaa !190 - br label %156 + %151 = getelementptr inbounds nuw %class.SubstVarWord, ptr %150, i64 %.pre-phi + %153 = getelementptr inbounds nuw i8, ptr %151, i64 12 + store i8 1, ptr %153, align 4, !tbaa !131 + %154 = getelementptr inbounds nuw i8, ptr %100, i64 9 + store i8 1, ptr %154, align 1, !tbaa !190 + br label %158 .critedge: ; preds = %25, %33, %_ZN12SubstVisitor10isSubstVarEP6AstVar.exit, %_ZN7AstNode11privateCastI8AstConstP11AstNodeExprEEPT_PS_.exit %153 = load ptr, ptr %15, align 8, !tbaa !15 %154 = getelementptr inbounds nuw i8, ptr %153, i64 288 %155 = load ptr, ptr %154, align 8 - tail call void %155(ptr noundef nonnull align 8 dereferenceable(152) %15, ptr noundef nonnull align 8 dereferenceable(32) %0) + tail call void %157(ptr noundef nonnull align 8 dereferenceable(152) %15, ptr noundef nonnull align 8 dereferenceable(32) %0) br label %156 -156: ; preds = %.critedge, %_ZN13SubstVarEntry9substWordEP7AstNodei.exit.thread, %149, %2 +156: ; preds = %.critedge, %_ZN13SubstVarEntry9substWordEP7AstNodei.exit.thread, %150, %2 ret void } @@ -5727,7 +5729,7 @@ _ZNK13SubstVarEntry14getWordAssignpEi.exit: ; preds = %_ZNK13SubstVarEntry br i1 %.not, label %_ZNK13SubstVarEntry14getWordAssignpEi.exit.thread, label %18 _ZNK13SubstVarEntry14getWordAssignpEi.exit.thread: ; preds = %_ZNK13SubstVarEntry14getWordAssignpEi.exit - %.phi.trans.insert7 = getelementptr inbounds nuw %class.SubstVarWord, ptr %14, i64 %13, i32 3 + %.phi.trans.insert7 = getelementptr inbounds nuw i8, ptr %15, i64 13 %.pre8 = load i8, ptr %.phi.trans.insert7, align 1, !tbaa !133, !range !57 %17 = trunc nuw i8 %.pre8 to i1 br i1 %17, label %18, label %20 @@ -5737,12 +5739,14 @@ _ZNK13SubstVarEntry14getWordAssignpEi.exit.thread: ; preds = %_ZNK13SubstVarEntr store i8 1, ptr %19, align 1, !tbaa !167 %.phi.trans.insert9 = getelementptr inbounds nuw i8, ptr %0, i64 32 %.pre10 = load ptr, ptr %.phi.trans.insert9, align 8, !tbaa !130 + %.pre13 = sext i32 %1 to i64 br label %20 20: ; preds = %18, %_ZNK13SubstVarEntry14getWordAssignpEi.exit.thread - %21 = phi ptr [ %.pre10, %18 ], [ %14, %_ZNK13SubstVarEntry14getWordAssignpEi.exit.thread ] - %22 = sext i32 %1 to i64 - %23 = getelementptr inbounds nuw %class.SubstVarWord, ptr %21, i64 %22, i32 3 + %21 = phi i64 [ %.pre13, %18 ], [ %13, %_ZNK13SubstVarEntry14getWordAssignpEi.exit.thread ] + %21 = phi ptr [ %.pre11, %18 ], [ %14, %_ZNK13SubstVarEntry14getWordAssignpEi.exit.thread ] + %23 = getelementptr inbounds nuw %class.SubstVarWord, ptr %21, i64 %21 + %23 = getelementptr inbounds nuw i8, ptr %22, i64 13 store i8 1, ptr %23, align 1, !tbaa !133 ret void } @@ -5777,7 +5781,7 @@ _ZNK13SubstVarEntry14getWordAssignpEi.exit: ; preds = %_ZNK13SubstVarEntry br i1 %.not, label %_ZNK13SubstVarEntry14getWordAssignpEi.exit.thread, label %20 _ZNK13SubstVarEntry14getWordAssignpEi.exit.thread: ; preds = %_ZNK13SubstVarEntry14getWordAssignpEi.exit - %.phi.trans.insert13 = getelementptr inbounds nuw %class.SubstVarWord, ptr %16, i64 %15, i32 3 + %.phi.trans.insert13 = getelementptr inbounds nuw i8, ptr %17, i64 13 %.pre14 = load i8, ptr %.phi.trans.insert13, align 1, !tbaa !133, !range !57 %19 = trunc nuw i8 %.pre14 to i1 br i1 %19, label %20, label %22 diff --git a/bench/wasmedge/optimized/argument_parser.ll b/bench/wasmedge/optimized/argument_parser.ll index cdf4b4007bd..2ae3361cb31 100644 --- a/bench/wasmedge/optimized/argument_parser.ll +++ b/bench/wasmedge/optimized/argument_parser.ll @@ -1676,8 +1676,8 @@ define void @_ZNK8WasmEdge2PO14ArgumentParser20SubCommandDescriptor5usageEP8_IO_ br label %45 45: ; preds = %.lr.ph354, %76 - %.0352 = phi i1 [ true, %.lr.ph354 ], [ %.1, %76 ] - %.sroa.0329.0351 = phi ptr [ %39, %.lr.ph354 ], [ %77, %76 ] + %.0352 = phi i1 [ true, %.lr.ph354 ], [ %.1, %77 ] + %.sroa.0329.0351 = phi ptr [ %39, %.lr.ph354 ], [ %77, %77 ] %46 = load i64, ptr %.sroa.0329.0351, align 8 %47 = load ptr, ptr %42, align 8 %48 = getelementptr inbounds %"class.WasmEdge::PO::ArgumentParser::ArgumentDescriptor", ptr %47, i64 %46 @@ -1710,11 +1710,12 @@ define void @_ZNK8WasmEdge2PO14ArgumentParser20SubCommandDescriptor5usageEP8_IO_ 60: ; preds = %59, %58 %61 = load i64, ptr %.sroa.0329.0351, align 8 %62 = load ptr, ptr %42, align 8 - %63 = getelementptr inbounds %"class.WasmEdge::PO::ArgumentParser::ArgumentDescriptor", ptr %62, i64 %61, i32 4 - %64 = load i64, ptr %63, align 8 - switch i64 %64, label %71 [ - i64 0, label %74 - i64 1, label %65 + %63 = getelementptr inbounds %"class.WasmEdge::PO::ArgumentParser::ArgumentDescriptor", ptr %62, i64 %61 + %64 = getelementptr inbounds nuw i8, ptr %63, i64 48 + %65 = load i64, ptr %64, align 8 + switch i64 %65, label %72 [ + i64 0, label %75 + i64 1, label %66 ] 65: ; preds = %60 @@ -1728,11 +1729,11 @@ define void @_ZNK8WasmEdge2PO14ArgumentParser20SubCommandDescriptor5usageEP8_IO_ br label %.invoke .invoke: ; preds = %71, %65 - %68 = phi ptr [ @.str.8, %65 ], [ @.str.9, %71 ] - %69 = phi i64 [ 2, %65 ], [ 6, %71 ] - %70 = phi ptr [ %3, %65 ], [ %4, %71 ] + %68 = phi ptr [ @.str.8, %66 ], [ @.str.9, %72 ] + %69 = phi i64 [ 2, %66 ], [ 6, %72 ] + %70 = phi ptr [ %3, %66 ], [ %4, %72 ] invoke void @_ZN3fmt2v86vprintEP8_IO_FILENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE(ptr noundef %1, ptr nonnull %68, i64 %69, i64 13, ptr nonnull %70) - to label %74 unwind label %.loopexit + to label %75 unwind label %.loopexit 71: ; preds = %60 %72 = getelementptr inbounds nuw i8, ptr %48, i64 16 @@ -1749,17 +1750,17 @@ define void @_ZNK8WasmEdge2PO14ArgumentParser20SubCommandDescriptor5usageEP8_IO_ 75: ; preds = %74 invoke void @_ZN3fmt2v86vprintEP8_IO_FILENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE(ptr noundef %1, ptr nonnull @.str.10, i64 1, i64 0, ptr nonnull %10) - to label %76 unwind label %.loopexit + to label %77 unwind label %.loopexit 76: ; preds = %74, %75, %45 - %.1 = phi i1 [ %.0352, %45 ], [ false, %75 ], [ false, %74 ] + %.1 = phi i1 [ %.0352, %45 ], [ false, %76 ], [ false, %75 ] %77 = getelementptr inbounds nuw i8, ptr %.sroa.0329.0351, i64 8 %.not344 = icmp eq ptr %77, %41 br i1 %.not344, label %._crit_edge355, label %45 ._crit_edge355: ; preds = %76, %37 invoke void @_ZN3fmt2v86vprintEP8_IO_FILENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE(ptr noundef %1, ptr nonnull @.str.11, i64 1, i64 0, ptr nonnull %11) - to label %78 unwind label %.loopexit.split-lp.loopexit.split-lp + to label %79 unwind label %.loopexit.split-lp.loopexit.split-lp 78: ; preds = %._crit_edge355 ret void diff --git a/bench/wasmi-rs/optimized/3em73trntqi993rygef50yj09.ll b/bench/wasmi-rs/optimized/3em73trntqi993rygef50yj09.ll index 89e2c4ffd69..244c7c98097 100644 --- a/bench/wasmi-rs/optimized/3em73trntqi993rygef50yj09.ll +++ b/bench/wasmi-rs/optimized/3em73trntqi993rygef50yj09.ll @@ -62,31 +62,33 @@ define internal fastcc void @"_ZN4core3ptr150drop_in_place$LT$alloc..vec..Vec$LT br label %"_ZN4core3ptr127drop_in_place$LT$$LP$u32$C$alloc..vec..Vec$LT$$LP$usize$C$wasmparser..readers..core..branch_hinting..BranchHint$RP$$GT$$RP$$GT$17h7778c0c1a1a16810E.exit.i.i" "_ZN4core3ptr127drop_in_place$LT$$LP$u32$C$alloc..vec..Vec$LT$$LP$usize$C$wasmparser..readers..core..branch_hinting..BranchHint$RP$$GT$$RP$$GT$17h7778c0c1a1a16810E.exit.i.i": ; preds = %5, %1 - %.sroa.0.0.i.i = phi i64 [ 0, %1 ], [ %6, %5 ] + %.sroa.0.0.i.i = phi i64 [ 0, %1 ], [ %7, %5 ] %4 = icmp eq i64 %.sroa.0.0.i.i, %.val1 br i1 %4, label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8f770e3a4e150701E.exit", label %5 5: ; preds = %"_ZN4core3ptr127drop_in_place$LT$$LP$u32$C$alloc..vec..Vec$LT$$LP$usize$C$wasmparser..readers..core..branch_hinting..BranchHint$RP$$GT$$RP$$GT$17h7778c0c1a1a16810E.exit.i.i" - %6 = add i64 %.sroa.0.0.i.i, 1 - %7 = getelementptr inbounds nuw { i32, [1 x i32], { { { i64, ptr, {} }, {} }, i64 } }, ptr %.val, i64 %.sroa.0.0.i.i, i32 2 - invoke void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h740b8a06a0521140E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7, i64 noundef 8, i64 noundef 16) - to label %"_ZN4core3ptr127drop_in_place$LT$$LP$u32$C$alloc..vec..Vec$LT$$LP$usize$C$wasmparser..readers..core..branch_hinting..BranchHint$RP$$GT$$RP$$GT$17h7778c0c1a1a16810E.exit.i.i" unwind label %9 - -"_ZN4core3ptr127drop_in_place$LT$$LP$u32$C$alloc..vec..Vec$LT$$LP$usize$C$wasmparser..readers..core..branch_hinting..BranchHint$RP$$GT$$RP$$GT$17h7778c0c1a1a16810E.exit7.i.i": ; preds = %11, %9 - %.sroa.0.1.i.i = phi i64 [ %6, %9 ], [ %12, %11 ] - %8 = icmp eq i64 %.sroa.0.1.i.i, %.val1 - br i1 %8, label %.body, label %11 - -9: ; preds = %5 - %10 = landingpad { ptr, i32 } + %6 = getelementptr inbounds nuw { i32, [1 x i32], { { { i64, ptr, {} }, {} }, i64 } }, ptr %.val, i64 %.sroa.0.0.i.i + %7 = add i64 %.sroa.0.0.i.i, 1 + %8 = getelementptr inbounds nuw i8, ptr %6, i64 8 + invoke void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h740b8a06a0521140E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %8, i64 noundef 8, i64 noundef 16) + to label %"_ZN4core3ptr127drop_in_place$LT$$LP$u32$C$alloc..vec..Vec$LT$$LP$usize$C$wasmparser..readers..core..branch_hinting..BranchHint$RP$$GT$$RP$$GT$17h7778c0c1a1a16810E.exit.i.i" unwind label %10 + +"_ZN4core3ptr127drop_in_place$LT$$LP$u32$C$alloc..vec..Vec$LT$$LP$usize$C$wasmparser..readers..core..branch_hinting..BranchHint$RP$$GT$$RP$$GT$17h7778c0c1a1a16810E.exit7.i.i": ; preds = %12, %10 + %.sroa.0.1.i.i = phi i64 [ %7, %10 ], [ %14, %12 ] + %9 = icmp eq i64 %.sroa.0.1.i.i, %.val1 + br i1 %9, label %.body, label %12 + +10:; preds = %5 + %11 = landingpad { ptr, i32 } cleanup br label %"_ZN4core3ptr127drop_in_place$LT$$LP$u32$C$alloc..vec..Vec$LT$$LP$usize$C$wasmparser..readers..core..branch_hinting..BranchHint$RP$$GT$$RP$$GT$17h7778c0c1a1a16810E.exit7.i.i" 11: ; preds = %"_ZN4core3ptr127drop_in_place$LT$$LP$u32$C$alloc..vec..Vec$LT$$LP$usize$C$wasmparser..readers..core..branch_hinting..BranchHint$RP$$GT$$RP$$GT$17h7778c0c1a1a16810E.exit7.i.i" - %12 = add i64 %.sroa.0.1.i.i, 1 - %13 = getelementptr inbounds nuw { i32, [1 x i32], { { { i64, ptr, {} }, {} }, i64 } }, ptr %.val, i64 %.sroa.0.1.i.i, i32 2 - invoke void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h740b8a06a0521140E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %13, i64 noundef 8, i64 noundef 16) - to label %"_ZN4core3ptr127drop_in_place$LT$$LP$u32$C$alloc..vec..Vec$LT$$LP$usize$C$wasmparser..readers..core..branch_hinting..BranchHint$RP$$GT$$RP$$GT$17h7778c0c1a1a16810E.exit7.i.i" unwind label %14 + %13 = getelementptr inbounds nuw { i32, [1 x i32], { { { i64, ptr, {} }, {} }, i64 } }, ptr %.val, i64 %.sroa.0.1.i.i + %14 = add i64 %.sroa.0.1.i.i, 1 + %15 = getelementptr inbounds nuw i8, ptr %13, i64 8 + invoke void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h740b8a06a0521140E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %15, i64 noundef 8, i64 noundef 16) + to label %"_ZN4core3ptr127drop_in_place$LT$$LP$u32$C$alloc..vec..Vec$LT$$LP$usize$C$wasmparser..readers..core..branch_hinting..BranchHint$RP$$GT$$RP$$GT$17h7778c0c1a1a16810E.exit7.i.i" unwind label %16 14: ; preds = %11 %15 = landingpad { ptr, i32 } @@ -109,7 +111,7 @@ define internal fastcc void @"_ZN4core3ptr150drop_in_place$LT$alloc..vec..Vec$LT unreachable "_ZN4core3ptr157drop_in_place$LT$alloc..raw_vec..RawVec$LT$$LP$u32$C$alloc..vec..Vec$LT$$LP$usize$C$wasmparser..readers..core..branch_hinting..BranchHint$RP$$GT$$RP$$GT$$GT$17h742cf873e9f7d9a2E.exit": ; preds = %.body - resume { ptr, i32 } %10 + resume { ptr, i32 } %11 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/wasmtime-rs/optimized/4qgt4edt0wnnlcua.ll b/bench/wasmtime-rs/optimized/4qgt4edt0wnnlcua.ll index 4c11e93bd03..c2a8ee89e19 100644 --- a/bench/wasmtime-rs/optimized/4qgt4edt0wnnlcua.ll +++ b/bench/wasmtime-rs/optimized/4qgt4edt0wnnlcua.ll @@ -3990,24 +3990,25 @@ define hidden void @_ZN16wasmtime_runtime8instance9allocator7pooling11memory_poo %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 %11 = load ptr, ptr %10, align 8, !nonnull !4, !noundef !4 %12 = urem i64 %4, %6 - %13 = getelementptr inbounds { { { { { i32 } }, { { i8 } }, [3 x i8], { { { { i64, ptr, {} }, i64 }, { { i32, [1 x i32] }, { i32, [1 x i32] } }, { { { { ptr, i64, i64, i64 }, {}, {} }, { i64, i64 } } }, i32, i32, i32, [1 x i32] } } } }, { i32, [2 x i32] }, [1 x i32] }, ptr %11, i64 %12, i32 1 - %14 = load i32, ptr %13, align 8, !range !120, !noundef !4 - %trunc = trunc nuw i32 %14 to i1 - br i1 %trunc, label %15, label %22 - -15: ; preds = %9 - %16 = getelementptr inbounds nuw i8, ptr %13, i64 4 - %17 = load i32, ptr %16, align 4, !noundef !4 - %18 = getelementptr inbounds nuw i8, ptr %13, i64 8 - %19 = load i32, ptr %18, align 4, !noundef !4 - %20 = getelementptr inbounds nuw i8, ptr %0, i64 4 - store i32 %17, ptr %20, align 4 - %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %19, ptr %21, align 4 - br label %22 - -22: ; preds = %9, %15 - %storemerge = phi i32 [ 1, %15 ], [ 0, %9 ] + %13 = getelementptr inbounds { { { { { i32 } }, { { i8 } }, [3 x i8], { { { { i64, ptr, {} }, i64 }, { { i32, [1 x i32] }, { i32, [1 x i32] } }, { { { { ptr, i64, i64, i64 }, {}, {} }, { i64, i64 } } }, i32, i32, i32, [1 x i32] } } } }, { i32, [2 x i32] }, [1 x i32] }, ptr %11, i64 %12 + %14 = getelementptr inbounds nuw i8, ptr %13, i64 112 + %15 = load i32, ptr %14, align 8, !range !120, !noundef !4 + %trunc = trunc nuw i32 %15 to i1 + br i1 %trunc, label %16, label %23 + +16: ; preds = %9 + %17 = getelementptr inbounds nuw i8, ptr %13, i64 116 + %18 = load i32, ptr %17, align 4, !noundef !4 + %19 = getelementptr inbounds nuw i8, ptr %13, i64 120 + %20 = load i32, ptr %19, align 4, !noundef !4 + %21 = getelementptr inbounds nuw i8, ptr %0, i64 4 + store i32 %18, ptr %21, align 4 + %22 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i32 %20, ptr %22, align 4 + br label %23 + +23:; preds = %9, %16 + %storemerge = phi i32 [ 1, %16 ], [ 0, %9 ] store i32 %storemerge, ptr %0, align 4 ret void } diff --git a/bench/yalantinglibs/optimized/binary_json_conformance_suite.ll b/bench/yalantinglibs/optimized/binary_json_conformance_suite.ll index bc48e785233..71913ce2a19 100644 --- a/bench/yalantinglibs/optimized/binary_json_conformance_suite.ll +++ b/bench/yalantinglibs/optimized/binary_json_conformance_suite.ll @@ -6214,7 +6214,8 @@ invoke.cont31: ; preds = %_ZN6google8protobuf call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp3.i) %119 = load i64, ptr %i, align 8 %120 = load ptr, ptr %values, align 8 - %second = getelementptr inbounds %"struct.std::pair", ptr %120, i64 %119, i32 1 + %second = getelementptr inbounds %"struct.std::pair", ptr %120, i64 %119 + %second = getelementptr inbounds nuw i8, ptr %add.ptr.i141, i64 32 call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp.i142) call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp2.i) call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp5.i) @@ -6265,7 +6266,7 @@ sw.bb.i: ; preds = %invoke.cont31 store i8 0, ptr %arrayidx.i.i.i.i.i.i, align 8, !alias.scope !44 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp.i.i.i) #23 call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp.i.i.i), !noalias !38 - %_M_string_length.i.i.i144 = getelementptr inbounds nuw i8, ptr %second, i64 8 + %_M_string_length.i.i.i144 = getelementptr inbounds nuw i8, ptr %second, i64 40 %121 = load i64, ptr %_M_string_length.i.i.i144, align 8 %122 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i, align 8 %cmp.i.i = icmp eq i64 %121, %122 @@ -6325,7 +6326,7 @@ sw.bb1.i: ; preds = %invoke.cont31 store i8 0, ptr %arrayidx.i.i.i.i.i9.i, align 4, !alias.scope !51 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp.i.i7.i) #23 call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp.i.i7.i), !noalias !45 - %_M_string_length.i.i10.i = getelementptr inbounds nuw i8, ptr %second, i64 8 + %_M_string_length.i.i10.i = getelementptr inbounds nuw i8, ptr %second, i64 40 %127 = load i64, ptr %_M_string_length.i.i10.i, align 8 %128 = load i64, ptr %_M_string_length.i.i.i.i.i.i8.i, align 8 %cmp.i12.i = icmp eq i64 %127, %128 @@ -6384,7 +6385,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit23.i: ; preds = %i store i8 0, ptr %arrayidx.i.i.i.i1500, align 1 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp.i1490) #23 call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp.i1490) - %_M_string_length.i.i24.i = getelementptr inbounds nuw i8, ptr %second, i64 8 + %_M_string_length.i.i24.i = getelementptr inbounds nuw i8, ptr %second, i64 40 %133 = load i64, ptr %_M_string_length.i.i24.i, align 8 %134 = load i64, ptr %_M_string_length.i.i.i.i.i1499, align 8 %cmp.i26.i = icmp eq i64 %133, %134 @@ -6444,7 +6445,7 @@ sw.bb7.i: ; preds = %invoke.cont31, %inv store i8 0, ptr %arrayidx.i.i.i.i.i40.i, align 8, !alias.scope !61 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp.i.i38.i) #23 call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp.i.i38.i), !noalias !55 - %_M_string_length.i.i41.i = getelementptr inbounds nuw i8, ptr %second, i64 8 + %_M_string_length.i.i41.i = getelementptr inbounds nuw i8, ptr %second, i64 40 %139 = load i64, ptr %_M_string_length.i.i41.i, align 8 %140 = load i64, ptr %_M_string_length.i.i.i.i.i.i39.i, align 8 %cmp.i43.i = icmp eq i64 %139, %140 @@ -6504,7 +6505,7 @@ sw.bb10.i: ; preds = %invoke.cont31, %inv store i8 0, ptr %arrayidx.i.i.i.i.i57.i, align 4, !alias.scope !68 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp.i.i55.i) #23 call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp.i.i55.i), !noalias !62 - %_M_string_length.i.i58.i = getelementptr inbounds nuw i8, ptr %second, i64 8 + %_M_string_length.i.i58.i = getelementptr inbounds nuw i8, ptr %second, i64 40 %145 = load i64, ptr %_M_string_length.i.i58.i, align 8 %146 = load i64, ptr %_M_string_length.i.i.i.i.i.i56.i, align 8 %cmp.i60.i = icmp eq i64 %145, %146 @@ -6598,7 +6599,7 @@ lpad.i.i: ; preds = %sw.bb13.i invoke.cont18.i: ; preds = %if.then.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i.i) #23 call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp.i.i) - %_M_string_length.i.i73.i = getelementptr inbounds nuw i8, ptr %second, i64 8 + %_M_string_length.i.i73.i = getelementptr inbounds nuw i8, ptr %second, i64 40 %154 = load i64, ptr %_M_string_length.i.i73.i, align 8 %155 = load i64, ptr %_M_string_length.i4.i74.i, align 8 %cmp.i75.i = icmp eq i64 %154, %155 @@ -6773,7 +6774,8 @@ invoke.cont43: ; preds = %if.then.i.i.i.i.i15 call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp.i1512) %166 = load i64, ptr %i, align 8 %167 = load ptr, ptr %values, align 8 - %second46 = getelementptr inbounds %"struct.std::pair", ptr %167, i64 %166, i32 1 + %second46 = getelementptr inbounds %"struct.std::pair", ptr %167, i64 %166 + %second46 = getelementptr inbounds nuw i8, ptr %add.ptr.i165, i64 32 invoke fastcc void @_ZN12_GLOBAL__N_13catERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_S7_S7_S7_S7_S7_S7_S7_S7_(ptr noalias align 8 %expected_proto, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp39, ptr noundef nonnull align 8 dereferenceable(32) %second46, ptr noundef nonnull align 8 dereferenceable(32) @_ZN12_GLOBAL__N_15emptyB5cxx11E, ptr noundef nonnull align 8 dereferenceable(32) @_ZN12_GLOBAL__N_15emptyB5cxx11E, ptr noundef nonnull align 8 dereferenceable(32) @_ZN12_GLOBAL__N_15emptyB5cxx11E, ptr noundef nonnull align 8 dereferenceable(32) @_ZN12_GLOBAL__N_15emptyB5cxx11E) to label %cleanup.action unwind label %lpad47 @@ -9818,7 +9820,8 @@ invoke.cont182: ; preds = %if.then.i.i.i.i.i18 call void @llvm.lifetime.end.p0(ptr nonnull %buf.i1872) call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp.i1873) %410 = load ptr, ptr %values, align 8 - %second184 = getelementptr inbounds %"struct.std::pair", ptr %410, i64 %i156.04295, i32 1 + %second184 = getelementptr inbounds %"struct.std::pair", ptr %410, i64 %i156.04295 + %second184 = getelementptr inbounds nuw i8, ptr %add.ptr.i441, i64 32 invoke fastcc void @_ZN12_GLOBAL__N_13catERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_S7_S7_S7_S7_S7_S7_S7_S7_(ptr noalias align 8 %ref.tmp177, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp178, ptr noundef nonnull align 8 dereferenceable(32) %second184, ptr noundef nonnull align 8 dereferenceable(32) @_ZN12_GLOBAL__N_15emptyB5cxx11E, ptr noundef nonnull align 8 dereferenceable(32) @_ZN12_GLOBAL__N_15emptyB5cxx11E, ptr noundef nonnull align 8 dereferenceable(32) @_ZN12_GLOBAL__N_15emptyB5cxx11E, ptr noundef nonnull align 8 dereferenceable(32) @_ZN12_GLOBAL__N_15emptyB5cxx11E) to label %invoke.cont186 unwind label %lpad185 @@ -10108,9 +10111,10 @@ invoke.cont194: ; preds = %.noexc505, %if.end. %arrayidx.i.i.i.i.i498 = getelementptr inbounds i8, ptr %434, i64 %add.i.i.i.i487 store i8 0, ptr %arrayidx.i.i.i.i.i498, align 1 %435 = load ptr, ptr %values, align 8 - %second197 = getelementptr inbounds %"struct.std::pair", ptr %435, i64 %i156.04295, i32 1 + %second197 = getelementptr inbounds %"struct.std::pair", ptr %435, i64 %i156.04295 + %second197 = getelementptr inbounds nuw i8, ptr %add.ptr.i507, i64 32 %436 = load ptr, ptr %second197, align 8 - %_M_string_length.i.i.i508 = getelementptr inbounds nuw i8, ptr %second197, i64 8 + %_M_string_length.i.i.i508 = getelementptr inbounds nuw i8, ptr %second197, i64 40 %437 = load i64, ptr %_M_string_length.i.i.i508, align 8 %438 = load i64, ptr %_M_string_length.i.i.i367, align 8 %sub3.i.i.i.i510 = sub i64 9223372036854775807, %438 @@ -10616,9 +10620,10 @@ invoke.cont217: ; preds = %.noexc604, %if.end. %arrayidx.i.i.i.i.i597 = getelementptr inbounds i8, ptr %473, i64 %add.i.i.i.i586 store i8 0, ptr %arrayidx.i.i.i.i.i597, align 1 %474 = load ptr, ptr %values, align 8 - %second220 = getelementptr inbounds %"struct.std::pair", ptr %474, i64 %i156.04295, i32 1 + %second220 = getelementptr inbounds %"struct.std::pair", ptr %474, i64 %i156.04295 + %second220 = getelementptr inbounds nuw i8, ptr %add.ptr.i606, i64 32 %475 = load ptr, ptr %second220, align 8 - %_M_string_length.i.i.i607 = getelementptr inbounds nuw i8, ptr %second220, i64 8 + %_M_string_length.i.i.i607 = getelementptr inbounds nuw i8, ptr %second220, i64 40 %476 = load i64, ptr %_M_string_length.i.i.i607, align 8 %477 = load i64, ptr %_M_string_length.i.i.i375, align 8 %sub3.i.i.i.i609 = sub i64 9223372036854775807, %477 @@ -11237,7 +11242,8 @@ invoke.cont247: ; preds = %if.then.i.i.i.i.i24 call void @llvm.lifetime.end.p0(ptr nonnull %buf.i2407) call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp.i2408) %518 = load ptr, ptr %values, align 8 - %second249 = getelementptr inbounds %"struct.std::pair", ptr %518, i64 %i156.04295, i32 1 + %second249 = getelementptr inbounds %"struct.std::pair", ptr %518, i64 %i156.04295 + %second249 = getelementptr inbounds nuw i8, ptr %add.ptr.i712, i64 32 invoke fastcc void @_ZN12_GLOBAL__N_13catERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_S7_S7_S7_S7_S7_S7_S7_S7_(ptr noalias align 8 %ref.tmp242, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp243, ptr noundef nonnull align 8 dereferenceable(32) %second249, ptr noundef nonnull align 8 dereferenceable(32) @_ZN12_GLOBAL__N_15emptyB5cxx11E, ptr noundef nonnull align 8 dereferenceable(32) @_ZN12_GLOBAL__N_15emptyB5cxx11E, ptr noundef nonnull align 8 dereferenceable(32) @_ZN12_GLOBAL__N_15emptyB5cxx11E, ptr noundef nonnull align 8 dereferenceable(32) @_ZN12_GLOBAL__N_15emptyB5cxx11E) to label %invoke.cont251 unwind label %lpad250 @@ -13428,7 +13434,8 @@ invoke.cont434: ; preds = %if.then.i.i.i.i.i26 call void @llvm.lifetime.end.p0(ptr nonnull %buf.i2587) call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp.i2588) %764 = load ptr, ptr %values, align 8 - %second436 = getelementptr inbounds %"struct.std::pair", ptr %764, i64 %i408.04301, i32 1 + %second436 = getelementptr inbounds %"struct.std::pair", ptr %764, i64 %i408.04301 + %second436 = getelementptr inbounds nuw i8, ptr %add.ptr.i1305, i64 32 invoke fastcc void @_ZN12_GLOBAL__N_13catERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_S7_S7_S7_S7_S7_S7_S7_S7_(ptr noalias align 8 %ref.tmp429, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp430, ptr noundef nonnull align 8 dereferenceable(32) %second436, ptr noundef nonnull align 8 dereferenceable(32) @_ZN12_GLOBAL__N_15emptyB5cxx11E, ptr noundef nonnull align 8 dereferenceable(32) @_ZN12_GLOBAL__N_15emptyB5cxx11E, ptr noundef nonnull align 8 dereferenceable(32) @_ZN12_GLOBAL__N_15emptyB5cxx11E, ptr noundef nonnull align 8 dereferenceable(32) @_ZN12_GLOBAL__N_15emptyB5cxx11E) to label %invoke.cont438 unwind label %lpad437 diff --git a/bench/yalantinglibs/optimized/test_messages_proto2.pb.ll b/bench/yalantinglibs/optimized/test_messages_proto2.pb.ll index 46764efdbf4..b78a29b5296 100644 --- a/bench/yalantinglibs/optimized/test_messages_proto2.pb.ll +++ b/bench/yalantinglibs/optimized/test_messages_proto2.pb.ll @@ -33379,7 +33379,8 @@ if.then.i.i2643: ; preds = %for.end447 for.body456: ; preds = %.noexc, %invoke.cont463 %i453.07484 = phi i64 [ %inc466, %invoke.cont463 ], [ 0, %.noexc ] %target.addr.447483 = phi ptr [ %call464, %invoke.cont463 ], [ %target.addr.42.lcssa, %.noexc ] - %second = getelementptr inbounds %"struct.google::protobuf::internal::SortItem", ptr %call424, i64 %i453.07484, i32 1 + %second = getelementptr inbounds %"struct.google::protobuf::internal::SortItem", ptr %call424, i64 %i453.07484 + %second = getelementptr inbounds nuw i8, ptr %arrayidx.i2647, i64 8 %165 = load ptr, ptr %second, align 8 %second462 = getelementptr inbounds nuw i8, ptr %165, i64 4 %call464 = invoke noundef ptr @_ZN6google8protobuf8internal13MapEntryFuncsIiiLNS1_14WireFormatLite9FieldTypeE5ELS4_5EE17InternalSerializeEiRKiS7_PhPNS0_2io19EpsCopyOutputStreamE(i32 noundef 56, ptr noundef nonnull align 4 dereferenceable(4) %165, ptr noundef nonnull align 4 dereferenceable(4) %second462, ptr noundef %target.addr.447483, ptr noundef %stream) @@ -33608,7 +33609,8 @@ if.then.i.i2737: ; preds = %for.end532 for.body542: ; preds = %.noexc2744, %invoke.cont551 %i539.07491 = phi i64 [ %inc554, %invoke.cont551 ], [ 0, %.noexc2744 ] %target.addr.477490 = phi ptr [ %call552, %invoke.cont551 ], [ %target.addr.43, %.noexc2744 ] - %second545 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.179", ptr %call497, i64 %i539.07491, i32 1 + %second545 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.179", ptr %call497, i64 %i539.07491 + %second545 = getelementptr inbounds nuw i8, ptr %arrayidx.i2746, i64 8 %200 = load ptr, ptr %second545, align 8 %second550 = getelementptr inbounds nuw i8, ptr %200, i64 8 %call552 = invoke noundef ptr @_ZN6google8protobuf8internal13MapEntryFuncsIllLNS1_14WireFormatLite9FieldTypeE3ELS4_3EE17InternalSerializeEiRKlS7_PhPNS0_2io19EpsCopyOutputStreamE(i32 noundef 57, ptr noundef nonnull align 8 dereferenceable(8) %200, ptr noundef nonnull align 8 dereferenceable(8) %second550, ptr noundef %target.addr.477490, ptr noundef %stream) @@ -33837,7 +33839,8 @@ if.then.i.i2837: ; preds = %for.end621 for.body631: ; preds = %.noexc2844, %invoke.cont640 %i628.07498 = phi i64 [ %inc643, %invoke.cont640 ], [ 0, %.noexc2844 ] %target.addr.507497 = phi ptr [ %call641, %invoke.cont640 ], [ %target.addr.46, %.noexc2844 ] - %second634 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.190", ptr %call586, i64 %i628.07498, i32 1 + %second634 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.190", ptr %call586, i64 %i628.07498 + %second634 = getelementptr inbounds nuw i8, ptr %arrayidx.i2846, i64 8 %235 = load ptr, ptr %second634, align 8 %second639 = getelementptr inbounds nuw i8, ptr %235, i64 4 %call641 = invoke noundef ptr @_ZN6google8protobuf8internal13MapEntryFuncsIjjLNS1_14WireFormatLite9FieldTypeE13ELS4_13EE17InternalSerializeEiRKjS7_PhPNS0_2io19EpsCopyOutputStreamE(i32 noundef 58, ptr noundef nonnull align 4 dereferenceable(4) %235, ptr noundef nonnull align 4 dereferenceable(4) %second639, ptr noundef %target.addr.507497, ptr noundef %stream) @@ -34066,7 +34069,8 @@ if.then.i.i2937: ; preds = %for.end710 for.body720: ; preds = %.noexc2944, %invoke.cont729 %i717.07505 = phi i64 [ %inc732, %invoke.cont729 ], [ 0, %.noexc2944 ] %target.addr.537504 = phi ptr [ %call730, %invoke.cont729 ], [ %target.addr.49, %.noexc2944 ] - %second723 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.201", ptr %call675, i64 %i717.07505, i32 1 + %second723 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.201", ptr %call675, i64 %i717.07505 + %second723 = getelementptr inbounds nuw i8, ptr %arrayidx.i2946, i64 8 %270 = load ptr, ptr %second723, align 8 %second728 = getelementptr inbounds nuw i8, ptr %270, i64 8 %call730 = invoke noundef ptr @_ZN6google8protobuf8internal13MapEntryFuncsImmLNS1_14WireFormatLite9FieldTypeE4ELS4_4EE17InternalSerializeEiRKmS7_PhPNS0_2io19EpsCopyOutputStreamE(i32 noundef 59, ptr noundef nonnull align 8 dereferenceable(8) %270, ptr noundef nonnull align 8 dereferenceable(8) %second728, ptr noundef %target.addr.537504, ptr noundef %stream) @@ -34295,7 +34299,8 @@ if.then.i.i3042: ; preds = %for.end799 for.body809: ; preds = %.noexc3049, %invoke.cont818 %i806.07512 = phi i64 [ %inc821, %invoke.cont818 ], [ 0, %.noexc3049 ] %target.addr.567511 = phi ptr [ %call819, %invoke.cont818 ], [ %target.addr.52, %.noexc3049 ] - %second812 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem", ptr %call764, i64 %i806.07512, i32 1 + %second812 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem", ptr %call764, i64 %i806.07512 + %second812 = getelementptr inbounds nuw i8, ptr %arrayidx.i3052, i64 8 %305 = load ptr, ptr %second812, align 8 %second817 = getelementptr inbounds nuw i8, ptr %305, i64 4 %call819 = invoke noundef ptr @_ZN6google8protobuf8internal13MapEntryFuncsIiiLNS1_14WireFormatLite9FieldTypeE17ELS4_17EE17InternalSerializeEiRKiS7_PhPNS0_2io19EpsCopyOutputStreamE(i32 noundef 60, ptr noundef nonnull align 4 dereferenceable(4) %305, ptr noundef nonnull align 4 dereferenceable(4) %second817, ptr noundef %target.addr.567511, ptr noundef %stream) @@ -34524,7 +34529,8 @@ if.then.i.i3148: ; preds = %for.end888 for.body898: ; preds = %.noexc3155, %invoke.cont907 %i895.07519 = phi i64 [ %inc910, %invoke.cont907 ], [ 0, %.noexc3155 ] %target.addr.597518 = phi ptr [ %call908, %invoke.cont907 ], [ %target.addr.55, %.noexc3155 ] - %second901 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.179", ptr %call853, i64 %i895.07519, i32 1 + %second901 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.179", ptr %call853, i64 %i895.07519 + %second901 = getelementptr inbounds nuw i8, ptr %arrayidx.i3158, i64 8 %340 = load ptr, ptr %second901, align 8 %second906 = getelementptr inbounds nuw i8, ptr %340, i64 8 %call908 = invoke noundef ptr @_ZN6google8protobuf8internal13MapEntryFuncsIllLNS1_14WireFormatLite9FieldTypeE18ELS4_18EE17InternalSerializeEiRKlS7_PhPNS0_2io19EpsCopyOutputStreamE(i32 noundef 61, ptr noundef nonnull align 8 dereferenceable(8) %340, ptr noundef nonnull align 8 dereferenceable(8) %second906, ptr noundef %target.addr.597518, ptr noundef %stream) @@ -34753,7 +34759,8 @@ if.then.i.i3254: ; preds = %for.end977 for.body987: ; preds = %.noexc3261, %invoke.cont996 %i984.07526 = phi i64 [ %inc999, %invoke.cont996 ], [ 0, %.noexc3261 ] %target.addr.627525 = phi ptr [ %add.ptr.i.i20.i, %invoke.cont996 ], [ %target.addr.58, %.noexc3261 ] - %second990 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.190", ptr %call942, i64 %i984.07526, i32 1 + %second990 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.190", ptr %call942, i64 %i984.07526 + %second990 = getelementptr inbounds nuw i8, ptr %arrayidx.i3264, i64 8 %375 = load ptr, ptr %second990, align 8 %second995 = getelementptr inbounds nuw i8, ptr %375, i64 4 %376 = load ptr, ptr %stream, align 8 @@ -35069,7 +35076,8 @@ if.then.i.i3395: ; preds = %for.end1066 for.body1076: ; preds = %.noexc3402, %invoke.cont1085 %i1073.07533 = phi i64 [ %inc1088, %invoke.cont1085 ], [ 0, %.noexc3402 ] %target.addr.657532 = phi ptr [ %add.ptr.i.i20.i3429, %invoke.cont1085 ], [ %target.addr.61, %.noexc3402 ] - %second1079 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.201", ptr %call1031, i64 %i1073.07533, i32 1 + %second1079 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.201", ptr %call1031, i64 %i1073.07533 + %second1079 = getelementptr inbounds nuw i8, ptr %arrayidx.i3405, i64 8 %420 = load ptr, ptr %second1079, align 8 %second1084 = getelementptr inbounds nuw i8, ptr %420, i64 8 %421 = load ptr, ptr %stream, align 8 @@ -35385,7 +35393,8 @@ if.then.i.i3552: ; preds = %for.end1155 for.body1165: ; preds = %.noexc3559, %invoke.cont1174 %i1162.07540 = phi i64 [ %inc1177, %invoke.cont1174 ], [ 0, %.noexc3559 ] %target.addr.687539 = phi ptr [ %add.ptr.i.i20.i3586, %invoke.cont1174 ], [ %target.addr.64, %.noexc3559 ] - %second1168 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem", ptr %call1120, i64 %i1162.07540, i32 1 + %second1168 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem", ptr %call1120, i64 %i1162.07540 + %second1168 = getelementptr inbounds nuw i8, ptr %arrayidx.i3562, i64 8 %465 = load ptr, ptr %second1168, align 8 %second1173 = getelementptr inbounds nuw i8, ptr %465, i64 4 %466 = load ptr, ptr %stream, align 8 @@ -35701,7 +35710,8 @@ if.then.i.i3709: ; preds = %for.end1244 for.body1254: ; preds = %.noexc3716, %invoke.cont1263 %i1251.07547 = phi i64 [ %inc1266, %invoke.cont1263 ], [ 0, %.noexc3716 ] %target.addr.717546 = phi ptr [ %add.ptr.i.i20.i3743, %invoke.cont1263 ], [ %target.addr.67, %.noexc3716 ] - %second1257 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.179", ptr %call1209, i64 %i1251.07547, i32 1 + %second1257 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.179", ptr %call1209, i64 %i1251.07547 + %second1257 = getelementptr inbounds nuw i8, ptr %arrayidx.i3719, i64 8 %510 = load ptr, ptr %second1257, align 8 %second1262 = getelementptr inbounds nuw i8, ptr %510, i64 8 %511 = load ptr, ptr %stream, align 8 @@ -36017,7 +36027,8 @@ if.then.i.i3862: ; preds = %for.end1333 for.body1343: ; preds = %.noexc3869, %invoke.cont1352 %i1340.07554 = phi i64 [ %inc1355, %invoke.cont1352 ], [ 0, %.noexc3869 ] %target.addr.747553 = phi ptr [ %call1353, %invoke.cont1352 ], [ %target.addr.70, %.noexc3869 ] - %second1346 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.212", ptr %call1298, i64 %i1340.07554, i32 1 + %second1346 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.212", ptr %call1298, i64 %i1340.07554 + %second1346 = getelementptr inbounds nuw i8, ptr %arrayidx.i3871, i64 8 %555 = load ptr, ptr %second1346, align 8 %second1351 = getelementptr inbounds nuw i8, ptr %555, i64 4 %call1353 = invoke noundef ptr @_ZN6google8protobuf8internal13MapEntryFuncsIifLNS1_14WireFormatLite9FieldTypeE5ELS4_2EE17InternalSerializeEiRKiRKfPhPNS0_2io19EpsCopyOutputStreamE(i32 noundef 66, ptr noundef nonnull align 4 dereferenceable(4) %555, ptr noundef nonnull align 4 dereferenceable(4) %second1351, ptr noundef %target.addr.747553, ptr noundef %stream) @@ -36246,7 +36257,8 @@ if.then.i.i3962: ; preds = %for.end1422 for.body1432: ; preds = %.noexc3969, %invoke.cont1441 %i1429.07561 = phi i64 [ %inc1444, %invoke.cont1441 ], [ 0, %.noexc3969 ] %target.addr.777560 = phi ptr [ %call1442, %invoke.cont1441 ], [ %target.addr.73, %.noexc3969 ] - %second1435 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.223", ptr %call1387, i64 %i1429.07561, i32 1 + %second1435 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.223", ptr %call1387, i64 %i1429.07561 + %second1435 = getelementptr inbounds nuw i8, ptr %arrayidx.i3971, i64 8 %590 = load ptr, ptr %second1435, align 8 %second1440 = getelementptr inbounds nuw i8, ptr %590, i64 8 %call1442 = invoke noundef ptr @_ZN6google8protobuf8internal13MapEntryFuncsIidLNS1_14WireFormatLite9FieldTypeE5ELS4_1EE17InternalSerializeEiRKiRKdPhPNS0_2io19EpsCopyOutputStreamE(i32 noundef 67, ptr noundef nonnull align 4 dereferenceable(4) %590, ptr noundef nonnull align 8 dereferenceable(8) %second1440, ptr noundef %target.addr.777560, ptr noundef %stream) @@ -36476,7 +36488,8 @@ if.then.i.i4062: ; preds = %for.end1511 for.body1521: ; preds = %.noexc4069, %invoke.cont1530 %i1518.07568 = phi i64 [ %inc1533, %invoke.cont1530 ], [ 0, %.noexc4069 ] %target.addr.807567 = phi ptr [ %add.ptr.i.i28.i19.i, %invoke.cont1530 ], [ %target.addr.76, %.noexc4069 ] - %second1524 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.234", ptr %call1476, i64 %i1518.07568, i32 1 + %second1524 = getelementptr inbounds %"struct.google::protobuf::internal::SortItem.234", ptr %call1476, i64 %i1518.07568 + %second1524 = getelementptr inbounds nuw i8, ptr %arrayidx.i4071, i64 8 %625 = load ptr, ptr %second1524, align 8 %second1529 = getelementptr inbounds nuw i8, ptr %625, i64 1 %626 = load ptr, ptr %stream, align 8 diff --git a/bench/yara-x-rs/optimized/7cv7ebacjy921ionh0ccv0p6y.ll b/bench/yara-x-rs/optimized/7cv7ebacjy921ionh0ccv0p6y.ll index c4642b4948e..1a845dc4791 100644 --- a/bench/yara-x-rs/optimized/7cv7ebacjy921ionh0ccv0p6y.ll +++ b/bench/yara-x-rs/optimized/7cv7ebacjy921ionh0ccv0p6y.ll @@ -13173,11 +13173,12 @@ define hidden noundef nonnull align 8 dereferenceable(104) ptr @"_ZN8indexmap3ma "_ZN8indexmap3map4core5entry26OccupiedEntry$LT$K$C$V$GT$8into_mut17h92fbfd14b879d602E.exit": ; preds = %18 %26 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload, i64 8 %27 = load ptr, ptr %26, align 8, !nonnull !4, !noundef !4 - %28 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, { { i64, [2 x i64] }, { i64, [2 x i64] }, { i8, [47 x i8] }, i64 }, i64 }, ptr %27, i64 %21, i32 1 + %28 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, { { i64, [2 x i64] }, { i64, [2 x i64] }, { i8, [47 x i8] }, i64 }, i64 }, ptr %27, i64 %21 br label %29 29: ; preds = %"_ZN8indexmap3map4core5entry26OccupiedEntry$LT$K$C$V$GT$8into_mut17h92fbfd14b879d602E.exit", %45 %.sroa.0.0 = phi ptr [ %48, %45 ], [ %28, %"_ZN8indexmap3map4core5entry26OccupiedEntry$LT$K$C$V$GT$8into_mut17h92fbfd14b879d602E.exit" ] + %.sroa.0.0 = getelementptr inbounds nuw i8, ptr %.pn, i64 24 ret ptr %.sroa.0.0 .body: ; preds = %8 @@ -13225,7 +13226,7 @@ define hidden noundef nonnull align 8 dereferenceable(104) ptr @"_ZN8indexmap3ma 45: ; preds = %.noexc6 %46 = getelementptr inbounds nuw i8, ptr %.val.i, i64 8 %47 = load ptr, ptr %46, align 8, !noalias !976, !nonnull !4, !noundef !4 - %48 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, { { i64, [2 x i64] }, { i64, [2 x i64] }, { i8, [47 x i8] }, i64 }, i64 }, ptr %47, i64 %41, i32 1 + %48 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, { { i64, [2 x i64] }, { i64, [2 x i64] }, { i8, [47 x i8] }, i64 }, i64 }, ptr %47, i64 %41 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !976 call void @llvm.lifetime.end.p0(ptr nonnull %2) call void @llvm.lifetime.end.p0(ptr nonnull %5) @@ -13315,11 +13316,12 @@ define hidden noundef nonnull align 8 dereferenceable(104) ptr @"_ZN8indexmap3ma "_ZN8indexmap3map4core5entry26OccupiedEntry$LT$K$C$V$GT$8into_mut17h92fbfd14b879d602E.exit": ; preds = %18 %26 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload, i64 8 %27 = load ptr, ptr %26, align 8, !nonnull !4, !noundef !4 - %28 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, { { i64, [2 x i64] }, { i64, [2 x i64] }, { i8, [47 x i8] }, i64 }, i64 }, ptr %27, i64 %21, i32 1 + %28 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, { { i64, [2 x i64] }, { i64, [2 x i64] }, { i8, [47 x i8] }, i64 }, i64 }, ptr %27, i64 %21 br label %29 29: ; preds = %"_ZN8indexmap3map4core5entry26OccupiedEntry$LT$K$C$V$GT$8into_mut17h92fbfd14b879d602E.exit", %45 %.sroa.0.0 = phi ptr [ %48, %45 ], [ %28, %"_ZN8indexmap3map4core5entry26OccupiedEntry$LT$K$C$V$GT$8into_mut17h92fbfd14b879d602E.exit" ] + %.sroa.0.0 = getelementptr inbounds nuw i8, ptr %.pn, i64 24 ret ptr %.sroa.0.0 .body: ; preds = %8 @@ -13367,7 +13369,7 @@ define hidden noundef nonnull align 8 dereferenceable(104) ptr @"_ZN8indexmap3ma 45: ; preds = %.noexc6 %46 = getelementptr inbounds nuw i8, ptr %.val.i, i64 8 %47 = load ptr, ptr %46, align 8, !noalias !988, !nonnull !4, !noundef !4 - %48 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, { { i64, [2 x i64] }, { i64, [2 x i64] }, { i8, [47 x i8] }, i64 }, i64 }, ptr %47, i64 %41, i32 1 + %48 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, { { i64, [2 x i64] }, { i64, [2 x i64] }, { i8, [47 x i8] }, i64 }, i64 }, ptr %47, i64 %41 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !988 call void @llvm.lifetime.end.p0(ptr nonnull %2) call void @llvm.lifetime.end.p0(ptr nonnull %5) @@ -13457,11 +13459,12 @@ define hidden noundef nonnull align 8 dereferenceable(104) ptr @"_ZN8indexmap3ma "_ZN8indexmap3map4core5entry26OccupiedEntry$LT$K$C$V$GT$8into_mut17h92fbfd14b879d602E.exit": ; preds = %18 %26 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload, i64 8 %27 = load ptr, ptr %26, align 8, !nonnull !4, !noundef !4 - %28 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, { { i64, [2 x i64] }, { i64, [2 x i64] }, { i8, [47 x i8] }, i64 }, i64 }, ptr %27, i64 %21, i32 1 + %28 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, { { i64, [2 x i64] }, { i64, [2 x i64] }, { i8, [47 x i8] }, i64 }, i64 }, ptr %27, i64 %21 br label %29 29: ; preds = %"_ZN8indexmap3map4core5entry26OccupiedEntry$LT$K$C$V$GT$8into_mut17h92fbfd14b879d602E.exit", %45 %.sroa.0.0 = phi ptr [ %48, %45 ], [ %28, %"_ZN8indexmap3map4core5entry26OccupiedEntry$LT$K$C$V$GT$8into_mut17h92fbfd14b879d602E.exit" ] + %.sroa.0.0 = getelementptr inbounds nuw i8, ptr %.pn, i64 24 ret ptr %.sroa.0.0 .body: ; preds = %8 @@ -13509,7 +13512,7 @@ define hidden noundef nonnull align 8 dereferenceable(104) ptr @"_ZN8indexmap3ma 45: ; preds = %.noexc6 %46 = getelementptr inbounds nuw i8, ptr %.val.i, i64 8 %47 = load ptr, ptr %46, align 8, !noalias !1000, !nonnull !4, !noundef !4 - %48 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, { { i64, [2 x i64] }, { i64, [2 x i64] }, { i8, [47 x i8] }, i64 }, i64 }, ptr %47, i64 %41, i32 1 + %48 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, { { i64, [2 x i64] }, { i64, [2 x i64] }, { i8, [47 x i8] }, i64 }, i64 }, ptr %47, i64 %41 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !1000 call void @llvm.lifetime.end.p0(ptr nonnull %2) call void @llvm.lifetime.end.p0(ptr nonnull %5) diff --git a/bench/yara-x-rs/optimized/aqllqyzrtxqplivthssual6c8.ll b/bench/yara-x-rs/optimized/aqllqyzrtxqplivthssual6c8.ll index 173f3f10a5b..e12da86c5ce 100644 --- a/bench/yara-x-rs/optimized/aqllqyzrtxqplivthssual6c8.ll +++ b/bench/yara-x-rs/optimized/aqllqyzrtxqplivthssual6c8.ll @@ -5027,8 +5027,9 @@ define hidden noundef i64 @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$G 14: ; preds = %14, %9 %.sroa.07.0.i = phi i64 [ %2, %9 ], [ %.sroa.0.0.i.i.i.i, %14 ] %.sroa.09.0.i = phi i64 [ 0, %9 ], [ %18, %14 ] - %15 = getelementptr { { { { i64, ptr, {} }, {} }, i64 }, i8, [7 x i8] }, ptr %0, i64 %.sroa.09.0.i, i32 0, i32 1 - %.val.i = load i64, ptr %15, align 8, !noundef !3 + %15 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 }, i8, [7 x i8] }, ptr %0, i64 %.sroa.09.0.i + %16 = getelementptr i8, ptr %15, i64 16 + %.val.i = load i64, ptr %16, align 8, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !1139 call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !1139 store i64 %.sroa.07.0.i, ptr %6, align 8, !noalias !1144 @@ -5308,8 +5309,9 @@ define hidden noundef i32 @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$G 14: ; preds = %14, %9 %.sroa.07.0.i = phi i32 [ %2, %9 ], [ %.sroa.0.0.i.i.i.i, %14 ] %.sroa.09.0.i = phi i64 [ 0, %9 ], [ %18, %14 ] - %15 = getelementptr { { ptr, i64 }, { ptr, [1 x i64] }, i32, i32, i32, i32, i32, i32, i32, i16, i16 }, ptr %0, i64 %.sroa.09.0.i, i32 3 - %.val.i = load i32, ptr %15, align 4, !alias.scope !1177, !noundef !3 + %15 = getelementptr inbounds nuw { { ptr, i64 }, { ptr, [1 x i64] }, i32, i32, i32, i32, i32, i32, i32, i16, i16 }, ptr %0, i64 %.sroa.09.0.i + %16 = getelementptr i8, ptr %15, i64 36 + %.val.i = load i32, ptr %16, align 4, !alias.scope !1177, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !1180 call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !1180 store i32 %.sroa.07.0.i, ptr %6, align 4, !noalias !1185 @@ -6129,8 +6131,9 @@ define hidden noundef i64 @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$G 14: ; preds = %14, %9 %.sroa.07.0.i = phi i64 [ %2, %9 ], [ %.sroa.0.0.i.i.i.i, %14 ] %.sroa.09.0.i = phi i64 [ 0, %9 ], [ %18, %14 ] - %15 = getelementptr { { { { i64, ptr, {} }, {} }, i64 }, i8, [7 x i8] }, ptr %0, i64 %.sroa.09.0.i, i32 0, i32 1 - %.val.i = load i64, ptr %15, align 8, !noundef !3 + %15 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 }, i8, [7 x i8] }, ptr %0, i64 %.sroa.09.0.i + %16 = getelementptr i8, ptr %15, i64 16 + %.val.i = load i64, ptr %16, align 8, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !1362 call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !1362 store i64 %.sroa.07.0.i, ptr %6, align 8, !noalias !1367 @@ -59888,8 +59891,7 @@ _ZN12regex_syntax3hir7visitor5visit17he9e5a6fe756dbb00E.exit._crit_edge: ; preds 418: ; preds = %.noexc194, %415 %.sroa.07.0.i.i.i190 = phi ptr [ %413, %415 ], [ %.sroa.0.0.i.i.i.i.i.i192, %.noexc194 ] %.sroa.09.0.i.i.i191 = phi i64 [ 0, %415 ], [ %423, %.noexc194 ] - %.idx.i = shl nuw nsw i64 %.sroa.09.0.i.i.i191, 6 - %419 = getelementptr inbounds nuw i8, ptr %412, i64 %.idx.i + %419 = getelementptr inbounds nuw { { i64, [2 x i64] }, { ptr, [1 x i64] }, { ptr, [1 x i64] }, i32, [1 x i32] }, ptr %412, i64 %.sroa.09.0.i.i.i191 %420 = getelementptr inbounds nuw i8, ptr %419, i64 120 call void @llvm.lifetime.start.p0(ptr nonnull %7), !noalias !9754 call void @llvm.lifetime.start.p0(ptr nonnull %8), !noalias !9754 diff --git a/bench/yosys/optimized/abc9_exe.ll b/bench/yosys/optimized/abc9_exe.ll index 6e2aa67d498..801ad0f311d 100644 --- a/bench/yosys/optimized/abc9_exe.ll +++ b/bench/yosys/optimized/abc9_exe.ll @@ -7873,9 +7873,10 @@ _ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_N %41 = getelementptr inbounds nuw i8, ptr %0, i64 24 %42 = zext nneg i32 %33 to i64 %43 = load ptr, ptr %41, align 8, !tbaa !76 - %44 = getelementptr inbounds nuw %"struct.Yosys::hashlib::dict, std::__cxx11::basic_string>::entry_t", ptr %43, i64 %42, i32 0, i32 1 + %44 = getelementptr inbounds nuw %"struct.Yosys::hashlib::dict, std::__cxx11::basic_string>::entry_t", ptr %43, i64 %42 + %45 = getelementptr inbounds nuw i8, ptr %44, i64 32 call void @llvm.lifetime.end.p0(ptr nonnull %3) - ret ptr %44 + ret ptr %45 } ; Function Attrs: noinline noreturn nounwind uwtable @@ -8117,12 +8118,13 @@ _ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_N br label %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_NS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us _ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_NS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us: ; preds = %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_NS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us.preheader, %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_NS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us - %50 = phi i32 [ %.pre, %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_NS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us.preheader ], [ %52, %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_NS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us ] + %50 = phi i32 [ %.pre, %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_NS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us.preheader ], [ %53, %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_NS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us ] %indvars.iv13 = phi i64 [ 0, %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_NS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us.preheader ], [ %indvars.iv.next14, %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_NS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us ] - %51 = getelementptr inbounds nuw %"struct.Yosys::hashlib::dict, std::__cxx11::basic_string>::entry_t", ptr %35, i64 %indvars.iv13, i32 1 - store i32 %50, ptr %51, align 8, !tbaa !80 - %52 = trunc nuw nsw i64 %indvars.iv13 to i32 - store i32 %52, ptr %42, align 4, !tbaa !28 + %51 = getelementptr inbounds nuw %"struct.Yosys::hashlib::dict, std::__cxx11::basic_string>::entry_t", ptr %35, i64 %indvars.iv13 + %52 = getelementptr inbounds nuw i8, ptr %51, i64 64 + store i32 %50, ptr %52, align 8, !tbaa !80 + %53 = trunc nuw nsw i64 %indvars.iv13 to i32 + store i32 %53, ptr %42, align 4, !tbaa !28 %indvars.iv.next14 = add nuw nsw i64 %indvars.iv13, 1 %exitcond17.not = icmp eq i64 %indvars.iv.next14, %wide.trip.count16 br i1 %exitcond17.not, label %._crit_edge, label %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_NS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us, !llvm.loop !85 @@ -8146,8 +8148,8 @@ _ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_N br label %60 60: ; preds = %60, %.lr.ph.i.i.i - %.sroa.06.010.i.i.i = phi i32 [ 5381, %.lr.ph.i.i.i ], [ %71, %60 ] - %.sroa.03.09.i.i.i = phi ptr [ %55, %.lr.ph.i.i.i ], [ %72, %60 ] + %.sroa.06.010.i.i.i = phi i32 [ 5381, %.lr.ph.i.i.i ], [ %71, %61 ] + %.sroa.03.09.i.i.i = phi ptr [ %55, %.lr.ph.i.i.i ], [ %72, %61 ] %61 = load i8, ptr %.sroa.03.09.i.i.i, align 1, !tbaa !15 %62 = sext i8 %61 to i32 %63 = mul nsw i32 %62, 33 @@ -8164,7 +8166,7 @@ _ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_N br i1 %.not.i.i.i, label %_ZN5Yosys7hashlib8hash_opsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE4hashERKS7_.exit.i, label %60 _ZN5Yosys7hashlib8hash_opsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE4hashERKS7_.exit.i: ; preds = %60, %.lr.ph.split - %.sroa.06.0.lcssa.i.i.i = phi i32 [ 5381, %.lr.ph.split ], [ %71, %60 ] + %.sroa.06.0.lcssa.i.i.i = phi i32 [ 5381, %.lr.ph.split ], [ %71, %61 ] %73 = urem i32 %.sroa.06.0.lcssa.i.i.i, %49 %74 = zext i32 %73 to i64 %75 = getelementptr inbounds nuw i32, ptr %42, i64 %74 diff --git a/bench/yosys/optimized/verilog_lexer.ll b/bench/yosys/optimized/verilog_lexer.ll index f6461ccd012..5b7a049c014 100644 --- a/bench/yosys/optimized/verilog_lexer.ll +++ b/bench/yosys/optimized/verilog_lexer.ll @@ -16202,12 +16202,13 @@ _ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_ br label %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_3AST7AstNodeENS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us _ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_3AST7AstNodeENS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us: ; preds = %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_3AST7AstNodeENS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us.preheader, %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_3AST7AstNodeENS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us - %50 = phi i32 [ %.pre, %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_3AST7AstNodeENS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us.preheader ], [ %52, %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_3AST7AstNodeENS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us ] + %50 = phi i32 [ %.pre, %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_3AST7AstNodeENS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us.preheader ], [ %53, %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_3AST7AstNodeENS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us ] %indvars.iv13 = phi i64 [ 0, %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_3AST7AstNodeENS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us.preheader ], [ %indvars.iv.next14, %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_3AST7AstNodeENS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us ] - %51 = getelementptr inbounds nuw %"struct.Yosys::hashlib::dict, Yosys::AST::AstNode *>::entry_t", ptr %35, i64 %indvars.iv13, i32 1 - store i32 %50, ptr %51, align 8, !tbaa !307 - %52 = trunc nuw nsw i64 %indvars.iv13 to i32 - store i32 %52, ptr %42, align 4, !tbaa !28 + %51 = getelementptr inbounds nuw %"struct.Yosys::hashlib::dict, Yosys::AST::AstNode *>::entry_t", ptr %35, i64 %indvars.iv13 + %52 = getelementptr inbounds nuw i8, ptr %51, i64 40 + store i32 %50, ptr %52, align 8, !tbaa !307 + %53 = trunc nuw nsw i64 %indvars.iv13 to i32 + store i32 %53, ptr %42, align 4, !tbaa !28 %indvars.iv.next14 = add nuw nsw i64 %indvars.iv13, 1 %exitcond17.not = icmp eq i64 %indvars.iv.next14, %wide.trip.count16 br i1 %exitcond17.not, label %._crit_edge, label %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_3AST7AstNodeENS0_8hash_opsIS7_EEE7do_hashERKS7_.exit.us, !llvm.loop !313 @@ -16231,8 +16232,8 @@ _ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_ br label %60 60: ; preds = %60, %.lr.ph.i.i.i - %.sroa.06.010.i.i.i = phi i32 [ 5381, %.lr.ph.i.i.i ], [ %71, %60 ] - %.sroa.03.09.i.i.i = phi ptr [ %55, %.lr.ph.i.i.i ], [ %72, %60 ] + %.sroa.06.010.i.i.i = phi i32 [ 5381, %.lr.ph.i.i.i ], [ %71, %61 ] + %.sroa.03.09.i.i.i = phi ptr [ %55, %.lr.ph.i.i.i ], [ %72, %61 ] %61 = load i8, ptr %.sroa.03.09.i.i.i, align 1, !tbaa !19 %62 = sext i8 %61 to i32 %63 = mul nsw i32 %62, 33 @@ -16249,7 +16250,7 @@ _ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_ br i1 %.not.i.i.i, label %_ZN5Yosys7hashlib8hash_opsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE4hashERKS7_.exit.i, label %60 _ZN5Yosys7hashlib8hash_opsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE4hashERKS7_.exit.i: ; preds = %60, %.lr.ph.split - %.sroa.06.0.lcssa.i.i.i = phi i32 [ 5381, %.lr.ph.split ], [ %71, %60 ] + %.sroa.06.0.lcssa.i.i.i = phi i32 [ 5381, %.lr.ph.split ], [ %71, %61 ] %73 = urem i32 %.sroa.06.0.lcssa.i.i.i, %49 %74 = zext i32 %73 to i64 %75 = getelementptr inbounds nuw i32, ptr %42, i64 %74 diff --git a/bench/zed-rs/optimized/18fe87pvcvcmccnycfh7q0atj.ll b/bench/zed-rs/optimized/18fe87pvcvcmccnycfh7q0atj.ll index 236a446d3b9..7bb019f84ac 100644 --- a/bench/zed-rs/optimized/18fe87pvcvcmccnycfh7q0atj.ll +++ b/bench/zed-rs/optimized/18fe87pvcvcmccnycfh7q0atj.ll @@ -8286,8 +8286,7 @@ common.resume.i: ; preds = %"_ZN4core3ptr72drop %39 = load i64, ptr %38, align 8, !alias.scope !1395, !noundef !4 %40 = getelementptr inbounds nuw i8, ptr %0, i64 8 %41 = load i64, ptr %40, align 8, !alias.scope !1395, !noundef !4 - %.idx.i = mul nuw nsw i64 %33, 88 - %42 = getelementptr inbounds nuw i8, ptr %10, i64 %.idx.i + %42 = getelementptr inbounds nuw { { i64, [2 x i64] }, { { { i64, ptr, {} }, i64 }, i64, i64 }, i64, { ptr, [1 x i64] } }, ptr %10, i64 %33 %43 = getelementptr inbounds nuw i8, ptr %42, i64 72 %44 = load i64, ptr %43, align 8, !noalias !1395, !noundef !4 %.not.i = icmp eq i64 %44, %41 @@ -8358,8 +8357,7 @@ _ZN3std4sync6poison4Flag4done17h7e8e2f4eb26e84baE.exit.i.i.i: ; preds = %54, %52 br label %80 67: ; preds = %61 - %.idx20.i = mul nuw nsw i64 %33, 88 - %68 = getelementptr inbounds nuw i8, ptr %10, i64 %.idx20.i + %68 = getelementptr inbounds nuw { { i64, [2 x i64] }, { { { i64, ptr, {} }, i64 }, i64, i64 }, i64, { ptr, [1 x i64] } }, ptr %10, i64 %33 %69 = getelementptr inbounds nuw i8, ptr %68, i64 32 %70 = getelementptr inbounds nuw i8, ptr %68, i64 64 %71 = load i64, ptr %70, align 8, !noalias !1395, !noundef !4 @@ -8401,8 +8399,7 @@ _ZN3std4sync6poison4Flag4done17h7e8e2f4eb26e84baE.exit.i.i.i: ; preds = %54, %52 87: ; preds = %80 %88 = extractvalue { ptr, ptr } %86, 0 %89 = extractvalue { ptr, ptr } %86, 1 - %.idx23.i = mul nuw nsw i64 %33, 88 - %90 = getelementptr inbounds nuw i8, ptr %10, i64 %.idx23.i + %90 = getelementptr inbounds nuw { { i64, [2 x i64] }, { { { i64, ptr, {} }, i64 }, i64, i64 }, i64, { ptr, [1 x i64] } }, ptr %10, i64 %33 tail call void @llvm.experimental.noalias.scope.decl(metadata !1404) %91 = getelementptr inbounds nuw i8, ptr %90, i64 48 %92 = load i64, ptr %91, align 8, !alias.scope !1404, !noalias !1407, !noundef !4 diff --git a/bench/zstd/optimized/huf_compress.ll b/bench/zstd/optimized/huf_compress.ll index bcf120f7ba4..a5e81cdfbd8 100644 --- a/bench/zstd/optimized/huf_compress.ll +++ b/bench/zstd/optimized/huf_compress.ll @@ -640,9 +640,8 @@ HUF_sort.exit: ; preds = %64 .lr.ph100.preheader.i: ; preds = %.lr.ph96.i %118 = sext i32 %76 to i64 - %.idx = shl nsw i64 %118, 3 - %119 = getelementptr i8, ptr %14, i64 %.idx - %120 = getelementptr i8, ptr %119, i64 7 + %119 = getelementptr inbounds %struct.nodeElt_s, ptr %14, i64 %118 + %119 = getelementptr inbounds nuw i8, ptr %119, i64 7 store i8 0, ptr %120, align 1, !tbaa !35 %121 = zext i32 %indvars.iv113.i to i64 br label %.lr.ph100.i @@ -650,9 +649,8 @@ HUF_sort.exit: ; preds = %64 .preheader.i28: ; preds = %72 store i32 -2147483648, ptr %13, align 4, !tbaa !26 %.pre.i29 = sext i32 %76 to i64 - %.idx49 = shl nsw i64 %.pre.i29, 3 - %122 = getelementptr i8, ptr %14, i64 %.idx49 - %123 = getelementptr i8, ptr %122, i64 7 + %122 = getelementptr inbounds %struct.nodeElt_s, ptr %14, i64 %.pre.i29 + %122 = getelementptr inbounds nuw i8, ptr %122, i64 7 store i8 0, ptr %123, align 1, !tbaa !35 %.not84101.i = icmp slt i64 %indvars.iv.i24, 0 br i1 %.not84101.i, label %HUF_buildTree.exit, label %.lr.ph103.preheader.i @@ -667,8 +665,7 @@ HUF_sort.exit: ; preds = %64 %125 = getelementptr inbounds nuw i8, ptr %124, i64 4 %126 = load i16, ptr %125, align 4, !tbaa !32 %127 = zext i16 %126 to i64 - %.idx48 = shl nuw nsw i64 %127, 3 - %128 = getelementptr inbounds nuw i8, ptr %14, i64 %.idx48 + %128 = getelementptr inbounds nuw %struct.nodeElt_s, ptr %14, i64 %127 %129 = getelementptr inbounds nuw i8, ptr %128, i64 7 %130 = load i8, ptr %129, align 1, !tbaa !35 %131 = add i8 %130, 1 @@ -684,8 +681,7 @@ HUF_sort.exit: ; preds = %64 %135 = getelementptr inbounds nuw i8, ptr %134, i64 4 %136 = load i16, ptr %135, align 4, !tbaa !32 %137 = zext i16 %136 to i64 - %.idx50 = shl nuw nsw i64 %137, 3 - %138 = getelementptr inbounds nuw i8, ptr %14, i64 %.idx50 + %138 = getelementptr inbounds nuw %struct.nodeElt_s, ptr %14, i64 %137 %139 = getelementptr inbounds nuw i8, ptr %138, i64 7 %140 = load i8, ptr %139, align 1, !tbaa !35 %141 = add i8 %140, 1 @@ -696,9 +692,8 @@ HUF_sort.exit: ; preds = %64 br i1 %exitcond.not.i27, label %HUF_buildTree.exit, label %.lr.ph103.i, !llvm.loop !37 HUF_buildTree.exit: ; preds = %.lr.ph103.i, %.preheader.i28 - %143 = shl i64 %indvars.iv.i24, 3 - %.idx51 = and i64 %143, 34359738360 - %144 = getelementptr inbounds nuw i8, ptr %14, i64 %.idx51 + %143 = and i64 %indvars.iv.i24, 4294967295 + %144 = getelementptr inbounds nuw %struct.nodeElt_s, ptr %14, i64 %143 %145 = getelementptr inbounds nuw i8, ptr %144, i64 7 %146 = load i8, ptr %145, align 1, !tbaa !35 %147 = zext i8 %146 to i32 @@ -710,9 +705,8 @@ HUF_buildTree.exit: ; preds = %.lr.ph103.i, %.preh %150 = shl nuw i32 1, %149 %sext = shl i64 %indvars.iv.i24, 32 %151 = ashr exact i64 %sext, 32 - %.idx52 = ashr exact i64 %sext, 29 - %152 = getelementptr i8, ptr %14, i64 %.idx52 - %153 = getelementptr i8, ptr %152, i64 7 + %152 = getelementptr inbounds %struct.nodeElt_s, ptr %14, i64 %151 + %152 = getelementptr inbounds nuw i8, ptr %152, i64 7 %154 = load i8, ptr %153, align 1, !tbaa !35 %155 = zext i8 %154 to i32 %156 = icmp samesign ult i32 %spec.store.select, %155 @@ -745,9 +739,8 @@ HUF_buildTree.exit: ; preds = %.lr.ph103.i, %.preh %164 = add i32 %163, %.neg108.i store i8 %157, ptr %161, align 1, !tbaa !35 %indvars.iv.next.i37 = add nsw i64 %indvars.iv.i36, -1 - %.idx53 = shl nsw i64 %indvars.iv.next.i37, 3 - %165 = getelementptr i8, ptr %14, i64 %.idx53 - %166 = getelementptr i8, ptr %165, i64 7 + %165 = getelementptr %struct.nodeElt_s, ptr %.0.i, i64 %indvars.iv.i36 + %165 = getelementptr inbounds nuw i8, ptr %165, i64 7 %167 = load i8, ptr %166, align 1, !tbaa !35 %168 = zext i8 %167 to i32 %169 = icmp samesign ult i32 %spec.store.select, %168 @@ -756,9 +749,8 @@ HUF_buildTree.exit: ; preds = %.lr.ph103.i, %.preh 170: ; preds = %170, %.preheader119.i %indvars.iv161.i = phi i32 [ %indvars.iv.next162.i, %170 ], [ %.088.lcssa.i, %.preheader119.i ] %indvars.iv158.i = phi i64 [ %indvars.iv.next159.i, %170 ], [ %.pre-phi.i, %.preheader119.i ] - %.idx54 = shl nsw i64 %indvars.iv158.i, 3 - %171 = getelementptr i8, ptr %14, i64 %.idx54 - %172 = getelementptr i8, ptr %171, i64 7 + %171 = getelementptr inbounds %struct.nodeElt_s, ptr %14, i64 %indvars.iv158.i + %171 = getelementptr inbounds nuw i8, ptr %171, i64 7 %173 = load i8, ptr %172, align 1, !tbaa !35 %174 = zext i8 %173 to i32 %175 = icmp eq i32 %spec.store.select, %174 @@ -784,8 +776,7 @@ HUF_buildTree.exit: ; preds = %.lr.ph103.i, %.preh .lr.ph126.i: ; preds = %190, %.lr.ph126.preheader.i %indvars.iv163.i = phi i64 [ %179, %.lr.ph126.preheader.i ], [ %indvars.iv.next164.i, %190 ] %.094124.i = phi i32 [ %spec.store.select, %.lr.ph126.preheader.i ], [ %.195.i, %190 ] - %.idx55 = shl nuw nsw i64 %indvars.iv163.i, 3 - %181 = getelementptr inbounds nuw i8, ptr %14, i64 %.idx55 + %181 = getelementptr inbounds nuw %struct.nodeElt_s, ptr %14, i64 %indvars.iv163.i %182 = getelementptr inbounds nuw i8, ptr %181, i64 7 %183 = load i8, ptr %182, align 1, !tbaa !35 %184 = zext i8 %183 to i32 @@ -890,8 +881,7 @@ HUF_buildTree.exit: ; preds = %.lr.ph103.i, %.preh %222 = getelementptr inbounds nuw i32, ptr %9, i64 %221 %223 = load i32, ptr %222, align 4, !tbaa !11 %224 = zext i32 %223 to i64 - %.idx56 = shl nuw nsw i64 %224, 3 - %225 = getelementptr inbounds nuw i8, ptr %14, i64 %.idx56 + %225 = getelementptr inbounds nuw %struct.nodeElt_s, ptr %14, i64 %224 %226 = getelementptr inbounds nuw i8, ptr %225, i64 7 %227 = load i8, ptr %226, align 1, !tbaa !35 %228 = add i8 %227, 1 @@ -908,8 +898,7 @@ HUF_buildTree.exit: ; preds = %.lr.ph103.i, %.preh 234: ; preds = %.critedge.i %235 = add i32 %223, -1 %236 = zext i32 %235 to i64 - %.idx57 = shl nuw nsw i64 %236, 3 - %237 = getelementptr inbounds nuw i8, ptr %14, i64 %.idx57 + %237 = getelementptr inbounds nuw %struct.nodeElt_s, ptr %14, i64 %236 %238 = getelementptr inbounds nuw i8, ptr %237, i64 7 %239 = load i8, ptr %238, align 1, !tbaa !35 %240 = zext i8 %239 to i32 @@ -937,9 +926,8 @@ HUF_buildTree.exit: ; preds = %.lr.ph103.i, %.preh 248: ; preds = %248, %.preheader.i32 %indvars.iv173.i = phi i64 [ %indvars.iv.next174.i, %248 ], [ %247, %.preheader.i32 ] - %.idx59 = shl nsw i64 %indvars.iv173.i, 3 - %249 = getelementptr i8, ptr %14, i64 %.idx59 - %250 = getelementptr i8, ptr %249, i64 7 + %249 = getelementptr inbounds %struct.nodeElt_s, ptr %14, i64 %indvars.iv173.i + %249 = getelementptr inbounds nuw i8, ptr %249, i64 7 %251 = load i8, ptr %250, align 1, !tbaa !35 %252 = zext i8 %251 to i32 %253 = icmp eq i32 %spec.store.select, %252 @@ -950,9 +938,8 @@ HUF_buildTree.exit: ; preds = %.lr.ph103.i, %.preh %254 = trunc nsw i64 %indvars.iv173.i to i32 %255 = add nsw i32 %254, 1 %256 = sext i32 %255 to i64 - %.idx60 = shl nsw i64 %256, 3 - %257 = getelementptr i8, ptr %14, i64 %.idx60 - %258 = getelementptr i8, ptr %257, i64 7 + %257 = getelementptr inbounds %struct.nodeElt_s, ptr %14, i64 %256 + %257 = getelementptr inbounds nuw i8, ptr %257, i64 7 %259 = load i8, ptr %258, align 1, !tbaa !35 %260 = add i8 %259, -1 store i8 %260, ptr %258, align 1, !tbaa !35 @@ -969,8 +956,7 @@ HUF_buildTree.exit: ; preds = %.lr.ph103.i, %.preh 264: ; preds = %244 %265 = add i32 %245, 1 %266 = zext i32 %265 to i64 - %.idx58 = shl nuw nsw i64 %266, 3 - %267 = getelementptr inbounds nuw i8, ptr %14, i64 %.idx58 + %267 = getelementptr inbounds nuw %struct.nodeElt_s, ptr %14, i64 %266 %268 = getelementptr inbounds nuw i8, ptr %267, i64 7 %269 = load i8, ptr %268, align 1, !tbaa !35 %270 = add i8 %269, -1 @@ -1012,8 +998,7 @@ HUF_setMaxHeight.exit: ; preds = %HUF_buildTree.exit, .lr.ph.i41: ; preds = %.lr.ph.i41, %.lr.ph.preheader.i39 %indvars.iv.i42 = phi i64 [ 0, %.lr.ph.preheader.i39 ], [ %indvars.iv.next.i43, %.lr.ph.i41 ] - %.idx61 = shl nuw nsw i64 %indvars.iv.i42, 3 - %277 = getelementptr inbounds nuw i8, ptr %14, i64 %.idx61 + %277 = getelementptr inbounds nuw %struct.nodeElt_s, ptr %14, i64 %indvars.iv.i42 %278 = getelementptr inbounds nuw i8, ptr %277, i64 7 %279 = load i8, ptr %278, align 1, !tbaa !35 %280 = zext i8 %279 to i64 diff --git a/bench/zstd/optimized/zstd_decompress_block.ll b/bench/zstd/optimized/zstd_decompress_block.ll index 02c694cb8ad..b7d01dde24c 100644 --- a/bench/zstd/optimized/zstd_decompress_block.ll +++ b/bench/zstd/optimized/zstd_decompress_block.ll @@ -680,8 +680,7 @@ define void @ZSTD_buildFSETable(ptr noundef captures(none) %0, ptr noundef reado 23: ; preds = %19 %24 = add i32 %.0.i11.i, -1 %25 = zext i32 %.0.i11.i to i64 - %.idx132.i.i = shl nuw nsw i64 %25, 3 - %26 = getelementptr inbounds nuw i8, ptr %12, i64 %.idx132.i.i + %26 = getelementptr inbounds nuw %struct.ZSTD_seqSymbol, ptr %12, i64 %25 %27 = getelementptr inbounds nuw i8, ptr %26, i64 4 %28 = trunc nuw i64 %indvars.iv.i to i32 store i32 %28, ptr %27, align 4, !tbaa !40 @@ -759,8 +758,7 @@ define void @ZSTD_buildFSETable(ptr noundef captures(none) %0, ptr noundef reado %53 = and i64 %.0124.i33.i, %38 %54 = load i8, ptr %52, align 1, !tbaa !7 %55 = zext i8 %54 to i32 - %.idx131.i.i = shl nuw nsw i64 %53, 3 - %56 = getelementptr inbounds nuw i8, ptr %12, i64 %.idx131.i.i + %56 = getelementptr inbounds nuw %struct.ZSTD_seqSymbol, ptr %12, i64 %53 %57 = getelementptr inbounds nuw i8, ptr %56, i64 4 store i32 %55, ptr %57, align 4, !tbaa !40 %58 = add nuw nsw i64 %.0124.i33.i, %39 @@ -768,8 +766,7 @@ define void @ZSTD_buildFSETable(ptr noundef captures(none) %0, ptr noundef reado %60 = getelementptr inbounds nuw i8, ptr %52, i64 1 %61 = load i8, ptr %60, align 1, !tbaa !7 %62 = zext i8 %61 to i32 - %.idx131.i.i.c = shl nuw nsw i64 %59, 3 - %63 = getelementptr inbounds nuw i8, ptr %12, i64 %.idx131.i.i.c + %63 = getelementptr inbounds nuw %struct.ZSTD_seqSymbol, ptr %12, i64 %59 %64 = getelementptr inbounds nuw i8, ptr %63, i64 4 store i32 %62, ptr %64, align 4, !tbaa !40 %65 = add nuw nsw i64 %.0124.i33.i, %41 @@ -802,8 +799,7 @@ define void @ZSTD_buildFSETable(ptr noundef captures(none) %0, ptr noundef reado %.0114.i14.i = phi i32 [ %86, %85 ], [ 0, %.lr.ph16.preheader.i ] %.1116.i13.i = phi i32 [ %.2.i.i, %85 ], [ %.0115.i20.i, %.lr.ph16.preheader.i ] %80 = zext nneg i32 %.1116.i13.i to i64 - %.idx.i.i = shl nuw nsw i64 %80, 3 - %81 = getelementptr inbounds nuw i8, ptr %12, i64 %.idx.i.i + %81 = getelementptr inbounds nuw %struct.ZSTD_seqSymbol, ptr %12, i64 %80 %82 = getelementptr inbounds nuw i8, ptr %81, i64 4 store i32 %79, ptr %82, align 4, !tbaa !40 br label %83 @@ -910,8 +906,7 @@ define internal fastcc void @ZSTD_buildFSETable_body_bmi2(ptr noundef captures(n 23: ; preds = %19 %24 = add i32 %.0.i11, -1 %25 = zext i32 %.0.i11 to i64 - %.idx132.i = shl nuw nsw i64 %25, 3 - %26 = getelementptr inbounds nuw i8, ptr %8, i64 %.idx132.i + %26 = getelementptr inbounds nuw %struct.ZSTD_seqSymbol, ptr %8, i64 %25 %27 = getelementptr inbounds nuw i8, ptr %26, i64 4 %28 = trunc nuw i64 %indvars.iv to i32 store i32 %28, ptr %27, align 4, !tbaa !40 @@ -994,8 +989,7 @@ define internal fastcc void @ZSTD_buildFSETable_body_bmi2(ptr noundef captures(n %53 = and i64 %.0124.i33, %38 %54 = load i8, ptr %52, align 1, !tbaa !7 %55 = zext i8 %54 to i32 - %.idx131.i = shl nuw nsw i64 %53, 3 - %56 = getelementptr inbounds nuw i8, ptr %8, i64 %.idx131.i + %56 = getelementptr inbounds nuw %struct.ZSTD_seqSymbol, ptr %8, i64 %53 %57 = getelementptr inbounds nuw i8, ptr %56, i64 4 store i32 %55, ptr %57, align 4, !tbaa !40 %58 = add nuw nsw i64 %.0124.i33, %39 @@ -1003,8 +997,7 @@ define internal fastcc void @ZSTD_buildFSETable_body_bmi2(ptr noundef captures(n %60 = getelementptr inbounds nuw i8, ptr %52, i64 1 %61 = load i8, ptr %60, align 1, !tbaa !7 %62 = zext i8 %61 to i32 - %.idx131.i.c = shl nuw nsw i64 %59, 3 - %63 = getelementptr inbounds nuw i8, ptr %8, i64 %.idx131.i.c + %63 = getelementptr inbounds nuw %struct.ZSTD_seqSymbol, ptr %8, i64 %59 %64 = getelementptr inbounds nuw i8, ptr %63, i64 4 store i32 %62, ptr %64, align 4, !tbaa !40 %65 = add nuw nsw i64 %.0124.i33, %41 @@ -1037,8 +1030,7 @@ define internal fastcc void @ZSTD_buildFSETable_body_bmi2(ptr noundef captures(n %.0114.i14 = phi i32 [ %85, %84 ], [ 0, %.lr.ph16.preheader ] %.1116.i13 = phi i32 [ %.2.i, %84 ], [ %.0115.i20, %.lr.ph16.preheader ] %79 = zext nneg i32 %.1116.i13 to i64 - %.idx.i = shl nuw nsw i64 %79, 3 - %80 = getelementptr inbounds nuw i8, ptr %8, i64 %.idx.i + %80 = getelementptr inbounds nuw %struct.ZSTD_seqSymbol, ptr %8, i64 %79 %81 = getelementptr inbounds nuw i8, ptr %80, i64 4 store i32 %78, ptr %81, align 4, !tbaa !40 br label %82 diff --git a/bench/zstd/optimized/zstd_v04.ll b/bench/zstd/optimized/zstd_v04.ll index c00e08cb997..445b8459c7f 100644 --- a/bench/zstd/optimized/zstd_v04.ll +++ b/bench/zstd/optimized/zstd_v04.ll @@ -6197,8 +6197,7 @@ define internal fastcc range(i64 -46, 1) i64 @FSE_buildDTable(ptr noundef captur %27 = trunc i64 %indvars.iv to i8 %28 = add i32 %.07284, -1 %29 = zext i32 %.07284 to i64 - %.idx81 = shl nuw nsw i64 %29, 2 - %30 = getelementptr inbounds nuw i8, ptr %6, i64 %.idx81 + %30 = getelementptr inbounds nuw %struct.FSE_decode_t, ptr %6, i64 %29 %31 = getelementptr inbounds nuw i8, ptr %30, i64 2 store i8 %27, ptr %31, align 2, !tbaa !55 br label %34 @@ -6236,8 +6235,7 @@ define internal fastcc range(i64 -46, 1) i64 @FSE_buildDTable(ptr noundef captur %.188 = phi i32 [ %.06490, %.lr.ph ], [ %.2, %47 ] %.06687 = phi i32 [ 0, %.lr.ph ], [ %48, %47 ] %42 = zext nneg i32 %.188 to i64 - %.idx = shl nuw nsw i64 %42, 2 - %43 = getelementptr inbounds nuw i8, ptr %6, i64 %.idx + %43 = getelementptr inbounds nuw %struct.FSE_decode_t, ptr %6, i64 %42 %44 = getelementptr inbounds nuw i8, ptr %43, i64 2 store i8 %40, ptr %44, align 2, !tbaa !55 br label %45 @@ -6255,7 +6253,7 @@ define internal fastcc range(i64 -46, 1) i64 @FSE_buildDTable(ptr noundef captur br i1 %exitcond92.not, label %._crit_edge, label %41, !llvm.loop !95 ._crit_edge: ; preds = %47, %.preheader82 - %.1.lcssa = phi i32 [ %.06490, %.preheader82 ], [ %.2, %47 ] + %.1.lcssa = phi i32 [ %.06490, %.preheader81 ], [ %.2, %47 ] %indvars.iv.next94 = add nuw nsw i64 %indvars.iv93, 1 %exitcond97.not = icmp eq i64 %indvars.iv.next94, %wide.trip.count br i1 %exitcond97.not, label %49, label %.preheader82, !llvm.loop !96 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..87cbe74aa3a 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/151333 export COMPTIME_MODE=0 # Please rebase manually