diff --git a/bench/abseil-cpp/optimized/salted_seed_seq_test.cc.ll b/bench/abseil-cpp/optimized/salted_seed_seq_test.cc.ll index 0a79f6037b..8521312468 100644 --- a/bench/abseil-cpp/optimized/salted_seed_seq_test.cc.ll +++ b/bench/abseil-cpp/optimized/salted_seed_seq_test.cc.ll @@ -8129,7 +8129,7 @@ invoke.cont: ; preds = %call2.i.i.noexc _ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i: ; preds = %invoke.cont %rhs_.i.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp7, i64 8 - %call.i517 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znam(i64 noundef 16) #23 + %call.i529 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znam(i64 noundef 16) #23 to label %invoke.cont12 unwind label %delete.notnull.i.i14.i delete.notnull.i.i14.i: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i @@ -8138,8 +8138,8 @@ delete.notnull.i.i14.i: ; preds = %_ZN7testing8interna br label %ehcleanup128 invoke.cont12: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %call.i517, ptr noundef nonnull align 16 dereferenceable(16) %expected, i64 16, i1 false) - store ptr %call.i517, ptr %rhs_.i.i.i, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %call.i529, ptr noundef nonnull align 16 dereferenceable(16) %expected, i64 16, i1 false) + store ptr %call.i529, ptr %rhs_.i.i.i, align 8 %size_.i = getelementptr inbounds nuw i8, ptr %ref.tmp7, i64 16 store i64 4, ptr %size_.i, align 8 %clone_.i = getelementptr inbounds nuw i8, ptr %ref.tmp7, i64 24 @@ -8171,7 +8171,7 @@ _ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit: ; preds %tobool.i = trunc i8 %4 to i1 br i1 %tobool.i, label %if.end, label %if.else -lpad: ; preds = %_ZN7testing15AssertionResultD2Ev.exit326, %_ZN7testing15AssertionResultD2Ev.exit201, %call2.i.i.noexc78, %.noexc77, %_ZN7testing15AssertionResultD2Ev.exit, %invoke.cont, %call2.i.i.noexc, %.noexc, %_ZN4absl15random_internal13SaltedSeedSeqISt8seed_seqEC2IiEESt16initializer_listIT_E.exit +lpad: ; preds = %_ZN7testing15AssertionResultD2Ev.exit334, %_ZN7testing15AssertionResultD2Ev.exit205, %call2.i.i.noexc78, %.noexc77, %_ZN7testing15AssertionResultD2Ev.exit, %invoke.cont, %call2.i.i.noexc, %.noexc, %_ZN4absl15random_internal13SaltedSeedSeqISt8seed_seqEC2IiEESt16initializer_listIT_E.exit %5 = landingpad { ptr, i32 } cleanup br label %ehcleanup128 @@ -8302,48 +8302,48 @@ call2.i.i.noexc78: ; preds = %.noexc77 invoke.cont32: ; preds = %call2.i.i.noexc78 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %salt.i.i71) - %rhs_.i.i.i98 = getelementptr inbounds nuw i8, ptr %ref.tmp34, i64 8 - %call.i521 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znam(i64 noundef 16) #23 - to label %invoke.cont40 unwind label %delete.notnull.i.i14.i118 + %rhs_.i.i.i100 = getelementptr inbounds nuw i8, ptr %ref.tmp34, i64 8 + %call.i533 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znam(i64 noundef 16) #23 + to label %invoke.cont40 unwind label %delete.notnull.i.i14.i120 -delete.notnull.i.i14.i118: ; preds = %invoke.cont32 +delete.notnull.i.i14.i120: ; preds = %invoke.cont32 %19 = landingpad { ptr, i32 } cleanup br label %ehcleanup128 invoke.cont40: ; preds = %invoke.cont32 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %call.i521, ptr noundef nonnull align 16 dereferenceable(16) %expected, i64 16, i1 false) - store ptr %call.i521, ptr %rhs_.i.i.i98, align 8 - %size_.i518 = getelementptr inbounds nuw i8, ptr %ref.tmp34, i64 16 - store i64 4, ptr %size_.i518, align 8 - %clone_.i519 = getelementptr inbounds nuw i8, ptr %ref.tmp34, i64 24 - store i64 ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE8InitCopyEPKjm to i64), ptr %clone_.i519, align 8 - %clone_.repack4.i520 = getelementptr inbounds nuw i8, ptr %ref.tmp34, i64 32 - store i64 0, ptr %clone_.repack4.i520, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %call.i533, ptr noundef nonnull align 16 dereferenceable(16) %expected, i64 16, i1 false) + store ptr %call.i533, ptr %rhs_.i.i.i100, align 8 + %size_.i530 = getelementptr inbounds nuw i8, ptr %ref.tmp34, i64 16 + store i64 4, ptr %size_.i530, align 8 + %clone_.i531 = getelementptr inbounds nuw i8, ptr %ref.tmp34, i64 24 + store i64 ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE8InitCopyEPKjm to i64), ptr %clone_.i531, align 8 + %clone_.repack4.i532 = getelementptr inbounds nuw i8, ptr %ref.tmp34, i64 32 + store i64 0, ptr %clone_.repack4.i532, align 8 invoke void @_ZNK7testing8internal29PredicateFormatterFromMatcherINS0_16PointwiseMatcherINS0_10Eq2MatcherEA4_jEEEclIS4_EENS_15AssertionResultEPKcRKT_(ptr nonnull sret(%"class.testing::AssertionResult") align 8 %gtest_ar33, ptr noundef nonnull align 8 dereferenceable(40) %ref.tmp34, ptr noundef nonnull @.str.64, ptr noundef nonnull align 4 dereferenceable(16) %seed_material29) to label %invoke.cont42 unwind label %lpad41 invoke.cont42: ; preds = %invoke.cont40 - %.unpack.i.i.i134 = load i64, ptr %clone_.i519, align 8 - %.unpack2.i.i.i136 = load i64, ptr %clone_.repack4.i520, align 8 - %cmp.ptr.i.i.i137 = icmp ne i64 %.unpack.i.i.i134, ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE7InitRefEPKjm to i64) - %cmp.adj.i.i.i138 = icmp ne i64 %.unpack2.i.i.i136, 0 - %memptr.ne.i.i.i139 = or i1 %cmp.ptr.i.i.i137, %cmp.adj.i.i.i138 - br i1 %memptr.ne.i.i.i139, label %if.then.i.i.i140, label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit156 - -if.then.i.i.i140: ; preds = %invoke.cont42 - %20 = load ptr, ptr %rhs_.i.i.i98, align 8 - %isnull.i.i.i142 = icmp eq ptr %20, null - br i1 %isnull.i.i.i142, label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit156, label %delete.notnull.i.i.i143 - -delete.notnull.i.i.i143: ; preds = %if.then.i.i.i140 + %.unpack.i.i.i138 = load i64, ptr %clone_.i531, align 8 + %.unpack2.i.i.i140 = load i64, ptr %clone_.repack4.i532, align 8 + %cmp.ptr.i.i.i141 = icmp ne i64 %.unpack.i.i.i138, ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE7InitRefEPKjm to i64) + %cmp.adj.i.i.i142 = icmp ne i64 %.unpack2.i.i.i140, 0 + %memptr.ne.i.i.i143 = or i1 %cmp.ptr.i.i.i141, %cmp.adj.i.i.i142 + br i1 %memptr.ne.i.i.i143, label %if.then.i.i.i144, label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit160 + +if.then.i.i.i144: ; preds = %invoke.cont42 + %20 = load ptr, ptr %rhs_.i.i.i100, align 8 + %isnull.i.i.i146 = icmp eq ptr %20, null + br i1 %isnull.i.i.i146, label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit160, label %delete.notnull.i.i.i147 + +delete.notnull.i.i.i147: ; preds = %if.then.i.i.i144 call void @_ZdaPv(ptr noundef nonnull %20) #22 - br label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit156 + br label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit160 -_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit156: ; preds = %delete.notnull.i.i.i143, %if.then.i.i.i140, %invoke.cont42 +_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit160: ; preds = %delete.notnull.i.i.i147, %if.then.i.i.i144, %invoke.cont42 %21 = load i8, ptr %gtest_ar33, align 8 - %tobool.i157 = trunc i8 %21 to i1 - br i1 %tobool.i157, label %if.end60, label %if.else47 + %tobool.i161 = trunc i8 %21 to i1 + br i1 %tobool.i161, label %if.end60, label %if.else47 ehcleanup28: ; preds = %_ZN7testing7MessageD2Ev.exit68, %lpad17 %.pn2.pn = phi { ptr, i32 } [ %.pn2, %_ZN7testing7MessageD2Ev.exit68 ], [ %11, %lpad17 ] @@ -8353,39 +8353,39 @@ ehcleanup28: ; preds = %_ZN7testing7Message lpad41: ; preds = %invoke.cont40 %22 = landingpad { ptr, i32 } cleanup - %.unpack.i.i.i159 = load i64, ptr %clone_.i519, align 8 - %.unpack2.i.i.i161 = load i64, ptr %clone_.repack4.i520, align 8 - %cmp.ptr.i.i.i162 = icmp ne i64 %.unpack.i.i.i159, ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE7InitRefEPKjm to i64) - %cmp.adj.i.i.i163 = icmp ne i64 %.unpack2.i.i.i161, 0 - %memptr.ne.i.i.i164 = or i1 %cmp.ptr.i.i.i162, %cmp.adj.i.i.i163 - br i1 %memptr.ne.i.i.i164, label %if.then.i.i.i165, label %ehcleanup128 + %.unpack.i.i.i163 = load i64, ptr %clone_.i531, align 8 + %.unpack2.i.i.i165 = load i64, ptr %clone_.repack4.i532, align 8 + %cmp.ptr.i.i.i166 = icmp ne i64 %.unpack.i.i.i163, ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE7InitRefEPKjm to i64) + %cmp.adj.i.i.i167 = icmp ne i64 %.unpack2.i.i.i165, 0 + %memptr.ne.i.i.i168 = or i1 %cmp.ptr.i.i.i166, %cmp.adj.i.i.i167 + br i1 %memptr.ne.i.i.i168, label %if.then.i.i.i169, label %ehcleanup128 -if.then.i.i.i165: ; preds = %lpad41 - %23 = load ptr, ptr %rhs_.i.i.i98, align 8 - %isnull.i.i.i167 = icmp eq ptr %23, null - br i1 %isnull.i.i.i167, label %ehcleanup128, label %delete.notnull.i.i.i168 +if.then.i.i.i169: ; preds = %lpad41 + %23 = load ptr, ptr %rhs_.i.i.i100, align 8 + %isnull.i.i.i171 = icmp eq ptr %23, null + br i1 %isnull.i.i.i171, label %ehcleanup128, label %delete.notnull.i.i.i172 -delete.notnull.i.i.i168: ; preds = %if.then.i.i.i165 +delete.notnull.i.i.i172: ; preds = %if.then.i.i.i169 call void @_ZdaPv(ptr noundef nonnull %23) #22 br label %ehcleanup128 -if.else47: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit156 +if.else47: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit160 invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp48) to label %invoke.cont50 unwind label %lpad49 invoke.cont50: ; preds = %if.else47 - %message_.i.i182 = getelementptr inbounds nuw i8, ptr %gtest_ar33, i64 8 - %24 = load ptr, ptr %message_.i.i182, align 8 - %cmp.i.i.not.i.i183 = icmp eq ptr %24, null - br i1 %cmp.i.i.not.i.i183, label %invoke.cont53, label %cond.true.i.i184 + %message_.i.i186 = getelementptr inbounds nuw i8, ptr %gtest_ar33, i64 8 + %24 = load ptr, ptr %message_.i.i186, align 8 + %cmp.i.i.not.i.i187 = icmp eq ptr %24, null + br i1 %cmp.i.i.not.i.i187, label %invoke.cont53, label %cond.true.i.i188 -cond.true.i.i184: ; preds = %invoke.cont50 - %call4.i.i185 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %24) #21 +cond.true.i.i188: ; preds = %invoke.cont50 + %call4.i.i189 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %24) #21 br label %invoke.cont53 -invoke.cont53: ; preds = %cond.true.i.i184, %invoke.cont50 - %cond.i.i186 = phi ptr [ %call4.i.i185, %cond.true.i.i184 ], [ @.str.20, %invoke.cont50 ] - invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp51, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 152, ptr noundef %cond.i.i186) +invoke.cont53: ; preds = %cond.true.i.i188, %invoke.cont50 + %cond.i.i190 = phi ptr [ %call4.i.i189, %cond.true.i.i188 ], [ @.str.20, %invoke.cont50 ] + invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp51, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 152, ptr noundef %cond.i.i190) to label %invoke.cont55 unwind label %lpad52 invoke.cont55: ; preds = %invoke.cont53 @@ -8395,17 +8395,17 @@ invoke.cont55: ; preds = %invoke.cont53 invoke.cont57: ; preds = %invoke.cont55 call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp51) #21 %25 = load ptr, ptr %ref.tmp48, align 8 - %cmp.not.i.i188 = icmp eq ptr %25, null - br i1 %cmp.not.i.i188, label %_ZN7testing7MessageD2Ev.exit192, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i189 + %cmp.not.i.i192 = icmp eq ptr %25, null + br i1 %cmp.not.i.i192, label %_ZN7testing7MessageD2Ev.exit196, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i193 -_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i189: ; preds = %invoke.cont57 - %vtable.i.i.i190 = load ptr, ptr %25, align 8 - %vfn.i.i.i191 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i190, i64 8 - %26 = load ptr, ptr %vfn.i.i.i191, align 8 +_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i193: ; preds = %invoke.cont57 + %vtable.i.i.i194 = load ptr, ptr %25, align 8 + %vfn.i.i.i195 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i194, i64 8 + %26 = load ptr, ptr %vfn.i.i.i195, align 8 call void %26(ptr noundef nonnull align 8 dereferenceable(128) %25) #21 - br label %_ZN7testing7MessageD2Ev.exit192 + br label %_ZN7testing7MessageD2Ev.exit196 -_ZN7testing7MessageD2Ev.exit192: ; preds = %invoke.cont57, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i189 +_ZN7testing7MessageD2Ev.exit196: ; preds = %invoke.cont57, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i193 store ptr null, ptr %ref.tmp48, align 8 br label %if.end60 @@ -8428,122 +8428,122 @@ lpad56: ; preds = %invoke.cont55 ehcleanup59: ; preds = %lpad56, %lpad52 %.pn7 = phi { ptr, i32 } [ %29, %lpad56 ], [ %28, %lpad52 ] %30 = load ptr, ptr %ref.tmp48, align 8 - %cmp.not.i.i193 = icmp eq ptr %30, null - br i1 %cmp.not.i.i193, label %_ZN7testing7MessageD2Ev.exit197, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i194 + %cmp.not.i.i197 = icmp eq ptr %30, null + br i1 %cmp.not.i.i197, label %_ZN7testing7MessageD2Ev.exit201, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i198 -_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i194: ; preds = %ehcleanup59 - %vtable.i.i.i195 = load ptr, ptr %30, align 8 - %vfn.i.i.i196 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i195, i64 8 - %31 = load ptr, ptr %vfn.i.i.i196, align 8 +_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i198: ; preds = %ehcleanup59 + %vtable.i.i.i199 = load ptr, ptr %30, align 8 + %vfn.i.i.i200 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i199, i64 8 + %31 = load ptr, ptr %vfn.i.i.i200, align 8 call void %31(ptr noundef nonnull align 8 dereferenceable(128) %30) #21 - br label %_ZN7testing7MessageD2Ev.exit197 + br label %_ZN7testing7MessageD2Ev.exit201 -_ZN7testing7MessageD2Ev.exit197: ; preds = %ehcleanup59, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i194 +_ZN7testing7MessageD2Ev.exit201: ; preds = %ehcleanup59, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i198 store ptr null, ptr %ref.tmp48, align 8 br label %ehcleanup61 -if.end60: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit156, %_ZN7testing7MessageD2Ev.exit192 - %message_.i198 = getelementptr inbounds nuw i8, ptr %gtest_ar33, i64 8 - %32 = load ptr, ptr %message_.i198, align 8 - %cmp.not.i.i199 = icmp eq ptr %32, null - br i1 %cmp.not.i.i199, label %_ZN7testing15AssertionResultD2Ev.exit201, label %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i200 +if.end60: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit160, %_ZN7testing7MessageD2Ev.exit196 + %message_.i202 = getelementptr inbounds nuw i8, ptr %gtest_ar33, i64 8 + %32 = load ptr, ptr %message_.i202, align 8 + %cmp.not.i.i203 = icmp eq ptr %32, null + br i1 %cmp.not.i.i203, label %_ZN7testing15AssertionResultD2Ev.exit205, label %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i204 -_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i200: ; preds = %if.end60 +_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i204: ; preds = %if.end60 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #21 call void @_ZdlPv(ptr noundef nonnull %32) #22 - br label %_ZN7testing15AssertionResultD2Ev.exit201 + br label %_ZN7testing15AssertionResultD2Ev.exit205 -_ZN7testing15AssertionResultD2Ev.exit201: ; preds = %if.end60, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i200 - store ptr null, ptr %message_.i198, align 8 - %add.ptr.i202 = getelementptr inbounds nuw i8, ptr %seed_material62, i64 32 - invoke void @_ZN4absl15random_internal13SaltedSeedSeqISt8seed_seqE13generate_implIPmEEvNS3_10DefaultTagET_S7_m(ptr noundef nonnull align 8 dereferenceable(8) %seq, ptr noundef nonnull %seed_material62, ptr noundef nonnull %add.ptr.i202, i64 noundef 4) - to label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i232 unwind label %lpad +_ZN7testing15AssertionResultD2Ev.exit205: ; preds = %if.end60, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i204 + store ptr null, ptr %message_.i202, align 8 + %add.ptr.i206 = getelementptr inbounds nuw i8, ptr %seed_material62, i64 32 + invoke void @_ZN4absl15random_internal13SaltedSeedSeqISt8seed_seqE13generate_implIPmEEvNS3_10DefaultTagET_S7_m(ptr noundef nonnull align 8 dereferenceable(8) %seq, ptr noundef nonnull %seed_material62, ptr noundef nonnull %add.ptr.i206, i64 noundef 4) + to label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i238 unwind label %lpad -_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i232: ; preds = %_ZN7testing15AssertionResultD2Ev.exit201 - %rhs_.i.i.i223 = getelementptr inbounds nuw i8, ptr %ref.tmp67, i64 8 - %call.i526 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znam(i64 noundef 16) #23 - to label %invoke.cont73 unwind label %delete.notnull.i.i14.i243 +_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i238: ; preds = %_ZN7testing15AssertionResultD2Ev.exit205 + %rhs_.i.i.i229 = getelementptr inbounds nuw i8, ptr %ref.tmp67, i64 8 + %call.i538 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znam(i64 noundef 16) #23 + to label %invoke.cont73 unwind label %delete.notnull.i.i14.i249 -delete.notnull.i.i14.i243: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i232 +delete.notnull.i.i14.i249: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i238 %33 = landingpad { ptr, i32 } cleanup br label %ehcleanup128 -invoke.cont73: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i232 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %call.i526, ptr noundef nonnull align 16 dereferenceable(16) %expected, i64 16, i1 false) - store ptr %call.i526, ptr %rhs_.i.i.i223, align 8 - %size_.i523 = getelementptr inbounds nuw i8, ptr %ref.tmp67, i64 16 - store i64 4, ptr %size_.i523, align 8 - %clone_.i524 = getelementptr inbounds nuw i8, ptr %ref.tmp67, i64 24 - store i64 ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE8InitCopyEPKjm to i64), ptr %clone_.i524, align 8 - %clone_.repack4.i525 = getelementptr inbounds nuw i8, ptr %ref.tmp67, i64 32 - store i64 0, ptr %clone_.repack4.i525, align 8 +invoke.cont73: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i238 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %call.i538, ptr noundef nonnull align 16 dereferenceable(16) %expected, i64 16, i1 false) + store ptr %call.i538, ptr %rhs_.i.i.i229, align 8 + %size_.i535 = getelementptr inbounds nuw i8, ptr %ref.tmp67, i64 16 + store i64 4, ptr %size_.i535, align 8 + %clone_.i536 = getelementptr inbounds nuw i8, ptr %ref.tmp67, i64 24 + store i64 ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE8InitCopyEPKjm to i64), ptr %clone_.i536, align 8 + %clone_.repack4.i537 = getelementptr inbounds nuw i8, ptr %ref.tmp67, i64 32 + store i64 0, ptr %clone_.repack4.i537, align 8 invoke void @_ZNK7testing8internal29PredicateFormatterFromMatcherINS0_16PointwiseMatcherINS0_10Eq2MatcherEA4_jEEEclIA4_mEENS_15AssertionResultEPKcRKT_(ptr nonnull sret(%"class.testing::AssertionResult") align 8 %gtest_ar66, ptr noundef nonnull align 8 dereferenceable(40) %ref.tmp67, ptr noundef nonnull @.str.64, ptr noundef nonnull align 8 dereferenceable(32) %seed_material62) to label %invoke.cont75 unwind label %lpad74 invoke.cont75: ; preds = %invoke.cont73 - %.unpack.i.i.i259 = load i64, ptr %clone_.i524, align 8 - %.unpack2.i.i.i261 = load i64, ptr %clone_.repack4.i525, align 8 - %cmp.ptr.i.i.i262 = icmp ne i64 %.unpack.i.i.i259, ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE7InitRefEPKjm to i64) - %cmp.adj.i.i.i263 = icmp ne i64 %.unpack2.i.i.i261, 0 - %memptr.ne.i.i.i264 = or i1 %cmp.ptr.i.i.i262, %cmp.adj.i.i.i263 - br i1 %memptr.ne.i.i.i264, label %if.then.i.i.i265, label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit281 - -if.then.i.i.i265: ; preds = %invoke.cont75 - %34 = load ptr, ptr %rhs_.i.i.i223, align 8 - %isnull.i.i.i267 = icmp eq ptr %34, null - br i1 %isnull.i.i.i267, label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit281, label %delete.notnull.i.i.i268 - -delete.notnull.i.i.i268: ; preds = %if.then.i.i.i265 + %.unpack.i.i.i267 = load i64, ptr %clone_.i536, align 8 + %.unpack2.i.i.i269 = load i64, ptr %clone_.repack4.i537, align 8 + %cmp.ptr.i.i.i270 = icmp ne i64 %.unpack.i.i.i267, ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE7InitRefEPKjm to i64) + %cmp.adj.i.i.i271 = icmp ne i64 %.unpack2.i.i.i269, 0 + %memptr.ne.i.i.i272 = or i1 %cmp.ptr.i.i.i270, %cmp.adj.i.i.i271 + br i1 %memptr.ne.i.i.i272, label %if.then.i.i.i273, label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit289 + +if.then.i.i.i273: ; preds = %invoke.cont75 + %34 = load ptr, ptr %rhs_.i.i.i229, align 8 + %isnull.i.i.i275 = icmp eq ptr %34, null + br i1 %isnull.i.i.i275, label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit289, label %delete.notnull.i.i.i276 + +delete.notnull.i.i.i276: ; preds = %if.then.i.i.i273 call void @_ZdaPv(ptr noundef nonnull %34) #22 - br label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit281 + br label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit289 -_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit281: ; preds = %delete.notnull.i.i.i268, %if.then.i.i.i265, %invoke.cont75 +_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit289: ; preds = %delete.notnull.i.i.i276, %if.then.i.i.i273, %invoke.cont75 %35 = load i8, ptr %gtest_ar66, align 8 - %tobool.i282 = trunc i8 %35 to i1 - br i1 %tobool.i282, label %if.end93, label %if.else80 + %tobool.i290 = trunc i8 %35 to i1 + br i1 %tobool.i290, label %if.end93, label %if.else80 -ehcleanup61: ; preds = %_ZN7testing7MessageD2Ev.exit197, %lpad49 - %.pn7.pn = phi { ptr, i32 } [ %.pn7, %_ZN7testing7MessageD2Ev.exit197 ], [ %27, %lpad49 ] +ehcleanup61: ; preds = %_ZN7testing7MessageD2Ev.exit201, %lpad49 + %.pn7.pn = phi { ptr, i32 } [ %.pn7, %_ZN7testing7MessageD2Ev.exit201 ], [ %27, %lpad49 ] call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %gtest_ar33) #21 br label %ehcleanup128 lpad74: ; preds = %invoke.cont73 %36 = landingpad { ptr, i32 } cleanup - %.unpack.i.i.i284 = load i64, ptr %clone_.i524, align 8 - %.unpack2.i.i.i286 = load i64, ptr %clone_.repack4.i525, align 8 - %cmp.ptr.i.i.i287 = icmp ne i64 %.unpack.i.i.i284, ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE7InitRefEPKjm to i64) - %cmp.adj.i.i.i288 = icmp ne i64 %.unpack2.i.i.i286, 0 - %memptr.ne.i.i.i289 = or i1 %cmp.ptr.i.i.i287, %cmp.adj.i.i.i288 - br i1 %memptr.ne.i.i.i289, label %if.then.i.i.i290, label %ehcleanup128 + %.unpack.i.i.i292 = load i64, ptr %clone_.i536, align 8 + %.unpack2.i.i.i294 = load i64, ptr %clone_.repack4.i537, align 8 + %cmp.ptr.i.i.i295 = icmp ne i64 %.unpack.i.i.i292, ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE7InitRefEPKjm to i64) + %cmp.adj.i.i.i296 = icmp ne i64 %.unpack2.i.i.i294, 0 + %memptr.ne.i.i.i297 = or i1 %cmp.ptr.i.i.i295, %cmp.adj.i.i.i296 + br i1 %memptr.ne.i.i.i297, label %if.then.i.i.i298, label %ehcleanup128 -if.then.i.i.i290: ; preds = %lpad74 - %37 = load ptr, ptr %rhs_.i.i.i223, align 8 - %isnull.i.i.i292 = icmp eq ptr %37, null - br i1 %isnull.i.i.i292, label %ehcleanup128, label %delete.notnull.i.i.i293 +if.then.i.i.i298: ; preds = %lpad74 + %37 = load ptr, ptr %rhs_.i.i.i229, align 8 + %isnull.i.i.i300 = icmp eq ptr %37, null + br i1 %isnull.i.i.i300, label %ehcleanup128, label %delete.notnull.i.i.i301 -delete.notnull.i.i.i293: ; preds = %if.then.i.i.i290 +delete.notnull.i.i.i301: ; preds = %if.then.i.i.i298 call void @_ZdaPv(ptr noundef nonnull %37) #22 br label %ehcleanup128 -if.else80: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit281 +if.else80: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit289 invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp81) to label %invoke.cont83 unwind label %lpad82 invoke.cont83: ; preds = %if.else80 - %message_.i.i307 = getelementptr inbounds nuw i8, ptr %gtest_ar66, i64 8 - %38 = load ptr, ptr %message_.i.i307, align 8 - %cmp.i.i.not.i.i308 = icmp eq ptr %38, null - br i1 %cmp.i.i.not.i.i308, label %invoke.cont86, label %cond.true.i.i309 + %message_.i.i315 = getelementptr inbounds nuw i8, ptr %gtest_ar66, i64 8 + %38 = load ptr, ptr %message_.i.i315, align 8 + %cmp.i.i.not.i.i316 = icmp eq ptr %38, null + br i1 %cmp.i.i.not.i.i316, label %invoke.cont86, label %cond.true.i.i317 -cond.true.i.i309: ; preds = %invoke.cont83 - %call4.i.i310 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %38) #21 +cond.true.i.i317: ; preds = %invoke.cont83 + %call4.i.i318 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %38) #21 br label %invoke.cont86 -invoke.cont86: ; preds = %cond.true.i.i309, %invoke.cont83 - %cond.i.i311 = phi ptr [ %call4.i.i310, %cond.true.i.i309 ], [ @.str.20, %invoke.cont83 ] - invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp84, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 159, ptr noundef %cond.i.i311) +invoke.cont86: ; preds = %cond.true.i.i317, %invoke.cont83 + %cond.i.i319 = phi ptr [ %call4.i.i318, %cond.true.i.i317 ], [ @.str.20, %invoke.cont83 ] + invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp84, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 159, ptr noundef %cond.i.i319) to label %invoke.cont88 unwind label %lpad85 invoke.cont88: ; preds = %invoke.cont86 @@ -8553,17 +8553,17 @@ invoke.cont88: ; preds = %invoke.cont86 invoke.cont90: ; preds = %invoke.cont88 call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp84) #21 %39 = load ptr, ptr %ref.tmp81, align 8 - %cmp.not.i.i313 = icmp eq ptr %39, null - br i1 %cmp.not.i.i313, label %_ZN7testing7MessageD2Ev.exit317, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i314 + %cmp.not.i.i321 = icmp eq ptr %39, null + br i1 %cmp.not.i.i321, label %_ZN7testing7MessageD2Ev.exit325, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i322 -_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i314: ; preds = %invoke.cont90 - %vtable.i.i.i315 = load ptr, ptr %39, align 8 - %vfn.i.i.i316 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i315, i64 8 - %40 = load ptr, ptr %vfn.i.i.i316, align 8 +_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i322: ; preds = %invoke.cont90 + %vtable.i.i.i323 = load ptr, ptr %39, align 8 + %vfn.i.i.i324 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i323, i64 8 + %40 = load ptr, ptr %vfn.i.i.i324, align 8 call void %40(ptr noundef nonnull align 8 dereferenceable(128) %39) #21 - br label %_ZN7testing7MessageD2Ev.exit317 + br label %_ZN7testing7MessageD2Ev.exit325 -_ZN7testing7MessageD2Ev.exit317: ; preds = %invoke.cont90, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i314 +_ZN7testing7MessageD2Ev.exit325: ; preds = %invoke.cont90, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i322 store ptr null, ptr %ref.tmp81, align 8 br label %if.end93 @@ -8586,122 +8586,122 @@ lpad89: ; preds = %invoke.cont88 ehcleanup92: ; preds = %lpad89, %lpad85 %.pn12 = phi { ptr, i32 } [ %43, %lpad89 ], [ %42, %lpad85 ] %44 = load ptr, ptr %ref.tmp81, align 8 - %cmp.not.i.i318 = icmp eq ptr %44, null - br i1 %cmp.not.i.i318, label %_ZN7testing7MessageD2Ev.exit322, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i319 + %cmp.not.i.i326 = icmp eq ptr %44, null + br i1 %cmp.not.i.i326, label %_ZN7testing7MessageD2Ev.exit330, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i327 -_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i319: ; preds = %ehcleanup92 - %vtable.i.i.i320 = load ptr, ptr %44, align 8 - %vfn.i.i.i321 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i320, i64 8 - %45 = load ptr, ptr %vfn.i.i.i321, align 8 +_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i327: ; preds = %ehcleanup92 + %vtable.i.i.i328 = load ptr, ptr %44, align 8 + %vfn.i.i.i329 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i328, i64 8 + %45 = load ptr, ptr %vfn.i.i.i329, align 8 call void %45(ptr noundef nonnull align 8 dereferenceable(128) %44) #21 - br label %_ZN7testing7MessageD2Ev.exit322 + br label %_ZN7testing7MessageD2Ev.exit330 -_ZN7testing7MessageD2Ev.exit322: ; preds = %ehcleanup92, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i319 +_ZN7testing7MessageD2Ev.exit330: ; preds = %ehcleanup92, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i327 store ptr null, ptr %ref.tmp81, align 8 br label %ehcleanup94 -if.end93: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit281, %_ZN7testing7MessageD2Ev.exit317 - %message_.i323 = getelementptr inbounds nuw i8, ptr %gtest_ar66, i64 8 - %46 = load ptr, ptr %message_.i323, align 8 - %cmp.not.i.i324 = icmp eq ptr %46, null - br i1 %cmp.not.i.i324, label %_ZN7testing15AssertionResultD2Ev.exit326, label %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i325 +if.end93: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit289, %_ZN7testing7MessageD2Ev.exit325 + %message_.i331 = getelementptr inbounds nuw i8, ptr %gtest_ar66, i64 8 + %46 = load ptr, ptr %message_.i331, align 8 + %cmp.not.i.i332 = icmp eq ptr %46, null + br i1 %cmp.not.i.i332, label %_ZN7testing15AssertionResultD2Ev.exit334, label %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i333 -_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i325: ; preds = %if.end93 +_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i333: ; preds = %if.end93 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #21 call void @_ZdlPv(ptr noundef nonnull %46) #22 - br label %_ZN7testing15AssertionResultD2Ev.exit326 + br label %_ZN7testing15AssertionResultD2Ev.exit334 -_ZN7testing15AssertionResultD2Ev.exit326: ; preds = %if.end93, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i325 - store ptr null, ptr %message_.i323, align 8 - %add.ptr.i327 = getelementptr inbounds nuw i8, ptr %seed_material95, i64 32 - invoke void @_ZN4absl15random_internal13SaltedSeedSeqISt8seed_seqE13generate_implIPlEEvNS3_10DefaultTagET_S7_m(ptr noundef nonnull align 8 dereferenceable(8) %seq, ptr noundef nonnull %seed_material95, ptr noundef nonnull %add.ptr.i327, i64 noundef 4) - to label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i356 unwind label %lpad +_ZN7testing15AssertionResultD2Ev.exit334: ; preds = %if.end93, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i333 + store ptr null, ptr %message_.i331, align 8 + %add.ptr.i335 = getelementptr inbounds nuw i8, ptr %seed_material95, i64 32 + invoke void @_ZN4absl15random_internal13SaltedSeedSeqISt8seed_seqE13generate_implIPlEEvNS3_10DefaultTagET_S7_m(ptr noundef nonnull align 8 dereferenceable(8) %seq, ptr noundef nonnull %seed_material95, ptr noundef nonnull %add.ptr.i335, i64 noundef 4) + to label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i366 unwind label %lpad -_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i356: ; preds = %_ZN7testing15AssertionResultD2Ev.exit326 - %rhs_.i.i.i347 = getelementptr inbounds nuw i8, ptr %ref.tmp100, i64 8 - %call.i531 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znam(i64 noundef 16) #23 - to label %invoke.cont106 unwind label %delete.notnull.i.i14.i367 +_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i366: ; preds = %_ZN7testing15AssertionResultD2Ev.exit334 + %rhs_.i.i.i357 = getelementptr inbounds nuw i8, ptr %ref.tmp100, i64 8 + %call.i543 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znam(i64 noundef 16) #23 + to label %invoke.cont106 unwind label %delete.notnull.i.i14.i377 -delete.notnull.i.i14.i367: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i356 +delete.notnull.i.i14.i377: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i366 %47 = landingpad { ptr, i32 } cleanup br label %ehcleanup128 -invoke.cont106: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i356 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %call.i531, ptr noundef nonnull align 16 dereferenceable(16) %expected, i64 16, i1 false) - store ptr %call.i531, ptr %rhs_.i.i.i347, align 8 - %size_.i528 = getelementptr inbounds nuw i8, ptr %ref.tmp100, i64 16 - store i64 4, ptr %size_.i528, align 8 - %clone_.i529 = getelementptr inbounds nuw i8, ptr %ref.tmp100, i64 24 - store i64 ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE8InitCopyEPKjm to i64), ptr %clone_.i529, align 8 - %clone_.repack4.i530 = getelementptr inbounds nuw i8, ptr %ref.tmp100, i64 32 - store i64 0, ptr %clone_.repack4.i530, align 8 +invoke.cont106: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jEC2EOS4_.exit.i.i366 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %call.i543, ptr noundef nonnull align 16 dereferenceable(16) %expected, i64 16, i1 false) + store ptr %call.i543, ptr %rhs_.i.i.i357, align 8 + %size_.i540 = getelementptr inbounds nuw i8, ptr %ref.tmp100, i64 16 + store i64 4, ptr %size_.i540, align 8 + %clone_.i541 = getelementptr inbounds nuw i8, ptr %ref.tmp100, i64 24 + store i64 ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE8InitCopyEPKjm to i64), ptr %clone_.i541, align 8 + %clone_.repack4.i542 = getelementptr inbounds nuw i8, ptr %ref.tmp100, i64 32 + store i64 0, ptr %clone_.repack4.i542, align 8 invoke void @_ZNK7testing8internal29PredicateFormatterFromMatcherINS0_16PointwiseMatcherINS0_10Eq2MatcherEA4_jEEEclIA4_lEENS_15AssertionResultEPKcRKT_(ptr nonnull sret(%"class.testing::AssertionResult") align 8 %gtest_ar99, ptr noundef nonnull align 8 dereferenceable(40) %ref.tmp100, ptr noundef nonnull @.str.64, ptr noundef nonnull align 8 dereferenceable(32) %seed_material95) to label %invoke.cont108 unwind label %lpad107 invoke.cont108: ; preds = %invoke.cont106 - %.unpack.i.i.i383 = load i64, ptr %clone_.i529, align 8 - %.unpack2.i.i.i385 = load i64, ptr %clone_.repack4.i530, align 8 - %cmp.ptr.i.i.i386 = icmp ne i64 %.unpack.i.i.i383, ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE7InitRefEPKjm to i64) - %cmp.adj.i.i.i387 = icmp ne i64 %.unpack2.i.i.i385, 0 - %memptr.ne.i.i.i388 = or i1 %cmp.ptr.i.i.i386, %cmp.adj.i.i.i387 - br i1 %memptr.ne.i.i.i388, label %if.then.i.i.i389, label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit405 - -if.then.i.i.i389: ; preds = %invoke.cont108 - %48 = load ptr, ptr %rhs_.i.i.i347, align 8 - %isnull.i.i.i391 = icmp eq ptr %48, null - br i1 %isnull.i.i.i391, label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit405, label %delete.notnull.i.i.i392 - -delete.notnull.i.i.i392: ; preds = %if.then.i.i.i389 + %.unpack.i.i.i395 = load i64, ptr %clone_.i541, align 8 + %.unpack2.i.i.i397 = load i64, ptr %clone_.repack4.i542, align 8 + %cmp.ptr.i.i.i398 = icmp ne i64 %.unpack.i.i.i395, ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE7InitRefEPKjm to i64) + %cmp.adj.i.i.i399 = icmp ne i64 %.unpack2.i.i.i397, 0 + %memptr.ne.i.i.i400 = or i1 %cmp.ptr.i.i.i398, %cmp.adj.i.i.i399 + br i1 %memptr.ne.i.i.i400, label %if.then.i.i.i401, label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit417 + +if.then.i.i.i401: ; preds = %invoke.cont108 + %48 = load ptr, ptr %rhs_.i.i.i357, align 8 + %isnull.i.i.i403 = icmp eq ptr %48, null + br i1 %isnull.i.i.i403, label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit417, label %delete.notnull.i.i.i404 + +delete.notnull.i.i.i404: ; preds = %if.then.i.i.i401 call void @_ZdaPv(ptr noundef nonnull %48) #22 - br label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit405 + br label %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit417 -_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit405: ; preds = %delete.notnull.i.i.i392, %if.then.i.i.i389, %invoke.cont108 +_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit417: ; preds = %delete.notnull.i.i.i404, %if.then.i.i.i401, %invoke.cont108 %49 = load i8, ptr %gtest_ar99, align 8 - %tobool.i406 = trunc i8 %49 to i1 - br i1 %tobool.i406, label %if.end126, label %if.else113 + %tobool.i418 = trunc i8 %49 to i1 + br i1 %tobool.i418, label %if.end126, label %if.else113 -ehcleanup94: ; preds = %_ZN7testing7MessageD2Ev.exit322, %lpad82 - %.pn12.pn = phi { ptr, i32 } [ %.pn12, %_ZN7testing7MessageD2Ev.exit322 ], [ %41, %lpad82 ] +ehcleanup94: ; preds = %_ZN7testing7MessageD2Ev.exit330, %lpad82 + %.pn12.pn = phi { ptr, i32 } [ %.pn12, %_ZN7testing7MessageD2Ev.exit330 ], [ %41, %lpad82 ] call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %gtest_ar66) #21 br label %ehcleanup128 lpad107: ; preds = %invoke.cont106 %50 = landingpad { ptr, i32 } cleanup - %.unpack.i.i.i408 = load i64, ptr %clone_.i529, align 8 - %.unpack2.i.i.i410 = load i64, ptr %clone_.repack4.i530, align 8 - %cmp.ptr.i.i.i411 = icmp ne i64 %.unpack.i.i.i408, ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE7InitRefEPKjm to i64) - %cmp.adj.i.i.i412 = icmp ne i64 %.unpack2.i.i.i410, 0 - %memptr.ne.i.i.i413 = or i1 %cmp.ptr.i.i.i411, %cmp.adj.i.i.i412 - br i1 %memptr.ne.i.i.i413, label %if.then.i.i.i414, label %ehcleanup128 + %.unpack.i.i.i420 = load i64, ptr %clone_.i541, align 8 + %.unpack2.i.i.i422 = load i64, ptr %clone_.repack4.i542, align 8 + %cmp.ptr.i.i.i423 = icmp ne i64 %.unpack.i.i.i420, ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE7InitRefEPKjm to i64) + %cmp.adj.i.i.i424 = icmp ne i64 %.unpack2.i.i.i422, 0 + %memptr.ne.i.i.i425 = or i1 %cmp.ptr.i.i.i423, %cmp.adj.i.i.i424 + br i1 %memptr.ne.i.i.i425, label %if.then.i.i.i426, label %ehcleanup128 -if.then.i.i.i414: ; preds = %lpad107 - %51 = load ptr, ptr %rhs_.i.i.i347, align 8 - %isnull.i.i.i416 = icmp eq ptr %51, null - br i1 %isnull.i.i.i416, label %ehcleanup128, label %delete.notnull.i.i.i417 +if.then.i.i.i426: ; preds = %lpad107 + %51 = load ptr, ptr %rhs_.i.i.i357, align 8 + %isnull.i.i.i428 = icmp eq ptr %51, null + br i1 %isnull.i.i.i428, label %ehcleanup128, label %delete.notnull.i.i.i429 -delete.notnull.i.i.i417: ; preds = %if.then.i.i.i414 +delete.notnull.i.i.i429: ; preds = %if.then.i.i.i426 call void @_ZdaPv(ptr noundef nonnull %51) #22 br label %ehcleanup128 -if.else113: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit405 +if.else113: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit417 invoke void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp114) to label %invoke.cont116 unwind label %lpad115 invoke.cont116: ; preds = %if.else113 - %message_.i.i431 = getelementptr inbounds nuw i8, ptr %gtest_ar99, i64 8 - %52 = load ptr, ptr %message_.i.i431, align 8 - %cmp.i.i.not.i.i432 = icmp eq ptr %52, null - br i1 %cmp.i.i.not.i.i432, label %invoke.cont119, label %cond.true.i.i433 + %message_.i.i443 = getelementptr inbounds nuw i8, ptr %gtest_ar99, i64 8 + %52 = load ptr, ptr %message_.i.i443, align 8 + %cmp.i.i.not.i.i444 = icmp eq ptr %52, null + br i1 %cmp.i.i.not.i.i444, label %invoke.cont119, label %cond.true.i.i445 -cond.true.i.i433: ; preds = %invoke.cont116 - %call4.i.i434 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %52) #21 +cond.true.i.i445: ; preds = %invoke.cont116 + %call4.i.i446 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %52) #21 br label %invoke.cont119 -invoke.cont119: ; preds = %cond.true.i.i433, %invoke.cont116 - %cond.i.i435 = phi ptr [ %call4.i.i434, %cond.true.i.i433 ], [ @.str.20, %invoke.cont116 ] - invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp117, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 164, ptr noundef %cond.i.i435) +invoke.cont119: ; preds = %cond.true.i.i445, %invoke.cont116 + %cond.i.i447 = phi ptr [ %call4.i.i446, %cond.true.i.i445 ], [ @.str.20, %invoke.cont116 ] + invoke void @_ZN7testing8internal12AssertHelperC1ENS_14TestPartResult4TypeEPKciS5_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp117, i32 noundef 1, ptr noundef nonnull @.str.3, i32 noundef 164, ptr noundef %cond.i.i447) to label %invoke.cont121 unwind label %lpad118 invoke.cont121: ; preds = %invoke.cont119 @@ -8711,17 +8711,17 @@ invoke.cont121: ; preds = %invoke.cont119 invoke.cont123: ; preds = %invoke.cont121 call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp117) #21 %53 = load ptr, ptr %ref.tmp114, align 8 - %cmp.not.i.i437 = icmp eq ptr %53, null - br i1 %cmp.not.i.i437, label %_ZN7testing7MessageD2Ev.exit441, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i438 + %cmp.not.i.i449 = icmp eq ptr %53, null + br i1 %cmp.not.i.i449, label %_ZN7testing7MessageD2Ev.exit453, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i450 -_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i438: ; preds = %invoke.cont123 - %vtable.i.i.i439 = load ptr, ptr %53, align 8 - %vfn.i.i.i440 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i439, i64 8 - %54 = load ptr, ptr %vfn.i.i.i440, align 8 +_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i450: ; preds = %invoke.cont123 + %vtable.i.i.i451 = load ptr, ptr %53, align 8 + %vfn.i.i.i452 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i451, i64 8 + %54 = load ptr, ptr %vfn.i.i.i452, align 8 call void %54(ptr noundef nonnull align 8 dereferenceable(128) %53) #21 - br label %_ZN7testing7MessageD2Ev.exit441 + br label %_ZN7testing7MessageD2Ev.exit453 -_ZN7testing7MessageD2Ev.exit441: ; preds = %invoke.cont123, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i438 +_ZN7testing7MessageD2Ev.exit453: ; preds = %invoke.cont123, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i450 store ptr null, ptr %ref.tmp114, align 8 br label %if.end126 @@ -8744,60 +8744,60 @@ lpad122: ; preds = %invoke.cont121 ehcleanup125: ; preds = %lpad122, %lpad118 %.pn17 = phi { ptr, i32 } [ %57, %lpad122 ], [ %56, %lpad118 ] %58 = load ptr, ptr %ref.tmp114, align 8 - %cmp.not.i.i442 = icmp eq ptr %58, null - br i1 %cmp.not.i.i442, label %_ZN7testing7MessageD2Ev.exit446, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i443 + %cmp.not.i.i454 = icmp eq ptr %58, null + br i1 %cmp.not.i.i454, label %_ZN7testing7MessageD2Ev.exit458, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i455 -_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i443: ; preds = %ehcleanup125 - %vtable.i.i.i444 = load ptr, ptr %58, align 8 - %vfn.i.i.i445 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i444, i64 8 - %59 = load ptr, ptr %vfn.i.i.i445, align 8 +_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i455: ; preds = %ehcleanup125 + %vtable.i.i.i456 = load ptr, ptr %58, align 8 + %vfn.i.i.i457 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i456, i64 8 + %59 = load ptr, ptr %vfn.i.i.i457, align 8 call void %59(ptr noundef nonnull align 8 dereferenceable(128) %58) #21 - br label %_ZN7testing7MessageD2Ev.exit446 + br label %_ZN7testing7MessageD2Ev.exit458 -_ZN7testing7MessageD2Ev.exit446: ; preds = %ehcleanup125, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i443 +_ZN7testing7MessageD2Ev.exit458: ; preds = %ehcleanup125, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i455 store ptr null, ptr %ref.tmp114, align 8 br label %ehcleanup127 -if.end126: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit405, %_ZN7testing7MessageD2Ev.exit441 - %message_.i447 = getelementptr inbounds nuw i8, ptr %gtest_ar99, i64 8 - %60 = load ptr, ptr %message_.i447, align 8 - %cmp.not.i.i448 = icmp eq ptr %60, null - br i1 %cmp.not.i.i448, label %_ZN7testing15AssertionResultD2Ev.exit450, label %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i449 +if.end126: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Eq2MatcherEA4_jED2Ev.exit417, %_ZN7testing7MessageD2Ev.exit453 + %message_.i459 = getelementptr inbounds nuw i8, ptr %gtest_ar99, i64 8 + %60 = load ptr, ptr %message_.i459, align 8 + %cmp.not.i.i460 = icmp eq ptr %60, null + br i1 %cmp.not.i.i460, label %_ZN7testing15AssertionResultD2Ev.exit462, label %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i461 -_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i449: ; preds = %if.end126 +_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i461: ; preds = %if.end126 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #21 call void @_ZdlPv(ptr noundef nonnull %60) #22 - br label %_ZN7testing15AssertionResultD2Ev.exit450 + br label %_ZN7testing15AssertionResultD2Ev.exit462 -_ZN7testing15AssertionResultD2Ev.exit450: ; preds = %if.end126, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i449 - store ptr null, ptr %message_.i447, align 8 +_ZN7testing15AssertionResultD2Ev.exit462: ; preds = %if.end126, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i461 + store ptr null, ptr %message_.i459, align 8 %61 = load ptr, ptr %seq, align 8 - %cmp.not.i.i451 = icmp eq ptr %61, null - br i1 %cmp.not.i.i451, label %_ZN4absl15random_internal13SaltedSeedSeqISt8seed_seqED2Ev.exit, label %delete.notnull.i.i.i452 + %cmp.not.i.i463 = icmp eq ptr %61, null + br i1 %cmp.not.i.i463, label %_ZN4absl15random_internal13SaltedSeedSeqISt8seed_seqED2Ev.exit, label %delete.notnull.i.i.i464 -delete.notnull.i.i.i452: ; preds = %_ZN7testing15AssertionResultD2Ev.exit450 +delete.notnull.i.i.i464: ; preds = %_ZN7testing15AssertionResultD2Ev.exit462 %62 = load ptr, ptr %61, align 8 %tobool.not.i.i.i.i.i.i.i = icmp eq ptr %62, null br i1 %tobool.not.i.i.i.i.i.i.i, label %_ZNKSt14default_deleteISt8seed_seqEclEPS0_.exit.i.i, label %if.then.i.i.i.i.i.i.i -if.then.i.i.i.i.i.i.i: ; preds = %delete.notnull.i.i.i452 +if.then.i.i.i.i.i.i.i: ; preds = %delete.notnull.i.i.i464 call void @_ZdlPv(ptr noundef nonnull %62) #22 br label %_ZNKSt14default_deleteISt8seed_seqEclEPS0_.exit.i.i -_ZNKSt14default_deleteISt8seed_seqEclEPS0_.exit.i.i: ; preds = %if.then.i.i.i.i.i.i.i, %delete.notnull.i.i.i452 +_ZNKSt14default_deleteISt8seed_seqEclEPS0_.exit.i.i: ; preds = %if.then.i.i.i.i.i.i.i, %delete.notnull.i.i.i464 call void @_ZdlPv(ptr noundef nonnull %61) #22 br label %_ZN4absl15random_internal13SaltedSeedSeqISt8seed_seqED2Ev.exit -_ZN4absl15random_internal13SaltedSeedSeqISt8seed_seqED2Ev.exit: ; preds = %_ZN7testing15AssertionResultD2Ev.exit450, %_ZNKSt14default_deleteISt8seed_seqEclEPS0_.exit.i.i +_ZN4absl15random_internal13SaltedSeedSeqISt8seed_seqED2Ev.exit: ; preds = %_ZN7testing15AssertionResultD2Ev.exit462, %_ZNKSt14default_deleteISt8seed_seqEclEPS0_.exit.i.i ret void -ehcleanup127: ; preds = %_ZN7testing7MessageD2Ev.exit446, %lpad115 - %.pn17.pn = phi { ptr, i32 } [ %.pn17, %_ZN7testing7MessageD2Ev.exit446 ], [ %55, %lpad115 ] +ehcleanup127: ; preds = %_ZN7testing7MessageD2Ev.exit458, %lpad115 + %.pn17.pn = phi { ptr, i32 } [ %.pn17, %_ZN7testing7MessageD2Ev.exit458 ], [ %55, %lpad115 ] call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %gtest_ar99) #21 br label %ehcleanup128 -ehcleanup128: ; preds = %delete.notnull.i.i.i417, %if.then.i.i.i414, %lpad107, %delete.notnull.i.i14.i367, %delete.notnull.i.i.i293, %if.then.i.i.i290, %lpad74, %delete.notnull.i.i14.i243, %delete.notnull.i.i.i168, %if.then.i.i.i165, %lpad41, %delete.notnull.i.i14.i118, %delete.notnull.i.i.i50, %if.then.i.i.i47, %lpad13, %delete.notnull.i.i14.i, %ehcleanup127, %ehcleanup94, %ehcleanup61, %ehcleanup28, %lpad - %.pn17.pn.pn = phi { ptr, i32 } [ %.pn17.pn, %ehcleanup127 ], [ %5, %lpad ], [ %.pn12.pn, %ehcleanup94 ], [ %.pn7.pn, %ehcleanup61 ], [ %.pn2.pn, %ehcleanup28 ], [ %2, %delete.notnull.i.i14.i ], [ %6, %lpad13 ], [ %6, %if.then.i.i.i47 ], [ %6, %delete.notnull.i.i.i50 ], [ %19, %delete.notnull.i.i14.i118 ], [ %22, %lpad41 ], [ %22, %if.then.i.i.i165 ], [ %22, %delete.notnull.i.i.i168 ], [ %33, %delete.notnull.i.i14.i243 ], [ %36, %lpad74 ], [ %36, %if.then.i.i.i290 ], [ %36, %delete.notnull.i.i.i293 ], [ %47, %delete.notnull.i.i14.i367 ], [ %50, %lpad107 ], [ %50, %if.then.i.i.i414 ], [ %50, %delete.notnull.i.i.i417 ] +ehcleanup128: ; preds = %delete.notnull.i.i.i429, %if.then.i.i.i426, %lpad107, %delete.notnull.i.i14.i377, %delete.notnull.i.i.i301, %if.then.i.i.i298, %lpad74, %delete.notnull.i.i14.i249, %delete.notnull.i.i.i172, %if.then.i.i.i169, %lpad41, %delete.notnull.i.i14.i120, %delete.notnull.i.i.i50, %if.then.i.i.i47, %lpad13, %delete.notnull.i.i14.i, %ehcleanup127, %ehcleanup94, %ehcleanup61, %ehcleanup28, %lpad + %.pn17.pn.pn = phi { ptr, i32 } [ %.pn17.pn, %ehcleanup127 ], [ %5, %lpad ], [ %.pn12.pn, %ehcleanup94 ], [ %.pn7.pn, %ehcleanup61 ], [ %.pn2.pn, %ehcleanup28 ], [ %2, %delete.notnull.i.i14.i ], [ %6, %lpad13 ], [ %6, %if.then.i.i.i47 ], [ %6, %delete.notnull.i.i.i50 ], [ %19, %delete.notnull.i.i14.i120 ], [ %22, %lpad41 ], [ %22, %if.then.i.i.i169 ], [ %22, %delete.notnull.i.i.i172 ], [ %33, %delete.notnull.i.i14.i249 ], [ %36, %lpad74 ], [ %36, %if.then.i.i.i298 ], [ %36, %delete.notnull.i.i.i301 ], [ %47, %delete.notnull.i.i14.i377 ], [ %50, %lpad107 ], [ %50, %if.then.i.i.i426 ], [ %50, %delete.notnull.i.i.i429 ] call void @_ZN4absl15random_internal13SaltedSeedSeqISt8seed_seqED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %seq) #21 br label %common.resume } diff --git a/bench/abseil-cpp/optimized/seed_material_test.cc.ll b/bench/abseil-cpp/optimized/seed_material_test.cc.ll index 24a2cd178d..3475fbe26b 100644 --- a/bench/abseil-cpp/optimized/seed_material_test.cc.ll +++ b/bench/abseil-cpp/optimized/seed_material_test.cc.ll @@ -1759,7 +1759,7 @@ _ZN7testing15AssertionResultD2Ev.exit: ; preds = %entry, %if.end, %_Z store i8 %frombool20, ptr %gtest_ar_15, align 8 %message_.i23 = getelementptr inbounds nuw i8, ptr %gtest_ar_15, i64 8 store ptr null, ptr %message_.i23, align 8 - br i1 %call19, label %_ZN7testing15AssertionResultD2Ev.exit38, label %if.else23 + br i1 %call19, label %_ZN7testing8internal16PointwiseMatcherINS0_10Ne2MatcherEA64_jEC2EOS4_.exit.i, label %if.else23 ehcleanup14: ; preds = %_ZN7testing7MessageD2Ev.exit18, %lpad %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %_ZN7testing7MessageD2Ev.exit18 ], [ %2, %lpad ] @@ -1844,14 +1844,14 @@ if.end39: ; preds = %_ZNKSt14default_del store ptr null, ptr %ref.tmp24, align 8 %.pr96 = load ptr, ptr %message_.i23, align 8 %cmp.not.i.i36 = icmp eq ptr %.pr96, null - br i1 %cmp.not.i.i36, label %_ZN7testing15AssertionResultD2Ev.exit38, label %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i37 + br i1 %cmp.not.i.i36, label %_ZN7testing8internal16PointwiseMatcherINS0_10Ne2MatcherEA64_jEC2EOS4_.exit.i, label %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i37 _ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i37: ; preds = %if.end39 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.pr96) #21 call void @_ZdlPv(ptr noundef nonnull %.pr96) #22 - br label %_ZN7testing15AssertionResultD2Ev.exit38 + br label %_ZN7testing8internal16PointwiseMatcherINS0_10Ne2MatcherEA64_jEC2EOS4_.exit.i -_ZN7testing15AssertionResultD2Ev.exit38: ; preds = %_ZN7testing15AssertionResultD2Ev.exit, %if.end39, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i37 +_ZN7testing8internal16PointwiseMatcherINS0_10Ne2MatcherEA64_jEC2EOS4_.exit.i: ; preds = %_ZN7testing15AssertionResultD2Ev.exit, %if.end39, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i37 store ptr null, ptr %message_.i23, align 8 %rhs_.i.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp41, i64 8 %call.i105 = call noalias noundef nonnull dereferenceable(256) ptr @_Znam(i64 noundef 256) #23 @@ -1866,7 +1866,7 @@ _ZN7testing15AssertionResultD2Ev.exit38: ; preds = %_ZN7testing15Assert invoke void @_ZNK7testing8internal29PredicateFormatterFromMatcherINS0_16PointwiseMatcherINS0_10Ne2MatcherEA64_jEEEclIS4_EENS_15AssertionResultEPKcRKT_(ptr nonnull sret(%"class.testing::AssertionResult") align 8 %gtest_ar, ptr noundef nonnull align 8 dereferenceable(40) %ref.tmp41, ptr noundef nonnull @.str.41, ptr noundef nonnull align 4 dereferenceable(256) %seed_material_1) to label %invoke.cont47 unwind label %lpad46 -invoke.cont47: ; preds = %_ZN7testing15AssertionResultD2Ev.exit38 +invoke.cont47: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Ne2MatcherEA64_jEC2EOS4_.exit.i %.unpack.i.i.i41 = load i64, ptr %clone_.i, align 8 %.unpack2.i.i.i42 = load i64, ptr %clone_.repack4.i, align 8 %cmp.ptr.i.i.i43 = icmp ne i64 %.unpack.i.i.i41, ptrtoint (ptr @_ZN7testing8internal11NativeArrayIjE7InitRefEPKjm to i64) @@ -1893,7 +1893,7 @@ ehcleanup40: ; preds = %_ZN7testing7Message call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %gtest_ar_15) #21 br label %eh.resume -lpad46: ; preds = %_ZN7testing15AssertionResultD2Ev.exit38 +lpad46: ; preds = %_ZN7testing8internal16PointwiseMatcherINS0_10Ne2MatcherEA64_jEC2EOS4_.exit.i %18 = landingpad { ptr, i32 } cleanup %.unpack.i.i.i52 = load i64, ptr %clone_.i, align 8 diff --git a/bench/postgres/optimized/wparser_def.ll b/bench/postgres/optimized/wparser_def.ll index bf372e81e9..79cb0a15d3 100644 --- a/bench/postgres/optimized/wparser_def.ll +++ b/bench/postgres/optimized/wparser_def.ll @@ -174,8 +174,8 @@ target triple = "x86_64-pc-linux-gnu" define dso_local void @_make_compiler_happy() local_unnamed_addr #0 { %1 = load i8, ptr inttoptr (i64 32 to ptr), align 32 %2 = trunc i8 %1 to i1 - %.pre45.pre74.pre79 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 - %.not.i = icmp eq ptr %.pre45.pre74.pre79, null + %.pre45.pre66.pre73 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 + %.not.i = icmp eq ptr %.pre45.pre66.pre73, null %or.cond = select i1 %2, i1 %.not.i, i1 false br i1 %or.cond, label %3, label %p_isalnum.exit @@ -189,16 +189,16 @@ define dso_local void @_make_compiler_happy() local_unnamed_addr #0 { %10 = load i32, ptr %9, align 4 %11 = tail call i32 @iswalnum(i32 noundef %10) #16 %.pre = load i8, ptr inttoptr (i64 32 to ptr), align 32 - %.pre45.pre74.pre = load ptr, ptr inttoptr (i64 24 to ptr), align 8 + %.pre45.pre66.pre = load ptr, ptr inttoptr (i64 24 to ptr), align 8 br label %p_isalnum.exit p_isalnum.exit: ; preds = %0, %3 - %.pre45.pre74 = phi ptr [ %.pre45.pre74.pre79, %0 ], [ %.pre45.pre74.pre, %3 ] + %.pre45.pre66 = phi ptr [ %.pre45.pre66.pre73, %0 ], [ %.pre45.pre66.pre, %3 ] %12 = phi i8 [ %1, %0 ], [ %.pre, %3 ] %13 = trunc i8 %12 to i1 - %.not.i.i = icmp eq ptr %.pre45.pre74, null - %or.cond108 = select i1 %13, i1 %.not.i.i, i1 false - br i1 %or.cond108, label %14, label %p_isnotalnum.exit + %.not.i.i = icmp eq ptr %.pre45.pre66, null + %or.cond93 = select i1 %13, i1 %.not.i.i, i1 false + br i1 %or.cond93, label %14, label %p_isnotalnum.exit 14: ; preds = %p_isalnum.exit %15 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 @@ -214,7 +214,7 @@ p_isalnum.exit: ; preds = %0, %3 br label %p_isnotalnum.exit p_isnotalnum.exit: ; preds = %p_isalnum.exit, %14 - %.pre45 = phi ptr [ %.pre45.pre74, %p_isalnum.exit ], [ %.pre45.pre, %14 ] + %.pre45 = phi ptr [ %.pre45.pre66, %p_isalnum.exit ], [ %.pre45.pre, %14 ] %23 = phi i8 [ %12, %p_isalnum.exit ], [ %.pre42, %14 ] %24 = trunc i8 %23 to i1 br i1 %24, label %25, label %p_isalpha.exit @@ -275,7 +275,7 @@ p_isnotalpha.exit: ; preds = %p_isalpha.exit.thre p_isdigit.exit.thread: ; preds = %50 %51 = trunc i8 %48 to i1 tail call void @llvm.assume(i1 %51) - br label %p_isnotdigit.exit.thread + br label %p_isnotdigit.exit 52: ; preds = %50 %53 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 @@ -296,16 +296,9 @@ p_isdigit.exit: ; preds = %p_isnotalpha.exit, %63 = trunc i8 %62 to i1 tail call void @llvm.assume(i1 %63) %.not.i.i9 = icmp eq ptr %61, null - br i1 %.not.i.i9, label %p_isnotdigit.exit, label %p_isnotdigit.exit.thread + br i1 %.not.i.i9, label %64, label %p_isnotdigit.exit -p_isnotdigit.exit.thread: ; preds = %p_isdigit.exit, %p_isdigit.exit.thread - %.ph = phi ptr [ %.pre49, %p_isdigit.exit.thread ], [ %61, %p_isdigit.exit ] - %.ph83 = phi i8 [ %48, %p_isdigit.exit.thread ], [ %62, %p_isdigit.exit ] - %64 = trunc i8 %.ph83 to i1 - tail call void @llvm.assume(i1 %64) - br label %p_islower.exit.thread - -p_isnotdigit.exit: ; preds = %p_isdigit.exit +64: ; preds = %p_isdigit.exit %65 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 %66 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 %67 = getelementptr inbounds nuw i8, ptr %66, i64 4 @@ -315,288 +308,279 @@ p_isnotdigit.exit: ; preds = %p_isdigit.exit %71 = load i32, ptr %70, align 4 %72 = tail call i32 @iswdigit(i32 noundef %71) #16 %.pre50 = load i8, ptr inttoptr (i64 32 to ptr), align 32 - %.pre51 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 - %73 = trunc i8 %.pre50 to i1 - tail call void @llvm.assume(i1 %73) - %.not.i12 = icmp eq ptr %.pre51, null - br i1 %.not.i12, label %p_islower.exit, label %p_islower.exit.thread - -p_islower.exit.thread: ; preds = %p_isnotdigit.exit, %p_isnotdigit.exit.thread - %.ph85 = phi ptr [ %.ph, %p_isnotdigit.exit.thread ], [ %.pre51, %p_isnotdigit.exit ] - %.ph86 = phi i8 [ %.ph83, %p_isnotdigit.exit.thread ], [ %.pre50, %p_isnotdigit.exit ] - %74 = trunc i8 %.ph86 to i1 - tail call void @llvm.assume(i1 %74) - br label %p_isnotlower.exit.thread - -p_islower.exit: ; preds = %p_isnotdigit.exit - %75 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %76 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %77 = getelementptr inbounds nuw i8, ptr %76, i64 4 - %78 = load i32, ptr %77, align 4 - %79 = sext i32 %78 to i64 - %80 = getelementptr i32, ptr %75, i64 %79 - %81 = load i32, ptr %80, align 4 - %82 = tail call i32 @iswlower(i32 noundef %81) #16 + %.pre59.pre69.pre75.pre79.pre82.pre84.pre86.pre = load ptr, ptr inttoptr (i64 24 to ptr), align 8 + br label %p_isnotdigit.exit + +p_isnotdigit.exit: ; preds = %p_isdigit.exit.thread, %p_isdigit.exit, %64 + %.pre59.pre69.pre75.pre79.pre82.pre84.pre86 = phi ptr [ %61, %p_isdigit.exit ], [ %.pre59.pre69.pre75.pre79.pre82.pre84.pre86.pre, %64 ], [ %.pre49, %p_isdigit.exit.thread ] + %73 = phi i8 [ %62, %p_isdigit.exit ], [ %.pre50, %64 ], [ %48, %p_isdigit.exit.thread ] + %74 = trunc i8 %73 to i1 + %.not.i13 = icmp eq ptr %.pre59.pre69.pre75.pre79.pre82.pre84.pre86, null + %or.cond94 = select i1 %74, i1 %.not.i13, i1 false + br i1 %or.cond94, label %75, label %p_islower.exit + +75: ; preds = %p_isnotdigit.exit + %76 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %77 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %78 = getelementptr inbounds nuw i8, ptr %77, i64 4 + %79 = load i32, ptr %78, align 4 + %80 = sext i32 %79 to i64 + %81 = getelementptr i32, ptr %76, i64 %80 + %82 = load i32, ptr %81, align 4 + %83 = tail call i32 @iswlower(i32 noundef %82) #16 + %.pre51 = load i8, ptr inttoptr (i64 32 to ptr), align 32 + %.pre59.pre69.pre75.pre79.pre82.pre84.pre = load ptr, ptr inttoptr (i64 24 to ptr), align 8 + br label %p_islower.exit + +p_islower.exit: ; preds = %p_isnotdigit.exit, %75 + %.pre59.pre69.pre75.pre79.pre82.pre84 = phi ptr [ %.pre59.pre69.pre75.pre79.pre82.pre84.pre86, %p_isnotdigit.exit ], [ %.pre59.pre69.pre75.pre79.pre82.pre84.pre, %75 ] + %84 = phi i8 [ %73, %p_isnotdigit.exit ], [ %.pre51, %75 ] + %85 = trunc i8 %84 to i1 + %.not.i.i16 = icmp eq ptr %.pre59.pre69.pre75.pre79.pre82.pre84, null + %or.cond95 = select i1 %85, i1 %.not.i.i16, i1 false + br i1 %or.cond95, label %86, label %p_isnotlower.exit + +86: ; preds = %p_islower.exit + %87 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %88 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %89 = getelementptr inbounds nuw i8, ptr %88, i64 4 + %90 = load i32, ptr %89, align 4 + %91 = sext i32 %90 to i64 + %92 = getelementptr i32, ptr %87, i64 %91 + %93 = load i32, ptr %92, align 4 + %94 = tail call i32 @iswlower(i32 noundef %93) #16 %.pre52 = load i8, ptr inttoptr (i64 32 to ptr), align 32 - %.pre53 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 - %83 = trunc i8 %.pre52 to i1 - tail call void @llvm.assume(i1 %83) - %.not.i.i14 = icmp eq ptr %.pre53, null - br i1 %.not.i.i14, label %p_isnotlower.exit, label %p_isnotlower.exit.thread - -p_isnotlower.exit.thread: ; preds = %p_islower.exit, %p_islower.exit.thread - %.ph88 = phi ptr [ %.ph85, %p_islower.exit.thread ], [ %.pre53, %p_islower.exit ] - %.ph89 = phi i8 [ %.ph86, %p_islower.exit.thread ], [ %.pre52, %p_islower.exit ] - %84 = trunc i8 %.ph89 to i1 - tail call void @llvm.assume(i1 %84) - br label %p_isprint.exit.thread - -p_isnotlower.exit: ; preds = %p_islower.exit - %85 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %86 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %87 = getelementptr inbounds nuw i8, ptr %86, i64 4 - %88 = load i32, ptr %87, align 4 - %89 = sext i32 %88 to i64 - %90 = getelementptr i32, ptr %85, i64 %89 - %91 = load i32, ptr %90, align 4 - %92 = tail call i32 @iswlower(i32 noundef %91) #16 - %.pre54 = load i8, ptr inttoptr (i64 32 to ptr), align 32 - %.pre55 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 - %93 = trunc i8 %.pre54 to i1 - tail call void @llvm.assume(i1 %93) - %.not.i17 = icmp eq ptr %.pre55, null - br i1 %.not.i17, label %p_isprint.exit, label %p_isprint.exit.thread - -p_isprint.exit.thread: ; preds = %p_isnotlower.exit, %p_isnotlower.exit.thread - %.ph91 = phi ptr [ %.ph88, %p_isnotlower.exit.thread ], [ %.pre55, %p_isnotlower.exit ] - %.ph92 = phi i8 [ %.ph89, %p_isnotlower.exit.thread ], [ %.pre54, %p_isnotlower.exit ] - %94 = trunc i8 %.ph92 to i1 - tail call void @llvm.assume(i1 %94) - br label %p_isnotprint.exit.thread - -p_isprint.exit: ; preds = %p_isnotlower.exit - %95 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %96 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %97 = getelementptr inbounds nuw i8, ptr %96, i64 4 - %98 = load i32, ptr %97, align 4 - %99 = sext i32 %98 to i64 - %100 = getelementptr i32, ptr %95, i64 %99 + %.pre59.pre69.pre75.pre79.pre82.pre = load ptr, ptr inttoptr (i64 24 to ptr), align 8 + br label %p_isnotlower.exit + +p_isnotlower.exit: ; preds = %p_islower.exit, %86 + %.pre59.pre69.pre75.pre79.pre82 = phi ptr [ %.pre59.pre69.pre75.pre79.pre82.pre84, %p_islower.exit ], [ %.pre59.pre69.pre75.pre79.pre82.pre, %86 ] + %95 = phi i8 [ %84, %p_islower.exit ], [ %.pre52, %86 ] + %96 = trunc i8 %95 to i1 + %.not.i18 = icmp eq ptr %.pre59.pre69.pre75.pre79.pre82, null + %or.cond96 = select i1 %96, i1 %.not.i18, i1 false + br i1 %or.cond96, label %97, label %p_isprint.exit + +97: ; preds = %p_isnotlower.exit + %98 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %99 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %100 = getelementptr inbounds nuw i8, ptr %99, i64 4 %101 = load i32, ptr %100, align 4 - %102 = tail call i32 @iswprint(i32 noundef %101) #16 + %102 = sext i32 %101 to i64 + %103 = getelementptr i32, ptr %98, i64 %102 + %104 = load i32, ptr %103, align 4 + %105 = tail call i32 @iswprint(i32 noundef %104) #16 + %.pre53 = load i8, ptr inttoptr (i64 32 to ptr), align 32 + %.pre59.pre69.pre75.pre79.pre = load ptr, ptr inttoptr (i64 24 to ptr), align 8 + br label %p_isprint.exit + +p_isprint.exit: ; preds = %p_isnotlower.exit, %97 + %.pre59.pre69.pre75.pre79 = phi ptr [ %.pre59.pre69.pre75.pre79.pre82, %p_isnotlower.exit ], [ %.pre59.pre69.pre75.pre79.pre, %97 ] + %106 = phi i8 [ %95, %p_isnotlower.exit ], [ %.pre53, %97 ] + %107 = trunc i8 %106 to i1 + %.not.i.i21 = icmp eq ptr %.pre59.pre69.pre75.pre79, null + %or.cond97 = select i1 %107, i1 %.not.i.i21, i1 false + br i1 %or.cond97, label %108, label %p_isnotprint.exit + +108: ; preds = %p_isprint.exit + %109 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %110 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %111 = getelementptr inbounds nuw i8, ptr %110, i64 4 + %112 = load i32, ptr %111, align 4 + %113 = sext i32 %112 to i64 + %114 = getelementptr i32, ptr %109, i64 %113 + %115 = load i32, ptr %114, align 4 + %116 = tail call i32 @iswprint(i32 noundef %115) #16 + %.pre54 = load i8, ptr inttoptr (i64 32 to ptr), align 32 + %.pre59.pre69.pre75.pre = load ptr, ptr inttoptr (i64 24 to ptr), align 8 + br label %p_isnotprint.exit + +p_isnotprint.exit: ; preds = %p_isprint.exit, %108 + %.pre59.pre69.pre75 = phi ptr [ %.pre59.pre69.pre75.pre79, %p_isprint.exit ], [ %.pre59.pre69.pre75.pre, %108 ] + %117 = phi i8 [ %106, %p_isprint.exit ], [ %.pre54, %108 ] + %118 = trunc i8 %117 to i1 + %.not.i23 = icmp eq ptr %.pre59.pre69.pre75, null + %or.cond98 = select i1 %118, i1 %.not.i23, i1 false + br i1 %or.cond98, label %119, label %p_ispunct.exit + +119: ; preds = %p_isnotprint.exit + %120 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %121 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %122 = getelementptr inbounds nuw i8, ptr %121, i64 4 + %123 = load i32, ptr %122, align 4 + %124 = sext i32 %123 to i64 + %125 = getelementptr i32, ptr %120, i64 %124 + %126 = load i32, ptr %125, align 4 + %127 = tail call i32 @iswpunct(i32 noundef %126) #16 + %.pre55 = load i8, ptr inttoptr (i64 32 to ptr), align 32 + %.pre59.pre69.pre = load ptr, ptr inttoptr (i64 24 to ptr), align 8 + br label %p_ispunct.exit + +p_ispunct.exit: ; preds = %p_isnotprint.exit, %119 + %.pre59.pre69 = phi ptr [ %.pre59.pre69.pre75, %p_isnotprint.exit ], [ %.pre59.pre69.pre, %119 ] + %128 = phi i8 [ %117, %p_isnotprint.exit ], [ %.pre55, %119 ] + %129 = trunc i8 %128 to i1 + %.not.i.i26 = icmp eq ptr %.pre59.pre69, null + %or.cond99 = select i1 %129, i1 %.not.i.i26, i1 false + br i1 %or.cond99, label %130, label %p_isnotpunct.exit + +130: ; preds = %p_ispunct.exit + %131 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %132 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %133 = getelementptr inbounds nuw i8, ptr %132, i64 4 + %134 = load i32, ptr %133, align 4 + %135 = sext i32 %134 to i64 + %136 = getelementptr i32, ptr %131, i64 %135 + %137 = load i32, ptr %136, align 4 + %138 = tail call i32 @iswpunct(i32 noundef %137) #16 %.pre56 = load i8, ptr inttoptr (i64 32 to ptr), align 32 - %.pre57 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 - %103 = trunc i8 %.pre56 to i1 - tail call void @llvm.assume(i1 %103) - %.not.i.i19 = icmp eq ptr %.pre57, null - br i1 %.not.i.i19, label %p_isnotprint.exit, label %p_isnotprint.exit.thread - -p_isnotprint.exit.thread: ; preds = %p_isprint.exit, %p_isprint.exit.thread - %.ph94 = phi ptr [ %.ph91, %p_isprint.exit.thread ], [ %.pre57, %p_isprint.exit ] - %.ph95 = phi i8 [ %.ph92, %p_isprint.exit.thread ], [ %.pre56, %p_isprint.exit ] - %104 = trunc i8 %.ph95 to i1 - tail call void @llvm.assume(i1 %104) - br label %p_ispunct.exit.thread - -p_isnotprint.exit: ; preds = %p_isprint.exit - %105 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %106 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %107 = getelementptr inbounds nuw i8, ptr %106, i64 4 - %108 = load i32, ptr %107, align 4 - %109 = sext i32 %108 to i64 - %110 = getelementptr i32, ptr %105, i64 %109 - %111 = load i32, ptr %110, align 4 - %112 = tail call i32 @iswprint(i32 noundef %111) #16 - %.pre58 = load i8, ptr inttoptr (i64 32 to ptr), align 32 - %.pre59 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 - %113 = trunc i8 %.pre58 to i1 - tail call void @llvm.assume(i1 %113) - %.not.i22 = icmp eq ptr %.pre59, null - br i1 %.not.i22, label %p_ispunct.exit, label %p_ispunct.exit.thread - -p_ispunct.exit.thread: ; preds = %p_isnotprint.exit, %p_isnotprint.exit.thread - %.ph97 = phi ptr [ %.ph94, %p_isnotprint.exit.thread ], [ %.pre59, %p_isnotprint.exit ] - %.ph98 = phi i8 [ %.ph95, %p_isnotprint.exit.thread ], [ %.pre58, %p_isnotprint.exit ] - %114 = trunc i8 %.ph98 to i1 - tail call void @llvm.assume(i1 %114) - br label %p_isnotpunct.exit - -p_ispunct.exit: ; preds = %p_isnotprint.exit - %115 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %116 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %117 = getelementptr inbounds nuw i8, ptr %116, i64 4 - %118 = load i32, ptr %117, align 4 - %119 = sext i32 %118 to i64 - %120 = getelementptr i32, ptr %115, i64 %119 - %121 = load i32, ptr %120, align 4 - %122 = tail call i32 @iswpunct(i32 noundef %121) #16 - %.pre60 = load i8, ptr inttoptr (i64 32 to ptr), align 32 - %.pre61 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 - %123 = trunc i8 %.pre60 to i1 - tail call void @llvm.assume(i1 %123) - %.not.i.i24 = icmp eq ptr %.pre61, null - br i1 %.not.i.i24, label %124, label %p_isnotpunct.exit - -124: ; preds = %p_ispunct.exit - %125 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %126 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %127 = getelementptr inbounds nuw i8, ptr %126, i64 4 - %128 = load i32, ptr %127, align 4 - %129 = sext i32 %128 to i64 - %130 = getelementptr i32, ptr %125, i64 %129 - %131 = load i32, ptr %130, align 4 - %132 = tail call i32 @iswpunct(i32 noundef %131) #16 - %.pre62 = load i8, ptr inttoptr (i64 32 to ptr), align 32 - %.pre65.pre = load ptr, ptr inttoptr (i64 24 to ptr), align 8 + %.pre59.pre = load ptr, ptr inttoptr (i64 24 to ptr), align 8 br label %p_isnotpunct.exit -p_isnotpunct.exit: ; preds = %p_ispunct.exit.thread, %p_ispunct.exit, %124 - %.pre65 = phi ptr [ %.pre61, %p_ispunct.exit ], [ %.pre65.pre, %124 ], [ %.ph97, %p_ispunct.exit.thread ] - %133 = phi i8 [ %.pre60, %p_ispunct.exit ], [ %.pre62, %124 ], [ %.ph98, %p_ispunct.exit.thread ] - %134 = trunc i8 %133 to i1 - br i1 %134, label %135, label %p_isspace.exit - -135: ; preds = %p_isnotpunct.exit - %.not.i28 = icmp eq ptr %.pre65, null - br i1 %.not.i28, label %137, label %p_isspace.exit.thread - -p_isspace.exit.thread: ; preds = %135 - %136 = trunc i8 %133 to i1 - tail call void @llvm.assume(i1 %136) - br label %p_isnotspace.exit.thread - -137: ; preds = %135 - %138 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %139 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %140 = getelementptr inbounds nuw i8, ptr %139, i64 4 - %141 = load i32, ptr %140, align 4 - %142 = sext i32 %141 to i64 - %143 = getelementptr i32, ptr %138, i64 %142 - %144 = load i32, ptr %143, align 4 - %145 = tail call i32 @iswspace(i32 noundef %144) #16 - %.pre63 = load i8, ptr inttoptr (i64 32 to ptr), align 32 - %.pre64 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 +p_isnotpunct.exit: ; preds = %p_ispunct.exit, %130 + %.pre59 = phi ptr [ %.pre59.pre69, %p_ispunct.exit ], [ %.pre59.pre, %130 ] + %139 = phi i8 [ %128, %p_ispunct.exit ], [ %.pre56, %130 ] + %140 = trunc i8 %139 to i1 + br i1 %140, label %141, label %p_isspace.exit + +141: ; preds = %p_isnotpunct.exit + %.not.i28 = icmp eq ptr %.pre59, null + br i1 %.not.i28, label %143, label %p_isspace.exit.thread + +p_isspace.exit.thread: ; preds = %141 + %142 = trunc i8 %139 to i1 + tail call void @llvm.assume(i1 %142) + br label %p_isnotspace.exit + +143: ; preds = %141 + %144 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %145 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %146 = getelementptr inbounds nuw i8, ptr %145, i64 4 + %147 = load i32, ptr %146, align 4 + %148 = sext i32 %147 to i64 + %149 = getelementptr i32, ptr %144, i64 %148 + %150 = load i32, ptr %149, align 4 + %151 = tail call i32 @iswspace(i32 noundef %150) #16 + %.pre57 = load i8, ptr inttoptr (i64 32 to ptr), align 32 + %.pre58 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 br label %p_isspace.exit -p_isspace.exit: ; preds = %p_isnotpunct.exit, %137 - %146 = phi ptr [ %.pre65, %p_isnotpunct.exit ], [ %.pre64, %137 ] - %147 = phi i8 [ %133, %p_isnotpunct.exit ], [ %.pre63, %137 ] - %148 = trunc i8 %147 to i1 - tail call void @llvm.assume(i1 %148) - %.not.i.i29 = icmp eq ptr %146, null - br i1 %.not.i.i29, label %p_isnotspace.exit, label %p_isnotspace.exit.thread - -p_isnotspace.exit.thread: ; preds = %p_isspace.exit, %p_isspace.exit.thread - %.ph101 = phi ptr [ %.pre65, %p_isspace.exit.thread ], [ %146, %p_isspace.exit ] - %.ph102 = phi i8 [ %133, %p_isspace.exit.thread ], [ %147, %p_isspace.exit ] - %149 = trunc i8 %.ph102 to i1 - tail call void @llvm.assume(i1 %149) - br label %p_isupper.exit.thread - -p_isnotspace.exit: ; preds = %p_isspace.exit - %150 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %151 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %152 = getelementptr inbounds nuw i8, ptr %151, i64 4 - %153 = load i32, ptr %152, align 4 - %154 = sext i32 %153 to i64 - %155 = getelementptr i32, ptr %150, i64 %154 - %156 = load i32, ptr %155, align 4 - %157 = tail call i32 @iswspace(i32 noundef %156) #16 - %.pre66 = load i8, ptr inttoptr (i64 32 to ptr), align 32 - %.pre67 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 - %158 = trunc i8 %.pre66 to i1 - tail call void @llvm.assume(i1 %158) - %.not.i32 = icmp eq ptr %.pre67, null - br i1 %.not.i32, label %p_isupper.exit, label %p_isupper.exit.thread - -p_isupper.exit.thread: ; preds = %p_isnotspace.exit, %p_isnotspace.exit.thread - %.ph104 = phi ptr [ %.ph101, %p_isnotspace.exit.thread ], [ %.pre67, %p_isnotspace.exit ] - %.ph105 = phi i8 [ %.ph102, %p_isnotspace.exit.thread ], [ %.pre66, %p_isnotspace.exit ] - %159 = trunc i8 %.ph105 to i1 - tail call void @llvm.assume(i1 %159) - br label %p_isnotupper.exit - -p_isupper.exit: ; preds = %p_isnotspace.exit - %160 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %161 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %162 = getelementptr inbounds nuw i8, ptr %161, i64 4 - %163 = load i32, ptr %162, align 4 - %164 = sext i32 %163 to i64 - %165 = getelementptr i32, ptr %160, i64 %164 - %166 = load i32, ptr %165, align 4 - %167 = tail call i32 @iswupper(i32 noundef %166) #16 - %.pre68 = load i8, ptr inttoptr (i64 32 to ptr), align 32 - %.pre69 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 - %168 = trunc i8 %.pre68 to i1 - tail call void @llvm.assume(i1 %168) - %.not.i.i34 = icmp eq ptr %.pre69, null - br i1 %.not.i.i34, label %169, label %p_isnotupper.exit - -169: ; preds = %p_isupper.exit - %170 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %171 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %172 = getelementptr inbounds nuw i8, ptr %171, i64 4 +p_isspace.exit: ; preds = %p_isnotpunct.exit, %143 + %152 = phi ptr [ %.pre59, %p_isnotpunct.exit ], [ %.pre58, %143 ] + %153 = phi i8 [ %139, %p_isnotpunct.exit ], [ %.pre57, %143 ] + %154 = trunc i8 %153 to i1 + tail call void @llvm.assume(i1 %154) + %.not.i.i29 = icmp eq ptr %152, null + br i1 %.not.i.i29, label %155, label %p_isnotspace.exit + +155: ; preds = %p_isspace.exit + %156 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %157 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %158 = getelementptr inbounds nuw i8, ptr %157, i64 4 + %159 = load i32, ptr %158, align 4 + %160 = sext i32 %159 to i64 + %161 = getelementptr i32, ptr %156, i64 %160 + %162 = load i32, ptr %161, align 4 + %163 = tail call i32 @iswspace(i32 noundef %162) #16 + %.pre60 = load i8, ptr inttoptr (i64 32 to ptr), align 32 + %.pre65.pre71.pre77.pre = load ptr, ptr inttoptr (i64 24 to ptr), align 8 + br label %p_isnotspace.exit + +p_isnotspace.exit: ; preds = %p_isspace.exit.thread, %p_isspace.exit, %155 + %.pre65.pre71.pre77 = phi ptr [ %152, %p_isspace.exit ], [ %.pre65.pre71.pre77.pre, %155 ], [ %.pre59, %p_isspace.exit.thread ] + %164 = phi i8 [ %153, %p_isspace.exit ], [ %.pre60, %155 ], [ %139, %p_isspace.exit.thread ] + %165 = trunc i8 %164 to i1 + %.not.i33 = icmp eq ptr %.pre65.pre71.pre77, null + %or.cond100 = select i1 %165, i1 %.not.i33, i1 false + br i1 %or.cond100, label %166, label %p_isupper.exit + +166: ; preds = %p_isnotspace.exit + %167 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %168 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %169 = getelementptr inbounds nuw i8, ptr %168, i64 4 + %170 = load i32, ptr %169, align 4 + %171 = sext i32 %170 to i64 + %172 = getelementptr i32, ptr %167, i64 %171 %173 = load i32, ptr %172, align 4 - %174 = sext i32 %173 to i64 - %175 = getelementptr i32, ptr %170, i64 %174 - %176 = load i32, ptr %175, align 4 - %177 = tail call i32 @iswupper(i32 noundef %176) #16 - %.pre70 = load i8, ptr inttoptr (i64 32 to ptr), align 32 - %.pre73.pre = load ptr, ptr inttoptr (i64 24 to ptr), align 8 + %174 = tail call i32 @iswupper(i32 noundef %173) #16 + %.pre61 = load i8, ptr inttoptr (i64 32 to ptr), align 32 + %.pre65.pre71.pre = load ptr, ptr inttoptr (i64 24 to ptr), align 8 + br label %p_isupper.exit + +p_isupper.exit: ; preds = %p_isnotspace.exit, %166 + %.pre65.pre71 = phi ptr [ %.pre65.pre71.pre77, %p_isnotspace.exit ], [ %.pre65.pre71.pre, %166 ] + %175 = phi i8 [ %164, %p_isnotspace.exit ], [ %.pre61, %166 ] + %176 = trunc i8 %175 to i1 + %.not.i.i36 = icmp eq ptr %.pre65.pre71, null + %or.cond101 = select i1 %176, i1 %.not.i.i36, i1 false + br i1 %or.cond101, label %177, label %p_isnotupper.exit + +177: ; preds = %p_isupper.exit + %178 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %179 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %180 = getelementptr inbounds nuw i8, ptr %179, i64 4 + %181 = load i32, ptr %180, align 4 + %182 = sext i32 %181 to i64 + %183 = getelementptr i32, ptr %178, i64 %182 + %184 = load i32, ptr %183, align 4 + %185 = tail call i32 @iswupper(i32 noundef %184) #16 + %.pre62 = load i8, ptr inttoptr (i64 32 to ptr), align 32 + %.pre65.pre = load ptr, ptr inttoptr (i64 24 to ptr), align 8 br label %p_isnotupper.exit -p_isnotupper.exit: ; preds = %p_isupper.exit.thread, %p_isupper.exit, %169 - %.pre73 = phi ptr [ %.pre69, %p_isupper.exit ], [ %.pre73.pre, %169 ], [ %.ph104, %p_isupper.exit.thread ] - %178 = phi i8 [ %.pre68, %p_isupper.exit ], [ %.pre70, %169 ], [ %.ph105, %p_isupper.exit.thread ] - %179 = trunc i8 %178 to i1 - br i1 %179, label %180, label %p_isxdigit.exit +p_isnotupper.exit: ; preds = %p_isupper.exit, %177 + %.pre65 = phi ptr [ %.pre65.pre71, %p_isupper.exit ], [ %.pre65.pre, %177 ] + %186 = phi i8 [ %175, %p_isupper.exit ], [ %.pre62, %177 ] + %187 = trunc i8 %186 to i1 + br i1 %187, label %188, label %p_isxdigit.exit -180: ; preds = %p_isnotupper.exit - %.not.i38 = icmp eq ptr %.pre73, null - br i1 %.not.i38, label %182, label %p_isxdigit.exit.thread +188: ; preds = %p_isnotupper.exit + %.not.i38 = icmp eq ptr %.pre65, null + br i1 %.not.i38, label %190, label %p_isxdigit.exit.thread -p_isxdigit.exit.thread: ; preds = %180 - %181 = trunc i8 %178 to i1 - tail call void @llvm.assume(i1 %181) +p_isxdigit.exit.thread: ; preds = %188 + %189 = trunc i8 %186 to i1 + tail call void @llvm.assume(i1 %189) br label %p_isnotxdigit.exit -182: ; preds = %180 - %183 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %184 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %185 = getelementptr inbounds nuw i8, ptr %184, i64 4 - %186 = load i32, ptr %185, align 4 - %187 = sext i32 %186 to i64 - %188 = getelementptr i32, ptr %183, i64 %187 - %189 = load i32, ptr %188, align 4 - %190 = tail call i32 @iswxdigit(i32 noundef %189) #16 - %.pre71 = load i8, ptr inttoptr (i64 32 to ptr), align 32 - %.pre72 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 +190: ; preds = %188 + %191 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %192 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %193 = getelementptr inbounds nuw i8, ptr %192, i64 4 + %194 = load i32, ptr %193, align 4 + %195 = sext i32 %194 to i64 + %196 = getelementptr i32, ptr %191, i64 %195 + %197 = load i32, ptr %196, align 4 + %198 = tail call i32 @iswxdigit(i32 noundef %197) #16 + %.pre63 = load i8, ptr inttoptr (i64 32 to ptr), align 32 + %.pre64 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 br label %p_isxdigit.exit -p_isxdigit.exit: ; preds = %p_isnotupper.exit, %182 - %191 = phi ptr [ %.pre73, %p_isnotupper.exit ], [ %.pre72, %182 ] - %192 = phi i8 [ %178, %p_isnotupper.exit ], [ %.pre71, %182 ] - %193 = trunc i8 %192 to i1 - tail call void @llvm.assume(i1 %193) - %.not.i.i39 = icmp eq ptr %191, null - br i1 %.not.i.i39, label %194, label %p_isnotxdigit.exit - -194: ; preds = %p_isxdigit.exit - %195 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %196 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %197 = getelementptr inbounds nuw i8, ptr %196, i64 4 - %198 = load i32, ptr %197, align 4 - %199 = sext i32 %198 to i64 - %200 = getelementptr i32, ptr %195, i64 %199 - %201 = load i32, ptr %200, align 4 - %202 = tail call i32 @iswxdigit(i32 noundef %201) #16 +p_isxdigit.exit: ; preds = %p_isnotupper.exit, %190 + %199 = phi ptr [ %.pre65, %p_isnotupper.exit ], [ %.pre64, %190 ] + %200 = phi i8 [ %186, %p_isnotupper.exit ], [ %.pre63, %190 ] + %201 = trunc i8 %200 to i1 + tail call void @llvm.assume(i1 %201) + %.not.i.i39 = icmp eq ptr %199, null + br i1 %.not.i.i39, label %202, label %p_isnotxdigit.exit + +202: ; preds = %p_isxdigit.exit + %203 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %204 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %205 = getelementptr inbounds nuw i8, ptr %204, i64 4 + %206 = load i32, ptr %205, align 4 + %207 = sext i32 %206 to i64 + %208 = getelementptr i32, ptr %203, i64 %207 + %209 = load i32, ptr %208, align 4 + %210 = tail call i32 @iswxdigit(i32 noundef %209) #16 br label %p_isnotxdigit.exit -p_isnotxdigit.exit: ; preds = %p_isxdigit.exit.thread, %p_isxdigit.exit, %194 - %203 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %204 = getelementptr inbounds nuw i8, ptr %203, i64 8 - %205 = load i32, ptr %204, align 8 - %206 = icmp ne i32 %205, 1 - tail call void @llvm.assume(i1 %206) +p_isnotxdigit.exit: ; preds = %p_isxdigit.exit.thread, %p_isxdigit.exit, %202 + %211 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %212 = getelementptr inbounds nuw i8, ptr %211, i64 8 + %213 = load i32, ptr %212, align 8 + %214 = icmp ne i32 %213, 1 + tail call void @llvm.assume(i1 %214) ret void } diff --git a/bench/sundials/optimized/arkode_sprk.c.ll b/bench/sundials/optimized/arkode_sprk.c.ll index 461b194ef4..7c87e13550 100644 --- a/bench/sundials/optimized/arkode_sprk.c.ll +++ b/bench/sundials/optimized/arkode_sprk.c.ll @@ -23,26 +23,26 @@ define noalias noundef ptr @ARKodeSymplecticEuler() local_unnamed_addr #0 { br i1 %.not.i, label %ARKodeSPRKTable_Alloc.exit.thread, label %1 1: ; preds = %0 - %2 = tail call noalias dereferenceable_or_null(8) ptr @malloc(i64 noundef 8) #13 + %2 = tail call noalias dereferenceable_or_null(8) ptr @malloc(i64 noundef 8) #12 %3 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 16 store ptr %2, ptr %3, align 8 %.not14.i = icmp eq ptr %2, null br i1 %.not14.i, label %ARKodeSPRKTable_Free.exit.i, label %4 ARKodeSPRKTable_Free.exit.i: ; preds = %1 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 4: ; preds = %1 - %5 = tail call noalias dereferenceable_or_null(8) ptr @malloc(i64 noundef 8) #13 + %5 = tail call noalias dereferenceable_or_null(8) ptr @malloc(i64 noundef 8) #12 %6 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 8 store ptr %5, ptr %6, align 8 %.not15.i = icmp eq ptr %5, null br i1 %.not15.i, label %ARKodeSPRKTable_Free.exit19.i, label %7 ARKodeSPRKTable_Free.exit19.i: ; preds = %4 - tail call void @free(ptr noundef nonnull %2) #14 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %2) #13 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 7: ; preds = %4 @@ -67,26 +67,26 @@ define noalias noundef ptr @ARKodeSPRKTable_Alloc(i32 noundef %0) local_unnamed_ 2: ; preds = %1 %3 = sext i32 %0 to i64 %4 = shl nsw i64 %3, 3 - %5 = tail call noalias ptr @malloc(i64 noundef %4) #13 + %5 = tail call noalias ptr @malloc(i64 noundef %4) #12 %6 = getelementptr inbounds nuw i8, ptr %calloc, i64 16 store ptr %5, ptr %6, align 8 %.not14 = icmp eq ptr %5, null br i1 %.not14, label %ARKodeSPRKTable_Free.exit, label %7 ARKodeSPRKTable_Free.exit: ; preds = %2 - tail call void @free(ptr noundef nonnull %calloc) #14 + tail call void @free(ptr noundef nonnull %calloc) #13 br label %12 7: ; preds = %2 - %8 = tail call noalias ptr @malloc(i64 noundef %4) #13 + %8 = tail call noalias ptr @malloc(i64 noundef %4) #12 %9 = getelementptr inbounds nuw i8, ptr %calloc, i64 8 store ptr %8, ptr %9, align 8 %.not15 = icmp eq ptr %8, null br i1 %.not15, label %ARKodeSPRKTable_Free.exit19, label %10 ARKodeSPRKTable_Free.exit19: ; preds = %7 - tail call void @free(ptr noundef nonnull %5) #14 - tail call void @free(ptr noundef nonnull %calloc) #14 + tail call void @free(ptr noundef nonnull %5) #13 + tail call void @free(ptr noundef nonnull %calloc) #13 br label %12 10: ; preds = %7 @@ -106,26 +106,26 @@ define noalias noundef ptr @ARKodeSymplecticLeapfrog2() local_unnamed_addr #0 { br i1 %.not.i, label %ARKodeSPRKTable_Alloc.exit.thread, label %1 1: ; preds = %0 - %2 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #13 + %2 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #12 %3 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 16 store ptr %2, ptr %3, align 8 %.not14.i = icmp eq ptr %2, null br i1 %.not14.i, label %ARKodeSPRKTable_Free.exit.i, label %4 ARKodeSPRKTable_Free.exit.i: ; preds = %1 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 4: ; preds = %1 - %5 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #13 + %5 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #12 %6 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 8 store ptr %5, ptr %6, align 8 %.not15.i = icmp eq ptr %5, null br i1 %.not15.i, label %ARKodeSPRKTable_Free.exit19.i, label %7 ARKodeSPRKTable_Free.exit19.i: ; preds = %4 - tail call void @free(ptr noundef nonnull %2) #14 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %2) #13 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 7: ; preds = %4 @@ -152,26 +152,26 @@ define noalias noundef ptr @ARKodeSymplecticPseudoLeapfrog2() local_unnamed_addr br i1 %.not.i, label %ARKodeSPRKTable_Alloc.exit.thread, label %1 1: ; preds = %0 - %2 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #13 + %2 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #12 %3 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 16 store ptr %2, ptr %3, align 8 %.not14.i = icmp eq ptr %2, null br i1 %.not14.i, label %ARKodeSPRKTable_Free.exit.i, label %4 ARKodeSPRKTable_Free.exit.i: ; preds = %1 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 4: ; preds = %1 - %5 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #13 + %5 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #12 %6 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 8 store ptr %5, ptr %6, align 8 %.not15.i = icmp eq ptr %5, null br i1 %.not15.i, label %ARKodeSPRKTable_Free.exit19.i, label %7 ARKodeSPRKTable_Free.exit19.i: ; preds = %4 - tail call void @free(ptr noundef nonnull %2) #14 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %2) #13 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 7: ; preds = %4 @@ -198,41 +198,41 @@ define noalias noundef ptr @ARKodeSymplecticCandyRozmus4() local_unnamed_addr #1 br i1 %.not.i, label %ARKodeSPRKTable_Alloc.exit.thread, label %1 1: ; preds = %0 - %2 = tail call noalias dereferenceable_or_null(32) ptr @malloc(i64 noundef 32) #13 + %2 = tail call noalias dereferenceable_or_null(32) ptr @malloc(i64 noundef 32) #12 %3 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 16 store ptr %2, ptr %3, align 8 %.not14.i = icmp eq ptr %2, null br i1 %.not14.i, label %ARKodeSPRKTable_Free.exit.i, label %4 ARKodeSPRKTable_Free.exit.i: ; preds = %1 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 4: ; preds = %1 - %5 = tail call noalias dereferenceable_or_null(32) ptr @malloc(i64 noundef 32) #13 + %5 = tail call noalias dereferenceable_or_null(32) ptr @malloc(i64 noundef 32) #12 %6 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 8 store ptr %5, ptr %6, align 8 %.not15.i = icmp eq ptr %5, null br i1 %.not15.i, label %ARKodeSPRKTable_Free.exit19.i, label %7 ARKodeSPRKTable_Free.exit19.i: ; preds = %4 - tail call void @free(ptr noundef nonnull %2) #14 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %2) #13 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 7: ; preds = %4 %8 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 4 store i32 4, ptr %calloc.i, align 8 store i32 4, ptr %8, align 4 - %9 = tail call double @SUNRpowerR(double noundef 2.000000e+00, double noundef 0x3FD5555555555555) #14 + %9 = tail call double @SUNRpowerR(double noundef 2.000000e+00, double noundef 0x3FD5555555555555) #13 %10 = fadd double %9, 2.000000e+00 - %11 = tail call double @SUNRpowerR(double noundef 2.000000e+00, double noundef 0xBFD5555555555555) #14 + %11 = tail call double @SUNRpowerR(double noundef 2.000000e+00, double noundef 0xBFD5555555555555) #13 %12 = fadd double %10, %11 %13 = fdiv double %12, 6.000000e+00 store double %13, ptr %5, align 8 - %14 = tail call double @SUNRpowerR(double noundef 2.000000e+00, double noundef 0x3FD5555555555555) #14 + %14 = tail call double @SUNRpowerR(double noundef 2.000000e+00, double noundef 0x3FD5555555555555) #13 %15 = fsub double 1.000000e+00, %14 - %16 = tail call double @SUNRpowerR(double noundef 2.000000e+00, double noundef 0xBFD5555555555555) #14 + %16 = tail call double @SUNRpowerR(double noundef 2.000000e+00, double noundef 0xBFD5555555555555) #13 %17 = fsub double %15, %16 %18 = fdiv double %17, 6.000000e+00 %19 = getelementptr inbounds nuw i8, ptr %5, i64 8 @@ -243,12 +243,12 @@ ARKodeSPRKTable_Free.exit19.i: ; preds = %4 %22 = getelementptr inbounds nuw i8, ptr %5, i64 24 store double %21, ptr %22, align 8 store double 0.000000e+00, ptr %2, align 8 - %23 = tail call double @SUNRpowerR(double noundef 2.000000e+00, double noundef 0x3FD5555555555555) #14 + %23 = tail call double @SUNRpowerR(double noundef 2.000000e+00, double noundef 0x3FD5555555555555) #13 %24 = fsub double 2.000000e+00, %23 %25 = fdiv double 1.000000e+00, %24 %26 = getelementptr inbounds nuw i8, ptr %2, i64 8 store double %25, ptr %26, align 8 - %27 = tail call double @SUNRpowerR(double noundef 2.000000e+00, double noundef 0x3FE5555555555555) #14 + %27 = tail call double @SUNRpowerR(double noundef 2.000000e+00, double noundef 0x3FE5555555555555) #13 %28 = fsub double 1.000000e+00, %27 %29 = fdiv double 1.000000e+00, %28 %30 = getelementptr inbounds nuw i8, ptr %2, i64 16 @@ -272,26 +272,26 @@ define noalias noundef ptr @ARKodeSymplecticRuth3() local_unnamed_addr #0 { br i1 %.not.i, label %ARKodeSPRKTable_Alloc.exit.thread, label %1 1: ; preds = %0 - %2 = tail call noalias dereferenceable_or_null(24) ptr @malloc(i64 noundef 24) #13 + %2 = tail call noalias dereferenceable_or_null(24) ptr @malloc(i64 noundef 24) #12 %3 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 16 store ptr %2, ptr %3, align 8 %.not14.i = icmp eq ptr %2, null br i1 %.not14.i, label %ARKodeSPRKTable_Free.exit.i, label %4 ARKodeSPRKTable_Free.exit.i: ; preds = %1 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 4: ; preds = %1 - %5 = tail call noalias dereferenceable_or_null(24) ptr @malloc(i64 noundef 24) #13 + %5 = tail call noalias dereferenceable_or_null(24) ptr @malloc(i64 noundef 24) #12 %6 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 8 store ptr %5, ptr %6, align 8 %.not15.i = icmp eq ptr %5, null br i1 %.not15.i, label %ARKodeSPRKTable_Free.exit19.i, label %7 ARKodeSPRKTable_Free.exit19.i: ; preds = %4 - tail call void @free(ptr noundef nonnull %2) #14 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %2) #13 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 7: ; preds = %4 @@ -322,26 +322,26 @@ define noalias noundef ptr @ARKodeSymplecticMcLachlan2() local_unnamed_addr #0 { br i1 %.not.i, label %ARKodeSPRKTable_Alloc.exit.thread, label %1 1: ; preds = %0 - %2 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #13 + %2 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #12 %3 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 16 store ptr %2, ptr %3, align 8 %.not14.i = icmp eq ptr %2, null br i1 %.not14.i, label %ARKodeSPRKTable_Free.exit.i, label %4 ARKodeSPRKTable_Free.exit.i: ; preds = %1 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 4: ; preds = %1 - %5 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #13 + %5 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #12 %6 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 8 store ptr %5, ptr %6, align 8 %.not15.i = icmp eq ptr %5, null br i1 %.not15.i, label %ARKodeSPRKTable_Free.exit19.i, label %7 ARKodeSPRKTable_Free.exit19.i: ; preds = %4 - tail call void @free(ptr noundef nonnull %2) #14 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %2) #13 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 7: ; preds = %4 @@ -374,33 +374,33 @@ define noalias noundef ptr @ARKodeSymplecticMcLachlan3() local_unnamed_addr #1 { br i1 %.not.i, label %ARKodeSPRKTable_Alloc.exit.thread, label %1 1: ; preds = %0 - %2 = tail call noalias dereferenceable_or_null(24) ptr @malloc(i64 noundef 24) #13 + %2 = tail call noalias dereferenceable_or_null(24) ptr @malloc(i64 noundef 24) #12 %3 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 16 store ptr %2, ptr %3, align 8 %.not14.i = icmp eq ptr %2, null br i1 %.not14.i, label %ARKodeSPRKTable_Free.exit.i, label %4 ARKodeSPRKTable_Free.exit.i: ; preds = %1 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 4: ; preds = %1 - %5 = tail call noalias dereferenceable_or_null(24) ptr @malloc(i64 noundef 24) #13 + %5 = tail call noalias dereferenceable_or_null(24) ptr @malloc(i64 noundef 24) #12 %6 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 8 store ptr %5, ptr %6, align 8 %.not15.i = icmp eq ptr %5, null br i1 %.not15.i, label %ARKodeSPRKTable_Free.exit19.i, label %7 ARKodeSPRKTable_Free.exit19.i: ; preds = %4 - tail call void @free(ptr noundef nonnull %2) #14 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %2) #13 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 7: ; preds = %4 %8 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 4 store i32 3, ptr %calloc.i, align 8 store i32 3, ptr %8, align 4 - %9 = tail call double @SUNRpowerR(double noundef 0x3F84530EA9080FC8, double noundef 0x3FD5555555555555) #14 + %9 = tail call double @SUNRpowerR(double noundef 0x3F84530EA9080FC8, double noundef 0x3FD5555555555555) #13 %10 = fmul double %9, 9.000000e+00 %11 = fdiv double 1.000000e+00, %10 %12 = fsub double 0xBFE5555555555555, %11 @@ -419,24 +419,24 @@ ARKodeSPRKTable_Free.exit19.i: ; preds = %4 br i1 %22, label %.thread39, label %.thread38 .thread39: ; preds = %21 - %23 = tail call double @sqrt(double noundef %19) #14 + %23 = tail call double @sqrt(double noundef %19) #13 br label %.thread38 .thread: ; preds = %7 - %24 = tail call double @sqrt(double noundef %15) #14 + %24 = tail call double @sqrt(double noundef %15) #13 %25 = fadd double %19, %24 %26 = fcmp ugt double %25, 0.000000e+00 br i1 %26, label %27, label %.thread37 27: ; preds = %.thread - %28 = tail call double @sqrt(double noundef %15) #14 + %28 = tail call double @sqrt(double noundef %15) #13 %29 = fadd double %19, %28 - %30 = tail call double @sqrt(double noundef %29) #14 + %30 = tail call double @sqrt(double noundef %29) #13 br label %.thread37 .thread37: ; preds = %27, %.thread %31 = phi double [ %30, %27 ], [ 0.000000e+00, %.thread ] - %32 = tail call double @sqrt(double noundef %15) #14 + %32 = tail call double @sqrt(double noundef %15) #13 %33 = fmul double %32, 3.000000e+00 br label %.thread38 @@ -474,26 +474,26 @@ define noalias noundef ptr @ARKodeSymplecticMcLachlan4() local_unnamed_addr #0 { br i1 %.not.i, label %ARKodeSPRKTable_Alloc.exit.thread, label %1 1: ; preds = %0 - %2 = tail call noalias dereferenceable_or_null(32) ptr @malloc(i64 noundef 32) #13 + %2 = tail call noalias dereferenceable_or_null(32) ptr @malloc(i64 noundef 32) #12 %3 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 16 store ptr %2, ptr %3, align 8 %.not14.i = icmp eq ptr %2, null br i1 %.not14.i, label %ARKodeSPRKTable_Free.exit.i, label %4 ARKodeSPRKTable_Free.exit.i: ; preds = %1 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 4: ; preds = %1 - %5 = tail call noalias dereferenceable_or_null(32) ptr @malloc(i64 noundef 32) #13 + %5 = tail call noalias dereferenceable_or_null(32) ptr @malloc(i64 noundef 32) #12 %6 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 8 store ptr %5, ptr %6, align 8 %.not15.i = icmp eq ptr %5, null br i1 %.not15.i, label %ARKodeSPRKTable_Free.exit19.i, label %7 ARKodeSPRKTable_Free.exit19.i: ; preds = %4 - tail call void @free(ptr noundef nonnull %2) #14 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %2) #13 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 7: ; preds = %4 @@ -528,26 +528,26 @@ define noalias noundef ptr @ARKodeSymplecticMcLachlan5() local_unnamed_addr #0 { br i1 %.not.i, label %ARKodeSPRKTable_Alloc.exit.thread, label %1 1: ; preds = %0 - %2 = tail call noalias dereferenceable_or_null(48) ptr @malloc(i64 noundef 48) #13 + %2 = tail call noalias dereferenceable_or_null(48) ptr @malloc(i64 noundef 48) #12 %3 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 16 store ptr %2, ptr %3, align 8 %.not14.i = icmp eq ptr %2, null br i1 %.not14.i, label %ARKodeSPRKTable_Free.exit.i, label %4 ARKodeSPRKTable_Free.exit.i: ; preds = %1 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 4: ; preds = %1 - %5 = tail call noalias dereferenceable_or_null(48) ptr @malloc(i64 noundef 48) #13 + %5 = tail call noalias dereferenceable_or_null(48) ptr @malloc(i64 noundef 48) #12 %6 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 8 store ptr %5, ptr %6, align 8 %.not15.i = icmp eq ptr %5, null br i1 %.not15.i, label %ARKodeSPRKTable_Free.exit19.i, label %7 ARKodeSPRKTable_Free.exit19.i: ; preds = %4 - tail call void @free(ptr noundef nonnull %2) #14 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %2) #13 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 7: ; preds = %4 @@ -590,26 +590,26 @@ define noalias noundef ptr @ARKodeSymplecticYoshida6() local_unnamed_addr #0 { br i1 %.not.i, label %ARKodeSPRKTable_Alloc.exit.thread, label %1 1: ; preds = %0 - %2 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #13 + %2 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #12 %3 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 16 store ptr %2, ptr %3, align 8 %.not14.i = icmp eq ptr %2, null br i1 %.not14.i, label %ARKodeSPRKTable_Free.exit.i, label %4 ARKodeSPRKTable_Free.exit.i: ; preds = %1 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 4: ; preds = %1 - %5 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #13 + %5 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #12 %6 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 8 store ptr %5, ptr %6, align 8 %.not15.i = icmp eq ptr %5, null br i1 %.not15.i, label %ARKodeSPRKTable_Free.exit19.i, label %7 ARKodeSPRKTable_Free.exit19.i: ; preds = %4 - tail call void @free(ptr noundef nonnull %2) #14 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %2) #13 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 7: ; preds = %4 @@ -660,26 +660,26 @@ define noalias noundef ptr @ARKodeSymplecticSuzukiUmeno816() local_unnamed_addr br i1 %.not.i, label %ARKodeSPRKTable_Alloc.exit.thread, label %1 1: ; preds = %0 - %2 = tail call noalias dereferenceable_or_null(128) ptr @malloc(i64 noundef 128) #13 + %2 = tail call noalias dereferenceable_or_null(128) ptr @malloc(i64 noundef 128) #12 %3 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 16 store ptr %2, ptr %3, align 8 %.not14.i = icmp eq ptr %2, null br i1 %.not14.i, label %ARKodeSPRKTable_Free.exit.i, label %4 ARKodeSPRKTable_Free.exit.i: ; preds = %1 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 4: ; preds = %1 - %5 = tail call noalias dereferenceable_or_null(128) ptr @malloc(i64 noundef 128) #13 + %5 = tail call noalias dereferenceable_or_null(128) ptr @malloc(i64 noundef 128) #12 %6 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 8 store ptr %5, ptr %6, align 8 %.not15.i = icmp eq ptr %5, null br i1 %.not15.i, label %ARKodeSPRKTable_Free.exit19.i, label %7 ARKodeSPRKTable_Free.exit19.i: ; preds = %4 - tail call void @free(ptr noundef nonnull %2) #14 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %2) #13 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 7: ; preds = %4 @@ -762,26 +762,26 @@ define noalias noundef ptr @ARKodeSymplecticSofroniou10() local_unnamed_addr #5 br i1 %.not.i, label %ARKodeSPRKTable_Alloc.exit.thread, label %1 1: ; preds = %0 - %2 = tail call noalias dereferenceable_or_null(288) ptr @malloc(i64 noundef 288) #13 + %2 = tail call noalias dereferenceable_or_null(288) ptr @malloc(i64 noundef 288) #12 %3 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 16 store ptr %2, ptr %3, align 8 %.not14.i = icmp eq ptr %2, null br i1 %.not14.i, label %ARKodeSPRKTable_Free.exit.i, label %4 ARKodeSPRKTable_Free.exit.i: ; preds = %1 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 4: ; preds = %1 - %5 = tail call noalias dereferenceable_or_null(288) ptr @malloc(i64 noundef 288) #13 + %5 = tail call noalias dereferenceable_or_null(288) ptr @malloc(i64 noundef 288) #12 %6 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 8 store ptr %5, ptr %6, align 8 %.not15.i = icmp eq ptr %5, null br i1 %.not15.i, label %ARKodeSPRKTable_Free.exit19.i, label %7 ARKodeSPRKTable_Free.exit19.i: ; preds = %4 - tail call void @free(ptr noundef nonnull %2) #14 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %2) #13 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit.thread 7: ; preds = %4 @@ -990,9 +990,9 @@ ARKodeSPRKTable_Alloc.exit.thread: ; preds = %0, %ARKodeSPRKTable ret ptr %.0 } -; Function Attrs: mustprogress nofree nounwind willreturn memory(write, argmem: none, inaccessiblemem: readwrite) uwtable +; Function Attrs: nofree nounwind memory(write, argmem: readwrite, inaccessiblemem: readwrite) uwtable define noalias noundef ptr @ARKodeSPRKTable_Create(i32 noundef %0, i32 noundef %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3) local_unnamed_addr #6 { - %5 = tail call noalias dereferenceable_or_null(24) ptr @malloc(i64 noundef 24) #13 + %5 = tail call noalias dereferenceable_or_null(24) ptr @malloc(i64 noundef 24) #12 %.not = icmp eq ptr %5, null br i1 %.not, label %.loopexit, label %6 @@ -1000,11 +1000,24 @@ define noalias noundef ptr @ARKodeSPRKTable_Create(i32 noundef %0, i32 noundef % %7 = getelementptr inbounds nuw i8, ptr %5, i64 4 store i32 %0, ptr %7, align 4 store i32 %1, ptr %5, align 8 - %8 = icmp slt i32 %0, 1 - tail call void @llvm.assume(i1 %8) - br label %.loopexit + %8 = icmp sgt i32 %0, 0 + br i1 %8, label %.lr.ph, label %.loopexit + +.lr.ph: ; preds = %6 + %wide.trip.count = zext nneg i32 %0 to i64 + br label %9 + +9: ; preds = %.lr.ph, %9 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %9 ] + %10 = getelementptr inbounds nuw double, ptr undef, i64 %indvars.iv + %11 = getelementptr inbounds nuw double, ptr %3, i64 %indvars.iv + %12 = load double, ptr %11, align 8 + store double %12, ptr %10, align 8 + %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 %.loopexit, label %9 -.loopexit: ; preds = %6, %4 +.loopexit: ; preds = %9, %6, %4 ret ptr %5 } @@ -1023,7 +1036,7 @@ define void @ARKodeSPRKTable_Free(ptr noundef %0) local_unnamed_addr #5 { br i1 %.not8, label %6, label %5 5: ; preds = %2 - tail call void @free(ptr noundef nonnull %4) #14 + tail call void @free(ptr noundef nonnull %4) #13 br label %6 6: ; preds = %5, %2 @@ -1033,11 +1046,11 @@ define void @ARKodeSPRKTable_Free(ptr noundef %0) local_unnamed_addr #5 { br i1 %.not9, label %10, label %9 9: ; preds = %6 - tail call void @free(ptr noundef nonnull %8) #14 + tail call void @free(ptr noundef nonnull %8) #13 br label %10 10: ; preds = %9, %6 - tail call void @free(ptr noundef nonnull %0) #14 + tail call void @free(ptr noundef nonnull %0) #13 br label %11 11: ; preds = %10, %1 @@ -1067,26 +1080,26 @@ define noalias noundef ptr @ARKodeSPRKTable_Load(i32 noundef %0) local_unnamed_a br i1 %.not.i.i, label %ARKodeSymplecticEuler.exit, label %3 3: ; preds = %2 - %4 = tail call noalias dereferenceable_or_null(8) ptr @malloc(i64 noundef 8) #13 + %4 = tail call noalias dereferenceable_or_null(8) ptr @malloc(i64 noundef 8) #12 %5 = getelementptr inbounds nuw i8, ptr %calloc.i.i, i64 16 store ptr %4, ptr %5, align 8 %.not14.i.i = icmp eq ptr %4, null br i1 %.not14.i.i, label %ARKodeSPRKTable_Free.exit.i.i, label %6 ARKodeSPRKTable_Free.exit.i.i: ; preds = %3 - tail call void @free(ptr noundef nonnull %calloc.i.i) #14 + tail call void @free(ptr noundef nonnull %calloc.i.i) #13 br label %ARKodeSymplecticEuler.exit 6: ; preds = %3 - %7 = tail call noalias dereferenceable_or_null(8) ptr @malloc(i64 noundef 8) #13 + %7 = tail call noalias dereferenceable_or_null(8) ptr @malloc(i64 noundef 8) #12 %8 = getelementptr inbounds nuw i8, ptr %calloc.i.i, i64 8 store ptr %7, ptr %8, align 8 %.not15.i.i = icmp eq ptr %7, null br i1 %.not15.i.i, label %ARKodeSPRKTable_Free.exit19.i.i, label %9 ARKodeSPRKTable_Free.exit19.i.i: ; preds = %6 - tail call void @free(ptr noundef nonnull %4) #14 - tail call void @free(ptr noundef nonnull %calloc.i.i) #14 + tail call void @free(ptr noundef nonnull %4) #13 + tail call void @free(ptr noundef nonnull %calloc.i.i) #13 br label %ARKodeSymplecticEuler.exit 9: ; preds = %6 @@ -1148,7 +1161,7 @@ ARKodeSymplecticEuler.exit: ; preds = %9, %ARKodeSPRKTable ; Function Attrs: nounwind uwtable define noalias noundef ptr @ARKodeSPRKTable_LoadByName(ptr nocapture noundef readonly %0) local_unnamed_addr #1 { - %2 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(22) @.str) #15 + %2 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(22) @.str) #14 %.not = icmp eq i32 %2, 0 br i1 %.not, label %3, label %12 @@ -1158,26 +1171,26 @@ define noalias noundef ptr @ARKodeSPRKTable_LoadByName(ptr nocapture noundef rea br i1 %.not.i.i, label %ARKodeSymplecticEuler.exit, label %4 4: ; preds = %3 - %5 = tail call noalias dereferenceable_or_null(8) ptr @malloc(i64 noundef 8) #13 + %5 = tail call noalias dereferenceable_or_null(8) ptr @malloc(i64 noundef 8) #12 %6 = getelementptr inbounds nuw i8, ptr %calloc.i.i, i64 16 store ptr %5, ptr %6, align 8 %.not14.i.i = icmp eq ptr %5, null br i1 %.not14.i.i, label %ARKodeSPRKTable_Free.exit.i.i, label %7 ARKodeSPRKTable_Free.exit.i.i: ; preds = %4 - tail call void @free(ptr noundef nonnull %calloc.i.i) #14 + tail call void @free(ptr noundef nonnull %calloc.i.i) #13 br label %ARKodeSymplecticEuler.exit 7: ; preds = %4 - %8 = tail call noalias dereferenceable_or_null(8) ptr @malloc(i64 noundef 8) #13 + %8 = tail call noalias dereferenceable_or_null(8) ptr @malloc(i64 noundef 8) #12 %9 = getelementptr inbounds nuw i8, ptr %calloc.i.i, i64 8 store ptr %8, ptr %9, align 8 %.not15.i.i = icmp eq ptr %8, null br i1 %.not15.i.i, label %ARKodeSPRKTable_Free.exit19.i.i, label %10 ARKodeSPRKTable_Free.exit19.i.i: ; preds = %7 - tail call void @free(ptr noundef nonnull %5) #14 - tail call void @free(ptr noundef nonnull %calloc.i.i) #14 + tail call void @free(ptr noundef nonnull %5) #13 + tail call void @free(ptr noundef nonnull %calloc.i.i) #13 br label %ARKodeSymplecticEuler.exit 10: ; preds = %7 @@ -1189,7 +1202,7 @@ ARKodeSPRKTable_Free.exit19.i.i: ; preds = %7 br label %ARKodeSymplecticEuler.exit 12: ; preds = %1 - %13 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(25) @.str.1) #15 + %13 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(25) @.str.1) #14 %.not13 = icmp eq i32 %13, 0 br i1 %.not13, label %14, label %16 @@ -1198,7 +1211,7 @@ ARKodeSPRKTable_Free.exit19.i.i: ; preds = %7 br label %ARKodeSymplecticEuler.exit 16: ; preds = %12 - %17 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(32) @.str.2) #15 + %17 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(32) @.str.2) #14 %.not14 = icmp eq i32 %17, 0 br i1 %.not14, label %18, label %20 @@ -1207,7 +1220,7 @@ ARKodeSPRKTable_Free.exit19.i.i: ; preds = %7 br label %ARKodeSymplecticEuler.exit 20: ; preds = %16 - %21 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(21) @.str.3) #15 + %21 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(21) @.str.3) #14 %.not15 = icmp eq i32 %21, 0 br i1 %.not15, label %22, label %24 @@ -1216,7 +1229,7 @@ ARKodeSPRKTable_Free.exit19.i.i: ; preds = %7 br label %ARKodeSymplecticEuler.exit 24: ; preds = %20 - %25 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(26) @.str.4) #15 + %25 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(26) @.str.4) #14 %.not16 = icmp eq i32 %25, 0 br i1 %.not16, label %26, label %28 @@ -1225,7 +1238,7 @@ ARKodeSPRKTable_Free.exit19.i.i: ; preds = %7 br label %ARKodeSymplecticEuler.exit 28: ; preds = %24 - %29 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(26) @.str.5) #15 + %29 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(26) @.str.5) #14 %.not17 = icmp eq i32 %29, 0 br i1 %.not17, label %30, label %32 @@ -1234,7 +1247,7 @@ ARKodeSPRKTable_Free.exit19.i.i: ; preds = %7 br label %ARKodeSymplecticEuler.exit 32: ; preds = %28 - %33 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(26) @.str.6) #15 + %33 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(26) @.str.6) #14 %.not18 = icmp eq i32 %33, 0 br i1 %.not18, label %34, label %36 @@ -1243,7 +1256,7 @@ ARKodeSPRKTable_Free.exit19.i.i: ; preds = %7 br label %ARKodeSymplecticEuler.exit 36: ; preds = %32 - %37 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(29) @.str.7) #15 + %37 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(29) @.str.7) #14 %.not19 = icmp eq i32 %37, 0 br i1 %.not19, label %38, label %40 @@ -1252,7 +1265,7 @@ ARKodeSPRKTable_Free.exit19.i.i: ; preds = %7 br label %ARKodeSymplecticEuler.exit 40: ; preds = %36 - %41 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(26) @.str.8) #15 + %41 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(26) @.str.8) #14 %.not20 = icmp eq i32 %41, 0 br i1 %.not20, label %42, label %44 @@ -1261,7 +1274,7 @@ ARKodeSPRKTable_Free.exit19.i.i: ; preds = %7 br label %ARKodeSymplecticEuler.exit 44: ; preds = %40 - %45 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(24) @.str.9) #15 + %45 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(24) @.str.9) #14 %.not21 = icmp eq i32 %45, 0 br i1 %.not21, label %46, label %48 @@ -1270,7 +1283,7 @@ ARKodeSPRKTable_Free.exit19.i.i: ; preds = %7 br label %ARKodeSymplecticEuler.exit 48: ; preds = %44 - %49 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(30) @.str.10) #15 + %49 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(30) @.str.10) #14 %.not22 = icmp eq i32 %49, 0 br i1 %.not22, label %50, label %52 @@ -1279,7 +1292,7 @@ ARKodeSPRKTable_Free.exit19.i.i: ; preds = %7 br label %ARKodeSymplecticEuler.exit 52: ; preds = %48 - %53 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(28) @.str.11) #15 + %53 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(28) @.str.11) #14 %.not23 = icmp eq i32 %53, 0 br i1 %.not23, label %54, label %ARKodeSymplecticEuler.exit @@ -1306,26 +1319,26 @@ define noalias noundef ptr @ARKodeSPRKTable_Copy(ptr nocapture noundef readonly 4: ; preds = %1 %5 = sext i32 %3 to i64 %6 = shl nsw i64 %5, 3 - %7 = tail call noalias ptr @malloc(i64 noundef %6) #13 + %7 = tail call noalias ptr @malloc(i64 noundef %6) #12 %8 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 16 store ptr %7, ptr %8, align 8 %.not14.i = icmp eq ptr %7, null br i1 %.not14.i, label %ARKodeSPRKTable_Free.exit.i, label %9 ARKodeSPRKTable_Free.exit.i: ; preds = %4 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit 9: ; preds = %4 - %10 = tail call noalias ptr @malloc(i64 noundef %6) #13 + %10 = tail call noalias ptr @malloc(i64 noundef %6) #12 %11 = getelementptr inbounds nuw i8, ptr %calloc.i, i64 8 store ptr %10, ptr %11, align 8 %.not15.i = icmp eq ptr %10, null br i1 %.not15.i, label %ARKodeSPRKTable_Free.exit19.i, label %12 ARKodeSPRKTable_Free.exit19.i: ; preds = %9 - tail call void @free(ptr noundef nonnull %7) #14 - tail call void @free(ptr noundef nonnull %calloc.i) #14 + tail call void @free(ptr noundef nonnull %7) #13 + tail call void @free(ptr noundef nonnull %calloc.i) #13 br label %ARKodeSPRKTable_Alloc.exit 12: ; preds = %9 @@ -1394,11 +1407,11 @@ define void @ARKodeSPRKTable_Write(ptr nocapture noundef readonly %0, ptr nounde store ptr null, ptr %4, align 8 %5 = call i32 @ARKodeSPRKTable_ToButcher(ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %4) %6 = load ptr, ptr %3, align 8 - tail call void @ARKodeButcherTable_Write(ptr noundef %6, ptr noundef %1) #14 + tail call void @ARKodeButcherTable_Write(ptr noundef %6, ptr noundef %1) #13 %7 = load ptr, ptr %4, align 8 - tail call void @ARKodeButcherTable_Write(ptr noundef %7, ptr noundef %1) #14 - tail call void @ARKodeButcherTable_Free(ptr noundef %6) #14 - tail call void @ARKodeButcherTable_Free(ptr noundef %7) #14 + tail call void @ARKodeButcherTable_Write(ptr noundef %7, ptr noundef %1) #13 + tail call void @ARKodeButcherTable_Free(ptr noundef %6) #13 + tail call void @ARKodeButcherTable_Free(ptr noundef %7) #13 ret void } @@ -1406,13 +1419,13 @@ define void @ARKodeSPRKTable_Write(ptr nocapture noundef readonly %0, ptr nounde define range(i32 -20, 1) i32 @ARKodeSPRKTable_ToButcher(ptr nocapture noundef readonly %0, ptr nocapture noundef writeonly %1, ptr nocapture noundef writeonly %2) local_unnamed_addr #1 { %4 = getelementptr inbounds nuw i8, ptr %0, i64 4 %5 = load i32, ptr %4, align 4 - %6 = tail call ptr @ARKodeButcherTable_Alloc(i32 noundef %5, i32 noundef 0) #14 + %6 = tail call ptr @ARKodeButcherTable_Alloc(i32 noundef %5, i32 noundef 0) #13 %.not = icmp eq ptr %6, null br i1 %.not, label %85, label %7 7: ; preds = %3 %8 = load i32, ptr %4, align 4 - %9 = tail call ptr @ARKodeButcherTable_Alloc(i32 noundef %8, i32 noundef 0) #14 + %9 = tail call ptr @ARKodeButcherTable_Alloc(i32 noundef %8, i32 noundef 0) #13 %.not73 = icmp eq ptr %9, null br i1 %.not73, label %22, label %.preheader80 @@ -1435,7 +1448,7 @@ define range(i32 -20, 1) i32 @ARKodeSPRKTable_ToButcher(ptr nocapture noundef re br label %.lr.ph.preheader 22: ; preds = %7 - tail call void @ARKodeButcherTable_Free(ptr noundef nonnull %6) #14 + tail call void @ARKodeButcherTable_Free(ptr noundef nonnull %6) #13 br label %85 .lr.ph.preheader: ; preds = %._crit_edge94, %.lr.ph97 @@ -1602,25 +1615,21 @@ declare ptr @ARKodeButcherTable_Alloc(i32 noundef, i32 noundef) local_unnamed_ad ; Function Attrs: nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #11 -; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #12 - attributes #0 = { mustprogress nounwind willreturn memory(readwrite, argmem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { mustprogress nofree nounwind willreturn memory(write) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #5 = { mustprogress nounwind willreturn uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { mustprogress nofree nounwind willreturn memory(write, argmem: none, inaccessiblemem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nofree nounwind memory(write, argmem: readwrite, inaccessiblemem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #7 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #8 = { mustprogress nofree nounwind willreturn memory(argmem: read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #9 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #10 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #11 = { nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" } -attributes #12 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #13 = { nounwind allocsize(0) } -attributes #14 = { nounwind } -attributes #15 = { nounwind willreturn memory(read) } +attributes #12 = { nounwind allocsize(0) } +attributes #13 = { nounwind } +attributes #14 = { nounwind willreturn memory(read) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/zed-rs/optimized/4eiq2lz3s1dwj7dlf30mi6fc6.ll b/bench/zed-rs/optimized/4eiq2lz3s1dwj7dlf30mi6fc6.ll index b0f27c5a76..3ecf943be8 100644 --- a/bench/zed-rs/optimized/4eiq2lz3s1dwj7dlf30mi6fc6.ll +++ b/bench/zed-rs/optimized/4eiq2lz3s1dwj7dlf30mi6fc6.ll @@ -64844,7 +64844,7 @@ define hidden { ptr, i64 } @_ZN4core4iter6traits8iterator8Iterator8try_fold17h90 .unreachabledefault: ; preds = %28 unreachable -default.unreachable: ; preds = %109, %115, %68, %74 +default.unreachable: ; preds = %108, %114, %67, %73 unreachable .split.us.split: ; preds = %.split.us @@ -64864,9 +64864,9 @@ default.unreachable: ; preds = %109, %115, %68, %74 br i1 %41, label %.split.split.us, label %.split.split .split.split.us: ; preds = %.split, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us54" - %42 = phi i64 [ %65, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us54" ], [ %.promoted29, %.split ] + %42 = phi i64 [ %64, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us54" ], [ %.promoted29, %.split ] %.sroa.6.016.i.i28.us38 = phi i64 [ %.sroa.6.016.i.i27.us43, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us54" ], [ %.promoted26, %.split ] - %43 = phi i8 [ %66, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us54" ], [ %.promoted, %.split ] + %43 = phi i8 [ %65, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us54" ], [ %.promoted, %.split ] call void @llvm.experimental.noalias.scope.decl(metadata !16719) call void @llvm.experimental.noalias.scope.decl(metadata !16720) %44 = trunc nuw i8 %43 to i1 @@ -64934,81 +64934,81 @@ _ZN4core5slice6memchr6memchr17hb30f45f1a0209708E.exit.thread21.us.i.i.i.us: ; pr store i8 1, ptr %7, align 1, !alias.scope !16724 %.not.i2.i.i.us40 = icmp ne i64 %.pre2.i.i.i, %.sroa.6.016.i.i28.us38 %or.cond.not.i.i.i.us41 = select i1 %21, i1 true, i1 %.not.i2.i.i.us40 - %64 = sub nuw i64 %.pre2.i.i.i, %.sroa.6.016.i.i28.us38 br i1 %or.cond.not.i.i.i.us41, label %select.unfold.us42, label %.loopexit select.unfold.us42: ; preds = %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit.us", %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us39" - %65 = phi i64 [ %63, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us39" ], [ %12, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit.us" ] + %64 = phi i64 [ %63, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us39" ], [ %12, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit.us" ] %.sroa.6.016.i.i27.us43 = phi i64 [ %.sroa.6.016.i.i28.us38, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us39" ], [ undef, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit.us" ] - %66 = phi i8 [ 1, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us39" ], [ %43, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit.us" ] - %.sroa.4.0.i.i.us44 = phi i64 [ %64, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us39" ], [ undef, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit.us" ] + %65 = phi i8 [ 1, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us39" ], [ %43, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit.us" ] + %.pn = phi i64 [ %.pre2.i.i.i, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us39" ], [ undef, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit.us" ] + %.sroa.4.0.i.i.us44 = sub nuw i64 %.pn, %.sroa.6.016.i.i28.us38 %.sroa.0.0.i.i.us45 = getelementptr inbounds i8, ptr %.val.i.i, i64 %.sroa.6.016.i.i28.us38 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6), !noalias !16727 - %67 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i.us45, i64 %.sroa.4.0.i.i.us44 + %66 = getelementptr inbounds i8, ptr %.val.i.i, i64 %.pn store ptr %.sroa.0.0.i.i.us45, ptr %6, align 8, !alias.scope !16736, !noalias !16739 store i64 %.sroa.4.0.i.i.us44, ptr %.sroa.4.0..sroa_idx.i.i.i.i.i, align 8, !alias.scope !16736, !noalias !16739 store ptr %.sroa.0.0.i.i.us45, ptr %.sroa.5.0..sroa_idx.i.i.i.i.i, align 8, !alias.scope !16736, !noalias !16739 - store ptr %67, ptr %.sroa.6.0..sroa_idx.i.i.i.i.i, align 8, !alias.scope !16736, !noalias !16739 + store ptr %66, ptr %.sroa.6.0..sroa_idx.i.i.i.i.i, align 8, !alias.scope !16736, !noalias !16739 store i64 0, ptr %.sroa.7.0..sroa_idx.i.i.i.i.i, align 8, !alias.scope !16736, !noalias !16739 - br label %68 + br label %67 -68: ; preds = %70, %select.unfold.us42 +67: ; preds = %69, %select.unfold.us42 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !16741 call void @"_ZN97_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$$u20$as$u20$core..str..pattern..Searcher$GT$4next17h675e5ba1f14f9e36E.llvm.16841824712304075995"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %5, ptr noalias noundef nonnull align 8 dereferenceable(40) %6), !noalias !16748 - %69 = load i64, ptr %5, align 8, !range !113, !noalias !16741, !noundef !4 - switch i64 %69, label %default.unreachable [ - i64 1, label %71 + %68 = load i64, ptr %5, align 8, !range !113, !noalias !16741, !noundef !4 + switch i64 %68, label %default.unreachable [ + i64 1, label %70 i64 2, label %"_ZN99_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..Searcher$GT$11next_reject17h6e9a96dd33b2a4b6E.llvm.16841824712304075995.exit.i.i.i.i.us46" - i64 0, label %70 + i64 0, label %69 ] -70: ; preds = %68 +69: ; preds = %67 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !16741 - br label %68 + br label %67 -71: ; preds = %68 - %72 = load i64, ptr %22, align 8, !noalias !16741, !noundef !4 - %73 = load i64, ptr %23, align 8, !noalias !16741, !noundef !4 +70: ; preds = %67 + %71 = load i64, ptr %22, align 8, !noalias !16741, !noundef !4 + %72 = load i64, ptr %23, align 8, !noalias !16741, !noundef !4 br label %"_ZN99_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..Searcher$GT$11next_reject17h6e9a96dd33b2a4b6E.llvm.16841824712304075995.exit.i.i.i.i.us46" -"_ZN99_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..Searcher$GT$11next_reject17h6e9a96dd33b2a4b6E.llvm.16841824712304075995.exit.i.i.i.i.us46": ; preds = %68, %71 - %.sroa.6.0.i.i.i.i.us47 = phi i64 [ %73, %71 ], [ undef, %68 ] - %.sroa.4.0.i.i.i.i.us48 = phi i64 [ %72, %71 ], [ undef, %68 ] - %switch.i.i.i.i.us49 = phi i1 [ true, %71 ], [ false, %68 ] +"_ZN99_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..Searcher$GT$11next_reject17h6e9a96dd33b2a4b6E.llvm.16841824712304075995.exit.i.i.i.i.us46": ; preds = %67, %70 + %.sroa.6.0.i.i.i.i.us47 = phi i64 [ %72, %70 ], [ undef, %67 ] + %.sroa.4.0.i.i.i.i.us48 = phi i64 [ %71, %70 ], [ undef, %67 ] + %switch.i.i.i.i.us49 = phi i1 [ true, %70 ], [ false, %67 ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !16741 - br label %74 + br label %73 -74: ; preds = %76, %"_ZN99_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..Searcher$GT$11next_reject17h6e9a96dd33b2a4b6E.llvm.16841824712304075995.exit.i.i.i.i.us46" +73: ; preds = %75, %"_ZN99_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..Searcher$GT$11next_reject17h6e9a96dd33b2a4b6E.llvm.16841824712304075995.exit.i.i.i.i.us46" call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !16749 call void @"_ZN104_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hb6c68ac58b05f072E.llvm.16841824712304075995"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull align 8 dereferenceable(40) %6), !noalias !16756 - %75 = load i64, ptr %4, align 8, !range !113, !noalias !16749, !noundef !4 - switch i64 %75, label %default.unreachable [ - i64 1, label %77 + %74 = load i64, ptr %4, align 8, !range !113, !noalias !16749, !noundef !4 + switch i64 %74, label %default.unreachable [ + i64 1, label %76 i64 2, label %"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h33f0ae205ba908beE.llvm.16841824712304075995.exit.i.i.i.i.us50" - i64 0, label %76 + i64 0, label %75 ] -76: ; preds = %74 +75: ; preds = %73 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !16749 - br label %74 + br label %73 -"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h33f0ae205ba908beE.llvm.16841824712304075995.exit.i.i.i.i.us50": ; preds = %74 +"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h33f0ae205ba908beE.llvm.16841824712304075995.exit.i.i.i.i.us50": ; preds = %73 %.sroa.0.0.i.i.i.i.us51 = select i1 %switch.i.i.i.i.us49, i64 %.sroa.4.0.i.i.i.i.us48, i64 0 %.sroa.01.0.i.i.i.i.us52 = select i1 %switch.i.i.i.i.us49, i64 %.sroa.6.0.i.i.i.i.us47, i64 0 br label %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us54" -77: ; preds = %74 - %78 = load i64, ptr %24, align 8, !noalias !16749, !noundef !4 +76: ; preds = %73 + %77 = load i64, ptr %24, align 8, !noalias !16749, !noundef !4 %.sroa.0.011.i.i.i.i.us53 = select i1 %switch.i.i.i.i.us49, i64 %.sroa.4.0.i.i.i.i.us48, i64 0 br label %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us54" -"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us54": ; preds = %77, %"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h33f0ae205ba908beE.llvm.16841824712304075995.exit.i.i.i.i.us50" - %.sroa.0.014.i.i.i.i.us55 = phi i64 [ %.sroa.0.011.i.i.i.i.us53, %77 ], [ %.sroa.0.0.i.i.i.i.us51, %"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h33f0ae205ba908beE.llvm.16841824712304075995.exit.i.i.i.i.us50" ] - %79 = phi i64 [ %78, %77 ], [ %.sroa.01.0.i.i.i.i.us52, %"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h33f0ae205ba908beE.llvm.16841824712304075995.exit.i.i.i.i.us50" ] +"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us54": ; preds = %76, %"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h33f0ae205ba908beE.llvm.16841824712304075995.exit.i.i.i.i.us50" + %.sroa.0.014.i.i.i.i.us55 = phi i64 [ %.sroa.0.011.i.i.i.i.us53, %76 ], [ %.sroa.0.0.i.i.i.i.us51, %"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h33f0ae205ba908beE.llvm.16841824712304075995.exit.i.i.i.i.us50" ] + %78 = phi i64 [ %77, %76 ], [ %.sroa.01.0.i.i.i.i.us52, %"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h33f0ae205ba908beE.llvm.16841824712304075995.exit.i.i.i.i.us50" ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !16749 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6), !noalias !16727 - %.not.i.i.us56 = icmp eq i64 %79, %.sroa.0.014.i.i.i.i.us55 - br i1 %.not.i.i.us56, label %.split.split.us, label %.split35.us + %.not.i.i.us56 = icmp eq i64 %78, %.sroa.0.014.i.i.i.i.us55 + br i1 %.not.i.i.us56, label %.split.split.us, label %.split35.us.loopexit99 "_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit.us": ; preds = %_ZN4core5slice6memchr6memchr17hb30f45f1a0209708E.exit.us.i.i.i.us store i64 %12, ptr %10, align 8, !alias.scope !16757, !noalias !16758 @@ -65016,185 +65016,189 @@ select.unfold.us42: ; preds = %"_ZN81_$LT$core..st br i1 %trunc.i.i.us, label %select.unfold.us42, label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us39" .split.split: ; preds = %.split, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit" - %80 = phi i64 [ %106, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit" ], [ %.promoted29, %.split ] + %79 = phi i64 [ %105, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit" ], [ %.promoted29, %.split ] %.sroa.6.016.i.i28 = phi i64 [ %.sroa.6.016.i.i27, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit" ], [ %.promoted26, %.split ] - %81 = phi i8 [ %107, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit" ], [ %.promoted, %.split ] + %80 = phi i8 [ %106, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit" ], [ %.promoted, %.split ] call void @llvm.experimental.noalias.scope.decl(metadata !16719) call void @llvm.experimental.noalias.scope.decl(metadata !16720) - %82 = trunc nuw i8 %81 to i1 - br i1 %82, label %.loopexit, label %83 + %81 = trunc nuw i8 %80 to i1 + br i1 %81, label %.loopexit, label %82 -83: ; preds = %.split.split +82: ; preds = %.split.split call void @llvm.experimental.noalias.scope.decl(metadata !16721) - %84 = icmp ult i64 %12, %80 - br i1 %84, label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i", label %.lr.ph.i.i.i + %83 = icmp ult i64 %12, %79 + br i1 %83, label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i", label %.lr.ph.i.i.i -.lr.ph.i.i.i: ; preds = %83 +.lr.ph.i.i.i: ; preds = %82 %.pre92.i.i.i = load i8, ptr %18, align 1, !alias.scope !16757, !noalias !16758 br label %.lr.ph.split.split.i.i.i -.lr.ph.split.split.i.i.i: ; preds = %.lr.ph.i.i.i, %99 - %85 = phi i64 [ %98, %99 ], [ %80, %.lr.ph.i.i.i ] - %86 = sub nuw i64 %12, %85 - %87 = getelementptr inbounds i8, ptr %.val.i.i, i64 %85 - %88 = icmp ult i64 %86, 16 - br i1 %88, label %.preheader.i.i.i.i, label %_ZN4core5slice6memchr6memchr17hb30f45f1a0209708E.exit.i.i.i +.lr.ph.split.split.i.i.i: ; preds = %.lr.ph.i.i.i, %98 + %84 = phi i64 [ %97, %98 ], [ %79, %.lr.ph.i.i.i ] + %85 = sub nuw i64 %12, %84 + %86 = getelementptr inbounds i8, ptr %.val.i.i, i64 %84 + %87 = icmp ult i64 %85, 16 + br i1 %87, label %.preheader.i.i.i.i, label %_ZN4core5slice6memchr6memchr17hb30f45f1a0209708E.exit.i.i.i .preheader.i.i.i.i: ; preds = %.lr.ph.split.split.i.i.i - %.not.i.i.i.i = icmp eq i64 %12, %85 + %.not.i.i.i.i = icmp eq i64 %12, %84 br i1 %.not.i.i.i.i, label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread18.i.i", label %.lr.ph.i.i.i.i -.lr.ph.i.i.i.i: ; preds = %.preheader.i.i.i.i, %92 - %.sroa.01.05.i.i.i.i = phi i64 [ %93, %92 ], [ 0, %.preheader.i.i.i.i ] - %89 = getelementptr inbounds nuw [0 x i8], ptr %87, i64 0, i64 %.sroa.01.05.i.i.i.i - %90 = load i8, ptr %89, align 1, !alias.scope !16761, !noalias !16760, !noundef !4 - %91 = icmp eq i8 %90, %.pre92.i.i.i - br i1 %91, label %_ZN4core5slice6memchr6memchr17hb30f45f1a0209708E.exit.thread21.i.i.i, label %92 +.lr.ph.i.i.i.i: ; preds = %.preheader.i.i.i.i, %91 + %.sroa.01.05.i.i.i.i = phi i64 [ %92, %91 ], [ 0, %.preheader.i.i.i.i ] + %88 = getelementptr inbounds nuw [0 x i8], ptr %86, i64 0, i64 %.sroa.01.05.i.i.i.i + %89 = load i8, ptr %88, align 1, !alias.scope !16761, !noalias !16760, !noundef !4 + %90 = icmp eq i8 %89, %.pre92.i.i.i + br i1 %90, label %_ZN4core5slice6memchr6memchr17hb30f45f1a0209708E.exit.thread21.i.i.i, label %91 -92: ; preds = %.lr.ph.i.i.i.i - %93 = add nuw i64 %.sroa.01.05.i.i.i.i, 1 - %exitcond.not.i.i.i.i = icmp eq i64 %93, %86 +91: ; preds = %.lr.ph.i.i.i.i + %92 = add nuw i64 %.sroa.01.05.i.i.i.i, 1 + %exitcond.not.i.i.i.i = icmp eq i64 %92, %85 br i1 %exitcond.not.i.i.i.i, label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread18.i.i", label %.lr.ph.i.i.i.i _ZN4core5slice6memchr6memchr17hb30f45f1a0209708E.exit.i.i.i: ; preds = %.lr.ph.split.split.i.i.i - %94 = call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17hefa91f9719f66b93E(i8 noundef %.pre92.i.i.i, ptr noalias noundef nonnull readonly align 1 %87, i64 noundef %86), !noalias !16760 - %95 = extractvalue { i64, i64 } %94, 0 - %96 = extractvalue { i64, i64 } %94, 1 - %switch.i.i.i = icmp eq i64 %95, 1 + %93 = call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17hefa91f9719f66b93E(i8 noundef %.pre92.i.i.i, ptr noalias noundef nonnull readonly align 1 %86, i64 noundef %85), !noalias !16760 + %94 = extractvalue { i64, i64 } %93, 0 + %95 = extractvalue { i64, i64 } %93, 1 + %switch.i.i.i = icmp eq i64 %94, 1 br i1 %switch.i.i.i, label %_ZN4core5slice6memchr6memchr17hb30f45f1a0209708E.exit.thread21.i.i.i, label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit13" _ZN4core5slice6memchr6memchr17hb30f45f1a0209708E.exit.thread21.i.i.i: ; preds = %.lr.ph.i.i.i.i, %_ZN4core5slice6memchr6memchr17hb30f45f1a0209708E.exit.i.i.i - %.sroa.4.0.i26.i.i.i = phi i64 [ %96, %_ZN4core5slice6memchr6memchr17hb30f45f1a0209708E.exit.i.i.i ], [ %.sroa.01.05.i.i.i.i, %.lr.ph.i.i.i.i ] - %97 = add i64 %85, 1 - %98 = add i64 %97, %.sroa.4.0.i26.i.i.i - store i64 %98, ptr %10, align 8, !alias.scope !16757, !noalias !16758 - %.not12.i.i.i = icmp ult i64 %98, %16 - %.not13.i.i.i = icmp ugt i64 %98, %.val1.i.i + %.sroa.4.0.i26.i.i.i = phi i64 [ %95, %_ZN4core5slice6memchr6memchr17hb30f45f1a0209708E.exit.i.i.i ], [ %.sroa.01.05.i.i.i.i, %.lr.ph.i.i.i.i ] + %96 = add i64 %84, 1 + %97 = add i64 %96, %.sroa.4.0.i26.i.i.i + store i64 %97, ptr %10, align 8, !alias.scope !16757, !noalias !16758 + %.not12.i.i.i = icmp ult i64 %97, %16 + %.not13.i.i.i = icmp ugt i64 %97, %.val1.i.i %or.cond.i.i.i = or i1 %.not12.i.i.i, %.not13.i.i.i - br i1 %or.cond.i.i.i, label %99, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h3b1665d911890dceE.exit.i.i.i" + br i1 %or.cond.i.i.i, label %98, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h3b1665d911890dceE.exit.i.i.i" -99: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h3b1665d911890dceE.exit.i.i.i", %_ZN4core5slice6memchr6memchr17hb30f45f1a0209708E.exit.thread21.i.i.i - %100 = icmp ult i64 %12, %98 - br i1 %100, label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i", label %.lr.ph.split.split.i.i.i +98: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h3b1665d911890dceE.exit.i.i.i", %_ZN4core5slice6memchr6memchr17hb30f45f1a0209708E.exit.thread21.i.i.i + %99 = icmp ult i64 %12, %97 + br i1 %99, label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i", label %.lr.ph.split.split.i.i.i "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h3b1665d911890dceE.exit.i.i.i": ; preds = %_ZN4core5slice6memchr6memchr17hb30f45f1a0209708E.exit.thread21.i.i.i - %101 = sub nuw i64 %98, %16 - %102 = getelementptr inbounds i8, ptr %.val.i.i, i64 %101 - %bcmp.i.i.i.i = call i32 @bcmp(ptr nonnull readonly align 1 %102, ptr nonnull readonly align 1 %13, i64 %16), !alias.scope !16764, !noalias !16758 - %103 = icmp eq i32 %bcmp.i.i.i.i, 0 - br i1 %103, label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread9.i.i", label %99 + %100 = sub nuw i64 %97, %16 + %101 = getelementptr inbounds i8, ptr %.val.i.i, i64 %100 + %bcmp.i.i.i.i = call i32 @bcmp(ptr nonnull readonly align 1 %101, ptr nonnull readonly align 1 %13, i64 %16), !alias.scope !16764, !noalias !16758 + %102 = icmp eq i32 %bcmp.i.i.i.i, 0 + br i1 %102, label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread9.i.i", label %98 .split.us.i.i.i: ; preds = %_ZN4core5slice6memchr6memchr17hb30f45f1a0209708E.exit.thread21.us.i.i.i.us call void @_ZN4core5slice5index24slice_end_index_len_fail17h87b545b7962eada9E(i64 noundef %16, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.18f721ccef415aa9c21faff661f5af14.516) #58, !noalias !16768 unreachable -"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread18.i.i": ; preds = %.preheader.i.i.i.i, %92 +"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread18.i.i": ; preds = %.preheader.i.i.i.i, %91 store i64 %12, ptr %10, align 8, !alias.scope !16757, !noalias !16758 br label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i" "_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit13": ; preds = %_ZN4core5slice6memchr6memchr17hb30f45f1a0209708E.exit.i.i.i store i64 %12, ptr %10, align 8, !alias.scope !16757, !noalias !16758 - %trunc.i.i = trunc nuw i64 %95 to i1 + %trunc.i.i = trunc nuw i64 %94 to i1 br i1 %trunc.i.i, label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread9.i.i", label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i" -"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i": ; preds = %99, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit13", %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread18.i.i", %83 - %104 = phi i64 [ %12, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit13" ], [ %12, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread18.i.i" ], [ %80, %83 ], [ %98, %99 ] +"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i": ; preds = %98, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit13", %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread18.i.i", %82 + %103 = phi i64 [ %12, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit13" ], [ %12, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread18.i.i" ], [ %79, %82 ], [ %97, %98 ] store i8 1, ptr %7, align 1, !alias.scope !16724 %.not.i2.i.i = icmp ne i64 %.pre2.i.i.i, %.sroa.6.016.i.i28 %or.cond.not.i.i.i = select i1 %21, i1 true, i1 %.not.i2.i.i br i1 %or.cond.not.i.i.i, label %select.unfold, label %.loopexit "_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread9.i.i": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h3b1665d911890dceE.exit.i.i.i", %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit13" - %105 = phi i64 [ %12, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit13" ], [ %98, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h3b1665d911890dceE.exit.i.i.i" ] - %.sroa.6.016.i.i = phi i64 [ undef, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit13" ], [ %98, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h3b1665d911890dceE.exit.i.i.i" ] - %.sroa.4.0315.i.i = phi i64 [ undef, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit13" ], [ %101, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h3b1665d911890dceE.exit.i.i.i" ] + %104 = phi i64 [ %12, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit13" ], [ %97, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h3b1665d911890dceE.exit.i.i.i" ] + %.sroa.6.016.i.i = phi i64 [ undef, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit13" ], [ %97, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h3b1665d911890dceE.exit.i.i.i" ] + %.sroa.4.0315.i.i = phi i64 [ undef, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.i.i.loopexit13" ], [ %100, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h3b1665d911890dceE.exit.i.i.i" ] store i64 %.sroa.6.016.i.i, ptr %0, align 8, !alias.scope !16714 br label %select.unfold select.unfold: ; preds = %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i", %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread9.i.i" - %106 = phi i64 [ %105, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread9.i.i" ], [ %104, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i" ] + %105 = phi i64 [ %104, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread9.i.i" ], [ %103, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i" ] %.sroa.6.016.i.i27 = phi i64 [ %.sroa.6.016.i.i, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread9.i.i" ], [ %.sroa.6.016.i.i28, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i" ] - %107 = phi i8 [ %81, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread9.i.i" ], [ 1, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i" ] + %106 = phi i8 [ %80, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread9.i.i" ], [ 1, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i" ] %.sroa.4.0315.i.i.pn = phi i64 [ %.sroa.4.0315.i.i, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread9.i.i" ], [ %.pre2.i.i.i, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i" ] %.sroa.4.0.i.i = sub nuw i64 %.sroa.4.0315.i.i.pn, %.sroa.6.016.i.i28 %.sroa.0.0.i.i = getelementptr inbounds i8, ptr %.val.i.i, i64 %.sroa.6.016.i.i28 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6), !noalias !16727 - %108 = getelementptr inbounds i8, ptr %.val.i.i, i64 %.sroa.4.0315.i.i.pn + %107 = getelementptr inbounds i8, ptr %.val.i.i, i64 %.sroa.4.0315.i.i.pn store ptr %.sroa.0.0.i.i, ptr %6, align 8, !alias.scope !16736, !noalias !16739 store i64 %.sroa.4.0.i.i, ptr %.sroa.4.0..sroa_idx.i.i.i.i.i, align 8, !alias.scope !16736, !noalias !16739 store ptr %.sroa.0.0.i.i, ptr %.sroa.5.0..sroa_idx.i.i.i.i.i, align 8, !alias.scope !16736, !noalias !16739 - store ptr %108, ptr %.sroa.6.0..sroa_idx.i.i.i.i.i, align 8, !alias.scope !16736, !noalias !16739 + store ptr %107, ptr %.sroa.6.0..sroa_idx.i.i.i.i.i, align 8, !alias.scope !16736, !noalias !16739 store i64 0, ptr %.sroa.7.0..sroa_idx.i.i.i.i.i, align 8, !alias.scope !16736, !noalias !16739 - br label %109 + br label %108 -109: ; preds = %114, %select.unfold +108: ; preds = %113, %select.unfold call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !16741 call void @"_ZN97_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$$u20$as$u20$core..str..pattern..Searcher$GT$4next17h675e5ba1f14f9e36E.llvm.16841824712304075995"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %5, ptr noalias noundef nonnull align 8 dereferenceable(40) %6), !noalias !16748 - %110 = load i64, ptr %5, align 8, !range !113, !noalias !16741, !noundef !4 - switch i64 %110, label %default.unreachable [ - i64 1, label %111 + %109 = load i64, ptr %5, align 8, !range !113, !noalias !16741, !noundef !4 + switch i64 %109, label %default.unreachable [ + i64 1, label %110 i64 2, label %"_ZN99_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..Searcher$GT$11next_reject17h6e9a96dd33b2a4b6E.llvm.16841824712304075995.exit.i.i.i.i" - i64 0, label %114 + i64 0, label %113 ] -111: ; preds = %109 - %112 = load i64, ptr %22, align 8, !noalias !16741, !noundef !4 - %113 = load i64, ptr %23, align 8, !noalias !16741, !noundef !4 +110: ; preds = %108 + %111 = load i64, ptr %22, align 8, !noalias !16741, !noundef !4 + %112 = load i64, ptr %23, align 8, !noalias !16741, !noundef !4 br label %"_ZN99_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..Searcher$GT$11next_reject17h6e9a96dd33b2a4b6E.llvm.16841824712304075995.exit.i.i.i.i" -114: ; preds = %109 +113: ; preds = %108 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !16741 - br label %109 + br label %108 -"_ZN99_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..Searcher$GT$11next_reject17h6e9a96dd33b2a4b6E.llvm.16841824712304075995.exit.i.i.i.i": ; preds = %109, %111 - %.sroa.6.0.i.i.i.i = phi i64 [ %113, %111 ], [ undef, %109 ] - %.sroa.4.0.i.i.i.i = phi i64 [ %112, %111 ], [ undef, %109 ] - %switch.i.i.i.i = phi i1 [ true, %111 ], [ false, %109 ] +"_ZN99_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..Searcher$GT$11next_reject17h6e9a96dd33b2a4b6E.llvm.16841824712304075995.exit.i.i.i.i": ; preds = %108, %110 + %.sroa.6.0.i.i.i.i = phi i64 [ %112, %110 ], [ undef, %108 ] + %.sroa.4.0.i.i.i.i = phi i64 [ %111, %110 ], [ undef, %108 ] + %switch.i.i.i.i = phi i1 [ true, %110 ], [ false, %108 ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !16741 - br label %115 + br label %114 -115: ; preds = %117, %"_ZN99_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..Searcher$GT$11next_reject17h6e9a96dd33b2a4b6E.llvm.16841824712304075995.exit.i.i.i.i" +114: ; preds = %116, %"_ZN99_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..Searcher$GT$11next_reject17h6e9a96dd33b2a4b6E.llvm.16841824712304075995.exit.i.i.i.i" call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !16749 call void @"_ZN104_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hb6c68ac58b05f072E.llvm.16841824712304075995"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull align 8 dereferenceable(40) %6), !noalias !16756 - %116 = load i64, ptr %4, align 8, !range !113, !noalias !16749, !noundef !4 - switch i64 %116, label %default.unreachable [ - i64 1, label %118 + %115 = load i64, ptr %4, align 8, !range !113, !noalias !16749, !noundef !4 + switch i64 %115, label %default.unreachable [ + i64 1, label %117 i64 2, label %"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h33f0ae205ba908beE.llvm.16841824712304075995.exit.i.i.i.i" - i64 0, label %117 + i64 0, label %116 ] -117: ; preds = %115 +116: ; preds = %114 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !16749 - br label %115 + br label %114 -"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h33f0ae205ba908beE.llvm.16841824712304075995.exit.i.i.i.i": ; preds = %115 +"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h33f0ae205ba908beE.llvm.16841824712304075995.exit.i.i.i.i": ; preds = %114 %.sroa.0.0.i.i.i.i = select i1 %switch.i.i.i.i, i64 %.sroa.4.0.i.i.i.i, i64 0 %.sroa.01.0.i.i.i.i = select i1 %switch.i.i.i.i, i64 %.sroa.6.0.i.i.i.i, i64 0 br label %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit" -118: ; preds = %115 - %119 = load i64, ptr %24, align 8, !noalias !16749, !noundef !4 +117: ; preds = %114 + %118 = load i64, ptr %24, align 8, !noalias !16749, !noundef !4 %.sroa.0.011.i.i.i.i = select i1 %switch.i.i.i.i, i64 %.sroa.4.0.i.i.i.i, i64 0 br label %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit" -"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit": ; preds = %"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h33f0ae205ba908beE.llvm.16841824712304075995.exit.i.i.i.i", %118 - %.sroa.0.014.i.i.i.i = phi i64 [ %.sroa.0.011.i.i.i.i, %118 ], [ %.sroa.0.0.i.i.i.i, %"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h33f0ae205ba908beE.llvm.16841824712304075995.exit.i.i.i.i" ] - %120 = phi i64 [ %119, %118 ], [ %.sroa.01.0.i.i.i.i, %"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h33f0ae205ba908beE.llvm.16841824712304075995.exit.i.i.i.i" ] +"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit": ; preds = %"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h33f0ae205ba908beE.llvm.16841824712304075995.exit.i.i.i.i", %117 + %.sroa.0.014.i.i.i.i = phi i64 [ %.sroa.0.011.i.i.i.i, %117 ], [ %.sroa.0.0.i.i.i.i, %"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h33f0ae205ba908beE.llvm.16841824712304075995.exit.i.i.i.i" ] + %119 = phi i64 [ %118, %117 ], [ %.sroa.01.0.i.i.i.i, %"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h33f0ae205ba908beE.llvm.16841824712304075995.exit.i.i.i.i" ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !16749 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6), !noalias !16727 - %.not.i.i = icmp eq i64 %120, %.sroa.0.014.i.i.i.i + %.not.i.i = icmp eq i64 %119, %.sroa.0.014.i.i.i.i br i1 %.not.i.i, label %.split.split, label %.split35.us.loopexit104 +.split35.us.loopexit99: ; preds = %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us54" + %.sroa.0.0.i.i.us45.le = getelementptr inbounds i8, ptr %.val.i.i, i64 %.sroa.6.016.i.i28.us38 + br label %.split35.us + .split35.us.loopexit104: ; preds = %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit" %.sroa.0.0.i.i.le = getelementptr inbounds i8, ptr %.val.i.i, i64 %.sroa.6.016.i.i28 br label %.split35.us -.split35.us: ; preds = %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us54", %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us.us", %.split35.us.loopexit104 - %.us-phi = phi i64 [ %.sroa.0.014.i.i.i.i, %.split35.us.loopexit104 ], [ %.sroa.0.014.i.i.i.i.us.us, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us.us" ], [ %.sroa.0.014.i.i.i.i.us55, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us54" ] - %.us-phi36 = phi i64 [ %120, %.split35.us.loopexit104 ], [ %39, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us.us" ], [ %79, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us54" ] - %.us-phi37 = phi ptr [ %.sroa.0.0.i.i.le, %.split35.us.loopexit104 ], [ %.sroa.0.0.i.i.us, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us.us" ], [ %.sroa.0.0.i.i.us45, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us54" ] - %121 = getelementptr inbounds i8, ptr %.us-phi37, i64 %.us-phi - %122 = sub nuw i64 %.us-phi36, %.us-phi +.split35.us: ; preds = %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us.us", %.split35.us.loopexit104, %.split35.us.loopexit99 + %.us-phi = phi i64 [ %.sroa.0.014.i.i.i.i.us55, %.split35.us.loopexit99 ], [ %.sroa.0.014.i.i.i.i, %.split35.us.loopexit104 ], [ %.sroa.0.014.i.i.i.i.us.us, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us.us" ] + %.us-phi36 = phi i64 [ %78, %.split35.us.loopexit99 ], [ %119, %.split35.us.loopexit104 ], [ %39, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us.us" ] + %.us-phi37 = phi ptr [ %.sroa.0.0.i.i.us45.le, %.split35.us.loopexit99 ], [ %.sroa.0.0.i.i.le, %.split35.us.loopexit104 ], [ %.sroa.0.0.i.i.us, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us.us" ] + %120 = getelementptr inbounds i8, ptr %.us-phi37, i64 %.us-phi + %121 = sub nuw i64 %.us-phi36, %.us-phi br label %.loopexit .loopexit.loopexit.critedge: ; preds = %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h63890aad7f4353caE.exit.us.us" @@ -65203,11 +65207,11 @@ select.unfold: ; preds = %"_ZN81_$LT$core..st br label %.loopexit .loopexit: ; preds = %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i", %.split.split, %.split.split.us, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us39", %.split.us.split.us.preheader, %.loopexit.loopexit.critedge, %.split.us.split, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us", %.split35.us - %.sroa.3.0 = phi i64 [ %122, %.split35.us ], [ undef, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us" ], [ undef, %.split.us.split ], [ undef, %.loopexit.loopexit.critedge ], [ undef, %.split.us.split.us.preheader ], [ undef, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us39" ], [ undef, %.split.split.us ], [ undef, %.split.split ], [ undef, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i" ] - %.sroa.0.0 = phi ptr [ %121, %.split35.us ], [ null, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us" ], [ null, %.split.us.split ], [ null, %.loopexit.loopexit.critedge ], [ null, %.split.us.split.us.preheader ], [ null, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us39" ], [ null, %.split.split.us ], [ null, %.split.split ], [ null, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i" ] - %123 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0, 0 - %124 = insertvalue { ptr, i64 } %123, i64 %.sroa.3.0, 1 - ret { ptr, i64 } %124 + %.sroa.3.0 = phi i64 [ %121, %.split35.us ], [ undef, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us" ], [ undef, %.split.us.split ], [ undef, %.loopexit.loopexit.critedge ], [ undef, %.split.us.split.us.preheader ], [ undef, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us39" ], [ undef, %.split.split.us ], [ undef, %.split.split ], [ undef, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i" ] + %.sroa.0.0 = phi ptr [ %120, %.split35.us ], [ null, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us" ], [ null, %.split.us.split ], [ null, %.loopexit.loopexit.critedge ], [ null, %.split.us.split.us.preheader ], [ null, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i.us39" ], [ null, %.split.split.us ], [ null, %.split.split ], [ null, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h9816e5a8d5bad087E.exit.thread.i.i" ] + %122 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0, 0 + %123 = insertvalue { ptr, i64 } %122, i64 %.sroa.3.0, 1 + ret { ptr, i64 } %123 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/zed-rs/optimized/9fz5l76t5byggb8exxkeuxjql.ll b/bench/zed-rs/optimized/9fz5l76t5byggb8exxkeuxjql.ll index a8aa09b404..c03de42bbc 100644 --- a/bench/zed-rs/optimized/9fz5l76t5byggb8exxkeuxjql.ll +++ b/bench/zed-rs/optimized/9fz5l76t5byggb8exxkeuxjql.ll @@ -14271,13 +14271,13 @@ select.unfold.i.i: ; preds = %"_ZN73_$LT$$u5b$A$u br i1 %517, label %522, label %"_ZN4core4iter6traits8iterator8Iterator4find5check28_$u7b$$u7b$closure$u7d$$u7d$17he17b7f7f2aca218eE.exit.i.i" "_ZN4core4iter6traits8iterator8Iterator4find5check28_$u7b$$u7b$closure$u7d$$u7d$17he17b7f7f2aca218eE.exit.i.i": ; preds = %"_ZN3lsp13input_handler16LspStdoutHandler7handler28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17h74607037b46550eaE.exit.i.i.i", %select.unfold.i.i - br i1 %516, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h34f52ab96d2d6924E.exit.thread.i.i.i", label %.lr.ph.split.split.i.i + br i1 %516, label %.thread480, label %.lr.ph.split.split.i.i -"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h34f52ab96d2d6924E.exit.thread.i.i.i": ; preds = %"_ZN4core4iter6traits8iterator8Iterator4find5check28_$u7b$$u7b$closure$u7d$$u7d$17he17b7f7f2aca218eE.exit.i.i" +.thread480: ; preds = %"_ZN4core4iter6traits8iterator8Iterator4find5check28_$u7b$$u7b$closure$u7d$$u7d$17he17b7f7f2aca218eE.exit.i.i" %518 = invoke fastcc noundef nonnull ptr @"_ZN3lsp13input_handler16LspStdoutHandler7handler28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17hb82b2bdc0dd3ecadE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %493) to label %625 unwind label %519 -519: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h34f52ab96d2d6924E.exit.thread.i.i.i" +519: ; preds = %.thread480 %520 = landingpad { ptr, i32 } cleanup br label %521 @@ -14517,7 +14517,7 @@ select.unfold.i.i: ; preds = %"_ZN73_$LT$$u5b$A$u cleanup br label %622 -625: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h34f52ab96d2d6924E.exit.thread.i.i.i" +625: ; preds = %.thread480 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) br label %"_ZN153_$LT$core..result..Result$LT$T$C$F$GT$$u20$as$u20$core..ops..try_trait..FromResidual$LT$core..result..Result$LT$core..convert..Infallible$C$E$GT$$GT$$GT$13from_residual17hf41510689cd8292cE.exit" diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef..f7346ca8c0 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/119884 export COMPTIME_MODE=0 # Please rebase manually