diff --git a/bench/abc/optimized/absVta.ll b/bench/abc/optimized/absVta.ll index 69b7b7a626c..9d4e9169698 100644 --- a/bench/abc/optimized/absVta.ll +++ b/bench/abc/optimized/absVta.ll @@ -3408,13 +3408,11 @@ Vec_IntStart.exit: ; preds = %Vec_IntAlloc.exit.t br label %Vec_BitStart.exit Vec_BitStart.exit: ; preds = %Vec_IntStart.exit, %52 - %.pre-phi8.i = phi i64 [ %54, %52 ], [ 0, %Vec_IntStart.exit ] %56 = phi ptr [ %55, %52 ], [ null, %Vec_IntStart.exit ] %57 = getelementptr inbounds nuw i8, ptr %50, i64 4 %58 = getelementptr inbounds nuw i8, ptr %50, i64 8 store ptr %56, ptr %58, align 8, !tbaa !125 store i32 %51, ptr %57, align 4, !tbaa !126 - tail call void @llvm.memset.p0.i64(ptr align 4 %56, i8 0, i64 %.pre-phi8.i, i1 false) %59 = getelementptr inbounds nuw i8, ptr %3, i64 96 store ptr %50, ptr %59, align 8, !tbaa !127 %60 = getelementptr inbounds nuw i8, ptr %3, i64 104 diff --git a/bench/abseil-cpp/optimized/cordz_info.ll b/bench/abseil-cpp/optimized/cordz_info.ll index 8a24879e315..13d350f00b8 100644 --- a/bench/abseil-cpp/optimized/cordz_info.ll +++ b/bench/abseil-cpp/optimized/cordz_info.ll @@ -137,7 +137,7 @@ _ZN4absl13base_internal14SpinLockHolderC2EPNS0_8SpinLockE.exit.i: ; preds = %_ZN .split.i: ; preds = %.split5.i, %_ZN4absl13base_internal14SpinLockHolderC2EPNS0_8SpinLockE.exit.i %42 = getelementptr inbounds nuw i8, ptr %4, i64 48 - store atomic i64 %40, ptr %42 release, align 8 + store atomic i64 0, ptr %42 release, align 8 %43 = load ptr, ptr %7, align 8, !tbaa !9 %44 = getelementptr inbounds nuw i8, ptr %43, i64 8 store atomic i64 %29, ptr %44 release, align 8 @@ -216,9 +216,8 @@ _ZN4absl13base_internal14SpinLockHolderC2EPNS0_8SpinLockE.exit: ; preds = %_ZN4a br label %.split .split: ; preds = %_ZN4absl13base_internal14SpinLockHolderC2EPNS0_8SpinLockE.exit, %.split5 - %.sink = phi i64 [ %12, %.split5 ], [ 0, %_ZN4absl13base_internal14SpinLockHolderC2EPNS0_8SpinLockE.exit ] %14 = getelementptr inbounds nuw i8, ptr %0, i64 48 - store atomic i64 %.sink, ptr %14 release, align 8 + store atomic i64 0, ptr %14 release, align 8 %15 = load ptr, ptr %2, align 8, !tbaa !9 %16 = getelementptr inbounds nuw i8, ptr %15, i64 8 store atomic i64 %.pre, ptr %16 release, align 8 @@ -305,7 +304,7 @@ _ZN4absl13base_internal14SpinLockHolderC2EPNS0_8SpinLockE.exit.i: ; preds = %_ZN .split.i: ; preds = %.split5.i, %_ZN4absl13base_internal14SpinLockHolderC2EPNS0_8SpinLockE.exit.i %32 = getelementptr inbounds nuw i8, ptr %9, i64 48 - store atomic i64 %30, ptr %32 release, align 8 + store atomic i64 0, ptr %32 release, align 8 %33 = load ptr, ptr %20, align 8, !tbaa !9 %34 = getelementptr inbounds nuw i8, ptr %33, i64 8 store atomic i64 %18, ptr %34 release, align 8 diff --git a/bench/abseil-cpp/optimized/int128_test.ll b/bench/abseil-cpp/optimized/int128_test.ll index 7aa0d017392..d9f97992f95 100644 --- a/bench/abseil-cpp/optimized/int128_test.ll +++ b/bench/abseil-cpp/optimized/int128_test.ll @@ -46435,24 +46435,18 @@ _ZN4absl8EndsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit38.thread: ; br label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread _ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread: ; preds = %_ZN4absl7StrJoinISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEES7_RKT_St17basic_string_viewIcS5_E.exit28.thread, %.thread, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread47, %79, %_ZN4absl8EndsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit38.thread, %_ZN4absl8EndsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit38, %_ZN4absl8EndsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit - %101 = phi i64 [ %.pr, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit ], [ %.pr, %_ZN4absl8EndsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit ], [ %.pr, %_ZN4absl8EndsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit38.thread ], [ %.pr, %_ZN4absl8EndsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit38 ], [ 0, %79 ], [ 0, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread47 ], [ %.pr, %.thread ], [ 0, %_ZN4absl7StrJoinISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEES7_RKT_St17basic_string_viewIcS5_E.exit28.thread ] - %102 = phi ptr [ %.pre59, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit ], [ %.pre59, %_ZN4absl8EndsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit ], [ %.pre59, %_ZN4absl8EndsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit38.thread ], [ %.pre59, %_ZN4absl8EndsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit38 ], [ %.pre59, %79 ], [ %.pre59, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread47 ], [ %.pre59, %.thread ], [ %.pre5961, %_ZN4absl7StrJoinISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEES7_RKT_St17basic_string_viewIcS5_E.exit28.thread ] + %101 = phi ptr [ %.pre59, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit ], [ %.pre59, %_ZN4absl8EndsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit ], [ %.pre59, %_ZN4absl8EndsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit38.thread ], [ %.pre59, %_ZN4absl8EndsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit38 ], [ %.pre59, %79 ], [ %.pre59, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread47 ], [ %.pre59, %.thread ], [ %.pre5961, %_ZN4absl7StrJoinISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEES7_RKT_St17basic_string_viewIcS5_E.exit28.thread ] %.0 = phi i32 [ 0, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit ], [ 2, %_ZN4absl8EndsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit ], [ 1, %_ZN4absl8EndsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit38.thread ], [ 3, %_ZN4absl8EndsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit38 ], [ 0, %79 ], [ 2, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread47 ], [ 3, %.thread ], [ %., %_ZN4absl7StrJoinISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEES7_RKT_St17basic_string_viewIcS5_E.exit28.thread ] - %103 = icmp eq ptr %102, %43 - br i1 %103, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i40, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i39 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i40: ; preds = %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread - %104 = icmp ult i64 %101, 16 - call void @llvm.assume(i1 %104) - br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit41 + %103 = icmp eq ptr %101, %43 + br i1 %103, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit41, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i39 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i39: ; preds = %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread %105 = load i64, ptr %43, align 8, !tbaa !13 %106 = add i64 %105, 1 - call void @_ZdlPvm(ptr noundef %102, i64 noundef %106) #31 + call void @_ZdlPvm(ptr noundef %101, i64 noundef %106) #31 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit41 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit41: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i40, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i39 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit41: ; preds = %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i39 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #27 %107 = load ptr, ptr %3, align 8, !tbaa !17 %108 = icmp eq ptr %107, %8 diff --git a/bench/actix-rs/optimized/19s5ghr2x6s6bmh4.ll b/bench/actix-rs/optimized/19s5ghr2x6s6bmh4.ll index 7c2956c8c89..6dd437d9d05 100644 --- a/bench/actix-rs/optimized/19s5ghr2x6s6bmh4.ll +++ b/bench/actix-rs/optimized/19s5ghr2x6s6bmh4.ll @@ -1811,11 +1811,11 @@ define internal fastcc { ptr, i64 } @"_ZN91_$LT$core..str..iter..SplitN$LT$P$GT$ 35: ; preds = %.lr.ph.i.us.i.i %36 = add nuw nsw i64 %.05.i.us.i.i, 1 - %exitcond.not.i.us.i.i = icmp eq i64 %36, %.sroa.7.046.us.i.i + %exitcond.not.i.us.i.i = icmp eq i64 %.sroa.7.046.us.i.i, %36 br i1 %exitcond.not.i.us.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i, label %.lr.ph.i.us.i.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i: ; preds = %35, %.lr.ph.i.us.i.i, %31 - %.0.lcssa.i.us.i.i = phi i64 [ 0, %31 ], [ %.sroa.7.046.us.i.i, %35 ], [ %.05.i.us.i.i, %.lr.ph.i.us.i.i ] + %.0.lcssa.i.us.i.i = phi i64 [ 0, %31 ], [ 0, %35 ], [ %.05.i.us.i.i, %.lr.ph.i.us.i.i ] %.sroa.0.0.i24.us.i.i = phi i64 [ 0, %31 ], [ 0, %35 ], [ 1, %.lr.ph.i.us.i.i ] %37 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.us.i.i, 0 %38 = insertvalue { i64, i64 } %37, i64 %.0.lcssa.i.us.i.i, 1 @@ -1868,11 +1868,11 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i: ; preds = % 59: ; preds = %.lr.ph.i.i.i %60 = add nuw nsw i64 %.05.i.i.i, 1 - %exitcond.not.i.i.i = icmp eq i64 %60, %.sroa.7.046.i.i + %exitcond.not.i.i.i = icmp eq i64 %.sroa.7.046.i.i, %60 br i1 %exitcond.not.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %.lr.ph.i.i.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i: ; preds = %59, %.lr.ph.i.i.i, %55 - %.0.lcssa.i.i.i = phi i64 [ 0, %55 ], [ %.sroa.7.046.i.i, %59 ], [ %.05.i.i.i, %.lr.ph.i.i.i ] + %.0.lcssa.i.i.i = phi i64 [ 0, %55 ], [ 0, %59 ], [ %.05.i.i.i, %.lr.ph.i.i.i ] %.sroa.0.0.i24.i.i = phi i64 [ 0, %55 ], [ 0, %59 ], [ 1, %.lr.ph.i.i.i ] %61 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.i.i, 0 %62 = insertvalue { i64, i64 } %61, i64 %.0.lcssa.i.i.i, 1 @@ -2620,16 +2620,6 @@ define hidden void @_ZN10actix_http2h17decoder11MessageType11set_headers17hd7fb3 182: ; preds = %178, %180, %181, %.thread1208, %"_ZN4core3ptr51drop_in_place$LT$http..header..name..HeaderName$GT$17hd462342c1d1424f7E.exit" ret void -.loopexit973: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hcb94b08fe0a045bbE.exit", %183 - %lpad.loopexit = landingpad { ptr, i32 } - cleanup - br label %804 - -.loopexit.split-lp: ; preds = %332 - %lpad.loopexit.split-lp = landingpad { ptr, i32 } - cleanup - br label %804 - 183: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hcb94b08fe0a045bbE.exit" invoke void @_ZN4http6header5value11HeaderValue27from_maybe_shared_unchecked17h183c163d5835eec8E(ptr noalias noundef nonnull sret({ { ptr, ptr, i64, { ptr } }, i8, [7 x i8] }) align 8 captures(none) dereferenceable(40) %107, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %106) to label %184 unwind label %.loopexit973 @@ -4426,7 +4416,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17hfb4783fc25b01e0cE.exit692 %800 = load ptr, ptr %133, align 8, !alias.scope !602, !noundef !4 %801 = load i64, ptr %132, align 8, !alias.scope !602, !noundef !4 invoke void %798(ptr noalias noundef nonnull align 8 dereferenceable(8) %799, ptr noundef %800, i64 noundef %801) - to label %804 unwind label %802 + to label %"_ZN4core3ptr51drop_in_place$LT$http..header..name..HeaderName$GT$17hd462342c1d1424f7E.exit725" unwind label %802 802: ; preds = %807, %795 %803 = landingpad { ptr, i32 } @@ -4434,11 +4424,22 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17hfb4783fc25b01e0cE.exit692 call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #38 unreachable -"_ZN4core3ptr51drop_in_place$LT$http..header..name..HeaderName$GT$17hd462342c1d1424f7E.exit725": ; preds = %804, %807 - resume { ptr, i32 } %.pn.ph +"_ZN4core3ptr51drop_in_place$LT$http..header..name..HeaderName$GT$17hd462342c1d1424f7E.exit725": ; preds = %795, %804, %807 + %.pn890 = phi { ptr, i32 } [ %.pn.ph, %807 ], [ %.pn.ph, %804 ], [ %lpad.phi978, %795 ] + resume { ptr, i32 } %.pn890 + +.loopexit973: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hcb94b08fe0a045bbE.exit", %183 + %lpad.loopexit = landingpad { ptr, i32 } + cleanup + br label %804 + +.loopexit.split-lp: ; preds = %332 + %lpad.loopexit.split-lp = landingpad { ptr, i32 } + cleanup + br label %804 -804: ; preds = %.loopexit973, %.loopexit.split-lp, %795 - %.pn.ph = phi { ptr, i32 } [ %lpad.phi978, %795 ], [ %lpad.loopexit, %.loopexit973 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] +804: ; preds = %.loopexit.split-lp, %.loopexit973 + %.pn.ph = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit973 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @llvm.experimental.noalias.scope.decl(metadata !603) call void @llvm.experimental.noalias.scope.decl(metadata !606) %805 = load ptr, ptr %109, align 8, !alias.scope !609, !noundef !4 diff --git a/bench/actix-rs/optimized/2f4ardqpkkrvo3qj.ll b/bench/actix-rs/optimized/2f4ardqpkkrvo3qj.ll index 9021d96e324..3356f481724 100644 --- a/bench/actix-rs/optimized/2f4ardqpkkrvo3qj.ll +++ b/bench/actix-rs/optimized/2f4ardqpkkrvo3qj.ll @@ -6738,7 +6738,6 @@ _ZN10actix_http2h17decoder13PayloadLength7is_zero17h08e8311cfa992811E.exit: ; pr br i1 %268, label %_ZN10actix_http2h17decoder13PayloadLength7is_zero17h08e8311cfa992811E.exit.thread, label %.thread402 _ZN10actix_http2h17decoder13PayloadLength7is_zero17h08e8311cfa992811E.exit.thread: ; preds = %_ZN10actix_http2h17decoder13PayloadLength7is_zero17h08e8311cfa992811E.exit, %"_ZN60_$LT$http..method..Inner$u20$as$u20$core..cmp..PartialEq$GT$2eq17hb6beec0af782f80aE.exit" - %.sroa.12307.0 = phi i64 [ %.sroa.5361.0.copyload, %"_ZN60_$LT$http..method..Inner$u20$as$u20$core..cmp..PartialEq$GT$2eq17hb6beec0af782f80aE.exit" ], [ undef, %_ZN10actix_http2h17decoder13PayloadLength7is_zero17h08e8311cfa992811E.exit ] %.sroa.8304.0 = phi i8 [ %.sroa.0359.0.copyload, %"_ZN60_$LT$http..method..Inner$u20$as$u20$core..cmp..PartialEq$GT$2eq17hb6beec0af782f80aE.exit" ], [ undef, %_ZN10actix_http2h17decoder13PayloadLength7is_zero17h08e8311cfa992811E.exit ] %.sroa.0301.0 = phi i64 [ %173, %"_ZN60_$LT$http..method..Inner$u20$as$u20$core..cmp..PartialEq$GT$2eq17hb6beec0af782f80aE.exit" ], [ 4, %_ZN10actix_http2h17decoder13PayloadLength7is_zero17h08e8311cfa992811E.exit ] %269 = add nsw i64 %.sroa.0301.0, -3 @@ -6754,7 +6753,7 @@ _ZN10actix_http2h17decoder13PayloadLength7is_zero17h08e8311cfa992811E.exit.threa .thread402: ; preds = %_ZN10actix_http2h17decoder13PayloadLength7is_zero17h08e8311cfa992811E.exit, %_ZN10actix_http2h17decoder13PayloadLength7is_zero17h08e8311cfa992811E.exit.thread %.sroa.0301.0408 = phi i64 [ %.sroa.0301.0, %_ZN10actix_http2h17decoder13PayloadLength7is_zero17h08e8311cfa992811E.exit.thread ], [ 1, %_ZN10actix_http2h17decoder13PayloadLength7is_zero17h08e8311cfa992811E.exit ] %.sroa.8304.0407 = phi i8 [ %.sroa.8304.0, %_ZN10actix_http2h17decoder13PayloadLength7is_zero17h08e8311cfa992811E.exit.thread ], [ 0, %_ZN10actix_http2h17decoder13PayloadLength7is_zero17h08e8311cfa992811E.exit ] - %.sroa.12307.0406 = phi i64 [ %.sroa.12307.0, %_ZN10actix_http2h17decoder13PayloadLength7is_zero17h08e8311cfa992811E.exit.thread ], [ %.sroa.5361.0.copyload, %_ZN10actix_http2h17decoder13PayloadLength7is_zero17h08e8311cfa992811E.exit ] + %.sroa.12307.0406 = phi i64 [ 0, %_ZN10actix_http2h17decoder13PayloadLength7is_zero17h08e8311cfa992811E.exit.thread ], [ %.sroa.5361.0.copyload, %_ZN10actix_http2h17decoder13PayloadLength7is_zero17h08e8311cfa992811E.exit ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.5100.sroa.4, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.764.sroa.7, i64 7, i1 false) br label %275 @@ -8016,7 +8015,7 @@ define noundef ptr @"_ZN100_$LT$actix_http..requests..head..RequestHeadType$u20$ %54 = load ptr, ptr %53, align 8, !noundef !4 %55 = icmp eq ptr %54, null %spec.select31 = select i1 %55, ptr @anon.00b28e0f3c0f469f196e1cba87ef1ba3.55, ptr %54 - %spec.select32 = select i1 %55, i64 1, i64 %50 + %spec.select32 = zext i1 %55 to i64 br label %.thread .thread: ; preds = %52, %48, %44 diff --git a/bench/actix-rs/optimized/kyfmdxbalxu1s84.ll b/bench/actix-rs/optimized/kyfmdxbalxu1s84.ll index 4a71d139e45..2d528c69733 100644 --- a/bench/actix-rs/optimized/kyfmdxbalxu1s84.ll +++ b/bench/actix-rs/optimized/kyfmdxbalxu1s84.ll @@ -199,7 +199,7 @@ define { ptr, i64 } @"_ZN76_$LT$http..uri..Uri$u20$as$u20$actix_router..resource _ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit: ; preds = %1 %5 = load i8, ptr %0, align 8, !range !34, !noundef !13 %.not = icmp eq i8 %5, 0 - br i1 %.not, label %_ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit.thread, label %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit.thread + br i1 %.not, label %_ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit.thread6, label %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit.thread _ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit.thread: ; preds = %1, %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit %6 = getelementptr inbounds nuw i8, ptr %0, i64 80 @@ -228,31 +228,29 @@ _ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit.thread: ; preds = %1, %_ZN4ht %18 = getelementptr inbounds nuw i8, ptr %10, i64 %12 %19 = load i8, ptr %18, align 1, !alias.scope !35, !noundef !13 %20 = icmp sgt i8 %19, -65 - br i1 %20, label %_ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit, label %"_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17he5a2ef1652ac882fE.exit.thread.i" + br i1 %20, label %_ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit.thread6, label %"_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17he5a2ef1652ac882fE.exit.thread.i" "_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17he5a2ef1652ac882fE.exit.i": ; preds = %11 %.old.i = icmp eq ptr %10, null - br i1 %.old.i, label %"_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17he5a2ef1652ac882fE.exit.thread.i", label %_ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit.thread + br i1 %.old.i, label %"_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17he5a2ef1652ac882fE.exit.thread.i", label %_ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit.thread6 "_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17he5a2ef1652ac882fE.exit.thread.i": ; preds = %"_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17he5a2ef1652ac882fE.exit.i", %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i", %15 tail call void @_ZN4core3str16slice_error_fail17he2ff12236fb0c056E(ptr noalias noundef nonnull readonly align 1 %10, i64 noundef %3, i64 noundef 0, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c366ccdbebbb42cdbcc7f5de976c8b4e.7) #12 unreachable -_ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit: ; preds = %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit.thread, %15, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i" - %.sroa.4.0.i = phi i64 [ %12, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i" ], [ %3, %15 ], [ %3, %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit.thread ] - %21 = icmp eq i64 %.sroa.4.0.i, 0 - %spec.select.i = tail call i64 @llvm.umax.i64(i64 %.sroa.4.0.i, i64 1) - %spec.select = select i1 %21, ptr @anon.c366ccdbebbb42cdbcc7f5de976c8b4e.8, ptr %10 - br label %_ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit.thread - -_ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit.thread: ; preds = %"_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17he5a2ef1652ac882fE.exit.i", %_ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit, %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit - %.sroa.3.0 = phi i64 [ 0, %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit ], [ 1, %"_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17he5a2ef1652ac882fE.exit.i" ], [ %spec.select.i, %_ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit ] - %.sroa.0.0 = phi ptr [ @anon.c366ccdbebbb42cdbcc7f5de976c8b4e.9, %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit ], [ @anon.c366ccdbebbb42cdbcc7f5de976c8b4e.8, %"_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17he5a2ef1652ac882fE.exit.i" ], [ %spec.select, %_ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit ] - %22 = icmp ne ptr %.sroa.0.0, null - tail call void @llvm.assume(i1 %22) - %23 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0, 0 - %24 = insertvalue { ptr, i64 } %23, i64 %.sroa.3.0, 1 - ret { ptr, i64 } %24 +_ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit: ; preds = %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit.thread, %15 + %spec.select.i = tail call i64 @llvm.umax.i64(i64 %3, i64 1) + %spec.select = select i1 %4, ptr @anon.c366ccdbebbb42cdbcc7f5de976c8b4e.8, ptr %10 + br label %_ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit.thread6 + +_ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit.thread6:; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i", %"_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17he5a2ef1652ac882fE.exit.i", %_ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit, %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit + %.sroa.3.0 = phi i64 [ 0, %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit ], [ 65535, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i" ], [ 1, %"_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17he5a2ef1652ac882fE.exit.i" ], [ %spec.select.i, %_ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit ] + %.sroa.0.0 = phi ptr [ @anon.c366ccdbebbb42cdbcc7f5de976c8b4e.9, %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit ], [ %10, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i" ], [ @anon.c366ccdbebbb42cdbcc7f5de976c8b4e.8, %"_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17he5a2ef1652ac882fE.exit.i" ], [ %spec.select, %_ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit ] + %21 = icmp ne ptr %.sroa.0.0, null + tail call void @llvm.assume(i1 %21) + %22 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0, 0 + %23 = insertvalue { ptr, i64 } %22, i64 %.sroa.3.0, 1 + ret { ptr, i64 } %23 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/annoy/optimized/annoymodule.ll b/bench/annoy/optimized/annoymodule.ll index 8be1e83c48c..70f9d121569 100644 --- a/bench/annoy/optimized/annoymodule.ll +++ b/bench/annoy/optimized/annoymodule.ll @@ -6638,14 +6638,14 @@ _ZSt13move_backwardIPiS0_ET0_T_S2_S1_.exit: ; preds = %26, %_ZSt22__uninit br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T_S8_S7_.exit _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEmEvRT_T0_.exit: ; preds = %17 - %32 = getelementptr inbounds i8, ptr %2, i64 %19 + %32 = getelementptr inbounds nuw i8, ptr %2, i64 4 %.not.i.i.i.i.i.i.i.i = icmp eq ptr %3, %32 br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES2_iET0_T_S8_S7_RSaIT1_E.exit, label %33 33: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEmEvRT_T0_.exit %34 = ptrtoint ptr %32 to i64 %35 = sub i64 %6, %34 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %13, ptr align 4 %32, i64 %35, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %13, ptr nonnull align 4 %32, i64 %35, i1 false) %.pre = load ptr, ptr %12, align 8, !tbaa !3 br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES2_iET0_T_S8_S7_RSaIT1_E.exit @@ -6666,11 +6666,8 @@ _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit53: ; preds = %_ZSt2 %40 = phi ptr [ %38, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES2_iET0_T_S8_S7_RSaIT1_E.exit ], [ %.pre74, %39 ] %41 = getelementptr inbounds nuw i8, ptr %40, i64 %19 store ptr %41, ptr %12, align 8, !tbaa !3 - %.not.i.i.i.i.i54 = icmp eq ptr %13, %1 - br i1 %.not.i.i.i.i.i54, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T_S8_S7_.exit, label %42 - -42: ; preds = %_ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit53 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %2, i64 %19, i1 false) + %42 = load i32, ptr %2, align 4 + store i32 %42, ptr %1, align 4 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T_S8_S7_.exit 43: ; preds = %5 @@ -6740,7 +6737,7 @@ _ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit: ; preds = %67, %69 store ptr %71, ptr %10, align 8, !tbaa !101 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T_S8_S7_.exit -_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T_S8_S7_.exit: ; preds = %42, %_ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit53, %_ZSt13move_backwardIPiS0_ET0_T_S2_S1_.exit, %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit, %4 +_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T_S8_S7_.exit: ; preds = %_ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit53, %_ZSt13move_backwardIPiS0_ET0_T_S2_S1_.exit, %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit, %4 ret void } @@ -8296,14 +8293,14 @@ _ZSt4copyIPKiN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEET0_T_SA_S9_.ex br label %_ZSt4copyIPKiN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEET0_T_SA_S9_.exit59 _ZSt7advanceIPKimEvRT_T0_.exit: ; preds = %17 - %32 = getelementptr inbounds i8, ptr %2, i64 %19 + %32 = getelementptr inbounds nuw i8, ptr %2, i64 4 %.not.i.i.i.i.i.i.i.i = icmp eq ptr %3, %32 br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPKiPiiET0_T_S4_S3_RSaIT1_E.exit, label %33 33: ; preds = %_ZSt7advanceIPKimEvRT_T0_.exit %34 = ptrtoint ptr %32 to i64 %35 = sub i64 %6, %34 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %13, ptr align 4 %32, i64 %35, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %13, ptr nonnull align 4 %32, i64 %35, i1 false) %.pre = load ptr, ptr %12, align 8, !tbaa !3 br label %_ZSt22__uninitialized_copy_aIPKiPiiET0_T_S4_S3_RSaIT1_E.exit @@ -8324,11 +8321,8 @@ _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit57: ; preds = %_ZSt2 %40 = phi ptr [ %38, %_ZSt22__uninitialized_copy_aIPKiPiiET0_T_S4_S3_RSaIT1_E.exit ], [ %.pre76, %39 ] %41 = getelementptr inbounds nuw i8, ptr %40, i64 %19 store ptr %41, ptr %12, align 8, !tbaa !3 - %.not.i.i.i.i.i58 = icmp eq ptr %13, %1 - br i1 %.not.i.i.i.i.i58, label %_ZSt4copyIPKiN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEET0_T_SA_S9_.exit59, label %42 - -42: ; preds = %_ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit57 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %2, i64 %19, i1 false) + %42 = load i32, ptr %2, align 4 + store i32 %42, ptr %1, align 4 br label %_ZSt4copyIPKiN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEET0_T_SA_S9_.exit59 43: ; preds = %5 @@ -8398,7 +8392,7 @@ _ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit: ; preds = %67, %69 store ptr %71, ptr %10, align 8, !tbaa !101 br label %_ZSt4copyIPKiN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEET0_T_SA_S9_.exit59 -_ZSt4copyIPKiN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEET0_T_SA_S9_.exit59: ; preds = %42, %_ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit57, %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit, %_ZSt4copyIPKiN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEET0_T_SA_S9_.exit, %4 +_ZSt4copyIPKiN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEET0_T_SA_S9_.exit59: ; preds = %_ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit57, %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit, %_ZSt4copyIPKiN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEET0_T_SA_S9_.exit, %4 ret void } diff --git a/bench/arrow/optimized/counting_semaphore.ll b/bench/arrow/optimized/counting_semaphore.ll index 6ee0e3609e3..99ef9c724e4 100644 --- a/bench/arrow/optimized/counting_semaphore.ll +++ b/bench/arrow/optimized/counting_semaphore.ll @@ -447,7 +447,7 @@ _ZN5arrow6StatusD2Ev.exit9: ; preds = %_ZN5arrow6StatusD2E 29: ; preds = %.noexc10, %_ZN5arrow6StatusD2Ev.exit9 %30 = load i8, ptr %11, align 4, !tbaa !16, !range !21, !noundef !25 %31 = trunc nuw i8 %30 to i1 - br i1 %31, label %.loopexit, label %_ZZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjENKUlvE_clEv.exit.i.i + br i1 %31, label %_ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000000000EEZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjEUlvE_EEbRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EET1_.exit, label %_ZZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjENKUlvE_clEv.exit.i.i _ZZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjENKUlvE_clEv.exit.i.i: ; preds = %29 %32 = load i32, ptr %25, align 8, !tbaa !15 @@ -470,14 +470,12 @@ _ZZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjENKUlvE_clEv.exit.i.i: 36: ; preds = %.noexc10 %37 = load i8, ptr %11, align 4, !tbaa !16, !range !21, !noundef !25 %38 = trunc nuw i8 %37 to i1 - br i1 %38, label %.loopexit, label %_ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000000000EEZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjEUlvE_EEbRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EET1_.exit + %39 = load i32, ptr %25, align 8 + %.not = icmp ule i32 %2, %39 + %or.cond.not = select i1 %38, i1 true, i1 %.not + br i1 %or.cond.not, label %_ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000000000EEZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjEUlvE_EEbRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EET1_.exit.thread.thread21, label %44 -_ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000000000EEZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjEUlvE_EEbRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EET1_.exit: ; preds = %36 - %39 = load i32, ptr %25, align 8, !tbaa !15 - %.not = icmp ugt i32 %2, %39 - br i1 %.not, label %44, label %_ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000000000EEZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjEUlvE_EEbRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EET1_.exit.thread - -.loopexit: ; preds = %29, %36 +_ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000000000EEZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjEUlvE_EEbRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EET1_.exit: ; preds = %29, %36 invoke void @_ZN5arrow6Status8FromArgsIJRA43_KcEEES0_NS_10StatusCodeEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.arrow::Status") align 8 %0, i8 noundef signext 4, ptr noundef nonnull align 1 dereferenceable(43) @.str.4) to label %_ZNSt11unique_lockISt5mutexED2Ev.exit unwind label %42 @@ -486,16 +484,16 @@ _ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000000000EEZN5arrow4util17Co cleanup br label %_ZNSt11unique_lockISt5mutexED2Ev.exit15 -42: ; preds = %44, %.loopexit +42: ; preds = %44, %_ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000000000EEZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjEUlvE_EEbRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EET1_.exit %43 = landingpad { ptr, i32 } cleanup br label %_ZNSt11unique_lockISt5mutexED2Ev.exit15 -_ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000000000EEZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjEUlvE_EEbRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EET1_.exit.thread: ; preds = %_ZZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjENKUlvE_clEv.exit.i.i, %_ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000000000EEZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjEUlvE_EEbRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EET1_.exit +_ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000000000EEZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjEUlvE_EEbRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EET1_.exit.thread: ; preds = %_ZZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjENKUlvE_clEv.exit.i.i store ptr null, ptr %0, align 8, !tbaa !26, !alias.scope !72 br label %_ZNSt11unique_lockISt5mutexED2Ev.exit -44: ; preds = %_ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000000000EEZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjEUlvE_EEbRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EET1_.exit +44: ; preds = %36 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #15, !noalias !75 invoke void @_ZN5arrow4util13StringBuilderIJRA23_KcRjRA31_S2_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull align 1 dereferenceable(23) @.str.5, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 1 dereferenceable(31) @.str.6) to label %.noexc12 unwind label %42 @@ -552,7 +550,7 @@ _ZN5arrow6Status7InvalidIJRA23_KcRjRA31_S2_EEES0_DpOT_.exit: ; preds = %_ZNKSt7_ call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #15, !noalias !75 br label %_ZNSt11unique_lockISt5mutexED2Ev.exit -_ZNSt11unique_lockISt5mutexED2Ev.exit: ; preds = %_ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000000000EEZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjEUlvE_EEbRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EET1_.exit.thread, %_ZN5arrow6StatusD2Ev.exit, %_ZN5arrow6Status7InvalidIJRA23_KcRjRA31_S2_EEES0_DpOT_.exit, %.loopexit +_ZNSt11unique_lockISt5mutexED2Ev.exit: ; preds = %_ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000000000EEZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjEUlvE_EEbRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EET1_.exit.thread, %_ZN5arrow6StatusD2Ev.exit, %_ZN5arrow6Status7InvalidIJRA23_KcRjRA31_S2_EEES0_DpOT_.exit, %_ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000000000EEZN5arrow4util17CountingSemaphore4Impl14WaitForWaitersEjEUlvE_EEbRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EET1_.exit %64 = call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %8) #15 ret void diff --git a/bench/arrow/optimized/os.ll b/bench/arrow/optimized/os.ll index 2acf7691174..d74b2b4af76 100644 --- a/bench/arrow/optimized/os.ll +++ b/bench/arrow/optimized/os.ll @@ -1242,7 +1242,7 @@ _mi_os_free_ex.exit: ; preds = %51, %53 br i1 %exitcond.not, label %.thread68, label %35, !llvm.loop !21 .thread68: ; preds = %66, %mi_unix_mmapx.exit.thread.i.i, %mi_unix_mmapx.exit.thread.i.i, %27, %.thread66, %50, %_mi_os_free_ex.exit - %.04373 = phi i64 [ %.04376, %.thread66 ], [ %.04376, %50 ], [ %.04376, %_mi_os_free_ex.exit ], [ 0, %27 ], [ %0, %66 ], [ %.04376, %mi_unix_mmapx.exit.thread.i.i ], [ %.04376, %mi_unix_mmapx.exit.thread.i.i ] + %.04373 = phi i64 [ %.04376, %.thread66 ], [ %.04376, %50 ], [ %.04376, %_mi_os_free_ex.exit ], [ 0, %27 ], [ 0, %66 ], [ %.04376, %mi_unix_mmapx.exit.thread.i.i ], [ %.04376, %mi_unix_mmapx.exit.thread.i.i ] br i1 %.not53, label %69, label %68 68: ; preds = %.thread68 @@ -1332,17 +1332,12 @@ define hidden range(i64 1, 0) i64 @_mi_os_numa_node_count_get() local_unnamed_ad %.not.i = icmp eq i32 %12, 0 br i1 %.not.i, label %8, label %split.i, !llvm.loop !23 -split.i: ; preds = %9 - %13 = zext nneg i32 %10 to i64 - br label %mi_os_numa_node_countx.exit - -mi_os_numa_node_countx.exit: ; preds = %8, %split.i - %.0.lcssa.i = phi i64 [ %13, %split.i ], [ 257, %8 ] +split.i: ; preds = %9, %8 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %1) #10 br label %14 14: ; preds = %4, %mi_os_numa_node_countx.exit - %.1 = phi i64 [ %.0.lcssa.i, %mi_os_numa_node_countx.exit ], [ %5, %4 ] + %.1 = phi i64 [ 257, %mi_os_numa_node_countx.exit ], [ %5, %4 ] store atomic i64 %.1, ptr @_mi_numa_node_count release, align 8 tail call void (ptr, ...) @_mi_verbose_message(ptr noundef nonnull @.str.2, i64 noundef %.1) #10 br label %15 diff --git a/bench/assimp/optimized/MakeVerboseFormat.ll b/bench/assimp/optimized/MakeVerboseFormat.ll index 04209d4bf83..3057a1501db 100644 --- a/bench/assimp/optimized/MakeVerboseFormat.ll +++ b/bench/assimp/optimized/MakeVerboseFormat.ll @@ -808,13 +808,11 @@ _ZNK6aiMesh15HasVertexColorsEj.exit201.thread: ; preds = %_ZNK6aiMesh16HasTex %325 = load ptr, ptr %30, align 8 %.not1.i204 = icmp eq ptr %325, null %or.cond.i205 = select i1 %.not.i203, i1 true, i1 %.not1.i204 - br i1 %or.cond.i205, label %_ZNK6aiMesh24HasTangentsAndBitangentsEv.exit206.thread, label %_ZNK6aiMesh24HasTangentsAndBitangentsEv.exit206 - -_ZNK6aiMesh24HasTangentsAndBitangentsEv.exit206: ; preds = %323 %.not = icmp eq i32 %.pre306, 0 - br i1 %.not, label %_ZNK6aiMesh24HasTangentsAndBitangentsEv.exit206.thread, label %326 + %or.cond = select i1 %or.cond.i205, i1 true, i1 %.not + br i1 %or.cond, label %_ZNK6aiMesh24HasTangentsAndBitangentsEv.exit206.thread, label %326 -326: ; preds = %_ZNK6aiMesh24HasTangentsAndBitangentsEv.exit206 +326: ; preds = %323 tail call void @_ZdaPv(ptr noundef nonnull %324) #14 store ptr %.0153317321, ptr %28, align 8 %327 = load ptr, ptr %30, align 8 @@ -830,8 +828,8 @@ _ZNK6aiMesh24HasTangentsAndBitangentsEv.exit206: ; preds = %323 %.pre305 = load i32, ptr %5, align 4 br label %_ZNK6aiMesh24HasTangentsAndBitangentsEv.exit206.thread -_ZNK6aiMesh24HasTangentsAndBitangentsEv.exit206.thread: ; preds = %323, %330, %_ZNK6aiMesh24HasTangentsAndBitangentsEv.exit206 - %331 = phi i32 [ %.pre306, %323 ], [ %.pre305, %330 ], [ 0, %_ZNK6aiMesh24HasTangentsAndBitangentsEv.exit206 ] +_ZNK6aiMesh24HasTangentsAndBitangentsEv.exit206.thread: ; preds = %323, %330 + %331 = phi i32 [ 0, %323 ], [ %.pre305, %330 ] %332 = icmp ne i32 %331, %.fr250 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #13 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3) #13 diff --git a/bench/boost/optimized/benchmark_fstream.ll b/bench/boost/optimized/benchmark_fstream.ll index 920c1d83f1f..1df1816a2a8 100644 --- a/bench/boost/optimized/benchmark_fstream.ll +++ b/bench/boost/optimized/benchmark_fstream.ll @@ -7766,24 +7766,23 @@ define linkonce_odr hidden noundef i32 @_ZN5boost6nowide13basic_filebufIcSt11cha br label %_ZN5boost6nowide13basic_filebufIcSt11char_traitsIcEE11make_bufferEv.exit _ZN5boost6nowide13basic_filebufIcSt11char_traitsIcEE11make_bufferEv.exit: ; preds = %32, %37, %38 - %41 = phi i64 [ 0, %37 ], [ %36, %38 ], [ %36, %32 ] - %42 = phi ptr [ null, %37 ], [ %39, %38 ], [ %34, %32 ] - %43 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %44 = load ptr, ptr %43, align 8, !tbaa !125 - %45 = tail call i64 @fread(ptr noundef %42, i64 noundef 1, i64 noundef %41, ptr noundef %44) - %46 = load ptr, ptr %33, align 8, !tbaa !132 - %47 = getelementptr inbounds nuw i8, ptr %46, i64 %45 - %48 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %46, ptr %48, align 8, !tbaa !142 - %49 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %46, ptr %49, align 8, !tbaa !139 - %50 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %47, ptr %50, align 8, !tbaa !140 - %.not11 = icmp eq i64 %45, 0 + %41 = phi ptr [ null, %37 ], [ %39, %38 ], [ %34, %32 ] + %42 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %43 = load ptr, ptr %42, align 8, !tbaa !125 + %44 = tail call i64 @fread(ptr noundef %41, i64 noundef 1, i64 noundef 0, ptr noundef %43) + %45 = load ptr, ptr %33, align 8, !tbaa !132 + %46 = getelementptr inbounds nuw i8, ptr %45, i64 %44 + %47 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %45, ptr %47, align 8, !tbaa !142 + %48 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %45, ptr %48, align 8, !tbaa !139 + %49 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store ptr %46, ptr %49, align 8, !tbaa !140 + %.not11 = icmp eq i64 %44, 0 br i1 %.not11, label %_ZN5boost6nowide13basic_filebufIcSt11char_traitsIcEE12stop_writingEv.exit, label %_ZN5boost6nowide13basic_filebufIcSt11char_traitsIcEE11make_bufferEv.exit._crit_edge _ZN5boost6nowide13basic_filebufIcSt11char_traitsIcEE11make_bufferEv.exit._crit_edge: ; preds = %_ZN5boost6nowide13basic_filebufIcSt11char_traitsIcEE11make_bufferEv.exit - %.pre12 = load i8, ptr %46, align 1, !tbaa !12 + %.pre12 = load i8, ptr %45, align 1, !tbaa !12 br label %51 51: ; preds = %_ZN5boost6nowide13basic_filebufIcSt11char_traitsIcEE11make_bufferEv.exit._crit_edge, %.thread @@ -7825,7 +7824,7 @@ define linkonce_odr hidden noundef i32 @_ZN5boost6nowide13basic_filebufIcSt11cha br label %14 14: ; preds = %8, %10, %13, %2 - %.0 = phi i32 [ -1, %2 ], [ %1, %13 ], [ %1, %10 ], [ 0, %8 ] + %.0 = phi i32 [ -1, %2 ], [ -1, %13 ], [ -1, %10 ], [ 0, %8 ] ret i32 %.0 } diff --git a/bench/boost/optimized/mo_lambda.ll b/bench/boost/optimized/mo_lambda.ll index 146c7d34916..f03168c6717 100644 --- a/bench/boost/optimized/mo_lambda.ll +++ b/bench/boost/optimized/mo_lambda.ll @@ -1756,16 +1756,7 @@ define internal noundef i64 @_ZNK5boost6locale11gnu_gettext6lambda12_GLOBAL__N_1 %10 = load ptr, ptr %9, align 8, !tbaa !15 %11 = load ptr, ptr %10, align 8 %12 = tail call noundef i64 %11(ptr noundef nonnull align 8 dereferenceable(8) %9, i64 noundef %1) - %13 = icmp eq i64 %12, 0 - br i1 %13, label %16, label %14 - -14: ; preds = %2 - %15 = sdiv i64 %7, %12 - br label %16 - -16: ; preds = %2, %14 - %.0 = phi i64 [ %15, %14 ], [ 0, %2 ] - ret i64 %.0 + ret i64 0 } ; Function Attrs: inlinehint mustprogress nounwind uwtable diff --git a/bench/box2d/optimized/shape.ll b/bench/box2d/optimized/shape.ll index b75080e2d01..4437a756e00 100644 --- a/bench/box2d/optimized/shape.ll +++ b/bench/box2d/optimized/shape.ll @@ -3742,22 +3742,18 @@ define i64 @b2Shape_GetParentChain(i64 %0) local_unnamed_addr #0 { %16 = getelementptr inbounds nuw i8, ptr %4, i64 1272 %.val11 = load ptr, ptr %16, align 8, !tbaa !10 %17 = sext i32 %14 to i64 - %18 = add nuw nsw i32 %14, 1 - %19 = getelementptr inbounds %struct.b2ChainShape, ptr %.val11, i64 %17, i32 7 - %20 = load i16, ptr %19, align 8, !tbaa !125 - %21 = zext i16 %20 to i64 - %22 = shl nuw i64 %21, 48 - %23 = and i64 %0, 281470681743360 - %24 = zext i32 %18 to i64 + %18 = getelementptr inbounds %struct.b2ChainShape, ptr %.val11, i64 %17, i32 7 + %19 = load i16, ptr %18, align 8, !tbaa !125 + %20 = zext i16 %19 to i64 + %21 = shl nuw i64 %20, 48 + %22 = and i64 %0, 281470681743360 br label %.thread .thread: ; preds = %12, %1, %15 - %.sroa.09.1 = phi i64 [ %24, %15 ], [ 0, %1 ], [ 0, %12 ] - %.sroa.3.1 = phi i64 [ %23, %15 ], [ 0, %1 ], [ 0, %12 ] - %.sroa.5.1 = phi i64 [ %22, %15 ], [ 0, %1 ], [ 0, %12 ] + %.sroa.09.1 = phi i64 [ %22, %15 ], [ 0, %1 ], [ 0, %12 ] + %.sroa.3.1 = phi i64 [ %21, %15 ], [ 0, %1 ], [ 0, %12 ] %.sroa.3.0.insert.insert = or disjoint i64 %.sroa.3.1, %.sroa.09.1 - %.sroa.09.0.insert.insert = or disjoint i64 %.sroa.3.0.insert.insert, %.sroa.5.1 - ret i64 %.sroa.09.0.insert.insert + ret i64 %.sroa.3.0.insert.insert } ; Function Attrs: nounwind uwtable diff --git a/bench/box2d/optimized/x11_window.ll b/bench/box2d/optimized/x11_window.ll index 4e4e6feb6be..14240ac644a 100644 --- a/bench/box2d/optimized/x11_window.ll +++ b/bench/box2d/optimized/x11_window.ll @@ -649,13 +649,11 @@ define hidden range(i32 0, 2) i32 @_glfwCreateWindowX11(ptr noundef %0, ptr noun %68 = getelementptr inbounds nuw i8, ptr %1, i64 4 %69 = load i32, ptr %68, align 4, !tbaa !196 %.not121.i = icmp eq i32 %69, -2147483648 - %spec.select.i = select i1 %.not121.i, i32 0, i32 %69 - %spec.select144.i = select i1 %.not121.i, i32 0, i32 %66 + %spec.select.i = select i1 %.not121.i, i32 0, i32 -2147483648 br label %70 70: ; preds = %67, %65 %.0111.i = phi i32 [ 0, %65 ], [ %spec.select.i, %67 ] - %.0106.i = phi i32 [ 0, %65 ], [ %spec.select144.i, %67 ] %71 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 141424), align 8, !tbaa !197 %72 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 137840), align 8, !tbaa !93 %73 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 137856), align 8, !tbaa !198 @@ -697,7 +695,7 @@ _glfwIsVisualTransparentX11.exit.i: ; preds = %81, %77, %70 store i64 %90, ptr %91, align 8, !tbaa !204 %92 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 141456), align 8, !tbaa !205 %93 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 137840), align 8, !tbaa !93 - %94 = call i64 %92(ptr noundef %93, i64 noundef %90, i32 noundef %.0106.i, i32 noundef %.0111.i, i32 noundef %.0104.i, i32 noundef %.0105.i, i32 noundef 0, i32 noundef %48, i32 noundef 1, ptr noundef %49, i64 noundef 10248, ptr noundef nonnull %15) #17 + %94 = call i64 %92(ptr noundef %93, i64 noundef %90, i32 noundef %.0111.i, i32 noundef %.0111.i, i32 noundef %.0104.i, i32 noundef %.0105.i, i32 noundef 0, i32 noundef %48, i32 noundef 1, ptr noundef %49, i64 noundef 10248, ptr noundef nonnull %15) #17 %95 = getelementptr inbounds nuw i8, ptr %0, i64 1248 store i64 %94, ptr %95, align 8, !tbaa !140 call void @_glfwReleaseErrorHandlerX11() #17 @@ -6671,7 +6669,7 @@ define hidden i32 @_glfwGetPhysicalDevicePresentationSupportX11(ptr noundef %0, } ; Function Attrs: nounwind uwtable -define hidden i32 @_glfwCreateWindowSurfaceX11(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr noundef %2, ptr noundef %3) local_unnamed_addr #0 { +define hidden range(i32 -7, 1) i32 @_glfwCreateWindowSurfaceX11(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr noundef %2, ptr noundef %3) local_unnamed_addr #0 { %5 = alloca %struct.VkXcbSurfaceCreateInfoKHR, align 8 %6 = alloca %struct.VkXlibSurfaceCreateInfoKHR, align 8 %7 = load i32, ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 133860), align 4, !tbaa !437 @@ -6722,7 +6720,7 @@ define hidden i32 @_glfwCreateWindowSurfaceX11(ptr noundef %0, ptr noundef reado br label %28 28: ; preds = %20, %26, %19, %15 - %.0 = phi i32 [ -7, %19 ], [ -7, %15 ], [ %25, %26 ], [ 0, %20 ] + %.0 = phi i32 [ -7, %19 ], [ -7, %15 ], [ 0, %26 ], [ 0, %20 ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #17 br label %43 @@ -6757,7 +6755,7 @@ define hidden i32 @_glfwCreateWindowSurfaceX11(ptr noundef %0, ptr noundef reado br label %42 42: ; preds = %33, %40, %32 - %.2 = phi i32 [ -7, %32 ], [ %39, %40 ], [ 0, %33 ] + %.2 = phi i32 [ -7, %32 ], [ 0, %40 ], [ 0, %33 ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #17 br label %43 diff --git a/bench/brotli/optimized/brotli.ll b/bench/brotli/optimized/brotli.ll index 3f364551baa..5e09e3bf11c 100644 --- a/bench/brotli/optimized/brotli.ll +++ b/bench/brotli/optimized/brotli.ll @@ -842,7 +842,7 @@ ParseBase64.exit.i: ; preds = %._crit_edge.i.i, %2 289: ; preds = %288, %283, %ParseBase64.exit.i, %230, %ParseInt.exit.i, %183, %175, %153, %148, %143, %133, %132, %127, %119, %111, %102, %101, %94 %290 = phi ptr [ %85, %94 ], [ %85, %101 ], [ %85, %111 ], [ %85, %119 ], [ %85, %127 ], [ %85, %132 ], [ %85, %143 ], [ %85, %148 ], [ %85, %153 ], [ %85, %102 ], [ %85, %133 ], [ %85, %175 ], [ %85, %ParseBase64.exit.i ], [ %85, %ParseInt.exit.i ], [ %85, %288 ], [ %168, %283 ], [ %85, %230 ], [ %85, %183 ] - %.4368.i = phi i32 [ %.33671218.i, %94 ], [ %.33671218.i, %101 ], [ %.33671218.i, %111 ], [ %.33671218.i, %119 ], [ %.33671218.i, %127 ], [ %.33671218.i, %132 ], [ %.33671218.i, %143 ], [ %.33671218.i, %148 ], [ %.33671218.i, %153 ], [ 1, %102 ], [ 1, %133 ], [ %.33671218.i, %175 ], [ %.33671218.i, %ParseBase64.exit.i ], [ %.33671218.i, %ParseInt.exit.i ], [ %.33671218.i, %288 ], [ %.33671218.i, %283 ], [ %.33671218.i, %230 ], [ %.33671218.i, %183 ] + %.4368.i = phi i32 [ 0, %94 ], [ 0, %102 ], [ 0, %111 ], [ 0, %119 ], [ 0, %127 ], [ 0, %132 ], [ 0, %143 ], [ 0, %148 ], [ 0, %153 ], [ 1, %102 ], [ 1, %133 ], [ 0, %175 ], [ 0, %ParseBase64.exit.i ], [ 0, %ParseInt.exit.i ], [ 0, %288 ], [ 0, %283 ], [ 0, %230 ], [ 0, %183 ] %.3358.i = phi i32 [ 1, %94 ], [ %.23571219.i, %101 ], [ %.23571219.i, %111 ], [ %.23571219.i, %119 ], [ %.23571219.i, %127 ], [ %.23571219.i, %132 ], [ %.23571219.i, %143 ], [ %.23571219.i, %148 ], [ 1, %153 ], [ %.23571219.i, %102 ], [ %.23571219.i, %133 ], [ %.23571219.i, %175 ], [ %.23571219.i, %ParseBase64.exit.i ], [ 1, %ParseInt.exit.i ], [ %.23571219.i, %288 ], [ %.23571219.i, %283 ], [ %.23571219.i, %230 ], [ %.23571219.i, %183 ] %.4352.i = phi i32 [ %.33511220.i, %94 ], [ 1, %101 ], [ %.33511220.i, %111 ], [ %.33511220.i, %119 ], [ %.33511220.i, %127 ], [ %.33511220.i, %132 ], [ %.33511220.i, %143 ], [ %.33511220.i, %148 ], [ %.33511220.i, %153 ], [ %.33511220.i, %102 ], [ %.33511220.i, %133 ], [ %.33511220.i, %175 ], [ %.33511220.i, %ParseBase64.exit.i ], [ %.33511220.i, %ParseInt.exit.i ], [ %.33511220.i, %288 ], [ %.33511220.i, %283 ], [ %.33511220.i, %230 ], [ 0, %183 ] %.3345.i = phi i32 [ %.23441221.i, %94 ], [ %.23441221.i, %101 ], [ %.23441221.i, %111 ], [ 1, %119 ], [ %.23441221.i, %127 ], [ %.23441221.i, %132 ], [ %.23441221.i, %143 ], [ %.23441221.i, %148 ], [ %.23441221.i, %153 ], [ %.23441221.i, %102 ], [ %.23441221.i, %133 ], [ %.23441221.i, %175 ], [ %.23441221.i, %ParseBase64.exit.i ], [ %.23441221.i, %ParseInt.exit.i ], [ %.23441221.i, %288 ], [ %.23441221.i, %283 ], [ %.23441221.i, %230 ], [ %.23441221.i, %183 ] @@ -1287,7 +1287,7 @@ sub_2.i: ; preds = %sub_1.i .thread514.i: ; preds = %289, %495, %483, %475, %462, %444, %431, %418, %395, %382, %378, %370, %362, %344, %335, %324, %312, %308, %300, %83, %73, %.thread.i %.1375.i = phi i64 [ %.03741242.i, %.thread.i ], [ %74, %73 ], [ %.03741242.i, %308 ], [ %.03741242.i, %370 ], [ %.03741242.i, %83 ], [ %.03741242.i, %418 ], [ %.03741242.i, %431 ], [ %.03741242.i, %462 ], [ %.03741242.i, %495 ], [ %.03741242.i, %483 ], [ %.03741242.i, %475 ], [ %.03741242.i, %444 ], [ %.03741242.i, %382 ], [ %.03741242.i, %312 ], [ %.03741242.i, %300 ], [ %.03741242.i, %344 ], [ %.03741242.i, %395 ], [ %.03741242.i, %378 ], [ %.03741242.i, %362 ], [ %.03741242.i, %335 ], [ %.03741242.i, %324 ], [ %.03741242.i, %289 ] %.1372.i = phi i64 [ %.03711243.i, %.thread.i ], [ %spec.select457.i, %73 ], [ %.03711243.i, %308 ], [ %.03711243.i, %370 ], [ %.03711243.i, %83 ], [ %.03711243.i, %418 ], [ %.03711243.i, %431 ], [ %.03711243.i, %462 ], [ %.03711243.i, %495 ], [ %.03711243.i, %483 ], [ %.03711243.i, %475 ], [ %.03711243.i, %444 ], [ %.03711243.i, %382 ], [ %.03711243.i, %312 ], [ %.03711243.i, %300 ], [ %.03711243.i, %344 ], [ %.03711243.i, %395 ], [ %.03711243.i, %378 ], [ %.03711243.i, %362 ], [ %.03711243.i, %335 ], [ %.03711243.i, %324 ], [ %.03711243.i, %289 ] - %.2366.i = phi i32 [ %.13651244.i, %.thread.i ], [ %.13651244.i, %73 ], [ %.13651244.i, %308 ], [ %.13651244.i, %370 ], [ %.13651244.i, %83 ], [ %.13651244.i, %418 ], [ %.13651244.i, %431 ], [ %.13651244.i, %462 ], [ %.13651244.i, %495 ], [ %.13651244.i, %483 ], [ %.13651244.i, %475 ], [ %.13651244.i, %444 ], [ 1, %382 ], [ 1, %312 ], [ %.13651244.i, %300 ], [ %.13651244.i, %344 ], [ %.13651244.i, %395 ], [ %.13651244.i, %378 ], [ %.13651244.i, %362 ], [ %.13651244.i, %335 ], [ %.13651244.i, %324 ], [ %.4368.i, %289 ] + %.2366.i = phi i32 [ 0, %.thread.i ], [ 0, %73 ], [ 0, %308 ], [ 0, %370 ], [ 0, %83 ], [ 0, %418 ], [ 0, %431 ], [ 0, %462 ], [ 0, %495 ], [ 0, %483 ], [ 0, %475 ], [ 0, %444 ], [ 1, %382 ], [ 1, %312 ], [ 0, %300 ], [ 0, %344 ], [ 0, %395 ], [ 0, %378 ], [ 0, %362 ], [ 0, %335 ], [ 0, %324 ], [ %.4368.i, %289 ] %.1356.i = phi i32 [ %.03551245.i, %.thread.i ], [ %.03551245.i, %73 ], [ %.03551245.i, %308 ], [ %.03551245.i, %370 ], [ %.03551245.i, %83 ], [ %.03551245.i, %418 ], [ %.03551245.i, %431 ], [ %.03551245.i, %462 ], [ %.03551245.i, %495 ], [ 1, %483 ], [ %.03551245.i, %475 ], [ %.03551245.i, %444 ], [ %.03551245.i, %382 ], [ %.03551245.i, %312 ], [ 1, %300 ], [ %.03551245.i, %344 ], [ %.03551245.i, %395 ], [ %.03551245.i, %378 ], [ %.03551245.i, %362 ], [ %.03551245.i, %335 ], [ %.03551245.i, %324 ], [ %.3358.i, %289 ] %.2350.i = phi i32 [ %.13491246.i, %.thread.i ], [ %.13491246.i, %73 ], [ %.13491246.i, %308 ], [ %.13491246.i, %370 ], [ %.13491246.i, %83 ], [ %.13491246.i, %418 ], [ %.13491246.i, %431 ], [ %.13491246.i, %462 ], [ %.13491246.i, %495 ], [ %.13491246.i, %483 ], [ 0, %475 ], [ %.13491246.i, %444 ], [ %.13491246.i, %382 ], [ %.13491246.i, %312 ], [ %.13491246.i, %300 ], [ %.13491246.i, %344 ], [ %.13491246.i, %395 ], [ 1, %378 ], [ %.13491246.i, %362 ], [ %.13491246.i, %335 ], [ %.13491246.i, %324 ], [ %.4352.i, %289 ] %.1343.i = phi i32 [ %.03421247.i, %.thread.i ], [ %.03421247.i, %73 ], [ %.03421247.i, %308 ], [ %.03421247.i, %370 ], [ %.03421247.i, %83 ], [ %.03421247.i, %418 ], [ %.03421247.i, %431 ], [ %.03421247.i, %462 ], [ %.03421247.i, %495 ], [ %.03421247.i, %483 ], [ %.03421247.i, %475 ], [ %.03421247.i, %444 ], [ %.03421247.i, %382 ], [ %.03421247.i, %312 ], [ %.03421247.i, %300 ], [ %.03421247.i, %344 ], [ %.03421247.i, %395 ], [ %.03421247.i, %378 ], [ 1, %362 ], [ 1, %335 ], [ %.03421247.i, %324 ], [ %.3345.i, %289 ] @@ -2904,7 +2904,7 @@ declare i32 @isatty(i32 noundef) local_unnamed_addr #10 declare void @BrotliEncoderDestroyInstance(ptr noundef) local_unnamed_addr #5 ; Function Attrs: nounwind uwtable -define internal fastcc range(i32 0, 2) i32 @CloseFiles(ptr noundef nonnull captures(none) %0, i32 noundef range(i32 0, 2) %1, i32 noundef range(i32 0, 2) %2) unnamed_addr #0 { +define internal fastcc noundef range(i32 0, 2) i32 @CloseFiles(ptr noundef nonnull captures(none) %0, i32 noundef range(i32 0, 2) %1, i32 noundef range(i32 0, 2) %2) unnamed_addr #0 { %4 = alloca [2 x %struct.timespec], align 16 %5 = alloca %struct.stat, align 8 %6 = getelementptr inbounds nuw i8, ptr %0, i64 32 @@ -3050,35 +3050,32 @@ CopyStat.exit: ; preds = %33, %40, %75, %79 %86 = getelementptr inbounds nuw i8, ptr %0, i64 408 %87 = load ptr, ptr %86, align 8, !tbaa !58 %.not32 = icmp eq ptr %87, null - br i1 %.not32, label %100, label %88 + br i1 %.not32, label %99, label %88 88: ; preds = %85 %89 = call i32 @fclose(ptr noundef nonnull %87) %.not33 = icmp eq i32 %89, 0 - br i1 %.not33, label %100, label %90 - -90: ; preds = %88 %.not34 = icmp eq i32 %.0, 0 - br i1 %.not34, label %100, label %91 - -91: ; preds = %90 - %92 = load ptr, ptr @stderr, align 8, !tbaa !30 - %93 = getelementptr inbounds nuw i8, ptr %0, i64 384 - %94 = load ptr, ptr %93, align 8, !tbaa !61 - %.not.i38 = icmp eq ptr %94, null - %95 = select i1 %.not.i38, ptr @.str.58, ptr %94 - %96 = tail call ptr @__errno_location() #25 - %97 = load i32, ptr %96, align 4, !tbaa !20 - %98 = call ptr @strerror(i32 noundef %97) #21 - %99 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %92, ptr noundef nonnull @.str.80, ptr noundef nonnull %95, ptr noundef %98) #24 - br label %100 + %or.cond39 = or i1 %.not34, %.not33 + br i1 %or.cond39, label %99, label %90 -100: ; preds = %90, %91, %88, %85 - %.2 = phi i32 [ %.0, %88 ], [ %.0, %85 ], [ 0, %91 ], [ 0, %90 ] +100: ; preds = %88 + %91 = load ptr, ptr @stderr, align 8, !tbaa !30 + %92 = getelementptr inbounds nuw i8, ptr %0, i64 384 + %93 = load ptr, ptr %92, align 8, !tbaa !61 + %.not.i38 = icmp eq ptr %93, null + %94 = select i1 %.not.i38, ptr @.str.58, ptr %93 + %95 = tail call ptr @__errno_location() #25 + %96 = load i32, ptr %95, align 4, !tbaa !20 + %97 = call ptr @strerror(i32 noundef %96) #21 + %98 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %91, ptr noundef nonnull @.str.80, ptr noundef nonnull %94, ptr noundef %97) #24 + br label %99 + +99: ; preds = %90, %88, %85 %.not35 = icmp eq i32 %1, 0 br i1 %.not35, label %106, label %101 -101: ; preds = %100 +101: ; preds = %99 %102 = getelementptr inbounds nuw i8, ptr %0, i64 384 %103 = load ptr, ptr %102, align 8, !tbaa !61 %.not36 = icmp eq ptr %103, null @@ -3088,9 +3085,9 @@ CopyStat.exit: ; preds = %33, %40, %75, %79 %105 = call i32 @unlink(ptr noundef nonnull %103) #21 br label %106 -106: ; preds = %104, %101, %100 +106: ; preds = %104, %101, %99 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %86, i8 0, i64 16, i1 false) - ret i32 %.2 + ret i32 0 } ; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite) diff --git a/bench/c3c/optimized/llvm_codegen_type.ll b/bench/c3c/optimized/llvm_codegen_type.ll index 1728643c2bc..581994c388f 100644 --- a/bench/c3c/optimized/llvm_codegen_type.ll +++ b/bench/c3c/optimized/llvm_codegen_type.ll @@ -2835,8 +2835,7 @@ define internal fastcc ptr @llvm_get_introspection_for_fault(ptr noundef %0, ptr br i1 %exitcond81.not, label %._crit_edge73, label %.lr.ph72, !llvm.loop !19 ._crit_edge73: ; preds = %.lr.ph72, %11 - %.pre-phi = phi i64 [ 0, %11 ], [ %wide.trip.count80, %.lr.ph72 ] - %76 = call fastcc ptr @llvm_generate_introspection_global(ptr noundef nonnull %0, ptr noundef %16, ptr noundef %1, i32 noundef 9, ptr noundef null, i64 noundef %.pre-phi, ptr noundef null, i1 noundef zeroext false) + %76 = call fastcc ptr @llvm_generate_introspection_global(ptr noundef nonnull %0, ptr noundef %16, ptr noundef %1, i32 noundef 9, ptr noundef null, i64 noundef 0, ptr noundef null, i1 noundef zeroext false) ret ptr %76 } diff --git a/bench/c3c/optimized/project_creation.ll b/bench/c3c/optimized/project_creation.ll index ec5e2226505..a916a64fe4d 100644 --- a/bench/c3c/optimized/project_creation.ll +++ b/bench/c3c/optimized/project_creation.ll @@ -348,9 +348,9 @@ define internal fastcc ptr @module_name(ptr noundef readonly captures(none) %0) %.not = icmp eq i64 %4, 0 br i1 %.not, label %._crit_edge.thread, label %.lr.ph -.lr.ph: ; preds = %1, %16 - %.026 = phi i8 [ %.1, %16 ], [ 0, %1 ] - %.02325 = phi i64 [ %17, %16 ], [ 0, %1 ] +.lr.ph: ; preds = %1, %15 + %.026 = phi i1 [ true, %15 ], [ false, %1 ] + %.02325 = phi i64 [ %17, %15 ], [ 0, %1 ] %5 = load ptr, ptr %2, align 8 %6 = getelementptr inbounds i8, ptr %5, i64 %.02325 %7 = load i8, ptr %6, align 1 @@ -359,12 +359,11 @@ define internal fastcc ptr @module_name(ptr noundef readonly captures(none) %0) br i1 %or.cond, label %9, label %12 9: ; preds = %.lr.ph - %10 = trunc nuw i8 %.026 to i1 - br i1 %10, label %16, label %11 + br i1 %.026, label %15, label %10 11: ; preds = %9 tail call void @scratch_buffer_append(ptr noundef nonnull @.str.46) #9 - br label %16 + br label %15 12: ; preds = %.lr.ph %13 = and i8 %7, -33 @@ -372,26 +371,20 @@ define internal fastcc ptr @module_name(ptr noundef readonly captures(none) %0) %or.cond24 = icmp ult i8 %14, 26 %15 = or i8 %7, 32 %spec.select = select i1 %or.cond24, i8 %15, i8 95 - %spec.select28 = select i1 %or.cond24, i8 1, i8 %.026 - br label %16 + br label %15 -16: ; preds = %12, %9, %11 - %.sink = phi i8 [ %7, %11 ], [ %7, %9 ], [ %spec.select, %12 ] - %.1 = phi i8 [ 1, %11 ], [ 1, %9 ], [ %spec.select28, %12 ] +15: ; preds = %11, %9, %10 + %.sink = phi i8 [ %7, %10 ], [ %7, %9 ], [ %spec.select, %11 ] tail call void @scratch_buffer_append_char(i8 noundef signext %.sink) #9 %17 = add nuw i64 %.02325, 1 %exitcond.not = icmp eq i64 %17, %4 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !9 -._crit_edge: ; preds = %16 - %18 = trunc nuw i8 %.1 to i1 - br i1 %18, label %19, label %._crit_edge.thread - -._crit_edge.thread: ; preds = %1, %._crit_edge +._crit_edge: ; preds = %1 tail call void @scratch_buffer_append(ptr noundef nonnull @.str.47) #9 br label %19 -19: ; preds = %._crit_edge.thread, %._crit_edge +19: ; preds = %15, %._crit_edge.thread %20 = tail call ptr @scratch_buffer_to_string() #9 ret ptr %20 } diff --git a/bench/c3c/optimized/types.ll b/bench/c3c/optimized/types.ll index 9e7d720d34c..e6bee7f211f 100644 --- a/bench/c3c/optimized/types.ll +++ b/bench/c3c/optimized/types.ll @@ -1751,9 +1751,10 @@ define dso_local i32 @type_abi_alignment(ptr noundef readonly captures(none) %0) 32: ; preds = %19, %11 %.0 = phi i32 [ %31, %19 ], [ %17, %11 ] %33 = load i32, ptr @max_alignment_vector, align 4 - %.not22.not = icmp eq i32 %33, 0 - %34 = tail call i32 @llvm.umin.i32(i32 %.0, i32 %33) - %.1 = select i1 %.not22.not, i32 %.0, i32 %34 + %.not22.not = icmp ne i32 %33, 0 + %34 = icmp ugt i32 %.0, %33 + %.1 = select i1 %.not22.not, i1 %34, i1 false + %.1 = select i1 %or.cond, i32 0, i32 %.0 br label %.loopexit 35: ; preds = %2 diff --git a/bench/casadi/optimized/dm_instantiator.ll b/bench/casadi/optimized/dm_instantiator.ll index 48b78f141de..7032f87f847 100644 --- a/bench/casadi/optimized/dm_instantiator.ll +++ b/bench/casadi/optimized/dm_instantiator.ll @@ -108180,14 +108180,14 @@ _ZSt13move_backwardIPdS0_ET0_T_S2_S1_.exit: ; preds = %26, %_ZSt22__uninit br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEENS1_IPdS6_EEET0_T_SB_SA_.exit _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEmEvRT_T0_.exit: ; preds = %17 - %32 = getelementptr inbounds i8, ptr %2, i64 %19 + %32 = getelementptr inbounds nuw i8, ptr %2, i64 8 %.not.i.i.i.i.i.i.i.i = icmp eq ptr %3, %32 br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEPddET0_T_SA_S9_RSaIT1_E.exit, label %33 33: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEmEvRT_T0_.exit %34 = ptrtoint ptr %32 to i64 %35 = sub i64 %6, %34 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %13, ptr align 8 %32, i64 %35, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %13, ptr nonnull align 8 %32, i64 %35, i1 false) %.pre = load ptr, ptr %12, align 8, !tbaa !11 br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEPddET0_T_SA_S9_RSaIT1_E.exit @@ -108208,11 +108208,8 @@ _ZSt22__uninitialized_move_aIPdS0_SaIdEET0_T_S3_S2_RT1_.exit53: ; preds = %_ZSt2 %40 = phi ptr [ %38, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEEPddET0_T_SA_S9_RSaIT1_E.exit ], [ %.pre74, %39 ] %41 = getelementptr inbounds nuw i8, ptr %40, i64 %19 store ptr %41, ptr %12, align 8, !tbaa !11 - %.not.i.i.i.i.i54 = icmp eq ptr %13, %1 - br i1 %.not.i.i.i.i.i54, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEENS1_IPdS6_EEET0_T_SB_SA_.exit, label %42 - -42: ; preds = %_ZSt22__uninitialized_move_aIPdS0_SaIdEET0_T_S3_S2_RT1_.exit53 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %2, i64 %19, i1 false) + %42 = load i64, ptr %2, align 8 + store i64 %42, ptr %1, align 8 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEENS1_IPdS6_EEET0_T_SB_SA_.exit 43: ; preds = %5 @@ -108282,7 +108279,7 @@ _ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit: ; preds = %67, %69 store ptr %71, ptr %10, align 8, !tbaa !16 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEENS1_IPdS6_EEET0_T_SB_SA_.exit -_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEENS1_IPdS6_EEET0_T_SB_SA_.exit: ; preds = %42, %_ZSt22__uninitialized_move_aIPdS0_SaIdEET0_T_S3_S2_RT1_.exit53, %_ZSt13move_backwardIPdS0_ET0_T_S2_S1_.exit, %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit, %4 +_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEENS1_IPdS6_EEET0_T_SB_SA_.exit: ; preds = %_ZSt22__uninitialized_move_aIPdS0_SaIdEET0_T_S3_S2_RT1_.exit53, %_ZSt13move_backwardIPdS0_ET0_T_S2_S1_.exit, %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit, %4 ret void } diff --git a/bench/ceres/optimized/block_jacobi_preconditioner.ll b/bench/ceres/optimized/block_jacobi_preconditioner.ll index e135d37a08b..c5b74244b06 100644 --- a/bench/ceres/optimized/block_jacobi_preconditioner.ll +++ b/bench/ceres/optimized/block_jacobi_preconditioner.ll @@ -17376,10 +17376,11 @@ _ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit209: ; preds = %_ZN5 br i1 %65, label %.lr.ph316, label %._crit_edge317 .lr.ph316: ; preds = %.preheader - %89 = srem i64 %.sroa.speculated231, 4 + %89 = and i64 %.sroa.speculated231, 3 %.not174 = icmp eq i64 %89, 0 - %spec.select = select i1 %.not174, i64 4, i64 %89 - %90 = sub nsw i64 %.sroa.speculated231, %spec.select + %spec.select = select i1 %.not174, i64 4, i64 0 + %spec.select = select i1 %.not174, i64 -4, i64 0 + %90 = add i64 %spec.select, %.sroa.speculated231 %91 = icmp sgt i64 %90, -1 br label %112 @@ -17560,7 +17561,7 @@ _ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit209: ; preds = %_ZN5 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #33 %166 = add nsw i64 %.0159313, -4 %167 = icmp sgt i64 %.0159313, 3 - %indvars.iv.next = add i64 %indvars.iv, 4 + %indvars.iv.next = add nuw i64 %indvars.iv, 4 br i1 %167, label %116, label %._crit_edge, !llvm.loop !583 168: ; preds = %._crit_edge305 diff --git a/bench/ceres/optimized/schur_eliminator_2_d_d.ll b/bench/ceres/optimized/schur_eliminator_2_d_d.ll index acafca1eb8c..dd6de956b0e 100644 --- a/bench/ceres/optimized/schur_eliminator_2_d_d.ll +++ b/bench/ceres/optimized/schur_eliminator_2_d_d.ll @@ -1427,7 +1427,7 @@ _ZN5ceres8internal15SchurEliminatorILi2ELin1ELin1EE5ChunkD2Ev.exit: ; preds = %_ br i1 %exitcond.not.i.i.i.i.i.i.i, label %_ZNK4absl12lts_2024011618container_internal10btree_nodeINS1_10map_paramsIiiSt4lessIiESaISt4pairIKiiEELi256ELb0EEEE11lower_boundIiEENS1_12SearchResultImLb0EEERKT_RKNS1_19key_compare_adapterIS5_iE15checked_compareE.exit.i.i.i.i, label %.lr.ph.i.i.i.i.i.i.i, !llvm.loop !114 _ZNK4absl12lts_2024011618container_internal10btree_nodeINS1_10map_paramsIiiSt4lessIiESaISt4pairIKiiEELi256ELb0EEEE11lower_boundIiEENS1_12SearchResultImLb0EEERKT_RKNS1_19key_compare_adapterIS5_iE15checked_compareE.exit.i.i.i.i: ; preds = %160, %.lr.ph.i.i.i.i.i.i.i, %152 - %.0.lcssa.i.i.i.i.i.i.i = phi i64 [ 0, %152 ], [ %155, %160 ], [ %.07.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i ] + %.0.lcssa.i.i.i.i.i.i.i = phi i64 [ 0, %152 ], [ 0, %160 ], [ %.07.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i ] %162 = getelementptr i8, ptr %.sroa.0.0.i.i.i.i, i64 11 %163 = load i8, ptr %162, align 1, !tbaa !113, !noalias !108 %.not.i.i.i.i = icmp eq i8 %163, 0 @@ -1569,7 +1569,7 @@ _ZN4absl12lts_2024011618container_internal14btree_iteratorINS1_10btree_nodeINS1_ _ZZN4absl12lts_2024011618container_internal5btreeINS1_10map_paramsIiiSt4lessIiESaISt4pairIKiiEELi256ELb0EEEE16internal_emplaceIJS8_EEENS1_14btree_iteratorINS1_10btree_nodeISA_EERS8_PS8_EESI_DpOT_ENKUlhE_clEh.exit.i: ; preds = %.lr.ph.i.i.i4.i, %213 %232 = getelementptr i8, ptr %220, i64 10 - store i8 %224, ptr %232, align 1, !tbaa !113, !noalias !108 + store i8 0, ptr %232, align 1, !tbaa !113, !noalias !108 %233 = getelementptr i8, ptr %208, i64 11 %234 = load i8, ptr %233, align 1, !tbaa !113, !noalias !108 %.not57.i = icmp eq i8 %234, 0 @@ -2740,7 +2740,7 @@ _ZN5ceres8internal29MatrixTransposeVectorMultiplyILi2ELin1ELi1EEEvPKdiiS3_Pd.exi br i1 %exitcond.not.i.i.i.i.i.i.i.i, label %_ZNK4absl12lts_2024011618container_internal10btree_nodeINS1_10map_paramsIiiSt4lessIiESaISt4pairIKiiEELi256ELb0EEEE11lower_boundIiEENS1_12SearchResultImLb0EEERKT_RKNS1_19key_compare_adapterIS5_iE15checked_compareE.exit.i.i.i.i.i, label %.lr.ph.i.i.i.i.i.i.i.i, !llvm.loop !114 _ZNK4absl12lts_2024011618container_internal10btree_nodeINS1_10map_paramsIiiSt4lessIiESaISt4pairIKiiEELi256ELb0EEEE11lower_boundIiEENS1_12SearchResultImLb0EEERKT_RKNS1_19key_compare_adapterIS5_iE15checked_compareE.exit.i.i.i.i.i: ; preds = %158, %.lr.ph.i.i.i.i.i.i.i.i, %150 - %.0.lcssa.i.i.i.i.i.i.i.i = phi i64 [ 0, %150 ], [ %.07.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i.i ], [ %153, %158 ] + %.0.lcssa.i.i.i.i.i.i.i.i = phi i64 [ 0, %150 ], [ %.07.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i.i ], [ 0, %158 ] %160 = getelementptr i8, ptr %.sroa.0.0.i.i.i.i.i, i64 11 %161 = load i8, ptr %160, align 1, !tbaa !113 %.not.i.i.i.i.i = icmp eq i8 %161, 0 @@ -14387,10 +14387,11 @@ _ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit209: ; preds = %_ZN5 br i1 %65, label %.lr.ph316, label %._crit_edge317 .lr.ph316: ; preds = %.preheader - %88 = srem i64 %.sroa.speculated231, 4 + %88 = and i64 %.sroa.speculated231, 3 %.not174 = icmp eq i64 %88, 0 - %spec.select = select i1 %.not174, i64 4, i64 %88 - %89 = sub nsw i64 %.sroa.speculated231, %spec.select + %spec.select = select i1 %.not174, i64 4, i64 0 + %spec.select = select i1 %.not174, i64 -4, i64 0 + %89 = add i64 %spec.select, %.sroa.speculated231 %90 = icmp sgt i64 %89, -1 br label %111 @@ -14570,7 +14571,7 @@ _ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit209: ; preds = %_ZN5 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #33 %161 = add nsw i64 %.0159313, -4 %162 = icmp sgt i64 %.0159313, 3 - %indvars.iv.next = add i64 %indvars.iv, 4 + %indvars.iv.next = add nuw i64 %indvars.iv, 4 br i1 %162, label %115, label %._crit_edge, !llvm.loop !585 163: ; preds = %._crit_edge305 diff --git a/bench/clamav/optimized/aspack.ll b/bench/clamav/optimized/aspack.ll index f9bf3f17fbb..82e2b6d3255 100644 --- a/bench/clamav/optimized/aspack.ll +++ b/bench/clamav/optimized/aspack.ll @@ -505,12 +505,13 @@ readstream.exit.i.i: ; preds = %readstream.exit.i.i .sink.split.i.i: ; preds = %235, %234 %.sink.i.i = phi i32 [ %233, %234 ], [ %237, %235 ] + %.ph.i.i = phi i32 [ %233, %234 ], [ -3, %235 ] store i32 %.sink.i.i, ptr %9, align 16, !tbaa !16 br label %238 238: ; preds = %.sink.split.i.i, %230 - %239 = phi i32 [ %110, %230 ], [ %.sink.i.i, %.sink.split.i.i ] - %.078.i.i = phi i32 [ %233, %230 ], [ %.sink.i.i, %.sink.split.i.i ] + %239 = phi i32 [ %110, %230 ], [ %.ph.i.i, %.sink.split.i.i ] + %.078.i.i = phi i32 [ %233, %230 ], [ %.ph.i.i, %.sink.split.i.i ] %.neg.i.i = xor i32 %.078.i.i, -1 %or.cond96.i.i = icmp uge i32 %.078.i.i, %.075.ph.i21.i %240 = sub i32 %90, %.075.ph.i21.i diff --git a/bench/clap-rs/optimized/28kpmq8k0hu4re4f.ll b/bench/clap-rs/optimized/28kpmq8k0hu4re4f.ll index 413ea370072..921bc5b772a 100644 --- a/bench/clap-rs/optimized/28kpmq8k0hu4re4f.ll +++ b/bench/clap-rs/optimized/28kpmq8k0hu4re4f.ll @@ -3011,7 +3011,6 @@ define hidden void @_ZN12clap_builder7builder3arg3Arg18stylize_arg_suffix17h7ff5 br label %.thread .thread: ; preds = %77, %51, %87 - %.pre106.i = phi i32 [ 1114112, %87 ], [ %48, %77 ], [ 1114112, %51 ] %.pre104.i = phi ptr [ null, %87 ], [ %45, %77 ], [ null, %51 ] %.052213 = phi i1 [ false, %87 ], [ %56, %77 ], [ false, %51 ] %78 = icmp eq i8 %3, 2 @@ -3261,11 +3260,9 @@ define hidden void @_ZN12clap_builder7builder3arg3Arg18stylize_arg_suffix17h7ff5 .lr.ph.i: ; preds = %149 %156 = icmp ne ptr %.pre104.i, null - %.not2.i.i = icmp ne i32 %.pre106.i, 1114112 - %.0.i.not99.i = select i1 %156, i1 true, i1 %.not2.i.i %157 = icmp ne i64 %.sroa.0.0.i, 0 %brmerge.not.i = and i1 %.051, %157 - %or.cond.i = select i1 %.0.i.not99.i, i1 true, i1 %brmerge.not.i + %or.cond.i = select i1 %156, i1 true, i1 %brmerge.not.i %158 = getelementptr inbounds nuw i8, ptr %14, i64 8 %.sroa.576.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %8, i64 8 %.sroa.777.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %8, i64 16 @@ -3290,9 +3287,7 @@ define hidden void @_ZN12clap_builder7builder3arg3Arg18stylize_arg_suffix17h7ff5 %164 = phi i64 [ %.pre102.i, %._crit_edge.loopexit.i ], [ 0, %149 ] %165 = icmp ult i64 %164, %.sroa.6.0.i %166 = icmp eq ptr %.pre104.i, null - %.not2.i48.i = icmp eq i32 %.pre106.i, 1114112 - %.0.i49.i = select i1 %166, i1 %.not2.i48.i, i1 false - br i1 %.0.i49.i, label %168, label %167 + br i1 %166, label %168, label %167 167: ; preds = %._crit_edge.i br i1 %165, label %.critedge.i, label %.noexc52.i diff --git a/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll b/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll index 1eea78a19fd..9a8425e5991 100644 --- a/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll +++ b/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll @@ -1502,7 +1502,7 @@ define internal fastcc void @"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$ br i1 %exitcond.not.i.us, label %_ZN4core5slice6memchr12memchr_naive17h481c51c45c886aadE.exit.us, label %.lr.ph.i.us _ZN4core5slice6memchr12memchr_naive17h481c51c45c886aadE.exit.us: ; preds = %.lr.ph.i.us, %29, %25 - %.0.lcssa.i.us = phi i64 [ 0, %25 ], [ %.sroa.7.154.us, %29 ], [ %.05.i.us, %.lr.ph.i.us ] + %.0.lcssa.i.us = phi i64 [ 0, %25 ], [ 0, %29 ], [ %.05.i.us, %.lr.ph.i.us ] %.sroa.0.0.i32.us = phi i64 [ 0, %25 ], [ 0, %29 ], [ 1, %.lr.ph.i.us ] %31 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i32.us, 0 %32 = insertvalue { i64, i64 } %31, i64 %.0.lcssa.i.us, 1 @@ -1559,7 +1559,7 @@ _ZN4core5slice6memchr12memchr_naive17h481c51c45c886aadE.exit.us: ; preds = %.lr. br i1 %exitcond.not.i, label %_ZN4core5slice6memchr12memchr_naive17h481c51c45c886aadE.exit, label %.lr.ph.i _ZN4core5slice6memchr12memchr_naive17h481c51c45c886aadE.exit: ; preds = %.lr.ph.i, %53, %49 - %.0.lcssa.i = phi i64 [ 0, %49 ], [ %.sroa.7.154, %53 ], [ %.05.i, %.lr.ph.i ] + %.0.lcssa.i = phi i64 [ 0, %49 ], [ 0, %53 ], [ %.05.i, %.lr.ph.i ] %.sroa.0.0.i32 = phi i64 [ 0, %49 ], [ 0, %53 ], [ 1, %.lr.ph.i ] %55 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i32, 0 %56 = insertvalue { i64, i64 } %55, i64 %.0.lcssa.i, 1 @@ -5929,7 +5929,7 @@ _ZN12clap_builder6output13help_template12HelpTemplate14will_args_wrap17h3c3e8e7d br i1 %237, label %._crit_edge93, label %378 ._crit_edge93: ; preds = %383, %234, %_ZN12clap_builder7builder10styled_str9StyledStr8push_str17hf3025370b2961e87E.exit48 - %.val.i = phi i8 [ 1, %_ZN12clap_builder7builder10styled_str9StyledStr8push_str17hf3025370b2961e87E.exit48 ], [ %.val.i.pre94.mux, %383 ], [ %.val.i.pre, %234 ] + %.val.i = phi i8 [ 0, %_ZN12clap_builder7builder10styled_str9StyledStr8push_str17hf3025370b2961e87E.exit48 ], [ 0, %383 ], [ %.val.i.pre, %234 ] %238 = getelementptr inbounds nuw i8, ptr %.sroa.01.063, i64 32 %239 = load ptr, ptr %238, align 8, !nonnull !12, !align !109, !noundef !12 call void @llvm.experimental.noalias.scope.decl(metadata !1258) @@ -6483,7 +6483,6 @@ _ZN12clap_builder6output13help_template12HelpTemplate9write_arg17h3ce42201365da9 %.lcssa.i.i8.i.not = xor i1 %.lcssa.i.i8.i, true %.not = xor i1 %227, true %brmerge = select i1 %.lcssa.i.i8.i.not, i1 true, i1 %.not - %.val.i.pre94.mux = select i1 %.lcssa.i.i8.i.not, i8 %.val.i.pre94, i8 0 br i1 %brmerge, label %._crit_edge93, label %389 389: ; preds = %383 diff --git a/bench/diesel-rs/optimized/1dr0ikhoh8prk7sr.ll b/bench/diesel-rs/optimized/1dr0ikhoh8prk7sr.ll index f9c5b73fb75..0bcca6fa834 100644 --- a/bench/diesel-rs/optimized/1dr0ikhoh8prk7sr.ll +++ b/bench/diesel-rs/optimized/1dr0ikhoh8prk7sr.ll @@ -281,7 +281,7 @@ common.resume: ; preds = %47, %8 br i1 %22, label %27, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h9bbe595d087057b5E.exit.i.i.i" "_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h9bbe595d087057b5E.exit.i.i.i": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9rposition17h93f560bfb06eb29aE.exit.thread.i.i.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9rposition17h93f560bfb06eb29aE.exit.i.i.i", %18, %.noexc.i - %23 = phi i64 [ %spec.select.i15.i.i.i, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9rposition17h93f560bfb06eb29aE.exit.thread.i.i.i" ], [ %16, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9rposition17h93f560bfb06eb29aE.exit.i.i.i" ], [ %16, %18 ], [ 0, %.noexc.i ] + %23 = phi i64 [ %spec.select.i15.i.i.i, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9rposition17h93f560bfb06eb29aE.exit.thread.i.i.i" ], [ 0, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9rposition17h93f560bfb06eb29aE.exit.i.i.i" ], [ 0, %18 ], [ 0, %.noexc.i ] %24 = load i64, ptr %5, align 8, !alias.scope !34, !noalias !20, !noundef !7 %25 = lshr i64 %24, 2 %26 = icmp ult i64 %23, %25 @@ -2172,8 +2172,6 @@ define noundef range(i8 0, 20) i8 @"_ZN6diesel5mysql10connection4bind173_$LT$imp unreachable 10: ; preds = %2 - %.lobit = lshr exact i32 %8, 5 - %. = trunc nuw nsw i32 %.lobit to i8 br label %51 11: ; preds = %2 @@ -2289,7 +2287,7 @@ define noundef range(i8 0, 20) i8 @"_ZN6diesel5mysql10connection4bind173_$LT$imp br i1 %.not59, label %80, label %51 51: ; preds = %39, %41, %43, %45, %47, %49, %59, %64, %68, %72, %76, %80, %61, %66, %70, %74, %78, %82, %12, %22, %11, %21, %10, %2, %2, %63, %53, %52, %38, %37, %25, %24, %23, %20, %14, %13 - %.0 = phi i8 [ 16, %63 ], [ 15, %38 ], [ 17, %37 ], [ 3, %52 ], [ 13, %25 ], [ 11, %24 ], [ 12, %23 ], [ 5, %53 ], [ 14, %20 ], [ 9, %14 ], [ 8, %13 ], [ 10, %2 ], [ 10, %2 ], [ %., %10 ], [ %.77, %21 ], [ 2, %11 ], [ 4, %22 ], [ 4, %12 ], [ 15, %82 ], [ 15, %78 ], [ 15, %74 ], [ 15, %70 ], [ 15, %66 ], [ 15, %61 ], [ 18, %80 ], [ 18, %76 ], [ 18, %72 ], [ 18, %68 ], [ 18, %64 ], [ 18, %59 ], [ 19, %49 ], [ 19, %47 ], [ 19, %45 ], [ 19, %43 ], [ 19, %41 ], [ 19, %39 ] + %.0 = phi i8 [ 16, %63 ], [ 15, %38 ], [ 17, %37 ], [ 3, %52 ], [ 13, %25 ], [ 11, %24 ], [ 12, %23 ], [ 5, %53 ], [ 14, %20 ], [ 9, %14 ], [ 8, %13 ], [ 10, %2 ], [ 10, %2 ], [ 0, %10 ], [ %.77, %21 ], [ 2, %11 ], [ 4, %22 ], [ 4, %12 ], [ 15, %82 ], [ 15, %78 ], [ 15, %74 ], [ 15, %70 ], [ 15, %66 ], [ 15, %61 ], [ 18, %80 ], [ 18, %76 ], [ 18, %72 ], [ 18, %68 ], [ 18, %64 ], [ 18, %59 ], [ 19, %49 ], [ 19, %47 ], [ 19, %45 ], [ 19, %43 ], [ 19, %41 ], [ 19, %39 ] ret i8 %.0 52: ; preds = %26, %11 diff --git a/bench/diesel-rs/optimized/24idv9j1r56qvsu.ll b/bench/diesel-rs/optimized/24idv9j1r56qvsu.ll index fb2cc16a856..b263b25b8d3 100644 --- a/bench/diesel-rs/optimized/24idv9j1r56qvsu.ll +++ b/bench/diesel-rs/optimized/24idv9j1r56qvsu.ll @@ -3261,11 +3261,7 @@ define hidden void @_ZN6diesel5mysql10connection33update_transaction_manager_sta %7 = alloca { i32, [7 x i32] }, align 8 %8 = load i64, ptr %1, align 8, !range !35, !noundef !5 %.not = icmp eq i64 %8, -9223372036854775798 - br i1 %.not, label %.thread15, label %9 - -.thread15: ; preds = %6 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) - br label %16 + br i1 %.not, label %.thread12, label %9 9: ; preds = %6 %10 = icmp eq i64 %8, -9223372036854775808 @@ -3275,9 +3271,9 @@ define hidden void @_ZN6diesel5mysql10connection33update_transaction_manager_sta %or.cond = select i1 %10, i1 %13, i1 false br i1 %or.cond, label %24, label %.thread19 -.thread19: ; preds = %9 +.thread19: ; preds = %6, %9 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) - br label %17 + br label %16 14: ; preds = %24 %.pre = load i64, ptr %1, align 8, !range !35 @@ -3286,11 +3282,11 @@ define hidden void @_ZN6diesel5mysql10connection33update_transaction_manager_sta call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) br i1 %15, label %16, label %17 -16: ; preds = %14, %.thread15 +16: ; preds = %14, %.thread12 br label %17 -17: ; preds = %14, %.thread19, %16 - %18 = phi ptr [ null, %16 ], [ %1, %.thread19 ], [ %1, %14 ] +17: ; preds = %14, %16 + %18 = phi ptr [ null, %16 ], [ %1, %14 ] %19 = getelementptr inbounds nuw i8, ptr %7, i64 16 store ptr %4, ptr %19, align 8 %20 = getelementptr inbounds nuw i8, ptr %7, i64 24 diff --git a/bench/egg-rs/optimized/2fp1d0strj8iokyf.ll b/bench/egg-rs/optimized/2fp1d0strj8iokyf.ll index e106bbf2db6..7aeb51ca501 100644 --- a/bench/egg-rs/optimized/2fp1d0strj8iokyf.ll +++ b/bench/egg-rs/optimized/2fp1d0strj8iokyf.ll @@ -573,50 +573,39 @@ define hidden void @"_ZN52_$LT$char$u20$as$u20$core..str..pattern..Pattern$GT$13 6: ; preds = %4 %7 = icmp ult i32 %1, 2048 - br i1 %7, label %10, label %8 + br i1 %7, label %13, label %8 8: ; preds = %6 %9 = icmp ult i32 %1, 65536 - br i1 %9, label %15, label %23 - -10: ; preds = %6 - %11 = lshr i32 %1, 6 - %12 = or disjoint i32 %11, 192 - %13 = and i32 %1, 63 - %14 = or disjoint i32 %13, 128 + %10 = lshr i32 %1, 6 + %11 = and i32 %10, 63 + %12 = or disjoint i32 %11, 128 + br i1 %9, label %18, label %21 + +13:; preds = %6 + %14 = lshr i32 %1, 6 + %15 = or disjoint i32 %14, 192 + %16 = and i32 %1, 63 + %17 = or disjoint i32 %16, 128 br label %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h2a359a226381e8b3E.llvm.6823518425481094615.exit" 15: ; preds = %8 - %16 = lshr i32 %1, 12 - %17 = or disjoint i32 %16, 224 - %18 = lshr i32 %1, 6 - %19 = and i32 %18, 63 + %19 = and i32 %1, 63 %20 = or disjoint i32 %19, 128 - %21 = and i32 %1, 63 - %22 = or disjoint i32 %21, 128 br label %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h2a359a226381e8b3E.llvm.6823518425481094615.exit" 23: ; preds = %8 - %24 = lshr i32 %1, 18 - %25 = and i32 %24, 7 - %26 = or disjoint i32 %25, 240 - %27 = lshr i32 %1, 12 - %28 = and i32 %27, 63 - %29 = or disjoint i32 %28, 128 - %30 = lshr i32 %1, 6 - %31 = and i32 %30, 63 - %32 = or disjoint i32 %31, 128 - %33 = shl i32 %1, 24 - %34 = and i32 %33, 1056964608 - %35 = or disjoint i32 %34, -2147483648 + %22 = shl i32 %1, 24 + %25 = and i32 %22, 1056964608 + %26 = or disjoint i32 %25, -2147483648 br label %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h2a359a226381e8b3E.llvm.6823518425481094615.exit" -"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h2a359a226381e8b3E.llvm.6823518425481094615.exit": ; preds = %4, %23, %15, %10 - %.sroa.13.0 = phi i32 [ 0, %10 ], [ 0, %15 ], [ %35, %23 ], [ 0, %4 ] - %.sroa.11.0 = phi i32 [ 0, %10 ], [ %22, %15 ], [ %32, %23 ], [ 0, %4 ] - %.sroa.8.0 = phi i32 [ %14, %10 ], [ %20, %15 ], [ %29, %23 ], [ 0, %4 ] - %.sroa.0.0 = phi i32 [ %12, %10 ], [ %17, %15 ], [ %26, %23 ], [ %1, %4 ] - %36 = phi i8 [ 2, %10 ], [ 3, %15 ], [ 4, %23 ], [ 1, %4 ] +"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h2a359a226381e8b3E.llvm.6823518425481094615.exit": ; preds = %4, %23, %15, %13 + %.sroa.13.0 = phi i32 [ 0, %13 ], [ 0, %15 ], [ %24, %23 ], [ 0, %4 ] + %.sroa.11.0 = phi i32 [ 0, %13 ], [ %20, %15 ], [ %12, %23 ], [ 0, %4 ] + %.sroa.8.0 = phi i32 [ %17, %13 ], [ %12, %15 ], [ 128, %23 ], [ 0, %4 ] + %.sroa.0.0 = phi i32 [ %15, %13 ], [ 224, %15 ], [ 240, %23 ], [ %1, %4 ] + %36 = phi i8 [ 2, %13 ], [ 3, %15 ], [ 4, %23 ], [ 1, %4 ] %.sroa.11.0.insert.shift = shl nuw nsw i32 %.sroa.11.0, 16 %.sroa.11.0.insert.insert = or i32 %.sroa.13.0, %.sroa.11.0.insert.shift %.sroa.8.0.insert.shift = shl nuw nsw i32 %.sroa.8.0, 8 diff --git a/bench/entt/optimized/version.ll b/bench/entt/optimized/version.ll index 795239c882c..ffb7376fb3c 100644 --- a/bench/entt/optimized/version.ll +++ b/bench/entt/optimized/version.ll @@ -3404,7 +3404,6 @@ define linkonce_odr dso_local void @_ZNSt8__detail8_ScannerIcE18_M_eat_escape_ec br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %8, %17, %22 - %.0.i = phi i8 [ %16, %8 ], [ %21, %22 ], [ 0, %17 ] %23 = getelementptr inbounds nuw i8, ptr %0, i64 152 %24 = load ptr, ptr %23, align 8, !tbaa !186 %25 = load i8, ptr %24, align 1, !tbaa !180 @@ -3414,7 +3413,7 @@ _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %8, %17, %22 .lr.ph.i: ; preds = %_ZNKSt5ctypeIcE6narrowEcc.exit, %28 %26 = phi i8 [ %30, %28 ], [ %25, %_ZNKSt5ctypeIcE6narrowEcc.exit ] %.010.i = phi ptr [ %29, %28 ], [ %24, %_ZNKSt5ctypeIcE6narrowEcc.exit ] - %27 = icmp eq i8 %26, %.0.i + %27 = icmp eq i8 %26, %16 br i1 %27, label %31, label %28 28: ; preds = %.lr.ph.i @@ -3721,8 +3720,7 @@ define linkonce_odr dso_local void @_ZNSt8__detail8_ScannerIcE19_M_eat_escape_po br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %8, %18, %23 - %.0.i = phi i8 [ %17, %8 ], [ %22, %23 ], [ 0, %18 ] - %24 = sext i8 %.0.i to i32 + %24 = sext i8 %17 to i32 %25 = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %11, i32 noundef %24) #27 %.not = icmp eq ptr %25, null br i1 %.not, label %28, label %26 @@ -3827,7 +3825,6 @@ define linkonce_odr dso_local void @_ZNSt8__detail8_ScannerIcE17_M_eat_escape_aw br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %1, %12, %17 - %.0.i = phi i8 [ %11, %1 ], [ %16, %17 ], [ 0, %12 ] %18 = getelementptr inbounds nuw i8, ptr %0, i64 152 %19 = load ptr, ptr %18, align 8, !tbaa !186 %20 = load i8, ptr %19, align 1, !tbaa !180 @@ -3837,7 +3834,7 @@ _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %1, %12, %17 .lr.ph.i: ; preds = %_ZNKSt5ctypeIcE6narrowEcc.exit, %23 %21 = phi i8 [ %25, %23 ], [ %20, %_ZNKSt5ctypeIcE6narrowEcc.exit ] %.010.i = phi ptr [ %24, %23 ], [ %19, %_ZNKSt5ctypeIcE6narrowEcc.exit ] - %22 = icmp eq i8 %21, %.0.i + %22 = icmp eq i8 %21, %11 br i1 %22, label %26, label %23 23: ; preds = %.lr.ph.i @@ -3981,7 +3978,7 @@ define linkonce_odr dso_local void @_ZNSt8__detail8_ScannerIcE14_M_scan_normalEv br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %1, %14, %19 - %.0.i = phi i8 [ %13, %1 ], [ %18, %19 ], [ 32, %14 ] + %.0.i = phi i8 [ %13, %1 ], [ 32, %19 ], [ 32, %14 ] %20 = sext i8 %.0.i to i32 %21 = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %7, i32 noundef %20) #27 %22 = icmp eq ptr %21, null @@ -4235,7 +4232,6 @@ _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %1, %14, %19 br label %_ZNKSt5ctypeIcE6narrowEcc.exit40 _ZNKSt5ctypeIcE6narrowEcc.exit40: ; preds = %131, %137, %142 - %.0.i38 = phi i8 [ %136, %131 ], [ %141, %142 ], [ 0, %137 ] %143 = load i8, ptr %0, align 8, !tbaa !177 %.not3144 = icmp eq i8 %143, 0 br i1 %.not3144, label %.critedge, label %.lr.ph @@ -4243,7 +4239,7 @@ _ZNKSt5ctypeIcE6narrowEcc.exit40: ; preds = %131, %137, %142 .lr.ph: ; preds = %_ZNKSt5ctypeIcE6narrowEcc.exit40, %150 %144 = phi i8 [ %152, %150 ], [ %143, %_ZNKSt5ctypeIcE6narrowEcc.exit40 ] %.02145 = phi ptr [ %151, %150 ], [ %0, %_ZNKSt5ctypeIcE6narrowEcc.exit40 ] - %145 = icmp eq i8 %144, %.0.i38 + %145 = icmp eq i8 %144, %136 br i1 %145, label %146, label %150 146: ; preds = %.lr.ph @@ -12386,7 +12382,6 @@ _ZNKSt5ctypeIcE7tolowerEc.exit: ; preds = %10 br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %24, %.noexc, %_ZNKSt5ctypeIcE7tolowerEc.exit - %.0.i = phi i8 [ %18, %_ZNKSt5ctypeIcE7tolowerEc.exit ], [ %23, %24 ], [ 0, %.noexc ] %25 = load i64, ptr %8, align 8, !tbaa !39 %26 = add i64 %25, 1 %27 = load ptr, ptr %5, align 8, !tbaa !33 @@ -12415,7 +12410,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; pr 35: ; preds = %.noexc29, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i %36 = phi ptr [ %.pre.i.i, %.noexc29 ], [ %27, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i ] %37 = getelementptr inbounds nuw i8, ptr %36, i64 %25 - store i8 %.0.i, ptr %37, align 1, !tbaa !40 + store i8 %18, ptr %37, align 1, !tbaa !40 store i64 %26, ptr %8, align 8, !tbaa !39 %38 = load ptr, ptr %5, align 8, !tbaa !33 %39 = getelementptr inbounds nuw i8, ptr %38, i64 %26 @@ -21373,7 +21368,6 @@ define linkonce_odr dso_local void @_ZNKSt7__cxx1112regex_traitsIcE18lookup_coll br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %20, %.noexc, %10 - %.0.i = phi i8 [ %14, %10 ], [ %19, %20 ], [ 0, %.noexc ] %21 = load i64, ptr %8, align 8, !tbaa !39 %22 = add i64 %21, 1 %23 = load ptr, ptr %5, align 8, !tbaa !33 @@ -21402,7 +21396,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; pr 31: ; preds = %.noexc29, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i %32 = phi ptr [ %.pre.i.i, %.noexc29 ], [ %23, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i ] %33 = getelementptr inbounds nuw i8, ptr %32, i64 %21 - store i8 %.0.i, ptr %33, align 1, !tbaa !40 + store i8 %14, ptr %33, align 1, !tbaa !40 store i64 %22, ptr %8, align 8, !tbaa !39 %34 = load ptr, ptr %5, align 8, !tbaa !33 %35 = getelementptr inbounds nuw i8, ptr %34, i64 %22 diff --git a/bench/flac/optimized/encode.ll b/bench/flac/optimized/encode.ll index 56f8bf3396f..416f4574e9d 100644 --- a/bench/flac/optimized/encode.ll +++ b/bench/flac/optimized/encode.ll @@ -5559,8 +5559,8 @@ static_metadata_append.exit583: ; preds = %606 br label %792 .thread54.i: ; preds = %788, %784, %782 - %.335.ph.i = phi i32 [ %.03258.i, %788 ], [ %.03258.i, %782 ], [ 1, %784 ] - %.330.ph.i = phi i32 [ 1, %788 ], [ %.02759.i, %782 ], [ %.02759.i, %784 ] + %.335.ph.i = phi i32 [ 0, %788 ], [ 0, %782 ], [ 1, %784 ] + %.330.ph.i = phi i32 [ 1, %788 ], [ 0, %782 ], [ 0, %784 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #20 br label %.thread.i591 @@ -7064,7 +7064,7 @@ define internal range(i32 0, 3) i32 @flac_decoder_read_callback(ptr readnone cap %5 = getelementptr inbounds nuw i8, ptr %3, i64 8400 %6 = load i32, ptr %5, align 8, !tbaa !175 %.not = icmp eq i32 %6, 0 - br i1 %.not, label %7, label %33 + br i1 %.not, label %7, label %30 7: ; preds = %4 %8 = getelementptr inbounds nuw i8, ptr %3, i64 184 @@ -7090,31 +7090,28 @@ define internal range(i32 0, 3) i32 @flac_decoder_read_callback(ptr readnone cap br label %21 21: ; preds = %10, %7 - %.028 = phi i64 [ %., %10 ], [ 0, %7 ] %.027 = phi ptr [ %15, %10 ], [ %1, %7 ] %22 = load i64, ptr %2, align 8, !tbaa !35 - %23 = icmp ugt i64 %22, %.028 - br i1 %23, label %fread.inline.exit, label %33 + %23 = icmp eq i64 %22, 0 + br i1 %23, label %30, label %fread.inline.exit fread.inline.exit: ; preds = %21 %24 = getelementptr inbounds nuw i8, ptr %3, i64 8416 %25 = load ptr, ptr %24, align 8, !tbaa !31 - %26 = sub nuw i64 %22, %.028 - %27 = tail call i64 @fread(ptr noundef %.027, i64 noundef 1, i64 noundef %26, ptr noundef %25) - %28 = add i64 %27, %.028 - store i64 %28, ptr %2, align 8, !tbaa !35 - %29 = load ptr, ptr %24, align 8, !tbaa !31 - %30 = tail call i32 @ferror(ptr noundef %29) #20 - %.not34 = icmp eq i32 %30, 0 - br i1 %.not34, label %31, label %33 - -31: ; preds = %fread.inline.exit - %32 = icmp eq i64 %28, 0 - %.35 = zext i1 %32 to i32 - br label %33 - -33: ; preds = %21, %31, %fread.inline.exit, %4 - %.0 = phi i32 [ 2, %4 ], [ 2, %fread.inline.exit ], [ %.35, %31 ], [ 0, %21 ] + %25 = tail call i64 @fread(ptr noundef %.027, i64 noundef 1, i64 noundef %22, ptr noundef %24) + store i64 %25, ptr %2, align 8, !tbaa !35 + %26 = load ptr, ptr %23, align 8, !tbaa !31 + %27 = tail call i32 @ferror(ptr noundef %26) #20 + %.not34 = icmp eq i32 %27, 0 + br i1 %.not34, label %28, label %30 + +28:; preds = %fread.inline.exit + %29 = icmp eq i64 %25, 0 + %.35 = zext i1 %29 to i32 + br label %30 + +30:; preds = %21, %28, %fread.inline.exit, %4 + %.0 = phi i32 [ 2, %4 ], [ 2, %fread.inline.exit ], [ %.35, %28 ], [ 0, %21 ] ret i32 %.0 } diff --git a/bench/flac/optimized/replaygain_synthesis.ll b/bench/flac/optimized/replaygain_synthesis.ll index 1634f189fea..b7bdc66fb75 100644 --- a/bench/flac/optimized/replaygain_synthesis.ll +++ b/bench/flac/optimized/replaygain_synthesis.ll @@ -59,7 +59,7 @@ define dso_local void @FLAC__replaygain_synthesis__init_dither_context(ptr nound } ; Function Attrs: nofree nounwind sspstrong memory(readwrite, inaccessiblemem: none) uwtable -define dso_local range(i64 0, 4294967296) i64 @FLAC__replaygain_synthesis__apply_gain(ptr noundef writeonly captures(none) %0, i32 noundef %1, i32 noundef %2, ptr noundef readonly captures(none) %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, double noundef %8, i32 noundef %9, i32 noundef %10, ptr noundef captures(none) %11) local_unnamed_addr #1 { +define dso_local noundef range(i64 0, 4294967296) i64 @FLAC__replaygain_synthesis__apply_gain(ptr noundef writeonly captures(none) %0, i32 noundef %1, i32 noundef %2, ptr noundef readonly captures(none) %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, double noundef %8, i32 noundef %9, i32 noundef %10, ptr noundef captures(none) %11) local_unnamed_addr #1 { %13 = zext i32 %7 to i64 %14 = getelementptr inbounds nuw [33 x i64], ptr @FLAC__replaygain_synthesis__apply_gain.hard_clip_factors_, i64 0, i64 %13 %15 = load i64, ptr %14, align 8, !tbaa !21 @@ -484,13 +484,10 @@ dither_output_.exit.us: ; preds = %298, %281, %123 br i1 %exitcond103.not, label %._crit_edge98, label %.lr.ph.us, !llvm.loop !28 ._crit_edge98: ; preds = %._crit_edge.us, %12, %.lr.ph97 - %.pre-phi = phi i32 [ %28, %.lr.ph97 ], [ 0, %12 ], [ %28, %._crit_edge.us ] %334 = add i32 %22, %4 %335 = and i32 %334, 31 store i32 %335, ptr %21, align 4, !tbaa !20 - %336 = mul i32 %.pre-phi, %4 - %337 = zext i32 %336 to i64 - ret i64 %337 + ret i64 0 } ; Function Attrs: mustprogress nofree nounwind willreturn memory(errnomem: write) diff --git a/bench/flatbuffers/optimized/idl_gen_cpp.ll b/bench/flatbuffers/optimized/idl_gen_cpp.ll index d9e293950d5..cafffdbf773 100644 --- a/bench/flatbuffers/optimized/idl_gen_cpp.ll +++ b/bench/flatbuffers/optimized/idl_gen_cpp.ll @@ -19579,7 +19579,7 @@ _ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__c br i1 %exitcond.not, label %.critedge, label %34, !llvm.loop !439 .critedge: ; preds = %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread, %34, %30 - %.035.lcssa = phi i64 [ 0, %30 ], [ %.03591, %34 ], [ %invariant.umin, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread ], [ %.03591, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit ] + %.035.lcssa = phi i64 [ 0, %30 ], [ %.03591, %34 ], [ 0, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread ], [ %.03591, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit ] %48 = icmp ugt i64 %21, %.035.lcssa br i1 %48, label %.lr.ph96, label %._crit_edge @@ -55664,26 +55664,24 @@ define linkonce_odr dso_local void @_ZNSt17_Temporary_bufferIN9__gnu_cxx17__norm br label %.lr.ph.i .lr.ph.i: ; preds = %select.unfold.i, %.lr.ph.preheader.i - %.010.i = phi i64 [ %11, %select.unfold.i ], [ %7, %.lr.ph.preheader.i ] + %.010.i = phi i64 [ 1, %select.unfold.i ], [ %7, %.lr.ph.preheader.i ] %8 = shl nuw nsw i64 %.010.i, 6 %9 = tail call noalias noundef ptr @_ZnwmRKSt9nothrow_t(i64 noundef %8, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow) #32 %.not.i = icmp eq ptr %9, null br i1 %.not.i, label %select.unfold.i, label %12 select.unfold.i: ; preds = %.lr.ph.i - %10 = add nuw nsw i64 %.010.i, 1 - %11 = lshr i64 %10, 1 - %.not14.i = icmp samesign ult i64 %.010.i, 2 - br i1 %.not14.i, label %_ZSt20get_temporary_bufferIN11flatbuffers12IncludedFileEESt4pairIPT_lEl.exit.thread, label %.lr.ph.i, !llvm.loop !813 + %.not15.i = icmp eq i64 %.010.i, 1 + br i1 %.not15.i, label %_ZSt20get_temporary_bufferIN11flatbuffers12IncludedFileEESt4pairIPT_lEl.exit.thread, label %.lr.ph.i, !llvm.loop !813 12: ; preds = %.lr.ph.i - %13 = getelementptr inbounds nuw %"struct.flatbuffers::IncludedFile", ptr %9, i64 %.010.i + %13 = getelementptr inbounds nuw i8, ptr %9, i64 64 invoke void @_ZNSt38__uninitialized_construct_buf_dispatchILb0EE5__ucrIPN11flatbuffers12IncludedFileEN9__gnu_cxx17__normal_iteratorIS4_St6vectorIS3_SaIS3_EEEEEEvT_SB_T0_(ptr noundef nonnull %9, ptr noundef nonnull %13, ptr %1) to label %_ZSt29__uninitialized_construct_bufIPN11flatbuffers12IncludedFileEN9__gnu_cxx17__normal_iteratorIS2_St6vectorIS1_SaIS1_EEEEEvT_S9_T0_.exit unwind label %14 _ZSt29__uninitialized_construct_bufIPN11flatbuffers12IncludedFileEN9__gnu_cxx17__normal_iteratorIS2_St6vectorIS1_SaIS1_EEEEEvT_S9_T0_.exit: ; preds = %12 store ptr %9, ptr %5, align 8, !tbaa !809 - store i64 %.010.i, ptr %4, align 8, !tbaa !811 + store i64 1, ptr %4, align 8, !tbaa !811 br label %_ZSt20get_temporary_bufferIN11flatbuffers12IncludedFileEESt4pairIPT_lEl.exit.thread 14: ; preds = %12 @@ -55691,7 +55689,7 @@ _ZSt29__uninitialized_construct_bufIPN11flatbuffers12IncludedFileEN9__gnu_cxx17_ catch ptr null %16 = extractvalue { ptr, i32 } %15, 0 %17 = tail call ptr @__cxa_begin_catch(ptr %16) #28 - tail call void @_ZdlPvm(ptr noundef nonnull %9, i64 noundef %8) #28 + tail call void @_ZdlPvm(ptr noundef nonnull %9, i64 noundef 64) #28 invoke void @__cxa_rethrow() #30 to label %24 unwind label %18 diff --git a/bench/folly/optimized/DistributedMutex.ll b/bench/folly/optimized/DistributedMutex.ll index 2fde6d5de59..138c6608e0d 100644 --- a/bench/folly/optimized/DistributedMutex.ll +++ b/bench/folly/optimized/DistributedMutex.ll @@ -410,11 +410,16 @@ _ZNSt11this_thread9sleep_forIlSt5ratioILl1ELl1000000000EEEEvRKNSt6chrono8duratio %61 = sub i64 %60, %6 br label %.split, !llvm.loop !41 -.split36.us: ; preds = %switch.early.test.us, %switch.early.test.us, %switch.early.test.us, %.thread.i.us, %_ZN5folly6detail17distributed_mutex7publishINS1_6WaiterISt6atomicEEEEmmmmmRbRT_j.exit, %switch.early.test, %switch.early.test, %switch.early.test, %.split.us - %.us-phi = phi i64 [ 3, %.split.us ], [ 3, %_ZN5folly6detail17distributed_mutex7publishINS1_6WaiterISt6atomicEEEEmmmmmRbRT_j.exit ], [ %47, %switch.early.test ], [ %47, %switch.early.test ], [ %47, %switch.early.test ], [ %13, %switch.early.test.us ], [ %13, %switch.early.test.us ], [ %13, %switch.early.test.us ], [ 3, %.thread.i.us ] - %.us-phi37 = phi i1 [ false, %.split.us ], [ %.not51.not.not, %switch.early.test ], [ %.not51.not.not, %switch.early.test ], [ %.not51.not.not, %switch.early.test ], [ %.not51.not.not, %_ZN5folly6detail17distributed_mutex7publishINS1_6WaiterISt6atomicEEEEmmmmmRbRT_j.exit ], [ true, %switch.early.test.us ], [ true, %switch.early.test.us ], [ true, %switch.early.test.us ], [ false, %.thread.i.us ] +.split36.us: ; preds = %.thread.i.us, %switch.early.test.us, %switch.early.test.us, %switch.early.test.us + %.us-phi = phi i64 [ 3, %.thread.i.us ], [ %13, %switch.early.test.us ], [ %13, %switch.early.test.us ], [ %13, %switch.early.test.us ] + %.us-phi37 = phi i1 [ false, %.thread.i.us ], [ true, %switch.early.test.us ], [ true, %switch.early.test.us ], [ true, %switch.early.test.us ] %62 = trunc nuw nsw i64 %.us-phi to i32 - store i32 %62, ptr %1, align 4, !tbaa !30 + br label %.split36.us + +.split36.us: ; preds = %_ZN5folly6detail17distributed_mutex7publishINS1_6WaiterISt6atomicEEEEmmmmmRbRT_j.exit, %switch.early.test, %switch.early.test, %switch.early.test, %.split36.us.loopexit54, %.split.us + %.us-phi = phi i32 [ 3, %.split.us ], [ %62, %.split36.us.loopexit54 ], [ 3, %switch.early.test ], [ 3, %switch.early.test ], [ 3, %switch.early.test ], [ 3, %_ZN5folly6detail17distributed_mutex7publishINS1_6WaiterISt6atomicEEEEmmmmmRbRT_j.exit ] + %.us-phi37 = phi i1 [ false, %.split.us ], [ %.us-phi37.ph55, %.split36.us.loopexit54 ], [ %.not51.not.not, %switch.early.test ], [ %.not51.not.not, %switch.early.test ], [ %.not51.not.not, %switch.early.test ], [ %.not51.not.not, %_ZN5folly6detail17distributed_mutex7publishINS1_6WaiterISt6atomicEEEEmmmmmRbRT_j.exit ] + store i32 %.us-phi, ptr %1, align 4, !tbaa !30 ret i1 %.us-phi37 } diff --git a/bench/folly/optimized/ElfCache.ll b/bench/folly/optimized/ElfCache.ll index 4c5d82cac9e..8417a2a07f1 100644 --- a/bench/folly/optimized/ElfCache.ll +++ b/bench/folly/optimized/ElfCache.ll @@ -1208,7 +1208,7 @@ _ZSt4copyIPKcN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcN5folly19reentrant_allo br label %_ZSt4copyIPKcN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcN5folly19reentrant_allocatorIcEEEEEET0_T_SC_SB_.exit64 _ZSt7advanceIPKcmEvRT_T0_.exit: ; preds = %17 - %34 = getelementptr inbounds i8, ptr %2, i64 %19 + %34 = getelementptr inbounds nuw i8, ptr %2, i64 1 %.not10.i = icmp eq ptr %34, %3 br i1 %.not10.i, label %_ZSt22__uninitialized_copy_aIPKcPcN5folly19reentrant_allocatorIcEEET0_T_S7_S6_RT1_.exit, label %.lr.ph.i @@ -1252,11 +1252,8 @@ _ZSt22__uninitialized_move_aIPcS0_N5folly19reentrant_allocatorIcEEET0_T_S5_S4_RT %44 = phi ptr [ %.pre101, %_ZSt22__uninitialized_move_aIPcS0_N5folly19reentrant_allocatorIcEEET0_T_S5_S4_RT1_.exit62.loopexit ], [ %40, %_ZSt22__uninitialized_copy_aIPKcPcN5folly19reentrant_allocatorIcEEET0_T_S7_S6_RT1_.exit ] %45 = getelementptr inbounds nuw i8, ptr %44, i64 %19 store ptr %45, ptr %12, align 8, !tbaa !26 - %.not.i.i.i.i.i63 = icmp eq ptr %13, %1 - br i1 %.not.i.i.i.i.i63, label %_ZSt4copyIPKcN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcN5folly19reentrant_allocatorIcEEEEEET0_T_SC_SB_.exit64, label %46 - -46: ; preds = %_ZSt22__uninitialized_move_aIPcS0_N5folly19reentrant_allocatorIcEEET0_T_S5_S4_RT1_.exit62 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr align 1 %2, i64 %19, i1 false) + %46 = load i8, ptr %2, align 1 + store i8 %46, ptr %1, align 1 br label %_ZSt4copyIPKcN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcN5folly19reentrant_allocatorIcEEEEEET0_T_SC_SB_.exit64 47: ; preds = %5 @@ -1346,7 +1343,7 @@ _ZNSt12_Vector_baseIcN5folly19reentrant_allocatorIcEEE13_M_deallocateEPcm.exit: store ptr %74, ptr %10, align 8, !tbaa !106 br label %_ZSt4copyIPKcN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcN5folly19reentrant_allocatorIcEEEEEET0_T_SC_SB_.exit64 -_ZSt4copyIPKcN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcN5folly19reentrant_allocatorIcEEEEEET0_T_SC_SB_.exit64: ; preds = %46, %_ZSt22__uninitialized_move_aIPcS0_N5folly19reentrant_allocatorIcEEET0_T_S5_S4_RT1_.exit62, %_ZNSt12_Vector_baseIcN5folly19reentrant_allocatorIcEEE13_M_deallocateEPcm.exit, %_ZSt4copyIPKcN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcN5folly19reentrant_allocatorIcEEEEEET0_T_SC_SB_.exit, %4 +_ZSt4copyIPKcN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcN5folly19reentrant_allocatorIcEEEEEET0_T_SC_SB_.exit64: ; preds = %_ZSt22__uninitialized_move_aIPcS0_N5folly19reentrant_allocatorIcEEET0_T_S5_S4_RT1_.exit62, %_ZNSt12_Vector_baseIcN5folly19reentrant_allocatorIcEEE13_M_deallocateEPcm.exit, %_ZSt4copyIPKcN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcN5folly19reentrant_allocatorIcEEEEEET0_T_SC_SB_.exit, %4 ret void } diff --git a/bench/folly/optimized/Format.ll b/bench/folly/optimized/Format.ll index b42064786ee..b4fd8a57417 100644 --- a/bench/folly/optimized/Format.ll +++ b/bench/folly/optimized/Format.ll @@ -1834,7 +1834,7 @@ _ZN5folly10canNallocxEv.exit.i: ; preds = %12, %10, %7 br label %_ZN5folly14goodMallocSizeEm.exit _ZN5folly14goodMallocSizeEm.exit: ; preds = %3, %_ZN5folly10canNallocxEv.exit.i, %18 - %.0.i = phi i64 [ %20, %18 ], [ 0, %3 ], [ %5, %_ZN5folly10canNallocxEv.exit.i ] + %.0.i = phi i64 [ %20, %18 ], [ 0, %3 ], [ 0, %_ZN5folly10canNallocxEv.exit.i ] %21 = call noalias ptr @malloc(i64 noundef %.0.i) #34 %.not.i9 = icmp eq ptr %21, null br i1 %.not.i9, label %22, label %_ZN5folly13checkedMallocEm.exit @@ -2268,7 +2268,7 @@ _ZN5folly10canNallocxEv.exit.i: ; preds = %25, %23, %20 br label %_ZN5folly14goodMallocSizeEm.exit _ZN5folly14goodMallocSizeEm.exit: ; preds = %18, %_ZN5folly10canNallocxEv.exit.i, %31 - %.0.i10 = phi i64 [ %33, %31 ], [ 0, %18 ], [ %14, %_ZN5folly10canNallocxEv.exit.i ] + %.0.i10 = phi i64 [ %33, %31 ], [ 0, %18 ], [ 0, %_ZN5folly10canNallocxEv.exit.i ] %34 = call noalias ptr @malloc(i64 noundef %.0.i10) #34 %.not.i11 = icmp eq ptr %34, null br i1 %.not.i11, label %35, label %_ZN5folly13checkedMallocEm.exit @@ -3089,9 +3089,9 @@ define void @_ZN5folly6detail29insertThousandsGroupingUnsafeEPcPS1_(ptr noundef br label %16 16: ; preds = %27, %2 - %.02145 = phi i32 [ %13, %2 ], [ %28, %27 ] + %.02145 = phi i32 [ %13, %2 ], [ -2, %27 ] %.02443 = phi i32 [ %8, %2 ], [ %19, %27 ] - %.03842 = phi i32 [ %7, %2 ], [ %31, %27 ] + %.03842 = phi i32 [ %7, %2 ], [ %30, %27 ] %.sroa.speculated29 = tail call i32 @llvm.umin.i32(i32 %.03842, i32 3) %.sroa.speculated = tail call i32 @llvm.umax.i32(i32 %.sroa.speculated29, i32 1) br label %18 @@ -3117,11 +3117,10 @@ define void @_ZN5folly6detail29insertThousandsGroupingUnsafeEPcPS1_(ptr noundef br i1 %exitcond.not, label %17, label %18, !llvm.loop !149 27: ; preds = %17 - %28 = add i32 %.140, -2 - %29 = zext i32 %23 to i64 - %30 = getelementptr inbounds nuw i8, ptr %0, i64 %29 - store i8 44, ptr %30, align 1, !tbaa !47 - %31 = sub i32 %.03842, %.sroa.speculated + %28 = zext i32 %23 to i64 + %29 = getelementptr inbounds nuw i8, ptr %0, i64 %28 + store i8 44, ptr %29, align 1, !tbaa !47 + %30 = sub i32 %.03842, %.sroa.speculated br label %16, !llvm.loop !150 32: ; preds = %17 diff --git a/bench/freetype/optimized/ftcache.ll b/bench/freetype/optimized/ftcache.ll index 39cef48c970..dda44cb2730 100644 --- a/bench/freetype/optimized/ftcache.ll +++ b/bench/freetype/optimized/ftcache.ll @@ -5312,23 +5312,24 @@ FTC_Manager_LookupFace.exit.thread.i: ; preds = %.loopexit.i.i, %3 49: ; preds = %48 %50 = call i32 @FT_Done_Size(ptr noundef %.pre.i) #12 - br label %ftc_scaler_lookup_size.exit.thread + br label %51 -ftc_scaler_lookup_size.exit.thread: ; preds = %23, %49, %FTC_Manager_LookupFace.exit.thread.i - %.0.i.ph = phi i32 [ %.023.i.ph.i, %FTC_Manager_LookupFace.exit.thread.i ], [ %.1.i, %49 ], [ %27, %23 ] +ftc_scaler_lookup_size.exit.thread: ; preds = %FTC_Manager_LookupFace.exit.thread.i, %23 + %.0.i.ph = phi i32 [ %27, %23 ], [ %.023.i.ph.i, %FTC_Manager_LookupFace.exit.thread.i ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #12 br label %54 -51: ; preds = %48 +51: ; preds = %49, %48 + %.ph = phi ptr [ %.pre.i, %48 ], [ null, %49 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #12 %52 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %.pre.i, ptr %52, align 8, !tbaa !163 + store ptr %.ph, ptr %52, align 8, !tbaa !163 %53 = getelementptr inbounds nuw i8, ptr %0, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 8 dereferenceable(32) %1, i64 32, i1 false), !tbaa.struct !107 br label %54 54: ; preds = %ftc_scaler_lookup_size.exit.thread, %51 - %.0.i11 = phi i32 [ %.0.i.ph, %ftc_scaler_lookup_size.exit.thread ], [ 0, %51 ] + %.0.i11 = phi i32 [ 0, %51 ], [ %.0.i.ph, %ftc_scaler_lookup_size.exit.thread ] ret i32 %.0.i11 } diff --git a/bench/freetype/optimized/psaux.ll b/bench/freetype/optimized/psaux.ll index 839d93ad73e..a45f96e23ef 100644 --- a/bench/freetype/optimized/psaux.ll +++ b/bench/freetype/optimized/psaux.ll @@ -7938,7 +7938,7 @@ define internal fastcc i64 @PS_Conv_ToInt(ptr noundef captures(none) %0, ptr nou 36: ; preds = %33, %29, %27 %.252.i = phi i8 [ %.05077.i, %33 ], [ 1, %29 ], [ 1, %27 ] - %.2.i = phi i64 [ %35, %33 ], [ 214748364, %29 ], [ %.04878.i, %27 ] + %.2.i = phi i64 [ %35, %33 ], [ 214748364, %29 ], [ 214748364, %27 ] %37 = getelementptr inbounds nuw i8, ptr %.179.i, i64 1 %exitcond.not.i = icmp eq ptr %37, %1 br i1 %exitcond.not.i, label %.thread.loopexit.i, label %.lr.ph.i, !llvm.loop !495 @@ -12993,7 +12993,6 @@ cf2_stack_setReal.exit1497: ; preds = %1281, %1283, %1285, br i1 %or.cond81, label %1508, label %cf2_arrstack_setCount.exit.thread 1508: ; preds = %1505 - %1509 = call i32 @llvm.umin.i32(i32 %1139, i32 3) %.not11922116 = icmp eq i32 %1139, 0 br i1 %.not11922116, label %.backedge.backedge, label %.lr.ph2119.preheader @@ -13001,13 +13000,14 @@ cf2_stack_setReal.exit1497: ; preds = %1281, %1283, %1285, %.01034.be = phi i32 [ %.01034, %._crit_edge ], [ %.01034, %._crit_edge2063 ], [ %.01034, %._crit_edge2073 ], [ %.01034, %._crit_edge2092 ], [ %.11035, %cf2_hintmask_read.exit ], [ %715, %cf2_arrstack_getPointer.exit1437 ], [ %711, %cf2_initGlobalRegionBuffer.exit ], [ %.01034, %613 ], [ %.01034, %._crit_edge2140 ], [ %.01034, %._crit_edge2150 ], [ %.01034, %cf2_stack_popInt.exit1319.thread ], [ %.01034, %210 ], [ %.01034, %2705 ], [ %.01034, %2707 ], [ %.01034, %2709 ], [ %.01034, %2710 ], [ %.01034, %2873 ], [ %.01034, %2872 ], [ %.01034, %2870 ], [ %.01034, %2868 ], [ %.01034, %2857 ], [ %.01034, %2856 ], [ %.01034, %2854 ], [ %.01034, %2852 ], [ %.01034, %2787 ], [ %.01034, %2786 ], [ %.01034, %2784 ], [ %.01034, %2782 ], [ %.01034, %2759 ], [ %.01034, %2758 ], [ %.01034, %2756 ], [ %.01034, %2754 ], [ %.01034, %2729 ], [ %.01034, %2728 ], [ %.01034, %2726 ], [ %.01034, %2724 ], [ %.01034, %1765 ], [ %.01034, %1542 ], [ %.01034, %1518 ], [ %.01034, %733 ], [ %.01034, %732 ], [ %.01034, %730 ], [ %.01034, %1136 ], [ %.01034, %1515 ], [ %.01034, %1548 ], [ %.01034, %1544 ], [ %.01034, %1551 ], [ %.01034, %1733 ], [ %.01034, %796 ], [ %.01034, %798 ], [ %.01034, %800 ], [ %.01034, %801 ], [ %.01034, %818 ], [ %.01034, %820 ], [ %.01034, %822 ], [ %.01034, %823 ], [ %.01034, %839 ], [ %.01034, %841 ], [ %.01034, %843 ], [ %.01034, %844 ], [ %.01034, %1000 ], [ %.01034, %1002 ], [ %.01034, %1004 ], [ %.01034, %1005 ], [ %.01034, %1010 ], [ %.01034, %1012 ], [ %.01034, %1014 ], [ %.01034, %1015 ], [ %.01034, %1029 ], [ %.01034, %1031 ], [ %.01034, %1033 ], [ %.01034, %1034 ], [ %.01034, %1048 ], [ %.01034, %1050 ], [ %.01034, %1052 ], [ %.01034, %1053 ], [ %.01034, %1076 ], [ %.01034, %1078 ], [ %.01034, %1080 ], [ %.01034, %1081 ], [ %.01034, %1096 ], [ %.01034, %1098 ], [ %.01034, %1100 ], [ %.01034, %1101 ], [ %.01034, %1106 ], [ %.01034, %1108 ], [ %.01034, %1110 ], [ %.01034, %1111 ], [ %.01034, %1125 ], [ %.01034, %1127 ], [ %.01034, %1129 ], [ %.01034, %1130 ], [ %.01034, %1423 ], [ %.01034, %1180 ], [ %.01034, %1179 ], [ %.01034, %1177 ], [ %.01034, %1175 ], [ %.01034, %1239 ], [ %.01034, %1240 ], [ %.01034, %1186 ], [ %.01034, %1241 ], [ %.01034, %ps_builder_check_points.exit.thread ], [ %.01034, %1530 ], [ %.01034, %1532 ], [ %.01034, %1534 ], [ %.01034, %1535 ], [ %.01034, %1561 ], [ %.01034, %1563 ], [ %.01034, %1565 ], [ %.01034, %1566 ], [ %.01034, %1584 ], [ %.01034, %1586 ], [ %.01034, %1588 ], [ %.01034, %1589 ], [ %.01034, %1610 ], [ %.01034, %1612 ], [ %.01034, %1614 ], [ %.01034, %1615 ], [ %.01034, %1630 ], [ %.01034, %1632 ], [ %.01034, %1634 ], [ %.01034, %1635 ], [ %.01034, %1659 ], [ %.01034, %1661 ], [ %.01034, %1663 ], [ %.01034, %1664 ], [ %.01034, %1691 ], [ %.01034, %1693 ], [ %.01034, %1695 ], [ %.01034, %1696 ], [ %.01034, %1724 ], [ %.01034, %1726 ], [ %.01034, %1728 ], [ %.01034, %1729 ], [ %.01034, %1756 ], [ %.01034, %1758 ], [ %.01034, %1760 ], [ %.01034, %1761 ], [ %.01034, %1200 ], [ %.01034, %ps_builder_check_points.exit1492.thread ], [ %.01034, %1231 ], [ %.01034, %1203 ], [ %.01034, %1294 ], [ %.01034, %1296 ], [ %.01034, %1298 ], [ %.01034, %1299 ], [ %.01034, %1319 ], [ %.01034, %1316 ], [ %.01034, %1314 ], [ %.01034, %1334 ], [ %.01034, %1336 ], [ %.01034, %1338 ], [ %.01034, %1339 ], [ %.01034, %1354 ], [ %.01034, %1356 ], [ %.01034, %1358 ], [ %.01034, %1359 ], [ %.01034, %1374 ], [ %.01034, %1376 ], [ %.01034, %1378 ], [ %.01034, %1379 ], [ %.01034, %1406 ], [ %.01034, %1408 ], [ %.01034, %1410 ], [ %.01034, %1411 ], [ %.01034, %1443 ], [ %.01034, %1445 ], [ %.01034, %1447 ], [ %.01034, %1448 ], [ %.01034, %1469 ], [ %.01034, %1471 ], [ %.01034, %1473 ], [ %.01034, %1474 ], [ %.01034, %1494 ], [ %.01034, %1496 ], [ %.01034, %1498 ], [ %.01034, %1499 ], [ %.01034, %1508 ], [ %.01034, %.lr.ph2119 ] %.01030.be = phi ptr [ %.01030, %._crit_edge ], [ %.01030, %._crit_edge2063 ], [ %.01030, %._crit_edge2073 ], [ %.01030, %._crit_edge2092 ], [ %.11031, %cf2_hintmask_read.exit ], [ %719, %cf2_arrstack_getPointer.exit1437 ], [ %635, %cf2_initGlobalRegionBuffer.exit ], [ %.01030, %613 ], [ %.01030, %._crit_edge2140 ], [ %.01030, %._crit_edge2150 ], [ %.01030, %cf2_stack_popInt.exit1319.thread ], [ %.01030, %210 ], [ %.01030, %2705 ], [ %.01030, %2707 ], [ %.01030, %2709 ], [ %.01030, %2710 ], [ %.01030, %2873 ], [ %.01030, %2872 ], [ %.01030, %2870 ], [ %.01030, %2868 ], [ %.01030, %2857 ], [ %.01030, %2856 ], [ %.01030, %2854 ], [ %.01030, %2852 ], [ %.01030, %2787 ], [ %.01030, %2786 ], [ %.01030, %2784 ], [ %.01030, %2782 ], [ %.01030, %2759 ], [ %.01030, %2758 ], [ %.01030, %2756 ], [ %.01030, %2754 ], [ %.01030, %2729 ], [ %.01030, %2728 ], [ %.01030, %2726 ], [ %.01030, %2724 ], [ %.01030, %1765 ], [ %.01030, %1542 ], [ %.01030, %1518 ], [ %.01030, %733 ], [ %.01030, %732 ], [ %.01030, %730 ], [ %.01030, %1136 ], [ %.01030, %1515 ], [ %.01030, %1548 ], [ %.01030, %1544 ], [ %.01030, %1551 ], [ %.01030, %1733 ], [ %.01030, %796 ], [ %.01030, %798 ], [ %.01030, %800 ], [ %.01030, %801 ], [ %.01030, %818 ], [ %.01030, %820 ], [ %.01030, %822 ], [ %.01030, %823 ], [ %.01030, %839 ], [ %.01030, %841 ], [ %.01030, %843 ], [ %.01030, %844 ], [ %.01030, %1000 ], [ %.01030, %1002 ], [ %.01030, %1004 ], [ %.01030, %1005 ], [ %.01030, %1010 ], [ %.01030, %1012 ], [ %.01030, %1014 ], [ %.01030, %1015 ], [ %.01030, %1029 ], [ %.01030, %1031 ], [ %.01030, %1033 ], [ %.01030, %1034 ], [ %.01030, %1048 ], [ %.01030, %1050 ], [ %.01030, %1052 ], [ %.01030, %1053 ], [ %.01030, %1076 ], [ %.01030, %1078 ], [ %.01030, %1080 ], [ %.01030, %1081 ], [ %.01030, %1096 ], [ %.01030, %1098 ], [ %.01030, %1100 ], [ %.01030, %1101 ], [ %.01030, %1106 ], [ %.01030, %1108 ], [ %.01030, %1110 ], [ %.01030, %1111 ], [ %.01030, %1125 ], [ %.01030, %1127 ], [ %.01030, %1129 ], [ %.01030, %1130 ], [ %.01030, %1423 ], [ %.01030, %1180 ], [ %.01030, %1179 ], [ %.01030, %1177 ], [ %.01030, %1175 ], [ %.01030, %1239 ], [ %.01030, %1240 ], [ %.01030, %1186 ], [ %.01030, %1241 ], [ %.01030, %ps_builder_check_points.exit.thread ], [ %.01030, %1530 ], [ %.01030, %1532 ], [ %.01030, %1534 ], [ %.01030, %1535 ], [ %.01030, %1561 ], [ %.01030, %1563 ], [ %.01030, %1565 ], [ %.01030, %1566 ], [ %.01030, %1584 ], [ %.01030, %1586 ], [ %.01030, %1588 ], [ %.01030, %1589 ], [ %.01030, %1610 ], [ %.01030, %1612 ], [ %.01030, %1614 ], [ %.01030, %1615 ], [ %.01030, %1630 ], [ %.01030, %1632 ], [ %.01030, %1634 ], [ %.01030, %1635 ], [ %.01030, %1659 ], [ %.01030, %1661 ], [ %.01030, %1663 ], [ %.01030, %1664 ], [ %.01030, %1691 ], [ %.01030, %1693 ], [ %.01030, %1695 ], [ %.01030, %1696 ], [ %.01030, %1724 ], [ %.01030, %1726 ], [ %.01030, %1728 ], [ %.01030, %1729 ], [ %.01030, %1756 ], [ %.01030, %1758 ], [ %.01030, %1760 ], [ %.01030, %1761 ], [ %.01030, %1200 ], [ %.01030, %ps_builder_check_points.exit1492.thread ], [ %.01030, %1231 ], [ %.01030, %1203 ], [ %.01030, %1294 ], [ %.01030, %1296 ], [ %.01030, %1298 ], [ %.01030, %1299 ], [ %.01030, %1319 ], [ %.01030, %1316 ], [ %.01030, %1314 ], [ %.01030, %1334 ], [ %.01030, %1336 ], [ %.01030, %1338 ], [ %.01030, %1339 ], [ %.01030, %1354 ], [ %.01030, %1356 ], [ %.01030, %1358 ], [ %.01030, %1359 ], [ %.01030, %1374 ], [ %.01030, %1376 ], [ %.01030, %1378 ], [ %.01030, %1379 ], [ %.01030, %1406 ], [ %.01030, %1408 ], [ %.01030, %1410 ], [ %.01030, %1411 ], [ %.01030, %1443 ], [ %.01030, %1445 ], [ %.01030, %1447 ], [ %.01030, %1448 ], [ %.01030, %1469 ], [ %.01030, %1471 ], [ %.01030, %1473 ], [ %.01030, %1474 ], [ %.01030, %1494 ], [ %.01030, %1496 ], [ %.01030, %1498 ], [ %.01030, %1499 ], [ %.01030, %1508 ], [ %.01030, %.lr.ph2119 ] %.01029.be = phi i32 [ %221, %._crit_edge ], [ %221, %._crit_edge2063 ], [ %221, %._crit_edge2073 ], [ %221, %._crit_edge2092 ], [ %221, %cf2_hintmask_read.exit ], [ %221, %cf2_arrstack_getPointer.exit1437 ], [ %221, %cf2_initGlobalRegionBuffer.exit ], [ %221, %613 ], [ %221, %._crit_edge2140 ], [ %221, %._crit_edge2150 ], [ %221, %cf2_stack_popInt.exit1319.thread ], [ %.01029, %210 ], [ %221, %2705 ], [ %221, %2707 ], [ %221, %2709 ], [ %221, %2710 ], [ %221, %2873 ], [ %221, %2872 ], [ %221, %2870 ], [ %221, %2868 ], [ %221, %2857 ], [ %221, %2856 ], [ %221, %2854 ], [ %221, %2852 ], [ %221, %2787 ], [ %221, %2786 ], [ %221, %2784 ], [ %221, %2782 ], [ %221, %2759 ], [ %221, %2758 ], [ %221, %2756 ], [ %221, %2754 ], [ %221, %2729 ], [ %221, %2728 ], [ %221, %2726 ], [ %221, %2724 ], [ %221, %1765 ], [ %221, %1542 ], [ %221, %1518 ], [ %221, %733 ], [ %221, %732 ], [ %221, %730 ], [ %221, %1136 ], [ %221, %1515 ], [ %221, %1548 ], [ %221, %1544 ], [ %221, %1551 ], [ %221, %1733 ], [ %221, %796 ], [ %221, %798 ], [ %221, %800 ], [ %221, %801 ], [ %221, %818 ], [ %221, %820 ], [ %221, %822 ], [ %221, %823 ], [ %221, %839 ], [ %221, %841 ], [ %221, %843 ], [ %221, %844 ], [ %221, %1000 ], [ %221, %1002 ], [ %221, %1004 ], [ %221, %1005 ], [ %221, %1010 ], [ %221, %1012 ], [ %221, %1014 ], [ %221, %1015 ], [ %221, %1029 ], [ %221, %1031 ], [ %221, %1033 ], [ %221, %1034 ], [ %221, %1048 ], [ %221, %1050 ], [ %221, %1052 ], [ %221, %1053 ], [ %221, %1076 ], [ %221, %1078 ], [ %221, %1080 ], [ %221, %1081 ], [ %221, %1096 ], [ %221, %1098 ], [ %221, %1100 ], [ %221, %1101 ], [ %221, %1106 ], [ %221, %1108 ], [ %221, %1110 ], [ %221, %1111 ], [ %221, %1125 ], [ %221, %1127 ], [ %221, %1129 ], [ %221, %1130 ], [ %221, %1423 ], [ %221, %1180 ], [ %221, %1179 ], [ %221, %1177 ], [ %221, %1175 ], [ %221, %1239 ], [ %221, %1240 ], [ %221, %1186 ], [ %221, %1241 ], [ %221, %ps_builder_check_points.exit.thread ], [ %221, %1530 ], [ %221, %1532 ], [ %221, %1534 ], [ %221, %1535 ], [ %221, %1561 ], [ %221, %1563 ], [ %221, %1565 ], [ %221, %1566 ], [ %221, %1584 ], [ %221, %1586 ], [ %221, %1588 ], [ %221, %1589 ], [ %221, %1610 ], [ %221, %1612 ], [ %221, %1614 ], [ %221, %1615 ], [ %221, %1630 ], [ %221, %1632 ], [ %221, %1634 ], [ %221, %1635 ], [ %221, %1659 ], [ %221, %1661 ], [ %221, %1663 ], [ %221, %1664 ], [ %221, %1691 ], [ %221, %1693 ], [ %221, %1695 ], [ %221, %1696 ], [ %221, %1724 ], [ %221, %1726 ], [ %221, %1728 ], [ %221, %1729 ], [ %221, %1756 ], [ %221, %1758 ], [ %221, %1760 ], [ %221, %1761 ], [ %221, %1200 ], [ %221, %ps_builder_check_points.exit1492.thread ], [ %221, %1231 ], [ %221, %1203 ], [ %221, %1294 ], [ %221, %1296 ], [ %221, %1298 ], [ %221, %1299 ], [ %221, %1319 ], [ %221, %1316 ], [ %221, %1314 ], [ %221, %1334 ], [ %221, %1336 ], [ %221, %1338 ], [ %221, %1339 ], [ %221, %1354 ], [ %221, %1356 ], [ %221, %1358 ], [ %221, %1359 ], [ %221, %1374 ], [ %221, %1376 ], [ %221, %1378 ], [ %221, %1379 ], [ %221, %1406 ], [ %221, %1408 ], [ %221, %1410 ], [ %221, %1411 ], [ %221, %1443 ], [ %221, %1445 ], [ %221, %1447 ], [ %221, %1448 ], [ %221, %1469 ], [ %221, %1471 ], [ %221, %1473 ], [ %221, %1474 ], [ %221, %1494 ], [ %221, %1496 ], [ %221, %1498 ], [ %221, %1499 ], [ %221, %1508 ], [ %221, %.lr.ph2119 ] - %.01018.be = phi i32 [ %.11019, %._crit_edge ], [ %.11019, %._crit_edge2063 ], [ %.11019, %._crit_edge2073 ], [ %.11019, %._crit_edge2092 ], [ %.31021, %cf2_hintmask_read.exit ], [ %.11019, %cf2_arrstack_getPointer.exit1437 ], [ %.11019, %cf2_initGlobalRegionBuffer.exit ], [ %.11019, %613 ], [ %.11019, %._crit_edge2140 ], [ %.11019, %._crit_edge2150 ], [ %.11019, %cf2_stack_popInt.exit1319.thread ], [ %.01018, %210 ], [ %.11019, %2705 ], [ %.11019, %2707 ], [ %.11019, %2709 ], [ %.11019, %2710 ], [ %.11019, %2873 ], [ %.11019, %2872 ], [ %.11019, %2870 ], [ %.11019, %2868 ], [ %.11019, %2857 ], [ %.11019, %2856 ], [ %.11019, %2854 ], [ %.11019, %2852 ], [ %.11019, %2787 ], [ %.11019, %2786 ], [ %.11019, %2784 ], [ %.11019, %2782 ], [ %.11019, %2759 ], [ %.11019, %2758 ], [ %.11019, %2756 ], [ %.11019, %2754 ], [ %.11019, %2729 ], [ %.11019, %2728 ], [ %.11019, %2726 ], [ %.11019, %2724 ], [ %.11019, %1765 ], [ %.11019, %1542 ], [ %.11019, %1518 ], [ %.11019, %733 ], [ %.11019, %732 ], [ %.11019, %730 ], [ %.11019, %1136 ], [ %.11019, %1515 ], [ %.11019, %1548 ], [ %.11019, %1544 ], [ %.11019, %1551 ], [ %.11019, %1733 ], [ %.11019, %796 ], [ %.11019, %798 ], [ %.11019, %800 ], [ %.11019, %801 ], [ %.11019, %818 ], [ %.11019, %820 ], [ %.11019, %822 ], [ %.11019, %823 ], [ %.11019, %839 ], [ %.11019, %841 ], [ %.11019, %843 ], [ %.11019, %844 ], [ %.11019, %1000 ], [ %.11019, %1002 ], [ %.11019, %1004 ], [ %.11019, %1005 ], [ %.11019, %1010 ], [ %.11019, %1012 ], [ %.11019, %1014 ], [ %.11019, %1015 ], [ %.11019, %1029 ], [ %.11019, %1031 ], [ %.11019, %1033 ], [ %.11019, %1034 ], [ %.11019, %1048 ], [ %.11019, %1050 ], [ %.11019, %1052 ], [ %.11019, %1053 ], [ %.11019, %1076 ], [ %.11019, %1078 ], [ %.11019, %1080 ], [ %.11019, %1081 ], [ %.11019, %1096 ], [ %.11019, %1098 ], [ %.11019, %1100 ], [ %.11019, %1101 ], [ %.11019, %1106 ], [ %.11019, %1108 ], [ %.11019, %1110 ], [ %.11019, %1111 ], [ %.11019, %1125 ], [ %.11019, %1127 ], [ %.11019, %1129 ], [ %.11019, %1130 ], [ 0, %1423 ], [ 0, %1180 ], [ 0, %1179 ], [ 0, %1177 ], [ 0, %1175 ], [ 0, %1239 ], [ 0, %1240 ], [ 0, %1186 ], [ 0, %1241 ], [ 0, %ps_builder_check_points.exit.thread ], [ %1523, %1530 ], [ %1523, %1532 ], [ %1523, %1534 ], [ %1523, %1535 ], [ %.11019, %1561 ], [ %.11019, %1563 ], [ %.11019, %1565 ], [ %.11019, %1566 ], [ %.11019, %1584 ], [ %.11019, %1586 ], [ %.11019, %1588 ], [ %.11019, %1589 ], [ %.11019, %1610 ], [ %.11019, %1612 ], [ %.11019, %1614 ], [ %.11019, %1615 ], [ %.11019, %1630 ], [ %.11019, %1632 ], [ %.11019, %1634 ], [ %.11019, %1635 ], [ %.11019, %1659 ], [ %.11019, %1661 ], [ %.11019, %1663 ], [ %.11019, %1664 ], [ %.11019, %1691 ], [ %.11019, %1693 ], [ %.11019, %1695 ], [ %.11019, %1696 ], [ %.11019, %1724 ], [ %.11019, %1726 ], [ %.11019, %1728 ], [ %.11019, %1729 ], [ %.11019, %1756 ], [ %.11019, %1758 ], [ %.11019, %1760 ], [ %.11019, %1761 ], [ 0, %1200 ], [ 0, %ps_builder_check_points.exit1492.thread ], [ 0, %1231 ], [ 0, %1203 ], [ 0, %1294 ], [ 0, %1296 ], [ 0, %1298 ], [ 0, %1299 ], [ 0, %1319 ], [ 0, %1316 ], [ 0, %1314 ], [ 0, %1334 ], [ 0, %1336 ], [ 0, %1338 ], [ 0, %1339 ], [ 0, %1354 ], [ 0, %1356 ], [ 0, %1358 ], [ 0, %1359 ], [ 0, %1374 ], [ 0, %1376 ], [ 0, %1378 ], [ 0, %1379 ], [ 0, %1406 ], [ 0, %1408 ], [ 0, %1410 ], [ 0, %1411 ], [ 0, %1443 ], [ 0, %1445 ], [ 0, %1447 ], [ 0, %1448 ], [ 0, %1469 ], [ 0, %1471 ], [ 0, %1473 ], [ 0, %1474 ], [ 0, %1494 ], [ 0, %1496 ], [ 0, %1498 ], [ 0, %1499 ], [ %1509, %1508 ], [ %1509, %.lr.ph2119 ] - %.01016.be = phi i8 [ %.01016, %._crit_edge ], [ %.01016, %._crit_edge2063 ], [ %.01016, %._crit_edge2073 ], [ %.01016, %._crit_edge2092 ], [ %.11017, %cf2_hintmask_read.exit ], [ %.01016, %cf2_arrstack_getPointer.exit1437 ], [ %.01016, %cf2_initGlobalRegionBuffer.exit ], [ %.01016, %613 ], [ %.01016, %._crit_edge2140 ], [ %.01016, %._crit_edge2150 ], [ %.01016, %cf2_stack_popInt.exit1319.thread ], [ 0, %210 ], [ %.01016, %2705 ], [ %.01016, %2707 ], [ %.01016, %2709 ], [ %.01016, %2710 ], [ %.01016, %2873 ], [ %.01016, %2872 ], [ %.01016, %2870 ], [ %.01016, %2868 ], [ %.01016, %2857 ], [ %.01016, %2856 ], [ %.01016, %2854 ], [ %.01016, %2852 ], [ %.01016, %2787 ], [ %.01016, %2786 ], [ %.01016, %2784 ], [ %.01016, %2782 ], [ %.01016, %2759 ], [ %.01016, %2758 ], [ %.01016, %2756 ], [ %.01016, %2754 ], [ %.01016, %2729 ], [ %.01016, %2728 ], [ %.01016, %2726 ], [ %.01016, %2724 ], [ %.01016, %1765 ], [ %.01016, %1542 ], [ %.01016, %1518 ], [ %.01016, %733 ], [ %.01016, %732 ], [ %.01016, %730 ], [ %.01016, %1136 ], [ %.01016, %1515 ], [ %.01016, %1548 ], [ %.01016, %1544 ], [ %.01016, %1551 ], [ %.01016, %1733 ], [ %.01016, %796 ], [ %.01016, %798 ], [ %.01016, %800 ], [ %.01016, %801 ], [ %.01016, %818 ], [ %.01016, %820 ], [ %.01016, %822 ], [ %.01016, %823 ], [ %.01016, %839 ], [ %.01016, %841 ], [ %.01016, %843 ], [ %.01016, %844 ], [ %.01016, %1000 ], [ %.01016, %1002 ], [ %.01016, %1004 ], [ %.01016, %1005 ], [ %.01016, %1010 ], [ %.01016, %1012 ], [ %.01016, %1014 ], [ %.01016, %1015 ], [ %.01016, %1029 ], [ %.01016, %1031 ], [ %.01016, %1033 ], [ %.01016, %1034 ], [ %.01016, %1048 ], [ %.01016, %1050 ], [ %.01016, %1052 ], [ %.01016, %1053 ], [ %.01016, %1076 ], [ %.01016, %1078 ], [ %.01016, %1080 ], [ %.01016, %1081 ], [ %.01016, %1096 ], [ %.01016, %1098 ], [ %.01016, %1100 ], [ %.01016, %1101 ], [ %.01016, %1106 ], [ %.01016, %1108 ], [ %.01016, %1110 ], [ %.01016, %1111 ], [ %.01016, %1125 ], [ %.01016, %1127 ], [ %.01016, %1129 ], [ %.01016, %1130 ], [ %.01016, %1423 ], [ %.01016, %1180 ], [ %.01016, %1179 ], [ %.01016, %1177 ], [ %.01016, %1175 ], [ 0, %1239 ], [ %.01016, %1240 ], [ 0, %1186 ], [ %.01016, %1241 ], [ %.01016, %ps_builder_check_points.exit.thread ], [ %.01016, %1530 ], [ %.01016, %1532 ], [ %.01016, %1534 ], [ %.01016, %1535 ], [ %.01016, %1561 ], [ %.01016, %1563 ], [ %.01016, %1565 ], [ %.01016, %1566 ], [ %.01016, %1584 ], [ %.01016, %1586 ], [ %.01016, %1588 ], [ %.01016, %1589 ], [ %.01016, %1610 ], [ %.01016, %1612 ], [ %.01016, %1614 ], [ %.01016, %1615 ], [ %.01016, %1630 ], [ %.01016, %1632 ], [ %.01016, %1634 ], [ %.01016, %1635 ], [ %.01016, %1659 ], [ %.01016, %1661 ], [ %.01016, %1663 ], [ %.01016, %1664 ], [ %.01016, %1691 ], [ %.01016, %1693 ], [ %.01016, %1695 ], [ %.01016, %1696 ], [ %.01016, %1724 ], [ %.01016, %1726 ], [ %.01016, %1728 ], [ %.01016, %1729 ], [ %.01016, %1756 ], [ %.01016, %1758 ], [ %.01016, %1760 ], [ %.01016, %1761 ], [ 0, %1200 ], [ %.01016, %ps_builder_check_points.exit1492.thread ], [ %.01016, %1231 ], [ %.01016, %1203 ], [ %.01016, %1294 ], [ %.01016, %1296 ], [ %.01016, %1298 ], [ %.01016, %1299 ], [ %.01016, %1319 ], [ %.01016, %1316 ], [ %.01016, %1314 ], [ %.01016, %1334 ], [ %.01016, %1336 ], [ %.01016, %1338 ], [ %.01016, %1339 ], [ %.01016, %1354 ], [ %.01016, %1356 ], [ %.01016, %1358 ], [ %.01016, %1359 ], [ %.01016, %1374 ], [ %.01016, %1376 ], [ %.01016, %1378 ], [ %.01016, %1379 ], [ %.01016, %1406 ], [ %.01016, %1408 ], [ %.01016, %1410 ], [ %.01016, %1411 ], [ %.01016, %1443 ], [ %.01016, %1445 ], [ %.01016, %1447 ], [ %.01016, %1448 ], [ %.01016, %1469 ], [ %.01016, %1471 ], [ %.01016, %1473 ], [ %.01016, %1474 ], [ %.01016, %1494 ], [ %.01016, %1496 ], [ %.01016, %1498 ], [ %.01016, %1499 ], [ %.01016, %1508 ], [ %.01016, %.lr.ph2119 ] + %.01018.be = phi i32 [ %.11019, %._crit_edge ], [ %.11019, %._crit_edge2063 ], [ %.11019, %._crit_edge2073 ], [ %.11019, %._crit_edge2092 ], [ %.31021, %cf2_hintmask_read.exit ], [ %.11019, %cf2_arrstack_getPointer.exit1437 ], [ %.11019, %cf2_initGlobalRegionBuffer.exit ], [ %.11019, %613 ], [ %.11019, %._crit_edge2140 ], [ %.11019, %._crit_edge2150 ], [ %.11019, %cf2_stack_popInt.exit1319.thread ], [ %.01018, %210 ], [ %.11019, %2705 ], [ %.11019, %2707 ], [ %.11019, %2709 ], [ %.11019, %2710 ], [ %.11019, %2873 ], [ %.11019, %2872 ], [ %.11019, %2870 ], [ %.11019, %2868 ], [ %.11019, %2857 ], [ %.11019, %2856 ], [ %.11019, %2854 ], [ %.11019, %2852 ], [ %.11019, %2787 ], [ %.11019, %2786 ], [ %.11019, %2784 ], [ %.11019, %2782 ], [ %.11019, %2759 ], [ %.11019, %2758 ], [ %.11019, %2756 ], [ %.11019, %2754 ], [ %.11019, %2729 ], [ %.11019, %2728 ], [ %.11019, %2726 ], [ %.11019, %2724 ], [ %.11019, %1765 ], [ %.11019, %1542 ], [ %.11019, %1518 ], [ %.11019, %733 ], [ %.11019, %732 ], [ %.11019, %730 ], [ %.11019, %1136 ], [ %.11019, %1515 ], [ %.11019, %1548 ], [ %.11019, %1544 ], [ %.11019, %1551 ], [ %.11019, %1733 ], [ %.11019, %796 ], [ %.11019, %798 ], [ %.11019, %800 ], [ %.11019, %801 ], [ %.11019, %818 ], [ %.11019, %820 ], [ %.11019, %822 ], [ %.11019, %823 ], [ %.11019, %839 ], [ %.11019, %841 ], [ %.11019, %843 ], [ %.11019, %844 ], [ %.11019, %1000 ], [ %.11019, %1002 ], [ %.11019, %1004 ], [ %.11019, %1005 ], [ %.11019, %1010 ], [ %.11019, %1012 ], [ %.11019, %1014 ], [ %.11019, %1015 ], [ %.11019, %1029 ], [ %.11019, %1031 ], [ %.11019, %1033 ], [ %.11019, %1034 ], [ %.11019, %1048 ], [ %.11019, %1050 ], [ %.11019, %1052 ], [ %.11019, %1053 ], [ %.11019, %1076 ], [ %.11019, %1078 ], [ %.11019, %1080 ], [ %.11019, %1081 ], [ %.11019, %1096 ], [ %.11019, %1098 ], [ %.11019, %1100 ], [ %.11019, %1101 ], [ %.11019, %1106 ], [ %.11019, %1108 ], [ %.11019, %1110 ], [ %.11019, %1111 ], [ %.11019, %1125 ], [ %.11019, %1127 ], [ %.11019, %1129 ], [ %.11019, %1130 ], [ 0, %1423 ], [ 0, %1180 ], [ 0, %1179 ], [ 0, %1177 ], [ 0, %1175 ], [ 0, %1239 ], [ 0, %1240 ], [ 0, %1186 ], [ 0, %1241 ], [ 0, %ps_builder_check_points.exit.thread ], [ %1523, %1530 ], [ %1523, %1532 ], [ %1523, %1534 ], [ %1523, %1535 ], [ %.11019, %1561 ], [ %.11019, %1563 ], [ %.11019, %1565 ], [ %.11019, %1566 ], [ %.11019, %1584 ], [ %.11019, %1586 ], [ %.11019, %1588 ], [ %.11019, %1589 ], [ %.11019, %1610 ], [ %.11019, %1612 ], [ %.11019, %1614 ], [ %.11019, %1615 ], [ %.11019, %1630 ], [ %.11019, %1632 ], [ %.11019, %1634 ], [ %.11019, %1635 ], [ %.11019, %1659 ], [ %.11019, %1661 ], [ %.11019, %1663 ], [ %.11019, %1664 ], [ %.11019, %1691 ], [ %.11019, %1693 ], [ %.11019, %1695 ], [ %.11019, %1696 ], [ %.11019, %1724 ], [ %.11019, %1726 ], [ %.11019, %1728 ], [ %.11019, %1729 ], [ %.11019, %1756 ], [ %.11019, %1758 ], [ %.11019, %1760 ], [ %.11019, %1761 ], [ 0, %1200 ], [ 0, %ps_builder_check_points.exit1492.thread ], [ 0, %1231 ], [ 0, %1203 ], [ 0, %1294 ], [ 0, %1296 ], [ 0, %1298 ], [ 0, %1299 ], [ 0, %1319 ], [ 0, %1316 ], [ 0, %1314 ], [ 0, %1334 ], [ 0, %1336 ], [ 0, %1338 ], [ 0, %1339 ], [ 0, %1354 ], [ 0, %1356 ], [ 0, %1358 ], [ 0, %1359 ], [ 0, %1374 ], [ 0, %1376 ], [ 0, %1378 ], [ 0, %1379 ], [ 0, %1406 ], [ 0, %1408 ], [ 0, %1410 ], [ 0, %1411 ], [ 0, %1443 ], [ 0, %1445 ], [ 0, %1447 ], [ 0, %1448 ], [ 0, %1469 ], [ 0, %1471 ], [ 0, %1473 ], [ 0, %1474 ], [ 0, %1494 ], [ 0, %1496 ], [ 0, %1498 ], [ 0, %1499 ], [ 0, %1508 ], [ 0, %.lr.ph2119 ] + %.01016.be = phi i8 [ 0, %._crit_edge ], [ 0, %._crit_edge2063 ], [ 0, %._crit_edge2073 ], [ 0, %._crit_edge2092 ], [ %.11017, %cf2_hintmask_read.exit ], [ 0, %cf2_arrstack_getPointer.exit1437 ], [ 0, %cf2_initGlobalRegionBuffer.exit ], [ 0, %613 ], [ 0, %._crit_edge2140 ], [ 0, %._crit_edge2150 ], [ 0, %cf2_stack_popInt.exit1319.thread ], [ 0, %210 ], [ 0, %2705 ], [ 0, %2707 ], [ 0, %2709 ], [ 0, %2710 ], [ 0, %2873 ], [ 0, %2872 ], [ 0, %2870 ], [ 0, %2868 ], [ 0, %2857 ], [ 0, %2856 ], [ 0, %2854 ], [ 0, %2852 ], [ 0, %2787 ], [ 0, %2786 ], [ 0, %2784 ], [ 0, %2782 ], [ 0, %2759 ], [ 0, %2758 ], [ 0, %2756 ], [ 0, %2754 ], [ 0, %2729 ], [ 0, %2728 ], [ 0, %2726 ], [ 0, %2724 ], [ 0, %1765 ], [ 0, %1542 ], [ 0, %1518 ], [ 0, %733 ], [ 0, %732 ], [ 0, %730 ], [ 0, %1136 ], [ 0, %1515 ], [ 0, %1548 ], [ 0, %1544 ], [ 0, %1551 ], [ 0, %1733 ], [ 0, %796 ], [ 0, %798 ], [ 0, %800 ], [ 0, %801 ], [ 0, %818 ], [ 0, %820 ], [ 0, %822 ], [ 0, %823 ], [ 0, %839 ], [ 0, %841 ], [ 0, %843 ], [ 0, %844 ], [ 0, %1000 ], [ 0, %1002 ], [ 0, %1004 ], [ 0, %1005 ], [ 0, %1010 ], [ 0, %1012 ], [ 0, %1014 ], [ 0, %1015 ], [ 0, %1029 ], [ 0, %1031 ], [ 0, %1033 ], [ 0, %1034 ], [ 0, %1048 ], [ 0, %1050 ], [ 0, %1052 ], [ 0, %1053 ], [ 0, %1076 ], [ 0, %1078 ], [ 0, %1080 ], [ 0, %1081 ], [ 0, %1096 ], [ 0, %1098 ], [ 0, %1100 ], [ 0, %1101 ], [ 0, %1106 ], [ 0, %1108 ], [ 0, %1110 ], [ 0, %1111 ], [ 0, %1125 ], [ 0, %1127 ], [ 0, %1129 ], [ 0, %1130 ], [ 0, %1423 ], [ 0, %1180 ], [ 0, %1179 ], [ 0, %1177 ], [ 0, %1175 ], [ 0, %1239 ], [ 0, %1240 ], [ 0, %1186 ], [ 0, %1241 ], [ 0, %ps_builder_check_points.exit.thread ], [ 0, %1530 ], [ 0, %1532 ], [ 0, %1534 ], [ 0, %1535 ], [ 0, %1561 ], [ 0, %1563 ], [ 0, %1565 ], [ 0, %1566 ], [ 0, %1584 ], [ 0, %1586 ], [ 0, %1588 ], [ 0, %1589 ], [ 0, %1610 ], [ 0, %1612 ], [ 0, %1614 ], [ 0, %1615 ], [ 0, %1630 ], [ 0, %1632 ], [ 0, %1634 ], [ 0, %1635 ], [ 0, %1659 ], [ 0, %1661 ], [ 0, %1663 ], [ 0, %1664 ], [ 0, %1691 ], [ 0, %1693 ], [ 0, %1695 ], [ 0, %1696 ], [ 0, %1724 ], [ 0, %1726 ], [ 0, %1728 ], [ 0, %1729 ], [ 0, %1756 ], [ 0, %1758 ], [ 0, %1760 ], [ 0, %1761 ], [ 0, %1200 ], [ 0, %ps_builder_check_points.exit1492.thread ], [ 0, %1231 ], [ 0, %1203 ], [ 0, %1294 ], [ 0, %1296 ], [ 0, %1298 ], [ 0, %1299 ], [ 0, %1319 ], [ 0, %1316 ], [ 0, %1314 ], [ 0, %1334 ], [ 0, %1336 ], [ 0, %1338 ], [ 0, %1339 ], [ 0, %1354 ], [ 0, %1356 ], [ 0, %1358 ], [ 0, %1359 ], [ 0, %1374 ], [ 0, %1376 ], [ 0, %1378 ], [ 0, %1379 ], [ 0, %1406 ], [ 0, %1408 ], [ 0, %1410 ], [ 0, %1411 ], [ 0, %1443 ], [ 0, %1445 ], [ 0, %1447 ], [ 0, %1448 ], [ 0, %1469 ], [ 0, %1471 ], [ 0, %1473 ], [ 0, %1474 ], [ 0, %1494 ], [ 0, %1496 ], [ 0, %1498 ], [ 0, %1499 ], [ 0, %1508 ], [ 0, %.lr.ph2119 ] %.01009.be = phi i8 [ %.11010, %._crit_edge ], [ %.11010, %._crit_edge2063 ], [ %.11010, %._crit_edge2073 ], [ %.11010, %._crit_edge2092 ], [ %.11010, %cf2_hintmask_read.exit ], [ %.11010, %cf2_arrstack_getPointer.exit1437 ], [ %.11010, %cf2_initGlobalRegionBuffer.exit ], [ %.11010, %613 ], [ %.11010, %._crit_edge2140 ], [ %.11010, %._crit_edge2150 ], [ %.11010, %cf2_stack_popInt.exit1319.thread ], [ %.01009, %210 ], [ %.11010, %2705 ], [ %.11010, %2707 ], [ %.11010, %2709 ], [ %.11010, %2710 ], [ %.11010, %2873 ], [ %.11010, %2872 ], [ %.11010, %2870 ], [ %.11010, %2868 ], [ %spec.store.select101, %2857 ], [ %spec.store.select101, %2856 ], [ %spec.store.select101, %2854 ], [ %spec.store.select101, %2852 ], [ %.11010, %2787 ], [ %.11010, %2786 ], [ %.11010, %2784 ], [ %.11010, %2782 ], [ %.11010, %2759 ], [ %.11010, %2758 ], [ %.11010, %2756 ], [ %.11010, %2754 ], [ %.11010, %2729 ], [ %.11010, %2728 ], [ %.11010, %2726 ], [ %.11010, %2724 ], [ %.11010, %1765 ], [ %.11010, %1542 ], [ %.11010, %1518 ], [ %.11010, %733 ], [ %.11010, %732 ], [ %.11010, %730 ], [ %.11010, %1136 ], [ %.11010, %1515 ], [ %.11010, %1548 ], [ %.11010, %1544 ], [ %.11010, %1551 ], [ %.11010, %1733 ], [ %.11010, %796 ], [ %.11010, %798 ], [ %.11010, %800 ], [ %.11010, %801 ], [ %.11010, %818 ], [ %.11010, %820 ], [ %.11010, %822 ], [ %.11010, %823 ], [ %.11010, %839 ], [ %.11010, %841 ], [ %.11010, %843 ], [ %.11010, %844 ], [ %.11010, %1000 ], [ %.11010, %1002 ], [ %.11010, %1004 ], [ %.11010, %1005 ], [ %.11010, %1010 ], [ %.11010, %1012 ], [ %.11010, %1014 ], [ %.11010, %1015 ], [ %.11010, %1029 ], [ %.11010, %1031 ], [ %.11010, %1033 ], [ %.11010, %1034 ], [ %.11010, %1048 ], [ %.11010, %1050 ], [ %.11010, %1052 ], [ %.11010, %1053 ], [ %.41013, %1076 ], [ %.41013, %1078 ], [ %.41013, %1080 ], [ %.41013, %1081 ], [ %.11010, %1096 ], [ %.11010, %1098 ], [ %.11010, %1100 ], [ %.11010, %1101 ], [ %.11010, %1106 ], [ %.11010, %1108 ], [ %.11010, %1110 ], [ %.11010, %1111 ], [ %.11010, %1125 ], [ %.11010, %1127 ], [ %.11010, %1129 ], [ %.11010, %1130 ], [ %.11010, %1423 ], [ %.11010, %1180 ], [ %.11010, %1179 ], [ %.11010, %1177 ], [ %.11010, %1175 ], [ %.11010, %1239 ], [ %.11010, %1240 ], [ %.11010, %1186 ], [ %.11010, %1241 ], [ %.11010, %ps_builder_check_points.exit.thread ], [ %.11010, %1530 ], [ %.11010, %1532 ], [ %.11010, %1534 ], [ %.11010, %1535 ], [ %.11010, %1561 ], [ %.11010, %1563 ], [ %.11010, %1565 ], [ %.11010, %1566 ], [ %.11010, %1584 ], [ %.11010, %1586 ], [ %.11010, %1588 ], [ %.11010, %1589 ], [ %.11010, %1610 ], [ %.11010, %1612 ], [ %.11010, %1614 ], [ %.11010, %1615 ], [ %.11010, %1630 ], [ %.11010, %1632 ], [ %.11010, %1634 ], [ %.11010, %1635 ], [ %.11010, %1659 ], [ %.11010, %1661 ], [ %.11010, %1663 ], [ %.11010, %1664 ], [ %.11010, %1691 ], [ %.11010, %1693 ], [ %.11010, %1695 ], [ %.11010, %1696 ], [ %.11010, %1724 ], [ %.11010, %1726 ], [ %.11010, %1728 ], [ %.11010, %1729 ], [ %.11010, %1756 ], [ %.11010, %1758 ], [ %.11010, %1760 ], [ %.11010, %1761 ], [ %.11010, %1200 ], [ %.11010, %ps_builder_check_points.exit1492.thread ], [ %.11010, %1231 ], [ %.11010, %1203 ], [ %.11010, %1294 ], [ %.11010, %1296 ], [ %.11010, %1298 ], [ %.11010, %1299 ], [ %.11010, %1319 ], [ %.11010, %1316 ], [ %.11010, %1314 ], [ %.11010, %1334 ], [ %.11010, %1336 ], [ %.11010, %1338 ], [ %.11010, %1339 ], [ %.11010, %1354 ], [ %.11010, %1356 ], [ %.11010, %1358 ], [ %.11010, %1359 ], [ %.11010, %1374 ], [ %.11010, %1376 ], [ %.11010, %1378 ], [ %.11010, %1379 ], [ %.11010, %1406 ], [ %.11010, %1408 ], [ %.11010, %1410 ], [ %.11010, %1411 ], [ %.11010, %1443 ], [ %.11010, %1445 ], [ %.11010, %1447 ], [ %.11010, %1448 ], [ %.11010, %1469 ], [ %.11010, %1471 ], [ %.11010, %1473 ], [ %.11010, %1474 ], [ %.11010, %1494 ], [ %.11010, %1496 ], [ %.11010, %1498 ], [ %.11010, %1499 ], [ %.11010, %1508 ], [ %.11010, %.lr.ph2119 ] %.0994.be = phi i32 [ %.0994, %._crit_edge ], [ %.0994, %._crit_edge2063 ], [ %.0994, %._crit_edge2073 ], [ %.0994, %._crit_edge2092 ], [ %.0994, %cf2_hintmask_read.exit ], [ %.0994, %cf2_arrstack_getPointer.exit1437 ], [ %.0994, %cf2_initGlobalRegionBuffer.exit ], [ %.0994, %613 ], [ %.0994, %._crit_edge2140 ], [ %.0994, %._crit_edge2150 ], [ %.0994, %cf2_stack_popInt.exit1319.thread ], [ %.0994, %210 ], [ %.0994, %2705 ], [ %.0994, %2707 ], [ %.0994, %2709 ], [ %.0994, %2710 ], [ %.0994, %2873 ], [ %.0994, %2872 ], [ %.0994, %2870 ], [ %.0994, %2868 ], [ %.0994, %2857 ], [ %.0994, %2856 ], [ %.0994, %2854 ], [ %.0994, %2852 ], [ %.0994, %2787 ], [ %.0994, %2786 ], [ %.0994, %2784 ], [ %.0994, %2782 ], [ %.0994, %2759 ], [ %.0994, %2758 ], [ %.0994, %2756 ], [ %.0994, %2754 ], [ %.0994, %2729 ], [ %.0994, %2728 ], [ %.0994, %2726 ], [ %.0994, %2724 ], [ %.0994, %1765 ], [ %.0994, %1542 ], [ %1519, %1518 ], [ %.0994, %733 ], [ %.0994, %732 ], [ %.0994, %730 ], [ %.0994, %1136 ], [ %.0994, %1515 ], [ %.0994, %1548 ], [ %.0994, %1544 ], [ %.0994, %1551 ], [ %.0994, %1733 ], [ %.0994, %796 ], [ %.0994, %798 ], [ %.0994, %800 ], [ %.0994, %801 ], [ %.0994, %818 ], [ %.0994, %820 ], [ %.0994, %822 ], [ %.0994, %823 ], [ %.0994, %839 ], [ %.0994, %841 ], [ %.0994, %843 ], [ %.0994, %844 ], [ %.0994, %1000 ], [ %.0994, %1002 ], [ %.0994, %1004 ], [ %.0994, %1005 ], [ %.0994, %1010 ], [ %.0994, %1012 ], [ %.0994, %1014 ], [ %.0994, %1015 ], [ %.0994, %1029 ], [ %.0994, %1031 ], [ %.0994, %1033 ], [ %.0994, %1034 ], [ %.0994, %1048 ], [ %.0994, %1050 ], [ %.0994, %1052 ], [ %.0994, %1053 ], [ %.0994, %1076 ], [ %.0994, %1078 ], [ %.0994, %1080 ], [ %.0994, %1081 ], [ %.0994, %1096 ], [ %.0994, %1098 ], [ %.0994, %1100 ], [ %.0994, %1101 ], [ %.0994, %1106 ], [ %.0994, %1108 ], [ %.0994, %1110 ], [ %.0994, %1111 ], [ %.0994, %1125 ], [ %.0994, %1127 ], [ %.0994, %1129 ], [ %.0994, %1130 ], [ 0, %1423 ], [ 2, %1180 ], [ 2, %1179 ], [ 2, %1177 ], [ 2, %1175 ], [ 1, %1239 ], [ 1, %1240 ], [ 0, %1186 ], [ 0, %1241 ], [ 0, %ps_builder_check_points.exit.thread ], [ %.0994, %1530 ], [ %.0994, %1532 ], [ %.0994, %1534 ], [ %.0994, %1535 ], [ %.0994, %1561 ], [ %.0994, %1563 ], [ %.0994, %1565 ], [ %.0994, %1566 ], [ %.0994, %1584 ], [ %.0994, %1586 ], [ %.0994, %1588 ], [ %.0994, %1589 ], [ %.0994, %1610 ], [ %.0994, %1612 ], [ %.0994, %1614 ], [ %.0994, %1615 ], [ %.0994, %1630 ], [ %.0994, %1632 ], [ %.0994, %1634 ], [ %.0994, %1635 ], [ %.0994, %1659 ], [ %.0994, %1661 ], [ %.0994, %1663 ], [ %.0994, %1664 ], [ %.0994, %1691 ], [ %.0994, %1693 ], [ %.0994, %1695 ], [ %.0994, %1696 ], [ %.0994, %1724 ], [ %.0994, %1726 ], [ %.0994, %1728 ], [ %.0994, %1729 ], [ %.0994, %1756 ], [ %.0994, %1758 ], [ %.0994, %1760 ], [ %.0994, %1761 ], [ 0, %1200 ], [ 0, %ps_builder_check_points.exit1492.thread ], [ 0, %1231 ], [ 0, %1203 ], [ %1248, %1294 ], [ %1248, %1296 ], [ %1248, %1298 ], [ %1248, %1299 ], [ 0, %1319 ], [ 0, %1316 ], [ 0, %1314 ], [ 1, %1334 ], [ 1, %1336 ], [ 1, %1338 ], [ 1, %1339 ], [ 1, %1354 ], [ 1, %1356 ], [ 1, %1358 ], [ 1, %1359 ], [ 1, %1374 ], [ 1, %1376 ], [ 1, %1378 ], [ 1, %1379 ], [ 1, %1406 ], [ 1, %1408 ], [ 1, %1410 ], [ 1, %1411 ], [ 1, %1443 ], [ 1, %1445 ], [ 1, %1447 ], [ 1, %1448 ], [ 1, %1469 ], [ 1, %1471 ], [ 1, %1473 ], [ 1, %1474 ], [ 1, %1494 ], [ 1, %1496 ], [ 1, %1498 ], [ 1, %1499 ], [ 0, %1508 ], [ 0, %.lr.ph2119 ] br label %.backedge .lr.ph2119.preheader: ; preds = %1508 + %1509 = call i32 @llvm.umin.i32(i32 %1139, i32 3) %1510 = zext nneg i32 %1509 to i64 %1511 = add nuw nsw i32 %1509, 1 %wide.trip.count = zext nneg i32 %1511 to i64 @@ -13500,7 +13500,7 @@ cf2_stack_pushFixed.exit1548: ; preds = %1709, %1711, %1713, 1768: ; preds = %741 %1769 = icmp ne i8 %.01016, 0 - %or.cond95 = select i1 %738, i1 %1769, i1 false + %or.cond95 = and i1 %738, %1769 br i1 %or.cond95, label %1770, label %cf2_hintmask_read.exit 1770: ; preds = %1768 @@ -13628,7 +13628,7 @@ cf2_stack_popFixed.exit1564: ; preds = %1799, %1801, %1803, 1825: ; preds = %223 %1826 = icmp ne i8 %.01016, 0 - %or.cond83 = select i1 %.not1141, i1 true, i1 %1826 + %or.cond83 = or i1 %.not1141, %1826 br i1 %or.cond83, label %1843, label %1827 1827: ; preds = %1825 @@ -16091,7 +16091,7 @@ cf2_hintmask_read.exit: ; preds = %cf2_buf_readByte.ex %.11035 = phi i32 [ %.01034, %cf2_stack_popFixed.exit1613 ], [ %.01034, %2057 ], [ %.01034, %cf2_stack_popFixed.exit1600 ], [ %.01034, %2014 ], [ %.01034, %cf2_hintmask_read.exit1582 ], [ %.31037.lcssa, %1839 ], [ %.01034, %1773 ], [ %.01034, %cf2_glyphpath_closeOpenPath.exit ], [ %.01034, %615 ], [ %.01034, %cf2_stack_popFixed.exit ], [ %.01034, %348 ], [ %.01034, %.thread1928 ], [ %.01034, %299 ], [ %.01034, %.thread1927 ], [ %.01034, %290 ], [ %.01034, %225 ], [ %.01034, %223 ], [ %.01034, %223 ], [ %.01034, %223 ], [ %.01034, %cf2_stack_popInt.exit.thread ], [ %.01034, %cf2_stack_popInt.exit ], [ %.01034, %1907 ], [ %.01034, %1909 ], [ %.01034, %1911 ], [ %.01034, %cf2_hintmask_setCounts.exit.i ], [ %.01034, %249 ], [ %.01034, %737 ], [ %.01034, %cf2_buf_readByte.exit1441.thread ], [ %.01034, %741 ], [ %.01034, %742 ], [ %.01034, %849 ], [ %.01034, %962 ], [ %.01034, %1768 ], [ %.01034, %1770 ], [ %.01034, %cf2_buf_readByte.exit1441 ], [ %.01034, %cf2_buf_readByte.exit1441 ], [ %.01034, %cf2_buf_readByte.exit1441 ], [ %.01034, %cf2_buf_readByte.exit1441 ], [ %.01034, %cf2_buf_readByte.exit1441 ], [ %.01034, %cf2_buf_readByte.exit1441 ], [ %.01034, %731 ], [ %.01034, %984 ], [ %.01034, %985 ], [ %.01034, %cf2_stack_setReal.exit1449 ], [ %.01034, %1822 ], [ %.01034, %1821 ], [ %.01034, %1894 ], [ %.01034, %cf2_buf_readByte.exit.i ] %.11031 = phi ptr [ %.01030, %cf2_stack_popFixed.exit1613 ], [ %.01030, %2057 ], [ %.01030, %cf2_stack_popFixed.exit1600 ], [ %.01030, %2014 ], [ %.01030, %cf2_hintmask_read.exit1582 ], [ %.31033.lcssa, %1839 ], [ %.01030, %1773 ], [ %.01030, %cf2_glyphpath_closeOpenPath.exit ], [ %.01030, %615 ], [ %.01030, %cf2_stack_popFixed.exit ], [ %.01030, %348 ], [ %.01030, %.thread1928 ], [ %.01030, %299 ], [ %.01030, %.thread1927 ], [ %.01030, %290 ], [ %.01030, %225 ], [ %.01030, %223 ], [ %.01030, %223 ], [ %.01030, %223 ], [ %.01030, %cf2_stack_popInt.exit.thread ], [ %.01030, %cf2_stack_popInt.exit ], [ %.01030, %1907 ], [ %.01030, %1909 ], [ %.01030, %1911 ], [ %.01030, %cf2_hintmask_setCounts.exit.i ], [ %.01030, %249 ], [ %.01030, %737 ], [ %.01030, %cf2_buf_readByte.exit1441.thread ], [ %.01030, %741 ], [ %.01030, %742 ], [ %.01030, %849 ], [ %.01030, %962 ], [ %.01030, %1768 ], [ %.01030, %1770 ], [ %.01030, %cf2_buf_readByte.exit1441 ], [ %.01030, %cf2_buf_readByte.exit1441 ], [ %.01030, %cf2_buf_readByte.exit1441 ], [ %.01030, %cf2_buf_readByte.exit1441 ], [ %.01030, %cf2_buf_readByte.exit1441 ], [ %.01030, %cf2_buf_readByte.exit1441 ], [ %.01030, %731 ], [ %.01030, %984 ], [ %.01030, %985 ], [ %.01030, %cf2_stack_setReal.exit1449 ], [ %.01030, %1822 ], [ %.01030, %1821 ], [ %.01030, %1894 ], [ %.01030, %cf2_buf_readByte.exit.i ] %.31021 = phi i32 [ %.11019, %cf2_stack_popFixed.exit1613 ], [ %.11019, %2057 ], [ %.11019, %cf2_stack_popFixed.exit1600 ], [ %.11019, %2014 ], [ %.11019, %cf2_hintmask_read.exit1582 ], [ %.11019, %1839 ], [ %.11019, %1773 ], [ %.11019, %cf2_glyphpath_closeOpenPath.exit ], [ %.11019, %615 ], [ %.11019, %cf2_stack_popFixed.exit ], [ %.11019, %348 ], [ %.11019, %.thread1928 ], [ %.11019, %299 ], [ %.11019, %.thread1927 ], [ %.11019, %290 ], [ %.11019, %225 ], [ %.11019, %223 ], [ %.11019, %223 ], [ %.11019, %223 ], [ %.11019, %cf2_stack_popInt.exit.thread ], [ %.11019, %cf2_stack_popInt.exit ], [ %.11019, %1907 ], [ %.11019, %1909 ], [ %.11019, %1911 ], [ %.11019, %cf2_hintmask_setCounts.exit.i ], [ %.11019, %249 ], [ 0, %737 ], [ %.11019, %cf2_buf_readByte.exit1441.thread ], [ %.11019, %741 ], [ %.11019, %742 ], [ %.11019, %849 ], [ %.11019, %962 ], [ %.11019, %1768 ], [ %.11019, %1770 ], [ %.11019, %cf2_buf_readByte.exit1441 ], [ %.11019, %cf2_buf_readByte.exit1441 ], [ %.11019, %cf2_buf_readByte.exit1441 ], [ %.11019, %cf2_buf_readByte.exit1441 ], [ %.11019, %cf2_buf_readByte.exit1441 ], [ %.11019, %cf2_buf_readByte.exit1441 ], [ %.11019, %731 ], [ %.11019, %984 ], [ %.11019, %985 ], [ %.11019, %cf2_stack_setReal.exit1449 ], [ %.11019, %1822 ], [ %.11019, %1821 ], [ %.11019, %1894 ], [ %.11019, %cf2_buf_readByte.exit.i ] - %.11017 = phi i8 [ %.01016, %cf2_stack_popFixed.exit1613 ], [ %.01016, %2057 ], [ %.01016, %cf2_stack_popFixed.exit1600 ], [ %.01016, %2014 ], [ %.01016, %cf2_hintmask_read.exit1582 ], [ 1, %1839 ], [ %.01016, %1773 ], [ %.01016, %cf2_glyphpath_closeOpenPath.exit ], [ %.01016, %615 ], [ %.01016, %cf2_stack_popFixed.exit ], [ %.01016, %348 ], [ %.01016, %.thread1928 ], [ %.01016, %299 ], [ %.01016, %.thread1927 ], [ %.01016, %290 ], [ %.01016, %225 ], [ %.01016, %223 ], [ %.01016, %223 ], [ %.01016, %223 ], [ %.01016, %cf2_stack_popInt.exit.thread ], [ %.01016, %cf2_stack_popInt.exit ], [ %.01016, %1907 ], [ %.01016, %1909 ], [ %.01016, %1911 ], [ %.01016, %cf2_hintmask_setCounts.exit.i ], [ %.01016, %249 ], [ %.01016, %737 ], [ %.01016, %cf2_buf_readByte.exit1441.thread ], [ %.01016, %741 ], [ %.01016, %742 ], [ %.01016, %849 ], [ %.01016, %962 ], [ %.01016, %1768 ], [ %.01016, %1770 ], [ %.01016, %cf2_buf_readByte.exit1441 ], [ %.01016, %cf2_buf_readByte.exit1441 ], [ %.01016, %cf2_buf_readByte.exit1441 ], [ %.01016, %cf2_buf_readByte.exit1441 ], [ %.01016, %cf2_buf_readByte.exit1441 ], [ %.01016, %cf2_buf_readByte.exit1441 ], [ %.01016, %731 ], [ 0, %984 ], [ %.01016, %985 ], [ %.01016, %cf2_stack_setReal.exit1449 ], [ %.01016, %1822 ], [ 0, %1821 ], [ %.01016, %1894 ], [ %.01016, %cf2_buf_readByte.exit.i ] + %.11017 = phi i8 [ 0, %cf2_stack_popFixed.exit1613 ], [ 0, %2057 ], [ 0, %cf2_stack_popFixed.exit1600 ], [ 0, %2014 ], [ 0, %cf2_hintmask_read.exit1582 ], [ 1, %1839 ], [ 0, %1773 ], [ 0, %cf2_glyphpath_closeOpenPath.exit ], [ 0, %615 ], [ 0, %cf2_stack_popFixed.exit ], [ 0, %348 ], [ 0, %.thread1928 ], [ 0, %299 ], [ 0, %.thread1927 ], [ 0, %290 ], [ 0, %225 ], [ 0, %223 ], [ 0, %223 ], [ 0, %223 ], [ 0, %cf2_stack_popInt.exit.thread ], [ 0, %cf2_stack_popInt.exit ], [ 0, %1907 ], [ 0, %1909 ], [ 0, %1911 ], [ 0, %cf2_hintmask_setCounts.exit.i ], [ 0, %249 ], [ 0, %737 ], [ 0, %cf2_buf_readByte.exit1441.thread ], [ 0, %741 ], [ 0, %742 ], [ 0, %849 ], [ 0, %962 ], [ 0, %1768 ], [ 0, %1770 ], [ 0, %cf2_buf_readByte.exit1441 ], [ 0, %cf2_buf_readByte.exit1441 ], [ 0, %cf2_buf_readByte.exit1441 ], [ 0, %cf2_buf_readByte.exit1441 ], [ 0, %cf2_buf_readByte.exit1441 ], [ 0, %cf2_buf_readByte.exit1441 ], [ 0, %731 ], [ 0, %984 ], [ 0, %985 ], [ 0, %cf2_stack_setReal.exit1449 ], [ 0, %1822 ], [ 0, %1821 ], [ 0, %1894 ], [ 0, %cf2_buf_readByte.exit.i ] %2877 = load ptr, ptr %123, align 8, !tbaa !615 store ptr %2877, ptr %128, align 8, !tbaa !617 br label %.backedge.backedge @@ -20442,8 +20442,7 @@ define internal fastcc i32 @cf2_hintmap_map(ptr noundef captures(none) %0, i32 n .critedge2: ; preds = %.lr.ph store i32 %.144, ptr %21, align 4, !tbaa !716 - %37 = zext i32 %.144 to i64 - br label %._crit_edge._crit_edge + br label %54 ._crit_edge: ; preds = %35, %.critedge store i32 0, ptr %21, align 4, !tbaa !716 @@ -20468,8 +20467,8 @@ define internal fastcc i32 @cf2_hintmap_map(ptr noundef captures(none) %0, i32 n %54 = add i32 %53, %51 br label %73 -._crit_edge._crit_edge: ; preds = %._crit_edge, %.critedge2 - %.142 = phi i64 [ %37, %.critedge2 ], [ 0, %._crit_edge ] +._crit_edge._crit_edge: ; preds = %.critedge2, %._crit_edge + %.142 = phi i64 [ %31, %.critedge2 ], [ 0, %._crit_edge ] %55 = getelementptr inbounds nuw i8, ptr %0, i64 40 %56 = getelementptr inbounds nuw [192 x %struct.CF2_HintRec_], ptr %55, i64 0, i64 %.142 %57 = getelementptr inbounds nuw i8, ptr %56, i64 16 @@ -20568,7 +20567,7 @@ define internal fastcc void @cf2_hintmap_insertHint(ptr noundef captures(none) % br i1 %.not91, label %.loopexit, label %116 .loopexit: ; preds = %19, %.thread, %32 - %.081113 = phi i32 [ %21, %32 ], [ 0, %.thread ], [ %12, %19 ] + %.081113 = phi i32 [ %21, %32 ], [ 0, %.thread ], [ 0, %19 ] %34 = getelementptr inbounds nuw i8, ptr %0, i64 8 %35 = load ptr, ptr %34, align 8, !tbaa !590 %36 = getelementptr i8, ptr %35, i64 24 diff --git a/bench/g2o/optimized/vertex_ellipse.ll b/bench/g2o/optimized/vertex_ellipse.ll index 35a5da3795a..8a44675b940 100644 --- a/bench/g2o/optimized/vertex_ellipse.ll +++ b/bench/g2o/optimized/vertex_ellipse.ll @@ -1185,11 +1185,9 @@ _ZN5Eigen8internal13first_alignedILi16EflEET1_PKT0_S2_.exit.i.i.i.i.i.i.i.i.i.i. %31 = lshr exact i64 %30, 2 %32 = sub nsw i64 0, %31 %33 = and i64 %32, 3 - %34 = icmp ne i64 %33, 0 - %35 = zext i1 %34 to i64 + %34 = icmp eq i64 %33, 0 %.not = icmp eq i64 %33, 0 - %36 = select i1 %34, i64 4, i64 0 - %37 = getelementptr inbounds nuw i8, ptr %10, i64 56 + %36 = select i1 %34, i64 0, i64 4 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #29 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #29 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %9) #29 @@ -1249,6 +1247,7 @@ _ZN5Eigen8internal13first_alignedILi16EflEET1_PKT0_S2_.exit.i.i.i.i.i.i.i.i.i.i. br label %_ZNK5Eigen10MatrixBaseINS_5BlockINS_6MatrixIfLi1ELi1ELi0ELi1ELi1EEELin1ELi1ELb0EEEE3dotINS1_INS1_INS2_IfLi2ELi2ELi0ELi2ELi2EEELi2ELi1ELb1EEELin1ELi1ELb0EEEEENS_20ScalarBinaryOpTraitsIfNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIfSF_EEE10ReturnTypeERKNS0_ISD_EE.exit _ZNK5Eigen10MatrixBaseINS_5BlockINS_6MatrixIfLi1ELi1ELi0ELi1ELi1EEELin1ELi1ELb0EEEE3dotINS1_INS1_INS2_IfLi2ELi2ELi0ELi2ELi2EEELi2ELi1ELb1EEELin1ELi1ELb0EEEEENS_20ScalarBinaryOpTraitsIfNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIfSF_EEE10ReturnTypeERKNS0_ISD_EE.exit: ; preds = %._crit_edge.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, %.lr.ph.i17.i.i.i.i.i.i.i.i.i.i.i.preheader.i.i.i.i.i + %37 = getelementptr inbounds nuw i8, ptr %10, i64 56 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #29 store float 1.000000e+00, ptr %5, align 4, !tbaa !6 call void @_ZN5Eigen8internal24selfadjoint_product_implINS_5BlockINS_6MatrixIfLi2ELi2ELi0ELi2ELi2EEELin1ELin1ELb0EEELi17ELb0ENS_13CwiseBinaryOpINS0_17scalar_product_opIffEEKNS_14CwiseNullaryOpINS0_18scalar_constant_opIfEEKNS3_IfLin1ELi1ELi0ELi2ELi1EEEEEKNS2_INS2_IS4_Li2ELi1ELb1EEELin1ELi1ELb0EEEEELi0ELb1EE3runINS2_INS3_IfLi1ELi1ELi0ELi1ELi1EEELin1ELi1ELb0EEEEEvRT_RKS5_RKSJ_RKf(ptr noundef nonnull align 8 dereferenceable(56) %11, ptr noundef nonnull align 8 dereferenceable(184) %10, ptr noundef nonnull align 8 dereferenceable(121) %37, ptr noundef nonnull align 4 dereferenceable(4) %5) @@ -1261,25 +1260,9 @@ _ZNK5Eigen10MatrixBaseINS_5BlockINS_6MatrixIfLi1ELi1ELi0ELi1ELi1EEELin1ELi1ELb0E %43 = load float, ptr %12, align 4, !tbaa !6 %44 = fmul float %42, %43 %45 = fmul float %41, %44 - br i1 %.not, label %.lr.ph.i17.i.i.i.i.i.i.preheader, label %._crit_edge.i.i.i.i.i.i - -._crit_edge.i.i.i.i.i.i: ; preds = %_ZNK5Eigen10MatrixBaseINS_5BlockINS_6MatrixIfLi1ELi1ELi0ELi1ELi1EEELin1ELi1ELb0EEEE3dotINS1_INS1_INS2_IfLi2ELi2ELi0ELi2ELi2EEELi2ELi1ELb1EEELin1ELi1ELb0EEEEENS_20ScalarBinaryOpTraitsIfNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIfSF_EEE10ReturnTypeERKNS0_ISD_EE.exit - %46 = fmul float %45, %43 - %47 = fadd float %46, %42 - store float %47, ptr %1, align 4, !tbaa !6 - br label %_ZN5Eigen10MatrixBaseINS_5BlockINS_6MatrixIfLi1ELi1ELi0ELi1ELi1EEELin1ELi1ELb0EEEEpLINS_13CwiseBinaryOpINS_8internal17scalar_product_opIffEEKNS_14CwiseNullaryOpINS8_18scalar_constant_opIfEEKNS2_IfLin1ELi1ELi0ELi2ELi1EEEEEKNS1_INS1_INS2_IfLi2ELi2ELi0ELi2ELi2EEELi2ELi1ELb1EEELin1ELi1ELb0EEEEEEERS4_RKNS0_IT_EE.exit - -.lr.ph.i17.i.i.i.i.i.i.preheader: ; preds = %_ZNK5Eigen10MatrixBaseINS_5BlockINS_6MatrixIfLi1ELi1ELi0ELi1ELi1EEELin1ELi1ELb0EEEE3dotINS1_INS1_INS2_IfLi2ELi2ELi0ELi2ELi2EEELi2ELi1ELb1EEELin1ELi1ELb0EEEEENS_20ScalarBinaryOpTraitsIfNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIfSF_EEE10ReturnTypeERKNS0_ISD_EE.exit - %48 = getelementptr inbounds nuw float, ptr %1, i64 %35 - %49 = getelementptr inbounds nuw float, ptr %12, i64 %35 - %50 = load float, ptr %49, align 4, !tbaa !6 - %51 = fmul float %45, %50 - %52 = load float, ptr %48, align 4, !tbaa !6 - %53 = fadd float %51, %52 - store float %53, ptr %48, align 4, !tbaa !6 - br label %_ZN5Eigen10MatrixBaseINS_5BlockINS_6MatrixIfLi1ELi1ELi0ELi1ELi1EEELin1ELi1ELb0EEEEpLINS_13CwiseBinaryOpINS_8internal17scalar_product_opIffEEKNS_14CwiseNullaryOpINS8_18scalar_constant_opIfEEKNS2_IfLin1ELi1ELi0ELi2ELi1EEEEEKNS1_INS1_INS2_IfLi2ELi2ELi0ELi2ELi2EEELi2ELi1ELb1EEELin1ELi1ELb0EEEEEEERS4_RKNS0_IT_EE.exit - -_ZN5Eigen10MatrixBaseINS_5BlockINS_6MatrixIfLi1ELi1ELi0ELi1ELi1EEELin1ELi1ELb0EEEEpLINS_13CwiseBinaryOpINS_8internal17scalar_product_opIffEEKNS_14CwiseNullaryOpINS8_18scalar_constant_opIfEEKNS2_IfLin1ELi1ELi0ELi2ELi1EEEEEKNS1_INS1_INS2_IfLi2ELi2ELi0ELi2ELi2EEELi2ELi1ELb1EEELin1ELi1ELb0EEEEEEERS4_RKNS0_IT_EE.exit: ; preds = %._crit_edge.i.i.i.i.i.i, %.lr.ph.i17.i.i.i.i.i.i.preheader + %44 = fmul float %43, %41 + %45 = fadd float %44, %40 + store float %45, ptr %1, align 4, !tbaa !6 %.sroa.760.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 48 %.sroa.658.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 32 %.sroa.557.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 24 diff --git a/bench/git/optimized/daemon.ll b/bench/git/optimized/daemon.ll index 92d6a3311f1..31385ff430b 100644 --- a/bench/git/optimized/daemon.ll +++ b/bench/git/optimized/daemon.ll @@ -3010,7 +3010,8 @@ strbuf_addch.exit: ; preds = %strbuf_avail.exit.i 33: ; preds = %.lr.ph %34 = load i64, ptr %0, align 8, !tbaa !26 - %spec.select.i = tail call i64 @llvm.usub.sat.i64(i64 %34, i64 1) + %.not.i20 = icmp ne i64 %34, 0 + %spec.select.i = sext i1 %.not.i20 to i64 %35 = icmp ugt i64 %29, %spec.select.i br i1 %35, label %36, label %37 @@ -3485,9 +3486,6 @@ declare i32 @bcmp(ptr captures(none), ptr captures(none), i64) local_unnamed_add ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i16 @llvm.bswap.i16(i16) #19 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.usub.sat.i64(i64, i64) #19 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #19 diff --git a/bench/glslang/optimized/ShaderLang.ll b/bench/glslang/optimized/ShaderLang.ll index 412ac03a9c3..a161fbccbe0 100644 --- a/bench/glslang/optimized/ShaderLang.ll +++ b/bench/glslang/optimized/ShaderLang.ll @@ -2306,7 +2306,7 @@ _ZN7glslang13TInputScannerC2EiPKPKcPmS4_iib.exit162.i: ; preds = %_ZN7glslang13T br label %414 414: ; preds = %.critedge.i.i, %404, %401, %396 - %.1.i.i = phi i1 [ true, %401 ], [ %407, %404 ], [ false, %.critedge.i.i ], [ true, %396 ] + %.1.i.i = phi i1 [ true, %401 ], [ %407, %404 ], [ true, %.critedge.i.i ], [ true, %396 ] %415 = and i32 %.17479.i, 4 %.not18.i.i = icmp eq i32 %415, 0 br i1 %.not18.i.i, label %_ZN12_GLOBAL__N_111DoFullParseclERN7glslang17TParseContextBaseERNS1_10TPpContextERNS1_13TInputScannerEbRNS1_12TSymbolTableERNS1_13TIntermediateE20EShOptimizationLevel11EShMessages.exit.i, label %416 @@ -6009,9 +6009,8 @@ define noundef zeroext i1 @_ZN7glslang8TProgram4linkE11EShMessages(ptr noundef n %14 = tail call noundef zeroext i1 @_ZN7glslang8TProgram15crossStageCheckE11EShMessages(ptr noundef nonnull align 8 dereferenceable(497) %0, i32 poison) br label %15 -15: ; preds = %12, %13, %2 - %.09 = phi i1 [ false, %2 ], [ false, %12 ], [ %14, %13 ] - ret i1 %.09 +15: ; preds = %13, %12, %2 + ret i1 false } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/hermes/optimized/CodeCoverageProfiler.ll b/bench/hermes/optimized/CodeCoverageProfiler.ll index 8b9b44e9b4e..fb00eb24117 100644 --- a/bench/hermes/optimized/CodeCoverageProfiler.ll +++ b/bench/hermes/optimized/CodeCoverageProfiler.ll @@ -378,13 +378,11 @@ if.then.i2.i.i: ; preds = %_ZN4llvh6detail12De %div.i.i.i.i.i.i575859 = lshr i32 %18, 6 %div.i.i.i.i.i.i57.zext = zext nneg i32 %div.i.i.i.i.i.i575859 to i64 %add.ptr.i.i.i.i.i.i = getelementptr inbounds nuw i64, ptr %call5.i.i.i.i.i.i, i64 %div.i.i.i.i.i.i57.zext - %conv4.i.i.i.i.i.i = and i32 %18, 63 %add.ptr.i.idx.i.i = shl nuw nsw i64 %div1.i.i.i.i, 3 call void @llvm.memset.p0.i64(ptr nonnull align 8 %call5.i.i.i.i.i.i, i8 0, i64 %add.ptr.i.idx.i.i, i1 false) br label %_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit _ZNSt6vectorIbSaIbEEC2EmRKS0_.exit: ; preds = %_ZN4llvh6detail12DenseSetImplIPN6hermes2vm6DomainENS_8DenseMapIS5_NS0_13DenseSetEmptyENS_12DenseMapInfoIS5_EENS0_12DenseSetPairIS5_EEEES9_E6insertEOS5_.exit, %if.then.i2.i.i - %ref.tmp12.sroa.14.0 = phi i32 [ 0, %_ZN4llvh6detail12DenseSetImplIPN6hermes2vm6DomainENS_8DenseMapIS5_NS0_13DenseSetEmptyENS_12DenseMapInfoIS5_EENS0_12DenseSetPairIS5_EEEES9_E6insertEOS5_.exit ], [ %conv4.i.i.i.i.i.i, %if.then.i2.i.i ] %ref.tmp12.sroa.1052.0 = phi ptr [ null, %_ZN4llvh6detail12DenseSetImplIPN6hermes2vm6DomainENS_8DenseMapIS5_NS0_13DenseSetEmptyENS_12DenseMapInfoIS5_EENS0_12DenseSetPairIS5_EEEES9_E6insertEOS5_.exit ], [ %add.ptr.i.i.i.i.i.i, %if.then.i2.i.i ] %ref.tmp12.sroa.1853.0 = phi ptr [ null, %_ZN4llvh6detail12DenseSetImplIPN6hermes2vm6DomainENS_8DenseMapIS5_NS0_13DenseSetEmptyENS_12DenseMapInfoIS5_EENS0_12DenseSetPairIS5_EEEES9_E6insertEOS5_.exit ], [ %add.ptr.i.i.i6, %if.then.i2.i.i ] %ref.tmp12.sroa.0.0 = phi ptr [ null, %_ZN4llvh6detail12DenseSetImplIPN6hermes2vm6DomainENS_8DenseMapIS5_NS0_13DenseSetEmptyENS_12DenseMapInfoIS5_EENS0_12DenseSetPairIS5_EEEES9_E6insertEOS5_.exit ], [ %call5.i.i.i.i.i.i, %if.then.i2.i.i ] @@ -396,7 +394,7 @@ _ZNSt6vectorIbSaIbEEC2EmRKS0_.exit: ; preds = %_ZN4llvh6detail12De %ref.tmp12.sroa.1052.0.second.i.i7.sroa_idx = getelementptr inbounds nuw i8, ptr %ref.tmp11, i64 24 store ptr %ref.tmp12.sroa.1052.0, ptr %ref.tmp12.sroa.1052.0.second.i.i7.sroa_idx, align 8 %ref.tmp12.sroa.14.0.second.i.i7.sroa_idx = getelementptr inbounds nuw i8, ptr %ref.tmp11, i64 32 - store i32 %ref.tmp12.sroa.14.0, ptr %ref.tmp12.sroa.14.0.second.i.i7.sroa_idx, align 8 + store i32 0, ptr %ref.tmp12.sroa.14.0.second.i.i7.sroa_idx, align 8 %ref.tmp12.sroa.1853.0.second.i.i7.sroa_idx = getelementptr inbounds nuw i8, ptr %ref.tmp11, i64 40 store ptr %ref.tmp12.sroa.1853.0, ptr %ref.tmp12.sroa.1853.0.second.i.i7.sroa_idx, align 8 %20 = load ptr, ptr %executedFuncBitsArrayMap_, align 8, !noalias !17 diff --git a/bench/html5ever-rs/optimized/19ci5iy6gkdi8zuj.ll b/bench/html5ever-rs/optimized/19ci5iy6gkdi8zuj.ll index 1aeeed6be92..ba575d374b3 100644 --- a/bench/html5ever-rs/optimized/19ci5iy6gkdi8zuj.ll +++ b/bench/html5ever-rs/optimized/19ci5iy6gkdi8zuj.ll @@ -1242,16 +1242,12 @@ define hidden void @"_ZN7tendril7tendril20Tendril$LT$F$C$A$GT$10assume_buf17h3ea %19 = load i32, ptr %18, align 8, !noundef !4 br label %"_ZN7tendril7tendril20Tendril$LT$F$C$A$GT$5len3217h21f509f0b96a0ffdE.exit" -20: ; preds = %15 - %21 = trunc nuw nsw i64 %3 to i32 - br label %"_ZN7tendril7tendril20Tendril$LT$F$C$A$GT$5len3217h21f509f0b96a0ffdE.exit" - -"_ZN7tendril7tendril20Tendril$LT$F$C$A$GT$5len3217h21f509f0b96a0ffdE.exit": ; preds = %13, %17, %20 - %.0.i = phi i32 [ %21, %20 ], [ %19, %17 ], [ 0, %13 ] - %22 = add i32 %.0.i, %.0 +20: ; preds = %15, %13, %17 + %.0.i = phi i32 [ %19, %17 ], [ 0, %13 ], [ 15, %15 ] + %20 = add i32 %.0.i, %.0 store ptr %5, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %22, ptr %.sroa.4.0..sroa_idx, align 8 + store i32 %20, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 12 store i32 %.03, ptr %.sroa.5.0..sroa_idx, align 4 %23 = getelementptr inbounds nuw i8, ptr %0, i64 16 diff --git a/bench/hwloc/optimized/pci-common.ll b/bench/hwloc/optimized/pci-common.ll index dc89df704da..64204de85a5 100644 --- a/bench/hwloc/optimized/pci-common.ll +++ b/bench/hwloc/optimized/pci-common.ll @@ -1521,7 +1521,7 @@ hwloc__pci_find_by_busid.exit: ; preds = %tailrecurse.loopexi } ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read) uwtable -define range(i32 0, 253) i32 @hwloc_pcidisc_find_cap(ptr noundef readonly captures(none) %0, i32 noundef %1) local_unnamed_addr #10 { +define noundef range(i32 0, 253) i32 @hwloc_pcidisc_find_cap(ptr noundef readonly captures(none) %0, i32 noundef %1) local_unnamed_addr #10 { %3 = alloca [256 x i8], align 16 call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %3) #22 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(256) %3, i8 0, i64 256, i1 false) @@ -1539,8 +1539,8 @@ define range(i32 0, 253) i32 @hwloc_pcidisc_find_cap(ptr noundef readonly captur %.not1727 = icmp eq i8 %.01526, 0 br i1 %.not1727, label %.thread, label %.lr.ph -.lr.ph: ; preds = %7, %20 - %.01528 = phi i8 [ %.015, %20 ], [ %.01526, %7 ] +.lr.ph: ; preds = %7, %18 + %.01528 = phi i8 [ %.015, %18 ], [ %.01526, %7 ] %9 = zext i8 %.01528 to i64 %10 = getelementptr inbounds nuw [256 x i8], ptr %3, i64 0, i64 %9 %11 = load i8, ptr %10, align 4, !tbaa !35 @@ -1553,27 +1553,20 @@ define range(i32 0, 253) i32 @hwloc_pcidisc_find_cap(ptr noundef readonly captur %14 = load i8, ptr %13, align 1, !tbaa !35 %15 = zext i8 %14 to i32 %16 = icmp eq i32 %1, %15 - br i1 %16, label %.thread21, label %18 - -.thread21: ; preds = %12 - %17 = zext i8 %.01528 to i32 - br label %.thread + %17 = icmp eq i8 %14, -1 + %or.cond = or i1 %17, %16 + br i1 %or.cond, label %.thread, label %18 18: ; preds = %12 - %19 = icmp eq i8 %14, -1 - br i1 %19, label %.thread, label %20 - -20: ; preds = %18 %gep = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %9 %.015.in = load i8, ptr %gep, align 1, !tbaa !35 %.015 = and i8 %.015.in, -4 %.not17 = icmp eq i8 %.015, 0 br i1 %.not17, label %.thread, label %.lr.ph, !llvm.loop !96 -.thread: ; preds = %20, %.lr.ph, %18, %7, %.thread21, %2 - %.0 = phi i32 [ 0, %2 ], [ %17, %.thread21 ], [ 0, %7 ], [ 0, %18 ], [ 0, %.lr.ph ], [ 0, %20 ] +.thread: ; preds = %18, %.lr.ph, %12, %7, %2 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %3) #22 - ret i32 %.0 + ret i32 0 } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) diff --git a/bench/influxdb-rs/optimized/1s5ibqekmzia6ibu.ll b/bench/influxdb-rs/optimized/1s5ibqekmzia6ibu.ll index 7a2a4a97199..afb4f8fb56d 100644 --- a/bench/influxdb-rs/optimized/1s5ibqekmzia6ibu.ll +++ b/bench/influxdb-rs/optimized/1s5ibqekmzia6ibu.ll @@ -4146,13 +4146,13 @@ _ZN4core5slice4sort25insertion_sort_shift_left17hc015e640e95daf95E.exit: ; preds to label %26 unwind label %231 .loopexit86: ; preds = %.lr.ph.i, %57, %.lr.ph7.i, %63 - %.sroa.0.1.i = phi i64 [ %.06.i, %.lr.ph7.i ], [ %44, %63 ], [ %.13.i, %.lr.ph.i ], [ %44, %57 ] + %.sroa.0.1.i = phi i64 [ %.06.i, %.lr.ph7.i ], [ 2, %63 ], [ %.13.i, %.lr.ph.i ], [ 2, %57 ] %67 = add i64 %.sroa.0.1.i, %.0117 br i1 %50, label %93, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7reverse17h3af4cb6b2998991fE.exit" "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7reverse17h3af4cb6b2998991fE.exit": ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h7277f83c79309727E.exit10.i.i", %41, %98, %.thread79, %.loopexit86 %68 = phi i64 [ %67, %.loopexit86 ], [ %51, %.thread79 ], [ %94, %98 ], [ %1, %41 ], [ %94, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h7277f83c79309727E.exit10.i.i" ] - %.sroa.0.0.i75 = phi i64 [ %.sroa.0.1.i, %.loopexit86 ], [ 2, %.thread79 ], [ %.sroa.0.1.i78, %98 ], [ %44, %41 ], [ %.sroa.0.1.i78, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h7277f83c79309727E.exit10.i.i" ] + %.sroa.0.0.i75 = phi i64 [ %.sroa.0.1.i, %.loopexit86 ], [ 2, %.thread79 ], [ 1, %98 ], [ %44, %41 ], [ %.sroa.0.1.i78, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h7277f83c79309727E.exit10.i.i" ] %69 = icmp uge i64 %68, %.0117 %70 = icmp ule i64 %68, %1 %or.cond.i = and i1 %69, %70 @@ -4399,7 +4399,7 @@ _ZN4core5slice4sort20provide_sorted_batch17h1e811b4410ca820bE.exit: ; preds = %. ._crit_edge: ; preds = %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h3ba44c2b0728352cE.exit", %141, %142, %149, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17hf25fb71a17a3bc1fE.exit" %.pre.i147 = phi ptr [ %.pre.i148, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17hf25fb71a17a3bc1fE.exit" ], [ %.pre151, %149 ], [ %.pre151, %142 ], [ %.pre151, %141 ], [ %.pre151, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h3ba44c2b0728352cE.exit" ] - %159 = phi i64 [ %127, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17hf25fb71a17a3bc1fE.exit" ], [ 1, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h3ba44c2b0728352cE.exit" ], [ 2, %141 ], [ 3, %142 ], [ %129, %149 ] + %159 = phi i64 [ %127, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17hf25fb71a17a3bc1fE.exit" ], [ 1, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h3ba44c2b0728352cE.exit" ], [ 2, %141 ], [ 2, %142 ], [ 2, %149 ] %160 = icmp ult i64 %.0.i, %1 br i1 %160, label %41, label %29 @@ -4842,14 +4842,14 @@ define hidden void @_ZN4core5slice4sort10merge_sort17hd1e4f0dfd8eb3ddcE(ptr noal to label %26 unwind label %235 .loopexit80: ; preds = %.lr.ph.i, %68, %.lr.ph7.i, %79 - %.sroa.0.1.i = phi i64 [ %.06.i, %.lr.ph7.i ], [ %45, %79 ], [ %.13.i, %.lr.ph.i ], [ %45, %68 ] + %.sroa.0.1.i = phi i64 [ %.06.i, %.lr.ph7.i ], [ 2, %79 ], [ %.13.i, %.lr.ph.i ], [ 2, %68 ] %.not = icmp sgt i64 %spec.store.select.i.i.i.i.i, -1 %82 = add i64 %.sroa.0.1.i, %.0112 br i1 %.not, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7reverse17h30ed30f95d0b2617E.exit", label %99 "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7reverse17h30ed30f95d0b2617E.exit": ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h9c9c4d9e24f37b45E.exit10.i.i", %.loopexit80.thread, %42, %106, %.loopexit80 %83 = phi i64 [ %82, %.loopexit80 ], [ %100, %106 ], [ %1, %42 ], [ %57, %.loopexit80.thread ], [ %100, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h9c9c4d9e24f37b45E.exit10.i.i" ] - %.sroa.0.0.i74 = phi i64 [ %.sroa.0.1.i, %.loopexit80 ], [ %.sroa.0.1.i150, %106 ], [ %45, %42 ], [ 2, %.loopexit80.thread ], [ %.sroa.0.1.i150, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h9c9c4d9e24f37b45E.exit10.i.i" ] + %.sroa.0.0.i74 = phi i64 [ %.sroa.0.1.i, %.loopexit80 ], [ 1, %106 ], [ %45, %42 ], [ 2, %.loopexit80.thread ], [ %.sroa.0.1.i150, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h9c9c4d9e24f37b45E.exit10.i.i" ] %84 = icmp uge i64 %83, %.0112 %85 = icmp ule i64 %83, %1 %or.cond.i = and i1 %84, %85 @@ -4975,7 +4975,7 @@ _ZN4core5slice4sort20provide_sorted_batch17hbb2a2e4eb9621257E.exit: ; preds = %. store i64 %.pre-phi, ptr %127, align 8, !noalias !667 %128 = getelementptr inbounds nuw i8, ptr %127, i64 8 store i64 %.0112, ptr %128, align 8, !noalias !667 - %129 = add i64 %44, 1 + %129 = add nsw i64 %44, 1 store i64 %129, ptr %23, align 8 %130 = icmp ugt i64 %129, 1 br i1 %130, label %.lr.ph.preheader, label %._crit_edge @@ -5048,7 +5048,7 @@ _ZN4core5slice4sort20provide_sorted_batch17hbb2a2e4eb9621257E.exit: ; preds = %. ._crit_edge: ; preds = %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h27447108a356f0f4E.exit", %143, %144, %151, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h1fecedc2bae03936E.exit" %.pre.i140 = phi ptr [ %.pre.i141, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h1fecedc2bae03936E.exit" ], [ %.pre, %151 ], [ %.pre, %144 ], [ %.pre, %143 ], [ %.pre, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h27447108a356f0f4E.exit" ] - %161 = phi i64 [ %129, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h1fecedc2bae03936E.exit" ], [ 1, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h27447108a356f0f4E.exit" ], [ 2, %143 ], [ 3, %144 ], [ %131, %151 ] + %161 = phi i64 [ %129, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h1fecedc2bae03936E.exit" ], [ 1, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h27447108a356f0f4E.exit" ], [ 2, %143 ], [ 2, %144 ], [ 2, %151 ] %162 = icmp ult i64 %.0.i, %1 br i1 %162, label %42, label %29 @@ -5551,7 +5551,6 @@ define internal fastcc noundef zeroext i1 @_ZN4core5slice4sort22partial_insertio br i1 %54, label %.lr.ph.i, label %.thread.i.i .thread.i.i: ; preds = %.lr.ph.i, %.lr.ph.i.i, %.lr.ph.i.preheader.i, %49 - %.120.lcssa24 = phi i64 [ 2, %49 ], [ %.120.lcssa, %.lr.ph.i.preheader.i ], [ %.120.lcssa, %.lr.ph.i.i ], [ %.120.lcssa, %.lr.ph.i ] %.sroa.5.0.lcssa.i.i = phi ptr [ %4, %49 ], [ %4, %.lr.ph.i.preheader.i ], [ %62, %.lr.ph.i.i ], [ %62, %.lr.ph.i ] store ptr %.val15.i.i, ptr %.sroa.5.0.lcssa.i.i, align 8, !alias.scope !749 %.sroa.6.0..sroa.5.0.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %.sroa.5.0.lcssa.i.i, i64 8 @@ -5587,7 +5586,7 @@ define internal fastcc noundef zeroext i1 @_ZN4core5slice4sort22partial_insertio br i1 %exitcond.not.i.i, label %.thread.i.i, label %.lr.ph.i.i _ZN4core5slice4sort26insertion_sort_shift_right17h24847cd1b7984d35E.exit: ; preds = %.thread.i.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h5c830c9a35a18e2dE.exit.preheader.i", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17h6af9aaf4d7446ce0E.exit" - %.120.lcssa23 = phi i64 [ %.120.lcssa24, %.thread.i.i ], [ %.120.lcssa, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h5c830c9a35a18e2dE.exit.preheader.i" ], [ 1, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17h6af9aaf4d7446ce0E.exit" ] + %.120.lcssa23 = phi i64 [ 2, %.thread.i.i ], [ %.120.lcssa, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h5c830c9a35a18e2dE.exit.preheader.i" ], [ 1, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17h6af9aaf4d7446ce0E.exit" ] %exitcond19.not = icmp eq i64 %21, 5 br i1 %exitcond19.not, label %.thread, label %.split } @@ -6614,7 +6613,7 @@ define hidden { i64, i64 } @_ZN4core5slice6memchr12memchr_naive17hfdf024b11bff92 br i1 %.not, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %9, %.lr.ph, %3 - %.0.lcssa = phi i64 [ 0, %3 ], [ %.05, %.lr.ph ], [ %2, %9 ] + %.0.lcssa = phi i64 [ 0, %3 ], [ %.05, %.lr.ph ], [ 0, %9 ] %.sroa.0.0 = phi i64 [ 0, %3 ], [ 1, %.lr.ph ], [ 0, %9 ] %4 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 %5 = insertvalue { i64, i64 } %4, i64 %.0.lcssa, 1 @@ -7055,13 +7054,8 @@ define hidden noundef ptr @"_ZN56_$LT$std..io..Take$LT$T$GT$$u20$as$u20$std..io. %.not = icmp ugt i64 %7, %14 br i1 %.not, label %16, label %32 -.sink.split: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h533491fc70b5a692E.exit57", %49 - %.sink = phi i64 [ %52, %49 ], [ %59, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h533491fc70b5a692E.exit57" ] - store i64 %.sink, ptr %6, align 8 - br label %15 - -15: ; preds = %.sink.split, %_ZN3std2io4Read8read_buf17h001763ae1b8bad81E.exit56, %_ZN3std2io4Read8read_buf17h001763ae1b8bad81E.exit, %3 - %.046 = phi ptr [ null, %3 ], [ %29, %_ZN3std2io4Read8read_buf17h001763ae1b8bad81E.exit ], [ %47, %_ZN3std2io4Read8read_buf17h001763ae1b8bad81E.exit56 ], [ null, %.sink.split ] +.sink.split: ; preds = %_ZN3std2io4Read8read_buf17h001763ae1b8bad81E.exit56, %49, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h533491fc70b5a692E.exit57", %_ZN3std2io4Read8read_buf17h001763ae1b8bad81E.exit, %3 + %.sink = phi ptr [ null, %3 ], [ %29, %_ZN3std2io4Read8read_buf17h001763ae1b8bad81E.exit ], [ null, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h533491fc70b5a692E.exit57" ], [ null, %49 ], [ %47, %_ZN3std2io4Read8read_buf17h001763ae1b8bad81E.exit56 ] ret ptr %.046 16: ; preds = %9 @@ -7156,7 +7150,8 @@ _ZN3std2io4Read8read_buf17h001763ae1b8bad81E.exit56: ; preds = %"_ZN106_$LT$core %.neg = sub i64 %13, %50 %51 = load i64, ptr %6, align 8, !noundef !4 %52 = add i64 %.neg, %51 - br label %.sink.split + store i64 %52, ptr %6, align 8 + br label %15 53: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hedeee35f456d5139E.exit.i.i51" %.cast.i.i53 = ptrtoint ptr %47 to i64 @@ -7170,16 +7165,11 @@ _ZN3std2io4Read8read_buf17h001763ae1b8bad81E.exit56: ; preds = %"_ZN106_$LT$core "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h533491fc70b5a692E.exit57": ; preds = %_ZN3std2io4Read8read_buf17h001763ae1b8bad81E.exit56, %53 %.sroa.15.0717480 = phi i64 [ %.0.sroa.speculated.i.i.i54, %53 ], [ %7, %_ZN3std2io4Read8read_buf17h001763ae1b8bad81E.exit56 ] - %.sroa.9.0707579 = phi i64 [ %.cast.i.i53, %53 ], [ 0, %_ZN3std2io4Read8read_buf17h001763ae1b8bad81E.exit56 ] - %56 = add i64 %.sroa.9.0707579, %13 - store i64 %56, ptr %12, align 8 - %.0.sroa.speculated.i58 = tail call noundef i64 @llvm.umax.i64(i64 %35, i64 %56) - %57 = add i64 %.sroa.15.0717480, %13 - %.0.sroa.speculated.i59 = tail call noundef i64 @llvm.umax.i64(i64 %.0.sroa.speculated.i58, i64 %57) + %.0.sroa.speculated.i58 = tail call noundef i64 @llvm.umax.i64(i64 %35, i64 %13) + %56 = add i64 %.sroa.15.0717480, %13 + %.0.sroa.speculated.i59 = tail call noundef i64 @llvm.umax.i64(i64 %.0.sroa.speculated.i58, i64 %56) store i64 %.0.sroa.speculated.i59, ptr %34, align 8 - %58 = load i64, ptr %6, align 8, !noundef !4 - %59 = sub i64 %58, %.sroa.9.0707579 - br label %.sink.split + br label %15 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -7616,7 +7606,7 @@ define hidden void @"_ZN66_$LT$T$u20$as$u20$alloc..ffi..c_str..CString..new..Spe br i1 %exitcond.not.i, label %_ZN4core5slice6memchr12memchr_naive17hfdf024b11bff92cfE.llvm.2921359679148529085.exit, label %.lr.ph.i _ZN4core5slice6memchr12memchr_naive17hfdf024b11bff92cfE.llvm.2921359679148529085.exit: ; preds = %.lr.ph.i, %15, %11 - %.0.lcssa.i = phi i64 [ 0, %11 ], [ %7, %15 ], [ %.05.i, %.lr.ph.i ] + %.0.lcssa.i = phi i64 [ 0, %11 ], [ 0, %15 ], [ %.05.i, %.lr.ph.i ] %.sroa.0.0.i = phi i64 [ 0, %11 ], [ 0, %15 ], [ 1, %.lr.ph.i ] %17 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 %18 = insertvalue { i64, i64 } %17, i64 %.0.lcssa.i, 1 @@ -9566,14 +9556,12 @@ _ZN4core3str7pattern14TwoWaySearcher9next_back17hb22b869579dabd1dE.exit: ; preds br i1 %164, label %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17h3e064cc84751aba6E.exit.thread", label %.lr.ph "_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17h3e064cc84751aba6E.exit.thread": ; preds = %.backedge.i, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17h3e064cc84751aba6E.exit", %157, %162, %87, %.loopexit - %165 = phi i64 [ 0, %.loopexit ], [ 0, %87 ], [ %111, %162 ], [ %111, %157 ], [ %111, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17h3e064cc84751aba6E.exit" ], [ 0, %.backedge.i ] - %.015.lcssa = phi i64 [ 0, %.loopexit ], [ 0, %87 ], [ %.01559, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17h3e064cc84751aba6E.exit" ], [ %94, %157 ], [ 0, %162 ], [ 0, %.backedge.i ] - %.0.sroa.speculated.i = tail call noundef i64 @llvm.umin.i64(i64 %.015.lcssa, i64 %165) - store i64 %.0.sroa.speculated.i, ptr %9, align 8 - %166 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.015.lcssa, ptr %166, align 8 - %167 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %10, ptr %167, align 8 + %165 = phi i64 [ 0, %.loopexit ], [ 0, %87 ], [ 0, %162 ], [ %94, %157 ], [ %.01559, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17h3e064cc84751aba6E.exit" ], [ 0, %.backedge.i ] + store i64 0, ptr %9, align 8 + %165 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %.015.lcssa, ptr %165, align 8 + %166 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i64 %10, ptr %166, align 8 store i64 1, ptr %0, align 8 br label %85 } diff --git a/bench/influxdb-rs/optimized/3k3vgyqcou07q2z6.ll b/bench/influxdb-rs/optimized/3k3vgyqcou07q2z6.ll index ec88de45bab..63e1a452f17 100644 --- a/bench/influxdb-rs/optimized/3k3vgyqcou07q2z6.ll +++ b/bench/influxdb-rs/optimized/3k3vgyqcou07q2z6.ll @@ -4303,28 +4303,23 @@ define internal fastcc noundef zeroext i1 @"_ZN78_$LT$parquet..schema..types..Ba .thread14: ; preds = %41, %54, %64, %74, %31, %33 %80 = load i32, ptr %0, align 8, !range !786, !noundef !5 %trunc = trunc nuw i32 %80 to i1 - %81 = load i32, ptr %1, align 8, !range !786, !noundef !5 - br i1 %trunc, label %85, label %82 + br i1 %trunc, label %82, label %.critedge -.critedge: ; preds = %68, %58, %48, %42, %39, %2, %54, %64, %74, %31, %14, %85, %32, %16, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h150e7aca27e11e91E.exit", %18, %33, %82, %86 - %.0 = phi i1 [ %91, %86 ], [ %84, %82 ], [ false, %33 ], [ false, %18 ], [ false, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h150e7aca27e11e91E.exit" ], [ false, %16 ], [ false, %32 ], [ false, %85 ], [ false, %14 ], [ false, %31 ], [ false, %74 ], [ false, %64 ], [ false, %54 ], [ false, %2 ], [ false, %39 ], [ false, %42 ], [ false, %48 ], [ false, %58 ], [ false, %68 ] +.critedge: ; preds = %.thread14, %68, %58, %48, %42, %39, %2, %54, %64, %74, %31, %14, %81, %32, %16, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h150e7aca27e11e91E.exit", %18, %33, %83 + %.0 = phi i1 [ %88, %83 ], [ false, %33 ], [ false, %18 ], [ false, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h150e7aca27e11e91E.exit" ], [ false, %16 ], [ false, %32 ], [ false, %81 ], [ false, %14 ], [ false, %31 ], [ false, %74 ], [ false, %64 ], [ false, %54 ], [ false, %2 ], [ false, %39 ], [ false, %42 ], [ false, %48 ], [ false, %58 ], [ false, %68 ], [ true, %.thread14 ] ret i1 %.0 82: ; preds = %.thread14 - %83 = trunc nuw i32 %81 to i1 - %84 = xor i1 %83, true - br label %.critedge - -85: ; preds = %.thread14 - %.not7 = icmp eq i32 %81, 0 - br i1 %.not7, label %.critedge, label %86 - -86: ; preds = %85 - %87 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %88 = load i32, ptr %87, align 4, !noundef !5 - %89 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %90 = load i32, ptr %89, align 4, !noundef !5 - %91 = icmp eq i32 %88, %90 + %82 = load i32, ptr %1, align 8, !range !786, !noundef !5 + %.not7 = icmp eq i32 %82, 0 + br i1 %.not7, label %.critedge, label %83 + +85: ; preds = %81 + %84 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %85 = load i32, ptr %84, align 4, !noundef !5 + %86 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %87 = load i32, ptr %86, align 4, !noundef !5 + %88 = icmp eq i32 %85, %87 br label %.critedge } diff --git a/bench/influxdb-rs/optimized/4xdswox27ronf9w0.ll b/bench/influxdb-rs/optimized/4xdswox27ronf9w0.ll index 08ba8fd7d00..7187b67a387 100644 --- a/bench/influxdb-rs/optimized/4xdswox27ronf9w0.ll +++ b/bench/influxdb-rs/optimized/4xdswox27ronf9w0.ll @@ -5255,13 +5255,12 @@ default.unreachable.i.i: ; preds = %"_ZN110_$LT$core..i br i1 %.not.i.not, label %.loopexit, label %22 .loopexit: ; preds = %.loopexit.loopexit.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" - %.sink = phi i64 [ %.sroa.3.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" ], [ 0, %.loopexit.loopexit.i.i ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit.loopexit.i.i ] %storemerge = phi i64 [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" ], [ 1, %.loopexit.loopexit.i.i ] %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.0.0, ptr %21, align 8 %.sroa.222.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.222.0..sroa_idx, align 8 + store i64 0, ptr %.sroa.222.0..sroa_idx, align 8 %.sroa.323.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink, ptr %.sroa.323.0..sroa_idx, align 8 store i64 %storemerge, ptr %0, align 8 @@ -5323,13 +5322,12 @@ default.unreachable.i.i: ; preds = %"_ZN110_$LT$core..i br i1 %.not.i.not, label %.loopexit, label %22 .loopexit: ; preds = %.loopexit.loopexit.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" - %.sink = phi i64 [ %.sroa.3.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" ], [ 0, %.loopexit.loopexit.i.i ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit.loopexit.i.i ] %storemerge = phi i64 [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" ], [ 1, %.loopexit.loopexit.i.i ] %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.0.0, ptr %21, align 8 %.sroa.222.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.222.0..sroa_idx, align 8 + store i64 0, ptr %.sroa.222.0..sroa_idx, align 8 %.sroa.323.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink, ptr %.sroa.323.0..sroa_idx, align 8 store i64 %storemerge, ptr %0, align 8 @@ -5391,13 +5389,12 @@ default.unreachable.i.i: ; preds = %"_ZN110_$LT$core..i br i1 %.not.i.not, label %.loopexit, label %22 .loopexit: ; preds = %.loopexit.loopexit.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" - %.sink = phi i64 [ %.sroa.3.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" ], [ 0, %.loopexit.loopexit.i.i ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit.loopexit.i.i ] %storemerge = phi i64 [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" ], [ 1, %.loopexit.loopexit.i.i ] %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.0.0, ptr %21, align 8 %.sroa.222.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.222.0..sroa_idx, align 8 + store i64 0, ptr %.sroa.222.0..sroa_idx, align 8 %.sroa.323.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink, ptr %.sroa.323.0..sroa_idx, align 8 store i64 %storemerge, ptr %0, align 8 @@ -5464,13 +5461,12 @@ default.unreachable.i.i: ; preds = %"_ZN110_$LT$core..i br i1 %.not.i.not, label %.loopexit, label %22 .loopexit: ; preds = %.loopexit.loopexit.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" - %.sink = phi i64 [ %.sroa.3.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" ], [ 0, %.loopexit.loopexit.i.i ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit.loopexit.i.i ] %storemerge = phi i64 [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" ], [ 1, %.loopexit.loopexit.i.i ] %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.0.0, ptr %21, align 8 %.sroa.222.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.222.0..sroa_idx, align 8 + store i64 0, ptr %.sroa.222.0..sroa_idx, align 8 %.sroa.323.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink, ptr %.sroa.323.0..sroa_idx, align 8 store i64 %storemerge, ptr %0, align 8 @@ -5538,13 +5534,12 @@ default.unreachable.i.i: ; preds = %"_ZN110_$LT$core..i br i1 %.not.i.not, label %.loopexit, label %22 .loopexit: ; preds = %.loopexit.loopexit.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5ec18bec6cfdebaeE.exit.i.i" - %.sink = phi i64 [ %.sroa.3.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5ec18bec6cfdebaeE.exit.i.i" ], [ 0, %.loopexit.loopexit.i.i ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5ec18bec6cfdebaeE.exit.i.i" ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit.loopexit.i.i ] %storemerge = phi i64 [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5ec18bec6cfdebaeE.exit.i.i" ], [ 1, %.loopexit.loopexit.i.i ] %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.0.0, ptr %21, align 8 %.sroa.222.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.222.0..sroa_idx, align 8 + store i64 0, ptr %.sroa.222.0..sroa_idx, align 8 %.sroa.323.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink, ptr %.sroa.323.0..sroa_idx, align 8 store i64 %storemerge, ptr %0, align 8 @@ -5611,13 +5606,12 @@ default.unreachable.i.i: ; preds = %"_ZN110_$LT$core..i br i1 %.not.i.not, label %.loopexit, label %22 .loopexit: ; preds = %.loopexit.loopexit.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" - %.sink = phi i64 [ %.sroa.3.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" ], [ 0, %.loopexit.loopexit.i.i ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit.loopexit.i.i ] %storemerge = phi i64 [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h117a0da47eac6d29E.exit.i.i" ], [ 1, %.loopexit.loopexit.i.i ] %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.0.0, ptr %21, align 8 %.sroa.222.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.222.0..sroa_idx, align 8 + store i64 0, ptr %.sroa.222.0..sroa_idx, align 8 %.sroa.323.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink, ptr %.sroa.323.0..sroa_idx, align 8 store i64 %storemerge, ptr %0, align 8 @@ -5686,13 +5680,12 @@ default.unreachable.i.i: ; preds = %"_ZN110_$LT$core..i br i1 %.not.i.not, label %.loopexit, label %22 .loopexit: ; preds = %.loopexit.loopexit.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5ec18bec6cfdebaeE.exit.i.i" - %.sink = phi i64 [ %.sroa.3.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5ec18bec6cfdebaeE.exit.i.i" ], [ 0, %.loopexit.loopexit.i.i ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5ec18bec6cfdebaeE.exit.i.i" ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit.loopexit.i.i ] %storemerge = phi i64 [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5ec18bec6cfdebaeE.exit.i.i" ], [ 1, %.loopexit.loopexit.i.i ] %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.0.0, ptr %21, align 8 %.sroa.222.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.222.0..sroa_idx, align 8 + store i64 0, ptr %.sroa.222.0..sroa_idx, align 8 %.sroa.323.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink, ptr %.sroa.323.0..sroa_idx, align 8 store i64 %storemerge, ptr %0, align 8 diff --git a/bench/jemalloc/optimized/pa.ll b/bench/jemalloc/optimized/pa.ll index c1a61545c17..e4ac2a7238d 100644 --- a/bench/jemalloc/optimized/pa.ll +++ b/bench/jemalloc/optimized/pa.ll @@ -406,7 +406,7 @@ define hidden void @je_pa_shard_do_deferred_work(ptr noundef %0, ptr noundef %1) declare void @je_hpa_shard_do_deferred_work(ptr noundef, ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable -define hidden i64 @je_pa_shard_time_until_deferred_work(ptr noundef %0, ptr noundef %1) local_unnamed_addr #0 { +define hidden noundef i64 @je_pa_shard_time_until_deferred_work(ptr noundef %0, ptr noundef %1) local_unnamed_addr #0 { %3 = getelementptr inbounds nuw i8, ptr %1, i64 24 %4 = getelementptr inbounds nuw i8, ptr %1, i64 72 %5 = load ptr, ptr %4, align 8, !tbaa !66 @@ -425,22 +425,16 @@ define hidden i64 @je_pa_shard_time_until_deferred_work(ptr noundef %0, ptr noun %14 = getelementptr inbounds nuw i8, ptr %1, i64 62432 %15 = load ptr, ptr %14, align 8, !tbaa !66 %16 = tail call i64 %15(ptr noundef %0, ptr noundef nonnull %13) #4 - %spec.select = tail call i64 @llvm.umin.i64(i64 %16, i64 %6) br label %17 17: ; preds = %8, %12, %2 - %.0 = phi i64 [ 0, %2 ], [ %spec.select, %12 ], [ %6, %8 ] - ret i64 %.0 + ret i64 0 } -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #3 - attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #4 = { nounwind } +attributes #3 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/jemalloc/optimized/pac.ll b/bench/jemalloc/optimized/pac.ll index 79f074d2d9c..2a837641a36 100644 --- a/bench/jemalloc/optimized/pac.ll +++ b/bench/jemalloc/optimized/pac.ll @@ -315,7 +315,7 @@ define internal void @pac_dalloc_impl(ptr noundef %0, ptr noundef %1, ptr nounde declare void @je_pai_dalloc_batch_default(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2 ; Function Attrs: nounwind uwtable -define internal i64 @pac_time_until_deferred_work(ptr noundef %0, ptr noundef %1) #0 { +define internal noundef i64 @pac_time_until_deferred_work(ptr noundef %0, ptr noundef %1) #0 { %3 = getelementptr inbounds nuw i8, ptr %1, i64 58648 %4 = getelementptr inbounds nuw i8, ptr %1, i64 168 %5 = tail call i64 @je_eset_npages_get(ptr noundef nonnull %4) #9 @@ -364,7 +364,7 @@ pac_ns_until_purge.exit: ; preds = %11, %18 %32 = getelementptr inbounds nuw i8, ptr %1, i64 60504 %33 = tail call i32 @pthread_mutex_trylock(ptr noundef nonnull %32) #9 %.not.i16 = icmp eq i32 %33, 0 - br i1 %.not.i16, label %34, label %pac_ns_until_purge.exit19 + br i1 %.not.i16, label %34, label %pac_ns_until_purge.exit.thread 34: ; preds = %25 %35 = getelementptr inbounds nuw i8, ptr %1, i64 60496 @@ -390,16 +390,10 @@ pac_ns_until_purge.exit: ; preds = %11, %18 %46 = tail call i64 @je_decay_ns_until_purge(ptr noundef nonnull %26, i64 noundef %31, i64 noundef 1024) #9 store atomic i8 0, ptr %35 monotonic, align 1 %47 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull %32) #9 - br label %pac_ns_until_purge.exit19 - -pac_ns_until_purge.exit19: ; preds = %25, %45 - %.0.i17 = phi i64 [ %46, %45 ], [ 0, %25 ] - %spec.select = tail call i64 @llvm.umin.i64(i64 %.0.i17, i64 %22) br label %pac_ns_until_purge.exit.thread -pac_ns_until_purge.exit.thread: ; preds = %2, %pac_ns_until_purge.exit, %pac_ns_until_purge.exit19 - %.0 = phi i64 [ %spec.select, %pac_ns_until_purge.exit19 ], [ 0, %pac_ns_until_purge.exit ], [ 0, %2 ] - ret i64 %.0 +pac_ns_until_purge.exit.thread: ; preds = %45, %25, %2, %pac_ns_until_purge.exit + ret i64 0 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) @@ -982,9 +976,6 @@ declare ptr @je_base_ehooks_get(ptr noundef) local_unnamed_addr #2 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.usub.sat.i32(i32, i32) #8 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #8 - attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #2 = { "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/jsonnet/optimized/formatter.ll b/bench/jsonnet/optimized/formatter.ll index 0f7eee3c38f..bd973c02971 100644 --- a/bench/jsonnet/optimized/formatter.ll +++ b/bench/jsonnet/optimized/formatter.ll @@ -7416,7 +7416,7 @@ define linkonce_odr void @_ZN7jsonnet8internal11SortImports11splitFodderERKSt6ve to label %50 unwind label %113 14: ; preds = %.lr.ph, %.thread - %.01454 = phi i1 [ false, %.lr.ph ], [ %.115, %.thread ] + %.01454 = phi i1 [ false, %.lr.ph ], [ true, %.thread ] %.sroa.046.053 = phi ptr [ %8, %.lr.ph ], [ %49, %.thread ] br i1 %.01454, label %15, label %18 @@ -7518,7 +7518,6 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.ex br label %115 .thread: ; preds = %15, %19, %21, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit - %.115 = phi i1 [ true, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit ], [ true, %21 ], [ false, %19 ], [ true, %15 ] %49 = getelementptr inbounds nuw i8, ptr %.sroa.046.053, i64 40 %.not51 = icmp eq ptr %49, %10 br i1 %.not51, label %._crit_edge, label %14 @@ -13891,7 +13890,7 @@ _ZSt13move_backwardIPN7jsonnet8internal11SortImports10ImportElemES4_ET0_T_S6_S5_ br label %105 _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN7jsonnet8internal11SortImports10ImportElemESt6vectorIS5_SaIS5_EEEEmEvRT_T0_.exit: ; preds = %17 - %38 = getelementptr inbounds i8, ptr %2, i64 %19 + %38 = getelementptr inbounds nuw i8, ptr %2, i64 232 %.not12.i.i.i.i = icmp eq ptr %38, %3 br i1 %.not12.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPN7jsonnet8internal11SortImports10ImportElemESt6vectorIS5_SaIS5_EEEES6_S5_ET0_T_SC_SB_RSaIT1_E.exit, label %.lr.ph.i.i.i.i @@ -13959,7 +13958,7 @@ _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPN7jsonnet8internal1 %56 = load ptr, ptr %12, align 8, !tbaa !142 %57 = getelementptr inbounds nuw i8, ptr %56, i64 %19 store ptr %57, ptr %12, align 8, !tbaa !142 - %58 = tail call noundef ptr @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mIPN7jsonnet8internal11SortImports10ImportElemES7_EET0_T_S9_S8_(ptr noundef %2, ptr noundef %38, ptr noundef %1) + %58 = tail call noundef ptr @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mIPN7jsonnet8internal11SortImports10ImportElemES7_EET0_T_S9_S8_(ptr noundef %2, ptr noundef nonnull %38, ptr noundef %1) br label %105 59: ; preds = %5 @@ -25945,7 +25944,6 @@ _ZN7jsonnet8internalL11open_fodderEPNS0_3ASTE.exit.i: ; preds = %.lr.ph.i.i.i, % .lr.ph.outer: ; preds = %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit.thread, %.lr.ph.preheader %.01100.ph = phi i1 [ true, %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit.thread ], [ false, %.lr.ph.preheader ] - %.03661099.ph = phi i1 [ false, %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit.thread ], [ true, %.lr.ph.preheader ] %.sroa.0996.01098.ph = phi ptr [ %161, %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit.thread ], [ %124, %.lr.ph.preheader ] br label %.lr.ph @@ -25954,7 +25952,7 @@ _ZN7jsonnet8internalL11open_fodderEPNS0_3ASTE.exit.i: ; preds = %.lr.ph.i.i.i, % br i1 %.01100.ph, label %162, label %176 .lr.ph: ; preds = %.lr.ph.outer, %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit - %.03661099 = phi i1 [ false, %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit ], [ %.03661099.ph, %.lr.ph.outer ] + %.03661099 = phi i1 [ %.1367, %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit ], [ true, %.lr.ph.outer ] %.sroa.0996.01098 = phi ptr [ %160, %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit ], [ %.sroa.0996.01098.ph, %.lr.ph.outer ] br i1 %.03661099, label %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit, label %135 @@ -26029,6 +26027,7 @@ _ZN7jsonnet8internal14FixIndentation19argParamFirstFodderERKNS0_8ArgParamE.exit5 br i1 %.not.not.i, label %157, label %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit.thread _ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit: ; preds = %157, %_ZN7jsonnet8internal14FixIndentation19argParamFirstFodderERKNS0_8ArgParamE.exit505, %.lr.ph + %.1367 = xor i1 %.03661099, true %160 = getelementptr inbounds nuw i8, ptr %.sroa.0996.01098, i64 88 %.not1083 = icmp eq ptr %160, %123 br i1 %.not1083, label %._crit_edge, label %.lr.ph @@ -26595,7 +26594,6 @@ _ZN7jsonnet8internal14FixIndentation5alignERKSt6vectorINS0_13FodderElementESaIS3 .lr.ph1112.outer: ; preds = %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit621.thread, %.lr.ph1112.preheader %.03701110.ph = phi i1 [ true, %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit621.thread ], [ false, %.lr.ph1112.preheader ] - %.03731109.ph = phi i1 [ false, %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit621.thread ], [ true, %.lr.ph1112.preheader ] %.sroa.0988.01108.ph = phi ptr [ %393, %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit621.thread ], [ %371, %.lr.ph1112.preheader ] br label %.lr.ph1112 @@ -26604,7 +26602,7 @@ _ZN7jsonnet8internal14FixIndentation5alignERKSt6vectorINS0_13FodderElementESaIS3 br i1 %.03701110.ph, label %394, label %412 .lr.ph1112: ; preds = %.lr.ph1112.outer, %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit621 - %.03731109 = phi i1 [ false, %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit621 ], [ %.03731109.ph, %.lr.ph1112.outer ] + %.03731109 = phi i1 [ %.1374, %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit621 ], [ true, %.lr.ph1112.outer ] %.sroa.0988.01108 = phi ptr [ %392, %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit621 ], [ %.sroa.0988.01108.ph, %.lr.ph1112.outer ] br i1 %.03731109, label %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit621, label %381 @@ -26641,6 +26639,7 @@ _ZN7jsonnet8internalL11open_fodderEPNS0_3ASTE.exit614: ; preds = %.lr.ph.i.i610, br i1 %.not.not.i618, label %389, label %_ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit621.thread _ZN7jsonnet8internal14FixIndentation11hasNewLinesERKSt6vectorINS0_13FodderElementESaIS3_EE.exit621: ; preds = %389, %_ZN7jsonnet8internalL11open_fodderEPNS0_3ASTE.exit614, %.lr.ph1112 + %.1374 = phi i1 [ false, %.lr.ph1112 ], [ false, %_ZN7jsonnet8internalL11open_fodderEPNS0_3ASTE.exit614 ], [ true, %389 ] %392 = getelementptr inbounds nuw i8, ptr %.sroa.0988.01108, i64 32 %.not1085 = icmp eq ptr %392, %370 br i1 %.not1085, label %._crit_edge1113, label %.lr.ph1112 diff --git a/bench/libevent/optimized/event.ll b/bench/libevent/optimized/event.ll index 626caccffbd..f166ed2aeb0 100644 --- a/bench/libevent/optimized/event.ll +++ b/bench/libevent/optimized/event.ll @@ -3819,9 +3819,8 @@ event_debug_assert_is_setup_.exit: ; preds = %3, %event_debug_map 71: ; preds = %64 %.not.i155 = icmp eq i64 %69, 0 - %72 = shl i64 %69, 1 - %spec.select.i = select i1 %.not.i155, i64 8, i64 %72 - %.014.i = tail call i64 @llvm.umax.i64(i64 %spec.select.i, i64 %67) + %72 = tail call i64 @llvm.umax.i64(i64 %67, i64 8) + %spec.select.i = select i1 %.not.i155, i64 %72, i64 %67 %73 = load ptr, ptr %65, align 8 %74 = shl i64 %.014.i, 3 %75 = load ptr, ptr @mm_realloc_fn_, align 8 @@ -4349,9 +4348,8 @@ is_common_timeout.exit.thread.i: ; preds = %is_common_timeout.e 328: ; preds = %is_common_timeout.exit.thread.i %.not.i.i.i164 = icmp eq i64 %326, 0 - %329 = shl i64 %326, 1 - %spec.select.i.i.i = select i1 %.not.i.i.i164, i64 8, i64 %329 - %.014.i.i.i = call i64 @llvm.umax.i64(i64 %spec.select.i.i.i, i64 %324) + %329 = call i64 @llvm.umax.i64(i64 %324, i64 8) + %spec.select.i.i.i = select i1 %.not.i.i.i164, i64 %329, i64 %324 %330 = load ptr, ptr %321, align 8 %331 = shl i64 %.014.i.i.i, 3 %332 = load ptr, ptr @mm_realloc_fn_, align 8 @@ -4418,7 +4416,7 @@ event_mm_realloc_.exit.i.i.i: ; preds = %335, %333 br i1 %.not.i5.i.i, label %min_heap_shift_up_.exit.i.i, label %.lr.ph.i.i.i, !llvm.loop !30 min_heap_shift_up_.exit.i.i: ; preds = %353, %351, %346, %337 - %.021.lcssa.i.i.i = phi i64 [ 0, %337 ], [ %.02127.i.i.i, %351 ], [ %.028.i.i.i, %353 ], [ %.02127.i.i.i, %346 ] + %.021.lcssa.i.i.i = phi i64 [ 0, %337 ], [ %.02127.i.i.i, %351 ], [ 0, %353 ], [ %.02127.i.i.i, %346 ] %356 = load ptr, ptr %321, align 8 %357 = getelementptr inbounds nuw ptr, ptr %356, i64 %.021.lcssa.i.i.i store ptr %0, ptr %357, align 8 @@ -9468,7 +9466,7 @@ is_common_timeout.exit.thread: ; preds = %2, %is_common_timeo br i1 %.not.i.i, label %min_heap_shift_up_unconditional_.exit.i, label %71, !llvm.loop !38 min_heap_shift_up_unconditional_.exit.i: ; preds = %.backedge.i.i, %85, %80, %67 - %.0.lcssa.i.i = phi i64 [ %51, %67 ], [ %.025.i.i, %80 ], [ %72, %.backedge.i.i ], [ %.025.i.i, %85 ] + %.0.lcssa.i.i = phi i64 [ 0, %67 ], [ %.025.i.i, %80 ], [ 0, %.backedge.i.i ], [ %.025.i.i, %85 ] %89 = load ptr, ptr %38, align 8 %90 = getelementptr inbounds nuw ptr, ptr %89, i64 %.0.lcssa.i.i store ptr %47, ptr %90, align 8 @@ -10267,7 +10265,7 @@ event_queue_insert_active_later.exit.i: ; preds = %13 br label %event_callback_activate_later_nolock_.exit event_callback_activate_later_nolock_.exit: ; preds = %49, %46, %43, %39, %36, %event_queue_insert_active_later.exit.i, %13, %51, %53 - %.0 = phi i32 [ 1, %53 ], [ 0, %51 ], [ 0, %13 ], [ 1, %39 ], [ 1, %36 ], [ 1, %event_queue_insert_active_later.exit.i ], [ 1, %43 ], [ 1, %46 ], [ 1, %49 ] + %.0 = phi i32 [ 0, %53 ], [ 0, %51 ], [ 0, %13 ], [ 1, %39 ], [ 1, %36 ], [ 1, %event_queue_insert_active_later.exit.i ], [ 1, %43 ], [ 1, %46 ], [ 1, %49 ] %56 = load ptr, ptr %4, align 8 %.not19 = icmp eq ptr %56, null br i1 %.not19, label %60, label %57 diff --git a/bench/libjpeg-turbo/optimized/jdlhuff.ll b/bench/libjpeg-turbo/optimized/jdlhuff.ll index 8c46a73d16f..b6f3e659cf5 100644 --- a/bench/libjpeg-turbo/optimized/jdlhuff.ll +++ b/bench/libjpeg-turbo/optimized/jdlhuff.ll @@ -342,10 +342,10 @@ define internal i32 @decode_mcus(ptr noundef %0, ptr noundef readonly captures(n %76 = icmp sgt i32 %75, 0 br i1 %76, label %.lr.ph154, label %._crit_edge155 -.lr.ph154: ; preds = %.preheader, %126 - %indvars.iv167 = phi i64 [ %indvars.iv.next168, %126 ], [ 0, %.preheader ] - %.1102152 = phi i32 [ %.7, %126 ], [ %.0101159, %.preheader ] - %.1108151 = phi i64 [ %.7114, %126 ], [ %.0107158, %.preheader ] +.lr.ph154: ; preds = %.preheader, %116 + %indvars.iv167 = phi i64 [ %indvars.iv.next168, %116 ], [ 0, %.preheader ] + %.1102152 = phi i32 [ %.7, %116 ], [ %.0101159, %.preheader ] + %.1108151 = phi i64 [ %.7114, %116 ], [ %.0107158, %.preheader ] %77 = getelementptr inbounds nuw [10 x ptr], ptr %65, i64 0, i64 %indvars.iv167 %78 = load ptr, ptr %77, align 8, !tbaa !40 %79 = icmp slt i32 %.1102152, 8 @@ -399,12 +399,12 @@ define internal i32 @decode_mcus(ptr noundef %0, ptr noundef readonly captures(n %.3104.ph = phi i32 [ %97, %96 ], [ %104, %102 ] %.296.ph = phi i32 [ %98, %96 ], [ %100, %102 ] switch i32 %.296.ph, label %107 [ - i32 0, label %126 + i32 0, label %116 i32 16, label %106 ] 106: ; preds = %105 - br label %126 + br label %116 107: ; preds = %105 %108 = icmp slt i32 %.3104.ph, %.296.ph @@ -424,25 +424,12 @@ define internal i32 @decode_mcus(ptr noundef %0, ptr noundef readonly captures(n %.8115 = phi i64 [ %112, %111 ], [ %.3110.ph, %107 ] %.8 = phi i32 [ %113, %111 ], [ %.3104.ph, %107 ] %115 = sub nsw i32 %.8, %.296.ph - %116 = zext nneg i32 %115 to i64 - %117 = lshr i64 %.8115, %116 - %118 = trunc i64 %117 to i32 - %notmask = shl nsw i32 -1, %.296.ph - %119 = xor i32 %notmask, -1 - %120 = and i32 %118, %119 - %121 = add nsw i32 %.296.ph, -1 - %.neg = shl nsw i32 -1, %121 - %122 = add nsw i32 %120, %.neg - %123 = add nsw i32 %notmask, 1 - %isneg = icmp slt i32 %122, 0 - %124 = select i1 %isneg, i32 %123, i32 0 - %125 = add nsw i32 %124, %120 - br label %126 - -126: ; preds = %105, %106, %114 + br label %116 + +116:; preds = %105, %106, %114 %.7114 = phi i64 [ %.3110.ph, %106 ], [ %.8115, %114 ], [ %.3110.ph, %105 ] %.7 = phi i32 [ %.3104.ph, %106 ], [ %115, %114 ], [ %.3104.ph, %105 ] - %.5 = phi i32 [ 32768, %106 ], [ %125, %114 ], [ %.296.ph, %105 ] + %.5 = phi i32 [ 32768, %106 ], [ 0, %114 ], [ %.296.ph, %105 ] %127 = getelementptr inbounds nuw [10 x i32], ptr %69, i64 0, i64 %indvars.iv167 %128 = load i32, ptr %127, align 4, !tbaa !53 %129 = sext i32 %128 to i64 @@ -457,7 +444,7 @@ define internal i32 @decode_mcus(ptr noundef %0, ptr noundef readonly captures(n %135 = icmp slt i64 %indvars.iv.next168, %134 br i1 %135, label %.lr.ph154, label %._crit_edge155.loopexit, !llvm.loop !88 -._crit_edge155.loopexit: ; preds = %126 +._crit_edge155.loopexit: ; preds = %116 %.pre = load ptr, ptr %6, align 8, !tbaa !83 %.pre171 = load ptr, ptr %54, align 8, !tbaa !80 %.pre172 = load i64, ptr %59, align 8, !tbaa !85 @@ -480,7 +467,7 @@ define internal i32 @decode_mcus(ptr noundef %0, ptr noundef readonly captures(n br i1 %exitcond170.not, label %.thread136, label %.preheader, !llvm.loop !89 .thread136: ; preds = %._crit_edge155, %80, %99, %109, %52, %.preheader.lr.ph.split.us, %._crit_edge150 - %.4 = phi i32 [ %4, %._crit_edge150 ], [ %4, %.preheader.lr.ph.split.us ], [ 0, %52 ], [ %.0116157, %109 ], [ %.0116157, %99 ], [ %.0116157, %80 ], [ %4, %._crit_edge155 ] + %.4 = phi i32 [ 0, %._crit_edge150 ], [ 0, %.preheader.lr.ph.split.us ], [ 0, %52 ], [ %.0116157, %109 ], [ %.0116157, %99 ], [ %.0116157, %80 ], [ 0, %._crit_edge155 ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #4 ret i32 %.4 } diff --git a/bench/libphonenumber/optimized/stringutil.ll b/bench/libphonenumber/optimized/stringutil.ll index c14ea6819dc..995e0f43669 100644 --- a/bench/libphonenumber/optimized/stringutil.ll +++ b/bench/libphonenumber/optimized/stringutil.ll @@ -351,22 +351,19 @@ define dso_local noundef i64 @_ZN4i18n12phonenumbers7FindNthERKNSt7__cxx1112basi %4 = icmp sgt i32 %2, 0 br i1 %4, label %.lr.ph, label %._crit_edge -5: ; preds = %.lr.ph - %6 = add nuw nsw i32 %.011, 1 - %exitcond.not = icmp eq i32 %6, %2 - br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !29 - -.lr.ph: ; preds = %3, %5 - %.011 = phi i32 [ %6, %5 ], [ 0, %3 ] - %.0710 = phi i64 [ %8, %5 ], [ -1, %3 ] - %7 = add i64 %.0710, 1 - %8 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(32) %0, i8 noundef signext %1, i64 noundef %7) #19 - %9 = icmp eq i64 %8, -1 - br i1 %9, label %._crit_edge, label %5 - -._crit_edge: ; preds = %5, %.lr.ph, %3 - %.1 = phi i64 [ -1, %3 ], [ -1, %.lr.ph ], [ %8, %5 ] - ret i64 %.1 +5: ; preds = %3, %.lr.ph + %.011 = phi i32 [ %8, %5 ], [ 0, %3 ] + %.0710 = phi i64 [ %6, %5 ], [ -1, %3 ] + %5 = add i64 %.0710, 1 + %6 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(32) %0, i8 noundef signext %1, i64 noundef %5) #19 + %7 = icmp eq i64 %6, -1 + %8 = add nuw nsw i32 %.011, 1 + %exitcond.not = icmp eq i32 %8, %2 + %or.cond = select i1 %7, i1 true, i1 %exitcond.not + br i1 %or.cond, label %._crit_edge, label %5, !llvm.loop !29 + +._crit_edge:; preds = %5, %3 + ret i64 -1 } ; Function Attrs: mustprogress uwtable diff --git a/bench/libpng/optimized/pngmem.ll b/bench/libpng/optimized/pngmem.ll index ad124ee2367..2c9658a912e 100644 --- a/bench/libpng/optimized/pngmem.ll +++ b/bench/libpng/optimized/pngmem.ll @@ -294,11 +294,9 @@ png_malloc_array_checked.exit: ; preds = %23, %25 br label %._crit_edge ._crit_edge: ; preds = %27, %28 - %.pre-phi44 = phi i64 [ %30, %28 ], [ 0, %27 ] - %31 = getelementptr inbounds nuw i8, ptr %.0.i, i64 %.pre-phi44 - %32 = zext nneg i32 %3 to i64 - %33 = mul i64 %4, %32 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %31, i8 0, i64 %33, i1 false) + %31 = zext nneg i32 %3 to i64 + %32 = mul i64 %4, %31 + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %.0.i, i8 0, i64 %32, i1 false) br label %.thread .thread: ; preds = %15, %png_malloc_array_checked.exit, %13, %._crit_edge diff --git a/bench/libquic/optimized/gzwrite.ll b/bench/libquic/optimized/gzwrite.ll index a76d06af55a..e5aea8f0d17 100644 --- a/bench/libquic/optimized/gzwrite.ll +++ b/bench/libquic/optimized/gzwrite.ll @@ -168,7 +168,7 @@ gz_zero.exit: ; preds = %38, %35, %24 store i64 %80, ptr %58, align 8, !tbaa !23 %81 = sub i32 %.057, %spec.select %.not65 = icmp eq i32 %81, 0 - br i1 %.not65, label %.critedge66, label %82 + br i1 %.not65, label %gz_zero.exit.thread, label %82 82: ; preds = %63 %83 = getelementptr inbounds nuw i8, ptr %.056, i64 %76 @@ -195,15 +195,10 @@ gz_zero.exit: ; preds = %38, %35, %24 %95 = add nsw i64 %94, %92 store i64 %95, ptr %93, align 8, !tbaa !23 %96 = tail call fastcc i32 @gz_comp(ptr noundef %0, i32 noundef 0) - %97 = icmp eq i32 %96, -1 - br i1 %97, label %gz_zero.exit.thread, label %.critedge66 - -.critedge66: ; preds = %63, %91 br label %gz_zero.exit.thread -gz_zero.exit.thread: ; preds = %48, %82, %32, %91, %88, %21, %15, %5, %9, %3, %.critedge66, %14 - %.054 = phi i32 [ 0, %14 ], [ %2, %.critedge66 ], [ 0, %3 ], [ 0, %9 ], [ 0, %5 ], [ 0, %15 ], [ 0, %21 ], [ 0, %88 ], [ 0, %91 ], [ 0, %32 ], [ 0, %82 ], [ 0, %48 ] - ret i32 %.054 +gz_zero.exit.thread: ; preds = %48, %63, %82, %91, %32, %88, %21, %15, %5, %9, %3, %14 + ret i32 0 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) diff --git a/bench/libsodium/optimized/codecs.ll b/bench/libsodium/optimized/codecs.ll index 88f1378a33c..dc64499c62e 100644 --- a/bench/libsodium/optimized/codecs.ll +++ b/bench/libsodium/optimized/codecs.ll @@ -49,14 +49,8 @@ define dso_local noundef nonnull ptr @sodium_bin2hex(ptr noundef nonnull returne %exitcond.not = icmp eq i64 %29, %3 br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !4 -._crit_edge.loopexit: ; preds = %.lr.ph - %30 = shl nuw i64 %3, 1 - br label %._crit_edge - -._crit_edge: ; preds = %.preheader, %._crit_edge.loopexit - %.0.lcssa = phi i64 [ %30, %._crit_edge.loopexit ], [ 0, %.preheader ] - %31 = getelementptr i8, ptr %0, i64 %.0.lcssa - store i8 0, ptr %31, align 1 +._crit_edge.loopexit: ; preds = %.lr.ph, %.preheader + store i8 0, ptr %0, align 1 ret ptr %0 } diff --git a/bench/libuv/optimized/strscpy.ll b/bench/libuv/optimized/strscpy.ll index 49d8775f334..35d13e6e1f1 100644 --- a/bench/libuv/optimized/strscpy.ll +++ b/bench/libuv/optimized/strscpy.ll @@ -6,7 +6,7 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable define hidden range(i64 0, -1) i64 @uv__strscpy(ptr noundef writeonly captures(none) %0, ptr noundef readonly captures(none) %1, i64 noundef %2) local_unnamed_addr #0 { %.not = icmp eq i64 %2, 0 - br i1 %.not, label %._crit_edge.thread, label %.lr.ph + br i1 %.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %3, %11 %.014 = phi i64 [ %12, %11 ], [ 0, %3 ] @@ -20,21 +20,15 @@ define hidden range(i64 0, -1) i64 @uv__strscpy(ptr noundef writeonly captures(n 8: ; preds = %.lr.ph %9 = icmp slt i64 %.014, 0 %10 = select i1 %9, i64 -7, i64 %.014 - br label %._crit_edge.thread + br label %._crit_edge 11: ; preds = %.lr.ph %12 = add nuw i64 %.014, 1 %exitcond.not = icmp eq i64 %12, %2 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %11 - %13 = getelementptr i8, ptr %0, i64 %2 - %14 = getelementptr i8, ptr %13, i64 -1 - store i8 0, ptr %14, align 1 - br label %._crit_edge.thread - -._crit_edge.thread: ; preds = %3, %._crit_edge, %8 - %.012 = phi i64 [ %10, %8 ], [ -7, %._crit_edge ], [ 0, %3 ] +._crit_edge: ; preds = %11, %3, %8 + %.012 = phi i64 [ %10, %8 ], [ 0, %3 ], [ 0, %11 ] ret i64 %.012 } diff --git a/bench/libzmq/optimized/ip_resolver.ll b/bench/libzmq/optimized/ip_resolver.ll index 2aa8303ca07..5fce80fec4b 100644 --- a/bench/libzmq/optimized/ip_resolver.ll +++ b/bench/libzmq/optimized/ip_resolver.ll @@ -498,14 +498,13 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS br i1 %108, label %.sink.split, label %110 .sink.split: ; preds = %103, %93 - %.141.ph = phi i16 [ undef, %93 ], [ %106, %103 ] %109 = tail call ptr @__errno_location() #23 store i32 22, ptr %109, align 4, !tbaa !33 br label %110 110: ; preds = %.sink.split, %103, %93, %100 %111 = phi i1 [ true, %100 ], [ true, %93 ], [ true, %103 ], [ false, %.sink.split ] - %.141 = phi i16 [ 0, %100 ], [ 0, %93 ], [ %106, %103 ], [ %.141.ph, %.sink.split ] + %.141 = phi i16 [ 0, %100 ], [ 0, %93 ], [ %106, %103 ], [ 0, %.sink.split ] %112 = load ptr, ptr %13, align 8, !tbaa !35 %113 = icmp eq ptr %112, %77 br i1 %113, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i92, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i91 @@ -1352,7 +1351,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit170: ; preds = %_Z %399 = getelementptr inbounds nuw i8, ptr %0, i64 9 %400 = load i8, ptr %399, align 1, !tbaa !17, !range !22, !noundef !23 %401 = trunc nuw i8 %400 to i1 - br i1 %401, label %402, label %411 + br i1 %401, label %402, label %.thread190 402: ; preds = %398 %403 = invoke noundef i32 @_ZN3zmq13ip_resolver_t16resolve_nic_nameEPNS_9ip_addr_tEPKc(ptr noundef nonnull align 8 dereferenceable(14) %0, ptr noundef %1, ptr noundef %385) @@ -1373,7 +1372,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit170: ; preds = %_Z %.not80 = icmp eq i32 %410, 19 br i1 %.not80, label %411, label %421 -411: ; preds = %398, %408 +411: ; preds = %408 %412 = invoke noundef i32 @_ZN3zmq13ip_resolver_t19resolve_getaddrinfoEPNS_9ip_addr_tEPKc(ptr noundef nonnull align 8 dereferenceable(14) %0, ptr noundef %1, ptr noundef %385) to label %413 unwind label %414 @@ -1386,7 +1385,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit170: ; preds = %_Z cleanup br label %426 -.thread190: ; preds = %404, %397, %413 +.thread190: ; preds = %404, %398, %397, %413 %rev.i.i = call noundef i16 @llvm.bswap.i16(i16 %.343) %416 = getelementptr inbounds nuw i8, ptr %1, i64 2 store i16 %rev.i.i, ptr %416, align 2, !tbaa !3 diff --git a/bench/lightgbm/optimized/boosting.ll b/bench/lightgbm/optimized/boosting.ll index 64099e1454a..49fa122a974 100644 --- a/bench/lightgbm/optimized/boosting.ll +++ b/bench/lightgbm/optimized/boosting.ll @@ -1894,14 +1894,14 @@ _ZSt13move_backwardIPcS0_ET0_T_S2_S1_.exit: ; preds = %24, %_ZSt22__uninit br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEmEvRT_T0_.exit: ; preds = %16 - %29 = getelementptr inbounds i8, ptr %2, i64 %18 + %29 = getelementptr inbounds nuw i8, ptr %2, i64 1 %.not.i.i.i.i.i.i.i.i = icmp eq ptr %3, %29 br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES2_cET0_T_S8_S7_RSaIT1_E.exit, label %30 30: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEmEvRT_T0_.exit %31 = ptrtoint ptr %29 to i64 %32 = sub i64 %6, %31 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %12, ptr align 1 %29, i64 %32, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %12, ptr nonnull align 1 %29, i64 %32, i1 false) %.pre = load ptr, ptr %11, align 8, !tbaa !78 br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES2_cET0_T_S8_S7_RSaIT1_E.exit @@ -1922,11 +1922,8 @@ _ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit53: ; preds = %_ZSt2 %37 = phi ptr [ %35, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES2_cET0_T_S8_S7_RSaIT1_E.exit ], [ %.pre74, %36 ] %38 = getelementptr inbounds nuw i8, ptr %37, i64 %18 store ptr %38, ptr %11, align 8, !tbaa !78 - %.not.i.i.i.i.i54 = icmp eq ptr %12, %1 - br i1 %.not.i.i.i.i.i54, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit, label %39 - -39: ; preds = %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit53 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr align 1 %2, i64 %18, i1 false) + %39 = load i8, ptr %2, align 1 + store i8 %39, ptr %1, align 1 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit 40: ; preds = %5 @@ -1993,7 +1990,7 @@ _ZNSt12_Vector_baseIcSaIcEE13_M_deallocateEPcm.exit: ; preds = %62, %64 store ptr %65, ptr %9, align 8, !tbaa !77 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit -_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit: ; preds = %39, %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit53, %_ZSt13move_backwardIPcS0_ET0_T_S2_S1_.exit, %_ZNSt12_Vector_baseIcSaIcEE13_M_deallocateEPcm.exit, %4 +_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit: ; preds = %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit53, %_ZSt13move_backwardIPcS0_ET0_T_S2_S1_.exit, %_ZNSt12_Vector_baseIcSaIcEE13_M_deallocateEPcm.exit, %4 ret void } @@ -9301,7 +9298,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit43: ; preds = %_ZN _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i44: ; preds = %.thread, %93 %.024.lcssa101110 = phi i64 [ 0, %.thread ], [ %.125, %93 ] - %.lcssa68102109 = phi i64 [ %26, %.thread ], [ %90, %93 ] + %.lcssa68102109 = phi i64 [ 0, %.thread ], [ %90, %93 ] %96 = getelementptr inbounds nuw i8, ptr %9, i64 16 store ptr %96, ptr %9, align 8, !tbaa !7, !alias.scope !389 %97 = load ptr, ptr %7, align 8, !tbaa !13, !noalias !389 diff --git a/bench/llama.cpp/optimized/llama-kv-cache.ll b/bench/llama.cpp/optimized/llama-kv-cache.ll index 4a480f6e854..f129ea151d9 100644 --- a/bench/llama.cpp/optimized/llama-kv-cache.ll +++ b/bench/llama.cpp/optimized/llama-kv-cache.ll @@ -2030,7 +2030,6 @@ define noundef i32 @_Z23llama_kv_cache_cell_maxRK14llama_kv_cache(ptr noundef no 7: ; preds = %.lr.ph, %16 %indvars.iv = phi i64 [ %6, %.lr.ph ], [ %indvars.iv.next, %16 ] %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %8 = and i64 %indvars.iv.next, 4294967295 %9 = getelementptr inbounds nuw %struct.llama_kv_cell, ptr %5, i64 %8 %10 = load i32, ptr %9, align 8, !tbaa !131 %11 = icmp sgt i32 %10, -1 @@ -2043,9 +2042,8 @@ define noundef i32 @_Z23llama_kv_cache_cell_maxRK14llama_kv_cache(ptr noundef no br i1 %15, label %16, label %._crit_edge.loopexit.split.loop.exit 16: ; preds = %7, %12 - %17 = and i64 %indvars.iv.next, 4294967295 - %.not = icmp eq i64 %17, 0 - br i1 %.not, label %._crit_edge, label %7, !llvm.loop !153 + %.not.wide = icmp eq i64 %indvars.iv.next, 0 + br i1 %.not.wide, label %._crit_edge, label %7, !llvm.loop !153 ._crit_edge.loopexit.split.loop.exit: ; preds = %12 %18 = trunc nuw i64 %indvars.iv to i32 diff --git a/bench/lodepng/optimized/lodepng_util.ll b/bench/lodepng/optimized/lodepng_util.ll index 7e2743d5034..e8e11e53f5c 100644 --- a/bench/lodepng/optimized/lodepng_util.ll +++ b/bench/lodepng/optimized/lodepng_util.ll @@ -7459,14 +7459,14 @@ _ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit: ; preds = %24, %_ZSt22__uninit br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES6_ET0_T_S8_S7_.exit _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEmEvRT_T0_.exit: ; preds = %16 - %29 = getelementptr inbounds i8, ptr %2, i64 %18 + %29 = getelementptr inbounds nuw i8, ptr %2, i64 1 %.not.i.i.i.i.i.i.i.i = icmp eq ptr %3, %29 br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_hET0_T_S8_S7_RSaIT1_E.exit, label %30 30: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEmEvRT_T0_.exit %31 = ptrtoint ptr %29 to i64 %32 = sub i64 %6, %31 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %12, ptr align 1 %29, i64 %32, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %12, ptr nonnull align 1 %29, i64 %32, i1 false) %.pre = load ptr, ptr %11, align 8, !tbaa !38 br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_hET0_T_S8_S7_RSaIT1_E.exit @@ -7487,11 +7487,8 @@ _ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit53: ; preds = %_ZSt2 %37 = phi ptr [ %35, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_hET0_T_S8_S7_RSaIT1_E.exit ], [ %.pre74, %36 ] %38 = getelementptr inbounds nuw i8, ptr %37, i64 %18 store ptr %38, ptr %11, align 8, !tbaa !38 - %.not.i.i.i.i.i54 = icmp eq ptr %12, %1 - br i1 %.not.i.i.i.i.i54, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES6_ET0_T_S8_S7_.exit, label %39 - -39: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit53 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr align 1 %2, i64 %18, i1 false) + %39 = load i8, ptr %2, align 1 + store i8 %39, ptr %1, align 1 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES6_ET0_T_S8_S7_.exit 40: ; preds = %5 @@ -7559,7 +7556,7 @@ _ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit: ; preds = %62, %64 store ptr %66, ptr %9, align 8, !tbaa !35 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES6_ET0_T_S8_S7_.exit -_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES6_ET0_T_S8_S7_.exit: ; preds = %39, %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit53, %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit, %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit, %4 +_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES6_ET0_T_S8_S7_.exit: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit53, %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit, %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit, %4 ret void } @@ -7611,14 +7608,14 @@ _ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit: ; preds = %24, %_ZSt22__uninit br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEENS1_IPhS6_EEET0_T_SB_SA_.exit _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEmEvRT_T0_.exit: ; preds = %16 - %29 = getelementptr inbounds i8, ptr %2, i64 %18 + %29 = getelementptr inbounds nuw i8, ptr %2, i64 1 %.not.i.i.i.i.i.i.i.i = icmp eq ptr %3, %29 br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E.exit, label %30 30: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEmEvRT_T0_.exit %31 = ptrtoint ptr %29 to i64 %32 = sub i64 %6, %31 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %12, ptr align 1 %29, i64 %32, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %12, ptr nonnull align 1 %29, i64 %32, i1 false) %.pre = load ptr, ptr %11, align 8, !tbaa !38 br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E.exit @@ -7639,11 +7636,8 @@ _ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit53: ; preds = %_ZSt2 %37 = phi ptr [ %35, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E.exit ], [ %.pre74, %36 ] %38 = getelementptr inbounds nuw i8, ptr %37, i64 %18 store ptr %38, ptr %11, align 8, !tbaa !38 - %.not.i.i.i.i.i54 = icmp eq ptr %12, %1 - br i1 %.not.i.i.i.i.i54, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEENS1_IPhS6_EEET0_T_SB_SA_.exit, label %39 - -39: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit53 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr align 1 %2, i64 %18, i1 false) + %39 = load i8, ptr %2, align 1 + store i8 %39, ptr %1, align 1 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEENS1_IPhS6_EEET0_T_SB_SA_.exit 40: ; preds = %5 @@ -7711,7 +7705,7 @@ _ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit: ; preds = %62, %64 store ptr %66, ptr %9, align 8, !tbaa !35 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEENS1_IPhS6_EEET0_T_SB_SA_.exit -_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEENS1_IPhS6_EEET0_T_SB_SA_.exit: ; preds = %39, %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit53, %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit, %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit, %4 +_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEENS1_IPhS6_EEET0_T_SB_SA_.exit: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit53, %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit, %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit, %4 ret void } @@ -7763,14 +7757,14 @@ _ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEET0_T_SA_S9_.ex br label %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEET0_T_SA_S9_.exit59 _ZSt7advanceIPKhmEvRT_T0_.exit: ; preds = %16 - %29 = getelementptr inbounds i8, ptr %2, i64 %18 + %29 = getelementptr inbounds nuw i8, ptr %2, i64 1 %.not.i.i.i.i.i.i.i.i = icmp eq ptr %3, %29 br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit, label %30 30: ; preds = %_ZSt7advanceIPKhmEvRT_T0_.exit %31 = ptrtoint ptr %29 to i64 %32 = sub i64 %6, %31 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %12, ptr align 1 %29, i64 %32, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %12, ptr nonnull align 1 %29, i64 %32, i1 false) %.pre = load ptr, ptr %11, align 8, !tbaa !38 br label %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit @@ -7791,11 +7785,8 @@ _ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit57: ; preds = %_ZSt2 %37 = phi ptr [ %35, %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit ], [ %.pre76, %36 ] %38 = getelementptr inbounds nuw i8, ptr %37, i64 %18 store ptr %38, ptr %11, align 8, !tbaa !38 - %.not.i.i.i.i.i58 = icmp eq ptr %12, %1 - br i1 %.not.i.i.i.i.i58, label %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEET0_T_SA_S9_.exit59, label %39 - -39: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit57 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr align 1 %2, i64 %18, i1 false) + %39 = load i8, ptr %2, align 1 + store i8 %39, ptr %1, align 1 br label %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEET0_T_SA_S9_.exit59 40: ; preds = %5 @@ -7863,7 +7854,7 @@ _ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit: ; preds = %62, %64 store ptr %66, ptr %9, align 8, !tbaa !35 br label %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEET0_T_SA_S9_.exit59 -_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEET0_T_SA_S9_.exit59: ; preds = %39, %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit57, %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit, %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEET0_T_SA_S9_.exit, %4 +_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEET0_T_SA_S9_.exit59: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit57, %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit, %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEET0_T_SA_S9_.exit, %4 ret void } diff --git a/bench/logos-rs/optimized/1w5j7pvycf8p27lv.ll b/bench/logos-rs/optimized/1w5j7pvycf8p27lv.ll index 50f9517c0bb..3662a02b10d 100644 --- a/bench/logos-rs/optimized/1w5j7pvycf8p27lv.ll +++ b/bench/logos-rs/optimized/1w5j7pvycf8p27lv.ll @@ -5580,13 +5580,12 @@ define void @"_ZN5alloc11collections5btree6search142_$LT$impl$u20$alloc..collect br i1 %24, label %.loopexit56, label %26 .loopexit56: ; preds = %.loopexit, %22 - %.sink = phi i64 [ %.sroa.3.0, %22 ], [ 0, %.loopexit ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %23, %22 ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit ] %storemerge = phi i64 [ 0, %22 ], [ 1, %.loopexit ] %25 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.0.0, ptr %25, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.2.0..sroa_idx, align 8 + store i64 0, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.320.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink, ptr %.sroa.320.0..sroa_idx, align 8 store i64 %storemerge, ptr %0, align 8 @@ -5655,13 +5654,12 @@ define void @"_ZN5alloc11collections5btree6search142_$LT$impl$u20$alloc..collect br i1 %24, label %.loopexit56, label %26 .loopexit56: ; preds = %.loopexit, %22 - %.sink = phi i64 [ %.sroa.3.0, %22 ], [ 0, %.loopexit ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %23, %22 ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit ] %storemerge = phi i64 [ 0, %22 ], [ 1, %.loopexit ] %25 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.0.0, ptr %25, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.2.0..sroa_idx, align 8 + store i64 0, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.320.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink, ptr %.sroa.320.0..sroa_idx, align 8 store i64 %storemerge, ptr %0, align 8 @@ -5730,13 +5728,12 @@ define void @"_ZN5alloc11collections5btree6search142_$LT$impl$u20$alloc..collect br i1 %24, label %.loopexit56, label %26 .loopexit56: ; preds = %.loopexit, %22 - %.sink = phi i64 [ %.sroa.3.0, %22 ], [ 0, %.loopexit ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %23, %22 ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit ] %storemerge = phi i64 [ 0, %22 ], [ 1, %.loopexit ] %25 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.0.0, ptr %25, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.2.0..sroa_idx, align 8 + store i64 0, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.320.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink, ptr %.sroa.320.0..sroa_idx, align 8 store i64 %storemerge, ptr %0, align 8 @@ -5805,13 +5802,12 @@ define void @"_ZN5alloc11collections5btree6search142_$LT$impl$u20$alloc..collect br i1 %24, label %.loopexit56, label %26 .loopexit56: ; preds = %.loopexit, %22 - %.sink = phi i64 [ %.sroa.3.0, %22 ], [ 0, %.loopexit ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %23, %22 ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit ] %storemerge = phi i64 [ 0, %22 ], [ 1, %.loopexit ] %25 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.0.0, ptr %25, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.2.0..sroa_idx, align 8 + store i64 0, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.320.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink, ptr %.sroa.320.0..sroa_idx, align 8 store i64 %storemerge, ptr %0, align 8 @@ -5880,13 +5876,12 @@ define void @"_ZN5alloc11collections5btree6search142_$LT$impl$u20$alloc..collect br i1 %24, label %.loopexit56, label %26 .loopexit56: ; preds = %.loopexit, %22 - %.sink = phi i64 [ %.sroa.3.0, %22 ], [ 0, %.loopexit ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %23, %22 ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit ] %storemerge = phi i64 [ 0, %22 ], [ 1, %.loopexit ] %25 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.0.0, ptr %25, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.2.0..sroa_idx, align 8 + store i64 0, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.320.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink, ptr %.sroa.320.0..sroa_idx, align 8 store i64 %storemerge, ptr %0, align 8 diff --git a/bench/logos-rs/optimized/4pdh61scdnltfxqx.ll b/bench/logos-rs/optimized/4pdh61scdnltfxqx.ll index 623ef9caf0c..e1711a7363b 100644 --- a/bench/logos-rs/optimized/4pdh61scdnltfxqx.ll +++ b/bench/logos-rs/optimized/4pdh61scdnltfxqx.ll @@ -347,26 +347,25 @@ define hidden void @_ZN13logos_codegen5graph4rope4Rope6prefix17h0716dd12a0758169 call void @"_ZN98_$LT$logos_codegen..graph..rope..Pattern$u20$as$u20$core..convert..From$LT$$RF$$u5b$T$u5d$$GT$$GT$4from17h584631ae625851e0E"(ptr nonnull sret([24 x i8]) align 8 %4, ptr align 1 %25, i64 %18) %26 = getelementptr inbounds nuw i8, ptr %1, i64 24 %27 = load i32, ptr %26, align 8 - %28 = getelementptr inbounds nuw i8, ptr %2, i64 24 - %29 = load i32, ptr %28, align 8 - %30 = icmp eq i32 %27, 0 - br i1 %30, label %34, label %32 + %28 = icmp eq i32 %27, 0 + br i1 %28, label %34, label %30 31: ; preds = %35, %34, %20 ret void 32: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h11190927024b44d9E.exit" - %33 = icmp eq i32 %29, 0 + %31 = getelementptr inbounds nuw i8, ptr %2, i64 24 + %32 = load i32, ptr %31, align 8 + %33 = icmp eq i32 %32, 0 br i1 %33, label %34, label %35 34: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h11190927024b44d9E.exit", %32 - %.sroa.08.0 = phi i32 [ %27, %32 ], [ %29, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h11190927024b44d9E.exit" ] - %.pn = phi ptr [ %1, %32 ], [ %2, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h11190927024b44d9E.exit" ] + %.sroa.08.0 = phi ptr [ %1, %32 ], [ %2, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h11190927024b44d9E.exit" ] %.sroa.4.0.in = getelementptr inbounds nuw i8, ptr %.pn, i64 28 %.sroa.4.0 = load i32, ptr %.sroa.4.0.in, align 4 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) %.sroa.26.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i32 %.sroa.08.0, ptr %.sroa.26.0..sroa_idx, align 8 + store i32 %27, ptr %.sroa.26.0..sroa_idx, align 8 %.sroa.37.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 %.sroa.4.0, ptr %.sroa.37.0..sroa_idx, align 4 br label %31 diff --git a/bench/logos-rs/optimized/51e3klwwljv15fz2.ll b/bench/logos-rs/optimized/51e3klwwljv15fz2.ll index 0d0924f0872..4013398d183 100644 --- a/bench/logos-rs/optimized/51e3klwwljv15fz2.ll +++ b/bench/logos-rs/optimized/51e3klwwljv15fz2.ll @@ -36,22 +36,21 @@ define void @"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20 define { i64, i8 } @"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h04b2041566bb8069E"(ptr align 8 %0) unnamed_addr #0 personality ptr @rust_eh_personality { %2 = tail call i8 @"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h17cfa0388baf90ccE"(ptr align 8 %0) %3 = icmp eq i8 %2, 2 - br i1 %3, label %9, label %4 + br i1 %3, label %8, label %4 4: ; preds = %1 - %5 = and i8 %2, 1 - %6 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %7 = load i64, ptr %6, align 8 - %8 = add i64 %7, 1 - store i64 %8, ptr %6, align 8 - br label %9 - -9: ; preds = %1, %4 - %.sroa.2.0 = phi i8 [ %5, %4 ], [ 2, %1 ] - %.sroa.0.0 = phi i64 [ %7, %4 ], [ undef, %1 ] - %10 = insertvalue { i64, i8 } poison, i64 %.sroa.0.0, 0 - %11 = insertvalue { i64, i8 } %10, i8 %.sroa.2.0, 1 - ret { i64, i8 } %11 + %5 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %6 = load i64, ptr %5, align 8 + %7 = add i64 %6, 1 + store i64 %7, ptr %5, align 8 + br label %8 + +8: ; preds = %1, %4 + %.sroa.2.0 = phi i8 [ 0, %4 ], [ 2, %1 ] + %.sroa.2.0 = phi i64 [ %6, %4 ], [ undef, %1 ] + %9 = insertvalue { i64, i8 } poison, i64 %.sroa.0.0, 0 + %10 = insertvalue { i64, i8 } %9, i8 %.sroa.2.0, 1 + ret { i64, i8 } %10 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/lua/optimized/lobject.ll b/bench/lua/optimized/lobject.ll index 6096ca9f848..e739804ed3c 100644 --- a/bench/lua/optimized/lobject.ll +++ b/bench/lua/optimized/lobject.ll @@ -103,55 +103,30 @@ luaO_ceillog2.exit: ; preds = %.lr.ph.i, %10 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable -define hidden i64 @luaO_applyparam(i8 noundef zeroext %0, i64 noundef %1) local_unnamed_addr #2 { - %3 = zext i8 %0 to i32 - %4 = and i32 %3, 15 +define hidden range(i64 -72057594037927936, 2233785415175765986) i64 @luaO_applyparam(i8 noundef zeroext %0, i64 noundef %1) local_unnamed_addr #2 { + %3 = and i8 %0, 15 + %4 = zext nneg i8 %3 to i32 %.not = icmp ult i8 %0, 16 - %5 = lshr i32 %3, 4 - %6 = or disjoint i32 %4, 16 - %7 = add nsw i32 %5, -8 - %.023 = select i1 %.not, i32 %4, i32 %6 - %.0 = select i1 %.not, i32 -7, i32 %7 - %8 = icmp sgt i32 %.0, -1 - br i1 %8, label %9, label %17 + %5 = or disjoint i32 %4, 16 + %spec.select = select i1 %.not, i32 %4, i32 %5 + %spec.select31 = select i1 %.not, i64 7, i64 8 + %6 = icmp slt i64 %1, 297528130221121800 + br i1 %6, label %7, label %11 9: ; preds = %2 - %10 = zext nneg i32 %.0 to i64 - %11 = lshr i64 297528130221121800, %10 - %12 = icmp slt i64 %1, %11 - br i1 %12, label %13, label %32 - -13: ; preds = %9 - %14 = zext nneg i32 %.023 to i64 - %15 = mul nsw i64 %1, %14 - %16 = shl i64 %15, %10 - br label %32 - -17: ; preds = %2 - %18 = sub nsw i32 0, %.0 - %19 = icmp slt i64 %1, 297528130221121800 - br i1 %19, label %20, label %25 - -20: ; preds = %17 - %21 = zext nneg i32 %.023 to i64 - %22 = mul nsw i64 %1, %21 - %23 = zext nneg i32 %18 to i64 - %24 = ashr i64 %22, %23 - br label %32 - -25: ; preds = %17 - %26 = zext nneg i32 %18 to i64 - %27 = lshr i64 %1, %26 - %28 = icmp samesign ult i64 %27, 297528130221121800 - br i1 %28, label %29, label %32 - -29: ; preds = %25 - %30 = zext nneg i32 %.023 to i64 - %31 = mul nuw nsw i64 %27, %30 - br label %32 - -32: ; preds = %25, %9, %29, %20, %13 - %.024 = phi i64 [ %16, %13 ], [ %24, %20 ], [ %31, %29 ], [ 9223372036854775807, %9 ], [ 9223372036854775807, %25 ] + %10 = zext nneg i32 %spec.select to i64 + %9 = mul nsw i64 %1, %10 + %10 = ashr i64 %9, %spec.select31 + br label %15 + +13: ; preds = %2 + %12 = lshr i64 %1, %spec.select31 + %13 = zext nneg i32 %spec.select to i64 + %14 = mul nuw nsw i64 %12, %13 + br label %15 + +17: ; preds = %11, %7 + %.024 = phi i64 [ %10, %7 ], [ %14, %11 ] ret i64 %.024 } diff --git a/bench/luajit/optimized/lj_tab.ll b/bench/luajit/optimized/lj_tab.ll index 95469ea41eb..29976c66982 100644 --- a/bench/luajit/optimized/lj_tab.ll +++ b/bench/luajit/optimized/lj_tab.ll @@ -2230,60 +2230,53 @@ define hidden range(i32 -1, 2) i32 @lj_tab_next(ptr noundef readonly captures(no define hidden i32 @lj_tab_len(ptr noundef readonly captures(none) %0) local_unnamed_addr #7 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 48 %3 = load i32, ptr %2, align 8, !tbaa !4 - %.not = icmp eq i32 %3, 0 - %4 = zext i32 %3 to i64 - %5 = add nsw i64 %4, -1 - %.020 = select i1 %.not, i64 0, i64 %5 - %.not24 = icmp eq i64 %.020, 0 - br i1 %.not24, label %21, label %6 - -6: ; preds = %1 - %7 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %8 = load i64, ptr %7, align 8, !tbaa !12 - %9 = inttoptr i64 %8 to ptr - %10 = getelementptr inbounds nuw %union.TValue, ptr %9, i64 %.020 - %11 = load i64, ptr %10, align 8, !tbaa !13 - %12 = icmp eq i64 %11, -1 - br i1 %12, label %.preheader, label %21, !prof !63 - -.preheader: ; preds = %6 - %.not28 = icmp eq i64 %.020, 1 - br i1 %.not28, label %._crit_edge, label %.lr.ph - -.lr.ph: ; preds = %.preheader, %.lr.ph - %.01927 = phi i64 [ %.019., %.lr.ph ], [ 0, %.preheader ] - %.12126 = phi i64 [ %..121, %.lr.ph ], [ %.020, %.preheader ] - %13 = add i64 %.01927, %.12126 - %14 = lshr i64 %13, 1 - %15 = getelementptr inbounds nuw %union.TValue, ptr %9, i64 %14 - %16 = load i64, ptr %15, align 8, !tbaa !13 - %17 = icmp eq i64 %16, -1 - %..121 = select i1 %17, i64 %14, i64 %.12126 - %.019. = select i1 %17, i64 %.01927, i64 %14 - %18 = sub nsw i64 %..121, %.019. - %19 = icmp ugt i64 %18, 1 - br i1 %19, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !69 - -._crit_edge.loopexit: ; preds = %.lr.ph - %20 = trunc i64 %.019. to i32 - br label %._crit_edge + %.not = icmp ne i32 %3, 0 + %spec.select = sext i1 %.not to i64 + br i1 %.not, label %4, label %20 -21: ; preds = %6, %1 - %22 = getelementptr inbounds nuw i8, ptr %0, i64 52 - %23 = load i32, ptr %22, align 4, !tbaa !14 - %.not25 = icmp eq i32 %23, 0 - br i1 %.not25, label %26, label %24 +4:; preds = %1 + %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %6 = load i64, ptr %5, align 8, !tbaa !12 + %7 = inttoptr i64 %6 to ptr + %7 = getelementptr inbounds nuw i8, ptr %7, i64 -8 + %8 = load i64, ptr %7, align 8, !tbaa !13 + %10 = icmp eq i64 %8, -1 + br i1 %10, label %.preheader, label %20, !prof !63 + +.preheader:; preds = %4, %.preheader + %.01925 = phi i64 [ %.019., %.preheader ], [ 0, %4 ] + %.12124 = phi i64 [ %..121, %.preheader ], [ -1, %4 ] + %11 = add i64 %.01925, %.12124 + %12 = lshr i64 %11, 1 + %13 = getelementptr inbounds nuw %union.TValue, ptr %7, i64 %12 + %14 = load i64, ptr %13, align 8, !tbaa !13 + %15 = icmp eq i64 %14, -1 + %..121 = select i1 %15, i64 %12, i64 %.12124 + %.019. = select i1 %15, i64 %.01925, i64 %12 + %16 = sub i64 %..121, %.019. + %17 = icmp ugt i64 %16, 1 + br i1 %17, label %.preheader, label %18, !llvm.loop !69 + +18:; preds = %.preheader + %19 = trunc i64 %.019. to i32 + br label %27 -24: ; preds = %21 - %25 = tail call fastcc i32 @tab_len_slow(ptr noundef nonnull %0, i64 noundef %.020) - br label %._crit_edge +24: ; preds = %4, %1 + %21 = getelementptr inbounds nuw i8, ptr %0, i64 52 + %22 = load i32, ptr %21, align 4, !tbaa !14 + %.not = icmp eq i32 %22, 0 + br i1 %.not, label %25, label %23 -26: ; preds = %21 - %27 = trunc nuw i64 %.020 to i32 +26: ; preds = %20 + %24 = tail call fastcc i32 @tab_len_slow(ptr noundef nonnull %0, i64 noundef %spec.select) br label %._crit_edge -._crit_edge: ; preds = %.preheader, %._crit_edge.loopexit, %24, %26 - %.0 = phi i32 [ %25, %24 ], [ %27, %26 ], [ 0, %.preheader ], [ %20, %._crit_edge.loopexit ] +25: ; preds = %20 + %26 = sext i1 %.not.not to i32 + br label %27 + +._crit_edge: ; preds = %23, %25, %18 + %.0 = phi i32 [ %19, %18 ], [ %24, %23 ], [ %26, %25 ] ret i32 %.0 } diff --git a/bench/luau/optimized/lbuiltins.ll b/bench/luau/optimized/lbuiltins.ll index 31d0cecb71b..d142a66aee8 100644 --- a/bench/luau/optimized/lbuiltins.ll +++ b/bench/luau/optimized/lbuiltins.ll @@ -2294,14 +2294,12 @@ define internal noundef range(i32 -1, -2147483648) i32 @_ZL13luauF_tunpackP9lua_ br label %.lr.ph ._crit_edge: ; preds = %.lr.ph, %47 - %.pre-phi = phi i64 [ 0, %47 ], [ %wide.trip.count, %.lr.ph ] %50 = getelementptr inbounds nuw i8, ptr %0, i64 32 %51 = load ptr, ptr %50, align 8, !tbaa !60 %52 = getelementptr inbounds nuw i8, ptr %51, i64 16 %53 = load ptr, ptr %52, align 8, !tbaa !61 - %54 = getelementptr inbounds nuw %struct.lua_TValue, ptr %1, i64 %.pre-phi - %55 = icmp ult ptr %53, %54 - br i1 %55, label %58, label %.thread49 + %54 = icmp ult ptr %53, %1 + br i1 %54, label %57, label %.thread49 .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] @@ -2313,7 +2311,7 @@ define internal noundef range(i32 -1, -2147483648) i32 @_ZL13luauF_tunpackP9lua_ br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !64 58: ; preds = %._crit_edge - store ptr %54, ptr %52, align 8, !tbaa !61 + store ptr %1, ptr %52, align 8, !tbaa !61 br label %.thread49 .thread49: ; preds = %13, %17, %21, %26, %32, %34, %37, %6, %9, %58, %._crit_edge diff --git a/bench/luau/optimized/lcorolib.ll b/bench/luau/optimized/lcorolib.ll index 18fcd37392a..35e1366fd68 100644 --- a/bench/luau/optimized/lcorolib.ll +++ b/bench/luau/optimized/lcorolib.ll @@ -80,30 +80,19 @@ define internal noundef i32 @_ZL9coresumeyP9lua_State(ptr noundef %0) #0 { _ZL15interruptThreadP9lua_StateS0_.exit: ; preds = %17, %22 %23 = tail call noundef i32 @_Z9lua_breakP9lua_State(ptr noundef nonnull %0) - br label %30 + br label %25 24: ; preds = %4 - %25 = icmp slt i32 %15, 0 - br i1 %25, label %26, label %27 - -26: ; preds = %24 - tail call void @_Z15lua_pushbooleanP9lua_Statei(ptr noundef nonnull %0, i32 noundef 0) - br label %_ZL14coresumefinishP9lua_Statei.exit - -27: ; preds = %24 - tail call void @_Z15lua_pushbooleanP9lua_Statei(ptr noundef nonnull %0, i32 noundef 1) - %28 = add nuw nsw i32 %15, 1 - %29 = xor i32 %15, -1 - br label %_ZL14coresumefinishP9lua_Statei.exit - -_ZL14coresumefinishP9lua_Statei.exit: ; preds = %26, %27 - %.sink.i = phi i32 [ %29, %27 ], [ -2, %26 ] - %.0.i = phi i32 [ %28, %27 ], [ 2, %26 ] - tail call void @_Z10lua_insertP9lua_Statei(ptr noundef nonnull %0, i32 noundef %.sink.i) - br label %30 - -30: ; preds = %_ZL14coresumefinishP9lua_Statei.exit, %_ZL15interruptThreadP9lua_StateS0_.exit - %.0 = phi i32 [ %23, %_ZL15interruptThreadP9lua_StateS0_.exit ], [ %.0.i, %_ZL14coresumefinishP9lua_Statei.exit ] + %25 = icmp sgt i32 %15, -1 + %. = zext i1 %25 to i32 + %.15 = select i1 %24, i32 -1, i32 -2 + %.16 = select i1 %24, i32 1, i32 2 + tail call void @_Z15lua_pushbooleanP9lua_Statei(ptr noundef nonnull %0, i32 noundef %.) + tail call void @_Z10lua_insertP9lua_Statei(ptr noundef nonnull %0, i32 noundef %.15) + br label %25 + +25: ; preds = %24, %_ZL15interruptThreadP9lua_StateS0_.exit + %.0 = phi i32 [ %23, %_ZL15interruptThreadP9lua_StateS0_.exit ], [ %.16, %24 ] ret i32 %.0 } @@ -417,7 +406,7 @@ _ZL15interruptThreadP9lua_StateS0_.exit: ; preds = %14, %19 unreachable _ZL13auxwrapfinishP9lua_Statei.exit: ; preds = %21, %_ZL15interruptThreadP9lua_StateS0_.exit - %.0 = phi i32 [ %20, %_ZL15interruptThreadP9lua_StateS0_.exit ], [ %12, %21 ] + %.0 = phi i32 [ %20, %_ZL15interruptThreadP9lua_StateS0_.exit ], [ 0, %21 ] ret i32 %.0 } @@ -499,7 +488,7 @@ _ZL13auxwrapfinishP9lua_Statei.exit: ; preds = %_ZL13auxresumecontP } ; Function Attrs: mustprogress uwtable -define internal fastcc noundef i32 @_ZL9auxresumeP9lua_StateS0_i(ptr noundef %0, ptr noundef %1, i32 noundef %2) unnamed_addr #0 { +define internal fastcc noundef range(i32 -2, 1) i32 @_ZL9auxresumeP9lua_StateS0_i(ptr noundef %0, ptr noundef %1, i32 noundef %2) unnamed_addr #0 { %4 = getelementptr inbounds nuw i8, ptr %1, i64 3 %5 = load i8, ptr %4, align 1, !tbaa !36 %.not = icmp eq i8 %5, 1 @@ -598,7 +587,7 @@ define internal fastcc noundef i32 @_ZL9auxresumeP9lua_StateS0_i(ptr noundef %0, br label %52 52: ; preds = %8, %51, %48, %32, %49 - %.1 = phi i32 [ -1, %8 ], [ -1, %51 ], [ %41, %48 ], [ 0, %32 ], [ -2, %49 ] + %.1 = phi i32 [ -1, %8 ], [ -1, %51 ], [ 0, %48 ], [ 0, %32 ], [ -2, %49 ] ret i32 %.1 } diff --git a/bench/lvgl/optimized/lv_obj_tree.ll b/bench/lvgl/optimized/lv_obj_tree.ll index ad730b3d01d..d2bb56c084f 100644 --- a/bench/lvgl/optimized/lv_obj_tree.ll +++ b/bench/lvgl/optimized/lv_obj_tree.ll @@ -419,7 +419,7 @@ lv_obj_get_display.exit: ; preds = %._crit_edge.i, %83, br label %._crit_edge118 ._crit_edge118: ; preds = %96, %._crit_edge118.loopexit.split.loop.exit, %lv_obj_get_display.exit - %.075.lcssa = phi i32 [ 0, %lv_obj_get_display.exit ], [ %97, %._crit_edge118.loopexit.split.loop.exit ], [ %89, %96 ] + %.075.lcssa = phi i32 [ 0, %lv_obj_get_display.exit ], [ %97, %._crit_edge118.loopexit.split.loop.exit ], [ 0, %96 ] %98 = add i32 %89, -1 %99 = icmp ult i32 %.075.lcssa, %98 %100 = getelementptr inbounds nuw i8, ptr %.01827.i, i64 776 @@ -634,8 +634,6 @@ define void @lv_obj_clean(ptr noundef %0) local_unnamed_addr #0 { br i1 %.not.i25, label %.lr.ph.loopexit, label %22 ._crit_edge: ; preds = %10, %.lr.ph.loopexit, %.lr.ph57, %22, %.lr.ph.preheader, %2, %6 - %.0.i35.shrunk41.shrunk = phi i16 [ 0, %6 ], [ 0, %2 ], [ %8, %.lr.ph.preheader ], [ %8, %22 ], [ %8, %.lr.ph57 ], [ %8, %.lr.ph.loopexit ], [ %8, %10 ] - %.0.i35.shrunk41 = zext i16 %.0.i35.shrunk41.shrunk to i32 tail call void @lv_obj_scroll_to(ptr noundef nonnull %0, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false) #6 %29 = load ptr, ptr %3, align 8, !tbaa !37 %.not17 = icmp eq ptr %29, null @@ -646,22 +644,9 @@ define void @lv_obj_clean(ptr noundef %0) local_unnamed_addr #0 { store i32 0, ptr %31, align 8, !tbaa !62 %32 = getelementptr inbounds nuw i8, ptr %29, i64 52 store i32 0, ptr %32, align 4, !tbaa !63 - %33 = getelementptr inbounds nuw i8, ptr %29, i64 64 - %34 = load i16, ptr %33, align 8, !tbaa !38 - %35 = zext i16 %34 to i32 br label %lv_obj_get_child_count.exit33 -lv_obj_get_child_count.exit33: ; preds = %._crit_edge, %30 - %.0.i31 = phi i32 [ %35, %30 ], [ 0, %._crit_edge ] - %36 = icmp samesign ult i32 %.0.i31, %.0.i35.shrunk41 - br i1 %36, label %37, label %40 - -37: ; preds = %lv_obj_get_child_count.exit33 - %38 = tail call i32 @lv_obj_send_event(ptr noundef nonnull %0, i32 noundef 42, ptr noundef null) #6 - %39 = tail call i32 @lv_obj_send_event(ptr noundef nonnull %0, i32 noundef 44, ptr noundef null) #6 - br label %40 - -40: ; preds = %lv_obj_get_child_count.exit33, %37 +lv_obj_get_child_count.exit33: ; preds = %30, %._crit_edge ret void } diff --git a/bench/memcached/optimized/items.ll b/bench/memcached/optimized/items.ll index 94a90896d0b..5363a9ac749 100644 --- a/bench/memcached/optimized/items.ll +++ b/bench/memcached/optimized/items.ll @@ -3968,7 +3968,7 @@ lru_maintainer_juggle.exit: ; preds = %102 br label %119 119: ; preds = %107, %116, %113 - %120 = phi i32 [ %spec.store.select60, %107 ], [ %spec.store.select58, %116 ], [ 0, %113 ] + %120 = phi i32 [ %spec.store.select60, %107 ], [ 0, %116 ], [ 0, %113 ] store i32 %120, ptr %41, align 4, !tbaa !22 br label %121 @@ -4238,9 +4238,10 @@ lru_maintainer_bumps.exit: ; preds = %158 .thread99.i: ; preds = %.thread92.i, %251 %.16197102.i = phi i32 [ %.06080.ph.i, %251 ], [ %spec.select.i, %.thread92.i ] %252 = load i32, ptr getelementptr inbounds nuw (i8, ptr @settings, i64 204), align 4, !tbaa !144 - %.not.not.i = icmp eq i32 %252, 0 - %253 = call i32 @llvm.umin.i32(i32 %252, i32 %.16197102.i) - %.3.i = select i1 %.not.not.i, i32 %.16197102.i, i32 %253 + %.not.not.i = icmp ne i32 %252, 0 + %253 = icmp ult i32 %252, %.16197102.i + %.3.i = select i1 %.not.not.i, i1 %253, i1 false + %.3.i = select i1 %or.cond.i, i32 0, i32 %.16197102.i %254 = call i32 @lru_crawler_start(ptr noundef nonnull %2, i32 noundef %.3.i, i32 noundef 0, ptr noundef nonnull %7, ptr noundef null, i32 noundef 0) #19 br label %lru_maintainer_crawler_check.exit diff --git a/bench/mimalloc/optimized/prim.ll b/bench/mimalloc/optimized/prim.ll index 565ad084bfe..4646a61f04b 100644 --- a/bench/mimalloc/optimized/prim.ll +++ b/bench/mimalloc/optimized/prim.ll @@ -349,7 +349,7 @@ unix_madvise.exit: ; preds = %unix_madvise.exit.l br label %.critedge11 .critedge11: ; preds = %9, %unix_madvise.exit, %2, %17, %14, %.critedge - %.0 = phi i32 [ %8, %.critedge ], [ %18, %17 ], [ 0, %14 ], [ 0, %2 ], [ 0, %9 ], [ %8, %unix_madvise.exit ] + %.0 = phi i32 [ 0, %.critedge ], [ %18, %17 ], [ 0, %14 ], [ 0, %2 ], [ 0, %9 ], [ %8, %unix_madvise.exit ] ret i32 %.0 } @@ -477,7 +477,7 @@ define hidden i64 @_mi_prim_numa_node() local_unnamed_addr #0 { declare i64 @syscall(i64 noundef, ...) local_unnamed_addr #2 ; Function Attrs: nounwind uwtable -define hidden range(i64 1, 4294967296) i64 @_mi_prim_numa_node_count() local_unnamed_addr #0 { +define hidden noundef range(i64 1, 4294967296) i64 @_mi_prim_numa_node_count() local_unnamed_addr #0 { %1 = alloca [128 x i8], align 16 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %1) #11 br label %2 @@ -495,15 +495,9 @@ define hidden range(i64 1, 4294967296) i64 @_mi_prim_numa_node_count() local_unn %.not = icmp eq i64 %7, 0 br i1 %.not, label %2, label %split, !llvm.loop !23 -split: ; preds = %3 - %8 = add nuw nsw i32 %.0, 1 - %9 = zext nneg i32 %8 to i64 - br label %._crit_edge - -._crit_edge: ; preds = %2, %split - %.0.lcssa = phi i64 [ %9, %split ], [ 257, %2 ] +split: ; preds = %2, %3 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %1) #11 - ret i64 %.0.lcssa + ret i64 257 } declare i32 @_mi_snprintf(ptr noundef, i64 noundef, ptr noundef, ...) local_unnamed_addr #3 diff --git a/bench/mini-lsm-rs/optimized/1m9jerzd56wr2irm.ll b/bench/mini-lsm-rs/optimized/1m9jerzd56wr2irm.ll index a487deca1a3..fb2c18f044b 100644 --- a/bench/mini-lsm-rs/optimized/1m9jerzd56wr2irm.ll +++ b/bench/mini-lsm-rs/optimized/1m9jerzd56wr2irm.ll @@ -4145,13 +4145,12 @@ default.unreachable.i.i: ; preds = %"_ZN110_$LT$core..i br i1 %.not.i.not, label %.loopexit, label %16 .loopexit: ; preds = %.loopexit.loopexit.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i" - %.sink = phi i64 [ %.sroa.3.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i" ], [ 0, %.loopexit.loopexit.i.i ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i" ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit.loopexit.i.i ] %storemerge = phi i64 [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i" ], [ 1, %.loopexit.loopexit.i.i ] %15 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.0.0, ptr %15, align 8 %.sroa.224.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.224.0..sroa_idx, align 8 + store i64 0, ptr %.sroa.224.0..sroa_idx, align 8 %.sroa.325.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink, ptr %.sroa.325.0..sroa_idx, align 8 store i64 %storemerge, ptr %0, align 8 @@ -4210,13 +4209,12 @@ default.unreachable.i.i: ; preds = %"_ZN110_$LT$core..i br i1 %.not.i.not, label %.loopexit, label %16 .loopexit: ; preds = %.loopexit.loopexit.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i" - %.sink = phi i64 [ %.sroa.3.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i" ], [ 0, %.loopexit.loopexit.i.i ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i" ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit.loopexit.i.i ] %storemerge = phi i64 [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i" ], [ 1, %.loopexit.loopexit.i.i ] %15 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.0.0, ptr %15, align 8 %.sroa.224.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.224.0..sroa_idx, align 8 + store i64 0, ptr %.sroa.224.0..sroa_idx, align 8 %.sroa.325.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink, ptr %.sroa.325.0..sroa_idx, align 8 store i64 %storemerge, ptr %0, align 8 diff --git a/bench/mini-lsm-rs/optimized/211qm7emy1a6xqse.ll b/bench/mini-lsm-rs/optimized/211qm7emy1a6xqse.ll index 3db4dc50df7..767e7fe4ce7 100644 --- a/bench/mini-lsm-rs/optimized/211qm7emy1a6xqse.ll +++ b/bench/mini-lsm-rs/optimized/211qm7emy1a6xqse.ll @@ -8618,13 +8618,13 @@ define hidden void @"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeI %11 = getelementptr inbounds nuw i8, ptr %5, i64 216 %12 = load i8, ptr %11, align 8, !range !98, !alias.scope !1141, !noundef !4 %13 = trunc nuw i8 %12 to i1 - br i1 %13, label %.thread, label %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i" + br i1 %13, label %"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeIterator$LT$A$C$B$GT$8choose_a17h0c8a8ae819c72f98E.llvm.14580040072198541846.exit", label %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i" "_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i": ; preds = %10 %14 = getelementptr inbounds nuw i8, ptr %5, i64 208 %15 = load i8, ptr %14, align 8, !range !98, !alias.scope !1141, !noundef !4 %16 = trunc nuw i8 %15 to i1 - br i1 %16, label %17, label %.thread + br i1 %16, label %17, label %"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeIterator$LT$A$C$B$GT$8choose_a17h0c8a8ae819c72f98E.llvm.14580040072198541846.exit" 17: ; preds = %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i" %18 = invoke { ptr, i64 } @"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$3key17hc439b48371900679E"(ptr noundef nonnull align 8 dereferenceable(424) %5) @@ -8702,8 +8702,7 @@ define hidden void @"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeI %.not.i8 = icmp eq i64 %42, 0 br i1 %.not.i8, label %"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeIterator$LT$A$C$B$GT$8choose_a17h0c8a8ae819c72f98E.llvm.14580040072198541846.exit", label %.thread -.thread: ; preds = %10, %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i", %41 - %43 = phi i64 [ %42, %41 ], [ %9, %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i" ], [ %9, %10 ] +.thread: ; preds = %41 %44 = getelementptr inbounds nuw i8, ptr %5, i64 216 %45 = load i8, ptr %44, align 8, !range !98, !noundef !4 %46 = trunc nuw i8 %45 to i1 @@ -8728,8 +8727,8 @@ define hidden void @"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeI call void @llvm.assume(i1 %54) %55 = icmp ne ptr %.fca.0.extract1.i, null call void @llvm.assume(i1 %55) - %56 = sub i64 %43, %.fca.1.extract3.i - %..i.i.i.i.i.i = call i64 @llvm.umin.i64(i64 %43, i64 %.fca.1.extract3.i) + %56 = sub i64 %42, %.fca.1.extract3.i + %..i.i.i.i.i.i = call i64 @llvm.umin.i64(i64 %42, i64 %.fca.1.extract3.i) %57 = call i32 @memcmp(ptr nonnull readonly align 1 %52, ptr nonnull readonly align 1 %.fca.0.extract1.i, i64 %..i.i.i.i.i.i), !alias.scope !1155, !noalias !1168 %58 = sext i32 %57 to i64 %59 = icmp eq i32 %57, 0 @@ -8766,8 +8765,8 @@ common.resume: ; preds = %39, %62 call void @"_ZN4core3ptr61drop_in_place$LT$mini_lsm_mvcc..lsm_iterator..LsmIterator$GT$17h62daf41af29a1bacE"(ptr noalias noundef nonnull align 8 dereferenceable(424) %5) br label %66 -"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeIterator$LT$A$C$B$GT$8choose_a17h0c8a8ae819c72f98E.llvm.14580040072198541846.exit": ; preds = %3, %.noexc11, %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i9", %.thread, %41 - %.0.i10 = phi i8 [ %60, %.noexc11 ], [ 0, %41 ], [ 1, %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i9" ], [ 1, %.thread ], [ 0, %3 ] +"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeIterator$LT$A$C$B$GT$8choose_a17h0c8a8ae819c72f98E.llvm.14580040072198541846.exit": ; preds = %10, %3, %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i", %.noexc11, %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i9", %43, %41 + %.0.i10 = phi i8 [ %60, %.noexc11 ], [ 0, %41 ], [ 1, %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i9" ], [ 1, %.thread ], [ 0, %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i" ], [ 0, %3 ], [ 0, %10 ] store i8 %.0.i10, ptr %7, align 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(424) %5, i64 424, i1 false) br label %66 @@ -10156,13 +10155,13 @@ define hidden noundef ptr @"_ZN137_$LT$mini_lsm_mvcc..iterators..two_merge_itera %28 = getelementptr inbounds nuw i8, ptr %0, i64 64 %29 = load ptr, ptr %28, align 8, !alias.scope !1618, !noundef !4 %30 = icmp eq ptr %29, null - br i1 %30, label %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i24.i.thread", label %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17he94b80dbb0db02c3E.exit.i.i" + br i1 %30, label %"_ZN137_$LT$mini_lsm_mvcc..iterators..two_merge_iterator..TwoMergeIterator$LT$A$C$B$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$4next17he640783ad8fb157eE.exit", label %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17he94b80dbb0db02c3E.exit.i.i" "_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17he94b80dbb0db02c3E.exit.i.i": ; preds = %26 %31 = getelementptr inbounds nuw i8, ptr %29, i64 16 %32 = load i64, ptr %31, align 8, !alias.scope !1619, !noalias !1624, !noundef !4 %.not.i.i.i.i = icmp eq i64 %32, %25 - br i1 %.not.i.i.i.i, label %"_ZN73_$LT$mini_lsm_mvcc..key..Key$LT$T$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17heaf2fa39318f9fedE.exit.i.i", label %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i24.i.thread" + br i1 %.not.i.i.i.i, label %"_ZN73_$LT$mini_lsm_mvcc..key..Key$LT$T$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17heaf2fa39318f9fedE.exit.i.i", label %"_ZN137_$LT$mini_lsm_mvcc..iterators..two_merge_iterator..TwoMergeIterator$LT$A$C$B$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$4next17he640783ad8fb157eE.exit" "_ZN73_$LT$mini_lsm_mvcc..key..Key$LT$T$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17heaf2fa39318f9fedE.exit.i.i": ; preds = %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17he94b80dbb0db02c3E.exit.i.i" %33 = getelementptr inbounds nuw i8, ptr %22, i64 168 @@ -10177,7 +10176,7 @@ define hidden noundef ptr @"_ZN137_$LT$mini_lsm_mvcc..iterators..two_merge_itera %41 = icmp eq i32 %bcmp.i.i.i.i, 0 %42 = icmp eq i64 %38, %34 %spec.select.i.i.i = and i1 %42, %41 - br i1 %spec.select.i.i.i, label %"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeIterator$LT$A$C$B$GT$6skip_b17h100159bdd2dc1fddE.llvm.14580040072198541846.exit.i", label %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i24.i.thread" + br i1 %spec.select.i.i.i, label %"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeIterator$LT$A$C$B$GT$6skip_b17h100159bdd2dc1fddE.llvm.14580040072198541846.exit.i", label %"_ZN137_$LT$mini_lsm_mvcc..iterators..two_merge_iterator..TwoMergeIterator$LT$A$C$B$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$4next17he640783ad8fb157eE.exit" "_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeIterator$LT$A$C$B$GT$6skip_b17h100159bdd2dc1fddE.llvm.14580040072198541846.exit.i": ; preds = %"_ZN73_$LT$mini_lsm_mvcc..key..Key$LT$T$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17heaf2fa39318f9fedE.exit.i.i" %43 = tail call noundef ptr @"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$4next17h601ebf275cf20eb5E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %27) @@ -10198,9 +10197,7 @@ define hidden noundef ptr @"_ZN137_$LT$mini_lsm_mvcc..iterators..two_merge_itera %.not.i25.i = icmp eq i64 %.pre, 0 br i1 %.not.i25.i, label %"_ZN137_$LT$mini_lsm_mvcc..iterators..two_merge_iterator..TwoMergeIterator$LT$A$C$B$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$4next17he640783ad8fb157eE.exit", label %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i24.i.thread" -"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i24.i.thread": ; preds = %26, %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17he94b80dbb0db02c3E.exit.i.i", %"_ZN73_$LT$mini_lsm_mvcc..key..Key$LT$T$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17heaf2fa39318f9fedE.exit.i.i", %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i24.i" - %.pr31.i27 = phi ptr [ %.pr.pre.i, %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i24.i" ], [ %22, %"_ZN73_$LT$mini_lsm_mvcc..key..Key$LT$T$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17heaf2fa39318f9fedE.exit.i.i" ], [ %22, %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17he94b80dbb0db02c3E.exit.i.i" ], [ %22, %26 ] - %46 = phi i64 [ %.pre, %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i24.i" ], [ %25, %"_ZN73_$LT$mini_lsm_mvcc..key..Key$LT$T$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17heaf2fa39318f9fedE.exit.i.i" ], [ %25, %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17he94b80dbb0db02c3E.exit.i.i" ], [ %25, %26 ] +"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i24.i.thread": ; preds = %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i24.i" tail call void @llvm.experimental.noalias.scope.decl(metadata !1665) %47 = getelementptr inbounds nuw i8, ptr %0, i64 64 %48 = load ptr, ptr %47, align 8, !alias.scope !1668, !noalias !1662, !noundef !4 @@ -10214,16 +10211,16 @@ define hidden noundef ptr @"_ZN137_$LT$mini_lsm_mvcc..iterators..two_merge_itera br i1 %.not8.i.i, label %"_ZN137_$LT$mini_lsm_mvcc..iterators..two_merge_iterator..TwoMergeIterator$LT$A$C$B$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$4next17he640783ad8fb157eE.exit", label %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$3key17h6b39ac98df3fa68aE.exit.i.i" "_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$3key17h6b39ac98df3fa68aE.exit.i.i": ; preds = %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17he94b80dbb0db02c3E.exit.i26.i" - %52 = getelementptr inbounds nuw i8, ptr %.pr31.i27, i64 144 + %52 = getelementptr inbounds nuw i8, ptr %.pr.pre.i, i64 144 %53 = load ptr, ptr %52, align 8, !noalias !1675, !nonnull !4, !noundef !4 - %54 = getelementptr inbounds nuw i8, ptr %.pr31.i27, i64 168 + %54 = getelementptr inbounds nuw i8, ptr %.pr.pre.i, i64 168 %55 = load i64, ptr %54, align 8, !noalias !1675, !noundef !4 %56 = getelementptr inbounds nuw i8, ptr %48, i64 8 %57 = load ptr, ptr %56, align 8, !alias.scope !1683, !noalias !1690, !nonnull !4, !noundef !4 %58 = getelementptr inbounds nuw i8, ptr %48, i64 24 %59 = load i64, ptr %58, align 8, !alias.scope !1683, !noalias !1690, !noundef !4 - %60 = sub i64 %46, %51 - %..i.i.i.i.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %46, i64 %51) + %60 = sub i64 %.pre, %51 + %..i.i.i.i.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %.pre, i64 %51) %61 = tail call i32 @memcmp(ptr nonnull readonly align 1 %53, ptr nonnull readonly align 1 %57, i64 %..i.i.i.i.i.i.i.i.i), !alias.scope !1697, !noalias !1707 %62 = sext i32 %61 to i64 %63 = icmp eq i32 %61, 0 @@ -10235,8 +10232,8 @@ define hidden noundef ptr @"_ZN137_$LT$mini_lsm_mvcc..iterators..two_merge_itera %67 = zext i1 %.0.i.i.i.i.i to i8 br label %"_ZN137_$LT$mini_lsm_mvcc..iterators..two_merge_iterator..TwoMergeIterator$LT$A$C$B$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$4next17he640783ad8fb157eE.exit" -"_ZN137_$LT$mini_lsm_mvcc..iterators..two_merge_iterator..TwoMergeIterator$LT$A$C$B$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$4next17he640783ad8fb157eE.exit": ; preds = %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i.i", %20, %"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeIterator$LT$A$C$B$GT$6skip_b17h100159bdd2dc1fddE.llvm.14580040072198541846.exit.thread.i", %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i24.i", %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i24.i.thread", %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17he94b80dbb0db02c3E.exit.i26.i", %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$3key17h6b39ac98df3fa68aE.exit.i.i" - %.0.i27.i = phi i8 [ %67, %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$3key17h6b39ac98df3fa68aE.exit.i.i" ], [ 0, %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i24.i" ], [ 1, %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17he94b80dbb0db02c3E.exit.i26.i" ], [ 0, %"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeIterator$LT$A$C$B$GT$6skip_b17h100159bdd2dc1fddE.llvm.14580040072198541846.exit.thread.i" ], [ 1, %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i24.i.thread" ], [ 0, %20 ], [ 0, %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i.i" ] +"_ZN137_$LT$mini_lsm_mvcc..iterators..two_merge_iterator..TwoMergeIterator$LT$A$C$B$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$4next17he640783ad8fb157eE.exit": ; preds = %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i.i", %26, %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17he94b80dbb0db02c3E.exit.i.i", %"_ZN73_$LT$mini_lsm_mvcc..key..Key$LT$T$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17heaf2fa39318f9fedE.exit.i.i", %20, %"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeIterator$LT$A$C$B$GT$6skip_b17h100159bdd2dc1fddE.llvm.14580040072198541846.exit.thread.i", %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i24.i", %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i24.i.thread", %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17he94b80dbb0db02c3E.exit.i26.i", %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$3key17h6b39ac98df3fa68aE.exit.i.i" + %.0.i27.i = phi i8 [ %67, %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$3key17h6b39ac98df3fa68aE.exit.i.i" ], [ 0, %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i24.i" ], [ 1, %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17he94b80dbb0db02c3E.exit.i26.i" ], [ 0, %"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeIterator$LT$A$C$B$GT$6skip_b17h100159bdd2dc1fddE.llvm.14580040072198541846.exit.thread.i" ], [ 1, %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i24.i.thread" ], [ 0, %20 ], [ 0, %"_ZN73_$LT$mini_lsm_mvcc..key..Key$LT$T$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17heaf2fa39318f9fedE.exit.i.i" ], [ 0, %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17he94b80dbb0db02c3E.exit.i.i" ], [ 0, %26 ], [ 0, %"_ZN126_$LT$mini_lsm_mvcc..iterators..merge_iterator..MergeIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h53c7bfba610591c5E.exit.i.i" ] store i8 %.0.i27.i, ptr %10, align 8, !alias.scope !1606 br label %68 @@ -10619,13 +10616,13 @@ define hidden noundef ptr @"_ZN137_$LT$mini_lsm_mvcc..iterators..two_merge_itera %65 = getelementptr inbounds nuw i8, ptr %0, i64 216 %66 = load i8, ptr %65, align 8, !range !98, !alias.scope !1903, !noundef !4 %67 = trunc nuw i8 %66 to i1 - br i1 %67, label %.thread, label %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i" + br i1 %67, label %"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeIterator$LT$A$C$B$GT$8choose_a17h0c8a8ae819c72f98E.llvm.14580040072198541846.exit", label %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i" "_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i": ; preds = %64 %68 = getelementptr inbounds nuw i8, ptr %0, i64 208 %69 = load i8, ptr %68, align 8, !range !98, !alias.scope !1903, !noundef !4 %70 = trunc nuw i8 %69 to i1 - br i1 %70, label %71, label %.thread + br i1 %70, label %71, label %"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeIterator$LT$A$C$B$GT$8choose_a17h0c8a8ae819c72f98E.llvm.14580040072198541846.exit" 71: ; preds = %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i" %72 = tail call { ptr, i64 } @"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$3key17hc439b48371900679E"(ptr noundef nonnull align 8 dereferenceable(424) %0) @@ -10688,8 +10685,7 @@ define hidden noundef ptr @"_ZN137_$LT$mini_lsm_mvcc..iterators..two_merge_itera %.not.i26 = icmp eq i64 %94, 0 br i1 %.not.i26, label %"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeIterator$LT$A$C$B$GT$8choose_a17h0c8a8ae819c72f98E.llvm.14580040072198541846.exit", label %.thread -.thread: ; preds = %64, %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i", %93 - %95 = phi i64 [ %94, %93 ], [ %63, %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i" ], [ %63, %64 ] +.thread: ; preds = %93 %96 = getelementptr inbounds nuw i8, ptr %0, i64 216 %97 = load i8, ptr %96, align 8, !range !98, !noundef !4 %98 = trunc nuw i8 %97 to i1 @@ -10711,8 +10707,8 @@ define hidden noundef ptr @"_ZN137_$LT$mini_lsm_mvcc..iterators..two_merge_itera tail call void @llvm.assume(i1 %106) %107 = icmp ne ptr %.fca.0.extract1.i, null tail call void @llvm.assume(i1 %107) - %108 = sub i64 %95, %.fca.1.extract3.i - %..i.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %95, i64 %.fca.1.extract3.i) + %108 = sub i64 %94, %.fca.1.extract3.i + %..i.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %94, i64 %.fca.1.extract3.i) %109 = tail call i32 @memcmp(ptr nonnull readonly align 1 %104, ptr nonnull readonly align 1 %.fca.0.extract1.i, i64 %..i.i.i.i.i.i), !alias.scope !1917, !noalias !1930 %110 = sext i32 %109 to i64 %111 = icmp eq i32 %109, 0 @@ -10721,8 +10717,8 @@ define hidden noundef ptr @"_ZN137_$LT$mini_lsm_mvcc..iterators..two_merge_itera %112 = trunc nuw nsw i64 %spec.store.select.i.i.i.i.i.i.lobit to i8 br label %"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeIterator$LT$A$C$B$GT$8choose_a17h0c8a8ae819c72f98E.llvm.14580040072198541846.exit" -"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeIterator$LT$A$C$B$GT$8choose_a17h0c8a8ae819c72f98E.llvm.14580040072198541846.exit": ; preds = %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$4next17h80c015973b93c4d5E.exit.thread", %93, %.thread, %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i27", %102 - %.0.i28 = phi i8 [ %112, %102 ], [ 0, %93 ], [ 1, %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i27" ], [ 1, %.thread ], [ 0, %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$4next17h80c015973b93c4d5E.exit.thread" ] +"_ZN13mini_lsm_mvcc9iterators18two_merge_iterator29TwoMergeIterator$LT$A$C$B$GT$8choose_a17h0c8a8ae819c72f98E.llvm.14580040072198541846.exit": ; preds = %64, %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$4next17h80c015973b93c4d5E.exit.thread", %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i", %93, %95, %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i27", %102 + %.0.i28 = phi i8 [ %112, %102 ], [ 0, %93 ], [ 1, %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i27" ], [ 1, %.thread ], [ 0, %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$8is_valid17h8eea8344cad9b18eE.exit.i" ], [ 0, %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$4next17h80c015973b93c4d5E.exit.thread" ], [ 0, %64 ] store i8 %.0.i28, ptr %4, align 8 br label %"_ZN113_$LT$mini_lsm_mvcc..lsm_iterator..FusedIterator$LT$I$GT$$u20$as$u20$mini_lsm_mvcc..iterators..StorageIterator$GT$4next17h80c015973b93c4d5E.exit" diff --git a/bench/mitsuba3/optimized/jitallocator.ll b/bench/mitsuba3/optimized/jitallocator.ll index fddc71e7928..d2a8973ae5e 100644 --- a/bench/mitsuba3/optimized/jitallocator.ll +++ b/bench/mitsuba3/optimized/jitallocator.ll @@ -402,11 +402,10 @@ define dso_local void @_ZN6asmjit9_abi_1_1012JitAllocator5resetENS0_11ResetPolic br i1 %171, label %.loopexit, label %.preheader58 .preheader58: ; preds = %170, %156 - %.ph = phi i64 [ %159, %170 ], [ 0, %156 ] br label %172 172: ; preds = %.preheader58, %172 - %173 = phi i64 [ %175, %172 ], [ %.ph, %.preheader58 ] + %173 = phi i64 [ %175, %172 ], [ 0, %.preheader58 ] %174 = getelementptr inbounds nuw i32, ptr %150, i64 %173 store i32 %153, ptr %174, align 4, !tbaa !55 %175 = add nuw nsw i64 %173, 1 @@ -532,9 +531,8 @@ define dso_local void @_ZNK6asmjit9_abi_1_1012JitAllocator10statisticsEv(ptr dea .preheader: ; preds = %177, %12 %.ph = phi i64 [ %181, %177 ], [ 0, %12 ] %.ph79 = phi i64 [ %185, %177 ], [ 0, %12 ] - %.ph80 = phi i64 [ %19, %177 ], [ 0, %12 ] - %.ph81 = phi i64 [ %189, %177 ], [ 0, %12 ] - %.ph82 = phi i64 [ %193, %177 ], [ 0, %12 ] + %.ph80 = phi i64 [ %189, %177 ], [ 0, %12 ] + %.ph81 = phi i64 [ %193, %177 ], [ 0, %12 ] br label %206 18: ; preds = %12 @@ -744,9 +742,9 @@ define dso_local void @_ZNK6asmjit9_abi_1_1012JitAllocator10statisticsEv(ptr dea 206: ; preds = %.preheader, %206 %207 = phi i64 [ %230, %206 ], [ %.ph, %.preheader ] %208 = phi i64 [ %223, %206 ], [ %.ph79, %.preheader ] - %209 = phi i64 [ %231, %206 ], [ %.ph80, %.preheader ] - %210 = phi i64 [ %216, %206 ], [ %.ph81, %.preheader ] - %211 = phi i64 [ %227, %206 ], [ %.ph82, %.preheader ] + %209 = phi i64 [ %231, %206 ], [ 0, %.preheader ] + %210 = phi i64 [ %216, %206 ], [ %.ph80, %.preheader ] + %211 = phi i64 [ %227, %206 ], [ %.ph81, %.preheader ] %212 = getelementptr inbounds %"class.asmjit::_abi_1_10::JitAllocatorPool", ptr %14, i64 %209 %213 = getelementptr inbounds nuw i8, ptr %212, i64 24 %214 = load i32, ptr %213, align 8, !tbaa !67 @@ -1170,11 +1168,10 @@ define dso_local noundef range(i32 0, 10) i32 @_ZN6asmjit9_abi_1_1012JitAllocato br i1 %267, label %.loopexit, label %.preheader133 .preheader133: ; preds = %266, %252 - %.ph = phi i64 [ %255, %266 ], [ 0, %252 ] br label %268 268: ; preds = %.preheader133, %268 - %269 = phi i64 [ %271, %268 ], [ %.ph, %.preheader133 ] + %269 = phi i64 [ %271, %268 ], [ 0, %.preheader133 ] %270 = getelementptr inbounds nuw i32, ptr %247, i64 %269 store i32 %249, ptr %270, align 4, !tbaa !55 %271 = add nuw nsw i64 %269, 1 @@ -1677,11 +1674,10 @@ define dso_local noundef range(i32 0, 6) i32 @_ZN6asmjit9_abi_1_1012JitAllocator br i1 %181, label %.loopexit, label %.preheader47 .preheader47: ; preds = %180, %166 - %.ph = phi i64 [ %169, %180 ], [ 0, %166 ] br label %182 182: ; preds = %.preheader47, %182 - %183 = phi i64 [ %185, %182 ], [ %.ph, %.preheader47 ] + %183 = phi i64 [ %185, %182 ], [ 0, %.preheader47 ] %184 = getelementptr inbounds nuw i32, ptr %159, i64 %183 store i32 %163, ptr %184, align 4, !tbaa !55 %185 = add nuw nsw i64 %183, 1 @@ -2072,11 +2068,10 @@ define dso_local noundef range(i32 0, 6) i32 @_ZN6asmjit9_abi_1_1012JitAllocator br i1 %199, label %.loopexit, label %.preheader37 .preheader37: ; preds = %198, %184 - %.ph = phi i64 [ %187, %198 ], [ 0, %184 ] br label %200 200: ; preds = %.preheader37, %200 - %201 = phi i64 [ %203, %200 ], [ %.ph, %.preheader37 ] + %201 = phi i64 [ %203, %200 ], [ 0, %.preheader37 ] %202 = getelementptr inbounds nuw i32, ptr %176, i64 %201 store i32 %181, ptr %202, align 4, !tbaa !55 %203 = add nuw nsw i64 %201, 1 diff --git a/bench/msdfgen/optimized/Scanline.ll b/bench/msdfgen/optimized/Scanline.ll index 49d89464bd1..c657696e44e 100644 --- a/bench/msdfgen/optimized/Scanline.ll +++ b/bench/msdfgen/optimized/Scanline.ll @@ -669,7 +669,7 @@ if.end9: ; preds = %do.body %add.ptr.i11 = getelementptr inbounds %"struct.msdfgen::Scanline::Intersection", ptr %0, i64 %indvars.iv.next17 %5 = load double, ptr %add.ptr.i11, align 8 %cmp14 = fcmp olt double %x, %5 - br i1 %cmp14, label %do.body, label %if.end24.loopexit, !llvm.loop !9 + br i1 %cmp14, label %do.body, label %return.sink.split, !llvm.loop !9 while.cond: ; preds = %while.cond.preheader, %land.rhs %indvars.iv = phi i64 [ %conv, %while.cond.preheader ], [ %indvars.iv.next, %land.rhs ] @@ -683,17 +683,13 @@ land.rhs: ; preds = %while.cond %cmp23 = fcmp ult double %x, %6 br i1 %cmp23, label %if.end24.loopexit19.split.loop.exit20, label %while.cond, !llvm.loop !10 -if.end24.loopexit: ; preds = %if.end9 - %7 = trunc nsw i64 %indvars.iv.next17 to i32 - br label %return.sink.split - if.end24.loopexit19.split.loop.exit20: ; preds = %land.rhs %8 = trunc nsw i64 %indvars.iv to i32 br label %return.sink.split -return.sink.split: ; preds = %while.cond, %do.body, %if.end24.loopexit, %if.end24.loopexit19.split.loop.exit20 - %index.1.sink = phi i32 [ %7, %if.end24.loopexit ], [ %8, %if.end24.loopexit19.split.loop.exit20 ], [ 0, %do.body ], [ %smax, %while.cond ] - %retval.0.ph = phi i32 [ %7, %if.end24.loopexit ], [ %8, %if.end24.loopexit19.split.loop.exit20 ], [ -1, %do.body ], [ %smax, %while.cond ] +return.sink.split: ; preds = %while.cond, %do.body, %if.end9, %if.end24.loopexit19.split.loop.exit20 + %index.1.sink = phi i32 [ %7, %if.end24.loopexit19.split.loop.exit20 ], [ 0, %do.body ], [ -1, %if.end9 ], [ %smax, %while.cond ] + %retval.0.ph = phi i32 [ %7, %if.end24.loopexit19.split.loop.exit20 ], [ -1, %if.end9 ], [ -1, %do.body ], [ %smax, %while.cond ] store i32 %index.1.sink, ptr %lastIndex, align 8 br label %return @@ -741,7 +737,7 @@ if.end9.i: ; preds = %do.body.i %add.ptr.i11.i = getelementptr inbounds %"struct.msdfgen::Scanline::Intersection", ptr %0, i64 %indvars.iv.next17.i %5 = load double, ptr %add.ptr.i11.i, align 8 %cmp14.i = fcmp olt double %x, %5 - br i1 %cmp14.i, label %do.body.i, label %if.end24.loopexit.i, !llvm.loop !9 + br i1 %cmp14.i, label %do.body.i, label %return.sink.split.i, !llvm.loop !9 while.cond.i: ; preds = %land.rhs.i, %while.cond.preheader.i %indvars.iv.i = phi i64 [ %conv.i, %while.cond.preheader.i ], [ %indvars.iv.next.i, %land.rhs.i ] @@ -755,17 +751,13 @@ land.rhs.i: ; preds = %while.cond.i %cmp23.i = fcmp ult double %x, %6 br i1 %cmp23.i, label %if.end24.loopexit19.split.loop.exit20.i, label %while.cond.i, !llvm.loop !10 -if.end24.loopexit.i: ; preds = %if.end9.i - %7 = trunc nsw i64 %indvars.iv.next17.i to i32 - br label %return.sink.split.i - if.end24.loopexit19.split.loop.exit20.i: ; preds = %land.rhs.i %8 = trunc nsw i64 %indvars.iv.i to i32 br label %return.sink.split.i -return.sink.split.i: ; preds = %while.cond.i, %do.body.i, %if.end24.loopexit19.split.loop.exit20.i, %if.end24.loopexit.i - %index.1.sink.i = phi i32 [ %7, %if.end24.loopexit.i ], [ %8, %if.end24.loopexit19.split.loop.exit20.i ], [ 0, %do.body.i ], [ %smax.i, %while.cond.i ] - %retval.0.ph.i = phi i32 [ %7, %if.end24.loopexit.i ], [ %8, %if.end24.loopexit19.split.loop.exit20.i ], [ -1, %do.body.i ], [ %smax.i, %while.cond.i ] +return.sink.split.i: ; preds = %while.cond.i, %if.end9.i, %do.body.i, %if.end24.loopexit19.split.loop.exit20.i + %index.1.sink.i = phi i32 [ %7, %if.end24.loopexit19.split.loop.exit20.i ], [ -1, %if.end9.i ], [ 0, %do.body.i ], [ %smax.i, %while.cond.i ] + %retval.0.ph.i = phi i32 [ %7, %if.end24.loopexit19.split.loop.exit20.i ], [ -1, %do.body.i ], [ -1, %if.end9.i ], [ %smax.i, %while.cond.i ] store i32 %index.1.sink.i, ptr %lastIndex.i, align 8 %9 = add nsw i32 %retval.0.ph.i, 1 br label %_ZNK7msdfgen8Scanline6moveToEd.exit @@ -809,16 +801,12 @@ do.body.i: ; preds = %if.end.i, %if.end9. %4 = icmp eq i64 %indvars.iv16.i, 0 br i1 %4, label %_ZNK7msdfgen8Scanline6moveToEd.exit.thread4, label %if.end9.i -_ZNK7msdfgen8Scanline6moveToEd.exit.thread4: ; preds = %do.body.i - store i32 0, ptr %lastIndex.i, align 8 - br label %return - if.end9.i: ; preds = %do.body.i %indvars.iv.next17.i = add nsw i64 %indvars.iv16.i, -1 %add.ptr.i11.i = getelementptr inbounds %"struct.msdfgen::Scanline::Intersection", ptr %0, i64 %indvars.iv.next17.i %5 = load double, ptr %add.ptr.i11.i, align 8 %cmp14.i = fcmp olt double %x, %5 - br i1 %cmp14.i, label %do.body.i, label %if.end24.loopexit.i, !llvm.loop !9 + br i1 %cmp14.i, label %do.body.i, label %_ZNK7msdfgen8Scanline6moveToEd.exit, !llvm.loop !9 while.cond.i: ; preds = %land.rhs.i, %while.cond.preheader.i %indvars.iv.i = phi i64 [ %conv.i, %while.cond.preheader.i ], [ %indvars.iv.next.i, %land.rhs.i ] @@ -832,16 +820,17 @@ land.rhs.i: ; preds = %while.cond.i %cmp23.i = fcmp ult double %x, %6 br i1 %cmp23.i, label %if.end24.loopexit19.split.loop.exit20.i, label %while.cond.i, !llvm.loop !10 -if.end24.loopexit.i: ; preds = %if.end9.i - %7 = trunc nsw i64 %indvars.iv.next17.i to i32 - br label %_ZNK7msdfgen8Scanline6moveToEd.exit - if.end24.loopexit19.split.loop.exit20.i: ; preds = %land.rhs.i %8 = trunc nsw i64 %indvars.iv.i to i32 br label %_ZNK7msdfgen8Scanline6moveToEd.exit -_ZNK7msdfgen8Scanline6moveToEd.exit: ; preds = %while.cond.i, %if.end24.loopexit.i, %if.end24.loopexit19.split.loop.exit20.i - %index.1.sink.i = phi i32 [ %7, %if.end24.loopexit.i ], [ %8, %if.end24.loopexit19.split.loop.exit20.i ], [ %smax.i, %while.cond.i ] +_ZNK7msdfgen8Scanline6moveToEd.exit: ; preds = %do.body.i, %if.end9.i + %index.1.sink.i = phi i32 [ -1, %if.end9.i ], [ 0, %do.body.i ] + store i32 %index.1.sink.i.ph, ptr %lastIndex.i, align 8 + br label %return + +_ZNK7msdfgen8Scanline6moveToEd.exit: ; preds = %while.cond.i, %if.end24.loopexit19.split.loop.exit20.i + %index.1.sink.i = phi i32 [ %7, %if.end24.loopexit19.split.loop.exit20.i ], [ %smax.i, %while.cond.i ] store i32 %index.1.sink.i, ptr %lastIndex.i, align 8 %cmp = icmp sgt i32 %index.1.sink.i, -1 br i1 %cmp, label %if.then, label %return @@ -891,16 +880,12 @@ do.body.i.i: ; preds = %if.end.i.i, %if.end %4 = icmp eq i64 %indvars.iv16.i.i, 0 br i1 %4, label %_ZNK7msdfgen8Scanline6moveToEd.exit.thread4.i, label %if.end9.i.i -_ZNK7msdfgen8Scanline6moveToEd.exit.thread4.i: ; preds = %do.body.i.i - store i32 0, ptr %lastIndex.i.i, align 8 - br label %_ZNK7msdfgen8Scanline16sumIntersectionsEd.exit - if.end9.i.i: ; preds = %do.body.i.i %indvars.iv.next17.i.i = add nsw i64 %indvars.iv16.i.i, -1 %add.ptr.i11.i.i = getelementptr inbounds %"struct.msdfgen::Scanline::Intersection", ptr %0, i64 %indvars.iv.next17.i.i %5 = load double, ptr %add.ptr.i11.i.i, align 8 %cmp14.i.i = fcmp olt double %x, %5 - br i1 %cmp14.i.i, label %do.body.i.i, label %if.end24.loopexit.i.i, !llvm.loop !9 + br i1 %cmp14.i.i, label %do.body.i.i, label %_ZNK7msdfgen8Scanline6moveToEd.exit.i, !llvm.loop !9 while.cond.i.i: ; preds = %land.rhs.i.i, %while.cond.preheader.i.i %indvars.iv.i.i = phi i64 [ %conv.i.i, %while.cond.preheader.i.i ], [ %indvars.iv.next.i.i, %land.rhs.i.i ] @@ -914,16 +899,17 @@ land.rhs.i.i: ; preds = %while.cond.i.i %cmp23.i.i = fcmp ult double %x, %6 br i1 %cmp23.i.i, label %if.end24.loopexit19.split.loop.exit20.i.i, label %while.cond.i.i, !llvm.loop !10 -if.end24.loopexit.i.i: ; preds = %if.end9.i.i - %7 = trunc nsw i64 %indvars.iv.next17.i.i to i32 - br label %_ZNK7msdfgen8Scanline6moveToEd.exit.i - if.end24.loopexit19.split.loop.exit20.i.i: ; preds = %land.rhs.i.i %8 = trunc nsw i64 %indvars.iv.i.i to i32 br label %_ZNK7msdfgen8Scanline6moveToEd.exit.i -_ZNK7msdfgen8Scanline6moveToEd.exit.i: ; preds = %while.cond.i.i, %if.end24.loopexit19.split.loop.exit20.i.i, %if.end24.loopexit.i.i - %index.1.sink.i.i = phi i32 [ %7, %if.end24.loopexit.i.i ], [ %8, %if.end24.loopexit19.split.loop.exit20.i.i ], [ %smax.i.i, %while.cond.i.i ] +_ZNK7msdfgen8Scanline6moveToEd.exit.i: ; preds = %if.end9.i.i, %do.body.i.i + %index.1.sink.i.i = phi i32 [ -1, %if.end9.i.i ], [ 0, %do.body.i.i ] + store i32 %index.1.sink.i.ph.i, ptr %lastIndex.i.i, align 8 + br label %_ZNK7msdfgen8Scanline16sumIntersectionsEd.exit + +_ZNK7msdfgen8Scanline6moveToEd.exit.i: ; preds = %while.cond.i.i, %if.end24.loopexit19.split.loop.exit20.i.i + %index.1.sink.i.i = phi i32 [ %7, %if.end24.loopexit19.split.loop.exit20.i.i ], [ %smax.i.i, %while.cond.i.i ] store i32 %index.1.sink.i.i, ptr %lastIndex.i.i, align 8 %cmp.i = icmp sgt i32 %index.1.sink.i.i, -1 br i1 %cmp.i, label %if.then.i, label %_ZNK7msdfgen8Scanline16sumIntersectionsEd.exit diff --git a/bench/ncnn/optimized/copyto.ll b/bench/ncnn/optimized/copyto.ll index 6a47fa77d20..4ed51061fae 100644 --- a/bench/ncnn/optimized/copyto.ll +++ b/bench/ncnn/optimized/copyto.ll @@ -1681,14 +1681,13 @@ _ZNK4ncnn3Mat5emptyEv.exit: ; preds = %6 store i32 %spec.select, ptr %39, align 4, !tbaa !51 %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 %.lr.ph144, label %.lr.ph, !llvm.loop !60 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !60 .loopexit: ; preds = %28 %40 = icmp sgt i32 %17, 0 br i1 %40, label %.lr.ph144, label %._crit_edge -.lr.ph144: ; preds = %.lr.ph, %.loopexit - %.0114180 = phi i32 [ %17, %.loopexit ], [ %32, %.lr.ph ] +.lr.ph144: ; preds = %.loopexit switch i32 %17, label %._crit_edge [ i32 1, label %.thread.us.preheader i32 2, label %.lr.ph144.split.us145.preheader @@ -1697,19 +1696,19 @@ _ZNK4ncnn3Mat5emptyEv.exit: ; preds = %6 ] .lr.ph144.split.us151.preheader: ; preds = %.lr.ph144 - %wide.trip.count162 = zext nneg i32 %.0114180 to i64 + %wide.trip.count162 = zext nneg i32 %17 to i64 br label %.lr.ph144.split.us151 .lr.ph144.split.us148.preheader: ; preds = %.lr.ph144 - %wide.trip.count167 = zext nneg i32 %.0114180 to i64 + %wide.trip.count167 = zext nneg i32 %17 to i64 br label %.lr.ph144.split.us148 .lr.ph144.split.us145.preheader: ; preds = %.lr.ph144 - %wide.trip.count172 = zext nneg i32 %.0114180 to i64 + %wide.trip.count172 = zext nneg i32 %17 to i64 br label %.lr.ph144.split.us145 .thread.us.preheader: ; preds = %.lr.ph144 - %wide.trip.count177 = zext nneg i32 %.0114180 to i64 + %wide.trip.count177 = zext nneg i32 %17 to i64 br label %.thread.us .thread.us: ; preds = %.thread.us.preheader, %.thread.us @@ -1828,7 +1827,7 @@ _ZNK4ncnn3Mat5emptyEv.exit: ; preds = %6 %exitcond163.not = icmp eq i64 %indvars.iv.next160, %wide.trip.count162 br i1 %exitcond163.not, label %._crit_edge, label %.lr.ph144.split.us151, !llvm.loop !61 -._crit_edge: ; preds = %.thread132.us153, %.thread132.us150, %.thread132.us147, %.thread.us, %.preheader, %.lr.ph144, %.loopexit +._crit_edge: ; preds = %.lr.ph, %.thread132.us153, %.thread132.us150, %.thread132.us147, %.thread.us, %.preheader, %.lr.ph144, %.loopexit call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #10 br label %82 diff --git a/bench/ncnn/optimized/crop.ll b/bench/ncnn/optimized/crop.ll index 011a58382ba..6541f1e6db5 100644 --- a/bench/ncnn/optimized/crop.ll +++ b/bench/ncnn/optimized/crop.ll @@ -5044,14 +5044,13 @@ _ZNK4ncnn3Mat5emptyEv.exit: ; preds = %32 store i32 %spec.select, ptr %53, align 4, !tbaa !55 %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 %.lr.ph450, label %.lr.ph, !llvm.loop !94 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !94 .loopexit: ; preds = %42 %54 = icmp sgt i32 %21, 0 br i1 %54, label %.lr.ph450, label %._crit_edge -.lr.ph450: ; preds = %.lr.ph, %.loopexit - %.0217486 = phi i32 [ %21, %.loopexit ], [ %46, %.lr.ph ] +.lr.ph450: ; preds = %.loopexit switch i32 %21, label %._crit_edge [ i32 1, label %.thread.us.preheader i32 2, label %.lr.ph450.split.us451.preheader @@ -5060,19 +5059,19 @@ _ZNK4ncnn3Mat5emptyEv.exit: ; preds = %32 ] .lr.ph450.split.us457.preheader: ; preds = %.lr.ph450 - %wide.trip.count468 = zext nneg i32 %.0217486 to i64 + %wide.trip.count468 = zext nneg i32 %21 to i64 br label %.lr.ph450.split.us457 .lr.ph450.split.us454.preheader: ; preds = %.lr.ph450 - %wide.trip.count473 = zext nneg i32 %.0217486 to i64 + %wide.trip.count473 = zext nneg i32 %21 to i64 br label %.lr.ph450.split.us454 .lr.ph450.split.us451.preheader: ; preds = %.lr.ph450 - %wide.trip.count478 = zext nneg i32 %.0217486 to i64 + %wide.trip.count478 = zext nneg i32 %21 to i64 br label %.lr.ph450.split.us451 .thread.us.preheader: ; preds = %.lr.ph450 - %wide.trip.count483 = zext nneg i32 %.0217486 to i64 + %wide.trip.count483 = zext nneg i32 %21 to i64 br label %.thread.us .thread.us: ; preds = %.thread.us.preheader, %.thread.us @@ -5234,7 +5233,7 @@ _ZNK4ncnn3Mat5emptyEv.exit: ; preds = %32 %exitcond469.not = icmp eq i64 %indvars.iv.next466, %wide.trip.count468 br i1 %exitcond469.not, label %._crit_edge, label %.lr.ph450.split.us457, !llvm.loop !95 -._crit_edge: ; preds = %.thread385.us459, %.thread385.us456, %.thread385.us453, %.thread.us, %.preheader, %.lr.ph450, %.loopexit +._crit_edge: ; preds = %.lr.ph, %.thread385.us459, %.thread385.us456, %.thread385.us453, %.thread.us, %.preheader, %.lr.ph450, %.loopexit call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #10 br label %224 diff --git a/bench/nghttp2/optimized/nghttp2_frame.ll b/bench/nghttp2/optimized/nghttp2_frame.ll index 8c7e9d93cac..66790ad222e 100644 --- a/bench/nghttp2/optimized/nghttp2_frame.ll +++ b/bench/nghttp2/optimized/nghttp2_frame.ll @@ -344,23 +344,9 @@ define hidden void @nghttp2_frame_window_update_free(ptr noundef readnone captur ret void } -; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable -define hidden i64 @nghttp2_frame_trail_padlen(ptr noundef readonly captures(none) %0, i64 noundef %1) local_unnamed_addr #7 { - %3 = icmp eq i64 %1, 0 - br i1 %3, label %10, label %4 - -4: ; preds = %2 - %5 = getelementptr inbounds nuw i8, ptr %0, i64 13 - %6 = load i8, ptr %5, align 1, !tbaa !10 - %7 = lshr i8 %6, 3 - %.lobit = and i8 %7, 1 - %8 = zext nneg i8 %.lobit to i64 - %9 = sub nuw i64 %1, %8 - br label %10 - -10: ; preds = %2, %4 - %.0 = phi i64 [ %9, %4 ], [ 0, %2 ] - ret i64 %.0 +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable +define hidden noundef i64 @nghttp2_frame_trail_padlen(ptr noundef readonly captures(none) %0, i64 noundef %1) local_unnamed_addr #5 { + ret i64 0 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable @@ -406,7 +392,7 @@ define hidden void @nghttp2_frame_extension_free(ptr noundef readnone captures(n } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) uwtable -define hidden void @nghttp2_frame_altsvc_init(ptr noundef captures(none) initializes((0, 15)) %0, i32 noundef %1, ptr noundef %2, i64 noundef %3, ptr noundef %4, i64 noundef %5) local_unnamed_addr #8 { +define hidden void @nghttp2_frame_altsvc_init(ptr noundef captures(none) initializes((0, 15)) %0, i32 noundef %1, ptr noundef %2, i64 noundef %3, ptr noundef %4, i64 noundef %5) local_unnamed_addr #7 { %7 = add i64 %3, 2 %8 = add i64 %7, %5 store i64 %8, ptr %0, align 8, !tbaa !3 @@ -447,7 +433,7 @@ define hidden void @nghttp2_frame_altsvc_free(ptr noundef readonly captures(none } ; Function Attrs: nofree norecurse nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: none) uwtable -define hidden void @nghttp2_frame_origin_init(ptr noundef captures(none) %0, ptr noundef %1, i64 noundef %2) local_unnamed_addr #9 { +define hidden void @nghttp2_frame_origin_init(ptr noundef captures(none) %0, ptr noundef %1, i64 noundef %2) local_unnamed_addr #8 { %.not = icmp eq i64 %2, 0 br i1 %.not, label %._crit_edge, label %.lr.ph @@ -499,7 +485,7 @@ define hidden void @nghttp2_frame_origin_free(ptr noundef readonly captures(none } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) uwtable -define hidden void @nghttp2_frame_priority_update_init(ptr noundef captures(none) initializes((0, 15)) %0, i32 noundef %1, ptr noundef %2, i64 noundef %3) local_unnamed_addr #8 { +define hidden void @nghttp2_frame_priority_update_init(ptr noundef captures(none) initializes((0, 15)) %0, i32 noundef %1, ptr noundef %2, i64 noundef %3) local_unnamed_addr #7 { %5 = add i64 %3, 4 store i64 %5, ptr %0, align 8, !tbaa !3 %6 = getelementptr inbounds nuw i8, ptr %0, i64 12 @@ -546,7 +532,7 @@ define hidden noundef range(i64 0, 6) i64 @nghttp2_frame_priority_len(i8 noundef } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable -define hidden range(i64 0, 6) i64 @nghttp2_frame_headers_payload_nv_offset(ptr noundef readonly captures(none) %0) local_unnamed_addr #7 { +define hidden range(i64 0, 6) i64 @nghttp2_frame_headers_payload_nv_offset(ptr noundef readonly captures(none) %0) local_unnamed_addr #9 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 13 %3 = load i8, ptr %2, align 1, !tbaa !64 %4 = and i8 %3, 32 @@ -1541,7 +1527,7 @@ define hidden void @nghttp2_frame_pack_altsvc(ptr noundef %0, ptr noundef readon } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) uwtable -define hidden void @nghttp2_frame_unpack_altsvc_payload(ptr noundef readonly captures(none) %0, i64 noundef %1, ptr noundef %2, i64 noundef %3) local_unnamed_addr #8 { +define hidden void @nghttp2_frame_unpack_altsvc_payload(ptr noundef readonly captures(none) %0, i64 noundef %1, ptr noundef %2, i64 noundef %3) local_unnamed_addr #7 { %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 %6 = load ptr, ptr %5, align 8, !tbaa !46 store ptr %2, ptr %6, align 8, !tbaa !48 @@ -2392,9 +2378,9 @@ attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argm attributes #4 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #5 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #7 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: none) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #8 = { mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nofree norecurse nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: none) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { nofree norecurse nosync nounwind memory(write, argmem: read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #10 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #11 = { mustprogress nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #12 = { mustprogress nofree nounwind willreturn memory(read, inaccessiblemem: none) uwtable "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/nghttp2/optimized/nghttp2_hd.ll b/bench/nghttp2/optimized/nghttp2_hd.ll index 789225421cb..95c3119b8f5 100644 --- a/bench/nghttp2/optimized/nghttp2_hd.ll +++ b/bench/nghttp2/optimized/nghttp2_hd.ll @@ -1598,14 +1598,17 @@ declare i32 @nghttp2_bufs_wrap_init2(ptr noundef, ptr noundef, i64 noundef, ptr ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read) uwtable define i64 @nghttp2_hd_deflate_bound(ptr noundef readnone captures(none) %0, ptr noundef readonly captures(none) %1, i64 noundef %2) local_unnamed_addr #6 { + %.not = icmp eq i64 %2, 0 + br i1 %.not, label %._crit_edge, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %3 %4 = mul i64 %2, 12 %5 = add i64 %4, 12 - %.not = icmp eq i64 %2, 0 - br i1 %.not, label %._crit_edge, label %.lr.ph + br label %.lr.ph -.lr.ph: ; preds = %3, %.lr.ph - %.013 = phi i64 [ %13, %.lr.ph ], [ 0, %3 ] - %.01112 = phi i64 [ %12, %.lr.ph ], [ %5, %3 ] +.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph + %.013 = phi i64 [ %13, %.lr.ph ], [ 0, %.lr.ph.preheader ] + %.01112 = phi i64 [ %12, %.lr.ph ], [ %5, %.lr.ph.preheader ] %6 = getelementptr inbounds nuw %struct.nghttp2_nv, ptr %1, i64 %.013 %7 = getelementptr inbounds nuw i8, ptr %6, i64 16 %8 = load i64, ptr %7, align 8, !tbaa !84 @@ -1618,7 +1621,7 @@ define i64 @nghttp2_hd_deflate_bound(ptr noundef readnone captures(none) %0, ptr br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !99 ._crit_edge: ; preds = %.lr.ph, %3 - %.011.lcssa = phi i64 [ %5, %3 ], [ %12, %.lr.ph ] + %.011.lcssa = phi i64 [ 12, %3 ], [ %12, %.lr.ph ] ret i64 %.011.lcssa } diff --git a/bench/nix/optimized/names.ll b/bench/nix/optimized/names.ll index 999c5ca8cd2..894c50217c6 100644 --- a/bench/nix/optimized/names.ll +++ b/bench/nix/optimized/names.ll @@ -2322,7 +2322,7 @@ _ZStssIcSt11char_traitsIcEEDTclsr8__detailE21__char_traits_cmp_catIT0_ELi0EEESt1 br label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit36 _ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit36: ; preds = %20, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i29, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit28, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i33, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit, %_ZStssIcSt11char_traitsIcEEDTclsr8__detailE21__char_traits_cmp_catIT0_ELi0EEESt17basic_string_viewIT_S2_ES6_.exit, %11 - %.0 = phi i1 [ %12, %11 ], [ %27, %_ZStssIcSt11char_traitsIcEEDTclsr8__detailE21__char_traits_cmp_catIT0_ELi0EEESt17basic_string_viewIT_S2_ES6_.exit ], [ true, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit ], [ %21, %20 ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i33 ], [ true, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit28 ], [ true, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i29 ] + %.0 = phi i1 [ %12, %11 ], [ %27, %_ZStssIcSt11char_traitsIcEEDTclsr8__detailE21__char_traits_cmp_catIT0_ELi0EEESt17basic_string_viewIT_S2_ES6_.exit ], [ true, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit ], [ true, %20 ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i33 ], [ true, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit28 ], [ true, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i29 ] ret i1 %.0 } @@ -5854,7 +5854,6 @@ define linkonce_odr void @_ZNSt8__detail8_ScannerIcE18_M_eat_escape_ecmaEv(ptr n br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %8, %17, %22 - %.0.i = phi i8 [ %16, %8 ], [ %21, %22 ], [ 0, %17 ] %23 = getelementptr inbounds nuw i8, ptr %0, i64 152 %24 = load ptr, ptr %23, align 8 %25 = load i8, ptr %24, align 1 @@ -5864,7 +5863,7 @@ _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %8, %17, %22 .lr.ph.i: ; preds = %_ZNKSt5ctypeIcE6narrowEcc.exit, %28 %26 = phi i8 [ %30, %28 ], [ %25, %_ZNKSt5ctypeIcE6narrowEcc.exit ] %.010.i = phi ptr [ %29, %28 ], [ %24, %_ZNKSt5ctypeIcE6narrowEcc.exit ] - %27 = icmp eq i8 %26, %.0.i + %27 = icmp eq i8 %26, %16 br i1 %27, label %31, label %28 28: ; preds = %.lr.ph.i @@ -6308,8 +6307,7 @@ define linkonce_odr void @_ZNSt8__detail8_ScannerIcE19_M_eat_escape_posixEv(ptr br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %8, %18, %23 - %.0.i = phi i8 [ %17, %8 ], [ %22, %23 ], [ 0, %18 ] - %24 = sext i8 %.0.i to i32 + %24 = sext i8 %17 to i32 %25 = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %11, i32 noundef %24) #28 %.not = icmp eq ptr %25, null br i1 %.not, label %40, label %26 @@ -6561,7 +6559,6 @@ define linkonce_odr void @_ZNSt8__detail8_ScannerIcE17_M_eat_escape_awkEv(ptr no br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %1, %12, %17 - %.0.i = phi i8 [ %11, %1 ], [ %16, %17 ], [ 0, %12 ] %18 = getelementptr inbounds nuw i8, ptr %0, i64 152 %19 = load ptr, ptr %18, align 8 %20 = load i8, ptr %19, align 1 @@ -6571,7 +6568,7 @@ _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %1, %12, %17 .lr.ph.i: ; preds = %_ZNKSt5ctypeIcE6narrowEcc.exit, %23 %21 = phi i8 [ %25, %23 ], [ %20, %_ZNKSt5ctypeIcE6narrowEcc.exit ] %.010.i = phi ptr [ %24, %23 ], [ %19, %_ZNKSt5ctypeIcE6narrowEcc.exit ] - %22 = icmp eq i8 %21, %.0.i + %22 = icmp eq i8 %21, %11 br i1 %22, label %26, label %23 23: ; preds = %.lr.ph.i @@ -6770,7 +6767,7 @@ define linkonce_odr void @_ZNSt8__detail8_ScannerIcE14_M_scan_normalEv(ptr nound br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %1, %14, %19 - %.0.i = phi i8 [ %13, %1 ], [ %18, %19 ], [ 32, %14 ] + %.0.i = phi i8 [ %13, %1 ], [ 32, %19 ], [ 32, %14 ] %20 = sext i8 %.0.i to i32 %21 = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %7, i32 noundef %20) #28 %22 = icmp eq ptr %21, null @@ -7076,7 +7073,6 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEmc.exit46: ; preds br label %_ZNKSt5ctypeIcE6narrowEcc.exit50 _ZNKSt5ctypeIcE6narrowEcc.exit50: ; preds = %143, %149, %154 - %.0.i48 = phi i8 [ %148, %143 ], [ %153, %154 ], [ 0, %149 ] %155 = load i8, ptr %0, align 8 %.not2966 = icmp eq i8 %155, 0 br i1 %.not2966, label %.loopexit, label %.lr.ph @@ -7084,7 +7080,7 @@ _ZNKSt5ctypeIcE6narrowEcc.exit50: ; preds = %143, %149, %154 .lr.ph: ; preds = %_ZNKSt5ctypeIcE6narrowEcc.exit50, %162 %156 = phi i8 [ %164, %162 ], [ %155, %_ZNKSt5ctypeIcE6narrowEcc.exit50 ] %.02067 = phi ptr [ %163, %162 ], [ %0, %_ZNKSt5ctypeIcE6narrowEcc.exit50 ] - %157 = icmp eq i8 %156, %.0.i48 + %157 = icmp eq i8 %156, %148 br i1 %157, label %158, label %162 158: ; preds = %.lr.ph @@ -14713,7 +14709,6 @@ _ZNKSt5ctypeIcE7tolowerEc.exit: ; preds = %14 br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %28, %.noexc, %_ZNKSt5ctypeIcE7tolowerEc.exit - %.0.i = phi i8 [ %22, %_ZNKSt5ctypeIcE7tolowerEc.exit ], [ %27, %28 ], [ 0, %.noexc ] %29 = load i64, ptr %9, align 8 %30 = add i64 %29, 1 %31 = load ptr, ptr %6, align 8 @@ -14796,7 +14791,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i21 50: ; preds = %.noexc18, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread %51 = phi ptr [ %45, %.noexc18 ], [ %31, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i ], [ %31, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread ] %52 = getelementptr inbounds i8, ptr %51, i64 %29 - store i8 %.0.i, ptr %52, align 1 + store i8 %22, ptr %52, align 1 store i64 %30, ptr %9, align 8 %53 = load ptr, ptr %6, align 8 %54 = getelementptr inbounds i8, ptr %53, i64 %30 @@ -22160,7 +22155,6 @@ define linkonce_odr void @_ZNKSt7__cxx1112regex_traitsIcE18lookup_collatenameIPK br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %26, %.noexc, %16 - %.0.i = phi i8 [ %20, %16 ], [ %25, %26 ], [ 0, %.noexc ] %27 = load i64, ptr %11, align 8 %28 = add i64 %27, 1 %29 = load ptr, ptr %7, align 8 @@ -22243,7 +22237,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 48: ; preds = %.noexc19, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread %49 = phi ptr [ %43, %.noexc19 ], [ %29, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i ], [ %29, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread ] %50 = getelementptr inbounds i8, ptr %49, i64 %27 - store i8 %.0.i, ptr %50, align 1 + store i8 %20, ptr %50, align 1 store i64 %28, ptr %11, align 8 %51 = load ptr, ptr %7, align 8 %52 = getelementptr inbounds i8, ptr %51, i64 %28 diff --git a/bench/nuttx/optimized/task_setup.ll b/bench/nuttx/optimized/task_setup.ll index a12baa54d1b..a9c6ba01b2b 100644 --- a/bench/nuttx/optimized/task_setup.ll +++ b/bench/nuttx/optimized/task_setup.ll @@ -341,16 +341,14 @@ nxtask_setup_name.exit: ; preds = %5, %8 br i1 %exitcond72.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !14 ._crit_edge.i: ; preds = %.lr.ph.i, %34 - %.pre-phi.i = phi i64 [ 0, %34 ], [ %wide.trip.count.i, %.lr.ph.i ] - %51 = getelementptr inbounds nuw ptr, ptr %32, i64 %.pre-phi.i - %52 = getelementptr inbounds nuw i8, ptr %51, i64 8 - store ptr null, ptr %52, align 8 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %54 = load ptr, ptr %53, align 16 - %55 = getelementptr inbounds nuw i8, ptr %54, i64 856 - %56 = load ptr, ptr %55, align 8 - %57 = getelementptr inbounds nuw i8, ptr %56, i64 40 - store ptr %32, ptr %57, align 8 + %51 = getelementptr inbounds nuw i8, ptr %32, i64 8 + store ptr null, ptr %51, align 8 + %52 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %53 = load ptr, ptr %52, align 16 + %53 = getelementptr inbounds nuw i8, ptr %53, i64 856 + %54 = load ptr, ptr %53, align 8 + %55 = getelementptr inbounds nuw i8, ptr %54, i64 40 + store ptr %32, ptr %55, align 8 br label %nxtask_setup_stackargs.exit nxtask_setup_stackargs.exit: ; preds = %21, %26, %.loopexit.i, %._crit_edge.i diff --git a/bench/oiio/optimized/deepdata.ll b/bench/oiio/optimized/deepdata.ll index fb33e58fd39..7b6d12787c9 100644 --- a/bench/oiio/optimized/deepdata.ll +++ b/bench/oiio/optimized/deepdata.ll @@ -6198,19 +6198,19 @@ _ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit: ; preds = %8 store i32 %6, ptr %.sroa.3.0..sroa_idx, align 4 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 16 store i32 %6, ptr %.sroa.4.0..sroa_idx, align 8 + %25 = add nuw nsw i64 %18, 1 + %26 = lshr i64 %25, 1 br label %.lr.ph.i.i.i.i -.lr.ph.i.i.i.i: ; preds = %24, %select.unfold.i.i.i.i - %.010.i.i.in.in.i.i = phi i64 [ %.010.i.i.i.i, %select.unfold.i.i.i.i ], [ %18, %24 ] - %.010.i.i.in.i.i = add nuw nsw i64 %.010.i.i.in.in.i.i, 1 - %.010.i.i.i.i = lshr i64 %.010.i.i.in.i.i, 1 - %26 = shl nuw nsw i64 %.010.i.i.i.i, 2 - %27 = call noalias noundef ptr @_ZnwmRKSt9nothrow_t(i64 noundef %26, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow) #36 - %.not.i.i.i.i = icmp eq ptr %27, null +.lr.ph.i.i.i.i: ; preds = %select.unfold.i.i.i.i, %24 + %.010.i.i.in.in.i.i = phi i64 [ 1, %select.unfold.i.i.i.i ], [ %26, %24 ] + %27 = shl nuw nsw i64 %.010.i.i.in.in.i.i, 2 + %28 = call noalias noundef ptr @_ZnwmRKSt9nothrow_t(i64 noundef %27, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow) #36 + %.not.i.i.i.i = icmp eq ptr %28, null br i1 %.not.i.i.i.i, label %select.unfold.i.i.i.i, label %_ZNSt17_Temporary_bufferIPiiEC2ES0_l.exit.i.i select.unfold.i.i.i.i: ; preds = %.lr.ph.i.i.i.i - %.not14.i.i.i.i = icmp samesign ult i64 %.010.i.i.in.in.i.i, 3 + %.not14.i.i.i.i = icmp eq i64 %.010.i.i.in.in.i.i, 1 br i1 %.not14.i.i.i.i, label %.loopexit.i.i, label %.lr.ph.i.i.i.i, !llvm.loop !160 .loopexit.i.i: ; preds = %select.unfold.i.i.i.i @@ -6218,21 +6218,19 @@ select.unfold.i.i.i.i: ; preds = %.lr.ph.i.i.i.i to label %.loopexit._crit_edge.i.i unwind label %28 28: ; preds = %_ZNSt17_Temporary_bufferIPiiEC2ES0_l.exit.i.i, %.loopexit.i.i - %.sroa.4.025.i.i = phi i64 [ %.010.i.i.i.i, %_ZNSt17_Temporary_bufferIPiiEC2ES0_l.exit.i.i ], [ 0, %.loopexit.i.i ] + %.sroa.4.025.i.i = phi i64 [ 4, %_ZNSt17_Temporary_bufferIPiiEC2ES0_l.exit.i.i ], [ 0, %.loopexit.i.i ] %29 = landingpad { ptr, i32 } cleanup - %30 = shl nuw nsw i64 %.sroa.4.025.i.i, 2 - call void @_ZdlPvm(ptr noundef %27, i64 noundef %30) #30 - resume { ptr, i32 } %29 + call void @_ZdlPvm(ptr noundef %28, i64 noundef %.sroa.4.025.i.i) #30 + resume { ptr, i32 } %30 _ZNSt17_Temporary_bufferIPiiEC2ES0_l.exit.i.i: ; preds = %.lr.ph.i.i.i.i invoke fastcc void @_ZSt22__stable_sort_adaptiveIPiS0_lN9__gnu_cxx5__ops15_Iter_comp_iterIN11OpenImageIO6v3_1_012_GLOBAL__N_116SampleComparatorEEEEvT_S9_T0_T1_T2_(ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %27, i64 noundef %.010.i.i.i.i, ptr noundef nonnull byval(%"struct.__gnu_cxx::__ops::_Iter_comp_iter") align 8 %3) to label %.loopexit._crit_edge.i.i unwind label %28 -.loopexit._crit_edge.i.i: ; preds = %.loopexit.i.i, %_ZNSt17_Temporary_bufferIPiiEC2ES0_l.exit.i.i - %.sroa.4.023.i.i = phi i64 [ %.010.i.i.i.i, %_ZNSt17_Temporary_bufferIPiiEC2ES0_l.exit.i.i ], [ 0, %.loopexit.i.i ] - %31 = shl nuw nsw i64 %.sroa.4.023.i.i, 2 - call void @_ZdlPvm(ptr noundef %27, i64 noundef %31) #30 +.loopexit._crit_edge.i.i: ; preds = %_ZNSt17_Temporary_bufferIPiiEC2ES0_l.exit.i.i, %.loopexit.i.i + %.sroa.4.023.i.i = phi i64 [ 4, %_ZNSt17_Temporary_bufferIPiiEC2ES0_l.exit.i.i ], [ 0, %.loopexit.i.i ] + call void @_ZdlPvm(ptr noundef %28, i64 noundef %.sroa.4.023.i.i) #30 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) %32 = load ptr, ptr %0, align 8, !tbaa !35 %33 = getelementptr inbounds nuw i8, ptr %32, i64 216 diff --git a/bench/openblas/optimized/dgesvj.ll b/bench/openblas/optimized/dgesvj.ll index a7567584b5e..4224e53fee3 100644 --- a/bench/openblas/optimized/dgesvj.ll +++ b/bench/openblas/optimized/dgesvj.ll @@ -280,7 +280,7 @@ cdce.end: ; preds = %106, %cdce.call 144: ; preds = %.lr.ph1789, %.loopexit1729 %.01788 = phi i32 [ 1, %.lr.ph1789 ], [ %.1, %.loopexit1729 ] - %.014561787 = phi i32 [ 1, %.lr.ph1789 ], [ %.11457, %.loopexit1729 ] + %.014561787 = phi i1 [ false, %.lr.ph1789 ], [ true, %.loopexit1729 ] %storemerge16271786 = phi i32 [ 1, %.lr.ph1789 ], [ %178, %.loopexit1729 ] store double 0.000000e+00, ptr %20, align 8, !tbaa !7 store double 1.000000e+00, ptr %21, align 8, !tbaa !7 @@ -328,8 +328,7 @@ cdce.end: ; preds = %106, %cdce.call %170 = sext i32 %169 to i64 %171 = getelementptr inbounds double, ptr %34, i64 %170 store double %168, ptr %171, align 8, !tbaa !7 - %.not1679 = icmp eq i32 %.014561787, 0 - br i1 %.not1679, label %.loopexit1729, label %172 + br i1 %.014561787, label %.loopexit1729, label %172 172: ; preds = %165 %173 = add nsw i32 %169, -1 @@ -353,7 +352,6 @@ cdce.end: ; preds = %106, %cdce.call .loopexit1729: ; preds = %.lr.ph1784, %172, %160, %165 %177 = phi i32 [ %162, %160 ], [ %169, %165 ], [ %169, %172 ], [ %169, %.lr.ph1784 ] - %.11457 = phi i32 [ %.014561787, %160 ], [ 0, %165 ], [ 0, %172 ], [ 0, %.lr.ph1784 ] %.1 = phi i32 [ 1, %160 ], [ 0, %165 ], [ 0, %172 ], [ 0, %.lr.ph1784 ] %178 = add nsw i32 %177, 1 store i32 %178, ptr %24, align 4, !tbaa !3 @@ -372,7 +370,7 @@ cdce.end: ; preds = %106, %cdce.call .lr.ph1780: ; preds = %181, %.loopexit1731 %.31779 = phi i32 [ %.4, %.loopexit1731 ], [ 1, %181 ] - %.214581778 = phi i32 [ %.31459, %.loopexit1731 ], [ 1, %181 ] + %.214581778 = phi i1 [ true, %.loopexit1731 ], [ false, %181 ] %storemerge16231777 = phi i32 [ %212, %.loopexit1731 ], [ 1, %181 ] store double 0.000000e+00, ptr %20, align 8, !tbaa !7 store double 1.000000e+00, ptr %21, align 8, !tbaa !7 @@ -416,8 +414,7 @@ cdce.end: ; preds = %106, %cdce.call %204 = sext i32 %203 to i64 %205 = getelementptr inbounds double, ptr %34, i64 %204 store double %202, ptr %205, align 8, !tbaa !7 - %.not1625 = icmp eq i32 %.214581778, 0 - br i1 %.not1625, label %.loopexit1731, label %206 + br i1 %.214581778, label %.loopexit1731, label %206 206: ; preds = %199 %207 = add nsw i32 %203, -1 @@ -441,7 +438,6 @@ cdce.end: ; preds = %106, %cdce.call .loopexit1731: ; preds = %.lr.ph1773, %206, %194, %199 %211 = phi i32 [ %196, %194 ], [ %203, %199 ], [ %203, %206 ], [ %203, %.lr.ph1773 ] - %.31459 = phi i32 [ %.214581778, %194 ], [ 0, %199 ], [ 0, %206 ], [ 0, %.lr.ph1773 ] %.4 = phi i32 [ 1, %194 ], [ 0, %199 ], [ 0, %206 ], [ 0, %.lr.ph1773 ] %212 = add nsw i32 %211, 1 store i32 %212, ptr %24, align 4, !tbaa !3 @@ -454,7 +450,7 @@ cdce.end: ; preds = %106, %cdce.call .lr.ph1770: ; preds = %214, %.loopexit1733 %.51769 = phi i32 [ %.6, %.loopexit1733 ], [ 1, %214 ] - %.414601768 = phi i32 [ %.51461, %.loopexit1733 ], [ 1, %214 ] + %.414601768 = phi i1 [ true, %.loopexit1733 ], [ false, %214 ] %storemerge1767 = phi i32 [ %245, %.loopexit1733 ], [ 1, %214 ] store double 0.000000e+00, ptr %20, align 8, !tbaa !7 store double 1.000000e+00, ptr %21, align 8, !tbaa !7 @@ -498,8 +494,7 @@ cdce.end: ; preds = %106, %cdce.call %237 = sext i32 %236 to i64 %238 = getelementptr inbounds double, ptr %34, i64 %237 store double %235, ptr %238, align 8, !tbaa !7 - %.not1621 = icmp eq i32 %.414601768, 0 - br i1 %.not1621, label %.loopexit1733, label %239 + br i1 %.414601768, label %.loopexit1733, label %239 239: ; preds = %232 %240 = add nsw i32 %236, -1 @@ -523,7 +518,6 @@ cdce.end: ; preds = %106, %cdce.call .loopexit1733: ; preds = %.lr.ph, %239, %227, %232 %244 = phi i32 [ %229, %227 ], [ %236, %232 ], [ %236, %239 ], [ %236, %.lr.ph ] - %.51461 = phi i32 [ %.414601768, %227 ], [ 0, %232 ], [ 0, %239 ], [ 0, %.lr.ph ] %.6 = phi i32 [ 1, %227 ], [ 0, %232 ], [ 0, %239 ], [ 0, %.lr.ph ] %245 = add nsw i32 %244, 1 store i32 %245, ptr %24, align 4, !tbaa !3 diff --git a/bench/openblas/optimized/dtpmv_NLN.ll b/bench/openblas/optimized/dtpmv_NLN.ll index 3f180f744c2..375ceea84ea 100644 --- a/bench/openblas/optimized/dtpmv_NLN.ll +++ b/bench/openblas/optimized/dtpmv_NLN.ll @@ -24,7 +24,8 @@ define noundef i32 @dtpmv_NLN(i64 noundef %0, ptr noundef %1, ptr noundef %2, i6 %13 = getelementptr double, ptr %1, i64 %12 %14 = getelementptr i8, ptr %13, i64 -8 %15 = getelementptr double, ptr %.0, i64 %0 - br label %16 + %16 = getelementptr i8, ptr %15, i64 -8 + br label %17 16: ; preds = %.lr.ph, %._crit_edge40 %.03239 = phi i64 [ 0, %.lr.ph ], [ %31, %._crit_edge40 ] @@ -43,12 +44,10 @@ define noundef i32 @dtpmv_NLN(i64 noundef %0, ptr noundef %1, ptr noundef %2, i6 br label %._crit_edge40 ._crit_edge40: ; preds = %16, %17 - %.pre-phi = phi i64 [ %18, %17 ], [ -1, %16 ] - %25 = load double, ptr %.03338, align 8, !tbaa !3 - %26 = getelementptr double, ptr %15, i64 %.pre-phi - %27 = load double, ptr %26, align 8, !tbaa !3 - %28 = fmul double %25, %27 - store double %28, ptr %26, align 8, !tbaa !3 + %26 = load double, ptr %.03338, align 8, !tbaa !3 + %25 = load double, ptr %16, align 8, !tbaa !3 + %28 = fmul double %26, %27 + store double %28, ptr %16, align 8, !tbaa !3 %29 = sub nuw nsw i64 -2, %.03239 %30 = getelementptr inbounds double, ptr %.03338, i64 %29 %31 = add nuw nsw i64 %.03239, 1 diff --git a/bench/opencv/optimized/camshift.ll b/bench/opencv/optimized/camshift.ll index 8d37d606c27..231126f1c0b 100644 --- a/bench/opencv/optimized/camshift.ll +++ b/bench/opencv/optimized/camshift.ll @@ -1920,19 +1920,16 @@ _ZSt8_DestroyIPN2cv4UMatES1_EvT_S3_RSaIT0_E.exit.i375: ; preds = %_ZSt8_DestroyI br label %699 699: ; preds = %681, %698, %._crit_edge.i.i379, %689, %677, %663 - %.sroa.0.sroa.0.0.i = phi i32 [ 0, %698 ], [ %684, %._crit_edge.i.i379 ], [ 0, %677 ], [ 0, %663 ], [ 0, %689 ], [ 0, %681 ] %.sroa.0.sroa.9.0.i = phi i32 [ 0, %698 ], [ %692, %._crit_edge.i.i379 ], [ 0, %677 ], [ 0, %663 ], [ 0, %689 ], [ 0, %681 ] %.sroa.14.sroa.0.0.i = phi i32 [ 0, %698 ], [ %.sroa.speculated53.i.i, %._crit_edge.i.i379 ], [ 0, %677 ], [ 0, %663 ], [ 0, %689 ], [ 0, %681 ] %.sroa.14.sroa.12.0.i = phi i32 [ 0, %698 ], [ %.sroa.speculated.i.i, %._crit_edge.i.i379 ], [ 0, %677 ], [ 0, %663 ], [ 0, %689 ], [ 0, %681 ] %.sroa.0.sroa.9.0.insert.ext.i = zext nneg i32 %.sroa.0.sroa.9.0.i to i64 %.sroa.0.sroa.9.0.insert.shift.i = shl nuw nsw i64 %.sroa.0.sroa.9.0.insert.ext.i, 32 - %.sroa.0.sroa.0.0.insert.ext.i = zext nneg i32 %.sroa.0.sroa.0.0.i to i64 - %.sroa.0.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.0.sroa.9.0.insert.shift.i, %.sroa.0.sroa.0.0.insert.ext.i %.sroa.14.sroa.12.0.insert.ext.i = zext nneg i32 %.sroa.14.sroa.12.0.i to i64 %.sroa.14.sroa.12.0.insert.shift.i = shl nuw nsw i64 %.sroa.14.sroa.12.0.insert.ext.i, 32 %.sroa.14.sroa.0.0.insert.ext.i = zext nneg i32 %.sroa.14.sroa.0.0.i to i64 %.sroa.14.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.14.sroa.12.0.insert.shift.i, %.sroa.14.sroa.0.0.insert.ext.i - store i64 %.sroa.0.sroa.0.0.insert.insert.i, ptr %5, align 8 + store i64 %.sroa.0.sroa.9.0.insert.shift.i, ptr %5, align 8 store i64 %.sroa.14.sroa.0.0.insert.insert.i, ptr %287, align 8 br label %715 diff --git a/bench/openexr/optimized/coding.ll b/bench/openexr/optimized/coding.ll index 994f68f38bc..efc17682d68 100644 --- a/bench/openexr/optimized/coding.ll +++ b/bench/openexr/optimized/coding.ll @@ -155,7 +155,7 @@ compute_sampled_height.exit.us: ; preds = %77, %.lr.ph.split.u br label %compute_sampled_width.exit.us compute_sampled_width.exit.us: ; preds = %85, %compute_sampled_height.exit.us - %.0.i50.us = phi i32 [ %.fr, %compute_sampled_height.exit.us ], [ %86, %85 ] + %.0.i50.us = phi i32 [ 1, %compute_sampled_height.exit.us ], [ %86, %85 ] %87 = getelementptr inbounds nuw i8, ptr %71, i64 12 store i32 %.0.i50.us, ptr %87, align 4, !tbaa !39 %88 = getelementptr inbounds nuw i8, ptr %71, i64 16 @@ -227,8 +227,7 @@ compute_sampled_height.exit: ; preds = %.lr.ph.split, %111, %124 = getelementptr inbounds nuw i8, ptr %104, i64 24 %125 = load i32, ptr %124, align 8, !tbaa !38 %126 = icmp slt i32 %125, 2 - %brmerge = or i1 %126, %39 - %.mux = select i1 %126, i32 %.fr, i32 1 + %brmerge = or i1 %39, %126 br i1 %brmerge, label %compute_sampled_width.exit, label %127 127: ; preds = %compute_sampled_height.exit @@ -236,7 +235,7 @@ compute_sampled_height.exit: ; preds = %.lr.ph.split, %111, br label %compute_sampled_width.exit compute_sampled_width.exit: ; preds = %compute_sampled_height.exit, %127 - %.0.i50 = phi i32 [ %.mux, %compute_sampled_height.exit ], [ %128, %127 ] + %.0.i50 = phi i32 [ 1, %compute_sampled_height.exit ], [ %128, %127 ] %129 = getelementptr inbounds nuw i8, ptr %105, i64 12 store i32 %.0.i50, ptr %129, align 4, !tbaa !39 %130 = getelementptr inbounds nuw i8, ptr %105, i64 16 @@ -391,7 +390,7 @@ compute_sampled_height.exit.us: ; preds = %61, %.lr.ph.split.u br label %compute_sampled_width.exit.us compute_sampled_width.exit.us: ; preds = %69, %compute_sampled_height.exit.us - %.0.i38.us = phi i32 [ %.fr, %compute_sampled_height.exit.us ], [ %70, %69 ] + %.0.i38.us = phi i32 [ 1, %compute_sampled_height.exit.us ], [ %70, %69 ] %71 = getelementptr inbounds nuw i8, ptr %55, i64 12 store i32 %.0.i38.us, ptr %71, align 4, !tbaa !39 %72 = getelementptr inbounds nuw i8, ptr %55, i64 16 @@ -525,7 +524,7 @@ compute_sampled_height.exit: ; preds = %.lr.ph.split.split, br label %compute_sampled_width.exit compute_sampled_width.exit: ; preds = %compute_sampled_height.exit, %146 - %.0.i38 = phi i32 [ %.fr, %compute_sampled_height.exit ], [ %147, %146 ] + %.0.i38 = phi i32 [ 1, %compute_sampled_height.exit ], [ %147, %146 ] %148 = getelementptr inbounds nuw i8, ptr %124, i64 12 store i32 %.0.i38, ptr %148, align 4, !tbaa !39 %149 = getelementptr inbounds nuw i8, ptr %124, i64 16 diff --git a/bench/openmpi/optimized/pmix_client_fabric.ll b/bench/openmpi/optimized/pmix_client_fabric.ll index 11bc4d12506..8691ce1b423 100644 --- a/bench/openmpi/optimized/pmix_client_fabric.ll +++ b/bench/openmpi/optimized/pmix_client_fabric.ll @@ -1136,12 +1136,13 @@ define internal void @frecv(ptr noundef readonly captures(none) %0, ptr readnone .sink.split: ; preds = %114, %108, %76, %70, %48, %40 %.386.sink = phi i32 [ %54, %48 ], [ -20, %40 ], [ %84, %76 ], [ -20, %70 ], [ %122, %114 ], [ -20, %108 ] %.sink87 = phi i32 [ 105, %48 ], [ 105, %40 ], [ 116, %76 ], [ 116, %70 ], [ 124, %114 ], [ 124, %108 ] + %.0.ph = phi i32 [ -2, %48 ], [ -2, %40 ], [ -2, %76 ], [ -2, %70 ], [ %122, %114 ], [ -20, %108 ] %123 = call ptr @PMIx_Error_string(i32 noundef %.386.sink) #11 call void (i32, ptr, ...) @pmix_output(i32 noundef 0, ptr noundef nonnull @.str.4, ptr noundef %123, ptr noundef nonnull @.str.3, i32 noundef %.sink87) #11 br label %124 124: ; preds = %.sink.split, %114, %114, %76, %48, %16, %20, %85, %55 - %.0 = phi i32 [ 0, %55 ], [ %122, %114 ], [ %84, %85 ], [ -25, %20 ], [ -25, %16 ], [ %54, %48 ], [ %84, %76 ], [ %122, %114 ], [ %.386.sink, %.sink.split ] + %.0 = phi i32 [ 0, %55 ], [ %122, %114 ], [ -2, %85 ], [ -25, %20 ], [ -25, %16 ], [ %54, %48 ], [ %84, %76 ], [ %122, %114 ], [ %.0.ph, %.sink.split ] %125 = load i32, ptr getelementptr inbounds nuw (i8, ptr @pmix_globals, i64 392), align 8, !tbaa !40 %or.cond11 = icmp ult i32 %125, 64 br i1 %or.cond11, label %126, label %132 diff --git a/bench/openvdb/optimized/FindActiveValues.ll b/bench/openvdb/optimized/FindActiveValues.ll index 213003dc303..9c4ecff1300 100644 --- a/bench/openvdb/optimized/FindActiveValues.ll +++ b/bench/openvdb/optimized/FindActiveValues.ll @@ -180854,7 +180854,7 @@ if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, br label %if.end109 _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataIbEESt6vectorIS6_SaIS6_EEEEmEvRT_T0_.exit: ; preds = %if.then9 - %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__first.coerce, i64 %sub.ptr.sub.i + %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %__first.coerce, i64 36 %cmp.i.not5.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %__last.coerce br i1 %cmp.i.not5.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataIbEESt6vectorIS6_SaIS6_EEEES7_S6_ET0_T_SD_SC_RSaIT1_E.exit, label %for.body.i.i.i.i @@ -180896,11 +180896,7 @@ _ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIbEES5_SaIS4_EET0_T_ %4 = phi ptr [ %.pre86, %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIbEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41.loopexit ], [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataIbEESt6vectorIS6_SaIS6_EEEES7_S6_ET0_T_SD_SC_RSaIT1_E.exit ] %add.ptr58 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr58, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i45 = icmp eq ptr %1, %__position.coerce - br i1 %tobool.not.i.i.i.i.i45, label %if.end109, label %if.then.i.i.i.i.i46 - -if.then.i.i.i.i.i46: ; preds = %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIbEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %__position.coerce, ptr align 4 %__first.coerce, i64 %sub.ptr.sub.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %__position.coerce, ptr noundef nonnull align 4 dereferenceable(36) %__first.coerce, i64 36, i1 false) br label %if.end109 if.else68: ; preds = %if.then @@ -180986,7 +180982,7 @@ _ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIbEESaIS4_EE13_M_deallocateEPS store ptr %add.ptr105, ptr %_M_end_of_storage, align 8 br label %if.end109 -if.end109: ; preds = %if.then.i.i.i.i.i46, %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIbEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41, %if.then.i.i.i.i.i30, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIbEESaIS4_EE13_M_deallocateEPS4_m.exit, %entry +if.end109: ; preds = %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIbEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41, %if.then.i.i.i.i.i30, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIbEESaIS4_EE13_M_deallocateEPS4_m.exit, %entry ret void } @@ -183866,7 +183862,7 @@ if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, br label %if.end109 _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataIiEESt6vectorIS6_SaIS6_EEEEmEvRT_T0_.exit: ; preds = %if.then9 - %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__first.coerce, i64 %sub.ptr.sub.i + %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %__first.coerce, i64 36 %cmp.i.not5.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %__last.coerce br i1 %cmp.i.not5.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataIiEESt6vectorIS6_SaIS6_EEEES7_S6_ET0_T_SD_SC_RSaIT1_E.exit, label %for.body.i.i.i.i @@ -183908,11 +183904,7 @@ _ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIiEES5_SaIS4_EET0_T_ %4 = phi ptr [ %.pre86, %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIiEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41.loopexit ], [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataIiEESt6vectorIS6_SaIS6_EEEES7_S6_ET0_T_SD_SC_RSaIT1_E.exit ] %add.ptr58 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr58, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i45 = icmp eq ptr %1, %__position.coerce - br i1 %tobool.not.i.i.i.i.i45, label %if.end109, label %if.then.i.i.i.i.i46 - -if.then.i.i.i.i.i46: ; preds = %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIiEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %__position.coerce, ptr align 4 %__first.coerce, i64 %sub.ptr.sub.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %__position.coerce, ptr noundef nonnull align 4 dereferenceable(36) %__first.coerce, i64 36, i1 false) br label %if.end109 if.else68: ; preds = %if.then @@ -183998,7 +183990,7 @@ _ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIiEESaIS4_EE13_M_deallocateEPS store ptr %add.ptr105, ptr %_M_end_of_storage, align 8 br label %if.end109 -if.end109: ; preds = %if.then.i.i.i.i.i46, %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIiEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41, %if.then.i.i.i.i.i30, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIiEESaIS4_EE13_M_deallocateEPS4_m.exit, %entry +if.end109: ; preds = %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIiEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41, %if.then.i.i.i.i.i30, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIiEESaIS4_EE13_M_deallocateEPS4_m.exit, %entry ret void } @@ -186878,7 +186870,7 @@ if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, br label %if.end109 _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataIlEESt6vectorIS6_SaIS6_EEEEmEvRT_T0_.exit: ; preds = %if.then9 - %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__first.coerce, i64 %sub.ptr.sub.i + %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %__first.coerce, i64 40 %cmp.i.not5.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %__last.coerce br i1 %cmp.i.not5.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataIlEESt6vectorIS6_SaIS6_EEEES7_S6_ET0_T_SD_SC_RSaIT1_E.exit, label %for.body.i.i.i.i @@ -186920,11 +186912,7 @@ _ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIlEES5_SaIS4_EET0_T_ %4 = phi ptr [ %.pre86, %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIlEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41.loopexit ], [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataIlEESt6vectorIS6_SaIS6_EEEES7_S6_ET0_T_SD_SC_RSaIT1_E.exit ] %add.ptr58 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr58, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i45 = icmp eq ptr %1, %__position.coerce - br i1 %tobool.not.i.i.i.i.i45, label %if.end109, label %if.then.i.i.i.i.i46 - -if.then.i.i.i.i.i46: ; preds = %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIlEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %__position.coerce, ptr align 8 %__first.coerce, i64 %sub.ptr.sub.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %__position.coerce, ptr noundef nonnull align 8 dereferenceable(40) %__first.coerce, i64 40, i1 false) br label %if.end109 if.else68: ; preds = %if.then @@ -187010,7 +186998,7 @@ _ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIlEESaIS4_EE13_M_deallocateEPS store ptr %add.ptr105, ptr %_M_end_of_storage, align 8 br label %if.end109 -if.end109: ; preds = %if.then.i.i.i.i.i46, %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIlEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41, %if.then.i.i.i.i.i30, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIlEESaIS4_EE13_M_deallocateEPS4_m.exit, %entry +if.end109: ; preds = %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIlEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41, %if.then.i.i.i.i.i30, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIlEESaIS4_EE13_M_deallocateEPS4_m.exit, %entry ret void } @@ -189890,7 +189878,7 @@ if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, br label %if.end109 _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataIfEESt6vectorIS6_SaIS6_EEEEmEvRT_T0_.exit: ; preds = %if.then9 - %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__first.coerce, i64 %sub.ptr.sub.i + %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %__first.coerce, i64 36 %cmp.i.not5.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %__last.coerce br i1 %cmp.i.not5.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataIfEESt6vectorIS6_SaIS6_EEEES7_S6_ET0_T_SD_SC_RSaIT1_E.exit, label %for.body.i.i.i.i @@ -189932,11 +189920,7 @@ _ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIfEES5_SaIS4_EET0_T_ %4 = phi ptr [ %.pre86, %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIfEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41.loopexit ], [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataIfEESt6vectorIS6_SaIS6_EEEES7_S6_ET0_T_SD_SC_RSaIT1_E.exit ] %add.ptr58 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr58, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i45 = icmp eq ptr %1, %__position.coerce - br i1 %tobool.not.i.i.i.i.i45, label %if.end109, label %if.then.i.i.i.i.i46 - -if.then.i.i.i.i.i46: ; preds = %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIfEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %__position.coerce, ptr align 4 %__first.coerce, i64 %sub.ptr.sub.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %__position.coerce, ptr noundef nonnull align 4 dereferenceable(36) %__first.coerce, i64 36, i1 false) br label %if.end109 if.else68: ; preds = %if.then @@ -190022,7 +190006,7 @@ _ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIfEESaIS4_EE13_M_deallocateEPS store ptr %add.ptr105, ptr %_M_end_of_storage, align 8 br label %if.end109 -if.end109: ; preds = %if.then.i.i.i.i.i46, %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIfEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41, %if.then.i.i.i.i.i30, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIfEESaIS4_EE13_M_deallocateEPS4_m.exit, %entry +if.end109: ; preds = %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIfEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41, %if.then.i.i.i.i.i30, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIfEESaIS4_EE13_M_deallocateEPS4_m.exit, %entry ret void } @@ -192902,7 +192886,7 @@ if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, br label %if.end109 _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataIdEESt6vectorIS6_SaIS6_EEEEmEvRT_T0_.exit: ; preds = %if.then9 - %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__first.coerce, i64 %sub.ptr.sub.i + %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %__first.coerce, i64 40 %cmp.i.not5.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %__last.coerce br i1 %cmp.i.not5.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataIdEESt6vectorIS6_SaIS6_EEEES7_S6_ET0_T_SD_SC_RSaIT1_E.exit, label %for.body.i.i.i.i @@ -192944,11 +192928,7 @@ _ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIdEES5_SaIS4_EET0_T_ %4 = phi ptr [ %.pre86, %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIdEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41.loopexit ], [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataIdEESt6vectorIS6_SaIS6_EEEES7_S6_ET0_T_SD_SC_RSaIT1_E.exit ] %add.ptr58 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr58, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i45 = icmp eq ptr %1, %__position.coerce - br i1 %tobool.not.i.i.i.i.i45, label %if.end109, label %if.then.i.i.i.i.i46 - -if.then.i.i.i.i.i46: ; preds = %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIdEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %__position.coerce, ptr align 8 %__first.coerce, i64 %sub.ptr.sub.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %__position.coerce, ptr noundef nonnull align 8 dereferenceable(40) %__first.coerce, i64 40, i1 false) br label %if.end109 if.else68: ; preds = %if.then @@ -193034,7 +193014,7 @@ _ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIdEESaIS4_EE13_M_deallocateEPS store ptr %add.ptr105, ptr %_M_end_of_storage, align 8 br label %if.end109 -if.end109: ; preds = %if.then.i.i.i.i.i46, %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIdEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41, %if.then.i.i.i.i.i30, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIdEESaIS4_EE13_M_deallocateEPS4_m.exit, %entry +if.end109: ; preds = %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataIdEES5_SaIS4_EET0_T_S8_S7_RT1_.exit41, %if.then.i.i.i.i.i30, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIdEESaIS4_EE13_M_deallocateEPS4_m.exit, %entry ret void } @@ -195728,7 +195708,7 @@ if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, br label %if.end109 _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataINS3_4math4Vec3IfEEEESt6vectorIS9_SaIS9_EEEEmEvRT_T0_.exit: ; preds = %if.then9 - %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__first.coerce, i64 %sub.ptr.sub.i + %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %__first.coerce, i64 44 %cmp.i.not5.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %__last.coerce br i1 %cmp.i.not5.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataINS3_4math4Vec3IfEEEESt6vectorIS9_SaIS9_EEEESA_S9_ET0_T_SG_SF_RSaIT1_E.exit, label %for.body.i.i.i.i @@ -195770,11 +195750,7 @@ _ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IfEEE %4 = phi ptr [ %.pre86, %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IfEEEES8_SaIS7_EET0_T_SB_SA_RT1_.exit41.loopexit ], [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataINS3_4math4Vec3IfEEEESt6vectorIS9_SaIS9_EEEESA_S9_ET0_T_SG_SF_RSaIT1_E.exit ] %add.ptr58 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr58, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i45 = icmp eq ptr %1, %__position.coerce - br i1 %tobool.not.i.i.i.i.i45, label %if.end109, label %if.then.i.i.i.i.i46 - -if.then.i.i.i.i.i46: ; preds = %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IfEEEES8_SaIS7_EET0_T_SB_SA_RT1_.exit41 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %__position.coerce, ptr align 4 %__first.coerce, i64 %sub.ptr.sub.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(44) %__position.coerce, ptr noundef nonnull align 4 dereferenceable(44) %__first.coerce, i64 44, i1 false) br label %if.end109 if.else68: ; preds = %if.then @@ -195860,7 +195836,7 @@ _ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IfEEEESaIS7_EE1 store ptr %add.ptr105, ptr %_M_end_of_storage, align 8 br label %if.end109 -if.end109: ; preds = %if.then.i.i.i.i.i46, %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IfEEEES8_SaIS7_EET0_T_SB_SA_RT1_.exit41, %if.then.i.i.i.i.i30, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IfEEEESaIS7_EE13_M_deallocateEPS7_m.exit, %entry +if.end109: ; preds = %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IfEEEES8_SaIS7_EET0_T_SB_SA_RT1_.exit41, %if.then.i.i.i.i.i30, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IfEEEESaIS7_EE13_M_deallocateEPS7_m.exit, %entry ret void } @@ -198554,7 +198530,7 @@ if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, br label %if.end109 _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataINS3_4math4Vec3IdEEEESt6vectorIS9_SaIS9_EEEEmEvRT_T0_.exit: ; preds = %if.then9 - %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__first.coerce, i64 %sub.ptr.sub.i + %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %__first.coerce, i64 56 %cmp.i.not5.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %__last.coerce br i1 %cmp.i.not5.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataINS3_4math4Vec3IdEEEESt6vectorIS9_SaIS9_EEEESA_S9_ET0_T_SG_SF_RSaIT1_E.exit, label %for.body.i.i.i.i @@ -198596,11 +198572,7 @@ _ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IdEEE %4 = phi ptr [ %.pre86, %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IdEEEES8_SaIS7_EET0_T_SB_SA_RT1_.exit41.loopexit ], [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataINS3_4math4Vec3IdEEEESt6vectorIS9_SaIS9_EEEESA_S9_ET0_T_SG_SF_RSaIT1_E.exit ] %add.ptr58 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr58, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i45 = icmp eq ptr %1, %__position.coerce - br i1 %tobool.not.i.i.i.i.i45, label %if.end109, label %if.then.i.i.i.i.i46 - -if.then.i.i.i.i.i46: ; preds = %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IdEEEES8_SaIS7_EET0_T_SB_SA_RT1_.exit41 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %__position.coerce, ptr align 8 %__first.coerce, i64 %sub.ptr.sub.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %__position.coerce, ptr noundef nonnull align 8 dereferenceable(56) %__first.coerce, i64 56, i1 false) br label %if.end109 if.else68: ; preds = %if.then @@ -198686,7 +198658,7 @@ _ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IdEEEESaIS7_EE1 store ptr %add.ptr105, ptr %_M_end_of_storage, align 8 br label %if.end109 -if.end109: ; preds = %if.then.i.i.i.i.i46, %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IdEEEES8_SaIS7_EET0_T_SB_SA_RT1_.exit41, %if.then.i.i.i.i.i30, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IdEEEESaIS7_EE13_M_deallocateEPS7_m.exit, %entry +if.end109: ; preds = %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IdEEEES8_SaIS7_EET0_T_SB_SA_RT1_.exit41, %if.then.i.i.i.i.i30, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IdEEEESaIS7_EE13_M_deallocateEPS7_m.exit, %entry ret void } @@ -201380,7 +201352,7 @@ if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, br label %if.end109 _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataINS3_4math4Vec3IiEEEESt6vectorIS9_SaIS9_EEEEmEvRT_T0_.exit: ; preds = %if.then9 - %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__first.coerce, i64 %sub.ptr.sub.i + %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %__first.coerce, i64 44 %cmp.i.not5.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %__last.coerce br i1 %cmp.i.not5.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataINS3_4math4Vec3IiEEEESt6vectorIS9_SaIS9_EEEESA_S9_ET0_T_SG_SF_RSaIT1_E.exit, label %for.body.i.i.i.i @@ -201422,11 +201394,7 @@ _ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IiEEE %4 = phi ptr [ %.pre86, %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IiEEEES8_SaIS7_EET0_T_SB_SA_RT1_.exit41.loopexit ], [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPN7openvdb5v11_05tools8TileDataINS3_4math4Vec3IiEEEESt6vectorIS9_SaIS9_EEEESA_S9_ET0_T_SG_SF_RSaIT1_E.exit ] %add.ptr58 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr58, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i45 = icmp eq ptr %1, %__position.coerce - br i1 %tobool.not.i.i.i.i.i45, label %if.end109, label %if.then.i.i.i.i.i46 - -if.then.i.i.i.i.i46: ; preds = %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IiEEEES8_SaIS7_EET0_T_SB_SA_RT1_.exit41 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %__position.coerce, ptr align 4 %__first.coerce, i64 %sub.ptr.sub.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(44) %__position.coerce, ptr noundef nonnull align 4 dereferenceable(44) %__first.coerce, i64 44, i1 false) br label %if.end109 if.else68: ; preds = %if.then @@ -201512,7 +201480,7 @@ _ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IiEEEESaIS7_EE1 store ptr %add.ptr105, ptr %_M_end_of_storage, align 8 br label %if.end109 -if.end109: ; preds = %if.then.i.i.i.i.i46, %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IiEEEES8_SaIS7_EET0_T_SB_SA_RT1_.exit41, %if.then.i.i.i.i.i30, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IiEEEESaIS7_EE13_M_deallocateEPS7_m.exit, %entry +if.end109: ; preds = %_ZSt22__uninitialized_move_aIPN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IiEEEES8_SaIS7_EET0_T_SB_SA_RT1_.exit41, %if.then.i.i.i.i.i30, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataINS1_4math4Vec3IiEEEESaIS7_EE13_M_deallocateEPS7_m.exit, %entry ret void } diff --git a/bench/openvdb/optimized/TempFile.ll b/bench/openvdb/optimized/TempFile.ll index 2519a0614fa..39ced7dc14b 100644 --- a/bench/openvdb/optimized/TempFile.ll +++ b/bench/openvdb/optimized/TempFile.ll @@ -1422,12 +1422,10 @@ _ZNSt11char_traitsIcE4moveEPcPKcm.exit: ; preds = %if.end8 br label %if.end19 if.end19: ; preds = %if.end8, %_ZNSt11char_traitsIcE4moveEPcPKcm.exit - %idx.neg23.pre-phi = phi i64 [ %idx.neg, %_ZNSt11char_traitsIcE4moveEPcPKcm.exit ], [ 0, %if.end8 ] %4 = phi i64 [ %.pre, %_ZNSt11char_traitsIcE4moveEPcPKcm.exit ], [ %2, %if.end8 ] %5 = load ptr, ptr %buffer_.i, align 8 %add.ptr22 = getelementptr inbounds i8, ptr %5, i64 %4 - %add.ptr24 = getelementptr inbounds i8, ptr %add.ptr22, i64 %idx.neg23.pre-phi - tail call void @_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_(ptr noundef nonnull align 8 dereferenceable(64) %this, ptr noundef %add.ptr24, ptr noundef %add.ptr22, ptr noundef %add.ptr22) + tail call void @_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_(ptr noundef nonnull align 8 dereferenceable(64) %this, ptr noundef %add.ptr22, ptr noundef %add.ptr22, ptr noundef %add.ptr22) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp.i.i.i) %call.i.i.i.i.i = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt17iostream_categoryv() #30 @@ -1472,7 +1470,7 @@ if.then5: ; preds = %if.then br label %if.end if.end: ; preds = %if.then5, %if.then - %spec.select.i = phi i32 [ %c, %if.then5 ], [ 0, %if.then ] + %spec.select.i = phi i32 [ -1, %if.then5 ], [ 0, %if.then ] ret i32 %spec.select.i if.else: ; preds = %entry @@ -1549,12 +1547,10 @@ if.else: ; preds = %if.then9 store i8 %conv.i5, ptr %d, align 1 %storage_.i = getelementptr inbounds nuw i8, ptr %this, i64 72 %call.i.i.i.i = call noundef i64 @_ZN5boost9iostreams15file_descriptor5writeEPKcl(ptr noundef nonnull align 8 dereferenceable(16) %storage_.i, ptr noundef nonnull %d, i64 noundef 1) - %cmp28.not = icmp eq i64 %call.i.i.i.i, 1 - %spec.select = select i1 %cmp28.not, i32 %c, i32 -1 br label %return return: ; preds = %if.else, %if.end, %if.end22, %if.then15 - %retval.0 = phi i32 [ -1, %if.then15 ], [ %c, %if.end22 ], [ 0, %if.end ], [ %spec.select, %if.else ] + %retval.0 = phi i32 [ -1, %if.then15 ], [ -1, %if.end22 ], [ -1, %if.else ], [ 0, %if.end ] ret i32 %retval.0 } @@ -3347,17 +3343,14 @@ if.then23.fold.split: ; preds = %entry br label %if.then23 if.then23: ; preds = %entry, %if.then23.fold.split - %cond20 = phi i64 [ 4096, %entry ], [ %buffer_size, %if.then23.fold.split ] + %cond20 = phi i32 [ 3, %entry ], [ 1, %if.then23.fold.split ] + %cond20 = phi i64 [ 4096, %entry ], [ -1, %if.then23.fold.split ] %buffer_.i9 = getelementptr inbounds nuw i8, ptr %this, i64 104 - %sext8 = shl i64 %cond20, 32 - %conv26 = ashr exact i64 %sext8, 32 - tail call void @_ZN5boost9iostreams6detail12basic_bufferIcSaIcEE6resizeEl(ptr noundef nonnull align 8 dereferenceable(16) %buffer_.i9, i64 noundef %conv26) - %0 = icmp sgt i64 %cond20, 1 - %spec.select22 = select i1 %0, i32 3, i32 1 + tail call void @_ZN5boost9iostreams6detail12basic_bufferIcSaIcEE6resizeEl(ptr noundef nonnull align 8 dereferenceable(16) %buffer_.i9, i64 noundef %cond20) br label %if.end30 -if.end30: ; preds = %if.then23, %entry - %cond21 = phi i32 [ 1, %entry ], [ %spec.select22, %if.then23 ] +if.end30: ; preds = %entry, %if.then23 + %cond21 = phi i32 [ %cond20, %if.then23 ], [ 1, %entry ] %vtable28 = load ptr, ptr %this, align 8 %vfn29 = getelementptr inbounds nuw i8, ptr %vtable28, i64 176 %1 = load ptr, ptr %vfn29, align 8 diff --git a/bench/ozz-animation/optimized/options.ll b/bench/ozz-animation/optimized/options.ll index db878571f1e..3935279b32a 100644 --- a/bench/ozz-animation/optimized/options.ll +++ b/bench/ozz-animation/optimized/options.ll @@ -5640,25 +5640,24 @@ define internal noundef zeroext i1 @_ZN3ozz7options12_GLOBAL__N_112sort_optionsE 8: ; preds = %2 %9 = trunc nuw i8 %7 to i1 - br i1 %9, label %._crit_edge, label %18 - -._crit_edge: ; preds = %2, %8 - %10 = phi i8 [ 1, %8 ], [ %7, %2 ] - %.not = icmp eq i8 %4, %10 - br i1 %.not, label %11, label %18 - -11: ; preds = %._crit_edge - %12 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %13 = load ptr, ptr %12, align 8, !tbaa !4 - %14 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %15 = load ptr, ptr %14, align 8, !tbaa !4 - %16 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %13, ptr noundef nonnull dereferenceable(1) %15) #31 - %17 = icmp slt i32 %16, 0 - br label %18 - -18: ; preds = %._crit_edge, %11, %8 - %19 = phi i1 [ true, %8 ], [ false, %._crit_edge ], [ %17, %11 ] - ret i1 %19 + br i1 %9, label %.thread, label %17 + +._crit_edge: ; preds = %2 + %.not = icmp eq i8 %4, %7 + br i1 %.not, label %.thread, label %17 + +.thread: ; preds = %8, %10 + %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %12 = load ptr, ptr %11, align 8, !tbaa !4 + %13 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %14 = load ptr, ptr %13, align 8, !tbaa !4 + %15 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %12, ptr noundef nonnull dereferenceable(1) %14) #31 + %16 = icmp slt i32 %15, 0 + br label %17 + +17: ; preds = %10, %.thread, %8 + %18 = phi i1 [ true, %8 ], [ false, %._crit_edge ], [ %16, %.thread ] + ret i1 %18 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable @@ -5816,42 +5815,38 @@ define linkonce_odr dso_local void @_ZSt15__inplace_mergeIPPN3ozz7options6Option br i1 %15, label %.lr.ph.i.i, label %.loopexit .lr.ph.i.i: ; preds = %7, %select.unfold.i.i - %.010.i.i = phi i64 [ %19, %select.unfold.i.i ], [ %.sroa.speculated, %7 ] + %.010.i.i = phi i64 [ 1, %select.unfold.i.i ], [ %.sroa.speculated, %7 ] %16 = shl nuw nsw i64 %.010.i.i, 3 %17 = tail call noalias noundef ptr @_ZnwmRKSt9nothrow_t(i64 noundef %16, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow) #34 %.not.i.i = icmp eq ptr %17, null br i1 %.not.i.i, label %select.unfold.i.i, label %_ZNSt17_Temporary_bufferIPPN3ozz7options6OptionES3_EC2ES4_l.exit select.unfold.i.i: ; preds = %.lr.ph.i.i - %18 = add nuw nsw i64 %.010.i.i, 1 - %19 = lshr i64 %18, 1 - %.not14.i.i = icmp samesign ult i64 %.010.i.i, 2 - br i1 %.not14.i.i, label %.loopexit, label %.lr.ph.i.i, !llvm.loop !155 + %.not15.i.i = icmp eq i64 %.010.i.i, 1 + br i1 %.not15.i.i, label %.loopexit, label %.lr.ph.i.i, !llvm.loop !155 .loopexit: ; preds = %select.unfold.i.i, %7 invoke void @_ZSt22__merge_without_bufferIPPN3ozz7options6OptionElN9__gnu_cxx5__ops15_Iter_comp_iterIPFbS3_S3_EEEEvT_SB_SB_T0_SC_T1_(ptr noundef %0, ptr noundef %1, ptr noundef %2, i64 noundef %11, i64 noundef %14, ptr %3) to label %.loopexit._crit_edge unwind label %20 20: ; preds = %_ZNSt17_Temporary_bufferIPPN3ozz7options6OptionES3_EC2ES4_l.exit, %.loopexit - %.sroa.4.043 = phi i64 [ %.010.i.i, %_ZNSt17_Temporary_bufferIPPN3ozz7options6OptionES3_EC2ES4_l.exit ], [ 0, %.loopexit ] + %.sroa.4.043 = phi i64 [ 8, %_ZNSt17_Temporary_bufferIPPN3ozz7options6OptionES3_EC2ES4_l.exit ], [ 0, %.loopexit ] %.sroa.9.040 = phi ptr [ %17, %_ZNSt17_Temporary_bufferIPPN3ozz7options6OptionES3_EC2ES4_l.exit ], [ null, %.loopexit ] %21 = landingpad { ptr, i32 } cleanup - %22 = shl i64 %.sroa.4.043, 3 - tail call void @_ZdlPvm(ptr noundef %.sroa.9.040, i64 noundef %22) #29 - resume { ptr, i32 } %21 + tail call void @_ZdlPvm(ptr noundef %.sroa.9.040, i64 noundef %.sroa.4.043) #29 + resume { ptr, i32 } %19 _ZNSt17_Temporary_bufferIPPN3ozz7options6OptionES3_EC2ES4_l.exit: ; preds = %.lr.ph.i.i %23 = ptrtoint ptr %3 to i64 - invoke void @_ZSt16__merge_adaptiveIPPN3ozz7options6OptionElS4_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbS3_S3_EEEEvT_SB_SB_T0_SC_T1_SC_T2_(ptr noundef %0, ptr noundef %1, ptr noundef %2, i64 noundef %11, i64 noundef %14, ptr noundef nonnull %17, i64 noundef %.010.i.i, i64 %23) + invoke void @_ZSt16__merge_adaptiveIPPN3ozz7options6OptionElS4_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbS3_S3_EEEEvT_SB_SB_T0_SC_T1_SC_T2_(ptr noundef %0, ptr noundef %1, ptr noundef %2, i64 noundef %11, i64 noundef %14, ptr noundef nonnull %17, i64 noundef 1, i64 %23) to label %.loopexit._crit_edge unwind label %20 -.loopexit._crit_edge: ; preds = %.loopexit, %_ZNSt17_Temporary_bufferIPPN3ozz7options6OptionES3_EC2ES4_l.exit - %.sroa.4.041 = phi i64 [ %.010.i.i, %_ZNSt17_Temporary_bufferIPPN3ozz7options6OptionES3_EC2ES4_l.exit ], [ 0, %.loopexit ] +.loopexit._crit_edge: ; preds = %_ZNSt17_Temporary_bufferIPPN3ozz7options6OptionES3_EC2ES4_l.exit, %.loopexit + %.sroa.4.041 = phi i64 [ 8, %_ZNSt17_Temporary_bufferIPPN3ozz7options6OptionES3_EC2ES4_l.exit ], [ 0, %.loopexit ] %.sroa.9.038 = phi ptr [ %17, %_ZNSt17_Temporary_bufferIPPN3ozz7options6OptionES3_EC2ES4_l.exit ], [ null, %.loopexit ] - %24 = shl i64 %.sroa.4.041, 3 - tail call void @_ZdlPvm(ptr noundef %.sroa.9.038, i64 noundef %24) #29 - br label %25 + tail call void @_ZdlPvm(ptr noundef %.sroa.9.038, i64 noundef %.sroa.4.041) #29 + br label %22 25: ; preds = %4, %.loopexit._crit_edge ret void diff --git a/bench/pocketpy/optimized/compiler.ll b/bench/pocketpy/optimized/compiler.ll index cba36a8d081..600a34974fd 100644 --- a/bench/pocketpy/optimized/compiler.ll +++ b/bench/pocketpy/optimized/compiler.ll @@ -23120,7 +23120,6 @@ _ZNK4pkpy8Compiler4currEv.exit.i114: ; preds = %_ZN4pkpy2TKEPKc.exi %343 = ptrtoint ptr %341 to i64 %344 = sub i64 %342, %343 %345 = lshr exact i64 %344, 2 - %346 = trunc i64 %345 to i32 invoke void @_ZN4pkpy8Compiler18compile_block_bodyEMS0_FvvE(ptr noundef nonnull align 8 dereferenceable(200) %0, i64 0, i64 0) to label %347 unwind label %.loopexit.split-lp.loopexit.split-lp @@ -23137,7 +23136,8 @@ _ZNK4pkpy8Compiler4currEv.exit.i114: ; preds = %_ZN4pkpy2TKEPKc.exi to label %_ZN4pkpy8Compiler5matchEh.exit117 unwind label %.loopexit.split-lp.loopexit.split-lp _ZN4pkpy8Compiler5matchEh.exit117: ; preds = %351 - %.not25 = icmp eq i32 %346, -1 + %353 = and i64 %344, 17179869180 + %.not25 = icmp eq i64 %353, 17179869180 br i1 %.not25, label %_ZN4pkpy8Compiler5matchEh.exit117.thread130, label %354 354: ; preds = %_ZN4pkpy8Compiler5matchEh.exit117 @@ -23192,7 +23192,6 @@ _ZN4pkpy8Compiler5matchEh.exit117: ; preds = %351 _ZN4pkpy8Compiler5matchEh.exit117.thread130: ; preds = %_ZNK4pkpy8Compiler4currEv.exit.i114, %_ZN4pkpy8Compiler5matchEh.exit117, %382 %.not25134 = phi i1 [ false, %382 ], [ true, %_ZN4pkpy8Compiler5matchEh.exit117 ], [ true, %_ZNK4pkpy8Compiler4currEv.exit.i114 ] - %.024133 = phi i32 [ %346, %382 ], [ -1, %_ZN4pkpy8Compiler5matchEh.exit117 ], [ -1, %_ZNK4pkpy8Compiler4currEv.exit.i114 ] %387 = load ptr, ptr %6, align 8 %388 = getelementptr inbounds i8, ptr %387, i64 -232 %389 = invoke noundef i32 @_ZN4pkpy15CodeEmitContext5emit_ENS_6OpcodeEtib(ptr noundef nonnull align 8 dereferenceable(232) %388, i8 noundef zeroext 113, i16 noundef zeroext 0, i32 noundef -1, i1 noundef zeroext false) @@ -23266,9 +23265,8 @@ _ZN4pkpy8Compiler5matchEh.exit117.thread130: ; preds = %_ZNK4pkpy8Compiler4 426: ; preds = %423 %427 = load ptr, ptr %6, align 8 %428 = getelementptr inbounds i8, ptr %427, i64 -232 - %429 = trunc i32 %.024133 to i16 - %430 = invoke noundef i32 @_ZN4pkpy15CodeEmitContext5emit_ENS_6OpcodeEtib(ptr noundef nonnull align 8 dereferenceable(232) %428, i8 noundef zeroext 69, i16 noundef zeroext %429, i32 noundef -1, i1 noundef zeroext false) - to label %431 unwind label %.loopexit.split-lp.loopexit.split-lp + %429 = invoke noundef i32 @_ZN4pkpy15CodeEmitContext5emit_ENS_6OpcodeEtib(ptr noundef nonnull align 8 dereferenceable(232) %428, i8 noundef zeroext 69, i16 noundef zeroext -1, i32 noundef -1, i1 noundef zeroext false) + to label %430 unwind label %.loopexit.split-lp.loopexit.split-lp 431: ; preds = %426, %._crit_edge %432 = load ptr, ptr %10, align 8 diff --git a/bench/pocketpy/optimized/modules.ll b/bench/pocketpy/optimized/modules.ll index 3c95ff164bc..9c731d68b7c 100644 --- a/bench/pocketpy/optimized/modules.ll +++ b/bench/pocketpy/optimized/modules.ll @@ -6677,7 +6677,7 @@ _ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.i: ; preds = %_ZNSt10shared_ptrI %34 = phi ptr [ null, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i ], [ %25, %_ZNSt10shared_ptrIN4pkpy10CodeObjectEED2Ev.exit.i ] %35 = phi i16 [ %15, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i ], [ %.pre.i, %_ZNSt10shared_ptrIN4pkpy10CodeObjectEED2Ev.exit.i ] %36 = icmp eq i16 %35, 13 - br i1 %36, label %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.i, label %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i + br i1 %36, label %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.i, label %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.thread.i _ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.i: ; preds = %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.i %.sroa.2.0..sroa_idx.i.i.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %10, i64 32 @@ -6690,25 +6690,19 @@ _ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.i: ; preds = %_ZN4pkpy7is _ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.i._ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i_crit_edge: ; preds = %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.i %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.sroa.2.0.copyload.i.i.pre.i, i64 10 %.pre = load i16, ptr %.phi.trans.insert, align 2 - br label %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i - -_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i: ; preds = %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.i._ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i_crit_edge, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.i - %38 = phi i16 [ %.pre, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.i._ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i_crit_edge ], [ %35, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.i ] - %.02118.i = phi ptr [ %.sroa.2.0.copyload.i.i.pre.i, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.i._ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i_crit_edge ], [ %10, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.i ] - %39 = getelementptr inbounds nuw i8, ptr %.02118.i, i64 10 - %40 = icmp eq i16 %38, 11 + %40 = icmp eq i16 %39, 11 br i1 %40, label %43, label %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.thread.i -_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.thread.i: ; preds = %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.i, %3 - %41 = phi ptr [ %34, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.i ], [ null, %3 ], [ %34, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i ] - %.0211221.i = phi ptr [ %.sroa.2.0.copyload.i.i.pre.i, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.i ], [ %10, %3 ], [ %.02118.i, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i ] - %42 = phi ptr [ @_ZN4pkpy2VM6tp_intE, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.i ], [ @_ZN4pkpy2VM6tp_intE, %3 ], [ %39, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i ] +_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.thread.i: ; preds = %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.i, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.i, %3 + %41 = phi ptr [ %34, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.i ], [ %34, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.i ], [ null, %3 ], [ %34, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i ] + %.0211221.i = phi ptr [ %.sroa.2.0.copyload.i.i.pre.i, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.i ], [ %10, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.i ], [ %10, %3 ], [ %.sroa.2.0.copyload.i.i.pre.i, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i ] + %42 = phi ptr [ @_ZN4pkpy2VM6tp_intE, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.i ], [ @_ZN4pkpy2VM6tp_intE, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.i ], [ @_ZN4pkpy2VM6tp_intE, %3 ], [ %38, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i ] %.sroa.0.0.copyload.i.i.i.i35.i = load i16, ptr %42, align 2 invoke void @_ZN4pkpy2VM9TypeErrorENS_4TypeES1_(ptr noundef nonnull align 8 dereferenceable(264913) %0, i16 11, i16 %.sroa.0.0.copyload.i.i.i.i35.i) to label %43 unwind label %27 43: ; preds = %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.thread.i, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i - %.02113.i = phi ptr [ %.02118.i, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i ], [ %.0211221.i, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.thread.i ] + %.02113.i = phi ptr [ %.sroa.2.0.copyload.i.i.pre.i, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i ], [ %.0211221.i, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.thread.i ] %44 = phi ptr [ %34, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit.i.i.i34.i ], [ %41, %_ZN4pkpy7is_typeEPNS_8PyObjectENS_4TypeE.exit28.thread.thread.i ] %45 = getelementptr inbounds nuw i8, ptr %.02113.i, i64 24 %46 = load ptr, ptr %45, align 8 diff --git a/bench/protobuf/optimized/extension_set.ll b/bench/protobuf/optimized/extension_set.ll index 60e31e5a983..5fb39cf39f3 100644 --- a/bench/protobuf/optimized/extension_set.ll +++ b/bench/protobuf/optimized/extension_set.ll @@ -1119,7 +1119,7 @@ if.end.i.i.i.i.i.i.i.i: ; preds = %while.body.i.i.i.i. br i1 %exitcond.not.i.i.i.i.i.i.i.i, label %_ZNK4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE11lower_boundIiEENS1_12SearchResultImLb0EEERKT_RKNS1_19key_compare_adapterISA_iE15checked_compareE.exit.i.i.i.i.i, label %while.body.i.i.i.i.i.i.i.i, !llvm.loop !33 _ZNK4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE11lower_boundIiEENS1_12SearchResultImLb0EEERKT_RKNS1_19key_compare_adapterISA_iE15checked_compareE.exit.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i.i, %while.body.i.i.i.i.i.i.i.i, %for.cond.i.i.i.i.i - %s.addr.0.lcssa.i.i.i.i.i.i.i.i = phi i64 [ 0, %for.cond.i.i.i.i.i ], [ %s.addr.05.i.i.i.i.i.i.i.i, %while.body.i.i.i.i.i.i.i.i ], [ %conv3.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i ] + %s.addr.0.lcssa.i.i.i.i.i.i.i.i = phi i64 [ 0, %for.cond.i.i.i.i.i ], [ %s.addr.05.i.i.i.i.i.i.i.i, %while.body.i.i.i.i.i.i.i.i ], [ 0, %if.end.i.i.i.i.i.i.i.i ] %arrayidx.i.i.i.i.i.i = getelementptr i8, ptr %iter.sroa.0.0.i.i.i.i.i, i64 11 %7 = load i8, ptr %arrayidx.i.i.i.i.i.i, align 1 %cmp.i.not.i.i.i.i.i = icmp eq i8 %7, 0 @@ -8368,7 +8368,7 @@ if.end.i.i.i.i.i.i: ; preds = %while.body.i.i.i.i. br i1 %exitcond.not.i.i.i.i.i.i, label %_ZNK4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE11lower_boundIiEENS1_12SearchResultImLb0EEERKT_RKNS1_19key_compare_adapterISA_iE15checked_compareE.exit.i.i.i, label %while.body.i.i.i.i.i.i, !llvm.loop !33 _ZNK4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE11lower_boundIiEENS1_12SearchResultImLb0EEERKT_RKNS1_19key_compare_adapterISA_iE15checked_compareE.exit.i.i.i: ; preds = %if.end.i.i.i.i.i.i, %while.body.i.i.i.i.i.i, %for.cond.i.i.i - %s.addr.0.lcssa.i.i.i.i.i.i = phi i64 [ 0, %for.cond.i.i.i ], [ %s.addr.05.i.i.i.i.i.i, %while.body.i.i.i.i.i.i ], [ %conv3.i.i.i.i.i, %if.end.i.i.i.i.i.i ] + %s.addr.0.lcssa.i.i.i.i.i.i = phi i64 [ 0, %for.cond.i.i.i ], [ %s.addr.05.i.i.i.i.i.i, %while.body.i.i.i.i.i.i ], [ 0, %if.end.i.i.i.i.i.i ] %arrayidx.i.i.i.i = getelementptr i8, ptr %iter.sroa.0.0.i.i.i, i64 11 %5 = load i8, ptr %arrayidx.i.i.i.i, align 1, !noalias !94 %cmp.i.not.i.i.i = icmp eq i8 %5, 0 @@ -10668,7 +10668,7 @@ if.end.i.i.i.i.i.i.i: ; preds = %while.body.i.i.i.i. br i1 %exitcond.not.i.i.i.i.i.i.i, label %_ZNK4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE11lower_boundIiEENS1_12SearchResultImLb0EEERKT_RKNS1_19key_compare_adapterISA_iE15checked_compareE.exit.i.i.i.i, label %while.body.i.i.i.i.i.i.i, !llvm.loop !33 _ZNK4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE11lower_boundIiEENS1_12SearchResultImLb0EEERKT_RKNS1_19key_compare_adapterISA_iE15checked_compareE.exit.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i, %while.body.i.i.i.i.i.i.i, %for.cond.i.i.i.i - %s.addr.0.lcssa.i.i.i.i.i.i.i = phi i64 [ 0, %for.cond.i.i.i.i ], [ %conv3.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i ], [ %s.addr.05.i.i.i.i.i.i.i, %while.body.i.i.i.i.i.i.i ] + %s.addr.0.lcssa.i.i.i.i.i.i.i = phi i64 [ 0, %for.cond.i.i.i.i ], [ 0, %if.end.i.i.i.i.i.i.i ], [ %s.addr.05.i.i.i.i.i.i.i, %while.body.i.i.i.i.i.i.i ] %arrayidx.i.i.i.i.i = getelementptr i8, ptr %iter.sroa.0.0.i.i.i.i, i64 11 %6 = load i8, ptr %arrayidx.i.i.i.i.i, align 1 %cmp.i.not.i.i.i.i = icmp eq i8 %6, 0 @@ -15046,7 +15046,7 @@ if.end.i.i.i.i.i.i.i: ; preds = %while.body.i.i.i.i. br i1 %exitcond.not.i.i.i.i.i.i.i, label %_ZNK4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE11lower_boundIiEENS1_12SearchResultImLb0EEERKT_RKNS1_19key_compare_adapterISA_iE15checked_compareE.exit.i.i.i.i, label %while.body.i.i.i.i.i.i.i, !llvm.loop !33 _ZNK4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE11lower_boundIiEENS1_12SearchResultImLb0EEERKT_RKNS1_19key_compare_adapterISA_iE15checked_compareE.exit.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i, %while.body.i.i.i.i.i.i.i, %for.cond.i.i.i.i - %s.addr.0.lcssa.i.i.i.i.i.i.i = phi i64 [ 0, %for.cond.i.i.i.i ], [ %conv3.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i ], [ %s.addr.05.i.i.i.i.i.i.i, %while.body.i.i.i.i.i.i.i ] + %s.addr.0.lcssa.i.i.i.i.i.i.i = phi i64 [ 0, %for.cond.i.i.i.i ], [ 0, %if.end.i.i.i.i.i.i.i ], [ %s.addr.05.i.i.i.i.i.i.i, %while.body.i.i.i.i.i.i.i ] %arrayidx.i.i.i.i.i = getelementptr i8, ptr %iter.sroa.0.0.i.i.i.i, i64 11 %3 = load i8, ptr %arrayidx.i.i.i.i.i, align 1 %cmp.i.not.i.i.i.i = icmp eq i8 %3, 0 @@ -15153,7 +15153,7 @@ if.end.i.i.i.i.i.i.i.i: ; preds = %while.body.i.i.i.i. br i1 %exitcond.not.i.i.i.i.i.i.i.i, label %_ZNK4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE11lower_boundIiEENS1_12SearchResultImLb0EEERKT_RKNS1_19key_compare_adapterISA_iE15checked_compareE.exit.i.i.i.i.i, label %while.body.i.i.i.i.i.i.i.i, !llvm.loop !33 _ZNK4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE11lower_boundIiEENS1_12SearchResultImLb0EEERKT_RKNS1_19key_compare_adapterISA_iE15checked_compareE.exit.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i.i, %while.body.i.i.i.i.i.i.i.i, %for.cond.i.i.i.i.i - %s.addr.0.lcssa.i.i.i.i.i.i.i.i = phi i64 [ 0, %for.cond.i.i.i.i.i ], [ %s.addr.05.i.i.i.i.i.i.i.i, %while.body.i.i.i.i.i.i.i.i ], [ %conv3.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i ] + %s.addr.0.lcssa.i.i.i.i.i.i.i.i = phi i64 [ 0, %for.cond.i.i.i.i.i ], [ %s.addr.05.i.i.i.i.i.i.i.i, %while.body.i.i.i.i.i.i.i.i ], [ 0, %if.end.i.i.i.i.i.i.i.i ] %arrayidx.i.i.i.i.i.i = getelementptr i8, ptr %iter.sroa.0.0.i.i.i.i.i, i64 11 %3 = load i8, ptr %arrayidx.i.i.i.i.i.i, align 1 %cmp.i.not.i.i.i.i.i = icmp eq i8 %3, 0 @@ -15263,7 +15263,7 @@ if.end.i.i.i.i.i.i.i: ; preds = %while.body.i.i.i.i. br i1 %exitcond.not.i.i.i.i.i.i.i, label %_ZNK4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE11lower_boundIiEENS1_12SearchResultImLb0EEERKT_RKNS1_19key_compare_adapterISA_iE15checked_compareE.exit.i.i.i.i, label %while.body.i.i.i.i.i.i.i, !llvm.loop !33 _ZNK4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE11lower_boundIiEENS1_12SearchResultImLb0EEERKT_RKNS1_19key_compare_adapterISA_iE15checked_compareE.exit.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i, %while.body.i.i.i.i.i.i.i, %for.cond.i.i.i.i - %s.addr.0.lcssa.i.i.i.i.i.i.i = phi i64 [ 0, %for.cond.i.i.i.i ], [ %conv3.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i ], [ %s.addr.05.i.i.i.i.i.i.i, %while.body.i.i.i.i.i.i.i ] + %s.addr.0.lcssa.i.i.i.i.i.i.i = phi i64 [ 0, %for.cond.i.i.i.i ], [ 0, %if.end.i.i.i.i.i.i.i ], [ %s.addr.05.i.i.i.i.i.i.i, %while.body.i.i.i.i.i.i.i ] %arrayidx.i.i.i.i.i = getelementptr i8, ptr %iter.sroa.0.0.i.i.i.i, i64 11 %3 = load i8, ptr %arrayidx.i.i.i.i.i, align 1, !noalias !170 %cmp.i.not.i.i.i.i = icmp eq i8 %3, 0 @@ -18288,7 +18288,7 @@ for.body.i.i.i: ; preds = %for.body.i.i.i, %fo _ZZN4absl12lts_2023080218container_internal5btreeINS1_10map_paramsIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE16internal_emplaceIJSD_EEENS1_14btree_iteratorINS1_10btree_nodeISF_EERSD_PSD_EESN_DpOT_ENKUlhE_clEh.exit: ; preds = %for.body.i.i.i, %if.then12 %arrayidx.i2.i.i.i7 = getelementptr i8, ptr %call5.i.i2.i.i.i.i, i64 10 - store i8 %15, ptr %arrayidx.i2.i.i.i7, align 1 + store i8 0, ptr %arrayidx.i2.i.i.i7, align 1 tail call void @_ZdlPv(ptr noundef nonnull %10) #34 %rightmost_.i.i = getelementptr inbounds nuw i8, ptr %this, i64 8 store ptr %call5.i.i2.i.i.i.i, ptr %rightmost_.i.i, align 8 @@ -19311,7 +19311,7 @@ if.end.i.i.i.i.i: ; preds = %while.body.i.i.i.i. br i1 %exitcond.not.i.i.i.i.i, label %_ZNK4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE11lower_boundIiEENS1_12SearchResultImLb0EEERKT_RKNS1_19key_compare_adapterISA_iE15checked_compareE.exit.i.i, label %while.body.i.i.i.i.i, !llvm.loop !33 _ZNK4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE11lower_boundIiEENS1_12SearchResultImLb0EEERKT_RKNS1_19key_compare_adapterISA_iE15checked_compareE.exit.i.i: ; preds = %if.end.i.i.i.i.i, %while.body.i.i.i.i.i, %for.cond.i.i - %s.addr.0.lcssa.i.i.i.i.i = phi i64 [ 0, %for.cond.i.i ], [ %conv3.i.i.i.i, %if.end.i.i.i.i.i ], [ %s.addr.05.i.i.i.i.i, %while.body.i.i.i.i.i ] + %s.addr.0.lcssa.i.i.i.i.i = phi i64 [ 0, %for.cond.i.i ], [ 0, %if.end.i.i.i.i.i ], [ %s.addr.05.i.i.i.i.i, %while.body.i.i.i.i.i ] %arrayidx.i.i.i52 = getelementptr i8, ptr %iter.sroa.0.0.i.i, i64 11 %42 = load i8, ptr %arrayidx.i.i.i52, align 1, !noalias !199 %cmp.i.not.i.i53 = icmp eq i8 %42, 0 @@ -19467,10 +19467,9 @@ if.end52: ; preds = %if.else, %if.then28 br i1 %cmp25, label %while.body, label %return, !llvm.loop !202 return: ; preds = %if.end52, %if.end21, %entry, %if.then10, %if.then4 - %call.sink = phi i64 [ %call, %if.then10 ], [ %call, %if.then4 ], [ 0, %entry ], [ %call, %if.end21 ], [ %call, %if.end52 ] %begin.sroa.0.0.lcssa.sink = phi ptr [ %7, %if.then10 ], [ %2, %if.then4 ], [ %begin.coerce0, %entry ], [ %begin.coerce0, %if.end21 ], [ %storemerge4, %if.end52 ] %begin.sroa.11.0.lcssa.sink = phi i32 [ %8, %if.then10 ], [ %conv.i6, %if.then4 ], [ %begin.coerce1, %entry ], [ %begin.coerce1, %if.end21 ], [ %storemerge, %if.end52 ] - store i64 %call.sink, ptr %agg.result, align 8 + store i64 0, ptr %agg.result, align 8 %second.i12 = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 store ptr %begin.sroa.0.0.lcssa.sink, ptr %second.i12, align 8 %begin.sroa.11.0.second.i12.sroa_idx = getelementptr inbounds nuw i8, ptr %agg.result, i64 16 diff --git a/bench/protobuf/optimized/java_features.pb.ll b/bench/protobuf/optimized/java_features.pb.ll index 61f6486e4a1..e9263a5fb4d 100644 --- a/bench/protobuf/optimized/java_features.pb.ll +++ b/bench/protobuf/optimized/java_features.pb.ll @@ -431,19 +431,13 @@ define noundef i64 @_ZNK2pb12JavaFeatures12ByteSizeLongEv(ptr noundef nonnull al entry: %0 = getelementptr inbounds nuw i8, ptr %this, i64 16 %1 = load i32, ptr %0, align 8 - %and = and i32 %1, 3 - %tobool.not = icmp eq i32 %and, 0 - br i1 %tobool.not, label %if.end13, label %if.then - -if.then: ; preds = %entry - %and2 = shl i32 %1, 1 - %2 = and i32 %and2, 2 - %spec.select = zext nneg i32 %2 to i64 %and5 = and i32 %1, 2 %tobool6.not = icmp eq i32 %and5, 0 br i1 %tobool6.not, label %if.end13, label %if.then7 -if.then7: ; preds = %if.then +if.then7: ; preds = %entry + %and2 = shl i32 %1, 1 + %2 = and i32 %and2, 2 %utf8_validation_.i = getelementptr inbounds nuw i8, ptr %this, i64 28 %3 = load i32, ptr %utf8_validation_.i, align 4 %4 = or i32 %3, 1 @@ -453,12 +447,13 @@ if.then7: ; preds = %if.then %mul.i.i.i = mul nuw nsw i64 %sub.i.i.i, 9 %add.i.i.i = add nuw nsw i64 %mul.i.i.i, 73 %div1.i.i.i = lshr i64 %add.i.i.i, 6 - %add10 = or disjoint i64 %spec.select, 1 - %add11 = add nuw nsw i64 %add10, %div1.i.i.i + %add10 = or disjoint i32 %2, 1 + %add10 = zext nneg i32 %add10 to i64 + %add11 = add nuw nsw i64 %div1.i.i.i, %add10 br label %if.end13 -if.end13: ; preds = %if.then, %if.then7, %entry - %total_size.0 = phi i64 [ %add11, %if.then7 ], [ %spec.select, %if.then ], [ 0, %entry ] +if.end13: ; preds = %if.then7, %entry + %total_size.0 = phi i64 [ %add11, %if.then7 ], [ 0, %entry ] %_cached_size_ = getelementptr inbounds nuw i8, ptr %this, i64 20 %call14 = tail call noundef i64 @_ZNK6google8protobuf7Message29MaybeComputeUnknownFieldsSizeEmPNS0_8internal10CachedSizeE(ptr noundef nonnull align 8 dereferenceable(16) %this, i64 noundef %total_size.0, ptr noundef nonnull %_cached_size_) ret i64 %call14 diff --git a/bench/qdrant-rs/optimized/242gbngcvruxs88t.ll b/bench/qdrant-rs/optimized/242gbngcvruxs88t.ll index a851798f676..409c65fdd92 100644 --- a/bench/qdrant-rs/optimized/242gbngcvruxs88t.ll +++ b/bench/qdrant-rs/optimized/242gbngcvruxs88t.ll @@ -142,14 +142,11 @@ default.unreachable: ; preds = %1 17: ; preds = %15 %18 = icmp ult i64 %7, 129 - br i1 %18, label %_ZN6common8defaults30default_cpu_budget_unallocated17h95d79e4d07f68050E.exit, label %19 - -19: ; preds = %17 - %.neg.i.neg = sdiv i64 %7, 16 + %spec.select = select i1 %18, i64 6, i64 0 br label %_ZN6common8defaults30default_cpu_budget_unallocated17h95d79e4d07f68050E.exit -_ZN6common8defaults30default_cpu_budget_unallocated17h95d79e4d07f68050E.exit: ; preds = %6, %9, %11, %13, %15, %17, %19 - %.0.i.neg = phi i64 [ %.neg.i.neg, %19 ], [ 0, %6 ], [ 1, %9 ], [ 2, %11 ], [ 3, %13 ], [ 4, %15 ], [ 6, %17 ] +_ZN6common8defaults30default_cpu_budget_unallocated17h95d79e4d07f68050E.exit: ; preds = %17, %6, %9, %11, %13, %15 + %.0.i.neg = phi i64 [ 0, %6 ], [ 1, %9 ], [ 2, %11 ], [ 3, %13 ], [ 4, %15 ], [ %spec.select, %17 ] %20 = tail call i64 @llvm.usub.sat.i64(i64 %7, i64 %.0.i.neg) br label %.sink.split @@ -301,14 +298,11 @@ define { ptr, i64 } @"_ZN65_$LT$common..cpu..CpuBudget$u20$as$u20$core..default. 12: ; preds = %10 %13 = icmp ult i64 %2, 129 - br i1 %13, label %_ZN6common3cpu14get_cpu_budget17h98b86ed8cdaa4d53E.exit, label %14 - -14: ; preds = %12 - %.neg.i.neg.i = sdiv i64 %2, 16 + %spec.select.i = select i1 %13, i64 6, i64 0 br label %_ZN6common3cpu14get_cpu_budget17h98b86ed8cdaa4d53E.exit -_ZN6common3cpu14get_cpu_budget17h98b86ed8cdaa4d53E.exit: ; preds = %0, %4, %6, %8, %10, %12, %14 - %.0.i.neg.i = phi i64 [ %.neg.i.neg.i, %14 ], [ 0, %0 ], [ 1, %4 ], [ 2, %6 ], [ 3, %8 ], [ 4, %10 ], [ 6, %12 ] +_ZN6common3cpu14get_cpu_budget17h98b86ed8cdaa4d53E.exit: ; preds = %0, %4, %6, %8, %10, %12 + %.0.i.neg.i = phi i64 [ 0, %0 ], [ 1, %4 ], [ 2, %6 ], [ 3, %8 ], [ 4, %10 ], [ %spec.select.i, %12 ] %15 = tail call i64 @llvm.usub.sat.i64(i64 %2, i64 %.0.i.neg.i) %16 = tail call i64 @_ZN4core3cmp6max_by17h8d07869766a11c32E(i64 %15, i64 1) call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %.sroa.3.i) diff --git a/bench/qemu/optimized/gdbstub.ll b/bench/qemu/optimized/gdbstub.ll index 68f736819e5..6f328d40d3a 100644 --- a/bench/qemu/optimized/gdbstub.ll +++ b/bench/qemu/optimized/gdbstub.ll @@ -431,7 +431,7 @@ define internal range(i32 0, 9) i32 @riscv_gdb_set_fpu(ptr noundef %0, ptr nound declare ptr @gdb_find_static_feature(ptr noundef) local_unnamed_addr #3 ; Function Attrs: nounwind sspstrong uwtable -define internal range(i32 -2147483640, -2147483648) i32 @riscv_gdb_get_vector(ptr noundef %0, ptr noundef %1, i32 noundef %2) #0 { +define internal noundef range(i32 8, 1) i32 @riscv_gdb_get_vector(ptr noundef %0, ptr noundef %1, i32 noundef %2) #0 { %4 = alloca i64, align 8 %5 = tail call ptr @object_dynamic_cast_assert(ptr noundef %0, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, i32 noundef 56, ptr noundef nonnull @__func__.RISCV_CPU) #7 %6 = icmp slt i32 %2, 32 @@ -447,8 +447,6 @@ define internal range(i32 -2147483640, -2147483648) i32 @riscv_gdb_get_vector(pt .lr.ph: ; preds = %.preheader %10 = getelementptr inbounds nuw i8, ptr %5, i64 11712 %11 = mul i32 %2, %9 - %12 = add nsw i32 %9, -1 - %13 = and i32 %12, -8 br label %14 14: ; preds = %.lr.ph, %14 @@ -464,19 +462,14 @@ define internal range(i32 -2147483640, -2147483648) i32 @riscv_gdb_get_vector(pt call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #7 %21 = add nuw nsw i32 %.019, 8 %22 = icmp samesign ult i32 %21, %9 - br i1 %22, label %14, label %.loopexit.loopexit, !llvm.loop !12 + br i1 %22, label %14, label %.loopexit, !llvm.loop !12 -.loopexit.loopexit: ; preds = %14 - %23 = add nsw i32 %13, 8 - br label %.loopexit - -.loopexit: ; preds = %.loopexit.loopexit, %.preheader, %3 - %.015 = phi i32 [ 0, %3 ], [ 0, %.preheader ], [ %23, %.loopexit.loopexit ] - ret i32 %.015 +.loopexit: ; preds = %12, %.preheader, %3 + ret i32 0 } ; Function Attrs: nounwind sspstrong uwtable -define internal range(i32 0, 65536) i32 @riscv_gdb_set_vector(ptr noundef %0, ptr noundef readonly captures(none) %1, i32 noundef %2) #0 { +define internal noundef range(i32 0, 65536) i32 @riscv_gdb_set_vector(ptr noundef %0, ptr noundef readonly captures(none) %1, i32 noundef %2) #0 { %4 = tail call ptr @object_dynamic_cast_assert(ptr noundef %0, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, i32 noundef 56, ptr noundef nonnull @__func__.RISCV_CPU) #7 %5 = icmp slt i32 %2, 32 br i1 %5, label %.preheader, label %.loopexit @@ -484,11 +477,11 @@ define internal range(i32 0, 65536) i32 @riscv_gdb_set_vector(ptr noundef %0, pt .preheader: ; preds = %3 %6 = getelementptr inbounds nuw i8, ptr %4, i64 16632 %7 = load i16, ptr %6, align 8 - %8 = zext i16 %7 to i32 %.not = icmp eq i16 %7, 0 br i1 %.not, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %.preheader + %8 = zext i16 %7 to i32 %9 = getelementptr inbounds nuw i8, ptr %4, i64 11712 %10 = mul i32 %2, %8 %11 = zext i16 %7 to i64 @@ -509,8 +502,7 @@ define internal range(i32 0, 65536) i32 @riscv_gdb_set_vector(ptr noundef %0, pt br i1 %19, label %12, label %.loopexit, !llvm.loop !13 .loopexit: ; preds = %12, %.preheader, %3 - %.014 = phi i32 [ 0, %3 ], [ 0, %.preheader ], [ %8, %12 ] - ret i32 %.014 + ret i32 0 } ; Function Attrs: nounwind sspstrong uwtable diff --git a/bench/qemu/optimized/tcg-op-gvec.ll b/bench/qemu/optimized/tcg-op-gvec.ll index ec6fbd7446f..4243a4e0739 100644 --- a/bench/qemu/optimized/tcg-op-gvec.ll +++ b/bench/qemu/optimized/tcg-op-gvec.ll @@ -4110,7 +4110,7 @@ dup_const.exit: ; preds = %19, %16, %13, %12 .thread: ; preds = %dup_const.exit, %24, %28 %.0149197 = phi i32 [ %.tr266393, %28 ], [ %spec.select, %24 ], [ 0, %dup_const.exit ] %.0150195 = phi i32 [ %.tr217268391, %28 ], [ %.tr217268391, %24 ], [ %.tr218269390, %dup_const.exit ] - %.0154193 = phi i64 [ %.tr221272387, %28 ], [ %22, %24 ], [ 0, %dup_const.exit ] + %.0154193 = phi i64 [ %.tr221272387, %28 ], [ 0, %24 ], [ 0, %dup_const.exit ] %29 = icmp eq i32 %.0149197, 3 %30 = or i1 %11, %29 br label %31 @@ -8278,7 +8278,6 @@ expand_2s_vec.exit: ; preds = %.lr.ph.split.i, %85 expand_2s_vec.exit170: ; preds = %.lr.ph.split.i173, %.lr.ph.split.i168, %119, %106, %expand_2s_vec.exit %.4144 = phi i32 [ %5, %expand_2s_vec.exit ], [ %.3143, %106 ], [ %5, %119 ], [ %.3143, %.lr.ph.split.i168 ], [ %5, %.lr.ph.split.i173 ] - %.4139 = phi i32 [ %4, %expand_2s_vec.exit ], [ 0, %106 ], [ 0, %119 ], [ %.3138, %.lr.ph.split.i168 ], [ %4, %.lr.ph.split.i173 ] %.4 = phi i32 [ %1, %expand_2s_vec.exit ], [ %.3, %106 ], [ %1, %119 ], [ %.3, %.lr.ph.split.i168 ], [ %1, %.lr.ph.split.i173 ] tail call void @tcg_temp_free_vec(ptr noundef %80) #10 br label %expand_2sh_vec.exit159 @@ -8417,16 +8416,13 @@ simd_desc.exit: ; preds = %172, %174 expand_2sh_vec.exit159: ; preds = %.lr.ph.i161, %.lr.ph.i157, %expand_2sh_vec.exit, %49, %62, %expand_2s_vec.exit170, %expand_2s_i32.exit, %expand_2s_i64.exit %.2142 = phi i32 [ %.4144, %expand_2s_vec.exit170 ], [ %5, %expand_2s_i32.exit ], [ %5, %expand_2s_i64.exit ], [ %5, %expand_2sh_vec.exit ], [ %.0140, %49 ], [ %5, %62 ], [ %.0140, %.lr.ph.i157 ], [ %5, %.lr.ph.i161 ] - %.2137 = phi i32 [ %.4139, %expand_2s_vec.exit170 ], [ %4, %expand_2s_i32.exit ], [ %4, %expand_2s_i64.exit ], [ %4, %expand_2sh_vec.exit ], [ 0, %49 ], [ 0, %62 ], [ %.0135, %.lr.ph.i157 ], [ %4, %.lr.ph.i161 ] %.2 = phi i32 [ %.4, %expand_2s_vec.exit170 ], [ %1, %expand_2s_i32.exit ], [ %1, %expand_2s_i64.exit ], [ %1, %expand_2sh_vec.exit ], [ %.0, %49 ], [ %1, %62 ], [ %.0, %.lr.ph.i157 ], [ %1, %.lr.ph.i161 ] - %194 = icmp ult i32 %.2137, %.2142 - br i1 %194, label %195, label %198 + %194 = icmp eq i32 %.2142, 0 + br i1 %194, label %195, label %194 195: ; preds = %expand_2sh_vec.exit159 - %196 = add i32 %.2, %.2137 - %197 = sub nuw i32 %.2142, %.2137 - tail call fastcc void @do_dup(i32 noundef 0, i32 noundef %196, i32 noundef %197, i32 noundef %197, ptr noundef null, ptr noundef null, i64 noundef 0) - br label %198 + tail call fastcc void @do_dup(i32 noundef 0, i32 noundef %.2, i32 noundef %.2142, i32 noundef %.2142, ptr noundef null, ptr noundef null, i64 noundef 0) + br label %195 198: ; preds = %expand_2sh_vec.exit159, %195, %simd_desc.exit ret void diff --git a/bench/quickjs/optimized/quickjs-libc.ll b/bench/quickjs/optimized/quickjs-libc.ll index 9275c489e8d..52bd80cd5a6 100644 --- a/bench/quickjs/optimized/quickjs-libc.ll +++ b/bench/quickjs/optimized/quickjs-libc.ll @@ -2400,39 +2400,33 @@ js_std_file_get.exit.thread: ; preds = %12, %5 %.not32 = icmp eq i32 %19, 0 br i1 %.not32, label %20, label %38 -20: ; preds = %18 - %21 = load i64, ptr %7, align 8, !tbaa !12 - br label %.thread +20: ; preds = %14, %18, %16 + %20 = call ptr @JS_GetRuntime(ptr noundef %0) #30 + call void @dbuf_init2(ptr noundef nonnull %6, ptr noundef %20, ptr noundef nonnull @js_realloc_rt) #._crit_edge + br label %23 -.thread: ; preds = %14, %20, %16 - %.0 = phi i64 [ -1, %16 ], [ %21, %20 ], [ -1, %14 ] - %22 = call ptr @JS_GetRuntime(ptr noundef %0) #30 - call void @dbuf_init2(ptr noundef nonnull %6, ptr noundef %22, ptr noundef nonnull @js_realloc_rt) #30 - %.not3441 = icmp eq i64 %.0, 0 - br i1 %.not3441, label %._crit_edge, label %.lr.ph - -23: ; preds = %27 - %24 = add i64 %.142, -1 - %.not34 = icmp eq i64 %24, 0 - br i1 %.not34, label %._crit_edge, label %.lr.ph, !llvm.loop !68 - -.lr.ph: ; preds = %.thread, %23 - %.142 = phi i64 [ %24, %23 ], [ %.0, %.thread ] - %25 = call i32 @fgetc(ptr noundef nonnull %11) - %26 = icmp eq i32 %25, -1 - br i1 %26, label %._crit_edge, label %27 - -27: ; preds = %.lr.ph - %28 = trunc i32 %25 to i8 - %29 = call i32 @dbuf_putc(ptr noundef nonnull %6, i8 noundef zeroext %28) #30 - %.not35 = icmp eq i32 %29, 0 - br i1 %.not35, label %23, label %30 +.thread: ; preds = %26 + %22 = add i64 %.141, -1 + %.not34 = icmp eq i64 %22, 0 + br i1 %.not34, label %30, label %23, !llvm.loop !68 -30: ; preds = %27 +30: ; preds = %20, %21 + %.141 = phi i64 [ -1, %.thread ], [ %22, %21 ] + %24 = call i32 @fgetc(ptr noundef nonnull %11) + %25 = icmp eq i32 %24, -1 + br i1 %25, label %30, label %26 + +26: ; preds = %23 + %27 = trunc i32 %24 to i8 + %28 = call i32 @dbuf_putc(ptr noundef nonnull %6, i8 noundef zeroext %27) #30 + %.not35 = icmp eq i32 %28, 0 + br i1 %.not35, label %21, label %29 + +29: ; preds = %26 call void @dbuf_free(ptr noundef nonnull %6) #30 br label %38 -._crit_edge: ; preds = %23, %.lr.ph, %.thread +._crit_edge: ; preds = %23, %.thread %31 = load ptr, ptr %6, align 8, !tbaa !67 %32 = getelementptr inbounds nuw i8, ptr %6, i64 8 %33 = load i64, ptr %32, align 8, !tbaa !65 @@ -2444,10 +2438,10 @@ js_std_file_get.exit.thread: ; preds = %12, %5 %37 = and i64 %35, 4294967295 br label %38 -38: ; preds = %js_std_file_get.exit.thread, %18, %._crit_edge, %30 - %.sroa.027.0 = phi i64 [ %37, %._crit_edge ], [ 0, %30 ], [ 0, %18 ], [ 0, %js_std_file_get.exit.thread ] - %.sroa.5.0 = phi i64 [ %.sroa.5.0.extract.shift, %._crit_edge ], [ 0, %30 ], [ 0, %18 ], [ 0, %js_std_file_get.exit.thread ] - %.sroa.8.0 = phi i64 [ %36, %._crit_edge ], [ 6, %30 ], [ 6, %18 ], [ 6, %js_std_file_get.exit.thread ] +38: ; preds = %js_std_file_get.exit.thread, %18, %._crit_edge, %29 + %.sroa.027.0 = phi i64 [ %37, %._crit_edge ], [ 0, %29 ], [ 0, %18 ], [ 0, %js_std_file_get.exit.thread ] + %.sroa.5.0 = phi i64 [ %.sroa.5.0.extract.shift, %._crit_edge ], [ 0, %29 ], [ 0, %18 ], [ 0, %js_std_file_get.exit.thread ] + %.sroa.8.0 = phi i64 [ %36, %._crit_edge ], [ 6, %29 ], [ 6, %18 ], [ 6, %js_std_file_get.exit.thread ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #30 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) #30 %.sroa.027.0.insert.insert = or disjoint i64 %.sroa.5.0, %.sroa.027.0 @@ -9193,10 +9187,10 @@ define internal fastcc ptr @build_envp(ptr noundef %0, i64 %1, i64 %2) unnamed_a %12 = add nuw nsw i64 %11, 8 %13 = call ptr @js_mallocz(ptr noundef %0, i64 noundef %12) #30 %.not = icmp eq ptr %13, null - %.pre103 = load i32, ptr %4, align 4, !tbaa !7 - br i1 %.not, label %.critedge, label %.preheader + br i1 %.not, label %._crit_edge87, label %.preheader .preheader: ; preds = %8 + %.pre103 = load i32, ptr %4, align 4, !tbaa !7 %.not88 = icmp eq i32 %.pre103, 0 br i1 %.not88, label %._crit_edge87, label %.lr.ph @@ -9273,9 +9267,9 @@ JS_FreeValue.exit: ; preds = %21, %25, %30 %50 = icmp samesign ult i64 %indvars.iv.next, %49 br i1 %50, label %.lr.ph, label %.critedge, !llvm.loop !150 -.critedge: ; preds = %43, %8, %._crit_edge - %51 = phi i32 [ %.pre, %._crit_edge ], [ %.pre103, %8 ], [ %48, %43 ] - %.067 = phi ptr [ null, %._crit_edge ], [ null, %8 ], [ %13, %43 ] +.critedge: ; preds = %43, %._crit_edge + %51 = phi i32 [ %.pre, %._crit_edge ], [ %48, %43 ] + %.067 = phi ptr [ null, %._crit_edge ], [ %13, %43 ] %.not90 = icmp eq i32 %51, 0 br i1 %.not90, label %._crit_edge87, label %.lr.ph86 @@ -9291,8 +9285,8 @@ JS_FreeValue.exit: ; preds = %21, %25, %30 %57 = icmp samesign ult i64 %indvars.iv.next101, %56 br i1 %57, label %.lr.ph86, label %._crit_edge87, !llvm.loop !151 -._crit_edge87: ; preds = %.lr.ph86, %.preheader, %.critedge - %.067106 = phi ptr [ %.067, %.critedge ], [ %13, %.preheader ], [ %.067, %.lr.ph86 ] +._crit_edge87: ; preds = %.lr.ph86, %.preheader, %8, %.critedge + %.067106 = phi ptr [ %.067, %.critedge ], [ %13, %.preheader ], [ null, %8 ], [ %.067, %.lr.ph86 ] %58 = load ptr, ptr %5, align 8, !tbaa !146 call void @js_free(ptr noundef %0, ptr noundef %58) #30 br label %65 diff --git a/bench/re2/optimized/dfa.ll b/bench/re2/optimized/dfa.ll index 2f7bb94cdf9..b1dd004212d 100644 --- a/bench/re2/optimized/dfa.ll +++ b/bench/re2/optimized/dfa.ll @@ -10087,34 +10087,20 @@ lor.end: ; preds = %lor.lhs.false, %if. %3 = phi i1 [ true, %if.end22 ], [ %spec.select, %lor.lhs.false ] switch i32 %kind, label %lor.lhs.false30 [ i32 3, label %if.then36 - i32 2, label %if.then32 + i32 2, label %if.end46 ] lor.lhs.false30: ; preds = %lor.end - br i1 %tobool.i15, label %if.then32, label %if.else40 + br i1 %tobool.i15, label %if.end46, label %if.then36 if.then32: ; preds = %lor.end, %lor.lhs.false30 - br label %if.else40 - -if.then36: ; preds = %lor.end %cmp37 = icmp eq ptr %matches, null br label %if.end46 -if.else40: ; preds = %if.then32, %lor.lhs.false30 - %endmatch.0.ph = phi i1 [ false, %lor.lhs.false30 ], [ true, %if.then32 ] - %kind.addr.0.ph = phi i32 [ %kind, %lor.lhs.false30 ], [ 1, %if.then32 ] - %cmp41 = icmp eq ptr %match0, null - br i1 %cmp41, label %land.lhs.true42, label %if.end46 - -land.lhs.true42: ; preds = %if.else40 - %not.endmatch.0.ph = xor i1 %endmatch.0.ph, true - %spec.select14 = select i1 %endmatch.0.ph, i32 %kind.addr.0.ph, i32 1 - br label %if.end46 - -if.end46: ; preds = %land.lhs.true42, %if.then36, %if.else40 - %endmatch.042 = phi i1 [ %endmatch.0.ph, %if.else40 ], [ false, %if.then36 ], [ %endmatch.0.ph, %land.lhs.true42 ] - %want_earliest_match.0 = phi i1 [ false, %if.else40 ], [ %cmp37, %if.then36 ], [ %not.endmatch.0.ph, %land.lhs.true42 ] - %kind.addr.1 = phi i32 [ %kind.addr.0.ph, %if.else40 ], [ 3, %if.then36 ], [ %spec.select14, %land.lhs.true42 ] +if.else40: ; preds = %lor.lhs.false30, %lor.end, %if.then36 + %endmatch.0.ph = phi i1 [ false, %if.then36 ], [ true, %lor.end ], [ true, %lor.lhs.false30 ] + %kind.addr.0.ph = phi i1 [ %cmp37, %if.then36 ], [ false, %lor.end ], [ false, %lor.lhs.false30 ] + %kind.addr.1 = phi i32 [ 3, %if.then36 ], [ 1, %lor.end ], [ 1, %lor.lhs.false30 ] %call47 = tail call noundef ptr @_ZN3re24Prog6GetDFAENS0_9MatchKindE(ptr noundef nonnull align 8 dereferenceable(432) %this, i32 noundef %kind.addr.1) %4 = load i8, ptr %reversed_, align 2 %tobool53 = trunc i8 %4 to i1 diff --git a/bench/regex-rs/optimized/10eccrragw6uslmk.ll b/bench/regex-rs/optimized/10eccrragw6uslmk.ll index 36fa0e84f59..da9c674750c 100644 --- a/bench/regex-rs/optimized/10eccrragw6uslmk.ll +++ b/bench/regex-rs/optimized/10eccrragw6uslmk.ll @@ -14043,23 +14043,19 @@ _ZN14regex_automata4util8captures9GroupInfo4slot17hfead339afc3dabe8E.exit.thread 58: ; preds = %53 %59 = getelementptr inbounds i64, ptr %52, i64 %.0.i %60 = load i64, ptr %59, align 8, !noalias !2870, !noundef !12 - %61 = icmp eq i64 %60, 0 - br i1 %61, label %_ZN14regex_automata4util8captures8Captures9get_group17h5f0fff42a9bc64b9E.exit, label %62 - -62: ; preds = %58 - %63 = add i64 %55, -1 - %64 = add i64 %60, -1 + %61 = icmp ne i64 %60, 0 + %62 = add i64 %55, -1 + %spec.select12 = zext i1 %61 to i64 br label %_ZN14regex_automata4util8captures8Captures9get_group17h5f0fff42a9bc64b9E.exit -_ZN14regex_automata4util8captures8Captures9get_group17h5f0fff42a9bc64b9E.exit: ; preds = %8, %24, %26, %_ZN14regex_automata4util8captures14GroupInfoInner9group_len17h54f6f08f5d394483E.exit.i.i, %47, %53, %58, %62 - %.sroa.45.0 = phi i64 [ undef, %58 ], [ %63, %62 ], [ undef, %53 ], [ undef, %47 ], [ undef, %24 ], [ undef, %_ZN14regex_automata4util8captures14GroupInfoInner9group_len17h54f6f08f5d394483E.exit.i.i ], [ undef, %26 ], [ undef, %8 ] - %.sroa.5.0 = phi i64 [ undef, %58 ], [ %64, %62 ], [ undef, %53 ], [ undef, %47 ], [ undef, %24 ], [ undef, %_ZN14regex_automata4util8captures14GroupInfoInner9group_len17h54f6f08f5d394483E.exit.i.i ], [ undef, %26 ], [ undef, %8 ] - %.sink.i = phi i64 [ 0, %58 ], [ 1, %62 ], [ 0, %53 ], [ 0, %47 ], [ 0, %24 ], [ 0, %_ZN14regex_automata4util8captures14GroupInfoInner9group_len17h54f6f08f5d394483E.exit.i.i ], [ 0, %26 ], [ 0, %8 ] +_ZN14regex_automata4util8captures8Captures9get_group17h5f0fff42a9bc64b9E.exit: ; preds = %58, %8, %24, %26, %_ZN14regex_automata4util8captures14GroupInfoInner9group_len17h54f6f08f5d394483E.exit.i.i, %47, %53 + %.sroa.45.0 = phi i64 [ undef, %53 ], [ undef, %47 ], [ undef, %24 ], [ undef, %_ZN14regex_automata4util8captures14GroupInfoInner9group_len17h54f6f08f5d394483E.exit.i.i ], [ undef, %26 ], [ undef, %8 ], [ %62, %58 ] + %.sroa.5.0 = phi i64 [ 0, %53 ], [ 0, %47 ], [ 0, %24 ], [ 0, %_ZN14regex_automata4util8captures14GroupInfoInner9group_len17h54f6f08f5d394483E.exit.i.i ], [ 0, %26 ], [ 0, %8 ], [ %spec.select12, %58 ] store i64 %.sink.i, ptr %0, align 8 %.sroa.45.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sroa.45.0, ptr %.sroa.45.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sroa.5.0, ptr %.sroa.5.0..sroa_idx, align 8 + store i64 -1, ptr %.sroa.5.0..sroa_idx, align 8 br label %66 65: ; preds = %2 diff --git a/bench/regex-rs/optimized/5gojg14e35fgi63k.ll b/bench/regex-rs/optimized/5gojg14e35fgi63k.ll index 4bebd75d480..a1d29bb67a0 100644 --- a/bench/regex-rs/optimized/5gojg14e35fgi63k.ll +++ b/bench/regex-rs/optimized/5gojg14e35fgi63k.ll @@ -5880,12 +5880,11 @@ define hidden void @_ZN14regex_automata3nfa8thompson8compiler8Compiler10build_ma %84 = getelementptr inbounds nuw i8, ptr %1, i64 8 %85 = load i64, ptr %84, align 8, !alias.scope !852, !noalias !820 %.sroa.3.0.i.i = select i1 %83, i64 undef, i64 %85 - %.sroa.0.0.i161.i = select i1 %83, i64 0, i64 %82 + %.sroa.0.0.i161.i = select i1 %83, i64 0, i64 2 store i64 %.sroa.0.0.i161.i, ptr %60, align 8, !alias.scope !855, !noalias !858 %86 = getelementptr inbounds nuw i8, ptr %1, i64 56 store i64 %.sroa.3.0.i.i, ptr %86, align 8, !alias.scope !855, !noalias !858 - %.not.i.i.i = icmp eq i64 %.sroa.0.0.i161.i, 0 - br i1 %.not.i.i.i, label %95, label %87 + br i1 %83, label %95, label %87 87: ; preds = %68 %88 = getelementptr inbounds nuw i8, ptr %1, i64 80 @@ -5894,7 +5893,7 @@ define hidden void @_ZN14regex_automata3nfa8thompson8compiler8Compiler10build_ma %91 = getelementptr inbounds nuw i8, ptr %1, i64 144 %92 = load i64, ptr %91, align 8, !alias.scope !860, !noalias !865, !noundef !7 %93 = add i64 %90, %92 - %94 = icmp ugt i64 %93, %.sroa.3.0.i.i + %94 = icmp ugt i64 %93, %85 br i1 %94, label %107, label %95 95: ; preds = %87, %68 @@ -5923,7 +5922,7 @@ define hidden void @_ZN14regex_automata3nfa8thompson8compiler8Compiler10build_ma 107: ; preds = %87 store i64 -9223372036854775803, ptr %0, align 8, !alias.scope !814, !noalias !822 %.sroa.287.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.3.0.i.i, ptr %.sroa.287.0..sroa_idx.i, align 8, !alias.scope !814, !noalias !822 + store i64 %85, ptr %.sroa.287.0..sroa_idx.i, align 8, !alias.scope !814, !noalias !822 store i64 0, ptr %55, align 8, !noalias !877 br label %289 @@ -6214,7 +6213,7 @@ _ZN14regex_automata3nfa8thompson8compiler8Compiler6c_fail17h2ba7c0bcbe082b7aE.ex br i1 %188, label %190, label %203 189: ; preds = %203, %.noexc32 - %.sroa.0201.1.i = phi i64 [ %184, %203 ], [ -9223372036854775800, %.noexc32 ] + %.sroa.0201.1.i = phi i64 [ -9223372036854775799, %203 ], [ -9223372036854775800, %.noexc32 ] %.sroa.17.1.i = phi i32 [ %.sroa.319.0.copyload.i.i, %203 ], [ %.sroa.3.0.copyload.i.i, %.noexc32 ] %.sroa.33.1.i = phi i32 [ %.sroa.422.0.copyload.i.i, %203 ], [ %.sroa.4.0.copyload.i.i, %.noexc32 ] call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %21), !noalias !906 @@ -6963,12 +6962,11 @@ define hidden void @_ZN14regex_automata3nfa8thompson8compiler8Compiler7compile17 %70 = getelementptr inbounds nuw i8, ptr %1, i64 8 %71 = load i64, ptr %70, align 8, !alias.scope !1051 %.sroa.3.0.i = select i1 %69, i64 undef, i64 %71 - %.sroa.0.0.i161 = select i1 %69, i64 0, i64 %68 + %.sroa.0.0.i161 = select i1 %69, i64 0, i64 2 store i64 %.sroa.0.0.i161, ptr %45, align 8, !alias.scope !1054, !noalias !1057 %72 = getelementptr inbounds nuw i8, ptr %1, i64 56 store i64 %.sroa.3.0.i, ptr %72, align 8, !alias.scope !1054, !noalias !1057 - %.not.i.i = icmp eq i64 %.sroa.0.0.i161, 0 - br i1 %.not.i.i, label %81, label %73 + br i1 %69, label %81, label %73 73: ; preds = %54 %74 = getelementptr inbounds nuw i8, ptr %1, i64 80 @@ -6977,7 +6975,7 @@ define hidden void @_ZN14regex_automata3nfa8thompson8compiler8Compiler7compile17 %77 = getelementptr inbounds nuw i8, ptr %1, i64 144 %78 = load i64, ptr %77, align 8, !alias.scope !1059, !noalias !1064, !noundef !7 %79 = add i64 %76, %78 - %80 = icmp ugt i64 %79, %.sroa.3.0.i + %80 = icmp ugt i64 %79, %71 br i1 %80, label %93, label %81 81: ; preds = %73, %54 @@ -7004,7 +7002,7 @@ define hidden void @_ZN14regex_automata3nfa8thompson8compiler8Compiler7compile17 93: ; preds = %73 store i64 -9223372036854775803, ptr %0, align 8 %.sroa.287.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.3.0.i, ptr %.sroa.287.0..sroa_idx, align 8 + store i64 %71, ptr %.sroa.287.0..sroa_idx, align 8 store i64 0, ptr %40, align 8, !noalias !1076 br label %244 @@ -7289,7 +7287,7 @@ _ZN14regex_automata3nfa8thompson8compiler8Compiler6c_fail17h2ba7c0bcbe082b7aE.ex br i1 %176, label %178, label %192 177: ; preds = %171, %192 - %.sroa.0201.1 = phi i64 [ %172, %192 ], [ -9223372036854775800, %171 ] + %.sroa.0201.1 = phi i64 [ -9223372036854775799, %192 ], [ -9223372036854775800, %171 ] %.sroa.17.1 = phi i32 [ %.sroa.319.0.copyload.i, %192 ], [ %.sroa.3.0.copyload.i, %171 ] %.sroa.33.1 = phi i32 [ %.sroa.422.0.copyload.i, %192 ], [ %.sroa.4.0.copyload.i, %171 ] call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %19), !noalias !1103 diff --git a/bench/ripgrep-rs/optimized/kiwlvuwlry6renb.ll b/bench/ripgrep-rs/optimized/kiwlvuwlry6renb.ll index 277737763e5..c6b7622a2c6 100644 --- a/bench/ripgrep-rs/optimized/kiwlvuwlry6renb.ll +++ b/bench/ripgrep-rs/optimized/kiwlvuwlry6renb.ll @@ -826,14 +826,15 @@ define hidden void @"_ZN99_$LT$hashbrown..raw..RawTable$LT$T$C$A$GT$$u20$as$u20$ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.2603368866442730075.exit.i.i: ; preds = %2 %.neg.i.i = mul i64 %5, -48 %10 = mul i64 %5, 49 - %11 = add nsw i64 %10, 65 - %12 = getelementptr i8, ptr %3, i64 %.neg.i.i - %13 = getelementptr i8, ptr %12, i64 -48 - br label %14 + %11 = add i64 %10, 65 + %12 = icmp ult i64 %11, 9223372036854775793 + tail call void @llvm.assume(i1 %12) + %13 = getelementptr i8, ptr %3, i64 %.neg.i.i + %14 = getelementptr i8, ptr %13, i64 -48 + br label %15 14: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.2603368866442730075.exit.i.i, %2 - %.sroa.5.sroa.0.0.i.i = phi i64 [ %11, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.2603368866442730075.exit.i.i ], [ undef, %2 ] - %.sroa.5.sroa.4.0.i.i = phi ptr [ %13, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.2603368866442730075.exit.i.i ], [ undef, %2 ] + %.sroa.5.sroa.0.0.i.i = phi ptr [ %14, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.2603368866442730075.exit.i.i ], [ undef, %2 ] %.sroa.0.0.i.i = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.2603368866442730075.exit.i.i ], [ 0, %2 ] %15 = getelementptr inbounds nuw i8, ptr %3, i64 16 %16 = icmp slt <16 x i8> %6, zeroinitializer @@ -853,7 +854,7 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.26 store i64 %8, ptr %.sroa.2.0..sroa_idx, align 8, !alias.scope !133, !noalias !135 store i64 %.sroa.0.0.i.i, ptr %0, align 8, !alias.scope !137, !noalias !138 %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0.i.i, ptr %.sroa.2.0..sroa_idx.i, align 8, !alias.scope !137, !noalias !138 + store i64 65, ptr %.sroa.2.0..sroa_idx.i, align 8, !alias.scope !137, !noalias !138 %.sroa.3.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0.i.i, ptr %.sroa.3.0..sroa_idx.i, align 8, !alias.scope !137, !noalias !138 ret void @@ -2840,8 +2841,8 @@ define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14in ret ptr %39 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable -define hidden void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14into_iter_from17h8b949c029b859ab3E.llvm.2603368866442730075"(ptr noalias noundef writeonly sret({ { i64, [2 x i64] }, { { ptr, ptr, ptr, i16, [3 x i16] }, i64 }, {} }) align 8 captures(none) dereferenceable(64) initializes((0, 64)) %0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %1, ptr noalias noundef readonly align 8 captures(none) dereferenceable(40) %2) unnamed_addr #15 personality ptr @rust_eh_personality { +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable +define hidden void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14into_iter_from17h8b949c029b859ab3E.llvm.2603368866442730075"(ptr noalias noundef writeonly sret({ { i64, [2 x i64] }, { { ptr, ptr, ptr, i16, [3 x i16] }, i64 }, {} }) align 8 captures(none) dereferenceable(64) initializes((0, 64)) %0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %1, ptr noalias noundef readonly align 8 captures(none) dereferenceable(40) %2) unnamed_addr #17 personality ptr @rust_eh_personality { %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 8 %.sroa.4.0.copyload = load i64, ptr %.sroa.4.0..sroa_idx, align 8 %4 = icmp eq i64 %.sroa.4.0.copyload, 0 @@ -2851,27 +2852,28 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.26 %.sroa.01.0.copyload = load ptr, ptr %1, align 8, !nonnull !11, !noundef !11 %.neg.i = mul i64 %.sroa.4.0.copyload, -48 %5 = mul i64 %.sroa.4.0.copyload, 49 - %6 = add nsw i64 %5, 65 - %7 = getelementptr i8, ptr %.sroa.01.0.copyload, i64 %.neg.i - %8 = getelementptr i8, ptr %7, i64 -48 + %6 = add i64 %5, 65 + %7 = icmp ult i64 %6, 9223372036854775793 + tail call void @llvm.assume(i1 %7) + %8 = getelementptr i8, ptr %.sroa.01.0.copyload, i64 %.neg.i + %9 = getelementptr i8, ptr %8, i64 -48 br label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$15into_allocation17hca34a5749e045c36E.llvm.2603368866442730075.exit" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$15into_allocation17hca34a5749e045c36E.llvm.2603368866442730075.exit": ; preds = %3, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.2603368866442730075.exit.i - %.sroa.5.sroa.0.0.i = phi i64 [ %6, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.2603368866442730075.exit.i ], [ undef, %3 ] - %.sroa.5.sroa.4.0.i = phi ptr [ %8, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.2603368866442730075.exit.i ], [ undef, %3 ] + %.sroa.5.sroa.0.0.i = phi ptr [ %9, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.2603368866442730075.exit.i ], [ undef, %3 ] %.sroa.0.0.i = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.2603368866442730075.exit.i ], [ 0, %3 ] %9 = getelementptr inbounds nuw i8, ptr %0, i64 24 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef nonnull align 8 dereferenceable(40) %2, i64 40, i1 false) store i64 %.sroa.0.0.i, ptr %0, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0.i, ptr %.sroa.2.0..sroa_idx, align 8 + store i64 65, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0.i, ptr %.sroa.3.0..sroa_idx, align 8 ret void } ; Function Attrs: cold nonlazybind uwtable -define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17h13b8f472d4810032E.llvm.2603368866442730075"(ptr noalias noundef align 8 dereferenceable(32) %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 1 %2, i1 noundef zeroext %3) unnamed_addr #17 personality ptr @rust_eh_personality { +define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17h13b8f472d4810032E.llvm.2603368866442730075"(ptr noalias noundef align 8 dereferenceable(32) %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 1 %2, i1 noundef zeroext %3) unnamed_addr #18 personality ptr @rust_eh_personality { %5 = alloca [8 x i8], align 8 %6 = alloca i64, align 8 %7 = alloca { { ptr, { i64, i64 } }, { ptr, i64, i64, i64 } }, align 8 @@ -3216,7 +3218,7 @@ _ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17had6b4976ee82d150E.exit: } ; Function Attrs: cold nonlazybind uwtable -define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17h5d6d90ed893314fdE.llvm.2603368866442730075"(ptr noalias noundef align 8 dereferenceable(32) %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 1 %2, i1 noundef zeroext %3) unnamed_addr #17 personality ptr @rust_eh_personality { +define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17h5d6d90ed893314fdE.llvm.2603368866442730075"(ptr noalias noundef align 8 dereferenceable(32) %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 1 %2, i1 noundef zeroext %3) unnamed_addr #18 personality ptr @rust_eh_personality { %5 = alloca [8 x i8], align 8 %6 = alloca i64, align 8 %7 = alloca { { ptr, { i64, i64 } }, { ptr, i64, i64, i64 } }, align 8 @@ -3561,7 +3563,7 @@ _ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17had6b4976ee82d150E.exit: } ; Function Attrs: cold nonlazybind uwtable -define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17hade19d62f900fb50E.llvm.2603368866442730075"(ptr noalias noundef align 8 dereferenceable(32) %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 1 %2, i1 noundef zeroext %3) unnamed_addr #17 personality ptr @rust_eh_personality { +define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17hade19d62f900fb50E.llvm.2603368866442730075"(ptr noalias noundef align 8 dereferenceable(32) %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 1 %2, i1 noundef zeroext %3) unnamed_addr #18 personality ptr @rust_eh_personality { %5 = alloca [8 x i8], align 8 %6 = alloca i64, align 8 %7 = alloca { { ptr, { i64, i64 } }, { ptr, i64, i64, i64 } }, align 8 @@ -3975,7 +3977,7 @@ define internal noundef i64 @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_ } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable -define hidden void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$15into_allocation17hca34a5749e045c36E.llvm.2603368866442730075"(ptr noalias noundef writeonly sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) initializes((0, 24)) %0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %1) unnamed_addr #18 personality ptr @rust_eh_personality { +define hidden void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$15into_allocation17hca34a5749e045c36E.llvm.2603368866442730075"(ptr noalias noundef writeonly sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) initializes((0, 24)) %0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %1) unnamed_addr #17 personality ptr @rust_eh_personality { %3 = getelementptr inbounds nuw i8, ptr %1, i64 8 %4 = load i64, ptr %3, align 8, !noundef !11 %5 = icmp eq i64 %4, 0 @@ -3993,12 +3995,11 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.26 br label %12 12: ; preds = %2, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.2603368866442730075.exit - %.sroa.5.sroa.0.0 = phi i64 [ %7, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.2603368866442730075.exit ], [ undef, %2 ] %.sroa.5.sroa.4.0 = phi ptr [ %11, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.2603368866442730075.exit ], [ undef, %2 ] %.sroa.0.0 = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.2603368866442730075.exit ], [ 0, %2 ] store i64 %.sroa.0.0, ptr %0, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0, ptr %.sroa.5.0..sroa_idx, align 8 + store i64 65, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx, align 8 ret void @@ -4162,8 +4163,8 @@ attributes #13 = { inlinehint nofree norecurse nosync nounwind nonlazybind uwtab attributes #14 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #15 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #16 = { nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #17 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #18 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #17 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #18 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #19 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #20 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #21 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } diff --git a/bench/rustfmt-rs/optimized/llbxf4pclolbp5s.ll b/bench/rustfmt-rs/optimized/llbxf4pclolbp5s.ll index bed35c9b1ef..7c70625c430 100644 --- a/bench/rustfmt-rs/optimized/llbxf4pclolbp5s.ll +++ b/bench/rustfmt-rs/optimized/llbxf4pclolbp5s.ll @@ -19638,7 +19638,7 @@ default.unreachable: ; preds = %"_ZN67_$LT$alloc..v ret i64 %110 111: ; preds = %98, %"_ZN65_$LT$rustc_ast..ptr..P$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hb45b3e0bf88e4809E.exit7.i.i", %69, %"_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hb245dcfa6db25f7bE.exit.i" - %.sroa.7.0.i = phi i32 [ %67, %98 ], [ -254, %"_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hb245dcfa6db25f7bE.exit.i" ], [ -253, %"_ZN65_$LT$rustc_ast..ptr..P$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hb45b3e0bf88e4809E.exit7.i.i" ], [ -253, %69 ] + %.sroa.7.0.i = phi i32 [ -255, %98 ], [ -254, %"_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hb245dcfa6db25f7bE.exit.i" ], [ -253, %"_ZN65_$LT$rustc_ast..ptr..P$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hb45b3e0bf88e4809E.exit7.i.i" ], [ -253, %69 ] %.sroa.6.0.i = phi ptr [ %.sroa.0.0.i4.i, %98 ], [ undef, %"_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hb245dcfa6db25f7bE.exit.i" ], [ undef, %"_ZN65_$LT$rustc_ast..ptr..P$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hb45b3e0bf88e4809E.exit7.i.i" ], [ undef, %69 ] %.sroa.5.09.i = phi ptr [ %.fca.0.extract.i.i.i.i, %98 ], [ undef, %"_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hb245dcfa6db25f7bE.exit.i" ], [ undef, %"_ZN65_$LT$rustc_ast..ptr..P$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hb45b3e0bf88e4809E.exit7.i.i" ], [ undef, %69 ] %.sroa.0.08.i = phi i64 [ %99, %98 ], [ undef, %"_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hb245dcfa6db25f7bE.exit.i" ], [ %89, %"_ZN65_$LT$rustc_ast..ptr..P$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hb45b3e0bf88e4809E.exit7.i.i" ], [ 0, %69 ] @@ -20555,7 +20555,7 @@ default.unreachable: ; preds = %69 %.sroa.3.0..0.sroa_idx = getelementptr inbounds nuw i8, ptr %.032, i64 48 store ptr %.sroa.0.0.i9, ptr %.sroa.3.0..0.sroa_idx, align 8 %.sroa.4.0..0.sroa_idx = getelementptr inbounds nuw i8, ptr %.032, i64 56 - store i32 %98, ptr %.sroa.4.0..0.sroa_idx, align 8 + store i32 -255, ptr %.sroa.4.0..0.sroa_idx, align 8 %.sroa.513.0..0.sroa_idx = getelementptr inbounds nuw i8, ptr %.032, i64 64 store i64 %46, ptr %.sroa.513.0..0.sroa_idx, align 8 %.sroa.6.0..0.sroa_idx = getelementptr inbounds nuw i8, ptr %.032, i64 72 @@ -29604,7 +29604,7 @@ common.resume: ; preds = %536, %165, %.loopex .thread137: ; preds = %.thread, %175, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h2740da28ff94c641E.exit.i.i59", %183, %172 %.sroa.10.0119145 = phi ptr [ %174, %183 ], [ %174, %172 ], [ %164, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h2740da28ff94c641E.exit.i.i59" ], [ %164, %175 ], [ %.sroa.212.0.copyload, %.thread ] - %.sroa.01.0121144 = phi i64 [ -9223372036854775807, %183 ], [ -9223372036854775807, %172 ], [ -9223372036854775807, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h2740da28ff94c641E.exit.i.i59" ], [ -9223372036854775807, %175 ], [ %169, %.thread ] + %.sroa.01.0121144 = phi i64 [ -9223372036854775808, %183 ], [ -9223372036854775808, %172 ], [ -9223372036854775807, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h2740da28ff94c641E.exit.i.i59" ], [ -9223372036854775807, %175 ], [ -9223372036854775808, %.thread ] call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %60) br label %184 @@ -29614,7 +29614,7 @@ common.resume: ; preds = %536, %165, %.loopex 184: ; preds = %.thread189, %.thread137 %.sroa.10.1 = phi ptr [ %.sroa.10.2171197, %.thread189 ], [ %.sroa.10.0119145, %.thread137 ] - %.sroa.01.1 = phi i64 [ %.sroa.01.2173196, %.thread189 ], [ %.sroa.01.0121144, %.thread137 ] + %.sroa.01.1 = phi i64 [ -9223372036854775807, %.thread189 ], [ %.sroa.01.0121144, %.thread137 ] %185 = icmp eq i64 %.sroa.01.1, -9223372036854775807 br i1 %185, label %555, label %554 @@ -29749,7 +29749,7 @@ common.resume: ; preds = %536, %165, %.loopex br label %.loopexit131.i .loopexit.i.i.i68: ; preds = %.lr.ph.i13.i.i.i, %.loopexit40.i.i.i75 - %.sroa.5.1.i = phi i8 [ 0, %.loopexit40.i.i.i75 ], [ %.sroa.5.0367.i, %.lr.ph.i13.i.i.i ] + %.sroa.5.1.i = phi i8 [ 0, %.loopexit40.i.i.i75 ], [ 1, %.lr.ph.i13.i.i.i ] %227 = phi i64 [ %207, %.loopexit40.i.i.i75 ], [ %219, %.lr.ph.i13.i.i.i ] %.sroa.3.030.i.i.i = phi i8 [ %209, %.loopexit40.i.i.i75 ], [ %221, %.lr.ph.i13.i.i.i ] switch i8 %.sroa.3.030.i.i.i, label %.loopexit.i.i.thread.i [ @@ -30948,7 +30948,6 @@ _ZN5serde2de9MapAccess10next_value17hd27ffe8b662e6d9aE.exit.i: ; preds = %465 .thread189: ; preds = %"_ZN10serde_json2de21Deserializer$LT$R$GT$7end_map17ha9132fedd21de1c9E.exit.thread", %.thread748, %"_ZN10serde_json2de21Deserializer$LT$R$GT$7end_map17ha9132fedd21de1c9E.exit", %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h2740da28ff94c641E.exit.i.i82", %551 %.sroa.10.2171197 = phi ptr [ %553, %551 ], [ %.1.i, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h2740da28ff94c641E.exit.i.i82" ], [ %.1.i, %"_ZN10serde_json2de21Deserializer$LT$R$GT$7end_map17ha9132fedd21de1c9E.exit" ], [ %543, %.thread748 ], [ %543, %"_ZN10serde_json2de21Deserializer$LT$R$GT$7end_map17ha9132fedd21de1c9E.exit.thread" ] - %.sroa.01.2173196 = phi i64 [ -9223372036854775807, %551 ], [ -9223372036854775807, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h2740da28ff94c641E.exit.i.i82" ], [ -9223372036854775807, %"_ZN10serde_json2de21Deserializer$LT$R$GT$7end_map17ha9132fedd21de1c9E.exit" ], [ %541, %.thread748 ], [ -9223372036854775807, %"_ZN10serde_json2de21Deserializer$LT$R$GT$7end_map17ha9132fedd21de1c9E.exit.thread" ] call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %57) br label %184 diff --git a/bench/sentencepiece/optimized/strutil.ll b/bench/sentencepiece/optimized/strutil.ll index 8f3d3873282..e3000588650 100644 --- a/bench/sentencepiece/optimized/strutil.ll +++ b/bench/sentencepiece/optimized/strutil.ll @@ -2313,35 +2313,17 @@ define noundef i32 @_ZN6google8protobuf16strtou32_adaptorEPKcPPci(ptr noundef %0 store i32 0, ptr %4, align 4, !tbaa !65 %6 = tail call i64 @strtoul(ptr noundef %0, ptr noundef %1, i32 noundef %2) #31 %7 = load i32, ptr %4, align 4, !tbaa !65 - %8 = icmp eq i32 %7, 34 - %9 = icmp eq i64 %6, -1 - %or.cond = select i1 %8, i1 %9, i1 false - br i1 %or.cond, label %18, label %10 - -10: ; preds = %3 - %11 = icmp eq i32 %7, 0 - %12 = icmp ugt i64 %6, 4294967295 - %or.cond3 = select i1 %11, i1 %12, i1 false - br i1 %or.cond3, label %13, label %14 - -13: ; preds = %10 - store i32 34, ptr %4, align 4, !tbaa !65 - br label %18 + %8 = icmp eq i32 %7, 0 + br i1 %8, label %14, label %10 -14: ; preds = %10 - br i1 %11, label %15, label %16 - -15: ; preds = %14 - store i32 %5, ptr %4, align 4, !tbaa !65 - br label %16 - -16: ; preds = %15, %14 - %17 = trunc i64 %6 to i32 - br label %18 +14: ; preds = %3 + %9 = icmp ugt i64 %6, 4294967295 + %.mux = select i1 %9, i32 34, i32 %5 + store i32 %.mux, ptr %4, align 4, !tbaa !65 + br label %10 -18: ; preds = %3, %16, %13 - %.0 = phi i32 [ -1, %13 ], [ %17, %16 ], [ -1, %3 ] - ret i32 %.0 +18: ; preds = %14, %3 + ret i32 -1 } ; Function Attrs: mustprogress nofree nounwind willreturn diff --git a/bench/sentencepiece/optimized/zero_copy_stream_impl_lite.ll b/bench/sentencepiece/optimized/zero_copy_stream_impl_lite.ll index f39e50d1673..6b8ff257631 100644 --- a/bench/sentencepiece/optimized/zero_copy_stream_impl_lite.ll +++ b/bench/sentencepiece/optimized/zero_copy_stream_impl_lite.ll @@ -1724,27 +1724,23 @@ _ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5v _ZN6google8protobuf2io26CopyingOutputStreamAdaptor11WriteBufferEv.exit: ; preds = %24, %13, %3 %.pre = phi i32 [ %.pre.pre, %24 ], [ 0, %13 ], [ %7, %3 ] - %32 = phi i32 [ 0, %24 ], [ 0, %13 ], [ %5, %3 ] - %33 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %34 = load ptr, ptr %33, align 8, !tbaa !53 - %.not.i.i = icmp eq ptr %34, null + %32 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %33 = load ptr, ptr %32, align 8, !tbaa !53 + %.not.i.i = icmp eq ptr %33, null br i1 %.not.i.i, label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit.i, label %_ZN6google8protobuf2io26CopyingOutputStreamAdaptor22AllocateBufferIfNeededEv.exit _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit.i: ; preds = %_ZN6google8protobuf2io26CopyingOutputStreamAdaptor11WriteBufferEv.exit %35 = sext i32 %.pre to i64 %36 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %35) #21 - store ptr %36, ptr %33, align 8, !tbaa !53 + store ptr %36, ptr %32, align 8, !tbaa !53 br label %_ZN6google8protobuf2io26CopyingOutputStreamAdaptor22AllocateBufferIfNeededEv.exit _ZN6google8protobuf2io26CopyingOutputStreamAdaptor22AllocateBufferIfNeededEv.exit: ; preds = %_ZN6google8protobuf2io26CopyingOutputStreamAdaptor11WriteBufferEv.exit, %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit.i - %37 = phi ptr [ %34, %_ZN6google8protobuf2io26CopyingOutputStreamAdaptor11WriteBufferEv.exit ], [ %36, %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit.i ] - %38 = sext i32 %32 to i64 - %39 = getelementptr inbounds i8, ptr %37, i64 %38 - store ptr %39, ptr %1, align 8, !tbaa !18 - %40 = sub nsw i32 %.pre, %32 - store i32 %40, ptr %2, align 4, !tbaa !17 - %41 = load i32, ptr %6, align 8, !tbaa !60 - store i32 %41, ptr %4, align 4, !tbaa !61 + %37 = phi ptr [ %33, %_ZN6google8protobuf2io26CopyingOutputStreamAdaptor11WriteBufferEv.exit ], [ %36, %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit.i ] + store ptr %37, ptr %1, align 8, !tbaa !18 + store i32 %.pre, ptr %2, align 4, !tbaa !17 + %37 = load i32, ptr %6, align 8, !tbaa !60 + store i32 %37, ptr %4, align 4, !tbaa !61 br label %_ZN6google8protobuf2io26CopyingOutputStreamAdaptor11WriteBufferEv.exit.thread _ZN6google8protobuf2io26CopyingOutputStreamAdaptor11WriteBufferEv.exit.thread: ; preds = %_ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i.i.i.i, %30, %9, %_ZN6google8protobuf2io26CopyingOutputStreamAdaptor22AllocateBufferIfNeededEv.exit diff --git a/bench/serde-rs-json/optimized/19be4mv19oulzif3.ll b/bench/serde-rs-json/optimized/19be4mv19oulzif3.ll index 10d1321ec30..2ee7a0f0a0d 100644 --- a/bench/serde-rs-json/optimized/19be4mv19oulzif3.ll +++ b/bench/serde-rs-json/optimized/19be4mv19oulzif3.ll @@ -1298,13 +1298,12 @@ default.unreachable.i.i: ; preds = %"_ZN110_$LT$core..i br i1 %.not.i.not, label %.loopexit, label %23 .loopexit: ; preds = %.loopexit.loopexit.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h687f941d1e44234dE.exit.i.i" - %.sink = phi i64 [ %.sroa.3.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h687f941d1e44234dE.exit.i.i" ], [ 0, %.loopexit.loopexit.i.i ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h687f941d1e44234dE.exit.i.i" ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit.loopexit.i.i ] %storemerge = phi i64 [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h687f941d1e44234dE.exit.i.i" ], [ 1, %.loopexit.loopexit.i.i ] %22 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.0.0, ptr %22, align 8 %.sroa.224.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.224.0..sroa_idx, align 8 + store i64 0, ptr %.sroa.224.0..sroa_idx, align 8 %.sroa.325.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink, ptr %.sroa.325.0..sroa_idx, align 8 store i64 %storemerge, ptr %0, align 8 @@ -1369,13 +1368,12 @@ default.unreachable.i.i: ; preds = %"_ZN110_$LT$core..i br i1 %.not.i.not, label %.loopexit, label %23 .loopexit: ; preds = %.loopexit.loopexit.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h687f941d1e44234dE.exit.i.i" - %.sink = phi i64 [ %.sroa.3.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h687f941d1e44234dE.exit.i.i" ], [ 0, %.loopexit.loopexit.i.i ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h687f941d1e44234dE.exit.i.i" ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit.loopexit.i.i ] %storemerge = phi i64 [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h687f941d1e44234dE.exit.i.i" ], [ 1, %.loopexit.loopexit.i.i ] %22 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.0.0, ptr %22, align 8 %.sroa.224.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.224.0..sroa_idx, align 8 + store i64 0, ptr %.sroa.224.0..sroa_idx, align 8 %.sroa.325.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink, ptr %.sroa.325.0..sroa_idx, align 8 store i64 %storemerge, ptr %0, align 8 @@ -1446,13 +1444,12 @@ default.unreachable.i.i: ; preds = %"_ZN110_$LT$core..i br i1 %.not.i.not, label %.loopexit, label %24 .loopexit: ; preds = %.loopexit.loopexit.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h687f941d1e44234dE.exit.i.i" - %.sink = phi i64 [ %.sroa.3.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h687f941d1e44234dE.exit.i.i" ], [ 0, %.loopexit.loopexit.i.i ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h687f941d1e44234dE.exit.i.i" ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit.loopexit.i.i ] %storemerge = phi i64 [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h687f941d1e44234dE.exit.i.i" ], [ 1, %.loopexit.loopexit.i.i ] %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.0.0, ptr %23, align 8 %.sroa.224.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.224.0..sroa_idx, align 8 + store i64 0, ptr %.sroa.224.0..sroa_idx, align 8 %.sroa.325.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink, ptr %.sroa.325.0..sroa_idx, align 8 store i64 %storemerge, ptr %0, align 8 @@ -1523,13 +1520,12 @@ default.unreachable.i.i: ; preds = %"_ZN110_$LT$core..i br i1 %.not.i.not, label %.loopexit, label %24 .loopexit: ; preds = %.loopexit.loopexit.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h687f941d1e44234dE.exit.i.i" - %.sink = phi i64 [ %.sroa.3.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h687f941d1e44234dE.exit.i.i" ], [ 0, %.loopexit.loopexit.i.i ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h687f941d1e44234dE.exit.i.i" ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit.loopexit.i.i ] %storemerge = phi i64 [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h687f941d1e44234dE.exit.i.i" ], [ 1, %.loopexit.loopexit.i.i ] %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.0.0, ptr %23, align 8 %.sroa.224.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.224.0..sroa_idx, align 8 + store i64 0, ptr %.sroa.224.0..sroa_idx, align 8 %.sroa.325.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink, ptr %.sroa.325.0..sroa_idx, align 8 store i64 %storemerge, ptr %0, align 8 diff --git a/bench/softposit-rs/optimized/4x7uq85ym1obejw4.ll b/bench/softposit-rs/optimized/4x7uq85ym1obejw4.ll index b2954e7080a..43cd2980d17 100644 --- a/bench/softposit-rs/optimized/4x7uq85ym1obejw4.ll +++ b/bench/softposit-rs/optimized/4x7uq85ym1obejw4.ll @@ -170,11 +170,11 @@ _ZN9softposit4p8e04P8E017separate_bits_tmp17h7142056595c711ecE.exit196: ; preds %68 = icmp slt i8 %67, 0 br i1 %68, label %81, label %80 -.loopexit: ; preds = %.lr.ph, %.preheader, %150, %_ZN9softposit4p8e04P8E017separate_bits_tmp17h7142056595c711ecE.exit182, %153 - %.1145 = phi i16 [ %.0144, %_ZN9softposit4p8e04P8E017separate_bits_tmp17h7142056595c711ecE.exit182 ], [ 0, %150 ], [ %155, %153 ], [ %.2146201, %.preheader ], [ %157, %.lr.ph ] - %.0140 = phi i8 [ 0, %_ZN9softposit4p8e04P8E017separate_bits_tmp17h7142056595c711ecE.exit182 ], [ %.1141202, %150 ], [ %.1141, %153 ], [ %.1141202, %.preheader ], [ %.1141202, %.lr.ph ] - %.0135 = phi i8 [ %20, %_ZN9softposit4p8e04P8E017separate_bits_tmp17h7142056595c711ecE.exit182 ], [ %.1136203, %150 ], [ %.1136, %153 ], [ %.1136203, %.preheader ], [ %.1136203, %.lr.ph ] - %.1 = phi i8 [ %.0130, %_ZN9softposit4p8e04P8E017separate_bits_tmp17h7142056595c711ecE.exit182 ], [ %.2204, %150 ], [ %154, %153 ], [ %.2204, %.preheader ], [ %156, %.lr.ph ] +.loopexit: ; preds = %.lr.ph, %150, %_ZN9softposit4p8e04P8E017separate_bits_tmp17h7142056595c711ecE.exit182, %152 + %.1145 = phi i16 [ %.0144, %_ZN9softposit4p8e04P8E017separate_bits_tmp17h7142056595c711ecE.exit182 ], [ 0, %150 ], [ 0, %.preheader ], [ %157, %.lr.ph ] + %.0140 = phi i8 [ 0, %_ZN9softposit4p8e04P8E017separate_bits_tmp17h7142056595c711ecE.exit182 ], [ %.1141202, %150 ], [ %.1141, %.preheader ], [ %.1141202, %.lr.ph ] + %.0135 = phi i8 [ %20, %_ZN9softposit4p8e04P8E017separate_bits_tmp17h7142056595c711ecE.exit182 ], [ %.1136203, %150 ], [ %.1136, %.preheader ], [ %.1136203, %.lr.ph ] + %.1 = phi i8 [ %.0130, %_ZN9softposit4p8e04P8E017separate_bits_tmp17h7142056595c711ecE.exit182 ], [ %.2204, %150 ], [ %153, %.preheader ], [ %156, %.lr.ph ] %69 = icmp sgt i8 %.1, -1 br i1 %69, label %70, label %75 @@ -287,7 +287,7 @@ _ZN9softposit4p8e04P8E016calculate_regime17had5bfa15c986e984E.exit: ; preds = %7 %.1136 = phi i8 [ %20, %91 ], [ %20, %93 ], [ %20, %111 ], [ %20, %115 ], [ %20, %107 ], [ %20, %138 ], [ %.2137, %143 ], [ %.lobit165, %133 ] %.2 = phi i8 [ %.0130, %91 ], [ %.0130, %93 ], [ %.0130, %111 ], [ %.0130, %115 ], [ %.0130, %107 ], [ %.211.i187, %138 ], [ %.211.i187, %143 ], [ %.211.i187, %133 ] %122 = icmp sgt i16 %.2146, -1 - br i1 %122, label %150, label %153 + br i1 %122, label %150, label %152 123: ; preds = %81 %124 = and i8 %67, 15 @@ -343,21 +343,17 @@ _ZN9softposit4p8e04P8E016calculate_regime17had5bfa15c986e984E.exit: ; preds = %7 %.1136203 = phi i8 [ %.lobit, %.thread ], [ %.1136, %121 ] %.1141202 = phi i8 [ 0, %.thread ], [ %.1141, %121 ] %.2146201 = phi i16 [ %95, %.thread ], [ %.2146, %121 ] - %151 = icmp eq i16 %.2146201, 0 - br i1 %151, label %.loopexit, label %.preheader + %151 = add i16 %.2146201, -1 + %or.cond247 = icmp ult i16 %151, 16383 + br i1 %or.cond247, label %.lr.ph, label %.loopexit -.preheader: ; preds = %150 - %152 = icmp samesign ult i16 %.2146201, 16384 - br i1 %152, label %.lr.ph, label %.loopexit - -153: ; preds = %121 - %154 = add i8 %.2, 1 - %155 = lshr i16 %.2146, 1 +.preheader: ; preds = %121 + %153 = add i8 %.2, 1 br label %.loopexit -.lr.ph: ; preds = %.preheader, %.lr.ph - %.3219 = phi i8 [ %156, %.lr.ph ], [ %.2204, %.preheader ] - %.8152218 = phi i16 [ %157, %.lr.ph ], [ %.2146201, %.preheader ] +.lr.ph: ; preds = %150, %.lr.ph + %.3219 = phi i8 [ %156, %.lr.ph ], [ %.2204, %150 ] + %.8152218 = phi i16 [ %157, %.lr.ph ], [ %.2146201, %150 ] %156 = add i8 %.3219, -1 %157 = shl nuw nsw i16 %.8152218, 1 %158 = icmp samesign ult i16 %.8152218, 8192 diff --git a/bench/stat-rs/optimized/2y2d191rk1p8v5y4.ll b/bench/stat-rs/optimized/2y2d191rk1p8v5y4.ll index 5a69725cb86..33af24c391d 100644 --- a/bench/stat-rs/optimized/2y2d191rk1p8v5y4.ll +++ b/bench/stat-rs/optimized/2y2d191rk1p8v5y4.ll @@ -859,22 +859,18 @@ define hidden { ptr, i64 } @"_ZN5alloc3vec9into_iter21IntoIter$LT$T$C$A$GT$8as_s define hidden noundef zeroext i1 @"_ZN70_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h48890ca755b5e0f6E.llvm.9554138872291501309"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(16) %0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(16) %1) unnamed_addr #9 { %3 = load i64, ptr %0, align 8, !range !240, !noundef !4 %trunc = trunc nuw i64 %3 to i1 - %4 = load i64, ptr %1, align 8, !range !240, !noundef !4 - %trunc1 = trunc nuw i64 %4 to i1 - br i1 %trunc, label %6, label %5 + br i1 %trunc, label %5, label %6 5: ; preds = %2 - %switch3 = xor i1 %trunc1, true - br label %7 - -6: ; preds = %2 - br i1 %trunc1, label %8, label %7 + %5 = load i64, ptr %1, align 8, !range !240, !noundef !4 + %trunc1 = trunc nuw i64 %5 to i1 + br i1 %trunc1, label %7, label %6 -7: ; preds = %6, %5, %8 - %.sroa.0.0 = phi i1 [ %13, %8 ], [ %switch3, %5 ], [ false, %6 ] +7: ; preds = %2, %5, %8 + %.sroa.0.0 = phi i1 [ %13, %8 ], [ false, %5 ], [ true, %2 ] ret i1 %.sroa.0.0 -8: ; preds = %6 +8: ; preds = %4 %9 = getelementptr inbounds nuw i8, ptr %0, i64 8 %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !241) diff --git a/bench/stb/optimized/stb_divide.ll b/bench/stb/optimized/stb_divide.ll index 4ba4921bbc4..0a8c3f212fc 100644 --- a/bench/stb/optimized/stb_divide.ll +++ b/bench/stb/optimized/stb_divide.ll @@ -128,32 +128,22 @@ define i32 @stb_div_floor(i32 noundef %0, i32 noundef %1) local_unnamed_addr #0 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define i32 @stb_div_eucl(i32 noundef %0, i32 noundef %1) local_unnamed_addr #0 { %3 = icmp sgt i32 %0, -1 - br i1 %3, label %4, label %13 + br i1 %3, label %4, label %8 4: ; preds = %2 %5 = icmp sgt i32 %1, -1 - br i1 %5, label %6, label %8 + br i1 %5, label %6, label %.thread 6: ; preds = %4 %7 = udiv i32 %0, %1 br label %.thread -8: ; preds = %4 - %.not51 = icmp eq i32 %1, -2147483648 - br i1 %.not51, label %.thread, label %9 - -9: ; preds = %8 - %10 = sub nsw i32 0, %1 - %11 = udiv i32 %0, %10 - %12 = sub nsw i32 0, %11 - br label %.thread - -13: ; preds = %2 +8: ; preds = %2 %.not = icmp eq i32 %0, -2147483648 %14 = icmp sgt i32 %1, -1 br i1 %.not, label %27, label %15 -15: ; preds = %13 +15: ; preds = %8 br i1 %14, label %16, label %21 16: ; preds = %15 @@ -174,7 +164,7 @@ define i32 @stb_div_eucl(i32 noundef %0, i32 noundef %1) local_unnamed_addr #0 { %26 = urem i32 %23, %24 br label %38 -27: ; preds = %13 +27: ; preds = %8 br i1 %14, label %28, label %32 28: ; preds = %27 @@ -208,8 +198,8 @@ define i32 @stb_div_eucl(i32 noundef %0, i32 noundef %1) local_unnamed_addr #0 { %42 = add nsw i32 %.043, %41 br label %.thread -.thread: ; preds = %21, %32, %8, %9, %38, %40, %6 - %.044 = phi i32 [ %7, %6 ], [ %42, %40 ], [ %.043, %38 ], [ 1, %32 ], [ 0, %8 ], [ %12, %9 ], [ 1, %21 ] +.thread: ; preds = %4, %21, %32, %38, %40, %6 + %.044 = phi i32 [ %7, %6 ], [ %42, %40 ], [ %.043, %38 ], [ 1, %32 ], [ 1, %26 ], [ 0, %4 ] ret i32 %.044 } diff --git a/bench/taskflow/optimized/parallel_sort.ll b/bench/taskflow/optimized/parallel_sort.ll index 5450137e37c..219dcb42b6f 100644 --- a/bench/taskflow/optimized/parallel_sort.ll +++ b/bench/taskflow/optimized/parallel_sort.ll @@ -10056,7 +10056,6 @@ define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(28) ptr @_ %30 = ptrtoint ptr %28 to i64 %31 = ptrtoint ptr %29 to i64 %32 = sub i64 %30, %31 - %33 = ashr exact i64 %32, 2 %.not = icmp ult i64 %32, %26 br i1 %.not, label %38, label %34 @@ -10120,27 +10119,24 @@ _ZN2tf23SmallVectorTemplateBaseIiLb1EE4growEm.exit: ; preds = %49, %51 br label %_ZSt4moveIPiS0_ET0_T_S2_S1_.exit38 _ZSt4moveIPiS0_ET0_T_S2_S1_.exit38: ; preds = %55, %54, %_ZN2tf23SmallVectorTemplateBaseIiLb1EE4growEm.exit - %.pre41 = phi ptr [ %.0.i.i.i, %_ZN2tf23SmallVectorTemplateBaseIiLb1EE4growEm.exit ], [ %29, %54 ], [ %.pre41.pre, %55 ] - %.029 = phi i64 [ 0, %_ZN2tf23SmallVectorTemplateBaseIiLb1EE4growEm.exit ], [ 0, %54 ], [ %33, %55 ] - %56 = load ptr, ptr %1, align 8, !tbaa !199 - %57 = getelementptr inbounds nuw i32, ptr %56, i64 %.029 - %58 = load ptr, ptr %22, align 8, !tbaa !307 - %.not.i.i = icmp eq ptr %57, %58 - br i1 %.not.i.i, label %_ZN2tf23SmallVectorTemplateBaseIiLb1EE18uninitialized_moveIPiS3_EEvT_S4_T0_.exit, label %59 - -59: ; preds = %_ZSt4moveIPiS0_ET0_T_S2_S1_.exit38 - %60 = getelementptr inbounds nuw i32, ptr %.pre41, i64 %.029 - %61 = ptrtoint ptr %58 to i64 - %62 = ptrtoint ptr %57 to i64 - %63 = sub i64 %61, %62 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 4 %57, i64 %63, i1 false) + %.pre41 = phi ptr [ %.pre41.pre, %54 ], [ %29, %53 ], [ %.0.i.i.i, %_ZN2tf23SmallVectorTemplateBaseIiLb1EE4growEm.exit ] + %55 = load ptr, ptr %1, align 8, !tbaa !199 + %56 = load ptr, ptr %22, align 8, !tbaa !307 + %.not.i.i = icmp eq ptr %55, %56 + br i1 %.not.i.i, label %_ZN2tf23SmallVectorTemplateBaseIiLb1EE18uninitialized_moveIPiS3_EEvT_S4_T0_.exit, label %57 + +57: ; preds = %_ZSt4moveIPiS0_ET0_T_S2_S1_.exit38 + %58 = ptrtoint ptr %56 to i64 + %59 = ptrtoint ptr %55 to i64 + %60 = sub i64 %58, %59 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %.pre41, ptr align 4 %55, i64 %60, i1 false) %.pre40 = load ptr, ptr %0, align 8, !tbaa !199 %.pre42 = load ptr, ptr %1, align 8, !tbaa !199 br label %_ZN2tf23SmallVectorTemplateBaseIiLb1EE18uninitialized_moveIPiS3_EEvT_S4_T0_.exit -_ZN2tf23SmallVectorTemplateBaseIiLb1EE18uninitialized_moveIPiS3_EEvT_S4_T0_.exit: ; preds = %_ZSt4moveIPiS0_ET0_T_S2_S1_.exit38, %59 - %64 = phi ptr [ %56, %_ZSt4moveIPiS0_ET0_T_S2_S1_.exit38 ], [ %.pre42, %59 ] - %65 = phi ptr [ %.pre41, %_ZSt4moveIPiS0_ET0_T_S2_S1_.exit38 ], [ %.pre40, %59 ] +_ZN2tf23SmallVectorTemplateBaseIiLb1EE18uninitialized_moveIPiS3_EEvT_S4_T0_.exit: ; preds = %_ZSt4moveIPiS0_ET0_T_S2_S1_.exit38, %57 + %64 = phi ptr [ %55, %_ZSt4moveIPiS0_ET0_T_S2_S1_.exit38 ], [ %.pre42, %57 ] + %65 = phi ptr [ %.pre41, %_ZSt4moveIPiS0_ET0_T_S2_S1_.exit38 ], [ %.pre40, %57 ] %66 = getelementptr inbounds nuw i8, ptr %65, i64 %26 store ptr %66, ptr %27, align 8, !tbaa !307 store ptr %64, ptr %22, align 8, !tbaa !307 diff --git a/bench/tokenizers-rs/optimized/10h1ju7dwsvagf79.ll b/bench/tokenizers-rs/optimized/10h1ju7dwsvagf79.ll index 418450b9e22..e6281eabbb8 100644 --- a/bench/tokenizers-rs/optimized/10h1ju7dwsvagf79.ll +++ b/bench/tokenizers-rs/optimized/10h1ju7dwsvagf79.ll @@ -8850,7 +8850,6 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 br label %18 18: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i, %2 - %.sroa.5.sroa.0.0.i.i = phi i64 [ %14, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i ], [ undef, %2 ] %.sroa.5.sroa.4.0.i.i = phi ptr [ %17, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i ], [ undef, %2 ] %.sroa.0.0.i.i = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i ], [ 0, %2 ] %19 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -8871,7 +8870,7 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 store i64 %8, ptr %.sroa.52.0..sroa_idx, align 8, !alias.scope !2122, !noalias !2124 store i64 %.sroa.0.0.i.i, ptr %0, align 8, !alias.scope !2126, !noalias !2127 %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0.i.i, ptr %.sroa.2.0..sroa_idx.i, align 8, !alias.scope !2126, !noalias !2127 + store i64 33, ptr %.sroa.2.0..sroa_idx.i, align 8, !alias.scope !2126, !noalias !2127 %.sroa.3.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0.i.i, ptr %.sroa.3.0..sroa_idx.i, align 8, !alias.scope !2126, !noalias !2127 ret void @@ -8903,7 +8902,6 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 br label %18 18: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i, %2 - %.sroa.5.sroa.0.0.i.i = phi i64 [ %14, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i ], [ undef, %2 ] %.sroa.5.sroa.4.0.i.i = phi ptr [ %17, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i ], [ undef, %2 ] %.sroa.0.0.i.i = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i ], [ 0, %2 ] %19 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -8924,7 +8922,7 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 store i64 %8, ptr %.sroa.52.0..sroa_idx, align 8, !alias.scope !2141, !noalias !2143 store i64 %.sroa.0.0.i.i, ptr %0, align 8, !alias.scope !2145, !noalias !2146 %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0.i.i, ptr %.sroa.2.0..sroa_idx.i, align 8, !alias.scope !2145, !noalias !2146 + store i64 81, ptr %.sroa.2.0..sroa_idx.i, align 8, !alias.scope !2145, !noalias !2146 %.sroa.3.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0.i.i, ptr %.sroa.3.0..sroa_idx.i, align 8, !alias.scope !2145, !noalias !2146 ret void @@ -8956,7 +8954,6 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 br label %18 18: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i, %2 - %.sroa.5.sroa.0.0.i.i = phi i64 [ %14, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i ], [ undef, %2 ] %.sroa.5.sroa.4.0.i.i = phi ptr [ %17, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i ], [ undef, %2 ] %.sroa.0.0.i.i = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i ], [ 0, %2 ] %19 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -8977,7 +8974,7 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 store i64 %8, ptr %.sroa.52.0..sroa_idx, align 8, !alias.scope !2160, !noalias !2162 store i64 %.sroa.0.0.i.i, ptr %0, align 8, !alias.scope !2164, !noalias !2165 %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0.i.i, ptr %.sroa.2.0..sroa_idx.i, align 8, !alias.scope !2164, !noalias !2165 + store i64 49, ptr %.sroa.2.0..sroa_idx.i, align 8, !alias.scope !2164, !noalias !2165 %.sroa.3.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0.i.i, ptr %.sroa.3.0..sroa_idx.i, align 8, !alias.scope !2164, !noalias !2165 ret void @@ -9009,7 +9006,6 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 br label %18 18: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i, %2 - %.sroa.5.sroa.0.0.i.i = phi i64 [ %14, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i ], [ undef, %2 ] %.sroa.5.sroa.4.0.i.i = phi ptr [ %17, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i ], [ undef, %2 ] %.sroa.0.0.i.i = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i ], [ 0, %2 ] %19 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -9030,7 +9026,7 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 store i64 %8, ptr %.sroa.52.0..sroa_idx, align 8, !alias.scope !2179, !noalias !2181 store i64 %.sroa.0.0.i.i, ptr %0, align 8, !alias.scope !2183, !noalias !2184 %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0.i.i, ptr %.sroa.2.0..sroa_idx.i, align 8, !alias.scope !2183, !noalias !2184 + store i64 33, ptr %.sroa.2.0..sroa_idx.i, align 8, !alias.scope !2183, !noalias !2184 %.sroa.3.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0.i.i, ptr %.sroa.3.0..sroa_idx.i, align 8, !alias.scope !2183, !noalias !2184 ret void @@ -9062,7 +9058,6 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 br label %18 18: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i, %2 - %.sroa.5.sroa.0.0.i.i = phi i64 [ %14, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i ], [ undef, %2 ] %.sroa.5.sroa.4.0.i.i = phi ptr [ %17, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i ], [ undef, %2 ] %.sroa.0.0.i.i = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i ], [ 0, %2 ] %19 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -9083,7 +9078,7 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 store i64 %8, ptr %.sroa.52.0..sroa_idx, align 8, !alias.scope !2198, !noalias !2200 store i64 %.sroa.0.0.i.i, ptr %0, align 8, !alias.scope !2202, !noalias !2203 %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0.i.i, ptr %.sroa.2.0..sroa_idx.i, align 8, !alias.scope !2202, !noalias !2203 + store i64 33, ptr %.sroa.2.0..sroa_idx.i, align 8, !alias.scope !2202, !noalias !2203 %.sroa.3.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0.i.i, ptr %.sroa.3.0..sroa_idx.i, align 8, !alias.scope !2202, !noalias !2203 ret void @@ -9115,7 +9110,6 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 br label %18 18: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i, %2 - %.sroa.5.sroa.0.0.i.i = phi i64 [ %14, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i ], [ undef, %2 ] %.sroa.5.sroa.4.0.i.i = phi ptr [ %17, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i ], [ undef, %2 ] %.sroa.0.0.i.i = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i.i ], [ 0, %2 ] %19 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -9136,7 +9130,7 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 store i64 %8, ptr %.sroa.52.0..sroa_idx, align 8, !alias.scope !2217, !noalias !2219 store i64 %.sroa.0.0.i.i, ptr %0, align 8, !alias.scope !2221, !noalias !2222 %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0.i.i, ptr %.sroa.2.0..sroa_idx.i, align 8, !alias.scope !2221, !noalias !2222 + store i64 49, ptr %.sroa.2.0..sroa_idx.i, align 8, !alias.scope !2221, !noalias !2222 %.sroa.3.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0.i.i, ptr %.sroa.3.0..sroa_idx.i, align 8, !alias.scope !2221, !noalias !2222 ret void @@ -17508,14 +17502,13 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 br label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$15into_allocation17h64276af13516b27fE.llvm.11083375685992158394.exit" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$15into_allocation17h64276af13516b27fE.llvm.11083375685992158394.exit": ; preds = %3, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i - %.sroa.5.sroa.0.0.i = phi i64 [ %9, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i ], [ undef, %3 ] %.sroa.5.sroa.4.0.i = phi ptr [ %12, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i ], [ undef, %3 ] %.sroa.0.0.i = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i ], [ 0, %3 ] %13 = getelementptr inbounds nuw i8, ptr %0, i64 24 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef nonnull align 8 dereferenceable(40) %2, i64 40, i1 false) store i64 %.sroa.0.0.i, ptr %0, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0.i, ptr %.sroa.2.0..sroa_idx, align 8 + store i64 33, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0.i, ptr %.sroa.3.0..sroa_idx, align 8 ret void @@ -17542,14 +17535,13 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 br label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$15into_allocation17h607b39bbeb4835a0E.llvm.11083375685992158394.exit" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$15into_allocation17h607b39bbeb4835a0E.llvm.11083375685992158394.exit": ; preds = %3, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i - %.sroa.5.sroa.0.0.i = phi i64 [ %9, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i ], [ undef, %3 ] %.sroa.5.sroa.4.0.i = phi ptr [ %12, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i ], [ undef, %3 ] %.sroa.0.0.i = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i ], [ 0, %3 ] %13 = getelementptr inbounds nuw i8, ptr %0, i64 24 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef nonnull align 8 dereferenceable(40) %2, i64 40, i1 false) store i64 %.sroa.0.0.i, ptr %0, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0.i, ptr %.sroa.2.0..sroa_idx, align 8 + store i64 49, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0.i, ptr %.sroa.3.0..sroa_idx, align 8 ret void @@ -17576,14 +17568,13 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 br label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$15into_allocation17ha3f9275ef1f6eff5E.llvm.11083375685992158394.exit" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$15into_allocation17ha3f9275ef1f6eff5E.llvm.11083375685992158394.exit": ; preds = %3, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i - %.sroa.5.sroa.0.0.i = phi i64 [ %9, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i ], [ undef, %3 ] %.sroa.5.sroa.4.0.i = phi ptr [ %12, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i ], [ undef, %3 ] %.sroa.0.0.i = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i ], [ 0, %3 ] %13 = getelementptr inbounds nuw i8, ptr %0, i64 24 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef nonnull align 8 dereferenceable(40) %2, i64 40, i1 false) store i64 %.sroa.0.0.i, ptr %0, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0.i, ptr %.sroa.2.0..sroa_idx, align 8 + store i64 33, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0.i, ptr %.sroa.3.0..sroa_idx, align 8 ret void @@ -17610,14 +17601,13 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 br label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$15into_allocation17h5ba7472a8ef7f9c3E.llvm.11083375685992158394.exit" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$15into_allocation17h5ba7472a8ef7f9c3E.llvm.11083375685992158394.exit": ; preds = %3, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i - %.sroa.5.sroa.0.0.i = phi i64 [ %9, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i ], [ undef, %3 ] %.sroa.5.sroa.4.0.i = phi ptr [ %12, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i ], [ undef, %3 ] %.sroa.0.0.i = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i ], [ 0, %3 ] %13 = getelementptr inbounds nuw i8, ptr %0, i64 24 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef nonnull align 8 dereferenceable(40) %2, i64 40, i1 false) store i64 %.sroa.0.0.i, ptr %0, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0.i, ptr %.sroa.2.0..sroa_idx, align 8 + store i64 81, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0.i, ptr %.sroa.3.0..sroa_idx, align 8 ret void @@ -17644,14 +17634,13 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 br label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$15into_allocation17hf6499c251a9cb80fE.llvm.11083375685992158394.exit" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$15into_allocation17hf6499c251a9cb80fE.llvm.11083375685992158394.exit": ; preds = %3, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i - %.sroa.5.sroa.0.0.i = phi i64 [ %9, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i ], [ undef, %3 ] %.sroa.5.sroa.4.0.i = phi ptr [ %12, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i ], [ undef, %3 ] %.sroa.0.0.i = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i ], [ 0, %3 ] %13 = getelementptr inbounds nuw i8, ptr %0, i64 24 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef nonnull align 8 dereferenceable(40) %2, i64 40, i1 false) store i64 %.sroa.0.0.i, ptr %0, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0.i, ptr %.sroa.2.0..sroa_idx, align 8 + store i64 33, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0.i, ptr %.sroa.3.0..sroa_idx, align 8 ret void @@ -17678,14 +17667,13 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 br label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$15into_allocation17h5b498141224f8c06E.llvm.11083375685992158394.exit" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$15into_allocation17h5b498141224f8c06E.llvm.11083375685992158394.exit": ; preds = %3, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i - %.sroa.5.sroa.0.0.i = phi i64 [ %9, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i ], [ undef, %3 ] %.sroa.5.sroa.4.0.i = phi ptr [ %12, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i ], [ undef, %3 ] %.sroa.0.0.i = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit.i ], [ 0, %3 ] %13 = getelementptr inbounds nuw i8, ptr %0, i64 24 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef nonnull align 8 dereferenceable(40) %2, i64 40, i1 false) store i64 %.sroa.0.0.i, ptr %0, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0.i, ptr %.sroa.2.0..sroa_idx, align 8 + store i64 49, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0.i, ptr %.sroa.3.0..sroa_idx, align 8 ret void @@ -28248,12 +28236,11 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 br label %15 15: ; preds = %2, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit - %.sroa.5.sroa.0.0 = phi i64 [ %10, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit ], [ undef, %2 ] %.sroa.5.sroa.4.0 = phi ptr [ %14, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit ], [ undef, %2 ] %.sroa.0.0 = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit ], [ 0, %2 ] store i64 %.sroa.0.0, ptr %0, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0, ptr %.sroa.5.0..sroa_idx, align 8 + store i64 49, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx, align 8 ret void @@ -28280,12 +28267,11 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 br label %15 15: ; preds = %2, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit - %.sroa.5.sroa.0.0 = phi i64 [ %10, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit ], [ undef, %2 ] %.sroa.5.sroa.4.0 = phi ptr [ %14, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit ], [ undef, %2 ] %.sroa.0.0 = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit ], [ 0, %2 ] store i64 %.sroa.0.0, ptr %0, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0, ptr %.sroa.5.0..sroa_idx, align 8 + store i64 81, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx, align 8 ret void @@ -28312,12 +28298,11 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 br label %15 15: ; preds = %2, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit - %.sroa.5.sroa.0.0 = phi i64 [ %10, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit ], [ undef, %2 ] %.sroa.5.sroa.4.0 = phi ptr [ %14, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit ], [ undef, %2 ] %.sroa.0.0 = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit ], [ 0, %2 ] store i64 %.sroa.0.0, ptr %0, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0, ptr %.sroa.5.0..sroa_idx, align 8 + store i64 49, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx, align 8 ret void @@ -28344,12 +28329,11 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 br label %15 15: ; preds = %2, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit - %.sroa.5.sroa.0.0 = phi i64 [ %10, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit ], [ undef, %2 ] %.sroa.5.sroa.4.0 = phi ptr [ %14, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit ], [ undef, %2 ] %.sroa.0.0 = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit ], [ 0, %2 ] store i64 %.sroa.0.0, ptr %0, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0, ptr %.sroa.5.0..sroa_idx, align 8 + store i64 33, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx, align 8 ret void @@ -28376,12 +28360,11 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 br label %15 15: ; preds = %2, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit - %.sroa.5.sroa.0.0 = phi i64 [ %10, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit ], [ undef, %2 ] %.sroa.5.sroa.4.0 = phi ptr [ %14, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit ], [ undef, %2 ] %.sroa.0.0 = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit ], [ 0, %2 ] store i64 %.sroa.0.0, ptr %0, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0, ptr %.sroa.5.0..sroa_idx, align 8 + store i64 33, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx, align 8 ret void @@ -28408,12 +28391,11 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11 br label %15 15: ; preds = %2, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit - %.sroa.5.sroa.0.0 = phi i64 [ %10, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit ], [ undef, %2 ] %.sroa.5.sroa.4.0 = phi ptr [ %14, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit ], [ undef, %2 ] %.sroa.0.0 = phi i64 [ 16, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h49c0bfa79281e5d3E.llvm.11083375685992158394.exit ], [ 0, %2 ] store i64 %.sroa.0.0, ptr %0, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.5.sroa.0.0, ptr %.sroa.5.0..sroa_idx, align 8 + store i64 33, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.sroa.5.sroa.4.0, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx, align 8 ret void diff --git a/bench/tokenizers-rs/optimized/2w5yihn8z6xjncvn.ll b/bench/tokenizers-rs/optimized/2w5yihn8z6xjncvn.ll index 9dba4cf903d..d1bb3849292 100644 --- a/bench/tokenizers-rs/optimized/2w5yihn8z6xjncvn.ll +++ b/bench/tokenizers-rs/optimized/2w5yihn8z6xjncvn.ll @@ -1185,7 +1185,7 @@ define hidden void @_ZN4core5slice4sort10merge_sort17h3d75b919e7261d5fE(ptr noal to label %_ZN4core5slice4sort20provide_sorted_batch17h15feba4475106b3cE.exit unwind label %.loopexit78 .loopexit76: ; preds = %.lr.ph.i, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17hd4d606f0c4aa7651E.exit85.i", %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17hd4d606f0c4aa7651E.exit85.thread.i", %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17hd4d606f0c4aa7651E.exit.preheader.i" - %.sroa.0.0.i = phi i64 [ 2, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17hd4d606f0c4aa7651E.exit.preheader.i" ], [ %50, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17hd4d606f0c4aa7651E.exit85.thread.i" ], [ %.010.i, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17hd4d606f0c4aa7651E.exit85.i" ], [ %.010.i, %.lr.ph.i ] + %.sroa.0.0.i = phi i64 [ 2, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17hd4d606f0c4aa7651E.exit.preheader.i" ], [ 2, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17hd4d606f0c4aa7651E.exit85.thread.i" ], [ %.010.i, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17hd4d606f0c4aa7651E.exit85.i" ], [ %.010.i, %.lr.ph.i ] %128 = add i64 %.sroa.0.0.i, %.0110 %129 = icmp ugt i64 %.0110, %128 br i1 %129, label %.invoke, label %130 @@ -1272,7 +1272,7 @@ _ZN4core5slice4sort20provide_sorted_batch17h15feba4475106b3cE.exit: ; preds = %. store i64 %.pre-phi, ptr %162, align 8, !noalias !284 %163 = getelementptr inbounds nuw i8, ptr %162, i64 8 store i64 %.0110, ptr %163, align 8, !noalias !284 - %164 = add i64 %49, 1 + %164 = add nsw i64 %49, 1 store i64 %164, ptr %23, align 8 %165 = icmp ugt i64 %164, 1 br i1 %165, label %.lr.ph.preheader, label %._crit_edge @@ -1345,7 +1345,7 @@ _ZN4core5slice4sort20provide_sorted_batch17h15feba4475106b3cE.exit: ; preds = %. ._crit_edge: ; preds = %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h5eb97a3c613529cbE.exit", %178, %180, %187, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h161166cf348af9e1E.exit" %.pre.i140 = phi ptr [ %.pre.i141, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h161166cf348af9e1E.exit" ], [ %.pre, %187 ], [ %.pre, %180 ], [ %.pre, %178 ], [ %.pre, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h5eb97a3c613529cbE.exit" ] - %196 = phi i64 [ %164, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h161166cf348af9e1E.exit" ], [ %167, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h5eb97a3c613529cbE.exit" ], [ 2, %178 ], [ 3, %180 ], [ %166, %187 ] + %196 = phi i64 [ %164, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h161166cf348af9e1E.exit" ], [ 1, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h5eb97a3c613529cbE.exit" ], [ 2, %178 ], [ 2, %180 ], [ 2, %187 ] %197 = icmp ult i64 %.0.i, %1 br i1 %197, label %47, label %29 @@ -1827,7 +1827,7 @@ define hidden void @_ZN4core5slice4sort10merge_sort17h597f5dd679d1e6caE(ptr noal to label %_ZN4core5slice4sort20provide_sorted_batch17hfb333c775a79c47aE.exit unwind label %.loopexit75 .loopexit73: ; preds = %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17h80bf60d4792f984fE.exit67.i", %60, %.preheader.i - %.sroa.0.0.i = phi i64 [ 2, %.preheader.i ], [ %49, %60 ], [ %.07.i, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17h80bf60d4792f984fE.exit67.i" ] + %.sroa.0.0.i = phi i64 [ 2, %.preheader.i ], [ 2, %60 ], [ %.07.i, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17h80bf60d4792f984fE.exit67.i" ] %77 = add i64 %.sroa.0.0.i, %.0118 %78 = icmp ugt i64 %.0118, %77 br i1 %78, label %.invoke201, label %79 @@ -1912,7 +1912,7 @@ _ZN4core5slice4sort20provide_sorted_batch17hfb333c775a79c47aE.exit: ; preds = %. store i64 %.pre-phi, ptr %110, align 8, !noalias !344 %111 = getelementptr inbounds nuw i8, ptr %110, i64 8 store i64 %.0118, ptr %111, align 8, !noalias !344 - %112 = add i64 %48, 1 + %112 = add nsw i64 %48, 1 store i64 %112, ptr %23, align 8 %113 = icmp ugt i64 %112, 1 br i1 %113, label %.lr.ph.preheader, label %._crit_edge @@ -1985,7 +1985,7 @@ _ZN4core5slice4sort20provide_sorted_batch17hfb333c775a79c47aE.exit: ; preds = %. ._crit_edge: ; preds = %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h376b3dc413fb8bcaE.exit", %126, %128, %135, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h584553fda177d171E.exit" %.pre.i159 = phi ptr [ %.pre.i160, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h584553fda177d171E.exit" ], [ %.pre, %135 ], [ %.pre, %128 ], [ %.pre, %126 ], [ %.pre, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h376b3dc413fb8bcaE.exit" ] - %144 = phi i64 [ %112, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h584553fda177d171E.exit" ], [ %115, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h376b3dc413fb8bcaE.exit" ], [ 2, %126 ], [ 3, %128 ], [ %114, %135 ] + %144 = phi i64 [ %112, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h584553fda177d171E.exit" ], [ 1, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h376b3dc413fb8bcaE.exit" ], [ 2, %126 ], [ 2, %128 ], [ 2, %135 ] %145 = icmp ult i64 %.0.i, %1 br i1 %145, label %46, label %29 @@ -2572,7 +2572,7 @@ define hidden void @_ZN4core5slice4sort10merge_sort17h5e36d2a8676a6207E(ptr noal to label %_ZN4core5slice4sort20provide_sorted_batch17heff7e8241f249ab2E.exit unwind label %.loopexit87 .loopexit85: ; preds = %95, %102, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11sort_by_key28_$u7b$$u7b$closure$u7d$$u7d$17hffc6d5693afced08E.exit94.i", %105, %.preheader.i - %.sroa.0.0.i = phi i64 [ 2, %.preheader.i ], [ %umax22.i, %105 ], [ %.011.i, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11sort_by_key28_$u7b$$u7b$closure$u7d$$u7d$17hffc6d5693afced08E.exit94.i" ], [ %.011.i, %102 ], [ %.011.i, %95 ] + %.sroa.0.0.i = phi i64 [ 2, %.preheader.i ], [ 3, %105 ], [ %.011.i, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11sort_by_key28_$u7b$$u7b$closure$u7d$$u7d$17hffc6d5693afced08E.exit94.i" ], [ %.011.i, %102 ], [ %.011.i, %95 ] %122 = add i64 %.sroa.0.0.i, %.0116 %123 = icmp ugt i64 %.0116, %122 br i1 %123, label %.invoke, label %124 @@ -2664,7 +2664,7 @@ _ZN4core5slice4sort20provide_sorted_batch17heff7e8241f249ab2E.exit: ; preds = %. store i64 %.pre-phi, ptr %156, align 8, !noalias !522 %157 = getelementptr inbounds nuw i8, ptr %156, i64 8 store i64 %.0116, ptr %157, align 8, !noalias !522 - %158 = add i64 %49, 1 + %158 = add nsw i64 %49, 1 store i64 %158, ptr %23, align 8 %159 = icmp ugt i64 %158, 1 br i1 %159, label %.lr.ph.preheader, label %._crit_edge @@ -2737,7 +2737,7 @@ _ZN4core5slice4sort20provide_sorted_batch17heff7e8241f249ab2E.exit: ; preds = %. ._crit_edge: ; preds = %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17ha531eeafcc75eb4fE.exit", %172, %174, %181, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17he28b0c9ec87879bcE.exit" %.pre.i143 = phi ptr [ %.pre.i144, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17he28b0c9ec87879bcE.exit" ], [ %.pre, %181 ], [ %.pre, %174 ], [ %.pre, %172 ], [ %.pre, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17ha531eeafcc75eb4fE.exit" ] - %190 = phi i64 [ %158, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17he28b0c9ec87879bcE.exit" ], [ %161, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17ha531eeafcc75eb4fE.exit" ], [ 2, %172 ], [ %160, %174 ], [ %160, %181 ] + %190 = phi i64 [ %158, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17he28b0c9ec87879bcE.exit" ], [ 1, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17ha531eeafcc75eb4fE.exit" ], [ 2, %172 ], [ 2, %174 ], [ 2, %181 ] %191 = icmp ult i64 %.0.i, %1 br i1 %191, label %47, label %29 @@ -3319,7 +3319,7 @@ _ZN4core5slice4sort11insert_tail17he490d686e7e82154E.exit.i76: ; preds = %.threa br i1 %exitcond.not.i77, label %_ZN4core5slice4sort20provide_sorted_batch17h7521492bfe438881E.exit.loopexit, label %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h506cafaa7386b918E.exit.i69" .loopexit105: ; preds = %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17h98c046a8ba933bfaE.exit67.i", %60, %.preheader.i - %.sroa.0.0.i = phi i64 [ 2, %.preheader.i ], [ %50, %60 ], [ %.07.i, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17h98c046a8ba933bfaE.exit67.i" ] + %.sroa.0.0.i = phi i64 [ 2, %.preheader.i ], [ 2, %60 ], [ %.07.i, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17h98c046a8ba933bfaE.exit67.i" ] %96 = add i64 %.sroa.0.0.i, %.0161 %97 = icmp ugt i64 %.0161, %96 br i1 %97, label %.invoke275, label %98 @@ -3474,7 +3474,7 @@ _ZN4core5slice4sort20provide_sorted_batch17h7521492bfe438881E.exit: ; preds = %. ._crit_edge: ; preds = %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17hb152b0e321a15323E.exit", %146, %148, %155, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17hed932a72378d2e45E.exit" %.pre.i216 = phi ptr [ %.pre.i217, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17hed932a72378d2e45E.exit" ], [ %.pre220, %155 ], [ %.pre220, %148 ], [ %.pre220, %146 ], [ %.pre220, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17hb152b0e321a15323E.exit" ] - %164 = phi i64 [ %132, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17hed932a72378d2e45E.exit" ], [ %135, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17hb152b0e321a15323E.exit" ], [ 2, %146 ], [ 3, %148 ], [ %134, %155 ] + %164 = phi i64 [ %132, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17hed932a72378d2e45E.exit" ], [ 1, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17hb152b0e321a15323E.exit" ], [ 2, %146 ], [ 2, %148 ], [ 2, %155 ] %165 = icmp ult i64 %.0.i, %1 br i1 %165, label %47, label %29 @@ -4055,7 +4055,7 @@ _ZN4core5slice4sort11insert_tail17h72be7f8f69879ee5E.exit.i.i: ; preds = %.threa br i1 %exitcond.not.i.i, label %_ZN4core5slice4sort20provide_sorted_batch17haef1e97010b77e61E.exit.loopexit, label %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hb1b419610b2e3defE.exit.i.i" .loopexit74: ; preds = %.lr.ph7.i, %69, %.preheader.i - %.sroa.0.0.i = phi i64 [ 2, %.preheader.i ], [ %50, %69 ], [ %.06.i, %.lr.ph7.i ] + %.sroa.0.0.i = phi i64 [ 2, %.preheader.i ], [ 2, %69 ], [ %.06.i, %.lr.ph7.i ] %105 = add i64 %.sroa.0.0.i, %.0104 %106 = icmp ugt i64 %.0104, %105 br i1 %106, label %.invoke162, label %107 @@ -4217,7 +4217,7 @@ _ZN4core5slice4sort20provide_sorted_batch17haef1e97010b77e61E.exit: ; preds = %. ._crit_edge: ; preds = %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17ha9d47248826dcd4eE.exit", %156, %158, %165, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17hc067f2ba58830e92E.exit" %.pre.i133 = phi ptr [ %.pre.i134, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17hc067f2ba58830e92E.exit" ], [ %.pre137, %165 ], [ %.pre137, %158 ], [ %.pre137, %156 ], [ %.pre137, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17ha9d47248826dcd4eE.exit" ] - %174 = phi i64 [ %142, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17hc067f2ba58830e92E.exit" ], [ 1, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17ha9d47248826dcd4eE.exit" ], [ 2, %156 ], [ 3, %158 ], [ %144, %165 ] + %174 = phi i64 [ %142, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17hc067f2ba58830e92E.exit" ], [ 1, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17ha9d47248826dcd4eE.exit" ], [ 2, %156 ], [ 2, %158 ], [ 2, %165 ] %175 = icmp ult i64 %.0.i, %1 br i1 %175, label %47, label %29 @@ -4736,7 +4736,7 @@ _ZN4core5slice4sort11insert_tail17heaceab3f00444982E.exit.i.i: ; preds = %.threa br i1 %exitcond.not.i.i, label %_ZN4core5slice4sort20provide_sorted_batch17h229bbc855995680eE.exit.loopexit, label %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h2cdd1a774a69f2b0E.exit.i.i" .loopexit72: ; preds = %.lr.ph7.i, %64, %.preheader.i - %.sroa.0.0.i = phi i64 [ 2, %.preheader.i ], [ %51, %64 ], [ %.06.i, %.lr.ph7.i ] + %.sroa.0.0.i = phi i64 [ 2, %.preheader.i ], [ 2, %64 ], [ %.06.i, %.lr.ph7.i ] %97 = add i64 %.sroa.0.0.i, %.0102 %98 = icmp ugt i64 %.0102, %97 br i1 %98, label %.invoke160, label %99 @@ -4896,7 +4896,7 @@ _ZN4core5slice4sort20provide_sorted_batch17h229bbc855995680eE.exit: ; preds = %. ._crit_edge: ; preds = %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h98964b80901d73c9E.exit", %142, %144, %151, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h024ae3a804131c67E.exit" %.pre.i131 = phi ptr [ %.pre.i132, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h024ae3a804131c67E.exit" ], [ %.pre135, %151 ], [ %.pre135, %144 ], [ %.pre135, %142 ], [ %.pre135, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h98964b80901d73c9E.exit" ] - %160 = phi i64 [ %128, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h024ae3a804131c67E.exit" ], [ 1, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h98964b80901d73c9E.exit" ], [ 2, %142 ], [ 3, %144 ], [ %130, %151 ] + %160 = phi i64 [ %128, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h024ae3a804131c67E.exit" ], [ 1, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h98964b80901d73c9E.exit" ], [ 2, %142 ], [ 2, %144 ], [ 2, %151 ] %161 = icmp ult i64 %.0.i, %1 br i1 %161, label %48, label %30 @@ -5470,7 +5470,6 @@ _ZN4core5slice4sort11insert_tail17h3a050ad5b0167e62E.exit.i: ; preds = %.thread. br i1 %64, label %.lr.ph.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i, %.lr.ph.i.i38, %.lr.ph.i.preheader.i, %61 - %.131.lcssa31 = phi i64 [ 2, %61 ], [ %.131.lcssa, %.lr.ph.i.preheader.i ], [ %.131.lcssa, %.lr.ph.i.i38 ], [ %.131.lcssa, %.lr.ph.i ] %.sroa.5.0.lcssa.i.i36 = phi ptr [ %6, %61 ], [ %6, %.lr.ph.i.preheader.i ], [ %69, %.lr.ph.i.i38 ], [ %69, %.lr.ph.i ] store ptr %62, ptr %.sroa.5.0.lcssa.i.i36, align 8, !alias.scope !910, !noalias !911 %.sroa.5.0..sroa.5.0.sroa_idx.i.i37 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.lcssa.i.i36, i64 8 @@ -5495,7 +5494,7 @@ _ZN4core5slice4sort11insert_tail17h3a050ad5b0167e62E.exit.i: ; preds = %.thread. br i1 %exitcond.not.i.i, label %._crit_edge.i.i, label %.lr.ph.i.i38 _ZN4core5slice4sort26insertion_sort_shift_right17he237226f8bec458aE.exit: ; preds = %._crit_edge.i.i, %_ZN4core5slice4sort11insert_tail17h3a050ad5b0167e62E.exit.i, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hae790bd53931b56cE.exit" - %.131.lcssa30 = phi i64 [ %.131.lcssa31, %._crit_edge.i.i ], [ %.131.lcssa, %_ZN4core5slice4sort11insert_tail17h3a050ad5b0167e62E.exit.i ], [ 1, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hae790bd53931b56cE.exit" ] + %.131.lcssa30 = phi i64 [ 2, %._crit_edge.i.i ], [ %.131.lcssa, %_ZN4core5slice4sort11insert_tail17h3a050ad5b0167e62E.exit.i ], [ 1, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hae790bd53931b56cE.exit" ] %exitcond26.not = icmp eq i64 %21, 5 br i1 %exitcond26.not, label %.split13, label %.split } @@ -5674,7 +5673,6 @@ _ZN4core5slice4sort11insert_tail17h78c04ed6f04fc88cE.exit.i: ; preds = %.thread. br i1 %64, label %.lr.ph.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i, %.lr.ph.i.i38, %.lr.ph.i.preheader.i, %61 - %.131.lcssa31 = phi i64 [ 2, %61 ], [ %.131.lcssa, %.lr.ph.i.preheader.i ], [ %.131.lcssa, %.lr.ph.i.i38 ], [ %.131.lcssa, %.lr.ph.i ] %.sroa.5.0.lcssa.i.i36 = phi ptr [ %6, %61 ], [ %6, %.lr.ph.i.preheader.i ], [ %69, %.lr.ph.i.i38 ], [ %69, %.lr.ph.i ] store ptr %62, ptr %.sroa.5.0.lcssa.i.i36, align 8, !alias.scope !939, !noalias !940 %.sroa.5.0..sroa.5.0.sroa_idx.i.i37 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.lcssa.i.i36, i64 8 @@ -5699,7 +5697,7 @@ _ZN4core5slice4sort11insert_tail17h78c04ed6f04fc88cE.exit.i: ; preds = %.thread. br i1 %exitcond.not.i.i, label %._crit_edge.i.i, label %.lr.ph.i.i38 _ZN4core5slice4sort26insertion_sort_shift_right17hae4372aa486e6b63E.exit: ; preds = %._crit_edge.i.i, %_ZN4core5slice4sort11insert_tail17h78c04ed6f04fc88cE.exit.i, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hd5a7b8759bfa923fE.exit" - %.131.lcssa30 = phi i64 [ %.131.lcssa31, %._crit_edge.i.i ], [ %.131.lcssa, %_ZN4core5slice4sort11insert_tail17h78c04ed6f04fc88cE.exit.i ], [ 1, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hd5a7b8759bfa923fE.exit" ] + %.131.lcssa30 = phi i64 [ 2, %._crit_edge.i.i ], [ %.131.lcssa, %_ZN4core5slice4sort11insert_tail17h78c04ed6f04fc88cE.exit.i ], [ 1, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hd5a7b8759bfa923fE.exit" ] %exitcond26.not = icmp eq i64 %21, 5 br i1 %exitcond26.not, label %.split13, label %.split } @@ -5878,7 +5876,6 @@ _ZN4core5slice4sort11insert_tail17hce1529aeccb5d552E.exit.i: ; preds = %.thread. br i1 %64, label %.lr.ph.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i, %.lr.ph.i.i38, %.lr.ph.i.preheader.i, %61 - %.131.lcssa31 = phi i64 [ 2, %61 ], [ %.131.lcssa, %.lr.ph.i.preheader.i ], [ %.131.lcssa, %.lr.ph.i.i38 ], [ %.131.lcssa, %.lr.ph.i ] %.sroa.5.0.lcssa.i.i36 = phi ptr [ %6, %61 ], [ %6, %.lr.ph.i.preheader.i ], [ %69, %.lr.ph.i.i38 ], [ %69, %.lr.ph.i ] store ptr %62, ptr %.sroa.5.0.lcssa.i.i36, align 8, !alias.scope !968, !noalias !969 %.sroa.5.0..sroa.5.0.sroa_idx.i.i37 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.lcssa.i.i36, i64 8 @@ -5903,7 +5900,7 @@ _ZN4core5slice4sort11insert_tail17hce1529aeccb5d552E.exit.i: ; preds = %.thread. br i1 %exitcond.not.i.i, label %._crit_edge.i.i, label %.lr.ph.i.i38 _ZN4core5slice4sort26insertion_sort_shift_right17h51cd0bdd353b4882E.exit: ; preds = %._crit_edge.i.i, %_ZN4core5slice4sort11insert_tail17hce1529aeccb5d552E.exit.i, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17h6c34eb2e44faa572E.exit" - %.131.lcssa30 = phi i64 [ %.131.lcssa31, %._crit_edge.i.i ], [ %.131.lcssa, %_ZN4core5slice4sort11insert_tail17hce1529aeccb5d552E.exit.i ], [ 1, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17h6c34eb2e44faa572E.exit" ] + %.131.lcssa30 = phi i64 [ 2, %._crit_edge.i.i ], [ %.131.lcssa, %_ZN4core5slice4sort11insert_tail17hce1529aeccb5d552E.exit.i ], [ 1, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17h6c34eb2e44faa572E.exit" ] %exitcond26.not = icmp eq i64 %21, 5 br i1 %exitcond26.not, label %.split13, label %.split } @@ -6078,7 +6075,6 @@ _ZN4core5slice4sort11insert_tail17haa701b2f59a016fbE.exit.i: ; preds = %.thread. br i1 %60, label %.lr.ph.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i, %.lr.ph.i.i38, %.lr.ph.i.preheader.i, %57 - %.131.lcssa31 = phi i64 [ 2, %57 ], [ %.131.lcssa, %.lr.ph.i.preheader.i ], [ %.131.lcssa, %.lr.ph.i.i38 ], [ %.131.lcssa, %.lr.ph.i ] %.sroa.5.0.lcssa.i.i36 = phi ptr [ %4, %57 ], [ %4, %.lr.ph.i.preheader.i ], [ %64, %.lr.ph.i.i38 ], [ %64, %.lr.ph.i ] store ptr %.val35.i.i, ptr %.sroa.5.0.lcssa.i.i36, align 8, !alias.scope !997, !noalias !998 %.sroa.6.0..sroa.5.0.sroa_idx.i.i37 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.lcssa.i.i36, i64 8 @@ -6102,7 +6098,7 @@ _ZN4core5slice4sort11insert_tail17haa701b2f59a016fbE.exit.i: ; preds = %.thread. br i1 %exitcond.not.i.i, label %._crit_edge.i.i, label %.lr.ph.i.i38 _ZN4core5slice4sort26insertion_sort_shift_right17h81f506c426af19fcE.exit: ; preds = %._crit_edge.i.i, %_ZN4core5slice4sort11insert_tail17haa701b2f59a016fbE.exit.i, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17h6c34eb2e44faa572E.exit" - %.131.lcssa30 = phi i64 [ %.131.lcssa31, %._crit_edge.i.i ], [ %.131.lcssa, %_ZN4core5slice4sort11insert_tail17haa701b2f59a016fbE.exit.i ], [ 1, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17h6c34eb2e44faa572E.exit" ] + %.131.lcssa30 = phi i64 [ 2, %._crit_edge.i.i ], [ %.131.lcssa, %_ZN4core5slice4sort11insert_tail17haa701b2f59a016fbE.exit.i ], [ 1, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17h6c34eb2e44faa572E.exit" ] %exitcond26.not = icmp eq i64 %19, 5 br i1 %exitcond26.not, label %.split13, label %.split } diff --git a/bench/tokio-rs/optimized/akiz5wks12hp4ug.ll b/bench/tokio-rs/optimized/akiz5wks12hp4ug.ll index 6f1faa44fc4..5ab0d0e079f 100644 --- a/bench/tokio-rs/optimized/akiz5wks12hp4ug.ll +++ b/bench/tokio-rs/optimized/akiz5wks12hp4ug.ll @@ -10,12 +10,9 @@ define { i64, i64 } @"_ZN100_$LT$tokio_stream..stream_ext..timeout..Timeout$LT$S %switch = icmp ne i64 %0, 0 %3 = icmp sgt i64 %1, -1 %or.cond = select i1 %switch, i1 %3, i1 false - %4 = shl nuw i64 %1, 1 - %5 = or disjoint i64 %4, 1 - %.sroa.5.1 = select i1 %or.cond, i64 %5, i64 undef %.sroa.01.2 = zext i1 %or.cond to i64 %6 = insertvalue { i64, i64 } poison, i64 %.sroa.01.2, 0 - %7 = insertvalue { i64, i64 } %6, i64 %.sroa.5.1, 1 + %7 = insertvalue { i64, i64 } %6, i64 1, 1 ret { i64, i64 } %7 } diff --git a/bench/tokio-rs/optimized/r9h5225tdo2hxm6.ll b/bench/tokio-rs/optimized/r9h5225tdo2hxm6.ll index 26ae75fbe4b..35ff191deb3 100644 --- a/bench/tokio-rs/optimized/r9h5225tdo2hxm6.ll +++ b/bench/tokio-rs/optimized/r9h5225tdo2hxm6.ll @@ -3675,21 +3675,17 @@ define hidden { i64, i64 } @_ZN5tokio7runtime7context19set_current_task_id17h3b9 br label %5 5: ; preds = %2, %4 - %6 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN5tokio7runtime7context7CONTEXT7__getit3VAL17hb55c26beb3ee4bafE, i64 32), align 8, !range !59, !noalias !426, !noundef !10 - %7 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN5tokio7runtime7context7CONTEXT7__getit3VAL17hb55c26beb3ee4bafE, i64 40), align 8, !noalias !426 + %6 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN5tokio7runtime7context7CONTEXT7__getit3VAL17hb55c26beb3ee4bafE, i64 40), align 8, !noalias !426 store i64 %0, ptr getelementptr inbounds nuw (i8, ptr @_ZN5tokio7runtime7context7CONTEXT7__getit3VAL17hb55c26beb3ee4bafE, i64 32), align 8, !noalias !426 store i64 %1, ptr getelementptr inbounds nuw (i8, ptr @_ZN5tokio7runtime7context7CONTEXT7__getit3VAL17hb55c26beb3ee4bafE, i64 40), align 8, !noalias !426 br label %"_ZN3std6thread5local17LocalKey$LT$T$GT$8try_with17h5f587b64c3217e8bE.llvm.11424388141523703806.exit" "_ZN3std6thread5local17LocalKey$LT$T$GT$8try_with17h5f587b64c3217e8bE.llvm.11424388141523703806.exit": ; preds = %2, %5 - %.sroa.3.0.i = phi i64 [ %7, %5 ], [ undef, %2 ] - %.sroa.0.0.i = phi i64 [ %6, %5 ], [ 2, %2 ] - %8 = icmp eq i64 %.sroa.0.0.i, 2 - %spec.select = select i1 %8, i64 undef, i64 %.sroa.3.0.i - %spec.select3 = select i1 %8, i64 0, i64 %.sroa.0.0.i - %9 = insertvalue { i64, i64 } poison, i64 %spec.select3, 0 - %10 = insertvalue { i64, i64 } %9, i64 %spec.select, 1 - ret { i64, i64 } %10 + %.sroa.3.0.i = phi i64 [ %6, %5 ], [ undef, %2 ] + %.sroa.0.0.i = phi i64 [ 2, %5 ], [ 0, %2 ] + %10 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %11 = insertvalue { i64, i64 } %10, i64 %.sroa.3.0.i, 1 + ret { i64, i65 } %11 } ; Function Attrs: nonlazybind uwtable @@ -3762,17 +3758,14 @@ define { i8, i8 } @_ZN5tokio7runtime4coop4stop17habafc357e565a6a7E() unnamed_add br label %"_ZN3std6thread5local17LocalKey$LT$T$GT$8try_with17hfad8171f0259d39aE.llvm.11424388141523703806.exit" "_ZN3std6thread5local17LocalKey$LT$T$GT$8try_with17hfad8171f0259d39aE.llvm.11424388141523703806.exit": ; preds = %0, %2 - %3 = load i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN5tokio7runtime7context7CONTEXT7__getit3VAL17hb55c26beb3ee4bafE, i64 76), align 4, !range !86, !noalias !440, !noundef !10 - %4 = load i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN5tokio7runtime7context7CONTEXT7__getit3VAL17hb55c26beb3ee4bafE, i64 77), align 1, !noalias !440 + %3 = load i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN5tokio7runtime7context7CONTEXT7__getit3VAL17hb55c26beb3ee4bafE, i64 77), align 1, !noalias !440 store i8 0, ptr getelementptr inbounds nuw (i8, ptr @_ZN5tokio7runtime7context7CONTEXT7__getit3VAL17hb55c26beb3ee4bafE, i64 76), align 4, !noalias !440 br label %5 5: ; preds = %0, %"_ZN3std6thread5local17LocalKey$LT$T$GT$8try_with17hfad8171f0259d39aE.llvm.11424388141523703806.exit" - %6 = phi i8 [ %3, %"_ZN3std6thread5local17LocalKey$LT$T$GT$8try_with17hfad8171f0259d39aE.llvm.11424388141523703806.exit" ], [ 0, %0 ] - %7 = phi i8 [ %4, %"_ZN3std6thread5local17LocalKey$LT$T$GT$8try_with17hfad8171f0259d39aE.llvm.11424388141523703806.exit" ], [ undef, %0 ] - %8 = insertvalue { i8, i8 } poison, i8 %6, 0 - %9 = insertvalue { i8, i8 } %8, i8 %7, 1 - ret { i8, i8 } %9 + %6 = phi i8 [ %3, %"_ZN3std6thread5local17LocalKey$LT$T$GT$8try_with17hfad8171f0259d39aE.llvm.11424388141523703806.exit" ], [ undef, %0 ] + %6 = insertvalue { i8, i8 } { i8 0, i8 poison }, i8 %5, 1 + ret { i8, i8 } %6 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable diff --git a/bench/tree-sitter-rs/optimized/3akexam875pc2p1h.ll b/bench/tree-sitter-rs/optimized/3akexam875pc2p1h.ll index e22eba3c7a2..6c956a52870 100644 --- a/bench/tree-sitter-rs/optimized/3akexam875pc2p1h.ll +++ b/bench/tree-sitter-rs/optimized/3akexam875pc2p1h.ll @@ -2475,7 +2475,7 @@ define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hc19f7036509a br label %"_ZN10libloading2os4unix7Library4open28_$u7b$$u7b$closure$u7d$$u7d$17hdbeee70e30137753E.llvm.6082948530530484711.exit" "_ZN10libloading2os4unix7Library4open28_$u7b$$u7b$closure$u7d$$u7d$17hdbeee70e30137753E.llvm.6082948530530484711.exit": ; preds = %10, %11 - %.sroa.03.0 = phi i64 [ %4, %11 ], [ -9223372036854775807, %10 ] + %.sroa.03.0 = phi i64 [ -9223372036854775791, %11 ], [ -9223372036854775807, %10 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3), !noalias !600 store i64 %.sroa.03.0, ptr %0, align 8 %.sroa.55.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -3389,7 +3389,7 @@ define hidden void @_ZN5which9which_all17h8e9e19801d68a928E.llvm.608294853053048 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) invoke void @_ZN5which20build_binary_checker17hee3fca6b8a5f208bE(ptr noalias noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 captures(none) dereferenceable(24) %9) - to label %24 unwind label %22 + to label %22 unwind label %27 16: ; preds = %3 store i64 -9223372036854775808, ptr %11, align 8 @@ -3415,16 +3415,11 @@ define hidden void @_ZN5which9which_all17h8e9e19801d68a928E.llvm.608294853053048 br label %15 22: ; preds = %15 - %23 = landingpad { ptr, i32 } - cleanup - br label %29 - -24: ; preds = %15 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) invoke void @_ZN3std3env7_var_os17h0ce52d8c124bf7d4E(ptr noalias noundef nonnull sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) %8, ptr noalias noundef nonnull readonly align 1 @anon.136a0f00885e88ca4faf7725f88798c7.30, i64 noundef 4) to label %_ZN3std3env6var_os17h2b92ba0c3bb1c993E.exit unwind label %25 -_ZN3std3env6var_os17h2b92ba0c3bb1c993E.exit: ; preds = %24 +_ZN3std3env6var_os17h2b92ba0c3bb1c993E.exit: ; preds = %22 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %11, i64 24, i1 false) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) @@ -3437,11 +3432,11 @@ _ZN3std3env6var_os17h2b92ba0c3bb1c993E.exit: ; preds = %24 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) ret void -25: ; preds = %24 +25: ; preds = %22 %26 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr53drop_in_place$LT$which..checker..CompositeChecker$GT$17h077442d1b07a1eceE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %9) #24 - to label %29 unwind label %27 + to label %30 unwind label %27 27: ; preds = %29, %25 %28 = landingpad { ptr, i32 } @@ -3449,13 +3444,15 @@ _ZN3std3env6var_os17h2b92ba0c3bb1c993E.exit: ; preds = %24 call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #25 unreachable -29: ; preds = %25, %22 - %.pn.ph = phi { ptr, i32 } [ %23, %22 ], [ %26, %25 ] +29: ; preds = %15 + %28 = landingpad { ptr, i32 } + cleanup invoke fastcc void @"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$std..path..PathBuf$GT$$GT$17h430dbe4773754c14E"(ptr noalias noundef align 8 dereferenceable(24) %11) #24 to label %30 unwind label %27 -30: ; preds = %29 - resume { ptr, i32 } %.pn.ph +30: ; preds = %23, %29 + %.pn9 = phi { ptr, i32 } [ %28, %27 ], [ %24, %23 ] + resume { ptr, i32 } %.pn9 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/turborepo-rs/optimized/2nr6c96xnmy9oph33ghqn67cs.ll b/bench/turborepo-rs/optimized/2nr6c96xnmy9oph33ghqn67cs.ll index 470e17a0257..d0a846fb8b2 100644 --- a/bench/turborepo-rs/optimized/2nr6c96xnmy9oph33ghqn67cs.ll +++ b/bench/turborepo-rs/optimized/2nr6c96xnmy9oph33ghqn67cs.ll @@ -9483,7 +9483,7 @@ define void @_RINvXs_NtNtNtCs1LoaDTb72WA_4core4iter8adapters5chainINtB5_5ChainIB 8: ; preds = %2 invoke void @_RINvXs_NtNtNtCs1LoaDTb72WA_4core4iter8adapters5chainINtB5_5ChainINtNtNtNtCs68wO5nsWeTG_5alloc11collections9vec_deque9into_iter8IntoIterNtNtNtCseG2FYMysgNb_3wax5token8variance17InvariantFragmentEB10_ENtNtNtB9_6traits8iterator8Iterator4folduQNCINvNvB3b_8for_each4callB29_NCINvMsi_NtB19_3vecINtB4s_3VecB29_E14extend_trustedIBP_BO_B10_EE0E0EB2f_(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(64) %5, ptr noalias noundef nonnull align 8 dereferenceable(24) %1) - to label %9 unwind label %.body + to label %9 unwind label %36 9: ; preds = %8, %2 %10 = load i64, ptr %0, align 8, !range !17, !noundef !8 @@ -9562,11 +9562,14 @@ _RINvXs0_NtNtNtCs68wO5nsWeTG_5alloc11collections9vec_deque9into_iterINtB6_8IntoI 35: ; preds = %38, %_RINvXs0_NtNtNtCs68wO5nsWeTG_5alloc11collections9vec_deque9into_iterINtB6_8IntoIterNtNtNtCseG2FYMysgNb_3wax5token8variance17InvariantFragmentENtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator4folduNCINvNvB2f_8for_each4callB1i_NCINvMsi_NtBc_3vecINtB3S_3VecB1i_E14extend_trustedINtNtNtB2l_8adapters5chain5ChainIB4y_B13_B13_EB13_EE0E0EB1o_.exit ret void -36: ; preds = %43 +36: ; preds = %8 %37 = landingpad { ptr, i32 } - filter [0 x ptr] zeroinitializer - tail call void @_ZN4core9panicking16panic_in_cleanup17h1bb225b6f4388944E() #26 - unreachable + cleanup + %.val18 = load ptr, ptr %1, align 8, !nonnull !8, !align !16, !noundef !8 + %37 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %.val19 = load i64, ptr %37, align 8, !noundef !8 + store i64 %.val19, ptr %.val18, align 8 + br label %.body 38: ; preds = %9 %.val = load ptr, ptr %1, align 8, !nonnull !8, !align !16, !noundef !8 @@ -9575,24 +9578,9 @@ _RINvXs0_NtNtNtCs68wO5nsWeTG_5alloc11collections9vec_deque9into_iterINtB6_8IntoI store i64 %.val16, ptr %.val, align 8 br label %35 -.body.thread: ; preds = %13, %18, %22, %.body, %43 - %.pn3039 = phi { ptr, i32 } [ %40, %.body ], [ %40, %43 ], [ %14, %13 ], [ %19, %18 ], [ %19, %22 ] +.body.thread: ; preds = %13, %18, %22, %36 + %.pn3039 = phi { ptr, i32 } [ %36, %36 ], [ %19, %22 ], [ %19, %18 ], [ %14, %13 ] resume { ptr, i32 } %.pn3039 - -.body: ; preds = %8 - %40 = landingpad { ptr, i32 } - cleanup - %.val17 = load ptr, ptr %1, align 8, !nonnull !8, !align !16, !noundef !8 - %41 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val18 = load i64, ptr %41, align 8, !noundef !8 - store i64 %.val18, ptr %.val17, align 8 - %.pre = load i64, ptr %0, align 8, !range !17 - %42 = icmp eq i64 %.pre, -9223372036854775808 - br i1 %42, label %.body.thread, label %43 - -43: ; preds = %.body - invoke void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtNtNtCs68wO5nsWeTG_5alloc11collections9vec_deque9into_iter8IntoIterNtNtNtCseG2FYMysgNb_3wax5token8variance17InvariantFragmentEEB1V_(ptr noalias noundef nonnull align 8 dereferenceable(32) %0) #25 - to label %.body.thread unwind label %36 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/turborepo-rs/optimized/43mxnq5l18zt2wz7kzlj45feg.ll b/bench/turborepo-rs/optimized/43mxnq5l18zt2wz7kzlj45feg.ll index f6f238c1424..10b18d7a18b 100644 --- a/bench/turborepo-rs/optimized/43mxnq5l18zt2wz7kzlj45feg.ll +++ b/bench/turborepo-rs/optimized/43mxnq5l18zt2wz7kzlj45feg.ll @@ -1926,7 +1926,7 @@ _RNvXs2_NtCs8mTrBI1stz4_15turborepo_vt1005attrsNtB5_5ColorNtNtCs1LoaDTb72WA_4cor %.sroa.013.0.ph.be = phi i16 [ %spec.select, %488 ], [ %.sroa.013.1, %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtCs68wO5nsWeTG_5alloc6string6StringECs8mTrBI1stz4_15turborepo_vt100.exit165 ], [ %.sroa.013.1, %306 ] %.sroa.515.0.ph.be = phi ptr [ %spec.select78, %488 ], [ %.sroa.515.1, %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtCs68wO5nsWeTG_5alloc6string6StringECs8mTrBI1stz4_15turborepo_vt100.exit165 ], [ %.sroa.515.1, %306 ] %.sroa.020.2.ph.be = phi i16 [ %.sroa.020.4, %488 ], [ %5, %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtCs68wO5nsWeTG_5alloc6string6StringECs8mTrBI1stz4_15turborepo_vt100.exit165 ], [ %.sroa.020.4, %306 ] - %.sroa.15.2.ph.be = phi i16 [ %.sroa.15.4, %488 ], [ %590, %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtCs68wO5nsWeTG_5alloc6string6StringECs8mTrBI1stz4_15turborepo_vt100.exit165 ], [ %.sroa.15.4, %306 ] + %.sroa.15.2.ph.be = phi i16 [ %.sroa.15.4, %488 ], [ %., %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtCs68wO5nsWeTG_5alloc6string6StringECs8mTrBI1stz4_15turborepo_vt100.exit165 ], [ %.sroa.15.4, %306 ] br label %.outer 489: ; preds = %485 @@ -1936,7 +1936,6 @@ _RNvXs2_NtCs8mTrBI1stz4_15turborepo_vt1005attrsNtB5_5ColorNtNtCs1LoaDTb72WA_4cor br i1 %.sroa.042.0, label %515, label %_RNvXsi_NtCs8mTrBI1stz4_15turborepo_vt1004termNtB5_10MoveFromToNtB5_8BufWrite9write_buf.exit155 _RNvXsi_NtCs8mTrBI1stz4_15turborepo_vt1004termNtB5_10MoveFromToNtB5_8BufWrite9write_buf.exit155: ; preds = %.critedge.i151, %536, %534, %_RNvXs0_NtCs8mTrBI1stz4_15turborepo_vt1004termNtB5_4CrlfNtB5_8BufWrite9write_buf.exit.i153, %_RNvMNtCs8mTrBI1stz4_15turborepo_vt1003rowNtB2_3Row4cols.llvm.4083057626633162689.exit157, %489 - %.sroa.15.6 = phi i16 [ %303, %489 ], [ 0, %_RNvMNtCs8mTrBI1stz4_15turborepo_vt1003rowNtB2_3Row4cols.llvm.4083057626633162689.exit157 ], [ 0, %_RNvXs0_NtCs8mTrBI1stz4_15turborepo_vt1004termNtB5_4CrlfNtB5_8BufWrite9write_buf.exit.i153 ], [ %303, %534 ], [ %303, %536 ], [ %303, %.critedge.i151 ] call void @llvm.experimental.noalias.scope.decl(metadata !266) call void @llvm.experimental.noalias.scope.decl(metadata !269) %492 = load i8, ptr %22, align 1, !range !153, !alias.scope !266, !noalias !269, !noundef !7 @@ -2166,7 +2165,6 @@ _RNvXs2_NtCs8mTrBI1stz4_15turborepo_vt1005attrsNtB5_5ColorNtNtCs1LoaDTb72WA_4cor unreachable _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtCs68wO5nsWeTG_5alloc6string6StringECs8mTrBI1stz4_15turborepo_vt100.exit165: ; preds = %580 - %590 = add i16 %., %.sroa.15.6 call void @_RNvXs2_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechENtNtNtCs1LoaDTb72WA_4core3ops4drop4Drop4dropCs6X0o37rPFRg_11compact_str(ptr noalias noundef nonnull align 8 dereferenceable(24) %18) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) br label %.outer.backedge @@ -3703,7 +3701,7 @@ _RNvXs2_NtCs8mTrBI1stz4_15turborepo_vt1005attrsNtB5_5ColorNtNtCs1LoaDTb72WA_4cor .outer: ; preds = %687, %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtCs68wO5nsWeTG_5alloc6string6StringECs8mTrBI1stz4_15turborepo_vt100.exit239, %504 %.sroa.533.2 = phi ptr [ %.sroa.533.1, %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtCs68wO5nsWeTG_5alloc6string6StringECs8mTrBI1stz4_15turborepo_vt100.exit239 ], [ %.sroa.533.1, %504 ], [ %spec.select, %687 ] %.sroa.031.2 = phi i16 [ %.sroa.031.1, %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtCs68wO5nsWeTG_5alloc6string6StringECs8mTrBI1stz4_15turborepo_vt100.exit239 ], [ %.sroa.031.1, %504 ], [ %spec.select99, %687 ] - %.sroa.16.6 = phi i16 [ %789, %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtCs68wO5nsWeTG_5alloc6string6StringECs8mTrBI1stz4_15turborepo_vt100.exit239 ], [ %.sroa.16.5, %504 ], [ %.sroa.16.5, %687 ] + %.sroa.16.6 = phi i16 [ %.98, %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtCs68wO5nsWeTG_5alloc6string6StringECs8mTrBI1stz4_15turborepo_vt100.exit239 ], [ %.sroa.16.5, %504 ], [ %.sroa.16.5, %687 ] %.sroa.0.5 = phi i16 [ %6, %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtCs68wO5nsWeTG_5alloc6string6StringECs8mTrBI1stz4_15turborepo_vt100.exit239 ], [ %.sroa.0.4, %504 ], [ %.sroa.0.4, %687 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.7250) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.13) @@ -3744,7 +3742,6 @@ _RNvXs2_NtCs8mTrBI1stz4_15turborepo_vt1005attrsNtB5_5ColorNtNtCs1LoaDTb72WA_4cor br i1 %.sroa.046.0, label %714, label %_RNvXsi_NtCs8mTrBI1stz4_15turborepo_vt1004termNtB5_10MoveFromToNtB5_8BufWrite9write_buf.exit228 _RNvXsi_NtCs8mTrBI1stz4_15turborepo_vt1004termNtB5_10MoveFromToNtB5_8BufWrite9write_buf.exit228: ; preds = %.critedge.i224, %735, %733, %_RNvXs0_NtCs8mTrBI1stz4_15turborepo_vt1004termNtB5_4CrlfNtB5_8BufWrite9write_buf.exit.i226, %_RNvMNtCs8mTrBI1stz4_15turborepo_vt1003rowNtB2_3Row4cols.llvm.4083057626633162689.exit230, %688 - %.sroa.16.7 = phi i16 [ %501, %688 ], [ 0, %_RNvMNtCs8mTrBI1stz4_15turborepo_vt1003rowNtB2_3Row4cols.llvm.4083057626633162689.exit230 ], [ 0, %_RNvXs0_NtCs8mTrBI1stz4_15turborepo_vt1004termNtB5_4CrlfNtB5_8BufWrite9write_buf.exit.i226 ], [ %501, %733 ], [ %501, %735 ], [ %501, %.critedge.i224 ] call void @llvm.experimental.noalias.scope.decl(metadata !483) call void @llvm.experimental.noalias.scope.decl(metadata !486) %691 = load i8, ptr %11, align 1, !range !153, !alias.scope !483, !noalias !486, !noundef !7 @@ -3974,7 +3971,6 @@ _RNvXs2_NtCs8mTrBI1stz4_15turborepo_vt1005attrsNtB5_5ColorNtNtCs1LoaDTb72WA_4cor unreachable _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtCs68wO5nsWeTG_5alloc6string6StringECs8mTrBI1stz4_15turborepo_vt100.exit239: ; preds = %779 - %789 = add i16 %.98, %.sroa.16.7 call void @_RNvXs2_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechENtNtNtCs1LoaDTb72WA_4core3ops4drop4Drop4dropCs6X0o37rPFRg_11compact_str(ptr noalias noundef nonnull align 8 dereferenceable(24) %26) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) br label %.outer diff --git a/bench/vcpkg/optimized/commands.list.ll b/bench/vcpkg/optimized/commands.list.ll index dc6a5e3fbe7..1260199b41f 100644 --- a/bench/vcpkg/optimized/commands.list.ll +++ b/bench/vcpkg/optimized/commands.list.ll @@ -3634,7 +3634,7 @@ define linkonce_odr dso_local void @_ZN3fmt3v116detail5valueINS0_7contextEE17for br label %_ZN3fmt3v116detail16native_formatterINS0_17basic_string_viewIcEEcLNS1_4typeE13EE5parseINS0_26basic_format_parse_contextIcEEEEPKcRT_.exit _ZN3fmt3v116detail16native_formatterINS0_17basic_string_viewIcEEcLNS1_4typeE13EE5parseINS0_26basic_format_parse_contextIcEEEEPKcRT_.exit: ; preds = %3, %16, %19 - %21 = phi i64 [ %.pre7, %19 ], [ %13, %16 ], [ 0, %3 ] + %21 = phi i64 [ %.pre7, %19 ], [ 0, %16 ], [ 0, %3 ] %22 = phi ptr [ %.pre, %19 ], [ %11, %16 ], [ %11, %3 ] %.0.i = phi ptr [ %20, %19 ], [ %11, %16 ], [ %11, %3 ] %23 = ptrtoint ptr %.0.i to i64 @@ -6992,7 +6992,7 @@ define linkonce_odr dso_local void @_ZN3fmt3v116detail5valueINS0_7contextEE17for br label %_ZN3fmt3v119formatterINS0_9join_viewIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISA_SaISA_EEEESG_cEEcvE5parseINS0_26basic_format_parse_contextIcEEEEPKcRT_.exit _ZN3fmt3v119formatterINS0_9join_viewIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISA_SaISA_EEEESG_cEEcvE5parseINS0_26basic_format_parse_contextIcEEEEPKcRT_.exit: ; preds = %3, %16, %19 - %21 = phi i64 [ %.pre6, %19 ], [ %13, %16 ], [ 0, %3 ] + %21 = phi i64 [ %.pre6, %19 ], [ 0, %16 ], [ 0, %3 ] %22 = phi ptr [ %.pre, %19 ], [ %11, %16 ], [ %11, %3 ] %.0.i.i = phi ptr [ %20, %19 ], [ %11, %16 ], [ %11, %3 ] %23 = ptrtoint ptr %.0.i.i to i64 @@ -7983,14 +7983,14 @@ _ZSt13move_backwardIPPKN5vcpkg15StatusParagraphES4_ET0_T_S6_S5_.exit: ; preds = br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPPKN5vcpkg15StatusParagraphESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPPKN5vcpkg15StatusParagraphESt6vectorIS5_SaIS5_EEEEmEvRT_T0_.exit: ; preds = %17 - %32 = getelementptr inbounds i8, ptr %2, i64 %19 + %32 = getelementptr inbounds nuw i8, ptr %2, i64 8 %.not.i.i.i.i.i.i.i.i = icmp eq ptr %3, %32 br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPKN5vcpkg15StatusParagraphESt6vectorIS5_SaIS5_EEEES6_S5_ET0_T_SC_SB_RSaIT1_E.exit, label %33 33: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPPKN5vcpkg15StatusParagraphESt6vectorIS5_SaIS5_EEEEmEvRT_T0_.exit %34 = ptrtoint ptr %32 to i64 %35 = sub i64 %6, %34 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %13, ptr align 8 %32, i64 %35, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %13, ptr nonnull align 8 %32, i64 %35, i1 false) %.pre = load ptr, ptr %12, align 8, !tbaa !75 br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPKN5vcpkg15StatusParagraphESt6vectorIS5_SaIS5_EEEES6_S5_ET0_T_SC_SB_RSaIT1_E.exit @@ -8011,11 +8011,8 @@ _ZSt22__uninitialized_move_aIPPKN5vcpkg15StatusParagraphES4_SaIS3_EET0_T_S7_S6_R %40 = phi ptr [ %38, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPKN5vcpkg15StatusParagraphESt6vectorIS5_SaIS5_EEEES6_S5_ET0_T_SC_SB_RSaIT1_E.exit ], [ %.pre74, %39 ] %41 = getelementptr inbounds nuw i8, ptr %40, i64 %19 store ptr %41, ptr %12, align 8, !tbaa !75 - %.not.i.i.i.i.i54 = icmp eq ptr %13, %1 - br i1 %.not.i.i.i.i.i54, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPPKN5vcpkg15StatusParagraphESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit, label %42 - -42: ; preds = %_ZSt22__uninitialized_move_aIPPKN5vcpkg15StatusParagraphES4_SaIS3_EET0_T_S7_S6_RT1_.exit53 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %2, i64 %19, i1 false) + %42 = load i64, ptr %2, align 8 + store i64 %42, ptr %1, align 8 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPPKN5vcpkg15StatusParagraphESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit 43: ; preds = %5 @@ -8085,7 +8082,7 @@ _ZNSt12_Vector_baseIPKN5vcpkg15StatusParagraphESaIS3_EE13_M_deallocateEPS3_m.exi store ptr %71, ptr %10, align 8, !tbaa !39 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPPKN5vcpkg15StatusParagraphESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit -_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPPKN5vcpkg15StatusParagraphESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit: ; preds = %42, %_ZSt22__uninitialized_move_aIPPKN5vcpkg15StatusParagraphES4_SaIS3_EET0_T_S7_S6_RT1_.exit53, %_ZSt13move_backwardIPPKN5vcpkg15StatusParagraphES4_ET0_T_S6_S5_.exit, %_ZNSt12_Vector_baseIPKN5vcpkg15StatusParagraphESaIS3_EE13_M_deallocateEPS3_m.exit, %4 +_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPPKN5vcpkg15StatusParagraphESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit: ; preds = %_ZSt22__uninitialized_move_aIPPKN5vcpkg15StatusParagraphES4_SaIS3_EET0_T_S7_S6_RT1_.exit53, %_ZSt13move_backwardIPPKN5vcpkg15StatusParagraphES4_ET0_T_S6_S5_.exit, %_ZNSt12_Vector_baseIPKN5vcpkg15StatusParagraphESaIS3_EE13_M_deallocateEPS3_m.exit, %4 ret void } diff --git a/bench/verilator/optimized/V3AstNodes.ll b/bench/verilator/optimized/V3AstNodes.ll index 9a105d406a6..00d7a5b9276 100644 --- a/bench/verilator/optimized/V3AstNodes.ll +++ b/bench/verilator/optimized/V3AstNodes.ll @@ -130103,34 +130103,25 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZN7AstNode9privateIsI14AstStr } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable -define dso_local noundef i32 @_ZNK12AstNodeDType9widthPow2Ev(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(162) %0) local_unnamed_addr #9 align 2 { +define dso_local noundef range(i32 0, 2) i32 @_ZNK12AstNodeDType9widthPow2Ev(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(162) %0) local_unnamed_addr #9 align 2 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 152 %3 = load i32, ptr %2, align 8, !tbaa !421 %4 = zext i32 %3 to i64 br label %5 -5: ; preds = %1, %14 - %.0710 = phi i32 [ 30, %1 ], [ %15, %14 ] - %6 = zext nneg i32 %.0710 to i64 - %7 = shl nuw i64 1, %6 - %8 = icmp ult i64 %7, %4 - br i1 %8, label %9, label %14 - -9: ; preds = %5 - %10 = add nuw nsw i32 %.0710, 1 - %11 = zext nneg i32 %10 to i64 - %12 = shl nuw i64 1, %11 - %13 = trunc i64 %12 to i32 - br label %.loopexit - -14: ; preds = %5 - %15 = add nsw i32 %.0710, -1 - %16 = icmp eq i32 %.0710, 0 - br i1 %16, label %.loopexit, label %5, !llvm.loop !644 - -.loopexit: ; preds = %14, %9 - %spec.select = phi i32 [ %13, %9 ], [ 1, %14 ] - ret i32 %spec.select +5: ; preds = %5, %1 + %.0710 = phi i32 [ 30, %1 ], [ %10, %5 ] + %6 = icmp slt i32 %.0710, 0 + %7 = zext nneg i32 %.07 to i64 + %8 = shl nuw i64 1, %7 + %9 = icmp ult i64 %8, %4 + %or.cond = select i1 %6, i1 true, i1 %9 + %10 = add nsw i32 %.07, -1 + br i1 %or.cond, label %11, label %5, !llvm.loop !644 + +.loopexit: ; preds = %5 + %.07.lobit = lshr i32 %.0710, 31 + ret i32 %.07.lobit } ; Function Attrs: mustprogress uwtable diff --git a/bench/wasmedge/optimized/vinode.ll b/bench/wasmedge/optimized/vinode.ll index b8c1ac69924..f3c0076739e 100644 --- a/bench/wasmedge/optimized/vinode.ll +++ b/bench/wasmedge/optimized/vinode.ll @@ -5591,14 +5591,14 @@ _ZSt4copyIPKcN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.ex br label %_ZSt4copyIPKcN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.exit59 _ZSt7advanceIPKcmEvRT_T0_.exit: ; preds = %16 - %29 = getelementptr inbounds i8, ptr %2, i64 %18 + %29 = getelementptr inbounds nuw i8, ptr %2, i64 1 %.not.i.i.i.i.i.i.i.i = icmp eq ptr %3, %29 br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPKcPccET0_T_S4_S3_RSaIT1_E.exit, label %30 30: ; preds = %_ZSt7advanceIPKcmEvRT_T0_.exit %31 = ptrtoint ptr %29 to i64 %32 = sub i64 %6, %31 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %12, ptr align 1 %29, i64 %32, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %12, ptr nonnull align 1 %29, i64 %32, i1 false) %.pre = load ptr, ptr %11, align 8 br label %_ZSt22__uninitialized_copy_aIPKcPccET0_T_S4_S3_RSaIT1_E.exit @@ -5619,11 +5619,8 @@ _ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit57: ; preds = %_ZSt2 %37 = phi ptr [ %35, %_ZSt22__uninitialized_copy_aIPKcPccET0_T_S4_S3_RSaIT1_E.exit ], [ %.pre76, %36 ] %38 = getelementptr inbounds i8, ptr %37, i64 %18 store ptr %38, ptr %11, align 8 - %.not.i.i.i.i.i58 = icmp eq ptr %12, %1 - br i1 %.not.i.i.i.i.i58, label %_ZSt4copyIPKcN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.exit59, label %39 - -39: ; preds = %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit57 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr align 1 %2, i64 %18, i1 false) + %39 = load i8, ptr %2, align 1 + store i8 %39, ptr %1, align 1 br label %_ZSt4copyIPKcN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.exit59 40: ; preds = %5 @@ -5691,7 +5688,7 @@ _ZNSt12_Vector_baseIcSaIcEE13_M_deallocateEPcm.exit: ; preds = %62, %64 store ptr %66, ptr %9, align 8 br label %_ZSt4copyIPKcN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.exit59 -_ZSt4copyIPKcN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.exit59: ; preds = %39, %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit57, %_ZNSt12_Vector_baseIcSaIcEE13_M_deallocateEPcm.exit, %_ZSt4copyIPKcN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.exit, %4 +_ZSt4copyIPKcN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.exit59: ; preds = %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit57, %_ZNSt12_Vector_baseIcSaIcEE13_M_deallocateEPcm.exit, %_ZSt4copyIPKcN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.exit, %4 ret void } diff --git a/bench/wolfssl/optimized/chacha20_poly1305.ll b/bench/wolfssl/optimized/chacha20_poly1305.ll index 4d0a349a66c..7a6d988da76 100644 --- a/bench/wolfssl/optimized/chacha20_poly1305.ll +++ b/bench/wolfssl/optimized/chacha20_poly1305.ll @@ -324,7 +324,6 @@ define i32 @wc_ChaCha20Poly1305_Final(ptr noundef %0, ptr noundef %1) local_unna %31 = trunc i64 %30 to i32 %32 = sub i32 0, %31 %33 = and i32 %32, 7 - %34 = sub nuw nsw i32 184, %33 %.not24.i = icmp eq i32 %33, 0 br i1 %.not24.i, label %.lr.ph29.i.preheader, label %.lr.ph.i @@ -341,30 +340,17 @@ define i32 @wc_ChaCha20Poly1305_Final(ptr noundef %0, ptr noundef %1) local_unna %.not.i = icmp eq i32 %35, 0 br i1 %.not.i, label %.lr.ph29.i.preheader, label %.lr.ph.i, !llvm.loop !14 -.preheader.i: ; preds = %.lr.ph29.i - %.not2232.i = icmp eq i32 %38, 0 - br i1 %.not2232.i, label %ForceZero.exit, label %.lr.ph35.i - .lr.ph29.i: ; preds = %.lr.ph29.i.preheader, %.lr.ph29.i %.01528.i = phi ptr [ %37, %.lr.ph29.i ], [ %.01528.i.ph, %.lr.ph29.i.preheader ] - %.01827.i = phi i32 [ %38, %.lr.ph29.i ], [ %34, %.lr.ph29.i.preheader ] + %.01827.i = phi i32 [ %38, %.lr.ph29.i ], [ 184, %.lr.ph29.i.preheader ] %37 = getelementptr inbounds nuw i8, ptr %.01528.i, i64 8 store volatile i64 0, ptr %.01528.i, align 8, !tbaa !16 %38 = add nsw i32 %.01827.i, -8 - %39 = icmp ugt i32 %38, 7 - br i1 %39, label %.lr.ph29.i, label %.preheader.i, !llvm.loop !17 - -.lr.ph35.i: ; preds = %.preheader.i, %.lr.ph35.i - %.11734.i = phi ptr [ %41, %.lr.ph35.i ], [ %37, %.preheader.i ] - %.11933.i = phi i32 [ %40, %.lr.ph35.i ], [ %38, %.preheader.i ] - %40 = add i32 %.11933.i, -1 - %41 = getelementptr inbounds nuw i8, ptr %.11734.i, i64 1 - store volatile i8 0, ptr %.11734.i, align 1, !tbaa !13 - %.not22.i = icmp eq i32 %40, 0 - br i1 %.not22.i, label %ForceZero.exit, label %.lr.ph35.i, !llvm.loop !18 - -ForceZero.exit: ; preds = %.lr.ph35.i, %.preheader.i, %5, %2 - %.020 = phi i32 [ -173, %2 ], [ -192, %5 ], [ %.3, %.preheader.i ], [ %.3, %.lr.ph35.i ] + %39 = icmp eq i32 %38, 0 + br i1 %39, label %.lr.ph35.i, label %.lr.ph29.i, !llvm.loop !17 + +.lr.ph35.i: ; preds = %.lr.ph29.i, %5, %2 + %.11734.i = phi i32 [ -173, %2 ], [ -192, %5 ], [ %.3, %.lr.ph29.i ] ret i32 %.020 } @@ -458,7 +444,7 @@ define i32 @wc_ChaCha20Poly1305_Decrypt(ptr noundef %0, ptr noundef %1, ptr noun %53 = or i32 %.010.i.i, %52 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, 16 - br i1 %exitcond.not.i.i, label %wc_ChaCha20Poly1305_CheckTag.exit, label %.preheader.i, !llvm.loop !19 + br i1 %exitcond.not.i.i, label %wc_ChaCha20Poly1305_CheckTag.exit, label %.preheader.i, !llvm.loop !18 wc_ChaCha20Poly1305_CheckTag.exit: ; preds = %.preheader.i %.not.i = icmp eq i32 %53, 0 @@ -494,7 +480,7 @@ define range(i32 -213, 1) i32 @wc_ChaCha20Poly1305_CheckTag(ptr noundef readonly %11 = or i32 %.010.i, %10 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 16 - br i1 %exitcond.not.i, label %ConstantCompare.exit, label %.preheader, !llvm.loop !19 + br i1 %exitcond.not.i, label %ConstantCompare.exit, label %.preheader, !llvm.loop !18 ConstantCompare.exit: ; preds = %.preheader %.not = icmp eq i32 %11, 0 @@ -550,4 +536,3 @@ attributes #5 = { nounwind } !16 = !{!10, !10, i64 0} !17 = distinct !{!17, !15} !18 = distinct !{!18, !15} -!19 = distinct !{!19, !15} diff --git a/bench/xgboost/optimized/context.ll b/bench/xgboost/optimized/context.ll index 0c66aa6d213..6ab2c5a1d81 100644 --- a/bench/xgboost/optimized/context.ll +++ b/bench/xgboost/optimized/context.ll @@ -5720,8 +5720,8 @@ _ZSt4findIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_ 705: ; preds = %702 %.pre264.i = load i8, ptr %700, align 4, !tbaa !143, !range !118 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #16 %706 = trunc nuw i8 %.pre264.i to i1 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #16 br i1 %706, label %._ZNRSt8optionalIiE5valueEv.exit.i_crit_edge, label %707 ._ZNRSt8optionalIiE5valueEv.exit.i_crit_edge: ; preds = %705 @@ -10358,7 +10358,6 @@ define linkonce_odr void @_ZNSt8__detail8_ScannerIcE18_M_eat_escape_ecmaEv(ptr n br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %8, %17, %22 - %.0.i = phi i8 [ %16, %8 ], [ %21, %22 ], [ 0, %17 ] %23 = getelementptr inbounds nuw i8, ptr %0, i64 152 %24 = load ptr, ptr %23, align 8, !tbaa !333 %25 = load i8, ptr %24, align 1, !tbaa !327 @@ -10368,7 +10367,7 @@ _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %8, %17, %22 .lr.ph.i: ; preds = %_ZNKSt5ctypeIcE6narrowEcc.exit, %28 %26 = phi i8 [ %30, %28 ], [ %25, %_ZNKSt5ctypeIcE6narrowEcc.exit ] %.010.i = phi ptr [ %29, %28 ], [ %24, %_ZNKSt5ctypeIcE6narrowEcc.exit ] - %27 = icmp eq i8 %26, %.0.i + %27 = icmp eq i8 %26, %16 br i1 %27, label %31, label %28 28: ; preds = %.lr.ph.i @@ -10675,8 +10674,7 @@ define linkonce_odr void @_ZNSt8__detail8_ScannerIcE19_M_eat_escape_posixEv(ptr br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %8, %18, %23 - %.0.i = phi i8 [ %17, %8 ], [ %22, %23 ], [ 0, %18 ] - %24 = sext i8 %.0.i to i32 + %24 = sext i8 %17 to i32 %25 = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %11, i32 noundef %24) #16 %.not = icmp eq ptr %25, null br i1 %.not, label %28, label %26 @@ -10779,7 +10777,6 @@ define linkonce_odr void @_ZNSt8__detail8_ScannerIcE17_M_eat_escape_awkEv(ptr no br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %1, %12, %17 - %.0.i = phi i8 [ %11, %1 ], [ %16, %17 ], [ 0, %12 ] %18 = getelementptr inbounds nuw i8, ptr %0, i64 152 %19 = load ptr, ptr %18, align 8, !tbaa !333 %20 = load i8, ptr %19, align 1, !tbaa !327 @@ -10789,7 +10786,7 @@ _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %1, %12, %17 .lr.ph.i: ; preds = %_ZNKSt5ctypeIcE6narrowEcc.exit, %23 %21 = phi i8 [ %25, %23 ], [ %20, %_ZNKSt5ctypeIcE6narrowEcc.exit ] %.010.i = phi ptr [ %24, %23 ], [ %19, %_ZNKSt5ctypeIcE6narrowEcc.exit ] - %22 = icmp eq i8 %21, %.0.i + %22 = icmp eq i8 %21, %11 br i1 %22, label %26, label %23 23: ; preds = %.lr.ph.i @@ -10933,7 +10930,7 @@ define linkonce_odr void @_ZNSt8__detail8_ScannerIcE14_M_scan_normalEv(ptr nound br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %1, %14, %19 - %.0.i = phi i8 [ %13, %1 ], [ %18, %19 ], [ 32, %14 ] + %.0.i = phi i8 [ %13, %1 ], [ 32, %19 ], [ 32, %14 ] %20 = sext i8 %.0.i to i32 %21 = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %7, i32 noundef %20) #16 %22 = icmp eq ptr %21, null @@ -11187,7 +11184,6 @@ _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %1, %14, %19 br label %_ZNKSt5ctypeIcE6narrowEcc.exit40 _ZNKSt5ctypeIcE6narrowEcc.exit40: ; preds = %131, %137, %142 - %.0.i38 = phi i8 [ %136, %131 ], [ %141, %142 ], [ 0, %137 ] %143 = load i8, ptr %0, align 8, !tbaa !324 %.not3144 = icmp eq i8 %143, 0 br i1 %.not3144, label %.critedge, label %.lr.ph @@ -11195,7 +11191,7 @@ _ZNKSt5ctypeIcE6narrowEcc.exit40: ; preds = %131, %137, %142 .lr.ph: ; preds = %_ZNKSt5ctypeIcE6narrowEcc.exit40, %150 %144 = phi i8 [ %152, %150 ], [ %143, %_ZNKSt5ctypeIcE6narrowEcc.exit40 ] %.02145 = phi ptr [ %151, %150 ], [ %0, %_ZNKSt5ctypeIcE6narrowEcc.exit40 ] - %145 = icmp eq i8 %144, %.0.i38 + %145 = icmp eq i8 %144, %136 br i1 %145, label %146, label %150 146: ; preds = %.lr.ph @@ -19320,7 +19316,6 @@ _ZNKSt5ctypeIcE7tolowerEc.exit: ; preds = %10 br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %24, %.noexc, %_ZNKSt5ctypeIcE7tolowerEc.exit - %.0.i = phi i8 [ %18, %_ZNKSt5ctypeIcE7tolowerEc.exit ], [ %23, %24 ], [ 0, %.noexc ] %25 = load i64, ptr %8, align 8, !tbaa !12 %26 = add i64 %25, 1 %27 = load ptr, ptr %5, align 8, !tbaa !4 @@ -19349,7 +19344,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; pr 35: ; preds = %.noexc29, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i %36 = phi ptr [ %.pre.i.i, %.noexc29 ], [ %27, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i ] %37 = getelementptr inbounds nuw i8, ptr %36, i64 %25 - store i8 %.0.i, ptr %37, align 1, !tbaa !13 + store i8 %18, ptr %37, align 1, !tbaa !13 store i64 %26, ptr %8, align 8, !tbaa !12 %38 = load ptr, ptr %5, align 8, !tbaa !4 %39 = getelementptr inbounds nuw i8, ptr %38, i64 %26 @@ -28184,7 +28179,6 @@ define linkonce_odr void @_ZNKSt7__cxx1112regex_traitsIcE18lookup_collatenameIPK br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %20, %.noexc, %10 - %.0.i = phi i8 [ %14, %10 ], [ %19, %20 ], [ 0, %.noexc ] %21 = load i64, ptr %8, align 8, !tbaa !12 %22 = add i64 %21, 1 %23 = load ptr, ptr %5, align 8, !tbaa !4 @@ -28213,7 +28207,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; pr 31: ; preds = %.noexc29, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i %32 = phi ptr [ %.pre.i.i, %.noexc29 ], [ %23, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i ] %33 = getelementptr inbounds nuw i8, ptr %32, i64 %21 - store i8 %.0.i, ptr %33, align 1, !tbaa !13 + store i8 %14, ptr %33, align 1, !tbaa !13 store i64 %22, ptr %8, align 8, !tbaa !12 %34 = load ptr, ptr %5, align 8, !tbaa !4 %35 = getelementptr inbounds nuw i8, ptr %34, i64 %22 diff --git a/bench/xgboost/optimized/input_split_base.ll b/bench/xgboost/optimized/input_split_base.ll index fca2b32c3cd..52bc5e85ff2 100644 --- a/bench/xgboost/optimized/input_split_base.ll +++ b/bench/xgboost/optimized/input_split_base.ll @@ -3696,6 +3696,7 @@ _ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt _ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE3strEv.exit._ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit144_crit_edge: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE3strEv.exit.thread, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE3strEv.exit %425 = phi i64 [ 0, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE3strEv.exit.thread ], [ %.pre316, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE3strEv.exit ] %.pre317 = load ptr, ptr %24, align 8, !tbaa !33 + %426 = icmp ult i64 %425, 16 br label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit144 426: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE3strEv.exit @@ -3710,15 +3711,14 @@ _ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt br label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit144 _ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit144: ; preds = %.thread, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE3strEv.exit._ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit144_crit_edge, %426, %428 - %431 = phi i64 [ %425, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE3strEv.exit._ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit144_crit_edge ], [ %.pre316, %428 ], [ 0, %426 ], [ 0, %.thread ] + %431 = phi i1 [ %426, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE3strEv.exit._ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit144_crit_edge ], [ true, %428 ], [ true, %426 ], [ true, %.thread ] %432 = phi ptr [ %.pre317, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE3strEv.exit._ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit144_crit_edge ], [ %.pre318, %428 ], [ %.pre318, %426 ], [ %.pre318321, %.thread ] %433 = phi i1 [ false, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE3strEv.exit._ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit144_crit_edge ], [ %430, %428 ], [ true, %426 ], [ true, %.thread ] %434 = icmp eq ptr %432, %53 br i1 %434, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i146, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i145 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i146: ; preds = %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit144 - %435 = icmp ult i64 %431, 16 - call void @llvm.assume(i1 %435) + call void @llvm.assume(i1 %431) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit147 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i145: ; preds = %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit144 @@ -10229,7 +10229,6 @@ define linkonce_odr void @_ZNSt8__detail8_ScannerIcE18_M_eat_escape_ecmaEv(ptr n br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %8, %17, %22 - %.0.i = phi i8 [ %16, %8 ], [ %21, %22 ], [ 0, %17 ] %23 = getelementptr inbounds nuw i8, ptr %0, i64 152 %24 = load ptr, ptr %23, align 8, !tbaa !329 %25 = load i8, ptr %24, align 1, !tbaa !323 @@ -10239,7 +10238,7 @@ _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %8, %17, %22 .lr.ph.i: ; preds = %_ZNKSt5ctypeIcE6narrowEcc.exit, %28 %26 = phi i8 [ %30, %28 ], [ %25, %_ZNKSt5ctypeIcE6narrowEcc.exit ] %.010.i = phi ptr [ %29, %28 ], [ %24, %_ZNKSt5ctypeIcE6narrowEcc.exit ] - %27 = icmp eq i8 %26, %.0.i + %27 = icmp eq i8 %26, %16 br i1 %27, label %31, label %28 28: ; preds = %.lr.ph.i @@ -10546,8 +10545,7 @@ define linkonce_odr void @_ZNSt8__detail8_ScannerIcE19_M_eat_escape_posixEv(ptr br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %8, %18, %23 - %.0.i = phi i8 [ %17, %8 ], [ %22, %23 ], [ 0, %18 ] - %24 = sext i8 %.0.i to i32 + %24 = sext i8 %17 to i32 %25 = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %11, i32 noundef %24) #16 %.not = icmp eq ptr %25, null br i1 %.not, label %28, label %26 @@ -10648,7 +10646,6 @@ define linkonce_odr void @_ZNSt8__detail8_ScannerIcE17_M_eat_escape_awkEv(ptr no br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %1, %12, %17 - %.0.i = phi i8 [ %11, %1 ], [ %16, %17 ], [ 0, %12 ] %18 = getelementptr inbounds nuw i8, ptr %0, i64 152 %19 = load ptr, ptr %18, align 8, !tbaa !329 %20 = load i8, ptr %19, align 1, !tbaa !323 @@ -10658,7 +10655,7 @@ _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %1, %12, %17 .lr.ph.i: ; preds = %_ZNKSt5ctypeIcE6narrowEcc.exit, %23 %21 = phi i8 [ %25, %23 ], [ %20, %_ZNKSt5ctypeIcE6narrowEcc.exit ] %.010.i = phi ptr [ %24, %23 ], [ %19, %_ZNKSt5ctypeIcE6narrowEcc.exit ] - %22 = icmp eq i8 %21, %.0.i + %22 = icmp eq i8 %21, %11 br i1 %22, label %26, label %23 23: ; preds = %.lr.ph.i @@ -10802,7 +10799,7 @@ define linkonce_odr void @_ZNSt8__detail8_ScannerIcE14_M_scan_normalEv(ptr nound br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %1, %14, %19 - %.0.i = phi i8 [ %13, %1 ], [ %18, %19 ], [ 32, %14 ] + %.0.i = phi i8 [ %13, %1 ], [ 32, %19 ], [ 32, %14 ] %20 = sext i8 %.0.i to i32 %21 = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %7, i32 noundef %20) #16 %22 = icmp eq ptr %21, null @@ -11056,7 +11053,6 @@ _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %1, %14, %19 br label %_ZNKSt5ctypeIcE6narrowEcc.exit40 _ZNKSt5ctypeIcE6narrowEcc.exit40: ; preds = %131, %137, %142 - %.0.i38 = phi i8 [ %136, %131 ], [ %141, %142 ], [ 0, %137 ] %143 = load i8, ptr %0, align 8, !tbaa !320 %.not3144 = icmp eq i8 %143, 0 br i1 %.not3144, label %.critedge, label %.lr.ph @@ -11064,7 +11060,7 @@ _ZNKSt5ctypeIcE6narrowEcc.exit40: ; preds = %131, %137, %142 .lr.ph: ; preds = %_ZNKSt5ctypeIcE6narrowEcc.exit40, %150 %144 = phi i8 [ %152, %150 ], [ %143, %_ZNKSt5ctypeIcE6narrowEcc.exit40 ] %.02145 = phi ptr [ %151, %150 ], [ %0, %_ZNKSt5ctypeIcE6narrowEcc.exit40 ] - %145 = icmp eq i8 %144, %.0.i38 + %145 = icmp eq i8 %144, %136 br i1 %145, label %146, label %150 146: ; preds = %.lr.ph @@ -19093,7 +19089,6 @@ _ZNKSt5ctypeIcE7tolowerEc.exit: ; preds = %10 br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %24, %.noexc, %_ZNKSt5ctypeIcE7tolowerEc.exit - %.0.i = phi i8 [ %18, %_ZNKSt5ctypeIcE7tolowerEc.exit ], [ %23, %24 ], [ 0, %.noexc ] %25 = load i64, ptr %8, align 8, !tbaa !35 %26 = add i64 %25, 1 %27 = load ptr, ptr %5, align 8, !tbaa !33 @@ -19122,7 +19117,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; pr 35: ; preds = %.noexc29, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i %36 = phi ptr [ %.pre.i.i, %.noexc29 ], [ %27, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i ] %37 = getelementptr inbounds nuw i8, ptr %36, i64 %25 - store i8 %.0.i, ptr %37, align 1, !tbaa !34 + store i8 %18, ptr %37, align 1, !tbaa !34 store i64 %26, ptr %8, align 8, !tbaa !35 %38 = load ptr, ptr %5, align 8, !tbaa !33 %39 = getelementptr inbounds nuw i8, ptr %38, i64 %26 @@ -28076,7 +28071,6 @@ define linkonce_odr void @_ZNKSt7__cxx1112regex_traitsIcE18lookup_collatenameIPK br label %_ZNKSt5ctypeIcE6narrowEcc.exit _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %20, %.noexc, %10 - %.0.i = phi i8 [ %14, %10 ], [ %19, %20 ], [ 0, %.noexc ] %21 = load i64, ptr %8, align 8, !tbaa !35 %22 = add i64 %21, 1 %23 = load ptr, ptr %5, align 8, !tbaa !33 @@ -28105,7 +28099,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; pr 31: ; preds = %.noexc29, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i %32 = phi ptr [ %.pre.i.i, %.noexc29 ], [ %23, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i ] %33 = getelementptr inbounds nuw i8, ptr %32, i64 %21 - store i8 %.0.i, ptr %33, align 1, !tbaa !34 + store i8 %14, ptr %33, align 1, !tbaa !34 store i64 %22, ptr %8, align 8, !tbaa !35 %34 = load ptr, ptr %5, align 8, !tbaa !33 %35 = getelementptr inbounds nuw i8, ptr %34, i64 %22 diff --git a/bench/yalantinglibs/optimized/test_messages_proto2.pb.ll b/bench/yalantinglibs/optimized/test_messages_proto2.pb.ll index e2811945696..3641e6d935d 100644 --- a/bench/yalantinglibs/optimized/test_messages_proto2.pb.ll +++ b/bench/yalantinglibs/optimized/test_messages_proto2.pb.ll @@ -47806,10 +47806,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit: ; preds = %if.the br label %if.end if.end: ; preds = %for.end620, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit - %conv.i1345.pre-phi = phi i32 [ %conv624, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit ], [ 0, %for.end620 ] %total_size.25 = phi i64 [ %add627, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit ], [ %total_size.24.lcssa, %for.end620 ] %_packed_int32_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2280 - store atomic i32 %conv.i1345.pre-phi, ptr %_packed_int32_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_int32_cached_byte_size_ monotonic, align 8 %add629 = add i64 %total_size.25, %call622 %packed_int64_ = getelementptr inbounds nuw i8, ptr %this, i64 2288 %call631 = call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite9Int64SizeERKNS0_13RepeatedFieldIlEE(ptr noundef nonnull align 8 dereferenceable(16) %packed_int64_) @@ -47838,10 +47837,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1355: ; preds = %if br label %if.end638 if.end638: ; preds = %if.end, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1355 - %conv.i1356.pre-phi = phi i32 [ %conv634, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1355 ], [ 0, %if.end ] %total_size.26 = phi i64 [ %add637, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1355 ], [ %add629, %if.end ] %_packed_int64_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2304 - store atomic i32 %conv.i1356.pre-phi, ptr %_packed_int64_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_int64_cached_byte_size_ monotonic, align 8 %add641 = add i64 %total_size.26, %call631 %packed_uint32_ = getelementptr inbounds nuw i8, ptr %this, i64 2312 %call643 = call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite10UInt32SizeERKNS0_13RepeatedFieldIjEE(ptr noundef nonnull align 8 dereferenceable(16) %packed_uint32_) @@ -47870,10 +47868,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1366: ; preds = %if br label %if.end650 if.end650: ; preds = %if.end638, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1366 - %conv.i1367.pre-phi = phi i32 [ %conv646, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1366 ], [ 0, %if.end638 ] %total_size.27 = phi i64 [ %add649, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1366 ], [ %add641, %if.end638 ] %_packed_uint32_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2328 - store atomic i32 %conv.i1367.pre-phi, ptr %_packed_uint32_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_uint32_cached_byte_size_ monotonic, align 8 %add653 = add i64 %total_size.27, %call643 %packed_uint64_ = getelementptr inbounds nuw i8, ptr %this, i64 2336 %call655 = call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite10UInt64SizeERKNS0_13RepeatedFieldImEE(ptr noundef nonnull align 8 dereferenceable(16) %packed_uint64_) @@ -47902,10 +47899,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1377: ; preds = %if br label %if.end662 if.end662: ; preds = %if.end650, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1377 - %conv.i1378.pre-phi = phi i32 [ %conv658, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1377 ], [ 0, %if.end650 ] %total_size.28 = phi i64 [ %add661, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1377 ], [ %add653, %if.end650 ] %_packed_uint64_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2352 - store atomic i32 %conv.i1378.pre-phi, ptr %_packed_uint64_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_uint64_cached_byte_size_ monotonic, align 8 %add665 = add i64 %total_size.28, %call655 %packed_sint32_ = getelementptr inbounds nuw i8, ptr %this, i64 2360 %call667 = call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite10SInt32SizeERKNS0_13RepeatedFieldIiEE(ptr noundef nonnull align 8 dereferenceable(16) %packed_sint32_) @@ -47934,10 +47930,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1388: ; preds = %if br label %if.end674 if.end674: ; preds = %if.end662, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1388 - %conv.i1389.pre-phi = phi i32 [ %conv670, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1388 ], [ 0, %if.end662 ] %total_size.29 = phi i64 [ %add673, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1388 ], [ %add665, %if.end662 ] %_packed_sint32_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2376 - store atomic i32 %conv.i1389.pre-phi, ptr %_packed_sint32_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_sint32_cached_byte_size_ monotonic, align 8 %add677 = add i64 %total_size.29, %call667 %packed_sint64_ = getelementptr inbounds nuw i8, ptr %this, i64 2384 %call679 = call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite10SInt64SizeERKNS0_13RepeatedFieldIlEE(ptr noundef nonnull align 8 dereferenceable(16) %packed_sint64_) @@ -47966,10 +47961,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1399: ; preds = %if br label %if.end686 if.end686: ; preds = %if.end674, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1399 - %conv.i1400.pre-phi = phi i32 [ %conv682, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1399 ], [ 0, %if.end674 ] %total_size.30 = phi i64 [ %add685, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1399 ], [ %add677, %if.end674 ] %_packed_sint64_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2400 - store atomic i32 %conv.i1400.pre-phi, ptr %_packed_sint64_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_sint64_cached_byte_size_ monotonic, align 8 %add689 = add i64 %total_size.30, %call679 %packed_fixed32_.i = getelementptr inbounds nuw i8, ptr %this, i64 2408 %call.i1401 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %packed_fixed32_.i) @@ -48000,10 +47994,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1411: ; preds = %if br label %if.end701 if.end701: ; preds = %if.end686, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1411 - %conv.i1412.pre-phi = phi i32 [ %conv697, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1411 ], [ 0, %if.end686 ] %total_size.31 = phi i64 [ %add700, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1411 ], [ %add689, %if.end686 ] %_packed_fixed32_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2424 - store atomic i32 %conv.i1412.pre-phi, ptr %_packed_fixed32_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_fixed32_cached_byte_size_ monotonic, align 8 %add704 = add i64 %total_size.31, %mul694 %packed_fixed64_.i = getelementptr inbounds nuw i8, ptr %this, i64 2432 %call.i1413 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldImE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %packed_fixed64_.i) @@ -48034,10 +48027,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1423: ; preds = %if br label %if.end716 if.end716: ; preds = %if.end701, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1423 - %conv.i1424.pre-phi = phi i32 [ %conv712, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1423 ], [ 0, %if.end701 ] %total_size.32 = phi i64 [ %add715, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1423 ], [ %add704, %if.end701 ] %_packed_fixed64_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2448 - store atomic i32 %conv.i1424.pre-phi, ptr %_packed_fixed64_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_fixed64_cached_byte_size_ monotonic, align 8 %add719 = add i64 %total_size.32, %mul709 %packed_sfixed32_.i = getelementptr inbounds nuw i8, ptr %this, i64 2456 %call.i1425 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIiE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %packed_sfixed32_.i) @@ -48068,10 +48060,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1435: ; preds = %if br label %if.end731 if.end731: ; preds = %if.end716, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1435 - %conv.i1436.pre-phi = phi i32 [ %conv727, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1435 ], [ 0, %if.end716 ] %total_size.33 = phi i64 [ %add730, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1435 ], [ %add719, %if.end716 ] %_packed_sfixed32_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2472 - store atomic i32 %conv.i1436.pre-phi, ptr %_packed_sfixed32_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_sfixed32_cached_byte_size_ monotonic, align 8 %add734 = add i64 %total_size.33, %mul724 %packed_sfixed64_.i = getelementptr inbounds nuw i8, ptr %this, i64 2480 %call.i1437 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIlE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %packed_sfixed64_.i) @@ -48102,10 +48093,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1447: ; preds = %if br label %if.end746 if.end746: ; preds = %if.end731, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1447 - %conv.i1448.pre-phi = phi i32 [ %conv742, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1447 ], [ 0, %if.end731 ] %total_size.34 = phi i64 [ %add745, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1447 ], [ %add734, %if.end731 ] %_packed_sfixed64_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2496 - store atomic i32 %conv.i1448.pre-phi, ptr %_packed_sfixed64_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_sfixed64_cached_byte_size_ monotonic, align 8 %add749 = add i64 %total_size.34, %mul739 %packed_float_.i = getelementptr inbounds nuw i8, ptr %this, i64 2504 %call.i1450 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIfE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %packed_float_.i) @@ -48136,10 +48126,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1460: ; preds = %if br label %if.end761 if.end761: ; preds = %if.end746, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1460 - %conv.i1461.pre-phi = phi i32 [ %conv757, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1460 ], [ 0, %if.end746 ] %total_size.35 = phi i64 [ %add760, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1460 ], [ %add749, %if.end746 ] %_packed_float_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2520 - store atomic i32 %conv.i1461.pre-phi, ptr %_packed_float_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_float_cached_byte_size_ monotonic, align 8 %add764 = add i64 %total_size.35, %mul754 %packed_double_.i = getelementptr inbounds nuw i8, ptr %this, i64 2528 %call.i1462 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %packed_double_.i) @@ -48170,10 +48159,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1472: ; preds = %if br label %if.end776 if.end776: ; preds = %if.end761, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1472 - %conv.i1473.pre-phi = phi i32 [ %conv772, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1472 ], [ 0, %if.end761 ] %total_size.36 = phi i64 [ %add775, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1472 ], [ %add764, %if.end761 ] %_packed_double_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2544 - store atomic i32 %conv.i1473.pre-phi, ptr %_packed_double_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_double_cached_byte_size_ monotonic, align 8 %add779 = add i64 %total_size.36, %mul769 %packed_bool_.i = getelementptr inbounds nuw i8, ptr %this, i64 2552 %call.i1474 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIbE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %packed_bool_.i) @@ -48262,11 +48250,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1508: ; preds = %if br label %if.end814 if.end814: ; preds = %if.end791, %for.end807, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1508 - %data_size795.0.lcssa2504 = phi i64 [ %add804, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1508 ], [ 0, %for.end807 ], [ 0, %if.end791 ] - %conv.i1509.pre-phi = phi i32 [ %conv810, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1508 ], [ 0, %for.end807 ], [ 0, %if.end791 ] %total_size.38 = phi i64 [ %add813, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1508 ], [ %add794, %for.end807 ], [ %add794, %if.end791 ] %_packed_nested_enum_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2592 - store atomic i32 %conv.i1509.pre-phi, ptr %_packed_nested_enum_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_nested_enum_cached_byte_size_ monotonic, align 8 %unpacked_int32_ = getelementptr inbounds nuw i8, ptr %this, i64 2600 %call819 = call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite9Int32SizeERKNS0_13RepeatedFieldIiEE(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_int32_) %call.i1510 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIiE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_int32_) @@ -48379,8 +48365,7 @@ for.end942: ; preds = %_ZN6google8protobuf %reass.add2269 = add nuw nsw i64 %conv883, %conv863 %reass.add2270 = add nuw nsw i64 %reass.add2269, %conv903 %reass.mul2271 = shl nuw nsw i64 %reass.add2270, 2 - %add879 = add i64 %total_size.38, %data_size795.0.lcssa2504 - %add888 = add i64 %add879, %call819 + %add879 = add i64 %total_size.38, %call819 %add889 = add i64 %add888, %call826 %add898 = add i64 %add889, %call833 %add899 = add i64 %add898, %call840 diff --git a/bench/yalantinglibs/optimized/test_messages_proto3.pb.ll b/bench/yalantinglibs/optimized/test_messages_proto3.pb.ll index d7c1ccb6031..4f5a18e31a4 100644 --- a/bench/yalantinglibs/optimized/test_messages_proto3.pb.ll +++ b/bench/yalantinglibs/optimized/test_messages_proto3.pb.ll @@ -51531,10 +51531,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit461: ; preds = %if. br label %if.end14 if.end14: ; preds = %if.end, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit461 - %conv.i462.pre-phi = phi i32 [ %conv10, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit461 ], [ 0, %if.end ] %total_size.1 = phi i64 [ %add13, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit461 ], [ %add5, %if.end ] %_repeated_int64_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 56 - store atomic i32 %conv.i462.pre-phi, ptr %_repeated_int64_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_repeated_int64_cached_byte_size_ monotonic, align 8 %add17 = add i64 %total_size.1, %call7 %repeated_uint32_ = getelementptr inbounds nuw i8, ptr %this, i64 64 %call19 = tail call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite10UInt32SizeERKNS0_13RepeatedFieldIjEE(ptr noundef nonnull align 8 dereferenceable(16) %repeated_uint32_) @@ -51563,10 +51562,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit472: ; preds = %if. br label %if.end26 if.end26: ; preds = %if.end14, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit472 - %conv.i473.pre-phi = phi i32 [ %conv22, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit472 ], [ 0, %if.end14 ] %total_size.2 = phi i64 [ %add25, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit472 ], [ %add17, %if.end14 ] %_repeated_uint32_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 80 - store atomic i32 %conv.i473.pre-phi, ptr %_repeated_uint32_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_repeated_uint32_cached_byte_size_ monotonic, align 8 %add29 = add i64 %total_size.2, %call19 %repeated_uint64_ = getelementptr inbounds nuw i8, ptr %this, i64 88 %call31 = tail call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite10UInt64SizeERKNS0_13RepeatedFieldImEE(ptr noundef nonnull align 8 dereferenceable(16) %repeated_uint64_) @@ -51595,10 +51593,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit483: ; preds = %if. br label %if.end38 if.end38: ; preds = %if.end26, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit483 - %conv.i484.pre-phi = phi i32 [ %conv34, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit483 ], [ 0, %if.end26 ] %total_size.3 = phi i64 [ %add37, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit483 ], [ %add29, %if.end26 ] %_repeated_uint64_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 104 - store atomic i32 %conv.i484.pre-phi, ptr %_repeated_uint64_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_repeated_uint64_cached_byte_size_ monotonic, align 8 %add41 = add i64 %total_size.3, %call31 %repeated_sint32_ = getelementptr inbounds nuw i8, ptr %this, i64 112 %call43 = tail call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite10SInt32SizeERKNS0_13RepeatedFieldIiEE(ptr noundef nonnull align 8 dereferenceable(16) %repeated_sint32_) @@ -51627,10 +51624,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit494: ; preds = %if. br label %if.end50 if.end50: ; preds = %if.end38, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit494 - %conv.i495.pre-phi = phi i32 [ %conv46, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit494 ], [ 0, %if.end38 ] %total_size.4 = phi i64 [ %add49, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit494 ], [ %add41, %if.end38 ] %_repeated_sint32_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 128 - store atomic i32 %conv.i495.pre-phi, ptr %_repeated_sint32_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_repeated_sint32_cached_byte_size_ monotonic, align 8 %add53 = add i64 %total_size.4, %call43 %repeated_sint64_ = getelementptr inbounds nuw i8, ptr %this, i64 136 %call55 = tail call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite10SInt64SizeERKNS0_13RepeatedFieldIlEE(ptr noundef nonnull align 8 dereferenceable(16) %repeated_sint64_) @@ -51659,10 +51655,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit505: ; preds = %if. br label %if.end62 if.end62: ; preds = %if.end50, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit505 - %conv.i506.pre-phi = phi i32 [ %conv58, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit505 ], [ 0, %if.end50 ] %total_size.5 = phi i64 [ %add61, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit505 ], [ %add53, %if.end50 ] %_repeated_sint64_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 152 - store atomic i32 %conv.i506.pre-phi, ptr %_repeated_sint64_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_repeated_sint64_cached_byte_size_ monotonic, align 8 %add65 = add i64 %total_size.5, %call55 %repeated_fixed32_.i = getelementptr inbounds nuw i8, ptr %this, i64 160 %call.i = tail call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %repeated_fixed32_.i) @@ -51693,10 +51688,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit516: ; preds = %if. br label %if.end75 if.end75: ; preds = %if.end62, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit516 - %conv.i517.pre-phi = phi i32 [ %conv71, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit516 ], [ 0, %if.end62 ] %total_size.6 = phi i64 [ %add74, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit516 ], [ %add65, %if.end62 ] %_repeated_fixed32_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 176 - store atomic i32 %conv.i517.pre-phi, ptr %_repeated_fixed32_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_repeated_fixed32_cached_byte_size_ monotonic, align 8 %add78 = add i64 %total_size.6, %mul %repeated_fixed64_.i = getelementptr inbounds nuw i8, ptr %this, i64 184 %call.i518 = tail call noundef i32 @_ZNK6google8protobuf13RepeatedFieldImE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %repeated_fixed64_.i) @@ -51727,10 +51721,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit528: ; preds = %if. br label %if.end90 if.end90: ; preds = %if.end75, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit528 - %conv.i529.pre-phi = phi i32 [ %conv86, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit528 ], [ 0, %if.end75 ] %total_size.7 = phi i64 [ %add89, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit528 ], [ %add78, %if.end75 ] %_repeated_fixed64_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 200 - store atomic i32 %conv.i529.pre-phi, ptr %_repeated_fixed64_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_repeated_fixed64_cached_byte_size_ monotonic, align 8 %add93 = add i64 %total_size.7, %mul83 %repeated_sfixed32_.i = getelementptr inbounds nuw i8, ptr %this, i64 208 %call.i530 = tail call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIiE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %repeated_sfixed32_.i) @@ -51761,10 +51754,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit540: ; preds = %if. br label %if.end105 if.end105: ; preds = %if.end90, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit540 - %conv.i541.pre-phi = phi i32 [ %conv101, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit540 ], [ 0, %if.end90 ] %total_size.8 = phi i64 [ %add104, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit540 ], [ %add93, %if.end90 ] %_repeated_sfixed32_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 224 - store atomic i32 %conv.i541.pre-phi, ptr %_repeated_sfixed32_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_repeated_sfixed32_cached_byte_size_ monotonic, align 8 %add108 = add i64 %total_size.8, %mul98 %repeated_sfixed64_.i = getelementptr inbounds nuw i8, ptr %this, i64 232 %call.i542 = tail call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIlE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %repeated_sfixed64_.i) @@ -51795,10 +51787,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit552: ; preds = %if. br label %if.end120 if.end120: ; preds = %if.end105, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit552 - %conv.i553.pre-phi = phi i32 [ %conv116, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit552 ], [ 0, %if.end105 ] %total_size.9 = phi i64 [ %add119, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit552 ], [ %add108, %if.end105 ] %_repeated_sfixed64_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 248 - store atomic i32 %conv.i553.pre-phi, ptr %_repeated_sfixed64_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_repeated_sfixed64_cached_byte_size_ monotonic, align 8 %add123 = add i64 %total_size.9, %mul113 %repeated_float_.i = getelementptr inbounds nuw i8, ptr %this, i64 256 %call.i554 = tail call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIfE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %repeated_float_.i) @@ -51829,10 +51820,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit564: ; preds = %if. br label %if.end135 if.end135: ; preds = %if.end120, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit564 - %conv.i565.pre-phi = phi i32 [ %conv131, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit564 ], [ 0, %if.end120 ] %total_size.10 = phi i64 [ %add134, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit564 ], [ %add123, %if.end120 ] %_repeated_float_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 272 - store atomic i32 %conv.i565.pre-phi, ptr %_repeated_float_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_repeated_float_cached_byte_size_ monotonic, align 8 %add138 = add i64 %total_size.10, %mul128 %repeated_double_.i = getelementptr inbounds nuw i8, ptr %this, i64 280 %call.i566 = tail call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %repeated_double_.i) @@ -51863,10 +51853,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit576: ; preds = %if. br label %if.end150 if.end150: ; preds = %if.end135, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit576 - %conv.i577.pre-phi = phi i32 [ %conv146, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit576 ], [ 0, %if.end135 ] %total_size.11 = phi i64 [ %add149, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit576 ], [ %add138, %if.end135 ] %_repeated_double_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 296 - store atomic i32 %conv.i577.pre-phi, ptr %_repeated_double_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_repeated_double_cached_byte_size_ monotonic, align 8 %add153 = add i64 %total_size.11, %mul143 %repeated_bool_.i = getelementptr inbounds nuw i8, ptr %this, i64 304 %call.i578 = tail call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIbE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %repeated_bool_.i) @@ -52199,12 +52188,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit656: ; preds = %if. br label %if.end254 if.end254: ; preds = %for.end234, %for.end247, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit656 - %data_size235.0.lcssa3334 = phi i64 [ %add244, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit656 ], [ 0, %for.end247 ], [ 0, %for.end234 ] - %conv.i657.pre-phi = phi i32 [ %conv250, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit656 ], [ 0, %for.end247 ], [ 0, %for.end234 ] %total_size.17 = phi i64 [ %add253, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit656 ], [ %total_size.16.lcssa, %for.end247 ], [ %total_size.16.lcssa, %for.end234 ] %_repeated_nested_enum_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 440 - store atomic i32 %conv.i657.pre-phi, ptr %_repeated_nested_enum_cached_byte_size_ monotonic, align 8 - %add257 = add i64 %total_size.17, %data_size235.0.lcssa3334 + store atomic i32 0, ptr %_repeated_nested_enum_cached_byte_size_ monotonic, align 8 %repeated_foreign_enum_.i = getelementptr inbounds nuw i8, ptr %this, i64 448 %call.i658 = tail call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIiE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %repeated_foreign_enum_.i) %cmp2633098.not = icmp eq i32 %call.i658, 0 @@ -52257,21 +52243,18 @@ if.else.i.i672: ; preds = %if.then272 _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit680: ; preds = %if.then272, %if.else.i.i672 %retval.0.i.i679 = phi i64 [ %58, %if.else.i.i672 ], [ 12, %if.then272 ] - %add276 = add i64 %retval.0.i.i679, %add257 + %add276 = add i64 %retval.0.i.i679, %total_size.17 br label %if.end277 if.end277: ; preds = %if.end254, %for.end270, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit680 - %data_size258.0.lcssa3338 = phi i64 [ %add267, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit680 ], [ 0, %for.end270 ], [ 0, %if.end254 ] - %conv.i681.pre-phi = phi i32 [ %conv273, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit680 ], [ 0, %for.end270 ], [ 0, %if.end254 ] - %total_size.18 = phi i64 [ %add276, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit680 ], [ %add257, %for.end270 ], [ %add257, %if.end254 ] + %data_size258.0.lcssa3338 = phi i64 [ %add276, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit680 ], [ %total_size.17, %for.end270 ], [ %total_size.17, %if.end254 ] %_repeated_foreign_enum_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 464 - store atomic i32 %conv.i681.pre-phi, ptr %_repeated_foreign_enum_cached_byte_size_ monotonic, align 8 - %add280 = add i64 %total_size.18, %data_size258.0.lcssa3338 + store atomic i32 0, ptr %_repeated_foreign_enum_cached_byte_size_ monotonic, align 8 %repeated_string_piece_ = getelementptr inbounds nuw i8, ptr %this, i64 472 %call281 = tail call noundef i32 @_ZNK6google8protobuf16RepeatedPtrFieldINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %repeated_string_piece_) %conv.i682 = zext i32 %call281 to i64 %mul283 = shl nuw nsw i64 %conv.i682, 1 - %add284 = add i64 %add280, %mul283 + %add284 = add i64 %total_size.18, %mul283 %call288 = tail call noundef i32 @_ZNK6google8protobuf16RepeatedPtrFieldINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %repeated_string_piece_) %cmp2903102 = icmp sgt i32 %call288, 0 br i1 %cmp2903102, label %for.body291, label %for.end298 @@ -54266,10 +54249,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1550: ; preds = %if br label %if.end701 if.end701: ; preds = %for.end692, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1550 - %conv.i1551.pre-phi = phi i32 [ %conv697, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1550 ], [ 0, %for.end692 ] %total_size.40 = phi i64 [ %add700, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1550 ], [ %total_size.39.lcssa, %for.end692 ] %_packed_int32_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2360 - store atomic i32 %conv.i1551.pre-phi, ptr %_packed_int32_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_int32_cached_byte_size_ monotonic, align 8 %add704 = add i64 %total_size.40, %call694 %packed_int64_ = getelementptr inbounds nuw i8, ptr %this, i64 2368 %call706 = call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite9Int64SizeERKNS0_13RepeatedFieldIlEE(ptr noundef nonnull align 8 dereferenceable(16) %packed_int64_) @@ -54298,10 +54280,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1561: ; preds = %if br label %if.end713 if.end713: ; preds = %if.end701, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1561 - %conv.i1562.pre-phi = phi i32 [ %conv709, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1561 ], [ 0, %if.end701 ] %total_size.41 = phi i64 [ %add712, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1561 ], [ %add704, %if.end701 ] %_packed_int64_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2384 - store atomic i32 %conv.i1562.pre-phi, ptr %_packed_int64_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_int64_cached_byte_size_ monotonic, align 8 %add716 = add i64 %total_size.41, %call706 %packed_uint32_ = getelementptr inbounds nuw i8, ptr %this, i64 2392 %call718 = call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite10UInt32SizeERKNS0_13RepeatedFieldIjEE(ptr noundef nonnull align 8 dereferenceable(16) %packed_uint32_) @@ -54330,10 +54311,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1572: ; preds = %if br label %if.end725 if.end725: ; preds = %if.end713, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1572 - %conv.i1573.pre-phi = phi i32 [ %conv721, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1572 ], [ 0, %if.end713 ] %total_size.42 = phi i64 [ %add724, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1572 ], [ %add716, %if.end713 ] %_packed_uint32_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2408 - store atomic i32 %conv.i1573.pre-phi, ptr %_packed_uint32_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_uint32_cached_byte_size_ monotonic, align 8 %add728 = add i64 %total_size.42, %call718 %packed_uint64_ = getelementptr inbounds nuw i8, ptr %this, i64 2416 %call730 = call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite10UInt64SizeERKNS0_13RepeatedFieldImEE(ptr noundef nonnull align 8 dereferenceable(16) %packed_uint64_) @@ -54362,10 +54342,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1583: ; preds = %if br label %if.end737 if.end737: ; preds = %if.end725, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1583 - %conv.i1584.pre-phi = phi i32 [ %conv733, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1583 ], [ 0, %if.end725 ] %total_size.43 = phi i64 [ %add736, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1583 ], [ %add728, %if.end725 ] %_packed_uint64_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2432 - store atomic i32 %conv.i1584.pre-phi, ptr %_packed_uint64_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_uint64_cached_byte_size_ monotonic, align 8 %add740 = add i64 %total_size.43, %call730 %packed_sint32_ = getelementptr inbounds nuw i8, ptr %this, i64 2440 %call742 = call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite10SInt32SizeERKNS0_13RepeatedFieldIiEE(ptr noundef nonnull align 8 dereferenceable(16) %packed_sint32_) @@ -54394,10 +54373,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1594: ; preds = %if br label %if.end749 if.end749: ; preds = %if.end737, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1594 - %conv.i1595.pre-phi = phi i32 [ %conv745, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1594 ], [ 0, %if.end737 ] %total_size.44 = phi i64 [ %add748, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1594 ], [ %add740, %if.end737 ] %_packed_sint32_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2456 - store atomic i32 %conv.i1595.pre-phi, ptr %_packed_sint32_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_sint32_cached_byte_size_ monotonic, align 8 %add752 = add i64 %total_size.44, %call742 %packed_sint64_ = getelementptr inbounds nuw i8, ptr %this, i64 2464 %call754 = call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite10SInt64SizeERKNS0_13RepeatedFieldIlEE(ptr noundef nonnull align 8 dereferenceable(16) %packed_sint64_) @@ -54426,10 +54404,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1605: ; preds = %if br label %if.end761 if.end761: ; preds = %if.end749, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1605 - %conv.i1606.pre-phi = phi i32 [ %conv757, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1605 ], [ 0, %if.end749 ] %total_size.45 = phi i64 [ %add760, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1605 ], [ %add752, %if.end749 ] %_packed_sint64_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2480 - store atomic i32 %conv.i1606.pre-phi, ptr %_packed_sint64_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_sint64_cached_byte_size_ monotonic, align 8 %add764 = add i64 %total_size.45, %call754 %packed_fixed32_.i = getelementptr inbounds nuw i8, ptr %this, i64 2488 %call.i1607 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %packed_fixed32_.i) @@ -54460,10 +54437,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1617: ; preds = %if br label %if.end776 if.end776: ; preds = %if.end761, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1617 - %conv.i1618.pre-phi = phi i32 [ %conv772, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1617 ], [ 0, %if.end761 ] %total_size.46 = phi i64 [ %add775, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1617 ], [ %add764, %if.end761 ] %_packed_fixed32_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2504 - store atomic i32 %conv.i1618.pre-phi, ptr %_packed_fixed32_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_fixed32_cached_byte_size_ monotonic, align 8 %add779 = add i64 %total_size.46, %mul769 %packed_fixed64_.i = getelementptr inbounds nuw i8, ptr %this, i64 2512 %call.i1619 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldImE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %packed_fixed64_.i) @@ -54494,10 +54470,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1629: ; preds = %if br label %if.end791 if.end791: ; preds = %if.end776, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1629 - %conv.i1630.pre-phi = phi i32 [ %conv787, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1629 ], [ 0, %if.end776 ] %total_size.47 = phi i64 [ %add790, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1629 ], [ %add779, %if.end776 ] %_packed_fixed64_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2528 - store atomic i32 %conv.i1630.pre-phi, ptr %_packed_fixed64_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_fixed64_cached_byte_size_ monotonic, align 8 %add794 = add i64 %total_size.47, %mul784 %packed_sfixed32_.i = getelementptr inbounds nuw i8, ptr %this, i64 2536 %call.i1631 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIiE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %packed_sfixed32_.i) @@ -54528,10 +54503,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1641: ; preds = %if br label %if.end806 if.end806: ; preds = %if.end791, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1641 - %conv.i1642.pre-phi = phi i32 [ %conv802, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1641 ], [ 0, %if.end791 ] %total_size.48 = phi i64 [ %add805, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1641 ], [ %add794, %if.end791 ] %_packed_sfixed32_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2552 - store atomic i32 %conv.i1642.pre-phi, ptr %_packed_sfixed32_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_sfixed32_cached_byte_size_ monotonic, align 8 %add809 = add i64 %total_size.48, %mul799 %packed_sfixed64_.i = getelementptr inbounds nuw i8, ptr %this, i64 2560 %call.i1643 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIlE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %packed_sfixed64_.i) @@ -54562,10 +54536,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1653: ; preds = %if br label %if.end821 if.end821: ; preds = %if.end806, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1653 - %conv.i1654.pre-phi = phi i32 [ %conv817, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1653 ], [ 0, %if.end806 ] %total_size.49 = phi i64 [ %add820, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1653 ], [ %add809, %if.end806 ] %_packed_sfixed64_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2576 - store atomic i32 %conv.i1654.pre-phi, ptr %_packed_sfixed64_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_sfixed64_cached_byte_size_ monotonic, align 8 %add824 = add i64 %total_size.49, %mul814 %packed_float_.i = getelementptr inbounds nuw i8, ptr %this, i64 2584 %call.i1655 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIfE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %packed_float_.i) @@ -54596,10 +54569,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1665: ; preds = %if br label %if.end836 if.end836: ; preds = %if.end821, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1665 - %conv.i1666.pre-phi = phi i32 [ %conv832, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1665 ], [ 0, %if.end821 ] %total_size.50 = phi i64 [ %add835, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1665 ], [ %add824, %if.end821 ] %_packed_float_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2600 - store atomic i32 %conv.i1666.pre-phi, ptr %_packed_float_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_float_cached_byte_size_ monotonic, align 8 %add839 = add i64 %total_size.50, %mul829 %packed_double_.i = getelementptr inbounds nuw i8, ptr %this, i64 2608 %call.i1667 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %packed_double_.i) @@ -54630,10 +54602,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1677: ; preds = %if br label %if.end851 if.end851: ; preds = %if.end836, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1677 - %conv.i1678.pre-phi = phi i32 [ %conv847, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1677 ], [ 0, %if.end836 ] %total_size.51 = phi i64 [ %add850, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1677 ], [ %add839, %if.end836 ] %_packed_double_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2624 - store atomic i32 %conv.i1678.pre-phi, ptr %_packed_double_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_double_cached_byte_size_ monotonic, align 8 %add854 = add i64 %total_size.51, %mul844 %packed_bool_.i = getelementptr inbounds nuw i8, ptr %this, i64 2632 %call.i1679 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIbE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %packed_bool_.i) @@ -54722,11 +54693,9 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1713: ; preds = %if br label %if.end889 if.end889: ; preds = %if.end866, %for.end882, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1713 - %data_size870.0.lcssa3342 = phi i64 [ %add879, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1713 ], [ 0, %for.end882 ], [ 0, %if.end866 ] - %conv.i1714.pre-phi = phi i32 [ %conv885, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1713 ], [ 0, %for.end882 ], [ 0, %if.end866 ] %total_size.53 = phi i64 [ %add888, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1713 ], [ %add869, %for.end882 ], [ %add869, %if.end866 ] %_packed_nested_enum_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2672 - store atomic i32 %conv.i1714.pre-phi, ptr %_packed_nested_enum_cached_byte_size_ monotonic, align 8 + store atomic i32 0, ptr %_packed_nested_enum_cached_byte_size_ monotonic, align 8 %unpacked_int32_ = getelementptr inbounds nuw i8, ptr %this, i64 2680 %call894 = call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite9Int32SizeERKNS0_13RepeatedFieldIiEE(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_int32_) %call.i1715 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIiE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_int32_) @@ -54843,8 +54812,7 @@ for.end1017: ; preds = %_ZN6google8protobuf %reass.add3020 = add nuw nsw i64 %conv958, %conv938 %reass.add3021 = add nuw nsw i64 %reass.add3020, %conv978 %reass.mul3022 = shl nuw nsw i64 %reass.add3021, 2 - %add963 = add i64 %total_size.53, %data_size870.0.lcssa3342 - %add964 = add i64 %add963, %call894 + %add963 = add i64 %total_size.53, %call894 %add973 = add i64 %add964, %call901 %add974 = add i64 %add973, %call908 %add983 = add i64 %add974, %call915 diff --git a/bench/zfp/optimized/bitstream.ll b/bench/zfp/optimized/bitstream.ll index 19b8854f8c8..6e50fd0f4e5 100644 --- a/bench/zfp/optimized/bitstream.ll +++ b/bench/zfp/optimized/bitstream.ll @@ -257,20 +257,19 @@ define void @stream_rseek(ptr noundef captures(none) initializes((0, 24)) %0, i6 store ptr %10, ptr %8, align 8, !tbaa !11 %11 = load i64, ptr %7, align 8, !tbaa !14 %12 = lshr i64 %11, %3 - %13 = sub nuw nsw i64 64, %3 br label %14 14: ; preds = %2, %9 %.sink = phi i64 [ %12, %9 ], [ 0, %2 ] - %storemerge = phi i64 [ %13, %9 ], [ 0, %2 ] + %storemerge = phi i64 [ 64, %9 ], [ 0, %2 ] %15 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink, ptr %15, align 8, !tbaa !15 store i64 %storemerge, ptr %0, align 8, !tbaa !13 ret void } -; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, argmem: readwrite, inaccessiblemem: none) uwtable -define void @stream_wseek(ptr noundef captures(none) initializes((0, 24)) %0, i64 noundef %1) local_unnamed_addr #2 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable +define void @stream_wseek(ptr noundef captures(none) initializes((0, 24)) %0, i64 noundef %1) local_unnamed_addr #4 { %3 = and i64 %1, 63 %4 = getelementptr inbounds nuw i8, ptr %0, i64 24 %5 = load ptr, ptr %4, align 8, !tbaa !4 @@ -278,20 +277,8 @@ define void @stream_wseek(ptr noundef captures(none) initializes((0, 24)) %0, i6 %7 = getelementptr inbounds nuw i64, ptr %5, i64 %6 %8 = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %7, ptr %8, align 8, !tbaa !11 - %.not = icmp eq i64 %3, 0 - br i1 %.not, label %13, label %9 - -9: ; preds = %2 - %10 = load i64, ptr %7, align 8, !tbaa !14 - %notmask = shl nsw i64 -1, %3 - %11 = xor i64 %notmask, -1 - %12 = and i64 %10, %11 - br label %13 - -13: ; preds = %2, %9 - %.sink = phi i64 [ %12, %9 ], [ 0, %2 ] - %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sink, ptr %14, align 8, !tbaa !15 + %9 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 0, ptr %9, align 8, !tbaa !15 store i64 %3, ptr %0, align 8, !tbaa !13 ret void } @@ -321,12 +308,11 @@ define void @stream_skip(ptr noundef captures(none) initializes((8, 16)) %0, i64 store ptr %18, ptr %3, align 8, !tbaa !11 %19 = load i64, ptr %16, align 8, !tbaa !14 %20 = lshr i64 %19, %14 - %21 = sub nuw nsw i64 64, %14 br label %stream_rseek.exit stream_rseek.exit: ; preds = %2, %17 %.sink.i = phi i64 [ %20, %17 ], [ 0, %2 ] - %storemerge.i = phi i64 [ %21, %17 ], [ 0, %2 ] + %storemerge.i = phi i64 [ 64, %17 ], [ 0, %2 ] %22 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink.i, ptr %22, align 8, !tbaa !15 store i64 %storemerge.i, ptr %0, align 8, !tbaa !13 @@ -395,12 +381,11 @@ define i64 @stream_align(ptr noundef captures(none) %0) local_unnamed_addr #2 { store ptr %16, ptr %4, align 8, !tbaa !11 %17 = load i64, ptr %14, align 8, !tbaa !14 %18 = lshr i64 %17, %12 - %19 = sub nuw nsw i64 64, %12 br label %stream_skip.exit stream_skip.exit: ; preds = %3, %15 %.sink.i.i = phi i64 [ %18, %15 ], [ 0, %3 ] - %storemerge.i.i = phi i64 [ %19, %15 ], [ 0, %3 ] + %storemerge.i.i = phi i64 [ 64, %15 ], [ 0, %3 ] %20 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink.i.i, ptr %20, align 8, !tbaa !15 store i64 %storemerge.i.i, ptr %0, align 8, !tbaa !13 diff --git a/bench/zlib/optimized/gzwrite.ll b/bench/zlib/optimized/gzwrite.ll index 8d9457d8549..756f928f6e2 100644 --- a/bench/zlib/optimized/gzwrite.ll +++ b/bench/zlib/optimized/gzwrite.ll @@ -213,8 +213,8 @@ gz_zero.exit: ; preds = %27, %24, %12 %84 = getelementptr inbounds nuw i8, ptr %0, i64 16 br label %85 -85: ; preds = %89, %83 - %.161 = phi i64 [ %2, %83 ], [ %90, %89 ] +85: ; preds = %85, %83 + %.161 = phi i64 [ %2, %83 ], [ %89, %85 ] %spec.select6972 = tail call i64 @llvm.umin.i64(i64 %.161, i64 4294967295) %spec.select69 = trunc nuw i64 %spec.select6972 to i32 store i32 %spec.select69, ptr %47, align 8, !tbaa !24 @@ -223,16 +223,13 @@ gz_zero.exit: ; preds = %27, %24, %12 store i64 %87, ptr %84, align 8, !tbaa !23 %88 = tail call fastcc i32 @gz_comp(ptr noundef %0, i32 noundef 0) %.not66 = icmp eq i32 %88, -1 - br i1 %.not66, label %.critedge70, label %89 + %89 = sub i64 %.161, %spec.select6972 + %.not67 = icmp eq i64 %89, 0 + %or.cond = select i1 %.not66, i1 true, i1 %.not67 + br i1 %or.cond, label %.critedge70, label %85, !llvm.loop !26 -89: ; preds = %85 - %90 = sub i64 %.161, %spec.select6972 - %.not67 = icmp eq i64 %90, 0 - br i1 %.not67, label %.critedge70, label %85, !llvm.loop !26 - -.critedge70: ; preds = %37, %89, %85, %55, %74, %21, %80, %9, %3 - %.056 = phi i64 [ 0, %3 ], [ 0, %9 ], [ 0, %80 ], [ 0, %21 ], [ %2, %55 ], [ 0, %74 ], [ %2, %89 ], [ 0, %85 ], [ 0, %37 ] - ret i64 %.056 +89: ; preds = %37, %85, %55, %74, %21, %80, %9, %3 + ret i64 0 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) @@ -663,7 +660,7 @@ gz_zero.exit._crit_edge: ; preds = %gz_zero.exit br label %102 102: ; preds = %82, %94, %58, %75, %77, %5, %9, %3, %92, %.loopexit, %19 - %.0 = phi i32 [ %20, %19 ], [ %51, %.loopexit ], [ %93, %92 ], [ -2, %3 ], [ -2, %9 ], [ -2, %5 ], [ 0, %77 ], [ 0, %75 ], [ 0, %58 ], [ %73, %94 ], [ %73, %82 ] + %.0 = phi i32 [ %20, %19 ], [ %51, %.loopexit ], [ %93, %92 ], [ -2, %3 ], [ -2, %9 ], [ -2, %5 ], [ 0, %77 ], [ 0, %75 ], [ 0, %58 ], [ 0, %94 ], [ 0, %82 ] ret i32 %.0 } diff --git a/bench/zstd/optimized/entropy_common.ll b/bench/zstd/optimized/entropy_common.ll index 4c4ec54f3f6..246dfa79d38 100644 --- a/bench/zstd/optimized/entropy_common.ll +++ b/bench/zstd/optimized/entropy_common.ll @@ -638,10 +638,6 @@ define range(i64 1, 0) i64 @HUF_readStats_wksp(ptr noundef %0, i64 noundef %1, p %.not.i = icmp eq i64 %20, 0 br i1 %.not.i, label %.loopexit.thread.i, label %.lr.ph.i -.loopexit.thread.i: ; preds = %24 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(52) %2, i8 0, i64 52, i1 false) - br label %HUF_readStats_body_default.exit - .lr.ph.i: ; preds = %24, %.lr.ph.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.lr.ph.i ], [ 0, %24 ] %26 = lshr exact i64 %indvars.iv.i, 1 @@ -670,11 +666,13 @@ define range(i64 1, 0) i64 @HUF_readStats_wksp(ptr noundef %0, i64 noundef %1, p %41 = icmp ult i64 %40, -119 br i1 %41, label %.loopexit.i, label %HUF_readStats_body_default.exit -.loopexit.i: ; preds = %.lr.ph.i, %37 - %.074.i.i = phi i64 [ %40, %37 ], [ %20, %.lr.ph.i ] - %.073.i.i = phi i64 [ %17, %37 ], [ %22, %.lr.ph.i ] +.loopexit.i: ; preds = %.lr.ph.i, %24 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(52) %2, i8 0, i64 52, i1 false) + br label %HUF_readStats_body_default.exit + +.loopexit.i: ; preds = %37 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(52) %2, i8 0, i64 52, i1 false) - %.not91.i10.not.i = icmp eq i64 %.074.i.i, 0 + %.not91.i10.not.i = icmp eq i64 %40, 0 br i1 %.not91.i10.not.i, label %HUF_readStats_body_default.exit, label %.lr.ph13.i .lr.ph13.i: ; preds = %.loopexit.i, %46 @@ -699,7 +697,7 @@ define range(i64 1, 0) i64 @HUF_readStats_wksp(ptr noundef %0, i64 noundef %1, p %55 = add i32 %54, %.072.i12.i %56 = add i32 %.075.i11.i, 1 %57 = zext i32 %56 to i64 - %.not91.i.i = icmp ugt i64 %.074.i.i, %57 + %.not91.i.i = icmp ugt i64 %40, %57 br i1 %.not91.i.i, label %.lr.ph13.i, label %.critedge.i.i, !llvm.loop !14 .critedge.i.i: ; preds = %46 @@ -726,7 +724,7 @@ define range(i64 1, 0) i64 @HUF_readStats_wksp(ptr noundef %0, i64 noundef %1, p 69: ; preds = %62 %70 = sub nuw nsw i32 32, %66 %71 = trunc nuw nsw i32 %70 to i8 - %72 = getelementptr inbounds nuw i8, ptr %0, i64 %.074.i.i + %72 = getelementptr inbounds nuw i8, ptr %0, i64 %40 store i8 %71, ptr %72, align 1, !tbaa !12 %73 = zext nneg i32 %70 to i64 %74 = getelementptr inbounds nuw i32, ptr %2, i64 %73 @@ -742,13 +740,13 @@ define range(i64 1, 0) i64 @HUF_readStats_wksp(ptr noundef %0, i64 noundef %1, p br i1 %or.cond.i.i, label %81, label %HUF_readStats_body_default.exit 81: ; preds = %69 - %82 = trunc nuw i64 %.074.i.i to i32 + %82 = trunc nuw i64 %40 to i32 %83 = add i32 %82, 1 store i32 %83, ptr %3, align 4, !tbaa !3 - %84 = add nuw nsw i64 %.073.i.i, 1 + %84 = add nuw nsw i64 %17, 1 br label %HUF_readStats_body_default.exit -HUF_readStats_body_default.exit: ; preds = %.lr.ph13.i, %81, %69, %62, %58, %.critedge.i.i, %.loopexit.i, %37, %36, %.loopexit.thread.i, %23, %19, %14, %12 +HUF_readStats_body_default.exit: ; preds = %.lr.ph13.i, %81, %69, %62, %58, %.critedge.i.i, %.loopexit.i, %.loopexit.thread.i, %37, %36, %23, %19, %14, %12 %.0 = phi i64 [ %13, %12 ], [ %84, %81 ], [ -72, %14 ], [ -72, %19 ], [ -20, %23 ], [ -72, %36 ], [ %40, %37 ], [ -20, %.critedge.i.i ], [ -20, %69 ], [ -20, %58 ], [ -20, %62 ], [ -20, %.loopexit.i ], [ -20, %.loopexit.thread.i ], [ -20, %.lr.ph13.i ] ret i64 %.0 } @@ -783,10 +781,6 @@ define internal fastcc range(i64 1, 0) i64 @HUF_readStats_body_bmi2(ptr noundef %.not = icmp eq i64 %15, 0 br i1 %.not, label %.loopexit.thread, label %.lr.ph.preheader -.loopexit.thread: ; preds = %19 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(52) %2, i8 0, i64 52, i1 false) - br label %HUF_readStats_body.exit - .lr.ph.preheader: ; preds = %19 %21 = trunc nuw nsw i64 %15 to i32 br label %.lr.ph @@ -820,11 +814,13 @@ define internal fastcc range(i64 1, 0) i64 @HUF_readStats_body_bmi2(ptr noundef %37 = icmp ult i64 %36, -119 br i1 %37, label %.loopexit, label %HUF_readStats_body.exit -.loopexit: ; preds = %.lr.ph, %33 - %.074.i = phi i64 [ %36, %33 ], [ %15, %.lr.ph ] - %.073.i = phi i64 [ %12, %33 ], [ %17, %.lr.ph ] +.loopexit: ; preds = %.lr.ph, %19 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(52) %2, i8 0, i64 52, i1 false) + br label %HUF_readStats_body.exit + +.loopexit: ; preds = %33 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(52) %2, i8 0, i64 52, i1 false) - %.not91.i10.not = icmp eq i64 %.074.i, 0 + %.not91.i10.not = icmp eq i64 %36, 0 br i1 %.not91.i10.not, label %HUF_readStats_body.exit, label %.lr.ph13 .lr.ph13: ; preds = %.loopexit, %42 @@ -849,7 +845,7 @@ define internal fastcc range(i64 1, 0) i64 @HUF_readStats_body_bmi2(ptr noundef %51 = add i32 %50, %.072.i12 %52 = add i32 %.075.i11, 1 %53 = zext i32 %52 to i64 - %.not91.i = icmp ugt i64 %.074.i, %53 + %.not91.i = icmp ugt i64 %36, %53 br i1 %.not91.i, label %.lr.ph13, label %.critedge.i, !llvm.loop !14 .critedge.i: ; preds = %42 @@ -876,7 +872,7 @@ define internal fastcc range(i64 1, 0) i64 @HUF_readStats_body_bmi2(ptr noundef 65: ; preds = %58 %66 = sub nuw nsw i32 32, %62 %67 = trunc nuw nsw i32 %66 to i8 - %68 = getelementptr inbounds nuw i8, ptr %0, i64 %.074.i + %68 = getelementptr inbounds nuw i8, ptr %0, i64 %36 store i8 %67, ptr %68, align 1, !tbaa !12 %69 = zext nneg i32 %66 to i64 %70 = getelementptr inbounds nuw i32, ptr %2, i64 %69 @@ -892,10 +888,10 @@ define internal fastcc range(i64 1, 0) i64 @HUF_readStats_body_bmi2(ptr noundef br i1 %or.cond.i, label %77, label %HUF_readStats_body.exit 77: ; preds = %65 - %78 = trunc nuw i64 %.074.i to i32 + %78 = trunc nuw i64 %36 to i32 %79 = add i32 %78, 1 store i32 %79, ptr %3, align 4, !tbaa !3 - %80 = add nuw nsw i64 %.073.i, 1 + %80 = add nuw nsw i64 %12, 1 br label %HUF_readStats_body.exit HUF_readStats_body.exit: ; preds = %.lr.ph13, %.loopexit.thread, %.loopexit, %9, %14, %18, %32, %33, %.critedge.i, %54, %58, %65, %77 diff --git a/bench/zstd/optimized/zstd_v06.ll b/bench/zstd/optimized/zstd_v06.ll index 7bb682df14f..18319c02521 100644 --- a/bench/zstd/optimized/zstd_v06.ll +++ b/bench/zstd/optimized/zstd_v06.ll @@ -687,7 +687,7 @@ BITv06_reloadDStream.exit.sink.split.i: ; preds = %96, %91 FSEv06_initDState.exit: ; preds = %77, %94, %BITv06_reloadDStream.exit.sink.split.i %.sroa.0217.4 = phi i64 [ %.sroa.0217.3315, %77 ], [ %.sroa.0217.3315, %94 ], [ %.val.i8.sink.i, %BITv06_reloadDStream.exit.sink.split.i ] %.sroa.29.4 = phi i32 [ %88, %77 ], [ %88, %94 ], [ %.sroa.29.3, %BITv06_reloadDStream.exit.sink.split.i ] - %.sroa.64220.4.idx = phi i64 [ %.sroa.64220.2317.idx, %77 ], [ 0, %94 ], [ %.sroa.64220.2317.ptr.add, %BITv06_reloadDStream.exit.sink.split.i ] + %.sroa.64220.4.idx = phi i64 [ 0, %77 ], [ 0, %94 ], [ %.sroa.64220.2317.ptr.add, %BITv06_reloadDStream.exit.sink.split.i ] %.sroa.64220.4.ptr.ptr = getelementptr inbounds i8, ptr %2, i64 %.sroa.64220.4.idx %105 = getelementptr inbounds nuw i8, ptr %4, i64 4 %106 = and i32 %.sroa.29.4, 63 @@ -736,7 +736,7 @@ BITv06_reloadDStream.exit.sink.split.i23: ; preds = %119, %114 FSEv06_initDState.exit27: ; preds = %FSEv06_initDState.exit, %117, %BITv06_reloadDStream.exit.sink.split.i23 %.sroa.0217.5 = phi i64 [ %.sroa.0217.4, %FSEv06_initDState.exit ], [ %.sroa.0217.4, %117 ], [ %.val.i8.sink.i25, %BITv06_reloadDStream.exit.sink.split.i23 ] %.sroa.29.6 = phi i32 [ %111, %FSEv06_initDState.exit ], [ %111, %117 ], [ %.sroa.29.5, %BITv06_reloadDStream.exit.sink.split.i23 ] - %.sroa.64220.6.idx = phi i64 [ %.sroa.64220.4.idx, %FSEv06_initDState.exit ], [ 0, %117 ], [ %.sroa.64220.4.ptr.add, %BITv06_reloadDStream.exit.sink.split.i23 ] + %.sroa.64220.6.idx = phi i64 [ 0, %FSEv06_initDState.exit ], [ 0, %117 ], [ %.sroa.64220.4.ptr.add, %BITv06_reloadDStream.exit.sink.split.i23 ] %128 = icmp ugt i32 %.sroa.29.6, 64 br i1 %128, label %.preheader389, label %.lr.ph518 @@ -788,7 +788,7 @@ BITv06_reloadDStream.exit: ; preds = %129, %134 %.sroa.0209.0.lcssa = phi i64 [ %87, %FSEv06_initDState.exit27 ], [ %.sroa.0209.0514, %BITv06_reloadDStream.exit ], [ %183, %147 ], [ %.sroa.0209.0514, %132 ] %.sroa.0.0.lcssa = phi i64 [ %110, %FSEv06_initDState.exit27 ], [ %.sroa.0.0515, %BITv06_reloadDStream.exit ], [ %197, %147 ], [ %.sroa.0.0515, %132 ] %.038.i.lcssa = phi ptr [ %0, %FSEv06_initDState.exit27 ], [ %.038.i516, %BITv06_reloadDStream.exit ], [ %199, %147 ], [ %.038.i516, %132 ] - %.sroa.64220.7.idx457 = phi i64 [ %.sroa.64220.6.idx, %FSEv06_initDState.exit27 ], [ %.sroa.64220.7.idx, %BITv06_reloadDStream.exit ], [ %.sroa.64220.7.idx, %147 ], [ 0, %132 ] + %.sroa.64220.7.idx457 = phi i64 [ 0, %FSEv06_initDState.exit27 ], [ %.sroa.64220.7.idx, %BITv06_reloadDStream.exit ], [ 0, %147 ], [ 0, %132 ] %.sroa.29.7456 = phi i32 [ %.sroa.29.6, %FSEv06_initDState.exit27 ], [ %.sroa.29.7, %BITv06_reloadDStream.exit ], [ %195, %147 ], [ %.sroa.29.0512, %132 ] %.sroa.0217.6455 = phi i64 [ %.sroa.0217.5, %FSEv06_initDState.exit27 ], [ %.sroa.0217.6, %BITv06_reloadDStream.exit ], [ %.sroa.0217.6, %147 ], [ %.sroa.0217.0511, %132 ] %145 = getelementptr inbounds i8, ptr %8, i64 -2 @@ -950,7 +950,7 @@ BITv06_reloadDStream.exit69: ; preds = %.lr.ph 233: ; preds = %220, %216, %222 %.sroa.0217.7.ph = phi i64 [ %.val.i62, %216 ], [ %.val30.i66, %222 ], [ %.sroa.0217.1409, %220 ] %.sroa.29.8.ph = phi i32 [ %219, %216 ], [ %231, %222 ], [ %210, %220 ] - %.sroa.64220.8.ph.idx = phi i64 [ %.sroa.64220.1.add369, %216 ], [ %.sroa.64220.1.add, %222 ], [ 0, %220 ] + %.sroa.64220.8.ph.idx = phi i64 [ 0, %216 ], [ %.sroa.64220.1.add, %222 ], [ 0, %220 ] %.sroa.64220.8.ph.ptr = getelementptr inbounds i8, ptr %2, i64 %.sroa.64220.8.ph.idx %234 = icmp ugt ptr %213, %145 br i1 %234, label %FSEv06_decompress_usingDTable_generic.exit, label %235 @@ -1014,7 +1014,7 @@ BITv06_reloadDStream.exit69: ; preds = %.lr.ph BITv06_reloadDStream.exit92: ; preds = %255, %251, %257 %.sroa.0217.8 = phi i64 [ %.val30.i89, %257 ], [ %.val.i85, %251 ], [ %.sroa.0217.7.ph, %255 ] %.sroa.29.9 = phi i32 [ %266, %257 ], [ %254, %251 ], [ %245, %255 ] - %.sroa.64220.9.idx = phi i64 [ %.sroa.64220.8.ph.add368, %257 ], [ %.sroa.64220.8.ph.add, %251 ], [ 0, %255 ] + %.sroa.64220.9.idx = phi i64 [ %.sroa.64220.8.ph.add368, %257 ], [ 0, %251 ], [ 0, %255 ] %267 = icmp ugt ptr %248, %145 br i1 %267, label %FSEv06_decompress_usingDTable_generic.exit, label %.lr.ph @@ -1195,7 +1195,7 @@ BITv06_reloadDStream.exit.sink.split.i107: ; preds = %359, %354 br label %FSEv06_initDState.exit111 FSEv06_initDState.exit111: ; preds = %340, %357, %BITv06_reloadDStream.exit.sink.split.i107 - %.sroa.64271.4.idx = phi i64 [ %.sroa.64271.2346.idx, %340 ], [ 0, %357 ], [ %.sroa.64271.2346.ptr.add, %BITv06_reloadDStream.exit.sink.split.i107 ] + %.sroa.64271.4.idx = phi i64 [ 0, %340 ], [ 0, %357 ], [ %.sroa.64271.2346.ptr.add, %BITv06_reloadDStream.exit.sink.split.i107 ] %.sroa.29267.4 = phi i32 [ %351, %340 ], [ %351, %357 ], [ %.sroa.29267.3, %BITv06_reloadDStream.exit.sink.split.i107 ] %.sroa.0266.4 = phi i64 [ %.sroa.0266.3348, %340 ], [ %.sroa.0266.3348, %357 ], [ %.val.i8.sink.i109, %BITv06_reloadDStream.exit.sink.split.i107 ] %.sroa.64271.4.ptr.ptr = getelementptr inbounds i8, ptr %2, i64 %.sroa.64271.4.idx @@ -1244,7 +1244,7 @@ BITv06_reloadDStream.exit.sink.split.i115: ; preds = %382, %377 br label %FSEv06_initDState.exit119 FSEv06_initDState.exit119: ; preds = %FSEv06_initDState.exit111, %380, %BITv06_reloadDStream.exit.sink.split.i115 - %.sroa.64271.6.idx = phi i64 [ %.sroa.64271.4.idx, %FSEv06_initDState.exit111 ], [ 0, %380 ], [ %.sroa.64271.4.ptr.add, %BITv06_reloadDStream.exit.sink.split.i115 ] + %.sroa.64271.6.idx = phi i64 [ 0, %FSEv06_initDState.exit111 ], [ 0, %380 ], [ %.sroa.64271.4.ptr.add, %BITv06_reloadDStream.exit.sink.split.i115 ] %.sroa.29267.6 = phi i32 [ %374, %FSEv06_initDState.exit111 ], [ %374, %380 ], [ %.sroa.29267.5, %BITv06_reloadDStream.exit.sink.split.i115 ] %.sroa.0266.5 = phi i64 [ %.sroa.0266.4, %FSEv06_initDState.exit111 ], [ %.sroa.0266.4, %380 ], [ %.val.i8.sink.i117, %BITv06_reloadDStream.exit.sink.split.i115 ] %391 = icmp ugt i32 %.sroa.29267.6, 64 @@ -1300,7 +1300,7 @@ BITv06_reloadDStream.exit128: ; preds = %392, %397 %.038.i16.lcssa = phi ptr [ %0, %FSEv06_initDState.exit119 ], [ %.038.i16543, %BITv06_reloadDStream.exit128 ], [ %466, %410 ], [ %.038.i16543, %395 ] %.sroa.0266.6464 = phi i64 [ %.sroa.0266.5, %FSEv06_initDState.exit119 ], [ %.sroa.0266.6, %BITv06_reloadDStream.exit128 ], [ %.sroa.0266.6, %410 ], [ %.sroa.0266.0542, %395 ] %.sroa.29267.7463 = phi i32 [ %.sroa.29267.6, %FSEv06_initDState.exit119 ], [ %.sroa.29267.7, %BITv06_reloadDStream.exit128 ], [ %462, %410 ], [ %.sroa.29267.0541, %395 ] - %.sroa.64271.7.idx462 = phi i64 [ %.sroa.64271.6.idx, %FSEv06_initDState.exit119 ], [ %.sroa.64271.7.idx, %BITv06_reloadDStream.exit128 ], [ %.sroa.64271.7.idx, %410 ], [ 0, %395 ] + %.sroa.64271.7.idx462 = phi i64 [ 0, %FSEv06_initDState.exit119 ], [ %.sroa.64271.7.idx, %BITv06_reloadDStream.exit128 ], [ 0, %410 ], [ 0, %395 ] %408 = getelementptr inbounds i8, ptr %8, i64 -2 %409 = icmp ugt ptr %.038.i16.lcssa, %408 br i1 %409, label %FSEv06_decompress_usingDTable_generic.exit, label %.lr.ph425 @@ -1463,7 +1463,7 @@ BITv06_reloadDStream.exit172: ; preds = %.lr.ph425 br label %539 501: ; preds = %488, %484, %490 - %.sroa.64271.8.ph.idx = phi i64 [ %.sroa.64271.1.add383, %484 ], [ %.sroa.64271.1.add, %490 ], [ 0, %488 ] + %.sroa.64271.8.ph.idx = phi i64 [ 0, %484 ], [ %.sroa.64271.1.add, %490 ], [ 0, %488 ] %.sroa.29267.8.ph = phi i32 [ %487, %484 ], [ %499, %490 ], [ %478, %488 ] %.sroa.0266.7.ph = phi i64 [ %.val.i165, %484 ], [ %.val30.i169, %490 ], [ %.sroa.0266.1422, %488 ] %.sroa.64271.8.ph.ptr = getelementptr inbounds i8, ptr %2, i64 %.sroa.64271.8.ph.idx @@ -1528,7 +1528,7 @@ BITv06_reloadDStream.exit172: ; preds = %.lr.ph425 br label %BITv06_reloadDStream.exit195 BITv06_reloadDStream.exit195: ; preds = %524, %520, %526 - %.sroa.64271.9.idx = phi i64 [ %.sroa.64271.8.ph.add382, %526 ], [ %.sroa.64271.8.ph.add, %520 ], [ 0, %524 ] + %.sroa.64271.9.idx = phi i64 [ %.sroa.64271.8.ph.add382, %526 ], [ 0, %520 ], [ 0, %524 ] %.sroa.29267.9 = phi i32 [ %535, %526 ], [ %523, %520 ], [ %514, %524 ] %.sroa.0266.8 = phi i64 [ %.val30.i192, %526 ], [ %.val.i188, %520 ], [ %.sroa.0266.7.ph, %524 ] %536 = icmp ugt ptr %517, %408 @@ -1745,10 +1745,6 @@ define internal fastcc range(i64 1, 0) i64 @HUFv06_readStats(ptr noundef nonnull %.not107 = icmp eq i64 %23, 0 br i1 %.not107, label %.loopexit.thread, label %.lr.ph.preheader -.loopexit.thread: ; preds = %26 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(68) %1, i8 0, i64 68, i1 false) - br label %.critedge95 - .lr.ph.preheader: ; preds = %26 %28 = trunc nuw nsw i64 %23 to i32 br label %.lr.ph @@ -1820,9 +1816,13 @@ FSEv06_decompress.exit: ; preds = %47 %55 = icmp ult i64 %54, -119 br i1 %55, label %.loopexit, label %.critedge95 -.loopexit: ; preds = %.lr.ph, %FSEv06_decompress.exit, %17 - %.075 = phi i64 [ %21, %17 ], [ %54, %FSEv06_decompress.exit ], [ %23, %.lr.ph ] - %.074 = phi i64 [ 0, %17 ], [ %13, %FSEv06_decompress.exit ], [ %25, %.lr.ph ] +.loopexit: ; preds = %.lr.ph, %26 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(68) %1, i8 0, i64 68, i1 false) + br label %.critedge95 + +.loopexit: ; preds = %FSEv06_decompress.exit, %17 + %.075 = phi i64 [ %21, %17 ], [ %54, %FSEv06_decompress.exit ] + %.074 = phi i64 [ 0, %17 ], [ %13, %FSEv06_decompress.exit ] tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(68) %1, i8 0, i64 68, i1 false) %.not91103.not = icmp eq i64 %.075, 0 br i1 %.not91103.not, label %.critedge95, label %.lr.ph106 @@ -5570,7 +5570,7 @@ define i64 @HUFv06_decompress(ptr noundef %0, i64 noundef %1, ptr noundef %2, i6 br label %41 41: ; preds = %7, %4, %30, %14, %11 - %.0 = phi i64 [ %1, %11 ], [ %1, %14 ], [ %40, %30 ], [ -70, %4 ], [ -20, %7 ] + %.0 = phi i64 [ 0, %11 ], [ 0, %14 ], [ %40, %30 ], [ -70, %4 ], [ -20, %7 ] call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %5) #28 ret i64 %.0 } @@ -7711,7 +7711,6 @@ default.unreachable: ; preds = %66, %29 br label %ZSTDv06_copyRawBlock.exit ZSTDv06_copyRawBlock.exit: ; preds = %76, %.thread91, %67 - %77 = phi i64 [ 0, %.thread91 ], [ %64, %67 ], [ %64, %76 ] %.0.i.ph90 = phi i64 [ 0, %.thread91 ], [ %.0.i.ph, %67 ], [ %.0.i.ph, %76 ] %.055 = phi i64 [ 0, %.thread91 ], [ %70, %67 ], [ %.0.i.ph, %76 ] %78 = icmp eq i64 %.0.i.ph90, 0 @@ -7729,7 +7728,7 @@ ZSTDv06_copyRawBlock.exit.thread: ; preds = %71 %83 = getelementptr inbounds nuw i8, ptr %.157113, i64 3 %84 = getelementptr inbounds nuw i8, ptr %.064111, i64 %.055 %85 = getelementptr inbounds nuw i8, ptr %83, i64 %.0.i.ph90 - %86 = sub i64 %77, %.0.i.ph90 + %86 = sub nsw i64 0, %.0.i.ph90 %87 = ptrtoint ptr %85 to i64 %88 = sub i64 %42, %87 %89 = icmp ult i64 %88, 3 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..7c44fa9b410 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/134712 export COMPTIME_MODE=0 # Please rebase manually