diff --git a/bench/abc/optimized/giaTtopt.ll b/bench/abc/optimized/giaTtopt.ll index 8b288ed466c..c5a156e88ca 100644 --- a/bench/abc/optimized/giaTtopt.ll +++ b/bench/abc/optimized/giaTtopt.ll @@ -3068,7 +3068,8 @@ _ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIP store ptr %34, ptr %11, align 8, !tbaa !78 %36 = getelementptr inbounds nuw i32, ptr %30, i64 %28 store ptr %36, ptr %13, align 8, !tbaa !80 - %.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 !78 br label %_ZNSt6vectorIiSaIiEE9push_backERKi.exit @@ -6991,7 +6992,8 @@ _ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIP store ptr %68, ptr %45, align 8, !tbaa !78 %70 = getelementptr inbounds nuw i32, ptr %64, i64 %62 store ptr %70, ptr %47, align 8, !tbaa !80 - %.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 !78 br label %_ZNSt6vectorIiSaIiEE9push_backERKi.exit @@ -9362,7 +9364,8 @@ _ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIP store ptr %48, ptr %25, align 8, !tbaa !78 %50 = getelementptr inbounds nuw i32, ptr %44, i64 %42 store ptr %50, ptr %27, align 8, !tbaa !80 - %.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 !78 br label %_ZNSt6vectorIiSaIiEE9push_backERKi.exit diff --git a/bench/abseil-cpp/optimized/gmock-all.ll b/bench/abseil-cpp/optimized/gmock-all.ll index 704b1ee0c58..993d4c28b49 100644 --- a/bench/abseil-cpp/optimized/gmock-all.ll +++ b/bench/abseil-cpp/optimized/gmock-all.ll @@ -5321,21 +5321,22 @@ _ZN7testing19MatchResultListenerlsIA25_cEERS0_RKT_.exit: ; preds = %68 70: ; preds = %_ZN7testing19MatchResultListenerlsIA25_cEERS0_RKT_.exit %71 = load ptr, ptr %4, align 8, !tbaa !181 - %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 !181 - %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 !183 + %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 !183 83: ; preds = %70, %68, %63, %61, %58 %84 = landingpad { ptr, i32 } @@ -5362,7 +5363,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 !181 %.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 b32c6573e0f..478ec97e1c6 100644 --- a/bench/actix-rs/optimized/4zcw438fefceam0r.ll +++ b/bench/actix-rs/optimized/4zcw438fefceam0r.ll @@ -6361,18 +6361,22 @@ define hidden void @"_ZN61_$LT$$u5b$V$u5d$$u20$as$u20$alloc..slice..Concat$LT$T$ %6 = icmp eq i64 %2, 0 br i1 %6, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h7c4a50b1c0ae525dE.exit", 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 - -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h7c4a50b1c0ae525dE.exit": ; preds = %.preheader, %3 - %.0.i = phi i64 [ 0, %3 ], [ %8, %.preheader ] +.preheader: ; preds = %3 + %invariant.gep.i = getelementptr i8, ptr %1, i64 8 + br label %8 + +8:; preds = %8, %.preheader + %.017.i = phi i64 [ 0, %7 ], [ %9, %8 ] + %.016.i = phi i64 [ 0, %7 ], [ %10, %8 ] + %gep.i = getelementptr { ptr, i64 }, ptr %invariant.gep.i, i64 %.016.i + %.val21.i = load i64, ptr %gep.i, 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 %8 + +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h7c4a50b1c0ae525dE.exit": ; preds = %8, %3 + %.0.i = phi i64 [ 0, %3 ], [ %9, %8 ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) %11 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h7bd03435afd6f60aE"(i64 noundef %.0.i, i1 noundef zeroext false) %12 = extractvalue { i64, ptr } %11, 0 @@ -6388,7 +6392,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 %36 unwind label %34 + to label %37 unwind label %34 ._crit_edge: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17hb1406ca275f9020eE.exit", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h7c4a50b1c0ae525dE.exit" call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) diff --git a/bench/assimp/optimized/AMFImporter_Postprocess.ll b/bench/assimp/optimized/AMFImporter_Postprocess.ll index 0df5b9e11e4..544fb93f8e9 100644 --- a/bench/assimp/optimized/AMFImporter_Postprocess.ll +++ b/bench/assimp/optimized/AMFImporter_Postprocess.ll @@ -2644,8 +2644,7 @@ _ZN8aiStringaSERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i: ; call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %91, ptr nonnull align 4 %45, i64 %92, i1 false) %93 = getelementptr inbounds nuw [1024 x i8], ptr %91, i64 0, i64 %92 store i8 0, ptr %93, align 1 - %94 = getelementptr inbounds nuw %struct.aiMetadataEntry, ptr %79, i64 %66, i32 1 - store ptr %90, ptr %94, align 8 + store ptr %90, 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 3829f99e2f3..1b7bee8a380 100644 --- a/bench/assimp/optimized/Importer.ll +++ b/bench/assimp/optimized/Importer.ll @@ -6836,19 +6836,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 [1024 x i8], ptr %79, i64 0, 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 [1024 x i8], ptr %78, i64 0, 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/boost/optimized/pool_resource.ll b/bench/boost/optimized/pool_resource.ll index a8905da34fe..50e42821a1c 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 4a6b9efad56..c1a80fb7544 100644 --- a/bench/boost/optimized/to_chars.ll +++ b/bench/boost/optimized/to_chars.ll @@ -3562,6 +3562,7 @@ _ZN5boost8charconv6detail11decompose32EjPc.exit: ; preds = %45 %62 = sub nsw i64 0, %59 %63 = getelementptr inbounds i8, ptr %61, i64 %62 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %0, ptr nonnull align 1 %63, i64 %59, i1 false) + %invariant.gep = getelementptr inbounds nuw i8, ptr %5, i64 1 %.not53 = icmp eq i64 %indvars.iv, 0 br i1 %.not53, label %._crit_edge, label %.lr.ph @@ -3570,7 +3571,7 @@ _ZN5boost8charconv6detail11decompose32EjPc.exit: ; preds = %45 %.052 = phi i64 [ %66, %.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 [5 x [10 x i8]], ptr %5, i64 0, i64 %indvars.iv.next56, i64 1 + %65 = getelementptr inbounds nuw [5 x [10 x i8]], ptr %invariant.gep, i64 0, i64 %indvars.iv.next56 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 diff --git a/bench/box2d/optimized/linux_joystick.ll b/bench/box2d/optimized/linux_joystick.ll index 69861813fc6..bf8af120cb9 100644 --- a/bench/box2d/optimized/linux_joystick.ll +++ b/bench/box2d/optimized/linux_joystick.ll @@ -131,8 +131,7 @@ 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 - %gep = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 2180), i64 %.idx + %gep = getelementptr inbounds nuw [16 x %struct._GLFWjoystick], ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 2180), i64 0, i64 %indvars.iv %27 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %gep, ptr noundef nonnull dereferenceable(1) %3) #14 %28 = icmp eq i32 %27, 0 br i1 %28, label %29, label %26 diff --git a/bench/bullet3/optimized/btConvexHull.ll b/bench/bullet3/optimized/btConvexHull.ll index 08ecc85526c..c82ab306cb7 100644 --- a/bench/bullet3/optimized/btConvexHull.ll +++ b/bench/bullet3/optimized/btConvexHull.ll @@ -634,11 +634,12 @@ _ZN20btAlignedObjectArrayI7btPlaneE10deallocateEv.exit.i.i: ; preds = %70, %_ZNK %71 = phi ptr [ %.pre50, %..lr.ph.i29_crit_edge ], [ %.0.i.i.i36, %_ZN20btAlignedObjectArrayI7btPlaneE10deallocateEv.exit.i.i ] %72 = sext i32 %51 to i64 %wide.trip.count.i30 = sext i32 %3 to i64 + %invariant.gep = getelementptr i8, ptr %71, i64 16 br label %73 73: ; preds = %73, %.lr.ph.i29 %indvars.iv.i31 = phi i64 [ %72, %.lr.ph.i29 ], [ %indvars.iv.next.i32, %73 ] - %.sroa.4.0..sroa_idx = getelementptr inbounds %class.btPlane, ptr %71, i64 %indvars.iv.i31, i32 1 + %.sroa.4.0..sroa_idx = getelementptr %class.btPlane, ptr %invariant.gep, i64 %indvars.iv.i31 store float 0.000000e+00, ptr %.sroa.4.0..sroa_idx, align 4, !tbaa !4 %indvars.iv.next.i32 = add nsw i64 %indvars.iv.i31, 1 %exitcond.not.i33 = icmp eq i64 %indvars.iv.next.i32, %wide.trip.count.i30 diff --git a/bench/c3c/optimized/llvm_codegen.ll b/bench/c3c/optimized/llvm_codegen.ll index a04ed316c5b..51781c9541a 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.ret166: ; 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.ret166 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 09e448fd1ae..6bee33a71e8 100644 --- a/bench/casadi/optimized/rootfinder.ll +++ b/bench/casadi/optimized/rootfinder.ll @@ -15698,7 +15698,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 @@ -15984,9 +15984,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 @@ -16011,7 +16012,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 @@ -16023,12 +16024,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(i64 16, ptr nonnull %10) #30 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(i64 8, ptr nonnull %9) #30 %163 = load ptr, ptr %8, align 8, !tbaa !11 %164 = icmp eq ptr %163, %35 @@ -16058,7 +16059,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(i64 392, ptr nonnull %6) #30 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/ceres/optimized/block_random_access_dense_matrix.ll b/bench/ceres/optimized/block_random_access_dense_matrix.ll index 76684b2994d..269996b72df 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/ceres/optimized/polynomial.ll b/bench/ceres/optimized/polynomial.ll index b751ef3c2f1..df35aa60b85 100644 --- a/bench/ceres/optimized/polynomial.ll +++ b/bench/ceres/optimized/polynomial.ll @@ -1702,22 +1702,26 @@ thread-pre-split.i.i.i.i.i.i.i128: ; preds = %470 %480 = icmp sgt i64 %478, 0 br i1 %480, label %.lr.ph.i.i.i.i.i.i.i.i130, label %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_12CwiseUnaryOpINS_8internal14scalar_imag_opISt7complexIdEEEKNS0_IS7_Lin1ELi1ELi0ELin1ELi1EEEEEEERS1_RKNS_9DenseBaseIT_EE.exit -.lr.ph.i.i.i.i.i.i.i.i130: ; preds = %477, %.lr.ph.i.i.i.i.i.i.i.i130 - %.05.i.i.i.i.i.i.i.i131 = phi i64 [ %484, %.lr.ph.i.i.i.i.i.i.i.i130 ], [ 0, %477 ] - %481 = getelementptr inbounds nuw double, ptr %479, i64 %.05.i.i.i.i.i.i.i.i131 - %482 = getelementptr inbounds nuw %"class.std::complex", ptr %472, i64 %.05.i.i.i.i.i.i.i.i131, i32 0, i32 1 - %483 = load double, ptr %482, align 8, !tbaa !19 - store double %483, ptr %481, align 8, !tbaa !19 +.lr.ph.i.i.i.i.i.i.i.i130: ; preds = %477 + %invariant.gep.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %472, i64 8 + br label %481 + +481: ; preds = %481, %.lr.ph.i.i.i.i.i.i.i.i130 + %.05.i.i.i.i.i.i.i.i131 = phi i64 [ 0, %.lr.ph.i.i.i.i.i.i.i.i130 ], [ %484, %481 ] + %482 = getelementptr inbounds nuw double, ptr %479, i64 %.05.i.i.i.i.i.i.i.i131 + %gep.i.i.i.i.i.i.i.i = getelementptr inbounds nuw %"class.std::complex", ptr %invariant.gep.i.i.i.i.i.i.i.i, i64 %.05.i.i.i.i.i.i.i.i131 + %483 = load double, ptr %gep.i.i.i.i.i.i.i.i, align 8, !tbaa !19 + store double %483, ptr %482, align 8, !tbaa !19 %484 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.i131, 1 %exitcond.not.i.i.i.i.i.i.i.i132 = icmp eq i64 %484, %478 - br i1 %exitcond.not.i.i.i.i.i.i.i.i132, label %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_12CwiseUnaryOpINS_8internal14scalar_imag_opISt7complexIdEEEKNS0_IS7_Lin1ELi1ELi0ELin1ELi1EEEEEEERS1_RKNS_9DenseBaseIT_EE.exit, label %.lr.ph.i.i.i.i.i.i.i.i130, !llvm.loop !73 + br i1 %exitcond.not.i.i.i.i.i.i.i.i132, label %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_12CwiseUnaryOpINS_8internal14scalar_imag_opISt7complexIdEEEKNS0_IS7_Lin1ELi1ELi0ELin1ELi1EEEEEEERS1_RKNS_9DenseBaseIT_EE.exit, label %481, !llvm.loop !73 485: ; preds = %thread-pre-split.i.i.i.i.i.i.i128 %486 = landingpad { ptr, i32 } cleanup br label %507 -_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_12CwiseUnaryOpINS_8internal14scalar_imag_opISt7complexIdEEEKNS0_IS7_Lin1ELi1ELi0ELin1ELi1EEEEEEERS1_RKNS_9DenseBaseIT_EE.exit: ; preds = %.lr.ph.i.i.i.i.i.i.i.i130, %477, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_12CwiseUnaryOpINS_8internal14scalar_real_opISt7complexIdEEEKNS0_IS7_Lin1ELi1ELi0ELin1ELi1EEEEEEERS1_RKNS_9DenseBaseIT_EE.exit, %_ZN4absl12lts_2024011612log_internal10LogMessagelsILi53EEERS2_RAT__Kc.exit +_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_12CwiseUnaryOpINS_8internal14scalar_imag_opISt7complexIdEEEKNS0_IS7_Lin1ELi1ELi0ELin1ELi1EEEEEEERS1_RKNS_9DenseBaseIT_EE.exit: ; preds = %481, %477, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_12CwiseUnaryOpINS_8internal14scalar_real_opISt7complexIdEEEKNS0_IS7_Lin1ELi1ELi0ELin1ELi1EEEEEEERS1_RKNS_9DenseBaseIT_EE.exit, %_ZN4absl12lts_2024011612log_internal10LogMessagelsILi53EEERS2_RAT__Kc.exit %487 = getelementptr inbounds nuw i8, ptr %16, i64 216 %488 = load ptr, ptr %487, align 8, !tbaa !13 call void @free(ptr noundef %488) #30 diff --git a/bench/clamav/optimized/hashtab.ll b/bench/clamav/optimized/hashtab.ll index 66ba56b044f..00fb5af69ec 100644 --- a/bench/clamav/optimized/hashtab.ll +++ b/bench/clamav/optimized/hashtab.ll @@ -2780,12 +2780,13 @@ define i32 @cli_map_getvalue_size(ptr noundef readonly captures(none) %0) local_ %12 = getelementptr inbounds nuw i8, ptr %0, i64 32 %13 = load ptr, ptr %12, align 8, !tbaa !19 %14 = zext nneg i32 %6 to i64 - %15 = getelementptr inbounds nuw %struct.cli_map_value, ptr %13, i64 %14, i32 1 - %16 = load i32, ptr %15, align 8, !tbaa !55 - br label %17 + %15 = getelementptr inbounds nuw %struct.cli_map_value, ptr %13, i64 %14 + %16 = getelementptr inbounds nuw i8, ptr %15, i64 8 + %17 = load i32, ptr %16, align 8, !tbaa !55 + br label %18 17: ; preds = %4, %8, %1, %11 - %.0 = phi i32 [ %16, %11 ], [ %3, %1 ], [ -1, %8 ], [ -1, %4 ] + %.0 = phi i32 [ %17, %11 ], [ %3, %1 ], [ -1, %8 ], [ -1, %4 ] ret i32 %.0 } diff --git a/bench/clamav/optimized/inflate64.ll b/bench/clamav/optimized/inflate64.ll index 82326d0734f..186e9bb0fdb 100644 --- a/bench/clamav/optimized/inflate64.ll +++ b/bench/clamav/optimized/inflate64.ll @@ -693,6 +693,9 @@ default.unreachable2225: ; preds = %132 %242 = load i32, ptr %45, align 8, !tbaa !35 %notmask = shl nsw i32 -1, %242 %243 = xor i32 %notmask, -1 + %invariant.gep2551 = getelementptr inbounds nuw i8, ptr %241, i64 1 + %invariant.gep = getelementptr inbounds nuw i8, ptr %241, i64 1 + %invariant.gep2553 = getelementptr i8, ptr %241, i64 2 br label %.preheader814 .preheader814: ; preds = %.preheader814.lr.ph, %365 @@ -704,7 +707,7 @@ default.unreachable2225: ; preds = %132 %244 = trunc i64 %.196181432 to i32 %245 = and i32 %243, %244 %246 = zext nneg i32 %245 to i64 - %.sroa.18.0..sroa_idx1366 = getelementptr inbounds nuw %struct.code, ptr %241, i64 %246, i32 1 + %.sroa.18.0..sroa_idx1366 = getelementptr inbounds nuw %struct.code, ptr %invariant.gep2551, i64 %246 %.sroa.18.0.copyload1367 = load i8, ptr %.sroa.18.0..sroa_idx1366, align 1, !tbaa !32 %247 = zext i8 %.sroa.18.0.copyload1367 to i32 %.not7601368 = icmp ult i32 %.191433, %247 @@ -733,7 +736,7 @@ default.unreachable2225: ; preds = %132 %257 = trunc i64 %256 to i32 %258 = and i32 %243, %257 %259 = zext nneg i32 %258 to i64 - %.sroa.18.0..sroa_idx = getelementptr inbounds nuw %struct.code, ptr %241, i64 %259, i32 1 + %.sroa.18.0..sroa_idx = getelementptr inbounds nuw %struct.code, ptr %invariant.gep, i64 %259 %.sroa.18.0.copyload = load i8, ptr %.sroa.18.0..sroa_idx, align 1, !tbaa !32 %260 = zext i8 %.sroa.18.0.copyload to i64 %.not760 = icmp samesign ult i64 %indvars.iv.next2148, %260 @@ -752,7 +755,7 @@ default.unreachable2225: ; preds = %132 %.21620.lcssa = phi i64 [ %.196181432, %.preheader814 ], [ %256, %._crit_edge1374.loopexit ] %.21.lcssa = phi i32 [ %.191433, %.preheader814 ], [ %262, %._crit_edge1374.loopexit ] %.sroa.18.0.copyload.lcssa = phi i8 [ %.sroa.18.0.copyload1367, %.preheader814 ], [ %.sroa.18.0.copyload, %._crit_edge1374.loopexit ] - %.sroa.41.0..sroa_idx.le = getelementptr inbounds nuw %struct.code, ptr %241, i64 %263, i32 2 + %.sroa.41.0..sroa_idx.le = getelementptr %struct.code, ptr %invariant.gep2553, i64 %263 %.sroa.41.0.copyload.le = load i16, ptr %.sroa.41.0..sroa_idx.le, align 2, !tbaa !40 %264 = icmp ult i16 %.sroa.41.0.copyload.le, 16 br i1 %264, label %.preheader804, label %284 @@ -2368,14 +2371,14 @@ select.unfold.preheader: ; preds = %112 %150 = zext nneg i32 %125 to i64 %151 = getelementptr inbounds nuw %struct.code, ptr %149, i64 %150 store i8 %148, ptr %151, align 2, !tbaa !51 - %152 = getelementptr inbounds nuw %struct.code, ptr %149, i64 %150, i32 1 + %152 = getelementptr inbounds nuw i8, ptr %151, i64 1 store i8 %70, ptr %152, align 1, !tbaa !53 %153 = ptrtoint ptr %129 to i64 %154 = ptrtoint ptr %149 to i64 %155 = sub i64 %153, %154 %156 = lshr exact i64 %155, 2 %157 = trunc i64 %156 to i16 - %158 = getelementptr inbounds nuw %struct.code, ptr %149, i64 %150, i32 2 + %158 = getelementptr inbounds nuw i8, ptr %151, i64 2 store i16 %157, ptr %158, align 2, !tbaa !54 br label %.outer diff --git a/bench/clap-rs/optimized/28kpmq8k0hu4re4f.ll b/bench/clap-rs/optimized/28kpmq8k0hu4re4f.ll index a1c184b897c..cd4c5982ec6 100644 --- a/bench/clap-rs/optimized/28kpmq8k0hu4re4f.ll +++ b/bench/clap-rs/optimized/28kpmq8k0hu4re4f.ll @@ -5362,29 +5362,33 @@ define noundef i64 @_ZN12clap_builder6parser7matches11matched_arg10MatchedArg8nu ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: none) uwtable define hidden noundef zeroext i1 @_ZN12clap_builder6parser7matches11matched_arg10MatchedArg20all_val_groups_empty17h5e8ad122df41447cE(ptr noalias noundef readonly align 8 captures(none) dereferenceable(104) %0) unnamed_addr #17 personality ptr @rust_eh_personality { - %2 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %3 = load ptr, ptr %2, align 8, !nonnull !4, !noundef !4 - %4 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %5 = load i64, ptr %4, align 8, !noundef !4 - %6 = icmp eq i64 %5, 0 - 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 - -"_ZN4core4iter8adapters7flatten26FlattenCompat$LT$I$C$U$GT$9iter_fold17h00d8ede55041c655E.exit.loopexit": ; preds = %.preheader - %11 = icmp eq i64 %8, 0 + %2 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %3 = load i64, ptr %2, align 8, !noundef !4 + %4 = icmp eq i64 %3, 0 + br i1 %4, label %"_ZN4core4iter8adapters7flatten26FlattenCompat$LT$I$C$U$GT$9iter_fold17h00d8ede55041c655E.exit", label %5 + +5: ; preds = %1 + %6 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %7 = load ptr, ptr %6, align 8, !nonnull !4, !noundef !4 + %invariant.gep.i.i.i = getelementptr i8, ptr %7, i64 16 + br label %8 + +8:; preds = %8, %5 + %.018.i.i.i = phi i64 [ 0, %5 ], [ %9, %8 ] + %.017.i.i.i = phi i64 [ 0, %5 ], [ %10, %8 ] + %gep.i.i.i = getelementptr { { i64, ptr }, i64 }, ptr %invariant.gep.i.i.i, i64 %.017.i.i.i + %.val22.i.i.i = load i64, ptr %gep.i.i.i, 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, %3 + br i1 %11, label %"_ZN4core4iter8adapters7flatten26FlattenCompat$LT$I$C$U$GT$9iter_fold17h00d8ede55041c655E.exit.loopexit", label %8 + +"_ZN4core4iter8adapters7flatten26FlattenCompat$LT$I$C$U$GT$9iter_fold17h00d8ede55041c655E.exit.loopexit": ; preds = %8 + %12 = 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 - %.0.i.i = phi i1 [ true, %1 ], [ %11, %"_ZN4core4iter8adapters7flatten26FlattenCompat$LT$I$C$U$GT$9iter_fold17h00d8ede55041c655E.exit.loopexit" ] + %.0.i.i = phi i1 [ true, %1 ], [ %12, %"_ZN4core4iter8adapters7flatten26FlattenCompat$LT$I$C$U$GT$9iter_fold17h00d8ede55041c655E.exit.loopexit" ] ret i1 %.0.i.i } diff --git a/bench/clap-rs/optimized/58cs3pckwcmstm46.ll b/bench/clap-rs/optimized/58cs3pckwcmstm46.ll index 0486926216b..c8c72b0891a 100644 --- a/bench/clap-rs/optimized/58cs3pckwcmstm46.ll +++ b/bench/clap-rs/optimized/58cs3pckwcmstm46.ll @@ -1359,13 +1359,14 @@ define hidden void @"_ZN4core3ptr124drop_in_place$LT$alloc..raw_vec..RawVec$LT$$ ; Function Attrs: nounwind nonlazybind uwtable define hidden void @"_ZN4core3ptr125drop_in_place$LT$$u5b$$LP$clap_builder..error..context..ContextKind$C$clap_builder..error..context..ContextValue$RP$$u5d$$GT$17h94f13d5013aad759E.llvm.13290713768692451428"(ptr noalias noundef nonnull readonly align 8 captures(none) %0, i64 noundef %1) unnamed_addr #0 personality ptr @rust_eh_personality { + %invariant.gep = getelementptr i8, ptr %0, i64 8 %3 = icmp eq i64 %1, 0 br i1 %3, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %2, %.lr.ph %.07 = phi i64 [ %4, %.lr.ph ], [ 0, %2 ] %4 = add nuw i64 %.07, 1 - %5 = getelementptr inbounds [0 x { i8, [7 x i8], { i8, [31 x i8] } }], ptr %0, i64 0, i64 %.07, i32 2 + %5 = getelementptr [0 x { i8, [7 x i8], { i8, [31 x i8] } }], ptr %invariant.gep, i64 0, i64 %.07 tail call void @"_ZN4core3ptr63drop_in_place$LT$clap_builder..error..context..ContextValue$GT$17he83145b849380900E.llvm.13290713768692451428"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %5) %6 = icmp eq i64 %4, %1 br i1 %6, label %._crit_edge, label %.lr.ph @@ -2016,13 +2017,14 @@ define hidden void @"_ZN4core3ptr160drop_in_place$LT$core..array..iter..IntoIter %5 = load i64, ptr %4, align 8, !alias.scope !953, !noundef !4 %6 = getelementptr inbounds { [5 x i64] }, ptr %2, i64 %3 %7 = sub nuw i64 %5, %3 + %invariant.gep.i.i = getelementptr i8, ptr %6, i64 8 %8 = icmp eq i64 %5, %3 br i1 %8, label %"_ZN82_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf0768fb4143d6829E.llvm.13290713768692451428.exit", label %.lr.ph.i.i .lr.ph.i.i: ; preds = %1, %.lr.ph.i.i %.07.i.i = phi i64 [ %9, %.lr.ph.i.i ], [ 0, %1 ] %9 = add nuw i64 %.07.i.i, 1 - %10 = getelementptr inbounds [0 x { i8, [7 x i8], { i8, [31 x i8] } }], ptr %6, i64 0, i64 %.07.i.i, i32 2 + %10 = getelementptr [0 x { i8, [7 x i8], { i8, [31 x i8] } }], ptr %invariant.gep.i.i, i64 0, i64 %.07.i.i tail call void @"_ZN4core3ptr63drop_in_place$LT$clap_builder..error..context..ContextValue$GT$17he83145b849380900E.llvm.13290713768692451428"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %10) %11 = icmp eq i64 %9, %7 br i1 %11, label %"_ZN82_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf0768fb4143d6829E.llvm.13290713768692451428.exit", label %.lr.ph.i.i @@ -2039,13 +2041,14 @@ define hidden void @"_ZN4core3ptr160drop_in_place$LT$core..array..iter..IntoIter %5 = load i64, ptr %4, align 8, !alias.scope !958, !noundef !4 %6 = getelementptr inbounds { [5 x i64] }, ptr %0, i64 %3 %7 = sub nuw i64 %5, %3 + %invariant.gep.i.i = getelementptr i8, ptr %6, i64 8 %8 = icmp eq i64 %5, %3 br i1 %8, label %"_ZN82_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h217497a023404e39E.llvm.13290713768692451428.exit", label %.lr.ph.i.i .lr.ph.i.i: ; preds = %1, %.lr.ph.i.i %.07.i.i = phi i64 [ %9, %.lr.ph.i.i ], [ 0, %1 ] %9 = add nuw i64 %.07.i.i, 1 - %10 = getelementptr inbounds [0 x { i8, [7 x i8], { i8, [31 x i8] } }], ptr %6, i64 0, i64 %.07.i.i, i32 2 + %10 = getelementptr [0 x { i8, [7 x i8], { i8, [31 x i8] } }], ptr %invariant.gep.i.i, i64 0, i64 %.07.i.i tail call void @"_ZN4core3ptr63drop_in_place$LT$clap_builder..error..context..ContextValue$GT$17he83145b849380900E.llvm.13290713768692451428"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %10) %11 = icmp eq i64 %9, %7 br i1 %11, label %"_ZN82_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h217497a023404e39E.llvm.13290713768692451428.exit", label %.lr.ph.i.i @@ -2062,13 +2065,14 @@ define hidden void @"_ZN4core3ptr160drop_in_place$LT$core..array..iter..IntoIter %5 = load i64, ptr %4, align 8, !alias.scope !963, !noundef !4 %6 = getelementptr inbounds { [5 x i64] }, ptr %2, i64 %3 %7 = sub nuw i64 %5, %3 + %invariant.gep.i.i = getelementptr i8, ptr %6, i64 8 %8 = icmp eq i64 %5, %3 br i1 %8, label %"_ZN82_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3afe93a6b723d18fE.llvm.13290713768692451428.exit", label %.lr.ph.i.i .lr.ph.i.i: ; preds = %1, %.lr.ph.i.i %.07.i.i = phi i64 [ %9, %.lr.ph.i.i ], [ 0, %1 ] %9 = add nuw i64 %.07.i.i, 1 - %10 = getelementptr inbounds [0 x { i8, [7 x i8], { i8, [31 x i8] } }], ptr %6, i64 0, i64 %.07.i.i, i32 2 + %10 = getelementptr [0 x { i8, [7 x i8], { i8, [31 x i8] } }], ptr %invariant.gep.i.i, i64 0, i64 %.07.i.i tail call void @"_ZN4core3ptr63drop_in_place$LT$clap_builder..error..context..ContextValue$GT$17he83145b849380900E.llvm.13290713768692451428"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %10) %11 = icmp eq i64 %9, %7 br i1 %11, label %"_ZN82_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3afe93a6b723d18fE.llvm.13290713768692451428.exit", label %.lr.ph.i.i @@ -13366,13 +13370,14 @@ define hidden void @"_ZN82_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u %5 = load i64, ptr %4, align 8, !alias.scope !6588, !noundef !4 %6 = getelementptr inbounds { [5 x i64] }, ptr %0, i64 %3 %7 = sub nuw i64 %5, %3 + %invariant.gep.i = getelementptr i8, ptr %6, i64 8 %8 = icmp eq i64 %5, %3 br i1 %8, label %"_ZN4core3ptr125drop_in_place$LT$$u5b$$LP$clap_builder..error..context..ContextKind$C$clap_builder..error..context..ContextValue$RP$$u5d$$GT$17h94f13d5013aad759E.llvm.13290713768692451428.exit", label %.lr.ph.i .lr.ph.i: ; preds = %1, %.lr.ph.i %.07.i = phi i64 [ %9, %.lr.ph.i ], [ 0, %1 ] %9 = add nuw i64 %.07.i, 1 - %10 = getelementptr inbounds [0 x { i8, [7 x i8], { i8, [31 x i8] } }], ptr %6, i64 0, i64 %.07.i, i32 2 + %10 = getelementptr [0 x { i8, [7 x i8], { i8, [31 x i8] } }], ptr %invariant.gep.i, i64 0, i64 %.07.i tail call void @"_ZN4core3ptr63drop_in_place$LT$clap_builder..error..context..ContextValue$GT$17he83145b849380900E.llvm.13290713768692451428"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %10) %11 = icmp eq i64 %9, %7 br i1 %11, label %"_ZN4core3ptr125drop_in_place$LT$$u5b$$LP$clap_builder..error..context..ContextKind$C$clap_builder..error..context..ContextValue$RP$$u5d$$GT$17h94f13d5013aad759E.llvm.13290713768692451428.exit", label %.lr.ph.i @@ -13389,13 +13394,14 @@ define hidden void @"_ZN82_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u %5 = load i64, ptr %4, align 8, !alias.scope !6591, !noundef !4 %6 = getelementptr inbounds { [5 x i64] }, ptr %2, i64 %3 %7 = sub nuw i64 %5, %3 + %invariant.gep.i = getelementptr i8, ptr %6, i64 8 %8 = icmp eq i64 %5, %3 br i1 %8, label %"_ZN4core3ptr125drop_in_place$LT$$u5b$$LP$clap_builder..error..context..ContextKind$C$clap_builder..error..context..ContextValue$RP$$u5d$$GT$17h94f13d5013aad759E.llvm.13290713768692451428.exit", label %.lr.ph.i .lr.ph.i: ; preds = %1, %.lr.ph.i %.07.i = phi i64 [ %9, %.lr.ph.i ], [ 0, %1 ] %9 = add nuw i64 %.07.i, 1 - %10 = getelementptr inbounds [0 x { i8, [7 x i8], { i8, [31 x i8] } }], ptr %6, i64 0, i64 %.07.i, i32 2 + %10 = getelementptr [0 x { i8, [7 x i8], { i8, [31 x i8] } }], ptr %invariant.gep.i, i64 0, i64 %.07.i tail call void @"_ZN4core3ptr63drop_in_place$LT$clap_builder..error..context..ContextValue$GT$17he83145b849380900E.llvm.13290713768692451428"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %10) %11 = icmp eq i64 %9, %7 br i1 %11, label %"_ZN4core3ptr125drop_in_place$LT$$u5b$$LP$clap_builder..error..context..ContextKind$C$clap_builder..error..context..ContextValue$RP$$u5d$$GT$17h94f13d5013aad759E.llvm.13290713768692451428.exit", label %.lr.ph.i @@ -13422,13 +13428,14 @@ define hidden void @"_ZN82_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u %5 = load i64, ptr %4, align 8, !alias.scope !6594, !noundef !4 %6 = getelementptr inbounds { [5 x i64] }, ptr %2, i64 %3 %7 = sub nuw i64 %5, %3 + %invariant.gep.i = getelementptr i8, ptr %6, i64 8 %8 = icmp eq i64 %5, %3 br i1 %8, label %"_ZN4core3ptr125drop_in_place$LT$$u5b$$LP$clap_builder..error..context..ContextKind$C$clap_builder..error..context..ContextValue$RP$$u5d$$GT$17h94f13d5013aad759E.llvm.13290713768692451428.exit", label %.lr.ph.i .lr.ph.i: ; preds = %1, %.lr.ph.i %.07.i = phi i64 [ %9, %.lr.ph.i ], [ 0, %1 ] %9 = add nuw i64 %.07.i, 1 - %10 = getelementptr inbounds [0 x { i8, [7 x i8], { i8, [31 x i8] } }], ptr %6, i64 0, i64 %.07.i, i32 2 + %10 = getelementptr [0 x { i8, [7 x i8], { i8, [31 x i8] } }], ptr %invariant.gep.i, i64 0, i64 %.07.i tail call void @"_ZN4core3ptr63drop_in_place$LT$clap_builder..error..context..ContextValue$GT$17he83145b849380900E.llvm.13290713768692451428"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %10) %11 = icmp eq i64 %9, %7 br i1 %11, label %"_ZN4core3ptr125drop_in_place$LT$$u5b$$LP$clap_builder..error..context..ContextKind$C$clap_builder..error..context..ContextValue$RP$$u5d$$GT$17h94f13d5013aad759E.llvm.13290713768692451428.exit", label %.lr.ph.i diff --git a/bench/clap-rs/optimized/rh1bh36cvgkzipt.ll b/bench/clap-rs/optimized/rh1bh36cvgkzipt.ll index 6a4307465a7..fe0bf63268e 100644 --- a/bench/clap-rs/optimized/rh1bh36cvgkzipt.ll +++ b/bench/clap-rs/optimized/rh1bh36cvgkzipt.ll @@ -451,12 +451,13 @@ define hidden noundef i64 @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$G %8 = ptrtoint ptr %0 to i64 %9 = sub nuw i64 %7, %8 %10 = udiv exact i64 %9, 24 + %invariant.gep.i = getelementptr i8, ptr %0, i64 16 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 { { i64, ptr }, i64 }, ptr %0, i64 %.017.i, i32 1 + %12 = getelementptr { { i64, ptr }, i64 }, ptr %invariant.gep.i, i64 %.017.i %.val.i = load i64, ptr %12, align 8, !noundef !4 %13 = add i64 %.val.i, %.018.i %14 = add nuw i64 %.017.i, 1 @@ -8572,12 +8573,13 @@ define hidden noundef i64 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u2 %8 = ptrtoint ptr %0 to i64 %9 = sub nuw i64 %7, %8 %10 = udiv exact i64 %9, 24 + %invariant.gep = getelementptr i8, ptr %0, i64 16 br label %11 11: ; preds = %11, %6 %.018 = phi i64 [ %2, %6 ], [ %13, %11 ] %.017 = phi i64 [ 0, %6 ], [ %14, %11 ] - %12 = getelementptr { { i64, ptr }, i64 }, ptr %0, i64 %.017, i32 1 + %12 = getelementptr { { i64, ptr }, i64 }, ptr %invariant.gep, i64 %.017 %.val = load i64, ptr %12, align 8, !noundef !4 %13 = add i64 %.val, %.018 %14 = add nuw i64 %.017, 1 diff --git a/bench/cmake/optimized/uv-common.ll b/bench/cmake/optimized/uv-common.ll index c11ff6a37c9..b8874b63dd4 100644 --- a/bench/cmake/optimized/uv-common.ll +++ b/bench/cmake/optimized/uv-common.ll @@ -2762,6 +2762,7 @@ define dso_local i64 @uv_now(ptr noundef readonly captures(none) %0) local_unnam ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read) uwtable define dso_local i64 @uv__count_bufs(ptr noundef readonly captures(none) %0, i32 noundef %1) local_unnamed_addr #15 { + %invariant.gep = getelementptr inbounds nuw i8, ptr %0, i64 8 %.not = icmp eq i32 %1, 0 br i1 %.not, label %._crit_edge, label %.lr.ph.preheader @@ -2772,7 +2773,7 @@ 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 + %3 = getelementptr inbounds nuw %struct.uv_buf_t, ptr %invariant.gep, i64 %indvars.iv %4 = load i64, ptr %3, align 8, !tbaa !60 %5 = add i64 %4, %.08 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 diff --git a/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll b/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll index 1bbf33053ce..c544ee43dc1 100644 --- a/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll +++ b/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll @@ -1624,16 +1624,20 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr %.not38.i = icmp eq i64 %78, 0 br i1 %.not38.i, label %.loopexit, label %.split.i -.split.i: ; preds = %.split35.i, %._crit_edge.i - %.promoted = phi i64 [ %.promoted89, %._crit_edge.i ], [ %78, %.split35.i ] - %89 = phi i64 [ %100, %._crit_edge.i ], [ %78, %.split35.i ] - %.sroa.01.036.i = phi i64 [ %90, %._crit_edge.i ], [ 0, %.split35.i ] +.split.i: ; preds = %.split35.i + %invariant.gep = getelementptr i8, ptr %76, i64 8 + br label %.split.i + +.split.i: ; preds = %.split.i.preheader, %._crit_edge.i + %.promoted = phi i64 [ %.promoted91, %._crit_edge.i ], [ %78, %.split.i.preheader ] + %89 = phi i64 [ %100, %._crit_edge.i ], [ %78, %.split.i.preheader ] + %.sroa.01.036.i = phi i64 [ %90, %._crit_edge.i ], [ 0, %.split.i.preheader ] %90 = add nuw i64 %.sroa.01.036.i, 1 %91 = icmp ult i64 %90, %89 br i1 %91, label %.lr.ph.preheader.i, label %._crit_edge.i .lr.ph.preheader.i: ; preds = %.split.i - %.phi.trans.insert.i = getelementptr inbounds [0 x { i64, i64 }], ptr %76, i64 0, i64 %.sroa.01.036.i, i32 1 + %.phi.trans.insert.i = getelementptr [0 x { i64, i64 }], ptr %invariant.gep, i64 0, i64 %.sroa.01.036.i %.pre.i = load i64, ptr %.phi.trans.insert.i, align 8, !noalias !267 %92 = getelementptr inbounds [0 x { i64, i64 }], ptr %76, i64 0, i64 %90 %93 = load i64, ptr %92, align 8, !noalias !267, !noundef !13 diff --git a/bench/cpython/optimized/gcmodule.ll b/bench/cpython/optimized/gcmodule.ll index 4e2dfc1423d..b325e7a5f9d 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 [2 x %struct.gc_generation], ptr %9, i64 0, 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 [2 x %struct.gc_generation], ptr %9, i64 0, 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/cpython/optimized/lexer.ll b/bench/cpython/optimized/lexer.ll index 813b43f5920..bce0bbcbc62 100644 --- a/bench/cpython/optimized/lexer.ll +++ b/bench/cpython/optimized/lexer.ll @@ -751,9 +751,8 @@ tok_backup.exit310.i.i: ; preds = %248 %264 = load i32, ptr %16, align 8, !tbaa !22 %265 = load i32, ptr %4, align 8, !tbaa !13 %266 = sext i32 %265 to i64 - %.idx.i.i = mul nsw i64 %266, 96 - %267 = getelementptr i8, ptr %0, i64 2896 - %268 = getelementptr i8, ptr %267, i64 %.idx.i.i + %267 = getelementptr [150 x %struct._tokenizer_mode], ptr %3, i64 0, i64 %266 + %267 = getelementptr inbounds nuw i8, ptr %267, i64 40 %269 = load i32, ptr %268, align 8, !tbaa !41 store i32 %269, ptr %16, align 8, !tbaa !22 %270 = load i32, ptr %118, align 8, !tbaa !32 diff --git a/bench/curl/optimized/multi.ll b/bench/curl/optimized/multi.ll index 10edda736a2..97381300bec 100644 --- a/bench/curl/optimized/multi.ll +++ b/bench/curl/optimized/multi.ll @@ -1642,20 +1642,22 @@ define internal fastcc range(i32 0, 13) i32 @multi_wait(ptr noundef %0, ptr noun br i1 %.not110, label %.thread, label %.preheader .preheader: ; preds = %61 + %invariant.gep = getelementptr inbounds nuw i8, ptr %1, i64 6 br i1 %.not, label %._crit_edge137, label %.lr.ph136 .lr.ph136: ; preds = %.preheader %62 = load ptr, ptr %11, align 8, !tbaa !159 %63 = zext i32 %35 to i64 - %invariant.gep = getelementptr inbounds nuw %struct.pollfd, ptr %62, i64 %63, i32 2 + %invariant.gep = getelementptr inbounds nuw %struct.pollfd, ptr %62, i64 %63 + %invariant.gep140 = getelementptr inbounds nuw i8, ptr %invariant.gep138, i64 6 br label %64 64: ; preds = %.lr.ph136, %64 %.177135 = phi i64 [ 0, %.lr.ph136 ], [ %67, %64 ] - %gep = getelementptr inbounds nuw %struct.pollfd, ptr %invariant.gep, i64 %.177135 + %gep = getelementptr inbounds nuw %struct.pollfd, ptr %invariant.gep140, i64 %.177135 %65 = load i16, ptr %gep, align 2, !tbaa !160 %.2 = and i16 %65, 7 - %66 = getelementptr inbounds nuw %struct.curl_waitfd, ptr %1, i64 %.177135, i32 2 + %66 = getelementptr inbounds nuw %struct.curl_waitfd, ptr %invariant.gep, i64 %.177135 store i16 %.2, ptr %66, align 2, !tbaa !162 %67 = add nuw nsw i64 %.177135, 1 %exitcond140.not = icmp eq i64 %67, %36 @@ -1674,7 +1676,8 @@ define internal fastcc range(i32 0, 13) i32 @multi_wait(ptr noundef %0, ptr noun %72 = load ptr, ptr %11, align 8, !tbaa !159 %73 = add i32 %35, %2 %74 = zext i32 %73 to i64 - %75 = getelementptr inbounds nuw %struct.pollfd, ptr %72, i64 %74, i32 2 + %75 = getelementptr inbounds nuw %struct.pollfd, ptr %72, i64 %73 + %75 = getelementptr inbounds nuw i8, ptr %74, i64 6 %76 = load i16, ptr %75, align 2, !tbaa !160 %77 = and i16 %76, 1 %.not112 = icmp eq i16 %77, 0 @@ -1710,7 +1713,7 @@ define internal fastcc range(i32 0, 13) i32 @multi_wait(ptr noundef %0, ptr noun br label %.thread .thread: ; preds = %61, %71, %89, %68, %._crit_edge137, %49 - %.081 = phi i32 [ 0, %49 ], [ 0, %61 ], [ %59, %._crit_edge137 ], [ %59, %68 ], [ %59, %71 ], [ %90, %89 ] + %.081 = phi i32 [ 0, %49 ], [ 0, %61 ], [ %59, %._crit_edge137 ], [ %59, %67 ], [ %59, %70 ], [ %90, %89 ] %.not116 = icmp eq ptr %4, null br i1 %.not116, label %92, label %91 diff --git a/bench/cvc5/optimized/atom_requests.ll b/bench/cvc5/optimized/atom_requests.ll index eff18e98b48..1abea60e029 100644 --- a/bench/cvc5/optimized/atom_requests.ll +++ b/bench/cvc5/optimized/atom_requests.ll @@ -1289,9 +1289,10 @@ define hidden void @_ZN4cvc58internal12AtomRequests13atom_iterator4nextEv(ptr no %4 = load i64, ptr %3, align 8, !tbaa !98 %5 = getelementptr inbounds nuw i8, ptr %2, i64 96 %6 = load ptr, ptr %5, align 8, !tbaa !47 - %7 = getelementptr inbounds nuw %"struct.cvc5::internal::AtomRequests::Element", ptr %6, i64 %4, i32 1 - %8 = load i64, ptr %7, align 8, !tbaa !83 - store i64 %8, ptr %3, align 8, !tbaa !98 + %7 = getelementptr inbounds nuw %"struct.cvc5::internal::AtomRequests::Element", ptr %6, i64 %4 + %8 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %9 = load i64, ptr %8, align 8, !tbaa !83 + store i64 %9, ptr %3, align 8, !tbaa !98 ret void } diff --git a/bench/delta-rs/optimized/3e84m8xk6w9g4bb2.ll b/bench/delta-rs/optimized/3e84m8xk6w9g4bb2.ll index e769806930d..0e617ac3400 100644 --- a/bench/delta-rs/optimized/3e84m8xk6w9g4bb2.ll +++ b/bench/delta-rs/optimized/3e84m8xk6w9g4bb2.ll @@ -14421,6 +14421,7 @@ define hidden void @"_ZN11bytes_utils9segmented21SegmentedBuf$LT$B$GT$11clean_em %5 = load i64, ptr %0, align 8, !alias.scope !1756, !noundef !4 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 %7 = load ptr, ptr %6, align 8, !alias.scope !1761, !nonnull !4, !noundef !4 + %invariant.gep = getelementptr i8, ptr %7, i64 16 %8 = getelementptr inbounds nuw i8, ptr %2, i64 24 %9 = getelementptr inbounds nuw i8, ptr %2, i64 8 %10 = getelementptr inbounds nuw i8, ptr %2, i64 16 @@ -14433,7 +14434,7 @@ 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 + %15 = getelementptr { ptr, ptr, i64, { ptr } }, ptr %invariant.gep, i64 %.0.i.i %16 = load i64, ptr %15, align 8, !noundef !4 %.not6 = icmp eq i64 %16, 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" @@ -14465,7 +14466,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 %24(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 @@ -14499,6 +14500,7 @@ define hidden void @"_ZN11bytes_utils9segmented21SegmentedBuf$LT$B$GT$4push17h4f %12 = load i64, ptr %0, align 8, !alias.scope !1780, !noundef !4 %13 = getelementptr inbounds nuw i8, ptr %0, i64 8 %14 = load ptr, ptr %13, align 8, !alias.scope !1785, !nonnull !4, !noundef !4 + %invariant.gep.i = getelementptr i8, ptr %14, i64 16 %15 = getelementptr inbounds nuw i8, ptr %3, i64 24 %16 = getelementptr inbounds nuw i8, ptr %3, i64 8 %17 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -14511,7 +14513,7 @@ 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 + %22 = getelementptr { ptr, ptr, i64, { ptr } }, ptr %invariant.gep.i, i64 %.0.i.i.i %23 = load i64, ptr %22, align 8, !noalias !1777, !noundef !4 %.not6.i = icmp eq i64 %23, 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" @@ -14540,7 +14542,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 %31(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 e81b281f010..f0eb15c8e7a 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 [0 x { ptr, i64, i64, i32, i32, { i8, i8 }, i8, [5 x i8] }], ptr %10, i64 0, 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 [0 x { ptr, i64, i64, i32, i32, { i8, i8 }, i8, [5 x i8] }], ptr %10, i64 0, 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/duckdb/optimized/ub_duckdb_main_capi_cast.ll b/bench/duckdb/optimized/ub_duckdb_main_capi_cast.ll index eeb7052d9dc..8930baab8aa 100644 --- a/bench/duckdb/optimized/ub_duckdb_main_capi_cast.ll +++ b/bench/duckdb/optimized/ub_duckdb_main_capi_cast.ll @@ -286,12 +286,13 @@ _Z21CanUseDeprecatedFetchP13duckdb_resultmm.exit: ; preds = %6 10: ; preds = %_Z21CanUseDeprecatedFetchP13duckdb_resultmm.exit %11 = getelementptr inbounds nuw i8, ptr %0, i64 24 %12 = load ptr, ptr %11, align 8, !tbaa !19 - %13 = getelementptr inbounds nuw %struct.duckdb_column, ptr %12, i64 %1, i32 1 - %14 = load ptr, ptr %13, align 8, !tbaa !20 - %15 = getelementptr inbounds nuw i8, ptr %14, i64 %2 - %16 = load i8, ptr %15, align 1, !tbaa !24, !range !26, !noundef !27 - %17 = trunc nuw i8 %16 to i1 - %not. = xor i1 %17, true + %13 = getelementptr inbounds nuw %struct.duckdb_column, ptr %12, i64 %1 + %14 = getelementptr inbounds nuw i8, ptr %13, i64 8 + %15 = load ptr, ptr %14, align 8, !tbaa !20 + %16 = getelementptr inbounds nuw i8, ptr %15, i64 %2 + %17 = load i8, ptr %16, align 1, !tbaa !24, !range !26, !noundef !27 + %18 = trunc nuw i8 %17 to i1 + %not. = xor i1 %18, true br label %_Z21CanUseDeprecatedFetchP13duckdb_resultmm.exit.thread _Z21CanUseDeprecatedFetchP13duckdb_resultmm.exit.thread: ; preds = %6, %4, %3, %10, %_Z21CanUseDeprecatedFetchP13duckdb_resultmm.exit diff --git a/bench/eastl/optimized/EASprintfOrdered.ll b/bench/eastl/optimized/EASprintfOrdered.ll index d26cde189b9..b98f19dfca0 100644 --- a/bench/eastl/optimized/EASprintfOrdered.ll +++ b/bench/eastl/optimized/EASprintfOrdered.ll @@ -59,6 +59,7 @@ arrayctor.cont.i: ; preds = %arrayctor.loop.i store ptr %pFormat, ptr %spans.i, align 16, !noalias !8 %mUserIndex.i = getelementptr inbounds nuw i8, ptr %spans.i, i64 68 store i32 -1, ptr %mUserIndex.i, align 4, !noalias !8 + %invariant.gep.i = getelementptr inbounds nuw i8, ptr %spans.i, i64 72 %scevgep.i = getelementptr inbounds nuw i8, ptr %spanArgOrder.i, i64 4 br label %for.cond.i @@ -83,7 +84,7 @@ if.then.i: ; preds = %for.cond.i br i1 %cmp4.i, label %if.then5.i, label %if.else.i if.then5.i: ; preds = %if.then.i - %mbEscapePresent.i = getelementptr inbounds [21 x %"struct.EA::StdC::SprintfLocal::Span"], ptr %spans.i, i64 0, i64 %idxprom.i, i32 9 + %mbEscapePresent.i = getelementptr [21 x %"struct.EA::StdC::SprintfLocal::Span"], ptr %invariant.gep.i, i64 0, i64 %idxprom.i store i8 1, ptr %mbEscapePresent.i, align 8, !noalias !8 br label %for.inc99.i @@ -1266,6 +1267,7 @@ arrayctor.cont.i: ; preds = %arrayctor.loop.i store ptr %pFormat, ptr %spans.i, align 16, !noalias !37 %mUserIndex.i = getelementptr inbounds nuw i8, ptr %spans.i, i64 84 store i32 -1, ptr %mUserIndex.i, align 4, !noalias !37 + %invariant.gep.i = getelementptr inbounds nuw i8, ptr %spans.i, i64 88 %scevgep.i = getelementptr inbounds nuw i8, ptr %spanArgOrder.i, i64 4 br label %for.cond.i @@ -1290,7 +1292,7 @@ if.then.i: ; preds = %for.cond.i br i1 %cmp4.i, label %if.then5.i, label %if.else.i if.then5.i: ; preds = %if.then.i - %mbEscapePresent.i = getelementptr inbounds [21 x %"struct.EA::StdC::SprintfLocal::Span.0"], ptr %spans.i, i64 0, i64 %idxprom.i, i32 9 + %mbEscapePresent.i = getelementptr [21 x %"struct.EA::StdC::SprintfLocal::Span.0"], ptr %invariant.gep.i, i64 0, i64 %idxprom.i store i8 1, ptr %mbEscapePresent.i, align 8, !noalias !37 br label %for.inc99.i @@ -2465,6 +2467,7 @@ arrayctor.cont.i: ; preds = %arrayctor.loop.i store ptr %pFormat, ptr %spans.i, align 16, !noalias !65 %mUserIndex.i = getelementptr inbounds nuw i8, ptr %spans.i, i64 116 store i32 -1, ptr %mUserIndex.i, align 4, !noalias !65 + %invariant.gep.i = getelementptr inbounds nuw i8, ptr %spans.i, i64 120 %scevgep.i = getelementptr inbounds nuw i8, ptr %spanArgOrder.i, i64 4 br label %for.cond.i @@ -2489,7 +2492,7 @@ if.then.i: ; preds = %for.cond.i br i1 %cmp3.i, label %if.then4.i, label %if.else.i if.then4.i: ; preds = %if.then.i - %mbEscapePresent.i = getelementptr inbounds [21 x %"struct.EA::StdC::SprintfLocal::Span.2"], ptr %spans.i, i64 0, i64 %idxprom.i, i32 8 + %mbEscapePresent.i = getelementptr [21 x %"struct.EA::StdC::SprintfLocal::Span.2"], ptr %invariant.gep.i, i64 0, i64 %idxprom.i store i8 1, ptr %mbEscapePresent.i, align 8, !noalias !65 br label %for.inc93.i diff --git a/bench/egg-rs/optimized/3vlwzyp0day7srdg.ll b/bench/egg-rs/optimized/3vlwzyp0day7srdg.ll index c05c6a3bcaa..baba6a73b01 100644 --- a/bench/egg-rs/optimized/3vlwzyp0day7srdg.ll +++ b/bench/egg-rs/optimized/3vlwzyp0day7srdg.ll @@ -76,8 +76,9 @@ define hidden noundef nonnull align 8 dereferenceable(40) ptr @"_ZN100_$LT$index 34: ; preds = %23 %35 = load ptr, ptr %13, align 8, !alias.scope !4, !noalias !7, !nonnull !16, !noundef !16 - %36 = getelementptr inbounds [0 x { i64, { i64, i64, i64, i64, i64 }, i32, [1 x i32] }], ptr %35, i64 0, i64 %29, i32 1 - ret ptr %36 + %36 = getelementptr inbounds [0 x { i64, { i64, i64, i64, i64, i64 }, i32, [1 x i32] }], ptr %35, i64 0, i64 %29 + %37 = getelementptr inbounds nuw i8, ptr %36, i64 8 + ret ptr %37 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable @@ -327,7 +328,8 @@ define hidden noundef align 8 dereferenceable_or_null(40) ptr @"_ZN8indexmap3map 31: ; preds = %22 %32 = load ptr, ptr %12, align 8, !nonnull !16, !noundef !16 - %33 = getelementptr inbounds [0 x { i64, { i64, i64, i64, i64, i64 }, i32, [1 x i32] }], ptr %32, i64 0, i64 %28, i32 1 + %33 = getelementptr inbounds [0 x { i64, { i64, i64, i64, i64, i64 }, i32, [1 x i32] }], ptr %32, i64 0, i64 %28 + %34 = getelementptr inbounds nuw i8, ptr %33, i64 8 br label %"_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h8f26345564270a96E.llvm.13994044477760586293.exit.thread" 34: ; preds = %22 @@ -335,7 +337,7 @@ define hidden noundef align 8 dereferenceable_or_null(40) ptr @"_ZN8indexmap3map unreachable "_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h8f26345564270a96E.llvm.13994044477760586293.exit.thread": ; preds = %2, %"_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h8f26345564270a96E.llvm.13994044477760586293.exit", %31 - %.sroa.0.0 = phi ptr [ %33, %31 ], [ null, %"_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h8f26345564270a96E.llvm.13994044477760586293.exit" ], [ null, %2 ] + %.sroa.0.0 = phi ptr [ %34, %31 ], [ null, %"_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h8f26345564270a96E.llvm.13994044477760586293.exit" ], [ null, %2 ] ret ptr %.sroa.0.0 } diff --git a/bench/elfshaker-rs/optimized/3a1f053714hdbf2r1u9m19s6u.ll b/bench/elfshaker-rs/optimized/3a1f053714hdbf2r1u9m19s6u.ll index 7cc8cb28818..42c8f2f4ef3 100644 --- a/bench/elfshaker-rs/optimized/3a1f053714hdbf2r1u9m19s6u.ll +++ b/bench/elfshaker-rs/optimized/3a1f053714hdbf2r1u9m19s6u.ll @@ -1901,11 +1901,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 } @@ -1913,14 +1913,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, %46 + %.sroa.0.130.i.i = phi i64 [ %.sroa.0.1.i.i, %46 ], [ 1, %.split27.i.i.preheader ] + %.sroa.0.029.i.i = phi i64 [ %.sroa.0.130.i.i, %46 ], [ 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 = %46 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 @@ -1930,40 +1930,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 + %39 = getelementptr i8, ptr %38, i64 40 + 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 ] + %gep.i.i = getelementptr { { { { { i64, i32, [1 x i32] } } }, { { { { { i64, ptr, {} }, {} }, i64 } } } }, i64 }, ptr %invariant.gep.i.i, i64 %40 + %.sroa.06.0.i.i = load i64, ptr %gep.i.i, align 8, !noalias !108, !noundef !5 + %41 = icmp ult i64 %.sroa.06.0.i.i, %.sroa.0.028.i.i + br i1 %41, label %39, label %42 + +42: ; preds = %39 + %43 = getelementptr inbounds nuw { { { { { i64, i32, [1 x i32] } } }, { { { { { i64, ptr, {} }, {} }, i64 } } } }, i64 }, ptr %38, i64 %.sroa.0.028.i.i + %44 = getelementptr inbounds nuw i8, ptr %43, i64 40 + store i64 %.sroa.06.0.i.i, ptr %44, align 8, !noalias !108 + %45 = icmp ult i64 %.sroa.06.0.i.i, %20 + br i1 %45, label %46, label %.invoke.i.i + +46: ; preds = %42 + %47 = 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(i64 24, 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) %47, i64 24, i1 false), !noalias !109 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 8 dereferenceable(24) %48, i64 24, i1 false), !alias.scope !91, !noalias !109 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false), !noalias !109 call void @llvm.lifetime.end.p0(i64 24, 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 = %42, %.split28.i.i + %49 = phi i64 [ %.sroa.0.029.i.i, %.split27.i.i ], [ %.sroa.06.0.i.i, %42 ] + %50 = phi i64 [ %35, %.split27.i.i ], [ %20, %42 ] 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 @@ -1982,9 +1981,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, %55 ], [ %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 %59 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 1204a3e45de..c749878fc8c 100644 --- a/bench/elfshaker-rs/optimized/9f70t9k6da07jnr9o42fbjzc5.ll +++ b/bench/elfshaker-rs/optimized/9f70t9k6da07jnr9o42fbjzc5.ll @@ -940,6 +940,7 @@ define hidden void @"_ZN4core3ptr121drop_in_place$LT$alloc..vec..Vec$LT$$LP$$LP$ %.val = load ptr, ptr %2, align 8, !nonnull !6, !noundef !6 %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 %.val1 = load i64, ptr %3, align 8, !noundef !6 + %invariant.gep.i.i = getelementptr i8, ptr %.val, i64 16 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 @@ -949,12 +950,12 @@ define hidden void @"_ZN4core3ptr121drop_in_place$LT$alloc..vec..Vec$LT$$LP$$LP$ 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 + %7 = getelementptr { { { { { i64, i32, [1 x i32] } } }, { { { { { i64, ptr, {} }, {} }, i64 } } } }, i64 }, ptr %invariant.gep.i.i, i64 %.sroa.0.0.i.i 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 "_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 [ %6, %8 ], [ %12, %10 ] %8 = icmp eq i64 %.sroa.0.1.i.i, %.val1 br i1 %8, label %.body, label %11 @@ -965,7 +966,7 @@ define hidden void @"_ZN4core3ptr121drop_in_place$LT$alloc..vec..Vec$LT$$LP$$LP$ 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 + %13 = getelementptr { { { { { i64, i32, [1 x i32] } } }, { { { { { i64, ptr, {} }, {} }, i64 } } } }, i64 }, ptr %invariant.gep.i.i, i64 %.sroa.0.1.i.i 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 diff --git a/bench/entt/optimized/group.ll b/bench/entt/optimized/group.ll index 9644d50b4e7..5089ba8bdeb 100644 --- a/bench/entt/optimized/group.ll +++ b/bench/entt/optimized/group.ll @@ -14879,21 +14879,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 @@ -14906,15 +14907,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/fish-rs/optimized/7ggr7vxi3lrn28dd77bkw6see.ll b/bench/fish-rs/optimized/7ggr7vxi3lrn28dd77bkw6see.ll index 9c76e9788c5..0d6845588eb 100644 --- a/bench/fish-rs/optimized/7ggr7vxi3lrn28dd77bkw6see.ll +++ b/bench/fish-rs/optimized/7ggr7vxi3lrn28dd77bkw6see.ll @@ -29030,41 +29030,41 @@ define hidden void @"_ZN4core3ptr62drop_in_place$LT$fish..ast..JobConjunctionCon br label %"_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit.i" "_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit.i": ; preds = %17, %1 - %.sroa.0.0.i = phi i64 [ 0, %1 ], [ %7, %17 ] + %.sroa.0.0.i = phi i64 [ 0, %1 ], [ %8, %17 ] %5 = icmp eq i64 %.sroa.0.0.i, %4 br i1 %5, label %"_ZN4core3ptr93drop_in_place$LT$alloc..boxed..Box$LT$$u5b$fish..ast..JobConjunctionContinuation$u5d$$GT$$GT$17h95cbbb966f027e8bE.exit", label %6 6: ; preds = %"_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit.i" - %7 = add i64 %.sroa.0.0.i, 1 - %8 = getelementptr inbounds nuw { { { i32, [2 x i32] }, i8, [3 x i8] }, { { i32, [3 x i32] }, { i32, [3 x i32] }, { i32, [11 x i32] }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } } }, { { i32, [2 x i32] } }, [1 x i32] }, ptr %2, i64 %.sroa.0.0.i, i32 1 + %7 = getelementptr inbounds nuw { { { i32, [2 x i32] }, i8, [3 x i8] }, { { i32, [3 x i32] }, { i32, [3 x i32] }, { i32, [11 x i32] }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } } }, { { i32, [2 x i32] } }, [1 x i32] }, ptr %2, i64 %.sroa.0.0.i + %8 = add i64 %.sroa.0.0.i, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !3887) tail call void @llvm.experimental.noalias.scope.decl(metadata !3890), !noalias !3884 - %9 = getelementptr inbounds nuw i8, ptr %8, i64 88 + %9 = getelementptr inbounds nuw i8, ptr %7, i64 104 %.val1.i.i = load i64, ptr %9, align 8, !alias.scope !3893, !noalias !3884, !noundef !3 %10 = icmp eq i64 %.val1.i.i, 0 br i1 %10, label %"_ZN4core3ptr54drop_in_place$LT$fish..ast..VariableAssignmentList$GT$17hd81e4935d18bfe24E.exit.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i.i.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i.i.i.i": ; preds = %6 - %11 = getelementptr inbounds nuw i8, ptr %8, i64 80 + %11 = getelementptr inbounds nuw i8, ptr %7, i64 96 %.val.i.i = load ptr, ptr %11, align 8, !alias.scope !3893, !noalias !3884, !nonnull !3, !noundef !3 %12 = mul nuw nsw i64 %.val1.i.i, 12 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val.i.i, i64 noundef %12, i64 noundef 4) #33, !noalias !3894 br label %"_ZN4core3ptr54drop_in_place$LT$fish..ast..VariableAssignmentList$GT$17hd81e4935d18bfe24E.exit.i" "_ZN4core3ptr54drop_in_place$LT$fish..ast..VariableAssignmentList$GT$17hd81e4935d18bfe24E.exit.i": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i.i.i.i", %6 - %13 = getelementptr inbounds nuw i8, ptr %8, i64 32 + %13 = getelementptr inbounds nuw i8, ptr %7, i64 48 invoke void @"_ZN4core3ptr41drop_in_place$LT$fish..ast..Statement$GT$17h11d2c9b4fb8e591eE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %13) to label %17 unwind label %14, !noalias !3884 14: ; preds = %"_ZN4core3ptr54drop_in_place$LT$fish..ast..VariableAssignmentList$GT$17hd81e4935d18bfe24E.exit.i" %15 = landingpad { ptr, i32 } cleanup - %16 = getelementptr inbounds nuw i8, ptr %8, i64 96 + %16 = getelementptr inbounds nuw i8, ptr %7, i64 112 invoke fastcc void @"_ZN4core3ptr82drop_in_place$LT$alloc..boxed..Box$LT$$u5b$fish..ast..JobContinuation$u5d$$GT$$GT$17h56712633c1c5e9c0E"(ptr noalias noundef align 8 dereferenceable(16) %16) to label %.body3 unwind label %19, !noalias !3884 17: ; preds = %"_ZN4core3ptr54drop_in_place$LT$fish..ast..VariableAssignmentList$GT$17hd81e4935d18bfe24E.exit.i" - %18 = getelementptr inbounds nuw i8, ptr %8, i64 96 + %18 = getelementptr inbounds nuw i8, ptr %7, i64 112 invoke fastcc void @"_ZN4core3ptr82drop_in_place$LT$alloc..boxed..Box$LT$$u5b$fish..ast..JobContinuation$u5d$$GT$$GT$17h56712633c1c5e9c0E"(ptr noalias noundef align 8 dereferenceable(16) %18) to label %"_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit.i" unwind label %22 @@ -29075,7 +29075,7 @@ define hidden void @"_ZN4core3ptr62drop_in_place$LT$fish..ast..JobConjunctionCon unreachable "_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit7.i": ; preds = %24, %.body3 - %.sroa.0.1.i = phi i64 [ %7, %.body3 ], [ %25, %24 ] + %.sroa.0.1.i = phi i64 [ %8, %.body3 ], [ %25, %24 ] %21 = icmp eq i64 %.sroa.0.1.i, %4 br i1 %21, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i1", label %24 @@ -29086,11 +29086,12 @@ define hidden void @"_ZN4core3ptr62drop_in_place$LT$fish..ast..JobConjunctionCon .body3: ; preds = %14, %22 %eh.lpad-body4 = phi { ptr, i32 } [ %23, %22 ], [ %15, %14 ] + %invariant.gep = getelementptr i8, ptr %2, i64 16 br label %"_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit7.i" 24: ; preds = %"_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit7.i" %25 = add i64 %.sroa.0.1.i, 1 - %26 = getelementptr inbounds nuw { { { i32, [2 x i32] }, i8, [3 x i8] }, { { i32, [3 x i32] }, { i32, [3 x i32] }, { i32, [11 x i32] }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } } }, { { i32, [2 x i32] } }, [1 x i32] }, ptr %2, i64 %.sroa.0.1.i, i32 1 + %26 = getelementptr { { { i32, [2 x i32] }, i8, [3 x i8] }, { { i32, [3 x i32] }, { i32, [3 x i32] }, { i32, [11 x i32] }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } } }, { { i32, [2 x i32] } }, [1 x i32] }, ptr %invariant.gep, i64 %.sroa.0.1.i invoke void @"_ZN4core3ptr43drop_in_place$LT$fish..ast..JobPipeline$GT$17h695245df0c2536b8E"(ptr noalias noundef nonnull align 8 dereferenceable(112) %26) to label %"_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit7.i" unwind label %27, !noalias !3884 @@ -30449,41 +30450,41 @@ define internal fastcc void @"_ZN4core3ptr68drop_in_place$LT$$u5b$fish..ast..Job br label %"_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit" "_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit": ; preds = %15, %2 - %.sroa.0.0 = phi i64 [ 0, %2 ], [ %5, %15 ] + %.sroa.0.0 = phi i64 [ 0, %2 ], [ %6, %15 ] %3 = icmp eq i64 %.sroa.0.0, %1 br i1 %3, label %19, label %4 4: ; preds = %"_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit" - %5 = add i64 %.sroa.0.0, 1 - %6 = getelementptr inbounds nuw { { { i32, [2 x i32] }, i8, [3 x i8] }, { { i32, [3 x i32] }, { i32, [3 x i32] }, { i32, [11 x i32] }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } } }, { { i32, [2 x i32] } }, [1 x i32] }, ptr %0, i64 %.sroa.0.0, i32 1 + %5 = getelementptr inbounds nuw { { { i32, [2 x i32] }, i8, [3 x i8] }, { { i32, [3 x i32] }, { i32, [3 x i32] }, { i32, [11 x i32] }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } } }, { { i32, [2 x i32] } }, [1 x i32] }, ptr %0, i64 %.sroa.0.0 + %6 = add i64 %.sroa.0.0, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !4047) tail call void @llvm.experimental.noalias.scope.decl(metadata !4050) - %7 = getelementptr inbounds nuw i8, ptr %6, i64 88 + %7 = getelementptr inbounds nuw i8, ptr %5, i64 104 %.val1.i.i = load i64, ptr %7, align 8, !alias.scope !4053, !noundef !3 %8 = icmp eq i64 %.val1.i.i, 0 br i1 %8, label %"_ZN4core3ptr54drop_in_place$LT$fish..ast..VariableAssignmentList$GT$17hd81e4935d18bfe24E.exit.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i.i.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i.i.i.i": ; preds = %4 - %9 = getelementptr inbounds nuw i8, ptr %6, i64 80 + %9 = getelementptr inbounds nuw i8, ptr %5, i64 96 %.val.i.i = load ptr, ptr %9, align 8, !alias.scope !4053, !nonnull !3, !noundef !3 %10 = mul nuw nsw i64 %.val1.i.i, 12 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val.i.i, i64 noundef %10, i64 noundef 4) #33, !noalias !4053 br label %"_ZN4core3ptr54drop_in_place$LT$fish..ast..VariableAssignmentList$GT$17hd81e4935d18bfe24E.exit.i" "_ZN4core3ptr54drop_in_place$LT$fish..ast..VariableAssignmentList$GT$17hd81e4935d18bfe24E.exit.i": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i.i.i.i", %4 - %11 = getelementptr inbounds nuw i8, ptr %6, i64 32 + %11 = getelementptr inbounds nuw i8, ptr %5, i64 48 invoke void @"_ZN4core3ptr41drop_in_place$LT$fish..ast..Statement$GT$17h11d2c9b4fb8e591eE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %11) to label %15 unwind label %12 12: ; preds = %"_ZN4core3ptr54drop_in_place$LT$fish..ast..VariableAssignmentList$GT$17hd81e4935d18bfe24E.exit.i" %13 = landingpad { ptr, i32 } cleanup - %14 = getelementptr inbounds nuw i8, ptr %6, i64 96 + %14 = getelementptr inbounds nuw i8, ptr %5, i64 112 invoke fastcc void @"_ZN4core3ptr82drop_in_place$LT$alloc..boxed..Box$LT$$u5b$fish..ast..JobContinuation$u5d$$GT$$GT$17h56712633c1c5e9c0E"(ptr noalias noundef align 8 dereferenceable(16) %14) to label %.body unwind label %17 15: ; preds = %"_ZN4core3ptr54drop_in_place$LT$fish..ast..VariableAssignmentList$GT$17hd81e4935d18bfe24E.exit.i" - %16 = getelementptr inbounds nuw i8, ptr %6, i64 96 + %16 = getelementptr inbounds nuw i8, ptr %5, i64 112 invoke fastcc void @"_ZN4core3ptr82drop_in_place$LT$alloc..boxed..Box$LT$$u5b$fish..ast..JobContinuation$u5d$$GT$$GT$17h56712633c1c5e9c0E"(ptr noalias noundef align 8 dereferenceable(16) %16) to label %"_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit" unwind label %21 @@ -30497,7 +30498,7 @@ define internal fastcc void @"_ZN4core3ptr68drop_in_place$LT$$u5b$fish..ast..Job ret void "_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit7": ; preds = %23, %.body - %.sroa.0.1 = phi i64 [ %5, %.body ], [ %24, %23 ] + %.sroa.0.1 = phi i64 [ %6, %.body ], [ %24, %23 ] %20 = icmp eq i64 %.sroa.0.1, %1 br i1 %20, label %26, label %23 @@ -30508,11 +30509,12 @@ define internal fastcc void @"_ZN4core3ptr68drop_in_place$LT$$u5b$fish..ast..Job .body: ; preds = %12, %21 %eh.lpad-body = phi { ptr, i32 } [ %22, %21 ], [ %13, %12 ] + %invariant.gep = getelementptr i8, ptr %0, i64 16 br label %"_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit7" 23: ; preds = %"_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit7" %24 = add i64 %.sroa.0.1, 1 - %25 = getelementptr inbounds nuw { { { i32, [2 x i32] }, i8, [3 x i8] }, { { i32, [3 x i32] }, { i32, [3 x i32] }, { i32, [11 x i32] }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } } }, { { i32, [2 x i32] } }, [1 x i32] }, ptr %0, i64 %.sroa.0.1, i32 1 + %25 = getelementptr { { { i32, [2 x i32] }, i8, [3 x i8] }, { { i32, [3 x i32] }, { i32, [3 x i32] }, { i32, [11 x i32] }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } } }, { { i32, [2 x i32] } }, [1 x i32] }, ptr %invariant.gep, i64 %.sroa.0.1 invoke void @"_ZN4core3ptr43drop_in_place$LT$fish..ast..JobPipeline$GT$17h695245df0c2536b8E"(ptr noalias noundef nonnull align 8 dereferenceable(112) %25) to label %"_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit7" unwind label %27 @@ -33076,30 +33078,30 @@ define internal fastcc void @"_ZN4core3ptr79drop_in_place$LT$alloc..boxed..Box$L br label %"_ZN4core3ptr44drop_in_place$LT$fish..ast..ElseifClause$GT$17hb2bc3c94aaf58902E.exit" "_ZN4core3ptr44drop_in_place$LT$fish..ast..ElseifClause$GT$17hb2bc3c94aaf58902E.exit": ; preds = %"_ZN4core3ptr40drop_in_place$LT$fish..ast..IfClause$GT$17h5f232dbf3e6162adE.exit.i", %1 - %.sroa.0.0.i = phi i64 [ 0, %1 ], [ %7, %"_ZN4core3ptr40drop_in_place$LT$fish..ast..IfClause$GT$17h5f232dbf3e6162adE.exit.i" ] + %.sroa.0.0.i = phi i64 [ 0, %1 ], [ %8, %"_ZN4core3ptr40drop_in_place$LT$fish..ast..IfClause$GT$17h5f232dbf3e6162adE.exit.i" ] %5 = icmp eq i64 %.sroa.0.0.i, %4 br i1 %5, label %"_ZN4core3ptr54drop_in_place$LT$$u5b$fish..ast..ElseifClause$u5d$$GT$17h1309ff393ac2f95bE.exit", label %6 6: ; preds = %"_ZN4core3ptr44drop_in_place$LT$fish..ast..ElseifClause$GT$17hb2bc3c94aaf58902E.exit" - %7 = add i64 %.sroa.0.0.i, 1 - %8 = getelementptr inbounds nuw { { { i32, [2 x i32] }, i8, [3 x i8] }, { { { i32, [2 x i32] }, i8, [3 x i8] }, { { i32, [3 x i32] }, { { i32, [3 x i32] }, { i32, [3 x i32] }, { i32, [11 x i32] }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } } }, { i32, [3 x i32] }, { { { { { ptr, i64 } }, {} }, {} } } }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } } } }, ptr %2, i64 %.sroa.0.0.i, i32 1 - %9 = getelementptr inbounds nuw i8, ptr %8, i64 16 + %7 = getelementptr inbounds nuw { { { i32, [2 x i32] }, i8, [3 x i8] }, { { { i32, [2 x i32] }, i8, [3 x i8] }, { { i32, [3 x i32] }, { { i32, [3 x i32] }, { i32, [3 x i32] }, { i32, [11 x i32] }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } } }, { i32, [3 x i32] }, { { { { { ptr, i64 } }, {} }, {} } } }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } } } }, ptr %2, i64 %.sroa.0.0.i + %8 = add i64 %.sroa.0.0.i, 1 + %9 = getelementptr inbounds nuw i8, ptr %7, i64 32 invoke void @"_ZN4core3ptr46drop_in_place$LT$fish..ast..JobConjunction$GT$17ha34e0dd7fb10aa10E"(ptr noalias noundef nonnull align 8 dereferenceable(160) %9) to label %13 unwind label %10 10: ; preds = %6 %11 = landingpad { ptr, i32 } cleanup - %12 = getelementptr inbounds nuw i8, ptr %8, i64 176 + %12 = getelementptr inbounds nuw i8, ptr %7, i64 192 invoke void @"_ZN4core3ptr44drop_in_place$LT$fish..ast..AndorJobList$GT$17h3e87cdcaedac0183E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %12) #31 to label %.body unwind label %34 13: ; preds = %6 - %14 = getelementptr inbounds nuw i8, ptr %8, i64 176 + %14 = getelementptr inbounds nuw i8, ptr %7, i64 192 tail call void @llvm.experimental.noalias.scope.decl(metadata !4283) tail call void @llvm.experimental.noalias.scope.decl(metadata !4286) %15 = load ptr, ptr %14, align 8, !alias.scope !4289, !nonnull !3, !noundef !3 - %16 = getelementptr inbounds nuw i8, ptr %8, i64 184 + %16 = getelementptr inbounds nuw i8, ptr %7, i64 200 %17 = load i64, ptr %16, align 8, !alias.scope !4289, !noundef !3 br label %"_ZN4core3ptr40drop_in_place$LT$fish..ast..AndorJob$GT$17h42866b54ffacd0f9E.exit.i.i" @@ -33152,7 +33154,7 @@ define internal fastcc void @"_ZN4core3ptr79drop_in_place$LT$alloc..boxed..Box$L .body: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i1.i", %10 %.pn.i.i = phi { ptr, i32 } [ %11, %10 ], [ %24, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i1.i" ] - %33 = getelementptr inbounds nuw i8, ptr %8, i64 192 + %33 = getelementptr inbounds nuw i8, ptr %7, i64 208 invoke void @"_ZN4core3ptr39drop_in_place$LT$fish..ast..JobList$GT$17h9c9331988b45be84E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %33) #31 to label %.body6 unwind label %34 @@ -33163,12 +33165,12 @@ define internal fastcc void @"_ZN4core3ptr79drop_in_place$LT$alloc..boxed..Box$L unreachable "_ZN4core3ptr40drop_in_place$LT$fish..ast..IfClause$GT$17h5f232dbf3e6162adE.exit.i": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i.i", %"_ZN4core3ptr75drop_in_place$LT$alloc..boxed..Box$LT$$u5b$fish..ast..AndorJob$u5d$$GT$$GT$17ha5a568043ebef4deE.exit.i" - %36 = getelementptr inbounds nuw i8, ptr %8, i64 192 + %36 = getelementptr inbounds nuw i8, ptr %7, i64 208 invoke void @"_ZN4core3ptr39drop_in_place$LT$fish..ast..JobList$GT$17h9c9331988b45be84E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %36) to label %"_ZN4core3ptr44drop_in_place$LT$fish..ast..ElseifClause$GT$17hb2bc3c94aaf58902E.exit" unwind label %39 37: ; preds = %41, %.body6 - %.sroa.0.1.i = phi i64 [ %7, %.body6 ], [ %43, %41 ] + %.sroa.0.1.i = phi i64 [ %8, %.body6 ], [ %43, %41 ] %38 = icmp eq i64 %.sroa.0.1.i, %4 br i1 %38, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i", label %41 @@ -36294,35 +36296,35 @@ define internal fastcc void @"_ZN4core3ptr93drop_in_place$LT$alloc..boxed..Box$L br label %"_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit" "_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit": ; preds = %"_ZN4core3ptr43drop_in_place$LT$fish..ast..JobPipeline$GT$17h695245df0c2536b8E.exit.i", %1 - %.sroa.0.0.i = phi i64 [ 0, %1 ], [ %7, %"_ZN4core3ptr43drop_in_place$LT$fish..ast..JobPipeline$GT$17h695245df0c2536b8E.exit.i" ] + %.sroa.0.0.i = phi i64 [ 0, %1 ], [ %8, %"_ZN4core3ptr43drop_in_place$LT$fish..ast..JobPipeline$GT$17h695245df0c2536b8E.exit.i" ] %5 = icmp eq i64 %.sroa.0.0.i, %4 br i1 %5, label %"_ZN4core3ptr68drop_in_place$LT$$u5b$fish..ast..JobConjunctionContinuation$u5d$$GT$17h23258800e4a0bf41E.exit", label %6 6: ; preds = %"_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit" - %7 = add i64 %.sroa.0.0.i, 1 - %8 = getelementptr inbounds nuw { { { i32, [2 x i32] }, i8, [3 x i8] }, { { i32, [3 x i32] }, { i32, [3 x i32] }, { i32, [11 x i32] }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } } }, { { i32, [2 x i32] } }, [1 x i32] }, ptr %2, i64 %.sroa.0.0.i, i32 1 + %7 = getelementptr inbounds nuw { { { i32, [2 x i32] }, i8, [3 x i8] }, { { i32, [3 x i32] }, { i32, [3 x i32] }, { i32, [11 x i32] }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } } }, { { i32, [2 x i32] } }, [1 x i32] }, ptr %2, i64 %.sroa.0.0.i + %8 = add i64 %.sroa.0.0.i, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !4760) - %9 = getelementptr inbounds nuw i8, ptr %8, i64 88 + %9 = getelementptr inbounds nuw i8, ptr %7, i64 104 %.val1.i = load i64, ptr %9, align 8, !alias.scope !4760, !noundef !3 %10 = icmp eq i64 %.val1.i, 0 br i1 %10, label %"_ZN4core3ptr54drop_in_place$LT$fish..ast..VariableAssignmentList$GT$17hd81e4935d18bfe24E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i.i.i": ; preds = %6 - %11 = getelementptr inbounds nuw i8, ptr %8, i64 80 + %11 = getelementptr inbounds nuw i8, ptr %7, i64 96 %.val.i = load ptr, ptr %11, align 8, !alias.scope !4760, !nonnull !3, !noundef !3 %12 = mul nuw nsw i64 %.val1.i, 12 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val.i, i64 noundef %12, i64 noundef 4) #33, !noalias !4760 br label %"_ZN4core3ptr54drop_in_place$LT$fish..ast..VariableAssignmentList$GT$17hd81e4935d18bfe24E.exit" "_ZN4core3ptr54drop_in_place$LT$fish..ast..VariableAssignmentList$GT$17hd81e4935d18bfe24E.exit": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i.i.i", %6 - %13 = getelementptr inbounds nuw i8, ptr %8, i64 32 + %13 = getelementptr inbounds nuw i8, ptr %7, i64 48 invoke void @"_ZN4core3ptr41drop_in_place$LT$fish..ast..Statement$GT$17h11d2c9b4fb8e591eE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %13) to label %"_ZN4core3ptr43drop_in_place$LT$fish..ast..JobPipeline$GT$17h695245df0c2536b8E.exit.i" unwind label %14 14: ; preds = %"_ZN4core3ptr54drop_in_place$LT$fish..ast..VariableAssignmentList$GT$17hd81e4935d18bfe24E.exit" %15 = landingpad { ptr, i32 } cleanup - %16 = getelementptr inbounds nuw i8, ptr %8, i64 96 + %16 = getelementptr inbounds nuw i8, ptr %7, i64 112 invoke void @"_ZN4core3ptr51drop_in_place$LT$fish..ast..JobContinuationList$GT$17hbf65a98a0a34a7dfE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %16) #31 to label %.body6 unwind label %17 @@ -36333,12 +36335,12 @@ define internal fastcc void @"_ZN4core3ptr93drop_in_place$LT$alloc..boxed..Box$L unreachable "_ZN4core3ptr43drop_in_place$LT$fish..ast..JobPipeline$GT$17h695245df0c2536b8E.exit.i": ; preds = %"_ZN4core3ptr54drop_in_place$LT$fish..ast..VariableAssignmentList$GT$17hd81e4935d18bfe24E.exit" - %19 = getelementptr inbounds nuw i8, ptr %8, i64 96 + %19 = getelementptr inbounds nuw i8, ptr %7, i64 112 invoke void @"_ZN4core3ptr51drop_in_place$LT$fish..ast..JobContinuationList$GT$17hbf65a98a0a34a7dfE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %19) to label %"_ZN4core3ptr58drop_in_place$LT$fish..ast..JobConjunctionContinuation$GT$17hebf9bc902ecfcde8E.exit" unwind label %22 20: ; preds = %24, %.body6 - %.sroa.0.1.i = phi i64 [ %7, %.body6 ], [ %26, %24 ] + %.sroa.0.1.i = phi i64 [ %8, %.body6 ], [ %26, %24 ] %21 = icmp eq i64 %.sroa.0.1.i, %4 br i1 %21, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i", label %24 diff --git a/bench/fish-rs/optimized/e69mx4kebbw5h90l2bpw0bwyt.ll b/bench/fish-rs/optimized/e69mx4kebbw5h90l2bpw0bwyt.ll index 1554d5bf87e..48debed0e9f 100644 --- a/bench/fish-rs/optimized/e69mx4kebbw5h90l2bpw0bwyt.ll +++ b/bench/fish-rs/optimized/e69mx4kebbw5h90l2bpw0bwyt.ll @@ -59434,14 +59434,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 @@ -59472,8 +59473,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 !6007) tail call void @llvm.experimental.noalias.scope.decl(metadata !6010) %20 = getelementptr inbounds nuw i8, ptr %1, i64 24 @@ -59486,17 +59488,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 !6014, !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/fmt/optimized/gmock-gtest-all.ll b/bench/fmt/optimized/gmock-gtest-all.ll index 7b3cff80efa..223c0799839 100644 --- a/bench/fmt/optimized/gmock-gtest-all.ll +++ b/bench/fmt/optimized/gmock-gtest-all.ll @@ -102715,21 +102715,22 @@ _ZN7testing19MatchResultListenerlsIA25_cEERS0_RKT_.exit: ; preds = %68 70: ; preds = %_ZN7testing19MatchResultListenerlsIA25_cEERS0_RKT_.exit %71 = load ptr, ptr %4, align 8, !tbaa !1869 - %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 !1814 %77 = load ptr, ptr %4, align 8, !tbaa !1869 - %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 !1870 + %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 !1870 83: ; preds = %70, %68, %63, %61, %58 %84 = landingpad { ptr, i32 } @@ -102756,7 +102757,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 !1869 %.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 06e27e13708..1dd6761bd17 100644 --- a/bench/folly/optimized/EventBase.ll +++ b/bench/folly/optimized/EventBase.ll @@ -8343,21 +8343,26 @@ _ZN5folly3f146detail8F14ChunkIPNS_6detail18EventBaseLocalBaseEE8clearTagEm.exit. %64 = and i64 %3, %63 %65 = getelementptr inbounds nuw %"struct.folly::f14::detail::F14Chunk", ptr %60, i64 %64 %66 = icmp eq ptr %65, %51 - br i1 %66, label %.thread.i, label %.lr.ph.i + br i1 %66, label %.thread.i, label %.lr.ph.preheader.i + +.lr.ph.preheader.i: ; preds = %57 + %invariant.gep.i = getelementptr i8, ptr %60, i64 15 + br 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 !454 - %70 = add i8 %69, %.011.lcssa.i - store i8 %70, ptr %68, align 2, !tbaa !454 + %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 !454 + %71 = add i8 %70, %.011.lcssa.i + store i8 %71, ptr %69, align 2, !tbaa !454 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 +.lr.ph.i: ; preds = %76, %.lr.ph.preheader.i + %71 = phi i64 [ %78, %76 ], [ %64, %.lr.ph.preheader.i ] + %.01027.i = phi i64 [ %77, %76 ], [ %3, %.lr.ph.preheader.i ] + %72 = getelementptr %"struct.folly::f14::detail::F14Chunk", ptr %invariant.gep.i, i64 %72 %73 = load i8, ptr %72, align 1, !tbaa !458 %.not.i17.i = icmp eq i8 %73, -2 br i1 %.not.i17.i, label %76, label %74 @@ -9457,21 +9462,26 @@ _ZN5folly3f146detail8F14ChunkIjE8clearTagEm.exit.i.i: ; preds = %26 %43 = and i64 %.sroa.04.0, %42 %44 = getelementptr inbounds nuw %"struct.folly::f14::detail::F14Chunk.157", ptr %39, i64 %43 %45 = icmp eq ptr %44, %6 - br i1 %45, label %.thread.i.i, label %.lr.ph.i.i + br i1 %45, label %.thread.i.i, label %.lr.ph.preheader.i.i + +.lr.ph.preheader.i.i: ; preds = %37 + %invariant.gep.i.i = getelementptr i8, ptr %39, i64 15 + br 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 !459 - %49 = add i8 %48, %.011.lcssa.i.i - store i8 %49, ptr %47, align 2, !tbaa !459 + %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 !459 + %50 = add i8 %49, %.011.lcssa.i.i + store i8 %50, ptr %48, align 2, !tbaa !459 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 +.lr.ph.i.i: ; preds = %55, %.lr.ph.preheader.i.i + %50 = phi i64 [ %57, %55 ], [ %43, %.lr.ph.preheader.i.i ] + %.01027.i.i = phi i64 [ %56, %55 ], [ %.sroa.04.0, %.lr.ph.preheader.i.i ] + %51 = getelementptr %"struct.folly::f14::detail::F14Chunk.157", ptr %invariant.gep.i.i, i64 %50 %52 = load i8, ptr %51, align 1, !tbaa !501 %.not.i17.i.i = icmp eq i8 %52, -2 br i1 %.not.i17.i.i, label %55, label %53 diff --git a/bench/foundations-rs/optimized/208outlkq19x3hykb3fof84u4.ll b/bench/foundations-rs/optimized/208outlkq19x3hykb3fof84u4.ll index 8dac52d0a24..36b96cc476f 100644 --- a/bench/foundations-rs/optimized/208outlkq19x3hykb3fof84u4.ll +++ b/bench/foundations-rs/optimized/208outlkq19x3hykb3fof84u4.ll @@ -3986,18 +3986,22 @@ define internal { i64, ptr } @"_ZN3std2io5impls74_$LT$impl$u20$std..io..Write$u2 tail call void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h0d61fde354d6f2a1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, i64 noundef 0, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.e9ef04808737cbe8ef653d32af212bbe.63) 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 - -.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) +.preheader: ; preds = %3 + %invariant.gep.i = getelementptr i8, ptr %1, i64 8 + br label %7 + +7:; preds = %7, %.preheader + %.sroa.07.0.i = phi i64 [ 0, %6 ], [ %8, %7 ] + %.sroa.09.0.i = phi i64 [ 0, %6 ], [ %9, %7 ] + %gep.i = getelementptr { { { ptr, i64 }, {} } }, ptr %invariant.gep.i, i64 %.sroa.09.0.i + %.val.i = load i64, ptr %gep.i, 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 %7 + +.lr.ph.preheader: ; preds = %7 + 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 +4016,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" @@ -4038,18 +4042,22 @@ define internal noalias noundef ptr @"_ZN3std2io5impls74_$LT$impl$u20$std..io..W tail call void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h0d61fde354d6f2a1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, i64 noundef 0, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.e9ef04808737cbe8ef653d32af212bbe.63), !noalias !428 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 - -.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 +.preheader.i: ; preds = %3 + %invariant.gep.i.i = getelementptr i8, ptr %1, i64 8 + br label %7 + +7:; preds = %7, %.preheader + %.sroa.07.0.i.i = phi i64 [ 0, %6 ], [ %8, %7 ] + %.sroa.09.0.i.i = phi i64 [ 0, %6 ], [ %9, %7 ] + %gep.i.i = getelementptr { { { ptr, i64 }, {} } }, ptr %invariant.gep.i.i, i64 %.sroa.09.0.i.i + %.val.i.i = load i64, ptr %gep.i.i, 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 %7 + +.lr.ph.preheader.i: ; preds = %7 + 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/freetype/optimized/cff.ll b/bench/freetype/optimized/cff.ll index cb8cd6c0c67..b9ac941b7cb 100644 --- a/bench/freetype/optimized/cff.ll +++ b/bench/freetype/optimized/cff.ll @@ -10029,14 +10029,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 @@ -10044,7 +10046,7 @@ define internal fastcc void @cff_vstore_done(ptr noundef captures(none) %0, ptr br i1 %26, label %.lr.ph28, label %.loopexit, !llvm.loop !614 .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 bcd429e0849..face9a9884e 100644 --- a/bench/g2o/optimized/marginal_covariance_cholesky.ll +++ b/bench/g2o/optimized/marginal_covariance_cholesky.ll @@ -4139,18 +4139,18 @@ define linkonce_odr void @_ZN3g2o17SparseBlockMatrixIN5Eigen6MatrixIdLin1ELin1EL .lr.ph33.split.us: ; preds = %.lr.ph33, %._crit_edge.split.us42.thread %14 = phi ptr [ %52, %._crit_edge.split.us42.thread ], [ %6, %.lr.ph33 ] %indvars.iv48 = phi i64 [ %indvars.iv.next49, %._crit_edge.split.us42.thread ], [ 0, %.lr.ph33 ] - %15 = getelementptr inbounds nuw %"class.std::map", ptr %14, i64 %indvars.iv48, i32 0, i32 0, i32 1, i32 0, i32 2 - %16 = load ptr, ptr %15, align 8, !tbaa !114 - %17 = getelementptr inbounds nuw %"class.std::map", ptr %14, i64 %indvars.iv48 - %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.iv48 + %16 = getelementptr inbounds nuw i8, ptr %15, i64 24 + %17 = load ptr, ptr %16, align 8, !tbaa !114 + %18 = getelementptr inbounds nuw i8, ptr %15, i64 8 + %.not19.us = icmp eq ptr %17, %18 %.pre52 = load i8, ptr %13, align 8, !tbaa !74, !range !85 br i1 %.not19.us, label %._crit_edge.split.us42, label %.lr.ph.us .lr.ph.split.split.us41: ; preds = %.lr.ph.us, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us37 %19 = phi ptr [ %38, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us37 ], [ %14, %.lr.ph.us ] %20 = phi ptr [ %39, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us37 ], [ %14, %.lr.ph.us ] - %.sroa.015.020.us35 = phi ptr [ %40, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us37 ], [ %16, %.lr.ph.us ] + %.sroa.015.020.us35 = phi ptr [ %40, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us37 ], [ %17, %.lr.ph.us ] %21 = getelementptr inbounds nuw i8, ptr %.sroa.015.020.us35, i64 40 %22 = load ptr, ptr %21, align 8, !tbaa !132 %23 = load i8, ptr %13, align 8, !tbaa !74, !range !85, !noundef !64 @@ -4199,7 +4199,7 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us37: ._crit_edge.split.us42: ; preds = %._crit_edge.split.us42.loopexit, %.lr.ph33.split.us %43 = phi ptr [ %14, %.lr.ph33.split.us ], [ %38, %._crit_edge.split.us42.loopexit ] %44 = phi i8 [ %.pre52, %.lr.ph33.split.us ], [ %.pre51, %._crit_edge.split.us42.loopexit ] - %.lcssa18.us = phi ptr [ %17, %.lr.ph33.split.us ], [ %41, %._crit_edge.split.us42.loopexit ] + %.lcssa18.us = phi ptr [ %15, %.lr.ph33.split.us ], [ %41, %._crit_edge.split.us42.loopexit ] %.lcssa.us = phi ptr [ %18, %.lr.ph33.split.us ], [ %42, %._crit_edge.split.us42.loopexit ] %45 = trunc nuw i8 %44 to i1 br i1 %45, label %46, label %._crit_edge.split.us42.thread @@ -4239,7 +4239,7 @@ _ZNSt3mapIiPN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEESt4lessIiESaISt4pairIKiS3_ br i1 %60, label %.lr.ph.split.split.us41, label %.lr.ph.split.split.us.us .lr.ph.split.split.us.us: ; preds = %.lr.ph.us, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us25.us - %.sroa.015.020.us23.us = phi ptr [ %71, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us25.us ], [ %16, %.lr.ph.us ] + %.sroa.015.020.us23.us = phi ptr [ %71, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us25.us ], [ %17, %.lr.ph.us ] %61 = getelementptr inbounds nuw i8, ptr %.sroa.015.020.us23.us, i64 40 %62 = load ptr, ptr %61, align 8, !tbaa !132 %63 = getelementptr inbounds nuw i8, ptr %62, i64 8 @@ -4270,6 +4270,7 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us25. .lr.ph33.split.split: ; preds = %.lr.ph33 %wide.trip.count = and i64 %10, 2147483647 + %invariant.gep = getelementptr inbounds nuw i8, ptr %6, i64 8 br label %74 ._crit_edge34: ; preds = %._crit_edge.split.us, %._crit_edge.split.us42.thread, %2 @@ -4277,18 +4278,19 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us25. 74: ; preds = %.lr.ph33.split.split, %._crit_edge.split.us %indvars.iv = phi i64 [ 0, %.lr.ph33.split.split ], [ %indvars.iv.next, %._crit_edge.split.us ] - %75 = getelementptr inbounds nuw %"class.std::map", ptr %6, i64 %indvars.iv, i32 0, i32 0, i32 1, i32 0, i32 2 - %76 = load ptr, ptr %75, align 8, !tbaa !114 - %77 = getelementptr inbounds nuw %"class.std::map", ptr %6, i64 %indvars.iv, i32 0, i32 0, i32 1 - %.not19 = icmp eq ptr %76, %77 + %75 = getelementptr inbounds nuw %"class.std::map", ptr %6, i64 %indvars.iv + %76 = getelementptr inbounds nuw i8, ptr %75, i64 24 + %77 = load ptr, ptr %76, align 8, !tbaa !114 + %gep = getelementptr inbounds nuw %"class.std::map", ptr %invariant.gep, i64 %indvars.iv + %.not19 = icmp eq ptr %77, %gep br i1 %.not19, label %._crit_edge.split.us, label %.lr.ph .lr.ph: ; preds = %74 - %78 = getelementptr inbounds nuw %"class.std::map", ptr %6, i64 %indvars.iv, i32 0, i32 0, i32 1 + %78 = getelementptr inbounds nuw i8, ptr %75, i64 8 br label %79 79: ; preds = %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us, %.lr.ph - %.sroa.015.020.us = phi ptr [ %76, %.lr.ph ], [ %90, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us ] + %.sroa.015.020.us = phi ptr [ %77, %.lr.ph ], [ %90, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv.exit.us ] %80 = getelementptr inbounds nuw i8, ptr %.sroa.015.020.us, i64 40 %81 = load ptr, ptr %80, align 8, !tbaa !132 %82 = getelementptr inbounds nuw i8, ptr %81, i64 8 diff --git a/bench/git/optimized/preload-index.ll b/bench/git/optimized/preload-index.ll index c06ad5ab5ce..34d41d843b5 100644 --- a/bench/git/optimized/preload-index.ll +++ b/bench/git/optimized/preload-index.ll @@ -217,15 +217,19 @@ stop_progress.exit: ; preds = %69, %71 call void @stop_progress_msg(ptr noundef nonnull %35, ptr noundef %.0.i.i) #10 br i1 %.not55, label %.loopexit, label %.preheader -.preheader: ; preds = %stop_progress.exit, %.preheader - %indvars.iv90 = phi i64 [ %indvars.iv.next91, %.preheader ], [ 0, %stop_progress.exit ] - %73 = getelementptr inbounds nuw [20 x %struct.thread_data], ptr %4, i64 0, i64 %indvars.iv90, i32 2 - call void @clear_pathspec(ptr noundef nonnull %73) #10 +.preheader: ; preds = %stop_progress.exit + %invariant.gep = getelementptr inbounds nuw i8, ptr %4, i64 16 + br label %73 + +73: ; preds = %.preheader, %73 + %indvars.iv90 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next91, %73 ] + %gep = getelementptr inbounds nuw [20 x %struct.thread_data], ptr %invariant.gep, i64 0, i64 %indvars.iv90 + call void @clear_pathspec(ptr noundef nonnull %gep) #10 %indvars.iv.next91 = add nuw nsw i64 %indvars.iv90, 1 %exitcond94.not = icmp eq i64 %indvars.iv.next91, %wide.trip.count82 - br i1 %exitcond94.not, label %.loopexit, label %.preheader, !llvm.loop !46 + br i1 %exitcond94.not, label %.loopexit, label %73, !llvm.loop !46 -.loopexit: ; preds = %.preheader, %stop_progress.exit +.loopexit: ; preds = %73, %stop_progress.exit %trace_perf_key.val = load i32, ptr getelementptr inbounds nuw (i8, ptr @trace_perf_key, i64 8), align 8, !tbaa !47 %trace_perf_key.val58 = load i8, ptr getelementptr inbounds nuw (i8, ptr @trace_perf_key, i64 12), align 4 %.not.i = icmp eq i32 %trace_perf_key.val, 0 diff --git a/bench/graphviz/optimized/dotinit.ll b/bench/graphviz/optimized/dotinit.ll index eb1df99f669..3435bc285d6 100644 --- a/bench/graphviz/optimized/dotinit.ll +++ b/bench/graphviz/optimized/dotinit.ll @@ -477,9 +477,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/poly.ll b/bench/graphviz/optimized/poly.ll index 2015f2baa03..ce6276d95fd 100644 --- a/bench/graphviz/optimized/poly.ll +++ b/bench/graphviz/optimized/poly.ll @@ -639,7 +639,7 @@ gv_calloc.exit83: ; preds = %gv_calloc.exit83.pr %56 = fdiv double %55, 7.200000e+01 %57 = getelementptr inbounds nuw %struct.pointf_s, ptr %46, i64 %.076102 store double %56, ptr %57, align 8, !tbaa !38 - %58 = getelementptr inbounds nuw %struct.pointf_s, ptr %49, i64 %.076102, i32 1 + %58 = getelementptr inbounds nuw i8, ptr %54, i64 8 %59 = load double, ptr %58, align 8, !tbaa !39 %60 = fdiv double %59, 7.200000e+01 %61 = getelementptr inbounds nuw i8, ptr %57, i64 8 @@ -1383,7 +1383,8 @@ gv_calloc.exit: ; preds = %12 .lr.ph46: ; preds = %24 %23 = add nsw i32 %1, -1 - %wide.trip.count51 = zext nneg i32 %1 to i64 + %invariant.gep = getelementptr i8, ptr %21, i64 8 + %wide.trip.count53 = zext nneg i32 %1 to i64 br label %33 24: ; preds = %.lr.ph, %24 @@ -1396,7 +1397,7 @@ gv_calloc.exit: ; preds = %12 %29 = getelementptr inbounds nuw i8, ptr %25, i64 8 %30 = load double, ptr %29, align 8, !tbaa !39 %31 = fsub double %30, %3 - %32 = getelementptr inbounds nuw %struct.pointf_s, ptr %21, i64 %indvars.iv, i32 1 + %32 = getelementptr inbounds nuw i8, ptr %28, i64 8 store double %31, ptr %32, align 8, !tbaa !39 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count @@ -1432,7 +1433,7 @@ gv_calloc.exit: ; preds = %12 52: ; preds = %41, %33 %53 = fcmp ult double %39, 0.000000e+00 %.phi.trans.insert = sext i32 %36 to i64 - %.phi.trans.insert54 = getelementptr inbounds %struct.pointf_s, ptr %21, i64 %.phi.trans.insert, i32 1 + %.phi.trans.insert54 = getelementptr %struct.pointf_s, ptr %invariant.gep, i64 %.phi.trans.insert %.pre = load double, ptr %.phi.trans.insert54, align 8, !tbaa !39 %54 = fcmp ugt double %.pre, 0.000000e+00 %or.cond56 = select i1 %53, i1 true, i1 %54 @@ -1474,9 +1475,9 @@ gv_calloc.exit: ; preds = %12 br label %75 75: ; preds = %._crit_edge53, %71, %73, %67, %47 - %.1 = phi double [ %.045, %47 ], [ %72, %71 ], [ %74, %73 ], [ %.045, %67 ], [ %.045, %._crit_edge53 ] + %.1 = phi double [ %.045, %47 ], [ %72, %71 ], [ %74, %73 ], [ %.045, %67 ], [ %.045, %._crit_edge55 ] %indvars.iv.next49 = add nuw nsw i64 %indvars.iv48, 1 - %exitcond52.not = icmp eq i64 %indvars.iv.next49, %wide.trip.count51 + %exitcond52.not = icmp eq i64 %indvars.iv.next49, %wide.trip.count53 br i1 %exitcond52.not, label %._crit_edge.loopexit, label %33, !llvm.loop !65 ._crit_edge.loopexit: ; preds = %75 diff --git a/bench/grpc/optimized/xds_override_host.ll b/bench/grpc/optimized/xds_override_host.ll index 81a8fd10886..54579df6f66 100644 --- a/bench/grpc/optimized/xds_override_host.ll +++ b/bench/grpc/optimized/xds_override_host.ll @@ -7376,6 +7376,7 @@ define linkonce_odr void @_ZN4absl12lts_2024072223inlined_vector_internal7Storag %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 %5 = load ptr, ptr %4, align 8 %6 = select i1 %.not, ptr %4, ptr %5 + %invariant.gep.i = getelementptr i8, ptr %6, i64 16 %.not5.i = icmp ult i64 %2, 2 br i1 %.not5.i, label %_ZN4absl12lts_2024072223inlined_vector_internal14DestroyAdapterISaISt4pairISt17basic_string_viewIcSt11char_traitsIcEEN17grpc_event_engine12experimental5SliceEEELb0EE15DestroyElementsERSC_PSB_m.exit, label %.lr.ph.i.preheader @@ -7386,7 +7387,7 @@ define linkonce_odr void @_ZN4absl12lts_2024072223inlined_vector_internal7Storag .lr.ph.i: ; preds = %.lr.ph.i.preheader, %.lr.ph.i %.06.i = phi i64 [ %8, %.lr.ph.i ], [ %7, %.lr.ph.i.preheader ] %8 = add nsw i64 %.06.i, -1 - %9 = getelementptr inbounds nuw %"struct.std::pair.432", ptr %6, i64 %8, i32 1 + %9 = getelementptr %"struct.std::pair.432", ptr %invariant.gep.i, i64 %8 tail call void @_ZN17grpc_event_engine12experimental5SliceD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #40 %.not.i = icmp eq i64 %8, 0 br i1 %.not.i, label %_ZN4absl12lts_2024072223inlined_vector_internal14DestroyAdapterISaISt4pairISt17basic_string_viewIcSt11char_traitsIcEEN17grpc_event_engine12experimental5SliceEEELb0EE15DestroyElementsERSC_PSB_m.exit.loopexit, label %.lr.ph.i, !llvm.loop !281 diff --git a/bench/harfbuzz/optimized/hb-ot-cff1-table.ll b/bench/harfbuzz/optimized/hb-ot-cff1-table.ll index ad223b17dfb..62e31d211c0 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 } @@ -297,13 +298,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 124f38718d4..6745d8f909b 100644 --- a/bench/hdf5/optimized/H5FSdbg.ll +++ b/bench/hdf5/optimized/H5FSdbg.ll @@ -180,7 +180,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 @@ -188,24 +188,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/H5Ochunk.ll b/bench/hdf5/optimized/H5Ochunk.ll index 396a3e01e69..a48e52c4a94 100644 --- a/bench/hdf5/optimized/H5Ochunk.ll +++ b/bench/hdf5/optimized/H5Ochunk.ll @@ -248,12 +248,12 @@ define ptr @H5O__chunk_protect(ptr noundef %0, ptr noundef %1, i32 noundef %2) l %33 = getelementptr inbounds nuw i8, ptr %1, i64 392 %34 = load ptr, ptr %33, align 8, !tbaa !33 %35 = zext i32 %2 to i64 - %36 = getelementptr inbounds nuw %struct.H5O_chunk_t, ptr %34, i64 %35, i32 1 - %37 = load i64, ptr %36, align 8, !tbaa !43 - %38 = getelementptr inbounds nuw i8, ptr %5, i64 24 - store i64 %37, ptr %38, align 8, !tbaa !44 - %39 = getelementptr inbounds nuw %struct.H5O_chunk_t, ptr %34, i64 %35 - %40 = load i64, ptr %39, align 8, !tbaa !34 + %36 = getelementptr inbounds nuw %struct.H5O_chunk_t, ptr %34, i64 %35 + %37 = getelementptr inbounds nuw i8, ptr %36, i64 8 + %38 = load i64, ptr %37, align 8, !tbaa !43 + %39 = getelementptr inbounds nuw i8, ptr %5, i64 24 + store i64 %38, ptr %39, align 8, !tbaa !44 + %40 = load i64, ptr %36, align 8, !tbaa !34 %41 = call ptr @H5AC_protect(ptr noundef %0, ptr noundef nonnull @H5AC_OHDR_CHK, i64 noundef %40, ptr noundef nonnull %5, i32 noundef 0) #4 %42 = icmp eq ptr %41, null br i1 %42, label %43, label %47 @@ -461,11 +461,12 @@ define range(i32 -1, 1) i32 @H5O__chunk_resize(ptr noundef %0, ptr noundef %1) l 20: ; preds = %9 %21 = zext i32 %11 to i64 - %22 = getelementptr inbounds nuw %struct.H5O_chunk_t, ptr %14, i64 %21, i32 1 - %23 = load i64, ptr %22, align 8, !tbaa !43 - %24 = tail call i32 @H5AC_resize_entry(ptr noundef nonnull %1, i64 noundef %23) #4 - %25 = icmp slt i32 %24, 0 - br i1 %25, label %.sink.split, label %29 + %22 = getelementptr inbounds nuw %struct.H5O_chunk_t, ptr %14, i64 %21 + %23 = getelementptr inbounds nuw i8, ptr %22, i64 8 + %24 = load i64, ptr %23, align 8, !tbaa !43 + %25 = tail call i32 @H5AC_resize_entry(ptr noundef nonnull %1, i64 noundef %24) #4 + %26 = icmp slt i32 %25, 0 + br i1 %26, label %.sink.split, label %30 .sink.split: ; preds = %20, %15 %.sink = phi i32 [ 273, %15 ], [ 278, %20 ] @@ -508,12 +509,12 @@ define range(i32 -1, 1) i32 @H5O__chunk_update_idx(ptr noundef %0, ptr noundef % %17 = getelementptr inbounds nuw i8, ptr %1, i64 392 %18 = load ptr, ptr %17, align 8, !tbaa !33 %19 = zext i32 %2 to i64 - %20 = getelementptr inbounds nuw %struct.H5O_chunk_t, ptr %18, i64 %19, i32 1 - %21 = load i64, ptr %20, align 8, !tbaa !43 - %22 = getelementptr inbounds nuw i8, ptr %4, i64 24 - store i64 %21, ptr %22, align 8, !tbaa !44 - %23 = getelementptr inbounds nuw %struct.H5O_chunk_t, ptr %18, i64 %19 - %24 = load i64, ptr %23, align 8, !tbaa !34 + %20 = getelementptr inbounds nuw %struct.H5O_chunk_t, ptr %18, i64 %19 + %21 = getelementptr inbounds nuw i8, ptr %20, i64 8 + %22 = load i64, ptr %21, align 8, !tbaa !43 + %23 = getelementptr inbounds nuw i8, ptr %4, i64 24 + store i64 %22, ptr %23, align 8, !tbaa !44 + %24 = load i64, ptr %20, align 8, !tbaa !34 %25 = call ptr @H5AC_protect(ptr noundef %0, ptr noundef nonnull @H5AC_OHDR_CHK, i64 noundef %24, ptr noundef nonnull %4, i32 noundef 0) #4 %26 = icmp eq ptr %25, null br i1 %26, label %27, label %31 diff --git a/bench/hermes/optimized/ChromeTraceSerializer.ll b/bench/hermes/optimized/ChromeTraceSerializer.ll index c30af6c9463..b3ae446527a 100644 --- a/bench/hermes/optimized/ChromeTraceSerializer.ll +++ b/bench/hermes/optimized/ChromeTraceSerializer.ll @@ -2569,7 +2569,8 @@ for.body.i4: ; preds = %if.then, %for.inc.i if.then.i: ; preds = %for.body.i4 %second.i.i6 = getelementptr inbounds nuw i8, ptr %arrayidx10.i, i64 8 %12 = load ptr, ptr %other, align 8 - %second.i14.i = getelementptr inbounds nuw %"struct.llvh::detail::DenseMapPair", ptr %12, i64 %i.017.i, i32 0, i32 1 + %second.i14.i = getelementptr inbounds nuw %"struct.llvh::detail::DenseMapPair", ptr %12, i64 %i.017.i + %second.i14.i = getelementptr inbounds nuw i8, ptr %arrayidx24.i, i64 8 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i6, ptr noundef nonnull align 8 dereferenceable(32) %second.i14.i) #15 br label %for.inc.i diff --git a/bench/html5ever-rs/optimized/19ci5iy6gkdi8zuj.ll b/bench/html5ever-rs/optimized/19ci5iy6gkdi8zuj.ll index 1aeeed6be92..e5271705391 100644 --- a/bench/html5ever-rs/optimized/19ci5iy6gkdi8zuj.ll +++ b/bench/html5ever-rs/optimized/19ci5iy6gkdi8zuj.ll @@ -220,6 +220,7 @@ define hidden void @"_ZN4core3ptr171drop_in_place$LT$lock_api..mutex..Mutex$LT$p ; Function Attrs: nonlazybind uwtable define hidden void @"_ZN4core3ptr181drop_in_place$LT$$u5b$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$$u5d$$GT$17hd2f204072f2335f5E.llvm.5870598909725602671"(ptr noalias noundef nonnull readonly align 8 captures(none) %0, i64 noundef %1) unnamed_addr #1 personality ptr @rust_eh_personality { + %invariant.gep = getelementptr i8, ptr %0, i64 8 %3 = icmp eq i64 %1, 0 br i1 %3, label %._crit_edge, label %.lr.ph @@ -227,7 +228,7 @@ define hidden void @"_ZN4core3ptr181drop_in_place$LT$$u5b$lock_api..mutex..Mutex %.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$17hb2389fcfa039ff82E.llvm.5870598909725602671.exit" ], [ 0, %2 ] %4 = add nuw i64 %.08, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !65) - %5 = getelementptr inbounds [0 x { { { i8 } }, [7 x i8], ptr }], ptr %0, i64 0, i64 %.08, i32 2 + %5 = getelementptr [0 x { { { i8 } }, [7 x i8], ptr }], ptr %invariant.gep, i64 0, i64 %.08 tail call void @llvm.experimental.noalias.scope.decl(metadata !68) tail call void @llvm.experimental.noalias.scope.decl(metadata !71) %6 = load ptr, ptr %5, align 8, !alias.scope !74, !noundef !4 @@ -256,7 +257,7 @@ define hidden void @"_ZN4core3ptr181drop_in_place$LT$$u5b$lock_api..mutex..Mutex ret void 11: ; preds = %13, %.body - %.1 = phi i64 [ %4, %.body ], [ %15, %13 ] + %.1 = phi i64 [ %4, %.body ], [ %15, %12 ] %12 = icmp eq i64 %.1, %1 br i1 %12, label %16, label %13 @@ -282,6 +283,7 @@ define hidden void @"_ZN4core3ptr206drop_in_place$LT$alloc..boxed..Box$LT$$u5b$l %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load i64, ptr %3, align 8, !noundef !4 tail call void @llvm.experimental.noalias.scope.decl(metadata !78) + %invariant.gep.i = getelementptr i8, ptr %2, i64 8 %5 = icmp eq i64 %4, 0 br i1 %5, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3c5ead6e36c9e9eeE.llvm.5870598909725602671.exit2", label %.lr.ph.i @@ -289,7 +291,7 @@ define hidden void @"_ZN4core3ptr206drop_in_place$LT$alloc..boxed..Box$LT$$u5b$l %.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$17hb2389fcfa039ff82E.llvm.5870598909725602671.exit.i" ], [ 0, %1 ] %6 = add nuw i64 %.08.i, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !81) - %7 = getelementptr inbounds [0 x { { { i8 } }, [7 x i8], ptr }], ptr %2, i64 0, i64 %.08.i, i32 2 + %7 = getelementptr [0 x { { { i8 } }, [7 x i8], ptr }], ptr %invariant.gep.i, i64 0, i64 %.08.i tail call void @llvm.experimental.noalias.scope.decl(metadata !84) tail call void @llvm.experimental.noalias.scope.decl(metadata !87) %8 = load ptr, ptr %7, align 8, !alias.scope !90, !noundef !4 @@ -323,7 +325,7 @@ define hidden void @"_ZN4core3ptr206drop_in_place$LT$alloc..boxed..Box$LT$$u5b$l %16 = getelementptr inbounds [0 x { { { i8 } }, [7 x i8], ptr }], ptr %2, i64 0, 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$17hb2389fcfa039ff82E.llvm.5870598909725602671"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %16) #18 - to label %13 unwind label %18 + to label %12 unwind label %18 18: ; preds = %15 %19 = landingpad { ptr, i32 } @@ -333,7 +335,7 @@ define hidden void @"_ZN4core3ptr206drop_in_place$LT$alloc..boxed..Box$LT$$u5b$l "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.5870598909725602671.exit.i1": ; 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$17hb2389fcfa039ff82E.llvm.5870598909725602671.exit.i" %20 = shl nsw i64 %4, 4 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %20, i64 noundef 8) #17, !noalias !94 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %110, i64 noundef 8) #17, !noalias !94 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3c5ead6e36c9e9eeE.llvm.5870598909725602671.exit2" "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3c5ead6e36c9e9eeE.llvm.5870598909725602671.exit2": ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.5870598909725602671.exit.i1" diff --git a/bench/hwloc/optimized/hwloc-ps.ll b/bench/hwloc/optimized/hwloc-ps.ll index bc612b7eee9..6689090c598 100644 --- a/bench/hwloc/optimized/hwloc-ps.ll +++ b/bench/hwloc/optimized/hwloc-ps.ll @@ -1546,21 +1546,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(i64 150, ptr nonnull %4) #16 - %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 @@ -1573,14 +1573,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(i64 150, ptr nonnull %4) #16 %.pre = load i32, ptr %20, align 4, !tbaa !42 br label %46 diff --git a/bench/hyperscan/optimized/dfa_min.ll b/bench/hyperscan/optimized/dfa_min.ll index 9f4ab9dd95c..317dc3f39cf 100644 --- a/bench/hyperscan/optimized/dfa_min.ll +++ b/bench/hyperscan/optimized/dfa_min.ll @@ -2210,28 +2210,29 @@ _ZNSt6vectorItSaItEED2Ev.exit46.i.i: ; preds = %759, %758, %650 br i1 %.not.i15.i, label %_ZNSt6vectorItSaItEED2Ev.exit.i, label %.preheader.i16.i .preheader.i16.i: ; preds = %760, %._crit_edge.i18.i - %.027.i.i = phi i64 [ %770, %._crit_edge.i18.i ], [ 0, %760 ] + %.027.i.i = phi i64 [ %771, %._crit_edge.i18.i ], [ 0, %760 ] %763 = load i64, ptr %13, align 8 %.not29.i.i = icmp eq i64 %763, 0 br i1 %.not29.i.i, label %._crit_edge.i18.i, label %.lr.ph.i17.i ._crit_edge.i18.i: ; preds = %.lr.ph.i17.i, %.preheader.i16.i %764 = load ptr, ptr %19, align 8 - %765 = getelementptr inbounds nuw %"struct.ue2::dstate", ptr %764, i64 %.027.i.i, i32 1 - %766 = load i16, ptr %765, align 8 - %767 = zext i16 %766 to i64 - %768 = getelementptr inbounds nuw i16, ptr %.sroa.021.0.i, i64 %767 - %769 = load i16, ptr %768, align 2 - store i16 %769, ptr %765, align 8 - %770 = add nuw i64 %.027.i.i, 1 - %771 = load ptr, ptr %618, align 8 - %772 = load ptr, ptr %617, align 8 - %773 = ptrtoint ptr %771 to i64 + %765 = getelementptr inbounds nuw %"struct.ue2::dstate", ptr %764, i64 %.027.i.i + %766 = getelementptr inbounds nuw i8, ptr %765, i64 24 + %767 = load i16, ptr %766, align 8 + %768 = zext i16 %767 to i64 + %769 = getelementptr inbounds nuw i16, ptr %.sroa.021.0.i, i64 %768 + %770 = load i16, ptr %769, align 2 + store i16 %770, ptr %766, align 8 + %771 = add nuw i64 %.027.i.i, 1 + %772 = load ptr, ptr %618, align 8 + %773 = load ptr, ptr %617, align 8 %774 = ptrtoint ptr %772 to i64 - %775 = sub i64 %773, %774 - %776 = sdiv exact i64 %775, 24 - %777 = icmp ult i64 %770, %776 - br i1 %777, label %.preheader.i16.i, label %_ZNSt6vectorItSaItEED2Ev.exit.i, !llvm.loop !87 + %775 = ptrtoint ptr %773 to i64 + %776 = sub i64 %774, %775 + %777 = sdiv exact i64 %776, 24 + %778 = icmp ult i64 %771, %777 + br i1 %778, label %.preheader.i16.i, label %_ZNSt6vectorItSaItEED2Ev.exit.i, !llvm.loop !87 .lr.ph.i17.i: ; preds = %.preheader.i16.i, %.lr.ph.i17.i %.02526.i.i = phi i64 [ %786, %.lr.ph.i17.i ], [ 0, %.preheader.i16.i ] @@ -2283,7 +2284,7 @@ _ZN3ue2L7new_dfaERNS_7raw_dfaERKNS_12_GLOBAL__N_112HopcroftInfoE.exit: ; preds = br label %.body .body: ; preds = %801, %799, %_ZNSt6vectorItSaItEED2Ev.exit46.i.i, %_ZN3ue211flat_detail9flat_baseItSt4lessItESaItEED2Ev.exit49.i - %eh.lpad-body = phi { ptr, i32 } [ %.pn.pn.pn.pn.i, %_ZN3ue211flat_detail9flat_baseItSt4lessItESaItEED2Ev.exit49.i ], [ %802, %801 ], [ %.pn37.pn.i.i, %799 ], [ %.pn37.pn.i.i, %_ZNSt6vectorItSaItEED2Ev.exit46.i.i ] + %eh.lpad-body = phi { ptr, i32 } [ %.pn.pn.pn.pn.i, %_ZN3ue211flat_detail9flat_baseItSt4lessItESaItEED2Ev.exit49.i ], [ %802, %802 ], [ %.pn37.pn.i.i, %800 ], [ %.pn37.pn.i.i, %_ZNSt6vectorItSaItEED2Ev.exit46.i.i ] call fastcc void @_ZN3ue212_GLOBAL__N_112HopcroftInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(208) %13) #20 call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %13) #20 br label %common.resume diff --git a/bench/influxdb-rs/optimized/3k3vgyqcou07q2z6.ll b/bench/influxdb-rs/optimized/3k3vgyqcou07q2z6.ll index 3026f06351a..515c6af9eda 100644 --- a/bench/influxdb-rs/optimized/3k3vgyqcou07q2z6.ll +++ b/bench/influxdb-rs/optimized/3k3vgyqcou07q2z6.ll @@ -2533,8 +2533,7 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h04f38ee2be7a7c %.0.i4 = phi i64 [ %7, %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h73d88f013b698eddE.exit2" ], [ 0, %1 ] %7 = add nuw i64 %.0.i4, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !293) - %.idx = shl nsw i64 %.0.i4, 4 - %gep = getelementptr i8, ptr %invariant.gep, i64 %.idx + %gep = getelementptr [0 x { i8, ptr }], ptr %invariant.gep, i64 0, i64 %.0.i4 tail call void @llvm.experimental.noalias.scope.decl(metadata !296) tail call void @llvm.experimental.noalias.scope.decl(metadata !299) %8 = load ptr, ptr %gep, align 8, !alias.scope !302, !nonnull !5, !noundef !5 @@ -2561,18 +2560,17 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h04f38ee2be7a7c %.1.i7 = phi i64 [ %16, %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h73d88f013b698eddE.exit" ], [ %7, %13 ] %16 = add i64 %.1.i7, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !303) - %.idx3 = shl nsw i64 %.1.i7, 4 - %gep6 = getelementptr i8, ptr %invariant.gep, i64 %.idx3 + %gep5 = getelementptr [0 x { i8, ptr }], ptr %invariant.gep, i64 0, i64 %.1.i7 tail call void @llvm.experimental.noalias.scope.decl(metadata !306) tail call void @llvm.experimental.noalias.scope.decl(metadata !309) - %17 = load ptr, ptr %gep6, align 8, !alias.scope !312, !nonnull !5, !noundef !5 + %17 = load ptr, ptr %gep5, align 8, !alias.scope !312, !nonnull !5, !noundef !5 %18 = atomicrmw sub ptr %17, i64 1 release, align 8, !noalias !312 %19 = icmp eq i64 %18, 1 br i1 %19, label %20, label %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h73d88f013b698eddE.exit" 20: ; preds = %.lr.ph8 fence acquire - invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h303c1574aa098163E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %gep6) + invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h303c1574aa098163E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %gep5) to label %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h73d88f013b698eddE.exit" unwind label %22 "_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h73d88f013b698eddE.exit": ; preds = %20, %.lr.ph8 diff --git a/bench/influxdb-rs/optimized/u7z03ejdn0bs7a8.ll b/bench/influxdb-rs/optimized/u7z03ejdn0bs7a8.ll index 4a70478a772..a85c04d295f 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 [0 x { i8, ptr }], ptr %7, i64 0, 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(i64 16, 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 ], [ %27, %26 ] %23 = icmp eq i64 %.1.i, %6 br i1 %23, label %28, label %26 @@ -5885,8 +5884,7 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h91b441016dc821 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 - %gep = getelementptr i8, ptr %invariant.gep, i64 %.idx3 + %gep = getelementptr [0 x { i8, ptr }], ptr %invariant.gep, i64 0, i64 %.1.i 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) %gep) to label %"_ZN4core3ptr84drop_in_place$LT$$LP$i8$C$alloc..sync..Arc$LT$arrow_schema..field..Field$GT$$RP$$GT$17h24a994e6158b0fe3E.exit" unwind label %29 diff --git a/bench/jemalloc/optimized/eset.ll b/bench/jemalloc/optimized/eset.ll index 35a2e85b47d..f3e84882109 100644 --- a/bench/jemalloc/optimized/eset.ll +++ b/bench/jemalloc/optimized/eset.ll @@ -57,10 +57,10 @@ define hidden i64 @je_eset_nextents_get(ptr noundef readonly captures(none) %0, ; Function Attrs: mustprogress nofree norecurse nounwind willreturn memory(argmem: readwrite) uwtable define hidden i64 @je_eset_nbytes_get(ptr noundef readonly captures(none) %0, i32 noundef %1) local_unnamed_addr #1 { - %3 = zext i32 %1 to i64 - %.idx = shl nuw nsw i64 %3, 4 - %4 = getelementptr i8, ptr %0, i64 6440 - %5 = getelementptr i8, ptr %4, i64 %.idx + %3 = getelementptr inbounds nuw i8, ptr %0, i64 6432 + %4 = zext i32 %1 to i64 + %4 = getelementptr inbounds nuw [200 x %struct.eset_bin_stats_s], ptr %3, i64 0, i64 %4 + %5 = getelementptr inbounds nuw i8, ptr %4, i64 8 %6 = load atomic i64, ptr %5 monotonic, align 8 ret i64 %6 } @@ -423,8 +423,7 @@ fb_ffs.exit.i: ; preds = %45, %36 br i1 %53, label %.lr.ph.i, label %eset_first_fit.exit .lr.ph.i: ; preds = %fb_ffs.exit.i - %54 = getelementptr i8, ptr %0, i64 48 - %55 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %54 = getelementptr inbounds nuw i8, ptr %0, i64 32 br label %56 56: ; preds = %fb_ffs.exit37.i, %.lr.ph.i @@ -449,10 +448,10 @@ fb_ffs.exit.i: ; preds = %45, %36 br i1 %66, label %73, label %67 67: ; preds = %65 - %.idx.i = shl nuw nsw i64 %57, 5 - %68 = getelementptr i8, ptr %54, i64 %.idx.i + %67 = getelementptr inbounds nuw [200 x %struct.eset_bin_s], ptr %54, i64 0, i64 %57 + %68 = getelementptr inbounds nuw i8, ptr %67, i64 16 %69 = load i64, ptr %68, align 8 - %70 = getelementptr inbounds nuw i8, ptr %68, i64 8 + %70 = getelementptr inbounds nuw i8, ptr %67, i64 24 %71 = load i64, ptr %70, align 8 %.sroa.23.0.insert.ext.i.i = zext i64 %69 to i128 %.sroa.23.0.insert.shift.i.i = shl nuw i128 %.sroa.23.0.insert.ext.i.i, 64 @@ -466,7 +465,7 @@ fb_ffs.exit.i: ; preds = %45, %36 br i1 %72, label %73, label %77 73: ; preds = %67, %65 - %74 = getelementptr inbounds nuw [200 x %struct.eset_bin_s], ptr %55, i64 0, i64 %57 + %74 = getelementptr inbounds nuw [200 x %struct.eset_bin_s], ptr %54, i64 0, i64 %57 %75 = tail call ptr @je_edata_heap_first(ptr noundef nonnull %74) #7 %76 = getelementptr inbounds nuw i8, ptr %74, i64 16 %.sroa.0.0.copyload.i = load i64, ptr %76, align 8, !tbaa !24 @@ -475,9 +474,9 @@ fb_ffs.exit.i: ; preds = %45, %36 br label %77 77: ; preds = %73, %67 - %.2.i = phi ptr [ %75, %73 ], [ %.02742.i, %67 ] - %.sroa.0.1.i = phi i64 [ %.sroa.0.0.copyload.i, %73 ], [ %.sroa.0.043.i, %67 ] - %.sroa.5.1.i = phi i64 [ %.sroa.5.0.copyload.i, %73 ], [ %.sroa.5.044.i, %67 ] + %.2.i = phi ptr [ %75, %73 ], [ %.02742.i, %66 ] + %.sroa.0.1.i = phi i64 [ %.sroa.0.0.copyload.i, %73 ], [ %.sroa.0.043.i, %66 ] + %.sroa.5.1.i = phi i64 [ %.sroa.5.0.copyload.i, %73 ], [ %.sroa.5.044.i, %66 ] %78 = icmp eq i64 %57, 199 br i1 %78, label %eset_first_fit.exit, label %79 @@ -515,7 +514,7 @@ fb_ffs.exit37.i: ; preds = %89, %79 br i1 %97, label %56, label %eset_first_fit.exit, !llvm.loop !26 eset_first_fit.exit: ; preds = %.lr.ph.i.i, %56, %77, %fb_ffs.exit37.i, %.lr.ph.i35.i, %30, %34, %fb_ffs.exit.i - %.0.i = phi ptr [ %35, %34 ], [ null, %30 ], [ null, %fb_ffs.exit.i ], [ %.2.i, %.lr.ph.i35.i ], [ %.2.i, %fb_ffs.exit37.i ], [ %.02742.i, %56 ], [ %.2.i, %77 ], [ null, %.lr.ph.i.i ] + %.0.i = phi ptr [ %35, %34 ], [ null, %30 ], [ null, %fb_ffs.exit.i ], [ %.2.i, %.lr.ph.i35.i ], [ %.2.i, %fb_ffs.exit37.i ], [ %.02742.i, %55 ], [ %.2.i, %77 ], [ null, %.lr.ph.i.i ] %98 = icmp ugt i64 %2, 4096 %99 = icmp eq ptr %.0.i, null %or.cond = select i1 %98, i1 %99, i1 false diff --git a/bench/just-rs/optimized/3022oi333lxf39jd.ll b/bench/just-rs/optimized/3022oi333lxf39jd.ll index 58839ed2ab4..3b163ec9118 100644 --- a/bench/just-rs/optimized/3022oi333lxf39jd.ll +++ b/bench/just-rs/optimized/3022oi333lxf39jd.ll @@ -5551,13 +5551,14 @@ define internal fastcc void @"_ZN4core3ptr47drop_in_place$LT$just..attribute..At define hidden void @"_ZN4core3ptr49drop_in_place$LT$$u5b$just..scope..Scope$u5d$$GT$17he4522c5b7e09ad10E.llvm.4740080591946275097"(ptr noalias noundef nonnull align 8 %0, i64 noundef %1) unnamed_addr #1 personality ptr @rust_eh_personality { %3 = alloca { { ptr, [1 x i64] }, i64, { {} }, {} }, align 8 %4 = alloca { { { i64, [3 x i64] }, { i64, [3 x i64] } }, i64, {} }, align 8 + %invariant.gep = getelementptr i8, ptr %0, i64 8 %5 = icmp eq i64 %1, 0 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 [0 x { ptr, { { { ptr, [1 x i64] }, i64, { {} }, {} } } }], ptr %0, i64 0, i64 %.08, i32 1 + %7 = getelementptr [0 x { ptr, { { { ptr, [1 x i64] }, i64, { {} }, {} } } }], ptr %invariant.gep, i64 0, i64 %.08 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %4), !noalias !1212 call void @llvm.lifetime.start.p0(i64 24, 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) @@ -5578,7 +5579,7 @@ define hidden void @"_ZN4core3ptr49drop_in_place$LT$$u5b$just..scope..Scope$u5d$ ret void 9: ; preds = %13, %11 - %.1 = phi i64 [ %6, %11 ], [ %15, %13 ] + %.1 = phi i64 [ %6, %10 ], [ %15, %12 ] %10 = icmp eq i64 %.1, %1 br i1 %10, label %16, label %13 @@ -5591,7 +5592,7 @@ define hidden void @"_ZN4core3ptr49drop_in_place$LT$$u5b$just..scope..Scope$u5d$ %14 = getelementptr inbounds [0 x { ptr, { { { ptr, [1 x i64] }, i64, { {} }, {} } } }], ptr %0, i64 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 %8 unwind label %17 16: ; preds = %9 resume { ptr, i32 } %12 @@ -9397,13 +9398,14 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h0313f1149a332e4a %11 = load ptr, ptr %10, align 8, !nonnull !16, !noundef !16 %12 = getelementptr inbounds { ptr, { { { ptr, [1 x i64] }, i64, { {} }, {} } } }, ptr %11, i64 %1 store i64 %1, ptr %5, align 8 + %invariant.gep.i = getelementptr i8, ptr %12, i64 8 %13 = icmp eq i64 %6, %1 br i1 %13, label %"_ZN4core3ptr49drop_in_place$LT$$u5b$just..scope..Scope$u5d$$GT$17he4522c5b7e09ad10E.llvm.4740080591946275097.exit", label %.lr.ph.i .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 [0 x { ptr, { { { ptr, [1 x i64] }, i64, { {} }, {} } } }], ptr %12, i64 0, i64 %.08.i, i32 1 + %15 = getelementptr [0 x { ptr, { { { ptr, [1 x i64] }, i64, { {} }, {} } } }], ptr %invariant.gep.i, i64 0, i64 %.08.i call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %4), !noalias !1744 call void @llvm.lifetime.start.p0(i64 24, 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) @@ -9421,7 +9423,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, %18 ], [ %23, %20 ] %18 = icmp eq i64 %.1.i, %9 br i1 %18, label %24, label %21 @@ -9434,7 +9436,7 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h0313f1149a332e4a %22 = getelementptr inbounds [0 x { ptr, { { { ptr, [1 x i64] }, i64, { {} }, {} } } }], ptr %12, i64 0, 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 %16 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 94ee24ed16f..6f9d085749c 100644 --- a/bench/lean4/optimized/static.ll +++ b/bench/lean4/optimized/static.ll @@ -4674,8 +4674,7 @@ define i64 @mi_malloc_good_size(i64 noundef %0) local_unnamed_addr #13 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 [75 x %struct.mi_page_queue_s], ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1280), i64 0, i64 %.0.i.i %20 = getelementptr inbounds nuw i8, ptr %19, i64 16 %21 = load i64, ptr %20, align 8, !tbaa !62 br label %mi_good_size.exit @@ -4734,8 +4733,7 @@ define i64 @mi_good_size(i64 noundef %0) local_unnamed_addr #13 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 [75 x %struct.mi_page_queue_s], ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1280), i64 0, i64 %.0.i %20 = getelementptr inbounds nuw i8, ptr %19, i64 16 %21 = load i64, ptr %20, align 8, !tbaa !62 br label %_ZL12_mi_align_upmm.exit @@ -19679,8 +19677,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 #8 { - %.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 [75 x %struct.mi_page_queue_s], ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1280), i64 0, i64 %0 %3 = getelementptr inbounds nuw i8, ptr %2, i64 16 %4 = load i64, ptr %3, align 8, !tbaa !62 ret i64 %4 @@ -30546,8 +30543,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 #3 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 [75 x %struct.mi_page_queue_s], ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1280), i64 0, i64 %2 %7 = getelementptr inbounds nuw i8, ptr %6, i64 16 %8 = load i64, ptr %7, align 8, !tbaa !62 %9 = icmp ult i64 %8, 8193 @@ -31373,8 +31369,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 [75 x %struct.mi_page_queue_s], ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1280), i64 0, i64 %.0.i.i.i %30 = getelementptr inbounds nuw i8, ptr %29, i64 16 %31 = load i64, ptr %30, align 8, !tbaa !62 br label %_ZL30mi_malloc_is_naturally_alignedmm.exit diff --git a/bench/libevent/optimized/bufferevent_ssl.ll b/bench/libevent/optimized/bufferevent_ssl.ll index 40776c83778..2ff779101f1 100644 --- a/bench/libevent/optimized/bufferevent_ssl.ll +++ b/bench/libevent/optimized/bufferevent_ssl.ll @@ -2253,14 +2253,15 @@ define internal fastcc range(i32 0, 6) i32 @do_read(ptr noundef %0, i32 noundef 89: ; preds = %.thread %sext = shl i64 %indvars.iv, 32 %90 = ashr exact i64 %sext, 32 - %91 = getelementptr inbounds [2 x %struct.iovec], ptr %3, i64 0, i64 %90, i32 1 - store i64 %.070.us, ptr %91, align 8 - %92 = add nsw i32 %.074.ph121, 1 + %91 = getelementptr inbounds [2 x %struct.iovec], ptr %3, i64 0, i64 %90 + %92 = getelementptr inbounds nuw i8, ptr %91, i64 8 + store i64 %.070.us, ptr %92, align 8 + %93 = add nsw i32 %.074.ph121, 1 br label %.thread.thread .thread.thread: ; preds = %.split131.us, %89, %.thread %.172166 = phi i32 [ %.172, %89 ], [ %.172, %.thread ], [ 1, %.split131.us ] - %.175 = phi i32 [ %92, %89 ], [ %.074.ph121, %.thread ], [ %12, %.split131.us ] + %.175 = phi i32 [ %93, %89 ], [ %.074.ph121, %.thread ], [ %12, %.split131.us ] %.not90 = icmp eq i32 %.175, 0 br i1 %.not90, label %.loopexit, label %93 @@ -2289,7 +2290,7 @@ define internal fastcc range(i32 0, 6) i32 @do_read(ptr noundef %0, i32 noundef br label %.loopexit .loopexit: ; preds = %38, %.preheader, %68, %81, %.thread.thread, %100, %103, %93, %8, %2 - %.0 = phi i32 [ 0, %2 ], [ 4, %8 ], [ %.172166, %93 ], [ %.172166, %103 ], [ %.172166, %100 ], [ %.172166, %.thread.thread ], [ %69, %68 ], [ %82, %81 ], [ 0, %.preheader ], [ 5, %38 ] + %.0 = phi i32 [ 0, %2 ], [ 4, %8 ], [ %.172166, %94 ], [ %.172166, %104 ], [ %.172166, %101 ], [ %.172166, %.thread.thread ], [ %69, %68 ], [ %82, %81 ], [ 0, %.preheader ], [ 5, %38 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7 ret i32 %.0 } diff --git a/bench/libevent/optimized/watch.ll b/bench/libevent/optimized/watch.ll index fd563bc5e0f..4b4dc4f829f 100644 --- a/bench/libevent/optimized/watch.ll +++ b/bench/libevent/optimized/watch.ll @@ -4,6 +4,7 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80: target triple = "x86_64-pc-linux-gnu" %struct.evthread_lock_callbacks = type { i32, i32, ptr, ptr, ptr, ptr } +%struct.evwatch_list = type { ptr, ptr } @evthread_lock_fns_ = external local_unnamed_addr global %struct.evthread_lock_callbacks, align 8 @@ -125,39 +126,35 @@ define void @evwatch_free(ptr noundef %0) local_unnamed_addr #0 { %.not15 = icmp eq ptr %10, null %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %12 = load ptr, ptr %11, align 8 - br i1 %.not15, label %15, label %13 + br i1 %.not15, label %13, label %20 13: ; preds = %9 - %14 = getelementptr inbounds nuw i8, ptr %10, i64 8 - store ptr %12, ptr %14, align 8 - br label %22 - -15: ; preds = %9 - %16 = load ptr, ptr %2, align 8 - %17 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %18 = load i32, ptr %17, align 8 - %19 = zext i32 %18 to i64 - %.idx = shl nuw nsw i64 %19, 4 - %20 = getelementptr i8, ptr %16, i64 1184 - %21 = getelementptr i8, ptr %20, i64 %.idx + %14 = load ptr, ptr %2, align 8 + %15 = getelementptr inbounds nuw i8, ptr %14, i64 1176 + %16 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %17 = load i32, ptr %16, align 8 + %18 = zext i32 %17 to i64 + %19 = getelementptr inbounds nuw [2 x %struct.evwatch_list], ptr %15, i64 0, i64 %18 + br label %20 + +20:; preds = %9, %13 + %.sink17 = phi ptr [ %19, %13 ], [ %10, %9 ] + %20 = getelementptr inbounds nuw i8, ptr %.sink17, i64 8 store ptr %12, ptr %21, align 8 - br label %22 - -22: ; preds = %15, %13 - %23 = load ptr, ptr %0, align 8 - store ptr %23, ptr %12, align 8 - %24 = load ptr, ptr %2, align 8 - %25 = getelementptr inbounds nuw i8, ptr %24, i64 952 - %26 = load ptr, ptr %25, align 8 - %.not16 = icmp eq ptr %26, null - br i1 %.not16, label %30, label %27 - -27: ; preds = %22 - %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) #5 - br label %30 - -30: ; preds = %27, %22 + %22 = load ptr, ptr %0, align 8 + store ptr %22, ptr %12, align 8 + %23 = load ptr, ptr %2, align 8 + %24 = getelementptr inbounds nuw i8, ptr %23, i64 952 + %25 = load ptr, ptr %24, align 8 + %.not16 = icmp eq ptr %25, null + br i1 %.not16, label %29, label %26 + +26:; preds = %20 + %27 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @evthread_lock_fns_, i64 32), align 8 + %28 = tail call i32 %27(i32 noundef 0, ptr noundef nonnull %25) #5 + br label %29 + +29: ; preds = %26, %20 tail call void @event_mm_free_(ptr noundef nonnull %0) #5 ret void } diff --git a/bench/libigl/optimized/ViewerData.ll b/bench/libigl/optimized/ViewerData.ll index 7e19a5d8e3a..db3f6cb8144 100644 --- a/bench/libigl/optimized/ViewerData.ll +++ b/bench/libigl/optimized/ViewerData.ll @@ -7483,6 +7483,7 @@ define dso_local void @_ZN3igl6opengl10ViewerData13update_labelsERNS0_6MeshGL6Te %12 = ptrtoint ptr %10 to i64 %13 = sub i64 %11, %12 %14 = ashr exact i64 %13, 5 + %invariant.gep = getelementptr i8, ptr %10, i64 8 %15 = add nsw i64 %6, -1 %.not82.not = icmp ugt i64 %14, %15 br i1 %.not82.not, label %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE2atEm.exit, label %67 @@ -7584,7 +7585,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEm.exit.loopexit.us.us: _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 + %62 = getelementptr %"class.std::__cxx11::basic_string", ptr %invariant.gep, i64 %.04060 %63 = load i64, ptr %62, align 8, !tbaa !72 %64 = trunc i64 %63 to i32 %65 = add i32 %.03761, %64 diff --git a/bench/libigl/optimized/sparse_cached.ll b/bench/libigl/optimized/sparse_cached.ll index 0cbc16b8c4d..fd82f9fd21e 100644 --- a/bench/libigl/optimized/sparse_cached.ll +++ b/bench/libigl/optimized/sparse_cached.ll @@ -83,6 +83,7 @@ define weak_odr dso_local void @_ZN3igl13sparse_cachedIdEEvRKSt6vectorIN5Eigen7T %14 = ptrtoint ptr %12 to i64 %15 = sub i64 %13, %14 %16 = ashr exact i64 %15, 4 + %invariant.gep = getelementptr inbounds nuw i8, ptr %12, i64 8 %.not = icmp eq ptr %11, %12 br i1 %.not, label %._crit_edge, label %.lr.ph18 @@ -111,7 +112,7 @@ define weak_odr dso_local void @_ZN3igl13sparse_cachedIdEEvRKSt6vectorIN5Eigen7T 29: ; preds = %.lr.ph18, %29 %30 = phi i64 [ 0, %.lr.ph18 ], [ %40, %29 ] %.017 = phi i32 [ 0, %.lr.ph18 ], [ %39, %29 ] - %31 = getelementptr inbounds nuw %"class.Eigen::Triplet", ptr %12, i64 %30, i32 2 + %31 = getelementptr inbounds nuw %"class.Eigen::Triplet", ptr %invariant.gep, i64 %30 %32 = load double, ptr %31, align 8, !tbaa !21 %33 = getelementptr inbounds nuw i32, ptr %19, i64 %30 %34 = load i32, ptr %33, align 4, !tbaa !19 diff --git a/bench/libjpeg-turbo/optimized/rdswitch.ll b/bench/libjpeg-turbo/optimized/rdswitch.ll index c1f5e00bab6..9a3f4b7b36a 100644 --- a/bench/libjpeg-turbo/optimized/rdswitch.ll +++ b/bench/libjpeg-turbo/optimized/rdswitch.ll @@ -778,7 +778,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 @@ -801,30 +801,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 @@ -854,7 +856,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 @@ -888,34 +890,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 f62e6ed3d3d..77b405a64b2 100644 --- a/bench/libquic/optimized/activity_tracker.ll +++ b/bench/libquic/optimized/activity_tracker.ll @@ -1695,8 +1695,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 @@ -1730,8 +1731,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 d683c2c9fb9..05de61d72cd 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 [16 x %struct.err_error_st], ptr %.06.i.i, i64 0, i64 %15, i32 2 - %17 = load i32, ptr %16, align 8, !tbaa !13 + %16 = getelementptr inbounds nuw [16 x %struct.err_error_st], ptr %.06.i.i, i64 0, 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 [16 x %struct.err_error_st], ptr %.06.i.i, i64 0, i64 %13, i32 2 - %15 = load i32, ptr %14, align 8, !tbaa !13 + %14 = getelementptr inbounds nuw [16 x %struct.err_error_st], ptr %.06.i.i, i64 0, 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 } @@ -1291,10 +1293,11 @@ err_get_state.exit: ; preds = %0, %5 12: ; preds = %err_get_state.exit %13 = zext i32 %10 to i64 - %14 = getelementptr inbounds nuw [16 x %struct.err_error_st], ptr %.06.i, i64 0, 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 [16 x %struct.err_error_st], ptr %.06.i, i64 0, 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/inflate.ll b/bench/libquic/optimized/inflate.ll index 892559a8a90..d7cbda4f7de 100644 --- a/bench/libquic/optimized/inflate.ll +++ b/bench/libquic/optimized/inflate.ll @@ -1903,6 +1903,9 @@ default.unreachable2838: ; preds = %423 %540 = load i32, ptr %48, align 8, !tbaa !73 %notmask = shl nsw i32 -1, %540 %541 = xor i32 %notmask, -1 + %invariant.gep3286 = getelementptr inbounds nuw i8, ptr %539, i64 1 + %invariant.gep = getelementptr inbounds nuw i8, ptr %539, i64 1 + %invariant.gep3288 = getelementptr i8, ptr %539, i64 2 br label %.preheader1251 .preheader1251: ; preds = %.preheader1251.lr.ph, %651 @@ -1914,7 +1917,7 @@ default.unreachable2838: ; preds = %423 %542 = trunc i64 %.389501973 to i32 %543 = and i32 %541, %542 %544 = zext nneg i32 %543 to i64 - %.sroa.1864.0..sroa_idx1917 = getelementptr inbounds nuw %struct.code, ptr %539, i64 %544, i32 1 + %.sroa.1864.0..sroa_idx1917 = getelementptr inbounds nuw %struct.code, ptr %invariant.gep3286, i64 %544 %.sroa.1864.0.copyload1918 = load i8, ptr %.sroa.1864.0..sroa_idx1917, align 1, !tbaa !37 %545 = zext i8 %.sroa.1864.0.copyload1918 to i32 %.not11651919 = icmp ult i32 %.381974, %545 @@ -1943,7 +1946,7 @@ default.unreachable2838: ; preds = %423 %555 = trunc i64 %554 to i32 %556 = and i32 %541, %555 %557 = zext nneg i32 %556 to i64 - %.sroa.1864.0..sroa_idx = getelementptr inbounds nuw %struct.code, ptr %539, i64 %557, i32 1 + %.sroa.1864.0..sroa_idx = getelementptr inbounds nuw %struct.code, ptr %invariant.gep, i64 %557 %.sroa.1864.0.copyload = load i8, ptr %.sroa.1864.0..sroa_idx, align 1, !tbaa !37 %558 = zext i8 %.sroa.1864.0.copyload to i64 %.not1165 = icmp samesign ult i64 %indvars.iv.next2764, %558 @@ -1962,7 +1965,7 @@ default.unreachable2838: ; preds = %423 %.40952.lcssa = phi i64 [ %.389501973, %.preheader1251 ], [ %554, %._crit_edge1925.loopexit ] %.40.lcssa = phi i32 [ %.381974, %.preheader1251 ], [ %560, %._crit_edge1925.loopexit ] %.sroa.1864.0.copyload.lcssa = phi i8 [ %.sroa.1864.0.copyload1918, %.preheader1251 ], [ %.sroa.1864.0.copyload, %._crit_edge1925.loopexit ] - %.sroa.42.0..sroa_idx.le = getelementptr inbounds nuw %struct.code, ptr %539, i64 %561, i32 2 + %.sroa.42.0..sroa_idx.le = getelementptr %struct.code, ptr %invariant.gep3288, i64 %561 %.sroa.42.0.copyload.le = load i16, ptr %.sroa.42.0..sroa_idx.le, align 2, !tbaa !80 %562 = icmp ult i16 %.sroa.42.0.copyload.le, 16 br i1 %562, label %563, label %570 @@ -3171,13 +3174,13 @@ default.unreachable2838: ; preds = %423 br label %.loopexit1246 .loopexit1246: ; preds = %277, %283, %312, %324, %353, %405, %459, %465, %667, %887, %931, %.lr.ph2095, %.lr.ph1752, %70, %.loopexit1246.loopexit3713, %.loopexit1246.loopexit2895, %.loopexit1246.loopexit2894, %.loopexit1246.loopexit2893, %.loopexit1246.loopexit2892, %.loopexit1246.loopexit2891, %.loopexit1246.loopexit2890, %.loopexit1246.loopexit2889, %.loopexit1246.loopexit2331, %.loopexit1246.loopexit2330, %.loopexit1246.loopexit2329, %.loopexit1246.loopexit2321, %.loopexit1246.loopexit2320, %.loopexit1246.loopexit2319, %.loopexit1246.loopexit2318, %.loopexit1246.loopexit2317, %.loopexit1246.loopexit2316, %.loopexit1246.loopexit2315, %.loopexit1246.loopexit2314, %.loopexit1246.loopexit2312, %.loopexit1246.loopexit2311, %.loopexit1246.loopexit, %994, %429 - %.09732660 = phi i32 [ %.0973, %429 ], [ %.0973, %994 ], [ %.0973, %.loopexit1246.loopexit ], [ %.0973, %.loopexit1246.loopexit2311 ], [ %.0973, %.loopexit1246.loopexit2312 ], [ %.0973, %.loopexit1246.loopexit2314 ], [ %.0973, %.loopexit1246.loopexit2315 ], [ %.0973, %.loopexit1246.loopexit2316 ], [ %.0973, %.loopexit1246.loopexit2317 ], [ %.0973, %.loopexit1246.loopexit2318 ], [ %.0973, %.loopexit1246.loopexit2319 ], [ %.0973, %.loopexit1246.loopexit2320 ], [ %.0973, %.loopexit1246.loopexit2321 ], [ %.0973, %.loopexit1246.loopexit2329 ], [ %.0973, %.loopexit1246.loopexit2330 ], [ %.0973, %.loopexit1246.loopexit2331 ], [ %.0973, %.loopexit1246.loopexit2889 ], [ %.0973, %.loopexit1246.loopexit2890 ], [ %.0973, %.loopexit1246.loopexit2891 ], [ %.0973, %.loopexit1246.loopexit2892 ], [ %.0973, %.loopexit1246.loopexit2893 ], [ %.0973, %.loopexit1246.loopexit2894 ], [ %.0973, %.loopexit1246.loopexit2895 ], [ %.0973, %70 ], [ %.0973, %.lr.ph1752 ], [ %.0973, %277 ], [ %.0973, %283 ], [ %.0973, %312 ], [ %.0973, %324 ], [ %.0973, %353 ], [ %.0973, %405 ], [ %.0973, %459 ], [ %.0973, %465 ], [ %.0973, %667 ], [ 0, %887 ], [ 0, %931 ], [ %.0973, %.lr.ph2095 ], [ %.0973, %.loopexit1246.loopexit3713 ] - %.641103 = phi ptr [ %.371076.lcssa, %429 ], [ %.621101, %994 ], [ %.4910881954, %.loopexit1246.loopexit ], [ %.4610851944, %.loopexit1246.loopexit2311 ], [ %.4810871934, %.loopexit1246.loopexit2312 ], [ %.2210612299, %.loopexit1246.loopexit2314 ], [ %.3510742289, %.loopexit1246.loopexit2315 ], [ %.2810672280, %.loopexit1246.loopexit2316 ], [ %.2710662270, %.loopexit1246.loopexit2317 ], [ %.2510642260, %.loopexit1246.loopexit2318 ], [ %.2310622250, %.loopexit1246.loopexit2319 ], [ %.3610752082, %.loopexit1246.loopexit2320 ], [ %.3810772071, %.loopexit1246.loopexit2321 ], [ %.3910781738, %.loopexit1246.loopexit2329 ], [ %.6311021728, %.loopexit1246.loopexit2330 ], [ %.6111001721, %.loopexit1246.loopexit2331 ], [ %scevgep.le, %.loopexit1246.loopexit2889 ], [ %scevgep2792.le, %.loopexit1246.loopexit2890 ], [ %scevgep2790.le, %.loopexit1246.loopexit2891 ], [ %scevgep2786.le, %.loopexit1246.loopexit2892 ], [ %scevgep2783.le, %.loopexit1246.loopexit2893 ], [ %scevgep2781.le, %.loopexit1246.loopexit2894 ], [ %scevgep2777.le, %.loopexit1246.loopexit2895 ], [ %.01039, %70 ], [ %.4010791902, %.lr.ph1752 ], [ %.311070, %277 ], [ %.31042, %283 ], [ %315, %312 ], [ %.41043, %324 ], [ %356, %353 ], [ %.71046, %405 ], [ %.381077.lcssa, %459 ], [ %.101049, %465 ], [ %.421081.lcssa, %667 ], [ %.181057, %887 ], [ %.01039, %931 ], [ %.81047, %.lr.ph2095 ], [ %.01039, %.loopexit1246.loopexit3713 ] - %.64 = phi i32 [ %.371012.lcssa, %429 ], [ %.62, %994 ], [ 0, %.loopexit1246.loopexit ], [ 0, %.loopexit1246.loopexit2311 ], [ 0, %.loopexit1246.loopexit2312 ], [ 0, %.loopexit1246.loopexit2314 ], [ 0, %.loopexit1246.loopexit2315 ], [ 0, %.loopexit1246.loopexit2316 ], [ 0, %.loopexit1246.loopexit2317 ], [ 0, %.loopexit1246.loopexit2318 ], [ 0, %.loopexit1246.loopexit2319 ], [ 0, %.loopexit1246.loopexit2320 ], [ 0, %.loopexit1246.loopexit2321 ], [ 0, %.loopexit1246.loopexit2329 ], [ 0, %.loopexit1246.loopexit2330 ], [ 0, %.loopexit1246.loopexit2331 ], [ 0, %.loopexit1246.loopexit2889 ], [ 0, %.loopexit1246.loopexit2890 ], [ 0, %.loopexit1246.loopexit2891 ], [ 0, %.loopexit1246.loopexit2892 ], [ 0, %.loopexit1246.loopexit2893 ], [ 0, %.loopexit1246.loopexit2894 ], [ 0, %.loopexit1246.loopexit2895 ], [ %.0975, %70 ], [ 0, %.lr.ph1752 ], [ %.311006, %277 ], [ 0, %283 ], [ %313, %312 ], [ 0, %324 ], [ %354, %353 ], [ %.7982, %405 ], [ %.381013.lcssa, %459 ], [ %.10985, %465 ], [ %.421017.lcssa, %667 ], [ %.18993, %887 ], [ %.0975, %931 ], [ 0, %.lr.ph2095 ], [ %.0975, %.loopexit1246.loopexit3713 ] - %.60972 = phi i64 [ %430, %429 ], [ %.58970, %994 ], [ %.459571956, %.loopexit1246.loopexit ], [ %.429541946, %.loopexit1246.loopexit2311 ], [ %.449561936, %.loopexit1246.loopexit2312 ], [ %.229342301, %.loopexit1246.loopexit2314 ], [ %.319432291, %.loopexit1246.loopexit2315 ], [ %.289402282, %.loopexit1246.loopexit2316 ], [ %.279392272, %.loopexit1246.loopexit2317 ], [ %.259372262, %.loopexit1246.loopexit2318 ], [ %.239352252, %.loopexit1246.loopexit2319 ], [ %.329442084, %.loopexit1246.loopexit2320 ], [ %.349462073, %.loopexit1246.loopexit2321 ], [ %.359471740, %.loopexit1246.loopexit2329 ], [ %.599711730, %.loopexit1246.loopexit2330 ], [ %.579691723, %.loopexit1246.loopexit2331 ], [ %.409521922, %.loopexit1246.loopexit2889 ], [ %.559672063, %.loopexit1246.loopexit2890 ], [ %.529642051, %.loopexit1246.loopexit2891 ], [ %.519632032, %.loopexit1246.loopexit2892 ], [ %.509622018, %.loopexit1246.loopexit2893 ], [ %.479592006, %.loopexit1246.loopexit2894 ], [ %.469581987, %.loopexit1246.loopexit2895 ], [ %.0912, %70 ], [ %.369481904, %.lr.ph1752 ], [ %.2914, %277 ], [ %.3915, %283 ], [ %.3915, %312 ], [ %.4916, %324 ], [ %.4916, %353 ], [ %.7919, %405 ], [ 0, %459 ], [ %.10922, %465 ], [ %.38950.lcssa, %667 ], [ %.18930, %887 ], [ %.0912, %931 ], [ %.8920, %.lr.ph2095 ], [ %.0912, %.loopexit1246.loopexit3713 ] - %.60 = phi i32 [ %431, %429 ], [ %.58, %994 ], [ %995, %.loopexit1246.loopexit ], [ %996, %.loopexit1246.loopexit2311 ], [ %997, %.loopexit1246.loopexit2312 ], [ %998, %.loopexit1246.loopexit2314 ], [ %999, %.loopexit1246.loopexit2315 ], [ %1000, %.loopexit1246.loopexit2316 ], [ %1001, %.loopexit1246.loopexit2317 ], [ %1002, %.loopexit1246.loopexit2318 ], [ %1003, %.loopexit1246.loopexit2319 ], [ %1004, %.loopexit1246.loopexit2320 ], [ %1005, %.loopexit1246.loopexit2321 ], [ %1006, %.loopexit1246.loopexit2329 ], [ %1007, %.loopexit1246.loopexit2330 ], [ %1008, %.loopexit1246.loopexit2331 ], [ %1011, %.loopexit1246.loopexit2889 ], [ %1013, %.loopexit1246.loopexit2890 ], [ %1017, %.loopexit1246.loopexit2891 ], [ %1020, %.loopexit1246.loopexit2892 ], [ %1022, %.loopexit1246.loopexit2893 ], [ %1026, %.loopexit1246.loopexit2894 ], [ %1029, %.loopexit1246.loopexit2895 ], [ %.0901, %70 ], [ %.361905, %.lr.ph1752 ], [ %.2903, %277 ], [ %.3904, %283 ], [ %.3904, %312 ], [ %.4905, %324 ], [ %.4905, %353 ], [ %.7908, %405 ], [ 0, %459 ], [ %.10911, %465 ], [ %.38.lcssa, %667 ], [ %.18, %887 ], [ %.0901, %931 ], [ %.8909, %.lr.ph2095 ], [ %.0901, %.loopexit1246.loopexit3713 ] - %.5900 = phi i32 [ %.0895, %429 ], [ %.1896, %994 ], [ %.0895, %.loopexit1246.loopexit ], [ %.0895, %.loopexit1246.loopexit2311 ], [ %.0895, %.loopexit1246.loopexit2312 ], [ %.0895, %.loopexit1246.loopexit2314 ], [ %.0895, %.loopexit1246.loopexit2315 ], [ %.0895, %.loopexit1246.loopexit2316 ], [ %.0895, %.loopexit1246.loopexit2317 ], [ %.0895, %.loopexit1246.loopexit2318 ], [ %.0895, %.loopexit1246.loopexit2319 ], [ %.0895, %.loopexit1246.loopexit2320 ], [ %.0895, %.loopexit1246.loopexit2321 ], [ %.0895, %.loopexit1246.loopexit2329 ], [ %.1896, %.loopexit1246.loopexit2330 ], [ %.0895, %.loopexit1246.loopexit2331 ], [ %.0895, %.loopexit1246.loopexit2889 ], [ %.0895, %.loopexit1246.loopexit2890 ], [ %.0895, %.loopexit1246.loopexit2891 ], [ %.0895, %.loopexit1246.loopexit2892 ], [ %.0895, %.loopexit1246.loopexit2893 ], [ %.0895, %.loopexit1246.loopexit2894 ], [ %.0895, %.loopexit1246.loopexit2895 ], [ %.0895, %70 ], [ %.0895, %.lr.ph1752 ], [ %.0895, %.lr.ph2095 ], [ %.0895, %931 ], [ %.0895, %887 ], [ %.0895, %667 ], [ %.0895, %465 ], [ %.0895, %459 ], [ %.0895, %405 ], [ %.0895, %353 ], [ %.0895, %324 ], [ %.0895, %312 ], [ %.0895, %283 ], [ %.0895, %277 ], [ %.0895, %.loopexit1246.loopexit3713 ] - %.9 = phi i32 [ %.0, %429 ], [ 1, %994 ], [ %.1, %.loopexit1246.loopexit ], [ %.1, %.loopexit1246.loopexit2311 ], [ %.1, %.loopexit1246.loopexit2312 ], [ %.0, %.loopexit1246.loopexit2314 ], [ %.0, %.loopexit1246.loopexit2315 ], [ %.0, %.loopexit1246.loopexit2316 ], [ %.0, %.loopexit1246.loopexit2317 ], [ %.0, %.loopexit1246.loopexit2318 ], [ %.0, %.loopexit1246.loopexit2319 ], [ %.0, %.loopexit1246.loopexit2320 ], [ %.0, %.loopexit1246.loopexit2321 ], [ %.0, %.loopexit1246.loopexit2329 ], [ %.0, %.loopexit1246.loopexit2330 ], [ %.0, %.loopexit1246.loopexit2331 ], [ %.1, %.loopexit1246.loopexit2889 ], [ %.6, %.loopexit1246.loopexit2890 ], [ %.5, %.loopexit1246.loopexit2891 ], [ %.5, %.loopexit1246.loopexit2892 ], [ %.4, %.loopexit1246.loopexit2893 ], [ %.3, %.loopexit1246.loopexit2894 ], [ %.3, %.loopexit1246.loopexit2895 ], [ -3, %70 ], [ %.0, %.lr.ph1752 ], [ %.0, %277 ], [ %.0, %283 ], [ %.0, %312 ], [ %.0, %324 ], [ %.0, %353 ], [ %.0, %405 ], [ %.0, %459 ], [ %.0, %465 ], [ 0, %667 ], [ %.7, %887 ], [ %.0, %931 ], [ %.0, %.lr.ph2095 ], [ 1, %.loopexit1246.loopexit3713 ] + %.09732660 = phi i32 [ %.0973, %429 ], [ %.0973, %994 ], [ %.0973, %.loopexit1246.loopexit ], [ %.0973, %.loopexit1246.loopexit2311 ], [ %.0973, %.loopexit1246.loopexit2312 ], [ %.0973, %.loopexit1246.loopexit2314 ], [ %.0973, %.loopexit1246.loopexit2315 ], [ %.0973, %.loopexit1246.loopexit2316 ], [ %.0973, %.loopexit1246.loopexit2317 ], [ %.0973, %.loopexit1246.loopexit2318 ], [ %.0973, %.loopexit1246.loopexit2319 ], [ %.0973, %.loopexit1246.loopexit2320 ], [ %.0973, %.loopexit1246.loopexit2321 ], [ %.0973, %.loopexit1246.loopexit2329 ], [ %.0973, %.loopexit1246.loopexit2330 ], [ %.0973, %.loopexit1246.loopexit2331 ], [ %.0973, %.loopexit1246.loopexit2889 ], [ %.0973, %.loopexit1246.loopexit2890 ], [ %.0973, %.loopexit1246.loopexit2891 ], [ %.0973, %.loopexit1246.loopexit2892 ], [ %.0973, %.loopexit1246.loopexit2893 ], [ %.0973, %.loopexit1246.loopexit2894 ], [ %.0973, %.loopexit1246.loopexit2895 ], [ %.0973, %70 ], [ %.0973, %.lr.ph1752 ], [ %.0973, %277 ], [ %.0973, %283 ], [ %.0973, %312 ], [ %.0973, %324 ], [ %.0973, %353 ], [ %.0973, %405 ], [ %.0973, %459 ], [ %.0973, %465 ], [ %.0973, %667 ], [ 0, %887 ], [ 0, %931 ], [ %.0973, %.lr.ph2095 ], [ %.0973, %.loopexit1246.loopexit3717 ] + %.641103 = phi ptr [ %.371076.lcssa, %429 ], [ %.621101, %994 ], [ %.4910881954, %.loopexit1246.loopexit ], [ %.4610851944, %.loopexit1246.loopexit2311 ], [ %.4810871934, %.loopexit1246.loopexit2312 ], [ %.2210612299, %.loopexit1246.loopexit2314 ], [ %.3510742289, %.loopexit1246.loopexit2315 ], [ %.2810672280, %.loopexit1246.loopexit2316 ], [ %.2710662270, %.loopexit1246.loopexit2317 ], [ %.2510642260, %.loopexit1246.loopexit2318 ], [ %.2310622250, %.loopexit1246.loopexit2319 ], [ %.3610752082, %.loopexit1246.loopexit2320 ], [ %.3810772071, %.loopexit1246.loopexit2321 ], [ %.3910781738, %.loopexit1246.loopexit2329 ], [ %.6311021728, %.loopexit1246.loopexit2330 ], [ %.6111001721, %.loopexit1246.loopexit2331 ], [ %scevgep.le, %.loopexit1246.loopexit2889 ], [ %scevgep2792.le, %.loopexit1246.loopexit2890 ], [ %scevgep2790.le, %.loopexit1246.loopexit2891 ], [ %scevgep2786.le, %.loopexit1246.loopexit2892 ], [ %scevgep2783.le, %.loopexit1246.loopexit2893 ], [ %scevgep2781.le, %.loopexit1246.loopexit2894 ], [ %scevgep2777.le, %.loopexit1246.loopexit2895 ], [ %.01039, %70 ], [ %.4010791902, %.lr.ph1752 ], [ %.311070, %277 ], [ %.31042, %283 ], [ %315, %312 ], [ %.41043, %324 ], [ %356, %353 ], [ %.71046, %405 ], [ %.381077.lcssa, %459 ], [ %.101049, %465 ], [ %.421081.lcssa, %667 ], [ %.181057, %887 ], [ %.01039, %931 ], [ %.81047, %.lr.ph2095 ], [ %.01039, %.loopexit1246.loopexit3717 ] + %.64 = phi i32 [ %.371012.lcssa, %429 ], [ %.62, %994 ], [ 0, %.loopexit1246.loopexit ], [ 0, %.loopexit1246.loopexit2311 ], [ 0, %.loopexit1246.loopexit2312 ], [ 0, %.loopexit1246.loopexit2314 ], [ 0, %.loopexit1246.loopexit2315 ], [ 0, %.loopexit1246.loopexit2316 ], [ 0, %.loopexit1246.loopexit2317 ], [ 0, %.loopexit1246.loopexit2318 ], [ 0, %.loopexit1246.loopexit2319 ], [ 0, %.loopexit1246.loopexit2320 ], [ 0, %.loopexit1246.loopexit2321 ], [ 0, %.loopexit1246.loopexit2329 ], [ 0, %.loopexit1246.loopexit2330 ], [ 0, %.loopexit1246.loopexit2331 ], [ 0, %.loopexit1246.loopexit2889 ], [ 0, %.loopexit1246.loopexit2890 ], [ 0, %.loopexit1246.loopexit2891 ], [ 0, %.loopexit1246.loopexit2892 ], [ 0, %.loopexit1246.loopexit2893 ], [ 0, %.loopexit1246.loopexit2894 ], [ 0, %.loopexit1246.loopexit2895 ], [ %.0975, %70 ], [ 0, %.lr.ph1752 ], [ %.311006, %277 ], [ 0, %283 ], [ %313, %312 ], [ 0, %324 ], [ %354, %353 ], [ %.7982, %405 ], [ %.381013.lcssa, %459 ], [ %.10985, %465 ], [ %.421017.lcssa, %667 ], [ %.18993, %887 ], [ %.0975, %931 ], [ 0, %.lr.ph2095 ], [ %.0975, %.loopexit1246.loopexit3717 ] + %.60972 = phi i64 [ %430, %429 ], [ %.58970, %994 ], [ %.459571956, %.loopexit1246.loopexit ], [ %.429541946, %.loopexit1246.loopexit2311 ], [ %.449561936, %.loopexit1246.loopexit2312 ], [ %.229342301, %.loopexit1246.loopexit2314 ], [ %.319432291, %.loopexit1246.loopexit2315 ], [ %.289402282, %.loopexit1246.loopexit2316 ], [ %.279392272, %.loopexit1246.loopexit2317 ], [ %.259372262, %.loopexit1246.loopexit2318 ], [ %.239352252, %.loopexit1246.loopexit2319 ], [ %.329442084, %.loopexit1246.loopexit2320 ], [ %.349462073, %.loopexit1246.loopexit2321 ], [ %.359471740, %.loopexit1246.loopexit2329 ], [ %.599711730, %.loopexit1246.loopexit2330 ], [ %.579691723, %.loopexit1246.loopexit2331 ], [ %.409521922, %.loopexit1246.loopexit2889 ], [ %.559672063, %.loopexit1246.loopexit2890 ], [ %.529642051, %.loopexit1246.loopexit2891 ], [ %.519632032, %.loopexit1246.loopexit2892 ], [ %.509622018, %.loopexit1246.loopexit2893 ], [ %.479592006, %.loopexit1246.loopexit2894 ], [ %.469581987, %.loopexit1246.loopexit2895 ], [ %.0912, %70 ], [ %.369481904, %.lr.ph1752 ], [ %.2914, %277 ], [ %.3915, %283 ], [ %.3915, %312 ], [ %.4916, %324 ], [ %.4916, %353 ], [ %.7919, %405 ], [ 0, %459 ], [ %.10922, %465 ], [ %.38950.lcssa, %667 ], [ %.18930, %887 ], [ %.0912, %931 ], [ %.8920, %.lr.ph2095 ], [ %.0912, %.loopexit1246.loopexit3717 ] + %.60 = phi i32 [ %431, %429 ], [ %.58, %994 ], [ %995, %.loopexit1246.loopexit ], [ %996, %.loopexit1246.loopexit2311 ], [ %997, %.loopexit1246.loopexit2312 ], [ %998, %.loopexit1246.loopexit2314 ], [ %999, %.loopexit1246.loopexit2315 ], [ %1000, %.loopexit1246.loopexit2316 ], [ %1001, %.loopexit1246.loopexit2317 ], [ %1002, %.loopexit1246.loopexit2318 ], [ %1003, %.loopexit1246.loopexit2319 ], [ %1004, %.loopexit1246.loopexit2320 ], [ %1005, %.loopexit1246.loopexit2321 ], [ %1006, %.loopexit1246.loopexit2329 ], [ %1007, %.loopexit1246.loopexit2330 ], [ %1008, %.loopexit1246.loopexit2331 ], [ %1011, %.loopexit1246.loopexit2889 ], [ %1013, %.loopexit1246.loopexit2890 ], [ %1017, %.loopexit1246.loopexit2891 ], [ %1020, %.loopexit1246.loopexit2892 ], [ %1022, %.loopexit1246.loopexit2893 ], [ %1026, %.loopexit1246.loopexit2894 ], [ %1029, %.loopexit1246.loopexit2895 ], [ %.0901, %70 ], [ %.361905, %.lr.ph1752 ], [ %.2903, %277 ], [ %.3904, %283 ], [ %.3904, %312 ], [ %.4905, %324 ], [ %.4905, %353 ], [ %.7908, %405 ], [ 0, %459 ], [ %.10911, %465 ], [ %.38.lcssa, %667 ], [ %.18, %887 ], [ %.0901, %931 ], [ %.8909, %.lr.ph2095 ], [ %.0901, %.loopexit1246.loopexit3717 ] + %.5900 = phi i32 [ %.0895, %429 ], [ %.1896, %994 ], [ %.0895, %.loopexit1246.loopexit ], [ %.0895, %.loopexit1246.loopexit2311 ], [ %.0895, %.loopexit1246.loopexit2312 ], [ %.0895, %.loopexit1246.loopexit2314 ], [ %.0895, %.loopexit1246.loopexit2315 ], [ %.0895, %.loopexit1246.loopexit2316 ], [ %.0895, %.loopexit1246.loopexit2317 ], [ %.0895, %.loopexit1246.loopexit2318 ], [ %.0895, %.loopexit1246.loopexit2319 ], [ %.0895, %.loopexit1246.loopexit2320 ], [ %.0895, %.loopexit1246.loopexit2321 ], [ %.0895, %.loopexit1246.loopexit2329 ], [ %.1896, %.loopexit1246.loopexit2330 ], [ %.0895, %.loopexit1246.loopexit2331 ], [ %.0895, %.loopexit1246.loopexit2889 ], [ %.0895, %.loopexit1246.loopexit2890 ], [ %.0895, %.loopexit1246.loopexit2891 ], [ %.0895, %.loopexit1246.loopexit2892 ], [ %.0895, %.loopexit1246.loopexit2893 ], [ %.0895, %.loopexit1246.loopexit2894 ], [ %.0895, %.loopexit1246.loopexit2895 ], [ %.0895, %70 ], [ %.0895, %.lr.ph1752 ], [ %.0895, %.lr.ph2095 ], [ %.0895, %931 ], [ %.0895, %887 ], [ %.0895, %667 ], [ %.0895, %465 ], [ %.0895, %459 ], [ %.0895, %405 ], [ %.0895, %353 ], [ %.0895, %324 ], [ %.0895, %312 ], [ %.0895, %283 ], [ %.0895, %277 ], [ %.0895, %.loopexit1246.loopexit3717 ] + %.9 = phi i32 [ %.0, %429 ], [ 1, %994 ], [ %.1, %.loopexit1246.loopexit ], [ %.1, %.loopexit1246.loopexit2311 ], [ %.1, %.loopexit1246.loopexit2312 ], [ %.0, %.loopexit1246.loopexit2314 ], [ %.0, %.loopexit1246.loopexit2315 ], [ %.0, %.loopexit1246.loopexit2316 ], [ %.0, %.loopexit1246.loopexit2317 ], [ %.0, %.loopexit1246.loopexit2318 ], [ %.0, %.loopexit1246.loopexit2319 ], [ %.0, %.loopexit1246.loopexit2320 ], [ %.0, %.loopexit1246.loopexit2321 ], [ %.0, %.loopexit1246.loopexit2329 ], [ %.0, %.loopexit1246.loopexit2330 ], [ %.0, %.loopexit1246.loopexit2331 ], [ %.1, %.loopexit1246.loopexit2889 ], [ %.6, %.loopexit1246.loopexit2890 ], [ %.5, %.loopexit1246.loopexit2891 ], [ %.5, %.loopexit1246.loopexit2892 ], [ %.4, %.loopexit1246.loopexit2893 ], [ %.3, %.loopexit1246.loopexit2894 ], [ %.3, %.loopexit1246.loopexit2895 ], [ -3, %70 ], [ %.0, %.lr.ph1752 ], [ %.0, %277 ], [ %.0, %283 ], [ %.0, %312 ], [ %.0, %324 ], [ %.0, %353 ], [ %.0, %405 ], [ %.0, %459 ], [ %.0, %465 ], [ 0, %667 ], [ %.7, %887 ], [ %.0, %931 ], [ %.0, %.lr.ph2095 ], [ 1, %.loopexit1246.loopexit3717 ] store ptr %.01036, ptr %10, align 8, !tbaa !40 store i32 %.09732660, ptr %24, align 8, !tbaa !43 store ptr %.641103, ptr %0, align 8, !tbaa !41 diff --git a/bench/libwebp/optimized/cost_enc.ll b/bench/libwebp/optimized/cost_enc.ll index 02d831ef98a..11fa5c52691 100644 --- a/bench/libwebp/optimized/cost_enc.ll +++ b/bench/libwebp/optimized/cost_enc.ll @@ -420,8 +420,10 @@ define hidden range(i32 0, 2) i32 @VP8RecordCoeffs(i32 noundef %0, ptr noundef r br i1 %12, label %15, label %.preheader .preheader: ; preds = %2 - %.not62 = icmp sgt i32 %3, %11 - br i1 %.not62, label %._crit_edge66, label %.lr.ph65 + %invariant.gep = getelementptr inbounds nuw i8, ptr %5, i64 44 + %invariant.gep62 = getelementptr inbounds nuw i8, ptr %5, i64 88 + %.not64 = icmp sgt i32 %3, %11 + br i1 %.not64, label %._crit_edge68, label %.lr.ph67 .lr.ph65: ; preds = %.preheader %13 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -440,8 +442,8 @@ define hidden range(i32 0, 2) i32 @VP8RecordCoeffs(i32 noundef %0, ptr noundef r br label %109 22: ; preds = %.lr.ph65, %._crit_edge61 - %.03764 = phi i32 [ %3, %.lr.ph65 ], [ %.lcssa51, %._crit_edge61 ] - %.03863 = phi ptr [ %9, %.lr.ph65 ], [ %99, %._crit_edge61 ] + %.03764 = phi i32 [ %3, %.lr.ph67 ], [ %.lcssa51, %._crit_edge61 ] + %.03863 = phi ptr [ %9, %.lr.ph67 ], [ %gep63, %._crit_edge61 ] %23 = load i32, ptr %.03863, align 4, !tbaa !38 %24 = icmp ugt i32 %23, -131073 %25 = add nsw i32 %23, 1 @@ -564,24 +566,23 @@ define hidden range(i32 0, 2) i32 @VP8RecordCoeffs(i32 noundef %0, ptr noundef r br i1 %.not43, label %._crit_edge61, label %79, !llvm.loop !48 ._crit_edge61: ; preds = %94, %68, %._crit_edge - %.sink77 = phi i64 [ 1, %._crit_edge ], [ 2, %68 ], [ 2, %94 ] + %.sink77 = phi ptr [ %invariant.gep, %._crit_edge ], [ %invariant.gep62, %68 ], [ %invariant.gep62, %94 ] %95 = sext i32 %.lcssa51 to i64 %96 = getelementptr inbounds [17 x i8], ptr @VP8EncBands, i64 0, i64 %95 %97 = load i8, ptr %96, align 1, !tbaa !8 %98 = zext i8 %97 to i64 - %.split = getelementptr inbounds nuw [3 x [11 x i32]], ptr %5, i64 %98 - %99 = getelementptr inbounds nuw [3 x [11 x i32]], ptr %.split, i64 0, i64 %.sink77 - %100 = load i32, ptr %10, align 4, !tbaa !40 - %.not = icmp sgt i32 %.lcssa51, %100 - br i1 %.not, label %._crit_edge66, label %22, !llvm.loop !49 - -._crit_edge66: ; preds = %._crit_edge61, %.preheader - %.038.lcssa = phi ptr [ %9, %.preheader ], [ %99, %._crit_edge61 ] + %.split = getelementptr inbounds nuw [3 x [11 x i32]], ptr %.sink77, i64 %98 + %99 = load i32, ptr %10, align 4, !tbaa !40 + %.not = icmp sgt i32 %.lcssa51, %99 + br i1 %.not, label %._crit_edge68, label %22, !llvm.loop !49 + +._crit_edge68: ; preds = %._crit_edge61, %.preheader + %.038.lcssa = phi ptr [ %9, %.preheader ], [ %gep63, %._crit_edge61 ] %.037.lcssa = phi i32 [ %3, %.preheader ], [ %.lcssa51, %._crit_edge61 ] %101 = icmp slt i32 %.037.lcssa, 16 br i1 %101, label %102, label %109 -102: ; preds = %._crit_edge66 +102: ; preds = %._crit_edge68 %103 = load i32, ptr %.038.lcssa, align 4, !tbaa !38 %104 = icmp ugt i32 %103, -131073 %105 = add nsw i32 %103, 1 @@ -592,8 +593,8 @@ define hidden range(i32 0, 2) i32 @VP8RecordCoeffs(i32 noundef %0, ptr noundef r store i32 %108, ptr %.038.lcssa, align 4, !tbaa !38 br label %109 -109: ; preds = %._crit_edge66, %102, %15 - %.0 = phi i32 [ 0, %15 ], [ 1, %102 ], [ 1, %._crit_edge66 ] +109: ; preds = %._crit_edge68, %102, %15 + %.0 = phi i32 [ 0, %15 ], [ 1, %101 ], [ 1, %._crit_edge68 ] ret i32 %.0 } diff --git a/bench/libwebp/optimized/vp8l_dec.ll b/bench/libwebp/optimized/vp8l_dec.ll index a9ca224f379..50bb25d1177 100644 --- a/bench/libwebp/optimized/vp8l_dec.ll +++ b/bench/libwebp/optimized/vp8l_dec.ll @@ -774,16 +774,15 @@ define internal fastcc void @VP8LClear(ptr noundef nonnull %0) unnamed_addr #1 { br i1 %14, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %1 - %15 = getelementptr i8, ptr %0, i64 296 + %15 = getelementptr inbounds nuw i8, ptr %0, i64 296 br label %16 16: ; preds = %.lr.ph, %16 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %16 ] - %.idx = mul nuw nsw i64 %indvars.iv, 24 - %17 = getelementptr i8, ptr %15, i64 %.idx - %18 = load ptr, ptr %17, align 8, !tbaa !59 - tail call void @WebPSafeFree(ptr noundef %18) #8 - store ptr null, ptr %17, align 8, !tbaa !59 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %15 ] + %gep = getelementptr inbounds nuw [4 x %struct.VP8LTransform], ptr %15, i64 0, i64 %indvars.iv + %16 = load ptr, ptr %gep, align 8, !tbaa !59 + tail call void @WebPSafeFree(ptr noundef %16) #8 + store ptr null, ptr %gep, align 8, !tbaa !59 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %19 = load i32, ptr %12, align 8, !tbaa !58 %20 = sext i32 %19 to i64 diff --git a/bench/lief/optimized/entropy.ll b/bench/lief/optimized/entropy.ll index bc86193338a..deed8a874b2 100644 --- a/bench/lief/optimized/entropy.ll +++ b/bench/lief/optimized/entropy.ll @@ -394,15 +394,14 @@ entropy_gather_internal.exit: ; preds = %._crit_edge.loopexi br i1 %67, label %.lr.ph78, label %._crit_edge79 .lr.ph78: ; preds = %.preheader - %68 = getelementptr i8, ptr %0, i64 48 + %68 = getelementptr inbounds nuw i8, ptr %0, i64 48 %wide.trip.count92 = zext nneg i32 %66 to i64 br label %69 69: ; preds = %.lr.ph78, %69 - %indvars.iv89 = phi i64 [ 0, %.lr.ph78 ], [ %indvars.iv.next90, %69 ] - %.idx = mul nuw nsw i64 %indvars.iv89, 40 - %70 = getelementptr i8, ptr %68, i64 %.idx - store i64 0, ptr %70, align 8, !tbaa !20 + %indvars.iv89 = phi i64 [ 0, %.lr.ph78 ], [ %indvars.iv.next90, %68 ] + %gep = getelementptr inbounds nuw [20 x %struct.mbedtls_entropy_source_state], ptr %68, i64 0, i64 %indvars.iv89 + store i64 0, ptr %gep, align 8, !tbaa !20 %indvars.iv.next90 = add nuw nsw i64 %indvars.iv89, 1 %exitcond93.not = icmp eq i64 %indvars.iv.next90, %wide.trip.count92 br i1 %exitcond93.not, label %._crit_edge79, label %69, !llvm.loop !25 diff --git a/bench/lief/optimized/oid.ll b/bench/lief/optimized/oid.ll index f0d35dbbe43..7a150314f57 100644 --- a/bench/lief/optimized/oid.ll +++ b/bench/lief/optimized/oid.ll @@ -1383,9 +1383,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/llama.cpp/optimized/log.ll b/bench/llama.cpp/optimized/log.ll index 7354994ff2a..15f986d14a9 100644 --- a/bench/llama.cpp/optimized/log.ll +++ b/bench/llama.cpp/optimized/log.ll @@ -331,7 +331,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 @@ -339,25 +339,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 } @@ -684,7 +685,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 @@ -692,7 +693,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 @@ -742,30 +743,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(i64 24, ptr nonnull %6) #24 br label %154 @@ -779,7 +781,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/lstring.ll b/bench/lua/optimized/lstring.ll index c5e5c8f280c..8d278a2af85 100644 --- a/bench/lua/optimized/lstring.ll +++ b/bench/lua/optimized/lstring.ll @@ -3,6 +3,9 @@ source_filename = "bench/lua/original/lstring.ll" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" target triple = "x86_64-pc-linux-gnu" +%union.UValue = type { %struct.TValue } +%struct.TValue = type { %union.Value, i8 } +%union.Value = type { ptr } %struct.NewExt = type { i8, ptr, i64, ptr } @.str = private unnamed_addr constant [18 x i8] c"not enough memory\00", align 1 @@ -774,15 +777,14 @@ define hidden ptr @luaS_newudata(ptr noundef %0, i64 noundef %1, i16 noundef zer br i1 %4, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %12 - %18 = getelementptr i8, ptr %14, i64 48 + %18 = getelementptr inbounds nuw i8, ptr %14, i64 48 %wide.trip.count = zext i16 %2 to i64 br label %19 19: ; preds = %.lr.ph, %19 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %19 ] - %.idx = shl nuw nsw i64 %indvars.iv, 4 - %20 = getelementptr i8, ptr %18, i64 %.idx - store i8 0, ptr %20, align 8, !tbaa !4 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %18 ] + %gep = getelementptr inbounds nuw [1 x %union.UValue], ptr %18, i64 0, i64 %indvars.iv + store i8 0, ptr %gep, 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 %._crit_edge, label %19 diff --git a/bench/luajit/optimized/lib_ffi.ll b/bench/luajit/optimized/lib_ffi.ll index 2bd203aa2b8..31fb9ec7d1a 100644 --- a/bench/luajit/optimized/lib_ffi.ll +++ b/bench/luajit/optimized/lib_ffi.ll @@ -1605,16 +1605,20 @@ 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 + %invariant.gep = getelementptr inbounds nuw i8, ptr %48, i64 4 + br label %.lr.ph + +.lr.ph: ; preds = %.lr.ph.preheader, %65 + %58 = phi i32 [ %69, %65 ], [ %56, %.lr.ph.preheader ] + %59 = phi i64 [ %67, %65 ], [ %54, %.lr.ph.preheader ] + %.02635 = phi i32 [ %.127, %65 ], [ 0, %.lr.ph.preheader ] %60 = and i32 %58, 16711680 %61 = icmp eq i32 %60, 65536 br i1 %61, label %62, label %66 62: ; preds = %.lr.ph - %63 = getelementptr inbounds nuw %struct.CType, ptr %48, i64 %59, i32 1 + %63 = getelementptr inbounds nuw %struct.CType, ptr %invariant.gep, i64 %59 %64 = load i32, ptr %63, align 4, !tbaa !58 %65 = or i32 %64, %.02635 br label %66 @@ -1629,9 +1633,9 @@ ffi_clib_index.exit: ; preds = %20 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 ] + %.026.lcssa = phi i32 [ 0, %.preheader ], [ %.127, %65 ] + %.lcssa34 = phi ptr [ %55, %.preheader ], [ %69, %65 ] + %.lcssa = phi i32 [ %56, %.preheader ], [ %70, %65 ] %72 = or i32 %.lcssa, %.026.lcssa %73 = and i32 %72, 33554432 %.not.not = icmp eq i32 %73, 0 diff --git a/bench/luajit/optimized/lj_opt_loop.ll b/bench/luajit/optimized/lj_opt_loop.ll index 2a3ae8ee8dd..bb15c437e7e 100644 --- a/bench/luajit/optimized/lj_opt_loop.ll +++ b/bench/luajit/optimized/lj_opt_loop.ll @@ -144,39 +144,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 @@ -194,7 +197,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 @@ -258,7 +261,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 @@ -272,7 +275,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 @@ -328,7 +331,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 @@ -601,7 +604,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 @@ -625,7 +628,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 @@ -828,7 +831,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/lvgl/optimized/lv_draw_sw_mask_rect.ll b/bench/lvgl/optimized/lv_draw_sw_mask_rect.ll index 3b31c4013d6..b0b77ab7c12 100644 --- a/bench/lvgl/optimized/lv_draw_sw_mask_rect.ll +++ b/bench/lvgl/optimized/lv_draw_sw_mask_rect.ll @@ -123,8 +123,8 @@ define void @lv_draw_sw_mask_rect(ptr noundef %0, ptr noundef %1) local_unnamed_ %78 = icmp eq i32 %69, 0 br i1 %78, label %90, label %.preheader.us -.preheader.us: ; preds = %71, %89 - %indvars.iv = phi i64 [ %indvars.iv.next, %89 ], [ 0, %71 ] +.preheader.us: ; preds = %.preheader.us, %89 + %indvars.iv = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next, %89 ] %79 = getelementptr inbounds nuw i8, ptr %62, i64 %indvars.iv %80 = load i8, ptr %79, align 1, !tbaa !34 %.not65.us = icmp eq i8 %80, -1 @@ -132,7 +132,7 @@ define void @lv_draw_sw_mask_rect(ptr noundef %0, ptr noundef %1) local_unnamed_ 81: ; preds = %.preheader.us %82 = zext i8 %80 to i16 - %83 = getelementptr inbounds nuw %struct.lv_color32_t, ptr %77, i64 %indvars.iv, i32 3 + %83 = getelementptr inbounds nuw %struct.lv_color32_t, ptr %invariant.gep.us, i64 %indvars.iv %84 = load i8, ptr %83, align 1, !tbaa !35 %85 = zext i8 %84 to i16 %86 = mul nuw i16 %85, %82 @@ -156,6 +156,10 @@ define void @lv_draw_sw_mask_rect(ptr noundef %0, ptr noundef %1) local_unnamed_ %.not.us.not = icmp slt i32 %.06268.us, %92 br i1 %.not.us.not, label %.lr.ph69.split.us, label %._crit_edge, !llvm.loop !39 +.preheader.us: ; preds = %71 + %invariant.gep.us = getelementptr inbounds nuw i8, ptr %77, i64 3 + br label %79 + .lr.ph69.split: ; preds = %.lr.ph69, %.preheader %.06268 = phi i32 [ %105, %.preheader ], [ %64, %.lr.ph69 ] call void @lv_memset(ptr noundef %62, i8 noundef zeroext -1, i64 noundef %61) #4 diff --git a/bench/meilisearch-rs/optimized/3m3x2x3yg1gvj93u.ll b/bench/meilisearch-rs/optimized/3m3x2x3yg1gvj93u.ll index 123f11896d0..113a55bd79e 100644 --- a/bench/meilisearch-rs/optimized/3m3x2x3yg1gvj93u.ll +++ b/bench/meilisearch-rs/optimized/3m3x2x3yg1gvj93u.ll @@ -3654,7 +3654,7 @@ _ZN9hashbrown3raw5inner13RawTableInner25find_insert_slot_in_group17hd0a8816f9dc6 124: ; preds = %119 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h9b1935f87e96afeaE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %1) - to label %147 unwind label %125, !noalias !961 + to label %148 unwind label %125, !noalias !961 125: ; preds = %124 %126 = landingpad { ptr, i32 } @@ -3686,10 +3686,11 @@ _ZN9hashbrown3raw5inner13RawTableInner25find_insert_slot_in_group17hd0a8816f9dc6 134: ; preds = %76 %.val = load ptr, ptr %10, align 8, !nonnull !9, !noundef !9 - %135 = getelementptr inbounds [0 x { { { { i64, ptr, {} }, i64 } }, { i64, [8 x i64] }, i64 }], ptr %.val, i64 0, i64 %.val2.i.i.i.i, i32 1 - %136 = getelementptr inbounds nuw i8, ptr %0, i64 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %136, ptr noundef nonnull align 8 dereferenceable(72) %135, i64 72, i1 false) - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %135, ptr noundef nonnull align 8 dereferenceable(72) %4, i64 72, i1 false) + %135 = getelementptr inbounds [0 x { { { { i64, ptr, {} }, i64 } }, { i64, [8 x i64] }, i64 }], ptr %.val, i64 0, i64 %.val2.i.i.i.i + %136 = getelementptr inbounds nuw i8, ptr %135, i64 24 + %137 = getelementptr inbounds nuw i8, ptr %0, i64 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %137, ptr noundef nonnull align 8 dereferenceable(72) %136, i64 72, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %136, 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(i64 24, 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) @@ -3735,7 +3736,7 @@ _ZN9hashbrown3raw5inner13RawTableInner25find_insert_slot_in_group17hd0a8816f9dc6 %154 = 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 %157 unwind label %155 + to label %158 unwind label %155 155: ; preds = %157, %153 %156 = landingpad { ptr, i32 } @@ -3744,7 +3745,7 @@ _ZN9hashbrown3raw5inner13RawTableInner25find_insert_slot_in_group17hd0a8816f9dc6 unreachable .critedge: ; preds = %133, %125, %157 - %eh.lpad-body14 = phi { ptr, i32 } [ %154, %157 ], [ %130, %133 ], [ %126, %125 ] + %eh.lpad-body14 = phi { ptr, i32 } [ %154, %158 ], [ %130, %133 ], [ %126, %125 ] resume { ptr, i32 } %eh.lpad-body14 157: ; preds = %153 diff --git a/bench/memcached/optimized/slabs.ll b/bench/memcached/optimized/slabs.ll index 05f0a4508da..5e19a3a8a74 100644 --- a/bench/memcached/optimized/slabs.ll +++ b/bench/memcached/optimized/slabs.ll @@ -468,7 +468,7 @@ alloc_large_chunk.exit: ; preds = %41 store i32 %97, ptr %99, align 8, !tbaa !4 %100 = load i32, ptr getelementptr inbounds nuw (i8, ptr @settings, i64 124), align 4, !tbaa !37 %101 = sdiv i32 %100, %97 - %102 = getelementptr inbounds nuw [64 x %struct.slabclass_t], ptr @slabclass, i64 0, i64 %98, i32 1 + %102 = getelementptr inbounds nuw i8, ptr %99, i64 4 store i32 %101, ptr %102, align 4, !tbaa !38 %103 = load i32, ptr getelementptr inbounds nuw (i8, ptr @settings, i64 32), align 8, !tbaa !35 %104 = icmp sgt i32 %103, 1 @@ -1432,8 +1432,8 @@ define dso_local range(i32 -2147483647, -2147483648) i32 @slabs_pick_any_for_rea br label %3 3: ; preds = %1, %15 - %.07 = phi i32 [ 64, %1 ], [ %16, %15 ] - %spec.store.select56 = phi i32 [ %slabs_pick_any_for_reassign.cur.promoted, %1 ], [ %spec.store.select, %15 ] + %.07 = phi i32 [ 64, %1 ], [ %16, %14 ] + %spec.store.select56 = phi i32 [ %slabs_pick_any_for_reassign.cur.promoted, %1 ], [ %spec.store.select, %14 ] %4 = add nsw i32 %spec.store.select56, 1 %5 = icmp sgt i32 %spec.store.select56, 63 %spec.store.select = select i1 %5, i32 1, i32 %4 @@ -1442,7 +1442,7 @@ define dso_local range(i32 -2147483647, -2147483648) i32 @slabs_pick_any_for_rea 7: ; preds = %3 %8 = sext i32 %spec.store.select to i64 - %9 = getelementptr inbounds [64 x %struct.slabclass_t], ptr @slabclass, i64 0, i64 %8, i32 4 + %9 = getelementptr [64 x %struct.slabclass_t], ptr getelementptr inbounds nuw (i8, ptr @slabclass, i64 20), i64 0, i64 %8 %10 = load i32, ptr %9, align 4, !tbaa !13 %11 = icmp ugt i32 %10, 1 br i1 %11, label %12, label %15 @@ -1464,7 +1464,7 @@ define dso_local range(i32 -2147483647, -2147483648) i32 @slabs_pick_any_for_rea br label %20 20: ; preds = %18, %12 - %.04 = phi i32 [ %14, %12 ], [ -1, %18 ] + %.04 = phi i32 [ %14, %11 ], [ -1, %17 ] ret i32 %.04 } @@ -1472,10 +1472,11 @@ define dso_local range(i32 -2147483647, -2147483648) i32 @slabs_pick_any_for_rea define dso_local i32 @slabs_page_count(i32 noundef %0) local_unnamed_addr #4 { %2 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull @slabs_lock) #21 %3 = zext i32 %0 to i64 - %4 = getelementptr inbounds nuw [64 x %struct.slabclass_t], ptr @slabclass, i64 0, i64 %3, i32 4 - %5 = load i32, ptr %4, align 4, !tbaa !13 - %6 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull @slabs_lock) #21 - ret i32 %5 + %4 = getelementptr inbounds nuw [64 x %struct.slabclass_t], ptr @slabclass, i64 0, i64 %3 + %5 = getelementptr inbounds nuw i8, ptr %4, i64 20 + %6 = load i32, ptr %5, align 4, !tbaa !13 + %7 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull @slabs_lock) #21 + ret i32 %6 } ; Function Attrs: nounwind uwtable diff --git a/bench/mimalloc/optimized/heap.ll b/bench/mimalloc/optimized/heap.ll index 18f82d8fec9..84bad591b4f 100644 --- a/bench/mimalloc/optimized/heap.ll +++ b/bench/mimalloc/optimized/heap.ll @@ -9,6 +9,8 @@ target triple = "x86_64-pc-linux-gnu" %struct.mi_memid_s = type { %union.anon, i8, i8, i8, i32 } %union.anon = type { %struct.mi_memid_os_info } %struct.mi_memid_os_info = type { ptr, i64 } +%struct.mi_page_s = type { i8, i8, i16, i16, %union.mi_page_flags_s, i8, ptr, ptr, i16, i8, i8, i64, ptr, i64, i64, ptr, ptr } +%union.mi_page_flags_s = type { i8 } %struct.mi_heap_area_ex_s = type { %struct.mi_heap_area_s, ptr } %struct.mi_heap_area_s = type { ptr, i64, i64, i64, i64, i64, i32 } @@ -877,9 +879,9 @@ define hidden zeroext i1 @mi_heap_contains_block(ptr noundef readnone captures(a %20 = getelementptr inbounds nuw i8, ptr %10, i64 144 %21 = load i64, ptr %20, align 16, !tbaa !61 %22 = lshr i64 %19, %21 - %.idx.i = mul nuw nsw i64 %22, 80 - %23 = getelementptr i8, ptr %12, i64 216 - %24 = getelementptr i8, ptr %23, i64 %.idx.i + %23 = getelementptr inbounds nuw i8, ptr %12, i64 160 + %23 = getelementptr inbounds nuw [1 x %struct.mi_page_s], ptr %23, i64 0, i64 %22 + %24 = getelementptr inbounds nuw i8, ptr %23, i64 56 %25 = load atomic i64, ptr %24 monotonic, align 8 %26 = inttoptr i64 %25 to ptr %27 = icmp eq ptr %0, %26 diff --git a/bench/mimalloc/optimized/segment.ll b/bench/mimalloc/optimized/segment.ll index 01299b2308d..f739f625a62 100644 --- a/bench/mimalloc/optimized/segment.ll +++ b/bench/mimalloc/optimized/segment.ll @@ -761,21 +761,20 @@ mi_segment_raw_page_size.exit.i: ; preds = %108, %106 br label %116 116: ; preds = %116, %.lr.ph.i11 - %.023.i = phi i64 [ 0, %.lr.ph.i11 ], [ %121, %116 ] - %.02022.i = phi i64 [ 0, %.lr.ph.i11 ], [ %spec.select.i, %116 ] - %.idx.i = mul nuw nsw i64 %.023.i, 80 - %117 = getelementptr i8, ptr %115, i64 %.idx.i - %118 = load i8, ptr %117, align 1 - %119 = and i8 %118, 2 - %.not.i12 = icmp eq i8 %119, 0 - %120 = select i1 %.not.i12, i64 0, i64 %112 - %spec.select.i = add i64 %120, %.02022.i - %121 = add nuw i64 %.023.i, 1 - %exitcond.not.i = icmp eq i64 %121, %114 - br i1 %exitcond.not.i, label %mi_segment_os_free.exit, label %116, !llvm.loop !64 - -mi_segment_os_free.exit: ; preds = %116, %mi_segment_raw_page_size.exit.i - %.020.lcssa.i = phi i64 [ 0, %mi_segment_raw_page_size.exit.i ], [ %spec.select.i, %116 ] + %.023.i = phi i64 [ 0, %.lr.ph.i11 ], [ %119, %115 ] + %.02022.i = phi i64 [ 0, %.lr.ph.i11 ], [ %spec.select.i, %115 ] + %gep.i = getelementptr [1 x %struct.mi_page_s], ptr %115, i64 0, i64 %.023.i + %116 = load i8, ptr %gep.i, align 1 + %117 = and i8 %116, 2 + %.not.i12 = icmp eq i8 %117, 0 + %118 = select i1 %.not.i12, i64 0, i64 %112 + %spec.select.i = add i64 %118, %.02022.i + %spec.select.i = add nuw i64 %.023.i, 1 + %exitcond.not.i = icmp eq i64 %spec.select.i, %114 + br i1 %exitcond.not.i, label %mi_segment_os_free.exit, label %115, !llvm.loop !64 + +mi_segment_os_free.exit: ; preds = %115, %mi_segment_raw_page_size.exit.i + %.020.lcssa.i = phi i64 [ 0, %mi_segment_raw_page_size.exit.i ], [ %spec.select.i, %115 ] tail call void @_mi_arena_free(ptr noundef nonnull %0, i64 noundef %73, i64 noundef %.020.lcssa.i, ptr noundef nonnull byval(%struct.mi_memid_s) align 8 %0) #8 br label %122 diff --git a/bench/mini-lsm-rs/optimized/4wwk8tlxvknqh1t8.ll b/bench/mini-lsm-rs/optimized/4wwk8tlxvknqh1t8.ll index 6a753707625..7740392e2b1 100644 --- a/bench/mini-lsm-rs/optimized/4wwk8tlxvknqh1t8.ll +++ b/bench/mini-lsm-rs/optimized/4wwk8tlxvknqh1t8.ll @@ -10972,8 +10972,9 @@ define void @_ZN13mini_lsm_mvcc7compact6tiered26TieredCompactionController24gene br i1 %.not94, label %.._crit_edge_crit_edge, label %.lr.ph .lr.ph: ; preds = %27 - %.not110.not = icmp ugt i64 %19, 1 - br i1 %.not110.not, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h65dbc4d2c55c6c47E.exit", label %35, !prof !1517 + %invariant.gep = getelementptr i8, ptr %.pre, i64 24 + %.not114.not = icmp ugt i64 %19, 1 + br i1 %.not114.not, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h65dbc4d2c55c6c47E.exit", label %34, !prof !1517 29: ; preds = %17 store i64 -9223372036854775808, ptr %0, align 8 @@ -10987,7 +10988,7 @@ define void @_ZN13mini_lsm_mvcc7compact6tiered26TieredCompactionController24gene %.sroa.01.088 = phi i64 [ %31, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h65dbc4d2c55c6c47E.exit" ], [ 0, %.lr.ph ] %.087 = phi i64 [ %34, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h65dbc4d2c55c6c47E.exit" ], [ 0, %.lr.ph ] %31 = add nuw i64 %.sroa.01.088, 1 - %32 = getelementptr inbounds [0 x { i64, { { i64, ptr }, i64 } }], ptr %.pre, i64 0, i64 %.sroa.01.088, i32 1, i32 1 + %32 = getelementptr [0 x { i64, { { i64, ptr }, i64 } }], ptr %invariant.gep, i64 0, i64 %.sroa.01.088 %33 = load i64, ptr %32, align 8, !noundef !4 %34 = add i64 %33, %.087 %exitcond.not = icmp eq i64 %31, %28 @@ -11000,7 +11001,8 @@ define void @_ZN13mini_lsm_mvcc7compact6tiered26TieredCompactionController24gene .._crit_edge_crit_edge: ; preds = %27, %._crit_edge.loopexit %.0.lcssa = phi double [ %30, %._crit_edge.loopexit ], [ 0.000000e+00, %27 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) - %36 = getelementptr inbounds [0 x { i64, { { i64, ptr }, i64 } }], ptr %.pre, i64 0, i64 %28, i32 1, i32 1 + %36 = getelementptr inbounds [0 x { i64, { { i64, ptr }, i64 } }], ptr %.pre, i64 0, i64 %28 + %36 = getelementptr inbounds nuw i8, ptr %35, i64 24 %37 = load i64, ptr %36, align 8, !noundef !4 %38 = uitofp i64 %37 to double %39 = fdiv double %.0.lcssa, %38 @@ -11021,6 +11023,7 @@ define void @_ZN13mini_lsm_mvcc7compact6tiered26TieredCompactionController24gene br i1 %.not94, label %._crit_edge93, label %.lr.ph92 .lr.ph92: ; preds = %45 + %invariant.gep94 = getelementptr i8, ptr %.pre, i64 24 %51 = getelementptr inbounds nuw i8, ptr %1, i64 24 %52 = load i64, ptr %51, align 8 br label %68 @@ -11083,8 +11086,8 @@ define void @_ZN13mini_lsm_mvcc7compact6tiered26TieredCompactionController24gene br label %93 68: ; preds = %.lr.ph92, %82 - %.sroa.014.090 = phi i64 [ 0, %.lr.ph92 ], [ %69, %82 ] - %.05589 = phi i64 [ 0, %.lr.ph92 ], [ %73, %82 ] + %.sroa.014.090 = phi i64 [ 0, %.lr.ph92 ], [ %69, %80 ] + %.05589 = phi i64 [ 0, %.lr.ph92 ], [ %73, %80 ] %69 = add nuw i64 %.sroa.014.090, 1 %exitcond107.not = icmp eq i64 %.sroa.014.090, %19 br i1 %exitcond107.not, label %70, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h65dbc4d2c55c6c47E.exit68", !prof !1527 @@ -11094,7 +11097,7 @@ define void @_ZN13mini_lsm_mvcc7compact6tiered26TieredCompactionController24gene unreachable "_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h65dbc4d2c55c6c47E.exit68": ; preds = %68 - %71 = getelementptr inbounds [0 x { i64, { { i64, ptr }, i64 } }], ptr %.pre, i64 0, i64 %.sroa.014.090, i32 1, i32 1 + %71 = getelementptr [0 x { i64, { { i64, ptr }, i64 } }], ptr %invariant.gep94, i64 0, i64 %.sroa.014.090 %72 = load i64, ptr %71, align 8, !noundef !4 %73 = add i64 %72, %.05589 %exitcond108.not = icmp eq i64 %.sroa.014.090, %28 @@ -11105,7 +11108,7 @@ define void @_ZN13mini_lsm_mvcc7compact6tiered26TieredCompactionController24gene unreachable "_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h65dbc4d2c55c6c47E.exit69": ; preds = %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h65dbc4d2c55c6c47E.exit68" - %75 = getelementptr inbounds [0 x { i64, { { i64, ptr }, i64 } }], ptr %.pre, i64 0, i64 %69, i32 1, i32 1 + %75 = getelementptr [0 x { i64, { { i64, ptr }, i64 } }], ptr %invariant.gep94, i64 0, i64 %69 %76 = load i64, ptr %75, align 8, !noundef !4 %77 = uitofp i64 %73 to double %78 = uitofp i64 %76 to double diff --git a/bench/mold/optimized/dynamic_link.ll b/bench/mold/optimized/dynamic_link.ll index f13d1a9daf0..36616b77d84 100644 --- a/bench/mold/optimized/dynamic_link.ll +++ b/bench/mold/optimized/dynamic_link.ll @@ -104,6 +104,10 @@ define noundef zeroext i1 @_ZN3tbb6detail2r112dynamic_linkEPKcPKNS1_23dynamic_li %.not2934.i.i = icmp eq i64 %2, 0 br i1 %.not2934.i.i, label %.thread, label %.lr.ph.i.i +.critedge30.preheader40.i.i: ; preds = %16 + %invariant.gep.i.i = getelementptr inbounds nuw i8, ptr %1, i64 8 + br label %.critedge30.i.i + .lr.ph.i.i: ; preds = %12, %16 %.02435.i.i = phi i64 [ %18, %16 ], [ 0, %12 ] %13 = getelementptr inbounds nuw %"struct.tbb::detail::r1::dynamic_link_descriptor", ptr %1, i64 %.02435.i.i @@ -117,13 +121,13 @@ define noundef zeroext i1 @_ZN3tbb6detail2r112dynamic_linkEPKcPKNS1_23dynamic_li store ptr %15, ptr %17, align 8, !tbaa !11 %18 = add nuw nsw i64 %.02435.i.i, 1 %exitcond.not.i.i = icmp eq i64 %18, %2 - br i1 %exitcond.not.i.i, label %.critedge30.i.i, label %.lr.ph.i.i, !llvm.loop !12 + br i1 %exitcond.not.i.i, label %.critedge30.preheader40.i.i, label %.lr.ph.i.i, !llvm.loop !12 -.critedge30.i.i: ; preds = %16, %.critedge30.i.i - %.037.i.i = phi i64 [ %23, %.critedge30.i.i ], [ 0, %16 ] +.critedge30.i.i: ; preds = %.critedge30.i.i, %.critedge30.preheader40.i.i + %.037.i.i = phi i64 [ %23, %.critedge30.i.i ], [ 0, %.critedge30.preheader40.i.i ] %19 = getelementptr inbounds nuw [20 x ptr], ptr %6, i64 0, i64 %.037.i.i %20 = load ptr, ptr %19, align 8, !tbaa !11 - %21 = getelementptr inbounds nuw %"struct.tbb::detail::r1::dynamic_link_descriptor", ptr %1, i64 %.037.i.i, i32 1 + %21 = getelementptr inbounds nuw %"struct.tbb::detail::r1::dynamic_link_descriptor", ptr %invariant.gep.i.i, i64 %.037.i.i %22 = load ptr, ptr %21, align 8, !tbaa !14 store ptr %20, ptr %22, align 8, !tbaa !11 %23 = add nuw nsw i64 %.037.i.i, 1 @@ -153,8 +157,9 @@ _ZN3tbb6detail2r1L15resolve_symbolsEPvPKNS1_23dynamic_link_descriptorEm.exit.thr br i1 %.not22, label %_ZN3tbb6detail2r1L16weak_symbol_linkEPKNS1_23dynamic_link_descriptorEm.exit, label %28 28: ; preds = %26 - %29 = icmp eq i64 %2, 0 - br i1 %29, label %_ZN3tbb6detail2r1L16weak_symbol_linkEPKNS1_23dynamic_link_descriptorEm.exit, label %.lr.ph.i + %invariant.gep.i = getelementptr i8, ptr %1, i64 16 + %28 = icmp eq i64 %2, 0 + br i1 %28, label %_ZN3tbb6detail2r1L16weak_symbol_linkEPKNS1_23dynamic_link_descriptorEm.exit, label %.lr.ph.i 30: ; preds = %.lr.ph.i %31 = add nuw i64 %.01421.i, 1 @@ -162,14 +167,14 @@ _ZN3tbb6detail2r1L15resolve_symbolsEPvPKNS1_23dynamic_link_descriptorEm.exit.thr br i1 %exitcond.not.i, label %.lr.ph23.i, label %.lr.ph.i, !llvm.loop !16 .lr.ph.i: ; preds = %28, %30 - %.01421.i = phi i64 [ %31, %30 ], [ 0, %28 ] - %32 = getelementptr inbounds nuw %"struct.tbb::detail::r1::dynamic_link_descriptor", ptr %1, i64 %.01421.i, i32 2 + %.01421.i = phi i64 [ %31, %29 ], [ 0, %27 ] + %32 = getelementptr %"struct.tbb::detail::r1::dynamic_link_descriptor", ptr %invariant.gep.i, i64 %.01421.i %33 = load ptr, ptr %32, align 8, !tbaa !17 %.not.i23 = icmp eq ptr %33, null br i1 %.not.i23, label %_ZN3tbb6detail2r1L16weak_symbol_linkEPKNS1_23dynamic_link_descriptorEm.exit, label %30 .lr.ph23.i: ; preds = %30, %.lr.ph23.i - %.022.i = phi i64 [ %39, %.lr.ph23.i ], [ 0, %30 ] + %.022.i = phi i64 [ %39, %.lr.ph23.i ], [ 0, %29 ] %34 = getelementptr inbounds nuw %"struct.tbb::detail::r1::dynamic_link_descriptor", ptr %1, i64 %.022.i %35 = getelementptr inbounds nuw i8, ptr %34, i64 16 %36 = load ptr, ptr %35, align 8, !tbaa !17 @@ -185,7 +190,7 @@ _ZN3tbb6detail2r1L15resolve_symbolsEPvPKNS1_23dynamic_link_descriptorEm.exit.thr br label %_ZN3tbb6detail2r1L16weak_symbol_linkEPKNS1_23dynamic_link_descriptorEm.exit _ZN3tbb6detail2r1L16weak_symbol_linkEPKNS1_23dynamic_link_descriptorEm.exit: ; preds = %.lr.ph.i, %.lr.ph23.i, %26, %40, %.thread, %28 - %.017 = phi i1 [ true, %28 ], [ true, %.thread ], [ true, %40 ], [ false, %26 ], [ true, %.lr.ph23.i ], [ false, %.lr.ph.i ] + %.017 = phi i1 [ true, %27 ], [ true, %.thread ], [ true, %38 ], [ false, %25 ], [ true, %.lr.ph23.i ], [ false, %.lr.ph.i ] ret i1 %.017 } diff --git a/bench/mold/optimized/thread_dispatcher.ll b/bench/mold/optimized/thread_dispatcher.ll index 003acca365e..12d47bc4995 100644 --- a/bench/mold/optimized/thread_dispatcher.ll +++ b/bench/mold/optimized/thread_dispatcher.ll @@ -631,8 +631,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 [3 x %"class.tbb::detail::r1::intrusive_list"], ptr %31, i64 0, 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 @@ -726,8 +725,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 [3 x %"class.tbb::detail::r1::intrusive_list"], ptr %3, i64 0, 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/nghttp2/optimized/nghttp2_map.ll b/bench/nghttp2/optimized/nghttp2_map.ll index 13cffd70b33..353fb433016 100644 --- a/bench/nghttp2/optimized/nghttp2_map.ll +++ b/bench/nghttp2/optimized/nghttp2_map.ll @@ -60,23 +60,24 @@ define hidden i32 @nghttp2_map_each(ptr noundef readonly captures(none) %0, ptr 13: ; preds = %7, %20 %.01316 = phi i64 [ 0, %7 ], [ %21, %20 ] %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 = %20, %19, %3 + %.0 = phi i32 [ 0, %3 ], [ 0, %20 ], [ %20, %19 ] ret i32 %.0 } @@ -390,10 +391,15 @@ 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 + %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.preheader + +.lr.ph.preheader.preheader: ; preds = %6 + %invariant.gep = getelementptr i8, ptr %16, i64 4 + br label %.lr.ph.preheader .lr.ph: ; preds = %27 %20 = add nuw nsw i64 %.0151924, 1 @@ -402,11 +408,11 @@ define hidden ptr @nghttp2_map_find(ptr noundef readonly captures(none) %0, i32 %.not = icmp samesign ult i64 %.0151924, %22 br i1 %.not, label %.lr.ph.preheader, label %.loopexit -.lr.ph.preheader: ; preds = %6, %.lr.ph - %.0161825 = phi i64 [ %29, %.lr.ph ], [ %13, %6 ] - %.0151924 = 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 %.0161825, i32 1 +.lr.ph.preheader: ; preds = %.lr.ph.preheader.preheader, %.lr.ph + %.0161825 = phi i64 [ %29, %.lr.ph ], [ %13, %.lr.ph.preheader.preheader ] + %.0151924 = phi i64 [ %20, %.lr.ph ], [ 0, %.lr.ph.preheader.preheader ] + %23 = phi ptr [ %32, %.lr.ph ], [ %19, %.lr.ph.preheader.preheader ] + %24 = getelementptr %struct.nghttp2_map_bucket, ptr %invariant.gep, i64 %.0161825 %25 = load i32, ptr %24, align 4, !tbaa !20 %26 = icmp eq i32 %25, %1 br i1 %26, label %.loopexit, label %27 diff --git a/bench/nghttp2/optimized/nghttp2_submit.ll b/bench/nghttp2/optimized/nghttp2_submit.ll index dd1b555cd1c..2137f192661 100644 --- a/bench/nghttp2/optimized/nghttp2_submit.ll +++ b/bench/nghttp2/optimized/nghttp2_submit.ll @@ -577,17 +577,21 @@ define i32 @nghttp2_submit_origin(ptr noundef %0, i8 noundef zeroext %1, ptr nou %.not68 = icmp eq i64 %3, 0 br i1 %.not68, label %41, label %.preheader -.preheader: ; preds = %8, %.preheader - %.071 = phi i64 [ %12, %.preheader ], [ 0, %8 ] - %.06070 = phi i64 [ %11, %.preheader ], [ 0, %8 ] - %9 = getelementptr inbounds nuw %struct.nghttp2_origin_entry, ptr %2, i64 %.071, i32 1 - %10 = load i64, ptr %9, align 8, !tbaa !48 +.preheader: ; preds = %8 + %invariant.gep = getelementptr i8, ptr %2, i64 8 + br label %9 + +9:; preds = %.preheader, %9 + %.071 = phi i64 [ 0, %.preheader ], [ %12, %9 ] + %.06070 = phi i64 [ 0, %.preheader ], [ %11, %9 ] + %gep = getelementptr %struct.nghttp2_origin_entry, ptr %invariant.gep, i64 %.071 + %10 = load i64, ptr %gep, align 8, !tbaa !48 %11 = add i64 %10, %.06070 %12 = add nuw i64 %.071, 1 %exitcond.not = icmp eq i64 %12, %3 - br i1 %exitcond.not, label %13, label %.preheader, !llvm.loop !50 + br i1 %exitcond.not, label %13, label %9, !llvm.loop !50 -13: ; preds = %.preheader +13: ; preds = %9 %14 = shl i64 %3, 1 %15 = add i64 %11, %14 %16 = icmp ugt i64 %15, 16384 diff --git a/bench/nix/optimized/add-to-store.ll b/bench/nix/optimized/add-to-store.ll index 856a3907923..7afa898f603 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/mempool_multiple.ll b/bench/nuttx/optimized/mempool_multiple.ll index 261c82352ae..00fe4af5af6 100644 --- a/bench/nuttx/optimized/mempool_multiple.ll +++ b/bench/nuttx/optimized/mempool_multiple.ll @@ -320,7 +320,7 @@ define internal ptr @mempool_multiple_alloc_callback(ptr noundef %0, i64 noundef 14: ; preds = %2 %15 = tail call i32 @nxrmutex_unlock(ptr noundef nonnull %5) #6 - br label %55 + br label %57 16: ; preds = %2 %17 = getelementptr inbounds nuw i8, ptr %4, i64 152 @@ -358,26 +358,28 @@ define internal ptr @mempool_multiple_alloc_callback(ptr noundef %0, i64 noundef %40 = load ptr, ptr %24, align 8 %41 = getelementptr inbounds ptr, ptr %40, i64 %21 %42 = load ptr, ptr %41, align 8 - %43 = getelementptr inbounds %struct.mpool_dict_s, ptr %42, i64 %23, i32 1 - store ptr %12, ptr %43, align 8 - %44 = load i64, ptr %9, align 8 - %45 = add i64 %44, %1 - %46 = load ptr, ptr %24, align 8 - %47 = getelementptr inbounds ptr, ptr %46, i64 %21 - %48 = load ptr, ptr %47, align 8 - %49 = getelementptr inbounds %struct.mpool_dict_s, ptr %48, i64 %23, i32 2 - store i64 %45, ptr %49, align 8 - %50 = load i64, ptr %17, align 8 - %51 = add i64 %50, 1 - store i64 %51, ptr %17, align 8 - store i64 %50, ptr %12, align 8 - %52 = tail call i32 @nxrmutex_unlock(ptr noundef nonnull %5) #6 - %53 = load i64, ptr %9, align 8 - %54 = getelementptr inbounds i8, ptr %12, i64 %53 - br label %55 - -55: ; preds = %37, %14 - %.0 = phi ptr [ null, %14 ], [ %54, %37 ] + %43 = getelementptr inbounds %struct.mpool_dict_s, ptr %42, i64 %23 + %44 = getelementptr inbounds nuw i8, ptr %43, i64 8 + store ptr %12, ptr %44, align 8 + %45 = load i64, ptr %9, align 8 + %46 = add i64 %45, %1 + %47 = load ptr, ptr %24, align 8 + %48 = getelementptr inbounds ptr, ptr %47, i64 %21 + %49 = load ptr, ptr %48, align 8 + %50 = getelementptr inbounds %struct.mpool_dict_s, ptr %49, i64 %23 + %51 = getelementptr inbounds nuw i8, ptr %50, i64 16 + store i64 %46, ptr %51, align 8 + %52 = load i64, ptr %17, align 8 + %53 = add i64 %52, 1 + store i64 %53, ptr %17, align 8 + store i64 %52, ptr %12, align 8 + %54 = tail call i32 @nxrmutex_unlock(ptr noundef nonnull %5) #6 + %55 = load i64, ptr %9, align 8 + %56 = getelementptr inbounds i8, ptr %12, i64 %55 + br label %57 + +57: ; preds = %37, %14 + %.0 = phi ptr [ null, %14 ], [ %56, %37 ] ret ptr %.0 } diff --git a/bench/nuttx/optimized/mm_malloc.ll b/bench/nuttx/optimized/mm_malloc.ll index 4b68804584a..8c8341dd735 100644 --- a/bench/nuttx/optimized/mm_malloc.ll +++ b/bench/nuttx/optimized/mm_malloc.ll @@ -3,6 +3,8 @@ source_filename = "bench/nuttx/original/mm_malloc.ll" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" target triple = "x86_64-pc-linux-gnu" +%struct.mm_freenode_s = type { i64, i64, ptr, ptr } + ; Function Attrs: nounwind allocsize(1) uwtable define noalias noundef ptr @mm_malloc(ptr noundef %0, i64 noundef %1) local_unnamed_addr #0 { %3 = alloca i64, align 8 @@ -43,33 +45,30 @@ free_delaylist.exit: ; preds = %.lr.ph.i, %up_irq_r 13: ; preds = %free_delaylist.exit %14 = call i32 @mm_lock(ptr noundef nonnull %0) #4 %15 = call i32 @mm_size2ndx(i64 noundef %11) #4 - %16 = sext i32 %15 to i64 - %.idx = shl nsw i64 %16, 5 - %17 = getelementptr i8, ptr %0, i64 96 - %18 = getelementptr i8, ptr %17, i64 %.idx - %.04861 = load ptr, ptr %18, align 8 - %.not62 = icmp eq ptr %.04861, null - br i1 %.not62, label %.thread, label %.lr.ph - -.lr.ph: ; preds = %13, %22 - %.04863 = phi ptr [ %.048, %22 ], [ %.04861, %13 ] - %19 = getelementptr inbounds nuw i8, ptr %.04863, i64 8 - %20 = load i64, ptr %19, align 8 - %21 = and i64 %20, -4 - %.not57 = icmp ult i64 %21, %11 - br i1 %.not57, label %22, label %24 - -22: ; preds = %.lr.ph - %23 = getelementptr inbounds nuw i8, ptr %.04863, i64 16 - %.048 = load ptr, ptr %23, align 8 + %16 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %17 = sext i32 %15 to i64 + %17 = getelementptr inbounds [18 x %struct.mm_freenode_s], ptr %16, i64 0, i64 %17 + br label %19 + +19:; preds = %20, %13 + %.pn = phi ptr [ %18, %13 ], [ %.048, %20 ] + %.048.in = getelementptr inbounds nuw i8, ptr %.pn, i64 16 + %.048 = load ptr, ptr %.048.in, align 8 %.not = icmp eq ptr %.048, null - br i1 %.not, label %.thread, label %.lr.ph, !llvm.loop !11 - -24: ; preds = %.lr.ph - %25 = getelementptr inbounds nuw i8, ptr %.04863, i64 8 - %26 = getelementptr inbounds nuw i8, ptr %.04863, i64 16 + br i1 %.not, label %.thread, label %20 + +24: ; preds = %19 + %25 = getelementptr inbounds nuw i8, ptr %.048, i64 8 + %22 = load i64, ptr %21, align 8 + %23 = and i64 %22, -4 + %.not57 = icmp ult i64 %23, %11 + br i1 %.not57, label %19, label %24, !llvm.loop !11 + +24: ; preds = %20 + %25 = getelementptr inbounds nuw i8, ptr %.048, i64 8 + %26 = getelementptr inbounds nuw i8, ptr %.048, i64 16 %27 = load ptr, ptr %26, align 8 - %28 = getelementptr inbounds nuw i8, ptr %.04863, i64 24 + %28 = getelementptr inbounds nuw i8, ptr %.048, i64 24 %29 = load ptr, ptr %28, align 8 %30 = getelementptr inbounds nuw i8, ptr %29, i64 16 store ptr %27, ptr %30, align 8 @@ -83,13 +82,13 @@ free_delaylist.exit: ; preds = %.lr.ph.i, %up_irq_r br label %34 34: ; preds = %31, %24 - %35 = getelementptr inbounds i8, ptr %.04863, i64 %21 - %36 = sub i64 %21, %11 + %35 = getelementptr inbounds i8, ptr %.048, i64 %23 + %36 = sub i64 %23, %11 %37 = icmp ugt i64 %36, 31 br i1 %37, label %38, label %44 38: ; preds = %34 - %39 = getelementptr inbounds i8, ptr %.04863, i64 %11 + %39 = getelementptr inbounds i8, ptr %.048, i64 %11 %40 = getelementptr inbounds nuw i8, ptr %39, i64 8 store i64 %36, ptr %40, align 8 %41 = load i64, ptr %25, align 8 @@ -129,8 +128,8 @@ free_delaylist.exit: ; preds = %.lr.ph.i, %up_irq_r store i64 %60, ptr %25, align 8 br label %.thread -.thread: ; preds = %22, %13, %58 - %.050 = phi ptr [ %26, %58 ], [ null, %13 ], [ null, %22 ] +.thread: ; preds = %19, %58 + %.050 = phi ptr [ %26, %58 ], [ null, %19 ] call void @mm_unlock(ptr noundef nonnull %0) #4 br label %61 diff --git a/bench/ocio/optimized/GpuShader.ll b/bench/ocio/optimized/GpuShader.ll index 6c328c20b23..173dd191d00 100644 --- a/bench/ocio/optimized/GpuShader.ll +++ b/bench/ocio/optimized/GpuShader.ll @@ -491,7 +491,7 @@ _ZNSolsEm.exit: ; preds = %_ZStlsISt11char_tra 30: ; preds = %28 invoke void @__cxa_throw(ptr nonnull %27, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev9ExceptionE, ptr nonnull @_ZN19OpenColorIO_v2_5dev9ExceptionD1Ev) #26 - to label %53 unwind label %34 + to label %54 unwind label %34 31: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit16, %_ZNSolsEj.exit, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit, %15 %32 = landingpad { ptr, i32 } @@ -541,14 +541,15 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %34 46: ; preds = %3 %47 = zext i32 %1 to i64 - %48 = getelementptr inbounds nuw %"struct.OpenColorIO_v2_5dev::GPUShaderImpl::PrivateImpl::Uniform", ptr %9, i64 %47, i32 1 - %49 = tail call noundef nonnull align 8 dereferenceable(232) ptr @_ZN19OpenColorIO_v2_5dev13GpuShaderDesc11UniformDataaSERKS1_(ptr noundef nonnull align 8 dereferenceable(232) %2, ptr noundef nonnull align 8 dereferenceable(232) %48) - %50 = load ptr, ptr %6, align 8, !tbaa !44 - %51 = getelementptr inbounds nuw %"struct.OpenColorIO_v2_5dev::GPUShaderImpl::PrivateImpl::Uniform", ptr %50, i64 %47 - %52 = load ptr, ptr %51, align 8, !tbaa !45 - ret ptr %52 - -53: ; preds = %30 + %48 = getelementptr inbounds nuw %"struct.OpenColorIO_v2_5dev::GPUShaderImpl::PrivateImpl::Uniform", ptr %9, i64 %47 + %49 = getelementptr inbounds nuw i8, ptr %48, i64 32 + %50 = tail call noundef nonnull align 8 dereferenceable(232) ptr @_ZN19OpenColorIO_v2_5dev13GpuShaderDesc11UniformDataaSERKS1_(ptr noundef nonnull align 8 dereferenceable(232) %2, ptr noundef nonnull align 8 dereferenceable(232) %49) + %51 = load ptr, ptr %6, align 8, !tbaa !44 + %52 = getelementptr inbounds nuw %"struct.OpenColorIO_v2_5dev::GPUShaderImpl::PrivateImpl::Uniform", ptr %51, i64 %47 + %53 = load ptr, ptr %52, align 8, !tbaa !45 + ret ptr %53 + +54: ; preds = %30 unreachable } @@ -1273,7 +1274,7 @@ _ZNSolsEm.exit: ; preds = %_ZStlsISt11char_tra 29: ; preds = %27 invoke void @__cxa_throw(ptr nonnull %26, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev9ExceptionE, ptr nonnull @_ZN19OpenColorIO_v2_5dev9ExceptionD1Ev) #26 - to label %48 unwind label %33 + to label %49 unwind label %33 30: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit15, %_ZNSolsEj.exit, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit, %15 %31 = landingpad { ptr, i32 } @@ -1322,9 +1323,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %33 resume { ptr, i32 } %.pn.pn 45: ; preds = %3 - %46 = getelementptr inbounds nuw %"struct.OpenColorIO_v2_5dev::GPUShaderImpl::PrivateImpl::Texture", ptr %10, i64 %6, i32 8 - %47 = load ptr, ptr %46, align 8, !tbaa !59 - store ptr %47, ptr %2, align 8, !tbaa !79 + %46 = getelementptr inbounds nuw %"struct.OpenColorIO_v2_5dev::GPUShaderImpl::PrivateImpl::Texture", ptr %10, i64 %6 + %47 = getelementptr inbounds nuw i8, ptr %46, i64 88 + %48 = load ptr, ptr %47, align 8, !tbaa !59 + store ptr %48, ptr %2, align 8, !tbaa !79 ret void 48: ; preds = %29 @@ -1734,7 +1736,7 @@ _ZNSolsEm.exit: ; preds = %_ZStlsISt11char_tra 29: ; preds = %27 invoke void @__cxa_throw(ptr nonnull %26, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev9ExceptionE, ptr nonnull @_ZN19OpenColorIO_v2_5dev9ExceptionD1Ev) #26 - to label %48 unwind label %33 + to label %49 unwind label %33 30: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit15, %_ZNSolsEj.exit, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit, %15 %31 = landingpad { ptr, i32 } @@ -1783,9 +1785,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %33 resume { ptr, i32 } %.pn.pn 45: ; preds = %3 - %46 = getelementptr inbounds nuw %"struct.OpenColorIO_v2_5dev::GPUShaderImpl::PrivateImpl::Texture", ptr %10, i64 %6, i32 8 - %47 = load ptr, ptr %46, align 8, !tbaa !59 - store ptr %47, ptr %2, align 8, !tbaa !79 + %46 = getelementptr inbounds nuw %"struct.OpenColorIO_v2_5dev::GPUShaderImpl::PrivateImpl::Texture", ptr %10, i64 %6 + %47 = getelementptr inbounds nuw i8, ptr %46, i64 88 + %48 = load ptr, ptr %47, align 8, !tbaa !59 + store ptr %48, ptr %2, align 8, !tbaa !79 ret void 48: ; preds = %29 diff --git a/bench/ocio/optimized/LookParse.ll b/bench/ocio/optimized/LookParse.ll index 05b9331b7a7..aa0ca90d88a 100644 --- a/bench/ocio/optimized/LookParse.ll +++ b/bench/ocio/optimized/LookParse.ll @@ -2832,7 +2832,7 @@ _ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPN19OpenColorIO_v2_5dev15LookParseRe br i1 %.not20, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.lr.ph, %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPN19OpenColorIO_v2_5dev15LookParseResult5TokenESt6vectorIS4_SaIS4_EEEEEvT_SA_.exit - %90 = phi ptr [ %87, %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPN19OpenColorIO_v2_5dev15LookParseResult5TokenESt6vectorIS4_SaIS4_EEEEEvT_SA_.exit ], [ %104, %.lr.ph ] + %90 = phi ptr [ %87, %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPN19OpenColorIO_v2_5dev15LookParseResult5TokenESt6vectorIS4_SaIS4_EEEEEvT_SA_.exit ], [ %105, %.lr.ph ] %91 = add i32 %.01216, 1 %92 = zext i32 %91 to i64 %93 = load ptr, ptr %3, align 8, !tbaa !35 @@ -2844,27 +2844,29 @@ _ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPN19OpenColorIO_v2_5dev15LookParseRe br i1 %98, label %9, label %._crit_edge19, !llvm.loop !83 .lr.ph: ; preds = %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPN19OpenColorIO_v2_5dev15LookParseResult5TokenESt6vectorIS4_SaIS4_EEEEEvT_SA_.exit, %.lr.ph - %99 = phi ptr [ %106, %.lr.ph ], [ %88, %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPN19OpenColorIO_v2_5dev15LookParseResult5TokenESt6vectorIS4_SaIS4_EEEEEvT_SA_.exit ] - %100 = phi i64 [ %109, %.lr.ph ], [ 0, %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPN19OpenColorIO_v2_5dev15LookParseResult5TokenESt6vectorIS4_SaIS4_EEEEEvT_SA_.exit ] - %.015 = phi i32 [ %108, %.lr.ph ], [ 0, %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPN19OpenColorIO_v2_5dev15LookParseResult5TokenESt6vectorIS4_SaIS4_EEEEEvT_SA_.exit ] - %101 = getelementptr inbounds nuw %"struct.OpenColorIO_v2_5dev::LookParseResult::Token", ptr %99, i64 %100, i32 1 - %102 = load i32, ptr %101, align 8, !tbaa !24 - %103 = call noundef i32 @_ZN19OpenColorIO_v2_5dev28GetInverseTransformDirectionENS_18TransformDirectionE(i32 noundef %102) - %104 = load ptr, ptr %0, align 8, !tbaa !32 - %105 = getelementptr inbounds nuw %"class.std::vector", ptr %104, i64 %11 - %106 = load ptr, ptr %105, align 8, !tbaa !30 - %107 = getelementptr inbounds nuw %"struct.OpenColorIO_v2_5dev::LookParseResult::Token", ptr %106, i64 %100, i32 1 - store i32 %103, ptr %107, align 8, !tbaa !24 - %108 = add i32 %.015, 1 - %109 = zext i32 %108 to i64 - %110 = getelementptr inbounds nuw i8, ptr %105, i64 8 - %111 = load ptr, ptr %110, align 8, !tbaa !27 - %112 = ptrtoint ptr %111 to i64 - %113 = ptrtoint ptr %106 to i64 - %114 = sub i64 %112, %113 - %115 = sdiv exact i64 %114, 40 - %116 = icmp ugt i64 %115, %109 - br i1 %116, label %.lr.ph, label %._crit_edge, !llvm.loop !84 + %99 = phi ptr [ %107, %.lr.ph ], [ %88, %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPN19OpenColorIO_v2_5dev15LookParseResult5TokenESt6vectorIS4_SaIS4_EEEEEvT_SA_.exit ] + %100 = phi i64 [ %111, %.lr.ph ], [ 0, %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPN19OpenColorIO_v2_5dev15LookParseResult5TokenESt6vectorIS4_SaIS4_EEEEEvT_SA_.exit ] + %.015 = phi i32 [ %110, %.lr.ph ], [ 0, %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPN19OpenColorIO_v2_5dev15LookParseResult5TokenESt6vectorIS4_SaIS4_EEEEEvT_SA_.exit ] + %101 = getelementptr inbounds nuw %"struct.OpenColorIO_v2_5dev::LookParseResult::Token", ptr %99, i64 %100 + %102 = getelementptr inbounds nuw i8, ptr %101, i64 32 + %103 = load i32, ptr %102, align 8, !tbaa !24 + %104 = call noundef i32 @_ZN19OpenColorIO_v2_5dev28GetInverseTransformDirectionENS_18TransformDirectionE(i32 noundef %103) + %105 = load ptr, ptr %0, align 8, !tbaa !32 + %106 = getelementptr inbounds nuw %"class.std::vector", ptr %105, i64 %11 + %107 = load ptr, ptr %106, align 8, !tbaa !30 + %108 = getelementptr inbounds nuw %"struct.OpenColorIO_v2_5dev::LookParseResult::Token", ptr %107, i64 %100 + %109 = getelementptr inbounds nuw i8, ptr %108, i64 32 + store i32 %104, ptr %109, align 8, !tbaa !24 + %110 = add i32 %.015, 1 + %111 = zext i32 %110 to i64 + %112 = getelementptr inbounds nuw i8, ptr %106, i64 8 + %113 = load ptr, ptr %112, align 8, !tbaa !27 + %114 = ptrtoint ptr %113 to i64 + %115 = ptrtoint ptr %107 to i64 + %116 = sub i64 %114, %115 + %117 = sdiv exact i64 %116, 40 + %118 = icmp ugt i64 %117, %111 + br i1 %118, label %.lr.ph, label %._crit_edge, !llvm.loop !84 } declare noundef i32 @_ZN19OpenColorIO_v2_5dev28GetInverseTransformDirectionENS_18TransformDirectionE(i32 noundef) local_unnamed_addr #0 diff --git a/bench/ockam-rs/optimized/14jhibpevwjs778a.ll b/bench/ockam-rs/optimized/14jhibpevwjs778a.ll index 1200c74d915..67d1c768ff4 100644 --- a/bench/ockam-rs/optimized/14jhibpevwjs778a.ll +++ b/bench/ockam-rs/optimized/14jhibpevwjs778a.ll @@ -1008,23 +1008,27 @@ define internal fastcc void @"_ZN12sharded_slab4page19Shared$LT$T$C$C$GT$8alloca %32 = icmp eq ptr %.val.i, null br i1 %32, label %49, label %"_ZN4core3ptr142drop_in_place$LT$sharded_slab..page..slot..Slot$LT$tracing_subscriber..registry..sharded..DataInner$C$sharded_slab..cfg..DefaultConfig$GT$$GT$17h4ed61c49dbfcf3acE.exit.i.i.i.i" -"_ZN4core3ptr142drop_in_place$LT$sharded_slab..page..slot..Slot$LT$tracing_subscriber..registry..sharded..DataInner$C$sharded_slab..cfg..DefaultConfig$GT$$GT$17h4ed61c49dbfcf3acE.exit.i.i.i.i": ; preds = %.noexc, %34 - %.0.i.i.i.i = phi i64 [ %35, %34 ], [ 0, %.noexc ] - %33 = icmp eq i64 %.0.i.i.i.i, %.val4.i - br i1 %33, label %"_ZN4core3ptr152drop_in_place$LT$$u5b$sharded_slab..page..slot..Slot$LT$tracing_subscriber..registry..sharded..DataInner$C$sharded_slab..cfg..DefaultConfig$GT$$u5d$$GT$17hedf0e9a5f9942ffaE.exit.i.i.i", label %34 - -34: ; preds = %"_ZN4core3ptr142drop_in_place$LT$sharded_slab..page..slot..Slot$LT$tracing_subscriber..registry..sharded..DataInner$C$sharded_slab..cfg..DefaultConfig$GT$$GT$17h4ed61c49dbfcf3acE.exit.i.i.i.i" - %35 = add i64 %.0.i.i.i.i, 1 - %36 = getelementptr inbounds [0 x { { { { ptr, i64, i64, { i64 }, { { { i32 }, { i32 } }, { { i8 } }, [7 x i8], { { { { { { ptr, i64, i64, i64, {} }, {} }, { {} } } } } } } } } }, { i64 }, i64, {} }], ptr %.val.i, i64 0, i64 %.0.i.i.i.i, i32 0, i32 0, i32 0, i32 4, i32 3 - invoke void @"_ZN79_$LT$hashbrown..raw..RawTable$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2cfe619e77ab9df1E.llvm.1799741712541865863"(ptr noalias noundef nonnull align 8 dereferenceable(32) %36) +"_ZN4core3ptr142drop_in_place$LT$sharded_slab..page..slot..Slot$LT$tracing_subscriber..registry..sharded..DataInner$C$sharded_slab..cfg..DefaultConfig$GT$$GT$17h4ed61c49dbfcf3acE.exit.i.i.i.i": ; preds = %.noexc + %invariant.gep.i.i.i.i = getelementptr i8, ptr %.val.i, i64 48 + br label %34 + +"_ZN4core3ptr142drop_in_place$LT$sharded_slab..page..slot..Slot$LT$tracing_subscriber..registry..sharded..DataInner$C$sharded_slab..cfg..DefaultConfig$GT$$GT$17h4ed61c49dbfcf3acE.exit.i.i.i.i":; preds = %35, %33 + %.0.i.i.i.i = phi i64 [ 0, %33 ], [ %36, %35 ] + %34 = icmp eq i64 %.0.i.i.i.i, %.val4.i + br i1 %34, label %"_ZN4core3ptr152drop_in_place$LT$$u5b$sharded_slab..page..slot..Slot$LT$tracing_subscriber..registry..sharded..DataInner$C$sharded_slab..cfg..DefaultConfig$GT$$u5d$$GT$17hedf0e9a5f9942ffaE.exit.i.i.i", label %35 + +35: ; preds = %"_ZN4core3ptr142drop_in_place$LT$sharded_slab..page..slot..Slot$LT$tracing_subscriber..registry..sharded..DataInner$C$sharded_slab..cfg..DefaultConfig$GT$$GT$17h4ed61c49dbfcf3acE.exit.i.i.i.i" + %36 = add i64 %.0.i.i.i.i, 1 + %gep.i.i.i.i = getelementptr [0 x { { { { ptr, i64, i64, { i64 }, { { { i32 }, { i32 } }, { { i8 } }, [7 x i8], { { { { { { ptr, i64, i64, i64, {} }, {} }, { {} } } } } } } } } }, { i64 }, i64, {} }], ptr %invariant.gep.i.i.i.i, i64 0, i64 %.0.i.i.i.i + invoke void @"_ZN79_$LT$hashbrown..raw..RawTable$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2cfe619e77ab9df1E.llvm.1799741712541865863"(ptr noalias noundef nonnull align 8 dereferenceable(32) %gep.i.i.i.i) to label %"_ZN4core3ptr142drop_in_place$LT$sharded_slab..page..slot..Slot$LT$tracing_subscriber..registry..sharded..DataInner$C$sharded_slab..cfg..DefaultConfig$GT$$GT$17h4ed61c49dbfcf3acE.exit.i.i.i.i" unwind label %39, !noalias !130 37: ; preds = %41, %39 - %.1.i.i.i.i = phi i64 [ %35, %39 ], [ %43, %41 ] + %.1.i.i.i.i = phi i64 [ %36, %39 ], [ %43, %41 ] %38 = icmp eq i64 %.1.i.i.i.i, %.val4.i br i1 %38, label %.body.thread11, label %41 -39: ; preds = %34 +39: ; preds = %35 %40 = landingpad { ptr, i32 } cleanup br label %37 diff --git a/bench/oiio/optimized/ElementReadStream.ll b/bench/oiio/optimized/ElementReadStream.ll index 3290d56f928..df026d6b78f 100644 --- a/bench/oiio/optimized/ElementReadStream.ll +++ b/bench/oiio/optimized/ElementReadStream.ll @@ -4,6 +4,7 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80: target triple = "x86_64-pc-linux-gnu" %"class.std::ios_base::Init" = type { i8 } +%"struct.dpx::ImageElement" = type { i32, i32, float, i32, float, i8, i8, i8, i8, i16, i16, i32, i32, i32, [32 x i8] } @_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 @__dso_handle = external hidden global i8 @@ -58,9 +59,8 @@ define hidden noundef zeroext i1 @_ZN3dpx17ElementReadStream4ReadERKNS_6HeaderEi 7: ; preds = %6 %8 = getelementptr inbounds nuw i8, ptr %1, i64 780 - %narrow.i = mul nuw nsw i32 %2, 72 - %9 = zext nneg i32 %narrow.i to i64 - %10 = getelementptr inbounds nuw i8, ptr %8, i64 %9 + %9 = zext nneg i32 %2 to i64 + %10 = getelementptr inbounds nuw [8 x %"struct.dpx::ImageElement"], ptr %8, i64 0, i64 %9 %11 = getelementptr inbounds nuw i8, ptr %10, i64 28 %12 = load i32, ptr %11, align 4, !tbaa !11 %13 = zext i32 %12 to i64 @@ -107,9 +107,8 @@ define hidden void @_ZN3dpx17ElementReadStream15EndianDataCheckERKNS_6HeaderEiPv _ZNK3dpx13GenericHeader8BitDepthEi.exit: ; preds = %8 %9 = getelementptr inbounds nuw i8, ptr %1, i64 780 - %narrow.i = mul nuw nsw i32 %2, 72 - %10 = zext nneg i32 %narrow.i to i64 - %11 = getelementptr inbounds nuw i8, ptr %9, i64 %10 + %10 = zext nneg i32 %2 to i64 + %11 = getelementptr inbounds nuw [8 x %"struct.dpx::ImageElement"], ptr %9, i64 0, i64 %10 %12 = getelementptr inbounds nuw i8, ptr %11, i64 23 %13 = load i8, ptr %12, align 1, !tbaa !18 switch i8 %13, label %_ZNK3dpx13GenericHeader8BitDepthEi.exit.thread [ @@ -149,7 +148,7 @@ _ZNK3dpx13GenericHeader12ImagePackingEi.exit: ; preds = %_ZNK3dpx13GenericHe br i1 %.not.i.i.i15, label %_ZN3dpx21EndianSwapImageBufferILNS_8DataSizeE2EEEvPvi.exit, label %.lr.ph.i.i.i16 .lr.ph.i.i.i16: ; preds = %25, %.lr.ph.i.i.i16 - %.06.i.i.i17 = phi i64 [ %32, %.lr.ph.i.i.i16 ], [ 0, %25 ] + %.06.i.i.i17 = phi i64 [ %32, %.lr.ph.i.i.i15 ], [ 0, %25 ] %29 = getelementptr inbounds nuw i16, ptr %3, i64 %.06.i.i.i17 %30 = load i16, ptr %29, align 2, !tbaa !23 %31 = tail call noundef i16 @llvm.bswap.i16(i16 %30) @@ -166,7 +165,7 @@ _ZNK3dpx13GenericHeader12ImagePackingEi.exit: ; preds = %_ZNK3dpx13GenericHe br i1 %.not.i.i.i19, label %_ZN3dpx21EndianSwapImageBufferILNS_8DataSizeE2EEEvPvi.exit, label %.lr.ph.i.i.i20 .lr.ph.i.i.i20: ; preds = %33, %.lr.ph.i.i.i20 - %.06.i.i.i21 = phi i64 [ %40, %.lr.ph.i.i.i20 ], [ 0, %33 ] + %.06.i.i.i21 = phi i64 [ %40, %.lr.ph.i.i.i19 ], [ 0, %33 ] %37 = getelementptr inbounds nuw i16, ptr %3, i64 %.06.i.i.i21 %38 = load i16, ptr %37, align 2, !tbaa !23 %39 = tail call noundef i16 @llvm.bswap.i16(i16 %38) @@ -183,7 +182,7 @@ _ZNK3dpx13GenericHeader8BitDepthEi.exit.thread: ; preds = %8, %_ZNK3dpx13Gener br i1 %.not.i.i.i24, label %_ZN3dpx21EndianSwapImageBufferILNS_8DataSizeE2EEEvPvi.exit, label %.lr.ph.i.i.i25 .lr.ph.i.i.i25: ; preds = %_ZNK3dpx13GenericHeader8BitDepthEi.exit.thread, %.lr.ph.i.i.i25 - %.06.i.i.i26 = phi i64 [ %47, %.lr.ph.i.i.i25 ], [ 0, %_ZNK3dpx13GenericHeader8BitDepthEi.exit.thread ] + %.06.i.i.i26 = phi i64 [ %47, %.lr.ph.i.i.i24 ], [ 0, %_ZNK3dpx13GenericHeader8BitDepthEi.exit.thread ] %44 = getelementptr inbounds nuw i32, ptr %3, i64 %.06.i.i.i26 %45 = load i32, ptr %44, align 4, !tbaa !20 %46 = tail call noundef i32 @llvm.bswap.i32(i32 %45) @@ -203,9 +202,8 @@ define hidden noundef zeroext i1 @_ZN3dpx17ElementReadStream10ReadDirectERKNS_6H 7: ; preds = %6 %8 = getelementptr inbounds nuw i8, ptr %1, i64 780 - %narrow.i = mul nuw nsw i32 %2, 72 - %9 = zext nneg i32 %narrow.i to i64 - %10 = getelementptr inbounds nuw i8, ptr %8, i64 %9 + %9 = zext nneg i32 %2 to i64 + %10 = getelementptr inbounds nuw [8 x %"struct.dpx::ImageElement"], ptr %8, i64 0, i64 %9 %11 = getelementptr inbounds nuw i8, ptr %10, i64 28 %12 = load i32, ptr %11, align 4, !tbaa !11 %13 = zext i32 %12 to i64 diff --git a/bench/oiio/optimized/Reader.ll b/bench/oiio/optimized/Reader.ll index 6d650d067ac..dccfc54d82c 100644 --- a/bench/oiio/optimized/Reader.ll +++ b/bench/oiio/optimized/Reader.ll @@ -5,6 +5,7 @@ target triple = "x86_64-pc-linux-gnu" %"class.std::ios_base::Init" = type { i8 } %"struct.dpx::Block" = type { i32, i32, i32, i32 } +%"struct.dpx::ImageElement" = type { i32, i32, float, i32, float, i8, i8, i8, i8, i16, i16, i32, i32, i32, [32 x i8] } $__clang_call_terminate = comdat any @@ -350,9 +351,8 @@ define hidden noundef zeroext i1 @_ZN3dpx6Reader9ReadBlockEiPhRNS_5BlockE(ptr no _ZNK3dpx13GenericHeader15ImageDescriptorEi.exit: ; preds = %4 %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 %6 = getelementptr inbounds nuw i8, ptr %0, i64 788 - %narrow.i = mul nuw nsw i32 %1, 72 - %7 = zext nneg i32 %narrow.i to i64 - %8 = getelementptr inbounds nuw i8, ptr %6, i64 %7 + %7 = zext nneg i32 %1 to i64 + %8 = getelementptr inbounds nuw [8 x %"struct.dpx::ImageElement"], ptr %6, i64 0, i64 %7 %9 = getelementptr inbounds nuw i8, ptr %8, i64 20 %10 = load i8, ptr %9, align 8, !tbaa !29 %11 = icmp eq i8 %10, -1 @@ -468,47 +468,45 @@ _ZNK3dpx13GenericHeader10DataOffsetEi.exit: ; preds = %38 84: ; preds = %38, %37, %32, %_ZNK3dpx13GenericHeader16EndOfLinePaddingEi.exit %85 = getelementptr inbounds nuw i8, ptr %0, i64 2072 - %86 = zext nneg i32 %1 to i64 - %87 = getelementptr inbounds nuw [8 x ptr], ptr %85, i64 0, i64 %86 - %88 = load ptr, ptr %87, align 8, !tbaa !19 - %89 = icmp eq ptr %88, null - br i1 %89, label %95, label %100 + %86 = getelementptr inbounds nuw [8 x ptr], ptr %85, i64 0, i64 %7 + %87 = load ptr, ptr %86, align 8, !tbaa !19 + %88 = icmp eq ptr %87, null + br i1 %88, label %93, label %98 .thread: ; preds = %_ZNK3dpx13GenericHeader13ImageEncodingEi.exit %90 = getelementptr inbounds nuw i8, ptr %0, i64 2072 - %91 = zext nneg i32 %1 to i64 - %92 = getelementptr inbounds nuw [8 x ptr], ptr %90, i64 0, i64 %91 - %93 = load ptr, ptr %92, align 8, !tbaa !19 - %94 = icmp eq ptr %93, null - br i1 %94, label %.thread69, label %100 - -95: ; preds = %84 - %96 = tail call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #15 - invoke void @_ZN3dpx5CodecC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) - to label %97 unwind label %98 - -97: ; preds = %95 - store ptr %96, ptr %87, align 8, !tbaa !19 - br label %100 - -98: ; preds = %95 - %99 = landingpad { ptr, i32 } + %90 = getelementptr inbounds nuw [8 x ptr], ptr %89, i64 0, i64 %7 + %91 = load ptr, ptr %90, align 8, !tbaa !19 + %92 = icmp eq ptr %91, null + br i1 %92, label %.thread65, label %98 + +93: ; preds = %84 + %94 = tail call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #15 + invoke void @_ZN3dpx5CodecC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) + to label %95 unwind label %96 + +95: ; preds = %93 + store ptr %94, ptr %86, align 8, !tbaa !19 + br label %98 + +96: ; preds = %93 + %97 = landingpad { ptr, i32 } cleanup - tail call void @_ZdlPvm(ptr noundef nonnull %96, i64 noundef 16) #16 - resume { ptr, i32 } %99 + tail call void @_ZdlPvm(ptr noundef nonnull %94, i64 noundef 16) #16 + resume { ptr, i32 } %97 -100: ; preds = %.thread, %97, %84 - %101 = phi ptr [ %93, %.thread ], [ %96, %97 ], [ %88, %84 ] +100: ; preds = %.thread, %95, %84 + %101 = phi ptr [ %91, %.thread ], [ %94, %95 ], [ %87, %84 ] %102 = getelementptr inbounds nuw i8, ptr %0, i64 2136 %103 = load ptr, ptr %102, align 8, !tbaa !6 %104 = load ptr, ptr %101, align 8, !tbaa !3 %105 = getelementptr inbounds nuw i8, ptr %104, i64 24 %106 = load ptr, ptr %105, align 8 - %107 = tail call noundef zeroext i1 %106(ptr noundef nonnull align 8 dereferenceable(16) %101, ptr noundef nonnull align 4 dereferenceable(2049) %5, ptr noundef %103, i32 noundef %1, ptr noundef nonnull align 4 dereferenceable(16) %3, ptr noundef %2, i32 noundef %18) + %107 = tail call noundef zeroext i1 %104(ptr noundef nonnull align 8 dereferenceable(16) %101, ptr noundef nonnull align 4 dereferenceable(2049) %5, ptr noundef %103, i32 noundef %1, ptr noundef nonnull align 4 dereferenceable(16) %3, ptr noundef %2, i32 noundef %18) br label %.thread69 .thread69: ; preds = %.thread, %100, %_ZNK3dpx13GenericHeader10DataOffsetEi.exit, %80, %83, %62, %_ZNK3dpx13GenericHeader15ImageDescriptorEi.exit, %4 - %.0 = phi i1 [ false, %4 ], [ false, %_ZNK3dpx13GenericHeader15ImageDescriptorEi.exit ], [ %107, %100 ], [ false, %_ZNK3dpx13GenericHeader10DataOffsetEi.exit ], [ true, %80 ], [ true, %83 ], [ false, %62 ], [ false, %.thread ] + %.0 = phi i1 [ false, %4 ], [ false, %_ZNK3dpx13GenericHeader15ImageDescriptorEi.exit ], [ %107, %98 ], [ false, %_ZNK3dpx13GenericHeader10DataOffsetEi.exit ], [ true, %80 ], [ true, %83 ], [ false, %62 ], [ false, %.thread ] ret i1 %.0 } diff --git a/bench/open3d/optimized/PinholeCameraTrajectory.ll b/bench/open3d/optimized/PinholeCameraTrajectory.ll index f89a139ad6c..7497d87aecc 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(i64 40, ptr nonnull %10) #18 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(i64 40, ptr nonnull %10) #18 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/opencv/optimized/contours_common.ll b/bench/opencv/optimized/contours_common.ll index 743a819d490..d431900266b 100644 --- a/bench/opencv/optimized/contours_common.ll +++ b/bench/opencv/optimized/contours_common.ll @@ -1180,22 +1180,26 @@ _ZNSt5stackIiSt5dequeIiSaIiEEE3popEv.exit: ; preds = %8, %11 %.not.i = icmp eq i32 %31, -1 br i1 %.not.i, label %._crit_edge, label %.preheader.i -.preheader.i: ; preds = %_ZNSt5stackIiSt5dequeIiSaIiEEE3popEv.exit, %.preheader.i - %.1.i = phi i32 [ %34, %.preheader.i ], [ %31, %_ZNSt5stackIiSt5dequeIiSaIiEEE3popEv.exit ] - %32 = sext i32 %.1.i to i64 - %33 = getelementptr inbounds nuw %"class.cv::TreeNode", ptr %28, i64 %32, i32 4 - %34 = load i32, ptr %33, align 8, !tbaa !106 +.preheader.i: ; preds = %_ZNSt5stackIiSt5dequeIiSaIiEEE3popEv.exit + %invariant.gep.i = getelementptr i8, ptr %28, i64 16 + br label %32 + +32:; preds = %32, %.preheader.i + %.1.i = phi i32 [ %34, %32 ], [ %31, %.preheader.i ] + %33 = sext i32 %.1.i to i64 + %gep.i = getelementptr %"class.cv::TreeNode", ptr %invariant.gep.i, i64 %33 + %34 = load i32, ptr %gep.i, align 8, !tbaa !106 %35 = icmp eq i32 %34, -1 - br i1 %35, label %.lr.ph, label %.preheader.i + br i1 %35, label %.lr.ph, label %32 -.lr.ph: ; preds = %.preheader.i +.lr.ph: ; preds = %32 store i32 %.1.i, ptr %2, align 4, !tbaa !39 %36 = getelementptr inbounds nuw i8, ptr %0, i64 64 br label %37 37: ; preds = %.lr.ph, %_ZNSt5stackIiSt5dequeIiSaIiEEE4pushERKi.exit %38 = phi ptr [ %28, %.lr.ph ], [ %45, %_ZNSt5stackIiSt5dequeIiSaIiEEE4pushERKi.exit ] - %storemerge5 = phi i32 [ %.1.i, %.lr.ph ], [ %49, %_ZNSt5stackIiSt5dequeIiSaIiEEE4pushERKi.exit ] + %storemerge5 = phi i32 [ %.1.i, %.lr.ph ], [ %50, %_ZNSt5stackIiSt5dequeIiSaIiEEE4pushERKi.exit ] %39 = load ptr, ptr %3, align 8, !tbaa !92 %40 = load ptr, ptr %36, align 8, !tbaa !93 %41 = getelementptr inbounds i8, ptr %40, i64 -4 @@ -1218,10 +1222,11 @@ _ZNSt5stackIiSt5dequeIiSaIiEEE4pushERKi.exit: ; preds = %42, %44 %45 = phi ptr [ %38, %42 ], [ %.pre6, %44 ] %46 = load i32, ptr %2, align 4, !tbaa !39 %47 = sext i32 %46 to i64 - %48 = getelementptr inbounds nuw %"class.cv::TreeNode", ptr %45, i64 %47, i32 3 - %49 = load i32, ptr %48, align 4, !tbaa !107 - store i32 %49, ptr %2, align 4, !tbaa !39 - %.not = icmp eq i32 %49, -1 + %48 = getelementptr inbounds nuw %"class.cv::TreeNode", ptr %45, i64 %47 + %49 = getelementptr inbounds nuw i8, ptr %48, i64 12 + %50 = load i32, ptr %49, align 4, !tbaa !107 + store i32 %50, ptr %2, align 4, !tbaa !39 + %.not = icmp eq i32 %50, -1 br i1 %.not, label %._crit_edge, label %37, !llvm.loop !108 ._crit_edge: ; preds = %_ZNSt5stackIiSt5dequeIiSaIiEEE4pushERKi.exit, %_ZNSt5stackIiSt5dequeIiSaIiEEE3popEv.exit diff --git a/bench/openexr/optimized/internal_huf.ll b/bench/openexr/optimized/internal_huf.ll index de86b686767..c4c6fd1983a 100644 --- a/bench/openexr/optimized/internal_huf.ll +++ b/bench/openexr/optimized/internal_huf.ll @@ -2022,15 +2022,14 @@ hufUnpackEncTable.exit: ; preds = %282, %300, %getBits 364: ; preds = %367, %362 %indvars.iv.i84 = phi i64 [ 0, %362 ], [ %indvars.iv.next.i85, %367 ] - %.idx = shl nuw nsw i64 %indvars.iv.i84, 4 - %gep = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %.idx - %365 = load ptr, ptr %gep, align 8, !tbaa !99 + %gep.i = getelementptr inbounds nuw %struct._HufDec, ptr %invariant.gep, i64 %indvars.iv.i84 + %365 = load ptr, ptr %gep.i, align 8, !tbaa !99 %.not12.i = icmp eq ptr %365, null br i1 %.not12.i, label %367, label %366 366: ; preds = %364 tail call void %363(ptr noundef nonnull %365) #10 - store ptr null, ptr %gep, align 8, !tbaa !99 + store ptr null, ptr %gep.i, align 8, !tbaa !99 br label %367 367: ; preds = %366, %364 diff --git a/bench/openspiel/optimized/ABstats.ll b/bench/openspiel/optimized/ABstats.ll index ea7734303f1..c4ed0510f1b 100644 --- a/bench/openspiel/optimized/ABstats.ll +++ b/bench/openspiel/optimized/ABstats.ll @@ -1196,7 +1196,7 @@ define void @_ZNK7ABstats14PrintSumDetailERSt14basic_ofstreamIcSt11char_traitsIc .noexc: ; preds = %2 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef %5, ptr noundef nonnull align 1 dereferenceable(1) %4) - to label %.noexc16 unwind label %27 + to label %.noexc15 unwind label %27 .noexc16: ; preds = %.noexc invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc(ptr noundef nonnull align 8 dereferenceable(32) %3, i64 noundef 65, i8 noundef signext 45) @@ -1235,10 +1235,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit: ; pre 22: ; preds = %11, %22 %indvars.iv = phi i64 [ 0, %11 ], [ %indvars.iv.next, %22 ] %23 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw(ptr noundef nonnull align 8 dereferenceable(8) %1, i32 6) - %24 = mul nuw nsw i64 %indvars.iv, 212 - %gep = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %24 - %25 = load i32, ptr %gep, align 4 - %26 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %23, i32 noundef %25) + %gep = getelementptr inbounds nuw [8 x %struct.ABtracker], ptr %invariant.gep, i64 0, i64 %indvars.iv + %24 = load i32, ptr %gep, align 4 + %25 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %23, i32 noundef %24) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 8 br i1 %exitcond.not, label %31, label %22, !llvm.loop !11 @@ -1255,7 +1254,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit: ; pre br label %.body .body: ; preds = %27, %6, %29 - %.pn = phi { ptr, i32 } [ %30, %29 ], [ %28, %27 ], [ %7, %6 ] + %.pn = phi { ptr, i32 } [ %30, %28 ], [ %28, %26 ], [ %7, %6 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #13 resume { ptr, i32 } %.pn diff --git a/bench/openssl/optimized/statem_lib.ll b/bench/openssl/optimized/statem_lib.ll index 993dd4542cf..7d754c2274d 100644 --- a/bench/openssl/optimized/statem_lib.ll +++ b/bench/openssl/optimized/statem_lib.ll @@ -4124,7 +4124,7 @@ ssl_has_cert_type.exit.i.i: ; preds = %92 %97 = getelementptr inbounds nuw i8, ptr %.pre39.i, i64 32 %98 = load ptr, ptr %97, align 8, !tbaa !223 %99 = and i64 %.01833.i, 2147483647 - %100 = getelementptr inbounds nuw %struct.cert_pkey_st, ptr %98, i64 %99, i32 1 + %100 = getelementptr inbounds nuw %struct.cert_pkey_st, ptr %98, i64 %99 br label %ssl_has_cert.exit.i ssl_has_cert_type.exit.thread.i.i: ; preds = %ssl_has_cert_type.exit.i.i, %.ssl_has_cert_type.exit.thread.i_crit_edge.i @@ -4137,23 +4137,20 @@ ssl_has_cert_type.exit.thread.i.i: ; preds = %ssl_has_cert_type.e %.not12.i.i = icmp eq ptr %106, null br i1 %.not12.i.i, label %ssl_has_cert.exit.thread.i, label %107 -107: ; preds = %ssl_has_cert_type.exit.thread.i.i - %108 = getelementptr inbounds nuw i8, ptr %105, i64 8 - br label %ssl_has_cert.exit.i - -ssl_has_cert.exit.i: ; preds = %107, %96 - %109 = phi ptr [ %98, %96 ], [ %103, %107 ] - %.0.shrunk.i.in.in.i = phi ptr [ %100, %96 ], [ %108, %107 ] - %.0.shrunk.i.in.i = load ptr, ptr %.0.shrunk.i.in.in.i, align 8, !tbaa !117 - %.0.shrunk.i.not.i = icmp eq ptr %.0.shrunk.i.in.i, null - br i1 %.0.shrunk.i.not.i, label %ssl_has_cert.exit.thread.i, label %110 +107: ; preds = %ssl_has_cert_type.exit.thread.i.i, %96 + %107 = phi ptr [ %98, %96 ], [ %103, %ssl_has_cert_type.exit.thread.i.i ] + %.sink.i.i = phi ptr [ %100, %96 ], [ %105, %ssl_has_cert_type.exit.thread.i.i ] + %108 = getelementptr inbounds nuw i8, ptr %.sink.i.i, i64 8 + %109 = load ptr, ptr %108, align 8, !tbaa !117 + %.not32.i = icmp eq ptr %109, null + br i1 %.not32.i, label %ssl_has_cert.exit.thread.i, label %110 110: ; preds = %ssl_has_cert.exit.i %.not28.i = icmp eq i64 %.01833.i, 3 br i1 %.not28.i, label %111, label %is_tls13_capable.exit.thread 111: ; preds = %110 - %112 = getelementptr inbounds nuw i8, ptr %109, i64 128 + %112 = getelementptr inbounds nuw i8, ptr %107, i64 128 %113 = load ptr, ptr %112, align 8, !tbaa !117 %114 = tail call i32 @ssl_get_EC_curve_nid(ptr noundef %113) #11 %115 = tail call i32 @tls_check_sigalg_curve(ptr noundef nonnull %0, i32 noundef %114) #11 diff --git a/bench/openusd/optimized/av1_loopfilter.ll b/bench/openusd/optimized/av1_loopfilter.ll index e4f25af206f..7791190c237 100644 --- a/bench/openusd/optimized/av1_loopfilter.ll +++ b/bench/openusd/optimized/av1_loopfilter.ll @@ -251,11 +251,10 @@ update_sharpness.exit: ; preds = %.split.i, %.split.u 30: ; preds = %update_sharpness.exit, %30 %indvars.iv = phi i64 [ 0, %update_sharpness.exit ], [ %indvars.iv.next, %30 ] - %31 = mul nuw nsw i64 %indvars.iv, 48 - %gep = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %31 - %32 = lshr i64 %indvars.iv, 4 - %33 = trunc i64 %32 to i8 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %gep, i8 %33, i64 16, i1 false) + %gep = getelementptr inbounds nuw [64 x %struct.loop_filter_thresh], ptr %invariant.gep, i64 0, i64 %indvars.iv + %31 = lshr i64 %indvars.iv, 4 + %32 = trunc i64 %31 to i8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %gep, i8 %32, i64 16, i1 false) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 64 br i1 %exitcond.not, label %34, label %30, !llvm.loop !8 diff --git a/bench/openusd/optimized/parserPlugin.ll b/bench/openusd/optimized/parserPlugin.ll index 859d7b8afe8..07e3817393c 100644 --- a/bench/openusd/optimized/parserPlugin.ll +++ b/bench/openusd/optimized/parserPlugin.ll @@ -4061,7 +4061,8 @@ _ZNKR32pxrInternal_v0_24__pxrReserved__7VtValue12UncheckedGetIfEERKT_v.exit144: _ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIdEEbv.exit147: ; preds = %372 %.pre357 = load ptr, ptr %.0.i, align 8 - %.phi.trans.insert355 = getelementptr inbounds nuw %"class.pxrInternal_v0_24__pxrReserved__::VtValue", ptr %.pre357, i64 %indvars.iv315, i32 1 + %.phi.trans.insert355 = getelementptr inbounds nuw %"class.pxrInternal_v0_24__pxrReserved__::VtValue", ptr %.pre357, i64 %indvars.iv315 + %.phi.trans.insert355 = getelementptr inbounds nuw i8, ptr %.phi.trans.insert354, i64 8 %.pre356 = load ptr, ptr %.phi.trans.insert355, align 8 br i1 %373, label %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIdEEbv.exit147._ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIdEEbv.exit147.thread279_crit_edge, label %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIdEEbv.exit147.thread @@ -4141,7 +4142,8 @@ _ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIfEEbv.exit155: ; preds _ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIfEEbv.exit155._ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIfEEbv.exit155.thread280_crit_edge: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIfEEbv.exit155 %.pre361 = load ptr, ptr %.0.i, align 8 - %.phi.trans.insert363 = getelementptr inbounds nuw %"class.pxrInternal_v0_24__pxrReserved__::VtValue", ptr %.pre361, i64 %indvars.iv315, i32 1 + %.phi.trans.insert363 = getelementptr inbounds nuw %"class.pxrInternal_v0_24__pxrReserved__::VtValue", ptr %.pre361, i64 %indvars.iv315 + %.phi.trans.insert363 = getelementptr inbounds nuw i8, ptr %.phi.trans.insert362, i64 8 %.pre364 = load ptr, ptr %.phi.trans.insert363, align 8 %.pre371 = ptrtoint ptr %.pre364 to i64 br label %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIfEEbv.exit155.thread280 @@ -4314,7 +4316,8 @@ _ZN32pxrInternal_v0_24__pxrReserved__7VtValueC2INS_7VtArrayIfEEEERKT_.exit: ; pr _ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIdEEbv.exit176: ; preds = %468 %470 = tail call noundef zeroext i1 @_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue11_TypeIsImplERKSt9type_info(ptr noundef nonnull align 8 dereferenceable(16) %458, ptr noundef nonnull align 8 dereferenceable(16) @_ZTId) %.pre345 = load ptr, ptr %.0.i, align 8 - %.phi.trans.insert343 = getelementptr inbounds nuw %"class.pxrInternal_v0_24__pxrReserved__::VtValue", ptr %.pre345, i64 %indvars.iv311, i32 1 + %.phi.trans.insert343 = getelementptr inbounds nuw %"class.pxrInternal_v0_24__pxrReserved__::VtValue", ptr %.pre345, i64 %indvars.iv311 + %.phi.trans.insert343 = getelementptr inbounds nuw i8, ptr %.phi.trans.insert342, i64 8 %.pre344 = load ptr, ptr %.phi.trans.insert343, align 8 br i1 %470, label %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIdEEbv.exit176._ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIdEEbv.exit176.thread281_crit_edge, label %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIdEEbv.exit176.thread @@ -4371,7 +4374,8 @@ _ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIfEEbv.exit182: ; preds _ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIfEEbv.exit182._ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIfEEbv.exit182.thread282_crit_edge: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIfEEbv.exit182 %.pre349 = load ptr, ptr %.0.i, align 8 - %.phi.trans.insert351 = getelementptr inbounds nuw %"class.pxrInternal_v0_24__pxrReserved__::VtValue", ptr %.pre349, i64 %indvars.iv311, i32 1 + %.phi.trans.insert351 = getelementptr inbounds nuw %"class.pxrInternal_v0_24__pxrReserved__::VtValue", ptr %.pre349, i64 %indvars.iv311 + %.phi.trans.insert351 = getelementptr inbounds nuw i8, ptr %.phi.trans.insert350, i64 8 %.pre352 = load ptr, ptr %.phi.trans.insert351, align 8 %.pre374 = ptrtoint ptr %.pre352 to i64 br label %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIfEEbv.exit182.thread282 @@ -4533,7 +4537,8 @@ _ZN32pxrInternal_v0_24__pxrReserved__7TfTokenaSERKS0_.exit195: ; preds = %_ZNK32 _ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIdEEbv.exit199: ; preds = %564 %.pre333 = load ptr, ptr %.0.i, align 8 - %.phi.trans.insert331 = getelementptr inbounds nuw %"class.pxrInternal_v0_24__pxrReserved__::VtValue", ptr %.pre333, i64 %indvars.iv, i32 1 + %.phi.trans.insert331 = getelementptr inbounds nuw %"class.pxrInternal_v0_24__pxrReserved__::VtValue", ptr %.pre333, i64 %indvars.iv + %.phi.trans.insert331 = getelementptr inbounds nuw i8, ptr %.phi.trans.insert, i64 8 %.pre332 = load ptr, ptr %.phi.trans.insert331, align 8 br i1 %565, label %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIdEEbv.exit199._ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIdEEbv.exit199.thread283_crit_edge, label %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIdEEbv.exit199.thread @@ -4613,7 +4618,8 @@ _ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIfEEbv.exit207: ; preds _ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIfEEbv.exit207._ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIfEEbv.exit207.thread284_crit_edge: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIfEEbv.exit207 %.pre337 = load ptr, ptr %.0.i, align 8 - %.phi.trans.insert339 = getelementptr inbounds nuw %"class.pxrInternal_v0_24__pxrReserved__::VtValue", ptr %.pre337, i64 %indvars.iv, i32 1 + %.phi.trans.insert339 = getelementptr inbounds nuw %"class.pxrInternal_v0_24__pxrReserved__::VtValue", ptr %.pre337, i64 %indvars.iv + %.phi.trans.insert339 = getelementptr inbounds nuw i8, ptr %.phi.trans.insert338, i64 8 %.pre340 = load ptr, ptr %.phi.trans.insert339, align 8 %.pre378 = ptrtoint ptr %.pre340 to i64 br label %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIfEEbv.exit207.thread284 diff --git a/bench/openusd/optimized/strengthOrdering.ll b/bench/openusd/optimized/strengthOrdering.ll index 6e661344378..506c57cea29 100644 --- a/bench/openusd/optimized/strengthOrdering.ll +++ b/bench/openusd/optimized/strengthOrdering.ll @@ -916,28 +916,30 @@ define internal fastcc noundef range(i32 -1, 2) i32 @_ZN32pxrInternal_v0_24__pxr %26 = getelementptr inbounds nuw i8, ptr %10, i64 16 %27 = load ptr, ptr %26, align 8, !noalias !17 %28 = load ptr, ptr %27, align 8, !noalias !17 - %29 = getelementptr inbounds %"struct.pxrInternal_v0_24__pxrReserved__::PcpPrimIndex_Graph::_Node", ptr %28, i64 %6, i32 3, i32 2 - %30 = load i16, ptr %29, align 4, !noalias !17 - %31 = zext i16 %30 to i64 + %29 = getelementptr inbounds %"struct.pxrInternal_v0_24__pxrReserved__::PcpPrimIndex_Graph::_Node", ptr %28, i64 %6 + %30 = getelementptr inbounds nuw i8, ptr %29, i64 28 + %31 = load i16, ptr %30, align 4, !noalias !17 + %32 = zext i16 %31 to i64 store ptr %10, ptr %4, align 8, !alias.scope !14 - store i64 %31, ptr %22, align 8, !alias.scope !14 + store i64 %32, ptr %22, align 8, !alias.scope !14 %.sroa.5.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %4, i64 16 store ptr %28, ptr %.sroa.5.0..sroa_idx.i.i.i, align 8, !alias.scope !14 store ptr %10, ptr %23, align 8, !alias.scope !14 store i64 65535, ptr %24, align 8, !alias.scope !14 %.sroa.4.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %4, i64 40 store ptr %28, ptr %.sroa.4.0..sroa_idx.i.i.i, align 8, !alias.scope !14 - %.not1112 = icmp eq i16 %30, -1 + %invariant.gep = getelementptr inbounds nuw i8, ptr %28, i64 34 + %.not1112 = icmp eq i16 %31, -1 br i1 %.not1112, label %.loopexit, label %_ZN32pxrInternal_v0_24__pxrReserved__10TfIteratorINS_36PcpNodeRef_PrivateChildrenConstRangeELb0EEdeEv.exit _ZN32pxrInternal_v0_24__pxrReserved__10TfIteratorINS_36PcpNodeRef_PrivateChildrenConstRangeELb0EEdeEv.exit: ; preds = %21, %_ZN32pxrInternal_v0_24__pxrReserved__10TfIteratorINS_36PcpNodeRef_PrivateChildrenConstRangeELb0EEppEv.exit - %32 = phi i64 [ %36, %_ZN32pxrInternal_v0_24__pxrReserved__10TfIteratorINS_36PcpNodeRef_PrivateChildrenConstRangeELb0EEppEv.exit ], [ %31, %21 ] + %32 = phi i64 [ %36, %_ZN32pxrInternal_v0_24__pxrReserved__10TfIteratorINS_36PcpNodeRef_PrivateChildrenConstRangeELb0EEppEv.exit ], [ %32, %21 ] %33 = call fastcc noundef i32 @_ZN32pxrInternal_v0_24__pxrReserved__L17_OriginIsStrongerERKNS_10PcpNodeRefES2_S2_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2) %.not = icmp eq i32 %33, 0 br i1 %.not, label %_ZN32pxrInternal_v0_24__pxrReserved__10TfIteratorINS_36PcpNodeRef_PrivateChildrenConstRangeELb0EEppEv.exit, label %.loopexit _ZN32pxrInternal_v0_24__pxrReserved__10TfIteratorINS_36PcpNodeRef_PrivateChildrenConstRangeELb0EEppEv.exit: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__10TfIteratorINS_36PcpNodeRef_PrivateChildrenConstRangeELb0EEdeEv.exit - %34 = getelementptr inbounds nuw %"struct.pxrInternal_v0_24__pxrReserved__::PcpPrimIndex_Graph::_Node", ptr %28, i64 %32, i32 3, i32 5 + %34 = getelementptr inbounds nuw %"struct.pxrInternal_v0_24__pxrReserved__::PcpPrimIndex_Graph::_Node", ptr %invariant.gep, i64 %33 %35 = load i16, ptr %34, align 2 %36 = zext i16 %35 to i64 store i64 %36, ptr %22, align 8 diff --git a/bench/openusd/optimized/typeTraits.ll b/bench/openusd/optimized/typeTraits.ll index 4b66349edf2..98c0feb9ae6 100644 --- a/bench/openusd/optimized/typeTraits.ll +++ b/bench/openusd/optimized/typeTraits.ll @@ -22,33 +22,37 @@ define noundef ptr @_ZN10OpenSubdiv6v3_6_03Sdc16SchemeTypeTraits7GetNameENS1_10S ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define noundef i32 @_ZN10OpenSubdiv6v3_6_03Sdc16SchemeTypeTraits23GetTopologicalSplitTypeENS1_10SchemeTypeE(i32 noundef %0) local_unnamed_addr #0 align 2 { %2 = zext i32 %0 to i64 - %3 = getelementptr inbounds nuw [3 x %"struct.OpenSubdiv::v3_6_0::Sdc::TraitsEntry"], ptr @_ZN10OpenSubdiv6v3_6_03SdcL17staticTraitsTableE, i64 0, i64 %2, i32 1 - %4 = load i32, ptr %3, align 8 - ret i32 %4 + %3 = getelementptr inbounds nuw [3 x %"struct.OpenSubdiv::v3_6_0::Sdc::TraitsEntry"], ptr @_ZN10OpenSubdiv6v3_6_03SdcL17staticTraitsTableE, i64 0, i64 %2 + %4 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %5 = load i32, ptr %4, align 8 + ret i32 %5 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define noundef i32 @_ZN10OpenSubdiv6v3_6_03Sdc16SchemeTypeTraits18GetRegularFaceSizeENS1_10SchemeTypeE(i32 noundef %0) local_unnamed_addr #0 align 2 { %2 = zext i32 %0 to i64 - %3 = getelementptr inbounds nuw [3 x %"struct.OpenSubdiv::v3_6_0::Sdc::TraitsEntry"], ptr @_ZN10OpenSubdiv6v3_6_03SdcL17staticTraitsTableE, i64 0, i64 %2, i32 2 - %4 = load i32, ptr %3, align 4 - ret i32 %4 + %3 = getelementptr inbounds nuw [3 x %"struct.OpenSubdiv::v3_6_0::Sdc::TraitsEntry"], ptr @_ZN10OpenSubdiv6v3_6_03SdcL17staticTraitsTableE, i64 0, i64 %2 + %4 = getelementptr inbounds nuw i8, ptr %3, i64 12 + %5 = load i32, ptr %4, align 4 + ret i32 %5 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define noundef i32 @_ZN10OpenSubdiv6v3_6_03Sdc16SchemeTypeTraits23GetRegularVertexValenceENS1_10SchemeTypeE(i32 noundef %0) local_unnamed_addr #0 align 2 { %2 = zext i32 %0 to i64 - %3 = getelementptr inbounds nuw [3 x %"struct.OpenSubdiv::v3_6_0::Sdc::TraitsEntry"], ptr @_ZN10OpenSubdiv6v3_6_03SdcL17staticTraitsTableE, i64 0, i64 %2, i32 3 - %4 = load i32, ptr %3, align 8 - ret i32 %4 + %3 = getelementptr inbounds nuw [3 x %"struct.OpenSubdiv::v3_6_0::Sdc::TraitsEntry"], ptr @_ZN10OpenSubdiv6v3_6_03SdcL17staticTraitsTableE, i64 0, i64 %2 + %4 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %5 = load i32, ptr %4, align 8 + ret i32 %5 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define noundef i32 @_ZN10OpenSubdiv6v3_6_03Sdc16SchemeTypeTraits24GetLocalNeighborhoodSizeENS1_10SchemeTypeE(i32 noundef %0) local_unnamed_addr #0 align 2 { %2 = zext i32 %0 to i64 - %3 = getelementptr inbounds nuw [3 x %"struct.OpenSubdiv::v3_6_0::Sdc::TraitsEntry"], ptr @_ZN10OpenSubdiv6v3_6_03SdcL17staticTraitsTableE, i64 0, i64 %2, i32 4 - %4 = load i32, ptr %3, align 4 - ret i32 %4 + %3 = getelementptr inbounds nuw [3 x %"struct.OpenSubdiv::v3_6_0::Sdc::TraitsEntry"], ptr @_ZN10OpenSubdiv6v3_6_03SdcL17staticTraitsTableE, i64 0, i64 %2 + %4 = getelementptr inbounds nuw i8, ptr %3, i64 20 + %5 = load i32, ptr %4, align 4 + ret i32 %5 } attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/openvdb/optimized/AttributeSet.ll b/bench/openvdb/optimized/AttributeSet.ll index 23f1ba62281..90c1db0a14b 100644 --- a/bench/openvdb/optimized/AttributeSet.ll +++ b/bench/openvdb/optimized/AttributeSet.ll @@ -4143,7 +4143,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 @@ -5345,6 +5346,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 !14 @@ -5376,7 +5378,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/Queue.ll b/bench/openvdb/optimized/Queue.ll index ef74afb7a16..343f86d6d79 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 @@ -261,8 +261,7 @@ 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 [ 0, %entry ], [ %inc.i.i.i.i, %for.body.i.i.i.i ] - %node_list.idx.i.i.i.i = shl nuw nsw i64 %i.07.i.i.i.i, 4 - %gep.i.i.i.i = getelementptr inbounds nuw i8, ptr %invariant.gep.i.i.i.i, i64 %node_list.idx.i.i.i.i + %gep.i.i.i.i = getelementptr inbounds nuw [2 x %"struct.tbb::detail::d2::hash_map_base>, tbb::detail::d1::spin_rw_mutex>::bucket"], ptr %invariant.gep.i.i.i.i, i64 0, i64 %i.07.i.i.i.i store atomic i64 0, ptr %gep.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 [64 x %"struct.std::atomic.8"], ptr %my_table.i.i.i, i64 0, 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 [64 x %"struct.std::atomic.8"], ptr %my_table.i.i.i, i64 0, 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 [64 x %"struct.std::atomic.8"], ptr %my_table.i.i.i, i64 0, 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 @@ -4610,11 +4612,12 @@ do.body.i.i: ; preds = %_ZN3tbb6detail2d213 %5 = load atomic i64, ptr %arrayidx.i.i monotonic, align 8 %atomic-temp.i.0.i.i.i = inttoptr i64 %5 to ptr %cond.i.i = tail call i64 @llvm.umax.i64(i64 %s.0.i.i, i64 1) + %invariant.gep.i.i = getelementptr i8, ptr %atomic-temp.i.0.i.i.i, i64 8 br label %for.body.i.i 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 %"struct.tbb::detail::d2::hash_map_base>, tbb::detail::d1::spin_rw_mutex>::bucket", ptr %invariant.gep.i.i, i64 %i.026.i.i %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 da041705680..4e1c37112fb 100644 --- a/bench/ozz-animation/optimized/raw_track.ll +++ b/bench/ozz-animation/optimized/raw_track.ll @@ -102,6 +102,7 @@ define weak_odr dso_local noundef zeroext i1 @_ZNK3ozz9animation7offline8interna %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load ptr, ptr %2, align 8, !tbaa !4 %4 = load ptr, ptr %0, align 8, !tbaa !10 + %invariant.gep = getelementptr i8, ptr %4, i64 4 %.not22 = icmp eq ptr %3, %4 br i1 %.not22, label %.critedge, label %.lr.ph.preheader @@ -115,7 +116,7 @@ define weak_odr dso_local noundef zeroext i1 @_ZNK3ozz9animation7offline8interna .lr.ph: ; preds = %.lr.ph, %.lr.ph.preheader %.01524 = phi i64 [ 0, %.lr.ph.preheader ], [ %14, %.lr.ph ] %.01623 = phi float [ -1.000000e+00, %.lr.ph.preheader ], [ %10, %.lr.ph ] - %9 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawTrackKeyframe", ptr %4, i64 %.01524, i32 1 + %9 = getelementptr %"struct.ozz::animation::offline::RawTrackKeyframe", ptr %invariant.gep, i64 %.01524 %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 @@ -159,6 +160,7 @@ define weak_odr dso_local noundef zeroext i1 @_ZNK3ozz9animation7offline8interna %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load ptr, ptr %2, align 8, !tbaa !17 %4 = load ptr, ptr %0, align 8, !tbaa !20 + %invariant.gep = getelementptr i8, ptr %4, i64 4 %.not22 = icmp eq ptr %3, %4 br i1 %.not22, label %.critedge, label %.lr.ph.preheader @@ -172,7 +174,7 @@ define weak_odr dso_local noundef zeroext i1 @_ZNK3ozz9animation7offline8interna .lr.ph: ; preds = %.lr.ph, %.lr.ph.preheader %.01524 = phi i64 [ 0, %.lr.ph.preheader ], [ %14, %.lr.ph ] %.01623 = phi float [ -1.000000e+00, %.lr.ph.preheader ], [ %10, %.lr.ph ] - %9 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawTrackKeyframe.7", ptr %4, i64 %.01524, i32 1 + %9 = getelementptr %"struct.ozz::animation::offline::RawTrackKeyframe.7", ptr %invariant.gep, i64 %.01524 %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 @@ -296,6 +298,7 @@ define weak_odr dso_local noundef zeroext i1 @_ZNK3ozz9animation7offline8interna %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load ptr, ptr %2, align 8, !tbaa !40 %4 = load ptr, ptr %0, align 8, !tbaa !43 + %invariant.gep = getelementptr i8, ptr %4, i64 4 %.not22 = icmp eq ptr %3, %4 br i1 %.not22, label %.critedge, label %.lr.ph.preheader @@ -309,7 +312,7 @@ define weak_odr dso_local noundef zeroext i1 @_ZNK3ozz9animation7offline8interna .lr.ph: ; preds = %.lr.ph, %.lr.ph.preheader %.01524 = phi i64 [ 0, %.lr.ph.preheader ], [ %14, %.lr.ph ] %.01623 = phi float [ -1.000000e+00, %.lr.ph.preheader ], [ %10, %.lr.ph ] - %9 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawTrackKeyframe.13", ptr %4, i64 %.01524, i32 1 + %9 = getelementptr %"struct.ozz::animation::offline::RawTrackKeyframe.13", ptr %invariant.gep, i64 %.01524 %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 @@ -433,6 +436,7 @@ define weak_odr dso_local noundef zeroext i1 @_ZNK3ozz9animation7offline8interna %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load ptr, ptr %2, align 8, !tbaa !50 %4 = load ptr, ptr %0, align 8, !tbaa !53 + %invariant.gep = getelementptr i8, ptr %4, i64 4 %.not22 = icmp eq ptr %3, %4 br i1 %.not22, label %.critedge, label %.lr.ph.preheader @@ -446,7 +450,7 @@ define weak_odr dso_local noundef zeroext i1 @_ZNK3ozz9animation7offline8interna .lr.ph: ; preds = %.lr.ph, %.lr.ph.preheader %.01524 = phi i64 [ 0, %.lr.ph.preheader ], [ %14, %.lr.ph ] %.01623 = phi float [ -1.000000e+00, %.lr.ph.preheader ], [ %10, %.lr.ph ] - %9 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawTrackKeyframe.19", ptr %4, i64 %.01524, i32 1 + %9 = getelementptr %"struct.ozz::animation::offline::RawTrackKeyframe.19", ptr %invariant.gep, i64 %.01524 %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 @@ -570,6 +574,7 @@ define weak_odr dso_local noundef zeroext i1 @_ZNK3ozz9animation7offline8interna %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load ptr, ptr %2, align 8, !tbaa !60 %4 = load ptr, ptr %0, align 8, !tbaa !63 + %invariant.gep = getelementptr i8, ptr %4, i64 4 %.not22 = icmp eq ptr %3, %4 br i1 %.not22, label %.critedge, label %.lr.ph.preheader @@ -583,7 +588,7 @@ define weak_odr dso_local noundef zeroext i1 @_ZNK3ozz9animation7offline8interna .lr.ph: ; preds = %.lr.ph, %.lr.ph.preheader %.01524 = phi i64 [ 0, %.lr.ph.preheader ], [ %14, %.lr.ph ] %.01623 = phi float [ -1.000000e+00, %.lr.ph.preheader ], [ %10, %.lr.ph ] - %9 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawTrackKeyframe.25", ptr %4, i64 %.01524, i32 1 + %9 = getelementptr %"struct.ozz::animation::offline::RawTrackKeyframe.25", ptr %invariant.gep, i64 %.01524 %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 diff --git a/bench/pbrt-v4/optimized/scene.ll b/bench/pbrt-v4/optimized/scene.ll index 092eb70decf..49efe81c150 100644 --- a/bench/pbrt-v4/optimized/scene.ll +++ b/bench/pbrt-v4/optimized/scene.ll @@ -24077,10 +24077,17 @@ _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 %.loopexit.thread + +.loopexit.thread: ; preds = %_ZNKSt8functionIFN4pstd3pmr21polymorphic_allocatorISt4byteEEvEEclEv.exit + %55 = load i64, ptr %2, align 8, !tbaa !156 + %56 = getelementptr inbounds nuw %"class.pstd::optional.475", ptr %50, i64 %32 + %57 = getelementptr inbounds nuw i8, ptr %56, i64 16 + br label %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit33 .preheader: ; preds = %_ZNKSt8functionIFN4pstd3pmr21polymorphic_allocatorISt4byteEEvEEclEv.exit %54 = load ptr, ptr %11, align 8, !tbaa !631 @@ -24088,44 +24095,55 @@ _ZNKSt8functionIFN4pstd3pmr21polymorphic_allocatorISt4byteEEvEEclEv.exit: ; pred %56 = ptrtoint ptr %50 to i64 %57 = sub i64 %55, %56 %58 = sdiv exact i64 %57, 24 + %invariant.gep = getelementptr inbounds nuw i8, ptr %50, i64 16 %.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 + br label %63 -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 +63: ; preds = %.preheader, %69 + %.127 = phi i32 [ %65, %69 ], [ %indvars58, %.preheader ] + %.2 = phi i32 [ %.3, %69 ], [ %.02546, %.preheader ] + %64 = add i32 %.2, %.127 + %65 = add nuw nsw i32 %.127, 1 + %66 = zext i32 %64 to i64 + %.not = icmp ugt i64 %62, %66 + br i1 %.not, label %69, label %67 -.loopexit.loopexit: ; preds = %65 - %.pre59 = zext i32 %.3 to i64 +65: ; preds = %63 + %68 = urem i32 %64, %.rhs.trunc36 + %.pre = zext i32 %68 to i64 br label %.loopexit -.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 - %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 +.loopexit: ; preds = %67, %63 + %.pre-phi60 = phi i64 [ %.pre, %67 ], [ %66, %63 ] + %.3 = phi i32 [ %68, %67 ], [ %64, %63 ] + %70 = getelementptr inbounds nuw %"class.pstd::optional.475", ptr %invariant.gep, i64 %.pre-phi60 + %70 = load i8, ptr %70, align 8, !tbaa !633, !range !168, !noundef !169 + %71 = trunc nuw i8 %70 to i1 + br i1 %71, label %63, label %.loopexit, !llvm.loop !636 + +.loopexit: ; preds = %69 + %.phi.trans.insert = zext i32 %.3 to i64 + %.phi.trans.insert59 = getelementptr inbounds nuw %"class.pstd::optional.475", ptr %50, i64 %.phi.trans.insert + %.phi.trans.insert60 = getelementptr inbounds nuw i8, ptr %.phi.trans.insert59, i64 16 + %.pre61 = load i8, ptr %.phi.trans.insert60, align 8, !tbaa !633, !range !168 + %72 = trunc nuw i8 %.pre61 to i1 + %73 = load i64, ptr %2, align 8, !tbaa !156 + %74 = getelementptr inbounds nuw %"class.pstd::optional.475", ptr %50, i64 %.phi.trans.insert + %75 = getelementptr inbounds nuw i8, ptr %74, i64 16 + br i1 %72, label %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEE5valueEv.exit.i.i, label %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit33 + +_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEE5valueEv.exit.i.i: ; preds = %.loopexit + store i8 0, ptr %75, align 8, !tbaa !633 + br label %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit33 + +_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit33: ; preds = %.loopexit.thread, %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEE5valueEv.exit.i.i, %.loopexit + %76 = phi ptr [ %57, %.loopexit.thread ], [ %75, %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEE5valueEv.exit.i.i ], [ %75, %.loopexit ] + %77 = phi ptr [ %56, %.loopexit.thread ], [ %74, %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEE5valueEv.exit.i.i ], [ %74, %.loopexit ] + %78 = phi i64 [ %55, %.loopexit.thread ], [ %73, %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEE5valueEv.exit.i.i ], [ %73, %.loopexit ] + store i64 %78, ptr %77, align 8, !tbaa !156 + %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %77, 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 %76, align 8, !tbaa !633 br label %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit32 72: ; preds = %_ZN4pstd8optionalIN4pbrt11ThreadLocalINS_3pmr21polymorphic_allocatorISt4byteEEE5EntryEEptEv.exit @@ -24140,7 +24158,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, %82 ], [ %73, %79 ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #35 %77 = trunc nuw i64 %indvars.iv.next to i32 store i32 %77, ptr %3, align 4, !tbaa !158 @@ -24149,8 +24167,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 [ %77, %_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(i64 8, ptr nonnull %2) #35 diff --git a/bench/pingora-rs/optimized/31j9x1yac3tbgzqgz7fdnl2q0.ll b/bench/pingora-rs/optimized/31j9x1yac3tbgzqgz7fdnl2q0.ll index 8d2b56ccafb..036a828e973 100644 --- a/bench/pingora-rs/optimized/31j9x1yac3tbgzqgz7fdnl2q0.ll +++ b/bench/pingora-rs/optimized/31j9x1yac3tbgzqgz7fdnl2q0.ll @@ -14,25 +14,29 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ %.sroa.0.0.copyload = load ptr, ptr %2, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 %.sroa.4.0.copyload = load i64, ptr %.sroa.4.0..sroa_idx, align 8 - %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 16 - %.sroa.7.0.copyload = load ptr, ptr %.sroa.7.0..sroa_idx, align 8 %4 = icmp ult i64 %0, %1 br i1 %4, label %.lr.ph.i, label %_ZN4core4iter6traits8iterator8Iterator4fold17hbebbec2a2d9b6a57E.exit -.lr.ph.i: ; preds = %3, %.lr.ph.i - %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 - store i8 0, ptr %.sroa.43.0..sroa_idx.i.i, align 8, !noalias !3 - %7 = add i64 %5, 1 - %exitcond.not.i = icmp eq i64 %6, %1 - br i1 %exitcond.not.i, label %_ZN4core4iter6traits8iterator8Iterator4fold17hbebbec2a2d9b6a57E.exit, label %.lr.ph.i - -_ZN4core4iter6traits8iterator8Iterator4fold17hbebbec2a2d9b6a57E.exit: ; preds = %.lr.ph.i, %3 - %.val4.i = phi i64 [ %.sroa.4.0.copyload, %3 ], [ %7, %.lr.ph.i ] - %8 = icmp ne ptr %.sroa.0.0.copyload, null - tail call void @llvm.assume(i1 %8) +.lr.ph.i: ; preds = %3 + %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 16 + %.sroa.7.0.copyload = load ptr, ptr %.sroa.7.0..sroa_idx, align 8 + %invariant.gep.i = getelementptr i8, ptr %.sroa.7.0.copyload, i64 32 + br label %5 + +5:; preds = %5, %.lr.ph.i + %6 = phi i64 [ %.sroa.4.0.copyload, %.lr.ph.i ], [ %8, %5 ] + %.sroa.0.010.i = phi i64 [ %0, %.lr.ph.i ], [ %7, %5 ] + %7 = add nuw i64 %.sroa.0.010.i, 1 + %gep.i = getelementptr { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %invariant.gep.i, i64 %6 + store i8 0, ptr %gep.i, align 8, !noalias !3 + %8 = add i64 %6, 1 + %exitcond.not.i = icmp eq i64 %7, %1 + br i1 %exitcond.not.i, label %_ZN4core4iter6traits8iterator8Iterator4fold17hbebbec2a2d9b6a57E.exit, label %5 + +_ZN4core4iter6traits8iterator8Iterator4fold17hbebbec2a2d9b6a57E.exit: ; preds = %5, %3 + %.val4.i = phi i64 [ %.sroa.4.0.copyload, %3 ], [ %8, %5 ] + %9 = icmp ne ptr %.sroa.0.0.copyload, null + tail call void @llvm.assume(i1 %9) store i64 %.val4.i, ptr %.sroa.0.0.copyload, align 8, !noalias !12 ret void } diff --git a/bench/pingora-rs/optimized/9p340cni5ef4byzbq5uzx23g8.ll b/bench/pingora-rs/optimized/9p340cni5ef4byzbq5uzx23g8.ll index b766bb5f8eb..fbb539208a4 100644 --- a/bench/pingora-rs/optimized/9p340cni5ef4byzbq5uzx23g8.ll +++ b/bench/pingora-rs/optimized/9p340cni5ef4byzbq5uzx23g8.ll @@ -7511,18 +7511,22 @@ define hidden void @"_ZN98_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..s %15 = icmp ult i64 %1, %2 br i1 %15, label %.lr.ph.i.i.i.i.i.i, label %"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17hc5c34e904aaf33b2E.exit" -.lr.ph.i.i.i.i.i.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h1a9f4d9a269dd838E.exit.i.i.i", %.lr.ph.i.i.i.i.i.i - %16 = phi i64 [ %18, %.lr.ph.i.i.i.i.i.i ], [ 0, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h1a9f4d9a269dd838E.exit.i.i.i" ] - %.sroa.0.010.i.i.i.i.i.i = phi i64 [ %17, %.lr.ph.i.i.i.i.i.i ], [ %1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h1a9f4d9a269dd838E.exit.i.i.i" ] - %17 = add nuw i64 %.sroa.0.010.i.i.i.i.i.i, 1 - %.sroa.43.0..sroa_idx.i.i.i.i.i.i.i = getelementptr inbounds { { { [9 x i64] } }, { i8 }, [7 x i8] }, ptr %13, i64 %16, i32 1 - store i8 0, ptr %.sroa.43.0..sroa_idx.i.i.i.i.i.i.i, align 8, !noalias !519 - %18 = add nuw i64 %16, 1 - %exitcond.not.i.i.i.i.i.i = icmp eq i64 %17, %2 - br i1 %exitcond.not.i.i.i.i.i.i, label %"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17hc5c34e904aaf33b2E.exit", label %.lr.ph.i.i.i.i.i.i - -"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17hc5c34e904aaf33b2E.exit": ; preds = %.lr.ph.i.i.i.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h1a9f4d9a269dd838E.exit.i.i.i" - %.val4.i.i.i.i.i.i = phi i64 [ 0, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h1a9f4d9a269dd838E.exit.i.i.i" ], [ %18, %.lr.ph.i.i.i.i.i.i ] +.lr.ph.i.i.i.i.i.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h1a9f4d9a269dd838E.exit.i.i.i" + %invariant.gep.i.i.i.i.i.i = getelementptr i8, ptr %13, i64 72 + br label %"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17hc5c34e904aaf33b2E.exit" + +"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17hc5c34e904aaf33b2E.exit": ; preds = %16, %.lr.ph.i.i.i.i.i.i + %.val4.i.i.i.i.i.i = phi i64 [ 0, %.lr.ph.i.i.i.i.i.i ], [ %19, %16 ] + %.sroa.0.010.i.i.i.i.i.i = phi i64 [ %1, %.lr.ph.i.i.i.i.i.i ], [ %18, %16 ] + %18 = add nuw i64 %.sroa.0.010.i.i.i.i.i.i, 1 + %gep.i.i.i.i.i.i = getelementptr { { { [9 x i64] } }, { i8 }, [7 x i8] }, ptr %invariant.gep.i.i.i.i.i.i, i64 %17 + store i8 0, ptr %gep.i.i.i.i.i.i, align 8, !noalias !519 + %19 = add nuw i64 %17, 1 + %exitcond.not.i.i.i.i.i.i = icmp eq i64 %18, %2 + br i1 %exitcond.not.i.i.i.i.i.i, label %"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17hc5c34e904aaf33b2E.exit", label %16 + +"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17hc5c34e904aaf33b2E.exit": ; preds = %16, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h1a9f4d9a269dd838E.exit.i.i.i" + %.val4.i.i.i.i.i.i = phi i64 [ 0, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h1a9f4d9a269dd838E.exit.i.i.i" ], [ %19, %16 ] store i64 %9, ptr %0, align 8, !alias.scope !512, !noalias !532 %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %13, ptr %.sroa.4.0..sroa_idx.i, align 8, !alias.scope !512, !noalias !532 diff --git a/bench/pocketpy/optimized/gc.ll b/bench/pocketpy/optimized/gc.ll index c10b269b46b..3115f9bae8b 100644 --- a/bench/pocketpy/optimized/gc.ll +++ b/bench/pocketpy/optimized/gc.ll @@ -704,44 +704,47 @@ define void @_ZNK4pkpy8FuncDecl8_gc_markEv(ptr noundef nonnull readonly align 8 br i1 %12, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %1, %34 - %13 = phi ptr [ %35, %34 ], [ %6, %1 ] - %indvars.iv = phi i64 [ %indvars.iv.next, %34 ], [ 0, %1 ] - %14 = getelementptr inbounds nuw %"struct.pkpy::FuncDecl::KwArg", ptr %13, i64 %indvars.iv, i32 2 - %15 = load ptr, ptr %14, align 8 - %16 = ptrtoint ptr %15 to i64 - %17 = and i64 %16, 3 - %.not = icmp eq i64 %17, 0 - br i1 %.not, label %18, label %34 - -18: ; preds = %.lr.ph - %19 = getelementptr inbounds nuw i8, ptr %15, i64 9 - %20 = load i8, ptr %19, align 1 - %21 = trunc i8 %20 to i1 - br i1 %21, label %34, label %22 - -22: ; preds = %18 - store i8 1, ptr %19, align 1 - %23 = load ptr, ptr %4, align 8 - %24 = getelementptr inbounds nuw %"struct.pkpy::FuncDecl::KwArg", ptr %23, i64 %indvars.iv, i32 2 - %25 = load ptr, ptr %24, align 8 - %26 = load ptr, ptr %25, align 8 + %13 = phi ptr [ %35, %37 ], [ %6, %1 ] + %indvars.iv = phi i64 [ %indvars.iv.next, %37 ], [ 0, %1 ] + %14 = getelementptr inbounds nuw %"struct.pkpy::FuncDecl::KwArg", ptr %13, i64 %indvars.iv + %15 = getelementptr inbounds nuw i8, ptr %14, i64 8 + %16 = load ptr, ptr %15, align 8 + %17 = ptrtoint ptr %16 to i64 + %18 = and i64 %17, 3 + %.not = icmp eq i64 %18, 0 + br i1 %.not, label %19, label %37 + +19: ; preds = %.lr.ph + %20 = getelementptr inbounds nuw i8, ptr %16, i64 9 + %21 = load i8, ptr %20, align 1 + %22 = trunc i8 %21 to i1 + br i1 %22, label %37, label %23 + +23: ; preds = %19 + store i8 1, ptr %20, align 1 + %24 = load ptr, ptr %4, align 8 + %25 = getelementptr inbounds nuw %"struct.pkpy::FuncDecl::KwArg", ptr %24, i64 %indvars.iv + %26 = getelementptr inbounds nuw i8, ptr %25, i64 8 %27 = load ptr, ptr %26, align 8 - tail call void %27(ptr noundef nonnull align 8 dereferenceable(24) %25) - %28 = load ptr, ptr %4, align 8 - %29 = getelementptr inbounds nuw %"struct.pkpy::FuncDecl::KwArg", ptr %28, i64 %indvars.iv, i32 2 - %30 = load ptr, ptr %29, align 8 - %31 = getelementptr inbounds nuw i8, ptr %30, i64 16 - %32 = load ptr, ptr %31, align 8 - %.not8 = icmp eq ptr %32, null - br i1 %.not8, label %34, label %33 - -33: ; preds = %22 - tail call void @_ZN4pkpy17_gc_mark_namedictEPNS_12NameDictImplIPNS_8PyObjectEEE(ptr noundef nonnull %32) + %28 = load ptr, ptr %27, align 8 + %28 = load ptr, ptr %28, align 8 + tail call void %29(ptr noundef nonnull align 8 dereferenceable(24) %27) + %30 = load ptr, ptr %4, align 8 + %31 = getelementptr inbounds nuw %"struct.pkpy::FuncDecl::KwArg", ptr %30, i64 %indvars.iv + %32 = getelementptr inbounds nuw i8, ptr %31, i64 8 + %33 = load ptr, ptr %32, align 8 + %34 = getelementptr inbounds nuw i8, ptr %33, i64 16 + %35 = load ptr, ptr %34, align 8 + %.not8 = icmp eq ptr %35, null + br i1 %.not8, label %37, label %36 + +36: ; preds = %23 + tail call void @_ZN4pkpy17_gc_mark_namedictEPNS_12NameDictImplIPNS_8PyObjectEEE(ptr noundef nonnull %35) %.pre = load ptr, ptr %4, align 8 br label %34 -34: ; preds = %.lr.ph, %18, %33, %22 - %35 = phi ptr [ %13, %.lr.ph ], [ %13, %18 ], [ %.pre, %33 ], [ %28, %22 ] +34: ; preds = %.lr.ph, %19, %36, %23 + %35 = phi ptr [ %13, %.lr.ph ], [ %13, %19 ], [ %.pre, %36 ], [ %30, %23 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %36 = load ptr, ptr %3, align 8 %37 = ptrtoint ptr %36 to i64 diff --git a/bench/pola-rs/optimized/7m5bf1eqnwjxx8o6tuahkftad.ll b/bench/pola-rs/optimized/7m5bf1eqnwjxx8o6tuahkftad.ll index 379b4b73dd7..8563d36b2b4 100644 --- a/bench/pola-rs/optimized/7m5bf1eqnwjxx8o6tuahkftad.ll +++ b/bench/pola-rs/optimized/7m5bf1eqnwjxx8o6tuahkftad.ll @@ -967,17 +967,18 @@ define { ptr, i64 } @_ZN12polars_utils7idx_map13bytes_idx_map3Key3get17h5b861b85 %6 = zext i32 %5 to i64 %7 = icmp ugt i64 %2, %6 tail call void @llvm.assume(i1 %7) - %8 = getelementptr inbounds nuw { { { i64, ptr, {} }, {} }, i64 }, ptr %1, i64 %6, i32 0, i32 0, i32 1 - %9 = load ptr, ptr %8, align 8, !nonnull !8, !noundef !8 - %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %11 = load i64, ptr %10, align 8, !noundef !8 - %12 = getelementptr inbounds nuw i8, ptr %0, i64 20 - %13 = load i32, ptr %12, align 4, !noundef !8 - %14 = zext i32 %13 to i64 - %15 = getelementptr inbounds nuw i8, ptr %9, i64 %11 - %16 = insertvalue { ptr, i64 } poison, ptr %15, 0 - %17 = insertvalue { ptr, i64 } %16, i64 %14, 1 - ret { ptr, i64 } %17 + %8 = getelementptr inbounds nuw { { { i64, ptr, {} }, {} }, i64 }, ptr %1, i64 %6 + %9 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %10 = load ptr, ptr %9, align 8, !nonnull !8, !noundef !8 + %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %12 = load i64, ptr %11, align 8, !noundef !8 + %13 = getelementptr inbounds nuw i8, ptr %0, i64 20 + %14 = load i32, ptr %13, align 4, !noundef !8 + %15 = zext i32 %14 to i64 + %16 = getelementptr inbounds nuw i8, ptr %10, i64 %12 + %17 = insertvalue { ptr, i64 } poison, ptr %16, 0 + %18 = insertvalue { ptr, i64 } %17, i64 %15, 1 + ret { ptr, i64 } %18 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/pola-rs/optimized/9n2idp9g5wabsfk9h5z1ax8tc.ll b/bench/pola-rs/optimized/9n2idp9g5wabsfk9h5z1ax8tc.ll index 3c34f371372..f2737042291 100644 --- a/bench/pola-rs/optimized/9n2idp9g5wabsfk9h5z1ax8tc.ll +++ b/bench/pola-rs/optimized/9n2idp9g5wabsfk9h5z1ax8tc.ll @@ -6231,12 +6231,13 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ %8 = ptrtoint ptr %0 to i64 %9 = sub nuw i64 %7, %8 %10 = udiv exact i64 %9, 72 + %invariant.gep.i = getelementptr i8, ptr %0, i64 48 br label %11 11: ; preds = %11, %6 %12 = phi i64 [ %15, %11 ], [ %.sroa.5.0.copyload, %6 ] %.sroa.06.0.i = phi i64 [ %16, %11 ], [ 0, %6 ] - %13 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, ptr %0, i64 %.sroa.06.0.i, i32 2 + %13 = getelementptr { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, ptr %invariant.gep.i, i64 %.sroa.06.0.i %14 = getelementptr inbounds nuw ptr, ptr %.sroa.8.0.copyload, i64 %12 store ptr %13, ptr %14, align 8, !noalias !1221 %15 = add i64 %12, 1 @@ -7832,12 +7833,13 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ %8 = ptrtoint ptr %0 to i64 %9 = sub nuw i64 %7, %8 %10 = udiv exact i64 %9, 72 + %invariant.gep.i = getelementptr i8, ptr %0, i64 24 br label %11 11: ; preds = %11, %6 %12 = phi i64 [ %15, %11 ], [ %.sroa.5.0.copyload, %6 ] %.sroa.06.0.i = phi i64 [ %16, %11 ], [ 0, %6 ] - %13 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, ptr %0, i64 %.sroa.06.0.i, i32 1 + %13 = getelementptr { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, ptr %invariant.gep.i, i64 %.sroa.06.0.i %14 = getelementptr inbounds nuw ptr, ptr %.sroa.8.0.copyload, i64 %12 store ptr %13, ptr %14, align 8, !noalias !1579 %15 = add i64 %12, 1 diff --git a/bench/pola-rs/optimized/cil91sqjm14i40hvtn93g3igf.ll b/bench/pola-rs/optimized/cil91sqjm14i40hvtn93g3igf.ll index d4616f4f85a..e45eff0e264 100644 --- a/bench/pola-rs/optimized/cil91sqjm14i40hvtn93g3igf.ll +++ b/bench/pola-rs/optimized/cil91sqjm14i40hvtn93g3igf.ll @@ -2702,19 +2702,18 @@ define hidden void @"_ZN12polars_arrow5array7binview31BinaryViewArrayGeneric$LT$ %12 = getelementptr i8, ptr %3, i64 32 br label %13 -13: ; preds = %.preheader, %13 - %.sroa.07.0.i = phi i64 [ %15, %13 ], [ 0, %.preheader ] - %.sroa.09.0.i = phi i64 [ %16, %13 ], [ 0, %.preheader ] - %.idx = mul i64 %.sroa.09.0.i, 24 - %14 = getelementptr i8, ptr %12, i64 %.idx - %.val.i = load i64, ptr %14, align 8, !noundef !3 - %15 = add i64 %.val.i, %.sroa.07.0.i - %16 = add nuw i64 %.sroa.09.0.i, 1 - %17 = icmp eq i64 %16, %4 - br i1 %17, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h914063353a945ba8E.exit", label %13 +13: ; preds = %13, %.preheader + %.sroa.07.0.i = phi i64 [ 0, %12 ], [ %14, %13 ] + %.sroa.09.0.i = phi i64 [ 0, %12 ], [ %15, %13 ] + %gep.i = getelementptr { ptr, ptr, i64 }, ptr %12, i64 %.sroa.09.0.i + %.val.i = load i64, ptr %gep.i, align 8, !noundef !3 + %14 = add i64 %.val.i, %.sroa.07.0.i + %15 = add nuw i64 %.sroa.09.0.i, 1 + %16 = icmp eq i64 %15, %4 + br i1 %16, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h914063353a945ba8E.exit", label %13 "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h914063353a945ba8E.exit": ; preds = %13, %10, %8 - %.sroa.01.0 = phi i64 [ %7, %8 ], [ 0, %10 ], [ %15, %13 ] + %.sroa.01.0 = phi i64 [ %7, %8 ], [ 0, %10 ], [ %14, %13 ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1, i64 32, i1 false) %18 = getelementptr inbounds nuw i8, ptr %0, i64 32 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 24, i1 false) diff --git a/bench/portaudio/optimized/pa_linux_pulseaudio.ll b/bench/portaudio/optimized/pa_linux_pulseaudio.ll index fbbff0062ef..6c9f3cabc41 100644 --- a/bench/portaudio/optimized/pa_linux_pulseaudio.ll +++ b/bench/portaudio/optimized/pa_linux_pulseaudio.ll @@ -305,73 +305,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 [1024 x ptr], ptr %27, i64 0, 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 [1024 x ptr], ptr %27, i64 0, 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 [1024 x ptr], ptr %26, i64 0, 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 [1024 x ptr], ptr %26, i64 0, 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 [1024 x %struct.PaDeviceInfo], ptr %13, i64 0, 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/proj/optimized/trans.ll b/bench/proj/optimized/trans.ll index af66d547966..29ae7aa63e8 100644 --- a/bench/proj/optimized/trans.ll +++ b/bench/proj/optimized/trans.ll @@ -1721,12 +1721,13 @@ define ptr @proj_trans_get_last_used_operation(ptr noundef %0) local_unnamed_add 14: ; preds = %7 %15 = zext nneg i32 %5 to i64 - %16 = getelementptr inbounds nuw %struct.PJCoordOperation, ptr %9, i64 %15, i32 10 - %17 = load ptr, ptr %16, align 8, !tbaa !79 + %16 = getelementptr inbounds nuw %struct.PJCoordOperation, ptr %9, i64 %15 + %17 = getelementptr inbounds nuw i8, ptr %16, i64 72 + %18 = load ptr, ptr %17, align 8, !tbaa !79 br label %.sink.split .sink.split: ; preds = %7, %14 - %.sink = phi ptr [ %17, %14 ], [ %0, %7 ] + %.sink = phi ptr [ %18, %14 ], [ %0, %7 ] %18 = tail call ptr @proj_clone(ptr noundef %13, ptr noundef %.sink) br label %19 diff --git a/bench/proj/optimized/unitconvert.ll b/bench/proj/optimized/unitconvert.ll index 1579ff46a86..9d0dbddba7b 100644 --- a/bench/proj/optimized/unitconvert.ll +++ b/bench/proj/optimized/unitconvert.ll @@ -682,35 +682,37 @@ define internal void @_ZL10forward_4dR8PJ_COORDP8PJconsts(ptr noundef nonnull al store double %11, ptr %.sroa.3.0..sroa_idx, align 8, !tbaa !68 %12 = load i32, ptr %4, align 8, !tbaa !49 %13 = icmp sgt i32 %12, -1 - br i1 %13, label %14, label %21 + br i1 %13, label %14, label %22 14: ; preds = %2 %15 = zext nneg i32 %12 to i64 - %16 = getelementptr inbounds nuw [5 x %"struct.(anonymous namespace)::TIME_UNITS"], ptr @_ZL10time_units, i64 0, i64 %15, i32 1 - %17 = load ptr, ptr %16, align 8, !tbaa !72 - %18 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %19 = load double, ptr %18, align 8, !tbaa !73 - %20 = tail call noundef double %17(double noundef %19) - store double %20, ptr %18, align 8, !tbaa !73 - br label %21 - -21: ; preds = %14, %2 - %22 = getelementptr inbounds nuw i8, ptr %4, i64 4 - %23 = load i32, ptr %22, align 4, !tbaa !51 - %24 = icmp sgt i32 %23, -1 - br i1 %24, label %25, label %32 - -25: ; preds = %21 - %26 = zext nneg i32 %23 to i64 - %27 = getelementptr inbounds nuw [5 x %"struct.(anonymous namespace)::TIME_UNITS"], ptr @_ZL10time_units, i64 0, i64 %26, i32 2 - %28 = load ptr, ptr %27, align 16, !tbaa !74 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %30 = load double, ptr %29, align 8, !tbaa !73 - %31 = tail call noundef double %28(double noundef %30) - store double %31, ptr %29, align 8, !tbaa !73 - br label %32 - -32: ; preds = %25, %21 + %16 = getelementptr inbounds nuw [5 x %"struct.(anonymous namespace)::TIME_UNITS"], ptr @_ZL10time_units, i64 0, i64 %15 + %17 = getelementptr inbounds nuw i8, ptr %16, i64 8 + %18 = load ptr, ptr %17, align 8, !tbaa !72 + %19 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %20 = load double, ptr %19, align 8, !tbaa !73 + %21 = tail call noundef double %18(double noundef %20) + store double %21, ptr %19, align 8, !tbaa !73 + br label %22 + +22: ; preds = %14, %2 + %23 = getelementptr inbounds nuw i8, ptr %4, i64 4 + %24 = load i32, ptr %23, align 4, !tbaa !51 + %25 = icmp sgt i32 %24, -1 + br i1 %25, label %26, label %34 + +26:; preds = %22 + %27 = zext nneg i32 %24 to i64 + %28 = getelementptr inbounds nuw [5 x %"struct.(anonymous namespace)::TIME_UNITS"], ptr @_ZL10time_units, i64 0, i64 %27 + %29 = getelementptr inbounds nuw i8, ptr %28, i64 16 + %30 = load ptr, ptr %29, align 16, !tbaa !74 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %32 = load double, ptr %31, align 8, !tbaa !73 + %33 = tail call noundef double %30(double noundef %32) + store double %33, ptr %31, align 8, !tbaa !73 + br label %34 + +34: ; preds = %26, %22 ret void } @@ -736,34 +738,36 @@ define internal void @_ZL10reverse_4dR8PJ_COORDP8PJconsts(ptr noundef nonnull al %12 = getelementptr inbounds nuw i8, ptr %4, i64 4 %13 = load i32, ptr %12, align 4, !tbaa !51 %14 = icmp sgt i32 %13, -1 - br i1 %14, label %15, label %22 + br i1 %14, label %15, label %23 15: ; preds = %2 %16 = zext nneg i32 %13 to i64 - %17 = getelementptr inbounds nuw [5 x %"struct.(anonymous namespace)::TIME_UNITS"], ptr @_ZL10time_units, i64 0, i64 %16, i32 1 - %18 = load ptr, ptr %17, align 8, !tbaa !72 - %19 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %20 = load double, ptr %19, align 8, !tbaa !73 - %21 = tail call noundef double %18(double noundef %20) - store double %21, ptr %19, align 8, !tbaa !73 - br label %22 - -22: ; preds = %15, %2 - %23 = load i32, ptr %4, align 8, !tbaa !49 - %24 = icmp sgt i32 %23, -1 - br i1 %24, label %25, label %32 - -25: ; preds = %22 - %26 = zext nneg i32 %23 to i64 - %27 = getelementptr inbounds nuw [5 x %"struct.(anonymous namespace)::TIME_UNITS"], ptr @_ZL10time_units, i64 0, i64 %26, i32 2 - %28 = load ptr, ptr %27, align 16, !tbaa !74 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %30 = load double, ptr %29, align 8, !tbaa !73 - %31 = tail call noundef double %28(double noundef %30) - store double %31, ptr %29, align 8, !tbaa !73 - br label %32 - -32: ; preds = %25, %22 + %17 = getelementptr inbounds nuw [5 x %"struct.(anonymous namespace)::TIME_UNITS"], ptr @_ZL10time_units, i64 0, i64 %16 + %18 = getelementptr inbounds nuw i8, ptr %17, i64 8 + %19 = load ptr, ptr %18, align 8, !tbaa !72 + %20 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %21 = load double, ptr %20, align 8, !tbaa !73 + %22 = tail call noundef double %19(double noundef %21) + store double %22, ptr %20, align 8, !tbaa !73 + br label %23 + +23:; preds = %15, %2 + %24 = load i32, ptr %4, align 8, !tbaa !49 + %25 = icmp sgt i32 %24, -1 + br i1 %25, label %26, label %34 + +26:; preds = %23 + %27 = zext nneg i32 %24 to i64 + %28 = getelementptr inbounds nuw [5 x %"struct.(anonymous namespace)::TIME_UNITS"], ptr @_ZL10time_units, i64 0, i64 %27 + %29 = getelementptr inbounds nuw i8, ptr %28, i64 16 + %30 = load ptr, ptr %29, align 16, !tbaa !74 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %32 = load double, ptr %31, align 8, !tbaa !73 + %33 = tail call noundef double %30(double noundef %32) + store double %33, ptr %31, align 8, !tbaa !73 + br label %34 + +34: ; preds = %26, %23 ret void } diff --git a/bench/proxygen/optimized/HPACKCodec.ll b/bench/proxygen/optimized/HPACKCodec.ll index e948e7a5391..cdab315e7a2 100644 --- a/bench/proxygen/optimized/HPACKCodec.ll +++ b/bench/proxygen/optimized/HPACKCodec.ll @@ -2518,15 +2518,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 @@ -2555,7 +2556,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 @@ -2564,12 +2566,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/QPACKHeaderTable.ll b/bench/proxygen/optimized/QPACKHeaderTable.ll index c6d17e3f3d6..e4445f9a506 100644 --- a/bench/proxygen/optimized/QPACKHeaderTable.ll +++ b/bench/proxygen/optimized/QPACKHeaderTable.ll @@ -934,7 +934,8 @@ if.end: ; preds = %land.rhs.i.i.i.i, % %20 = load ptr, ptr %names_, align 8, !nonnull !12, !noundef !12 %21 = load i32, ptr %arrayidx.i.i.i.i.le, align 4 %idx.ext8.i.i = zext i32 %21 to i64 - %second = getelementptr inbounds nuw %"struct.std::pair", ptr %20, i64 %idx.ext8.i.i, i32 1 + %second = getelementptr inbounds nuw %"struct.std::pair", ptr %20, i64 %idx.ext8.i.i + %second = getelementptr inbounds nuw i8, ptr %add.ptr9.i.i, i64 8 %22 = load ptr, ptr %second, align 8, !noalias !13 %cmp.i.i.i34.not57 = icmp eq ptr %second, %22 br i1 %cmp.i.i.i34.not57, label %for.end, label %for.body.lr.ph @@ -986,13 +987,14 @@ for.body.us61: ; preds = %for.inc.us67, %for. %_M_storage.i.i.i.us65 = getelementptr inbounds nuw i8, ptr %30, i64 16 %31 = load i32, ptr %_M_storage.i.i.i.us65, align 4 %conv.us = zext i32 %31 to i64 - %value13.us = getelementptr inbounds nuw %"class.proxygen::HPACKHeader", ptr %29, i64 %conv.us, i32 1 + %value13.us = getelementptr inbounds nuw %"class.proxygen::HPACKHeader", ptr %29, i64 %conv.us + %value13.us = getelementptr inbounds nuw i8, ptr %add.ptr.i35.us, i64 8 %32 = load ptr, ptr %value13.us, align 8 - %arrayidx.i.i.i.i.i.i.us = getelementptr inbounds nuw i8, ptr %value13.us, i64 23 + %arrayidx.i.i.i.i.i.i.us = getelementptr inbounds nuw i8, ptr %value13.us, i64 31 %33 = load i8, ptr %arrayidx.i.i.i.i.i.i.us, align 1 %cmp.i.i.i.i.i36.us = icmp ult i8 %33, 64 %cond.i.i.i.i.i.us = select i1 %cmp.i.i.i.i.i36.us, ptr %value13.us, ptr %32 - %size_.i.i.i.i.us = getelementptr inbounds nuw i8, ptr %value13.us, i64 8 + %size_.i.i.i.i.us = getelementptr inbounds nuw i8, ptr %value13.us, i64 16 %34 = load i64, ptr %size_.i.i.i.i.us, align 8 %conv.i.i.i.i.us = zext i8 %33 to i64 %sub.i.i.i.i.us = sub nsw i64 23, %conv.i.i.i.i.us @@ -1023,13 +1025,14 @@ for.body: ; preds = %for.body.lr.ph.spli %37 = load i32, ptr %_M_storage.i.i.i, align 4 %conv = zext i32 %37 to i64 %38 = load ptr, ptr %table_, align 8 - %value13 = getelementptr inbounds nuw %"class.proxygen::HPACKHeader", ptr %38, i64 %conv, i32 1 + %value13 = getelementptr inbounds nuw %"class.proxygen::HPACKHeader", ptr %38, i64 %conv + %value13 = getelementptr inbounds nuw i8, ptr %add.ptr.i35, i64 8 %39 = load ptr, ptr %value13, align 8 - %arrayidx.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %value13, i64 23 + %arrayidx.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %value13, i64 31 %40 = load i8, ptr %arrayidx.i.i.i.i.i.i, align 1 %cmp.i.i.i.i.i36 = icmp ult i8 %40, 64 %cond.i.i.i.i.i = select i1 %cmp.i.i.i.i.i36, ptr %value13, ptr %39 - %size_.i.i.i.i = getelementptr inbounds nuw i8, ptr %value13, i64 8 + %size_.i.i.i.i = getelementptr inbounds nuw i8, ptr %value13, i64 16 %41 = load i64, ptr %size_.i.i.i.i, align 8 %conv.i.i.i.i = zext i8 %40 to i64 %sub.i.i.i.i = sub nsw i64 23, %conv.i.i.i.i diff --git a/bench/pyo3-rs/optimized/36bd5489ry9qsmb9.ll b/bench/pyo3-rs/optimized/36bd5489ry9qsmb9.ll index 5e66631db4c..18012d30b00 100644 --- a/bench/pyo3-rs/optimized/36bd5489ry9qsmb9.ll +++ b/bench/pyo3-rs/optimized/36bd5489ry9qsmb9.ll @@ -13575,6 +13575,7 @@ define void @"_ZN4core3ptr73drop_in_place$LT$$LP$proc_macro2..TokenStream$C$syn. ; Function Attrs: nonlazybind uwtable define void @"_ZN4core3ptr73drop_in_place$LT$$u5b$pyo3_macros_backend..params..GilRefChecker$u5d$$GT$17h441bbaf3d7f71011E"(ptr align 8 %0, i64 %1) unnamed_addr #1 personality ptr @rust_eh_personality { + %invariant.gep = getelementptr i8, ptr %0, i64 8 br label %"_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit" "_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit": ; preds = %4, %2 @@ -13584,7 +13585,7 @@ define void @"_ZN4core3ptr73drop_in_place$LT$$u5b$pyo3_macros_backend..params..G 4: ; preds = %"_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit" %5 = add i64 %.sroa.0.0, 1 - %6 = getelementptr inbounds [0 x { i64, [3 x i64] }], ptr %0, i64 0, i64 %.sroa.0.0, i32 1 + %6 = getelementptr [0 x { i64, [3 x i64] }], ptr %invariant.gep, i64 0, i64 %.sroa.0.0 invoke void @"_ZN4core3ptr39drop_in_place$LT$proc_macro2..Ident$GT$17h88725f6f205abb91E"(ptr nonnull align 8 %6) to label %"_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit" unwind label %9 @@ -13592,7 +13593,7 @@ define void @"_ZN4core3ptr73drop_in_place$LT$$u5b$pyo3_macros_backend..params..G ret void "_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit7": ; preds = %11, %9 - %.sroa.0.1 = phi i64 [ %5, %9 ], [ %12, %11 ] + %.sroa.0.1 = phi i64 [ %5, %8 ], [ %12, %11 ] %8 = icmp eq i64 %.sroa.0.1, %1 br i1 %8, label %14, label %11 @@ -13603,7 +13604,7 @@ define void @"_ZN4core3ptr73drop_in_place$LT$$u5b$pyo3_macros_backend..params..G 11: ; preds = %"_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit7" %12 = add i64 %.sroa.0.1, 1 - %13 = getelementptr inbounds [0 x { i64, [3 x i64] }], ptr %0, i64 0, i64 %.sroa.0.1, i32 1 + %13 = getelementptr [0 x { i64, [3 x i64] }], ptr %invariant.gep, i64 0, i64 %.sroa.0.1 invoke void @"_ZN4core3ptr39drop_in_place$LT$proc_macro2..Ident$GT$17h88725f6f205abb91E"(ptr nonnull align 8 %13) to label %"_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit7" unwind label %15 @@ -15799,6 +15800,7 @@ define void @"_ZN4core3ptr86drop_in_place$LT$alloc..vec..Vec$LT$pyo3_macros_back %4 = load ptr, ptr %3, align 8 %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 %6 = load i64, ptr %5, align 8 + %invariant.gep.i.i = getelementptr i8, ptr %4, i64 8 br label %"_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit.i.i" "_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit.i.i": ; preds = %8, %1 @@ -15808,7 +15810,7 @@ define void @"_ZN4core3ptr86drop_in_place$LT$alloc..vec..Vec$LT$pyo3_macros_back 8: ; preds = %"_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit.i.i" %9 = add i64 %.sroa.0.0.i.i, 1 - %10 = getelementptr inbounds [0 x { i64, [3 x i64] }], ptr %4, i64 0, i64 %.sroa.0.0.i.i, i32 1 + %10 = getelementptr [0 x { i64, [3 x i64] }], ptr %invariant.gep.i.i, i64 0, i64 %.sroa.0.0.i.i invoke void @"_ZN4core3ptr39drop_in_place$LT$proc_macro2..Ident$GT$17h88725f6f205abb91E"(ptr nonnull align 8 %10) to label %"_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit.i.i" unwind label %12 @@ -15824,7 +15826,7 @@ define void @"_ZN4core3ptr86drop_in_place$LT$alloc..vec..Vec$LT$pyo3_macros_back 14: ; preds = %"_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit7.i.i" %15 = add i64 %.sroa.0.1.i.i, 1 - %16 = getelementptr inbounds [0 x { i64, [3 x i64] }], ptr %4, i64 0, i64 %.sroa.0.1.i.i, i32 1 + %16 = getelementptr [0 x { i64, [3 x i64] }], ptr %invariant.gep.i.i, i64 0, i64 %.sroa.0.1.i.i invoke void @"_ZN4core3ptr39drop_in_place$LT$proc_macro2..Ident$GT$17h88725f6f205abb91E"(ptr nonnull align 8 %16) to label %"_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit7.i.i" unwind label %17 @@ -15836,7 +15838,7 @@ define void @"_ZN4core3ptr86drop_in_place$LT$alloc..vec..Vec$LT$pyo3_macros_back .body: ; preds = %"_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit7.i.i" invoke void @"_ZN4core3ptr93drop_in_place$LT$alloc..raw_vec..RawVec$LT$pyo3_macros_backend..params..GilRefChecker$GT$$GT$17hb4a8461a29a6018fE"(ptr align 8 %0) #9 - to label %27 unwind label %25 + to label %25 unwind label %25 "_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h5395726b99aae10cE.exit": ; preds = %"_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit.i.i" call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) @@ -20058,6 +20060,7 @@ define void @"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop. %3 = load ptr, ptr %2, align 8 %4 = getelementptr inbounds nuw i8, ptr %0, i64 16 %5 = load i64, ptr %4, align 8 + %invariant.gep.i = getelementptr i8, ptr %3, i64 8 br label %"_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit.i" "_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit.i": ; preds = %7, %1 @@ -20067,7 +20070,7 @@ define void @"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop. 7: ; preds = %"_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit.i" %8 = add i64 %.sroa.0.0.i, 1 - %9 = getelementptr inbounds [0 x { i64, [3 x i64] }], ptr %3, i64 0, i64 %.sroa.0.0.i, i32 1 + %9 = getelementptr [0 x { i64, [3 x i64] }], ptr %invariant.gep.i, i64 0, i64 %.sroa.0.0.i invoke void @"_ZN4core3ptr39drop_in_place$LT$proc_macro2..Ident$GT$17h88725f6f205abb91E"(ptr nonnull align 8 %9) to label %"_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit.i" unwind label %11 @@ -20083,7 +20086,7 @@ define void @"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop. 13: ; preds = %"_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit7.i" %14 = add i64 %.sroa.0.1.i, 1 - %15 = getelementptr inbounds [0 x { i64, [3 x i64] }], ptr %3, i64 0, i64 %.sroa.0.1.i, i32 1 + %15 = getelementptr [0 x { i64, [3 x i64] }], ptr %invariant.gep.i, i64 0, i64 %.sroa.0.1.i invoke void @"_ZN4core3ptr39drop_in_place$LT$proc_macro2..Ident$GT$17h88725f6f205abb91E"(ptr nonnull align 8 %15) to label %"_ZN4core3ptr63drop_in_place$LT$pyo3_macros_backend..params..GilRefChecker$GT$17hcb2b9460cc4231efE.exit7.i" unwind label %17 diff --git a/bench/qdrant-rs/optimized/56pxyf4u4f2wpi3v.ll b/bench/qdrant-rs/optimized/56pxyf4u4f2wpi3v.ll index c2b4353c5c0..988adec4701 100644 --- a/bench/qdrant-rs/optimized/56pxyf4u4f2wpi3v.ll +++ b/bench/qdrant-rs/optimized/56pxyf4u4f2wpi3v.ll @@ -38,12 +38,13 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ %8 = ptrtoint ptr %0 to i64 %9 = sub nuw i64 %7, %8 %10 = lshr exact i64 %9, 3 + %invariant.gep.i = getelementptr i8, ptr %0, i64 4 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 + %13 = getelementptr { i32, float }, ptr %invariant.gep.i, i64 %.0.i %.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 @@ -1507,6 +1508,7 @@ define hidden void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core. %8 = ptrtoint ptr %0 to i64 %9 = sub nuw i64 %7, %8 %10 = lshr exact i64 %9, 3 + %invariant.gep = getelementptr i8, ptr %0, i64 4 %11 = getelementptr inbounds nuw i8, ptr %2, i64 16 %12 = load ptr, ptr %11, align 8, !alias.scope !362, !noundef !7 %13 = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -1523,7 +1525,7 @@ 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 + %18 = getelementptr { i32, float }, ptr %invariant.gep, i64 %.0 %.val19 = load float, ptr %18, align 4, !noundef !7 tail call void @llvm.experimental.noalias.scope.decl(metadata !379) tail call void @llvm.experimental.noalias.scope.decl(metadata !380) diff --git a/bench/qemu/optimized/system.ll b/bench/qemu/optimized/system.ll index 05407936948..a067ff1f79e 100644 --- a/bench/qemu/optimized/system.ll +++ b/bench/qemu/optimized/system.ll @@ -767,9 +767,10 @@ define internal void @gdb_chr_event(ptr noundef captures(none) %0, i32 noundef % %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %7 ] %.not = icmp eq i64 %indvars.iv, 0 %8 = load ptr, ptr %6, align 8 - %9 = getelementptr inbounds nuw %struct.GDBProcess, ptr %8, i64 %indvars.iv, i32 1 - %10 = zext i1 %.not to i8 - store i8 %10, ptr %9, align 4 + %9 = getelementptr inbounds nuw %struct.GDBProcess, ptr %8, i64 %indvars.iv + %10 = getelementptr inbounds nuw i8, ptr %9, i64 4 + %11 = zext i1 %.not to i8 + store i8 %11, ptr %10, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %11 = load i32, ptr %3, align 8 %12 = sext i32 %11 to i64 diff --git a/bench/quickjs/optimized/qjsc.ll b/bench/quickjs/optimized/qjsc.ll index 15a07a8da92..0e900010901 100644 --- a/bench/quickjs/optimized/qjsc.ll +++ b/bench/quickjs/optimized/qjsc.ll @@ -1200,19 +1200,21 @@ compile_file.exit: ; preds = %187, %190, %195 %209 = shl nuw nsw i64 1, %indvars.iv239 %210 = and i64 %208, %209 %.not134 = icmp eq i64 %210, 0 - %.not135 = icmp eq i64 %indvars.iv239, 9 - %or.cond = or i1 %.not135, %.not134 - br i1 %or.cond, label %215, label %211 + br i1 %.not134, label %215, label %211 211: ; preds = %207 - %212 = getelementptr inbounds nuw [11 x %struct.FeatureEntry], ptr @feature_list, i64 0, i64 %indvars.iv239, i32 1 + %212 = getelementptr inbounds nuw [11 x %struct.FeatureEntry], ptr getelementptr inbounds nuw (i8, ptr @feature_list, i64 8), i64 0, i64 %indvars.iv239 %213 = load ptr, ptr %212, align 8, !tbaa !39 - %214 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %145, ptr noundef nonnull @.str.21, ptr noundef %213) #17 + %.not135 = icmp eq ptr %212, null + br i1 %.not135, label %215, label %213 + +213: ; preds = %211 + %214 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %145, ptr noundef nonnull @.str.21, ptr noundef nonnull %212) #17 %.pre254 = load i64, ptr @feature_bitmap, align 8, !tbaa !25 br label %215 -215: ; preds = %207, %211 - %216 = phi i64 [ %208, %207 ], [ %.pre254, %211 ] +215: ; preds = %207, %211, %213 + %216 = phi i64 [ %208, %207 ], [ %208, %211 ], [ %.pre254, %213 ] %indvars.iv.next240 = add nuw nsw i64 %indvars.iv239, 1 %exitcond242.not = icmp eq i64 %indvars.iv.next240, 11 br i1 %exitcond242.not, label %217, label %207, !llvm.loop !40 diff --git a/bench/raft-rs/optimized/d5pa1kzoe6m82bg0xl3ke9nfw.ll b/bench/raft-rs/optimized/d5pa1kzoe6m82bg0xl3ke9nfw.ll index 17fd9fc0b41..4237f7c22ec 100644 --- a/bench/raft-rs/optimized/d5pa1kzoe6m82bg0xl3ke9nfw.ll +++ b/bench/raft-rs/optimized/d5pa1kzoe6m82bg0xl3ke9nfw.ll @@ -761,8 +761,9 @@ _ZN4raft12log_unstable8Unstable16maybe_last_index17h45e3b1674066bd82E.exit: ; pr 30: ; preds = %25 %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 %32 = load ptr, ptr %31, align 8, !nonnull !3, !noundef !3 - %33 = getelementptr inbounds nuw { { ptr, ptr, i64, { ptr } }, { ptr, ptr, i64, { ptr } }, i64, i64, ptr, { { i64 } }, i8, i8, [6 x i8] }, ptr %32, i64 %27, i32 2 - %34 = load i64, ptr %33, align 8, !noundef !3 + %33 = getelementptr inbounds nuw { { ptr, ptr, i64, { ptr } }, { ptr, ptr, i64, { ptr } }, i64, i64, ptr, { { i64 } }, i8, i8, [6 x i8] }, ptr %32, i64 %27 + %34 = getelementptr inbounds nuw i8, ptr %33, i64 64 + %35 = load i64, ptr %34, align 8, !noundef !3 br label %_ZN4raft12log_unstable8Unstable16maybe_last_index17h45e3b1674066bd82E.exit.thread 35: ; preds = %25 @@ -777,8 +778,8 @@ _ZN4raft12log_unstable8Unstable16maybe_last_index17h45e3b1674066bd82E.exit: ; pr br i1 %40, label %43, label %_ZN4raft12log_unstable8Unstable16maybe_last_index17h45e3b1674066bd82E.exit.thread _ZN4raft12log_unstable8Unstable16maybe_last_index17h45e3b1674066bd82E.exit.thread: ; preds = %11, %36, %22, %30, %_ZN4raft12log_unstable8Unstable16maybe_last_index17h45e3b1674066bd82E.exit, %43 - %.sroa.7.1 = phi i64 [ %45, %43 ], [ %34, %30 ], [ undef, %_ZN4raft12log_unstable8Unstable16maybe_last_index17h45e3b1674066bd82E.exit ], [ undef, %22 ], [ undef, %36 ], [ undef, %11 ] - %.sroa.0.1 = phi i64 [ 1, %43 ], [ 1, %30 ], [ 0, %_ZN4raft12log_unstable8Unstable16maybe_last_index17h45e3b1674066bd82E.exit ], [ 0, %22 ], [ 0, %36 ], [ 0, %11 ] + %.sroa.7.1 = phi i64 [ %45, %44 ], [ %35, %30 ], [ undef, %_ZN4raft12log_unstable8Unstable16maybe_last_index17h45e3b1674066bd82E.exit ], [ undef, %22 ], [ undef, %37 ], [ undef, %11 ] + %.sroa.0.1 = phi i64 [ 1, %44 ], [ 1, %30 ], [ 0, %_ZN4raft12log_unstable8Unstable16maybe_last_index17h45e3b1674066bd82E.exit ], [ 0, %22 ], [ 0, %37 ], [ 0, %11 ] %41 = insertvalue { i64, i64 } poison, i64 %.sroa.0.1, 0 %42 = insertvalue { i64, i64 } %41, i64 %.sroa.7.1, 1 ret { i64, i64 } %42 diff --git a/bench/rayon-rs/optimized/2xi93mrj8f00xnic.ll b/bench/rayon-rs/optimized/2xi93mrj8f00xnic.ll index 6b314ff53d5..64c0ccb05a5 100644 --- a/bench/rayon-rs/optimized/2xi93mrj8f00xnic.ll +++ b/bench/rayon-rs/optimized/2xi93mrj8f00xnic.ll @@ -927,7 +927,7 @@ _ZN15crossbeam_utils7backoff7Backoff6snooze17h2e565c48092f7405E.exit: ; preds = %24 = load atomic i64, ptr %23 monotonic, align 128 %25 = lshr i64 %24, 1 %26 = icmp eq i64 %.lcssa31, %25 - br i1 %26, label %87, label %27 + br i1 %26, label %84, label %27 27: ; preds = %22 %.not.unshifted = xor i64 %24, %.lcssa33 @@ -940,7 +940,7 @@ _ZN15crossbeam_utils7backoff7Backoff6snooze17h2e565c48092f7405E.exit: ; preds = %.09 = phi i64 [ %9, %._crit_edge ], [ %spec.select, %27 ] %30 = cmpxchg weak ptr %1, i64 %.lcssa33, i64 %.09 seq_cst acquire, align 8 %31 = extractvalue { i64, i1 } %30, 1 - br i1 %31, label %32, label %87 + br i1 %31, label %32, label %84 32: ; preds = %29 %33 = icmp eq i64 %.lcssa30, 62 @@ -1047,45 +1047,43 @@ _ZN15crossbeam_utils7backoff7Backoff6snooze17h2e565c48092f7405E.exit.i20: ; pred br i1 %.not9.i, label %._crit_edge.i, label %.lr.ph.i26 .lr.ph.i26: ; preds = %"_ZN15crossbeam_deque5deque13Slot$LT$T$GT$10wait_write17hf0de3e7d241e307cE.exit", %71 - %72 = getelementptr i8, ptr %.0.i.le, i64 24 - br label %73 + br label %.lr.ph.i26 -._crit_edge.i: ; preds = %84, %71 +._crit_edge.i: ; preds = %81, %71 tail call void @__rust_dealloc(ptr noundef nonnull %.0.i.le, i64 noundef 1520, i64 noundef 8) #14 br label %"_ZN15crossbeam_deque5deque14Block$LT$T$GT$7destroy17hbd0fd57196cc56baE.exit" -73: ; preds = %84, %.lr.ph.i26 - %.sroa.5.010.i = phi i64 [ %.lcssa30, %.lr.ph.i26 ], [ %74, %84 ] +73: ; preds = %.lr.ph.i26, %81 + %.sroa.5.010.i = phi i64 [ %72, %81 ], [ %.lcssa30, %.lr.ph.i26.preheader ] %74 = add nsw i64 %.sroa.5.010.i, -1 %75 = icmp ult i64 %.sroa.5.010.i, 64 tail call void @llvm.assume(i1 %75) - %.idx.i = mul nuw nsw i64 %74, 24 - %76 = getelementptr i8, ptr %72, i64 %.idx.i - %77 = load atomic i64, ptr %76 acquire, align 8 - %78 = and i64 %77, 2 - %79 = icmp eq i64 %78, 0 - br i1 %79, label %80, label %84 - -80: ; preds = %73 - %81 = atomicrmw or ptr %76, i64 4 acq_rel, align 8 - %82 = and i64 %81, 2 - %83 = icmp eq i64 %82, 0 - br i1 %83, label %"_ZN15crossbeam_deque5deque14Block$LT$T$GT$7destroy17hbd0fd57196cc56baE.exit", label %84 - -84: ; preds = %80, %73 - %.not.i = icmp eq i64 %74, 0 + %gep.i = getelementptr { { ptr, ptr }, { i64 } }, ptr %.0.i.le, i64 %.sroa.5.010.i + %74 = load atomic i64, ptr %gep.i acquire, align 8 + %75 = and i64 %74, 2 + %76 = icmp eq i64 %75, 0 + br i1 %76, label %77, label %81 + +77: ; preds = %.lr.ph.i26 + %78 = atomicrmw or ptr %gep.i, i64 4 acq_rel, align 8 + %79 = and i64 %78, 2 + %80 = icmp eq i64 %79, 0 + br i1 %80, label %"_ZN15crossbeam_deque5deque14Block$LT$T$GT$7destroy17hbd0fd57196cc56baE.exit", label %81 + +81: ; preds = %77, %.lr.ph.i26 + %.not.i = icmp eq i64 %72, 0 br i1 %.not.i, label %._crit_edge.i, label %73 -"_ZN15crossbeam_deque5deque14Block$LT$T$GT$7destroy17hbd0fd57196cc56baE.exit": ; preds = %80, %._crit_edge.i, %67 - %85 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %64, ptr %85, align 8 - %86 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %66, ptr %86, align 8 - br label %87 +"_ZN15crossbeam_deque5deque14Block$LT$T$GT$7destroy17hbd0fd57196cc56baE.exit": ; preds = %77, %._crit_edge.i, %67 + %82 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %64, ptr %82, align 8 + %83 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %66, ptr %83, align 8 + br label %84 -87: ; preds = %22, %29, %"_ZN15crossbeam_deque5deque14Block$LT$T$GT$7destroy17hbd0fd57196cc56baE.exit" - %storemerge29 = phi i64 [ 1, %"_ZN15crossbeam_deque5deque14Block$LT$T$GT$7destroy17hbd0fd57196cc56baE.exit" ], [ 0, %22 ], [ 2, %29 ] - store i64 %storemerge29, ptr %0, align 8 +84: ; preds = %22, %29, %"_ZN15crossbeam_deque5deque14Block$LT$T$GT$7destroy17hbd0fd57196cc56baE.exit" + %storemerge28 = phi i64 [ 1, %"_ZN15crossbeam_deque5deque14Block$LT$T$GT$7destroy17hbd0fd57196cc56baE.exit" ], [ 0, %22 ], [ 2, %29 ] + store i64 %storemerge28, ptr %0, align 8 ret void } diff --git a/bench/re2/optimized/set.ll b/bench/re2/optimized/set.ll index fc0727da56f..f3b708cb210 100644 --- a/bench/re2/optimized/set.ll +++ b/bench/re2/optimized/set.ll @@ -99,7 +99,8 @@ entry: for.body: ; preds = %entry, %for.inc %2 = phi ptr [ %5, %for.inc ], [ %1, %entry ] %i.011 = phi i64 [ %inc, %for.inc ], [ 0, %entry ] - %second = getelementptr inbounds %"struct.std::pair", ptr %2, i64 %i.011, i32 1 + %second = getelementptr inbounds %"struct.std::pair", ptr %2, i64 %i.011 + %second = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 32 %3 = load ptr, ptr %second, align 8 invoke void @_ZN3re26Regexp6DecrefEv(ptr noundef nonnull align 8 dereferenceable(40) %3) to label %for.inc unwind label %terminate.lpad @@ -847,10 +848,14 @@ _ZN3re28PODArrayIPNS_6RegexpEEC2Ei.exit: ; preds = %"_ZSt4sortIN9__gnu_ %.pre = load ptr, ptr %elem_, align 8 br i1 %cmp24.not, label %for.end, label %invoke.cont21 -invoke.cont21: ; preds = %_ZN3re28PODArrayIPNS_6RegexpEEC2Ei.exit, %invoke.cont21 - %indvars.iv = phi i64 [ %indvars.iv.next, %invoke.cont21 ], [ 0, %_ZN3re28PODArrayIPNS_6RegexpEEC2Ei.exit ] - %second = getelementptr inbounds nuw %"struct.std::pair", ptr %.pre, i64 %indvars.iv, i32 1 - %12 = load ptr, ptr %second, align 8 +invoke.cont21: ; preds = %_ZN3re28PODArrayIPNS_6RegexpEEC2Ei.exit + %invariant.gep = getelementptr inbounds nuw i8, ptr %.pre, i64 32 + br label %invoke.cont21 + +invoke.cont21: ; preds = %invoke.cont21.lr.ph, %invoke.cont21 + %indvars.iv = phi i64 [ 0, %invoke.cont21.lr.ph ], [ %indvars.iv.next, %invoke.cont21 ] + %gep = getelementptr inbounds nuw %"struct.std::pair", ptr %invariant.gep, i64 %indvars.iv + %12 = load ptr, ptr %gep, align 8 %arrayidx.i.i = getelementptr inbounds nuw ptr, ptr %call5.i3.i, i64 %indvars.iv store ptr %12, ptr %arrayidx.i.i, align 8 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 diff --git a/bench/recastnavigation/optimized/DetourLocalBoundary.ll b/bench/recastnavigation/optimized/DetourLocalBoundary.ll index 684676f6b46..1ffef66bad3 100644 --- a/bench/recastnavigation/optimized/DetourLocalBoundary.ll +++ b/bench/recastnavigation/optimized/DetourLocalBoundary.ll @@ -52,9 +52,8 @@ define void @_ZN15dtLocalBoundary10addSegmentEfPKf(ptr noundef nonnull align 4 c 7: ; preds = %3 %8 = add nsw i32 %5, -1 %9 = sext i32 %8 to i64 - %.idx = mul nsw i64 %9, 28 - %10 = getelementptr i8, ptr %6, i64 %.idx - %11 = getelementptr i8, ptr %10, i64 24 + %10 = getelementptr inbounds [8 x %"struct.dtLocalBoundary::Segment"], ptr %6, i64 0, i64 %9 + %10 = getelementptr inbounds nuw i8, ptr %10, i64 24 %12 = load float, ptr %11, align 4 %13 = fcmp ult float %1, %12 br i1 %13, label %.preheader, label %15 @@ -79,8 +78,7 @@ define void @_ZN15dtLocalBoundary10addSegmentEfPKf(ptr noundef nonnull align 4 c .lr.ph: ; preds = %.lr.ph.preheader, %22 %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %22 ] - %.idx27 = mul nuw nsw i64 %indvars.iv, 28 - %gep = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %.idx27 + %gep = getelementptr inbounds nuw [8 x %"struct.dtLocalBoundary::Segment"], ptr %invariant.gep, i64 0, i64 %indvars.iv %20 = load float, ptr %gep, align 4 %21 = fcmp ugt float %1, %20 br i1 %21, label %22, label %.loopexit.split.loop.exit34 @@ -95,7 +93,7 @@ define void @_ZN15dtLocalBoundary10addSegmentEfPKf(ptr noundef nonnull align 4 c br label %.loopexit .loopexit: ; preds = %22, %.loopexit.split.loop.exit34, %.preheader - %.021.lcssa = phi i32 [ 0, %.preheader ], [ %23, %.loopexit.split.loop.exit34 ], [ %5, %22 ] + %.021.lcssa = phi i32 [ 0, %.preheader ], [ %23, %.loopexit.split.loop.exit33 ], [ %5, %22 ] %24 = sub nsw i32 %5, %.021.lcssa %25 = sub nsw i32 7, %.021.lcssa %26 = tail call noundef i32 @llvm.smin.i32(i32 %24, i32 %25) @@ -119,7 +117,7 @@ define void @_ZN15dtLocalBoundary10addSegmentEfPKf(ptr noundef nonnull align 4 c br label %37 37: ; preds = %._crit_edge33, %29 - %.pre-phi = phi i64 [ %.pre, %._crit_edge33 ], [ %33, %29 ] + %.pre-phi = phi i64 [ %.pre, %._crit_edge32 ], [ %33, %29 ] %38 = getelementptr inbounds nuw [8 x %"struct.dtLocalBoundary::Segment"], ptr %6, i64 0, i64 %.pre-phi br label %39 @@ -222,8 +220,7 @@ define void @_ZN15dtLocalBoundary6updateEjPKffP14dtNavMeshQueryPK13dtQueryFilter 44: ; preds = %42 %45 = add nsw i32 %43, -1 %46 = sext i32 %45 to i64 - %.idx.i = mul nsw i64 %46, 28 - %gep = getelementptr i8, ptr %invariant.gep, i64 %.idx.i + %gep = getelementptr [8 x %"struct.dtLocalBoundary::Segment"], ptr %invariant.gep, i64 0, i64 %46 %47 = load float, ptr %gep, align 4 %48 = fcmp ult float %40, %47 br i1 %48, label %.preheader.i, label %50 @@ -247,8 +244,7 @@ define void @_ZN15dtLocalBoundary6updateEjPKffP14dtNavMeshQueryPK13dtQueryFilter .lr.ph.i: ; preds = %57, %.lr.ph.preheader.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next.i, %57 ] - %.idx27.i = mul nuw nsw i64 %indvars.iv.i, 28 - %gep.i = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %.idx27.i + %gep.i = getelementptr inbounds nuw [8 x %"struct.dtLocalBoundary::Segment"], ptr %invariant.gep, i64 0, i64 %indvars.iv.i %55 = load float, ptr %gep.i, align 4 %56 = fcmp ugt float %40, %55 br i1 %56, label %57, label %.loopexit.split.loop.exit34.i @@ -263,7 +259,7 @@ define void @_ZN15dtLocalBoundary6updateEjPKffP14dtNavMeshQueryPK13dtQueryFilter br label %.loopexit.i .loopexit.i: ; preds = %57, %.loopexit.split.loop.exit34.i, %.preheader.i - %.021.lcssa.i = phi i32 [ 0, %.preheader.i ], [ %58, %.loopexit.split.loop.exit34.i ], [ %43, %57 ] + %.021.lcssa.i = phi i32 [ 0, %.preheader.i ], [ %58, %.loopexit.split.loop.exit33.i ], [ %43, %57 ] %59 = sub nsw i32 %43, %.021.lcssa.i %60 = sub nsw i32 7, %.021.lcssa.i %61 = call noundef i32 @llvm.smin.i32(i32 %59, i32 %60) @@ -287,7 +283,7 @@ define void @_ZN15dtLocalBoundary6updateEjPKffP14dtNavMeshQueryPK13dtQueryFilter br label %72 72: ; preds = %64, %._crit_edge33.i - %.pre-phi.i = phi i64 [ %.pre.i, %._crit_edge33.i ], [ %68, %64 ] + %.pre-phi.i = phi i64 [ %.pre.i, %._crit_edge32.i ], [ %68, %64 ] %73 = getelementptr inbounds nuw [8 x %"struct.dtLocalBoundary::Segment"], ptr %30, i64 0, i64 %.pre-phi.i br label %74 diff --git a/bench/redis/optimized/latency.ll b/bench/redis/optimized/latency.ll index d3547c506fd..13157be231b 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 [160 x %struct.latencySample], ptr %23, i64 0, 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/regex-rs/optimized/1x04d8372kemp7hd.ll b/bench/regex-rs/optimized/1x04d8372kemp7hd.ll index ad34c115c6a..b2a632f73be 100644 --- a/bench/regex-rs/optimized/1x04d8372kemp7hd.ll +++ b/bench/regex-rs/optimized/1x04d8372kemp7hd.ll @@ -142,12 +142,13 @@ define hidden noundef i64 @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$G %8 = ptrtoint ptr %0 to i64 %9 = sub nuw i64 %7, %8 %10 = lshr exact i64 %9, 4 + %invariant.gep.i = getelementptr i8, ptr %0, i64 8 br label %11 11: ; preds = %11, %6 %.018.i = phi i64 [ %2, %6 ], [ %.0.sroa.speculated.i.i.i.i, %11 ] %.017.i = phi i64 [ 0, %6 ], [ %13, %11 ] - %12 = getelementptr { ptr, i64 }, ptr %0, i64 %.017.i, i32 1 + %12 = getelementptr { ptr, i64 }, ptr %invariant.gep.i, i64 %.017.i %.val22.i = load i64, ptr %12, align 8, !noundef !9 %.0.sroa.speculated.i.i.i.i = tail call noundef i64 @llvm.umin.i64(i64 %.018.i, i64 %.val22.i) %13 = add nuw i64 %.017.i, 1 @@ -1630,12 +1631,13 @@ define hidden noundef i64 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u2 %8 = ptrtoint ptr %0 to i64 %9 = sub nuw i64 %7, %8 %10 = lshr exact i64 %9, 4 + %invariant.gep = getelementptr i8, ptr %0, i64 8 br label %11 11: ; preds = %11, %6 %.018 = phi i64 [ %2, %6 ], [ %.0.sroa.speculated.i.i.i, %11 ] %.017 = phi i64 [ 0, %6 ], [ %13, %11 ] - %12 = getelementptr { ptr, i64 }, ptr %0, i64 %.017, i32 1 + %12 = getelementptr { ptr, i64 }, ptr %invariant.gep, i64 %.017 %.val22 = load i64, ptr %12, align 8, !noundef !9 %.0.sroa.speculated.i.i.i = tail call noundef i64 @llvm.umin.i64(i64 %.018, i64 %.val22) %13 = add nuw i64 %.017, 1 diff --git a/bench/ripgrep-rs/optimized/58dexfd2ydnodcl0.ll b/bench/ripgrep-rs/optimized/58dexfd2ydnodcl0.ll index 98fc9a99ce2..529757bb727 100644 --- a/bench/ripgrep-rs/optimized/58dexfd2ydnodcl0.ll +++ b/bench/ripgrep-rs/optimized/58dexfd2ydnodcl0.ll @@ -589,31 +589,35 @@ define void @_ZN6ignore9gitignore16GitignoreBuilder5build17h2d30e1539f022476E(pt %18 = icmp eq i64 %17, 0 br i1 %18, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h7c5c62d5893ce88dE.exit", label %.preheader -.preheader: ; preds = %2, %.preheader - %.017.i = phi i64 [ %22, %.preheader ], [ 0, %2 ] - %.016.i = phi i64 [ %23, %.preheader ], [ 0, %2 ] - %19 = getelementptr { { { { i64, ptr, {} }, i64 } }, { { { i64, ptr, {} }, i64 } }, { i64, [2 x i64] }, i8, i8, [6 x i8] }, ptr %15, i64 %.016.i, i32 3 - %.val.i = load i8, ptr %19, align 8, !range !60, !alias.scope !67, !noundef !8 - %20 = xor i8 %.val.i, 1 - %21 = zext nneg i8 %20 to i64 - %22 = add i64 %.017.i, %21 - %23 = add nuw i64 %.016.i, 1 - %24 = icmp eq i64 %23, %17 - br i1 %24, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h3a9c4bb45dba519eE.exit", label %.preheader - -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h3a9c4bb45dba519eE.exit": ; preds = %.preheader, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h3a9c4bb45dba519eE.exit" - %.017.i42 = phi i64 [ %27, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h3a9c4bb45dba519eE.exit" ], [ 0, %.preheader ] - %.016.i43 = phi i64 [ %28, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h3a9c4bb45dba519eE.exit" ], [ 0, %.preheader ] - %25 = getelementptr { { { { i64, ptr, {} }, i64 } }, { { { i64, ptr, {} }, i64 } }, { i64, [2 x i64] }, i8, i8, [6 x i8] }, ptr %15, i64 %.016.i43, i32 3 - %.val.i44 = load i8, ptr %25, align 8, !range !60, !alias.scope !72, !noundef !8 - %26 = zext nneg i8 %.val.i44 to i64 - %27 = add i64 %.017.i42, %26 - %28 = add nuw i64 %.016.i43, 1 +.preheader: ; preds = %2 + %invariant.gep.i = getelementptr i8, ptr %15, i64 72 + br label %20 + +20:; preds = %20, %.preheader + %.017.i = phi i64 [ 0, %19 ], [ %23, %20 ] + %.016.i = phi i64 [ 0, %19 ], [ %24, %20 ] + %gep.i = getelementptr { { { { i64, ptr, {} }, i64 } }, { { { i64, ptr, {} }, i64 } }, { i64, [2 x i64] }, i8, i8, [6 x i8] }, ptr %invariant.gep.i, i64 %.016.i + %.val.i = load i8, ptr %gep.i, align 8, !range !60, !alias.scope !67, !noundef !8 + %21 = xor i8 %.val.i, 1 + %22 = zext nneg i8 %21 to i64 + %23 = add i64 %.017.i, %22 + %24 = add nuw i64 %.016.i, 1 + %25 = icmp eq i64 %24, %17 + br i1 %25, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h3a9c4bb45dba519eE.exit", label %20 + +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h3a9c4bb45dba519eE.exit":; preds = %20, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h3a9c4bb45dba519eE.exit" + %.017.i43 = phi i64 [ %27, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h3a9c4bb45dba519eE.exit" ], [ 0, %20 ] + %.016.i44 = phi i64 [ %28, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h3a9c4bb45dba519eE.exit" ], [ 0, %20 ] + %gep.i45 = getelementptr { { { { i64, ptr, {} }, i64 } }, { { { i64, ptr, {} }, i64 } }, { i64, [2 x i64] }, i8, i8, [6 x i8] }, ptr %invariant.gep.i, i64 %.016.i44 + %.val.i46 = load i8, ptr %gep.i45, align 8, !range !60, !alias.scope !72, !noundef !8 + %26 = zext nneg i8 %.val.i46 to i64 + %27 = add i64 %.017.i43, %26 + %28 = add nuw i64 %.016.i44, 1 %29 = icmp eq i64 %28, %17 br i1 %29, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h7c5c62d5893ce88dE.exit", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h3a9c4bb45dba519eE.exit" "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h7c5c62d5893ce88dE.exit": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h3a9c4bb45dba519eE.exit", %2 - %.0.i53 = phi i64 [ 0, %2 ], [ %22, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h3a9c4bb45dba519eE.exit" ] + %.0.i53 = phi i64 [ 0, %2 ], [ %23, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h3a9c4bb45dba519eE.exit" ] %.0.i45 = phi i64 [ 0, %2 ], [ %27, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h3a9c4bb45dba519eE.exit" ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %.sroa.548) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %13) @@ -826,7 +830,7 @@ common.resume: ; preds = %58, %48 85: ; preds = %79 invoke void @_ZN5alloc5alloc18handle_alloc_error17h836e982fea7018bdE(i64 noundef 8, i64 noundef 24) #21 - to label %.noexc46 unwind label %86 + to label %.noexc48 unwind label %86 .noexc46: ; preds = %85 unreachable diff --git a/bench/ripgrep-rs/optimized/5ckxrdy9v0i8g3uf.ll b/bench/ripgrep-rs/optimized/5ckxrdy9v0i8g3uf.ll index 21c4837be54..07a6b178f41 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 [0 x { { ptr, i64 }, { ptr, i64 } }], ptr @anon.0923cb38b7fdc9785e1561170331db22.28.llvm.6679066857390535418, i64 0, 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 [0 x { { ptr, i64 }, { ptr, i64 } }], ptr @anon.0923cb38b7fdc9785e1561170331db22.28.llvm.6679066857390535418, i64 0, 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 %24 "_ZN12grep_printer17hyperlink_aliases4find28_$u7b$$u7b$closure$u7d$$u7d$17h797a182f808414daE.llvm.6679066857390535418.exit.i": ; preds = %3 - %20 = getelementptr inbounds nuw [0 x { { ptr, i64 }, { ptr, i64 } }], ptr @anon.0923cb38b7fdc9785e1561170331db22.28.llvm.6679066857390535418, i64 0, 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" @@ -375,18 +376,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 [0 x { { ptr, i64 }, { ptr, i64 } }], ptr @anon.0923cb38b7fdc9785e1561170331db22.28.llvm.6679066857390535418, i64 0, 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 [0 x { { ptr, i64 }, { ptr, i64 } }], ptr @anon.0923cb38b7fdc9785e1561170331db22.28.llvm.6679066857390535418, i64 0, 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 307c04d1a9f..230bfa25027 100644 --- a/bench/ruby/optimized/file.ll +++ b/bench/ruby/optimized/file.ll @@ -11486,11 +11486,10 @@ define internal fastcc range(i64 1, 0) i64 @apply2files(ptr noundef %0, i32 noun %23 = phi ptr [ %12, %.thread ], [ %18, %16 ] %24 = phi ptr [ %11, %.thread ], [ %17, %16 ] %25 = getelementptr inbounds nuw i8, ptr %24, i64 32 - %invariant.gep = getelementptr i8, ptr %24, i64 40 br label %26 26: ; preds = %.lr.ph, %RSTRING_PTR.exit - %storemerge33 = phi i32 [ 0, %.lr.ph ], [ %51, %RSTRING_PTR.exit ] + %storemerge33 = phi i32 [ 0, %.lr.ph ], [ %52, %RSTRING_PTR.exit ] %27 = sext i32 %storemerge33 to i64 %28 = getelementptr i64, ptr %2, i64 %27 %29 = load i64, ptr %28, align 8, !tbaa !12 @@ -11548,13 +11547,12 @@ RSTRING_PTR.exit: ; preds = %rb_get_path.exit, % %49 = sext i32 %48 to i64 %50 = getelementptr [0 x %struct.apply_filename], ptr %25, i64 0, i64 %49 store ptr %.sroa.2.0.i, ptr %50, align 8, !tbaa !339 - %.idx32 = shl nsw i64 %49, 4 - %gep = getelementptr i8, ptr %invariant.gep, i64 %.idx32 - store i64 %42, ptr %gep, align 8, !tbaa !341 - %51 = add i32 %48, 1 - store i32 %51, ptr %24, align 8, !tbaa !26 - %52 = icmp slt i32 %51, %1 - br i1 %52, label %26, label %._crit_edge, !llvm.loop !342 + %51 = getelementptr inbounds nuw i8, ptr %50, i64 8 + store i64 %42, ptr %51, align 8, !tbaa !341 + %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 !342 ._crit_edge: ; preds = %RSTRING_PTR.exit, %16 %53 = phi ptr [ %18, %16 ], [ %23, %RSTRING_PTR.exit ] @@ -11565,11 +11563,11 @@ RSTRING_PTR.exit: ; preds = %rb_get_path.exit, % br i1 %.not, label %63, label %57 57: ; preds = %._crit_edge - %58 = load i32, ptr %54, align 8, !tbaa !26 - %59 = sext i32 %58 to i64 - %.idx = shl nsw i64 %59, 4 - %60 = getelementptr i8, ptr %54, i64 40 - %61 = getelementptr i8, ptr %60, i64 %.idx + %59 = getelementptr inbounds nuw i8, ptr %54, i64 32 + %60 = load i32, ptr %55, align 8, !tbaa !26 + %61 = sext i32 %60 to i64 + %60 = getelementptr [0 x %struct.apply_filename], ptr %59, i64 0, i64 %61 + %61 = getelementptr inbounds nuw i8, ptr %60, i64 8 %62 = load i64, ptr %61, align 8, !tbaa !341 call void @rb_syserr_fail_path_in(ptr noundef nonnull @__func__.apply2files, i32 noundef %56, i64 noundef %62) #24 unreachable diff --git a/bench/ruby/optimized/re.ll b/bench/ruby/optimized/re.ll index a6353242d17..c50938118df 100644 --- a/bench/ruby/optimized/re.ll +++ b/bench/ruby/optimized/re.ll @@ -6316,23 +6316,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 !234 - %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 !234 + %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 @@ -6648,23 +6649,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 !226 - %24 = getelementptr %struct.rmatch_offset, ptr %23, i64 %17, i32 1 - %25 = load i64, ptr %24, align 8, !tbaa !234 - %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 !234 + %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 } @@ -10992,7 +10994,7 @@ define internal fastcc void @update_char_offset(i64 noundef %0) unnamed_addr #2 store i64 %28, ptr %29, align 8, !tbaa !232 %30 = getelementptr i64, ptr %25, i64 %indvars.iv129 %31 = load i64, ptr %30, align 8, !tbaa !18 - %32 = getelementptr %struct.rmatch_offset, ptr %23, i64 %indvars.iv129, i32 1 + %32 = getelementptr inbounds nuw i8, ptr %29, i64 8 store i64 %31, ptr %32, align 8, !tbaa !234 %indvars.iv.next130 = add nuw nsw i64 %indvars.iv129, 1 %exitcond133.not = icmp eq i64 %indvars.iv.next130, %wide.trip.count132 @@ -11185,7 +11187,7 @@ bsearch.exit: ; preds = %90 bsearch.exit94: ; preds = %108 %gep111 = getelementptr i8, ptr %invariant.gep, i64 %103 %113 = load i64, ptr %gep111, align 8, !tbaa !302 - %114 = getelementptr %struct.rmatch_offset, ptr %96, i64 %indvars.iv124, i32 1 + %114 = getelementptr inbounds nuw i8, ptr %97, i64 8 store i64 %113, ptr %114, align 8, !tbaa !234 br label %115 @@ -11730,7 +11732,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 !241 - %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 !243 %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/ruff-rs/optimized/5w459yx4cbffhf0y4cegeyhh9.ll b/bench/ruff-rs/optimized/5w459yx4cbffhf0y4cegeyhh9.ll index 470950514a3..29e637f5b77 100644 --- a/bench/ruff-rs/optimized/5w459yx4cbffhf0y4cegeyhh9.ll +++ b/bench/ruff-rs/optimized/5w459yx4cbffhf0y4cegeyhh9.ll @@ -19489,9 +19489,8 @@ _ZN9itertools9Itertools13sorted_by_key17h0798b5eb764f287bE.exit: ; preds = %4, % 131: ; preds = %.noexc174, %128 %.sroa.07.0.i.i.i = phi i64 [ %.val.i.i, %128 ], [ %.sroa.0.0.i.i.i.i.i.i, %.noexc174 ] %.sroa.09.0.i.i.i = phi i64 [ 0, %128 ], [ %134, %.noexc174 ] - %.idx.i = shl i64 %.sroa.09.0.i.i.i, 6 - %gep.i = getelementptr i8, ptr %invariant.gep.i, i64 %.idx.i - %.val.i.i.i = load i64, ptr %gep.i, align 8, !noundef !25 + %gep.i.i.i = getelementptr { { ptr, i64 }, { ptr, [3 x i64] }, i64, i8, [7 x i8] }, ptr %invariant.gep.i, i64 %.sroa.09.0.i.i.i + %.val.i.i.i = load i64, ptr %gep.i.i.i, align 8, !noundef !25 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26), !noalias !2815 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27), !noalias !2815 store i64 %.sroa.07.0.i.i.i, ptr %27, align 8, !noalias !2820 diff --git a/bench/rust-analyzer-rs/optimized/4yvp88cqyyaanzkc.ll b/bench/rust-analyzer-rs/optimized/4yvp88cqyyaanzkc.ll index af742fa67d6..2c72c115ace 100644 --- a/bench/rust-analyzer-rs/optimized/4yvp88cqyyaanzkc.ll +++ b/bench/rust-analyzer-rs/optimized/4yvp88cqyyaanzkc.ll @@ -7010,8 +7010,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 !2412, !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 @@ -7021,12 +7021,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 !2415 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 6bdff965204..4fd940e4c48 100644 --- a/bench/rustfmt-rs/optimized/3n0n7c4xrusd0kzl.ll +++ b/bench/rustfmt-rs/optimized/3n0n7c4xrusd0kzl.ll @@ -11633,50 +11633,53 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. 11: ; preds = %3 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h66bdbd857a3e0c11E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 0, i64 noundef %spec.select.i.i) - to label %.noexc unwind label %18 + to label %.noexc unwind label %19 .noexc: ; preds = %11 %.pre.i.i = load i64, ptr %9, align 8, !alias.scope !2138 - %.pre = load ptr, ptr %8, align 8, !alias.scope !2138 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i" "_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i": ; preds = %.noexc, %3 - %12 = phi ptr [ %7, %3 ], [ %.pre, %.noexc ] - %13 = phi i64 [ 0, %3 ], [ %.pre.i.i, %.noexc ] - %14 = icmp ult i64 %1, %2 - br i1 %14, label %.lr.ph.i.i.i.i.i, label %.loopexit - -.lr.ph.i.i.i.i.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i", %.lr.ph.i.i.i.i.i - %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 - 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 - br i1 %exitcond.not.i.i.i.i.i, label %.loopexit, label %.lr.ph.i.i.i.i.i - -18: ; preds = %11 - %19 = landingpad { ptr, i32 } + %12 = phi i64 [ 0, %3 ], [ %.pre.i.i, %.noexc ] + %13 = icmp ult i64 %1, %2 + br i1 %13, label %.lr.ph.i.i.i.i.i, label %.loopexit + +.lr.ph.i.i.i.i.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i" + %14 = load ptr, ptr %8, align 8, !alias.scope !2138, !nonnull !4, !noundef !4 + %invariant.gep.i.i.i.i.i = getelementptr i8, ptr %14, i64 32 + br label %15 + +15:; preds = %15, %.lr.ph.i.i.i.i.i + %16 = phi i64 [ %12, %.lr.ph.i.i.i.i.i ], [ %18, %15 ] + %.sroa.0.06.i.i.i.i.i = phi i64 [ %1, %.lr.ph.i.i.i.i.i ], [ %17, %15 ] + %17 = add nuw i64 %.sroa.0.06.i.i.i.i.i, 1 + %gep.i.i.i.i.i = getelementptr { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %invariant.gep.i.i.i.i.i, i64 %16 + store i8 0, ptr %gep.i.i.i.i.i, align 8, !noalias !2143 + %18 = add i64 %16, 1 + %exitcond.not.i.i.i.i.i = icmp eq i64 %17, %2 + br i1 %exitcond.not.i.i.i.i.i, label %.loopexit, label %15 + +19: ; preds = %11 + %20 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr126drop_in_place$LT$alloc..vec..Vec$LT$thread_local..Entry$LT$core..cell..RefCell$LT$alloc..vec..Vec$LT$usize$GT$$GT$$GT$$GT$$GT$17h8294ac7c52d09f98E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) #26 to label %23 unwind label %21 -.loopexit: ; preds = %.lr.ph.i.i.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i" - %20 = phi i64 [ %13, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i" ], [ %17, %.lr.ph.i.i.i.i.i ] +.loopexit: ; preds = %15, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i" + %20 = phi i64 [ %12, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i" ], [ %18, %15 ] store i64 %20, ptr %9, align 8, !alias.scope !2138, !noalias !2154 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) ret void -21: ; preds = %18 +21: ; preds = %19 %22 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h7bbd4fcd6f160435E() #25 unreachable -23: ; preds = %18 - resume { ptr, i32 } %19 +23: ; preds = %19 + resume { ptr, i32 } %20 } ; Function Attrs: nonlazybind uwtable @@ -22660,46 +22663,49 @@ define hidden void @"_ZN98_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..s 11: ; preds = %3 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h66bdbd857a3e0c11E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 0, i64 noundef %spec.select.i.i.i) - to label %.noexc.i unwind label %18, !noalias !4163 + to label %.noexc.i unwind label %19, !noalias !4163 .noexc.i: ; preds = %11 %.pre.i.i.i = load i64, ptr %9, align 8, !alias.scope !4166, !noalias !4163 - %.pre.i = load ptr, ptr %8, align 8, !alias.scope !4166, !noalias !4163 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i.i" "_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i.i": ; preds = %.noexc.i, %3 - %12 = phi ptr [ %7, %3 ], [ %.pre.i, %.noexc.i ] - %13 = phi i64 [ 0, %3 ], [ %.pre.i.i.i, %.noexc.i ] - %14 = icmp ult i64 %1, %2 - br i1 %14, label %.lr.ph.i.i.i.i.i.i, label %"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17hc7634af1e56c525aE.llvm.6776338100628702967.exit" - -.lr.ph.i.i.i.i.i.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i.i", %.lr.ph.i.i.i.i.i.i - %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 - store i8 0, ptr %.sroa.0.sroa.4.0..sroa_idx.i.i.i.i.i.i.i, align 8, !noalias !4171 - %17 = add i64 %15, 1 - %exitcond.not.i.i.i.i.i.i = icmp eq i64 %16, %2 - br i1 %exitcond.not.i.i.i.i.i.i, label %"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17hc7634af1e56c525aE.llvm.6776338100628702967.exit", label %.lr.ph.i.i.i.i.i.i - -18: ; preds = %11 - %19 = landingpad { ptr, i32 } + %12 = phi i64 [ 0, %3 ], [ %.pre.i.i.i, %.noexc.i ] + %13 = icmp ult i64 %1, %2 + br i1 %13, label %.lr.ph.i.i.i.i.i.i, label %"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17hc7634af1e56c525aE.llvm.6776338100628702967.exit" + +.lr.ph.i.i.i.i.i.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i.i" + %14 = load ptr, ptr %8, align 8, !alias.scope !4166, !noalias !4163, !nonnull !4, !noundef !4 + %invariant.gep.i.i.i.i.i.i = getelementptr i8, ptr %14, i64 32 + br label %15 + +15:; preds = %15, %.lr.ph.i.i.i.i.i.i + %16 = phi i64 [ %12, %.lr.ph.i.i.i.i.i.i ], [ %18, %15 ] + %.sroa.0.06.i.i.i.i.i.i = phi i64 [ %1, %.lr.ph.i.i.i.i.i.i ], [ %17, %15 ] + %17 = add nuw i64 %.sroa.0.06.i.i.i.i.i.i, 1 + %gep.i.i.i.i.i.i = getelementptr { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %invariant.gep.i.i.i.i.i.i, i64 %16 + store i8 0, ptr %gep.i.i.i.i.i.i, align 8, !noalias !4171 + %18 = add i64 %16, 1 + %exitcond.not.i.i.i.i.i.i = icmp eq i64 %17, %2 + br i1 %exitcond.not.i.i.i.i.i.i, label %"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17hc7634af1e56c525aE.llvm.6776338100628702967.exit", label %15 + +19: ; preds = %11 + %20 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr126drop_in_place$LT$alloc..vec..Vec$LT$thread_local..Entry$LT$core..cell..RefCell$LT$alloc..vec..Vec$LT$usize$GT$$GT$$GT$$GT$$GT$17h8294ac7c52d09f98E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) #26 to label %22 unwind label %20, !noalias !4163 -20: ; preds = %18 +20: ; preds = %19 %21 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h7bbd4fcd6f160435E() #25, !noalias !4163 unreachable -22: ; preds = %18 - resume { ptr, i32 } %19 +22: ; preds = %19 + resume { ptr, i32 } %20 -"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17hc7634af1e56c525aE.llvm.6776338100628702967.exit": ; preds = %.lr.ph.i.i.i.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i.i" - %23 = phi i64 [ %13, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i.i" ], [ %17, %.lr.ph.i.i.i.i.i.i ] +"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17hc7634af1e56c525aE.llvm.6776338100628702967.exit": ; preds = %15, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i.i" + %23 = phi i64 [ %12, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7417e10604a93b84E.exit.i.i.i" ], [ %18, %15 ] store i64 %23, ptr %9, align 8, !alias.scope !4166, !noalias !4182 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !4163 diff --git a/bench/salsa-rs/optimized/0re58vbodfo9fw2ucr33a7vsy.ll b/bench/salsa-rs/optimized/0re58vbodfo9fw2ucr33a7vsy.ll index bc030385282..e86a5863c6d 100644 --- a/bench/salsa-rs/optimized/0re58vbodfo9fw2ucr33a7vsy.ll +++ b/bench/salsa-rs/optimized/0re58vbodfo9fw2ucr33a7vsy.ll @@ -1795,13 +1795,14 @@ define hidden void @"_ZN4core3ptr78drop_in_place$LT$alloc..vec..Vec$LT$salsa..ac %.val = load ptr, ptr %2, align 8, !nonnull !10, !noundef !10 %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 %.val1 = load i64, ptr %3, align 8, !noundef !10 + %invariant.gep.i.i = getelementptr i8, ptr %.val, i64 16 %4 = icmp eq i64 %.val1, 0 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 + %6 = getelementptr { { i32, i32 }, i64, { { ptr, {} } }, i32, i8, [3 x i8] }, ptr %invariant.gep.i.i, i64 %.sroa.0.09.i.i %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 @@ -1821,9 +1822,9 @@ define hidden void @"_ZN4core3ptr78drop_in_place$LT$alloc..vec..Vec$LT$salsa..ac 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 ] + %.sroa.0.110.i.i = phi i64 [ %14, %"_ZN4core3ptr55drop_in_place$LT$salsa..active_query..CapturedQuery$GT$17hfaeede18e617005eE.exit8.i.i" ], [ %5, %10 ] %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 + %15 = getelementptr { { i32, i32 }, i64, { { ptr, {} } }, i32, i8, [3 x i8] }, ptr %invariant.gep.i.i, i64 %.sroa.0.110.i.i %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 diff --git a/bench/sdl/optimized/SDL_x11xfixes.ll b/bench/sdl/optimized/SDL_x11xfixes.ll index 9e073ba04e4..9a109e0fcdf 100644 --- a/bench/sdl/optimized/SDL_x11xfixes.ll +++ b/bench/sdl/optimized/SDL_x11xfixes.ll @@ -51,26 +51,28 @@ define hidden void @X11_InitXfixes(ptr noundef readonly captures(none) %0) local %22 = getelementptr inbounds nuw i8, ptr %19, i64 224 %23 = load i32, ptr %22, align 8 %24 = sext i32 %23 to i64 - %25 = getelementptr inbounds %struct.Screen, ptr %21, i64 %24, i32 2 - %26 = load i64, ptr %25, align 8 - %27 = call i32 %18(ptr noundef %19, i64 noundef %26, i64 noundef %10, i64 noundef 1) #7 - %28 = load ptr, ptr @X11_XFixesSelectSelectionInput, align 8 - %29 = load ptr, ptr %8, align 8 - %30 = getelementptr inbounds nuw i8, ptr %29, i64 232 - %31 = load ptr, ptr %30, align 8 - %32 = getelementptr inbounds nuw i8, ptr %29, i64 224 - %33 = load i32, ptr %32, align 8 - %34 = sext i32 %33 to i64 - %35 = getelementptr inbounds %struct.Screen, ptr %31, i64 %34, i32 2 - %36 = load i64, ptr %35, align 8 - %37 = call i32 %28(ptr noundef %29, i64 noundef %36, i64 noundef 1, i64 noundef 1) #7 - %38 = load ptr, ptr %8, align 8 + %25 = getelementptr inbounds %struct.Screen, ptr %21, i64 %24 + %26 = getelementptr inbounds nuw i8, ptr %25, i64 16 + %27 = load i64, ptr %26, align 8 + %28 = call i32 %18(ptr noundef %19, i64 noundef %27, i64 noundef %10, i64 noundef 1) #7 + %29 = load ptr, ptr @X11_XFixesSelectSelectionInput, align 8 + %30 = load ptr, ptr %8, align 8 + %31 = getelementptr inbounds nuw i8, ptr %30, i64 232 + %32 = load ptr, ptr %31, align 8 + %33 = getelementptr inbounds nuw i8, ptr %30, i64 224 + %34 = load i32, ptr %33, align 8 + %35 = sext i32 %34 to i64 + %36 = getelementptr inbounds %struct.Screen, ptr %32, i64 %35 + %37 = getelementptr inbounds nuw i8, ptr %36, i64 16 + %38 = load i64, ptr %37, align 8 + %39 = call i32 %29(ptr noundef %30, i64 noundef %38, i64 noundef 1, i64 noundef 1) #7 + %40 = load ptr, ptr %8, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) store i32 5, ptr %2, align 4 store i32 0, ptr %3, align 4 %39 = load ptr, ptr @X11_XFixesQueryVersion, align 8 - %40 = call i32 %39(ptr noundef %38, ptr noundef nonnull %2, ptr noundef nonnull %3) #7 + %40 = call i32 %41(ptr noundef %40, ptr noundef nonnull %2, ptr noundef nonnull %3) #7 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) br label %41 diff --git a/bench/sentencepiece/optimized/bpe_model_trainer.ll b/bench/sentencepiece/optimized/bpe_model_trainer.ll index 1f9e5e8985a..9f69966b1b2 100644 --- a/bench/sentencepiece/optimized/bpe_model_trainer.ll +++ b/bench/sentencepiece/optimized/bpe_model_trainer.ll @@ -1440,8 +1440,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 @@ -1471,24 +1471,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/sentencepiece/optimized/generated_enum_util.ll b/bench/sentencepiece/optimized/generated_enum_util.ll index 69f285c91ff..cff578eb44b 100644 --- a/bench/sentencepiece/optimized/generated_enum_util.ll +++ b/bench/sentencepiece/optimized/generated_enum_util.ll @@ -111,6 +111,7 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #4 define noundef i32 @_ZN6google8protobuf8internal14LookUpEnumNameEPKNS1_9EnumEntryEPKimi(ptr noundef readonly captures(none) %0, ptr noundef %1, i64 noundef %2, i32 noundef %3) local_unnamed_addr #6 { %5 = getelementptr inbounds nuw i32, ptr %1, i64 %2 %6 = ptrtoint ptr %1 to i64 + %invariant.gep.i.i = getelementptr i8, ptr %0, i64 16 %7 = icmp sgt i64 %2, 0 br i1 %7, label %_ZSt7advanceIPKilEvRT_T0_.exit.i.i, label %"_ZSt11lower_boundIPKiiZN6google8protobuf8internal14LookUpEnumNameEPKNS4_9EnumEntryES1_miE3$_0ET_S9_S9_RKT0_T1_.exit" @@ -125,7 +126,7 @@ _ZSt7advanceIPKilEvRT_T0_.exit.i.i: ; preds = %4, %.thread "_ZN9__gnu_cxx5__ops14_Iter_comp_valIZN6google8protobuf8internal14LookUpEnumNameEPKNS4_9EnumEntryEPKimiE3$_0EclIS9_S8_EEbT_RT0_.exit.i.i": ; preds = %_ZSt7advanceIPKilEvRT_T0_.exit.i.i %11 = sext i32 %.val14.i.i to i64 - %12 = getelementptr inbounds %"struct.google::protobuf::internal::EnumEntry", ptr %0, i64 %11, i32 1 + %12 = getelementptr %"struct.google::protobuf::internal::EnumEntry", ptr %invariant.gep.i.i, i64 %11 %13 = load i32, ptr %12, align 8, !tbaa !12 %.fr = freeze i32 %13 %14 = icmp slt i32 %.fr, %3 @@ -150,7 +151,8 @@ _ZSt7advanceIPKilEvRT_T0_.exit.i.i: ; preds = %4, %.thread 21: ; preds = %"_ZSt11lower_boundIPKiiZN6google8protobuf8internal14LookUpEnumNameEPKNS4_9EnumEntryES1_miE3$_0ET_S9_S9_RKT0_T1_.exit" %22 = load i32, ptr %.0.lcssa.i.i, align 4, !tbaa !16 %23 = sext i32 %22 to i64 - %24 = getelementptr inbounds %"struct.google::protobuf::internal::EnumEntry", ptr %0, i64 %23, i32 1 + %24 = getelementptr inbounds %"struct.google::protobuf::internal::EnumEntry", ptr %0, i64 %22 + %24 = getelementptr inbounds nuw i8, ptr %23, i64 16 %25 = load i32, ptr %24, align 8, !tbaa !12 %26 = icmp eq i32 %25, %3 br i1 %26, label %27, label %32 @@ -163,7 +165,7 @@ _ZSt7advanceIPKilEvRT_T0_.exit.i.i: ; preds = %4, %.thread br label %32 32: ; preds = %"_ZSt11lower_boundIPKiiZN6google8protobuf8internal14LookUpEnumNameEPKNS4_9EnumEntryES1_miE3$_0ET_S9_S9_RKT0_T1_.exit", %21, %27 - %.0 = phi i32 [ %31, %27 ], [ -1, %21 ], [ -1, %"_ZSt11lower_boundIPKiiZN6google8protobuf8internal14LookUpEnumNameEPKNS4_9EnumEntryES1_miE3$_0ET_S9_S9_RKT0_T1_.exit" ] + %.0 = phi i32 [ %31, %27 ], [ -1, %20 ], [ -1, %"_ZSt11lower_boundIPKiiZN6google8protobuf8internal14LookUpEnumNameEPKNS4_9EnumEntryES1_miE3$_0ET_S9_S9_RKT0_T1_.exit" ] ret i32 %.0 } diff --git a/bench/sentencepiece/optimized/trainer_interface.ll b/bench/sentencepiece/optimized/trainer_interface.ll index 765410c896c..64d4eb76e31 100644 --- a/bench/sentencepiece/optimized/trainer_interface.ll +++ b/bench/sentencepiece/optimized/trainer_interface.ll @@ -20627,11 +20627,12 @@ define internal void @"_ZNSt17_Function_handlerIFvvEZN13sentencepiece16TrainerIn .lr.ph.split.us.i.i.i: ; preds = %.lr.ph.i.i.i %25 = load ptr, ptr %22, align 8, !tbaa !524 + %invariant.gep.i.i.i = getelementptr i8, ptr %11, i64 32 br label %._crit_edge.i.us.i.i.i ._crit_edge.i.us.i.i.i: ; preds = %_ZN13sentencepiece10AddDPNoiseIlEEvRKNS_11TrainerSpecEPSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEPT_.exit.us.i.i.i, %.lr.ph.split.us.i.i.i %.04.us.i.i.i = phi i64 [ %7, %.lr.ph.split.us.i.i.i ], [ %31, %_ZN13sentencepiece10AddDPNoiseIlEEvRKNS_11TrainerSpecEPSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEPT_.exit.us.i.i.i ] - %26 = getelementptr inbounds nuw %"struct.std::pair", ptr %11, i64 %.04.us.i.i.i, i32 1 + %26 = getelementptr %"struct.std::pair", ptr %invariant.gep.i.i.i, i64 %.04.us.i.i.i %.pre.i.us.i.i.i = load i64, ptr %26, align 8, !tbaa !229 %27 = load i64, ptr %21, align 8, !tbaa !279 %28 = icmp ult i64 %.pre.i.us.i.i.i, %27 @@ -20655,8 +20656,9 @@ _ZN13sentencepiece10AddDPNoiseIlEEvRKNS_11TrainerSpecEPSt23mersenne_twister_engi %33 = phi float [ %.pr.i.i.i, %.lr.ph.splitthread-pre-split.i.i.i ], [ %23, %.lr.ph.i.i.i ] %34 = phi ptr [ %54, %.lr.ph.splitthread-pre-split.i.i.i ], [ %11, %.lr.ph.i.i.i ] %.04.i.i.i = phi i64 [ %52, %.lr.ph.splitthread-pre-split.i.i.i ], [ %7, %.lr.ph.i.i.i ] - %35 = getelementptr inbounds nuw %"struct.std::pair", ptr %34, i64 %.04.i.i.i, i32 1 - %36 = fcmp ogt float %33, 0.000000e+00 + %35 = getelementptr inbounds nuw %"struct.std::pair", ptr %34, i64 %.04.i.i.i + %35 = getelementptr inbounds nuw i8, ptr %34, i64 32 + %36 = fcmp ogt float %32, 0.000000e+00 br i1 %36, label %37, label %._crit_edge.i.i.i.i ._crit_edge.i.i.i.i: ; preds = %.lr.ph.split.i.i.i diff --git a/bench/smol-rs/optimized/21eidrukyvr99qqv.ll b/bench/smol-rs/optimized/21eidrukyvr99qqv.ll index 3620ff5bd75..2afe30e417d 100644 --- a/bench/smol-rs/optimized/21eidrukyvr99qqv.ll +++ b/bench/smol-rs/optimized/21eidrukyvr99qqv.ll @@ -195,33 +195,38 @@ define hidden void @"_ZN16concurrent_queue9unbounded18Unbounded$LT$T$GT$3pop17h4 %69 = icmp eq i64 %68, 0 br i1 %69, label %"_ZN16concurrent_queue9unbounded14Block$LT$T$GT$7destroy17h0d81b4a9a06c8c79E.exit", label %80 -.lr.ph.i34: ; preds = %"_ZN16concurrent_queue9unbounded13Slot$LT$T$GT$10wait_write17hc0bbce794cc99c69E.exit", %79 - %.sroa.01.010.i = phi i64 [ %70, %79 ], [ 0, %"_ZN16concurrent_queue9unbounded13Slot$LT$T$GT$10wait_write17hc0bbce794cc99c69E.exit" ] - %70 = add nuw nsw i64 %.sroa.01.010.i, 1 - %71 = getelementptr inbounds nuw { ptr, { i64 } }, ptr %.0.le, i64 %.sroa.01.010.i, i32 1 - %72 = load atomic i64, ptr %71 acquire, align 8 +.lr.ph.i34: ; preds = %"_ZN16concurrent_queue9unbounded13Slot$LT$T$GT$10wait_write17hc0bbce794cc99c69E.exit" + %invariant.gep.i = getelementptr inbounds nuw i8, ptr %.0.le, i64 8 + br label %.lr.ph.i34 + +.lr.ph.i34:; preds = %79, %.lr.ph.i34 + %.sroa.01.010.i = phi i64 [ %71, %79 ], [ 0, %70 ] + %71 = add nuw nsw i64 %.sroa.01.010.i, 1 + %gep.i = getelementptr inbounds nuw { ptr, { i64 } }, ptr %invariant.gep.i, i64 %.sroa.01.010.i + %72 = load atomic i64, ptr %gep.i acquire, align 8 %73 = and i64 %72, 2 %74 = icmp eq i64 %73, 0 br i1 %74, label %75, label %79 75: ; preds = %.lr.ph.i34 - %76 = atomicrmw or ptr %71, i64 4 acq_rel, align 8 + %76 = atomicrmw or ptr %gep.i, i64 4 acq_rel, align 8 %77 = and i64 %76, 2 %78 = icmp eq i64 %77, 0 br i1 %78, label %"_ZN16concurrent_queue9unbounded14Block$LT$T$GT$7destroy17h0d81b4a9a06c8c79E.exit", label %79 79: ; preds = %75, %.lr.ph.i34 - %exitcond.not.i = icmp eq i64 %70, 30 + %exitcond.not.i = icmp eq i64 %71, 30 br i1 %exitcond.not.i, label %"_ZN16concurrent_queue9unbounded14Block$LT$T$GT$7destroy17h0d81b4a9a06c8c79E.exit.sink.split", label %.lr.ph.i34 80: ; preds = %66 + %invariant.gep.i35 = getelementptr inbounds nuw i8, ptr %.0.le, i64 8 %81 = icmp samesign ult i64 %10, 29 br i1 %81, label %.lr.ph.i36, label %"_ZN16concurrent_queue9unbounded14Block$LT$T$GT$7destroy17h0d81b4a9a06c8c79E.exit.sink.split" .lr.ph.i36: ; preds = %80, %91 - %.sroa.01.010.i37 = phi i64 [ %82, %91 ], [ %40, %80 ] + %.sroa.01.010.i37 = phi i64 [ %82, %90 ], [ %40, %80 ] %82 = add nuw nsw i64 %.sroa.01.010.i37, 1 - %83 = getelementptr inbounds nuw { ptr, { i64 } }, ptr %.0.le, i64 %.sroa.01.010.i37, i32 1 + %83 = getelementptr inbounds nuw { ptr, { i64 } }, ptr %invariant.gep.i35, i64 %.sroa.01.010.i37 %84 = load atomic i64, ptr %83 acquire, align 8 %85 = and i64 %84, 2 %86 = icmp eq i64 %85, 0 diff --git a/bench/tokio-rs/optimized/r9h5225tdo2hxm6.ll b/bench/tokio-rs/optimized/r9h5225tdo2hxm6.ll index e6268750254..dd495c38d63 100644 --- a/bench/tokio-rs/optimized/r9h5225tdo2hxm6.ll +++ b/bench/tokio-rs/optimized/r9h5225tdo2hxm6.ll @@ -11528,9 +11528,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 !1865, !nonnull !12 - %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 @@ -11559,8 +11560,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 !1871, !nonnull !12 - %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 !1868 + %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 !1868 br label %"_ZN5tokio6signal8registry17Registry$LT$S$GT$12record_event17h6f35a1a3570ff76aE.llvm.11424388141523703806.exit" "_ZN5tokio6signal8registry17Registry$LT$S$GT$12record_event17h6f35a1a3570ff76aE.llvm.11424388141523703806.exit": ; preds = %2, %5 @@ -11808,8 +11810,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 !1907, !nonnull !12 - %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 !1910 + %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 !1910 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 a816771fcaf..5ce4dc7c3bd 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 [0 x { { { { i64, ptr }, i64 } }, { i64, [8 x i64] }, i64 }], ptr %20, i64 0, 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 [0 x { { { { i64, ptr }, i64 } }, { i64, [8 x i64] }, i64 }], ptr %20, i64 0, 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/uv-rs/optimized/b1g2y9imcx7brty5xgizhygb8.ll b/bench/uv-rs/optimized/b1g2y9imcx7brty5xgizhygb8.ll index 3de96da06c1..e200887d962 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 868d2650300..a2a860bace6 100644 --- a/bench/verilator/optimized/V3Delayed.ll +++ b/bench/verilator/optimized/V3Delayed.ll @@ -5198,40 +5198,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 @@ -5244,26 +5245,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 1d07fb980f5..3c46bfe7793 100644 --- a/bench/verilator/optimized/V3Subst.ll +++ b/bench/verilator/optimized/V3Subst.ll @@ -4208,7 +4208,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 @@ -4222,37 +4222,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(i64 16, ptr nonnull %5) #22 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 } @@ -5733,7 +5735,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 @@ -5743,12 +5745,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 } @@ -5783,7 +5787,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 cb1be3831cb..9fe6c4baa0f 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/5j8r45rfbax70rfnan7wcjxtw.ll b/bench/wasmi-rs/optimized/5j8r45rfbax70rfnan7wcjxtw.ll index cdcc333e1d1..762e9203574 100644 --- a/bench/wasmi-rs/optimized/5j8r45rfbax70rfnan7wcjxtw.ll +++ b/bench/wasmi-rs/optimized/5j8r45rfbax70rfnan7wcjxtw.ll @@ -1770,6 +1770,7 @@ define internal void @"_ZN4core3ptr79drop_in_place$LT$alloc..boxed..Box$LT$$u5b$ %2 = load ptr, ptr %0, align 8, !nonnull !10, !noundef !10 %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load i64, ptr %3, align 8, !noundef !10 + %invariant.gep.i = getelementptr i8, ptr %2, i64 8 br label %"_ZN4core3ptr44drop_in_place$LT$wasmi..module..Imported$GT$17h605aefbc70407db3E.exit.i" "_ZN4core3ptr44drop_in_place$LT$wasmi..module..Imported$GT$17h605aefbc70407db3E.exit.i": ; preds = %6, %1 @@ -1779,12 +1780,12 @@ define internal void @"_ZN4core3ptr79drop_in_place$LT$alloc..boxed..Box$LT$$u5b$ 6: ; preds = %"_ZN4core3ptr44drop_in_place$LT$wasmi..module..Imported$GT$17h605aefbc70407db3E.exit.i" %7 = add i64 %.sroa.0.0.i, 1 - %8 = getelementptr inbounds nuw { i64, [4 x i64] }, ptr %2, i64 %.sroa.0.0.i, i32 1 + %8 = getelementptr { i64, [4 x i64] }, ptr %invariant.gep.i, i64 %.sroa.0.0.i invoke void @"_ZN4core3ptr54drop_in_place$LT$wasmi..module..import..ImportName$GT$17h7f3e706be27fd8f0E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %8) to label %"_ZN4core3ptr44drop_in_place$LT$wasmi..module..Imported$GT$17h605aefbc70407db3E.exit.i" unwind label %10 "_ZN4core3ptr44drop_in_place$LT$wasmi..module..Imported$GT$17h605aefbc70407db3E.exit7.i": ; preds = %12, %10 - %.sroa.0.1.i = phi i64 [ %7, %10 ], [ %13, %12 ] + %.sroa.0.1.i = phi i64 [ %7, %9 ], [ %13, %11 ] %9 = icmp eq i64 %.sroa.0.1.i, %4 br i1 %9, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i", label %12 @@ -1795,7 +1796,7 @@ define internal void @"_ZN4core3ptr79drop_in_place$LT$alloc..boxed..Box$LT$$u5b$ 12: ; preds = %"_ZN4core3ptr44drop_in_place$LT$wasmi..module..Imported$GT$17h605aefbc70407db3E.exit7.i" %13 = add i64 %.sroa.0.1.i, 1 - %14 = getelementptr inbounds nuw { i64, [4 x i64] }, ptr %2, i64 %.sroa.0.1.i, i32 1 + %14 = getelementptr { i64, [4 x i64] }, ptr %invariant.gep.i, i64 %.sroa.0.1.i invoke void @"_ZN4core3ptr54drop_in_place$LT$wasmi..module..import..ImportName$GT$17h7f3e706be27fd8f0E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %14) to label %"_ZN4core3ptr44drop_in_place$LT$wasmi..module..Imported$GT$17h605aefbc70407db3E.exit7.i" unwind label %15 diff --git a/bench/wasmtime-rs/optimized/24jxjxhx40nukvhl.ll b/bench/wasmtime-rs/optimized/24jxjxhx40nukvhl.ll index d9cb0eae603..3cf7670a9e1 100644 --- a/bench/wasmtime-rs/optimized/24jxjxhx40nukvhl.ll +++ b/bench/wasmtime-rs/optimized/24jxjxhx40nukvhl.ll @@ -150,26 +150,30 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ %.sroa.0.0.copyload = load ptr, ptr %2, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 %.sroa.4.0.copyload = load i64, ptr %.sroa.4.0..sroa_idx, align 8 - %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 16 - %.sroa.7.0.copyload = load ptr, ptr %.sroa.7.0..sroa_idx, align 8 %4 = icmp ult i64 %0, %1 br i1 %4, label %.lr.ph.i, label %_ZN4core4iter6traits8iterator8Iterator4fold17h968f09dc8f70e31dE.llvm.14686358490642834259.exit -.lr.ph.i: ; preds = %3, %.lr.ph.i - %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 - store i8 0, ptr %.sroa.0.sroa.4.0..sroa_idx.i.i, align 8, !noalias !22 - %7 = add i64 %5, 1 - %exitcond.not.i = icmp eq i64 %6, %1 - br i1 %exitcond.not.i, label %_ZN4core4iter6traits8iterator8Iterator4fold17h968f09dc8f70e31dE.llvm.14686358490642834259.exit, label %.lr.ph.i - -_ZN4core4iter6traits8iterator8Iterator4fold17h968f09dc8f70e31dE.llvm.14686358490642834259.exit: ; preds = %.lr.ph.i, %3 - %8 = phi i64 [ %.sroa.4.0.copyload, %3 ], [ %7, %.lr.ph.i ] - %9 = icmp ne ptr %.sroa.0.0.copyload, null - tail call void @llvm.assume(i1 %9) - store i64 %8, ptr %.sroa.0.0.copyload, align 8, !noalias !31 +.lr.ph.i: ; preds = %3 + %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 16 + %.sroa.7.0.copyload = load ptr, ptr %.sroa.7.0..sroa_idx, align 8 + %invariant.gep.i = getelementptr i8, ptr %.sroa.7.0.copyload, i64 32 + br label %5 + +5:; preds = %5, %.lr.ph.i + %6 = phi i64 [ %.sroa.4.0.copyload, %.lr.ph.i ], [ %8, %5 ] + %.sroa.0.06.i = phi i64 [ %0, %.lr.ph.i ], [ %7, %5 ] + %7 = add nuw i64 %.sroa.0.06.i, 1 + %gep.i = getelementptr { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %invariant.gep.i, i64 %6 + store i8 0, ptr %gep.i, align 8, !noalias !22 + %8 = add i64 %6, 1 + %exitcond.not.i = icmp eq i64 %7, %1 + br i1 %exitcond.not.i, label %_ZN4core4iter6traits8iterator8Iterator4fold17h968f09dc8f70e31dE.llvm.14686358490642834259.exit, label %5 + +_ZN4core4iter6traits8iterator8Iterator4fold17h968f09dc8f70e31dE.llvm.14686358490642834259.exit: ; preds = %5, %3 + %9 = phi i64 [ %.sroa.4.0.copyload, %3 ], [ %8, %5 ] + %10 = icmp ne ptr %.sroa.0.0.copyload, null + tail call void @llvm.assume(i1 %10) + store i64 %9, ptr %.sroa.0.0.copyload, align 8, !noalias !31 ret void } @@ -2699,6 +2703,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator4fold17h968f09dc8f70e3 %5 = getelementptr inbounds nuw i8, ptr %2, i64 16 %6 = load ptr, ptr %5, align 8, !alias.scope !701, !noalias !708, !noundef !4 %7 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %invariant.gep = getelementptr i8, ptr %6, i64 32 %.promoted = load i64, ptr %7, align 8, !alias.scope !701, !noalias !708 br label %8 @@ -2709,7 +2714,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator4fold17h968f09dc8f70e3 tail call void @llvm.experimental.noalias.scope.decl(metadata !711) tail call void @llvm.experimental.noalias.scope.decl(metadata !712) tail call void @llvm.experimental.noalias.scope.decl(metadata !713) - %.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 { { { [4 x i64] } }, { i8 }, [7 x i8] }, ptr %invariant.gep, i64 %9 store i8 0, ptr %.sroa.0.sroa.4.0..sroa_idx.i, align 8, !noalias !701 %11 = add i64 %9, 1 %exitcond.not = icmp eq i64 %10, %1 @@ -3317,7 +3322,8 @@ define hidden void @"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d %4 = load ptr, ptr %3, align 8, !alias.scope !891, !noalias !892, !noundef !4 %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 %6 = load i64, ptr %5, align 8, !alias.scope !891, !noalias !892, !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 !891 %7 = add i64 %6, 1 store i64 %7, ptr %5, align 8, !alias.scope !891, !noalias !892 diff --git a/bench/wasmtime-rs/optimized/4qgt4edt0wnnlcua.ll b/bench/wasmtime-rs/optimized/4qgt4edt0wnnlcua.ll index 9909c28e646..fdb0dd0e07e 100644 --- a/bench/wasmtime-rs/optimized/4qgt4edt0wnnlcua.ll +++ b/bench/wasmtime-rs/optimized/4qgt4edt0wnnlcua.ll @@ -4011,24 +4011,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 [0 x { { { { { 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 0, 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 [0 x { { { { { 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 0, 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/wireshark/optimized/interface_frame.ll b/bench/wireshark/optimized/interface_frame.ll index 5afed2f1601..d87b0af442d 100644 --- a/bench/wireshark/optimized/interface_frame.ll +++ b/bench/wireshark/optimized/interface_frame.ll @@ -6918,18 +6918,18 @@ _ZNK17QArrayDataPointerI7QStringE5flagsEv.exit: ; preds = %38, %_ZNK17QArrayDa ; Function Attrs: mustprogress null_pointer_is_valid sspstrong uwtable define internal void @"_ZN9QtPrivate18QFunctorSlotObjectIZN14InterfaceFrame15showContextMenuE6QPointE3$_1Li0ENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb"(i32 noundef %0, ptr noundef %1, ptr readnone captures(none) %2, ptr readnone captures(none) %3, ptr readnone captures(none) %4) #2 align 2 { - switch i32 %0, label %18 [ + switch i32 %0, label %19 [ i32 0, label %6 i32 1, label %9 ] 6: ; preds = %5 %7 = icmp eq ptr %1, null - br i1 %7, label %18, label %8 + br i1 %7, label %19, label %8 8: ; preds = %6 tail call void @_ZdlPvm(ptr noundef nonnull %1, i64 noundef 40) #29 - br label %18 + br label %19 9: ; preds = %5 %10 = getelementptr inbounds nuw i8, ptr %1, i64 16 @@ -6937,15 +6937,16 @@ define internal void @"_ZN9QtPrivate18QFunctorSlotObjectIZN14InterfaceFrame15sho %11 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @global_capture_opts, i64 16), align 8 %12 = load ptr, ptr %11, align 8 %13 = sext i32 %.val to i64 - %14 = getelementptr %struct.interface_tag, ptr %12, i64 %13, i32 18 - %15 = load i8, ptr %14, align 1, !range !42, !noundef !43 - %16 = xor i8 %15, 1 - store i8 %16, ptr %14, align 1 - %17 = load ptr, ptr @mainApp, align 8 - tail call void @_ZN15MainApplication13emitAppSignalENS_9AppSignalE(ptr noundef align 8 dereferenceable_or_null(216) %17, i32 noundef 6) - br label %18 - -18: ; preds = %6, %8, %9, %5 + %14 = getelementptr %struct.interface_tag, ptr %12, i64 %13 + %15 = getelementptr inbounds nuw i8, ptr %14, i64 137 + %16 = load i8, ptr %15, align 1, !range !42, !noundef !43 + %17 = xor i8 %16, 1 + store i8 %17, ptr %15, align 1 + %18 = load ptr, ptr @mainApp, align 8 + tail call void @_ZN15MainApplication13emitAppSignalENS_9AppSignalE(ptr noundef align 8 dereferenceable_or_null(216) %18, i32 noundef 6) + br label %19 + +19: ; preds = %6, %8, %9, %5 ret void } diff --git a/bench/wolfssl/optimized/ecc.ll b/bench/wolfssl/optimized/ecc.ll index a2c244adb01..8db17e8e905 100644 --- a/bench/wolfssl/optimized/ecc.ll +++ b/bench/wolfssl/optimized/ecc.ll @@ -82,12 +82,13 @@ define ptr @wc_ecc_get_name(i32 noundef %0) local_unnamed_addr #1 { wc_ecc_get_curve_idx.exit: ; preds = %2 %sext = shl i64 %indvars.iv.i, 32 %9 = ashr exact i64 %sext, 32 - %10 = getelementptr inbounds [6 x %struct.ecc_set_type], ptr @ecc_sets, i64 0, i64 %9, i32 2 - %11 = load ptr, ptr %10, align 8, !tbaa !12 + %10 = getelementptr inbounds [6 x %struct.ecc_set_type], ptr @ecc_sets, i64 0, i64 %9 + %11 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %12 = load ptr, ptr %11, align 8, !tbaa !12 br label %wc_ecc_get_curve_idx.exit.thread wc_ecc_get_curve_idx.exit.thread: ; preds = %7, %wc_ecc_get_curve_idx.exit - %.0 = phi ptr [ %11, %wc_ecc_get_curve_idx.exit ], [ null, %7 ] + %.0 = phi ptr [ %12, %wc_ecc_get_curve_idx.exit ], [ null, %7 ] ret ptr %.0 } @@ -2048,12 +2049,13 @@ define i32 @wc_ecc_get_curve_id(i32 noundef %0) local_unnamed_addr #0 { 2: ; preds = %1 %3 = zext nneg i32 %0 to i64 - %4 = getelementptr inbounds nuw [6 x %struct.ecc_set_type], ptr @ecc_sets, i64 0, i64 %3, i32 1 - %5 = load i32, ptr %4, align 4, !tbaa !3 - br label %6 + %4 = getelementptr inbounds nuw [6 x %struct.ecc_set_type], ptr @ecc_sets, i64 0, i64 %3 + %5 = getelementptr inbounds nuw i8, ptr %4, i64 4 + %6 = load i32, ptr %5, align 4, !tbaa !3 + br label %7 6: ; preds = %1, %2 - %.0 = phi i32 [ %5, %2 ], [ -1, %1 ] + %.0 = phi i32 [ %6, %2 ], [ -1, %1 ] ret i32 %.0 } @@ -2184,12 +2186,13 @@ define i32 @wc_ecc_get_curve_id_from_name(ptr noundef readonly captures(address_ wc_ecc_get_curve_idx_from_name.exit: ; preds = %6 %11 = and i64 %indvars.iv.i, 4294967295 - %12 = getelementptr inbounds nuw [6 x %struct.ecc_set_type], ptr @ecc_sets, i64 0, i64 %11, i32 1 - %13 = load i32, ptr %12, align 4, !tbaa !3 + %12 = getelementptr inbounds nuw [6 x %struct.ecc_set_type], ptr @ecc_sets, i64 0, i64 %11 + %13 = getelementptr inbounds nuw i8, ptr %12, i64 4 + %14 = load i32, ptr %13, align 4, !tbaa !3 br label %wc_ecc_get_curve_idx_from_name.exit.thread wc_ecc_get_curve_idx_from_name.exit.thread: ; preds = %9, %1, %wc_ecc_get_curve_idx_from_name.exit - %.0 = phi i32 [ %13, %wc_ecc_get_curve_idx_from_name.exit ], [ -173, %1 ], [ -1, %9 ] + %.0 = phi i32 [ %14, %wc_ecc_get_curve_idx_from_name.exit ], [ -173, %1 ], [ -1, %9 ] ret i32 %.0 } diff --git a/bench/yalantinglibs/optimized/binary_json_conformance_suite.ll b/bench/yalantinglibs/optimized/binary_json_conformance_suite.ll index 6356ae4e39a..59a1f3ed2b8 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(i64 8, 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(i64 32, ptr nonnull %ref.tmp.i142) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp2.i) call void @llvm.lifetime.start.p0(i64 32, 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(i64 1, 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(i64 1, 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(i64 1, 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(i64 1, 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(i64 1, 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(i64 32, 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(i64 1, 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(i64 10, ptr nonnull %buf.i1872) call void @llvm.lifetime.end.p0(i64 1, 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(i64 10, ptr nonnull %buf.i2407) call void @llvm.lifetime.end.p0(i64 1, 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(i64 10, ptr nonnull %buf.i2587) call void @llvm.lifetime.end.p0(i64 1, 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/client.ll b/bench/yalantinglibs/optimized/client.ll index c9052e8416a..21f80e8313e 100644 --- a/bench/yalantinglibs/optimized/client.ll +++ b/bench/yalantinglibs/optimized/client.ll @@ -18779,12 +18779,14 @@ if.else: ; preds = %if.then %add.ptr.i9.i = getelementptr inbounds %"struct.asio::detail::timer_queue>>::heap_entry", ptr %4, i64 %sub call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %add.ptr.i9.i, ptr noundef nonnull align 8 dereferenceable(16) %tmp.i, i64 16, i1 false) %5 = load ptr, ptr %heap_, align 8 - %timer_.i = getelementptr inbounds %"struct.asio::detail::timer_queue>>::heap_entry", ptr %5, i64 %0, i32 1 + %timer_.i = getelementptr inbounds %"struct.asio::detail::timer_queue>>::heap_entry", ptr %5, i64 %0 + %timer_.i = getelementptr inbounds nuw i8, ptr %add.ptr.i10.i, i64 8 %6 = load ptr, ptr %timer_.i, align 8 %heap_index_.i = getelementptr inbounds nuw i8, ptr %6, i64 16 store i64 %0, ptr %heap_index_.i, align 8 %7 = load ptr, ptr %heap_, align 8 - %timer_12.i = getelementptr inbounds %"struct.asio::detail::timer_queue>>::heap_entry", ptr %7, i64 %sub, i32 1 + %timer_12.i = getelementptr inbounds %"struct.asio::detail::timer_queue>>::heap_entry", ptr %7, i64 %sub + %timer_12.i = getelementptr inbounds nuw i8, ptr %add.ptr.i11.i, i64 8 %8 = load ptr, ptr %timer_12.i, align 8 %heap_index_13.i = getelementptr inbounds nuw i8, ptr %8, i64 16 store i64 %sub, ptr %heap_index_13.i, align 8 @@ -18827,12 +18829,14 @@ if.end.i: ; preds = %while.body.i %add.ptr.i9.i.i = getelementptr inbounds nuw %"struct.asio::detail::timer_queue>>::heap_entry", ptr %11, i64 %div6.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %add.ptr.i9.i.i, ptr noundef nonnull align 8 dereferenceable(16) %tmp.i.i, i64 16, i1 false) %12 = load ptr, ptr %heap_, align 8 - %timer_.i.i = getelementptr inbounds %"struct.asio::detail::timer_queue>>::heap_entry", ptr %12, i64 %index.addr.09.i, i32 1 + %timer_.i.i = getelementptr inbounds %"struct.asio::detail::timer_queue>>::heap_entry", ptr %12, i64 %index.addr.09.i + %timer_.i.i = getelementptr inbounds nuw i8, ptr %add.ptr.i10.i.i, i64 8 %13 = load ptr, ptr %timer_.i.i, align 8 %heap_index_.i.i = getelementptr inbounds nuw i8, ptr %13, i64 16 store i64 %index.addr.09.i, ptr %heap_index_.i.i, align 8 %14 = load ptr, ptr %heap_, align 8 - %timer_12.i.i = getelementptr inbounds nuw %"struct.asio::detail::timer_queue>>::heap_entry", ptr %14, i64 %div6.i, i32 1 + %timer_12.i.i = getelementptr inbounds nuw %"struct.asio::detail::timer_queue>>::heap_entry", ptr %14, i64 %div6.i + %timer_12.i.i = getelementptr inbounds nuw i8, ptr %add.ptr.i11.i.i, i64 8 %15 = load ptr, ptr %timer_12.i.i, align 8 %heap_index_13.i.i = getelementptr inbounds nuw i8, ptr %15, i64 16 store i64 %div6.i, ptr %heap_index_13.i.i, align 8 @@ -18886,15 +18890,17 @@ if.end.i49: ; preds = %cond.end.i %add.ptr.i9.i.i50 = getelementptr inbounds %"struct.asio::detail::timer_queue>>::heap_entry", ptr %17, i64 %cond.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %add.ptr.i9.i.i50, ptr noundef nonnull align 8 dereferenceable(16) %tmp.i.i41, i64 16, i1 false) %18 = load ptr, ptr %heap_, align 8 - %timer_.i.i51 = getelementptr inbounds %"struct.asio::detail::timer_queue>>::heap_entry", ptr %18, i64 %index.addr.029.i, i32 1 - %19 = load ptr, ptr %timer_.i.i51, align 8 - %heap_index_.i.i52 = getelementptr inbounds nuw i8, ptr %19, i64 16 - store i64 %index.addr.029.i, ptr %heap_index_.i.i52, align 8 + %timer_.i.i51 = getelementptr inbounds %"struct.asio::detail::timer_queue>>::heap_entry", ptr %18, i64 %index.addr.029.i + %timer_.i.i52 = getelementptr inbounds nuw i8, ptr %timer_.i.i51, i64 8 + %19 = load ptr, ptr %timer_.i.i52, align 8 + %heap_index_.i.i53 = getelementptr inbounds nuw i8, ptr %19, i64 16 + store i64 %index.addr.029.i, ptr %heap_index_.i.i53, align 8 %20 = load ptr, ptr %heap_, align 8 - %timer_12.i.i53 = getelementptr inbounds %"struct.asio::detail::timer_queue>>::heap_entry", ptr %20, i64 %cond.i, i32 1 - %21 = load ptr, ptr %timer_12.i.i53, align 8 - %heap_index_13.i.i54 = getelementptr inbounds nuw i8, ptr %21, i64 16 - store i64 %cond.i, ptr %heap_index_13.i.i54, align 8 + %timer_12.i.i53 = getelementptr inbounds %"struct.asio::detail::timer_queue>>::heap_entry", ptr %20, i64 %cond.i + %timer_12.i.i55 = getelementptr inbounds nuw i8, ptr %timer_12.i.i53, i64 8 + %21 = load ptr, ptr %timer_12.i.i55, align 8 + %heap_index_13.i.i56 = getelementptr inbounds nuw i8, ptr %21, i64 16 + store i64 %cond.i, ptr %heap_index_13.i.i56, align 8 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %tmp.i.i41) %child.0.in.i = shl i64 %cond.i, 1 %child.0.i = or disjoint i64 %child.0.in.i, 1 @@ -33048,12 +33054,14 @@ if.end.i: ; preds = %while.body.i %add.ptr.i9.i.i = getelementptr inbounds nuw %"struct.asio::detail::timer_queue>>::heap_entry", ptr %13, i64 %div6.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %add.ptr.i9.i.i, ptr noundef nonnull align 8 dereferenceable(16) %tmp.i.i, i64 16, i1 false) %14 = load ptr, ptr %heap_, align 8 - %timer_.i.i = getelementptr inbounds %"struct.asio::detail::timer_queue>>::heap_entry", ptr %14, i64 %index.addr.09.i, i32 1 + %timer_.i.i = getelementptr inbounds %"struct.asio::detail::timer_queue>>::heap_entry", ptr %14, i64 %index.addr.09.i + %timer_.i.i = getelementptr inbounds nuw i8, ptr %add.ptr.i10.i.i, i64 8 %15 = load ptr, ptr %timer_.i.i, align 8 %heap_index_.i.i = getelementptr inbounds nuw i8, ptr %15, i64 16 store i64 %index.addr.09.i, ptr %heap_index_.i.i, align 8 %16 = load ptr, ptr %heap_, align 8 - %timer_12.i.i = getelementptr inbounds nuw %"struct.asio::detail::timer_queue>>::heap_entry", ptr %16, i64 %div6.i, i32 1 + %timer_12.i.i = getelementptr inbounds nuw %"struct.asio::detail::timer_queue>>::heap_entry", ptr %16, i64 %div6.i + %timer_12.i.i = getelementptr inbounds nuw i8, ptr %add.ptr.i11.i.i, i64 8 %17 = load ptr, ptr %timer_12.i.i, align 8 %heap_index_13.i.i = getelementptr inbounds nuw i8, ptr %17, i64 16 store i64 %div6.i, ptr %heap_index_13.i.i, align 8 diff --git a/bench/zed-rs/optimized/0drf4dow76rapncpvt6xcgeqh.ll b/bench/zed-rs/optimized/0drf4dow76rapncpvt6xcgeqh.ll index 814ebf76b99..ed456c8088f 100644 --- a/bench/zed-rs/optimized/0drf4dow76rapncpvt6xcgeqh.ll +++ b/bench/zed-rs/optimized/0drf4dow76rapncpvt6xcgeqh.ll @@ -13285,9 +13285,8 @@ _ZN4gpui3app10entity_map9EntityMap5lease17h9f30d37168734a5eE.exit: ; preds = %4 66: ; preds = %"_ZN4core3ptr44drop_in_place$LT$git..repository..Branch$GT$17hbff6dd4809b6ccb1E.exit.i.i.i" %67 = add nuw i64 %.sroa.0.0.i.i.i, 1 - %.idx.i = mul nsw i64 %.sroa.0.0.i.i.i, 40 - %gep.i = getelementptr i8, ptr %invariant.gep.i, i64 %.idx.i - invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h16a8f09ed21322a6E.llvm.7484384291333293019"(ptr noalias noundef nonnull align 8 dereferenceable(16) %gep.i) + %gep.i.i.i = getelementptr [0 x { { i64, [1 x i64] }, { { { { ptr, i64 } }, {} }, {} }, i8, [7 x i8] }], ptr %invariant.gep.i, i64 0, i64 %.sroa.0.0.i.i.i + invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h16a8f09ed21322a6E.llvm.7484384291333293019"(ptr noalias noundef nonnull align 8 dereferenceable(16) %gep.i.i.i) to label %"_ZN4core3ptr44drop_in_place$LT$git..repository..Branch$GT$17hbff6dd4809b6ccb1E.exit.i.i.i" unwind label %69, !noalias !2197 "_ZN4core3ptr44drop_in_place$LT$git..repository..Branch$GT$17hbff6dd4809b6ccb1E.exit7.i.i.i": ; preds = %71, %69 @@ -13302,9 +13301,8 @@ _ZN4gpui3app10entity_map9EntityMap5lease17h9f30d37168734a5eE.exit: ; preds = %4 71: ; preds = %"_ZN4core3ptr44drop_in_place$LT$git..repository..Branch$GT$17hbff6dd4809b6ccb1E.exit7.i.i.i" %72 = add i64 %.sroa.0.1.i.i.i, 1 - %.idx11.i = mul nsw i64 %.sroa.0.1.i.i.i, 40 - %gep13.i = getelementptr i8, ptr %invariant.gep.i, i64 %.idx11.i - invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h16a8f09ed21322a6E.llvm.7484384291333293019"(ptr noalias noundef nonnull align 8 dereferenceable(16) %gep13.i) + %gep9.i.i.i = getelementptr [0 x { { i64, [1 x i64] }, { { { { ptr, i64 } }, {} }, {} }, i8, [7 x i8] }], ptr %invariant.gep.i, i64 0, i64 %.sroa.0.1.i.i.i + invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h16a8f09ed21322a6E.llvm.7484384291333293019"(ptr noalias noundef nonnull align 8 dereferenceable(16) %gep9.i.i.i) to label %"_ZN4core3ptr44drop_in_place$LT$git..repository..Branch$GT$17hbff6dd4809b6ccb1E.exit7.i.i.i" unwind label %73, !noalias !2197 73: ; preds = %71 diff --git a/bench/zed-rs/optimized/2y3d15fhybcig6chysm503x7k.ll b/bench/zed-rs/optimized/2y3d15fhybcig6chysm503x7k.ll index e1d9e75c376..fe08ae2293e 100644 --- a/bench/zed-rs/optimized/2y3d15fhybcig6chysm503x7k.ll +++ b/bench/zed-rs/optimized/2y3d15fhybcig6chysm503x7k.ll @@ -2687,14 +2687,12 @@ define noundef range(i8 0, 4) i8 @_ZN3git6status9GitStatus3get17hf353843cd49339f br label %25 25: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$16binary_search_by17h36f54d32a14c2317E.exit", %26 - %.sroa.0.0 = phi i8 [ %29, %26 ], [ 3, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$16binary_search_by17h36f54d32a14c2317E.exit" ] + %.sroa.0.0 = phi i8 [ %28, %26 ], [ 3, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$16binary_search_by17h36f54d32a14c2317E.exit" ] ret i8 %.sroa.0.0 26: ; preds = %.lr.ph.i - %.idx = shl nsw i64 %11, 5 - %27 = getelementptr i8, ptr %9, i64 %.idx - %28 = getelementptr i8, ptr %27, i64 24 - %29 = load i8, ptr %28, align 8, !range !142, !noundef !4 + %27 = getelementptr inbounds nuw i8, ptr %13, i64 24 + %28 = load i8, ptr %27, align 8, !range !142, !noundef !4 br label %25 } diff --git a/bench/zlib/optimized/inflate.ll b/bench/zlib/optimized/inflate.ll index 98d05f3ca04..eb555c84062 100644 --- a/bench/zlib/optimized/inflate.ll +++ b/bench/zlib/optimized/inflate.ll @@ -2093,6 +2093,9 @@ default.unreachable2869: ; preds = %467 %584 = load i32, ptr %61, align 8, !tbaa !75 %notmask = shl nsw i32 -1, %584 %585 = xor i32 %notmask, -1 + %invariant.gep3317 = getelementptr inbounds nuw i8, ptr %583, i64 1 + %invariant.gep = getelementptr inbounds nuw i8, ptr %583, i64 1 + %invariant.gep3319 = getelementptr i8, ptr %583, i64 2 br label %.preheader1282 .preheader1282: ; preds = %.preheader1282.lr.ph, %695 @@ -2104,7 +2107,7 @@ default.unreachable2869: ; preds = %467 %586 = trunc i64 %.389672003 to i32 %587 = and i32 %585, %586 %588 = zext nneg i32 %587 to i64 - %.sroa.1867.0..sroa_idx1947 = getelementptr inbounds nuw %struct.code, ptr %583, i64 %588, i32 1 + %.sroa.1867.0..sroa_idx1947 = getelementptr inbounds nuw %struct.code, ptr %invariant.gep3317, i64 %588 %.sroa.1867.0.copyload1948 = load i8, ptr %.sroa.1867.0..sroa_idx1947, align 1, !tbaa !41 %589 = zext i8 %.sroa.1867.0.copyload1948 to i32 %.not11841949 = icmp ult i32 %.382004, %589 @@ -2133,7 +2136,7 @@ default.unreachable2869: ; preds = %467 %599 = trunc i64 %598 to i32 %600 = and i32 %585, %599 %601 = zext nneg i32 %600 to i64 - %.sroa.1867.0..sroa_idx = getelementptr inbounds nuw %struct.code, ptr %583, i64 %601, i32 1 + %.sroa.1867.0..sroa_idx = getelementptr inbounds nuw %struct.code, ptr %invariant.gep, i64 %601 %.sroa.1867.0.copyload = load i8, ptr %.sroa.1867.0..sroa_idx, align 1, !tbaa !41 %602 = zext i8 %.sroa.1867.0.copyload to i64 %.not1184 = icmp samesign ult i64 %indvars.iv.next2794, %602 @@ -2152,7 +2155,7 @@ default.unreachable2869: ; preds = %467 %.40969.lcssa = phi i64 [ %.389672003, %.preheader1282 ], [ %598, %._crit_edge1955.loopexit ] %.40.lcssa = phi i32 [ %.382004, %.preheader1282 ], [ %604, %._crit_edge1955.loopexit ] %.sroa.1867.0.copyload.lcssa = phi i8 [ %.sroa.1867.0.copyload1948, %.preheader1282 ], [ %.sroa.1867.0.copyload, %._crit_edge1955.loopexit ] - %.sroa.42.0..sroa_idx.le = getelementptr inbounds nuw %struct.code, ptr %583, i64 %605, i32 2 + %.sroa.42.0..sroa_idx.le = getelementptr %struct.code, ptr %invariant.gep3319, i64 %605 %.sroa.42.0.copyload.le = load i16, ptr %.sroa.42.0..sroa_idx.le, align 2, !tbaa !82 %606 = icmp ult i16 %.sroa.42.0.copyload.le, 16 br i1 %606, label %607, label %614 @@ -3373,13 +3376,13 @@ default.unreachable2869: ; preds = %467 br label %.loopexit1277 .loopexit1277: ; preds = %312, %318, %350, %362, %394, %449, %503, %509, %711, %931, %975, %.lr.ph2125, %.lr.ph1782, %82, %.loopexit1277.loopexit3745, %.loopexit1277.loopexit2926, %.loopexit1277.loopexit2925, %.loopexit1277.loopexit2924, %.loopexit1277.loopexit2923, %.loopexit1277.loopexit2922, %.loopexit1277.loopexit2921, %.loopexit1277.loopexit2920, %.loopexit1277.loopexit2361, %.loopexit1277.loopexit2360, %.loopexit1277.loopexit2359, %.loopexit1277.loopexit2351, %.loopexit1277.loopexit2350, %.loopexit1277.loopexit2349, %.loopexit1277.loopexit2348, %.loopexit1277.loopexit2347, %.loopexit1277.loopexit2346, %.loopexit1277.loopexit2345, %.loopexit1277.loopexit2344, %.loopexit1277.loopexit2342, %.loopexit1277.loopexit2341, %.loopexit1277.loopexit, %1047, %473 - %.09902690 = phi i32 [ %.0990, %473 ], [ %.0990, %1047 ], [ %.0990, %.loopexit1277.loopexit ], [ %.0990, %.loopexit1277.loopexit2341 ], [ %.0990, %.loopexit1277.loopexit2342 ], [ %.0990, %.loopexit1277.loopexit2344 ], [ %.0990, %.loopexit1277.loopexit2345 ], [ %.0990, %.loopexit1277.loopexit2346 ], [ %.0990, %.loopexit1277.loopexit2347 ], [ %.0990, %.loopexit1277.loopexit2348 ], [ %.0990, %.loopexit1277.loopexit2349 ], [ %.0990, %.loopexit1277.loopexit2350 ], [ %.0990, %.loopexit1277.loopexit2351 ], [ %.0990, %.loopexit1277.loopexit2359 ], [ %.0990, %.loopexit1277.loopexit2360 ], [ %.0990, %.loopexit1277.loopexit2361 ], [ %.0990, %.loopexit1277.loopexit2920 ], [ %.0990, %.loopexit1277.loopexit2921 ], [ %.0990, %.loopexit1277.loopexit2922 ], [ %.0990, %.loopexit1277.loopexit2923 ], [ %.0990, %.loopexit1277.loopexit2924 ], [ %.0990, %.loopexit1277.loopexit2925 ], [ %.0990, %.loopexit1277.loopexit2926 ], [ %.0990, %82 ], [ %.0990, %.lr.ph1782 ], [ %.0990, %312 ], [ %.0990, %318 ], [ %.0990, %350 ], [ %.0990, %362 ], [ %.0990, %394 ], [ %.0990, %449 ], [ %.0990, %503 ], [ %.0990, %509 ], [ %.0990, %711 ], [ 0, %931 ], [ 0, %975 ], [ %.0990, %.lr.ph2125 ], [ %.0990, %.loopexit1277.loopexit3745 ] - %.641120 = phi ptr [ %.371093.lcssa, %473 ], [ %.621118, %1047 ], [ %.4911051984, %.loopexit1277.loopexit ], [ %.4611021974, %.loopexit1277.loopexit2341 ], [ %.4811041964, %.loopexit1277.loopexit2342 ], [ %.2210782329, %.loopexit1277.loopexit2344 ], [ %.3510912319, %.loopexit1277.loopexit2345 ], [ %.2810842310, %.loopexit1277.loopexit2346 ], [ %.2710832300, %.loopexit1277.loopexit2347 ], [ %.2510812290, %.loopexit1277.loopexit2348 ], [ %.2310792280, %.loopexit1277.loopexit2349 ], [ %.3610922112, %.loopexit1277.loopexit2350 ], [ %.3810942101, %.loopexit1277.loopexit2351 ], [ %.3910951768, %.loopexit1277.loopexit2359 ], [ %.6311191758, %.loopexit1277.loopexit2360 ], [ %.6111171751, %.loopexit1277.loopexit2361 ], [ %scevgep.le, %.loopexit1277.loopexit2920 ], [ %scevgep2822.le, %.loopexit1277.loopexit2921 ], [ %scevgep2820.le, %.loopexit1277.loopexit2922 ], [ %scevgep2816.le, %.loopexit1277.loopexit2923 ], [ %scevgep2813.le, %.loopexit1277.loopexit2924 ], [ %scevgep2811.le, %.loopexit1277.loopexit2925 ], [ %scevgep2807.le, %.loopexit1277.loopexit2926 ], [ %.01056, %82 ], [ %.4010961932, %.lr.ph1782 ], [ %.311087, %312 ], [ %.31059, %318 ], [ %353, %350 ], [ %.41060, %362 ], [ %397, %394 ], [ %.71063, %449 ], [ %.381094.lcssa, %503 ], [ %.101066, %509 ], [ %.421098.lcssa, %711 ], [ %.181074, %931 ], [ %.01056, %975 ], [ %.81064, %.lr.ph2125 ], [ %.01056, %.loopexit1277.loopexit3745 ] - %.64 = phi i32 [ %.371029.lcssa, %473 ], [ %.62, %1047 ], [ 0, %.loopexit1277.loopexit ], [ 0, %.loopexit1277.loopexit2341 ], [ 0, %.loopexit1277.loopexit2342 ], [ 0, %.loopexit1277.loopexit2344 ], [ 0, %.loopexit1277.loopexit2345 ], [ 0, %.loopexit1277.loopexit2346 ], [ 0, %.loopexit1277.loopexit2347 ], [ 0, %.loopexit1277.loopexit2348 ], [ 0, %.loopexit1277.loopexit2349 ], [ 0, %.loopexit1277.loopexit2350 ], [ 0, %.loopexit1277.loopexit2351 ], [ 0, %.loopexit1277.loopexit2359 ], [ 0, %.loopexit1277.loopexit2360 ], [ 0, %.loopexit1277.loopexit2361 ], [ 0, %.loopexit1277.loopexit2920 ], [ 0, %.loopexit1277.loopexit2921 ], [ 0, %.loopexit1277.loopexit2922 ], [ 0, %.loopexit1277.loopexit2923 ], [ 0, %.loopexit1277.loopexit2924 ], [ 0, %.loopexit1277.loopexit2925 ], [ 0, %.loopexit1277.loopexit2926 ], [ %.0992, %82 ], [ 0, %.lr.ph1782 ], [ %.311023, %312 ], [ 0, %318 ], [ %351, %350 ], [ 0, %362 ], [ %395, %394 ], [ %.7999, %449 ], [ %.381030.lcssa, %503 ], [ %.101002, %509 ], [ %.421034.lcssa, %711 ], [ %.181010, %931 ], [ %.0992, %975 ], [ 0, %.lr.ph2125 ], [ %.0992, %.loopexit1277.loopexit3745 ] - %.60989 = phi i64 [ %474, %473 ], [ %.58987, %1047 ], [ %.459741986, %.loopexit1277.loopexit ], [ %.429711976, %.loopexit1277.loopexit2341 ], [ %.449731966, %.loopexit1277.loopexit2342 ], [ %.229512331, %.loopexit1277.loopexit2344 ], [ %.319602321, %.loopexit1277.loopexit2345 ], [ %.289572312, %.loopexit1277.loopexit2346 ], [ %.279562302, %.loopexit1277.loopexit2347 ], [ %.259542292, %.loopexit1277.loopexit2348 ], [ %.239522282, %.loopexit1277.loopexit2349 ], [ %.329612114, %.loopexit1277.loopexit2350 ], [ %.349632103, %.loopexit1277.loopexit2351 ], [ %.359641770, %.loopexit1277.loopexit2359 ], [ %.599881760, %.loopexit1277.loopexit2360 ], [ %.579861753, %.loopexit1277.loopexit2361 ], [ %.409691952, %.loopexit1277.loopexit2920 ], [ %.559842093, %.loopexit1277.loopexit2921 ], [ %.529812081, %.loopexit1277.loopexit2922 ], [ %.519802062, %.loopexit1277.loopexit2923 ], [ %.509792048, %.loopexit1277.loopexit2924 ], [ %.479762036, %.loopexit1277.loopexit2925 ], [ %.469752017, %.loopexit1277.loopexit2926 ], [ %.0929, %82 ], [ %.369651934, %.lr.ph1782 ], [ %.2931, %312 ], [ %.3932, %318 ], [ %.3932, %350 ], [ %.4933, %362 ], [ %.4933, %394 ], [ %.7936, %449 ], [ 0, %503 ], [ %.10939, %509 ], [ %.38967.lcssa, %711 ], [ %.18947, %931 ], [ %.0929, %975 ], [ %.8937, %.lr.ph2125 ], [ %.0929, %.loopexit1277.loopexit3745 ] - %.60 = phi i32 [ %475, %473 ], [ %.58, %1047 ], [ %1048, %.loopexit1277.loopexit ], [ %1049, %.loopexit1277.loopexit2341 ], [ %1050, %.loopexit1277.loopexit2342 ], [ %1051, %.loopexit1277.loopexit2344 ], [ %1052, %.loopexit1277.loopexit2345 ], [ %1053, %.loopexit1277.loopexit2346 ], [ %1054, %.loopexit1277.loopexit2347 ], [ %1055, %.loopexit1277.loopexit2348 ], [ %1056, %.loopexit1277.loopexit2349 ], [ %1057, %.loopexit1277.loopexit2350 ], [ %1058, %.loopexit1277.loopexit2351 ], [ %1059, %.loopexit1277.loopexit2359 ], [ %1060, %.loopexit1277.loopexit2360 ], [ %1061, %.loopexit1277.loopexit2361 ], [ %1064, %.loopexit1277.loopexit2920 ], [ %1066, %.loopexit1277.loopexit2921 ], [ %1070, %.loopexit1277.loopexit2922 ], [ %1073, %.loopexit1277.loopexit2923 ], [ %1075, %.loopexit1277.loopexit2924 ], [ %1079, %.loopexit1277.loopexit2925 ], [ %1082, %.loopexit1277.loopexit2926 ], [ %.0918, %82 ], [ %.361935, %.lr.ph1782 ], [ %.2920, %312 ], [ %.3921, %318 ], [ %.3921, %350 ], [ %.4922, %362 ], [ %.4922, %394 ], [ %.7925, %449 ], [ 0, %503 ], [ %.10928, %509 ], [ %.38.lcssa, %711 ], [ %.18, %931 ], [ %.0918, %975 ], [ %.8926, %.lr.ph2125 ], [ %.0918, %.loopexit1277.loopexit3745 ] - %.5917 = phi i32 [ %.0912, %473 ], [ %.1913, %1047 ], [ %.0912, %.loopexit1277.loopexit ], [ %.0912, %.loopexit1277.loopexit2341 ], [ %.0912, %.loopexit1277.loopexit2342 ], [ %.0912, %.loopexit1277.loopexit2344 ], [ %.0912, %.loopexit1277.loopexit2345 ], [ %.0912, %.loopexit1277.loopexit2346 ], [ %.0912, %.loopexit1277.loopexit2347 ], [ %.0912, %.loopexit1277.loopexit2348 ], [ %.0912, %.loopexit1277.loopexit2349 ], [ %.0912, %.loopexit1277.loopexit2350 ], [ %.0912, %.loopexit1277.loopexit2351 ], [ %.0912, %.loopexit1277.loopexit2359 ], [ %.1913, %.loopexit1277.loopexit2360 ], [ %.0912, %.loopexit1277.loopexit2361 ], [ %.0912, %.loopexit1277.loopexit2920 ], [ %.0912, %.loopexit1277.loopexit2921 ], [ %.0912, %.loopexit1277.loopexit2922 ], [ %.0912, %.loopexit1277.loopexit2923 ], [ %.0912, %.loopexit1277.loopexit2924 ], [ %.0912, %.loopexit1277.loopexit2925 ], [ %.0912, %.loopexit1277.loopexit2926 ], [ %.0912, %82 ], [ %.0912, %.lr.ph1782 ], [ %.0912, %.lr.ph2125 ], [ %.0912, %975 ], [ %.0912, %931 ], [ %.0912, %711 ], [ %.0912, %509 ], [ %.0912, %503 ], [ %.0912, %449 ], [ %.0912, %394 ], [ %.0912, %362 ], [ %.0912, %350 ], [ %.0912, %318 ], [ %.0912, %312 ], [ %.0912, %.loopexit1277.loopexit3745 ] - %.9 = phi i32 [ %.0, %473 ], [ 1, %1047 ], [ %.1, %.loopexit1277.loopexit ], [ %.1, %.loopexit1277.loopexit2341 ], [ %.1, %.loopexit1277.loopexit2342 ], [ %.0, %.loopexit1277.loopexit2344 ], [ %.0, %.loopexit1277.loopexit2345 ], [ %.0, %.loopexit1277.loopexit2346 ], [ %.0, %.loopexit1277.loopexit2347 ], [ %.0, %.loopexit1277.loopexit2348 ], [ %.0, %.loopexit1277.loopexit2349 ], [ %.0, %.loopexit1277.loopexit2350 ], [ %.0, %.loopexit1277.loopexit2351 ], [ %.0, %.loopexit1277.loopexit2359 ], [ %.0, %.loopexit1277.loopexit2360 ], [ %.0, %.loopexit1277.loopexit2361 ], [ %.1, %.loopexit1277.loopexit2920 ], [ %.6, %.loopexit1277.loopexit2921 ], [ %.5, %.loopexit1277.loopexit2922 ], [ %.5, %.loopexit1277.loopexit2923 ], [ %.4, %.loopexit1277.loopexit2924 ], [ %.3, %.loopexit1277.loopexit2925 ], [ %.3, %.loopexit1277.loopexit2926 ], [ -3, %82 ], [ %.0, %.lr.ph1782 ], [ %.0, %312 ], [ %.0, %318 ], [ %.0, %350 ], [ %.0, %362 ], [ %.0, %394 ], [ %.0, %449 ], [ %.0, %503 ], [ %.0, %509 ], [ 0, %711 ], [ %.7, %931 ], [ %.0, %975 ], [ %.0, %.lr.ph2125 ], [ 1, %.loopexit1277.loopexit3745 ] + %.09902690 = phi i32 [ %.0990, %473 ], [ %.0990, %1047 ], [ %.0990, %.loopexit1277.loopexit ], [ %.0990, %.loopexit1277.loopexit2341 ], [ %.0990, %.loopexit1277.loopexit2342 ], [ %.0990, %.loopexit1277.loopexit2344 ], [ %.0990, %.loopexit1277.loopexit2345 ], [ %.0990, %.loopexit1277.loopexit2346 ], [ %.0990, %.loopexit1277.loopexit2347 ], [ %.0990, %.loopexit1277.loopexit2348 ], [ %.0990, %.loopexit1277.loopexit2349 ], [ %.0990, %.loopexit1277.loopexit2350 ], [ %.0990, %.loopexit1277.loopexit2351 ], [ %.0990, %.loopexit1277.loopexit2359 ], [ %.0990, %.loopexit1277.loopexit2360 ], [ %.0990, %.loopexit1277.loopexit2361 ], [ %.0990, %.loopexit1277.loopexit2920 ], [ %.0990, %.loopexit1277.loopexit2921 ], [ %.0990, %.loopexit1277.loopexit2922 ], [ %.0990, %.loopexit1277.loopexit2923 ], [ %.0990, %.loopexit1277.loopexit2924 ], [ %.0990, %.loopexit1277.loopexit2925 ], [ %.0990, %.loopexit1277.loopexit2926 ], [ %.0990, %82 ], [ %.0990, %.lr.ph1782 ], [ %.0990, %312 ], [ %.0990, %318 ], [ %.0990, %350 ], [ %.0990, %362 ], [ %.0990, %394 ], [ %.0990, %449 ], [ %.0990, %503 ], [ %.0990, %509 ], [ %.0990, %711 ], [ 0, %931 ], [ 0, %975 ], [ %.0990, %.lr.ph2125 ], [ %.0990, %.loopexit1277.loopexit3749 ] + %.641120 = phi ptr [ %.371093.lcssa, %473 ], [ %.621118, %1047 ], [ %.4911051984, %.loopexit1277.loopexit ], [ %.4611021974, %.loopexit1277.loopexit2341 ], [ %.4811041964, %.loopexit1277.loopexit2342 ], [ %.2210782329, %.loopexit1277.loopexit2344 ], [ %.3510912319, %.loopexit1277.loopexit2345 ], [ %.2810842310, %.loopexit1277.loopexit2346 ], [ %.2710832300, %.loopexit1277.loopexit2347 ], [ %.2510812290, %.loopexit1277.loopexit2348 ], [ %.2310792280, %.loopexit1277.loopexit2349 ], [ %.3610922112, %.loopexit1277.loopexit2350 ], [ %.3810942101, %.loopexit1277.loopexit2351 ], [ %.3910951768, %.loopexit1277.loopexit2359 ], [ %.6311191758, %.loopexit1277.loopexit2360 ], [ %.6111171751, %.loopexit1277.loopexit2361 ], [ %scevgep.le, %.loopexit1277.loopexit2920 ], [ %scevgep2822.le, %.loopexit1277.loopexit2921 ], [ %scevgep2820.le, %.loopexit1277.loopexit2922 ], [ %scevgep2816.le, %.loopexit1277.loopexit2923 ], [ %scevgep2813.le, %.loopexit1277.loopexit2924 ], [ %scevgep2811.le, %.loopexit1277.loopexit2925 ], [ %scevgep2807.le, %.loopexit1277.loopexit2926 ], [ %.01056, %82 ], [ %.4010961932, %.lr.ph1782 ], [ %.311087, %312 ], [ %.31059, %318 ], [ %353, %350 ], [ %.41060, %362 ], [ %397, %394 ], [ %.71063, %449 ], [ %.381094.lcssa, %503 ], [ %.101066, %509 ], [ %.421098.lcssa, %711 ], [ %.181074, %931 ], [ %.01056, %975 ], [ %.81064, %.lr.ph2125 ], [ %.01056, %.loopexit1277.loopexit3749 ] + %.64 = phi i32 [ %.371029.lcssa, %473 ], [ %.62, %1047 ], [ 0, %.loopexit1277.loopexit ], [ 0, %.loopexit1277.loopexit2341 ], [ 0, %.loopexit1277.loopexit2342 ], [ 0, %.loopexit1277.loopexit2344 ], [ 0, %.loopexit1277.loopexit2345 ], [ 0, %.loopexit1277.loopexit2346 ], [ 0, %.loopexit1277.loopexit2347 ], [ 0, %.loopexit1277.loopexit2348 ], [ 0, %.loopexit1277.loopexit2349 ], [ 0, %.loopexit1277.loopexit2350 ], [ 0, %.loopexit1277.loopexit2351 ], [ 0, %.loopexit1277.loopexit2359 ], [ 0, %.loopexit1277.loopexit2360 ], [ 0, %.loopexit1277.loopexit2361 ], [ 0, %.loopexit1277.loopexit2920 ], [ 0, %.loopexit1277.loopexit2921 ], [ 0, %.loopexit1277.loopexit2922 ], [ 0, %.loopexit1277.loopexit2923 ], [ 0, %.loopexit1277.loopexit2924 ], [ 0, %.loopexit1277.loopexit2925 ], [ 0, %.loopexit1277.loopexit2926 ], [ %.0992, %82 ], [ 0, %.lr.ph1782 ], [ %.311023, %312 ], [ 0, %318 ], [ %351, %350 ], [ 0, %362 ], [ %395, %394 ], [ %.7999, %449 ], [ %.381030.lcssa, %503 ], [ %.101002, %509 ], [ %.421034.lcssa, %711 ], [ %.181010, %931 ], [ %.0992, %975 ], [ 0, %.lr.ph2125 ], [ %.0992, %.loopexit1277.loopexit3749 ] + %.60989 = phi i64 [ %474, %473 ], [ %.58987, %1047 ], [ %.459741986, %.loopexit1277.loopexit ], [ %.429711976, %.loopexit1277.loopexit2341 ], [ %.449731966, %.loopexit1277.loopexit2342 ], [ %.229512331, %.loopexit1277.loopexit2344 ], [ %.319602321, %.loopexit1277.loopexit2345 ], [ %.289572312, %.loopexit1277.loopexit2346 ], [ %.279562302, %.loopexit1277.loopexit2347 ], [ %.259542292, %.loopexit1277.loopexit2348 ], [ %.239522282, %.loopexit1277.loopexit2349 ], [ %.329612114, %.loopexit1277.loopexit2350 ], [ %.349632103, %.loopexit1277.loopexit2351 ], [ %.359641770, %.loopexit1277.loopexit2359 ], [ %.599881760, %.loopexit1277.loopexit2360 ], [ %.579861753, %.loopexit1277.loopexit2361 ], [ %.409691952, %.loopexit1277.loopexit2920 ], [ %.559842093, %.loopexit1277.loopexit2921 ], [ %.529812081, %.loopexit1277.loopexit2922 ], [ %.519802062, %.loopexit1277.loopexit2923 ], [ %.509792048, %.loopexit1277.loopexit2924 ], [ %.479762036, %.loopexit1277.loopexit2925 ], [ %.469752017, %.loopexit1277.loopexit2926 ], [ %.0929, %82 ], [ %.369651934, %.lr.ph1782 ], [ %.2931, %312 ], [ %.3932, %318 ], [ %.3932, %350 ], [ %.4933, %362 ], [ %.4933, %394 ], [ %.7936, %449 ], [ 0, %503 ], [ %.10939, %509 ], [ %.38967.lcssa, %711 ], [ %.18947, %931 ], [ %.0929, %975 ], [ %.8937, %.lr.ph2125 ], [ %.0929, %.loopexit1277.loopexit3749 ] + %.60 = phi i32 [ %475, %473 ], [ %.58, %1047 ], [ %1048, %.loopexit1277.loopexit ], [ %1049, %.loopexit1277.loopexit2341 ], [ %1050, %.loopexit1277.loopexit2342 ], [ %1051, %.loopexit1277.loopexit2344 ], [ %1052, %.loopexit1277.loopexit2345 ], [ %1053, %.loopexit1277.loopexit2346 ], [ %1054, %.loopexit1277.loopexit2347 ], [ %1055, %.loopexit1277.loopexit2348 ], [ %1056, %.loopexit1277.loopexit2349 ], [ %1057, %.loopexit1277.loopexit2350 ], [ %1058, %.loopexit1277.loopexit2351 ], [ %1059, %.loopexit1277.loopexit2359 ], [ %1060, %.loopexit1277.loopexit2360 ], [ %1061, %.loopexit1277.loopexit2361 ], [ %1064, %.loopexit1277.loopexit2920 ], [ %1066, %.loopexit1277.loopexit2921 ], [ %1070, %.loopexit1277.loopexit2922 ], [ %1073, %.loopexit1277.loopexit2923 ], [ %1075, %.loopexit1277.loopexit2924 ], [ %1079, %.loopexit1277.loopexit2925 ], [ %1082, %.loopexit1277.loopexit2926 ], [ %.0918, %82 ], [ %.361935, %.lr.ph1782 ], [ %.2920, %312 ], [ %.3921, %318 ], [ %.3921, %350 ], [ %.4922, %362 ], [ %.4922, %394 ], [ %.7925, %449 ], [ 0, %503 ], [ %.10928, %509 ], [ %.38.lcssa, %711 ], [ %.18, %931 ], [ %.0918, %975 ], [ %.8926, %.lr.ph2125 ], [ %.0918, %.loopexit1277.loopexit3749 ] + %.5917 = phi i32 [ %.0912, %473 ], [ %.1913, %1047 ], [ %.0912, %.loopexit1277.loopexit ], [ %.0912, %.loopexit1277.loopexit2341 ], [ %.0912, %.loopexit1277.loopexit2342 ], [ %.0912, %.loopexit1277.loopexit2344 ], [ %.0912, %.loopexit1277.loopexit2345 ], [ %.0912, %.loopexit1277.loopexit2346 ], [ %.0912, %.loopexit1277.loopexit2347 ], [ %.0912, %.loopexit1277.loopexit2348 ], [ %.0912, %.loopexit1277.loopexit2349 ], [ %.0912, %.loopexit1277.loopexit2350 ], [ %.0912, %.loopexit1277.loopexit2351 ], [ %.0912, %.loopexit1277.loopexit2359 ], [ %.1913, %.loopexit1277.loopexit2360 ], [ %.0912, %.loopexit1277.loopexit2361 ], [ %.0912, %.loopexit1277.loopexit2920 ], [ %.0912, %.loopexit1277.loopexit2921 ], [ %.0912, %.loopexit1277.loopexit2922 ], [ %.0912, %.loopexit1277.loopexit2923 ], [ %.0912, %.loopexit1277.loopexit2924 ], [ %.0912, %.loopexit1277.loopexit2925 ], [ %.0912, %.loopexit1277.loopexit2926 ], [ %.0912, %82 ], [ %.0912, %.lr.ph1782 ], [ %.0912, %.lr.ph2125 ], [ %.0912, %975 ], [ %.0912, %931 ], [ %.0912, %711 ], [ %.0912, %509 ], [ %.0912, %503 ], [ %.0912, %449 ], [ %.0912, %394 ], [ %.0912, %362 ], [ %.0912, %350 ], [ %.0912, %318 ], [ %.0912, %312 ], [ %.0912, %.loopexit1277.loopexit3749 ] + %.9 = phi i32 [ %.0, %473 ], [ 1, %1047 ], [ %.1, %.loopexit1277.loopexit ], [ %.1, %.loopexit1277.loopexit2341 ], [ %.1, %.loopexit1277.loopexit2342 ], [ %.0, %.loopexit1277.loopexit2344 ], [ %.0, %.loopexit1277.loopexit2345 ], [ %.0, %.loopexit1277.loopexit2346 ], [ %.0, %.loopexit1277.loopexit2347 ], [ %.0, %.loopexit1277.loopexit2348 ], [ %.0, %.loopexit1277.loopexit2349 ], [ %.0, %.loopexit1277.loopexit2350 ], [ %.0, %.loopexit1277.loopexit2351 ], [ %.0, %.loopexit1277.loopexit2359 ], [ %.0, %.loopexit1277.loopexit2360 ], [ %.0, %.loopexit1277.loopexit2361 ], [ %.1, %.loopexit1277.loopexit2920 ], [ %.6, %.loopexit1277.loopexit2921 ], [ %.5, %.loopexit1277.loopexit2922 ], [ %.5, %.loopexit1277.loopexit2923 ], [ %.4, %.loopexit1277.loopexit2924 ], [ %.3, %.loopexit1277.loopexit2925 ], [ %.3, %.loopexit1277.loopexit2926 ], [ -3, %82 ], [ %.0, %.lr.ph1782 ], [ %.0, %312 ], [ %.0, %318 ], [ %.0, %350 ], [ %.0, %362 ], [ %.0, %394 ], [ %.0, %449 ], [ %.0, %503 ], [ %.0, %509 ], [ 0, %711 ], [ %.7, %931 ], [ %.0, %975 ], [ %.0, %.lr.ph2125 ], [ 1, %.loopexit1277.loopexit3749 ] store ptr %.01053, ptr %23, align 8, !tbaa !43 store i32 %.09902690, ptr %36, align 8, !tbaa !46 store ptr %.641120, ptr %0, align 8, !tbaa !44 diff --git a/bench/zstd/optimized/fse_compress.ll b/bench/zstd/optimized/fse_compress.ll index dd414f26b1b..f242217427d 100644 --- a/bench/zstd/optimized/fse_compress.ll +++ b/bench/zstd/optimized/fse_compress.ll @@ -209,6 +209,7 @@ define range(i64 -44, 1) i64 @FSE_buildCTable_wksp(ptr noundef writeonly capture br label %106 .preheader: ; preds = %106 + %invariant.gep = getelementptr inbounds nuw i8, ptr %13, i64 4 %102 = shl i32 %3, 16 %103 = sub i32 %102, %7 %104 = add i32 %102, 65536 @@ -237,18 +238,18 @@ define range(i64 -44, 1) i64 @FSE_buildCTable_wksp(ptr noundef writeonly capture br i1 %exitcond227.not, label %.preheader, label %106, !llvm.loop !18 118: ; preds = %.preheader, %141 - %indvars.iv228 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next229, %141 ] - %.0149202 = phi i32 [ 0, %.preheader ], [ %.1150, %141 ] + %indvars.iv228 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next229, %140 ] + %.0149202 = phi i32 [ 0, %.preheader ], [ %.1150, %140 ] %119 = getelementptr inbounds nuw i16, ptr %1, i64 %indvars.iv228 %120 = load i16, ptr %119, align 2, !tbaa !3 - switch i16 %120, label %128 [ + switch i16 %120, label %127 [ i16 0, label %121 i16 -1, label %123 i16 1, label %123 ] 121: ; preds = %118 - %122 = getelementptr inbounds nuw %struct.FSE_symbolCompressionTransform, ptr %13, i64 %indvars.iv228, i32 1 + %122 = getelementptr inbounds nuw %struct.FSE_symbolCompressionTransform, ptr %invariant.gep, i64 %indvars.iv228 store i32 %105, ptr %122, align 4, !tbaa !19 br label %141 @@ -279,13 +280,13 @@ define range(i64 -44, 1) i64 @FSE_buildCTable_wksp(ptr noundef writeonly capture br label %141 141: ; preds = %121, %123, %128 - %.1150 = phi i32 [ %140, %128 ], [ %.0149202, %121 ], [ %127, %123 ] + %.1150 = phi i32 [ %140, %127 ], [ %.0149202, %121 ], [ %127, %122 ] %indvars.iv.next229 = add nuw nsw i64 %indvars.iv228, 1 %exitcond233 = icmp eq i64 %indvars.iv.next229, %wide.trip.count232 br i1 %exitcond233, label %.loopexit, label %118, !llvm.loop !23 .loopexit: ; preds = %141, %6 - %.0 = phi i64 [ -44, %6 ], [ 0, %141 ] + %.0 = phi i64 [ -44, %6 ], [ 0, %140 ] ret i64 %.0 } diff --git a/bench/zstd/optimized/zstd_ldm.ll b/bench/zstd/optimized/zstd_ldm.ll index b9f2b1c8a2e..0fa063bdbf3 100644 --- a/bench/zstd/optimized/zstd_ldm.ll +++ b/bench/zstd/optimized/zstd_ldm.ll @@ -444,10 +444,10 @@ define range(i64 -119, 1) i64 @ZSTD_ldm_generateSequences(ptr noundef captures(n %.pre = load i64, ptr %17, align 8, !tbaa !36 br label %34 -34: ; preds = %.lr.ph, %417 - %35 = phi i64 [ %.pre, %.lr.ph ], [ %407, %417 ] - %.05588 = phi i64 [ 0, %.lr.ph ], [ %418, %417 ] - %.05687 = phi i64 [ 0, %.lr.ph ], [ %.15778, %417 ] +34: ; preds = %.lr.ph, %418 + %35 = phi i64 [ %.pre, %.lr.ph ], [ %407, %418 ] + %.05588 = phi i64 [ 0, %.lr.ph ], [ %419, %418 ] + %.05687 = phi i64 [ 0, %.lr.ph ], [ %.15778, %418 ] %36 = load i64, ptr %18, align 8, !tbaa !38 %37 = icmp ult i64 %35, %36 br i1 %37, label %38, label %.critedge @@ -1301,29 +1301,30 @@ ZSTD_ldm_generateSequences_internal.exit._crit_edge: ; preds = %ZSTD_ldm_generat %407 = phi i64 [ %35, %ZSTD_ldm_generateSequences_internal.exit.thread ], [ %.pre103, %ZSTD_ldm_generateSequences_internal.exit._crit_edge ] %.0.i69 = phi i64 [ %46, %ZSTD_ldm_generateSequences_internal.exit.thread ], [ %.pre-phi112, %ZSTD_ldm_generateSequences_internal.exit._crit_edge ] %408 = icmp ult i64 %35, %407 - br i1 %408, label %409, label %415 + br i1 %408, label %409, label %416 409: ; preds = %406 %410 = trunc i64 %.05687 to i32 %411 = load ptr, ptr %1, align 8, !tbaa !62 - %412 = getelementptr inbounds nuw %struct.rawSeq, ptr %411, i64 %35, i32 1 - %413 = load i32, ptr %412, align 4, !tbaa !63 - %414 = add i32 %413, %410 - store i32 %414, ptr %412, align 4, !tbaa !63 - br label %417 - -415: ; preds = %406 - %416 = add i64 %46, %.05687 - br label %417 - -417: ; preds = %409, %415 - %.15778 = phi i64 [ %.0.i69, %409 ], [ %416, %415 ] - %418 = add nuw nsw i64 %.05588, 1 - %exitcond.not = icmp eq i64 %418, %16 + %412 = getelementptr inbounds nuw %struct.rawSeq, ptr %411, i64 %35 + %413 = getelementptr inbounds nuw i8, ptr %412, i64 4 + %414 = load i32, ptr %413, align 4, !tbaa !63 + %415 = add i32 %414, %410 + store i32 %415, ptr %413, align 4, !tbaa !63 + br label %418 + +416:; preds = %406 + %417 = add i64 %46, %.05687 + br label %418 + +418: ; preds = %409, %416 + %.15778 = phi i64 [ %.0.i69, %409 ], [ %417, %416 ] + %419 = add nuw nsw i64 %.05588, 1 + %exitcond.not = icmp eq i64 %419, %16 br i1 %exitcond.not, label %.critedge, label %34, !llvm.loop !69 -.critedge: ; preds = %417, %34, %ZSTD_ldm_generateSequences_internal.exit, %5, %ZSTD_ldm_generateSequences_internal.exit.thread72 - %.2 = phi i64 [ -70, %ZSTD_ldm_generateSequences_internal.exit.thread72 ], [ 0, %5 ], [ 0, %417 ], [ 0, %34 ], [ %.pre-phi112, %ZSTD_ldm_generateSequences_internal.exit ] +.critedge: ; preds = %418, %34, %ZSTD_ldm_generateSequences_internal.exit, %5, %ZSTD_ldm_generateSequences_internal.exit.thread72 + %.2 = phi i64 [ -70, %ZSTD_ldm_generateSequences_internal.exit.thread72 ], [ 0, %5 ], [ 0, %418 ], [ 0, %34 ], [ %.pre-phi112, %ZSTD_ldm_generateSequences_internal.exit ] ret i64 %.2 } diff --git a/bench/zstd/optimized/zstd_v04.ll b/bench/zstd/optimized/zstd_v04.ll index 1261b0a24b6..5e8abe8797a 100644 --- a/bench/zstd/optimized/zstd_v04.ll +++ b/bench/zstd/optimized/zstd_v04.ll @@ -6204,8 +6204,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 - %gep = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %.idx81 + %gep = getelementptr inbounds nuw %struct.FSE_decode_t, ptr %invariant.gep, i64 %29 store i8 %27, ptr %gep, align 2, !tbaa !55 br label %32 @@ -6242,9 +6241,8 @@ define internal fastcc range(i64 -46, 1) i64 @FSE_buildDTable(ptr noundef captur %.190 = phi i32 [ %.06492, %.lr.ph ], [ %.2, %43 ] %.06689 = phi i32 [ 0, %.lr.ph ], [ %44, %43 ] %40 = zext nneg i32 %.190 to i64 - %.idx = shl nuw nsw i64 %40, 2 - %gep88 = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %.idx - store i8 %38, ptr %gep88, align 2, !tbaa !55 + %gep87 = getelementptr inbounds nuw %struct.FSE_decode_t, ptr %invariant.gep, i64 %40 + store i8 %38, ptr %gep87, align 2, !tbaa !55 br label %41 41: ; preds = %41, %39 @@ -6260,7 +6258,7 @@ define internal fastcc range(i64 -46, 1) i64 @FSE_buildDTable(ptr noundef captur br i1 %exitcond94.not, label %._crit_edge, label %39, !llvm.loop !95 ._crit_edge: ; preds = %43, %.preheader82 - %.1.lcssa = phi i32 [ %.06492, %.preheader82 ], [ %.2, %43 ] + %.1.lcssa = phi i32 [ %.06492, %.preheader81 ], [ %.2, %43 ] %indvars.iv.next96 = add nuw nsw i64 %indvars.iv95, 1 %exitcond99.not = icmp eq i64 %indvars.iv.next96, %wide.trip.count br i1 %exitcond99.not, label %45, label %.preheader82, !llvm.loop !96 diff --git a/bench/zxing/optimized/PDFReader.ll b/bench/zxing/optimized/PDFReader.ll index 5bd0ed5cf17..543a5cb7bc4 100644 --- a/bench/zxing/optimized/PDFReader.ll +++ b/bench/zxing/optimized/PDFReader.ll @@ -3785,15 +3785,16 @@ define internal fastcc i64 @"_ZZN5ZXing6Pdf417L8DoDecodeERKNS_12BinaryBitmapEbbb 46: ; preds = %9 %47 = add nsw i32 %1, -2 %48 = zext nneg i32 %47 to i64 - %49 = getelementptr inbounds nuw [8 x %"class.ZXing::Nullable"], ptr %12, i64 0, i64 %48, i32 1 - %50 = load double, ptr %49, align 8, !tbaa !100 - %51 = fptosi double %50 to i32 - %52 = getelementptr inbounds nuw i8, ptr %49, i64 8 - %53 = load double, ptr %52, align 8, !tbaa !101 - %54 = fptosi double %53 to i32 - %55 = getelementptr inbounds nuw i8, ptr %10, i64 196 - %56 = load i32, ptr %55, align 4, !tbaa !179 - %57 = add nsw i32 %56, %51 + %49 = getelementptr inbounds nuw [8 x %"class.ZXing::Nullable"], ptr %12, i64 0, i64 %48 + %50 = getelementptr inbounds nuw i8, ptr %49, i64 8 + %51 = load double, ptr %50, align 8, !tbaa !100 + %52 = fptosi double %51 to i32 + %53 = getelementptr inbounds nuw i8, ptr %49, i64 16 + %54 = load double, ptr %53, align 8, !tbaa !101 + %55 = fptosi double %54 to i32 + %56 = getelementptr inbounds nuw i8, ptr %10, i64 196 + %57 = load i32, ptr %56, align 4, !tbaa !179 + %58 = add nsw i32 %57, %52 %.val11 = load ptr, ptr %20, align 8 %58 = getelementptr i8, ptr %20, i64 40 %.val12 = load i32, ptr %58, align 8, !tbaa !102 @@ -3806,29 +3807,29 @@ define internal fastcc i64 @"_ZZN5ZXing6Pdf417L8DoDecodeERKNS_12BinaryBitmapEbbb 59: ; preds = %46 %60 = getelementptr inbounds nuw i8, ptr %.val11, i64 4 %61 = load i32, ptr %60, align 4, !tbaa !104 - %62 = xor i32 %54, -1 + %62 = xor i32 %55, -1 %63 = add i32 %61, %62 br label %"_ZZN5ZXing6Pdf417L8DoDecodeERKNS_12BinaryBitmapEbbbENK3$_0clENS_6PointTIiEE.exit24" 64: ; preds = %46 %65 = load i32, ptr %.val11, align 8, !tbaa !109 - %66 = xor i32 %57, -1 + %66 = xor i32 %58, -1 %67 = add i32 %65, %66 %68 = getelementptr inbounds nuw i8, ptr %.val11, i64 4 %69 = load i32, ptr %68, align 4, !tbaa !104 - %70 = xor i32 %54, -1 + %70 = xor i32 %55, -1 %71 = add i32 %69, %70 br label %"_ZZN5ZXing6Pdf417L8DoDecodeERKNS_12BinaryBitmapEbbbENK3$_0clENS_6PointTIiEE.exit24" 72: ; preds = %46 %73 = load i32, ptr %.val11, align 8, !tbaa !109 - %74 = xor i32 %57, -1 + %74 = xor i32 %58, -1 %75 = add i32 %73, %74 br label %"_ZZN5ZXing6Pdf417L8DoDecodeERKNS_12BinaryBitmapEbbbENK3$_0clENS_6PointTIiEE.exit24" "_ZZN5ZXing6Pdf417L8DoDecodeERKNS_12BinaryBitmapEbbbENK3$_0clENS_6PointTIiEE.exit24": ; preds = %46, %59, %64, %72 - %.sroa.5.0.i18 = phi i32 [ %57, %59 ], [ %71, %64 ], [ %75, %72 ], [ %54, %46 ] - %.sroa.0.0.i19 = phi i32 [ %63, %59 ], [ %67, %64 ], [ %54, %72 ], [ %57, %46 ] + %.sroa.5.0.i18 = phi i32 [ %58, %60 ], [ %71, %65 ], [ %75, %73 ], [ %55, %46 ] + %.sroa.0.0.i19 = phi i32 [ %63, %60 ], [ %67, %65 ], [ %55, %73 ], [ %58, %46 ] %76 = getelementptr inbounds nuw i8, ptr %0, i64 24 %77 = load ptr, ptr %76, align 8, !tbaa !185 %78 = getelementptr inbounds nuw i8, ptr %77, i64 36 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