diff --git a/bench/abc/optimized/ifDsd.c.ll b/bench/abc/optimized/ifDsd.c.ll index f3f2a4969dd..acd6569b240 100644 --- a/bench/abc/optimized/ifDsd.c.ll +++ b/bench/abc/optimized/ifDsd.c.ll @@ -14048,8 +14048,7 @@ Abc_Clock.exit: ; preds = %4, %10 %22 = load i32, ptr %17, align 8 %23 = call i32 @Ifn_NtkInputNum(ptr noundef nonnull %14) #38 %24 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.104, i32 noundef %22, i32 noundef %23) - call void @free(ptr noundef nonnull %14) #38 - br label %183 + br label %.sink.split 25: ; preds = %16 %26 = getelementptr inbounds i8, ptr %0, i64 664 @@ -14368,10 +14367,13 @@ Abc_Clock.exit107: ; preds = %.critedge2, %173 %181 = sitofp i64 %180 to double %182 = fdiv double %181, 1.000000e+06 call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.121, double noundef %182) + br label %.sink.split + +.sink.split: ; preds = %21, %Abc_Clock.exit107 call void @free(ptr noundef %14) #38 br label %183 -183: ; preds = %Abc_Clock.exit107, %21, %Abc_Clock.exit +183: ; preds = %.sink.split, %Abc_Clock.exit ret void } diff --git a/bench/abc/optimized/lucky.c.ll b/bench/abc/optimized/lucky.c.ll index 9bfd549e962..067053cb2d4 100644 --- a/bench/abc/optimized/lucky.c.ll +++ b/bench/abc/optimized/lucky.c.ll @@ -398,15 +398,14 @@ define range(i32 0, 2) i32 @minimalFlip1(ptr noundef %0, ptr nocapture noundef % memCompare.exit: ; preds = %21 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %1, ptr nonnull align 8 %0, i64 %7, i1 false) - tail call void @Kit_TruthChangePhase_64bit(ptr noundef nonnull %0, i32 noundef %3, i32 noundef %.03648) #18 br label %23 .loopexit: ; preds = %11, %21 tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %0, ptr align 8 %1, i64 %7, i1 false) - tail call void @Kit_TruthChangePhase_64bit(ptr noundef %0, i32 noundef %3, i32 noundef %.03648) #18 br label %23 23: ; preds = %memCompare.exit, %.loopexit + tail call void @Kit_TruthChangePhase_64bit(ptr noundef %0, i32 noundef %3, i32 noundef %.03648) #18 %24 = add nuw nsw i32 %.03648, 1 %exitcond.not = icmp eq i32 %24, %3 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !11 @@ -490,15 +489,14 @@ define range(i32 0, 2) i32 @minimalSwap1(ptr noundef %0, ptr nocapture noundef % memCompare.exit: ; preds = %22 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %1, ptr nonnull align 8 %0, i64 %7, i1 false) - tail call void @Kit_TruthSwapAdjacentVars_64bit(ptr noundef nonnull %0, i32 noundef %3, i32 noundef %.03647) #18 br label %24 .loopexit: ; preds = %12, %22 tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %0, ptr align 8 %1, i64 %7, i1 false) - tail call void @Kit_TruthSwapAdjacentVars_64bit(ptr noundef %0, i32 noundef %3, i32 noundef %.03647) #18 br label %24 24: ; preds = %memCompare.exit, %.loopexit + tail call void @Kit_TruthSwapAdjacentVars_64bit(ptr noundef %0, i32 noundef %3, i32 noundef %.03647) #18 %25 = add nuw nsw i32 %.03647, 1 %exitcond.not = icmp eq i32 %.03647, %9 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !12 diff --git a/bench/abseil-cpp/optimized/cord_rep_btree_navigator_test.cc.ll b/bench/abseil-cpp/optimized/cord_rep_btree_navigator_test.cc.ll index 9bae2982ceb..8def34e8d18 100644 --- a/bench/abseil-cpp/optimized/cord_rep_btree_navigator_test.cc.ll +++ b/bench/abseil-cpp/optimized/cord_rep_btree_navigator_test.cc.ll @@ -17940,9 +17940,7 @@ if.else: ; preds = %while.cond if.then14: ; preds = %if.else %storage.i = getelementptr inbounds i8, ptr %rep.addr.0, i64 13 - %add.ptr = getelementptr inbounds i8, ptr %storage.i, i64 %offset.0 - %call17 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %s, ptr noundef nonnull %add.ptr, i64 noundef %0) - br label %if.end32 + br label %if.end32.sink.split if.else18: ; preds = %if.else %cmp21 = icmp eq i8 %1, 5 @@ -17951,16 +17949,20 @@ if.else18: ; preds = %if.else if.then22: ; preds = %if.else18 %base = getelementptr inbounds i8, ptr %rep.addr.0, i64 16 %7 = load ptr, ptr %base, align 8 - %add.ptr24 = getelementptr inbounds i8, ptr %7, i64 %offset.0 - %call25 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %s, ptr noundef %add.ptr24, i64 noundef %0) - br label %if.end32 + br label %if.end32.sink.split do.body: ; preds = %if.else18 %conv = zext nneg i8 %1 to i32 tail call void (i32, ptr, i32, ptr, ...) @_ZN4absl16raw_log_internal6RawLogENS_11LogSeverityEPKciS3_z(i32 noundef 3, ptr noundef nonnull getelementptr inbounds (i8, ptr @.str.89, i64 121), i32 noundef 154, ptr noundef nonnull @.str.90, i32 noundef %conv) unreachable -if.end32: ; preds = %for.body, %if.then, %if.then14, %if.then22 +if.end32.sink.split: ; preds = %if.then22, %if.then14 + %storage.i.sink = phi ptr [ %storage.i, %if.then14 ], [ %7, %if.then22 ] + %add.ptr = getelementptr inbounds i8, ptr %storage.i.sink, i64 %offset.0 + %call17 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %s, ptr noundef %add.ptr, i64 noundef %0) + br label %if.end32 + +if.end32: ; preds = %for.body, %if.end32.sink.split, %if.then ret void } diff --git a/bench/actix-rs/optimized/3arfg1ogrgyw4qv2.ll b/bench/actix-rs/optimized/3arfg1ogrgyw4qv2.ll index e280adf7023..672544e63b1 100644 --- a/bench/actix-rs/optimized/3arfg1ogrgyw4qv2.ll +++ b/bench/actix-rs/optimized/3arfg1ogrgyw4qv2.ll @@ -5755,12 +5755,10 @@ define void @_ZN9actix_web4http6header15accept_language14AcceptLanguage10prefere br label %12 ._crit_edge: ; preds = %.critedge + %.sroa.510.0..sroa_idx = getelementptr inbounds i8, ptr %5, i64 8 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %.sroa.453) %.not = icmp eq i64 %20, -9223372036854775807 - %.sroa.510.0..sroa_idx = getelementptr inbounds i8, ptr %5, i64 8 - %spec.select = select i1 %.not, ptr %.sroa.453, ptr %.sroa.510.0..sroa_idx - %spec.select58 = select i1 %.not, i64 -9223372036854775808, i64 %20 - br label %.thread44 + br i1 %.not, label %.thread44, label %"_ZN4core3ptr102drop_in_place$LT$actix_web..http..header..preference..Preference$LT$language_tags..LanguageTag$GT$$GT$17h520b62a337950646E.exit" 12: ; preds = %.lr.ph, %.critedge %13 = phi i64 [ -9223372036854775807, %.lr.ph ], [ %20, %.critedge ] @@ -5778,9 +5776,12 @@ define void @_ZN9actix_web4http6header15accept_language14AcceptLanguage10prefere %or.cond = icmp ugt i16 %16, %.052 br i1 %or.cond, label %17, label %.critedge -.thread44: ; preds = %._crit_edge, %._crit_edge.thread - %.sroa.453.sink = phi ptr [ %.sroa.453, %._crit_edge.thread ], [ %spec.select, %._crit_edge ] - %.sroa.08.0.copyload.sink = phi i64 [ -9223372036854775808, %._crit_edge.thread ], [ %spec.select58, %._crit_edge ] +.thread44: ; preds = %._crit_edge.thread, %._crit_edge + br label %"_ZN4core3ptr102drop_in_place$LT$actix_web..http..header..preference..Preference$LT$language_tags..LanguageTag$GT$$GT$17h520b62a337950646E.exit" + +"_ZN4core3ptr102drop_in_place$LT$actix_web..http..header..preference..Preference$LT$language_tags..LanguageTag$GT$$GT$17h520b62a337950646E.exit": ; preds = %._crit_edge, %.thread44 + %.sroa.453.sink = phi ptr [ %.sroa.453, %.thread44 ], [ %.sroa.510.0..sroa_idx, %._crit_edge ] + %.sroa.08.0.copyload.sink = phi i64 [ -9223372036854775808, %.thread44 ], [ %20, %._crit_edge ] %.sroa.453.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.453.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(64) %.sroa.453.sink, i64 64, i1 false) store i64 %.sroa.08.0.copyload.sink, ptr %0, align 8 diff --git a/bench/assimp/optimized/IRRLoader.cpp.ll b/bench/assimp/optimized/IRRLoader.cpp.ll index bddc9432732..a9deb677f51 100644 --- a/bench/assimp/optimized/IRRLoader.cpp.ll +++ b/bench/assimp/optimized/IRRLoader.cpp.ll @@ -4602,11 +4602,7 @@ if.then8: ; preds = %_ZN6Assimp14ASSIMP_ invoke.cont: ; preds = %if.then8 %call.i49 = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %prop, ptr noundef nonnull @.str.26) #28 %cmp.i50 = icmp eq i32 %call.i49, 0 - br i1 %cmp.i50, label %if.then11, label %if.else - -if.then11: ; preds = %invoke.cont - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %position, ptr noundef nonnull align 8 dereferenceable(12) %value.i, i64 12, i1 false) - br label %for.inc.sink.split + br i1 %cmp.i50, label %if.end43.sink.split, label %if.else lpad: ; preds = %if.then8 %14 = landingpad { ptr, i32 } @@ -4616,20 +4612,12 @@ lpad: ; preds = %if.then8 if.else: ; preds = %invoke.cont %call.i51 = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %prop, ptr noundef nonnull @.str.27) #28 %cmp.i52 = icmp eq i32 %call.i51, 0 - br i1 %cmp.i52, label %if.then15, label %if.else17 - -if.then15: ; preds = %if.else - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %rotation, ptr noundef nonnull align 8 dereferenceable(12) %value.i, i64 12, i1 false) - br label %for.inc.sink.split + br i1 %cmp.i52, label %if.end43.sink.split, label %if.else17 if.else17: ; preds = %if.else %call.i53 = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %prop, ptr noundef nonnull @.str.28) #28 %cmp.i54 = icmp eq i32 %call.i53, 0 - br i1 %cmp.i54, label %if.then21, label %if.else23 - -if.then21: ; preds = %if.else17 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %scaling, ptr noundef nonnull align 8 dereferenceable(12) %value.i, i64 12, i1 false) - br label %for.inc.sink.split + br i1 %cmp.i54, label %if.end43.sink.split, label %if.else23 if.else23: ; preds = %if.else17 %15 = load i32, ptr %nd, align 8 @@ -4646,8 +4634,7 @@ if.then25: ; preds = %if.else23 if.then30: ; preds = %if.then25 %mLookAt = getelementptr inbounds i8, ptr %17, i64 1052 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %mLookAt, ptr noundef nonnull align 8 dereferenceable(12) %value.i, i64 12, i1 false) - br label %for.inc.sink.split + br label %if.end43.sink.split if.else32: ; preds = %if.then25 %call.i57 = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %prop, ptr noundef nonnull @.str.30) #28 @@ -4656,7 +4643,11 @@ if.else32: ; preds = %if.then25 if.then36: ; preds = %if.else32 %mUp = getelementptr inbounds i8, ptr %17, i64 1040 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %mUp, ptr noundef nonnull align 8 dereferenceable(12) %value.i, i64 12, i1 false) + br label %if.end43.sink.split + +if.end43.sink.split: ; preds = %if.else17, %if.else, %invoke.cont, %if.then30, %if.then36 + %rotation.sink = phi ptr [ %mUp, %if.then36 ], [ %mLookAt, %if.then30 ], [ %position, %invoke.cont ], [ %rotation, %if.else ], [ %scaling, %if.else17 ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %rotation.sink, ptr noundef nonnull align 8 dereferenceable(12) %value.i, i64 12, i1 false) br label %for.inc.sink.split do.body.i66: ; preds = %_ZN6Assimp14ASSIMP_stricmpEPKcS1_.exit, %do.body.i66 @@ -5217,8 +5208,8 @@ ehcleanup299: ; preds = %ehcleanup, %lpad185 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %value.i193) #28 br label %eh.resume -for.inc.sink.split: ; preds = %if.then163, %if.then169, %if.else165, %if.then58, %if.then113, %if.then121, %if.else117, %if.then106, %if.then142, %land.lhs.true138, %lor.lhs.false, %if.then67, %if.then83, %if.then91, %if.else87, %if.then75, %if.then11, %if.then21, %if.then30, %if.then36, %if.else32, %if.else23, %if.then15, %cleanup - %prop183.sink = phi ptr [ %prop183, %cleanup ], [ %prop, %if.then15 ], [ %prop, %if.else23 ], [ %prop, %if.else32 ], [ %prop, %if.then36 ], [ %prop, %if.then30 ], [ %prop, %if.then21 ], [ %prop, %if.then11 ], [ %prop49, %if.then75 ], [ %prop49, %if.else87 ], [ %prop49, %if.then91 ], [ %prop49, %if.then83 ], [ %prop49, %if.then67 ], [ %prop49, %lor.lhs.false ], [ %prop49, %land.lhs.true138 ], [ %prop49, %if.then142 ], [ %prop49, %if.then106 ], [ %prop49, %if.else117 ], [ %prop49, %if.then121 ], [ %prop49, %if.then113 ], [ %prop49, %if.then58 ], [ %prop156, %if.else165 ], [ %prop156, %if.then169 ], [ %prop156, %if.then163 ] +for.inc.sink.split: ; preds = %if.then163, %if.then169, %if.else165, %if.then58, %if.then113, %if.then121, %if.else117, %if.then106, %if.then142, %land.lhs.true138, %lor.lhs.false, %if.then67, %if.then83, %if.then91, %if.else87, %if.then75, %if.else32, %if.else23, %if.end43.sink.split, %cleanup + %prop183.sink = phi ptr [ %prop183, %cleanup ], [ %prop, %if.end43.sink.split ], [ %prop, %if.else23 ], [ %prop, %if.else32 ], [ %prop49, %if.then75 ], [ %prop49, %if.else87 ], [ %prop49, %if.then91 ], [ %prop49, %if.then83 ], [ %prop49, %if.then67 ], [ %prop49, %lor.lhs.false ], [ %prop49, %land.lhs.true138 ], [ %prop49, %if.then142 ], [ %prop49, %if.then106 ], [ %prop49, %if.else117 ], [ %prop49, %if.then121 ], [ %prop49, %if.then113 ], [ %prop49, %if.then58 ], [ %prop156, %if.else165 ], [ %prop156, %if.then169 ], [ %prop156, %if.then163 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %prop183.sink) #28 br label %for.inc diff --git a/bench/assimp/optimized/OgreImporter.cpp.ll b/bench/assimp/optimized/OgreImporter.cpp.ll index d3c7e2f434d..b080d463a47 100644 --- a/bench/assimp/optimized/OgreImporter.cpp.ll +++ b/bench/assimp/optimized/OgreImporter.cpp.ll @@ -743,7 +743,7 @@ if.then.i.i.i.i.i: ; preds = %if.then.i.i.i.i %vfn.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i, i64 16 %10 = load ptr, ptr %vfn.i.i.i.i.i, align 8 call void %10(ptr noundef nonnull align 8 dereferenceable(16) %7) #24 - br label %if.end8.sink.split.i.i.i.i.i + br label %return.sink.split if.end.i.i.i.i.i: ; preds = %if.then.i.i.i.i %11 = load i8, ptr @__libc_single_threaded, align 1 @@ -787,44 +787,37 @@ if.else.i.i.i.i.i.i.i.i: ; preds = %if.then7.i.i.i.i.i _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i: ; preds = %if.else.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i %retval.i.0.i.i.i.i.i.i.i = phi i32 [ %15, %if.then.i.i.i.i.i.i.i.i ], [ %16, %if.else.i.i.i.i.i.i.i.i ] %cmp.i.i.i.i.i.i.i = icmp eq i32 %retval.i.0.i.i.i.i.i.i.i, 1 - br i1 %cmp.i.i.i.i.i.i.i, label %if.end8.sink.split.i.i.i.i.i, label %return - -if.end8.sink.split.i.i.i.i.i: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i, %if.then.i.i.i.i.i - %vtable2.i.i.i.i.i.i.i = load ptr, ptr %7, align 8 - %vfn3.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable2.i.i.i.i.i.i.i, i64 24 - %17 = load ptr, ptr %vfn3.i.i.i.i.i.i.i, align 8 - call void %17(ptr noundef nonnull align 8 dereferenceable(16) %7) #24 - br label %return + br i1 %cmp.i.i.i.i.i.i.i, label %return.sink.split, label %return lpad10: ; preds = %call.i25.noexc, %if.end - %18 = landingpad { ptr, i32 } + %17 = landingpad { ptr, i32 } cleanup br label %ehcleanup16 lpad12: ; preds = %invoke.cont11 - %19 = landingpad { ptr, i32 } + %18 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp8) #24 br label %ehcleanup16 ehcleanup16: ; preds = %lpad10, %lpad.i28, %lpad12 - %.pn15 = phi { ptr, i32 } [ %19, %lpad12 ], [ %18, %lpad10 ], [ %5, %lpad.i28 ] + %.pn15 = phi { ptr, i32 } [ %18, %lpad12 ], [ %17, %lpad10 ], [ %5, %lpad.i28 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp9) #24 br label %eh.resume lpad18: ; preds = %if.then17 - %20 = landingpad { ptr, i32 } + %19 = landingpad { ptr, i32 } cleanup br label %ehcleanup30 lpad22: ; preds = %invoke.cont26, %invoke.cont23, %invoke.cont19 - %21 = landingpad { ptr, i32 } + %20 = landingpad { ptr, i32 } cleanup call void @_ZNSt10unique_ptrIN6Assimp4Ogre4MeshESt14default_deleteIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %mesh) #24 br label %ehcleanup30 ehcleanup30: ; preds = %lpad22, %lpad18 - %.pn20 = phi { ptr, i32 } [ %21, %lpad22 ], [ %20, %lpad18 ] + %.pn20 = phi { ptr, i32 } [ %20, %lpad22 ], [ %19, %lpad18 ] call void @_ZN6Assimp12StreamReaderILb0ELb0EED2Ev(ptr noundef nonnull align 8 dereferenceable(49) %reader) #24 br label %eh.resume @@ -857,43 +850,48 @@ _ZNSt10unique_ptrIN6Assimp4Ogre7MeshXmlESt14default_deleteIS2_EED2Ev.exit: ; pre call void @_ZN6Assimp4Ogre7MeshXmlD1Ev(ptr noundef nonnull align 8 dereferenceable(72) %call40) #24 call void @_ZdlPv(ptr noundef nonnull %call40) #27 call void @_ZN6Assimp10TXmlParserIN4pugi8xml_nodeEE5clearEv(ptr noundef nonnull align 8 dereferenceable(40) %xmlParser) - %22 = load ptr, ptr %mData.i, align 8 - %tobool.not.i.i.i.i = icmp eq ptr %22, null + %21 = load ptr, ptr %mData.i, align 8 + %tobool.not.i.i.i.i = icmp eq ptr %21, null br i1 %tobool.not.i.i.i.i, label %_ZNSt10unique_ptrIN6Assimp8IOStreamESt14default_deleteIS1_EED2Ev.exit, label %if.then.i.i.i.i35 if.then.i.i.i.i35: ; preds = %_ZNSt10unique_ptrIN6Assimp4Ogre7MeshXmlESt14default_deleteIS2_EED2Ev.exit - call void @_ZdlPv(ptr noundef nonnull %22) #27 + call void @_ZdlPv(ptr noundef nonnull %21) #27 br label %_ZNSt10unique_ptrIN6Assimp8IOStreamESt14default_deleteIS1_EED2Ev.exit _ZNSt10unique_ptrIN6Assimp8IOStreamESt14default_deleteIS1_EED2Ev.exit: ; preds = %_ZNSt10unique_ptrIN6Assimp4Ogre7MeshXmlESt14default_deleteIS2_EED2Ev.exit, %if.then.i.i.i.i35 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %mData.i) #24 - %vtable.i.i = load ptr, ptr %call3.i24, align 8 - %vfn.i.i = getelementptr inbounds i8, ptr %vtable.i.i, i64 8 - %23 = load ptr, ptr %vfn.i.i, align 8 - call void %23(ptr noundef nonnull align 8 dereferenceable(8) %call3.i24) #24 + br label %return.sink.split + +return.sink.split: ; preds = %if.then.i.i.i.i.i, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i, %_ZNSt10unique_ptrIN6Assimp8IOStreamESt14default_deleteIS1_EED2Ev.exit + %.sink46 = phi ptr [ %call3.i24, %_ZNSt10unique_ptrIN6Assimp8IOStreamESt14default_deleteIS1_EED2Ev.exit ], [ %7, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i ], [ %7, %if.then.i.i.i.i.i ] + %.sink45 = phi i64 [ 8, %_ZNSt10unique_ptrIN6Assimp8IOStreamESt14default_deleteIS1_EED2Ev.exit ], [ 24, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i ], [ 24, %if.then.i.i.i.i.i ] + %vtable2.i.i.i.i.i.i.i = load ptr, ptr %.sink46, align 8 + %vfn3.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable2.i.i.i.i.i.i.i, i64 %.sink45 + %22 = load ptr, ptr %vfn3.i.i.i.i.i.i.i, align 8 + call void %22(ptr noundef nonnull align 8 dereferenceable(8) %.sink46) #24 br label %return -return: ; preds = %if.end8.sink.split.i.i.i.i.i, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i, %delete.end.i, %_ZNSt10unique_ptrIN6Assimp8IOStreamESt14default_deleteIS1_EED2Ev.exit +return: ; preds = %return.sink.split, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i, %delete.end.i ret void lpad35: ; preds = %invoke.cont36, %invoke.cont33 - %24 = landingpad { ptr, i32 } + %23 = landingpad { ptr, i32 } cleanup br label %ehcleanup50 lpad42: ; preds = %invoke.cont46, %invoke.cont43, %invoke.cont39 - %25 = landingpad { ptr, i32 } + %24 = landingpad { ptr, i32 } cleanup call void @_ZNSt10unique_ptrIN6Assimp4Ogre7MeshXmlESt14default_deleteIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %mesh38) #24 br label %ehcleanup50 ehcleanup50: ; preds = %lpad42, %lpad35 - %.pn17 = phi { ptr, i32 } [ %25, %lpad42 ], [ %24, %lpad35 ] + %.pn17 = phi { ptr, i32 } [ %24, %lpad42 ], [ %23, %lpad35 ] call void @_ZN6Assimp10TXmlParserIN4pugi8xml_nodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %xmlParser) #24 %vtable.i.i39 = load ptr, ptr %call3.i24, align 8 %vfn.i.i40 = getelementptr inbounds i8, ptr %vtable.i.i39, i64 8 - %26 = load ptr, ptr %vfn.i.i40, align 8 - call void %26(ptr noundef nonnull align 8 dereferenceable(8) %call3.i24) #24 + %25 = load ptr, ptr %vfn.i.i40, align 8 + call void %25(ptr noundef nonnull align 8 dereferenceable(8) %call3.i24) #24 br label %eh.resume eh.resume: ; preds = %ehcleanup50, %ehcleanup30, %ehcleanup16, %lpad5, %ehcleanup diff --git a/bench/assimp/optimized/PlyExporter.cpp.ll b/bench/assimp/optimized/PlyExporter.cpp.ll index 5cbe756e45f..24381ebb1b0 100644 --- a/bench/assimp/optimized/PlyExporter.cpp.ll +++ b/bench/assimp/optimized/PlyExporter.cpp.ll @@ -1766,15 +1766,18 @@ if.then62: ; preds = %_ZNK6aiMesh24HasTan %call67 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo5writeEPKcl(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %arrayidx65, i64 noundef 12) %16 = load ptr, ptr %mBitangents.i, align 8 %arrayidx70 = getelementptr inbounds %class.aiVector3t, ptr %16, i64 %indvars.iv61 - %call72 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo5writeEPKcl(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %arrayidx70, i64 noundef 12) - br label %for.inc82 + br label %for.inc82.sink.split if.else73: ; preds = %if.then60, %_ZNK6aiMesh24HasTangentsAndBitangentsEv.exit %call76 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo5writeEPKcl(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull %defaultNormal, i64 noundef 12) - %call79 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo5writeEPKcl(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull %defaultNormal, i64 noundef 12) + br label %for.inc82.sink.split + +for.inc82.sink.split: ; preds = %if.then62, %if.else73 + %defaultNormal.sink = phi ptr [ %defaultNormal, %if.else73 ], [ %arrayidx70, %if.then62 ] + %call79 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo5writeEPKcl(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %defaultNormal.sink, i64 noundef 12) br label %for.inc82 -for.inc82: ; preds = %for.end57, %if.else73, %if.then62 +for.inc82: ; preds = %for.inc82.sink.split, %for.end57 %indvars.iv.next62 = add nuw nsw i64 %indvars.iv61, 1 %17 = load i32, ptr %mNumVertices, align 4 %18 = zext i32 %17 to i64 diff --git a/bench/assimp/optimized/zip.c.ll b/bench/assimp/optimized/zip.c.ll index 4da80ac3a44..1f28005b4ec 100644 --- a/bench/assimp/optimized/zip.c.ll +++ b/bench/assimp/optimized/zip.c.ll @@ -15218,19 +15218,19 @@ for.inc75.i.i: ; preds = %if.then70.i.i, %lan zip_entry_mark.exit.thread.i: ; preds = %for.cond7.preheader.i.i, %for.body.i.i, %if.end23.us.i.i, %for.body.us.i.i, %if.end10 %retval.0.i.ph.i = phi i32 [ -1, %if.end10 ], [ %call.us.i.i, %for.body.us.i.i ], [ -3, %if.end23.us.i.i ], [ %call.i.i, %for.body.i.i ], [ -3, %for.cond7.preheader.i.i ] call void @llvm.lifetime.end.p0(i64 584, ptr nonnull %file_stat.i.i) - br label %if.then16 + br label %return.sink.split if.end.i21: ; preds = %for.inc75.i.i call void @llvm.lifetime.end.p0(i64 584, ptr nonnull %file_stat.i.i) %call.i6.i = call noalias ptr @calloc(i64 noundef %wide.trip.count64.i.i, i64 noundef 8) #34 %tobool.not.i.i = icmp eq ptr %call.i6.i, null - br i1 %tobool.not.i.i, label %if.then16, label %for.body.i10.i + br i1 %tobool.not.i.i, label %return.sink.split, label %for.body.i10.i if.end.thread.i: ; preds = %for.cond.preheader.i.i call void @llvm.lifetime.end.p0(i64 584, ptr nonnull %file_stat.i.i) %call.i632.i = tail call noalias ptr @calloc(i64 noundef %conv, i64 noundef 8) #34 %tobool.not.i33.i = icmp eq ptr %call.i632.i, null - br i1 %tobool.not.i33.i, label %if.then16, label %for.end.i.i + br i1 %tobool.not.i33.i, label %return.sink.split, label %for.end.i.i for.body.i10.i: ; preds = %if.end.i21, %if.end9.i.i %indvars.iv.i11.i = phi i64 [ %indvars.iv.next.i13.i, %if.end9.i.i ], [ 0, %if.end.i21 ] @@ -15318,7 +15318,7 @@ for.end.i.i: ; preds = %if.end9.i.i, %if.en zip_entry_finalize.exit.thread20.i: ; preds = %for.end.i.i call void @free(ptr noundef %call.i63538.i) #30 - br label %if.then16 + br label %return.sink.split for.cond21.preheader.i.i: ; preds = %for.end.i.i %sub.i.i = add i32 %0, -1 @@ -15369,17 +15369,12 @@ for.body46.i.i: ; preds = %for.body46.i.i, %fo %exitcond68.not.i.i = icmp eq i64 %indvars.iv.next65.i.i, %wide.trip.count67.i.i br i1 %exitcond68.not.i.i, label %if.end18, label %for.body46.i.i -if.then16: ; preds = %zip_entry_mark.exit.thread.i, %zip_entry_finalize.exit.thread20.i, %if.end.i21, %if.end.thread.i - %retval.0.i20.ph = phi i32 [ -21, %if.end.thread.i ], [ -21, %if.end.i21 ], [ -21, %zip_entry_finalize.exit.thread20.i ], [ %retval.0.i.ph.i, %zip_entry_mark.exit.thread.i ] - call void @free(ptr noundef nonnull %call8) #30 - br label %return - if.end18: ; preds = %for.body46.i.i, %for.end34.i.i call void @free(ptr noundef nonnull %call13.i.i) #30 call void @free(ptr noundef %call.i63538.i) #30 %call.i = call noalias ptr @calloc(i64 noundef %conv, i64 noundef 4) #34 %cmp.i = icmp eq ptr %call.i, null - br i1 %cmp.i, label %zip_entries_delete_mark.exit, label %if.end.i22 + br i1 %cmp.i, label %return.sink.split, label %if.end.i22 if.end.i22: ; preds = %if.end18 %m_pState.i = getelementptr inbounds i8, ptr %zip, i64 104 @@ -15389,7 +15384,7 @@ if.end.i22: ; preds = %if.end18 %27 = load ptr, ptr %m_pFile.i, align 8 %call3.i = call i32 @fseeko(ptr noundef %27, i64 noundef 0, i32 noundef 0) %tobool.not.i23 = icmp eq i32 %call3.i, 0 - br i1 %tobool.not.i23, label %while.cond.preheader.i, label %if.then6.i + br i1 %tobool.not.i23, label %while.cond.preheader.i, label %return.sink.split.i while.cond.preheader.i: ; preds = %if.end.i22 br i1 %cmp45.i.i, label %while.cond11.preheader.lr.ph.i, label %while.end105.i @@ -15398,10 +15393,6 @@ while.cond11.preheader.lr.ph.i: ; preds = %while.cond.preheade %m_central_dir_offsets.i = getelementptr inbounds i8, ptr %26, i64 32 br label %while.cond11.preheader.i -if.then6.i: ; preds = %if.end.i22 - call void @free(ptr noundef nonnull %call.i) #30 - br label %zip_entries_delete_mark.exit - while.cond11.preheader.i: ; preds = %if.end102.i, %while.cond11.preheader.lr.ph.i %writen_num.0112.i = phi i64 [ 0, %while.cond11.preheader.lr.ph.i ], [ %add103.i, %if.end102.i ] %read_num.0111.i = phi i64 [ 0, %while.cond11.preheader.lr.ph.i ], [ %add104.i, %if.end102.i ] @@ -15497,11 +15488,7 @@ while.body53.i: ; preds = %if.end70.i, %while. %move_length.1100.i = phi i64 [ %move_length.0108.i, %while.body53.lr.ph.i ], [ %add57.i, %if.end70.i ] %41 = load ptr, ptr %26, align 8 %tobool63.not.i = icmp eq ptr %41, null - br i1 %tobool63.not.i, label %if.then67.i, label %if.end70.i - -if.then67.i: ; preds = %while.body53.i - call void @free(ptr noundef %call.i) #30 - br label %zip_entries_delete_mark.exit + br i1 %tobool63.not.i, label %return.sink.split.i, label %if.end70.i if.end70.i: ; preds = %while.body53.i %42 = load ptr, ptr %m_central_dir_offsets.i, align 8 @@ -15615,8 +15602,7 @@ zip_files_move.exit.i: ; preds = %if.then16.i.i, %whi if.then99.i: ; preds = %zip_files_move.exit.i %conv92.i = trunc i64 %retval.0.i.i to i32 - call void @free(ptr noundef %call.i) #30 - br label %zip_entries_delete_mark.exit + br label %return.sink.split.i if.end102.i: ; preds = %zip_files_move.exit.i %add103.i = add i64 %move_length.1.lcssa.i, %writen_num.1.lcssa.i @@ -15633,16 +15619,20 @@ while.end105.i: ; preds = %if.end102.i, %while %sub108.i = sub nsw i32 %0, %deleted_entry_num.0.lcssa.i store i32 %sub108.i, ptr %m_total_files.i, align 8 call fastcc void @zip_central_dir_delete(ptr noundef %26, ptr noundef %call.i, i32 noundef %0) + br label %return.sink.split.i + +return.sink.split.i: ; preds = %while.body53.i, %while.end105.i, %if.then99.i, %if.end.i22 + %retval.0.ph.i = phi i32 [ %deleted_entry_num.0.lcssa.i, %while.end105.i ], [ %conv92.i, %if.then99.i ], [ -3, %if.end.i22 ], [ -3, %while.body53.i ] call void @free(ptr noundef %call.i) #30 - br label %zip_entries_delete_mark.exit + br label %return.sink.split -zip_entries_delete_mark.exit: ; preds = %if.end18, %if.then6.i, %if.then67.i, %if.then99.i, %while.end105.i - %retval.0.i24 = phi i32 [ -3, %if.then6.i ], [ -3, %if.then67.i ], [ %conv92.i, %if.then99.i ], [ %deleted_entry_num.0.lcssa.i, %while.end105.i ], [ -21, %if.end18 ] +return.sink.split: ; preds = %return.sink.split.i, %if.end18, %if.end.thread.i, %if.end.i21, %zip_entry_finalize.exit.thread20.i, %zip_entry_mark.exit.thread.i + %retval.0.ph = phi i32 [ -21, %if.end.thread.i ], [ -21, %if.end.i21 ], [ -21, %zip_entry_finalize.exit.thread20.i ], [ %retval.0.i.ph.i, %zip_entry_mark.exit.thread.i ], [ -21, %if.end18 ], [ %retval.0.ph.i, %return.sink.split.i ] call void @free(ptr noundef %call8) #30 br label %return -return: ; preds = %zip_entries_total.exit, %if.end, %entry, %lor.lhs.false, %zip_entries_delete_mark.exit, %if.then16 - %retval.0 = phi i32 [ %retval.0.i20.ph, %if.then16 ], [ %retval.0.i24, %zip_entries_delete_mark.exit ], [ -1, %lor.lhs.false ], [ -1, %entry ], [ 0, %if.end ], [ -21, %zip_entries_total.exit ] +return: ; preds = %return.sink.split, %zip_entries_total.exit, %if.end, %entry, %lor.lhs.false + %retval.0 = phi i32 [ -1, %lor.lhs.false ], [ -1, %entry ], [ 0, %if.end ], [ -21, %zip_entries_total.exit ], [ %retval.0.ph, %return.sink.split ] ret i32 %retval.0 } diff --git a/bench/box2d/optimized/b2_fixture.cpp.ll b/bench/box2d/optimized/b2_fixture.cpp.ll index 15ec071b43f..3c9c7ad25e1 100644 --- a/bench/box2d/optimized/b2_fixture.cpp.ll +++ b/bench/box2d/optimized/b2_fixture.cpp.ll @@ -36,6 +36,7 @@ target triple = "x86_64-unknown-linux-gnu" @.str.26 = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.27 = private unnamed_addr constant [24 x i8] c" fd.shape = &shape;\0A\00", align 1 @.str.28 = private unnamed_addr constant [37 x i8] c" bodies[%d]->CreateFixture(&fd);\0A\00", align 1 +@switch.table._ZN9b2Fixture7DestroyEP16b2BlockAllocator = private unnamed_addr constant [4 x i32] [i32 24, i32 56, i32 160, i32 48], align 4 @_ZN9b2FixtureC1Ev = unnamed_addr alias void (ptr), ptr @_ZN9b2FixtureC2Ev @@ -156,43 +157,20 @@ entry: %3 = load ptr, ptr %m_shape, align 8 %m_type = getelementptr inbounds i8, ptr %3, i64 8 %4 = load i32, ptr %m_type, align 8 - switch i32 %4, label %sw.epilog [ - i32 0, label %sw.bb - i32 1, label %sw.bb8 - i32 2, label %sw.bb13 - i32 3, label %sw.bb18 - ] + %5 = icmp ult i32 %4, 4 + br i1 %5, label %switch.lookup, label %sw.epilog -sw.bb: ; preds = %entry - %vtable6 = load ptr, ptr %3, align 8 - %5 = load ptr, ptr %vtable6, align 8 - tail call void %5(ptr noundef nonnull align 8 dereferenceable(24) %3) #7 - br label %sw.epilog.sink.split - -sw.bb8: ; preds = %entry - %vtable11 = load ptr, ptr %3, align 8 - %6 = load ptr, ptr %vtable11, align 8 - tail call void %6(ptr noundef nonnull align 8 dereferenceable(49) %3) #7 - br label %sw.epilog.sink.split - -sw.bb13: ; preds = %entry - %vtable16 = load ptr, ptr %3, align 8 - %7 = load ptr, ptr %vtable16, align 8 - tail call void %7(ptr noundef nonnull align 8 dereferenceable(156) %3) #7 - br label %sw.epilog.sink.split - -sw.bb18: ; preds = %entry +switch.lookup: ; preds = %entry + %6 = zext nneg i32 %4 to i64 + %switch.gep = getelementptr inbounds [4 x i32], ptr @switch.table._ZN9b2Fixture7DestroyEP16b2BlockAllocator, i64 0, i64 %6 + %switch.load = load i32, ptr %switch.gep, align 4 %vtable21 = load ptr, ptr %3, align 8 - %8 = load ptr, ptr %vtable21, align 8 - tail call void %8(ptr noundef nonnull align 8 dereferenceable(44) %3) #7 - br label %sw.epilog.sink.split - -sw.epilog.sink.split: ; preds = %sw.bb, %sw.bb8, %sw.bb13, %sw.bb18 - %.sink = phi i32 [ 48, %sw.bb18 ], [ 160, %sw.bb13 ], [ 56, %sw.bb8 ], [ 24, %sw.bb ] - tail call void @_ZN16b2BlockAllocator4FreeEPvi(ptr noundef nonnull align 8 dereferenceable(128) %allocator, ptr noundef nonnull %3, i32 noundef %.sink) + %7 = load ptr, ptr %vtable21, align 8 + tail call void %7(ptr noundef nonnull align 8 dereferenceable(24) %3) #7 + tail call void @_ZN16b2BlockAllocator4FreeEPvi(ptr noundef nonnull align 8 dereferenceable(128) %allocator, ptr noundef nonnull %3, i32 noundef %switch.load) br label %sw.epilog -sw.epilog: ; preds = %sw.epilog.sink.split, %entry +sw.epilog: ; preds = %entry, %switch.lookup store ptr null, ptr %m_shape, align 8 ret void } diff --git a/bench/bullet3/optimized/b3GjkEpa.ll b/bench/bullet3/optimized/b3GjkEpa.ll index d1600b06b14..b6589f38379 100644 --- a/bench/bullet3/optimized/b3GjkEpa.ll +++ b/bench/bullet3/optimized/b3GjkEpa.ll @@ -4015,7 +4015,6 @@ if.then15: ; preds = %if.then %mul5.i.i.i = fmul float %3, %3 %21 = tail call float @llvm.fmuladd.f32(float %1, float %1, float %mul5.i.i.i) %22 = tail call noundef float @llvm.fmuladd.f32(float %5, float %5, float %21) - %sqrt.i = tail call noundef float @llvm.sqrt.f32(float %22) br label %return.sink.split if.else: ; preds = %if.then @@ -4029,7 +4028,6 @@ if.then19: ; preds = %if.else %mul5.i.i.i29 = fmul float %2, %2 %25 = tail call float @llvm.fmuladd.f32(float %0, float %0, float %mul5.i.i.i29) %26 = tail call noundef float @llvm.fmuladd.f32(float %4, float %4, float %25) - %sqrt.i31 = tail call noundef float @llvm.sqrt.f32(float %26) br label %return.sink.split if.else22: ; preds = %if.else @@ -4048,12 +4046,12 @@ if.else22: ; preds = %if.else %div = fdiv float %34, %18 %cmp.i = fcmp ogt float %div, 0.000000e+00 %.sroa.speculated = select i1 %cmp.i, float %div, float 0.000000e+00 - %sqrt = tail call float @llvm.sqrt.f32(float %.sroa.speculated) br label %return.sink.split return.sink.split: ; preds = %if.then19, %if.else22, %if.then15 - %sqrt.i.sink = phi float [ %sqrt.i, %if.then15 ], [ %sqrt, %if.else22 ], [ %sqrt.i31, %if.then19 ] - store float %sqrt.i.sink, ptr %dist, align 4 + %.sink = phi float [ %22, %if.then15 ], [ %.sroa.speculated, %if.else22 ], [ %26, %if.then19 ] + %sqrt.i = tail call float @llvm.sqrt.f32(float %.sink) + store float %sqrt.i, ptr %dist, align 4 br label %return return: ; preds = %return.sink.split, %entry diff --git a/bench/bullet3/optimized/btGjkConvexCast.ll b/bench/bullet3/optimized/btGjkConvexCast.ll index 00d7ea54434..ebd0c17917a 100644 --- a/bench/bullet3/optimized/btGjkConvexCast.ll +++ b/bench/bullet3/optimized/btGjkConvexCast.ll @@ -242,17 +242,7 @@ if.then62: ; preds = %if.then59 %n.sroa.8.0.copyload105 = load float, ptr %n.sroa.8.0.m_normalOnBInWorld.sroa_idx, align 4 %n.sroa.11.0.copyload112 = load float, ptr %n.sroa.11.0.m_normalOnBInWorld.sroa_idx, align 8 %n.sroa.14.0.copyload119 = load float, ptr %n.sroa.14.0.m_normalOnBInWorld.sroa_idx, align 4 - %m_normal = getelementptr inbounds i8, ptr %result, i64 136 - store float %n.sroa.0.0.copyload100, ptr %m_normal, align 8 - %n.sroa.8.0.m_normal.sroa_idx = getelementptr inbounds i8, ptr %result, i64 140 - store float %n.sroa.8.0.copyload105, ptr %n.sroa.8.0.m_normal.sroa_idx, align 4 - %n.sroa.11.0.m_normal.sroa_idx = getelementptr inbounds i8, ptr %result, i64 144 - store float %n.sroa.11.0.copyload112, ptr %n.sroa.11.0.m_normal.sroa_idx, align 8 - %n.sroa.14.0.m_normal.sroa_idx = getelementptr inbounds i8, ptr %result, i64 148 - store float %n.sroa.14.0.copyload119, ptr %n.sroa.14.0.m_normal.sroa_idx, align 4 - %m_hitPoint = getelementptr inbounds i8, ptr %result, i64 152 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %m_hitPoint, ptr noundef nonnull align 8 dereferenceable(16) %m_pointInWorld, i64 16, i1 false) - br label %cleanup + br label %cleanup.sink.split if.end65: ; preds = %if.then59 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %c.sroa.0, ptr noundef nonnull align 8 dereferenceable(16) %m_pointInWorld, i64 16, i1 false) @@ -284,20 +274,28 @@ while.end: ; preds = %while.end.loopexit, if.end74: ; preds = %while.end %m_fraction75 = getelementptr inbounds i8, ptr %result, i64 168 store float %lambda.0.lcssa, ptr %m_fraction75, align 8 + br label %cleanup.sink.split + +cleanup.sink.split: ; preds = %if.then62, %if.end74 + %n.sroa.0.0.lcssa.sink = phi float [ %n.sroa.0.0.lcssa, %if.end74 ], [ %n.sroa.0.0.copyload100, %if.then62 ] + %n.sroa.8.0.lcssa.sink = phi float [ %n.sroa.8.0.lcssa, %if.end74 ], [ %n.sroa.8.0.copyload105, %if.then62 ] + %n.sroa.11.0.lcssa.sink = phi float [ %n.sroa.11.0.lcssa, %if.end74 ], [ %n.sroa.11.0.copyload112, %if.then62 ] + %n.sroa.14.0.lcssa.sink = phi float [ %n.sroa.14.0.lcssa, %if.end74 ], [ %n.sroa.14.0.copyload119, %if.then62 ] + %c.sroa.0.sink = phi ptr [ %c.sroa.0, %if.end74 ], [ %m_pointInWorld, %if.then62 ] %m_normal76 = getelementptr inbounds i8, ptr %result, i64 136 - store float %n.sroa.0.0.lcssa, ptr %m_normal76, align 8 + store float %n.sroa.0.0.lcssa.sink, ptr %m_normal76, align 8 %n.sroa.8.0.m_normal76.sroa_idx = getelementptr inbounds i8, ptr %result, i64 140 - store float %n.sroa.8.0.lcssa, ptr %n.sroa.8.0.m_normal76.sroa_idx, align 4 + store float %n.sroa.8.0.lcssa.sink, ptr %n.sroa.8.0.m_normal76.sroa_idx, align 4 %n.sroa.11.0.m_normal76.sroa_idx = getelementptr inbounds i8, ptr %result, i64 144 - store float %n.sroa.11.0.lcssa, ptr %n.sroa.11.0.m_normal76.sroa_idx, align 8 + store float %n.sroa.11.0.lcssa.sink, ptr %n.sroa.11.0.m_normal76.sroa_idx, align 8 %n.sroa.14.0.m_normal76.sroa_idx = getelementptr inbounds i8, ptr %result, i64 148 - store float %n.sroa.14.0.lcssa, ptr %n.sroa.14.0.m_normal76.sroa_idx, align 4 + store float %n.sroa.14.0.lcssa.sink, ptr %n.sroa.14.0.m_normal76.sroa_idx, align 4 %m_hitPoint77 = getelementptr inbounds i8, ptr %result, i64 152 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %m_hitPoint77, ptr noundef nonnull align 4 dereferenceable(16) %c.sroa.0, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %m_hitPoint77, ptr noundef nonnull align 4 dereferenceable(16) %c.sroa.0.sink, i64 16, i1 false) br label %cleanup -cleanup: ; preds = %if.end38, %if.end, %while.body, %entry, %while.end, %if.end74, %if.then62 - %retval.0 = phi i1 [ true, %if.then62 ], [ true, %if.end74 ], [ false, %while.end ], [ false, %entry ], [ false, %while.body ], [ false, %if.end ], [ false, %if.end38 ] +cleanup: ; preds = %if.end38, %if.end, %while.body, %cleanup.sink.split, %entry, %while.end + %retval.0 = phi i1 [ false, %while.end ], [ false, %entry ], [ true, %cleanup.sink.split ], [ false, %while.body ], [ false, %if.end ], [ false, %if.end38 ] ret i1 %retval.0 } diff --git a/bench/c3c/optimized/llvm_codegen_expr.c.ll b/bench/c3c/optimized/llvm_codegen_expr.c.ll index 5dfb06e938e..9170662632b 100644 --- a/bench/c3c/optimized/llvm_codegen_expr.c.ll +++ b/bench/c3c/optimized/llvm_codegen_expr.c.ll @@ -7046,7 +7046,7 @@ define dso_local void @llvm_emit_ignored_expr(ptr noundef %0, ptr noundef %1) lo %27 = load ptr, ptr %26, align 8 %28 = call ptr @LLVMGetFirstInstruction(ptr noundef %27) #10 %.not35 = icmp eq ptr %28, null - br i1 %.not35, label %29, label %72 + br i1 %.not35, label %29, label %71 29: ; preds = %25 %30 = load ptr, ptr %26, align 8 @@ -7107,59 +7107,56 @@ define dso_local void @llvm_emit_ignored_expr(ptr noundef %0, ptr noundef %1) lo call void @LLVMInstructionEraseFromParent(ptr noundef %35) #10 %53 = call ptr @LLVMGetFirstUse(ptr noundef %50) #10 %.not44.i = icmp eq ptr %53, null - br i1 %.not44.i, label %54, label %60 + br i1 %.not44.i, label %54, label %59 54: ; preds = %49 %55 = call i32 @LLVMGetInstructionOpcode(ptr noundef %50) #10 %56 = icmp eq i32 %55, 45 - br i1 %56, label %57, label %.thread.i - -.thread.i: ; preds = %54 - call void @LLVMInstructionEraseFromParent(ptr noundef %50) #10 - br label %60 + br i1 %56, label %57, label %.sink.split.i 57: ; preds = %54 %58 = call ptr @LLVMGetOperand(ptr noundef %50, i32 noundef 0) #10 call void @LLVMInstructionEraseFromParent(ptr noundef %50) #10 %.not45.i = icmp eq ptr %58, null - br i1 %.not45.i, label %60, label %59 + br i1 %.not45.i, label %59, label %.sink.split.i -59: ; preds = %57 - call void @LLVMInstructionEraseFromParent(ptr noundef nonnull %58) #10 - br label %60 +.sink.split.i: ; preds = %57, %54 + %.sink.i = phi ptr [ %50, %54 ], [ %58, %57 ] + call void @LLVMInstructionEraseFromParent(ptr noundef %.sink.i) #10 + br label %59 -60: ; preds = %59, %57, %.thread.i, %49 +59: ; preds = %.sink.split.i, %57, %49 store ptr %51, ptr %26, align 8 - %61 = getelementptr inbounds i8, ptr %0, i64 48 - %62 = load ptr, ptr %61, align 8 - %63 = call ptr @LLVMGetFirstBasicBlock(ptr noundef %62) #10 - %64 = icmp eq ptr %63, %51 - %65 = getelementptr inbounds i8, ptr %0, i64 424 - %66 = zext i1 %64 to i8 - %67 = load i8, ptr %65, align 8 - %68 = and i8 %67, -2 - %69 = or disjoint i8 %68, %66 - store i8 %69, ptr %65, align 8 - %70 = getelementptr inbounds i8, ptr %0, i64 64 - %71 = load ptr, ptr %70, align 8 - call void @LLVMPositionBuilderAtEnd(ptr noundef %71, ptr noundef %51) #10 + %60 = getelementptr inbounds i8, ptr %0, i64 48 + %61 = load ptr, ptr %60, align 8 + %62 = call ptr @LLVMGetFirstBasicBlock(ptr noundef %61) #10 + %63 = icmp eq ptr %62, %51 + %64 = getelementptr inbounds i8, ptr %0, i64 424 + %65 = zext i1 %63 to i8 + %66 = load i8, ptr %64, align 8 + %67 = and i8 %66, -2 + %68 = or disjoint i8 %67, %65 + store i8 %68, ptr %64, align 8 + %69 = getelementptr inbounds i8, ptr %0, i64 64 + %70 = load ptr, ptr %69, align 8 + call void @LLVMPositionBuilderAtEnd(ptr noundef %70, ptr noundef %51) #10 br label %llvm_prune_optional.exit -72: ; preds = %25 +71: ; preds = %25 call void @llvm_emit_br(ptr noundef nonnull %0, ptr noundef %19) #10 call void @llvm_emit_block(ptr noundef nonnull %0, ptr noundef %19) #10 br label %llvm_prune_optional.exit -llvm_prune_optional.exit: ; preds = %.lr.ph.i, %60, %47, %._crit_edge.i, %39, %37, %34, %29, %72 +llvm_prune_optional.exit: ; preds = %.lr.ph.i, %59, %47, %._crit_edge.i, %39, %37, %34, %29, %71 store ptr %16, ptr %15, align 8 store ptr %18, ptr %17, align 8 - br label %73 + br label %72 .critedge: ; preds = %2, %12 call void @llvm_emit_expr(ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %1) - br label %73 + br label %72 -73: ; preds = %.critedge, %llvm_prune_optional.exit +72: ; preds = %.critedge, %llvm_prune_optional.exit ret void } @@ -20405,8 +20402,7 @@ type_flatten.exit: ; preds = %.preheader %68 = call ptr @LLVMBuildCall2(ptr noundef %67, ptr noundef %66, ptr noundef %64, ptr noundef nonnull %5, i32 noundef 1, ptr noundef nonnull @.str.3) #10 %69 = load ptr, ptr %61, align 8 %70 = call ptr @LLVMBuildICmp(ptr noundef %69, i32 noundef 35, ptr noundef %68, ptr noundef %55, ptr noundef nonnull @.str.205) #10 - call void @llvm_emit_panic_on_true(ptr noundef %0, ptr noundef %70, ptr noundef nonnull @.str.206, i64 %3, ptr noundef nonnull @.str.194, ptr noundef nonnull %6, ptr noundef null) #10 - br label %142 + br label %.sink.split .critedge: ; preds = %51 %71 = load i32, ptr getelementptr inbounds (i8, ptr @intrinsic_id, i64 324), align 4 @@ -20445,8 +20441,7 @@ type_flatten.exit: ; preds = %.preheader %98 = call ptr @LLVMBuildCall2(ptr noundef %97, ptr noundef %96, ptr noundef %94, ptr noundef nonnull %5, i32 noundef 1, ptr noundef nonnull @.str.3) #10 %99 = load ptr, ptr %61, align 8 %100 = call ptr @LLVMBuildICmp(ptr noundef %99, i32 noundef 39, ptr noundef %98, ptr noundef %55, ptr noundef nonnull @.str.205) #10 - call void @llvm_emit_panic_on_true(ptr noundef nonnull %0, ptr noundef %100, ptr noundef nonnull @.str.206, i64 %3, ptr noundef nonnull @.str.194, ptr noundef nonnull %6, ptr noundef null) #10 - br label %142 + br label %.sink.split 101: ; preds = %22 %102 = call i32 @type_size(ptr noundef nonnull %10) #10 @@ -20479,8 +20474,7 @@ type_flatten.exit: ; preds = %.preheader %121 = getelementptr inbounds i8, ptr %0, i64 64 %122 = load ptr, ptr %121, align 8 %123 = call ptr @LLVMBuildICmp(ptr noundef %122, i32 noundef 35, ptr noundef %1, ptr noundef %117, ptr noundef nonnull @.str.205) #10 - call void @llvm_emit_panic_on_true(ptr noundef %0, ptr noundef %123, ptr noundef nonnull @.str.206, i64 %3, ptr noundef nonnull @.str.194, ptr noundef nonnull %6, ptr noundef null) #10 - br label %142 + br label %.sink.split .critedge2: ; preds = %113 %124 = call fastcc ptr @type_lowering(ptr noundef nonnull %10) @@ -20507,10 +20501,14 @@ type_flatten.exit: ; preds = %.preheader call void @llvm_emit_panic_on_true(ptr noundef %0, ptr noundef %139, ptr noundef nonnull @.str.206, i64 %3, ptr noundef nonnull @.str.194, ptr noundef nonnull %6, ptr noundef null) #10 %140 = load ptr, ptr %137, align 8 %141 = call ptr @LLVMBuildICmp(ptr noundef %140, i32 noundef 39, ptr noundef %1, ptr noundef %117, ptr noundef nonnull @.str.205) #10 - call void @llvm_emit_panic_on_true(ptr noundef %0, ptr noundef %141, ptr noundef nonnull @.str.206, i64 %3, ptr noundef nonnull @.str.194, ptr noundef nonnull %6, ptr noundef null) #10 + br label %.sink.split + +.sink.split: ; preds = %62, %85, %120, %132 + %.sink = phi ptr [ %141, %132 ], [ %123, %120 ], [ %100, %85 ], [ %70, %62 ] + call void @llvm_emit_panic_on_true(ptr noundef %0, ptr noundef %.sink, ptr noundef nonnull @.str.206, i64 %3, ptr noundef nonnull @.str.194, ptr noundef nonnull %6, ptr noundef null) #10 br label %142 -142: ; preds = %4, %132, %120, %85, %62 +142: ; preds = %.sink.split, %4 ret void } diff --git a/bench/c3c/optimized/sema_expr.c.ll b/bench/c3c/optimized/sema_expr.c.ll index 784fef93f71..78865b4b2f3 100644 --- a/bench/c3c/optimized/sema_expr.c.ll +++ b/bench/c3c/optimized/sema_expr.c.ll @@ -11266,8 +11266,7 @@ sema_find_cached_lambda.exit: ; preds = %144, %sema_may_reus %378 = getelementptr inbounds i8, ptr %377, i64 8 %379 = load ptr, ptr %378, align 8 tail call void @scratch_buffer_append(ptr noundef %379) #12 - tail call void @scratch_buffer_append(ptr noundef nonnull @.str.318) #12 - br label %399 + br label %.sink.split 380: ; preds = %._crit_edge %381 = load ptr, ptr %50, align 8 @@ -11283,16 +11282,14 @@ sema_find_cached_lambda.exit: ; preds = %144, %sema_may_reus tail call void @scratch_buffer_append(ptr noundef nonnull @.str.319) #12 %387 = load ptr, ptr %50, align 8 %388 = load ptr, ptr %387, align 8 - tail call void @scratch_buffer_append(ptr noundef %388) #12 - br label %399 + br label %.sink.split 389: ; preds = %380 %390 = getelementptr inbounds i8, ptr %0, i64 40 %391 = load ptr, ptr %390, align 8 %392 = getelementptr inbounds i8, ptr %391, i64 8 %393 = load ptr, ptr %392, align 8 - tail call void @scratch_buffer_append(ptr noundef %393) #12 - br label %399 + br label %.sink.split 394: ; preds = %._crit_edge %395 = load ptr, ptr %371, align 8 @@ -11300,10 +11297,14 @@ sema_find_cached_lambda.exit: ; preds = %144, %sema_may_reus %397 = getelementptr inbounds i8, ptr %396, i64 8 %398 = load ptr, ptr %397, align 8 tail call void @scratch_buffer_append(ptr noundef %398) #12 - tail call void @scratch_buffer_append(ptr noundef nonnull @.str.320) #12 + br label %.sink.split + +.sink.split: ; preds = %375, %394, %389, %382 + %.sink = phi ptr [ %388, %382 ], [ %393, %389 ], [ @.str.320, %394 ], [ @.str.318, %375 ] + tail call void @scratch_buffer_append(ptr noundef %.sink) #12 br label %399 -399: ; preds = %382, %389, %394, %375, %._crit_edge +399: ; preds = %.sink.split, %._crit_edge tail call void @scratch_buffer_append(ptr noundef nonnull @.str.321) #12 %400 = getelementptr inbounds i8, ptr %371, i64 216 %401 = load i32, ptr %400, align 8 diff --git a/bench/casadi/optimized/cs_compress.c.ll b/bench/casadi/optimized/cs_compress.c.ll index bfc87d1ba5b..d561fa8b1fd 100644 --- a/bench/casadi/optimized/cs_compress.c.ll +++ b/bench/casadi/optimized/cs_compress.c.ll @@ -6,13 +6,13 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nounwind uwtable define ptr @cs_compress(ptr noundef readonly %0) local_unnamed_addr #0 { %.not = icmp eq ptr %0, null - br i1 %.not, label %64, label %2 + br i1 %.not, label %62, label %2 2: ; preds = %1 %3 = getelementptr inbounds i8, ptr %0, i64 40 %4 = load i32, ptr %3, align 8 %5 = icmp sgt i32 %4, -1 - br i1 %5, label %6, label %64 + br i1 %5, label %6, label %62 6: ; preds = %2 %7 = getelementptr inbounds i8, ptr %0, i64 4 @@ -32,96 +32,93 @@ define ptr @cs_compress(ptr noundef readonly %0) local_unnamed_addr #0 { %21 = icmp ne ptr %19, null %22 = icmp ne ptr %20, null %or.cond = select i1 %21, i1 %22, i1 false - br i1 %or.cond, label %25, label %23 + br i1 %or.cond, label %23, label %.sink.split 23: ; preds = %6 - %24 = tail call ptr @cs_done(ptr noundef %19, ptr noundef %20, ptr noundef null, i32 noundef 0) #3 - br label %64 - -25: ; preds = %6 - %26 = getelementptr inbounds i8, ptr %19, i64 16 + %24 = getelementptr inbounds i8, ptr %19, i64 16 + %25 = load ptr, ptr %24, align 8 + %26 = getelementptr inbounds i8, ptr %19, i64 24 %27 = load ptr, ptr %26, align 8 - %28 = getelementptr inbounds i8, ptr %19, i64 24 + %28 = getelementptr inbounds i8, ptr %19, i64 32 %29 = load ptr, ptr %28, align 8 - %30 = getelementptr inbounds i8, ptr %19, i64 32 - %31 = load ptr, ptr %30, align 8 %.not58 = icmp eq i32 %4, 0 br i1 %.not58, label %._crit_edge.thread, label %.lr.ph.preheader -._crit_edge.thread: ; preds = %25 - %32 = tail call double @cs_cumsum(ptr noundef %27, ptr noundef nonnull %20, i32 noundef %10) #3 - br label %._crit_edge57 +._crit_edge.thread: ; preds = %23 + %30 = tail call double @cs_cumsum(ptr noundef %25, ptr noundef nonnull %20, i32 noundef %10) #3 + br label %.sink.split -.lr.ph.preheader: ; preds = %25 +.lr.ph.preheader: ; preds = %23 %wide.trip.count = zext nneg i32 %4 to i64 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] - %33 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv - %34 = load i32, ptr %33, align 4 - %35 = sext i32 %34 to i64 - %36 = getelementptr inbounds i32, ptr %20, i64 %35 - %37 = load i32, ptr %36, align 4 - %38 = add nsw i32 %37, 1 - store i32 %38, ptr %36, align 4 + %31 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv + %32 = load i32, ptr %31, align 4 + %33 = sext i32 %32 to i64 + %34 = getelementptr inbounds i32, ptr %20, i64 %33 + %35 = load i32, ptr %34, align 4 + %36 = add nsw i32 %35, 1 + store i32 %36, ptr %34, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !4 ._crit_edge: ; preds = %.lr.ph - %39 = tail call double @cs_cumsum(ptr noundef %27, ptr noundef nonnull %20, i32 noundef %10) #3 - %.not52 = icmp eq ptr %31, null + %37 = tail call double @cs_cumsum(ptr noundef %25, ptr noundef nonnull %20, i32 noundef %10) #3 + %.not52 = icmp eq ptr %29, null %smax70 = tail call i32 @llvm.smax.i32(i32 %4, i32 1) %wide.trip.count71 = zext nneg i32 %smax70 to i64 br i1 %.not52, label %.lr.ph56.split.us, label %.lr.ph56.split .lr.ph56.split.us: ; preds = %._crit_edge, %.lr.ph56.split.us %indvars.iv67 = phi i64 [ %indvars.iv.next68, %.lr.ph56.split.us ], [ 0, %._crit_edge ] - %40 = getelementptr inbounds i32, ptr %12, i64 %indvars.iv67 + %38 = getelementptr inbounds i32, ptr %12, i64 %indvars.iv67 + %39 = load i32, ptr %38, align 4 + %40 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv67 %41 = load i32, ptr %40, align 4 - %42 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv67 - %43 = load i32, ptr %42, align 4 - %44 = sext i32 %43 to i64 - %45 = getelementptr inbounds i32, ptr %20, i64 %44 - %46 = load i32, ptr %45, align 4 - %47 = add nsw i32 %46, 1 - store i32 %47, ptr %45, align 4 - %48 = sext i32 %46 to i64 - %49 = getelementptr inbounds i32, ptr %29, i64 %48 - store i32 %41, ptr %49, align 4 + %42 = sext i32 %41 to i64 + %43 = getelementptr inbounds i32, ptr %20, i64 %42 + %44 = load i32, ptr %43, align 4 + %45 = add nsw i32 %44, 1 + store i32 %45, ptr %43, align 4 + %46 = sext i32 %44 to i64 + %47 = getelementptr inbounds i32, ptr %27, i64 %46 + store i32 %39, ptr %47, align 4 %indvars.iv.next68 = add nuw nsw i64 %indvars.iv67, 1 %exitcond72.not = icmp eq i64 %indvars.iv.next68, %wide.trip.count71 - br i1 %exitcond72.not, label %._crit_edge57, label %.lr.ph56.split.us, !llvm.loop !6 + br i1 %exitcond72.not, label %.sink.split, label %.lr.ph56.split.us, !llvm.loop !6 .lr.ph56.split: ; preds = %._crit_edge, %.lr.ph56.split %indvars.iv62 = phi i64 [ %indvars.iv.next63, %.lr.ph56.split ], [ 0, %._crit_edge ] - %50 = getelementptr inbounds i32, ptr %12, i64 %indvars.iv62 + %48 = getelementptr inbounds i32, ptr %12, i64 %indvars.iv62 + %49 = load i32, ptr %48, align 4 + %50 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv62 %51 = load i32, ptr %50, align 4 - %52 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv62 - %53 = load i32, ptr %52, align 4 - %54 = sext i32 %53 to i64 - %55 = getelementptr inbounds i32, ptr %20, i64 %54 - %56 = load i32, ptr %55, align 4 - %57 = add nsw i32 %56, 1 - store i32 %57, ptr %55, align 4 - %58 = sext i32 %56 to i64 - %59 = getelementptr inbounds i32, ptr %29, i64 %58 - store i32 %51, ptr %59, align 4 - %60 = getelementptr inbounds double, ptr %16, i64 %indvars.iv62 - %61 = load double, ptr %60, align 8 - %62 = getelementptr inbounds double, ptr %31, i64 %58 - store double %61, ptr %62, align 8 + %52 = sext i32 %51 to i64 + %53 = getelementptr inbounds i32, ptr %20, i64 %52 + %54 = load i32, ptr %53, align 4 + %55 = add nsw i32 %54, 1 + store i32 %55, ptr %53, align 4 + %56 = sext i32 %54 to i64 + %57 = getelementptr inbounds i32, ptr %27, i64 %56 + store i32 %49, ptr %57, align 4 + %58 = getelementptr inbounds double, ptr %16, i64 %indvars.iv62 + %59 = load double, ptr %58, align 8 + %60 = getelementptr inbounds double, ptr %29, i64 %56 + store double %59, ptr %60, align 8 %indvars.iv.next63 = add nuw nsw i64 %indvars.iv62, 1 %exitcond66.not = icmp eq i64 %indvars.iv.next63, %wide.trip.count71 - br i1 %exitcond66.not, label %._crit_edge57, label %.lr.ph56.split, !llvm.loop !6 + br i1 %exitcond66.not, label %.sink.split, label %.lr.ph56.split, !llvm.loop !6 -._crit_edge57: ; preds = %.lr.ph56.split, %.lr.ph56.split.us, %._crit_edge.thread - %63 = tail call ptr @cs_done(ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef null, i32 noundef 1) #3 - br label %64 +.sink.split: ; preds = %.lr.ph56.split, %.lr.ph56.split.us, %._crit_edge.thread, %6 + %.sink = phi i32 [ 0, %6 ], [ 1, %._crit_edge.thread ], [ 1, %.lr.ph56.split.us ], [ 1, %.lr.ph56.split ] + %61 = tail call ptr @cs_done(ptr noundef %19, ptr noundef %20, ptr noundef null, i32 noundef %.sink) #3 + br label %62 -64: ; preds = %1, %2, %._crit_edge57, %23 - %.0 = phi ptr [ %63, %._crit_edge57 ], [ %24, %23 ], [ null, %2 ], [ null, %1 ] +62: ; preds = %.sink.split, %1, %2 + %.0 = phi ptr [ null, %2 ], [ null, %1 ], [ %61, %.sink.split ] ret ptr %.0 } diff --git a/bench/casadi/optimized/cs_post.c.ll b/bench/casadi/optimized/cs_post.c.ll index b1fba1c189c..8048d8a56c1 100644 --- a/bench/casadi/optimized/cs_post.c.ll +++ b/bench/casadi/optimized/cs_post.c.ll @@ -6,7 +6,7 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nounwind uwtable define ptr @cs_post(ptr noundef readonly %0, i32 noundef %1) local_unnamed_addr #0 { %.not = icmp eq ptr %0, null - br i1 %.not, label %42, label %3 + br i1 %.not, label %40, label %3 3: ; preds = %2 %4 = tail call ptr @cs_malloc(i32 noundef %1, i64 noundef 4) #3 @@ -15,82 +15,79 @@ define ptr @cs_post(ptr noundef readonly %0, i32 noundef %1) local_unnamed_addr %7 = icmp ne ptr %6, null %8 = icmp ne ptr %4, null %or.cond = select i1 %7, i1 %8, i1 false - br i1 %or.cond, label %11, label %9 + br i1 %or.cond, label %9, label %.sink.split 9: ; preds = %3 - %10 = tail call ptr @cs_idone(ptr noundef %4, ptr noundef null, ptr noundef %6, i32 noundef 0) #3 - br label %42 - -11: ; preds = %3 - %12 = sext i32 %1 to i64 - %13 = getelementptr inbounds i32, ptr %6, i64 %12 - %14 = shl nsw i32 %1, 1 - %15 = sext i32 %14 to i64 - %16 = getelementptr inbounds i32, ptr %6, i64 %15 - %17 = icmp sgt i32 %1, 0 - br i1 %17, label %.lr.ph58.preheader, label %._crit_edge - -.lr.ph58.preheader: ; preds = %11 + %10 = sext i32 %1 to i64 + %11 = getelementptr inbounds i32, ptr %6, i64 %10 + %12 = shl nsw i32 %1, 1 + %13 = sext i32 %12 to i64 + %14 = getelementptr inbounds i32, ptr %6, i64 %13 + %15 = icmp sgt i32 %1, 0 + br i1 %15, label %.lr.ph58.preheader, label %.sink.split + +.lr.ph58.preheader: ; preds = %9 + %16 = zext nneg i32 %1 to i64 + %17 = shl nuw nsw i64 %16, 2 + tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %6, i8 -1, i64 %17, i1 false) %18 = zext nneg i32 %1 to i64 - %19 = shl nuw nsw i64 %18, 2 - tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %6, i8 -1, i64 %19, i1 false) - %20 = zext nneg i32 %1 to i64 br label %.lr.ph58 -.lr.ph61.preheader: ; preds = %33 +.lr.ph61.preheader: ; preds = %31 %wide.trip.count = zext nneg i32 %1 to i64 br label %.lr.ph61 -.lr.ph58: ; preds = %.lr.ph58.preheader, %33 - %indvars.iv = phi i64 [ %20, %.lr.ph58.preheader ], [ %indvars.iv.next, %33 ] +.lr.ph58: ; preds = %.lr.ph58.preheader, %31 + %indvars.iv = phi i64 [ %18, %.lr.ph58.preheader ], [ %indvars.iv.next, %31 ] %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %21 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.next - %22 = load i32, ptr %21, align 4 - %23 = icmp eq i32 %22, -1 - br i1 %23, label %33, label %24 - -24: ; preds = %.lr.ph58 - %25 = sext i32 %22 to i64 - %26 = getelementptr inbounds i32, ptr %6, i64 %25 - %27 = load i32, ptr %26, align 4 - %28 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv.next - store i32 %27, ptr %28, align 4 - %29 = load i32, ptr %21, align 4 - %30 = sext i32 %29 to i64 - %31 = getelementptr inbounds i32, ptr %6, i64 %30 - %32 = trunc nuw nsw i64 %indvars.iv.next to i32 - store i32 %32, ptr %31, align 4 - br label %33 - -33: ; preds = %.lr.ph58, %24 - %34 = icmp ugt i64 %indvars.iv, 1 - br i1 %34, label %.lr.ph58, label %.lr.ph61.preheader, !llvm.loop !4 - -.lr.ph61: ; preds = %.lr.ph61.preheader, %40 - %indvars.iv64 = phi i64 [ 0, %.lr.ph61.preheader ], [ %indvars.iv.next65, %40 ] - %.04659 = phi i32 [ 0, %.lr.ph61.preheader ], [ %.147, %40 ] - %35 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv64 - %36 = load i32, ptr %35, align 4 - %.not53 = icmp eq i32 %36, -1 - br i1 %.not53, label %37, label %40 - -37: ; preds = %.lr.ph61 - %38 = trunc nuw nsw i64 %indvars.iv64 to i32 - %39 = tail call i32 @cs_tdfs(i32 noundef %38, i32 noundef %.04659, ptr noundef nonnull %6, ptr noundef nonnull %13, ptr noundef nonnull %4, ptr noundef nonnull %16) #3 - br label %40 - -40: ; preds = %.lr.ph61, %37 - %.147 = phi i32 [ %.04659, %.lr.ph61 ], [ %39, %37 ] + %19 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.next + %20 = load i32, ptr %19, align 4 + %21 = icmp eq i32 %20, -1 + br i1 %21, label %31, label %22 + +22: ; preds = %.lr.ph58 + %23 = sext i32 %20 to i64 + %24 = getelementptr inbounds i32, ptr %6, i64 %23 + %25 = load i32, ptr %24, align 4 + %26 = getelementptr inbounds i32, ptr %11, i64 %indvars.iv.next + store i32 %25, ptr %26, align 4 + %27 = load i32, ptr %19, align 4 + %28 = sext i32 %27 to i64 + %29 = getelementptr inbounds i32, ptr %6, i64 %28 + %30 = trunc nuw nsw i64 %indvars.iv.next to i32 + store i32 %30, ptr %29, align 4 + br label %31 + +31: ; preds = %.lr.ph58, %22 + %32 = icmp ugt i64 %indvars.iv, 1 + br i1 %32, label %.lr.ph58, label %.lr.ph61.preheader, !llvm.loop !4 + +.lr.ph61: ; preds = %.lr.ph61.preheader, %38 + %indvars.iv64 = phi i64 [ 0, %.lr.ph61.preheader ], [ %indvars.iv.next65, %38 ] + %.04659 = phi i32 [ 0, %.lr.ph61.preheader ], [ %.147, %38 ] + %33 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv64 + %34 = load i32, ptr %33, align 4 + %.not53 = icmp eq i32 %34, -1 + br i1 %.not53, label %35, label %38 + +35: ; preds = %.lr.ph61 + %36 = trunc nuw nsw i64 %indvars.iv64 to i32 + %37 = tail call i32 @cs_tdfs(i32 noundef %36, i32 noundef %.04659, ptr noundef nonnull %6, ptr noundef nonnull %11, ptr noundef nonnull %4, ptr noundef nonnull %14) #3 + br label %38 + +38: ; preds = %.lr.ph61, %35 + %.147 = phi i32 [ %.04659, %.lr.ph61 ], [ %37, %35 ] %indvars.iv.next65 = add nuw nsw i64 %indvars.iv64, 1 %exitcond.not = icmp eq i64 %indvars.iv.next65, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge, label %.lr.ph61, !llvm.loop !6 + br i1 %exitcond.not, label %.sink.split, label %.lr.ph61, !llvm.loop !6 -._crit_edge: ; preds = %40, %11 - %41 = tail call ptr @cs_idone(ptr noundef nonnull %4, ptr noundef null, ptr noundef nonnull %6, i32 noundef 1) #3 - br label %42 +.sink.split: ; preds = %38, %9, %3 + %.sink = phi i32 [ 0, %3 ], [ 1, %9 ], [ 1, %38 ] + %39 = tail call ptr @cs_idone(ptr noundef %4, ptr noundef null, ptr noundef %6, i32 noundef %.sink) #3 + br label %40 -42: ; preds = %2, %._crit_edge, %9 - %.0 = phi ptr [ %41, %._crit_edge ], [ %10, %9 ], [ null, %2 ] +40: ; preds = %.sink.split, %2 + %.0 = phi ptr [ null, %2 ], [ %39, %.sink.split ] ret ptr %.0 } diff --git a/bench/ceres/optimized/program.cc.ll b/bench/ceres/optimized/program.cc.ll index ae5a82506cb..e44265273ce 100644 --- a/bench/ceres/optimized/program.cc.ll +++ b/bench/ceres/optimized/program.cc.ll @@ -1785,7 +1785,7 @@ define hidden noundef zeroext i1 @_ZNK5ceres8internal7Program10IsFeasibleEPNSt7_ br i1 %.not68110, label %.loopexit70, label %.lr.ph113 .lr.ph113: ; preds = %.critedge, %.loopexit - %.sroa.065.0111 = phi ptr [ %77, %.loopexit ], [ %13, %.critedge ] + %.sroa.065.0111 = phi ptr [ %75, %.loopexit ], [ %13, %.critedge ] %16 = load ptr, ptr %.sroa.065.0111, align 8 %17 = load ptr, ptr %16, align 8 %18 = getelementptr inbounds i8, ptr %16, i64 8 @@ -1905,49 +1905,51 @@ _ZNK5ceres8internal14ParameterBlock22UpperBoundForParameterEi.exit: ; preds = %_ 67: ; preds = %_ZNK5ceres8internal14ParameterBlock22UpperBoundForParameterEi.exit %68 = trunc nuw nsw i64 %indvars.iv156 to i32 call void (ptr, ptr, ...) @_ZN5ceres8internal12StringPrintfB5cxx11EPKcz(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull @.str.9, ptr noundef nonnull %17, i32 noundef %19, i32 noundef %68, double noundef %.0.i, double noundef %64, double noundef %.0.i60) - %69 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %4) #26 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #26 - call void @_ZN5ceres8internal19AppendArrayToStringElPKdPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(i64 noundef %wide.trip.count159, ptr noundef nonnull %17, ptr noundef nonnull %1) - br label %.loopexit70 + br label %.loopexit70.sink.split _ZNK5ceres8internal14ParameterBlock10IsConstantEv.exit: ; preds = %_ZNK5ceres8internal14ParameterBlock22UpperBoundForParameterEi.exit %indvars.iv.next157 = add nuw nsw i64 %indvars.iv156, 1 %exitcond160.not = icmp eq i64 %indvars.iv.next157, %wide.trip.count159 br i1 %exitcond160.not, label %.loopexit, label %56, !llvm.loop !24 -_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62: ; preds = %.lr.ph.split, %76 - %indvars.iv = phi i64 [ %indvars.iv.next, %76 ], [ 0, %.lr.ph.split ] - %70 = getelementptr inbounds double, ptr %36, i64 %indvars.iv - %71 = load double, ptr %70, align 8 - %72 = getelementptr inbounds double, ptr %39, i64 %indvars.iv - %73 = load double, ptr %72, align 8 - %74 = fcmp ult double %71, %73 - br i1 %74, label %76, label %.split.us +_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62: ; preds = %.lr.ph.split, %74 + %indvars.iv = phi i64 [ %indvars.iv.next, %74 ], [ 0, %.lr.ph.split ] + %69 = getelementptr inbounds double, ptr %36, i64 %indvars.iv + %70 = load double, ptr %69, align 8 + %71 = getelementptr inbounds double, ptr %39, i64 %indvars.iv + %72 = load double, ptr %71, align 8 + %73 = fcmp ult double %70, %72 + br i1 %73, label %74, label %.split.us .split.us: ; preds = %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62.us86, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62.us %.pre-phi = phi i64 [ %wide.trip.count154, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62.us ], [ %wide.trip.count149, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62.us86 ], [ %wide.trip.count149, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62 ] - %.us-phi83 = phi double [ %42, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62.us ], [ 0x7FEFFFFFFFFFFFFF, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62.us86 ], [ %73, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62 ] - %.us-phi84 = phi double [ 0xFFEFFFFFFFFFFFFF, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62.us ], [ %46, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62.us86 ], [ %71, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62 ] + %.us-phi83 = phi double [ %42, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62.us ], [ 0x7FEFFFFFFFFFFFFF, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62.us86 ], [ %72, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62 ] + %.us-phi84 = phi double [ 0xFFEFFFFFFFFFFFFF, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62.us ], [ %46, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62.us86 ], [ %70, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62 ] %.us-phi85.in = phi i64 [ %indvars.iv151, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62.us ], [ %indvars.iv146, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62.us86 ], [ %indvars.iv, %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62 ] %.us-phi85 = trunc i64 %.us-phi85.in to i32 call void (ptr, ptr, ...) @_ZN5ceres8internal12StringPrintfB5cxx11EPKcz(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull @.str.10, ptr noundef %17, i32 noundef %19, i32 noundef %.us-phi85, double noundef %.us-phi84, double noundef %.us-phi83) - %75 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %5) #26 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #26 - call void @_ZN5ceres8internal19AppendArrayToStringElPKdPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(i64 noundef %.pre-phi, ptr noundef %17, ptr noundef nonnull %1) - br label %.loopexit70 + br label %.loopexit70.sink.split -76: ; preds = %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62 +74: ; preds = %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count149 br i1 %exitcond.not, label %.loopexit, label %_ZNK5ceres8internal14ParameterBlock22LowerBoundForParameterEi.exit62, !llvm.loop !23 -.loopexit: ; preds = %76, %48, %44, %_ZNK5ceres8internal14ParameterBlock10IsConstantEv.exit, %.lr.ph.split.us, %.preheader, %_ZNK5ceres8internal14ParameterBlock10IsConstantEv.exit.preheader - %77 = getelementptr inbounds i8, ptr %.sroa.065.0111, i64 8 - %.not68 = icmp eq ptr %77, %15 +.loopexit: ; preds = %74, %48, %44, %_ZNK5ceres8internal14ParameterBlock10IsConstantEv.exit, %.lr.ph.split.us, %.preheader, %_ZNK5ceres8internal14ParameterBlock10IsConstantEv.exit.preheader + %75 = getelementptr inbounds i8, ptr %.sroa.065.0111, i64 8 + %.not68 = icmp eq ptr %75, %15 br i1 %.not68, label %.loopexit70, label %.lr.ph113 -.loopexit70: ; preds = %.loopexit, %.critedge, %.split.us, %67 - %.not6875 = phi i1 [ false, %.split.us ], [ false, %67 ], [ true, %.critedge ], [ true, %.loopexit ] +.loopexit70.sink.split: ; preds = %67, %.split.us + %.sink222 = phi ptr [ %5, %.split.us ], [ %4, %67 ] + %.pre-phi.sink = phi i64 [ %.pre-phi, %.split.us ], [ %wide.trip.count159, %67 ] + %76 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %.sink222) #26 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink222) #26 + call void @_ZN5ceres8internal19AppendArrayToStringElPKdPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(i64 noundef %.pre-phi.sink, ptr noundef %17, ptr noundef nonnull %1) + br label %.loopexit70 + +.loopexit70: ; preds = %.loopexit, %.loopexit70.sink.split, %.critedge + %.not6875 = phi i1 [ true, %.critedge ], [ false, %.loopexit70.sink.split ], [ true, %.loopexit ] ret i1 %.not6875 } diff --git a/bench/ceres/optimized/reorder_program.cc.ll b/bench/ceres/optimized/reorder_program.cc.ll index a16d42499d8..aa6909b6712 100644 --- a/bench/ceres/optimized/reorder_program.cc.ll +++ b/bench/ceres/optimized/reorder_program.cc.ll @@ -7495,7 +7495,7 @@ _ZN5Eigen8internal14aligned_mallocEm.exit: ; preds = %8 .thread75: ; preds = %15 %17 = landingpad { ptr, i32 } cleanup - br label %384 + br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit140.sink.split .noexc: ; preds = %15 unreachable @@ -8030,7 +8030,7 @@ _ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIiLi1EiEEE13InnerIteratorC2ERKS 300: ; preds = %28 %301 = landingpad { ptr, i32 } cleanup - br i1 %7, label %384, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit140 + br i1 %7, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit140.sink.split, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit140 302: ; preds = %49, %32 %303 = phi i1 [ %46, %49 ], [ true, %32 ] @@ -8259,27 +8259,23 @@ _ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit: ; preds = %_ZN5Eig br i1 %54, label %381, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit140 _ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit138: ; preds = %.body - br i1 %54, label %.thread77, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit140 - -.thread77: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit138 - call void @free(ptr noundef nonnull %53) #27 - br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit140 + br i1 %54, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit140.sink.split, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit140 381: ; preds = %380, %302 %.pn.pn.pn76 = phi { ptr, i32 } [ %306, %302 ], [ %.pn.pn, %380 ] %382 = phi ptr [ %305, %302 ], [ %52, %380 ] %383 = phi ptr [ %304, %302 ], [ %53, %380 ] call void @free(ptr noundef nonnull %383) #27 - br i1 %7, label %384, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit140 + br i1 %7, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit140.sink.split, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit140 -384: ; preds = %.thread75, %381, %300 - %.pn.pn.pn.pn33 = phi { ptr, i32 } [ %301, %300 ], [ %.pn.pn.pn76, %381 ], [ %17, %.thread75 ] - %385 = phi ptr [ %25, %300 ], [ %382, %381 ], [ %9, %.thread75 ] - call void @free(ptr noundef %385) #27 +_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit140.sink.split: ; preds = %300, %381, %.thread75, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit138 + %.sink = phi ptr [ %53, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit138 ], [ %25, %300 ], [ %382, %381 ], [ %9, %.thread75 ] + %.pn.pn.pn.pn32.ph = phi { ptr, i32 } [ %.pn.pn, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit138 ], [ %301, %300 ], [ %.pn.pn.pn76, %381 ], [ %17, %.thread75 ] + call void @free(ptr noundef %.sink) #27 br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit140 -_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit140: ; preds = %.thread77, %380, %302, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit138, %381, %300, %384 - %.pn.pn.pn.pn32 = phi { ptr, i32 } [ %301, %300 ], [ %.pn.pn.pn.pn33, %384 ], [ %.pn.pn.pn76, %381 ], [ %.pn.pn, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit138 ], [ %306, %302 ], [ %.pn.pn, %380 ], [ %.pn.pn, %.thread77 ] +_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit140: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit140.sink.split, %380, %302, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit138, %381, %300 + %.pn.pn.pn.pn32 = phi { ptr, i32 } [ %301, %300 ], [ %.pn.pn.pn76, %381 ], [ %.pn.pn, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit138 ], [ %306, %302 ], [ %.pn.pn, %380 ], [ %.pn.pn.pn.pn32.ph, %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit140.sink.split ] resume { ptr, i32 } %.pn.pn.pn.pn32 } @@ -10648,7 +10644,7 @@ _ZN5Eigen8internal14aligned_mallocEm.exit: ; preds = %9 .thread255: ; preds = %16 %18 = landingpad { ptr, i32 } cleanup - br label %385 + br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178.sink.split .noexc: ; preds = %16 unreachable @@ -11183,7 +11179,7 @@ _ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIiLi0EiEEE13InnerIteratorC2ERKS 301: ; preds = %29 %302 = landingpad { ptr, i32 } cleanup - br i1 %8, label %385, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178 + br i1 %8, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178.sink.split, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178 303: ; preds = %50, %33 %304 = phi i1 [ %47, %50 ], [ true, %33 ] @@ -11412,27 +11408,23 @@ _ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit: ; preds = %_ZN5Eig br i1 %55, label %382, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178 _ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit176: ; preds = %.body - br i1 %55, label %.thread257, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178 - -.thread257: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit176 - call void @free(ptr noundef nonnull %54) #27 - br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178 + br i1 %55, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178.sink.split, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178 382: ; preds = %381, %303 %.pn.pn.pn256 = phi { ptr, i32 } [ %307, %303 ], [ %.pn.pn, %381 ] %383 = phi ptr [ %306, %303 ], [ %53, %381 ] %384 = phi ptr [ %305, %303 ], [ %54, %381 ] call void @free(ptr noundef nonnull %384) #27 - br i1 %8, label %385, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178 + br i1 %8, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178.sink.split, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178 -385: ; preds = %.thread255, %382, %301 - %.pn.pn.pn.pn213 = phi { ptr, i32 } [ %302, %301 ], [ %.pn.pn.pn256, %382 ], [ %18, %.thread255 ] - %386 = phi ptr [ %26, %301 ], [ %383, %382 ], [ %10, %.thread255 ] - call void @free(ptr noundef %386) #27 +_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178.sink.split: ; preds = %301, %382, %.thread255, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit176 + %.sink = phi ptr [ %54, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit176 ], [ %26, %301 ], [ %383, %382 ], [ %10, %.thread255 ] + %.pn.pn.pn.pn212.ph = phi { ptr, i32 } [ %.pn.pn, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit176 ], [ %302, %301 ], [ %.pn.pn.pn256, %382 ], [ %18, %.thread255 ] + call void @free(ptr noundef %.sink) #27 br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178 -_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178: ; preds = %.thread257, %381, %303, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit176, %382, %301, %385 - %.pn.pn.pn.pn212 = phi { ptr, i32 } [ %302, %301 ], [ %.pn.pn.pn.pn213, %385 ], [ %.pn.pn.pn256, %382 ], [ %.pn.pn, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit176 ], [ %307, %303 ], [ %.pn.pn, %381 ], [ %.pn.pn, %.thread257 ] +_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178.sink.split, %381, %303, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit176, %382, %301 + %.pn.pn.pn.pn212 = phi { ptr, i32 } [ %302, %301 ], [ %.pn.pn.pn256, %382 ], [ %.pn.pn, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit176 ], [ %307, %303 ], [ %.pn.pn, %381 ], [ %.pn.pn.pn.pn212.ph, %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178.sink.split ] resume { ptr, i32 } %.pn.pn.pn.pn212 } @@ -12417,7 +12409,7 @@ _ZN5Eigen8internal14aligned_mallocEm.exit: ; preds = %9 .thread255: ; preds = %16 %18 = landingpad { ptr, i32 } cleanup - br label %385 + br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178.sink.split .noexc: ; preds = %16 unreachable @@ -12952,7 +12944,7 @@ _ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIiLi1EiEEE13InnerIteratorC2ERKS 301: ; preds = %29 %302 = landingpad { ptr, i32 } cleanup - br i1 %8, label %385, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178 + br i1 %8, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178.sink.split, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178 303: ; preds = %50, %33 %304 = phi i1 [ %47, %50 ], [ true, %33 ] @@ -13181,27 +13173,23 @@ _ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit: ; preds = %_ZN5Eig br i1 %55, label %382, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178 _ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit176: ; preds = %.body - br i1 %55, label %.thread257, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178 - -.thread257: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit176 - call void @free(ptr noundef nonnull %54) #27 - br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178 + br i1 %55, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178.sink.split, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178 382: ; preds = %381, %303 %.pn.pn.pn256 = phi { ptr, i32 } [ %307, %303 ], [ %.pn.pn, %381 ] %383 = phi ptr [ %306, %303 ], [ %53, %381 ] %384 = phi ptr [ %305, %303 ], [ %54, %381 ] call void @free(ptr noundef nonnull %384) #27 - br i1 %8, label %385, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178 + br i1 %8, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178.sink.split, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178 -385: ; preds = %.thread255, %382, %301 - %.pn.pn.pn.pn213 = phi { ptr, i32 } [ %302, %301 ], [ %.pn.pn.pn256, %382 ], [ %18, %.thread255 ] - %386 = phi ptr [ %26, %301 ], [ %383, %382 ], [ %10, %.thread255 ] - call void @free(ptr noundef %386) #27 +_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178.sink.split: ; preds = %301, %382, %.thread255, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit176 + %.sink = phi ptr [ %54, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit176 ], [ %26, %301 ], [ %383, %382 ], [ %10, %.thread255 ] + %.pn.pn.pn.pn212.ph = phi { ptr, i32 } [ %.pn.pn, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit176 ], [ %302, %301 ], [ %.pn.pn.pn256, %382 ], [ %18, %.thread255 ] + call void @free(ptr noundef %.sink) #27 br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178 -_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178: ; preds = %.thread257, %381, %303, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit176, %382, %301, %385 - %.pn.pn.pn.pn212 = phi { ptr, i32 } [ %302, %301 ], [ %.pn.pn.pn.pn213, %385 ], [ %.pn.pn.pn256, %382 ], [ %.pn.pn, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit176 ], [ %307, %303 ], [ %.pn.pn, %381 ], [ %.pn.pn, %.thread257 ] +_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178.sink.split, %381, %303, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit176, %382, %301 + %.pn.pn.pn.pn212 = phi { ptr, i32 } [ %302, %301 ], [ %.pn.pn.pn256, %382 ], [ %.pn.pn, %_ZN5Eigen8internal28aligned_stack_memory_handlerIlED2Ev.exit176 ], [ %307, %303 ], [ %.pn.pn, %381 ], [ %.pn.pn.pn.pn212.ph, %_ZN5Eigen8internal28aligned_stack_memory_handlerIbED2Ev.exit178.sink.split ] resume { ptr, i32 } %.pn.pn.pn.pn212 } diff --git a/bench/chibicc/optimized/main.ll b/bench/chibicc/optimized/main.ll index 8969741911b..3aa79f159d9 100644 --- a/bench/chibicc/optimized/main.ll +++ b/bench/chibicc/optimized/main.ll @@ -1051,11 +1051,7 @@ open_file.exit.i.i: ; preds = %if.end.i.i.i, %if.t %retval.0.i.i.i = phi ptr [ %97, %if.then.i29.i.i ], [ %call1.i28.i.i, %if.end.i.i.i ] %99 = load ptr, ptr @opt_MT, align 8 %tobool11.not.i.i = icmp eq ptr %99, null - br i1 %tobool11.not.i.i, label %if.else14.i.i, label %if.then12.i.i - -if.then12.i.i: ; preds = %open_file.exit.i.i - %call13.i.i = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %retval.0.i.i.i, ptr noundef nonnull @.str.70, ptr noundef nonnull %99) - br label %if.end18.i.i + br i1 %tobool11.not.i.i, label %if.else14.i.i, label %if.end18.i.i if.else14.i.i: ; preds = %open_file.exit.i.i %100 = load ptr, ptr @base_file, align 8 @@ -1072,10 +1068,11 @@ if.then.i34.i.i: ; preds = %if.else14.i.i replace_extn.exit37.i.i: ; preds = %if.then.i34.i.i, %if.else14.i.i %call3.i36.i.i = call ptr (ptr, ...) @format(ptr noundef nonnull @.str.79, ptr noundef %call1.i31.i.i, ptr noundef nonnull @.str.5) #19 %call16.i.i = call fastcc ptr @quote_makefile(ptr noundef %call3.i36.i.i) - %call17.i.i = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %retval.0.i.i.i, ptr noundef nonnull @.str.70, ptr noundef %call16.i.i) br label %if.end18.i.i -if.end18.i.i: ; preds = %replace_extn.exit37.i.i, %if.then12.i.i +if.end18.i.i: ; preds = %replace_extn.exit37.i.i, %open_file.exit.i.i + %call16.sink.i.i = phi ptr [ %call16.i.i, %replace_extn.exit37.i.i ], [ %99, %open_file.exit.i.i ] + %call17.i.i = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %retval.0.i.i.i, ptr noundef nonnull @.str.70, ptr noundef %call16.sink.i.i) %call19.i.i = call ptr @get_input_files() #19 %101 = load ptr, ptr %call19.i.i, align 8 %tobool20.not64.i.i = icmp eq ptr %101, null diff --git a/bench/clamav/optimized/mpool.c.ll b/bench/clamav/optimized/mpool.c.ll index c6fb21bb765..e2eeb78d13c 100644 --- a/bench/clamav/optimized/mpool.c.ll +++ b/bench/clamav/optimized/mpool.c.ll @@ -824,40 +824,39 @@ define ptr @cli_mpool_virname(ptr noundef %0, ptr noundef %1, i32 noundef %2) lo 12: ; preds = %9 %.not21 = icmp eq i32 %2, 0 - br i1 %.not21, label %19, label %13 + %13 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #11 + br i1 %.not21, label %19, label %14 -13: ; preds = %12 - %14 = tail call i64 @strlen(ptr noundef nonnull readonly dereferenceable(1) %1) #11 - %15 = add i64 %14, 1 +14: ; preds = %12 + %15 = add i64 %13, 1 %16 = tail call ptr @mpool_malloc(ptr noundef %0, i64 noundef %15) %.not.i = icmp eq ptr %16, null br i1 %.not.i, label %17, label %18 -17: ; preds = %13 +17: ; preds = %14 tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.16, i64 noundef %15) #10 br label %cli_mpool_strdup.exit -18: ; preds = %13 +18: ; preds = %14 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %16, ptr nonnull readonly align 1 %1, i64 %15, i1 false) br label %cli_mpool_strdup.exit 19: ; preds = %12 - %20 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #11 - %21 = add i64 %20, 12 - %22 = tail call ptr @mpool_malloc(ptr noundef %0, i64 noundef %21) - %.not22 = icmp eq ptr %22, null - br i1 %.not22, label %23, label %24 + %20 = add i64 %13, 12 + %21 = tail call ptr @mpool_malloc(ptr noundef %0, i64 noundef %20) + %.not22 = icmp eq ptr %21, null + br i1 %.not22, label %22, label %23 -23: ; preds = %19 +22: ; preds = %19 tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.21) #10 br label %cli_mpool_strdup.exit -24: ; preds = %19 - %25 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) @.str.22, ptr noundef nonnull %1) #10 +23: ; preds = %19 + %24 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %21, ptr noundef nonnull dereferenceable(1) @.str.22, ptr noundef nonnull %1) #10 br label %cli_mpool_strdup.exit -cli_mpool_strdup.exit: ; preds = %18, %17, %3, %24, %23, %11 - %.0 = phi ptr [ %22, %24 ], [ null, %23 ], [ null, %11 ], [ null, %3 ], [ %16, %18 ], [ null, %17 ] +cli_mpool_strdup.exit: ; preds = %18, %17, %3, %23, %22, %11 + %.0 = phi ptr [ %21, %23 ], [ null, %22 ], [ null, %11 ], [ null, %3 ], [ %16, %18 ], [ null, %17 ] ret ptr %.0 } diff --git a/bench/clamav/optimized/others.c.ll b/bench/clamav/optimized/others.c.ll index 46632257d8e..b958597b45a 100644 --- a/bench/clamav/optimized/others.c.ll +++ b/bench/clamav/optimized/others.c.ll @@ -2723,7 +2723,7 @@ define range(i32 0, 35) i32 @cli_append_virus(ptr noundef %0, ptr noundef %1) lo 8: ; preds = %5 %9 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %1, ptr noundef nonnull dereferenceable(15) @.str.80, i64 noundef 14) #28 %10 = icmp eq i32 %9, 0 - br i1 %10, label %11, label %17 + br i1 %10, label %11, label %16 11: ; preds = %8, %5, %2 %12 = getelementptr inbounds i8, ptr %0, i64 64 @@ -2732,16 +2732,12 @@ define range(i32 0, 35) i32 @cli_append_virus(ptr noundef %0, ptr noundef %1) lo %15 = lshr i32 %14, 3 %.lobit.i = and i32 %15, 1 %..i = xor i32 %.lobit.i, 1 - %16 = tail call fastcc range(i32 0, 35) i32 @append_virus(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %..i) - br label %19 - -17: ; preds = %8 - %18 = tail call fastcc i32 @append_virus(ptr noundef %0, ptr noundef %1, i32 noundef 0) - br label %19 + br label %16 -19: ; preds = %17, %11 - %.0 = phi i32 [ %16, %11 ], [ %18, %17 ] - ret i32 %.0 +16: ; preds = %8, %11 + %.sink = phi i32 [ %..i, %11 ], [ 0, %8 ] + %17 = tail call fastcc i32 @append_virus(ptr noundef %0, ptr noundef %1, i32 noundef %.sink) + ret i32 %17 } ; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read) diff --git a/bench/clamav/optimized/pe.c.ll b/bench/clamav/optimized/pe.c.ll index 99a8b13e38b..5ca5f010a23 100644 --- a/bench/clamav/optimized/pe.c.ll +++ b/bench/clamav/optimized/pe.c.ll @@ -1652,7 +1652,7 @@ get_pe_property.exit: ; preds = %26, %31, %36 %135 = call fastcc i32 @cli_hashsect(ptr noundef %134, ptr noundef nonnull readonly %89, ptr noundef %2, ptr noundef %4, ptr noundef %5) %136 = load i8, ptr @cli_debug_flag, align 1 %.not.i2812 = icmp eq i8 %136, 0 - br i1 %.not.i2812, label %.preheader3258, label %137 + br i1 %.not.i2812, label %.preheader3261, label %137 137: ; preds = %133 %138 = load ptr, ptr %2, align 16 @@ -1709,7 +1709,7 @@ get_pe_property.exit: ; preds = %26, %31, %36 %186 = load i8, ptr %185, align 1 %187 = zext i8 %186 to i32 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.340, i32 noundef %140, i32 noundef %142, i32 noundef %145, i32 noundef %148, i32 noundef %151, i32 noundef %154, i32 noundef %157, i32 noundef %160, i32 noundef %163, i32 noundef %166, i32 noundef %169, i32 noundef %172, i32 noundef %175, i32 noundef %178, i32 noundef %181, i32 noundef %184, i32 noundef %187) #20 - br label %.preheader3258 + br label %.preheader3261 188: ; preds = %137 %189 = load i8, ptr @cli_always_gen_section_hash, align 1 @@ -1788,18 +1788,18 @@ get_pe_property.exit: ; preds = %26, %31, %36 %253 = zext i8 %252 to i32 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.343, i32 noundef %206, i32 noundef %208, i32 noundef %211, i32 noundef %214, i32 noundef %217, i32 noundef %220, i32 noundef %223, i32 noundef %226, i32 noundef %229, i32 noundef %232, i32 noundef %235, i32 noundef %238, i32 noundef %241, i32 noundef %244, i32 noundef %247, i32 noundef %250, i32 noundef %253) #20 call void @free(ptr noundef nonnull %201) #20 - br label %.preheader3258 + br label %.preheader3261 254: ; preds = %188 %255 = load i32, ptr %90, align 4 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.344, i32 noundef %255) #20 - br label %.preheader3258 + br label %.preheader3261 -.preheader3258: ; preds = %254, %202, %139, %133 +.preheader3261: ; preds = %254, %202, %139, %133 br label %256 -256: ; preds = %.preheader3258, %281 - %indvars.iv123.i = phi i64 [ %indvars.iv.next124.i, %281 ], [ 0, %.preheader3258 ] +256: ; preds = %.preheader3261, %281 + %indvars.iv123.i = phi i64 [ %indvars.iv.next124.i, %281 ], [ 0, %.preheader3261 ] %257 = getelementptr inbounds [3 x i32], ptr %4, i64 0, i64 %indvars.iv123.i %258 = load i32, ptr %257, align 4 %.not99.i = icmp eq i32 %258, 0 @@ -4073,8 +4073,7 @@ fmap_readn.exit: ; preds = %305, %293 1391: ; preds = %1385 %1392 = load ptr, ptr %8, align 8 - call void @free(ptr noundef %1392) #20 - br label %2115 + br label %.sink.split 1393: ; preds = %1348 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.73) #20 @@ -4491,8 +4490,7 @@ cli_rawaddr.exit: ; preds = %1429 1602: ; preds = %1596 %1603 = load ptr, ptr %8, align 8 call void @free(ptr noundef %1603) #20 - call void @free(ptr noundef nonnull %1505) #20 - br label %2115 + br label %.sink.split 1604: ; preds = %1557 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.73) #20 @@ -4952,8 +4950,7 @@ cli_rawaddr.exit2823: ; preds = %1640 1850: ; preds = %1844 %1851 = load ptr, ptr %8, align 8 call void @free(ptr noundef %1851) #20 - call void @free(ptr noundef nonnull %1734) #20 - br label %2115 + br label %.sink.split 1852: ; preds = %1805 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.73) #20 @@ -5388,8 +5385,14 @@ cli_rawaddr.exit2823: ; preds = %1640 call void @free(ptr noundef nonnull %1905) #20 br label %.critedge109 -2115: ; preds = %2113, %1850, %1602, %1391 - %.42090.ph = phi ptr [ %1331, %1391 ], [ %1534, %1602 ], [ %1774, %1850 ], [ %1905, %2113 ] +.sink.split: ; preds = %1391, %1602, %1850 + %.sink = phi ptr [ %1734, %1850 ], [ %1505, %1602 ], [ %1392, %1391 ] + %.42090.ph.ph = phi ptr [ %1774, %1850 ], [ %1534, %1602 ], [ %1331, %1391 ] + call void @free(ptr noundef %.sink) #20 + br label %2115 + +2115: ; preds = %.sink.split, %2113 + %.42090.ph = phi ptr [ %1905, %2113 ], [ %.42090.ph.ph, %.sink.split ] call void @cli_exe_info_destroy(ptr noundef nonnull %13) #20 %2116 = getelementptr inbounds i8, ptr %0, i64 16 %2117 = load ptr, ptr %2116, align 8 @@ -6032,7 +6035,7 @@ cli_rawaddr.exit2823: ; preds = %1640 2429: ; preds = %2423 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.124) #20 - br label %.sink.split + br label %.sink.split3225 2430: ; preds = %2390 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.125) #20 @@ -6051,14 +6054,14 @@ cli_rawaddr.exit2823: ; preds = %1640 2436: ; preds = %2430 call void (ptr, ...) @cli_multifree(ptr noundef nonnull %2370, i32 noundef 0) - br label %.sink.split + br label %.sink.split3225 -.sink.split: ; preds = %2436, %2429 +.sink.split3225: ; preds = %2436, %2429 %2437 = load ptr, ptr %8, align 8 call void @free(ptr noundef %2437) #20 br label %2438 -2438: ; preds = %.sink.split, %2363, %2356, %2347, %2344, %.thread2889 +2438: ; preds = %.sink.split3225, %2363, %2356, %2347, %2344, %.thread2889 %2439 = load ptr, ptr %355, align 8 %2440 = load i32, ptr %2439, align 4 %2441 = and i32 %2440, 1024 @@ -6735,8 +6738,8 @@ cli_rawaddr.exit2823: ; preds = %1640 br label %.critedge170.sink.split .critedge170.sink.split: ; preds = %2777, %2693 - %.sink = phi ptr [ %2650, %2693 ], [ %2778, %2777 ] - call void @free(ptr noundef %.sink) #20 + %.sink3227 = phi ptr [ %2650, %2693 ], [ %2778, %2777 ] + call void @free(ptr noundef %.sink3227) #20 br label %.critedge170 .critedge170: ; preds = %.critedge170.sink.split, %2624, %._crit_edge3055, %.thread2908, %2609, %2612, %2622 @@ -7026,8 +7029,8 @@ cli_rawaddr.exit2823: ; preds = %1640 br label %.critedge174.sink.split .critedge174.sink.split: ; preds = %2906, %2852 - %.sink3225 = phi ptr [ %2817, %2852 ], [ %2907, %2906 ] - call void @free(ptr noundef %.sink3225) #20 + %.sink3228 = phi ptr [ %2817, %2852 ], [ %2907, %2906 ] + call void @free(ptr noundef %.sink3228) #20 br label %.critedge174 .critedge174: ; preds = %.critedge174.sink.split, %2803, %2782, %2800, %._crit_edge3072, %.critedge170 diff --git a/bench/clamav/optimized/readdb.c.ll b/bench/clamav/optimized/readdb.c.ll index 819219decca..5e53b5b1a7b 100644 --- a/bench/clamav/optimized/readdb.c.ll +++ b/bench/clamav/optimized/readdb.c.ll @@ -3567,8 +3567,7 @@ define internal fastcc i32 @cli_loadyara(ptr noundef %0, ptr nocapture noundef % 114: ; preds = %111 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.165, ptr noundef nonnull %106) #21 - call void @free(ptr noundef nonnull %106) #21 - br label %load_oneyara.exit.thread147 + br label %load_oneyara.exit.thread147.sink.split 115: ; preds = %111, %108 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %6, i8 0, i64 16, i1 false) @@ -4162,8 +4161,7 @@ yara_hexstr_verify.exit.thread353.i: ; preds = %246 %358 = add i32 %357, 1 store i32 %358, ptr @yara_malform, align 4 call fastcc void @ytable_delete(ptr noundef %6) - call void @free(ptr noundef %106) #21 - br label %load_oneyara.exit.thread147 + br label %load_oneyara.exit.thread147.sink.split 359: ; preds = %.loopexit.thread.i %360 = icmp sgt i32 %.pre, 64 @@ -4175,8 +4173,7 @@ yara_hexstr_verify.exit.thread353.i: ; preds = %246 %363 = add i32 %362, 1 store i32 %363, ptr @yara_malform, align 4 call fastcc void @ytable_delete(ptr noundef %6) - call void @free(ptr noundef %106) #21 - br label %load_oneyara.exit.thread147 + br label %load_oneyara.exit.thread147.sink.split 364: ; preds = %359 %365 = call ptr @cli_safer_strdup(ptr noundef nonnull @.str.201) #21 @@ -4581,9 +4578,8 @@ yara_hexstr_verify.exit.thread353.i: ; preds = %246 %556 = load i32, ptr @yara_loaded, align 4 %557 = add i32 %556, 1 store i32 %557, ptr @yara_loaded, align 4 - call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.209, ptr noundef %106) #21 - call void @free(ptr noundef %106) #21 - br label %load_oneyara.exit.thread147 + call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.209, ptr noundef nonnull %106) #21 + br label %load_oneyara.exit.thread147.sink.split load_oneyara.exit.thread: ; preds = %460, %547, %493, %434, %397, %220, %231, %209, %204, %189, %107, %367 %.1.ph = phi i32 [ %89, %204 ], [ %89, %231 ], [ %89, %220 ], [ %89, %209 ], [ %89, %189 ], [ %.081, %367 ], [ %89, %547 ], [ %89, %493 ], [ %89, %460 ], [ %89, %434 ], [ %89, %397 ], [ %89, %107 ] @@ -4593,8 +4589,13 @@ load_oneyara.exit.thread: ; preds = %460, %547, %493, %4 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) br label %558 -load_oneyara.exit.thread147: ; preds = %.loopexit.thread.i.thread, %361, %551, %114, %99, %93, %367 - %.1.ph146 = phi i32 [ %.081, %367 ], [ %89, %93 ], [ %89, %99 ], [ %.081, %114 ], [ %89, %551 ], [ %.081, %361 ], [ %.081, %.loopexit.thread.i.thread ] +load_oneyara.exit.thread147.sink.split: ; preds = %114, %551, %361, %.loopexit.thread.i.thread + %.1.ph146.ph = phi i32 [ %.081, %.loopexit.thread.i.thread ], [ %.081, %361 ], [ %89, %551 ], [ %.081, %114 ] + call void @free(ptr noundef %106) #21 + br label %load_oneyara.exit.thread147 + +load_oneyara.exit.thread147: ; preds = %load_oneyara.exit.thread147.sink.split, %99, %93, %367 + %.1.ph146 = phi i32 [ %.081, %367 ], [ %89, %93 ], [ %89, %99 ], [ %.1.ph146.ph, %load_oneyara.exit.thread147.sink.split ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %7) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) diff --git a/bench/cmake/optimized/cmELF.cxx.ll b/bench/cmake/optimized/cmELF.cxx.ll index 93efbc4f7fb..a87084f00ed 100644 --- a/bench/cmake/optimized/cmELF.cxx.ll +++ b/bench/cmake/optimized/cmELF.cxx.ll @@ -266,7 +266,7 @@ define dso_local void @_ZN5cmELFC2EPKc(ptr noundef nonnull align 8 dereferenceab cleanup br label %.body -23: ; preds = %.invoke, %76, %66, %40, %38, %31, %29, %14 +23: ; preds = %.invoke, %73, %66, %40, %38, %31, %29, %14 %24 = landingpad { ptr, i32 } cleanup %25 = load ptr, ptr %3, align 8 @@ -349,7 +349,7 @@ _ZNSt10unique_ptrISt14basic_ifstreamIcSt11char_traitsIcEESt14default_deleteIS3_E %65 = load i8, ptr %64, align 4 switch i8 %65, label %.invoke [ i8 1, label %66 - i8 2, label %76 + i8 2, label %73 ] 66: ; preds = %63 @@ -372,81 +372,76 @@ _ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI call void %72(ptr noundef nonnull align 8 dereferenceable(88) %69) #18 %.pr = load ptr, ptr %6, align 8 %.not.i17 = icmp eq ptr %.pr, null - br i1 %.not.i17, label %.sink.split, label %_ZNKSt14default_deleteI17cmELFInternalImplI12cmELFTypes32EEclEPS2_.exit.i + br i1 %.not.i17, label %.sink.split, label %.sink.split.sink.split -_ZNKSt14default_deleteI17cmELFInternalImplI12cmELFTypes32EEclEPS2_.exit.i: ; preds = %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes32ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit - %73 = load ptr, ptr %.pr, align 8 - %74 = getelementptr inbounds i8, ptr %73, i64 8 - %75 = load ptr, ptr %74, align 8 - call void %75(ptr noundef nonnull align 8 dereferenceable(192) %.pr) #18 - br label %.sink.split - -76: ; preds = %63 +73: ; preds = %63 store ptr %0, ptr %9, align 8 invoke void @_ZSt11make_uniqueI17cmELFInternalImplI12cmELFTypes64EJP5cmELFSt10unique_ptrISt14basic_ifstreamIcSt11char_traitsIcEESt14default_deleteIS9_EERN13cmELFInternal13ByteOrderTypeEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.19") align 8 %8, ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 4 dereferenceable(4) %5) - to label %77 unwind label %23 + to label %74 unwind label %23 -77: ; preds = %76 - %78 = load ptr, ptr %8, align 8 +74: ; preds = %73 + %75 = load ptr, ptr %8, align 8 store ptr null, ptr %8, align 8 - %79 = load ptr, ptr %0, align 8 - store ptr %78, ptr %0, align 8 - %.not.i.i.i18 = icmp eq ptr %79, null + %76 = load ptr, ptr %0, align 8 + store ptr %75, ptr %0, align 8 + %.not.i.i.i18 = icmp eq ptr %76, null br i1 %.not.i.i.i18, label %.sink.split, label %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes64ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit -_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes64ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit: ; preds = %77 - %80 = load ptr, ptr %79, align 8 - %81 = getelementptr inbounds i8, ptr %80, i64 8 - %82 = load ptr, ptr %81, align 8 - call void %82(ptr noundef nonnull align 8 dereferenceable(88) %79) #18 +_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes64ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit: ; preds = %74 + %77 = load ptr, ptr %76, align 8 + %78 = getelementptr inbounds i8, ptr %77, i64 8 + %79 = load ptr, ptr %78, align 8 + call void %79(ptr noundef nonnull align 8 dereferenceable(88) %76) #18 %.pr26 = load ptr, ptr %8, align 8 %.not.i20 = icmp eq ptr %.pr26, null - br i1 %.not.i20, label %.sink.split, label %_ZNKSt14default_deleteI17cmELFInternalImplI12cmELFTypes64EEclEPS2_.exit.i - -_ZNKSt14default_deleteI17cmELFInternalImplI12cmELFTypes64EEclEPS2_.exit.i: ; preds = %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes64ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit - %83 = load ptr, ptr %.pr26, align 8 - %84 = getelementptr inbounds i8, ptr %83, i64 8 - %85 = load ptr, ptr %84, align 8 - call void %85(ptr noundef nonnull align 8 dereferenceable(200) %.pr26) #18 - br label %.sink.split + br i1 %.not.i20, label %.sink.split, label %.sink.split.sink.split .invoke: ; preds = %20, %63, %59, %47, %46, %37 - %86 = phi ptr [ @.str.1, %37 ], [ @.str.2, %46 ], [ @.str.3, %47 ], [ @.str.4, %59 ], [ @.str.5, %63 ], [ @.str, %20 ] - %87 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull %86) - to label %88 unwind label %23 + %80 = phi ptr [ @.str.1, %37 ], [ @.str.2, %46 ], [ @.str.3, %47 ], [ @.str.4, %59 ], [ @.str.5, %63 ], [ @.str, %20 ] + %81 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull %80) + to label %85 unwind label %23 + +.sink.split.sink.split: ; preds = %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes64ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit, %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes32ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit + %.pr26.sink31 = phi ptr [ %.pr, %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes32ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit ], [ %.pr26, %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes64ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit ] + %.sink.ph = phi ptr [ %6, %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes32ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit ], [ %8, %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes64ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit ] + %82 = load ptr, ptr %.pr26.sink31, align 8 + %83 = getelementptr inbounds i8, ptr %82, i64 8 + %84 = load ptr, ptr %83, align 8 + call void %84(ptr noundef nonnull align 8 dereferenceable(192) %.pr26.sink31) #18 + br label %.sink.split -.sink.split: ; preds = %_ZNKSt14default_deleteI17cmELFInternalImplI12cmELFTypes64EEclEPS2_.exit.i, %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes64ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit, %77, %_ZNKSt14default_deleteI17cmELFInternalImplI12cmELFTypes32EEclEPS2_.exit.i, %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes32ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit, %67 - %.sink = phi ptr [ %6, %67 ], [ %6, %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes32ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit ], [ %6, %_ZNKSt14default_deleteI17cmELFInternalImplI12cmELFTypes32EEclEPS2_.exit.i ], [ %8, %77 ], [ %8, %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes64ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit ], [ %8, %_ZNKSt14default_deleteI17cmELFInternalImplI12cmELFTypes64EEclEPS2_.exit.i ] +.sink.split: ; preds = %.sink.split.sink.split, %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes64ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit, %74, %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes32ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit, %67 + %.sink = phi ptr [ %6, %67 ], [ %6, %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes32ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit ], [ %8, %74 ], [ %8, %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EEaSI17cmELFInternalImplI12cmELFTypes64ES1_IS7_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS0_ESt6__not_ISt8is_arrayISC_EEEESt13is_assignableIRS2_OSD_EEE5valueERS3_E4typeEOSE_.exit ], [ %.sink.ph, %.sink.split.sink.split ] store ptr null, ptr %.sink, align 8 - br label %88 + br label %85 -88: ; preds = %.sink.split, %.invoke - %89 = load ptr, ptr %3, align 8 - %.not.i21 = icmp eq ptr %89, null +85: ; preds = %.sink.split, %.invoke + %86 = load ptr, ptr %3, align 8 + %.not.i21 = icmp eq ptr %86, null br i1 %.not.i21, label %_ZNSt10unique_ptrISt14basic_ifstreamIcSt11char_traitsIcEESt14default_deleteIS3_EED2Ev.exit23, label %_ZNKSt14default_deleteISt14basic_ifstreamIcSt11char_traitsIcEEEclEPS3_.exit.i22 -_ZNKSt14default_deleteISt14basic_ifstreamIcSt11char_traitsIcEEEclEPS3_.exit.i22: ; preds = %88 - %90 = load ptr, ptr %89, align 8 - %91 = getelementptr inbounds i8, ptr %90, i64 8 - %92 = load ptr, ptr %91, align 8 - call void %92(ptr noundef nonnull align 8 dereferenceable(256) %89) #18 +_ZNKSt14default_deleteISt14basic_ifstreamIcSt11char_traitsIcEEEclEPS3_.exit.i22: ; preds = %85 + %87 = load ptr, ptr %86, align 8 + %88 = getelementptr inbounds i8, ptr %87, i64 8 + %89 = load ptr, ptr %88, align 8 + call void %89(ptr noundef nonnull align 8 dereferenceable(256) %86) #18 br label %_ZNSt10unique_ptrISt14basic_ifstreamIcSt11char_traitsIcEESt14default_deleteIS3_EED2Ev.exit23 -_ZNSt10unique_ptrISt14basic_ifstreamIcSt11char_traitsIcEESt14default_deleteIS3_EED2Ev.exit23: ; preds = %88, %_ZNKSt14default_deleteISt14basic_ifstreamIcSt11char_traitsIcEEEclEPS3_.exit.i22 +_ZNSt10unique_ptrISt14basic_ifstreamIcSt11char_traitsIcEESt14default_deleteIS3_EED2Ev.exit23: ; preds = %85, %_ZNKSt14default_deleteISt14basic_ifstreamIcSt11char_traitsIcEEEclEPS3_.exit.i22 ret void .body: ; preds = %21, %12, %_ZNSt10unique_ptrISt14basic_ifstreamIcSt11char_traitsIcEESt14default_deleteIS3_EED2Ev.exit %.pn = phi { ptr, i32 } [ %24, %_ZNSt10unique_ptrISt14basic_ifstreamIcSt11char_traitsIcEESt14default_deleteIS3_EED2Ev.exit ], [ %22, %21 ], [ %13, %12 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #18 - %93 = load ptr, ptr %0, align 8 - %.not.i24 = icmp eq ptr %93, null + %90 = load ptr, ptr %0, align 8 + %.not.i24 = icmp eq ptr %90, null br i1 %.not.i24, label %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EED2Ev.exit, label %_ZNKSt14default_deleteI13cmELFInternalEclEPS0_.exit.i _ZNKSt14default_deleteI13cmELFInternalEclEPS0_.exit.i: ; preds = %.body - %94 = load ptr, ptr %93, align 8 - %95 = getelementptr inbounds i8, ptr %94, i64 8 - %96 = load ptr, ptr %95, align 8 - call void %96(ptr noundef nonnull align 8 dereferenceable(88) %93) #18 + %91 = load ptr, ptr %90, align 8 + %92 = getelementptr inbounds i8, ptr %91, i64 8 + %93 = load ptr, ptr %92, align 8 + call void %93(ptr noundef nonnull align 8 dereferenceable(88) %90) #18 br label %_ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EED2Ev.exit _ZNSt10unique_ptrI13cmELFInternalSt14default_deleteIS0_EED2Ev.exit: ; preds = %.body, %_ZNKSt14default_deleteI13cmELFInternalEclEPS0_.exit.i diff --git a/bench/cmake/optimized/nghttp2_session.c.ll b/bench/cmake/optimized/nghttp2_session.c.ll index 7280c6bf66b..0159bf10fef 100644 --- a/bench/cmake/optimized/nghttp2_session.c.ll +++ b/bench/cmake/optimized/nghttp2_session.c.ll @@ -12194,7 +12194,7 @@ nghttp2_session_is_my_stream_id.exit: ; preds = %6 %11 = trunc i32 %1 to i1 %12 = icmp eq i8 %10, 0 %.not = xor i1 %12, %11 - br i1 %.not, label %nghttp2_session_is_my_stream_id.exit.thread, label %30 + br i1 %.not, label %nghttp2_session_is_my_stream_id.exit.thread, label %29 nghttp2_session_is_my_stream_id.exit.thread: ; preds = %6, %nghttp2_session_is_my_stream_id.exit %.not44 = icmp eq i64 %4, 0 @@ -12203,12 +12203,12 @@ nghttp2_session_is_my_stream_id.exit.thread: ; preds = %6, %nghttp2_session 13: ; preds = %nghttp2_session_is_my_stream_id.exit.thread %14 = add i64 %4, -16377 %15 = icmp ult i64 %14, -16385 - br i1 %15, label %30, label %16 + br i1 %15, label %29, label %16 16: ; preds = %13 %17 = tail call ptr @nghttp2_mem_malloc(ptr noundef nonnull %7, i64 noundef %4) #20 %18 = icmp eq ptr %17, null - br i1 %18, label %30, label %19 + br i1 %18, label %29, label %19 19: ; preds = %16 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %17, ptr align 1 %3, i64 %4, i1 false) @@ -12218,31 +12218,32 @@ nghttp2_session_is_my_stream_id.exit.thread: ; preds = %6, %nghttp2_session %.037 = phi ptr [ %17, %19 ], [ null, %nghttp2_session_is_my_stream_id.exit.thread ] %21 = tail call ptr @nghttp2_mem_malloc(ptr noundef nonnull %7, i64 noundef 152) #20 %22 = icmp eq ptr %21, null - br i1 %22, label %23, label %24 + br i1 %22, label %.sink.split, label %23 23: ; preds = %20 - tail call void @nghttp2_mem_free(ptr noundef nonnull %7, ptr noundef %.037) #20 - br label %30 - -24: ; preds = %20 tail call void @nghttp2_outbound_item_init(ptr noundef nonnull %21) #20 - %25 = getelementptr inbounds i8, ptr %0, i64 2732 - %26 = load i32, ptr %25, align 4 - %. = tail call i32 @llvm.smin.i32(i32 %1, i32 %26) + %24 = getelementptr inbounds i8, ptr %0, i64 2732 + %25 = load i32, ptr %24, align 4 + %. = tail call i32 @llvm.smin.i32(i32 %1, i32 %25) tail call void @nghttp2_frame_goaway_init(ptr noundef nonnull %21, i32 noundef %., i32 noundef %2, ptr noundef %.037, i64 noundef %4) #20 - %27 = getelementptr inbounds i8, ptr %21, i64 96 - store i8 %5, ptr %27, align 1 - %28 = tail call i32 @nghttp2_session_add_item(ptr noundef %0, ptr noundef nonnull %21) - %.not45 = icmp eq i32 %28, 0 - br i1 %.not45, label %30, label %29 + %26 = getelementptr inbounds i8, ptr %21, i64 96 + store i8 %5, ptr %26, align 1 + %27 = tail call i32 @nghttp2_session_add_item(ptr noundef %0, ptr noundef nonnull %21) + %.not45 = icmp eq i32 %27, 0 + br i1 %.not45, label %29, label %28 -29: ; preds = %24 +28: ; preds = %23 tail call void @nghttp2_frame_goaway_free(ptr noundef nonnull %21, ptr noundef nonnull %7) #20 - tail call void @nghttp2_mem_free(ptr noundef nonnull %7, ptr noundef nonnull %21) #20 - br label %30 + br label %.sink.split + +.sink.split: ; preds = %20, %28 + %.sink = phi ptr [ %21, %28 ], [ %.037, %20 ] + %.0.ph = phi i32 [ %27, %28 ], [ -901, %20 ] + tail call void @nghttp2_mem_free(ptr noundef nonnull %7, ptr noundef %.sink) #20 + br label %29 -30: ; preds = %24, %16, %13, %nghttp2_session_is_my_stream_id.exit, %29, %23 - %.0 = phi i32 [ -901, %23 ], [ %28, %29 ], [ -501, %nghttp2_session_is_my_stream_id.exit ], [ -501, %13 ], [ -901, %16 ], [ 0, %24 ] +29: ; preds = %.sink.split, %23, %16, %13, %nghttp2_session_is_my_stream_id.exit + %.0 = phi i32 [ -501, %nghttp2_session_is_my_stream_id.exit ], [ -501, %13 ], [ -901, %16 ], [ 0, %23 ], [ %.0.ph, %.sink.split ] ret i32 %.0 } diff --git a/bench/cpython/optimized/resource.ll b/bench/cpython/optimized/resource.ll index eda88fdd0a2..34c1a971b45 100644 --- a/bench/cpython/optimized/resource.ll +++ b/bench/cpython/optimized/resource.ll @@ -337,24 +337,17 @@ if.end.i: ; preds = %skip_optional if.end5.i: ; preds = %if.end.i %cmp6.not.i = icmp eq ptr %limits.0, @_Py_NoneStruct - br i1 %cmp6.not.i, label %if.else.i, label %if.then7.i + br i1 %cmp6.not.i, label %if.end14.i, label %if.then7.i if.then7.i: ; preds = %if.end5.i %call8.i = call fastcc i32 @py2rlimit(ptr noundef %limits.0, ptr noundef %new_limit.i) %cmp9.i = icmp slt i32 %call8.i, 0 - br i1 %cmp9.i, label %resource_prlimit_impl.exit, label %if.end11.i + br i1 %cmp9.i, label %resource_prlimit_impl.exit, label %if.end14.i -if.end11.i: ; preds = %if.then7.i - %call12.i = call i32 @prlimit64(i32 noundef %conv, i32 noundef %call12, ptr noundef nonnull %new_limit.i, ptr noundef nonnull %old_limit.i) #6 - br label %if.end14.i - -if.else.i: ; preds = %if.end5.i - %call13.i = call i32 @prlimit64(i32 noundef %conv, i32 noundef %call12, ptr noundef null, ptr noundef nonnull %old_limit.i) #6 - br label %if.end14.i - -if.end14.i: ; preds = %if.else.i, %if.end11.i - %retval1.0.i = phi i32 [ %call12.i, %if.end11.i ], [ %call13.i, %if.else.i ] - %cmp15.i = icmp eq i32 %retval1.0.i, -1 +if.end14.i: ; preds = %if.then7.i, %if.end5.i + %.sink.i = phi ptr [ %new_limit.i, %if.then7.i ], [ null, %if.end5.i ] + %call13.i = call i32 @prlimit64(i32 noundef %conv, i32 noundef %call12, ptr noundef %.sink.i, ptr noundef nonnull %old_limit.i) #6 + %cmp15.i = icmp eq i32 %call13.i, -1 br i1 %cmp15.i, label %if.then16.i, label %if.end23.i if.then16.i: ; preds = %if.end14.i diff --git a/bench/curl/optimized/libcurl_la-telnet.ll b/bench/curl/optimized/libcurl_la-telnet.ll index f5db027d663..cfc17f53e91 100644 --- a/bench/curl/optimized/libcurl_la-telnet.ll +++ b/bench/curl/optimized/libcurl_la-telnet.ll @@ -2210,18 +2210,7 @@ sw.bb: ; preds = %entry %6 = load i32, ptr %sock, align 8 %call11 = call i64 @send(i32 noundef %6, ptr noundef nonnull %temp, i64 noundef %add5, i32 noundef 16384) #10 %cmp = icmp slt i64 %call11, 0 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %sw.bb - %call13 = tail call ptr @__errno_location() #12 - %7 = load i32, ptr %call13, align 4 - call void (ptr, ptr, ...) @Curl_failf(ptr noundef nonnull %data, ptr noundef nonnull @.str.76, i32 noundef %7) #10 - br label %if.end - -if.end: ; preds = %if.then, %sw.bb - %arrayidx14 = getelementptr inbounds i8, ptr %temp, i64 2 - call fastcc void @printsub(ptr noundef nonnull %data, i32 noundef 62, ptr noundef nonnull %arrayidx14, i64 noundef %add4) - br label %sw.epilog + br i1 %cmp, label %sw.epilog.sink.split.sink.split, label %sw.epilog.sink.split sw.bb15: ; preds = %entry %subopt_xdisploc = getelementptr inbounds i8, ptr %0, i64 7208 @@ -2230,21 +2219,10 @@ sw.bb15: ; preds = %entry %add19 = add i64 %call17, 6 %call23 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %temp, i64 noundef 2048, ptr noundef nonnull @.str.99, i32 noundef 255, i32 noundef 250, i32 noundef 35, i32 noundef 0, ptr noundef nonnull %subopt_xdisploc, i32 noundef 255, i32 noundef 240) #10 %sock24 = getelementptr inbounds i8, ptr %1, i64 392 - %8 = load i32, ptr %sock24, align 8 - %call27 = call i64 @send(i32 noundef %8, ptr noundef nonnull %temp, i64 noundef %add19, i32 noundef 16384) #10 + %7 = load i32, ptr %sock24, align 8 + %call27 = call i64 @send(i32 noundef %7, ptr noundef nonnull %temp, i64 noundef %add19, i32 noundef 16384) #10 %cmp28 = icmp slt i64 %call27, 0 - br i1 %cmp28, label %if.then30, label %if.end32 - -if.then30: ; preds = %sw.bb15 - %call31 = tail call ptr @__errno_location() #12 - %9 = load i32, ptr %call31, align 4 - call void (ptr, ptr, ...) @Curl_failf(ptr noundef nonnull %data, ptr noundef nonnull @.str.76, i32 noundef %9) #10 - br label %if.end32 - -if.end32: ; preds = %if.then30, %sw.bb15 - %arrayidx33 = getelementptr inbounds i8, ptr %temp, i64 2 - call fastcc void @printsub(ptr noundef nonnull %data, i32 noundef 62, ptr noundef nonnull %arrayidx33, i64 noundef %add18) - br label %sw.epilog + br i1 %cmp28, label %sw.epilog.sink.split.sink.split, label %sw.epilog.sink.split sw.bb35: ; preds = %entry %call37 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %temp, i64 noundef 2048, ptr noundef nonnull @.str.100, i32 noundef 255, i32 noundef 250, i32 noundef 39, i32 noundef 0) #10 @@ -2256,35 +2234,35 @@ sw.bb35: ; preds = %entry for.body: ; preds = %sw.bb35, %for.inc %v.049 = phi ptr [ %v.0, %for.inc ], [ %v.046, %sw.bb35 ] %len.048 = phi i64 [ %len.1, %for.inc ], [ 4, %sw.bb35 ] - %10 = load ptr, ptr %v.049, align 8 - %call39 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %10) #11 + %8 = load ptr, ptr %v.049, align 8 + %call39 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %8) #11 %add40 = add i64 %len.048, 1 %add41 = add i64 %add40, %call39 %cmp42 = icmp ult i64 %add41, 2042 br i1 %cmp42, label %if.then44, label %for.inc if.then44: ; preds = %for.body - %call46 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %10, i32 noundef 44) #11 + %call46 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %8, i32 noundef 44) #11 %tobool47.not = icmp eq ptr %call46, null br i1 %tobool47.not, label %if.then48, label %if.else if.then48: ; preds = %if.then44 %arrayidx49 = getelementptr inbounds [2048 x i8], ptr %temp, i64 0, i64 %len.048 %sub50 = sub i64 2048, %len.048 - %call52 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %arrayidx49, i64 noundef %sub50, ptr noundef nonnull @.str.101, i32 noundef 0, ptr noundef %10) #10 + %call52 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %arrayidx49, i64 noundef %sub50, ptr noundef nonnull @.str.101, i32 noundef 0, ptr noundef %8) #10 %conv53 = sext i32 %call52 to i64 %add54 = add i64 %len.048, %conv53 br label %for.inc if.else: ; preds = %if.then44 %sub.ptr.lhs.cast56 = ptrtoint ptr %call46 to i64 - %sub.ptr.rhs.cast57 = ptrtoint ptr %10 to i64 + %sub.ptr.rhs.cast57 = ptrtoint ptr %8 to i64 %sub.ptr.sub58 = sub i64 %sub.ptr.lhs.cast56, %sub.ptr.rhs.cast57 %arrayidx59 = getelementptr inbounds [2048 x i8], ptr %temp, i64 0, i64 %len.048 %sub60 = sub i64 2048, %len.048 %conv61 = trunc i64 %sub.ptr.sub58 to i32 %incdec.ptr63 = getelementptr inbounds i8, ptr %call46, i64 1 - %call64 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %arrayidx59, i64 noundef %sub60, ptr noundef nonnull @.str.102, i32 noundef 0, i32 noundef %conv61, ptr noundef %10, i32 noundef 1, ptr noundef nonnull %incdec.ptr63) #10 + %call64 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %arrayidx59, i64 noundef %sub60, ptr noundef nonnull @.str.102, i32 noundef 0, i32 noundef %conv61, ptr noundef %8, i32 noundef 1, ptr noundef nonnull %incdec.ptr63) #10 %conv65 = sext i32 %call64 to i64 %add66 = add i64 %len.048, %conv65 br label %for.inc @@ -2303,23 +2281,25 @@ for.end: ; preds = %for.inc, %sw.bb35 %call71 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %arrayidx69, i64 noundef %sub70, ptr noundef nonnull @.str.103, i32 noundef 255, i32 noundef 240) #10 %add72 = add i64 %len.0.lcssa, 2 %sock73 = getelementptr inbounds i8, ptr %1, i64 392 - %11 = load i32, ptr %sock73, align 8 - %call76 = call i64 @send(i32 noundef %11, ptr noundef nonnull %temp, i64 noundef %add72, i32 noundef 16384) #10 + %9 = load i32, ptr %sock73, align 8 + %call76 = call i64 @send(i32 noundef %9, ptr noundef nonnull %temp, i64 noundef %add72, i32 noundef 16384) #10 %cmp77 = icmp slt i64 %call76, 0 - br i1 %cmp77, label %if.then79, label %if.end81 + br i1 %cmp77, label %sw.epilog.sink.split.sink.split, label %sw.epilog.sink.split -if.then79: ; preds = %for.end +sw.epilog.sink.split.sink.split: ; preds = %for.end, %sw.bb15, %sw.bb + %len.0.lcssa.sink.ph = phi i64 [ %add4, %sw.bb ], [ %add18, %sw.bb15 ], [ %len.0.lcssa, %for.end ] %call80 = tail call ptr @__errno_location() #12 - %12 = load i32, ptr %call80, align 4 - call void (ptr, ptr, ...) @Curl_failf(ptr noundef %data, ptr noundef nonnull @.str.76, i32 noundef %12) #10 - br label %if.end81 + %10 = load i32, ptr %call80, align 4 + call void (ptr, ptr, ...) @Curl_failf(ptr noundef %data, ptr noundef nonnull @.str.76, i32 noundef %10) #10 + br label %sw.epilog.sink.split -if.end81: ; preds = %if.then79, %for.end +sw.epilog.sink.split: ; preds = %sw.epilog.sink.split.sink.split, %for.end, %sw.bb15, %sw.bb + %len.0.lcssa.sink = phi i64 [ %add4, %sw.bb ], [ %add18, %sw.bb15 ], [ %len.0.lcssa, %for.end ], [ %len.0.lcssa.sink.ph, %sw.epilog.sink.split.sink.split ] %arrayidx82 = getelementptr inbounds i8, ptr %temp, i64 2 - call fastcc void @printsub(ptr noundef %data, i32 noundef 62, ptr noundef nonnull %arrayidx82, i64 noundef %len.0.lcssa) + call fastcc void @printsub(ptr noundef %data, i32 noundef 62, ptr noundef nonnull %arrayidx82, i64 noundef %len.0.lcssa.sink) br label %sw.epilog -sw.epilog: ; preds = %if.end81, %if.end32, %if.end, %entry +sw.epilog: ; preds = %sw.epilog.sink.split, %entry ret void } diff --git a/bench/cvc5/optimized/SimpSolver.cc.ll b/bench/cvc5/optimized/SimpSolver.cc.ll index 6382e13203a..a762d5ac4ca 100644 --- a/bench/cvc5/optimized/SimpSolver.cc.ll +++ b/bench/cvc5/optimized/SimpSolver.cc.ll @@ -2344,44 +2344,40 @@ _ZN4cvc58internal7Minisat5QueueIjE5clearEb.exit: ; preds = %_ZN4cvc58internal7M %extra_clause_field = getelementptr inbounds i8, ptr %this, i64 724 store i8 0, ptr %extra_clause_field, align 4 tail call void @_ZN4cvc58internal7Minisat6Solver16rebuildOrderHeapEv(ptr noundef nonnull align 8 dereferenceable(850) %this) - %vtable = load ptr, ptr %this, align 8 - %vfn = getelementptr inbounds i8, ptr %vtable, i64 16 - %59 = load ptr, ptr %vfn, align 8 - tail call void %59(ptr noundef nonnull align 8 dereferenceable(1108) %this) - br label %if.end85 + br label %if.end85.sink.split if.else84: ; preds = %cleanup tail call void @_ZN4cvc58internal7Minisat10SimpSolver14cleanUpClausesEv(ptr noundef nonnull align 8 dereferenceable(1108) %this) %garbage_frac.i = getelementptr inbounds i8, ptr %this, i64 192 - %60 = load double, ptr %garbage_frac.i, align 8 - %61 = load i32, ptr %wasted_.i.i, align 8 - %conv.i.i = uitofp i32 %61 to double - %62 = load i32, ptr %sz.i.i37, align 8 - %conv4.i.i = uitofp i32 %62 to double - %mul.i.i = fmul double %60, %conv4.i.i + %59 = load double, ptr %garbage_frac.i, align 8 + %60 = load i32, ptr %wasted_.i.i, align 8 + %conv.i.i = uitofp i32 %60 to double + %61 = load i32, ptr %sz.i.i37, align 8 + %conv4.i.i = uitofp i32 %61 to double + %mul.i.i = fmul double %59, %conv4.i.i %cmp.i.i66 = fcmp olt double %mul.i.i, %conv.i.i - br i1 %cmp.i.i66, label %if.then.i.i, label %if.end85 + br i1 %cmp.i.i66, label %if.end85.sink.split, label %if.end85 -if.then.i.i: ; preds = %if.else84 +if.end85.sink.split: ; preds = %if.else84, %_ZN4cvc58internal7Minisat5QueueIjE5clearEb.exit %vtable.i.i = load ptr, ptr %this, align 8 %vfn.i.i = getelementptr inbounds i8, ptr %vtable.i.i, i64 16 - %63 = load ptr, ptr %vfn.i.i, align 8 - tail call void %63(ptr noundef nonnull align 8 dereferenceable(850) %this) + %62 = load ptr, ptr %vfn.i.i, align 8 + tail call void %62(ptr noundef nonnull align 8 dereferenceable(850) %this) br label %if.end85 -if.end85: ; preds = %if.then.i.i, %if.else84, %_ZN4cvc58internal7Minisat5QueueIjE5clearEb.exit - %64 = load i32, ptr %verbosity, align 8 - %cmp87 = icmp sgt i32 %64, 0 +if.end85: ; preds = %if.end85.sink.split, %if.else84 + %63 = load i32, ptr %verbosity, align 8 + %cmp87 = icmp sgt i32 %63, 0 br i1 %cmp87, label %land.lhs.true88, label %if.end97 land.lhs.true88: ; preds = %if.end85 %sz.i67 = getelementptr inbounds i8, ptr %this, i64 904 - %65 = load i32, ptr %sz.i67, align 8 - %cmp90 = icmp sgt i32 %65, 0 + %64 = load i32, ptr %sz.i67, align 8 + %cmp90 = icmp sgt i32 %64, 0 br i1 %cmp90, label %if.then91, label %if.end97 if.then91: ; preds = %land.lhs.true88 - %conv94 = zext nneg i32 %65 to i64 + %conv94 = zext nneg i32 %64 to i64 %mul = shl nuw nsw i64 %conv94, 2 %conv95 = uitofp nneg i64 %mul to double %div = fmul double %conv95, 0x3EB0000000000000 @@ -2390,8 +2386,8 @@ if.then91: ; preds = %land.lhs.true88 if.end97: ; preds = %if.then91, %land.lhs.true88, %if.end85 %ok98 = getelementptr inbounds i8, ptr %this, i64 344 - %66 = load i8, ptr %ok98, align 8 - %tobool99 = trunc i8 %66 to i1 + %65 = load i8, ptr %ok98, align 8 + %tobool99 = trunc i8 %65 to i1 br label %return return: ; preds = %if.else, %entry, %if.end97 diff --git a/bench/cvc5/optimized/conjecture_generator.cpp.ll b/bench/cvc5/optimized/conjecture_generator.cpp.ll index 5b76d88ada7..5c6529780a6 100644 --- a/bench/cvc5/optimized/conjecture_generator.cpp.ll +++ b/bench/cvc5/optimized/conjecture_generator.cpp.ll @@ -32954,11 +32954,7 @@ terminate.lpad.i662: ; preds = %if.then13.i.i661 cond.end150: ; preds = %invoke.cont135, %if.then.i.i655, %if.then13.i.i661 %call151 = call noundef zeroext i1 @_ZN4cvc58internal6theory11quantifiers10TermGenEnv19considerCurrentTermEv(ptr noundef nonnull align 8 dereferenceable(488) %s) - br i1 %call151, label %return, label %cond.false153 - -cond.false153: ; preds = %cond.end150 - %call154 = call noundef zeroext i1 @_ZN4cvc58internal6theory11quantifiers13TermGenerator11getNextTermEPNS2_10TermGenEnvEj(ptr noundef nonnull align 8 dereferenceable(112) %this, ptr noundef nonnull %s, i32 noundef %depth) - br label %return + br i1 %call151, label %return, label %return.sink.split lpad124: ; preds = %_ZN4cvc58internal8TypeNodeC2ERKS1_.exit563 %27 = landingpad { ptr, i32 } @@ -32980,18 +32976,14 @@ if.else: ; preds = %_ZN4cvc58internal8T %d_gen_relevant_terms = getelementptr inbounds i8, ptr %s, i64 200 %30 = load i8, ptr %d_gen_relevant_terms, align 8 %tobool = trunc i8 %30 to i1 - br i1 %tobool, label %if.then160, label %if.end162 + br i1 %tobool, label %if.then160, label %return.sink.split if.then160: ; preds = %if.else %d_tg_gdepth = getelementptr inbounds i8, ptr %s, i64 360 %31 = load i32, ptr %d_tg_gdepth, align 8 %inc161 = add i32 %31, 1 store i32 %inc161, ptr %d_tg_gdepth, align 8 - br label %if.end162 - -if.end162: ; preds = %if.then160, %if.else - %call163 = call noundef zeroext i1 @_ZN4cvc58internal6theory11quantifiers13TermGenerator11getNextTermEPNS2_10TermGenEnvEj(ptr noundef nonnull align 8 dereferenceable(112) %this, ptr noundef nonnull %s, i32 noundef %depth) - br label %return + br label %return.sink.split if.else164: ; preds = %_ZNK4cvc58internal8TypeNode6isNullEv.exit store i32 4, ptr %d_status115, align 4 @@ -33121,11 +33113,7 @@ cond.end196: ; preds = %_ZN4cvc58internal8T %inc182 = add nsw i32 %43, 1 store i32 %inc182, ptr %d_status_num166, align 8 %call197 = call noundef zeroext i1 @_ZN4cvc58internal6theory11quantifiers10TermGenEnv19considerCurrentTermEv(ptr noundef nonnull align 8 dereferenceable(488) %s) - br i1 %call197, label %return, label %cond.false199 - -cond.false199: ; preds = %cond.end196 - %call200 = call noundef zeroext i1 @_ZN4cvc58internal6theory11quantifiers13TermGenerator11getNextTermEPNS2_10TermGenEnvEj(ptr noundef nonnull align 8 dereferenceable(112) %this, ptr noundef %s, i32 noundef %depth) - br label %return + br i1 %call197, label %return, label %return.sink.split lpad175: ; preds = %if.then.i.i720 %44 = landingpad { ptr, i32 } @@ -33150,8 +33138,7 @@ if.end208: ; preds = %if.then206, %if.els %47 = load i32, ptr %d_status115, align 4 %inc210 = add i32 %47, 1 store i32 %inc210, ptr %d_status115, align 4 - %call211 = call noundef zeroext i1 @_ZN4cvc58internal6theory11quantifiers13TermGenerator11getNextTermEPNS2_10TermGenEnvEj(ptr noundef nonnull align 8 dereferenceable(112) %this, ptr noundef nonnull %s, i32 noundef %depth) - br label %return + br label %return.sink.split if.then215: ; preds = %tailrecurse store i32 5, ptr %d_status115, align 4 @@ -33299,7 +33286,7 @@ cond.true241: ; preds = %cleanup.done230 %inc278 = add i32 %62, 1 store i32 %inc278, ptr %d_tg_gdepth277, align 8 %call279 = call noundef zeroext i1 @_ZN4cvc58internal6theory11quantifiers10TermGenEnv19considerCurrentTermEv(ptr noundef nonnull align 8 dereferenceable(488) %s) - br i1 %call279, label %if.end286, label %if.then280 + br i1 %call279, label %return.sink.split, label %if.then280 if.then280: ; preds = %cond.true241 %63 = load i32, ptr %d_tg_gdepth277, align 8 @@ -33308,7 +33295,7 @@ if.then280: ; preds = %cond.true241 %64 = load i32, ptr %d_status115, align 4 %dec284 = add i32 %64, -1 store i32 %dec284, ptr %d_status115, align 4 - br label %if.end286 + br label %return.sink.split lpad224: ; preds = %if.then.i.i884 %65 = landingpad { ptr, i32 } @@ -33316,15 +33303,10 @@ lpad224: ; preds = %if.then.i.i884 call void @_ZN4cvc58internal8TypeNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %agg.tmp221) #31 br label %common.resume -if.end286: ; preds = %cond.true241, %if.then280 - %call287 = call noundef zeroext i1 @_ZN4cvc58internal6theory11quantifiers13TermGenerator11getNextTermEPNS2_10TermGenEnvEj(ptr noundef nonnull align 8 dereferenceable(112) %this, ptr noundef nonnull %s, i32 noundef %depth) - br label %return - if.else288: ; preds = %cleanup.done230.if.else288_crit_edge, %if.then215 %inc290 = phi i32 [ %60, %cleanup.done230.if.else288_crit_edge ], [ 6, %if.then215 ] store i32 %inc290, ptr %d_status115, align 4 - %call291 = call noundef zeroext i1 @_ZN4cvc58internal6theory11quantifiers13TermGenerator11getNextTermEPNS2_10TermGenEnvEj(ptr noundef nonnull align 8 dereferenceable(112) %this, ptr noundef %s, i32 noundef %depth) - br label %return + br label %return.sink.split if.then295: ; preds = %tailrecurse %66 = load ptr, ptr %this, align 8 @@ -33459,8 +33441,7 @@ if.then305: ; preds = %_ZN4cvc58internal8T %81 = load i32, ptr %d_status115, align 4 %dec309 = add i32 %81, -1 store i32 %dec309, ptr %d_status115, align 4 - %call312 = call noundef zeroext i1 @_ZN4cvc58internal6theory11quantifiers13TermGenerator11getNextTermEPNS2_10TermGenEnvEj(ptr noundef nonnull align 8 dereferenceable(112) %this, ptr noundef nonnull %s, i32 noundef %depth) - br label %return + br label %return.sink.split lpad300: ; preds = %if.then.i.i1114 %82 = landingpad { ptr, i32 } @@ -33540,11 +33521,7 @@ if.then320: ; preds = %invoke.cont316 %d_id = getelementptr inbounds i8, ptr %this, i64 8 %90 = load i32, ptr %d_id, align 8 %call324 = call noundef zeroext i1 @_ZN4cvc58internal6theory11quantifiers10TermGenEnv24considerCurrentTermCanonEj(ptr noundef nonnull align 8 dereferenceable(488) %s, i32 noundef %90) - br i1 %call324, label %return, label %cond.false326 - -cond.false326: ; preds = %if.then320 - %call328 = call noundef zeroext i1 @_ZN4cvc58internal6theory11quantifiers13TermGenerator11getNextTermEPNS2_10TermGenEnvEj(ptr noundef nonnull align 8 dereferenceable(112) %this, ptr noundef nonnull %s, i32 noundef %depth) - br label %return + br i1 %call324, label %return, label %return.sink.split if.else331: ; preds = %invoke.cont316 %d_children333 = getelementptr inbounds i8, ptr %this, i64 24 @@ -33768,7 +33745,7 @@ invoke.cont355: ; preds = %invoke.cont353 %bf.load.i.i1261 = load i64, ptr %112, align 8 %113 = and i64 %bf.load.i.i1261, 1152920405095219200 %cmp.not.i.i1262 = icmp eq i64 %113, 1152920405095219200 - br i1 %cmp.not.i.i1262, label %_ZN4cvc58internal8TypeNodeD2Ev.exit1271, label %if.then.i.i1263 + br i1 %cmp.not.i.i1262, label %return.sink.split, label %if.then.i.i1263 if.then.i.i1263: ; preds = %invoke.cont355 %bf.value.i.i1264 = add i64 %bf.load.i.i1261, 1152920405095219200 @@ -33777,11 +33754,11 @@ if.then.i.i1263: ; preds = %invoke.cont355 %bf.set.i.i1267 = or disjoint i64 %bf.shl.i.i1265, %bf.clear7.i.i1266 store i64 %bf.set.i.i1267, ptr %112, align 8 %cmp12.i.i1268 = icmp eq i64 %bf.shl.i.i1265, 0 - br i1 %cmp12.i.i1268, label %if.then13.i.i1269, label %_ZN4cvc58internal8TypeNodeD2Ev.exit1271 + br i1 %cmp12.i.i1268, label %if.then13.i.i1269, label %return.sink.split if.then13.i.i1269: ; preds = %if.then.i.i1263 invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(16) %112) - to label %_ZN4cvc58internal8TypeNodeD2Ev.exit1271 unwind label %terminate.lpad.i1270 + to label %return.sink.split unwind label %terminate.lpad.i1270 terminate.lpad.i1270: ; preds = %if.then13.i.i1269 %114 = landingpad { ptr, i32 } @@ -33790,10 +33767,6 @@ terminate.lpad.i1270: ; preds = %if.then13.i.i1269 call void @__clang_call_terminate(ptr %115) #27 unreachable -_ZN4cvc58internal8TypeNodeD2Ev.exit1271: ; preds = %invoke.cont355, %if.then.i.i1263, %if.then13.i.i1269 - %call358 = call noundef zeroext i1 @_ZN4cvc58internal6theory11quantifiers13TermGenerator11getNextTermEPNS2_10TermGenEnvEj(ptr noundef nonnull align 8 dereferenceable(112) %this, ptr noundef %s, i32 noundef %depth) - br label %return - lpad354: ; preds = %invoke.cont353 %116 = landingpad { ptr, i32 } cleanup @@ -33858,8 +33831,7 @@ if.then369: ; preds = %invoke.cont365 %121 = load i32, ptr %d_status_child_num303, align 4 %inc371 = add nsw i32 %121, 1 store i32 %inc371, ptr %d_status_child_num303, align 4 - %call373 = call noundef zeroext i1 @_ZN4cvc58internal6theory11quantifiers13TermGenerator11getNextTermEPNS2_10TermGenEnvEj(ptr noundef nonnull align 8 dereferenceable(112) %this, ptr noundef %s, i32 noundef %depth) - br label %return + br label %return.sink.split cond.end389: ; preds = %invoke.cont365 call void @_ZN4cvc58internal6theory11quantifiers10TermGenEnv13changeContextEb(ptr noundef nonnull align 8 dereferenceable(488) %s, i1 noundef zeroext false) @@ -33869,8 +33841,7 @@ cond.end389: ; preds = %invoke.cont365 %123 = load i32, ptr %d_status_child_num303, align 4 %dec393 = add nsw i32 %123, -1 store i32 %dec393, ptr %d_status_child_num303, align 4 - %call395 = call noundef zeroext i1 @_ZN4cvc58internal6theory11quantifiers13TermGenerator11getNextTermEPNS2_10TermGenEnvEj(ptr noundef nonnull align 8 dereferenceable(112) %this, ptr noundef nonnull %s, i32 noundef %depth) - br label %return + br label %return.sink.split if.then405: ; preds = %tailrecurse %124 = load ptr, ptr %this, align 8 @@ -34005,11 +33976,14 @@ if.end413: ; preds = %tailrecurse, %_ZN4c %inc415 = phi i32 [ %135, %_ZN4cvc58internal8TypeNodeD2Ev.exit1375 ], [ 4, %tailrecurse ] store i32 %inc415, ptr %d_status115, align 4 store i32 -1, ptr %d_status_num166, align 8 - %call417 = call noundef zeroext i1 @_ZN4cvc58internal6theory11quantifiers13TermGenerator11getNextTermEPNS2_10TermGenEnvEj(ptr noundef nonnull align 8 dereferenceable(112) %this, ptr noundef %s, i32 noundef %depth) + br label %return.sink.split + +return.sink.split: ; preds = %if.then13.i.i1269, %if.then.i.i1263, %invoke.cont355, %if.then320, %if.then280, %cond.true241, %cond.end196, %if.else, %if.then160, %cond.end150, %if.end208, %if.else288, %if.end413, %cond.end389, %if.then369, %if.then305 + %call312 = call noundef zeroext i1 @_ZN4cvc58internal6theory11quantifiers13TermGenerator11getNextTermEPNS2_10TermGenEnvEj(ptr noundef nonnull align 8 dereferenceable(112) %this, ptr noundef %s, i32 noundef %depth) br label %return -return: ; preds = %tailrecurse, %if.then305, %cond.false326, %_ZN4cvc58internal8TypeNodeD2Ev.exit1271, %if.then369, %cond.end389, %if.then320, %cond.false199, %cond.end196, %cond.false153, %cond.end150, %if.end413, %if.else288, %if.end286, %if.end208, %if.end162 - %retval.0 = phi i1 [ %call163, %if.end162 ], [ %call211, %if.end208 ], [ %call287, %if.end286 ], [ %call291, %if.else288 ], [ %call417, %if.end413 ], [ %call154, %cond.false153 ], [ true, %cond.end150 ], [ %call200, %cond.false199 ], [ true, %cond.end196 ], [ %call312, %if.then305 ], [ true, %if.then320 ], [ %call328, %cond.false326 ], [ %call358, %_ZN4cvc58internal8TypeNodeD2Ev.exit1271 ], [ %call373, %if.then369 ], [ %call395, %cond.end389 ], [ false, %tailrecurse ] +return: ; preds = %tailrecurse, %return.sink.split, %if.then320, %cond.end196, %cond.end150 + %retval.0 = phi i1 [ true, %cond.end150 ], [ true, %cond.end196 ], [ true, %if.then320 ], [ %call312, %return.sink.split ], [ false, %tailrecurse ] ret i1 %retval.0 } diff --git a/bench/cvc5/optimized/soi_simplex.cpp.ll b/bench/cvc5/optimized/soi_simplex.cpp.ll index a1a2426debf..1ea616df75d 100644 --- a/bench/cvc5/optimized/soi_simplex.cpp.ll +++ b/bench/cvc5/optimized/soi_simplex.cpp.ll @@ -3434,11 +3434,7 @@ if.else.i.invoke.cont5_crit_edge: ; preds = %if.else.i invoke.cont5: ; preds = %if.else.i.invoke.cont5_crit_edge, %_ZNSt16allocator_traitsISaISt6vectorIjSaIjEEEE9constructIS2_JRKS2_EEEvRS3_PT_DpOT0_.exit.i %9 = phi ptr [ %.pre1119, %if.else.i.invoke.cont5_crit_edge ], [ %6, %_ZNSt16allocator_traitsISaISt6vectorIjSaIjEEEE9constructIS2_JRKS2_EEEvRS3_PT_DpOT0_.exit.i ] %tobool.not.i.i.i = icmp eq ptr %9, null - br i1 %tobool.not.i.i.i, label %nrvo.skipdtor, label %if.then.i.i.i - -if.then.i.i.i: ; preds = %invoke.cont5 - call void @_ZdlPv(ptr noundef nonnull %9) #23 - br label %nrvo.skipdtor + br i1 %tobool.not.i.i.i, label %nrvo.skipdtor, label %nrvo.skipdtor.sink.split lpad: ; preds = %if.else.i, %_ZNSt16allocator_traitsISaIjEE8allocateERS0_m.exit.i.i.i.i.i.i.i, %if.then3.i.i.i.i.i.i.i.i.i, %if.then %10 = landingpad { ptr, i32 } @@ -4161,11 +4157,7 @@ _ZNSt10_HashtableISt4pairIjiES0_IKS1_St6vectorIjSaIjEEESaIS6_ENSt8__detail10_Sel call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %_M_before_begin.i.i, i8 0, i64 16, i1 false) %99 = load ptr, ptr %sgns, align 8 %cmp.i.i.i.i.i1032 = icmp eq ptr %99, %_M_single_bucket.i.i - br i1 %cmp.i.i.i.i.i1032, label %nrvo.skipdtor, label %if.end.i.i.i.i - -if.end.i.i.i.i: ; preds = %_ZNSt10_HashtableISt4pairIjiES0_IKS1_St6vectorIjSaIjEEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS1_EN4cvc58internal6theory5arith6linear24SimplexDecisionProcedure23ArithVarIntPairHashFuncENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i - call void @_ZdlPv(ptr noundef %99) #23 - br label %nrvo.skipdtor + br i1 %cmp.i.i.i.i.i1032, label %nrvo.skipdtor, label %nrvo.skipdtor.sink.split ehcleanup369: ; preds = %lpad182.loopexit, %lpad182.loopexit.split-lp, %if.then.i.i.i716, %lpad191 %.pn = phi { ptr, i32 } [ %lpad.phi, %lpad191 ], [ %lpad.phi, %if.then.i.i.i716 ], [ %lpad.loopexit1100, %lpad182.loopexit ], [ %lpad.loopexit.split-lp1101, %lpad182.loopexit.split-lp ] @@ -4193,7 +4185,12 @@ ehcleanup371: ; preds = %if.then.i.i.i1037, call void @_ZNSt13unordered_mapISt4pairIjiESt6vectorIjSaIjEEN4cvc58internal6theory5arith6linear24SimplexDecisionProcedure23ArithVarIntPairHashFuncESt8equal_toIS1_ESaIS0_IKS1_S4_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %sgns) #22 br label %ehcleanup373 -nrvo.skipdtor: ; preds = %if.end.i.i.i.i, %_ZNSt10_HashtableISt4pairIjiES0_IKS1_St6vectorIjSaIjEEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS1_EN4cvc58internal6theory5arith6linear24SimplexDecisionProcedure23ArithVarIntPairHashFuncENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i, %if.then.i.i.i, %invoke.cont5 +nrvo.skipdtor.sink.split: ; preds = %_ZNSt10_HashtableISt4pairIjiES0_IKS1_St6vectorIjSaIjEEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS1_EN4cvc58internal6theory5arith6linear24SimplexDecisionProcedure23ArithVarIntPairHashFuncENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i, %invoke.cont5 + %.sink = phi ptr [ %9, %invoke.cont5 ], [ %99, %_ZNSt10_HashtableISt4pairIjiES0_IKS1_St6vectorIjSaIjEEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS1_EN4cvc58internal6theory5arith6linear24SimplexDecisionProcedure23ArithVarIntPairHashFuncENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i ] + call void @_ZdlPv(ptr noundef %.sink) #23 + br label %nrvo.skipdtor + +nrvo.skipdtor: ; preds = %nrvo.skipdtor.sink.split, %_ZNSt10_HashtableISt4pairIjiES0_IKS1_St6vectorIjSaIjEEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS1_EN4cvc58internal6theory5arith6linear24SimplexDecisionProcedure23ArithVarIntPairHashFuncENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i, %invoke.cont5 ret void ehcleanup373: ; preds = %if.then.i.i.i28, %lpad, %ehcleanup371 diff --git a/bench/darktable/optimized/camera.c.ll b/bench/darktable/optimized/camera.c.ll index f3a4050bc98..ceff81a84de 100644 --- a/bench/darktable/optimized/camera.c.ll +++ b/bench/darktable/optimized/camera.c.ll @@ -796,21 +796,21 @@ define internal void @_toggle_capture_mode_clicked(ptr noundef %0, ptr nocapture %5 = tail call i64 @gtk_widget_get_type() #20 %6 = tail call ptr @g_type_check_instance_cast(ptr noundef %4, i64 noundef %5) #18 %7 = icmp eq ptr %6, %0 - br i1 %7, label %28, label %8 + br i1 %7, label %26, label %8 8: ; preds = %2 %9 = getelementptr inbounds i8, ptr %1, i64 16 %10 = load ptr, ptr %9, align 8, !tbaa !61 %11 = tail call ptr @g_type_check_instance_cast(ptr noundef %10, i64 noundef %5) #18 %12 = icmp eq ptr %11, %0 - br i1 %12, label %28, label %13 + br i1 %12, label %26, label %13 13: ; preds = %8 %14 = getelementptr inbounds i8, ptr %1, i64 24 %15 = load ptr, ptr %14, align 8, !tbaa !62 %16 = tail call ptr @g_type_check_instance_cast(ptr noundef %15, i64 noundef %5) #18 %17 = icmp eq ptr %16, %0 - br i1 %17, label %18, label %37 + br i1 %17, label %18, label %35 18: ; preds = %13 %19 = getelementptr inbounds i8, ptr %1, i64 48 @@ -821,26 +821,28 @@ define internal void @_toggle_capture_mode_clicked(ptr noundef %0, ptr nocapture tail call void @gtk_widget_set_sensitive(ptr noundef %20, i32 noundef %23) #18 %24 = getelementptr inbounds i8, ptr %1, i64 56 %25 = load ptr, ptr %24, align 8, !tbaa !66 - %26 = tail call ptr @g_type_check_instance_cast(ptr noundef %0, i64 noundef %21) #18 - %27 = tail call i32 @gtk_toggle_button_get_active(ptr noundef %26) #18 - tail call void @gtk_widget_set_sensitive(ptr noundef %25, i32 noundef %27) #18 - br label %37 - -28: ; preds = %8, %2 - %29 = phi i64 [ 32, %2 ], [ 40, %8 ] - %30 = getelementptr inbounds i8, ptr %1, i64 %29 - %31 = load ptr, ptr %30, align 8, !tbaa !44 - %32 = icmp eq ptr %31, null - br i1 %32, label %37, label %33 - -33: ; preds = %28 - %34 = tail call i64 @gtk_toggle_button_get_type() #20 - %35 = tail call ptr @g_type_check_instance_cast(ptr noundef %0, i64 noundef %34) #18 - %36 = tail call i32 @gtk_toggle_button_get_active(ptr noundef %35) #18 - tail call void @gtk_widget_set_sensitive(ptr noundef nonnull %31, i32 noundef %36) #18 - br label %37 - -37: ; preds = %33, %28, %18, %13 + br label %.sink.split + +26: ; preds = %8, %2 + %27 = phi i64 [ 32, %2 ], [ 40, %8 ] + %28 = getelementptr inbounds i8, ptr %1, i64 %27 + %29 = load ptr, ptr %28, align 8, !tbaa !44 + %30 = icmp eq ptr %29, null + br i1 %30, label %35, label %31 + +31: ; preds = %26 + %32 = tail call i64 @gtk_toggle_button_get_type() #20 + br label %.sink.split + +.sink.split: ; preds = %18, %31 + %.sink4 = phi i64 [ %32, %31 ], [ %21, %18 ] + %.sink = phi ptr [ %29, %31 ], [ %25, %18 ] + %33 = tail call ptr @g_type_check_instance_cast(ptr noundef %0, i64 noundef %.sink4) #18 + %34 = tail call i32 @gtk_toggle_button_get_active(ptr noundef %33) #18 + tail call void @gtk_widget_set_sensitive(ptr noundef %.sink, i32 noundef %34) #18 + br label %35 + +35: ; preds = %.sink.split, %26, %13 ret void } diff --git a/bench/darktable/optimized/filtering.c.ll b/bench/darktable/optimized/filtering.c.ll index e1b4067c48e..1c893b0c40f 100644 --- a/bench/darktable/optimized/filtering.c.ll +++ b/bench/darktable/optimized/filtering.c.ll @@ -1919,8 +1919,7 @@ define internal fastcc void @_history_save(i32 noundef range(i32 0, 2) %0) unnam 26: ; preds = %.preheader %27 = add nsw i32 %20, 1 - call void @dt_conf_set_string(ptr noundef nonnull %3, ptr noundef nonnull @.str.13) #21 - br label %33 + br label %.sink.split 28: ; preds = %.preheader %29 = icmp sgt i32 %20, 0 @@ -1930,11 +1929,16 @@ define internal fastcc void @_history_save(i32 noundef range(i32 0, 2) %0) unnam call void @dt_conf_set_string(ptr noundef nonnull %3, ptr noundef nonnull @.str.13) #21 %31 = sub nsw i32 %21, %20 %32 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %3, i64 noundef 200, ptr noundef nonnull @.str.108, ptr noundef nonnull %9, i32 noundef %31) #21 - call void @dt_conf_set_string(ptr noundef nonnull %3, ptr noundef %23) #21 + br label %.sink.split + +.sink.split: ; preds = %26, %30 + %.sink = phi ptr [ %23, %30 ], [ @.str.13, %26 ] + %.ph = phi i32 [ %20, %30 ], [ %27, %26 ] + call void @dt_conf_set_string(ptr noundef nonnull %3, ptr noundef %.sink) #21 br label %33 -33: ; preds = %30, %28, %26 - %34 = phi i32 [ %20, %30 ], [ %20, %28 ], [ %27, %26 ] +33: ; preds = %.sink.split, %28 + %34 = phi i32 [ %20, %28 ], [ %.ph, %.sink.split ] call void @g_free(ptr noundef %23) #21 %35 = add nuw nsw i32 %21, 1 %36 = icmp eq i32 %35, %16 @@ -7201,17 +7205,17 @@ define internal noundef range(i32 0, 2) i32 @_date_update(ptr noundef %0) #1 { %87 = add nsw i32 %86, -1 store i32 %87, ptr %24, align 8, !tbaa !121 call void @dtgtk_range_select_redraw(ptr noundef %15) #21 - call void @dtgtk_range_select_redraw(ptr noundef nonnull %23) #21 br label %91 88: ; preds = %.loopexit %89 = load i32, ptr %24, align 8, !tbaa !121 %90 = add nsw i32 %89, -1 store i32 %90, ptr %24, align 8, !tbaa !121 - call void @dtgtk_range_select_redraw(ptr noundef %15) #21 br label %91 91: ; preds = %88, %85 + %.sink = phi ptr [ %15, %88 ], [ %23, %85 ] + call void @dtgtk_range_select_redraw(ptr noundef %.sink) #21 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #21 call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %2) #21 br label %92 @@ -7493,17 +7497,17 @@ define internal noundef range(i32 0, 2) i32 @_ratio_update(ptr noundef %0) #1 { %119 = add nsw i32 %118, -1 store i32 %119, ptr %24, align 8, !tbaa !121 call void @dtgtk_range_select_redraw(ptr noundef %15) #21 - call void @dtgtk_range_select_redraw(ptr noundef nonnull %23) #21 br label %123 120: ; preds = %.loopexit %121 = load i32, ptr %24, align 8, !tbaa !121 %122 = add nsw i32 %121, -1 store i32 %122, ptr %24, align 8, !tbaa !121 - call void @dtgtk_range_select_redraw(ptr noundef %15) #21 br label %123 123: ; preds = %120, %113 + %.sink = phi ptr [ %15, %120 ], [ %23, %113 ] + call void @dtgtk_range_select_redraw(ptr noundef %.sink) #21 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #21 call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %2) #21 br label %124 @@ -7967,17 +7971,17 @@ define internal noundef range(i32 0, 2) i32 @_aperture_update(ptr noundef %0) #1 %74 = add nsw i32 %73, -1 store i32 %74, ptr %24, align 8, !tbaa !121 call void @dtgtk_range_select_redraw(ptr noundef %15) #21 - call void @dtgtk_range_select_redraw(ptr noundef nonnull %23) #21 br label %78 75: ; preds = %.loopexit %76 = load i32, ptr %24, align 8, !tbaa !121 %77 = add nsw i32 %76, -1 store i32 %77, ptr %24, align 8, !tbaa !121 - call void @dtgtk_range_select_redraw(ptr noundef %15) #21 br label %78 78: ; preds = %75, %72 + %.sink = phi ptr [ %15, %75 ], [ %23, %72 ] + call void @dtgtk_range_select_redraw(ptr noundef %.sink) #21 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #21 call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %2) #21 br label %79 @@ -8189,17 +8193,17 @@ define internal noundef range(i32 0, 2) i32 @_focal_update(ptr noundef %0) #1 { %74 = add nsw i32 %73, -1 store i32 %74, ptr %24, align 8, !tbaa !121 call void @dtgtk_range_select_redraw(ptr noundef %15) #21 - call void @dtgtk_range_select_redraw(ptr noundef nonnull %23) #21 br label %78 75: ; preds = %.loopexit %76 = load i32, ptr %24, align 8, !tbaa !121 %77 = add nsw i32 %76, -1 store i32 %77, ptr %24, align 8, !tbaa !121 - call void @dtgtk_range_select_redraw(ptr noundef %15) #21 br label %78 78: ; preds = %75, %72 + %.sink = phi ptr [ %15, %75 ], [ %23, %72 ] + call void @dtgtk_range_select_redraw(ptr noundef %.sink) #21 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #21 call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %2) #21 br label %79 @@ -8410,17 +8414,17 @@ define internal noundef range(i32 0, 2) i32 @_iso_update(ptr noundef %0) #1 { %74 = add nsw i32 %73, -1 store i32 %74, ptr %24, align 8, !tbaa !121 call void @dtgtk_range_select_redraw(ptr noundef %15) #21 - call void @dtgtk_range_select_redraw(ptr noundef nonnull %23) #21 br label %78 75: ; preds = %.loopexit %76 = load i32, ptr %24, align 8, !tbaa !121 %77 = add nsw i32 %76, -1 store i32 %77, ptr %24, align 8, !tbaa !121 - call void @dtgtk_range_select_redraw(ptr noundef %15) #21 br label %78 78: ; preds = %75, %72 + %.sink = phi ptr [ %15, %75 ], [ %23, %72 ] + call void @dtgtk_range_select_redraw(ptr noundef %.sink) #21 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #21 call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %2) #21 br label %79 @@ -8644,17 +8648,17 @@ define internal noundef range(i32 0, 2) i32 @_exposure_update(ptr noundef %0) #1 %74 = add nsw i32 %73, -1 store i32 %74, ptr %24, align 8, !tbaa !121 call void @dtgtk_range_select_redraw(ptr noundef %15) #21 - call void @dtgtk_range_select_redraw(ptr noundef nonnull %23) #21 br label %78 75: ; preds = %.loopexit %76 = load i32, ptr %24, align 8, !tbaa !121 %77 = add nsw i32 %76, -1 store i32 %77, ptr %24, align 8, !tbaa !121 - call void @dtgtk_range_select_redraw(ptr noundef %15) #21 br label %78 78: ; preds = %75, %72 + %.sink = phi ptr [ %15, %75 ], [ %23, %72 ] + call void @dtgtk_range_select_redraw(ptr noundef %.sink) #21 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #21 call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %2) #21 br label %79 diff --git a/bench/darktable/optimized/print_settings.c.ll b/bench/darktable/optimized/print_settings.c.ll index a3b5229eb99..0115d2e44cf 100644 --- a/bench/darktable/optimized/print_settings.c.ll +++ b/bench/darktable/optimized/print_settings.c.ll @@ -5081,30 +5081,27 @@ define internal void @_style_callback(ptr nocapture readnone %0, ptr nocapture n %6 = load ptr, ptr %5, align 8, !tbaa !145 %7 = tail call i32 @dt_bauhaus_combobox_get(ptr noundef %6) #21 %8 = icmp eq i32 %7, 0 - br i1 %8, label %9, label %10 + br i1 %8, label %12, label %9 9: ; preds = %2 - tail call void @dt_conf_set_string(ptr noundef nonnull @.str.86, ptr noundef nonnull @.str.23) #21 - br label %13 - -10: ; preds = %2 - %11 = load ptr, ptr %5, align 8, !tbaa !145 - %12 = tail call ptr @dt_bauhaus_combobox_get_text(ptr noundef %11) #21 - tail call void @dt_conf_set_string(ptr noundef nonnull @.str.86, ptr noundef %12) #21 - br label %13 + %10 = load ptr, ptr %5, align 8, !tbaa !145 + %11 = tail call ptr @dt_bauhaus_combobox_get_text(ptr noundef %10) #21 + br label %12 -13: ; preds = %10, %9 - %14 = phi i32 [ 1, %10 ], [ 0, %9 ] - %15 = getelementptr inbounds i8, ptr %4, i64 24 - %16 = load ptr, ptr %15, align 8, !tbaa !151 - %17 = tail call i64 @gtk_widget_get_type() #22 - %18 = tail call ptr @g_type_check_instance_cast(ptr noundef %16, i64 noundef %17) #21 - tail call void @gtk_widget_set_sensitive(ptr noundef %18, i32 noundef %14) #21 - %19 = getelementptr inbounds i8, ptr %4, i64 3368 - %20 = load ptr, ptr %19, align 8, !tbaa !148 - tail call void @g_free(ptr noundef %20) #21 - %21 = tail call ptr @dt_conf_get_string(ptr noundef nonnull @.str.86) #21 - store ptr %21, ptr %19, align 8, !tbaa !148 +12: ; preds = %2, %9 + %.sink = phi ptr [ %11, %9 ], [ @.str.23, %2 ] + %13 = phi i32 [ 1, %9 ], [ 0, %2 ] + tail call void @dt_conf_set_string(ptr noundef nonnull @.str.86, ptr noundef %.sink) #21 + %14 = getelementptr inbounds i8, ptr %4, i64 24 + %15 = load ptr, ptr %14, align 8, !tbaa !151 + %16 = tail call i64 @gtk_widget_get_type() #22 + %17 = tail call ptr @g_type_check_instance_cast(ptr noundef %15, i64 noundef %16) #21 + tail call void @gtk_widget_set_sensitive(ptr noundef %17, i32 noundef %13) #21 + %18 = getelementptr inbounds i8, ptr %4, i64 3368 + %19 = load ptr, ptr %18, align 8, !tbaa !148 + tail call void @g_free(ptr noundef %19) #21 + %20 = tail call ptr @dt_conf_get_string(ptr noundef nonnull @.str.86) #21 + store ptr %20, ptr %18, align 8, !tbaa !148 ret void } diff --git a/bench/delta-rs/optimized/1ccryk2t8gtcl1j4.ll b/bench/delta-rs/optimized/1ccryk2t8gtcl1j4.ll index a859558a3e9..e82e4f23c91 100644 --- a/bench/delta-rs/optimized/1ccryk2t8gtcl1j4.ll +++ b/bench/delta-rs/optimized/1ccryk2t8gtcl1j4.ll @@ -9007,49 +9007,43 @@ define internal fastcc void @"_ZN4core3ptr51drop_in_place$LT$sqlparser..ast..Fet %2 = load i64, ptr %0, align 8, !range !690, !noundef !4 switch i64 %2, label %"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit" [ i64 0, label %3 - i64 10, label %14 + i64 10, label %13 i64 8, label %9 i64 6, label %7 i64 5, label %5 ] -"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit": ; preds = %18, %14, %13, %9, %7, %5, %3, %1 +"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit.sink.split": ; preds = %13, %9, %3, %5, %7 + %.sink = phi ptr [ %8, %7 ], [ %6, %5 ], [ %4, %3 ], [ %10, %9 ], [ %14, %13 ] + tail call void @"_ZN4core3ptr49drop_in_place$LT$sqlparser..ast..value..Value$GT$17h2bad372aeaffabadE.llvm.11705908289436625823"(ptr noalias noundef nonnull align 8 dereferenceable(48) %.sink) + br label %"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit" + +"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit": ; preds = %"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit.sink.split", %13, %9, %1 ret void 3: ; preds = %1 %4 = getelementptr inbounds i8, ptr %0, i64 8 - tail call void @"_ZN4core3ptr49drop_in_place$LT$sqlparser..ast..value..Value$GT$17h2bad372aeaffabadE.llvm.11705908289436625823"(ptr noalias noundef nonnull align 8 dereferenceable(48) %4) - br label %"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit" + br label %"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit.sink.split" 5: ; preds = %1 %6 = getelementptr inbounds i8, ptr %0, i64 8 - tail call void @"_ZN4core3ptr49drop_in_place$LT$sqlparser..ast..value..Value$GT$17h2bad372aeaffabadE.llvm.11705908289436625823"(ptr noalias noundef nonnull align 8 dereferenceable(48) %6) - br label %"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit" + br label %"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit.sink.split" 7: ; preds = %1 %8 = getelementptr inbounds i8, ptr %0, i64 8 - tail call void @"_ZN4core3ptr49drop_in_place$LT$sqlparser..ast..value..Value$GT$17h2bad372aeaffabadE.llvm.11705908289436625823"(ptr noalias noundef nonnull align 8 dereferenceable(48) %8) - br label %"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit" + br label %"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit.sink.split" 9: ; preds = %1 %10 = getelementptr inbounds i8, ptr %0, i64 8 %11 = load i64, ptr %10, align 8, !range !1724, !alias.scope !4570, !noundef !4 %12 = icmp eq i64 %11, -9223372036854775794 - br i1 %12, label %"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit", label %13 - -13: ; preds = %9 - tail call void @"_ZN4core3ptr49drop_in_place$LT$sqlparser..ast..value..Value$GT$17h2bad372aeaffabadE.llvm.11705908289436625823"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %10) - br label %"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit" + br i1 %12, label %"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit", label %"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit.sink.split" -14: ; preds = %1 - %15 = getelementptr inbounds i8, ptr %0, i64 8 - %16 = load i64, ptr %15, align 8, !range !1724, !alias.scope !4573, !noundef !4 - %17 = icmp eq i64 %16, -9223372036854775794 - br i1 %17, label %"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit", label %18 - -18: ; preds = %14 - tail call void @"_ZN4core3ptr49drop_in_place$LT$sqlparser..ast..value..Value$GT$17h2bad372aeaffabadE.llvm.11705908289436625823"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %15) - br label %"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit" +13: ; preds = %1 + %14 = getelementptr inbounds i8, ptr %0, i64 8 + %15 = load i64, ptr %14, align 8, !range !1724, !alias.scope !4573, !noundef !4 + %16 = icmp eq i64 %15, -9223372036854775794 + br i1 %16, label %"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit", label %"_ZN4core3ptr77drop_in_place$LT$core..option..Option$LT$sqlparser..ast..value..Value$GT$$GT$17h3393e5e341acd2eaE.exit.sink.split" } ; Function Attrs: nonlazybind uwtable diff --git a/bench/delta-rs/optimized/2braxl0lj34anf5z.ll b/bench/delta-rs/optimized/2braxl0lj34anf5z.ll index b142d122191..b99708e1980 100644 --- a/bench/delta-rs/optimized/2braxl0lj34anf5z.ll +++ b/bench/delta-rs/optimized/2braxl0lj34anf5z.ll @@ -81469,7 +81469,7 @@ define hidden void @"_ZN4core4iter8adapters7flatten26FlattenCompat$LT$I$C$U$GT$1 %.sroa.4.i.i.i.i33 = alloca [176 x i8], align 16 %5 = alloca { i128, [22 x i64] }, align 16 %.sroa.4.i.i.i.i = alloca [176 x i8], align 16 - %.sroa.271 = alloca [22 x i64], align 16 + %.sroa.272 = alloca [22 x i64], align 16 %6 = alloca { { ptr, ptr } }, align 8 store ptr %2, ptr %6, align 8 %7 = getelementptr inbounds i8, ptr %6, i64 8 @@ -81492,17 +81492,16 @@ define hidden void @"_ZN4core4iter8adapters7flatten26FlattenCompat$LT$I$C$U$GT$1 10: ; preds = %9 %11 = load i64, ptr %3, align 8, !range !1974, !alias.scope !21636, !noalias !21639, !noundef !4 %12 = icmp eq i64 %11, 45 - br i1 %12, label %"_ZN4core3ptr144drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$17h4267d1819e2e0acbE.exit.i.i.i.i", label %13 + br i1 %12, label %17, label %13 13: ; preds = %10 invoke void @"_ZN4core3ptr60drop_in_place$LT$deltalake_core..errors..DeltaTableError$GT$17hb6fa9b72dafb274dE.llvm.8022584466853825857"(ptr noalias noundef nonnull align 8 dereferenceable(88) %3) - to label %"_ZN4core3ptr144drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$17h4267d1819e2e0acbE.exit.i.i.i.i" unwind label %15, !noalias !21639 + to label %17 unwind label %15, !noalias !21639 14: ; preds = %9 %.sroa.610.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %1, i64 104 %.sroa.4.104..sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %.sroa.4.i.i.i.i, i64 88 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %.sroa.4.104..sroa_idx.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(88) %.sroa.610.0..sroa_idx.i.i, i64 88, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(88) %.sroa.4.i.i.i.i, ptr noundef nonnull align 16 dereferenceable(88) %.sroa.5.0..sroa_idx.i.i, i64 88, i1 false) br label %17 common.resume: ; preds = %.body29, %50, %15 @@ -81515,11 +81514,9 @@ common.resume: ; preds = %.body29, %50, %15 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef nonnull align 16 dereferenceable(88) %.sroa.5.0..sroa_idx.i.i, i64 88, i1 false), !noalias !21648 br label %common.resume -"_ZN4core3ptr144drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$17h4267d1819e2e0acbE.exit.i.i.i.i": ; preds = %13, %10 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef nonnull align 16 dereferenceable(88) %.sroa.5.0..sroa_idx.i.i, i64 88, i1 false), !noalias !21648 - br label %17 - -17: ; preds = %"_ZN4core3ptr144drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$17h4267d1819e2e0acbE.exit.i.i.i.i", %14 +17: ; preds = %14, %13, %10 + %.sink.i.i = phi ptr [ %.sroa.4.i.i.i.i, %14 ], [ %3, %13 ], [ %3, %10 ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %.sink.i.i, ptr noundef nonnull align 16 dereferenceable(88) %.sroa.5.0..sroa_idx.i.i, i64 88, i1 false) store i128 %8, ptr %0, align 16, !alias.scope !21649 %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(176) %.sroa.2.0..sroa_idx, ptr noundef nonnull align 16 dereferenceable(176) %.sroa.4.i.i.i.i, i64 176, i1 false), !alias.scope !21649 @@ -81543,19 +81540,19 @@ common.resume: ; preds = %.body29, %50, %15 23: ; preds = %20 call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %5), !noalias !21660 - %.pre90 = load i128, ptr %1, align 16, !range !9550, !alias.scope !21666 - %24 = icmp eq i128 %.pre90, 5 + %.pre91 = load i128, ptr %1, align 16, !range !9550, !alias.scope !21666 + %24 = icmp eq i128 %.pre91, 5 br i1 %24, label %"_ZN4core3ptr191drop_in_place$LT$core..option..Option$LT$core..result..IntoIter$LT$core..result..Result$LT$datafusion_common..stats..ColumnStatistics$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$$GT$17h0c5fe7215e5575f1E.exit32", label %25 25: ; preds = %23 - %trunc.i.i.i19 = trunc nuw i128 %.pre90 to i3 + %trunc.i.i.i19 = trunc nuw i128 %.pre91 to i3 switch i3 %trunc.i.i.i19, label %26 [ i3 -4, label %"_ZN4core3ptr191drop_in_place$LT$core..option..Option$LT$core..result..IntoIter$LT$core..result..Result$LT$datafusion_common..stats..ColumnStatistics$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$$GT$17h0c5fe7215e5575f1E.exit32" i3 3, label %37 ] 26: ; preds = %25 - %switch.i.i.i.i.i.i20 = icmp ult i128 %.pre90, 2 + %switch.i.i.i.i.i.i20 = icmp ult i128 %.pre91, 2 br i1 %switch.i.i.i.i.i.i20, label %.sink.split.i.i.i.i.i.i24, label %"_ZN4core3ptr102drop_in_place$LT$datafusion_common..stats..Precision$LT$datafusion_common..scalar..ScalarValue$GT$$GT$17hc212d89c0da48254E.llvm.4057250340930679409.exit.i.i.i.i.i21" .sink.split.i.i.i.i.i.i24: ; preds = %26 @@ -81598,11 +81595,11 @@ common.resume: ; preds = %.body29, %50, %15 38: ; preds = %20 %.sroa.7.0..sroa_idx2.i = getelementptr inbounds i8, ptr %5, i64 16 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(176) %.sroa.271, ptr noundef nonnull align 16 dereferenceable(176) %.sroa.7.0..sroa_idx2.i, i64 176, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(176) %.sroa.272, ptr noundef nonnull align 16 dereferenceable(176) %.sroa.7.0..sroa_idx2.i, i64 176, i1 false) call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %5), !noalias !21660 store i128 %21, ptr %0, align 16, !alias.scope !21683 - %.sroa.271.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(176) %.sroa.271.0..sroa_idx, ptr noundef nonnull align 16 dereferenceable(176) %.sroa.271, i64 176, i1 false), !alias.scope !21683 + %.sroa.272.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(176) %.sroa.272.0..sroa_idx, ptr noundef nonnull align 16 dereferenceable(176) %.sroa.272, i64 176, i1 false), !alias.scope !21683 br label %53 39: ; preds = %37, %.sink.split.i6.i.i.i.i.i23 @@ -81620,7 +81617,7 @@ common.resume: ; preds = %.body29, %50, %15 %41 = getelementptr inbounds i8, ptr %1, i64 192 %42 = load i128, ptr %41, align 16, !range !9550, !noundef !4 %.not14 = icmp eq i128 %42, 5 - br i1 %.not14, label %"_ZN4core3ptr191drop_in_place$LT$core..option..Option$LT$core..result..IntoIter$LT$core..result..Result$LT$datafusion_common..stats..ColumnStatistics$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$$GT$17h0c5fe7215e5575f1E.exit56", label %43 + br i1 %.not14, label %"_ZN4core3ptr191drop_in_place$LT$core..option..Option$LT$core..result..IntoIter$LT$core..result..Result$LT$datafusion_common..stats..ColumnStatistics$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$$GT$17h0c5fe7215e5575f1E.exit57", label %43 43: ; preds = %"_ZN4core3ptr191drop_in_place$LT$core..option..Option$LT$core..result..IntoIter$LT$core..result..Result$LT$datafusion_common..stats..ColumnStatistics$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$$GT$17h0c5fe7215e5575f1E.exit32" %.val16 = load ptr, ptr %7, align 8 @@ -81628,9 +81625,9 @@ common.resume: ; preds = %.body29, %50, %15 call void @llvm.experimental.noalias.scope.decl(metadata !21690) %.sroa.5.0..sroa_idx.i.i35 = getelementptr inbounds i8, ptr %1, i64 208 store i128 4, ptr %41, align 16, !alias.scope !21693, !noalias !21696 - %trunc89 = trunc nuw i128 %42 to i3 - switch i3 %trunc89, label %49 [ - i3 -4, label %"_ZN4core3ptr191drop_in_place$LT$core..option..Option$LT$core..result..IntoIter$LT$core..result..Result$LT$datafusion_common..stats..ColumnStatistics$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$$GT$17h0c5fe7215e5575f1E.exit56" + %trunc90 = trunc nuw i128 %42 to i3 + switch i3 %trunc90, label %49 [ + i3 -4, label %"_ZN4core3ptr191drop_in_place$LT$core..option..Option$LT$core..result..IntoIter$LT$core..result..Result$LT$datafusion_common..stats..ColumnStatistics$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$$GT$17h0c5fe7215e5575f1E.exit57" i3 3, label %44 ] @@ -81639,17 +81636,16 @@ common.resume: ; preds = %.body29, %50, %15 call void @llvm.assume(i1 %45) %46 = load i64, ptr %.val16, align 8, !range !1974, !alias.scope !21701, !noalias !21704, !noundef !4 %47 = icmp eq i64 %46, 45 - br i1 %47, label %"_ZN4core3ptr144drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$17h4267d1819e2e0acbE.exit.i.i.i.i36", label %48 + br i1 %47, label %52, label %48 48: ; preds = %44 invoke void @"_ZN4core3ptr60drop_in_place$LT$deltalake_core..errors..DeltaTableError$GT$17hb6fa9b72dafb274dE.llvm.8022584466853825857"(ptr noalias noundef nonnull align 8 dereferenceable(88) %.val16) - to label %"_ZN4core3ptr144drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$17h4267d1819e2e0acbE.exit.i.i.i.i36" unwind label %50, !noalias !21704 + to label %52 unwind label %50, !noalias !21704 49: ; preds = %43 - %.sroa.610.0..sroa_idx.i.i39 = getelementptr inbounds i8, ptr %1, i64 296 - %.sroa.4.104..sroa_idx.i.i.i.i40 = getelementptr inbounds i8, ptr %.sroa.4.i.i.i.i33, i64 88 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %.sroa.4.104..sroa_idx.i.i.i.i40, ptr noundef nonnull align 8 dereferenceable(88) %.sroa.610.0..sroa_idx.i.i39, i64 88, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(88) %.sroa.4.i.i.i.i33, ptr noundef nonnull align 16 dereferenceable(88) %.sroa.5.0..sroa_idx.i.i35, i64 88, i1 false) + %.sroa.610.0..sroa_idx.i.i40 = getelementptr inbounds i8, ptr %1, i64 296 + %.sroa.4.104..sroa_idx.i.i.i.i41 = getelementptr inbounds i8, ptr %.sroa.4.i.i.i.i33, i64 88 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %.sroa.4.104..sroa_idx.i.i.i.i41, ptr noundef nonnull align 8 dereferenceable(88) %.sroa.610.0..sroa_idx.i.i40, i64 88, i1 false) br label %52 50: ; preds = %48 @@ -81658,22 +81654,20 @@ common.resume: ; preds = %.body29, %50, %15 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %.val16, ptr noundef nonnull align 16 dereferenceable(88) %.sroa.5.0..sroa_idx.i.i35, i64 88, i1 false), !noalias !21713 br label %common.resume -"_ZN4core3ptr144drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$17h4267d1819e2e0acbE.exit.i.i.i.i36": ; preds = %48, %44 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %.val16, ptr noundef nonnull align 16 dereferenceable(88) %.sroa.5.0..sroa_idx.i.i35, i64 88, i1 false), !noalias !21713 - br label %52 - -52: ; preds = %"_ZN4core3ptr144drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$17h4267d1819e2e0acbE.exit.i.i.i.i36", %49 +52: ; preds = %49, %48, %44 + %.sink.i.i37 = phi ptr [ %.sroa.4.i.i.i.i33, %49 ], [ %.val16, %48 ], [ %.val16, %44 ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %.sink.i.i37, ptr noundef nonnull align 16 dereferenceable(88) %.sroa.5.0..sroa_idx.i.i35, i64 88, i1 false) store i128 %42, ptr %0, align 16, !alias.scope !21714 - %.sroa.280.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(176) %.sroa.280.0..sroa_idx, ptr noundef nonnull align 16 dereferenceable(176) %.sroa.4.i.i.i.i33, i64 176, i1 false), !alias.scope !21714 + %.sroa.281.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(176) %.sroa.281.0..sroa_idx, ptr noundef nonnull align 16 dereferenceable(176) %.sroa.4.i.i.i.i33, i64 176, i1 false), !alias.scope !21714 br label %53 -"_ZN4core3ptr191drop_in_place$LT$core..option..Option$LT$core..result..IntoIter$LT$core..result..Result$LT$datafusion_common..stats..ColumnStatistics$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$$GT$17h0c5fe7215e5575f1E.exit56": ; preds = %43, %"_ZN4core3ptr191drop_in_place$LT$core..option..Option$LT$core..result..IntoIter$LT$core..result..Result$LT$datafusion_common..stats..ColumnStatistics$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$$GT$17h0c5fe7215e5575f1E.exit32" +"_ZN4core3ptr191drop_in_place$LT$core..option..Option$LT$core..result..IntoIter$LT$core..result..Result$LT$datafusion_common..stats..ColumnStatistics$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$$GT$17h0c5fe7215e5575f1E.exit57": ; preds = %43, %"_ZN4core3ptr191drop_in_place$LT$core..option..Option$LT$core..result..IntoIter$LT$core..result..Result$LT$datafusion_common..stats..ColumnStatistics$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$$GT$17h0c5fe7215e5575f1E.exit32" store i128 5, ptr %41, align 16 store i128 4, ptr %0, align 16, !alias.scope !21718 br label %53 -53: ; preds = %"_ZN4core3ptr191drop_in_place$LT$core..option..Option$LT$core..result..IntoIter$LT$core..result..Result$LT$datafusion_common..stats..ColumnStatistics$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$$GT$17h0c5fe7215e5575f1E.exit56", %17, %52, %38 +53: ; preds = %"_ZN4core3ptr191drop_in_place$LT$core..option..Option$LT$core..result..IntoIter$LT$core..result..Result$LT$datafusion_common..stats..ColumnStatistics$C$deltalake_core..errors..DeltaTableError$GT$$GT$$GT$$GT$17h0c5fe7215e5575f1E.exit57", %17, %52, %38 ret void } diff --git a/bench/duckdb/optimized/ub_duckdb_func_cast.cpp.ll b/bench/duckdb/optimized/ub_duckdb_func_cast.cpp.ll index c6b30bb9c7c..1e2dfd61c8c 100644 --- a/bench/duckdb/optimized/ub_duckdb_func_cast.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_func_cast.cpp.ll @@ -10347,19 +10347,12 @@ lpad.i.i.i: ; preds = %if.then.i cleanup %8 = load ptr, ptr %agg.tmp.i.i.i, align 8, !tbaa !6 %cmp.not.i5.i.i.i = icmp eq ptr %8, null - br i1 %cmp.not.i5.i.i.i, label %_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit19, label %_ZNKSt14default_deleteIN6duckdb12BindCastInfoEEclEPS1_.exit.i6.i.i.i - -_ZNKSt14default_deleteIN6duckdb12BindCastInfoEEclEPS1_.exit.i6.i.i.i: ; preds = %lpad.i.i.i - %vtable.i.i7.i.i.i = load ptr, ptr %8, align 8, !tbaa !17 - %vfn.i.i8.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i7.i.i.i, i64 8 - %9 = load ptr, ptr %vfn.i.i8.i.i.i, align 8 - call void %9(ptr noundef nonnull align 8 dereferenceable(8) %8) #30 - br label %_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit19 + br i1 %cmp.not.i5.i.i.i, label %_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit19, label %_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit19.sink.split invoke.cont5.thread: ; preds = %_ZNKSt14default_deleteIN6duckdb12BindCastInfoEEclEPS1_.exit.i.i.i.i, %invoke.cont.i.i.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %agg.tmp.i.i.i) - %10 = load ptr, ptr %_M_finish.i, align 8, !tbaa !123 - %incdec.ptr.i = getelementptr inbounds i8, ptr %10, i64 16 + %9 = load ptr, ptr %_M_finish.i, align 8, !tbaa !123 + %incdec.ptr.i = getelementptr inbounds i8, ptr %9, i64 16 store ptr %incdec.ptr.i, ptr %_M_finish.i, align 8, !tbaa !123 br label %_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit @@ -10375,8 +10368,8 @@ invoke.cont5: ; preds = %if.else.i _ZNKSt14default_deleteIN6duckdb11MapCastInfoEEclEPS1_.exit.i: ; preds = %invoke.cont5 %vtable.i.i = load ptr, ptr %.pre27, align 8, !tbaa !17 %vfn.i.i = getelementptr inbounds i8, ptr %vtable.i.i, i64 8 - %11 = load ptr, ptr %vfn.i.i, align 8 - call void %11(ptr noundef nonnull align 8 dereferenceable(64) %.pre27) #30 + %10 = load ptr, ptr %vfn.i.i, align 8 + call void %10(ptr noundef nonnull align 8 dereferenceable(64) %.pre27) #30 br label %_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit _ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit: ; preds = %_ZNKSt14default_deleteIN6duckdb11MapCastInfoEEclEPS1_.exit.i, %invoke.cont5, %invoke.cont5.thread @@ -10384,70 +10377,72 @@ _ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit: ; pre br label %if.end lpad4.body: ; preds = %if.else.i - %12 = landingpad { ptr, i32 } + %11 = landingpad { ptr, i32 } cleanup %.pre = load ptr, ptr %info, align 8, !tbaa !6 %cmp.not.i15 = icmp eq ptr %.pre, null - br i1 %cmp.not.i15, label %_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit19, label %_ZNKSt14default_deleteIN6duckdb11MapCastInfoEEclEPS1_.exit.i16 + br i1 %cmp.not.i15, label %_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit19, label %_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit19.sink.split -_ZNKSt14default_deleteIN6duckdb11MapCastInfoEEclEPS1_.exit.i16: ; preds = %lpad4.body - %vtable.i.i17 = load ptr, ptr %.pre, align 8, !tbaa !17 +_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit19.sink.split: ; preds = %lpad4.body, %lpad.i.i.i + %.pre.sink5 = phi ptr [ %8, %lpad.i.i.i ], [ %.pre, %lpad4.body ] + %eh.lpad-body31.ph = phi { ptr, i32 } [ %7, %lpad.i.i.i ], [ %11, %lpad4.body ] + %vtable.i.i17 = load ptr, ptr %.pre.sink5, align 8, !tbaa !17 %vfn.i.i18 = getelementptr inbounds i8, ptr %vtable.i.i17, i64 8 - %13 = load ptr, ptr %vfn.i.i18, align 8 - call void %13(ptr noundef nonnull align 8 dereferenceable(64) %.pre) #30 + %12 = load ptr, ptr %vfn.i.i18, align 8 + call void %12(ptr noundef nonnull align 8 dereferenceable(8) %.pre.sink5) #30 br label %_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit19 -_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit19: ; preds = %_ZNKSt14default_deleteIN6duckdb11MapCastInfoEEclEPS1_.exit.i16, %lpad4.body, %_ZNKSt14default_deleteIN6duckdb12BindCastInfoEEclEPS1_.exit.i6.i.i.i, %lpad.i.i.i - %eh.lpad-body31 = phi { ptr, i32 } [ %12, %lpad4.body ], [ %12, %_ZNKSt14default_deleteIN6duckdb11MapCastInfoEEclEPS1_.exit.i16 ], [ %7, %_ZNKSt14default_deleteIN6duckdb12BindCastInfoEEclEPS1_.exit.i6.i.i.i ], [ %7, %lpad.i.i.i ] +_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit19: ; preds = %_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit19.sink.split, %lpad4.body, %lpad.i.i.i + %eh.lpad-body31 = phi { ptr, i32 } [ %11, %lpad4.body ], [ %7, %lpad.i.i.i ], [ %eh.lpad-body31.ph, %_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit19.sink.split ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %info) #30 br label %eh.resume if.end: ; preds = %_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit, %entry call void @_ZNK6duckdb12optional_ptrINS_11MapCastInfoEE10CheckValidEv(ptr noundef nonnull align 8 dereferenceable(8) %map_info) - %14 = load ptr, ptr %map_info, align 8, !tbaa !157 + %13 = load ptr, ptr %map_info, align 8, !tbaa !157 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(16) %node, i64 16, i1 false) %cast_data.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %cast_data3.i.i = getelementptr inbounds i8, ptr %node, i64 16 - %15 = load i64, ptr %cast_data3.i.i, align 8, !tbaa !6 - store i64 %15, ptr %cast_data.i.i, align 8, !tbaa !6 + %14 = load i64, ptr %cast_data3.i.i, align 8, !tbaa !6 + store i64 %14, ptr %cast_data.i.i, align 8, !tbaa !6 store ptr null, ptr %cast_data3.i.i, align 8, !tbaa !6 %bind_function.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %bind_function3.i = getelementptr inbounds i8, ptr %node, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %bind_function.i, ptr noundef nonnull align 8 dereferenceable(16) %bind_function3.i, i64 16, i1 false) - invoke void @_ZN6duckdb11MapCastInfo8AddEntryERKNS_11LogicalTypeES3_NS_11MapCastNodeE(ptr noundef nonnull align 8 dereferenceable(64) %14, ptr noundef nonnull align 8 dereferenceable(24) %source, ptr noundef nonnull align 8 dereferenceable(24) %target, ptr noundef nonnull %agg.tmp) + invoke void @_ZN6duckdb11MapCastInfo8AddEntryERKNS_11LogicalTypeES3_NS_11MapCastNodeE(ptr noundef nonnull align 8 dereferenceable(64) %13, ptr noundef nonnull align 8 dereferenceable(24) %source, ptr noundef nonnull align 8 dereferenceable(24) %target, ptr noundef nonnull %agg.tmp) to label %invoke.cont10 unwind label %lpad9 invoke.cont10: ; preds = %if.end - %16 = load ptr, ptr %cast_data.i.i, align 8, !tbaa !6 - %cmp.not.i.i.i = icmp eq ptr %16, null + %15 = load ptr, ptr %cast_data.i.i, align 8, !tbaa !6 + %cmp.not.i.i.i = icmp eq ptr %15, null br i1 %cmp.not.i.i.i, label %_ZN6duckdb11MapCastNodeD2Ev.exit, label %_ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i.i.i _ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i.i.i: ; preds = %invoke.cont10 - %vtable.i.i.i.i = load ptr, ptr %16, align 8, !tbaa !17 + %vtable.i.i.i.i = load ptr, ptr %15, align 8, !tbaa !17 %vfn.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i, i64 8 - %17 = load ptr, ptr %vfn.i.i.i.i, align 8 - call void %17(ptr noundef nonnull align 8 dereferenceable(8) %16) #30 + %16 = load ptr, ptr %vfn.i.i.i.i, align 8 + call void %16(ptr noundef nonnull align 8 dereferenceable(8) %15) #30 br label %_ZN6duckdb11MapCastNodeD2Ev.exit _ZN6duckdb11MapCastNodeD2Ev.exit: ; preds = %_ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i.i.i, %invoke.cont10 ret void lpad9: ; preds = %if.end - %18 = landingpad { ptr, i32 } + %17 = landingpad { ptr, i32 } cleanup - %19 = load ptr, ptr %cast_data.i.i, align 8, !tbaa !6 - %cmp.not.i.i.i22 = icmp eq ptr %19, null + %18 = load ptr, ptr %cast_data.i.i, align 8, !tbaa !6 + %cmp.not.i.i.i22 = icmp eq ptr %18, null br i1 %cmp.not.i.i.i22, label %eh.resume, label %_ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i.i.i23 _ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i.i.i23: ; preds = %lpad9 - %vtable.i.i.i.i24 = load ptr, ptr %19, align 8, !tbaa !17 + %vtable.i.i.i.i24 = load ptr, ptr %18, align 8, !tbaa !17 %vfn.i.i.i.i25 = getelementptr inbounds i8, ptr %vtable.i.i.i.i24, i64 8 - %20 = load ptr, ptr %vfn.i.i.i.i25, align 8 - call void %20(ptr noundef nonnull align 8 dereferenceable(8) %19) #30 + %19 = load ptr, ptr %vfn.i.i.i.i25, align 8 + call void %19(ptr noundef nonnull align 8 dereferenceable(8) %18) #30 br label %eh.resume eh.resume: ; preds = %_ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i.i.i23, %lpad9, %_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit19 - %.pn = phi { ptr, i32 } [ %eh.lpad-body31, %_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit19 ], [ %18, %lpad9 ], [ %18, %_ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i.i.i23 ] + %.pn = phi { ptr, i32 } [ %eh.lpad-body31, %_ZNSt10unique_ptrIN6duckdb11MapCastInfoESt14default_deleteIS1_EED2Ev.exit19 ], [ %17, %lpad9 ], [ %17, %_ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i.i.i23 ] resume { ptr, i32 } %.pn } diff --git a/bench/duckdb/optimized/ub_duckdb_func_map_nested.cpp.ll b/bench/duckdb/optimized/ub_duckdb_func_map_nested.cpp.ll index 36316593857..ba393a4932e 100644 --- a/bench/duckdb/optimized/ub_duckdb_func_map_nested.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_func_map_nested.cpp.ll @@ -901,12 +901,7 @@ for.body.us138.i: ; preds = %for.body.lr.ph.spli if.then.i205: ; preds = %invoke.cont6.i %48 = load i8, ptr %call6, align 8, !tbaa !49 %cmp15.i = icmp eq i8 %48, 2 - br i1 %cmp15.i, label %if.then16.i, label %if.end.i - -if.then16.i: ; preds = %if.then.i205 - %bcmp81.i = call i32 @bcmp(ptr noundef nonnull dereferenceable(16) %28, ptr noundef nonnull dereferenceable(16) %29, i64 16) - %cmp18.i = icmp eq i32 %bcmp81.i, 0 - br label %cleanup44.i + br i1 %cmp15.i, label %cleanup44.i.sink.split, label %if.end.i common.resume: ; preds = %cleanup.action84, %ehcleanup79, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i208, %lpad4.i, %ehcleanup66, %ehcleanup47, %cleanup.action, %ehcleanup, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i %common.resume.op = phi { ptr, i32 } [ %49, %lpad4.i ], [ %.pn177, %ehcleanup47 ], [ %.pn175, %ehcleanup66 ], [ %.pn238, %cleanup.action84 ], [ %85, %ehcleanup79 ], [ %.pn179235, %cleanup.action ], [ %16, %ehcleanup ], [ %16, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %85, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i208 ] @@ -927,9 +922,7 @@ if.end.i: ; preds = %if.then.i205 if.end21.i: ; preds = %if.end.i %mul.i = shl i64 %0, 4 - %bcmp.i = call i32 @bcmp(ptr %28, ptr %29, i64 %mul.i) - %cmp23.i = icmp eq i32 %bcmp.i, 0 - br label %cleanup44.i + br label %cleanup44.i.sink.split for.body.i: ; preds = %for.body.lr.ph.split.i, %for.body.i %i.0135.i = phi i64 [ %inc.i, %for.body.i ], [ 0, %for.body.lr.ph.split.i ] @@ -955,8 +948,14 @@ for.body.i: ; preds = %for.body.lr.ph.spli %or.cond271.not = select i1 %.not.i.i.not, i1 %exitcond.i, i1 false br i1 %or.cond271.not, label %for.body.i, label %cleanup44.i, !llvm.loop !73 -cleanup44.i: ; preds = %for.body.i, %for.body.us138.i, %for.body.us.i, %for.body.us.us.i, %if.end21.i, %if.end.i, %if.then16.i, %for.cond.preheader.i - %retval.4.i = phi i1 [ %cmp18.i, %if.then16.i ], [ %cmp23.i, %if.end21.i ], [ false, %if.end.i ], [ true, %for.cond.preheader.i ], [ %.not.i.us.us.i.not, %for.body.us.us.i ], [ %.not.i.us.i.not, %for.body.us.i ], [ %.not.i.us150.i.not, %for.body.us138.i ], [ %.not.i.i.not, %for.body.i ] +cleanup44.i.sink.split: ; preds = %if.then.i205, %if.end21.i + %mul.i.sink = phi i64 [ %mul.i, %if.end21.i ], [ 16, %if.then.i205 ] + %bcmp.i = call i32 @bcmp(ptr %28, ptr %29, i64 %mul.i.sink) + %cmp23.i = icmp eq i32 %bcmp.i, 0 + br label %cleanup44.i + +cleanup44.i: ; preds = %for.body.i, %for.body.us138.i, %for.body.us.i, %for.body.us.us.i, %cleanup44.i.sink.split, %if.end.i, %for.cond.preheader.i + %retval.4.i = phi i1 [ false, %if.end.i ], [ true, %for.cond.preheader.i ], [ %cmp23.i, %cleanup44.i.sink.split ], [ %.not.i.us.us.i.not, %for.body.us.us.i ], [ %.not.i.us.i.not, %for.body.us.i ], [ %.not.i.us150.i.not, %for.body.us138.i ], [ %.not.i.i.not, %for.body.i ] %_M_refcount.i.i.i.i = getelementptr inbounds i8, ptr %values_data.i, i64 64 %56 = load ptr, ptr %_M_refcount.i.i.i.i, align 8, !tbaa !76 %cmp.not.i.i.i.i.i = icmp eq ptr %56, null diff --git a/bench/duckdb/optimized/ub_duckdb_storage.cpp.ll b/bench/duckdb/optimized/ub_duckdb_storage.cpp.ll index 01e05d6fa6b..e99b0fee6f3 100644 --- a/bench/duckdb/optimized/ub_duckdb_storage.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_storage.cpp.ll @@ -6160,7 +6160,7 @@ _ZN6duckdb10Serializer13WritePropertyINS_11CatalogTypeEEEvtPKcRKT_.exit: ; preds tail call void %5(ptr noundef nonnull align 8 dereferenceable(10) %serializer) %6 = load i8, ptr %type, align 8, !tbaa !355 switch i8 %6, label %sw.default [ - i8 2, label %sw.bb + i8 2, label %sw.epilog i8 8, label %sw.bb4 i8 6, label %sw.bb8 i8 1, label %sw.bb12 @@ -6170,60 +6170,25 @@ _ZN6duckdb10Serializer13WritePropertyINS_11CatalogTypeEEEvtPKcRKT_.exit: ; preds i8 4, label %sw.bb29 ] -sw.bb: ; preds = %_ZN6duckdb10Serializer13WritePropertyINS_11CatalogTypeEEEvtPKcRKT_.exit - %vtable = load ptr, ptr %this, align 8, !tbaa !26 - %vfn = getelementptr inbounds i8, ptr %vtable, i64 48 - %7 = load ptr, ptr %vfn, align 8 - tail call void %7(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(104) %entry1, ptr noundef nonnull align 8 dereferenceable(10) %serializer) - br label %sw.epilog - sw.bb4: ; preds = %_ZN6duckdb10Serializer13WritePropertyINS_11CatalogTypeEEEvtPKcRKT_.exit - %vtable6 = load ptr, ptr %this, align 8, !tbaa !26 - %vfn7 = getelementptr inbounds i8, ptr %vtable6, i64 104 - %8 = load ptr, ptr %vfn7, align 8 - tail call void %8(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(136) %entry1, ptr noundef nonnull align 8 dereferenceable(10) %serializer) br label %sw.epilog sw.bb8: ; preds = %_ZN6duckdb10Serializer13WritePropertyINS_11CatalogTypeEEEvtPKcRKT_.exit - %vtable10 = load ptr, ptr %this, align 8, !tbaa !26 - %vfn11 = getelementptr inbounds i8, ptr %vtable10, i64 72 - %9 = load ptr, ptr %vfn11, align 8 - tail call void %9(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(209) %entry1, ptr noundef nonnull align 8 dereferenceable(10) %serializer) br label %sw.epilog sw.bb12: ; preds = %_ZN6duckdb10Serializer13WritePropertyINS_11CatalogTypeEEEvtPKcRKT_.exit - %vtable14 = load ptr, ptr %this, align 8, !tbaa !26 - %vfn15 = getelementptr inbounds i8, ptr %vtable14, i64 56 - %10 = load ptr, ptr %vfn15, align 8 - tail call void %10(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(248) %entry1, ptr noundef nonnull align 8 dereferenceable(10) %serializer) br label %sw.epilog sw.bb16: ; preds = %_ZN6duckdb10Serializer13WritePropertyINS_11CatalogTypeEEEvtPKcRKT_.exit - %vtable18 = load ptr, ptr %this, align 8, !tbaa !26 - %vfn19 = getelementptr inbounds i8, ptr %vtable18, i64 64 - %11 = load ptr, ptr %vfn19, align 8 - tail call void %11(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(200) %entry1, ptr noundef nonnull align 8 dereferenceable(10) %serializer) br label %sw.epilog sw.bb20: ; preds = %_ZN6duckdb10Serializer13WritePropertyINS_11CatalogTypeEEEvtPKcRKT_.exit - %vtable22 = load ptr, ptr %this, align 8, !tbaa !26 - %vfn23 = getelementptr inbounds i8, ptr %vtable22, i64 80 - %12 = load ptr, ptr %vfn23, align 8 - tail call void %12(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(208) %entry1, ptr noundef nonnull align 8 dereferenceable(10) %serializer) br label %sw.epilog sw.bb24: ; preds = %_ZN6duckdb10Serializer13WritePropertyINS_11CatalogTypeEEEvtPKcRKT_.exit - %vtable27 = load ptr, ptr %this, align 8, !tbaa !26 - %vfn28 = getelementptr inbounds i8, ptr %vtable27, i64 88 - %13 = load ptr, ptr %vfn28, align 8 - tail call void %13(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(208) %entry1, ptr noundef nonnull align 8 dereferenceable(10) %serializer) br label %sw.epilog sw.bb29: ; preds = %_ZN6duckdb10Serializer13WritePropertyINS_11CatalogTypeEEEvtPKcRKT_.exit - %vtable31 = load ptr, ptr %this, align 8, !tbaa !26 - %vfn32 = getelementptr inbounds i8, ptr %vtable31, i64 96 - %14 = load ptr, ptr %vfn32, align 8 - tail call void %14(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(312) %entry1, ptr noundef nonnull align 8 dereferenceable(10) %serializer) br label %sw.epilog sw.default: ; preds = %_ZN6duckdb10Serializer13WritePropertyINS_11CatalogTypeEEEvtPKcRKT_.exit @@ -6242,7 +6207,7 @@ invoke.cont35: ; preds = %invoke.cont to label %unreachable unwind label %lpad34 ehcleanup.thread: ; preds = %sw.default - %15 = landingpad { ptr, i32 } + %7 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp33) #37 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp) #37 @@ -6250,38 +6215,43 @@ ehcleanup.thread: ; preds = %sw.default lpad34: ; preds = %invoke.cont35, %invoke.cont %cleanup.isactive.0 = phi i1 [ false, %invoke.cont35 ], [ true, %invoke.cont ] - %16 = landingpad { ptr, i32 } + %8 = landingpad { ptr, i32 } cleanup - %17 = load ptr, ptr %ref.tmp, align 8, !tbaa !64 - %18 = getelementptr inbounds i8, ptr %ref.tmp, i64 16 - %cmp.i.i.i = icmp eq ptr %17, %18 + %9 = load ptr, ptr %ref.tmp, align 8, !tbaa !64 + %10 = getelementptr inbounds i8, ptr %ref.tmp, i64 16 + %cmp.i.i.i = icmp eq ptr %9, %10 br i1 %cmp.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %ehcleanup _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %lpad34 %_M_string_length.i.i.i = getelementptr inbounds i8, ptr %ref.tmp, i64 8 - %19 = load i64, ptr %_M_string_length.i.i.i, align 8, !tbaa !66 - %cmp3.i.i.i = icmp ult i64 %19, 16 + %11 = load i64, ptr %_M_string_length.i.i.i, align 8, !tbaa !66 + %cmp3.i.i.i = icmp ult i64 %11, 16 call void @llvm.assume(i1 %cmp3.i.i.i) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp33) #37 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp) #37 br i1 %cleanup.isactive.0, label %cleanup.action, label %eh.resume ehcleanup: ; preds = %lpad34 - call void @_ZdlPv(ptr noundef %17) #38 + call void @_ZdlPv(ptr noundef %9) #38 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp33) #37 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp) #37 br i1 %cleanup.isactive.0, label %cleanup.action, label %eh.resume cleanup.action: ; preds = %ehcleanup, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %ehcleanup.thread - %.pn62 = phi { ptr, i32 } [ %15, %ehcleanup.thread ], [ %16, %ehcleanup ], [ %16, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ] + %.pn62 = phi { ptr, i32 } [ %7, %ehcleanup.thread ], [ %8, %ehcleanup ], [ %8, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ] call void @__cxa_free_exception(ptr %exception) #37 br label %eh.resume -sw.epilog: ; preds = %sw.bb29, %sw.bb24, %sw.bb20, %sw.bb16, %sw.bb12, %sw.bb8, %sw.bb4, %sw.bb +sw.epilog: ; preds = %_ZN6duckdb10Serializer13WritePropertyINS_11CatalogTypeEEEvtPKcRKT_.exit, %sw.bb29, %sw.bb24, %sw.bb20, %sw.bb16, %sw.bb12, %sw.bb8, %sw.bb4 + %.sink = phi i64 [ 96, %sw.bb29 ], [ 88, %sw.bb24 ], [ 80, %sw.bb20 ], [ 64, %sw.bb16 ], [ 56, %sw.bb12 ], [ 72, %sw.bb8 ], [ 104, %sw.bb4 ], [ 48, %_ZN6duckdb10Serializer13WritePropertyINS_11CatalogTypeEEEvtPKcRKT_.exit ] + %vtable31 = load ptr, ptr %this, align 8, !tbaa !26 + %vfn32 = getelementptr inbounds i8, ptr %vtable31, i64 %.sink + %12 = load ptr, ptr %vfn32, align 8 + tail call void %12(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(104) %entry1, ptr noundef nonnull align 8 dereferenceable(10) %serializer) ret void eh.resume: ; preds = %cleanup.action, %ehcleanup, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i - %.pn61 = phi { ptr, i32 } [ %16, %ehcleanup ], [ %.pn62, %cleanup.action ], [ %16, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ] + %.pn61 = phi { ptr, i32 } [ %8, %ehcleanup ], [ %.pn62, %cleanup.action ], [ %8, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ] resume { ptr, i32 } %.pn61 unreachable: ; preds = %invoke.cont35 diff --git a/bench/eastl/optimized/EATest.cpp.ll b/bench/eastl/optimized/EATest.cpp.ll index 82cc4f79fac..8b742a28cb6 100644 --- a/bench/eastl/optimized/EATest.cpp.ll +++ b/bench/eastl/optimized/EATest.cpp.ll @@ -1006,18 +1006,12 @@ if.then: ; preds = %entry %vtable = load ptr, ptr %this, align 8 %vfn = getelementptr inbounds i8, ptr %vtable, i64 72 %0 = load ptr, ptr %vfn, align 8 - br i1 %or.cond, label %if.then6, label %if.else - -if.then6: ; preds = %if.then - %call9 = call noundef zeroext i1 %0(ptr noundef nonnull align 8 dereferenceable(80) %this, i1 noundef zeroext false, ptr noundef nonnull %buffer) - br label %return - -if.else: ; preds = %if.then - %call13 = call noundef zeroext i1 %0(ptr noundef nonnull align 8 dereferenceable(80) %this, i1 noundef zeroext false, ptr noundef %pFormat) + %buffer.pFormat = select i1 %or.cond, ptr %buffer, ptr %pFormat + %call13 = call noundef zeroext i1 %0(ptr noundef nonnull align 8 dereferenceable(80) %this, i1 noundef zeroext false, ptr noundef %buffer.pFormat) br label %return -return: ; preds = %entry, %if.else, %if.then6 - %retval.0 = phi i1 [ %call9, %if.then6 ], [ %call13, %if.else ], [ true, %entry ] +return: ; preds = %if.then, %entry + %retval.0 = phi i1 [ true, %entry ], [ %call13, %if.then ] ret i1 %retval.0 } diff --git a/bench/eastl/optimized/TestVector.cpp.ll b/bench/eastl/optimized/TestVector.cpp.ll index 20f8a10561d..3121194db29 100644 --- a/bench/eastl/optimized/TestVector.cpp.ll +++ b/bench/eastl/optimized/TestVector.cpp.ll @@ -16508,10 +16508,7 @@ if.then9: ; preds = %if.then3 if.then.i.i.i.i: ; preds = %if.then9 %3 = ptrtoint ptr %add.ptr16 to i64 %sub.i.i.i.i = sub i64 %3, %sub.ptr.rhs.cast6 - %idx.neg.i.i.i.i = sub i64 0, %sub.i.i.i.i - %add.ptr.i.i.i.i = getelementptr inbounds %struct.HasAddressOfOperator, ptr %2, i64 %idx.neg.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i, ptr align 1 %position, i64 %sub.i.i.i.i, i1 false) - br label %if.end + br label %if.end.sink.split if.else: ; preds = %if.then3 %cmp.i.i.i.i.i.i30 = icmp eq ptr %position, %1 @@ -16519,12 +16516,17 @@ if.else: ; preds = %if.then3 if.end.i.i.i.i.i.i31: ; preds = %if.else %add.ptr23 = getelementptr inbounds %struct.HasAddressOfOperator, ptr %1, i64 %n - %idx.neg24 = sub i64 0, %sub.ptr.sub7 - %add.ptr25 = getelementptr inbounds %struct.HasAddressOfOperator, ptr %add.ptr23, i64 %idx.neg24 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr25, ptr align 1 %position, i64 %sub.ptr.sub7, i1 false) + br label %if.end.sink.split + +if.end.sink.split: ; preds = %if.then.i.i.i.i, %if.end.i.i.i.i.i.i31 + %sub.ptr.sub7.sink45 = phi i64 [ %sub.ptr.sub7, %if.end.i.i.i.i.i.i31 ], [ %sub.i.i.i.i, %if.then.i.i.i.i ] + %add.ptr23.sink = phi ptr [ %add.ptr23, %if.end.i.i.i.i.i.i31 ], [ %2, %if.then.i.i.i.i ] + %idx.neg24 = sub i64 0, %sub.ptr.sub7.sink45 + %add.ptr25 = getelementptr inbounds %struct.HasAddressOfOperator, ptr %add.ptr23.sink, i64 %idx.neg24 + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr25, ptr align 1 %position, i64 %sub.ptr.sub7.sink45, i1 false) br label %if.end -if.end: ; preds = %if.end.i.i.i.i.i.i31, %if.else, %if.then.i.i.i.i, %if.then9 +if.end: ; preds = %if.end.sink.split, %if.else, %if.then9 %4 = load ptr, ptr %mpEnd, align 8 %add.ptr29 = getelementptr inbounds %struct.HasAddressOfOperator, ptr %4, i64 %n store ptr %add.ptr29, ptr %mpEnd, align 8 diff --git a/bench/faiss/optimized/IndexBinaryHNSW.cpp.ll b/bench/faiss/optimized/IndexBinaryHNSW.cpp.ll index 671db24061b..1d6b7373afd 100644 --- a/bench/faiss/optimized/IndexBinaryHNSW.cpp.ll +++ b/bench/faiss/optimized/IndexBinaryHNSW.cpp.ll @@ -1471,63 +1471,49 @@ define noalias noundef nonnull ptr @_ZNK5faiss15IndexBinaryHNSW21get_distance_co 9: ; preds = %5 %10 = getelementptr inbounds i8, ptr %0, i64 12 %11 = load i32, ptr %10, align 4 - switch i32 %11, label %24 [ - i32 4, label %12 - i32 8, label %14 - i32 16, label %16 - i32 20, label %18 - i32 32, label %20 - i32 64, label %22 + switch i32 %11, label %17 [ + i32 4, label %_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_121BuildDistanceComputerEJPNS_15IndexBinaryFlatEEEENT_1TEiRS5_DpT0_.exit + i32 8, label %12 + i32 16, label %13 + i32 20, label %14 + i32 32, label %15 + i32 64, label %16 ] 12: ; preds = %9 - %13 = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #26 - store ptr getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_114FlatHammingDisINS_16HammingComputer4EEE, i64 16), ptr %13, align 8 br label %_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_121BuildDistanceComputerEJPNS_15IndexBinaryFlatEEEENT_1TEiRS5_DpT0_.exit -14: ; preds = %9 - %15 = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #26 - store ptr getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_114FlatHammingDisINS_16HammingComputer8EEE, i64 16), ptr %15, align 8 - br label %_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_121BuildDistanceComputerEJPNS_15IndexBinaryFlatEEEENT_1TEiRS5_DpT0_.exit - -16: ; preds = %9 - %17 = tail call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #26 - store ptr getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_114FlatHammingDisINS_17HammingComputer16EEE, i64 16), ptr %17, align 8 +13: ; preds = %9 br label %_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_121BuildDistanceComputerEJPNS_15IndexBinaryFlatEEEENT_1TEiRS5_DpT0_.exit -18: ; preds = %9 - %19 = tail call noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #26 - store ptr getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_114FlatHammingDisINS_17HammingComputer20EEE, i64 16), ptr %19, align 8 +14: ; preds = %9 br label %_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_121BuildDistanceComputerEJPNS_15IndexBinaryFlatEEEENT_1TEiRS5_DpT0_.exit -20: ; preds = %9 - %21 = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #26 - store ptr getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_114FlatHammingDisINS_17HammingComputer32EEE, i64 16), ptr %21, align 8 +15: ; preds = %9 br label %_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_121BuildDistanceComputerEJPNS_15IndexBinaryFlatEEEENT_1TEiRS5_DpT0_.exit -22: ; preds = %9 - %23 = tail call noalias noundef nonnull dereferenceable(96) ptr @_Znwm(i64 noundef 96) #26 - store ptr getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_114FlatHammingDisINS_17HammingComputer64EEE, i64 16), ptr %23, align 8 +16: ; preds = %9 br label %_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_121BuildDistanceComputerEJPNS_15IndexBinaryFlatEEEENT_1TEiRS5_DpT0_.exit -24: ; preds = %9 - %25 = tail call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #26 - store ptr getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_114FlatHammingDisINS_22HammingComputerDefaultEEE, i64 16), ptr %25, align 8 +17: ; preds = %9 br label %_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_121BuildDistanceComputerEJPNS_15IndexBinaryFlatEEEENT_1TEiRS5_DpT0_.exit -_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_121BuildDistanceComputerEJPNS_15IndexBinaryFlatEEEENT_1TEiRS5_DpT0_.exit: ; preds = %12, %14, %16, %18, %20, %22, %24 - %.sink5.i = phi ptr [ %25, %24 ], [ %23, %22 ], [ %21, %20 ], [ %19, %18 ], [ %17, %16 ], [ %15, %14 ], [ %13, %12 ] - %26 = getelementptr inbounds i8, ptr %6, i64 32 - %27 = getelementptr inbounds i8, ptr %6, i64 12 - %28 = getelementptr inbounds i8, ptr %.sink5.i, i64 8 - %29 = load i32, ptr %27, align 4 - store i32 %29, ptr %28, align 8 - %30 = getelementptr inbounds i8, ptr %.sink5.i, i64 16 - %31 = load ptr, ptr %26, align 8 - store ptr %31, ptr %30, align 8 - %32 = getelementptr inbounds i8, ptr %.sink5.i, i64 24 - store i64 0, ptr %32, align 8 - ret ptr %.sink5.i +_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_121BuildDistanceComputerEJPNS_15IndexBinaryFlatEEEENT_1TEiRS5_DpT0_.exit: ; preds = %9, %12, %13, %14, %15, %16, %17 + %.sink8.i = phi i64 [ 48, %17 ], [ 96, %16 ], [ 64, %15 ], [ 56, %14 ], [ 48, %13 ], [ 40, %12 ], [ 40, %9 ] + %.sink6.i = phi ptr [ getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_114FlatHammingDisINS_22HammingComputerDefaultEEE, i64 16), %17 ], [ getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_114FlatHammingDisINS_17HammingComputer64EEE, i64 16), %16 ], [ getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_114FlatHammingDisINS_17HammingComputer32EEE, i64 16), %15 ], [ getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_114FlatHammingDisINS_17HammingComputer20EEE, i64 16), %14 ], [ getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_114FlatHammingDisINS_17HammingComputer16EEE, i64 16), %13 ], [ getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_114FlatHammingDisINS_16HammingComputer8EEE, i64 16), %12 ], [ getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_114FlatHammingDisINS_16HammingComputer4EEE, i64 16), %9 ] + %18 = getelementptr inbounds i8, ptr %6, i64 32 + %19 = getelementptr inbounds i8, ptr %6, i64 12 + %20 = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef %.sink8.i) #26 + store ptr %.sink6.i, ptr %20, align 8 + %21 = getelementptr inbounds i8, ptr %20, i64 8 + %22 = load i32, ptr %19, align 4 + store i32 %22, ptr %21, align 8 + %23 = getelementptr inbounds i8, ptr %20, i64 16 + %24 = load ptr, ptr %18, align 8 + store ptr %24, ptr %23, align 8 + %25 = getelementptr inbounds i8, ptr %20, i64 24 + store i64 0, ptr %25, align 8 + ret ptr %20 } ; Function Attrs: nounwind diff --git a/bench/faiss/optimized/IndexBinaryIVF.cpp.ll b/bench/faiss/optimized/IndexBinaryIVF.cpp.ll index 26878260711..84625bc371a 100644 --- a/bench/faiss/optimized/IndexBinaryIVF.cpp.ll +++ b/bench/faiss/optimized/IndexBinaryIVF.cpp.ll @@ -1649,78 +1649,47 @@ _ZNKSt9type_infoeqERKS_.exit.thread: ; preds = %111, %_ZNKSt9type_i define noalias noundef nonnull ptr @_ZNK5faiss14IndexBinaryIVF23get_InvertedListScannerEb(ptr nocapture noundef nonnull readonly align 8 dereferenceable(232) %0, i1 noundef zeroext %1) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { %3 = getelementptr inbounds i8, ptr %0, i64 12 %4 = load i32, ptr %3, align 4 - %5 = sext i32 %4 to i64 - switch i32 %4, label %30 [ - i32 4, label %6 - i32 8, label %10 - i32 16, label %14 - i32 20, label %18 - i32 32, label %22 - i32 64, label %26 + switch i32 %4, label %10 [ + i32 4, label %_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_112BuildScannerEJibEEENT_1TEiRS3_DpT0_.exit + i32 8, label %5 + i32 16, label %6 + i32 20, label %7 + i32 32, label %8 + i32 64, label %9 ] -6: ; preds = %2 - %7 = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #30 - store ptr getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_118IVFBinaryScannerL2INS_16HammingComputer4EEE, i64 16), ptr %7, align 8 - %8 = getelementptr inbounds i8, ptr %7, i64 16 - store i64 %5, ptr %8, align 8 - %9 = getelementptr inbounds i8, ptr %7, i64 24 - br label %_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_112BuildScannerEJibEEENT_1TEiRS3_DpT0_.exit - -10: ; preds = %2 - %11 = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #30 - store ptr getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_118IVFBinaryScannerL2INS_16HammingComputer8EEE, i64 16), ptr %11, align 8 - %12 = getelementptr inbounds i8, ptr %11, i64 16 - store i64 %5, ptr %12, align 8 - %13 = getelementptr inbounds i8, ptr %11, i64 24 +5: ; preds = %2 br label %_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_112BuildScannerEJibEEENT_1TEiRS3_DpT0_.exit -14: ; preds = %2 - %15 = tail call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #30 - store ptr getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_118IVFBinaryScannerL2INS_17HammingComputer16EEE, i64 16), ptr %15, align 8 - %16 = getelementptr inbounds i8, ptr %15, i64 24 - store i64 %5, ptr %16, align 8 - %17 = getelementptr inbounds i8, ptr %15, i64 32 +6: ; preds = %2 br label %_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_112BuildScannerEJibEEENT_1TEiRS3_DpT0_.exit -18: ; preds = %2 - %19 = tail call noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #30 - store ptr getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_118IVFBinaryScannerL2INS_17HammingComputer20EEE, i64 16), ptr %19, align 8 - %20 = getelementptr inbounds i8, ptr %19, i64 32 - store i64 %5, ptr %20, align 8 - %21 = getelementptr inbounds i8, ptr %19, i64 40 +7: ; preds = %2 br label %_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_112BuildScannerEJibEEENT_1TEiRS3_DpT0_.exit -22: ; preds = %2 - %23 = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #30 - store ptr getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_118IVFBinaryScannerL2INS_17HammingComputer32EEE, i64 16), ptr %23, align 8 - %24 = getelementptr inbounds i8, ptr %23, i64 40 - store i64 %5, ptr %24, align 8 - %25 = getelementptr inbounds i8, ptr %23, i64 48 +8: ; preds = %2 br label %_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_112BuildScannerEJibEEENT_1TEiRS3_DpT0_.exit -26: ; preds = %2 - %27 = tail call noalias noundef nonnull dereferenceable(96) ptr @_Znwm(i64 noundef 96) #30 - store ptr getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_118IVFBinaryScannerL2INS_17HammingComputer64EEE, i64 16), ptr %27, align 8 - %28 = getelementptr inbounds i8, ptr %27, i64 72 - store i64 %5, ptr %28, align 8 - %29 = getelementptr inbounds i8, ptr %27, i64 80 +9: ; preds = %2 br label %_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_112BuildScannerEJibEEENT_1TEiRS3_DpT0_.exit -30: ; preds = %2 - %31 = tail call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #30 - store ptr getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_118IVFBinaryScannerL2INS_22HammingComputerDefaultEEE, i64 16), ptr %31, align 8 - %32 = getelementptr inbounds i8, ptr %31, i64 24 - store i64 %5, ptr %32, align 8 - %33 = getelementptr inbounds i8, ptr %31, i64 32 +10: ; preds = %2 br label %_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_112BuildScannerEJibEEENT_1TEiRS3_DpT0_.exit -_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_112BuildScannerEJibEEENT_1TEiRS3_DpT0_.exit: ; preds = %6, %10, %14, %18, %22, %26, %30 - %.sink.i = phi ptr [ %33, %30 ], [ %29, %26 ], [ %25, %22 ], [ %21, %18 ], [ %17, %14 ], [ %13, %10 ], [ %9, %6 ] - %.0.i = phi ptr [ %31, %30 ], [ %27, %26 ], [ %23, %22 ], [ %19, %18 ], [ %15, %14 ], [ %11, %10 ], [ %7, %6 ] - %34 = zext i1 %1 to i8 - store i8 %34, ptr %.sink.i, align 8 - ret ptr %.0.i +_ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_112BuildScannerEJibEEENT_1TEiRS3_DpT0_.exit: ; preds = %2, %5, %6, %7, %8, %9, %10 + %.sink6.i = phi i64 [ 48, %10 ], [ 96, %9 ], [ 64, %8 ], [ 56, %7 ], [ 48, %6 ], [ 40, %5 ], [ 40, %2 ] + %.sink.i = phi ptr [ getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_118IVFBinaryScannerL2INS_22HammingComputerDefaultEEE, i64 16), %10 ], [ getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_118IVFBinaryScannerL2INS_17HammingComputer64EEE, i64 16), %9 ], [ getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_118IVFBinaryScannerL2INS_17HammingComputer32EEE, i64 16), %8 ], [ getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_118IVFBinaryScannerL2INS_17HammingComputer20EEE, i64 16), %7 ], [ getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_118IVFBinaryScannerL2INS_17HammingComputer16EEE, i64 16), %6 ], [ getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_118IVFBinaryScannerL2INS_16HammingComputer8EEE, i64 16), %5 ], [ getelementptr inbounds (i8, ptr @_ZTVN5faiss12_GLOBAL__N_118IVFBinaryScannerL2INS_16HammingComputer4EEE, i64 16), %2 ] + %.sink4.i = phi i64 [ 24, %10 ], [ 72, %9 ], [ 40, %8 ], [ 32, %7 ], [ 24, %6 ], [ 16, %5 ], [ 16, %2 ] + %.sink2.i = phi i64 [ 32, %10 ], [ 80, %9 ], [ 48, %8 ], [ 40, %7 ], [ 32, %6 ], [ 24, %5 ], [ 24, %2 ] + %11 = zext i1 %1 to i8 + %12 = sext i32 %4 to i64 + %13 = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef %.sink6.i) #30 + store ptr %.sink.i, ptr %13, align 8 + %14 = getelementptr inbounds i8, ptr %13, i64 %.sink4.i + store i64 %12, ptr %14, align 8 + %15 = getelementptr inbounds i8, ptr %13, i64 %.sink2.i + store i8 %11, ptr %15, align 8 + ret ptr %13 } ; Function Attrs: mustprogress uwtable diff --git a/bench/flac/optimized/vorbiscomment.c.ll b/bench/flac/optimized/vorbiscomment.c.ll index 825dca88331..220b338e80a 100644 --- a/bench/flac/optimized/vorbiscomment.c.ll +++ b/bench/flac/optimized/vorbiscomment.c.ll @@ -47,11 +47,7 @@ if.then.i18.i: ; preds = %local_strdup.exit.i local_strdup.exit19.i: ; preds = %local_strdup.exit.i %call2.i = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %call.i16.i, i32 noundef 61) #11 %cmp3.i = icmp eq ptr %call2.i, null - br i1 %cmp3.i, label %if.then4.i, label %if.end5.i - -if.then4.i: ; preds = %local_strdup.exit19.i - tail call void @free(ptr noundef nonnull %call.i16.i) #10 - br label %free_field.exit + br i1 %cmp3.i, label %free_field.exit, label %if.end5.i if.end5.i: ; preds = %local_strdup.exit19.i %incdec.ptr.i = getelementptr inbounds i8, ptr %call2.i, i64 1 @@ -65,19 +61,15 @@ for.body.i: ; preds = %if.end5.i, %for.inc %.fr31.i = phi i8 [ %.fr.i, %for.inc.i ], [ %.fr28.i, %if.end5.i ] %q.030.i = phi ptr [ %incdec.ptr17.i, %for.inc.i ], [ %call.i16.i, %if.end5.i ] %cmp6.i = icmp slt i8 %.fr31.i, 32 - br i1 %cmp6.i, label %if.then15.i, label %switch.early.test.i + br i1 %cmp6.i, label %free_field.exit, label %switch.early.test.i switch.early.test.i: ; preds = %for.body.i switch i8 %.fr31.i, label %for.inc.i [ - i8 127, label %if.then15.i - i8 126, label %if.then15.i - i8 61, label %if.then15.i + i8 127, label %free_field.exit + i8 126, label %free_field.exit + i8 61, label %free_field.exit ] -if.then15.i: ; preds = %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %for.body.i - tail call void @free(ptr noundef %call.i16.i) #10 - br label %free_field.exit - for.inc.i: ; preds = %switch.early.test.i %incdec.ptr17.i = getelementptr inbounds i8, ptr %q.030.i, i64 1 %1 = load i8, ptr %incdec.ptr17.i, align 1 @@ -103,8 +95,9 @@ if.then.i26.i: ; preds = %local_strdup.exit23 tail call fastcc void @die(ptr noundef nonnull @.str.2) unreachable -free_field.exit: ; preds = %if.then4.i, %if.then15.i - %storemerge = phi ptr [ @.str, %if.then15.i ], [ @.str.1, %if.then4.i ] +free_field.exit: ; preds = %for.body.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %local_strdup.exit19.i + %storemerge = phi ptr [ @.str.1, %local_strdup.exit19.i ], [ @.str, %switch.early.test.i ], [ @.str, %switch.early.test.i ], [ @.str, %switch.early.test.i ], [ @.str, %for.body.i ] + tail call void @free(ptr noundef %call.i16.i) #10 store ptr %storemerge, ptr %violation, align 8 tail call void @free(ptr noundef nonnull %call.i.i) #10 br label %return diff --git a/bench/folly/optimized/CPUThreadPoolExecutor.cpp.ll b/bench/folly/optimized/CPUThreadPoolExecutor.cpp.ll index 6498eba414c..78b29fdd815 100644 --- a/bench/folly/optimized/CPUThreadPoolExecutor.cpp.ll +++ b/bench/folly/optimized/CPUThreadPoolExecutor.cpp.ll @@ -7346,14 +7346,12 @@ _ZN5folly13hazptr_detail21shared_head_tail_listINS_10hazptr_objISt6atomicEES3_E4 if.then3.i: ; preds = %_ZN5folly13hazptr_detail21shared_head_tail_listINS_10hazptr_objISt6atomicEES3_E4pushEPS4_.exit.i %13 = atomicrmw xchg ptr %safe_list_top_.i.i, i64 0 acq_rel, align 8 %atomic-temp.0.i.i.i8.i = inttoptr i64 %13 to ptr - tail call void @_ZN5folly17hazptr_obj_cohortISt6atomicE12reclaim_listEPNS_10hazptr_objIS1_EE(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef %atomic-temp.0.i.i.i8.i) - br label %if.end + br label %if.end.sink.split if.else.i: ; preds = %while.end12 %next_.i.i = getelementptr inbounds i8, ptr %this, i64 8 store ptr null, ptr %next_.i.i, align 8, !tbaa !154 - tail call void @_ZN5folly17hazptr_obj_cohortISt6atomicE12reclaim_listEPNS_10hazptr_objIS1_EE(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull %this) - br label %if.end + br label %if.end.sink.split if.else: ; preds = %entry %next_.i.i.i = getelementptr inbounds i8, ptr %this, i64 8 @@ -7422,7 +7420,12 @@ terminate.lpad.i.i: ; preds = %if.end11.i.i.i tail call void @__clang_call_terminate(ptr %36) #36 unreachable -if.end: ; preds = %if.end11.i.i.i, %if.else.i, %if.then3.i, %_ZN5folly13hazptr_detail21shared_head_tail_listINS_10hazptr_objISt6atomicEES3_E4pushEPS4_.exit.i +if.end.sink.split: ; preds = %if.then3.i, %if.else.i + %this.sink = phi ptr [ %this, %if.else.i ], [ %atomic-temp.0.i.i.i8.i, %if.then3.i ] + tail call void @_ZN5folly17hazptr_obj_cohortISt6atomicE12reclaim_listEPNS_10hazptr_objIS1_EE(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef %this.sink) + br label %if.end + +if.end: ; preds = %if.end.sink.split, %if.end11.i.i.i, %_ZN5folly13hazptr_detail21shared_head_tail_listINS_10hazptr_objISt6atomicEES3_E4pushEPS4_.exit.i ret void } diff --git a/bench/freetype/optimized/ftbase.c.ll b/bench/freetype/optimized/ftbase.c.ll index ffd141d3a85..d15b7071667 100644 --- a/bench/freetype/optimized/ftbase.c.ll +++ b/bench/freetype/optimized/ftbase.c.ll @@ -7012,46 +7012,42 @@ define i32 @FT_Attach_File(ptr noundef %0, ptr noundef %1) local_unnamed_addr #0 store ptr %11, ptr %16, align 8 %17 = tail call i32 @FT_Stream_Open(ptr noundef nonnull %14, ptr noundef nonnull %1) #34 %.not41.i = icmp eq i32 %17, 0 - br i1 %.not41.i, label %FT_Stream_New.exit, label %ft_mem_free.exit.i - -ft_mem_free.exit.i: ; preds = %15 - %18 = getelementptr inbounds i8, ptr %11, i64 16 - %19 = load ptr, ptr %18, align 8 - tail call void %19(ptr noundef nonnull %11, ptr noundef nonnull %14) #34 - br label %FT_Attach_Stream.exit + br i1 %.not41.i, label %FT_Stream_New.exit, label %FT_Attach_Stream.exit.sink.split FT_Stream_New.exit: ; preds = %15 - %20 = getelementptr inbounds i8, ptr %6, i64 24 + %18 = getelementptr inbounds i8, ptr %6, i64 24 + %19 = load ptr, ptr %18, align 8 + %20 = getelementptr inbounds i8, ptr %19, i64 160 %21 = load ptr, ptr %20, align 8 - %22 = getelementptr inbounds i8, ptr %21, i64 160 - %23 = load ptr, ptr %22, align 8 - %.not20.i = icmp eq ptr %23, null - br i1 %.not20.i, label %26, label %24 + %.not20.i = icmp eq ptr %21, null + br i1 %.not20.i, label %24, label %22 -24: ; preds = %FT_Stream_New.exit - %25 = tail call i32 %23(ptr noundef nonnull %0, ptr noundef nonnull %14) #34 - br label %26 +22: ; preds = %FT_Stream_New.exit + %23 = tail call i32 %21(ptr noundef nonnull %0, ptr noundef nonnull %14) #34 + br label %24 -26: ; preds = %24, %FT_Stream_New.exit - %.1.i = phi i32 [ %25, %24 ], [ 7, %FT_Stream_New.exit ] - %27 = load ptr, ptr %16, align 8 - %28 = getelementptr inbounds i8, ptr %14, i64 48 - %29 = load ptr, ptr %28, align 8 - %.not5.i.i.i = icmp eq ptr %29, null - br i1 %.not5.i.i.i, label %ft_mem_free.exit.i.i, label %30 +24: ; preds = %22, %FT_Stream_New.exit + %.1.i = phi i32 [ %23, %22 ], [ 7, %FT_Stream_New.exit ] + %25 = load ptr, ptr %16, align 8 + %26 = getelementptr inbounds i8, ptr %14, i64 48 + %27 = load ptr, ptr %26, align 8 + %.not5.i.i.i = icmp eq ptr %27, null + br i1 %.not5.i.i.i, label %FT_Attach_Stream.exit.sink.split, label %28 -30: ; preds = %26 - tail call void %29(ptr noundef nonnull %14) #34 - br label %ft_mem_free.exit.i.i +28: ; preds = %24 + tail call void %27(ptr noundef nonnull %14) #34 + br label %FT_Attach_Stream.exit.sink.split -ft_mem_free.exit.i.i: ; preds = %26, %30 - %31 = getelementptr inbounds i8, ptr %27, i64 16 - %32 = load ptr, ptr %31, align 8 - tail call void %32(ptr noundef %27, ptr noundef nonnull %14) #34 +FT_Attach_Stream.exit.sink.split: ; preds = %28, %24, %15 + %.sink16 = phi ptr [ %11, %15 ], [ %25, %24 ], [ %25, %28 ] + %.0.ph = phi i32 [ %17, %15 ], [ %.1.i, %24 ], [ %.1.i, %28 ] + %29 = getelementptr inbounds i8, ptr %.sink16, i64 16 + %30 = load ptr, ptr %29, align 8 + tail call void %30(ptr noundef %.sink16, ptr noundef nonnull %14) #34 br label %FT_Attach_Stream.exit -FT_Attach_Stream.exit: ; preds = %ft_mem_free.exit.i, %10, %7, %ft_mem_free.exit.i.i, %4, %3, %2 - %.0 = phi i32 [ 6, %2 ], [ 35, %3 ], [ 34, %4 ], [ %.1.i, %ft_mem_free.exit.i.i ], [ %17, %ft_mem_free.exit.i ], [ 64, %10 ], [ 33, %7 ] +FT_Attach_Stream.exit: ; preds = %FT_Attach_Stream.exit.sink.split, %10, %7, %4, %3, %2 + %.0 = phi i32 [ 6, %2 ], [ 35, %3 ], [ 34, %4 ], [ 64, %10 ], [ 33, %7 ], [ %.0.ph, %FT_Attach_Stream.exit.sink.split ] ret i32 %.0 } @@ -19283,9 +19279,9 @@ define internal i32 @raccess_guess_darwin_ufs_export(ptr nocapture noundef reado store ptr %9, ptr %14, align 8 %15 = tail call i32 @FT_Stream_Open(ptr noundef nonnull %12, ptr noundef nonnull %7) #34 %.not41.i.i = icmp eq i32 %15, 0 - br i1 %.not41.i.i, label %18, label %ft_mem_free.exit.i.i + br i1 %.not41.i.i, label %18, label %raccess_guess_linux_double_from_file_name.exit.thread19 -ft_mem_free.exit.i.i: ; preds = %13 +raccess_guess_linux_double_from_file_name.exit.thread19: ; preds = %13 %16 = getelementptr inbounds i8, ptr %9, i64 16 %17 = load ptr, ptr %16, align 8 tail call void %17(ptr noundef nonnull %9, ptr noundef nonnull %12) #34 @@ -19314,8 +19310,8 @@ raccess_guess_linux_double_from_file_name.exit: ; preds = %18, %23 store ptr %7, ptr %3, align 8 br label %29 -ft_mem_free.exit: ; preds = %8, %ft_mem_free.exit.i.i, %raccess_guess_linux_double_from_file_name.exit - %.0.i18 = phi i32 [ %19, %raccess_guess_linux_double_from_file_name.exit ], [ 64, %8 ], [ %15, %ft_mem_free.exit.i.i ] +ft_mem_free.exit: ; preds = %8, %raccess_guess_linux_double_from_file_name.exit.thread19, %raccess_guess_linux_double_from_file_name.exit + %.0.i18 = phi i32 [ %19, %raccess_guess_linux_double_from_file_name.exit ], [ %15, %raccess_guess_linux_double_from_file_name.exit.thread19 ], [ 64, %8 ] %27 = getelementptr inbounds i8, ptr %6, i64 16 %28 = load ptr, ptr %27, align 8 tail call void %28(ptr noundef %6, ptr noundef nonnull %7) #34 @@ -19455,9 +19451,9 @@ define internal i32 @raccess_guess_linux_double(ptr nocapture noundef readonly % store ptr %9, ptr %14, align 8 %15 = tail call i32 @FT_Stream_Open(ptr noundef nonnull %12, ptr noundef nonnull %7) #34 %.not41.i.i = icmp eq i32 %15, 0 - br i1 %.not41.i.i, label %18, label %ft_mem_free.exit.i.i + br i1 %.not41.i.i, label %18, label %raccess_guess_linux_double_from_file_name.exit.thread19 -ft_mem_free.exit.i.i: ; preds = %13 +raccess_guess_linux_double_from_file_name.exit.thread19: ; preds = %13 %16 = getelementptr inbounds i8, ptr %9, i64 16 %17 = load ptr, ptr %16, align 8 tail call void %17(ptr noundef nonnull %9, ptr noundef nonnull %12) #34 @@ -19486,8 +19482,8 @@ raccess_guess_linux_double_from_file_name.exit: ; preds = %18, %23 store ptr %7, ptr %3, align 8 br label %29 -ft_mem_free.exit: ; preds = %8, %ft_mem_free.exit.i.i, %raccess_guess_linux_double_from_file_name.exit - %.0.i18 = phi i32 [ %19, %raccess_guess_linux_double_from_file_name.exit ], [ 64, %8 ], [ %15, %ft_mem_free.exit.i.i ] +ft_mem_free.exit: ; preds = %8, %raccess_guess_linux_double_from_file_name.exit.thread19, %raccess_guess_linux_double_from_file_name.exit + %.0.i18 = phi i32 [ %19, %raccess_guess_linux_double_from_file_name.exit ], [ %15, %raccess_guess_linux_double_from_file_name.exit.thread19 ], [ 64, %8 ] %27 = getelementptr inbounds i8, ptr %6, i64 16 %28 = load ptr, ptr %27, align 8 tail call void %28(ptr noundef %6, ptr noundef nonnull %7) #34 @@ -19519,9 +19515,9 @@ define internal i32 @raccess_guess_linux_netatalk(ptr nocapture noundef readonly store ptr %9, ptr %14, align 8 %15 = tail call i32 @FT_Stream_Open(ptr noundef nonnull %12, ptr noundef nonnull %7) #34 %.not41.i.i = icmp eq i32 %15, 0 - br i1 %.not41.i.i, label %18, label %ft_mem_free.exit.i.i + br i1 %.not41.i.i, label %18, label %raccess_guess_linux_double_from_file_name.exit.thread19 -ft_mem_free.exit.i.i: ; preds = %13 +raccess_guess_linux_double_from_file_name.exit.thread19: ; preds = %13 %16 = getelementptr inbounds i8, ptr %9, i64 16 %17 = load ptr, ptr %16, align 8 tail call void %17(ptr noundef nonnull %9, ptr noundef nonnull %12) #34 @@ -19550,8 +19546,8 @@ raccess_guess_linux_double_from_file_name.exit: ; preds = %18, %23 store ptr %7, ptr %3, align 8 br label %29 -ft_mem_free.exit: ; preds = %8, %ft_mem_free.exit.i.i, %raccess_guess_linux_double_from_file_name.exit - %.0.i18 = phi i32 [ %19, %raccess_guess_linux_double_from_file_name.exit ], [ 64, %8 ], [ %15, %ft_mem_free.exit.i.i ] +ft_mem_free.exit: ; preds = %8, %raccess_guess_linux_double_from_file_name.exit.thread19, %raccess_guess_linux_double_from_file_name.exit + %.0.i18 = phi i32 [ %19, %raccess_guess_linux_double_from_file_name.exit ], [ %15, %raccess_guess_linux_double_from_file_name.exit.thread19 ], [ 64, %8 ] %27 = getelementptr inbounds i8, ptr %6, i64 16 %28 = load ptr, ptr %27, align 8 tail call void %28(ptr noundef %6, ptr noundef nonnull %7) #34 diff --git a/bench/git/optimized/bloom.ll b/bench/git/optimized/bloom.ll index b72028dff54..7459b24e672 100644 --- a/bench/git/optimized/bloom.ll +++ b/bench/git/optimized/bloom.ll @@ -480,21 +480,17 @@ if.end19: ; preds = %if.end16 %parents = getelementptr inbounds i8, ptr %c, i64 48 %33 = load ptr, ptr %parents, align 8 %tobool21.not = icmp eq ptr %33, null - br i1 %tobool21.not, label %if.else, label %if.then22 + br i1 %tobool21.not, label %if.end28, label %if.then22 if.then22: ; preds = %if.end19 %34 = load ptr, ptr %33, align 8 %oid = getelementptr inbounds i8, ptr %34, i64 4 - %oid25 = getelementptr inbounds i8, ptr %c, i64 4 - call void @diff_tree_oid(ptr noundef nonnull %oid, ptr noundef nonnull %oid25, ptr noundef nonnull @.str, ptr noundef nonnull %diffopt) #14 br label %if.end28 -if.else: ; preds = %if.end19 +if.end28: ; preds = %if.end19, %if.then22 + %.sink = phi ptr [ %oid, %if.then22 ], [ null, %if.end19 ] %oid27 = getelementptr inbounds i8, ptr %c, i64 4 - call void @diff_tree_oid(ptr noundef null, ptr noundef nonnull %oid27, ptr noundef nonnull @.str, ptr noundef nonnull %diffopt) #14 - br label %if.end28 - -if.end28: ; preds = %if.else, %if.then22 + call void @diff_tree_oid(ptr noundef %.sink, ptr noundef nonnull %oid27, ptr noundef nonnull @.str, ptr noundef nonnull %diffopt) #14 call void @diffcore_std(ptr noundef nonnull %diffopt) #14 %35 = load i32, ptr getelementptr inbounds (i8, ptr @diff_queued_diff, i64 12), align 4 %36 = load i32, ptr %max_changed_paths, align 4 diff --git a/bench/git/optimized/init-db.ll b/bench/git/optimized/init-db.ll index dc10f4b8f84..485e2aabe48 100644 --- a/bench/git/optimized/init-db.ll +++ b/bench/git/optimized/init-db.ll @@ -576,23 +576,14 @@ if.then233: ; preds = %if.end231 if.end235: ; preds = %if.then233, %if.end231 %34 = phi ptr [ %call234, %if.then233 ], [ %33, %if.end231 ] - br i1 %tobool19352, label %if.then237, label %if.else238 - -if.then237: ; preds = %if.end235 - call void @set_git_work_tree(ptr noundef nonnull %cond.i3950) #13 - br label %if.end239 - -if.else238: ; preds = %if.end235 - call void @set_git_work_tree(ptr noundef %34) #13 - br label %if.end239 - -if.end239: ; preds = %if.else238, %if.then237 + %cond.i3950. = select i1 %tobool19352, ptr %cond.i3950, ptr %34 + call void @set_git_work_tree(ptr noundef %cond.i3950.) #13 %call240 = call ptr @get_git_work_tree() #13 %call241 = call i32 @access(ptr noundef %call240, i32 noundef 1) #13 %tobool242.not = icmp eq i32 %call241, 0 br i1 %tobool242.not, label %do.end261, label %if.then243 -if.then243: ; preds = %if.end239 +if.then243: ; preds = %if.end235 %call244 = call fastcc ptr @_(ptr noundef nonnull @.str.34) %call245 = call ptr @get_git_work_tree() #13 call void (ptr, ...) @die_errno(ptr noundef %call244, ptr noundef %call245) #14 @@ -615,7 +606,7 @@ if.then253: ; preds = %if.end251 call void @set_git_work_tree(ptr noundef nonnull %cond.i3950) #13 br label %do.end261 -do.end261: ; preds = %if.end251, %if.then253, %if.end239 +do.end261: ; preds = %if.end251, %if.then253, %if.end235 %36 = load i32, ptr %flags, align 4 %or = or i32 %36, 2 store i32 %or, ptr %flags, align 4 diff --git a/bench/git/optimized/list-objects-filter-options.ll b/bench/git/optimized/list-objects-filter-options.ll index 49abffb7ee8..a348c561f22 100644 --- a/bench/git/optimized/list-objects-filter-options.ll +++ b/bench/git/optimized/list-objects-filter-options.ll @@ -572,7 +572,6 @@ if.end: ; preds = %entry if.then2: ; preds = %if.end %call.i = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %arg) #13 tail call void @strbuf_add(ptr noundef nonnull %filter_options, ptr noundef %arg, i64 noundef %call.i) #14 - %call = call i32 @gently_parse_list_objects_filter(ptr noundef nonnull %filter_options, ptr noundef %arg, ptr noundef nonnull %errbuf) br label %if.end37 if.end.i: ; preds = %if.end @@ -723,12 +722,12 @@ do.end: ; preds = %do.body8.do.end_cri %24 = load ptr, ptr %sub29, align 8 %arrayidx = getelementptr inbounds %struct.list_objects_filter_options, ptr %24, i64 %18 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %arrayidx, ptr noundef nonnull align 8 dereferenceable(88) @__const.list_objects_filter_init.blank, i64 88, i1 false) - %call36 = call i32 @gently_parse_list_objects_filter(ptr noundef %arrayidx, ptr noundef %arg, ptr noundef nonnull %errbuf) br label %if.end37 if.end37: ; preds = %do.end, %if.then2 - %parse_error.0 = phi i32 [ %call36, %do.end ], [ %call, %if.then2 ] - %tobool38.not = icmp eq i32 %parse_error.0, 0 + %arrayidx.sink = phi ptr [ %arrayidx, %do.end ], [ %filter_options, %if.then2 ] + %call36 = call i32 @gently_parse_list_objects_filter(ptr noundef %arrayidx.sink, ptr noundef %arg, ptr noundef nonnull %errbuf) + %tobool38.not = icmp eq i32 %call36, 0 br i1 %tobool38.not, label %if.end41, label %if.then39 if.then39: ; preds = %if.end37 diff --git a/bench/glslang/optimized/IntermTraverse.cpp.ll b/bench/glslang/optimized/IntermTraverse.cpp.ll index 0048ec0b3e9..d22a375b347 100644 --- a/bench/glslang/optimized/IntermTraverse.cpp.ll +++ b/bench/glslang/optimized/IntermTraverse.cpp.ll @@ -255,7 +255,7 @@ define noundef nonnull align 8 dereferenceable(40) ptr @_ZNK7glslang13TIntermSym %5 = tail call noundef i32 %4(ptr noundef nonnull align 8 dereferenceable(184) %0) #7 %6 = icmp eq i32 %5, 16 %7 = load ptr, ptr %0, align 8 - br i1 %6, label %8, label %16 + br i1 %6, label %8, label %14 8: ; preds = %1 %9 = getelementptr inbounds i8, ptr %7, i64 240 @@ -263,19 +263,18 @@ define noundef nonnull align 8 dereferenceable(40) ptr @_ZNK7glslang13TIntermSym %11 = tail call noundef nonnull align 8 dereferenceable(152) ptr %10(ptr noundef nonnull align 8 dereferenceable(184) %0) #7 %12 = load ptr, ptr %11, align 8 %13 = getelementptr inbounds i8, ptr %12, i64 40 - %14 = load ptr, ptr %13, align 8 - %15 = tail call noundef nonnull align 8 dereferenceable(40) ptr %14(ptr noundef nonnull align 8 dereferenceable(152) %11) #7 - br label %20 + br label %16 -16: ; preds = %1 - %17 = getelementptr inbounds i8, ptr %7, i64 400 - %18 = load ptr, ptr %17, align 8 - %19 = tail call noundef nonnull align 8 dereferenceable(40) ptr %18(ptr noundef nonnull align 8 dereferenceable(264) %0) #7 - br label %20 +14: ; preds = %1 + %15 = getelementptr inbounds i8, ptr %7, i64 400 + br label %16 -20: ; preds = %16, %8 - %.0 = phi ptr [ %15, %8 ], [ %19, %16 ] - ret ptr %.0 +16: ; preds = %14, %8 + %.sink3 = phi ptr [ %15, %14 ], [ %13, %8 ] + %.sink = phi ptr [ %0, %14 ], [ %11, %8 ] + %17 = load ptr, ptr %.sink3, align 8 + %18 = tail call noundef nonnull align 8 dereferenceable(40) ptr %17(ptr noundef nonnull align 8 dereferenceable(152) %.sink) #7 + ret ptr %18 } ; Function Attrs: mustprogress nounwind uwtable @@ -1445,58 +1444,39 @@ _ZN7glslang16TIntermTraverser14incrementDepthEP11TIntermNode.exit: ; preds = %22 %49 = getelementptr inbounds i8, ptr %1, i64 11 %50 = load i8, ptr %49, align 1 %51 = trunc i8 %50 to i1 - br i1 %51, label %52, label %63 - -52: ; preds = %_ZN7glslang16TIntermTraverser14incrementDepthEP11TIntermNode.exit - %53 = getelementptr inbounds i8, ptr %0, i64 40 + %. = select i1 %51, i64 40, i64 32 + %.27 = select i1 %51, i64 32, i64 40 + %52 = getelementptr inbounds i8, ptr %0, i64 %. + %53 = load ptr, ptr %52, align 8 %54 = load ptr, ptr %53, align 8 - %55 = load ptr, ptr %54, align 8 - %56 = getelementptr inbounds i8, ptr %55, i64 16 - %57 = load ptr, ptr %56, align 8 - tail call void %57(ptr noundef nonnull align 8 dereferenceable(364) %54, ptr noundef nonnull %1) #7 - %58 = getelementptr inbounds i8, ptr %0, i64 32 + %55 = getelementptr inbounds i8, ptr %54, i64 16 + %56 = load ptr, ptr %55, align 8 + tail call void %56(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull %1) #7 + %57 = getelementptr inbounds i8, ptr %0, i64 %.27 + %58 = load ptr, ptr %57, align 8 %59 = load ptr, ptr %58, align 8 - %60 = load ptr, ptr %59, align 8 - %61 = getelementptr inbounds i8, ptr %60, i64 16 - %62 = load ptr, ptr %61, align 8 - tail call void %62(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull %1) #7 - br label %74 + %60 = getelementptr inbounds i8, ptr %59, i64 16 + %61 = load ptr, ptr %60, align 8 + tail call void %61(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull %1) #7 + %62 = load i32, ptr %11, align 4 + %63 = add nsw i32 %62, -1 + store i32 %63, ptr %11, align 4 + %64 = load ptr, ptr %18, align 8 + %65 = getelementptr inbounds i8, ptr %64, i64 -8 + store ptr %65, ptr %18, align 8 + %66 = getelementptr inbounds i8, ptr %1, i64 10 + %67 = load i8, ptr %66, align 2 + %68 = trunc i8 %67 to i1 + br i1 %68, label %69, label %.critedge -63: ; preds = %_ZN7glslang16TIntermTraverser14incrementDepthEP11TIntermNode.exit - %64 = getelementptr inbounds i8, ptr %0, i64 32 - %65 = load ptr, ptr %64, align 8 - %66 = load ptr, ptr %65, align 8 - %67 = getelementptr inbounds i8, ptr %66, i64 16 - %68 = load ptr, ptr %67, align 8 - tail call void %68(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull %1) #7 - %69 = getelementptr inbounds i8, ptr %0, i64 40 - %70 = load ptr, ptr %69, align 8 - %71 = load ptr, ptr %70, align 8 - %72 = getelementptr inbounds i8, ptr %71, i64 16 - %73 = load ptr, ptr %72, align 8 - tail call void %73(ptr noundef nonnull align 8 dereferenceable(364) %70, ptr noundef nonnull %1) #7 - br label %74 - -74: ; preds = %63, %52 - %75 = load i32, ptr %11, align 4 - %76 = add nsw i32 %75, -1 - store i32 %76, ptr %11, align 4 - %77 = load ptr, ptr %18, align 8 - %78 = getelementptr inbounds i8, ptr %77, i64 -8 - store ptr %78, ptr %18, align 8 - %79 = getelementptr inbounds i8, ptr %1, i64 10 - %80 = load i8, ptr %79, align 2 - %81 = trunc i8 %80 to i1 - br i1 %81, label %82, label %.critedge - -82: ; preds = %74 - %83 = load ptr, ptr %1, align 8 - %84 = getelementptr inbounds i8, ptr %83, i64 80 - %85 = load ptr, ptr %84, align 8 - %86 = tail call noundef zeroext i1 %85(ptr noundef nonnull align 8 dereferenceable(56) %1, i32 noundef 2, ptr noundef nonnull %0) #7 +69: ; preds = %_ZN7glslang16TIntermTraverser14incrementDepthEP11TIntermNode.exit + %70 = load ptr, ptr %1, align 8 + %71 = getelementptr inbounds i8, ptr %70, i64 80 + %72 = load ptr, ptr %71, align 8 + %73 = tail call noundef zeroext i1 %72(ptr noundef nonnull align 8 dereferenceable(56) %1, i32 noundef 2, ptr noundef nonnull %0) #7 br label %.critedge -.critedge: ; preds = %6, %82, %74 +.critedge: ; preds = %6, %69, %_ZN7glslang16TIntermTraverser14incrementDepthEP11TIntermNode.exit ret void } diff --git a/bench/glslang/optimized/Pp.cpp.ll b/bench/glslang/optimized/Pp.cpp.ll index 438ad7bb53f..033cb5c8d59 100644 --- a/bench/glslang/optimized/Pp.cpp.ll +++ b/bench/glslang/optimized/Pp.cpp.ll @@ -4719,66 +4719,59 @@ define noundef i32 @_ZN7glslang10TPpContext8CPPerrorEPNS_8TPpTokenE(ptr noundef %8 = getelementptr inbounds i8, ptr %0, i64 136 br label %9 -9: ; preds = %24, %2 - %.0 = phi i32 [ %6, %2 ], [ %26, %24 ] - switch i32 %.0, label %12 [ - i32 -1, label %27 - i32 10, label %27 - i32 160, label %10 - i32 159, label %10 - i32 158, label %10 - i32 157, label %10 - i32 156, label %10 - i32 155, label %10 - i32 154, label %10 - i32 153, label %10 - i32 152, label %10 +9: ; preds = %19, %2 + %.0 = phi i32 [ %6, %2 ], [ %22, %19 ] + switch i32 %.0, label %10 [ + i32 -1, label %23 + i32 10, label %23 + i32 160, label %19 + i32 159, label %19 + i32 158, label %19 + i32 157, label %19 + i32 156, label %19 + i32 155, label %19 + i32 154, label %19 + i32 153, label %19 + i32 152, label %19 ] -10: ; preds = %9, %9, %9, %9, %9, %9, %9, %9, %9 - %11 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull %7) #17 - br label %24 +10: ; preds = %9 + %11 = add i32 %.0, -161 + %or.cond17 = icmp ult i32 %11, 2 + br i1 %or.cond17, label %19, label %12 -12: ; preds = %9 - %13 = add i32 %.0, -161 - %or.cond17 = icmp ult i32 %13, 2 - br i1 %or.cond17, label %14, label %16 - -14: ; preds = %12 - %15 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull %7) #17 - br label %24 - -16: ; preds = %12 - %17 = sext i32 %.0 to i64 - %18 = load ptr, ptr %8, align 8 - %19 = getelementptr inbounds ptr, ptr %18, i64 %17 - %20 = load ptr, ptr %19, align 8 - %21 = getelementptr inbounds i8, ptr %20, i64 8 - %22 = load ptr, ptr %21, align 8 - %23 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef %22) #17 - br label %24 +12: ; preds = %10 + %13 = sext i32 %.0 to i64 + %14 = load ptr, ptr %8, align 8 + %15 = getelementptr inbounds ptr, ptr %14, i64 %13 + %16 = load ptr, ptr %15, align 8 + %17 = getelementptr inbounds i8, ptr %16, i64 8 + %18 = load ptr, ptr %17, align 8 + br label %19 -24: ; preds = %14, %16, %10 - %25 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.42) #17 - %26 = call noundef i32 @_ZN7glslang10TPpContext9scanTokenEPNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(969) %0, ptr noundef %1) +19: ; preds = %10, %9, %9, %9, %9, %9, %9, %9, %9, %9, %12 + %.sink = phi ptr [ %18, %12 ], [ %7, %9 ], [ %7, %9 ], [ %7, %9 ], [ %7, %9 ], [ %7, %9 ], [ %7, %9 ], [ %7, %9 ], [ %7, %9 ], [ %7, %9 ], [ %7, %10 ] + %20 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef %.sink) #17 + %21 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.42) #17 + %22 = call noundef i32 @_ZN7glslang10TPpContext9scanTokenEPNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(969) %0, ptr noundef %1) br label %9, !llvm.loop !45 -27: ; preds = %9, %9 - %28 = getelementptr inbounds i8, ptr %0, i64 256 - %29 = load ptr, ptr %28, align 8 - %30 = getelementptr inbounds i8, ptr %4, i64 12 - %31 = load i32, ptr %30, align 4 - %32 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %3) #17 - %33 = load ptr, ptr %29, align 8 - %34 = getelementptr inbounds i8, ptr %33, i64 472 - %35 = load ptr, ptr %34, align 8 - call void %35(ptr noundef nonnull align 8 dereferenceable(1280) %29, i32 noundef %31, ptr noundef %32) #17 - %36 = load ptr, ptr %28, align 8 - %37 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %3) #17 - %38 = load ptr, ptr %36, align 8 - %39 = getelementptr inbounds i8, ptr %38, i64 360 - %40 = load ptr, ptr %39, align 8 - call void (ptr, ptr, ptr, ptr, ptr, ...) %40(ptr noundef nonnull align 8 dereferenceable(1280) %36, ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef %37, ptr noundef nonnull @.str.50, ptr noundef nonnull @.str.2) #17 +23: ; preds = %9, %9 + %24 = getelementptr inbounds i8, ptr %0, i64 256 + %25 = load ptr, ptr %24, align 8 + %26 = getelementptr inbounds i8, ptr %4, i64 12 + %27 = load i32, ptr %26, align 4 + %28 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %3) #17 + %29 = load ptr, ptr %25, align 8 + %30 = getelementptr inbounds i8, ptr %29, i64 472 + %31 = load ptr, ptr %30, align 8 + call void %31(ptr noundef nonnull align 8 dereferenceable(1280) %25, i32 noundef %27, ptr noundef %28) #17 + %32 = load ptr, ptr %24, align 8 + %33 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %3) #17 + %34 = load ptr, ptr %32, align 8 + %35 = getelementptr inbounds i8, ptr %34, i64 360 + %36 = load ptr, ptr %35, align 8 + call void (ptr, ptr, ptr, ptr, ptr, ...) %36(ptr noundef nonnull align 8 dereferenceable(1280) %32, ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef %33, ptr noundef nonnull @.str.50, ptr noundef nonnull @.str.2) #17 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #17 ret i32 10 } diff --git a/bench/glslang/optimized/ShaderLang.cpp.ll b/bench/glslang/optimized/ShaderLang.cpp.ll index c120f5f99ab..5e3f00814bc 100644 --- a/bench/glslang/optimized/ShaderLang.cpp.ll +++ b/bench/glslang/optimized/ShaderLang.cpp.ll @@ -3167,7 +3167,7 @@ define void @ShSetEncryptionMethod(ptr nocapture noundef readnone %0) local_unna ; Function Attrs: mustprogress nounwind uwtable define noundef ptr @ShGetInfoLog(ptr noundef %0) local_unnamed_addr #3 { %2 = icmp eq ptr %0, null - br i1 %2, label %34, label %3 + br i1 %2, label %28, label %3 3: ; preds = %1 %4 = load ptr, ptr %0, align 8 @@ -3176,46 +3176,41 @@ define noundef ptr @ShGetInfoLog(ptr noundef %0) local_unnamed_addr #3 { %7 = tail call noundef ptr %6(ptr noundef nonnull align 8 dereferenceable(16) %0) #24 %.not = icmp eq ptr %7, null %8 = load ptr, ptr %0, align 8 - br i1 %.not, label %17, label %9 + br i1 %.not, label %11, label %9 9: ; preds = %3 %10 = getelementptr inbounds i8, ptr %8, i64 16 - %11 = load ptr, ptr %10, align 8 - %12 = tail call noundef ptr %11(ptr noundef nonnull align 8 dereferenceable(16) %0) #24 - %13 = load ptr, ptr %12, align 8 - %14 = getelementptr inbounds i8, ptr %13, i64 48 - %15 = load ptr, ptr %14, align 8 - %16 = tail call noundef nonnull align 8 dereferenceable(96) ptr %15(ptr noundef nonnull align 8 dereferenceable(29) %12) #24 - br label %30 + br label %18 -17: ; preds = %3 - %18 = getelementptr inbounds i8, ptr %8, i64 24 - %19 = load ptr, ptr %18, align 8 - %20 = tail call noundef ptr %19(ptr noundef nonnull align 8 dereferenceable(16) %0) #24 - %.not12 = icmp eq ptr %20, null - br i1 %.not12, label %34, label %21 +11: ; preds = %3 + %12 = getelementptr inbounds i8, ptr %8, i64 24 + %13 = load ptr, ptr %12, align 8 + %14 = tail call noundef ptr %13(ptr noundef nonnull align 8 dereferenceable(16) %0) #24 + %.not12 = icmp eq ptr %14, null + br i1 %.not12, label %28, label %15 -21: ; preds = %17 - %22 = load ptr, ptr %0, align 8 - %23 = getelementptr inbounds i8, ptr %22, i64 24 - %24 = load ptr, ptr %23, align 8 - %25 = tail call noundef ptr %24(ptr noundef nonnull align 8 dereferenceable(16) %0) #24 - %26 = load ptr, ptr %25, align 8 - %27 = getelementptr inbounds i8, ptr %26, i64 112 - %28 = load ptr, ptr %27, align 8 - %29 = tail call noundef nonnull align 8 dereferenceable(96) ptr %28(ptr noundef nonnull align 8 dereferenceable(72) %25) #24 - br label %30 +15: ; preds = %11 + %16 = load ptr, ptr %0, align 8 + %17 = getelementptr inbounds i8, ptr %16, i64 24 + br label %18 -30: ; preds = %21, %9 - %.0 = phi ptr [ %16, %9 ], [ %29, %21 ] - %31 = getelementptr inbounds i8, ptr %.0, i64 48 - %32 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %31) #24 - tail call void @_ZN7glslang13TInfoSinkBase6appendEPKc(ptr noundef nonnull align 8 dereferenceable(48) %.0, ptr noundef %32) #24 - %33 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %.0) #24 - br label %34 +18: ; preds = %15, %9 + %.sink = phi ptr [ %17, %15 ], [ %10, %9 ] + %.sink16 = phi i64 [ 112, %15 ], [ 48, %9 ] + %19 = load ptr, ptr %.sink, align 8 + %20 = tail call noundef ptr %19(ptr noundef nonnull align 8 dereferenceable(16) %0) #24 + %21 = load ptr, ptr %20, align 8 + %22 = getelementptr inbounds i8, ptr %21, i64 %.sink16 + %23 = load ptr, ptr %22, align 8 + %24 = tail call noundef nonnull align 8 dereferenceable(96) ptr %23(ptr noundef nonnull align 8 dereferenceable(29) %20) #24 + %25 = getelementptr inbounds i8, ptr %24, i64 48 + %26 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %25) #24 + tail call void @_ZN7glslang13TInfoSinkBase6appendEPKc(ptr noundef nonnull align 8 dereferenceable(48) %24, ptr noundef %26) #24 + %27 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %24) #24 + br label %28 -34: ; preds = %17, %1, %30 - %.010 = phi ptr [ %33, %30 ], [ null, %1 ], [ null, %17 ] +28: ; preds = %11, %1, %18 + %.010 = phi ptr [ %27, %18 ], [ null, %1 ], [ null, %11 ] ret ptr %.010 } diff --git a/bench/graphviz/optimized/SparseMatrix.c.ll b/bench/graphviz/optimized/SparseMatrix.c.ll index 3a07adccc6c..2a9cd4492f8 100644 --- a/bench/graphviz/optimized/SparseMatrix.c.ll +++ b/bench/graphviz/optimized/SparseMatrix.c.ll @@ -6986,7 +6986,7 @@ define noundef ptr @SparseMatrix_get_submatrix(ptr nocapture noundef readonly %0 %13 = icmp slt i32 %1, 1 %14 = icmp slt i32 %2, 1 %or.cond = or i1 %13, %14 - br i1 %or.cond, label %336, label %15 + br i1 %or.cond, label %333, label %15 15: ; preds = %5 %16 = sext i32 %10 to i64 @@ -7213,12 +7213,11 @@ gv_calloc.exit260: ; preds = %.thread306, %36 %.0219.lcssa = phi i32 [ 0, %.loopexit351 ], [ %.1, %.loopexit350 ] %86 = getelementptr inbounds i8, ptr %0, i64 16 %87 = load i32, ptr %86, align 8 - switch i32 %87, label %331 [ + switch i32 %87, label %.sink.split.sink.split [ i32 1, label %88 i32 2, label %150 i32 4, label %222 i32 8, label %284 - i32 16, label %330 ] 88: ; preds = %._crit_edge382 @@ -7716,37 +7715,33 @@ gv_calloc.exit304: ; preds = %.thread328, %299 %exitcond466.not = icmp eq i64 %indvars.iv.next463, %wide.trip.count465 br i1 %exitcond466.not, label %.loopexit343, label %.lr.ph391 -330: ; preds = %._crit_edge382 - tail call void @free(ptr noundef %29) #16 - tail call void @free(ptr noundef %43) #16 - br label %336 - -331: ; preds = %._crit_edge382 - tail call void @free(ptr noundef %29) #16 - tail call void @free(ptr noundef %43) #16 - br label %336 - .loopexit343: ; preds = %.loopexit348, %.loopexit346, %gv_calloc.exit284, %.loopexit, %gv_calloc.exit304, %gv_calloc.exit296, %gv_calloc.exit284.preheader, %gv_calloc.exit272 %.0244 = phi ptr [ %120, %gv_calloc.exit272 ], [ %179, %gv_calloc.exit284.preheader ], [ %254, %gv_calloc.exit296 ], [ null, %gv_calloc.exit304 ], [ %120, %.loopexit ], [ %179, %gv_calloc.exit284 ], [ %254, %.loopexit346 ], [ null, %.loopexit348 ] %.0237 = phi ptr [ %121, %gv_calloc.exit272 ], [ %180, %gv_calloc.exit284.preheader ], [ %255, %gv_calloc.exit296 ], [ %306, %gv_calloc.exit304 ], [ %121, %.loopexit ], [ %180, %gv_calloc.exit284 ], [ %255, %.loopexit346 ], [ %306, %.loopexit348 ] %.0236 = phi ptr [ %122, %gv_calloc.exit272 ], [ %181, %gv_calloc.exit284.preheader ], [ %256, %gv_calloc.exit296 ], [ %307, %gv_calloc.exit304 ], [ %122, %.loopexit ], [ %181, %gv_calloc.exit284 ], [ %256, %.loopexit346 ], [ %307, %.loopexit348 ] %.8 = phi i32 [ 0, %gv_calloc.exit272 ], [ 0, %gv_calloc.exit284.preheader ], [ 0, %gv_calloc.exit296 ], [ 0, %gv_calloc.exit304 ], [ %.5, %.loopexit ], [ %.10, %gv_calloc.exit284 ], [ %.14, %.loopexit346 ], [ %.18, %.loopexit348 ] - %332 = getelementptr inbounds i8, ptr %0, i64 56 - %333 = load i64, ptr %332, align 8 - %334 = tail call fastcc noundef ptr @SparseMatrix_from_coordinate_arrays_internal(i32 noundef %.8, i32 noundef %1, i32 noundef %2, ptr noundef readonly %.0236, ptr noundef readonly %.0237, ptr noundef readonly %.0244, i32 noundef %87, i64 noundef %333, i32 noundef 1) + %330 = getelementptr inbounds i8, ptr %0, i64 56 + %331 = load i64, ptr %330, align 8 + %332 = tail call fastcc noundef ptr @SparseMatrix_from_coordinate_arrays_internal(i32 noundef %.8, i32 noundef %1, i32 noundef %2, ptr noundef readonly %.0236, ptr noundef readonly %.0237, ptr noundef readonly %.0244, i32 noundef %87, i64 noundef %331, i32 noundef 1) tail call void @free(ptr noundef %43) #16 tail call void @free(ptr noundef %29) #16 tail call void @free(ptr noundef %.0236) #16 tail call void @free(ptr noundef %.0237) #16 %.not254 = icmp eq ptr %.0244, null - br i1 %.not254, label %336, label %335 + br i1 %.not254, label %333, label %.sink.split + +.sink.split.sink.split: ; preds = %._crit_edge382 + tail call void @free(ptr noundef %29) #16 + br label %.sink.split -335: ; preds = %.loopexit343 - tail call void @free(ptr noundef nonnull %.0244) #16 - br label %336 +.sink.split: ; preds = %.sink.split.sink.split, %.loopexit343 + %.0244.sink = phi ptr [ %.0244, %.loopexit343 ], [ %43, %.sink.split.sink.split ] + %.0.ph = phi ptr [ %332, %.loopexit343 ], [ null, %.sink.split.sink.split ] + tail call void @free(ptr noundef %.0244.sink) #16 + br label %333 -336: ; preds = %.loopexit343, %335, %5, %331, %330 - %.0 = phi ptr [ null, %331 ], [ null, %330 ], [ null, %5 ], [ %334, %335 ], [ %334, %.loopexit343 ] +333: ; preds = %.sink.split, %.loopexit343, %5 + %.0 = phi ptr [ null, %5 ], [ %332, %.loopexit343 ], [ %.0.ph, %.sink.split ] ret ptr %.0 } diff --git a/bench/graphviz/optimized/dotinit.c.ll b/bench/graphviz/optimized/dotinit.c.ll index efc18585744..19d43d9115b 100644 --- a/bench/graphviz/optimized/dotinit.c.ll +++ b/bench/graphviz/optimized/dotinit.c.ll @@ -435,7 +435,7 @@ define internal fastcc void @dot_cleanup_graph(ptr noundef %0) unnamed_addr #0 { ._crit_edge: ; preds = %.lr.ph, %1 %4 = tail call ptr @agbindrec(ptr noundef %0, ptr noundef nonnull @.str.5, i32 noundef 0, i32 noundef 1) #14 %.not21 = icmp eq ptr %4, null - br i1 %.not21, label %47, label %5 + br i1 %.not21, label %44, label %5 5: ; preds = %._crit_edge %6 = getelementptr inbounds i8, ptr %0, i64 16 @@ -455,7 +455,7 @@ define internal fastcc void @dot_cleanup_graph(ptr noundef %0) unnamed_addr #0 { %17 = getelementptr inbounds i8, ptr %16, i64 264 %18 = load ptr, ptr %17, align 8 %.not22 = icmp eq ptr %18, null - br i1 %.not22, label %41, label %19 + br i1 %.not22, label %38, label %19 19: ; preds = %5 %20 = getelementptr inbounds i8, ptr %16, i64 344 @@ -496,30 +496,24 @@ define internal fastcc void @dot_cleanup_graph(ptr noundef %0) unnamed_addr #0 { %35 = icmp eq i32 %34, -1 %36 = getelementptr inbounds i8, ptr %.lcssa, i64 264 %37 = load ptr, ptr %36, align 8 - br i1 %35, label %38, label %40 - -38: ; preds = %._crit_edge31 - %39 = getelementptr inbounds i8, ptr %37, i64 -80 - tail call void @free(ptr noundef nonnull %39) #14 - br label %41 - -40: ; preds = %._crit_edge31 - tail call void @free(ptr noundef %37) #14 - br label %41 - -41: ; preds = %38, %40, %5 - %42 = tail call ptr @agroot(ptr noundef nonnull %0) #14 - %.not24 = icmp eq ptr %0, %42 - br i1 %.not24, label %47, label %43 - -43: ; preds = %41 - %44 = load ptr, ptr %6, align 8 - %45 = getelementptr inbounds i8, ptr %44, i64 24 - %46 = load ptr, ptr %45, align 8 - tail call void @free_label(ptr noundef %46) #14 - br label %47 + %.sink.idx = select i1 %35, i64 -80, i64 0 + %.sink = getelementptr inbounds i8, ptr %37, i64 %.sink.idx + tail call void @free(ptr noundef %.sink) #14 + br label %38 + +38: ; preds = %._crit_edge31, %5 + %39 = tail call ptr @agroot(ptr noundef nonnull %0) #14 + %.not24 = icmp eq ptr %0, %39 + br i1 %.not24, label %44, label %40 + +40: ; preds = %38 + %41 = load ptr, ptr %6, align 8 + %42 = getelementptr inbounds i8, ptr %41, i64 24 + %43 = load ptr, ptr %42, align 8 + tail call void @free_label(ptr noundef %43) #14 + br label %44 -47: ; preds = %._crit_edge, %43, %41 +44: ; preds = %._crit_edge, %40, %38 ret void } diff --git a/bench/graphviz/optimized/mainwindow.cpp.ll b/bench/graphviz/optimized/mainwindow.cpp.ll index 9079ce2c22b..0b3756b4caa 100644 --- a/bench/graphviz/optimized/mainwindow.cpp.ll +++ b/bench/graphviz/optimized/mainwindow.cpp.ll @@ -6151,45 +6151,38 @@ define void @_ZN11CMainWindow7slotRunEP8MdiChild(ptr nocapture noundef nonnull a %.not = icmp eq ptr %1, null %3 = getelementptr inbounds i8, ptr %0, i64 240 %4 = load ptr, ptr %3, align 8 - br i1 %.not, label %7, label %5 + br i1 %.not, label %5, label %_ZN11CMainWindow14activeMdiChildEv.exit 5: ; preds = %2 - %6 = tail call noundef i32 @_ZN12CFrmSettings11runSettingsEP8MdiChild(ptr noundef nonnull align 8 dereferenceable(152) %4, ptr noundef nonnull %1) - br label %25 - -7: ; preds = %2 - %8 = getelementptr inbounds i8, ptr %0, i64 40 - %9 = load ptr, ptr %8, align 8 - %10 = tail call noundef ptr @_ZNK8QMdiArea15activeSubWindowEv(ptr noundef nonnull align 8 dereferenceable(40) %9) - %.not.i = icmp eq ptr %10, null - br i1 %.not.i, label %_ZN11CMainWindow14activeMdiChildEv.exit, label %11 + %6 = getelementptr inbounds i8, ptr %0, i64 40 + %7 = load ptr, ptr %6, align 8 + %8 = tail call noundef ptr @_ZNK8QMdiArea15activeSubWindowEv(ptr noundef nonnull align 8 dereferenceable(40) %7) + %.not.i = icmp eq ptr %8, null + br i1 %.not.i, label %_ZN11CMainWindow14activeMdiChildEv.exit, label %9 -11: ; preds = %7 - %12 = tail call noundef ptr @_ZNK13QMdiSubWindow6widgetEv(ptr noundef nonnull align 8 dereferenceable(40) %10) +9: ; preds = %5 + %10 = tail call noundef ptr @_ZNK13QMdiSubWindow6widgetEv(ptr noundef nonnull align 8 dereferenceable(40) %8) + %11 = load ptr, ptr %10, align 8 + %12 = getelementptr inbounds i8, ptr %11, i64 8 %13 = load ptr, ptr %12, align 8 - %14 = getelementptr inbounds i8, ptr %13, i64 8 - %15 = load ptr, ptr %14, align 8 - %16 = tail call noundef ptr %15(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull @.str.43) - %.not7.i = icmp eq ptr %16, null - %17 = tail call noundef ptr @_ZNK13QMdiSubWindow6widgetEv(ptr noundef nonnull align 8 dereferenceable(40) %10) - br i1 %.not7.i, label %20, label %18 - -18: ; preds = %11 - %19 = tail call noundef ptr @_ZNK11QMetaObject4castEPK7QObject(ptr noundef nonnull align 8 dereferenceable(56) @_ZN8MdiChild16staticMetaObjectE, ptr noundef %17) - br label %_ZN11CMainWindow14activeMdiChildEv.exit + %14 = tail call noundef ptr %13(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull @.str.43) + %.not7.i = icmp eq ptr %14, null + %15 = tail call noundef ptr @_ZNK13QMdiSubWindow6widgetEv(ptr noundef nonnull align 8 dereferenceable(40) %8) + br i1 %.not7.i, label %18, label %16 -20: ; preds = %11 - %21 = tail call noundef ptr @_ZNK11QMetaObject4castEPK7QObject(ptr noundef nonnull align 8 dereferenceable(56) @_ZN11ImageViewer16staticMetaObjectE, ptr noundef %17) - %22 = getelementptr inbounds i8, ptr %21, i64 40 - %23 = load ptr, ptr %22, align 8 +16: ; preds = %9 + %17 = tail call noundef ptr @_ZNK11QMetaObject4castEPK7QObject(ptr noundef nonnull align 8 dereferenceable(56) @_ZN8MdiChild16staticMetaObjectE, ptr noundef %15) br label %_ZN11CMainWindow14activeMdiChildEv.exit -_ZN11CMainWindow14activeMdiChildEv.exit: ; preds = %7, %18, %20 - %.0.i = phi ptr [ %19, %18 ], [ %23, %20 ], [ null, %7 ] - %24 = tail call noundef i32 @_ZN12CFrmSettings11runSettingsEP8MdiChild(ptr noundef nonnull align 8 dereferenceable(152) %4, ptr noundef %.0.i) - br label %25 +18: ; preds = %9 + %19 = tail call noundef ptr @_ZNK11QMetaObject4castEPK7QObject(ptr noundef nonnull align 8 dereferenceable(56) @_ZN11ImageViewer16staticMetaObjectE, ptr noundef %15) + %20 = getelementptr inbounds i8, ptr %19, i64 40 + %21 = load ptr, ptr %20, align 8 + br label %_ZN11CMainWindow14activeMdiChildEv.exit -25: ; preds = %_ZN11CMainWindow14activeMdiChildEv.exit, %5 +_ZN11CMainWindow14activeMdiChildEv.exit: ; preds = %18, %16, %5, %2 + %.0.i.sink = phi ptr [ %1, %2 ], [ %17, %16 ], [ %21, %18 ], [ null, %5 ] + %22 = tail call noundef i32 @_ZN12CFrmSettings11runSettingsEP8MdiChild(ptr noundef nonnull align 8 dereferenceable(152) %4, ptr noundef %.0.i.sink) ret void } diff --git a/bench/gromacs/optimized/huffman.c.ll b/bench/gromacs/optimized/huffman.c.ll index 52985a6d8f6..9a86aa44441 100644 --- a/bench/gromacs/optimized/huffman.c.ll +++ b/bench/gromacs/optimized/huffman.c.ll @@ -66,7 +66,6 @@ define void @Ptngc_comp_conv_to_huffman(ptr nocapture noundef readonly %0, i32 n store i32 1, ptr %24, align 4 %31 = getelementptr inbounds i8, ptr %24, i64 4 store i32 1, ptr %31, align 4 - tail call fastcc void @assign_codes(ptr noundef nonnull %23, ptr noundef nonnull %24, i32 noundef 0, i32 noundef 0, i32 noundef 1) br label %.lr.ph398.preheader .lr.ph395: ; preds = %.preheader358, %81 @@ -169,22 +168,19 @@ define void @Ptngc_comp_conv_to_huffman(ptr nocapture noundef readonly %0, i32 n 81: ; preds = %75, %._crit_edge391 %82 = icmp sgt i64 %indvars.iv469, 2 - br i1 %82, label %.lr.ph395, label %.loopexit, !llvm.loop !7 + br i1 %82, label %.lr.ph395, label %.lr.ph398.preheader, !llvm.loop !7 .loopexit.thread: ; preds = %.preheader358.thread, %.preheader358 tail call fastcc void @assign_codes(ptr noundef %23, ptr noundef %24, i32 noundef 0, i32 noundef 0, i32 noundef 1) tail call void @Ptngc_merge_sort(ptr noundef %24, i64 noundef %12, i64 noundef 16, ptr noundef nonnull @comp_codes, ptr noundef null) #7 br label %._crit_edge404 -.loopexit: ; preds = %81 +.lr.ph398.preheader: ; preds = %81, %.loopexit.thread510 tail call fastcc void @assign_codes(ptr noundef nonnull %23, ptr noundef %24, i32 noundef 0, i32 noundef 0, i32 noundef 1) - br label %.lr.ph398.preheader - -.lr.ph398.preheader: ; preds = %.loopexit, %.loopexit.thread510 br label %.lr.ph398 .lr.ph398: ; preds = %.lr.ph398.preheader, %.lr.ph398 - %indvars.iv472 = phi i64 [ %indvars.iv.next473, %.lr.ph398 ], [ 0, %.lr.ph398.preheader ] + %indvars.iv472 = phi i64 [ 0, %.lr.ph398.preheader ], [ %indvars.iv.next473, %.lr.ph398 ] %83 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv472 %84 = load i32, ptr %83, align 4 %85 = getelementptr inbounds %struct.codelength, ptr %24, i64 %indvars.iv472 diff --git a/bench/gromacs/optimized/selmethod.cpp.ll b/bench/gromacs/optimized/selmethod.cpp.ll index c7c28a64b03..68b224aa17c 100644 --- a/bench/gromacs/optimized/selmethod.cpp.ll +++ b/bench/gromacs/optimized/selmethod.cpp.ll @@ -1207,39 +1207,35 @@ declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3gmx29SelectionParse define noundef range(i32 -1, 1) i32 @_Z35gmx_ana_selmethod_register_defaultsPN3gmx26SelectionParserSymbolTableE(ptr noundef %0) local_unnamed_addr #0 { br label %2 -2: ; preds = %1, %13 - %indvars.iv = phi i64 [ 0, %1 ], [ %indvars.iv.next, %13 ] - %.01214 = phi i8 [ 1, %1 ], [ %spec.select, %13 ] +2: ; preds = %1, %10 + %indvars.iv = phi i64 [ 0, %1 ], [ %indvars.iv.next, %10 ] + %.01214 = phi i8 [ 1, %1 ], [ %spec.select, %10 ] %3 = getelementptr inbounds [40 x %struct.t_register_method], ptr @__const._Z35gmx_ana_selmethod_register_defaultsPN3gmx26SelectionParserSymbolTableE.smtable_def, i64 0, i64 %indvars.iv %4 = getelementptr inbounds i8, ptr %3, i64 8 %5 = load ptr, ptr %4, align 8 %6 = load ptr, ptr %3, align 16 %7 = icmp eq ptr %6, null - br i1 %7, label %8, label %11 + br i1 %7, label %8, label %10 8: ; preds = %2 %9 = load ptr, ptr %5, align 8 - %10 = tail call noundef i32 @_Z26gmx_ana_selmethod_registerPN3gmx26SelectionParserSymbolTableEPKcP19gmx_ana_selmethod_t(ptr noundef %0, ptr noundef %9, ptr noundef nonnull %5) - br label %13 - -11: ; preds = %2 - %12 = tail call noundef i32 @_Z26gmx_ana_selmethod_registerPN3gmx26SelectionParserSymbolTableEPKcP19gmx_ana_selmethod_t(ptr noundef %0, ptr noundef nonnull %6, ptr noundef %5) - br label %13 + br label %10 -13: ; preds = %11, %8 - %.0 = phi i32 [ %10, %8 ], [ %12, %11 ] - %.not = icmp eq i32 %.0, 0 +10: ; preds = %2, %8 + %.sink = phi ptr [ %9, %8 ], [ %6, %2 ] + %11 = tail call noundef i32 @_Z26gmx_ana_selmethod_registerPN3gmx26SelectionParserSymbolTableEPKcP19gmx_ana_selmethod_t(ptr noundef %0, ptr noundef %.sink, ptr noundef %5) + %.not = icmp eq i32 %11, 0 %spec.select = select i1 %.not, i8 %.01214, i8 0 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 40 - br i1 %exitcond.not, label %14, label %2, !llvm.loop !11 - -14: ; preds = %13 - %15 = and i8 %spec.select, 1 - %16 = xor i8 %15, 1 - %17 = zext nneg i8 %16 to i32 - %18 = sub nsw i32 0, %17 - ret i32 %18 + br i1 %exitcond.not, label %12, label %2, !llvm.loop !11 + +12: ; preds = %10 + %13 = and i8 %spec.select, 1 + %14 = xor i8 %13, 1 + %15 = zext nneg i8 %14 to i32 + %16 = sub nsw i32 0, %15 + ret i32 %16 } declare noundef ptr @_Z21gmx_ana_selparam_findPKciP18gmx_ana_selparam_t(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1 diff --git a/bench/hdf5/optimized/H5FDonion_index.c.ll b/bench/hdf5/optimized/H5FDonion_index.c.ll index 200021895b4..4a225f73c03 100644 --- a/bench/hdf5/optimized/H5FDonion_index.c.ll +++ b/bench/hdf5/optimized/H5FDonion_index.c.ll @@ -82,7 +82,7 @@ define range(i32 -1, 1) i32 @H5FD__onion_ingest_revision_record(ptr nocapture no %24 = load i64, ptr @H5E_ARGS_g, align 8 %25 = load i64, ptr @H5E_BADVALUE_g, align 8 %26 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5FD__onion_ingest_revision_record, i32 noundef 78, i64 noundef %24, i64 noundef %25, ptr noundef nonnull @.str.1) #11 - br label %163 + br label %161 27: ; preds = %4 %28 = tail call i64 @H5FD_get_eoa(ptr noundef %1, i32 noundef 3) #11 @@ -98,7 +98,7 @@ define range(i32 -1, 1) i32 @H5FD__onion_ingest_revision_record(ptr nocapture no %34 = load i64, ptr @H5E_VFL_g, align 8 %35 = load i64, ptr @H5E_CANTSET_g, align 8 %36 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5FD__onion_ingest_revision_record, i32 noundef 83, i64 noundef %34, i64 noundef %35, ptr noundef nonnull @.str.2) #11 - br label %163 + br label %161 37: ; preds = %30, %27 %.not150 = icmp eq i64 %7, 0 @@ -130,7 +130,7 @@ define range(i32 -1, 1) i32 @H5FD__onion_ingest_revision_record(ptr nocapture no %53 = load i64, ptr @H5E_VFL_g, align 8 %54 = load i64, ptr @H5E_CANTALLOC_g, align 8 %55 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5FD__onion_ingest_revision_record, i32 noundef 95, i64 noundef %53, i64 noundef %54, ptr noundef nonnull @.str.3) #11 - br label %163 + br label %161 56: ; preds = %42 %57 = tail call i32 @H5FD_read(ptr noundef %1, i32 noundef 3, i64 noundef %47, i64 noundef %49, ptr noundef nonnull %50) #11 @@ -141,7 +141,7 @@ define range(i32 -1, 1) i32 @H5FD__onion_ingest_revision_record(ptr nocapture no %60 = load i64, ptr @H5E_VFL_g, align 8 %61 = load i64, ptr @H5E_READERROR_g, align 8 %62 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5FD__onion_ingest_revision_record, i32 noundef 98, i64 noundef %60, i64 noundef %61, ptr noundef nonnull @.str.4) #11 - br label %163 + br label %161 63: ; preds = %56 %64 = tail call i64 @H5FD__onion_revision_record_decode(ptr noundef nonnull %50, ptr noundef nonnull %0) @@ -152,7 +152,7 @@ define range(i32 -1, 1) i32 @H5FD__onion_ingest_revision_record(ptr nocapture no %66 = load i64, ptr @H5E_VFL_g, align 8 %67 = load i64, ptr @H5E_CANTDECODE_g, align 8 %68 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5FD__onion_ingest_revision_record, i32 noundef 101, i64 noundef %66, i64 noundef %67, ptr noundef nonnull @.str.5) #11 - br label %163 + br label %161 69: ; preds = %63 %70 = add i64 %49, -4 @@ -165,7 +165,7 @@ define range(i32 -1, 1) i32 @H5FD__onion_ingest_revision_record(ptr nocapture no %74 = load i64, ptr @H5E_VFL_g, align 8 %75 = load i64, ptr @H5E_BADVALUE_g, align 8 %76 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5FD__onion_ingest_revision_record, i32 noundef 105, i64 noundef %74, i64 noundef %75, ptr noundef nonnull @.str.6) #11 - br label %163 + br label %161 77: ; preds = %69 %78 = load i64, ptr %39, align 8 @@ -214,7 +214,7 @@ define range(i32 -1, 1) i32 @H5FD__onion_ingest_revision_record(ptr nocapture no %102 = load i64, ptr @H5E_VFL_g, align 8 %103 = load i64, ptr @H5E_CANTALLOC_g, align 8 %104 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5FD__onion_ingest_revision_record, i32 noundef 129, i64 noundef %102, i64 noundef %103, ptr noundef nonnull @.str.3) #11 - br label %163 + br label %161 105: ; preds = %._crit_edge %106 = tail call i32 @H5FD_read(ptr noundef %1, i32 noundef 3, i64 noundef %96, i64 noundef %98, ptr noundef nonnull %99) #11 @@ -225,7 +225,7 @@ define range(i32 -1, 1) i32 @H5FD__onion_ingest_revision_record(ptr nocapture no %109 = load i64, ptr @H5E_VFL_g, align 8 %110 = load i64, ptr @H5E_READERROR_g, align 8 %111 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5FD__onion_ingest_revision_record, i32 noundef 132, i64 noundef %109, i64 noundef %110, ptr noundef nonnull @.str.4) #11 - br label %163 + br label %161 112: ; preds = %105 %113 = tail call i64 @H5FD__onion_revision_record_decode(ptr noundef nonnull %99, ptr noundef nonnull %0) @@ -236,7 +236,7 @@ define range(i32 -1, 1) i32 @H5FD__onion_ingest_revision_record(ptr nocapture no %115 = load i64, ptr @H5E_VFL_g, align 8 %116 = load i64, ptr @H5E_CANTDECODE_g, align 8 %117 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5FD__onion_ingest_revision_record, i32 noundef 135, i64 noundef %115, i64 noundef %116, ptr noundef nonnull @.str.5) #11 - br label %163 + br label %161 118: ; preds = %112 %119 = add i64 %98, -4 @@ -250,7 +250,7 @@ define range(i32 -1, 1) i32 @H5FD__onion_ingest_revision_record(ptr nocapture no %124 = load i64, ptr @H5E_VFL_g, align 8 %125 = load i64, ptr @H5E_BADVALUE_g, align 8 %126 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5FD__onion_ingest_revision_record, i32 noundef 139, i64 noundef %124, i64 noundef %125, ptr noundef nonnull @.str.6) #11 - br label %163 + br label %161 127: ; preds = %118 %128 = getelementptr inbounds i8, ptr %0, i64 8 @@ -262,7 +262,7 @@ define range(i32 -1, 1) i32 @H5FD__onion_ingest_revision_record(ptr nocapture no %131 = load i64, ptr @H5E_ARGS_g, align 8 %132 = load i64, ptr @H5E_BADRANGE_g, align 8 %133 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5FD__onion_ingest_revision_record, i32 noundef 143, i64 noundef %131, i64 noundef %132, ptr noundef nonnull @.str.7) #11 - br label %163 + br label %161 .loopexit: ; preds = %77, %127 %.3 = phi ptr [ %99, %127 ], [ %50, %77 ] @@ -283,7 +283,7 @@ define range(i32 -1, 1) i32 @H5FD__onion_ingest_revision_record(ptr nocapture no %141 = load i64, ptr @H5E_VFL_g, align 8 %142 = load i64, ptr @H5E_CANTALLOC_g, align 8 %143 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5FD__onion_ingest_revision_record, i32 noundef 148, i64 noundef %141, i64 noundef %142, ptr noundef nonnull @.str.8) #11 - br label %163 + br label %161 144: ; preds = %136, %.loopexit %145 = getelementptr inbounds i8, ptr %0, i64 56 @@ -302,34 +302,31 @@ define range(i32 -1, 1) i32 @H5FD__onion_ingest_revision_record(ptr nocapture no %152 = load i64, ptr @H5E_VFL_g, align 8 %153 = load i64, ptr @H5E_CANTALLOC_g, align 8 %154 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5FD__onion_ingest_revision_record, i32 noundef 153, i64 noundef %152, i64 noundef %153, ptr noundef nonnull @.str.9) #11 - br label %163 + br label %161 155: ; preds = %147, %144 %156 = tail call i64 @H5FD__onion_revision_record_decode(ptr noundef nonnull %.3, ptr noundef nonnull %0) %.not128 = icmp eq i64 %156, %.2 - br i1 %.not128, label %161, label %157 + br i1 %.not128, label %166, label %157 157: ; preds = %155 %158 = load i64, ptr @H5E_VFL_g, align 8 %159 = load i64, ptr @H5E_CANTDECODE_g, align 8 %160 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5FD__onion_ingest_revision_record, i32 noundef 156, i64 noundef %158, i64 noundef %159, ptr noundef nonnull @.str.10) #11 - br label %163 + br label %161 -161: ; preds = %155 - %162 = tail call ptr @H5MM_xfree(ptr noundef nonnull %.3) #11 - br label %169 - -163: ; preds = %23, %33, %52, %59, %65, %73, %101, %108, %114, %123, %130, %140, %151, %157 +161: ; preds = %23, %33, %52, %59, %65, %73, %101, %108, %114, %123, %130, %140, %151, %157 %.0108.ph = phi ptr [ %.3, %157 ], [ %.3, %151 ], [ %.3, %140 ], [ %99, %130 ], [ %99, %123 ], [ %99, %114 ], [ %99, %108 ], [ null, %101 ], [ %50, %73 ], [ %50, %65 ], [ %50, %59 ], [ null, %52 ], [ null, %33 ], [ null, %23 ] - %164 = tail call ptr @H5MM_xfree(ptr noundef %.0108.ph) #11 - %165 = load ptr, ptr %14, align 8 - %166 = tail call ptr @H5MM_xfree(ptr noundef %165) #11 - %167 = load ptr, ptr %17, align 8 - %168 = tail call ptr @H5MM_xfree(ptr noundef %167) #11 - br label %169 - -169: ; preds = %161, %163 - %.0107134 = phi i32 [ -1, %163 ], [ 0, %161 ] + %162 = tail call ptr @H5MM_xfree(ptr noundef %.0108.ph) #11 + %163 = load ptr, ptr %14, align 8 + %164 = tail call ptr @H5MM_xfree(ptr noundef %163) #11 + %165 = load ptr, ptr %17, align 8 + br label %166 + +166: ; preds = %155, %161 + %.3.sink = phi ptr [ %165, %161 ], [ %.3, %155 ] + %.0107134 = phi i32 [ -1, %161 ], [ 0, %155 ] + %167 = tail call ptr @H5MM_xfree(ptr noundef %.3.sink) #11 ret i32 %.0107134 } diff --git a/bench/hdf5/optimized/H5Oint.c.ll b/bench/hdf5/optimized/H5Oint.c.ll index 8dbe64a6140..7a19f2ee3ba 100644 --- a/bench/hdf5/optimized/H5Oint.c.ll +++ b/bench/hdf5/optimized/H5Oint.c.ll @@ -2587,17 +2587,16 @@ define noundef i32 @H5O_loc_reset(ptr nocapture noundef writeonly %0) local_unna ; Function Attrs: nounwind uwtable define noundef i32 @H5O_loc_copy(ptr nocapture noundef %0, ptr nocapture noundef %1, i32 noundef %2) local_unnamed_addr #1 { %4 = icmp eq i32 %2, 0 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i64 24, i1 false) br i1 %4, label %5, label %7 5: ; preds = %3 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i64 24, i1 false) tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %1, i8 0, i64 24, i1 false) %6 = getelementptr inbounds i8, ptr %1, i64 8 store i64 -1, ptr %6, align 8 br label %H5O_loc_copy_deep.exit 7: ; preds = %3 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull readonly align 8 dereferenceable(24) %1, i64 24, i1 false) %8 = getelementptr inbounds i8, ptr %1, i64 16 %9 = load i8, ptr %8, align 8 %10 = trunc i8 %9 to i1 diff --git a/bench/hermes/optimized/JSParserImpl.cpp.ll b/bench/hermes/optimized/JSParserImpl.cpp.ll index b7adf8c11af..f4b221ba118 100644 --- a/bench/hermes/optimized/JSParserImpl.cpp.ll +++ b/bench/hermes/optimized/JSParserImpl.cpp.ll @@ -27244,24 +27244,19 @@ if.then218: ; preds = %land.lhs.true215 %191 = load i8, ptr %hasNewLine, align 8 %tobool223 = trunc i8 %191 to i1 %tobool225.not = icmp eq ptr %typeParams.addr.0, null - br i1 %tobool225.not, label %cond.false229.split, label %cond.true226 + br i1 %tobool225.not, label %cond.end230, label %cond.true226 cond.true226: ; preds = %if.then218 %sourceRange_.i510 = getelementptr inbounds i8, ptr %typeParams.addr.0, i64 24 %retval.sroa.0.0.copyload.i511 = load ptr, ptr %sourceRange_.i510, align 8 - %coerce.val.pi34 = ptrtoint ptr %retval.sroa.0.0.copyload.i511 to i64 - %call23435 = call { i64, i8 } @_ZN6hermes6parser6detail12JSParserImpl28parseArrowFunctionExpressionENS1_5ParamEPNS_6ESTree4NodeEbS6_S6_S6_N4llvh5SMLocENS2_23AllowTypedArrowFunctionEb(ptr noundef nonnull align 8 dereferenceable(2752) %0, i32 %param.coerce, ptr noundef %190, i1 noundef zeroext %tobool223, ptr noundef nonnull %typeParams.addr.0, ptr noundef %returnType.2, ptr noundef %predicate.0, i64 %coerce.val.pi34, i32 noundef %allowTypedArrowFunction, i1 noundef zeroext %forceAsync.0.shrunk) br label %cond.end230 -cond.false229.split: ; preds = %if.then218 - %coerce.val.pi37 = ptrtoint ptr %retval.sroa.0.0.copyload.i42595 to i64 - %call23438 = call { i64, i8 } @_ZN6hermes6parser6detail12JSParserImpl28parseArrowFunctionExpressionENS1_5ParamEPNS_6ESTree4NodeEbS6_S6_S6_N4llvh5SMLocENS2_23AllowTypedArrowFunctionEb(ptr noundef nonnull align 8 dereferenceable(2752) %0, i32 %param.coerce, ptr noundef %190, i1 noundef zeroext %tobool223, ptr noundef null, ptr noundef %returnType.2, ptr noundef %predicate.0, i64 %coerce.val.pi37, i32 noundef %allowTypedArrowFunction, i1 noundef zeroext %forceAsync.0.shrunk) - br label %cond.end230 - -cond.end230: ; preds = %cond.false229.split, %cond.true226 - %phi.call = phi { i64, i8 } [ %call23435, %cond.true226 ], [ %call23438, %cond.false229.split ] - %192 = extractvalue { i64, i8 } %phi.call, 0 - %193 = extractvalue { i64, i8 } %phi.call, 1 +cond.end230: ; preds = %if.then218, %cond.true226 + %retval.sroa.0.0.copyload.i42595.sink = phi ptr [ %retval.sroa.0.0.copyload.i511, %cond.true226 ], [ %retval.sroa.0.0.copyload.i42595, %if.then218 ] + %coerce.val.pi37 = ptrtoint ptr %retval.sroa.0.0.copyload.i42595.sink to i64 + %call23438 = call { i64, i8 } @_ZN6hermes6parser6detail12JSParserImpl28parseArrowFunctionExpressionENS1_5ParamEPNS_6ESTree4NodeEbS6_S6_S6_N4llvh5SMLocENS2_23AllowTypedArrowFunctionEb(ptr noundef nonnull align 8 dereferenceable(2752) %0, i32 %param.coerce, ptr noundef %190, i1 noundef zeroext %tobool223, ptr noundef %typeParams.addr.0, ptr noundef %returnType.2, ptr noundef %predicate.0, i64 %coerce.val.pi37, i32 noundef %allowTypedArrowFunction, i1 noundef zeroext %forceAsync.0.shrunk) + %192 = extractvalue { i64, i8 } %call23438, 0 + %193 = extractvalue { i64, i8 } %call23438, 1 br label %return if.end236: ; preds = %land.lhs.true215, %if.end213 diff --git a/bench/hermes/optimized/MicrosoftDemangle.cpp.ll b/bench/hermes/optimized/MicrosoftDemangle.cpp.ll index 76f1179022c..e1af4952a28 100644 --- a/bench/hermes/optimized/MicrosoftDemangle.cpp.ll +++ b/bench/hermes/optimized/MicrosoftDemangle.cpp.ll @@ -1418,11 +1418,11 @@ if.end.i33: ; preds = %_ZN4llvh11ms_demang br label %_ZN4llvh11ms_demangle14ArenaAllocator10allocArrayIPNS0_4NodeEJEEEPT_m.exit _ZN4llvh11ms_demangle14ArenaAllocator10allocArrayIPNS0_4NodeEJEEEPT_m.exit: ; preds = %if.then.i39, %if.end.i33 - %.sink = phi ptr [ %23, %if.then.i39 ], [ %call2.i.i35, %if.end.i33 ] - store i64 0, ptr %.sink, align 8 + %call2.i.sink.i = phi ptr [ %call2.i.i35, %if.end.i33 ], [ %23, %if.then.i39 ] + store i64 0, ptr %call2.i.sink.i, align 8 %24 = load ptr, ptr %Components.i5.i, align 8 %Nodes = getelementptr inbounds i8, ptr %24, i64 16 - store ptr %.sink, ptr %Nodes, align 8 + store ptr %call2.i.sink.i, ptr %Nodes, align 8 %25 = load ptr, ptr %Components.i5.i, align 8 %Nodes6 = getelementptr inbounds i8, ptr %25, i64 16 %26 = load ptr, ptr %Nodes6, align 8 @@ -7338,9 +7338,6 @@ _ZN4llvh11ms_demangle14ArenaAllocator5allocINS0_13NodeArrayNodeEJEEEPT_DpOT0_.ex if.then.i24: ; preds = %_ZN4llvh11ms_demangle14ArenaAllocator5allocINS0_13NodeArrayNodeEJEEEPT_DpOT0_.exit %15 = inttoptr i64 %and.i13 to ptr - %16 = icmp ugt i64 %Count, 2305843009213693951 - %17 = select i1 %16, i64 -1, i64 %mul.i - tail call void @llvm.memset.p0.i64(ptr align 8 %15, i8 0, i64 %17, i1 false) br label %_ZN4llvh11ms_demangle14ArenaAllocator10allocArrayIPNS0_4NodeEJEEEPT_m.exit if.end.i18: ; preds = %_ZN4llvh11ms_demangle14ArenaAllocator5allocINS0_13NodeArrayNodeEJEEEPT_DpOT0_.exit @@ -7354,26 +7351,26 @@ if.end.i18: ; preds = %_ZN4llvh11ms_demang store ptr %call.i.i19, ptr %Arena, align 8 %Used.i.i23 = getelementptr inbounds i8, ptr %call.i.i19, i64 8 store i64 %mul.i, ptr %Used.i.i23, align 8 - %18 = icmp ugt i64 %Count, 2305843009213693951 - %19 = select i1 %18, i64 -1, i64 %mul.i - tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %call2.i.i20, i8 0, i64 %19, i1 false) br label %_ZN4llvh11ms_demangle14ArenaAllocator10allocArrayIPNS0_4NodeEJEEEPT_m.exit _ZN4llvh11ms_demangle14ArenaAllocator10allocArrayIPNS0_4NodeEJEEEPT_m.exit: ; preds = %if.then.i24, %if.end.i18 - %retval.0.i = phi ptr [ %15, %if.then.i24 ], [ %call2.i.i20, %if.end.i18 ] - store ptr %retval.0.i, ptr %Nodes.i5.i, align 8 + %call2.i.sink.i = phi ptr [ %call2.i.i20, %if.end.i18 ], [ %15, %if.then.i24 ] + %16 = icmp ugt i64 %Count, 2305843009213693951 + %17 = select i1 %16, i64 -1, i64 %mul.i + tail call void @llvm.memset.p0.i64(ptr align 8 %call2.i.sink.i, i8 0, i64 %17, i1 false) + store ptr %call2.i.sink.i, ptr %Nodes.i5.i, align 8 %cmp26.not = icmp eq i64 %Count, 0 br i1 %cmp26.not, label %for.end, label %for.body for.body: ; preds = %_ZN4llvh11ms_demangle14ArenaAllocator10allocArrayIPNS0_4NodeEJEEEPT_m.exit, %for.body %I.028 = phi i64 [ %inc, %for.body ], [ 0, %_ZN4llvh11ms_demangle14ArenaAllocator10allocArrayIPNS0_4NodeEJEEEPT_m.exit ] - %Head.addr.027 = phi ptr [ %22, %for.body ], [ %Head, %_ZN4llvh11ms_demangle14ArenaAllocator10allocArrayIPNS0_4NodeEJEEEPT_m.exit ] - %20 = load ptr, ptr %Head.addr.027, align 8 - %21 = load ptr, ptr %Nodes.i5.i, align 8 - %arrayidx = getelementptr inbounds ptr, ptr %21, i64 %I.028 - store ptr %20, ptr %arrayidx, align 8 + %Head.addr.027 = phi ptr [ %20, %for.body ], [ %Head, %_ZN4llvh11ms_demangle14ArenaAllocator10allocArrayIPNS0_4NodeEJEEEPT_m.exit ] + %18 = load ptr, ptr %Head.addr.027, align 8 + %19 = load ptr, ptr %Nodes.i5.i, align 8 + %arrayidx = getelementptr inbounds ptr, ptr %19, i64 %I.028 + store ptr %18, ptr %arrayidx, align 8 %Next = getelementptr inbounds i8, ptr %Head.addr.027, i64 8 - %22 = load ptr, ptr %Next, align 8 + %20 = load ptr, ptr %Next, align 8 %inc = add nuw i64 %I.028, 1 %exitcond.not = icmp eq i64 %inc, %Count br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !20 diff --git a/bench/hermes/optimized/MicrosoftDemangleNodes.cpp.ll b/bench/hermes/optimized/MicrosoftDemangleNodes.cpp.ll index 27546f68d3a..4d861d7ebac 100644 --- a/bench/hermes/optimized/MicrosoftDemangleNodes.cpp.ll +++ b/bench/hermes/optimized/MicrosoftDemangleNodes.cpp.ll @@ -4273,23 +4273,14 @@ entry: %vtable = load ptr, ptr %0, align 8 %vfn = getelementptr inbounds i8, ptr %vtable, i64 24 %2 = load ptr, ptr %vfn, align 8 - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - tail call void %2(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(32) %OS, i32 noundef 1) #11 - br label %if.end - -if.else: ; preds = %entry - tail call void %2(ptr noundef nonnull align 8 dereferenceable(13) %0, ptr noundef nonnull align 8 dereferenceable(32) %OS, i32 noundef %Flags) #11 - br label %if.end - -if.end: ; preds = %if.else, %if.then + %.Flags = select i1 %cmp, i32 1, i32 %Flags + tail call void %2(ptr noundef nonnull align 8 dereferenceable(13) %0, ptr noundef nonnull align 8 dereferenceable(32) %OS, i32 noundef %.Flags) #11 %CurrentPosition.i.i = getelementptr inbounds i8, ptr %OS, i64 8 %3 = load i64, ptr %CurrentPosition.i.i, align 8 %cmp.i.i = icmp eq i64 %3, 0 br i1 %cmp.i.i, label %_ZL22outputSpaceIfNecessaryR12OutputStream.exit, label %_ZNK12OutputStream4backEv.exit.i -_ZNK12OutputStream4backEv.exit.i: ; preds = %if.end +_ZNK12OutputStream4backEv.exit.i: ; preds = %entry %4 = load ptr, ptr %OS, align 8 %5 = getelementptr i8, ptr %4, i64 %3 %arrayidx.i.i = getelementptr i8, ptr %5, i64 -1 @@ -4335,8 +4326,8 @@ _ZN12OutputStream4growEm.exit.i.i.i: ; preds = %if.then.i._ZN12Outp store i64 %add.i.i.i, ptr %CurrentPosition.i.i, align 8 br label %_ZL22outputSpaceIfNecessaryR12OutputStream.exit -_ZL22outputSpaceIfNecessaryR12OutputStream.exit: ; preds = %if.end, %_ZNK12OutputStream4backEv.exit.i, %_ZN12OutputStream4growEm.exit.i.i.i - %11 = phi i64 [ 0, %if.end ], [ %3, %_ZNK12OutputStream4backEv.exit.i ], [ %add.i.i.i, %_ZN12OutputStream4growEm.exit.i.i.i ] +_ZL22outputSpaceIfNecessaryR12OutputStream.exit: ; preds = %entry, %_ZNK12OutputStream4backEv.exit.i, %_ZN12OutputStream4growEm.exit.i.i.i + %11 = phi i64 [ 0, %entry ], [ %3, %_ZNK12OutputStream4backEv.exit.i ], [ %add.i.i.i, %_ZN12OutputStream4growEm.exit.i.i.i ] %Quals = getelementptr inbounds i8, ptr %this, i64 12 %12 = load i8, ptr %Quals, align 4 %13 = and i8 %12, 16 diff --git a/bench/hwloc/optimized/hwloc-calc.ll b/bench/hwloc/optimized/hwloc-calc.ll index b36a264274e..f3a2104ca41 100644 --- a/bench/hwloc/optimized/hwloc-calc.ll +++ b/bench/hwloc/optimized/hwloc-calc.ll @@ -5053,13 +5053,13 @@ define internal fastcc i32 @hwloc_utils_get_best_node_in_array_by_memattr(ptr no %7 = alloca i64, align 8 %8 = call i32 @hwloc_memattr_get_flags(ptr noundef %0, i32 noundef %1, ptr noundef nonnull %7) #24 %9 = icmp slt i32 %8, 0 - br i1 %9, label %66, label %10 + br i1 %9, label %65, label %10 10: ; preds = %5 store i32 0, ptr %6, align 4 %11 = call i32 @hwloc_memattr_get_targets(ptr noundef %0, i32 noundef %1, ptr noundef nonnull %4, i64 noundef 0, ptr noundef nonnull %6, ptr noundef null, ptr noundef null) #24 %12 = icmp slt i32 %11, 0 - br i1 %12, label %66, label %13 + br i1 %12, label %65, label %13 13: ; preds = %10 %14 = load i32, ptr %6, align 4 @@ -5070,18 +5070,16 @@ define internal fastcc i32 @hwloc_utils_get_best_node_in_array_by_memattr(ptr no %19 = icmp ne ptr %17, null %20 = icmp ne ptr %18, null %or.cond = and i1 %19, %20 - br i1 %or.cond, label %21, label %65 + br i1 %or.cond, label %21, label %.sink.split 21: ; preds = %13 %22 = call i32 @hwloc_memattr_get_targets(ptr noundef %0, i32 noundef %1, ptr noundef nonnull %4, i64 noundef 0, ptr noundef nonnull %6, ptr noundef nonnull %17, ptr noundef nonnull %18) #24 %23 = icmp slt i32 %22, 0 - br i1 %23, label %65, label %.preheader59 - -.preheader59: ; preds = %21 %.not102 = icmp eq i32 %2, 0 - br i1 %.not102, label %._crit_edge68, label %.preheader.lr.ph + %or.cond130 = or i1 %23, %.not102 + br i1 %or.cond130, label %.sink.split, label %.preheader.lr.ph -.preheader.lr.ph: ; preds = %.preheader59 +.preheader.lr.ph: ; preds = %21 %24 = load i32, ptr %6, align 4 %.not103 = icmp eq i32 %24, 0 %25 = load i64, ptr %7, align 8 @@ -5091,7 +5089,7 @@ define internal fastcc i32 @hwloc_utils_get_best_node_in_array_by_memattr(ptr no br i1 %.not, label %.preheader.lr.ph.split.us, label %.preheader.lr.ph.split .preheader.lr.ph.split.us: ; preds = %.preheader.lr.ph - br i1 %.not103, label %._crit_edge68, label %.preheader.us.us.preheader + br i1 %.not103, label %.sink.split, label %.preheader.us.us.preheader .preheader.us.us.preheader: ; preds = %.preheader.lr.ph.split.us %wide.trip.count122 = zext i32 %2 to i64 @@ -5146,10 +5144,10 @@ define internal fastcc i32 @hwloc_utils_get_best_node_in_array_by_memattr(ptr no %.1.us.us = phi i64 [ %.067.us.us, %._crit_edge.us.us ], [ %40, %44 ], [ %spec.select58.us.us, %41 ], [ %.067.us.us, %33 ] %indvars.iv.next120 = add nuw nsw i64 %indvars.iv119, 1 %exitcond123.not = icmp eq i64 %indvars.iv.next120, %wide.trip.count122 - br i1 %exitcond123.not, label %._crit_edge68, label %.preheader.us.us, !llvm.loop !39 + br i1 %exitcond123.not, label %.sink.split, label %.preheader.us.us, !llvm.loop !39 .preheader.lr.ph.split: ; preds = %.preheader.lr.ph - br i1 %.not103, label %._crit_edge68, label %.preheader.us70.preheader + br i1 %.not103, label %.sink.split, label %.preheader.us70.preheader .preheader.us70.preheader: ; preds = %.preheader.lr.ph.split %wide.trip.count112 = zext i32 %2 to i64 @@ -5204,23 +5202,15 @@ define internal fastcc i32 @hwloc_utils_get_best_node_in_array_by_memattr(ptr no %.1.us77 = phi i64 [ %.067.us71, %._crit_edge.us79 ], [ %59, %63 ], [ %spec.select56.us, %60 ], [ %.067.us71, %52 ] %indvars.iv.next110 = add nuw nsw i64 %indvars.iv109, 1 %exitcond113.not = icmp eq i64 %indvars.iv.next110, %wide.trip.count112 - br i1 %exitcond113.not, label %._crit_edge68, label %.preheader.us70, !llvm.loop !39 - -._crit_edge68: ; preds = %._crit_edge.us79.thread, %._crit_edge.us.us.thread, %.preheader.lr.ph.split, %.preheader.lr.ph.split.us, %.preheader59 - %.048.lcssa = phi i32 [ -1, %.preheader59 ], [ -1, %.preheader.lr.ph.split.us ], [ -1, %.preheader.lr.ph.split ], [ %.149.us.us, %._crit_edge.us.us.thread ], [ %.149.us76, %._crit_edge.us79.thread ] - call void @free(ptr noundef nonnull %17) #24 - br label %.sink.split + br i1 %exitcond113.not, label %.sink.split, label %.preheader.us70, !llvm.loop !39 -65: ; preds = %21, %13 +.sink.split: ; preds = %._crit_edge.us79.thread, %._crit_edge.us.us.thread, %13, %21, %.preheader.lr.ph.split.us, %.preheader.lr.ph.split + %.047.ph = phi i32 [ -1, %.preheader.lr.ph.split.us ], [ -1, %.preheader.lr.ph.split ], [ -1, %21 ], [ -1, %13 ], [ %.149.us.us, %._crit_edge.us.us.thread ], [ %.149.us76, %._crit_edge.us79.thread ] call void @free(ptr noundef %17) #24 - br label %.sink.split - -.sink.split: ; preds = %._crit_edge68, %65 - %.047.ph = phi i32 [ -1, %65 ], [ %.048.lcssa, %._crit_edge68 ] call void @free(ptr noundef %18) #24 - br label %66 + br label %65 -66: ; preds = %.sink.split, %5, %10 +65: ; preds = %.sink.split, %5, %10 %.047 = phi i32 [ -1, %10 ], [ -1, %5 ], [ %.047.ph, %.sink.split ] ret i32 %.047 } diff --git a/bench/hyperscan/optimized/Utf8ComponentClass.cpp.ll b/bench/hyperscan/optimized/Utf8ComponentClass.cpp.ll index 13f28a961f0..f1c82bbca78 100644 --- a/bench/hyperscan/optimized/Utf8ComponentClass.cpp.ll +++ b/bench/hyperscan/optimized/Utf8ComponentClass.cpp.ll @@ -1639,9 +1639,9 @@ _ZNK3ue29CharReach10find_firstEv.exit: ; preds = %for.body.i.i %cmp.not215 = icmp eq i64 %conv266214, 256 br i1 %cmp.not215, label %return, label %for.body -for.body: ; preds = %_ZNK3ue29CharReach10find_firstEv.exit, %for.body.backedge - %conv266217 = phi i64 [ %i.0.in216.be, %for.body.backedge ], [ %conv266214, %_ZNK3ue29CharReach10find_firstEv.exit ] - %i.0.in216 = phi i64 [ %i.0.in216.be, %for.body.backedge ], [ %add.i.i, %_ZNK3ue29CharReach10find_firstEv.exit ] +for.body: ; preds = %_ZNK3ue29CharReach10find_firstEv.exit, %_ZNK3ue29CharReach9find_nextEm.exit + %conv266217 = phi i64 [ %add9.i.i, %_ZNK3ue29CharReach9find_nextEm.exit ], [ %conv266214, %_ZNK3ue29CharReach10find_firstEv.exit ] + %i.0.in216 = phi i64 [ %add9.i.i, %_ZNK3ue29CharReach9find_nextEm.exit ], [ %add.i.i, %_ZNK3ue29CharReach10find_firstEv.exit ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp.i.i.i.i203) %retval.sroa.2.0.insert.ext.i.i.i.i.i.i = and i64 %i.0.in216, 4294967295 %retval.sroa.0.0.insert.insert.i.i.i.i.i.i = mul nuw i64 %retval.sroa.2.0.insert.ext.i.i.i.i.i.i, 4294967297 @@ -1673,13 +1673,7 @@ if.then5.i.i: ; preds = %if.end.i.i if.then7.i.i: ; preds = %if.then5.i.i %mul.i.i209 = and i64 %i.0.in216, 192 - %22 = call range(i64 1, 65) i64 @llvm.cttz.i64(i64 %and.i.i, i1 true) - %add9.i.i = or disjoint i64 %22, %mul.i.i209 - br label %for.body.backedge - -for.body.backedge: ; preds = %if.then7.i.i, %if.then18.i.i - %i.0.in216.be = phi i64 [ %add9.i.i, %if.then7.i.i ], [ %add21.i.i, %if.then18.i.i ] - br label %for.body + br label %_ZNK3ue29CharReach9find_nextEm.exit for.cond.i.i: ; preds = %for.cond.i.i.preheader, %for.body.i.i210 %i.0.in.i.i = phi i64 [ %i.0.i.i, %for.body.i.i210 ], [ %div1.i.i.i, %for.cond.i.i.preheader ] @@ -1689,18 +1683,23 @@ for.cond.i.i: ; preds = %for.cond.i.i.prehea for.body.i.i210: ; preds = %for.cond.i.i %i.0.i.i = add nuw nsw i64 %i.0.in.i.i, 1 %arrayidx.i.i13.i.i = getelementptr inbounds [4 x i64], ptr %cr, i64 0, i64 %i.0.i.i - %23 = load i64, ptr %arrayidx.i.i13.i.i, align 8 - %tobool17.not.i.i = icmp eq i64 %23, 0 + %22 = load i64, ptr %arrayidx.i.i13.i.i, align 8 + %tobool17.not.i.i = icmp eq i64 %22, 0 br i1 %tobool17.not.i.i, label %for.cond.i.i, label %if.then18.i.i, !llvm.loop !7 if.then18.i.i: ; preds = %for.body.i.i210 %mul19.i.i = shl nuw nsw i64 %i.0.i.i, 6 - %24 = call noundef range(i64 0, 65) i64 @llvm.cttz.i64(i64 %23, i1 true) - %add21.i.i = or disjoint i64 %24, %mul19.i.i - br label %for.body.backedge + br label %_ZNK3ue29CharReach9find_nextEm.exit + +_ZNK3ue29CharReach9find_nextEm.exit: ; preds = %if.then7.i.i, %if.then18.i.i + %and.i.i.sink = phi i64 [ %and.i.i, %if.then7.i.i ], [ %22, %if.then18.i.i ] + %mul.i.i209.sink = phi i64 [ %mul.i.i209, %if.then7.i.i ], [ %mul19.i.i, %if.then18.i.i ] + %23 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.sink, i1 true) + %add9.i.i = or disjoint i64 %23, %mul.i.i209.sink + br label %for.body lpad263: ; preds = %for.body - %25 = landingpad { ptr, i32 } + %24 = landingpad { ptr, i32 } cleanup br label %eh.resume @@ -1708,7 +1707,7 @@ return: ; preds = %for.inc.i.i, %for.i ret void eh.resume: ; preds = %lpad40, %lpad42, %lpad28, %lpad30, %lpad7, %lpad9, %lpad13, %lpad17, %lpad263, %lpad92, %lpad78, %lpad52, %lpad - %.pn11 = phi { ptr, i32 } [ %25, %lpad263 ], [ %17, %lpad92 ], [ %15, %lpad78 ], [ %13, %lpad52 ], [ %2, %lpad ], [ %7, %lpad17 ], [ %4, %lpad7 ], [ %6, %lpad13 ], [ %5, %lpad9 ], [ %8, %lpad28 ], [ %9, %lpad30 ], [ %11, %lpad42 ], [ %10, %lpad40 ] + %.pn11 = phi { ptr, i32 } [ %24, %lpad263 ], [ %17, %lpad92 ], [ %15, %lpad78 ], [ %13, %lpad52 ], [ %2, %lpad ], [ %7, %lpad17 ], [ %4, %lpad7 ], [ %6, %lpad13 ], [ %5, %lpad9 ], [ %8, %lpad28 ], [ %9, %lpad30 ], [ %11, %lpad42 ], [ %10, %lpad40 ] call void @_ZN3ue212CodePointSetD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %agg.result) #21 resume { ptr, i32 } %.pn11 } diff --git a/bench/hyperscan/optimized/flood_compile.cpp.ll b/bench/hyperscan/optimized/flood_compile.cpp.ll index 6a6171c3863..ac3d4932f9b 100644 --- a/bench/hyperscan/optimized/flood_compile.cpp.ll +++ b/bench/hyperscan/optimized/flood_compile.cpp.ll @@ -778,7 +778,7 @@ for.body261.preheader: ; preds = %_ZNK3ue29CharReach1 br i1 %cmp.not.i.i191309, label %if.end.i.i, label %for.end266 if.end.i.i: ; preds = %for.body261.preheader, %_ZNK3ue29CharReach9find_nextEm.exit - %c256.0246310 = phi i64 [ %retval.0.i.i192, %_ZNK3ue29CharReach9find_nextEm.exit ], [ %add.i.i, %for.body261.preheader ] + %c256.0246310 = phi i64 [ %add9.i.i, %_ZNK3ue29CharReach9find_nextEm.exit ], [ %add.i.i, %for.body261.preheader ] %div1.i.i.i193 = lshr i64 %c256.0246310, 6 %rem.i.i = and i64 %c256.0246310, 63 %cmp4.not.i.i194 = icmp eq i64 %rem.i.i, 63 @@ -797,8 +797,6 @@ if.then5.i.i: ; preds = %if.end.i.i if.then7.i.i: ; preds = %if.then5.i.i %mul.i.i197 = and i64 %c256.0246310, 192 - %89 = call range(i64 1, 65) i64 @llvm.cttz.i64(i64 %and.i.i, i1 true) - %add9.i.i = or disjoint i64 %89, %mul.i.i197 br label %_ZNK3ue29CharReach9find_nextEm.exit for.cond.i.i: ; preds = %for.cond.i.i.preheader, %for.body.i.i198 @@ -809,21 +807,22 @@ for.cond.i.i: ; preds = %for.cond.i.i.prehea for.body.i.i198: ; preds = %for.cond.i.i %i.0.i.i = add nuw nsw i64 %i.0.in.i.i, 1 %arrayidx.i.i13.i.i = getelementptr inbounds [4 x i64], ptr %second, i64 0, i64 %i.0.i.i - %90 = load i64, ptr %arrayidx.i.i13.i.i, align 8 - %tobool17.not.i.i = icmp eq i64 %90, 0 + %89 = load i64, ptr %arrayidx.i.i13.i.i, align 8 + %tobool17.not.i.i = icmp eq i64 %89, 0 br i1 %tobool17.not.i.i, label %for.cond.i.i, label %if.then18.i.i, !llvm.loop !16 if.then18.i.i: ; preds = %for.body.i.i198 %mul19.i.i = shl nuw nsw i64 %i.0.i.i, 6 - %91 = call noundef range(i64 0, 65) i64 @llvm.cttz.i64(i64 %90, i1 true) - %add21.i.i = or disjoint i64 %91, %mul19.i.i br label %_ZNK3ue29CharReach9find_nextEm.exit _ZNK3ue29CharReach9find_nextEm.exit: ; preds = %if.then7.i.i, %if.then18.i.i - %retval.0.i.i192 = phi i64 [ %add9.i.i, %if.then7.i.i ], [ %add21.i.i, %if.then18.i.i ] - %arrayidx262 = getelementptr inbounds i32, ptr %85, i64 %retval.0.i.i192 + %and.i.i.sink = phi i64 [ %and.i.i, %if.then7.i.i ], [ %89, %if.then18.i.i ] + %mul.i.i197.sink = phi i64 [ %mul.i.i197, %if.then7.i.i ], [ %mul19.i.i, %if.then18.i.i ] + %90 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.sink, i1 true) + %add9.i.i = or disjoint i64 %90, %mul.i.i197.sink + %arrayidx262 = getelementptr inbounds i32, ptr %85, i64 %add9.i.i store i32 %currentFloodIndex.0249, ptr %arrayidx262, align 4 - %cmp.not.i.i191 = icmp ult i64 %retval.0.i.i192, 256 + %cmp.not.i.i191 = icmp ult i64 %mul.i.i197.sink, 256 br i1 %cmp.not.i.i191, label %if.end.i.i, label %for.end266 for.end266: ; preds = %for.inc.i.i, %_ZNK3ue29CharReach9find_nextEm.exit, %for.cond.i.i, %for.body261.preheader, %_ZNK3ue29CharReach10find_firstEv.exit diff --git a/bench/hyperscan/optimized/gtest-all.cc.ll b/bench/hyperscan/optimized/gtest-all.cc.ll index 99a55acb664..d712b8c404c 100644 --- a/bench/hyperscan/optimized/gtest-all.cc.ll +++ b/bench/hyperscan/optimized/gtest-all.cc.ll @@ -23802,28 +23802,25 @@ if.then: ; preds = %entry if.end: ; preds = %if.then, %entry %1 = load ptr, ptr @_ZN7testing18FLAGS_gtest_filterB5cxx11E, align 8 %cmp.i = icmp eq ptr %1, null - br i1 %cmp.i, label %if.end.split, label %sub_0 - -if.end.split: ; preds = %if.end - tail call void (i32, ptr, ...) @_ZN7testing8internal13ColoredPrintfENS0_10GTestColorEPKcz(i32 noundef 3, ptr noundef nonnull @.str.136, ptr noundef nonnull @.str.84, ptr noundef null) - br label %if.end5 + br i1 %cmp.i, label %if.end5.sink.split, label %sub_0 sub_0: ; preds = %if.end %2 = load i8, ptr %1, align 1 %.not = icmp eq i8 %2, 42 - br i1 %.not, label %_ZN7testing8internal6String13CStringEqualsEPKcS3_.exit.tail, label %_ZN7testing8internal6String13CStringEqualsEPKcS3_.exit.split + br i1 %.not, label %_ZN7testing8internal6String13CStringEqualsEPKcS3_.exit.tail, label %if.end5.sink.split _ZN7testing8internal6String13CStringEqualsEPKcS3_.exit.tail: ; preds = %sub_0 %3 = getelementptr inbounds i8, ptr %1, i64 1 %4 = load i8, ptr %3, align 1 %5 = icmp eq i8 %4, 0 - br i1 %5, label %if.end5, label %_ZN7testing8internal6String13CStringEqualsEPKcS3_.exit.split + br i1 %5, label %if.end5, label %if.end5.sink.split -_ZN7testing8internal6String13CStringEqualsEPKcS3_.exit.split: ; preds = %sub_0, %_ZN7testing8internal6String13CStringEqualsEPKcS3_.exit.tail - tail call void (i32, ptr, ...) @_ZN7testing8internal13ColoredPrintfENS0_10GTestColorEPKcz(i32 noundef 3, ptr noundef nonnull @.str.136, ptr noundef nonnull @.str.84, ptr noundef nonnull %1) +if.end5.sink.split: ; preds = %_ZN7testing8internal6String13CStringEqualsEPKcS3_.exit.tail, %sub_0, %if.end + %.sink = phi ptr [ null, %if.end ], [ %1, %sub_0 ], [ %1, %_ZN7testing8internal6String13CStringEqualsEPKcS3_.exit.tail ] + tail call void (i32, ptr, ...) @_ZN7testing8internal13ColoredPrintfENS0_10GTestColorEPKcz(i32 noundef 3, ptr noundef nonnull @.str.136, ptr noundef nonnull @.str.84, ptr noundef %.sink) br label %if.end5 -if.end5: ; preds = %if.end.split, %_ZN7testing8internal6String13CStringEqualsEPKcS3_.exit.split, %_ZN7testing8internal6String13CStringEqualsEPKcS3_.exit.tail +if.end5: ; preds = %if.end5.sink.split, %_ZN7testing8internal6String13CStringEqualsEPKcS3_.exit.tail %call6 = tail call noundef zeroext i1 @_ZN7testing8internal11ShouldShardEPKcS2_b(ptr noundef nonnull @_ZN7testingL16kTestTotalShardsE, ptr noundef nonnull @_ZN7testingL15kTestShardIndexE, i1 noundef zeroext false) br i1 %call6, label %if.then7, label %if.end11 diff --git a/bench/hyperscan/optimized/ng_extparam.cpp.ll b/bench/hyperscan/optimized/ng_extparam.cpp.ll index 02868e3ca88..a3384ba3aca 100644 --- a/bench/hyperscan/optimized/ng_extparam.cpp.ll +++ b/bench/hyperscan/optimized/ng_extparam.cpp.ll @@ -3334,11 +3334,7 @@ if.then.i.i.i219.i: ; preds = %invoke.cont270.i _ZNSt6vectorIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESaIS8_EED2Ev.exit220.i: ; preds = %if.then.i.i.i219.i, %invoke.cont270.i %233 = load ptr, ptr %preds.i, align 8 %tobool.not.i.i.i221.i = icmp eq ptr %233, null - br i1 %tobool.not.i.i.i221.i, label %cleanup273.i, label %if.then.i.i.i222.i - -if.then.i.i.i222.i: ; preds = %_ZNSt6vectorIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESaIS8_EED2Ev.exit220.i - call void @_ZdlPv(ptr noundef nonnull %233) #21 - br label %cleanup273.i + br i1 %tobool.not.i.i.i221.i, label %cleanup273.i, label %cleanup273.sink.split.i cleanup273.critedge.i: ; preds = %if.else93.i, %if.then63.i, %for.cond19.i.i.i, %for.cond.i.i.i %234 = phi ptr [ %186, %for.cond.i.i.i ], [ %186, %for.cond19.i.i.i ], [ %172, %if.then63.i ], [ %172, %if.else93.i ] @@ -3346,27 +3342,22 @@ cleanup273.critedge.i: ; preds = %if.else93.i, %if.th %tobool.not.i.i.i.i.i.i.i.i.i225.i = icmp eq i64 %235, 0 %cmp.i.i.i.i.i.i.i.i.i.i.i.i.i228.i = icmp eq ptr %m_storage_start.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i123.i, %234 %or.cond420.i = select i1 %tobool.not.i.i.i.i.i.i.i.i.i225.i, i1 true, i1 %cmp.i.i.i.i.i.i.i.i.i.i.i.i.i228.i - br i1 %or.cond420.i, label %cleanup273.i, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i229.i - -if.then.i.i.i.i.i.i.i.i.i.i.i.i229.i: ; preds = %cleanup273.critedge.i - call void @_ZdlPv(ptr noundef %234) #21 - br label %cleanup273.i + br i1 %or.cond420.i, label %cleanup273.i, label %cleanup273.sink.split.i cleanup273.critedge49.i: ; preds = %invoke.cont131.i %236 = load i64, ptr %m_capacity.i.i.i.i.i.i.i.i.i161.i, align 8 %tobool.not.i.i.i.i.i.i.i.i.i232.i = icmp eq i64 %236, 0 - br i1 %tobool.not.i.i.i.i.i.i.i.i.i232.i, label %cleanup273.i, label %if.then.i.i.i.i.i.i.i.i.i233.i - -if.then.i.i.i.i.i.i.i.i.i233.i: ; preds = %cleanup273.critedge49.i %237 = load ptr, ptr %succ129.i, align 8 %cmp.i.i.i.i.i.i.i.i.i.i.i.i.i235.i = icmp eq ptr %m_storage_start.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i164.i, %237 - br i1 %cmp.i.i.i.i.i.i.i.i.i.i.i.i.i235.i, label %cleanup273.i, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i236.i + %or.cond421.i = select i1 %tobool.not.i.i.i.i.i.i.i.i.i232.i, i1 true, i1 %cmp.i.i.i.i.i.i.i.i.i.i.i.i.i235.i + br i1 %or.cond421.i, label %cleanup273.i, label %cleanup273.sink.split.i -if.then.i.i.i.i.i.i.i.i.i.i.i.i236.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i233.i - call void @_ZdlPv(ptr noundef %237) #21 +cleanup273.sink.split.i: ; preds = %cleanup273.critedge49.i, %cleanup273.critedge.i, %_ZNSt6vectorIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESaIS8_EED2Ev.exit220.i + %.sink.i = phi ptr [ %233, %_ZNSt6vectorIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESaIS8_EED2Ev.exit220.i ], [ %234, %cleanup273.critedge.i ], [ %237, %cleanup273.critedge49.i ] + call void @_ZdlPv(ptr noundef %.sink.i) #21 br label %cleanup273.i -cleanup273.i: ; preds = %lor.lhs.false13.i.i165, %lor.lhs.false.i.i162, %call9.i.noexc.i156, %for.body.i52.i, %if.end.i.i182, %if.then.i.i.i.i.i.i.i.i.i.i.i.i236.i, %if.then.i.i.i.i.i.i.i.i.i233.i, %cleanup273.critedge49.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i229.i, %cleanup273.critedge.i, %if.then.i.i.i222.i, %_ZNSt6vectorIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESaIS8_EED2Ev.exit220.i, %do.end163.i, %invoke.cont149.i, %invoke.cont112.i, %invoke.cont46.i, %invoke.cont20.i, %_ZN3ue211edges_rangeINS_8NGHolderEEEDTcl10pair_rangecl5edgesfp_EEERKT_.exit.i.i, %invoke.cont7.i176, %if.end17 +cleanup273.i: ; preds = %lor.lhs.false13.i.i165, %lor.lhs.false.i.i162, %call9.i.noexc.i156, %for.body.i52.i, %if.end.i.i182, %cleanup273.sink.split.i, %cleanup273.critedge49.i, %cleanup273.critedge.i, %_ZNSt6vectorIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESaIS8_EED2Ev.exit220.i, %do.end163.i, %invoke.cont149.i, %invoke.cont112.i, %invoke.cont46.i, %invoke.cont20.i, %_ZN3ue211edges_rangeINS_8NGHolderEEEDTcl10pair_rangecl5edgesfp_EEERKT_.exit.i.i, %invoke.cont7.i176, %if.end17 %_M_parent.i.i.i.i.i159 = getelementptr inbounds i8, ptr %ref.tmp.i138, i64 16 %238 = load ptr, ptr %_M_parent.i.i.i.i.i159, align 8 invoke void @_ZNSt8_Rb_treeIjjSt9_IdentityIjESt4lessIjESaIjEE8_M_eraseEPSt13_Rb_tree_nodeIjE(ptr noundef nonnull align 8 dereferenceable(48) %ref.tmp.i138, ptr noundef %238) diff --git a/bench/icu/optimized/calendar.ll b/bench/icu/optimized/calendar.ll index 9a63b0e24e7..83e7a4d8d09 100644 --- a/bench/icu/optimized/calendar.ll +++ b/bench/icu/optimized/calendar.ll @@ -12510,25 +12510,19 @@ entry: dynamic_cast.end: ; preds = %entry %1 = tail call ptr @__dynamic_cast(ptr nonnull %instance, ptr nonnull @_ZTIN6icu_757UObjectE, ptr nonnull @_ZTIN6icu_7513UnicodeStringE, i64 0) #24 %cmp.not = icmp eq ptr %1, null - br i1 %cmp.not, label %if.else, label %if.then - -if.then: ; preds = %dynamic_cast.end - %vtable = load ptr, ptr %1, align 8 - %vfn = getelementptr inbounds i8, ptr %vtable, i64 56 - %2 = load ptr, ptr %vfn, align 8 - %call = tail call noundef ptr %2(ptr noundef nonnull align 8 dereferenceable(64) %1) - br label %return + br i1 %cmp.not, label %if.else, label %return if.else: ; preds = %entry, %dynamic_cast.end - %vtable2 = load ptr, ptr %instance, align 8 - %vfn3 = getelementptr inbounds i8, ptr %vtable2, i64 24 - %3 = load ptr, ptr %vfn3, align 8 - %call4 = tail call noundef ptr %3(ptr noundef nonnull align 8 dereferenceable(618) %instance) br label %return -return: ; preds = %if.else, %if.then - %retval.0 = phi ptr [ %call, %if.then ], [ %call4, %if.else ] - ret ptr %retval.0 +return: ; preds = %dynamic_cast.end, %if.else + %instance.sink4 = phi ptr [ %instance, %if.else ], [ %1, %dynamic_cast.end ] + %.sink = phi i64 [ 24, %if.else ], [ 56, %dynamic_cast.end ] + %vtable2 = load ptr, ptr %instance.sink4, align 8 + %vfn3 = getelementptr inbounds i8, ptr %vtable2, i64 %.sink + %2 = load ptr, ptr %vfn3, align 8 + %call4 = tail call noundef ptr %2(ptr noundef nonnull align 8 dereferenceable(64) %instance.sink4) + ret ptr %call4 } declare noundef ptr @_ZN6icu_7510ICUService19createSimpleFactoryEPNS_7UObjectERKNS_13UnicodeStringEaR10UErrorCode(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef, ptr noundef nonnull align 8 dereferenceable(64), i8 noundef signext, ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #6 diff --git a/bench/icu/optimized/tridpars.ll b/bench/icu/optimized/tridpars.ll index 179d140a60c..3a5786b00b7 100644 --- a/bench/icu/optimized/tridpars.ll +++ b/bench/icu/optimized/tridpars.ll @@ -997,24 +997,17 @@ delete.notnull72: ; preds = %if.end59, %if.then6 if.else75: ; preds = %for.cond %cmp76 = icmp eq i32 %dir, 0 - br i1 %cmp76, label %if.then77, label %if.else79 - -if.then77: ; preds = %if.else75 - %call78 = tail call noundef ptr @_ZN6icu_7522TransliteratorIDParser9specsToIDEPKNS0_5SpecsEi(ptr noundef %specsA.2, i32 noundef 0) - br label %if.end85 + br i1 %cmp76, label %if.end85, label %if.else79 if.else79: ; preds = %if.else75 %call80 = tail call noundef ptr @_ZN6icu_7522TransliteratorIDParser21specsToSpecialInverseERKNS0_5SpecsER10UErrorCode(ptr noundef nonnull align 8 dereferenceable(265) %specsA.2, ptr noundef nonnull align 4 dereferenceable(4) %status) %cmp81 = icmp eq ptr %call80, null - br i1 %cmp81, label %if.then82, label %if.end88 - -if.then82: ; preds = %if.else79 - %call83 = tail call noundef ptr @_ZN6icu_7522TransliteratorIDParser9specsToIDEPKNS0_5SpecsEi(ptr noundef nonnull %specsA.2, i32 noundef 1) - br label %if.end85 + br i1 %cmp81, label %if.end85, label %if.end88 -if.end85: ; preds = %if.then82, %if.then77 - %single.1 = phi ptr [ %call78, %if.then77 ], [ %call83, %if.then82 ] - %cmp86 = icmp eq ptr %single.1, null +if.end85: ; preds = %if.else79, %if.else75 + %.sink = phi i32 [ 0, %if.else75 ], [ 1, %if.else79 ] + %call83 = tail call noundef ptr @_ZN6icu_7522TransliteratorIDParser9specsToIDEPKNS0_5SpecsEi(ptr noundef %specsA.2, i32 noundef %.sink) + %cmp86 = icmp eq ptr %call83, null br i1 %cmp86, label %if.then87, label %if.end88 if.then87: ; preds = %if.end85 @@ -1022,7 +1015,7 @@ if.then87: ; preds = %if.end85 br label %return if.end88: ; preds = %if.else79, %if.end85 - %single.196 = phi ptr [ %single.1, %if.end85 ], [ %call80, %if.else79 ] + %single.196 = phi ptr [ %call83, %if.end85 ], [ %call80, %if.else79 ] %filter89 = getelementptr inbounds i8, ptr %specsA.2, i64 200 %filter90 = getelementptr inbounds i8, ptr %single.196, i64 136 %call91 = tail call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7513UnicodeStringaSERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %filter90, ptr noundef nonnull align 8 dereferenceable(64) %filter89) diff --git a/bench/ipopt/optimized/IpNLPBoundsRemover.ll b/bench/ipopt/optimized/IpNLPBoundsRemover.ll index 9808fc4ecf7..ccaf48a7dad 100644 --- a/bench/ipopt/optimized/IpNLPBoundsRemover.ll +++ b/bench/ipopt/optimized/IpNLPBoundsRemover.ll @@ -3706,14 +3706,14 @@ _ZN5Ipopt8SmartPtrIKNS_11MatrixSpaceEED2Ev.exit: ; preds = %_ZN5Ipopt8SmartPtrI %38 = getelementptr inbounds i8, ptr %37, i64 96 %39 = load ptr, ptr %38, align 8 %40 = invoke noundef zeroext i1 %39(ptr noundef nonnull align 8 dereferenceable(12) %36, ptr noundef nonnull align 8 dereferenceable(205) %1, ptr noundef nonnull align 8 dereferenceable(69) %21) - to label %41 unwind label %53 + to label %41 unwind label %49 41: ; preds = %_ZN5Ipopt8SmartPtrIKNS_11MatrixSpaceEED2Ev.exit - br i1 %40, label %42, label %64 + br i1 %40, label %42, label %56 42: ; preds = %41 invoke void @_ZN5Ipopt14CompoundMatrix7SetCompEiiRKNS_6MatrixE(ptr noundef nonnull align 8 dereferenceable(129) %2, i32 noundef 0, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(69) %21) - to label %64 unwind label %53 + to label %56 unwind label %49 43: ; preds = %_ZNK5Ipopt19CompoundMatrixSpace12GetCompSpaceEii.exit %44 = landingpad { ptr, i32 } @@ -3723,88 +3723,83 @@ _ZN5Ipopt8SmartPtrIKNS_11MatrixSpaceEED2Ev.exit: ; preds = %_ZN5Ipopt8SmartPtrI %47 = add nsw i32 %46, -1 store i32 %47, ptr %45, align 8 %48 = icmp eq i32 %47, 0 - br i1 %48, label %49, label %82 + br i1 %48, label %.sink.split, label %77 -49: ; preds = %43 - %50 = load ptr, ptr %13, align 8 - %51 = getelementptr inbounds i8, ptr %50, i64 8 - %52 = load ptr, ptr %51, align 8 - tail call void %52(ptr noundef nonnull align 8 dereferenceable(20) %13) #14 - br label %82 - -53: ; preds = %42, %_ZN5Ipopt8SmartPtrIKNS_11MatrixSpaceEED2Ev.exit - %54 = landingpad { ptr, i32 } +49: ; preds = %42, %_ZN5Ipopt8SmartPtrIKNS_11MatrixSpaceEED2Ev.exit + %50 = landingpad { ptr, i32 } cleanup - br i1 %.not.i.i, label %82, label %55 + br i1 %.not.i.i, label %77, label %51 -55: ; preds = %53 - %56 = getelementptr inbounds i8, ptr %21, i64 8 - %57 = load i32, ptr %56, align 8 - %58 = add nsw i32 %57, -1 - store i32 %58, ptr %56, align 8 - %59 = icmp eq i32 %58, 0 - br i1 %59, label %60, label %82 +51: ; preds = %49 + %52 = getelementptr inbounds i8, ptr %21, i64 8 + %53 = load i32, ptr %52, align 8 + %54 = add nsw i32 %53, -1 + store i32 %54, ptr %52, align 8 + %55 = icmp eq i32 %54, 0 + br i1 %55, label %.sink.split, label %77 -60: ; preds = %55 - %61 = load ptr, ptr %21, align 8 - %62 = getelementptr inbounds i8, ptr %61, i64 8 - %63 = load ptr, ptr %62, align 8 - tail call void %63(ptr noundef nonnull align 8 dereferenceable(69) %21) #14 - br label %82 +56: ; preds = %42, %41 + br i1 %.not.i.i, label %_ZN5Ipopt8SmartPtrINS_6MatrixEED2Ev.exit17, label %57 + +57: ; preds = %56 + %58 = getelementptr inbounds i8, ptr %21, i64 8 + %59 = load i32, ptr %58, align 8 + %60 = add nsw i32 %59, -1 + store i32 %60, ptr %58, align 8 + %61 = icmp eq i32 %60, 0 + br i1 %61, label %62, label %_ZN5Ipopt8SmartPtrINS_6MatrixEED2Ev.exit17 -64: ; preds = %42, %41 - br i1 %.not.i.i, label %_ZN5Ipopt8SmartPtrINS_6MatrixEED2Ev.exit17, label %65 +62: ; preds = %57 + %63 = load ptr, ptr %21, align 8 + %64 = getelementptr inbounds i8, ptr %63, i64 8 + %65 = load ptr, ptr %64, align 8 + tail call void %65(ptr noundef nonnull align 8 dereferenceable(69) %21) #14 + br label %_ZN5Ipopt8SmartPtrINS_6MatrixEED2Ev.exit17 -65: ; preds = %64 - %66 = getelementptr inbounds i8, ptr %21, i64 8 +_ZN5Ipopt8SmartPtrINS_6MatrixEED2Ev.exit17: ; preds = %62, %57, %56 + %66 = getelementptr inbounds i8, ptr %5, i64 8 %67 = load i32, ptr %66, align 8 %68 = add nsw i32 %67, -1 store i32 %68, ptr %66, align 8 %69 = icmp eq i32 %68, 0 - br i1 %69, label %70, label %_ZN5Ipopt8SmartPtrINS_6MatrixEED2Ev.exit17 + br i1 %69, label %70, label %_ZN5Ipopt8SmartPtrIKNS_11MatrixSpaceEED2Ev.exit19 -70: ; preds = %65 - %71 = load ptr, ptr %21, align 8 +70: ; preds = %_ZN5Ipopt8SmartPtrINS_6MatrixEED2Ev.exit17 + %71 = load ptr, ptr %5, align 8 %72 = getelementptr inbounds i8, ptr %71, i64 8 %73 = load ptr, ptr %72, align 8 - tail call void %73(ptr noundef nonnull align 8 dereferenceable(69) %21) #14 - br label %_ZN5Ipopt8SmartPtrINS_6MatrixEED2Ev.exit17 - -_ZN5Ipopt8SmartPtrINS_6MatrixEED2Ev.exit17: ; preds = %70, %65, %64 - %74 = getelementptr inbounds i8, ptr %5, i64 8 - %75 = load i32, ptr %74, align 8 - %76 = add nsw i32 %75, -1 - store i32 %76, ptr %74, align 8 - %77 = icmp eq i32 %76, 0 - br i1 %77, label %78, label %_ZN5Ipopt8SmartPtrIKNS_11MatrixSpaceEED2Ev.exit19 - -78: ; preds = %_ZN5Ipopt8SmartPtrINS_6MatrixEED2Ev.exit17 - %79 = load ptr, ptr %5, align 8 - %80 = getelementptr inbounds i8, ptr %79, i64 8 - %81 = load ptr, ptr %80, align 8 - tail call void %81(ptr noundef nonnull align 8 dereferenceable(20) %5) #14 + tail call void %73(ptr noundef nonnull align 8 dereferenceable(20) %5) #14 br label %_ZN5Ipopt8SmartPtrIKNS_11MatrixSpaceEED2Ev.exit19 -_ZN5Ipopt8SmartPtrIKNS_11MatrixSpaceEED2Ev.exit19: ; preds = %_ZN5Ipopt8SmartPtrINS_6MatrixEED2Ev.exit17, %78 +_ZN5Ipopt8SmartPtrIKNS_11MatrixSpaceEED2Ev.exit19: ; preds = %_ZN5Ipopt8SmartPtrINS_6MatrixEED2Ev.exit17, %70 ret i1 %40 -82: ; preds = %60, %55, %53, %49, %43 - %.pn.ph = phi { ptr, i32 } [ %54, %60 ], [ %54, %55 ], [ %54, %53 ], [ %44, %49 ], [ %44, %43 ] - %83 = getelementptr inbounds i8, ptr %5, i64 8 - %84 = load i32, ptr %83, align 8 - %85 = add nsw i32 %84, -1 - store i32 %85, ptr %83, align 8 - %86 = icmp eq i32 %85, 0 - br i1 %86, label %87, label %_ZN5Ipopt8SmartPtrIKNS_11MatrixSpaceEED2Ev.exit21 - -87: ; preds = %82 - %88 = load ptr, ptr %5, align 8 - %89 = getelementptr inbounds i8, ptr %88, i64 8 - %90 = load ptr, ptr %89, align 8 - tail call void %90(ptr noundef nonnull align 8 dereferenceable(20) %5) #14 +.sink.split: ; preds = %51, %43 + %.sink44 = phi ptr [ %13, %43 ], [ %21, %51 ] + %.pn.ph.ph = phi { ptr, i32 } [ %44, %43 ], [ %50, %51 ] + %74 = load ptr, ptr %.sink44, align 8 + %75 = getelementptr inbounds i8, ptr %74, i64 8 + %76 = load ptr, ptr %75, align 8 + tail call void %76(ptr noundef nonnull align 8 dereferenceable(20) %.sink44) #14 + br label %77 + +77: ; preds = %.sink.split, %51, %49, %43 + %.pn.ph = phi { ptr, i32 } [ %50, %51 ], [ %50, %49 ], [ %44, %43 ], [ %.pn.ph.ph, %.sink.split ] + %78 = getelementptr inbounds i8, ptr %5, i64 8 + %79 = load i32, ptr %78, align 8 + %80 = add nsw i32 %79, -1 + store i32 %80, ptr %78, align 8 + %81 = icmp eq i32 %80, 0 + br i1 %81, label %82, label %_ZN5Ipopt8SmartPtrIKNS_11MatrixSpaceEED2Ev.exit21 + +82: ; preds = %77 + %83 = load ptr, ptr %5, align 8 + %84 = getelementptr inbounds i8, ptr %83, i64 8 + %85 = load ptr, ptr %84, align 8 + tail call void %85(ptr noundef nonnull align 8 dereferenceable(20) %5) #14 br label %_ZN5Ipopt8SmartPtrIKNS_11MatrixSpaceEED2Ev.exit21 -_ZN5Ipopt8SmartPtrIKNS_11MatrixSpaceEED2Ev.exit21: ; preds = %82, %87 +_ZN5Ipopt8SmartPtrIKNS_11MatrixSpaceEED2Ev.exit21: ; preds = %77, %82 resume { ptr, i32 } %.pn.ph } diff --git a/bench/ipopt/optimized/IpSymScaledMatrix.ll b/bench/ipopt/optimized/IpSymScaledMatrix.ll index 813267ca62d..70b49301473 100644 --- a/bench/ipopt/optimized/IpSymScaledMatrix.ll +++ b/bench/ipopt/optimized/IpSymScaledMatrix.ll @@ -990,7 +990,7 @@ _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit: ; preds = %_ZN5Ipopt8SmartPtrI %61 = getelementptr inbounds i8, ptr %0, i64 80 %62 = load ptr, ptr %61, align 8 %.not = icmp eq ptr %62, null - br i1 %.not, label %115, label %_ZN5Ipopt8SmartPtrIKNS_10JournalistEEC2EPS2_.exit41 + br i1 %.not, label %107, label %_ZN5Ipopt8SmartPtrIKNS_10JournalistEEC2EPS2_.exit41 _ZN5Ipopt8SmartPtrIKNS_10JournalistEEC2EPS2_.exit41: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit %63 = load i32, ptr %35, align 8 @@ -998,7 +998,7 @@ _ZN5Ipopt8SmartPtrIKNS_10JournalistEEC2EPS2_.exit41: ; preds = %_ZN5Ipopt8SmartP store i32 %64, ptr %35, align 8 store ptr %1, ptr %10, align 8 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %4) - to label %.noexc42 unwind label %103 + to label %.noexc42 unwind label %99 .noexc42: ; preds = %_ZN5Ipopt8SmartPtrIKNS_10JournalistEEC2EPS2_.exit41 %65 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.5) @@ -1078,58 +1078,53 @@ _ZN5Ipopt8SmartPtrIKNS_10JournalistEED2Ev.exit49: ; preds = %90, %.body.thread, %97 = add nsw i32 %96, -1 store i32 %97, ptr %95, align 8 %98 = icmp eq i32 %97, 0 - br i1 %98, label %99, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51 + br i1 %98, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51.sink.split, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51 -99: ; preds = %94 - %100 = load ptr, ptr %29, align 8 - %101 = getelementptr inbounds i8, ptr %100, i64 8 - %102 = load ptr, ptr %101, align 8 - call void %102(ptr noundef nonnull align 8 dereferenceable(205) %29) #12 - br label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51 - -103: ; preds = %_ZN5Ipopt8SmartPtrIKNS_10JournalistEEC2EPS2_.exit41 - %104 = landingpad { ptr, i32 } +99: ; preds = %_ZN5Ipopt8SmartPtrIKNS_10JournalistEEC2EPS2_.exit41 + %100 = landingpad { ptr, i32 } cleanup br label %.body43.thread .body43: ; preds = %_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.exit45 - %105 = landingpad { ptr, i32 } + %101 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #12 %.pre58 = load ptr, ptr %10, align 8 %.not.i.i52 = icmp eq ptr %.pre58, null br i1 %.not.i.i52, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51, label %.body43.thread -.body43.thread: ; preds = %66, %103, %.body43 - %.pn3465 = phi { ptr, i32 } [ %105, %.body43 ], [ %67, %66 ], [ %104, %103 ] - %106 = phi ptr [ %.pre58, %.body43 ], [ %1, %66 ], [ %1, %103 ] - %107 = getelementptr inbounds i8, ptr %106, i64 8 - %108 = load i32, ptr %107, align 8 - %109 = add nsw i32 %108, -1 - store i32 %109, ptr %107, align 8 - %110 = icmp eq i32 %109, 0 - br i1 %110, label %111, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51 - -111: ; preds = %.body43.thread - %112 = load ptr, ptr %106, align 8 - %113 = getelementptr inbounds i8, ptr %112, i64 8 - %114 = load ptr, ptr %113, align 8 - call void %114(ptr noundef nonnull align 8 dereferenceable(40) %106) #12 - br label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51 - -115: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit - %116 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #12 - %117 = load ptr, ptr %1, align 8 - %118 = getelementptr inbounds i8, ptr %117, i64 32 - %119 = load ptr, ptr %118, align 8 - call void (ptr, i32, i32, i32, ptr, ...) %119(ptr noundef nonnull align 8 dereferenceable(40) %1, i32 noundef %2, i32 noundef %3, i32 noundef %5, ptr noundef nonnull @.str.6, ptr noundef %116) +.body43.thread: ; preds = %66, %99, %.body43 + %.pn3465 = phi { ptr, i32 } [ %101, %.body43 ], [ %67, %66 ], [ %100, %99 ] + %102 = phi ptr [ %.pre58, %.body43 ], [ %1, %66 ], [ %1, %99 ] + %103 = getelementptr inbounds i8, ptr %102, i64 8 + %104 = load i32, ptr %103, align 8 + %105 = add nsw i32 %104, -1 + store i32 %105, ptr %103, align 8 + %106 = icmp eq i32 %105, 0 + br i1 %106, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51.sink.split, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51 + +107: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit + %108 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #12 + %109 = load ptr, ptr %1, align 8 + %110 = getelementptr inbounds i8, ptr %109, i64 32 + %111 = load ptr, ptr %110, align 8 + call void (ptr, i32, i32, i32, ptr, ...) %111(ptr noundef nonnull align 8 dereferenceable(40) %1, i32 noundef %2, i32 noundef %3, i32 noundef %5, ptr noundef nonnull @.str.6, ptr noundef %108) br label %_ZN5Ipopt8SmartPtrIKNS_10JournalistEED2Ev.exit47 -_ZN5Ipopt8SmartPtrIKNS_10JournalistEED2Ev.exit47: ; preds = %78, %73, %71, %115 +_ZN5Ipopt8SmartPtrIKNS_10JournalistEED2Ev.exit47: ; preds = %78, %73, %71, %107 ret void -_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51: ; preds = %111, %.body43.thread, %.body43, %99, %94, %_ZN5Ipopt8SmartPtrIKNS_10JournalistEED2Ev.exit49 - %.pn34.pn = phi { ptr, i32 } [ %.pn62, %_ZN5Ipopt8SmartPtrIKNS_10JournalistEED2Ev.exit49 ], [ %.pn62, %94 ], [ %.pn62, %99 ], [ %105, %.body43 ], [ %.pn3465, %.body43.thread ], [ %.pn3465, %111 ] +_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51.sink.split: ; preds = %.body43.thread, %94 + %.sink69 = phi ptr [ %29, %94 ], [ %102, %.body43.thread ] + %.pn34.pn.ph = phi { ptr, i32 } [ %.pn62, %94 ], [ %.pn3465, %.body43.thread ] + %112 = load ptr, ptr %.sink69, align 8 + %113 = getelementptr inbounds i8, ptr %112, i64 8 + %114 = load ptr, ptr %113, align 8 + call void %114(ptr noundef nonnull align 8 dereferenceable(40) %.sink69) #12 + br label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51 + +_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51.sink.split, %.body43.thread, %.body43, %94, %_ZN5Ipopt8SmartPtrIKNS_10JournalistEED2Ev.exit49 + %.pn34.pn = phi { ptr, i32 } [ %.pn62, %_ZN5Ipopt8SmartPtrIKNS_10JournalistEED2Ev.exit49 ], [ %.pn62, %94 ], [ %101, %.body43 ], [ %.pn3465, %.body43.thread ], [ %.pn34.pn.ph, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51.sink.split ] resume { ptr, i32 } %.pn34.pn } diff --git a/bench/jq/optimized/util.ll b/bench/jq/optimized/util.ll index 04a93afe8c1..761b4d60c4c 100644 --- a/bench/jq/optimized/util.ll +++ b/bench/jq/optimized/util.ll @@ -158,23 +158,20 @@ define { i64, ptr } @jq_realpath(i64 %0, ptr %1) local_unnamed_addr #0 { %11 = tail call ptr @jv_string_value(i64 %0, ptr %1) #12 %12 = tail call ptr @realpath(ptr noundef %11, ptr noundef %.0) #12 %13 = icmp eq ptr %12, null - br i1 %13, label %14, label %15 + br i1 %13, label %18, label %14 14: ; preds = %10 - tail call void @free(ptr noundef %.0) #12 - br label %19 - -15: ; preds = %10 tail call void @jv_free(i64 %0, ptr %1) #12 - %16 = tail call { i64, ptr } @jv_string(ptr noundef nonnull %12) #12 - %17 = extractvalue { i64, ptr } %16, 0 - %18 = extractvalue { i64, ptr } %16, 1 - tail call void @free(ptr noundef nonnull %12) #12 - br label %19 - -19: ; preds = %15, %14 - %.sroa.014.0 = phi i64 [ %0, %14 ], [ %17, %15 ] - %.sroa.3.0 = phi ptr [ %1, %14 ], [ %18, %15 ] + %15 = tail call { i64, ptr } @jv_string(ptr noundef nonnull %12) #12 + %16 = extractvalue { i64, ptr } %15, 0 + %17 = extractvalue { i64, ptr } %15, 1 + br label %18 + +18: ; preds = %10, %14 + %.sink = phi ptr [ %12, %14 ], [ %.0, %10 ] + %.sroa.014.0 = phi i64 [ %16, %14 ], [ %0, %10 ] + %.sroa.3.0 = phi ptr [ %17, %14 ], [ %1, %10 ] + tail call void @free(ptr noundef %.sink) #12 %.fca.0.insert = insertvalue { i64, ptr } poison, i64 %.sroa.014.0, 0 %.fca.1.insert = insertvalue { i64, ptr } %.fca.0.insert, ptr %.sroa.3.0, 1 ret { i64, ptr } %.fca.1.insert diff --git a/bench/jsonnet/optimized/pass.cpp.ll b/bench/jsonnet/optimized/pass.cpp.ll index e8ff61db4f0..ed4f141a6e0 100644 --- a/bench/jsonnet/optimized/pass.cpp.ll +++ b/bench/jsonnet/optimized/pass.cpp.ll @@ -854,15 +854,15 @@ define void @_ZN7jsonnet8internal12CompilerPass6fieldsERSt6vectorINS0_11ObjectFi %.not3031 = icmp eq ptr %3, %5 br i1 %.not3031, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %2, %75 - %.sroa.027.032 = phi ptr [ %80, %75 ], [ %3, %2 ] +.lr.ph: ; preds = %2, %66 + %.sroa.027.032 = phi ptr [ %71, %66 ], [ %3, %2 ] %6 = load i32, ptr %.sroa.027.032, align 8 - switch i32 %6, label %75 [ + switch i32 %6, label %66 [ i32 4, label %7 - i32 0, label %56 - i32 1, label %24 - i32 3, label %29 - i32 2, label %34 + i32 0, label %47 + i32 1, label %34 + i32 3, label %24 + i32 2, label %25 ] 7: ; preds = %.lr.ph @@ -889,95 +889,84 @@ define void @_ZN7jsonnet8internal12CompilerPass6fieldsERSt6vectorINS0_11ObjectFi br label %.sink.split 24: ; preds = %.lr.ph - %25 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 8 - %26 = load ptr, ptr %0, align 8 - %27 = getelementptr inbounds i8, ptr %26, i64 8 - %28 = load ptr, ptr %27, align 8 - tail call void %28(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(24) %25) - br label %47 + br label %34 -29: ; preds = %.lr.ph +25: ; preds = %.lr.ph + %26 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 8 + %27 = load ptr, ptr %0, align 8 + %28 = getelementptr inbounds i8, ptr %27, i64 8 + %29 = load ptr, ptr %28, align 8 + tail call void %29(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(24) %26) %30 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 112 %31 = load ptr, ptr %0, align 8 %32 = getelementptr inbounds i8, ptr %31, i64 48 %33 = load ptr, ptr %32, align 8 tail call void %33(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(8) %30) - br label %47 + br label %34 -34: ; preds = %.lr.ph - %35 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 8 +34: ; preds = %.lr.ph, %24, %25 + %.sink37 = phi i64 [ 112, %24 ], [ 32, %25 ], [ 8, %.lr.ph ] + %.sink36 = phi i64 [ 48, %24 ], [ 8, %25 ], [ 8, %.lr.ph ] + %35 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 %.sink37 %36 = load ptr, ptr %0, align 8 - %37 = getelementptr inbounds i8, ptr %36, i64 8 + %37 = getelementptr inbounds i8, ptr %36, i64 %.sink36 %38 = load ptr, ptr %37, align 8 - tail call void %38(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(24) %35) - %39 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 112 - %40 = load ptr, ptr %0, align 8 - %41 = getelementptr inbounds i8, ptr %40, i64 48 - %42 = load ptr, ptr %41, align 8 - tail call void %42(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(8) %39) - %43 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 32 - %44 = load ptr, ptr %0, align 8 - %45 = getelementptr inbounds i8, ptr %44, i64 8 - %46 = load ptr, ptr %45, align 8 - tail call void %46(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(24) %43) - br label %47 - -47: ; preds = %29, %34, %24 - %48 = load ptr, ptr %0, align 8 - %49 = getelementptr inbounds i8, ptr %48, i64 32 - %50 = load ptr, ptr %49, align 8 - tail call void %50(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(288) %.sroa.027.032) - %51 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 224 - %52 = load ptr, ptr %0, align 8 - %53 = getelementptr inbounds i8, ptr %52, i64 8 - %54 = load ptr, ptr %53, align 8 - tail call void %54(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(24) %51) - %55 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 248 + tail call void %38(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(8) %35) + %39 = load ptr, ptr %0, align 8 + %40 = getelementptr inbounds i8, ptr %39, i64 32 + %41 = load ptr, ptr %40, align 8 + tail call void %41(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(288) %.sroa.027.032) + %42 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 224 + %43 = load ptr, ptr %0, align 8 + %44 = getelementptr inbounds i8, ptr %43, i64 8 + %45 = load ptr, ptr %44, align 8 + tail call void %45(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(24) %42) + %46 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 248 br label %.sink.split -56: ; preds = %.lr.ph - %57 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 8 - %58 = load ptr, ptr %0, align 8 - %59 = getelementptr inbounds i8, ptr %58, i64 8 - %60 = load ptr, ptr %59, align 8 - tail call void %60(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(24) %57) - %61 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 248 - %62 = load ptr, ptr %0, align 8 - %63 = getelementptr inbounds i8, ptr %62, i64 48 - %64 = load ptr, ptr %63, align 8 - tail call void %64(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(8) %61) - %65 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 256 - %66 = load ptr, ptr %65, align 8 - %.not = icmp eq ptr %66, null - br i1 %.not, label %75, label %67 - -67: ; preds = %56 - %68 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 224 - %69 = load ptr, ptr %0, align 8 - %70 = getelementptr inbounds i8, ptr %69, i64 8 - %71 = load ptr, ptr %70, align 8 - tail call void %71(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(24) %68) +47: ; preds = %.lr.ph + %48 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 8 + %49 = load ptr, ptr %0, align 8 + %50 = getelementptr inbounds i8, ptr %49, i64 8 + %51 = load ptr, ptr %50, align 8 + tail call void %51(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(24) %48) + %52 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 248 + %53 = load ptr, ptr %0, align 8 + %54 = getelementptr inbounds i8, ptr %53, i64 48 + %55 = load ptr, ptr %54, align 8 + tail call void %55(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(8) %52) + %56 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 256 + %57 = load ptr, ptr %56, align 8 + %.not = icmp eq ptr %57, null + br i1 %.not, label %66, label %58 + +58: ; preds = %47 + %59 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 224 + %60 = load ptr, ptr %0, align 8 + %61 = getelementptr inbounds i8, ptr %60, i64 8 + %62 = load ptr, ptr %61, align 8 + tail call void %62(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(24) %59) br label %.sink.split -.sink.split: ; preds = %7, %47, %67 - %.sink = phi ptr [ %65, %67 ], [ %55, %47 ], [ %23, %7 ] - %72 = load ptr, ptr %0, align 8 - %73 = getelementptr inbounds i8, ptr %72, i64 48 - %74 = load ptr, ptr %73, align 8 - tail call void %74(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(8) %.sink) - br label %75 +.sink.split: ; preds = %7, %34, %58 + %.sink = phi ptr [ %56, %58 ], [ %46, %34 ], [ %23, %7 ] + %63 = load ptr, ptr %0, align 8 + %64 = getelementptr inbounds i8, ptr %63, i64 48 + %65 = load ptr, ptr %64, align 8 + tail call void %65(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(8) %.sink) + br label %66 -75: ; preds = %.sink.split, %.lr.ph, %56 - %76 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 264 - %77 = load ptr, ptr %0, align 8 - %78 = getelementptr inbounds i8, ptr %77, i64 8 - %79 = load ptr, ptr %78, align 8 - tail call void %79(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(24) %76) - %80 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 288 - %.not30 = icmp eq ptr %80, %5 +66: ; preds = %.sink.split, %.lr.ph, %47 + %67 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 264 + %68 = load ptr, ptr %0, align 8 + %69 = getelementptr inbounds i8, ptr %68, i64 8 + %70 = load ptr, ptr %69, align 8 + tail call void %70(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(24) %67) + %71 = getelementptr inbounds i8, ptr %.sroa.027.032, i64 288 + %.not30 = icmp eq ptr %71, %5 br i1 %.not30, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %75, %2 +._crit_edge: ; preds = %66, %2 ret void } diff --git a/bench/libevent/optimized/bufferevent.c.ll b/bench/libevent/optimized/bufferevent.c.ll index 7847a16ae87..9e53a49fe14 100644 --- a/bench/libevent/optimized/bufferevent.c.ll +++ b/bench/libevent/optimized/bufferevent.c.ll @@ -3320,7 +3320,7 @@ lor.lhs.false: ; preds = %if.then bufferevent_add_event_.exit: ; preds = %if.then, %lor.lhs.false %call2.i = tail call i32 @event_add(ptr noundef nonnull %ev_read, ptr noundef nonnull %timeout_read) #7 - %retval.0.i.lobit = ashr i32 %call2.i, 31 + %call2.i.lobit = ashr i32 %call2.i, 31 br label %if.end12 if.else: ; preds = %lor.lhs.false @@ -3328,7 +3328,7 @@ if.else: ; preds = %lor.lhs.false br label %if.end12 if.end12: ; preds = %bufferevent_add_event_.exit, %if.else, %entry - %r.0 = phi i32 [ 0, %if.else ], [ 0, %entry ], [ %retval.0.i.lobit, %bufferevent_add_event_.exit ] + %r.0 = phi i32 [ 0, %if.else ], [ 0, %entry ], [ %call2.i.lobit, %bufferevent_add_event_.exit ] %ev_write = getelementptr inbounds i8, ptr %bev, i64 136 %call13 = tail call i32 @event_pending(ptr noundef nonnull %ev_write, i16 noundef signext 4, ptr noundef null) #7 %tobool14.not = icmp eq i32 %call13, 0 @@ -3338,17 +3338,17 @@ if.then15: ; preds = %if.end12 %timeout_write = getelementptr inbounds i8, ptr %bev, i64 352 %2 = load i64, ptr %timeout_write, align 8 %tobool17.not = icmp eq i64 %2, 0 - br i1 %tobool17.not, label %lor.lhs.false18, label %bufferevent_add_event_.exit22 + br i1 %tobool17.not, label %lor.lhs.false18, label %bufferevent_add_event_.exit20 lor.lhs.false18: ; preds = %if.then15 %tv_usec20 = getelementptr inbounds i8, ptr %bev, i64 360 %3 = load i64, ptr %tv_usec20, align 8 %tobool21.not = icmp eq i64 %3, 0 - br i1 %tobool21.not, label %if.else29, label %bufferevent_add_event_.exit22 + br i1 %tobool21.not, label %if.else29, label %bufferevent_add_event_.exit20 -bufferevent_add_event_.exit22: ; preds = %if.then15, %lor.lhs.false18 - %call2.i15 = tail call i32 @event_add(ptr noundef nonnull %ev_write, ptr noundef nonnull %timeout_write) #7 - %cmp26.inv = icmp sgt i32 %call2.i15, -1 +bufferevent_add_event_.exit20: ; preds = %if.then15, %lor.lhs.false18 + %call2.i16 = tail call i32 @event_add(ptr noundef nonnull %ev_write, ptr noundef nonnull %timeout_write) #7 + %cmp26.inv = icmp sgt i32 %call2.i16, -1 %spec.select12 = select i1 %cmp26.inv, i32 %r.0, i32 -1 br label %if.end33 @@ -3356,8 +3356,8 @@ if.else29: ; preds = %lor.lhs.false18 %call31 = tail call i32 @event_remove_timer(ptr noundef nonnull %ev_write) #7 br label %if.end33 -if.end33: ; preds = %bufferevent_add_event_.exit22, %if.else29, %if.end12 - %r.1 = phi i32 [ %r.0, %if.else29 ], [ %r.0, %if.end12 ], [ %spec.select12, %bufferevent_add_event_.exit22 ] +if.end33: ; preds = %bufferevent_add_event_.exit20, %if.else29, %if.end12 + %r.1 = phi i32 [ %r.0, %if.else29 ], [ %r.0, %if.end12 ], [ %spec.select12, %bufferevent_add_event_.exit20 ] ret i32 %r.1 } @@ -3374,19 +3374,15 @@ lor.lhs.false: ; preds = %entry %tv_usec = getelementptr inbounds i8, ptr %tv, i64 8 %1 = load i64, ptr %tv_usec, align 8 %tobool1.not = icmp eq i64 %1, 0 - br i1 %tobool1.not, label %if.then, label %if.else - -if.then: ; preds = %lor.lhs.false - %call = tail call i32 @event_add(ptr noundef %ev, ptr noundef null) #7 - br label %return + br i1 %tobool1.not, label %return, label %if.else if.else: ; preds = %lor.lhs.false, %entry - %call2 = tail call i32 @event_add(ptr noundef %ev, ptr noundef nonnull %tv) #7 br label %return -return: ; preds = %if.else, %if.then - %retval.0 = phi i32 [ %call2, %if.else ], [ %call, %if.then ] - ret i32 %retval.0 +return: ; preds = %lor.lhs.false, %if.else + %tv.sink = phi ptr [ %tv, %if.else ], [ null, %lor.lhs.false ] + %call2 = tail call i32 @event_add(ptr noundef %ev, ptr noundef %tv.sink) #7 + ret i32 %call2 } declare i32 @event_remove_timer(ptr noundef) local_unnamed_addr #1 diff --git a/bench/libevent/optimized/http.c.ll b/bench/libevent/optimized/http.c.ll index 1f29f36c895..0923039503c 100644 --- a/bench/libevent/optimized/http.c.ll +++ b/bench/libevent/optimized/http.c.ll @@ -1257,20 +1257,20 @@ while.body.i: ; preds = %land.rhs.i while.end.i: ; preds = %while.body.i, %land.rhs.i, %sw.bb %len.addr.0.lcssa.i = phi i64 [ %.pr, %sw.bb ], [ %len.addr.0164.i, %land.rhs.i ], [ %dec.i, %while.body.i ] %cmp5.i = icmp ult i64 %len.addr.0.lcssa.i, 14 - br i1 %cmp5.i, label %103, label %if.end.i + br i1 %cmp5.i, label %101, label %if.end.i if.end.i: ; preds = %while.end.i %call.i = call ptr @strsep(ptr noundef nonnull %line.addr.i, ptr noundef nonnull @.str.7) #19 %6 = load ptr, ptr %line.addr.i, align 8 %tobool.not.i = icmp eq ptr %6, null - br i1 %tobool.not.i, label %103, label %if.end8.i + br i1 %tobool.not.i, label %101, label %if.end8.i if.end8.i: ; preds = %if.end.i %call9.i = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) %6, i32 noundef 32) #18 %tobool10.not.i = icmp eq ptr %call9.i, null %cmp11.i = icmp eq ptr %6, %call9.i %or.cond119.i = or i1 %tobool10.not.i, %cmp11.i - br i1 %or.cond119.i, label %103, label %if.end14.i + br i1 %or.cond119.i, label %101, label %if.end14.i if.end14.i: ; preds = %if.end8.i store i8 0, ptr %call9.i, align 1 @@ -1765,7 +1765,7 @@ if.then421.i: ; preds = %land.lhs.true415.i if.then426.i: ; preds = %if.then421.i call void (ptr, ...) @event_warn(ptr noundef nonnull @.str.52, ptr noundef nonnull @__func__.evhttp_parse_request_line) #19 - br label %103 + br label %101 if.end427.i: ; preds = %if.then421.i %85 = load i16, ptr %flags.i, align 4 @@ -1774,7 +1774,7 @@ if.end427.i: ; preds = %if.then421.i if.then432.i: ; preds = %if.end427.i call void (ptr, ...) @event_warn(ptr noundef nonnull @.str.53, ptr noundef nonnull @__func__.evhttp_parse_request_line) #19 - br label %103 + br label %101 if.end433.i: ; preds = %if.end427.i %86 = load i32, ptr %type413.i, align 8 @@ -1823,7 +1823,7 @@ evhttp_parse_http_version.exit.thread.i: ; preds = %if.then2.i.i, %do.b call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %major.i.i) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %minor.i.i) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ch.i.i) - br label %103 + br label %101 if.end448.i: ; preds = %if.end442.i %conv.i.i = trunc i32 %89 to i8 @@ -1845,11 +1845,11 @@ if.end448.i: ; preds = %if.end442.i do.body454.i: ; preds = %if.end448.i %93 = load i32, ptr @event_debug_logging_mask_, align 4 %tobool455.not.i = icmp eq i32 %93, 0 - br i1 %tobool455.not.i, label %103, label %if.then456.i + br i1 %tobool455.not.i, label %101, label %if.then456.i if.then456.i: ; preds = %do.body454.i call void (ptr, ...) @event_debugx_(ptr noundef nonnull @.str.55, ptr noundef nonnull @__func__.evhttp_parse_request_line) #19 - br label %103 + br label %101 if.end459.i: ; preds = %if.end448.i %cmp460.i = icmp eq i32 %type.1170.i, 128 @@ -1907,7 +1907,7 @@ if.then13.i.i: ; preds = %err.thread11.i.i, % evhttp_uri_parse_authority.exit.thread.i: ; preds = %if.then13.i.i, %err.thread.i.i %uri_elems159.i = getelementptr inbounds i8, ptr %req, i64 104 store ptr null, ptr %uri_elems159.i, align 8 - br label %103 + br label %101 evhttp_uri_parse_authority.exit.i: ; preds = %if.end7.i.i %uri_elems.i = getelementptr inbounds i8, ptr %req, i64 104 @@ -1919,7 +1919,7 @@ if.else.i: ; preds = %if.end459.i %uri_elems471.i = getelementptr inbounds i8, ptr %req, i64 104 store ptr %call470.i, ptr %uri_elems471.i, align 8 %cmp472.i = icmp eq ptr %call470.i, null - br i1 %cmp472.i, label %103, label %if.end476.i + br i1 %cmp472.i, label %101, label %if.end476.i if.end476.i: ; preds = %if.else.i, %evhttp_uri_parse_authority.exit.i %95 = phi ptr [ %call.i151.i, %evhttp_uri_parse_authority.exit.i ], [ %call470.i, %if.else.i ] @@ -1940,35 +1940,24 @@ lor.lhs.false485.i: ; preds = %land.lhs.true482.i %tobool487.i = icmp eq i32 %call486.i, 0 %tobool489.i = icmp ne ptr %97, null %or.cond.i = select i1 %tobool487.i, i1 %tobool489.i, i1 false - br i1 %or.cond.i, label %lor.lhs.false485.split.i, label %evhttp_parse_request_line.exit + br i1 %or.cond.i, label %land.lhs.true490.i, label %evhttp_parse_request_line.exit -lor.lhs.false485.split.i: ; preds = %lor.lhs.false485.i +land.lhs.true488.i: ; preds = %land.lhs.true482.i + %tobool489.old.not.i = icmp eq ptr %97, null + br i1 %tobool489.old.not.i, label %evhttp_parse_request_line.exit, label %land.lhs.true490.i + +land.lhs.true490.i: ; preds = %land.lhs.true488.i, %lor.lhs.false485.i %98 = load ptr, ptr %evcon, align 8 %http_server116.i = getelementptr inbounds i8, ptr %98, i64 288 %99 = load ptr, ptr %http_server116.i, align 8 %call492117.i = call fastcc i32 @evhttp_find_vhost(ptr noundef %99, ptr noundef null, ptr noundef %97) - br label %land.lhs.true490.i - -land.lhs.true488.i: ; preds = %land.lhs.true482.i - %tobool489.old.not.i = icmp eq ptr %97, null - br i1 %tobool489.old.not.i, label %evhttp_parse_request_line.exit, label %land.lhs.true488.split.i - -land.lhs.true488.split.i: ; preds = %land.lhs.true488.i - %100 = load ptr, ptr %evcon, align 8 - %http_server113.i = getelementptr inbounds i8, ptr %100, i64 288 - %101 = load ptr, ptr %http_server113.i, align 8 - %call492114.i = call fastcc i32 @evhttp_find_vhost(ptr noundef %101, ptr noundef null, ptr noundef nonnull %97) - br label %land.lhs.true490.i - -land.lhs.true490.i: ; preds = %land.lhs.true488.split.i, %lor.lhs.false485.split.i - %phi.call.i = phi i32 [ %call492114.i, %land.lhs.true488.split.i ], [ %call492117.i, %lor.lhs.false485.split.i ] - %tobool493.not.i = icmp eq i32 %phi.call.i, 0 + %tobool493.not.i = icmp eq i32 %call492117.i, 0 br i1 %tobool493.not.i, label %if.then494.i, label %evhttp_parse_request_line.exit if.then494.i: ; preds = %land.lhs.true490.i %flags495.i = getelementptr inbounds i8, ptr %req, i64 24 - %102 = load i32, ptr %flags495.i, align 8 - %or.i = or i32 %102, 2 + %100 = load i32, ptr %flags495.i, align 8 + %or.i = or i32 %100, 2 store i32 %or.i, ptr %flags495.i, align 8 br label %evhttp_parse_request_line.exit @@ -1977,7 +1966,7 @@ evhttp_parse_request_line.exit: ; preds = %if.end476.i, %lor.l call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ext_method.i) br label %sw.epilog -103: ; preds = %if.then426.i, %if.then432.i, %while.end.i, %if.end.i, %if.end8.i, %do.body454.i, %if.then456.i, %if.else.i, %evhttp_parse_http_version.exit.thread.i, %evhttp_uri_parse_authority.exit.thread.i +101: ; preds = %if.then426.i, %if.then432.i, %while.end.i, %if.end.i, %if.end8.i, %do.body454.i, %if.then456.i, %if.else.i, %evhttp_parse_http_version.exit.thread.i, %evhttp_uri_parse_authority.exit.thread.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %line.addr.i) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ext_method.i) br label %sw.epilog @@ -1986,48 +1975,48 @@ sw.bb18: ; preds = %if.end13 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %line.addr.i17) store ptr %call, ptr %line.addr.i17, align 8 %call.i18 = call ptr @strsep(ptr noundef nonnull %line.addr.i17, ptr noundef nonnull @.str.7) #19 - %104 = load ptr, ptr %line.addr.i17, align 8 - %cmp.i19 = icmp eq ptr %104, null - br i1 %cmp.i19, label %112, label %if.end.i20 + %102 = load ptr, ptr %line.addr.i17, align 8 + %cmp.i19 = icmp eq ptr %102, null + br i1 %cmp.i19, label %110, label %if.end.i20 if.end.i20: ; preds = %sw.bb18 %call1.i = call ptr @strsep(ptr noundef nonnull %line.addr.i17, ptr noundef nonnull @.str.7) #19 - %105 = load ptr, ptr %line.addr.i17, align 8 - %cmp2.not.i = icmp eq ptr %105, null - %spec.select.i = select i1 %cmp2.not.i, ptr @.str.14, ptr %105 + %103 = load ptr, ptr %line.addr.i17, align 8 + %cmp2.not.i = icmp eq ptr %103, null + %spec.select.i = select i1 %cmp2.not.i, ptr @.str.14, ptr %103 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %major.i.i14) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %minor.i.i15) call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ch.i.i16) %call.i.i21 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %call.i18, ptr noundef nonnull @.str.58, ptr noundef nonnull %major.i.i14, ptr noundef nonnull %minor.i.i15, ptr noundef nonnull %ch.i.i16) #19 %cmp.i.i22 = icmp ne i32 %call.i.i21, 2 - %106 = load i32, ptr %major.i.i14, align 4 - %cmp1.i.i23 = icmp sgt i32 %106, 1 + %104 = load i32, ptr %major.i.i14, align 4 + %cmp1.i.i23 = icmp sgt i32 %104, 1 %or.cond.i.i24 = select i1 %cmp.i.i22, i1 true, i1 %cmp1.i.i23 br i1 %or.cond.i.i24, label %do.body.i.i34, label %if.end8.i25 do.body.i.i34: ; preds = %if.end.i20 - %107 = load i32, ptr @event_debug_logging_mask_, align 4 - %tobool.not.i.i35 = icmp eq i32 %107, 0 + %105 = load i32, ptr @event_debug_logging_mask_, align 4 + %tobool.not.i.i35 = icmp eq i32 %105, 0 br i1 %tobool.not.i.i35, label %evhttp_parse_http_version.exit.thread.i38, label %if.then2.i.i36 if.then2.i.i36: ; preds = %do.body.i.i34 %remote_host.i.i37 = getelementptr inbounds i8, ptr %req, i64 48 - %108 = load ptr, ptr %remote_host.i.i37, align 8 - call void (ptr, ...) @event_debugx_(ptr noundef nonnull @.str.59, ptr noundef nonnull @__func__.evhttp_parse_http_version, ptr noundef %call.i18, ptr noundef nonnull %req, ptr noundef %108) #19 + %106 = load ptr, ptr %remote_host.i.i37, align 8 + call void (ptr, ...) @event_debugx_(ptr noundef nonnull @.str.59, ptr noundef nonnull @__func__.evhttp_parse_http_version, ptr noundef %call.i18, ptr noundef nonnull %req, ptr noundef %106) #19 br label %evhttp_parse_http_version.exit.thread.i38 evhttp_parse_http_version.exit.thread.i38: ; preds = %if.then2.i.i36, %do.body.i.i34 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %major.i.i14) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %minor.i.i15) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ch.i.i16) - br label %112 + br label %110 if.end8.i25: ; preds = %if.end.i20 - %conv.i.i26 = trunc i32 %106 to i8 + %conv.i.i26 = trunc i32 %104 to i8 %major4.i.i27 = getelementptr inbounds i8, ptr %req, i64 112 store i8 %conv.i.i26, ptr %major4.i.i27, align 8 - %109 = load i32, ptr %minor.i.i15, align 4 - %conv5.i.i28 = trunc i32 %109 to i8 + %107 = load i32, ptr %minor.i.i15, align 4 + %conv5.i.i28 = trunc i32 %107 to i8 %minor6.i.i29 = getelementptr inbounds i8, ptr %req, i64 113 store i8 %conv5.i.i28, ptr %minor6.i.i29, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %major.i.i14) @@ -2040,22 +2029,22 @@ if.end8.i25: ; preds = %if.end.i20 br i1 %cmp.i8.not.i, label %do.body.i, label %if.end16.i do.body.i: ; preds = %if.end8.i25 - %110 = load i32, ptr @event_debug_logging_mask_, align 4 - %tobool13.not.i = icmp eq i32 %110, 0 - br i1 %tobool13.not.i, label %112, label %if.then14.i + %108 = load i32, ptr @event_debug_logging_mask_, align 4 + %tobool13.not.i = icmp eq i32 %108, 0 + br i1 %tobool13.not.i, label %110, label %if.then14.i if.then14.i: ; preds = %do.body.i call void (ptr, ...) @event_debugx_(ptr noundef nonnull @.str.60, ptr noundef nonnull @__func__.evhttp_parse_response_line, ptr noundef %call1.i) #19 - br label %112 + br label %110 if.end16.i: ; preds = %if.end8.i25 %response_code_line.i = getelementptr inbounds i8, ptr %req, i64 120 - %111 = load ptr, ptr %response_code_line.i, align 8 - %cmp17.not.i31 = icmp eq ptr %111, null + %109 = load ptr, ptr %response_code_line.i, align 8 + %cmp17.not.i31 = icmp eq ptr %109, null br i1 %cmp17.not.i31, label %if.end20.i32, label %if.then18.i if.then18.i: ; preds = %if.end16.i - call void @event_mm_free_(ptr noundef nonnull %111) #19 + call void @event_mm_free_(ptr noundef nonnull %109) #19 br label %if.end20.i32 if.end20.i32: ; preds = %if.then18.i, %if.end16.i @@ -2066,18 +2055,18 @@ if.end20.i32: ; preds = %if.then18.i, %if.en if.then24.i: ; preds = %if.end20.i32 call void (ptr, ...) @event_warn(ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.evhttp_parse_response_line) #19 - br label %112 + br label %110 evhttp_parse_response_line.exit: ; preds = %if.end20.i32 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %line.addr.i17) br label %sw.epilog -112: ; preds = %if.then24.i, %sw.bb18, %do.body.i, %if.then14.i, %evhttp_parse_http_version.exit.thread.i38 +110: ; preds = %if.then24.i, %sw.bb18, %do.body.i, %if.then14.i, %evhttp_parse_http_version.exit.thread.i38 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %line.addr.i17) br label %sw.epilog -sw.epilog: ; preds = %112, %evhttp_parse_response_line.exit, %103, %evhttp_parse_request_line.exit, %if.end13 - %status.0 = phi i32 [ -1, %if.end13 ], [ -1, %103 ], [ 1, %evhttp_parse_request_line.exit ], [ -1, %112 ], [ 1, %evhttp_parse_response_line.exit ] +sw.epilog: ; preds = %110, %evhttp_parse_response_line.exit, %101, %evhttp_parse_request_line.exit, %if.end13 + %status.0 = phi i32 [ -1, %if.end13 ], [ -1, %101 ], [ 1, %evhttp_parse_request_line.exit ], [ -1, %110 ], [ 1, %evhttp_parse_response_line.exit ] call void @event_mm_free_(ptr noundef nonnull %call) #19 br label %return diff --git a/bench/libphonenumber/optimized/phonenumber.pb.cc.ll b/bench/libphonenumber/optimized/phonenumber.pb.cc.ll index 4cc766cf856..5d9b1c7ec50 100644 --- a/bench/libphonenumber/optimized/phonenumber.pb.cc.ll +++ b/bench/libphonenumber/optimized/phonenumber.pb.cc.ll @@ -263,7 +263,7 @@ define dso_local void @_ZN4i18n12phonenumbers11PhoneNumberC2ERKS1_(ptr noundef n %14 = inttoptr i64 %13 to ptr %15 = getelementptr inbounds i8, ptr %14, i64 8 %16 = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #17 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(40) %16, i8 0, i64 40, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %16, i8 0, i64 40, i1 false) %17 = getelementptr inbounds i8, ptr %16, i64 8 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #16 %18 = ptrtoint ptr %16 to i64 @@ -956,7 +956,6 @@ _ZN4i18n12phonenumbers37PhoneNumber_CountryCodeSource_IsValidEi.exit: ; preds = 180: ; preds = %178 %181 = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #17 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(40) %181, i8 0, i64 40, i1 false) br label %_ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit.i 182: ; preds = %178 @@ -971,18 +970,18 @@ _ZN4i18n12phonenumbers37PhoneNumber_CountryCodeSource_IsValidEi.exit: ; preds = _ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i.i: ; preds = %185, %182 %186 = tail call noundef ptr @_ZN6google8protobuf8internal9ArenaImpl28AllocateAlignedAndAddCleanupEmPFvPvE(ptr noundef nonnull align 8 dereferenceable(88) %171, i64 noundef 40, ptr noundef nonnull @_ZN6google8protobuf8internal21arena_destruct_objectINS1_16InternalMetadata9ContainerINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEvPv) - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %186, i8 0, i64 40, i1 false) br label %_ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit.i _ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit.i: ; preds = %_ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i.i, %180 - %.sink26.i.i = phi ptr [ %186, %_ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i.i ], [ %181, %180 ] - %187 = getelementptr inbounds i8, ptr %.sink26.i.i, i64 8 + %.sink.i.i = phi ptr [ %186, %_ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i.i ], [ %181, %180 ] + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sink.i.i, i8 0, i64 40, i1 false) + %187 = getelementptr inbounds i8, ptr %.sink.i.i, i64 8 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %187) #16 - %188 = ptrtoint ptr %.sink26.i.i to i64 + %188 = ptrtoint ptr %.sink.i.i to i64 %189 = or i64 %188, 1 %190 = inttoptr i64 %189 to ptr store ptr %190, ptr %3, align 8 - store ptr %171, ptr %.sink26.i.i, align 8 + store ptr %171, ptr %.sink.i.i, align 8 br label %_ZN4i18n12phonenumbers11PhoneNumber22mutable_unknown_fieldsB5cxx11Ev.exit _ZN4i18n12phonenumbers11PhoneNumber22mutable_unknown_fieldsB5cxx11Ev.exit: ; preds = %174, %_ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit.i @@ -1096,7 +1095,6 @@ _ZN6google8protobuf8internal12ReadVarint64EPPKc.exit61: ; preds = %214 243: ; preds = %241 %244 = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #17 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(40) %244, i8 0, i64 40, i1 false) br label %_ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit 245: ; preds = %241 @@ -1111,18 +1109,18 @@ _ZN6google8protobuf8internal12ReadVarint64EPPKc.exit61: ; preds = %214 _ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i: ; preds = %248, %245 %249 = tail call noundef ptr @_ZN6google8protobuf8internal9ArenaImpl28AllocateAlignedAndAddCleanupEmPFvPvE(ptr noundef nonnull align 8 dereferenceable(88) %234, i64 noundef 40, ptr noundef nonnull @_ZN6google8protobuf8internal21arena_destruct_objectINS1_16InternalMetadata9ContainerINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEvPv) - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %249, i8 0, i64 40, i1 false) br label %_ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit _ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit: ; preds = %243, %_ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i - %.sink26.i = phi ptr [ %249, %_ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i ], [ %244, %243 ] - %250 = getelementptr inbounds i8, ptr %.sink26.i, i64 8 + %.sink.i = phi ptr [ %249, %_ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i ], [ %244, %243 ] + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sink.i, i8 0, i64 40, i1 false) + %250 = getelementptr inbounds i8, ptr %.sink.i, i64 8 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %250) #16 - %251 = ptrtoint ptr %.sink26.i to i64 + %251 = ptrtoint ptr %.sink.i to i64 %252 = or i64 %251, 1 %253 = inttoptr i64 %252 to ptr store ptr %253, ptr %3, align 8 - store ptr %234, ptr %.sink26.i, align 8 + store ptr %234, ptr %.sink.i, align 8 br label %254 254: ; preds = %_ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit, %237 @@ -1949,7 +1947,6 @@ define dso_local void @_ZN4i18n12phonenumbers11PhoneNumber9MergeFromERKS1_(ptr n 21: ; preds = %19 %22 = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #17 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(40) %22, i8 0, i64 40, i1 false) br label %_ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit.i 23: ; preds = %19 @@ -1964,18 +1961,18 @@ define dso_local void @_ZN4i18n12phonenumbers11PhoneNumber9MergeFromERKS1_(ptr n _ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i.i: ; preds = %26, %23 %27 = tail call noundef ptr @_ZN6google8protobuf8internal9ArenaImpl28AllocateAlignedAndAddCleanupEmPFvPvE(ptr noundef nonnull align 8 dereferenceable(88) %12, i64 noundef 40, ptr noundef nonnull @_ZN6google8protobuf8internal21arena_destruct_objectINS1_16InternalMetadata9ContainerINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEvPv) - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %27, i8 0, i64 40, i1 false) br label %_ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit.i _ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit.i: ; preds = %_ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i.i, %21 - %.sink26.i.i = phi ptr [ %27, %_ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i.i ], [ %22, %21 ] - %28 = getelementptr inbounds i8, ptr %.sink26.i.i, i64 8 + %.sink.i.i = phi ptr [ %27, %_ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i.i ], [ %22, %21 ] + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sink.i.i, i8 0, i64 40, i1 false) + %28 = getelementptr inbounds i8, ptr %.sink.i.i, i64 8 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #16 - %29 = ptrtoint ptr %.sink26.i.i to i64 + %29 = ptrtoint ptr %.sink.i.i to i64 %30 = or i64 %29, 1 %31 = inttoptr i64 %30 to ptr store ptr %31, ptr %3, align 8 - store ptr %12, ptr %.sink26.i.i, align 8 + store ptr %12, ptr %.sink.i.i, align 8 br label %_ZN6google8protobuf8internal16InternalMetadata11DoMergeFromINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvRKT_.exit _ZN6google8protobuf8internal16InternalMetadata11DoMergeFromINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvRKT_.exit: ; preds = %15, %_ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit.i @@ -2274,7 +2271,6 @@ thread-pre-split: ; preds = %2 18: ; preds = %16 %19 = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #17 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(40) %19, i8 0, i64 40, i1 false) br label %_ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit 20: ; preds = %16 @@ -2289,18 +2285,18 @@ thread-pre-split: ; preds = %2 _ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i: ; preds = %23, %20 %24 = tail call noundef ptr @_ZN6google8protobuf8internal9ArenaImpl28AllocateAlignedAndAddCleanupEmPFvPvE(ptr noundef nonnull align 8 dereferenceable(88) %8, i64 noundef 40, ptr noundef nonnull @_ZN6google8protobuf8internal21arena_destruct_objectINS1_16InternalMetadata9ContainerINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEvPv) - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %24, i8 0, i64 40, i1 false) br label %_ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit _ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit: ; preds = %18, %_ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i - %.sink26.i = phi ptr [ %24, %_ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i ], [ %19, %18 ] - %25 = getelementptr inbounds i8, ptr %.sink26.i, i64 8 + %.sink.i = phi ptr [ %24, %_ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i ], [ %19, %18 ] + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sink.i, i8 0, i64 40, i1 false) + %25 = getelementptr inbounds i8, ptr %.sink.i, i64 8 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #16 - %26 = ptrtoint ptr %.sink26.i to i64 + %26 = ptrtoint ptr %.sink.i to i64 %27 = or i64 %26, 1 %28 = inttoptr i64 %27 to ptr store ptr %28, ptr %4, align 8 - store ptr %8, ptr %.sink26.i, align 8 + store ptr %8, ptr %.sink.i, align 8 %.pre = load ptr, ptr %3, align 8 %.pre40 = ptrtoint ptr %.pre to i64 br label %29 @@ -2325,7 +2321,6 @@ _ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7 38: ; preds = %36 %39 = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #17 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(40) %39, i8 0, i64 40, i1 false) br label %_ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit.i 40: ; preds = %36 @@ -2340,18 +2335,18 @@ _ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7 _ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i.i: ; preds = %43, %40 %44 = tail call noundef ptr @_ZN6google8protobuf8internal9ArenaImpl28AllocateAlignedAndAddCleanupEmPFvPvE(ptr noundef nonnull align 8 dereferenceable(88) %30, i64 noundef 40, ptr noundef nonnull @_ZN6google8protobuf8internal21arena_destruct_objectINS1_16InternalMetadata9ContainerINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEvPv) - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %44, i8 0, i64 40, i1 false) br label %_ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit.i _ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit.i: ; preds = %_ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i.i, %38 - %.sink26.i.i = phi ptr [ %44, %_ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i.i ], [ %39, %38 ] - %45 = getelementptr inbounds i8, ptr %.sink26.i.i, i64 8 + %.sink.i.i = phi ptr [ %44, %_ZNK6google8protobuf5Arena9AllocHookEPKSt9type_infom.exit.i.i ], [ %39, %38 ] + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sink.i.i, i8 0, i64 40, i1 false) + %45 = getelementptr inbounds i8, ptr %.sink.i.i, i64 8 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #16 - %46 = ptrtoint ptr %.sink26.i.i to i64 + %46 = ptrtoint ptr %.sink.i.i to i64 %47 = or i64 %46, 1 %48 = inttoptr i64 %47 to ptr store ptr %48, ptr %3, align 8 - store ptr %30, ptr %.sink26.i.i, align 8 + store ptr %30, ptr %.sink.i.i, align 8 br label %_ZN6google8protobuf8internal16InternalMetadata6DoSwapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvPT_.exit _ZN6google8protobuf8internal16InternalMetadata6DoSwapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvPT_.exit: ; preds = %32, %_ZN6google8protobuf8internal16InternalMetadata27mutable_unknown_fields_slowINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_v.exit.i diff --git a/bench/libpng/optimized/pngread.c.ll b/bench/libpng/optimized/pngread.c.ll index f545d5f6620..7094c19df86 100644 --- a/bench/libpng/optimized/pngread.c.ll +++ b/bench/libpng/optimized/pngread.c.ll @@ -2564,8 +2564,7 @@ make_gray_colormap.exit: ; preds = %.preheader store i16 %124, ptr %127, align 2 %128 = getelementptr inbounds i8, ptr %2, i64 8 store i16 %124, ptr %128, align 2 - call void @png_set_background_fixed(ptr noundef nonnull %8, ptr noundef nonnull %2, i32 noundef 1, i32 noundef 0, i32 noundef 0) #11 - br label %make_ga_colormap.exit.thread.thread + br label %make_ga_colormap.exit.thread.thread.sink.split 129: ; preds = %103 %130 = select i1 %.not.not, i32 255, i32 65535 @@ -2690,8 +2689,7 @@ make_gray_colormap.exit463: ; preds = %.preheader579 store i16 %179, ptr %182, align 2 %183 = getelementptr inbounds i8, ptr %3, i64 8 store i16 %179, ptr %183, align 2 - call void @png_set_background_fixed(ptr noundef %8, ptr noundef nonnull %3, i32 noundef 1, i32 noundef 0, i32 noundef 0) #11 - br label %make_ga_colormap.exit.thread.thread + br label %make_ga_colormap.exit.thread.thread.sink.split 184: ; preds = %153 %185 = getelementptr inbounds i8, ptr %6, i64 28 @@ -3420,8 +3418,7 @@ decode_gamma.exit521.thread: ; preds = %.preheader585, %dec %602 = trunc nuw i32 %.0404 to i16 %603 = getelementptr inbounds i8, ptr %5, i64 6 store i16 %602, ptr %603, align 2 - call void @png_set_background_fixed(ptr noundef %8, ptr noundef nonnull %5, i32 noundef 1, i32 noundef 0, i32 noundef 0) #11 - br label %make_ga_colormap.exit.thread.thread + br label %make_ga_colormap.exit.thread.thread.sink.split 604: ; preds = %360 %605 = getelementptr inbounds i8, ptr %6, i64 28 @@ -3729,10 +3726,17 @@ make_ga_colormap.exit.thread: ; preds = %318, %781, %777, %m i32 3, label %make_ga_colormap.exit.thread.thread572 ] -make_ga_colormap.exit.thread.thread: ; preds = %617, %148, %266, %596, %178, %123, %make_gray_colormap.exit, %make_ga_colormap.exit.thread - %.0394556569 = phi i32 [ %.0394556, %make_ga_colormap.exit.thread ], [ 256, %596 ], [ 256, %178 ], [ 256, %123 ], [ 256, %make_gray_colormap.exit ], [ 231, %266 ], [ 231, %148 ], [ 256, %617 ] - %.0384558567 = phi i32 [ %.0384558, %make_ga_colormap.exit.thread ], [ 3, %596 ], [ 0, %178 ], [ 0, %123 ], [ 0, %make_gray_colormap.exit ], [ 1, %266 ], [ 1, %148 ], [ 3, %617 ] - %.0383559565 = phi i32 [ %.0383559, %make_ga_colormap.exit.thread ], [ %405, %596 ], [ 256, %178 ], [ 256, %123 ], [ 256, %make_gray_colormap.exit ], [ %220, %266 ], [ %145, %148 ], [ %612, %617 ] +make_ga_colormap.exit.thread.thread.sink.split: ; preds = %123, %178, %596 + %.sink = phi ptr [ %5, %596 ], [ %3, %178 ], [ %2, %123 ] + %.0384558567.ph = phi i32 [ 3, %596 ], [ 0, %178 ], [ 0, %123 ] + %.0383559565.ph = phi i32 [ %405, %596 ], [ 256, %178 ], [ 256, %123 ] + call void @png_set_background_fixed(ptr noundef %8, ptr noundef nonnull %.sink, i32 noundef 1, i32 noundef 0, i32 noundef 0) #11 + br label %make_ga_colormap.exit.thread.thread + +make_ga_colormap.exit.thread.thread: ; preds = %617, %148, %266, %make_ga_colormap.exit.thread.thread.sink.split, %make_gray_colormap.exit, %make_ga_colormap.exit.thread + %.0394556569 = phi i32 [ %.0394556, %make_ga_colormap.exit.thread ], [ 256, %make_gray_colormap.exit ], [ 256, %make_ga_colormap.exit.thread.thread.sink.split ], [ 231, %266 ], [ 231, %148 ], [ 256, %617 ] + %.0384558567 = phi i32 [ %.0384558, %make_ga_colormap.exit.thread ], [ 0, %make_gray_colormap.exit ], [ %.0384558567.ph, %make_ga_colormap.exit.thread.thread.sink.split ], [ 1, %266 ], [ 1, %148 ], [ 3, %617 ] + %.0383559565 = phi i32 [ %.0383559, %make_ga_colormap.exit.thread ], [ 256, %make_gray_colormap.exit ], [ %.0383559565.ph, %make_ga_colormap.exit.thread.thread.sink.split ], [ %220, %266 ], [ %145, %148 ], [ %612, %617 ] call void @png_set_alpha_mode_fixed(ptr noundef %8, i32 noundef 0, i32 noundef 220000) #11 br label %make_ga_colormap.exit.thread.thread572 diff --git a/bench/libpng/optimized/pngrutil.c.ll b/bench/libpng/optimized/pngrutil.c.ll index 11f8e793693..07021a01558 100644 --- a/bench/libpng/optimized/pngrutil.c.ll +++ b/bench/libpng/optimized/pngrutil.c.ll @@ -6094,8 +6094,8 @@ define void @png_read_IDAT_data(ptr noalias noundef %0, ptr noundef %1, i64 noun %23 = getelementptr inbounds i8, ptr %0, i64 368 br label %24 -24: ; preds = %114, %3 - %.1 = phi i64 [ %spec.select, %3 ], [ %.3, %114 ] +24: ; preds = %113, %3 + %.1 = phi i64 [ %spec.select, %3 ], [ %.3, %113 ] %25 = load i32, ptr %10, align 8 %26 = icmp eq i32 %25, 0 br i1 %26, label %.preheader.preheader, label %82 @@ -6289,7 +6289,7 @@ png_zlib_inflate.exit: ; preds = %92, %94 store i32 0, ptr %8, align 8 switch i32 %.0.i, label %110 [ i32 1, label %100 - i32 0, label %114 + i32 0, label %113 ] 100: ; preds = %png_zlib_inflate.exit @@ -6308,45 +6308,42 @@ png_zlib_inflate.exit: ; preds = %92, %94 107: ; preds = %100 %108 = load i32, ptr %11, align 8 %.not70 = icmp eq i32 %108, 0 - br i1 %.not70, label %115, label %109 + br i1 %.not70, label %114, label %109 109: ; preds = %107, %100 call void @png_chunk_benign_error(ptr noundef nonnull %0, ptr noundef nonnull @.str.56) #12 - br label %115 + br label %114 110: ; preds = %png_zlib_inflate.exit call void @png_zstream_error(ptr noundef nonnull %0, i32 noundef %.0.i) #12 %111 = load ptr, ptr %23, align 8 - br i1 %9, label %113, label %112 + br i1 %9, label %.loopexit.sink.split, label %112 112: ; preds = %110 call void @png_chunk_error(ptr noundef nonnull %0, ptr noundef %111) #11 unreachable -113: ; preds = %110 - call void @png_chunk_benign_error(ptr noundef nonnull %0, ptr noundef %111) #12 - br label %.loopexit - -114: ; preds = %png_zlib_inflate.exit +113: ; preds = %png_zlib_inflate.exit %cond = icmp eq i64 %.3, 0 br i1 %cond, label %.loopexit, label %24 -115: ; preds = %107, %109 +114: ; preds = %107, %109 %.not71 = icmp eq i64 %.3, 0 - br i1 %.not71, label %.loopexit, label %116 + br i1 %.not71, label %.loopexit, label %115 -116: ; preds = %115 - br i1 %9, label %118, label %117 +115: ; preds = %114 + br i1 %9, label %.loopexit.sink.split, label %116 -117: ; preds = %116 +116: ; preds = %115 call void @png_error(ptr noundef nonnull %0, ptr noundef nonnull @.str.55) #11 unreachable -118: ; preds = %116 - call void @png_chunk_benign_error(ptr noundef nonnull %0, ptr noundef nonnull @.str.57) #12 +.loopexit.sink.split: ; preds = %115, %110 + %.str.57.sink = phi ptr [ %111, %110 ], [ @.str.57, %115 ] + call void @png_chunk_benign_error(ptr noundef nonnull %0, ptr noundef %.str.57.sink) #12 br label %.loopexit -.loopexit: ; preds = %114, %118, %115, %113 +.loopexit: ; preds = %113, %.loopexit.sink.split, %114 ret void } diff --git a/bench/libwebp/optimized/image_enc.c.ll b/bench/libwebp/optimized/image_enc.c.ll index 72165016fa6..a4d516f59fb 100644 --- a/bench/libwebp/optimized/image_enc.c.ll +++ b/bench/libwebp/optimized/image_enc.c.ll @@ -21,14 +21,14 @@ define hidden range(i32 0, 2) i32 @WebPWritePNG(ptr noundef %0, ptr noundef read %6 = icmp eq ptr %0, null %7 = icmp eq ptr %1, null %or.cond = or i1 %6, %7 - br i1 %or.cond, label %49, label %8 + br i1 %or.cond, label %47, label %8 8: ; preds = %2 %9 = call noalias ptr @png_create_write_struct(ptr noundef nonnull @.str, ptr noundef null, ptr noundef nonnull @PNGErrorFunction, ptr noundef null) #8 store volatile ptr %9, ptr %3, align 8 %10 = load volatile ptr, ptr %3, align 8 %11 = icmp eq ptr %10, null - br i1 %11, label %49, label %12 + br i1 %11, label %47, label %12 12: ; preds = %8 %13 = load volatile ptr, ptr %3, align 8 @@ -36,87 +36,84 @@ define hidden range(i32 0, 2) i32 @WebPWritePNG(ptr noundef %0, ptr noundef read store volatile ptr %14, ptr %4, align 8 %15 = load volatile ptr, ptr %4, align 8 %16 = icmp eq ptr %15, null - br i1 %16, label %17, label %18 + br i1 %16, label %.sink.split, label %17 17: ; preds = %12 - call void @png_destroy_write_struct(ptr noundef nonnull %3, ptr noundef null) #8 - br label %49 - -18: ; preds = %12 - %19 = load volatile ptr, ptr %3, align 8 - %20 = call ptr @png_set_longjmp_fn(ptr noundef %19, ptr noundef nonnull @longjmp, i64 noundef 200) #8 - %21 = call i32 @_setjmp(ptr noundef %20) #9 - %.not = icmp eq i32 %21, 0 - br i1 %.not, label %23, label %22 - -22: ; preds = %18 - call void @png_destroy_write_struct(ptr noundef nonnull %3, ptr noundef nonnull %4) #8 - br label %49 - -23: ; preds = %18 - %24 = load volatile ptr, ptr %3, align 8 - call void @png_init_io(ptr noundef %24, ptr noundef nonnull %0) #8 - %25 = getelementptr inbounds i8, ptr %1, i64 4 - %26 = load i32, ptr %25, align 4 - %27 = getelementptr inbounds i8, ptr %1, i64 8 - %28 = load i32, ptr %27, align 8 - %29 = getelementptr inbounds i8, ptr %1, i64 16 - %30 = load ptr, ptr %29, align 8 - store ptr %30, ptr %5, align 8 - %31 = getelementptr inbounds i8, ptr %1, i64 24 - %32 = load i32, ptr %31, align 8 - %33 = load i32, ptr %1, align 8 - %switch.tableidx = add i32 %33, -1 - %34 = icmp ult i32 %switch.tableidx, 12 - br i1 %34, label %switch.hole_check, label %WebPIsAlphaMode.exit - -WebPIsAlphaMode.exit: ; preds = %switch.hole_check, %23 - %35 = add i32 %33, -11 - %narrow.i.i = icmp ult i32 %35, -4 + %18 = load volatile ptr, ptr %3, align 8 + %19 = call ptr @png_set_longjmp_fn(ptr noundef %18, ptr noundef nonnull @longjmp, i64 noundef 200) #8 + %20 = call i32 @_setjmp(ptr noundef %19) #9 + %.not = icmp eq i32 %20, 0 + br i1 %.not, label %21, label %.sink.split + +21: ; preds = %17 + %22 = load volatile ptr, ptr %3, align 8 + call void @png_init_io(ptr noundef %22, ptr noundef nonnull %0) #8 + %23 = getelementptr inbounds i8, ptr %1, i64 4 + %24 = load i32, ptr %23, align 4 + %25 = getelementptr inbounds i8, ptr %1, i64 8 + %26 = load i32, ptr %25, align 8 + %27 = getelementptr inbounds i8, ptr %1, i64 16 + %28 = load ptr, ptr %27, align 8 + store ptr %28, ptr %5, align 8 + %29 = getelementptr inbounds i8, ptr %1, i64 24 + %30 = load i32, ptr %29, align 8 + %31 = load i32, ptr %1, align 8 + %switch.tableidx = add i32 %31, -1 + %32 = icmp ult i32 %switch.tableidx, 12 + br i1 %32, label %switch.hole_check, label %WebPIsAlphaMode.exit + +WebPIsAlphaMode.exit: ; preds = %switch.hole_check, %21 + %33 = add i32 %31, -11 + %narrow.i.i = icmp ult i32 %33, -4 %spec.select = select i1 %narrow.i.i, i32 2, i32 6 br label %WebPIsAlphaMode.exit.thread -switch.hole_check: ; preds = %23 +switch.hole_check: ; preds = %21 %switch.maskindex = trunc nuw i32 %switch.tableidx to i16 %switch.shifted = lshr i16 2077, %switch.maskindex %switch.lobit = trunc i16 %switch.shifted to i1 br i1 %switch.lobit, label %WebPIsAlphaMode.exit.thread, label %WebPIsAlphaMode.exit WebPIsAlphaMode.exit.thread: ; preds = %switch.hole_check, %WebPIsAlphaMode.exit - %36 = phi i32 [ %spec.select, %WebPIsAlphaMode.exit ], [ 6, %switch.hole_check ] + %34 = phi i32 [ %spec.select, %WebPIsAlphaMode.exit ], [ 6, %switch.hole_check ] + %35 = load volatile ptr, ptr %3, align 8 + %36 = load volatile ptr, ptr %4, align 8 + call void @png_set_IHDR(ptr noundef %35, ptr noundef %36, i32 noundef %24, i32 noundef %26, i32 noundef 8, i32 noundef %34, i32 noundef 0, i32 noundef 0, i32 noundef 0) #8 %37 = load volatile ptr, ptr %3, align 8 %38 = load volatile ptr, ptr %4, align 8 - call void @png_set_IHDR(ptr noundef %37, ptr noundef %38, i32 noundef %26, i32 noundef %28, i32 noundef 8, i32 noundef %36, i32 noundef 0, i32 noundef 0, i32 noundef 0) #8 - %39 = load volatile ptr, ptr %3, align 8 - %40 = load volatile ptr, ptr %4, align 8 - call void @png_write_info(ptr noundef %39, ptr noundef %40) #8 - %.not22 = icmp eq i32 %28, 0 + call void @png_write_info(ptr noundef %37, ptr noundef %38) #8 + %.not22 = icmp eq i32 %26, 0 br i1 %.not22, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %WebPIsAlphaMode.exit.thread - %41 = sext i32 %32 to i64 - br label %42 - -42: ; preds = %.lr.ph, %42 - %.021 = phi i32 [ 0, %.lr.ph ], [ %46, %42 ] - %43 = load volatile ptr, ptr %3, align 8 - call void @png_write_rows(ptr noundef %43, ptr noundef nonnull %5, i32 noundef 1) #8 - %44 = load ptr, ptr %5, align 8 - %45 = getelementptr inbounds i8, ptr %44, i64 %41 - store ptr %45, ptr %5, align 8 - %46 = add nuw i32 %.021, 1 - %exitcond.not = icmp eq i32 %46, %28 - br i1 %exitcond.not, label %._crit_edge, label %42, !llvm.loop !5 - -._crit_edge: ; preds = %42, %WebPIsAlphaMode.exit.thread - %47 = load volatile ptr, ptr %3, align 8 - %48 = load volatile ptr, ptr %4, align 8 - call void @png_write_end(ptr noundef %47, ptr noundef %48) #8 - call void @png_destroy_write_struct(ptr noundef nonnull %3, ptr noundef nonnull %4) #8 - br label %49 - -49: ; preds = %8, %2, %._crit_edge, %22, %17 - %.016 = phi i32 [ 0, %17 ], [ 0, %22 ], [ 1, %._crit_edge ], [ 0, %2 ], [ 0, %8 ] + %39 = sext i32 %30 to i64 + br label %40 + +40: ; preds = %.lr.ph, %40 + %.021 = phi i32 [ 0, %.lr.ph ], [ %44, %40 ] + %41 = load volatile ptr, ptr %3, align 8 + call void @png_write_rows(ptr noundef %41, ptr noundef nonnull %5, i32 noundef 1) #8 + %42 = load ptr, ptr %5, align 8 + %43 = getelementptr inbounds i8, ptr %42, i64 %39 + store ptr %43, ptr %5, align 8 + %44 = add nuw i32 %.021, 1 + %exitcond.not = icmp eq i32 %44, %26 + br i1 %exitcond.not, label %._crit_edge, label %40, !llvm.loop !5 + +._crit_edge: ; preds = %40, %WebPIsAlphaMode.exit.thread + %45 = load volatile ptr, ptr %3, align 8 + %46 = load volatile ptr, ptr %4, align 8 + call void @png_write_end(ptr noundef %45, ptr noundef %46) #8 + br label %.sink.split + +.sink.split: ; preds = %17, %12, %._crit_edge + %.sink = phi ptr [ %4, %._crit_edge ], [ null, %12 ], [ %4, %17 ] + %.016.ph = phi i32 [ 1, %._crit_edge ], [ 0, %12 ], [ 0, %17 ] + call void @png_destroy_write_struct(ptr noundef nonnull %3, ptr noundef %.sink) #8 + br label %47 + +47: ; preds = %.sink.split, %8, %2 + %.016 = phi i32 [ 0, %2 ], [ 0, %8 ], [ %.016.ph, %.sink.split ] ret i32 %.016 } diff --git a/bench/libzmq/optimized/udp_engine.cpp.ll b/bench/libzmq/optimized/udp_engine.cpp.ll index 2a00537f6b9..5796bec5c15 100644 --- a/bench/libzmq/optimized/udp_engine.cpp.ll +++ b/bench/libzmq/optimized/udp_engine.cpp.ll @@ -2142,8 +2142,6 @@ if.then49: ; preds = %do.end44 if.end57: ; preds = %if.then28 %_out_buffer = getelementptr inbounds i8, ptr %this, i64 1492 - %call58 = call noundef ptr @_ZN3zmq5msg_t4dataEv(ptr noundef nonnull align 8 dereferenceable(64) %body_msg) - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %_out_buffer, ptr align 1 %call58, i64 %call27, i1 false) br label %if.end69 if.else: ; preds = %do.end25 @@ -2156,12 +2154,13 @@ if.else: ; preds = %do.end25 %call63 = call noundef ptr @_ZN3zmq5msg_t4dataEv(ptr noundef nonnull align 8 dereferenceable(64) %group_msg) call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr, ptr align 1 %call63, i64 %call26, i1 false) %add.ptr67 = getelementptr inbounds i8, ptr %add.ptr, i64 %call26 - %call68 = call noundef ptr @_ZN3zmq5msg_t4dataEv(ptr noundef nonnull align 8 dereferenceable(64) %body_msg) - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr67, ptr align 1 %call68, i64 %call27, i1 false) br label %if.end69 if.end69: ; preds = %if.else, %if.end57 - %size.0 = phi i64 [ %call27, %if.end57 ], [ %add59, %if.else ] + %add.ptr67.sink = phi ptr [ %add.ptr67, %if.else ], [ %_out_buffer, %if.end57 ] + %size.0 = phi i64 [ %add59, %if.else ], [ %call27, %if.end57 ] + %call68 = call noundef ptr @_ZN3zmq5msg_t4dataEv(ptr noundef nonnull align 8 dereferenceable(64) %body_msg) + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr67.sink, ptr align 1 %call68, i64 %call27, i1 false) %call70 = call noundef i32 @_ZN3zmq5msg_t5closeEv(ptr noundef nonnull align 8 dereferenceable(64) %group_msg) %cmp72.not = icmp eq i32 %call70, 0 br i1 %cmp72.not, label %do.end95.critedge, label %if.then75 diff --git a/bench/lief/optimized/ssl_tls12_server.c.ll b/bench/lief/optimized/ssl_tls12_server.c.ll index 97bece98efd..eb0ddc1dc4c 100644 --- a/bench/lief/optimized/ssl_tls12_server.c.ll +++ b/bench/lief/optimized/ssl_tls12_server.c.ll @@ -3595,97 +3595,91 @@ declare i32 @mbedtls_ssl_parse_sig_alg_ext(ptr noundef, ptr noundef, ptr noundef ; Function Attrs: nounwind uwtable define internal fastcc range(i32 -32512, 1) i32 @ssl_parse_supported_groups_ext(ptr noundef %0, ptr nocapture noundef readonly %1, i64 noundef range(i64 0, 65536) %2) unnamed_addr #5 { %4 = icmp ult i64 %2, 2 - br i1 %4, label %5, label %7 + br i1 %4, label %.loopexit.sink.split.sink.split, label %5 5: ; preds = %3 - tail call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 191, ptr noundef nonnull @.str.8) #11 - %6 = tail call i32 @mbedtls_ssl_send_alert_message(ptr noundef %0, i8 noundef zeroext 2, i8 noundef zeroext 50) #11 - br label %.loopexit - -7: ; preds = %3 - %8 = load i8, ptr %1, align 1 - %9 = zext i8 %8 to i64 - %10 = shl nuw nsw i64 %9, 8 - %11 = getelementptr inbounds i8, ptr %1, i64 1 - %12 = load i8, ptr %11, align 1 - %13 = zext i8 %12 to i64 - %14 = or disjoint i64 %10, %13 - %15 = add nuw nsw i64 %14, 2 - %.not = icmp eq i64 %15, %2 - %16 = and i64 %13, 1 - %.not38 = icmp eq i64 %16, 0 + %6 = load i8, ptr %1, align 1 + %7 = zext i8 %6 to i64 + %8 = shl nuw nsw i64 %7, 8 + %9 = getelementptr inbounds i8, ptr %1, i64 1 + %10 = load i8, ptr %9, align 1 + %11 = zext i8 %10 to i64 + %12 = or disjoint i64 %8, %11 + %13 = add nuw nsw i64 %12, 2 + %.not = icmp eq i64 %13, %2 + %14 = and i64 %11, 1 + %.not38 = icmp eq i64 %14, 0 %or.cond = and i1 %.not38, %.not - br i1 %or.cond, label %19, label %17 - -17: ; preds = %7 - tail call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 200, ptr noundef nonnull @.str.8) #11 - %18 = tail call i32 @mbedtls_ssl_send_alert_message(ptr noundef %0, i8 noundef zeroext 2, i8 noundef zeroext 50) #11 - br label %.loopexit - -19: ; preds = %7 - %20 = getelementptr inbounds i8, ptr %0, i64 112 - %21 = load ptr, ptr %20, align 8 - %22 = getelementptr inbounds i8, ptr %21, i64 816 - %23 = load ptr, ptr %22, align 8 - %.not39 = icmp eq ptr %23, null - br i1 %.not39, label %26, label %24 - -24: ; preds = %19 - tail call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 209, ptr noundef nonnull @.str.8) #11 - %25 = tail call i32 @mbedtls_ssl_send_alert_message(ptr noundef nonnull %0, i8 noundef zeroext 2, i8 noundef zeroext 47) #11 - br label %.loopexit - -26: ; preds = %19 - %27 = lshr exact i64 %14, 1 - %28 = tail call i64 @llvm.umin.i64(i64 %27, i64 13) - %spec.store.select = add nuw nsw i64 %28, 1 - %29 = tail call noalias ptr @calloc(i64 noundef %spec.store.select, i64 noundef 8) #12 - %30 = icmp eq ptr %29, null - br i1 %30, label %31, label %33 + br i1 %or.cond, label %15, label %.loopexit.sink.split.sink.split -31: ; preds = %26 - %32 = tail call i32 @mbedtls_ssl_send_alert_message(ptr noundef nonnull %0, i8 noundef zeroext 2, i8 noundef zeroext 80) #11 - br label %.loopexit - -33: ; preds = %26 - store ptr %29, ptr %22, align 8 - %.not47 = icmp eq i64 %14, 0 +15: ; preds = %5 + %16 = getelementptr inbounds i8, ptr %0, i64 112 + %17 = load ptr, ptr %16, align 8 + %18 = getelementptr inbounds i8, ptr %17, i64 816 + %19 = load ptr, ptr %18, align 8 + %.not39 = icmp eq ptr %19, null + br i1 %.not39, label %20, label %.loopexit.sink.split.sink.split + +20: ; preds = %15 + %21 = lshr exact i64 %12, 1 + %22 = tail call i64 @llvm.umin.i64(i64 %21, i64 13) + %spec.store.select = add nuw nsw i64 %22, 1 + %23 = tail call noalias ptr @calloc(i64 noundef %spec.store.select, i64 noundef 8) #12 + %24 = icmp eq ptr %23, null + br i1 %24, label %.loopexit.sink.split, label %25 + +25: ; preds = %20 + store ptr %23, ptr %18, align 8 + %.not47 = icmp eq i64 %12, 0 br i1 %.not47, label %.loopexit, label %.lr.ph -.lr.ph: ; preds = %33, %45 - %.045 = phi ptr [ %.1, %45 ], [ %29, %33 ] - %.pn44 = phi ptr [ %.03146, %45 ], [ %1, %33 ] - %.03243 = phi i64 [ %.133, %45 ], [ %spec.store.select, %33 ] - %.03442 = phi i64 [ %46, %45 ], [ %14, %33 ] +.lr.ph: ; preds = %25, %37 + %.045 = phi ptr [ %.1, %37 ], [ %23, %25 ] + %.pn44 = phi ptr [ %.03146, %37 ], [ %1, %25 ] + %.03243 = phi i64 [ %.133, %37 ], [ %spec.store.select, %25 ] + %.03442 = phi i64 [ %38, %37 ], [ %12, %25 ] %.03146 = getelementptr inbounds i8, ptr %.pn44, i64 2 - %34 = load i8, ptr %.03146, align 1 - %35 = zext i8 %34 to i16 - %36 = shl nuw i16 %35, 8 - %37 = getelementptr inbounds i8, ptr %.pn44, i64 3 - %38 = load i8, ptr %37, align 1 - %39 = zext i8 %38 to i16 - %40 = or disjoint i16 %36, %39 - %41 = tail call ptr @mbedtls_ecp_curve_info_from_tls_id(i16 noundef zeroext %40) #11 - %.not40 = icmp eq ptr %41, null - br i1 %.not40, label %45, label %42 - -42: ; preds = %.lr.ph - %43 = getelementptr inbounds i8, ptr %.045, i64 8 - store ptr %41, ptr %.045, align 8 - %44 = add nsw i64 %.03243, -1 - br label %45 + %26 = load i8, ptr %.03146, align 1 + %27 = zext i8 %26 to i16 + %28 = shl nuw i16 %27, 8 + %29 = getelementptr inbounds i8, ptr %.pn44, i64 3 + %30 = load i8, ptr %29, align 1 + %31 = zext i8 %30 to i16 + %32 = or disjoint i16 %28, %31 + %33 = tail call ptr @mbedtls_ecp_curve_info_from_tls_id(i16 noundef zeroext %32) #11 + %.not40 = icmp eq ptr %33, null + br i1 %.not40, label %37, label %34 + +34: ; preds = %.lr.ph + %35 = getelementptr inbounds i8, ptr %.045, i64 8 + store ptr %33, ptr %.045, align 8 + %36 = add nsw i64 %.03243, -1 + br label %37 + +37: ; preds = %34, %.lr.ph + %.133 = phi i64 [ %36, %34 ], [ %.03243, %.lr.ph ] + %.1 = phi ptr [ %35, %34 ], [ %.045, %.lr.ph ] + %38 = add i64 %.03442, -2 + %39 = icmp ne i64 %38, 0 + %40 = icmp ugt i64 %.133, 1 + %41 = select i1 %39, i1 %40, i1 false + br i1 %41, label %.lr.ph, label %.loopexit, !llvm.loop !17 + +.loopexit.sink.split.sink.split: ; preds = %15, %5, %3 + %.sink48 = phi i32 [ 191, %3 ], [ 200, %5 ], [ 209, %15 ] + %.sink.ph = phi i8 [ 50, %3 ], [ 50, %5 ], [ 47, %15 ] + %.030.ph.ph = phi i32 [ -29440, %3 ], [ -29440, %5 ], [ -26112, %15 ] + tail call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef %.sink48, ptr noundef nonnull @.str.8) #11 + br label %.loopexit.sink.split + +.loopexit.sink.split: ; preds = %.loopexit.sink.split.sink.split, %20 + %.sink = phi i8 [ 80, %20 ], [ %.sink.ph, %.loopexit.sink.split.sink.split ] + %.030.ph = phi i32 [ -32512, %20 ], [ %.030.ph.ph, %.loopexit.sink.split.sink.split ] + %42 = tail call i32 @mbedtls_ssl_send_alert_message(ptr noundef %0, i8 noundef zeroext 2, i8 noundef zeroext %.sink) #11 + br label %.loopexit -45: ; preds = %42, %.lr.ph - %.133 = phi i64 [ %44, %42 ], [ %.03243, %.lr.ph ] - %.1 = phi ptr [ %43, %42 ], [ %.045, %.lr.ph ] - %46 = add i64 %.03442, -2 - %47 = icmp ne i64 %46, 0 - %48 = icmp ugt i64 %.133, 1 - %49 = select i1 %47, i1 %48, i1 false - br i1 %49, label %.lr.ph, label %.loopexit, !llvm.loop !17 - -.loopexit: ; preds = %45, %33, %31, %24, %17, %5 - %.030 = phi i32 [ -29440, %5 ], [ -29440, %17 ], [ -26112, %24 ], [ -32512, %31 ], [ 0, %33 ], [ 0, %45 ] +.loopexit: ; preds = %37, %.loopexit.sink.split, %25 + %.030 = phi i32 [ 0, %25 ], [ %.030.ph, %.loopexit.sink.split ], [ 0, %37 ] ret i32 %.030 } diff --git a/bench/lightgbm/optimized/metadata.cpp.ll b/bench/lightgbm/optimized/metadata.cpp.ll index a4dae9b4724..9a4d91feb89 100644 --- a/bench/lightgbm/optimized/metadata.cpp.ll +++ b/bench/lightgbm/optimized/metadata.cpp.ll @@ -8061,20 +8061,15 @@ define void @_ZN8LightGBM8Metadata8SetLabelEPKfi(ptr noundef nonnull align 8 der %4 = icmp eq ptr %1, null br i1 %4, label %.split5, label %.split -.split: ; preds = %3 - %5 = sext i32 %2 to i64 - %6 = getelementptr inbounds float, ptr %1, i64 %5 - tail call void @_ZN8LightGBM8Metadata21SetLabelsFromIteratorIPKfEEvT_S4_(ptr noundef nonnull align 8 dereferenceable(300) %0, ptr noundef nonnull %1, ptr noundef nonnull %6) - br label %9 - .split5: ; preds = %3 tail call void (ptr, ...) @_ZN8LightGBM3Log5FatalEPKcz(ptr noundef nonnull @.str.28) - %7 = sext i32 %2 to i64 - %8 = getelementptr inbounds float, ptr null, i64 %7 - tail call void @_ZN8LightGBM8Metadata21SetLabelsFromIteratorIPKfEEvT_S4_(ptr noundef nonnull align 8 dereferenceable(300) %0, ptr noundef null, ptr noundef %8) - br label %9 + br label %.split -9: ; preds = %.split, %.split5 +.split: ; preds = %3, %.split5 + %.sink7 = phi ptr [ null, %.split5 ], [ %1, %3 ] + %5 = sext i32 %2 to i64 + %6 = getelementptr inbounds float, ptr %.sink7, i64 %5 + tail call void @_ZN8LightGBM8Metadata21SetLabelsFromIteratorIPKfEEvT_S4_(ptr noundef nonnull align 8 dereferenceable(300) %0, ptr noundef %.sink7, ptr noundef %6) ret void } diff --git a/bench/linux/optimized/dm-ioctl.ll b/bench/linux/optimized/dm-ioctl.ll index 519b35a9f6f..f3f6716ab5f 100644 --- a/bench/linux/optimized/dm-ioctl.ll +++ b/bench/linux/optimized/dm-ioctl.ll @@ -2627,8 +2627,7 @@ define internal i32 @table_load(ptr nocapture readnone %0, ptr noundef %1, i64 n 135: ; preds = %128 call void @dm_sync_table(ptr noundef nonnull %9) #21 - call void @dm_table_destroy(ptr noundef nonnull %130) #21 - br label %140 + br label %.sink.split .thread22: ; preds = %62, %80, %71, %47, %30, %118, %107, %96, %82 %136 = phi i32 [ %83, %82 ], [ %105, %107 ], [ -22, %118 ], [ -22, %96 ], [ -22, %30 ], [ -22, %62 ], [ %78, %80 ], [ -22, %71 ], [ -22, %47 ] @@ -2638,11 +2637,16 @@ define internal i32 @table_load(ptr nocapture readnone %0, ptr noundef %1, i64 n 137: ; preds = %.thread22, %126 %138 = phi i32 [ %136, %.thread22 ], [ -6, %126 ] %139 = load ptr, ptr %4, align 8 - call void @dm_table_destroy(ptr noundef %139) #21 + br label %.sink.split + +.sink.split: ; preds = %135, %137 + %.sink = phi ptr [ %139, %137 ], [ %130, %135 ] + %.ph = phi i32 [ %138, %137 ], [ 0, %135 ] + call void @dm_table_destroy(ptr noundef %.sink) #21 br label %140 -140: ; preds = %137, %135, %128, %11 - %141 = phi i32 [ 0, %135 ], [ 0, %128 ], [ %19, %11 ], [ %138, %137 ] +140: ; preds = %.sink.split, %128, %11 + %141 = phi i32 [ 0, %128 ], [ %19, %11 ], [ %.ph, %.sink.split ] call void @dm_put(ptr noundef nonnull %9) #21 br label %142 diff --git a/bench/linux/optimized/tlb.ll b/bench/linux/optimized/tlb.ll index 5d5ac654c93..8c162970e8b 100644 --- a/bench/linux/optimized/tlb.ll +++ b/bench/linux/optimized/tlb.ll @@ -846,17 +846,8 @@ define dso_local void @native_flush_tlb_multi(ptr noundef %0, ptr noundef %1) lo %55 = getelementptr inbounds i8, ptr %1, i64 37 %56 = load i8, ptr %55, align 1 %57 = icmp eq i8 %56, 0 - br i1 %57, label %59, label %58 - -58: ; preds = %54 - tail call void @on_each_cpu_cond_mask(ptr noundef null, ptr noundef nonnull @flush_tlb_func, ptr noundef %1, i1 noundef zeroext true, ptr noundef %0) #11 - br label %60 - -59: ; preds = %54 - tail call void @on_each_cpu_cond_mask(ptr noundef nonnull @tlb_is_not_lazy, ptr noundef nonnull @flush_tlb_func, ptr noundef %1, i1 noundef zeroext true, ptr noundef %0) #11 - br label %60 - -60: ; preds = %59, %58 + %tlb_is_not_lazy. = select i1 %57, ptr @tlb_is_not_lazy, ptr null + tail call void @on_each_cpu_cond_mask(ptr noundef %tlb_is_not_lazy., ptr noundef nonnull @flush_tlb_func, ptr noundef %1, i1 noundef zeroext true, ptr noundef %0) #11 ret void } diff --git a/bench/llama.cpp/optimized/ggml.c.ll b/bench/llama.cpp/optimized/ggml.c.ll index ec0f77b475b..cea532a0c4f 100644 --- a/bench/llama.cpp/optimized/ggml.c.ll +++ b/bench/llama.cpp/optimized/ggml.c.ll @@ -32100,11 +32100,7 @@ ggml_is_contiguous.exit34: ; preds = %land.lhs.true10.i24 %cmp27.i33 = icmp eq i64 %18, %mul26.i32 %cmp = icmp eq i32 %1, %11 %or.cond = and i1 %cmp, %cmp27.i33 - br i1 %or.cond, label %if.then, label %if.end - -if.then: ; preds = %ggml_is_contiguous.exit34 - tail call fastcc void @ggml_compute_forward_dup_same_cont(ptr noundef %params, ptr noundef nonnull %src0, ptr noundef nonnull %dst) - br label %sw.epilog + br i1 %or.cond, label %sw.epilog.sink.split, label %if.end if.end: ; preds = %land.lhs.true, %land.lhs.true.i16, %land.lhs.true10.i24, %entry, %land.lhs.true.i, %land.lhs.true10.i, %ggml_is_contiguous.exit34, %ggml_is_contiguous.exit switch i32 %1, label %do.body [ @@ -32217,11 +32213,7 @@ land.lhs.true.i351.i: ; preds = %land.lhs.true.i41 %or.cond406.i = select i1 %or.cond405.i, i1 %cmp27.i368.i, i1 false %cmp45.i = icmp eq i32 %.pre1103.i, 1 %or.cond407.i = and i1 %cmp45.i, %or.cond406.i - br i1 %or.cond407.i, label %if.then46.i, label %if.end47.i - -if.then46.i: ; preds = %land.lhs.true.i351.i - tail call fastcc void @ggml_compute_forward_dup_same_cont(ptr noundef readonly %params, ptr noundef nonnull readonly %src0, ptr noundef nonnull readonly %dst) - br label %sw.epilog + br i1 %or.cond407.i, label %sw.epilog.sink.split, label %if.end47.i if.end47.i: ; preds = %land.lhs.true.i351.i, %land.lhs.true.i41, %land.lhs.true.i.i, %if.end8.if.end47_crit_edge.i %43 = phi i32 [ %.pre.i, %if.end8.if.end47_crit_edge.i ], [ %.pre1103.i, %land.lhs.true.i41 ], [ %.pre1103.i, %land.lhs.true.i351.i ], [ %.pre1103.i, %land.lhs.true.i.i ] @@ -33307,11 +33299,7 @@ land.lhs.true.i312.i: ; preds = %land.lhs.true.i200 %or.cond360.i = select i1 %or.cond359.i, i1 %cmp27.i329.i, i1 false %cmp45.i201 = icmp eq i32 %.pre943.i, 0 %or.cond361.i = and i1 %cmp45.i201, %or.cond360.i - br i1 %or.cond361.i, label %if.then46.i202, label %if.end47.i70 - -if.then46.i202: ; preds = %land.lhs.true.i312.i - tail call fastcc void @ggml_compute_forward_dup_same_cont(ptr noundef readonly %params, ptr noundef nonnull readonly %src0, ptr noundef nonnull readonly %dst) - br label %sw.epilog + br i1 %or.cond361.i, label %sw.epilog.sink.split, label %if.end47.i70 if.end47.i70: ; preds = %land.lhs.true.i312.i, %land.lhs.true.i200, %land.lhs.true.i.i191, %if.end8.if.end47_crit_edge.i68 %130 = phi i32 [ %.pre.i69, %if.end8.if.end47_crit_edge.i68 ], [ %.pre943.i, %land.lhs.true.i200 ], [ %.pre943.i, %land.lhs.true.i312.i ], [ %.pre943.i, %land.lhs.true.i.i191 ] @@ -34122,7 +34110,11 @@ do.body: ; preds = %if.end tail call void @abort() #47 unreachable -sw.epilog: ; preds = %for.cond507.for.inc628_crit_edge.split.us.us.us.split.us.us.i, %for.cond382.for.inc493_crit_edge.split.us.us.us.split.us.us.i, %for.cond309.for.inc360_crit_edge.split.us.split.us.us.us.us.i, %for.cond244.for.inc291_crit_edge.us.i.loopexit.us.us, %for.cond182.for.inc219_crit_edge.us.i.loopexit.us, %for.cond121.for.inc156_crit_edge.us.i150, %for.cond73.for.inc98_crit_edge.split.us.us.us.i189, %for.cond590.for.inc705_crit_edge.split.us.us.us.split.us.us.i, %for.cond465.for.inc576_crit_edge.split.us.us.us.split.us.us.i, %for.cond395.for.inc443_crit_edge.split.us.us.us.i, %for.cond328.for.inc377_crit_edge.us.i, %for.cond173.for.inc219_crit_edge.us.i, %for.cond121.for.inc156_crit_edge.us.i, %for.cond251.for.inc302_crit_edge.us.i, %for.cond73.for.inc98_crit_edge.split.us.us.us.i, %for.cond244.preheader.lr.ph.i, %for.cond382.preheader.lr.ph.i, %for.cond377.preheader.i, %for.cond507.preheader.lr.ph.i, %for.cond502.preheader.i, %for.cond309.preheader.lr.ph.i, %if.then298.i, %if.then233.i, %for.cond182.preheader.lr.ph.i, %if.then161.i, %for.cond121.preheader.lr.ph.i140, %if.then110.i137, %for.cond73.preheader.lr.ph.i165, %if.then69.i163, %if.then46.i202, %do.end.i53, %do.end.i53, %for.cond465.preheader.lr.ph.i, %for.cond460.preheader.i, %for.cond590.preheader.lr.ph.i, %for.cond585.preheader.i, %for.cond395.preheader.lr.ph.i, %if.then384.i, %for.cond328.preheader.lr.ph.i, %if.then317.i, %for.cond251.preheader.lr.ph.i, %if.then226.i, %for.cond173.preheader.lr.ph.i, %if.then162.i, %for.cond121.preheader.lr.ph.i, %if.then110.i, %for.cond73.preheader.lr.ph.i, %if.then69.i, %if.then46.i, %do.end.i, %do.end.i, %if.then +sw.epilog.sink.split: ; preds = %land.lhs.true.i312.i, %land.lhs.true.i351.i, %ggml_is_contiguous.exit34 + tail call fastcc void @ggml_compute_forward_dup_same_cont(ptr noundef %params, ptr noundef nonnull %src0, ptr noundef nonnull %dst) + br label %sw.epilog + +sw.epilog: ; preds = %for.cond507.for.inc628_crit_edge.split.us.us.us.split.us.us.i, %for.cond382.for.inc493_crit_edge.split.us.us.us.split.us.us.i, %for.cond309.for.inc360_crit_edge.split.us.split.us.us.us.us.i, %for.cond244.for.inc291_crit_edge.us.i.loopexit.us.us, %for.cond182.for.inc219_crit_edge.us.i.loopexit.us, %for.cond121.for.inc156_crit_edge.us.i150, %for.cond73.for.inc98_crit_edge.split.us.us.us.i189, %for.cond590.for.inc705_crit_edge.split.us.us.us.split.us.us.i, %for.cond465.for.inc576_crit_edge.split.us.us.us.split.us.us.i, %for.cond395.for.inc443_crit_edge.split.us.us.us.i, %for.cond328.for.inc377_crit_edge.us.i, %for.cond173.for.inc219_crit_edge.us.i, %for.cond121.for.inc156_crit_edge.us.i, %for.cond251.for.inc302_crit_edge.us.i, %for.cond73.for.inc98_crit_edge.split.us.us.us.i, %sw.epilog.sink.split, %for.cond244.preheader.lr.ph.i, %for.cond382.preheader.lr.ph.i, %for.cond377.preheader.i, %for.cond507.preheader.lr.ph.i, %for.cond502.preheader.i, %for.cond309.preheader.lr.ph.i, %if.then298.i, %if.then233.i, %for.cond182.preheader.lr.ph.i, %if.then161.i, %for.cond121.preheader.lr.ph.i140, %if.then110.i137, %for.cond73.preheader.lr.ph.i165, %if.then69.i163, %do.end.i53, %do.end.i53, %for.cond465.preheader.lr.ph.i, %for.cond460.preheader.i, %for.cond590.preheader.lr.ph.i, %for.cond585.preheader.i, %for.cond395.preheader.lr.ph.i, %if.then384.i, %for.cond328.preheader.lr.ph.i, %if.then317.i, %for.cond251.preheader.lr.ph.i, %if.then226.i, %for.cond173.preheader.lr.ph.i, %if.then162.i, %for.cond121.preheader.lr.ph.i, %if.then110.i, %for.cond73.preheader.lr.ph.i, %if.then69.i, %do.end.i, %do.end.i ret void } diff --git a/bench/llvm/optimized/MemProfiler.cpp.ll b/bench/llvm/optimized/MemProfiler.cpp.ll index 05c93082f53..0d9c54456bd 100644 --- a/bench/llvm/optimized/MemProfiler.cpp.ll +++ b/bench/llvm/optimized/MemProfiler.cpp.ll @@ -4300,33 +4300,18 @@ _ZNKSt14default_deleteIN4llvm22IndexedInstrProfReaderEEclEPS1_.exit.i: ; preds = br label %_ZNSt10unique_ptrIN4llvm22IndexedInstrProfReaderESt14default_deleteIS1_EED2Ev.exit _ZNSt10unique_ptrIN4llvm22IndexedInstrProfReaderESt14default_deleteIS1_EED2Ev.exit: ; preds = %_ZNKSt14default_deleteIN4llvm22IndexedInstrProfReaderEEclEPS1_.exit.i, %.thread, %_ZN4llvm5ErrorD2Ev.exit24 - %1001 = load i8, ptr %82, align 8 - %1002 = trunc i8 %1001 to i1 - %1003 = load ptr, ptr %67, align 8 - %.not.i1.i = icmp eq ptr %1003, null - br i1 %1002, label %1008, label %1004 - -1004: ; preds = %_ZNSt10unique_ptrIN4llvm22IndexedInstrProfReaderESt14default_deleteIS1_EED2Ev.exit - br i1 %.not.i1.i, label %_ZN4llvm8ExpectedISt10unique_ptrINS_22IndexedInstrProfReaderESt14default_deleteIS2_EEED2Ev.exit, label %_ZNKSt14default_deleteIN4llvm22IndexedInstrProfReaderEEclEPS1_.exit.i.i - -_ZNKSt14default_deleteIN4llvm22IndexedInstrProfReaderEEclEPS1_.exit.i.i: ; preds = %1004 - %1005 = load ptr, ptr %1003, align 8 - %1006 = getelementptr inbounds i8, ptr %1005, i64 8 - %1007 = load ptr, ptr %1006, align 8 - call void %1007(ptr noundef nonnull align 8 dereferenceable(484) %1003) #19 + %1001 = load ptr, ptr %67, align 8 + %.not.i1.i = icmp eq ptr %1001, null + br i1 %.not.i1.i, label %_ZN4llvm8ExpectedISt10unique_ptrINS_22IndexedInstrProfReaderESt14default_deleteIS2_EEED2Ev.exit, label %_ZNSt10unique_ptrIN4llvm22IndexedInstrProfReaderESt14default_deleteIS1_EED2Ev.exit.sink.split.i + +_ZNSt10unique_ptrIN4llvm22IndexedInstrProfReaderESt14default_deleteIS1_EED2Ev.exit.sink.split.i: ; preds = %_ZNSt10unique_ptrIN4llvm22IndexedInstrProfReaderESt14default_deleteIS1_EED2Ev.exit + %1002 = load ptr, ptr %1001, align 8 + %1003 = getelementptr inbounds i8, ptr %1002, i64 8 + %1004 = load ptr, ptr %1003, align 8 + call void %1004(ptr noundef nonnull align 8 dereferenceable(8) %1001) #19 br label %_ZN4llvm8ExpectedISt10unique_ptrINS_22IndexedInstrProfReaderESt14default_deleteIS2_EEED2Ev.exit -1008: ; preds = %_ZNSt10unique_ptrIN4llvm22IndexedInstrProfReaderESt14default_deleteIS1_EED2Ev.exit - br i1 %.not.i1.i, label %_ZN4llvm8ExpectedISt10unique_ptrINS_22IndexedInstrProfReaderESt14default_deleteIS2_EEED2Ev.exit, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i - -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i: ; preds = %1008 - %1009 = load ptr, ptr %1003, align 8 - %1010 = getelementptr inbounds i8, ptr %1009, i64 8 - %1011 = load ptr, ptr %1010, align 8 - call void %1011(ptr noundef nonnull align 8 dereferenceable(8) %1003) #19 - br label %_ZN4llvm8ExpectedISt10unique_ptrINS_22IndexedInstrProfReaderESt14default_deleteIS2_EEED2Ev.exit - -_ZN4llvm8ExpectedISt10unique_ptrINS_22IndexedInstrProfReaderESt14default_deleteIS2_EEED2Ev.exit: ; preds = %1004, %_ZNKSt14default_deleteIN4llvm22IndexedInstrProfReaderEEclEPS1_.exit.i.i, %1008, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i +_ZN4llvm8ExpectedISt10unique_ptrINS_22IndexedInstrProfReaderESt14default_deleteIS2_EEED2Ev.exit: ; preds = %_ZNSt10unique_ptrIN4llvm22IndexedInstrProfReaderESt14default_deleteIS1_EED2Ev.exit, %_ZNSt10unique_ptrIN4llvm22IndexedInstrProfReaderESt14default_deleteIS1_EED2Ev.exit.sink.split.i ret void } diff --git a/bench/llvm/optimized/Metadata.cpp.ll b/bench/llvm/optimized/Metadata.cpp.ll index 5d5ea4925d0..beb1c292919 100644 --- a/bench/llvm/optimized/Metadata.cpp.ll +++ b/bench/llvm/optimized/Metadata.cpp.ll @@ -19515,18 +19515,18 @@ _ZN4llvm14SmallSetVectorIPNS_8MetadataELj4EED2Ev.exit: ; preds = %_ZNK4llvm6MDNo ; Function Attrs: mustprogress nounwind uwtable define internal fastcc noundef ptr @_ZL18getOrSelfReferenceRN4llvm11LLVMContextENS_8ArrayRefIPNS_8MetadataEEE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr %1, i64 %2) unnamed_addr #0 { %4 = icmp eq i64 %2, 0 - br i1 %4, label %_ZN4llvm16dyn_cast_or_nullINS_6MDNodeENS_8MetadataEEEDaPT0_.exit, label %5 + br i1 %4, label %.loopexit.sink.split, label %5 5: ; preds = %3 %6 = load ptr, ptr %1, align 8 %.not.i.i = icmp eq ptr %6, null - br i1 %.not.i.i, label %_ZN4llvm16dyn_cast_or_nullINS_6MDNodeENS_8MetadataEEEDaPT0_.exit, label %7 + br i1 %.not.i.i, label %.loopexit.sink.split, label %7 7: ; preds = %5 %8 = load i8, ptr %6, align 4 %.off = add i8 %8, -5 %switch = icmp ult i8 %.off, 31 - br i1 %switch, label %9, label %_ZN4llvm16dyn_cast_or_nullINS_6MDNodeENS_8MetadataEEEDaPT0_.exit + br i1 %switch, label %9, label %.loopexit.sink.split 9: ; preds = %7 %10 = getelementptr inbounds i8, ptr %6, i64 -16 @@ -19549,7 +19549,7 @@ define internal fastcc noundef ptr @_ZL18getOrSelfReferenceRN4llvm11LLVMContextE _ZNK4llvm6MDNode14getNumOperandsEv.exit: ; preds = %13, %16 %.0.i.i20 = phi i64 [ %19, %16 ], [ %15, %13 ] %20 = icmp eq i64 %2, %.0.i.i20 - br i1 %20, label %21, label %_ZN4llvm16dyn_cast_or_nullINS_6MDNodeENS_8MetadataEEEDaPT0_.exit + br i1 %20, label %21, label %.loopexit.sink.split 21: ; preds = %_ZNK4llvm6MDNode14getNumOperandsEv.exit %22 = load i64, ptr %10, align 8 @@ -19574,7 +19574,7 @@ _ZNK4llvm6MDNode10getOperandEj.exit: ; preds = %24, %28 %.sroa.0.0.i.i = phi ptr [ %32, %28 ], [ %26, %24 ] %33 = load ptr, ptr %.sroa.0.0.i.i, align 8 %34 = icmp eq ptr %6, %33 - br i1 %34, label %35, label %_ZN4llvm16dyn_cast_or_nullINS_6MDNodeENS_8MetadataEEEDaPT0_.exit + br i1 %34, label %35, label %.loopexit.sink.split 35: ; preds = %_ZNK4llvm6MDNode10getOperandEj.exit %36 = trunc i64 %2 to i32 @@ -19617,18 +19617,14 @@ _ZNK4llvm6MDNode10getOperandEj.exit24: ; preds = %46, %49 %54 = getelementptr inbounds %"class.llvm::MDOperand", ptr %.sroa.0.0.i.i23, i64 %41 %55 = load ptr, ptr %54, align 8 %.not18 = icmp eq ptr %43, %55 - br i1 %.not18, label %38, label %56 + br i1 %.not18, label %38, label %.loopexit.sink.split -56: ; preds = %_ZNK4llvm6MDNode10getOperandEj.exit24 - %57 = tail call noundef ptr @_ZN4llvm7MDTuple7getImplERNS_11LLVMContextENS_8ArrayRefIPNS_8MetadataEEENS4_11StorageTypeEb(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr nonnull %1, i64 %2, i32 noundef 0, i1 noundef zeroext true) +.loopexit.sink.split: ; preds = %_ZNK4llvm6MDNode10getOperandEj.exit24, %3, %_ZNK4llvm6MDNode14getNumOperandsEv.exit, %_ZNK4llvm6MDNode10getOperandEj.exit, %5, %7 + %56 = tail call noundef ptr @_ZN4llvm7MDTuple7getImplERNS_11LLVMContextENS_8ArrayRefIPNS_8MetadataEEENS4_11StorageTypeEb(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr %1, i64 %2, i32 noundef 0, i1 noundef zeroext true) br label %.loopexit -_ZN4llvm16dyn_cast_or_nullINS_6MDNodeENS_8MetadataEEEDaPT0_.exit: ; preds = %7, %5, %_ZNK4llvm6MDNode10getOperandEj.exit, %_ZNK4llvm6MDNode14getNumOperandsEv.exit, %3 - %58 = tail call noundef ptr @_ZN4llvm7MDTuple7getImplERNS_11LLVMContextENS_8ArrayRefIPNS_8MetadataEEENS4_11StorageTypeEb(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr %1, i64 %2, i32 noundef 0, i1 noundef zeroext true) - br label %.loopexit - -.loopexit: ; preds = %38, %35, %_ZN4llvm16dyn_cast_or_nullINS_6MDNodeENS_8MetadataEEEDaPT0_.exit, %56 - %.0 = phi ptr [ %58, %_ZN4llvm16dyn_cast_or_nullINS_6MDNodeENS_8MetadataEEEDaPT0_.exit ], [ %57, %56 ], [ %6, %35 ], [ %6, %38 ] +.loopexit: ; preds = %38, %.loopexit.sink.split, %35 + %.0 = phi ptr [ %6, %35 ], [ %56, %.loopexit.sink.split ], [ %6, %38 ] ret ptr %.0 } diff --git a/bench/llvm/optimized/NativeEnumInjectedSources.cpp.ll b/bench/llvm/optimized/NativeEnumInjectedSources.cpp.ll index 7840c148113..76aca132270 100644 --- a/bench/llvm/optimized/NativeEnumInjectedSources.cpp.ll +++ b/bench/llvm/optimized/NativeEnumInjectedSources.cpp.ll @@ -871,33 +871,18 @@ _ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i11: ; br label %_ZN4llvm8ExpectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit _ZN4llvm8ExpectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit: ; preds = %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i11, %87, %_ZN4llvm5ErrorD2Ev.exit - %93 = load i8, ptr %35, align 8 - %94 = trunc i8 %93 to i1 - %95 = load ptr, ptr %14, align 8 - %.not.i1.i = icmp eq ptr %95, null - br i1 %94, label %100, label %96 - -96: ; preds = %_ZN4llvm8ExpectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit - br i1 %.not.i1.i, label %_ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit, label %_ZNKSt14default_deleteIN4llvm3msf17MappedBlockStreamEEclEPS2_.exit.i.i - -_ZNKSt14default_deleteIN4llvm3msf17MappedBlockStreamEEclEPS2_.exit.i.i: ; preds = %96 - %97 = load ptr, ptr %95, align 8 - %98 = getelementptr inbounds i8, ptr %97, i64 8 - %99 = load ptr, ptr %98, align 8 - call void %99(ptr noundef nonnull align 8 dereferenceable(128) %95) #16 - br label %_ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit - -100: ; preds = %_ZN4llvm8ExpectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit - br i1 %.not.i1.i, label %_ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i12 + %93 = load ptr, ptr %14, align 8 + %.not.i1.i = icmp eq ptr %93, null + br i1 %.not.i1.i, label %_ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit, label %_ZNSt10unique_ptrIN4llvm3msf17MappedBlockStreamESt14default_deleteIS2_EED2Ev.exit.sink.split.i -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i12: ; preds = %100 - %101 = load ptr, ptr %95, align 8 - %102 = getelementptr inbounds i8, ptr %101, i64 8 - %103 = load ptr, ptr %102, align 8 - call void %103(ptr noundef nonnull align 8 dereferenceable(8) %95) #16 +_ZNSt10unique_ptrIN4llvm3msf17MappedBlockStreamESt14default_deleteIS2_EED2Ev.exit.sink.split.i: ; preds = %_ZN4llvm8ExpectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit + %94 = load ptr, ptr %93, align 8 + %95 = getelementptr inbounds i8, ptr %94, i64 8 + %96 = load ptr, ptr %95, align 8 + call void %96(ptr noundef nonnull align 8 dereferenceable(8) %93) #16 br label %_ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit -_ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit: ; preds = %96, %_ZNKSt14default_deleteIN4llvm3msf17MappedBlockStreamEEclEPS2_.exit.i.i, %100, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i12 +_ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit: ; preds = %_ZN4llvm8ExpectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit, %_ZNSt10unique_ptrIN4llvm3msf17MappedBlockStreamESt14default_deleteIS2_EED2Ev.exit.sink.split.i store ptr null, ptr %14, align 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #16 ret void diff --git a/bench/llvm/optimized/User.cpp.ll b/bench/llvm/optimized/User.cpp.ll index 57893b9d355..bbbd47d8aa3 100644 --- a/bench/llvm/optimized/User.cpp.ll +++ b/bench/llvm/optimized/User.cpp.ll @@ -629,8 +629,7 @@ define dso_local void @_ZN4llvm4UserdlEPv(ptr noundef %0) local_unnamed_addr #0 %9 = zext nneg i32 %8 to i64 %10 = getelementptr inbounds %"class.llvm::Use", ptr %7, i64 %9 tail call void @_ZN4llvm3Use3zapEPS0_PKS0_b(ptr noundef %7, ptr noundef %10, i1 noundef zeroext true) #8 - tail call void @_ZdlPv(ptr noundef nonnull %6) #8 - br label %22 + br label %21 11: ; preds = %1 %.not23 = icmp sgt i32 %3, -1 @@ -646,14 +645,11 @@ define dso_local void @_ZN4llvm4UserdlEPv(ptr noundef %0) local_unnamed_addr #0 %18 = load i64, ptr %17, align 8 %19 = sub i64 0, %18 %20 = getelementptr inbounds i8, ptr %17, i64 %19 - tail call void @_ZdlPv(ptr noundef nonnull %20) #8 - br label %22 + br label %21 -21: ; preds = %11 - tail call void @_ZdlPv(ptr noundef %15) #8 - br label %22 - -22: ; preds = %16, %21, %5 +21: ; preds = %11, %16, %5 + %.sink = phi ptr [ %20, %16 ], [ %6, %5 ], [ %15, %11 ] + tail call void @_ZdlPv(ptr noundef %.sink) #8 ret void } diff --git a/bench/lodepng/optimized/lodepng.cpp.ll b/bench/lodepng/optimized/lodepng.cpp.ll index a49d6e9e062..b15390e774c 100644 --- a/bench/lodepng/optimized/lodepng.cpp.ll +++ b/bench/lodepng/optimized/lodepng.cpp.ll @@ -2552,7 +2552,7 @@ for.end.i.i.i: ; preds = %for.body.i.i.i %call.i.i.i.i42.i = call noalias noundef dereferenceable_or_null(128) ptr @malloc(i64 noundef 128) #30 store ptr %call.i.i.i.i42.i, ptr %lengths.i.i.i.i, align 8 %tobool.not.i.i.i43.i = icmp eq ptr %call.i.i.i.i42.i, null - br i1 %tobool.not.i.i.i43.i, label %if.end.thread143.i.i, label %for.body.i.i.preheader.i.i + br i1 %tobool.not.i.i.i43.i, label %if.end23.sink.split.i.i, label %for.body.i.i.preheader.i.i for.body.i.i.preheader.i.i: ; preds = %for.end.i.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(128) %call.i.i.i.i42.i, ptr noundef nonnull align 4 dereferenceable(128) %call.i.i.i.i, i64 128, i1 false) @@ -2563,10 +2563,6 @@ for.body.i.i.preheader.i.i: ; preds = %for.end.i.i.i %tobool2.not.i.i = icmp eq i32 %call8.i.i.i.i, 0 br i1 %tobool2.not.i.i, label %if.then3.i.i, label %_ZL12deflateFixedP16LodePNGBitWriterP4HashPKhmmPK23LodePNGCompressSettingsj.exit.i -if.end.thread143.i.i: ; preds = %for.end.i.i.i - call void @free(ptr noundef nonnull %call.i.i.i.i) #31 - br label %_ZL12deflateFixedP16LodePNGBitWriterP4HashPKhmmPK23LodePNGCompressSettingsj.exit.i - if.then3.i.i: ; preds = %for.body.i.i.preheader.i.i %19 = load i8, ptr %bp.i.i, align 8 %20 = and i8 %19, 7 @@ -2912,7 +2908,12 @@ if.end8.i105.i.i: ; preds = %if.end.i125.i.i, %f if.end23.critedge.i.i: ; preds = %if.then5.i.i %91 = load ptr, ptr %lz77_encoded.i.i, align 8 - call void @free(ptr noundef %91) #31 + br label %if.end23.sink.split.i.i + +if.end23.sink.split.i.i: ; preds = %if.end23.critedge.i.i, %for.end.i.i.i + %.sink.i.i = phi ptr [ %91, %if.end23.critedge.i.i ], [ %call.i.i.i.i, %for.end.i.i.i ] + %error.1.ph.i.i = phi i32 [ %call6.i.i, %if.end23.critedge.i.i ], [ 83, %for.end.i.i.i ] + call void @free(ptr noundef %.sink.i.i) #31 br label %_ZL12deflateFixedP16LodePNGBitWriterP4HashPKhmmPK23LodePNGCompressSettingsj.exit.i _ZL12deflateFixedP16LodePNGBitWriterP4HashPKhmmPK23LodePNGCompressSettingsj.exit.loopexit.i: ; preds = %if.end8.i105.i.i, %if.then.i.i.i130.i.i @@ -2920,8 +2921,8 @@ _ZL12deflateFixedP16LodePNGBitWriterP4HashPKhmmPK23LodePNGCompressSettingsj.exit store i8 %92, ptr %bp.i.i, align 8 br label %_ZL12deflateFixedP16LodePNGBitWriterP4HashPKhmmPK23LodePNGCompressSettingsj.exit.i -_ZL12deflateFixedP16LodePNGBitWriterP4HashPKhmmPK23LodePNGCompressSettingsj.exit.i: ; preds = %_ZL12deflateFixedP16LodePNGBitWriterP4HashPKhmmPK23LodePNGCompressSettingsj.exit.loopexit.i, %if.end23.critedge.i.i, %if.then16.i.i, %if.end.thread143.i.i, %for.body.i.i.preheader.i.i, %if.then.i.i, %if.then34.i - %error.1.i.i = phi i32 [ %call8.i.i.i.i, %for.body.i.i.preheader.i.i ], [ 83, %if.end.thread143.i.i ], [ 0, %if.then16.i.i ], [ 83, %if.then.i.i ], [ %call.i.i, %if.then34.i ], [ %call6.i.i, %if.end23.critedge.i.i ], [ 0, %_ZL12deflateFixedP16LodePNGBitWriterP4HashPKhmmPK23LodePNGCompressSettingsj.exit.loopexit.i ] +_ZL12deflateFixedP16LodePNGBitWriterP4HashPKhmmPK23LodePNGCompressSettingsj.exit.i: ; preds = %_ZL12deflateFixedP16LodePNGBitWriterP4HashPKhmmPK23LodePNGCompressSettingsj.exit.loopexit.i, %if.end23.sink.split.i.i, %if.then16.i.i, %for.body.i.i.preheader.i.i, %if.then.i.i, %if.then34.i + %error.1.i.i = phi i32 [ %call8.i.i.i.i, %for.body.i.i.preheader.i.i ], [ 0, %if.then16.i.i ], [ 83, %if.then.i.i ], [ %call.i.i, %if.then34.i ], [ %error.1.ph.i.i, %if.end23.sink.split.i.i ], [ 0, %_ZL12deflateFixedP16LodePNGBitWriterP4HashPKhmmPK23LodePNGCompressSettingsj.exit.loopexit.i ] %93 = load ptr, ptr %tree_ll.i.i, align 8 call void @free(ptr noundef %93) #31 %94 = load ptr, ptr %lengths.i.i, align 8 @@ -20624,16 +20625,12 @@ for.end23.i: ; preds = %for.body14.i %tobool28.not.i = icmp eq ptr %call.i100.i, null %tobool30.not.i = icmp eq ptr %call.i101.i, null %or.cond.i = or i1 %tobool28.not.i, %tobool30.not.i - br i1 %or.cond.i, label %if.then31.i, label %for.cond33.preheader.i + br i1 %or.cond.i, label %if.end80.sink.split, label %for.cond33.preheader.i for.cond33.preheader.i: ; preds = %for.end23.i %cmp34123.not.i = icmp eq i64 %size.1.i, 0 br i1 %cmp34123.not.i, label %for.body43.i.preheader, label %for.body35.i -if.then31.i: ; preds = %for.end23.i - tail call void @free(ptr noundef nonnull %calloc.i) #31 - br label %if.end80 - for.body35.i: ; preds = %for.cond33.preheader.i, %for.body35.i %i.2124.i = phi i64 [ %inc39.i, %for.body35.i ], [ 0, %for.cond33.preheader.i ] %23 = load ptr, ptr %table_len.i, align 8 @@ -20842,11 +20839,15 @@ for.body170.i: ; preds = %for.cond168.i, %for if.end80.critedge: ; preds = %entry tail call void @free(ptr noundef %call.i45) #31 - tail call void @free(ptr noundef %call.i46) #31 + br label %if.end80.sink.split + +if.end80.sink.split: ; preds = %for.end23.i, %if.end80.critedge + %calloc.i.sink = phi ptr [ %call.i46, %if.end80.critedge ], [ %calloc.i, %for.end23.i ] + tail call void @free(ptr noundef %calloc.i.sink) #31 br label %if.end80 -if.end80: ; preds = %if.else.i, %for.body84.i, %for.body170.i, %for.cond168.i, %for.inc164.i, %for.cond148.preheader.i, %for.cond168.preheader.i, %if.then31.i, %if.end76, %if.end80.critedge - %error.1 = phi i32 [ 83, %if.end80.critedge ], [ 83, %if.then31.i ], [ 83, %if.end76 ], [ 0, %for.cond148.preheader.i ], [ 0, %for.cond168.preheader.i ], [ 0, %for.inc164.i ], [ 0, %for.cond168.i ], [ 55, %for.body170.i ], [ 55, %for.body84.i ], [ 55, %if.else.i ] +if.end80: ; preds = %if.else.i, %for.body84.i, %for.body170.i, %for.cond168.i, %for.inc164.i, %if.end80.sink.split, %for.cond148.preheader.i, %for.cond168.preheader.i, %if.end76 + %error.1 = phi i32 [ 83, %if.end76 ], [ 0, %for.cond148.preheader.i ], [ 0, %for.cond168.preheader.i ], [ 83, %if.end80.sink.split ], [ 0, %for.inc164.i ], [ 0, %for.cond168.i ], [ 55, %for.body170.i ], [ 55, %for.body84.i ], [ 55, %if.else.i ] ret i32 %error.1 } diff --git a/bench/lua/optimized/lauxlib.ll b/bench/lua/optimized/lauxlib.ll index f43958cb459..a2dcb3c37f6 100644 --- a/bench/lua/optimized/lauxlib.ll +++ b/bench/lua/optimized/lauxlib.ll @@ -751,23 +751,20 @@ land.lhs.true: ; preds = %entry %0 = load i32, ptr %call, align 4 %cmp1.not = icmp eq i32 %0, 0 tail call void @lua_pushnil(ptr noundef %L) #19 - br i1 %cmp1.not, label %if.end, label %if.then + br i1 %cmp1.not, label %return, label %if.then if.then: ; preds = %land.lhs.true %call6.i = tail call ptr @strerror(i32 noundef %0) #19 - %call7.i = tail call ptr @lua_pushstring(ptr noundef %L, ptr noundef %call6.i) #19 br label %return if.then8: ; preds = %entry tail call void @lua_pushboolean(ptr noundef %L, i32 noundef 1) #19 - br label %if.end - -if.end: ; preds = %land.lhs.true, %if.then8 - %call10 = tail call ptr @lua_pushstring(ptr noundef %L, ptr noundef nonnull @.str.19) #19 br label %return -return: ; preds = %if.end, %if.then - %stat.sink = phi i32 [ %stat, %if.end ], [ %0, %if.then ] +return: ; preds = %if.then8, %land.lhs.true, %if.then + %.str.19.sink = phi ptr [ %call6.i, %if.then ], [ @.str.19, %land.lhs.true ], [ @.str.19, %if.then8 ] + %stat.sink = phi i32 [ %0, %if.then ], [ %stat, %land.lhs.true ], [ %stat, %if.then8 ] + %call10 = tail call ptr @lua_pushstring(ptr noundef %L, ptr noundef %.str.19.sink) #19 %conv11 = sext i32 %stat.sink to i64 tail call void @lua_pushinteger(ptr noundef %L, i64 noundef %conv11) #19 ret i32 3 diff --git a/bench/lua/optimized/lcode.ll b/bench/lua/optimized/lcode.ll index 62298b1331e..2bfc548a276 100644 --- a/bench/lua/optimized/lcode.ll +++ b/bench/lua/optimized/lcode.ll @@ -1917,8 +1917,6 @@ removelastinstruction.exit: ; preds = %if.then.i.i, %if.el %lnot.ext = shl nuw nsw i32 %cond, 15 %or.i.i = or disjoint i32 %shl1.i.i, %lnot.ext %or7.i.i = xor i32 %or.i.i, 32834 - %call.i.i = tail call range(i32 -2147483648, 2147483647) i32 @luaK_code(ptr noundef nonnull %fs, i32 noundef %or7.i.i) - %call.i.i.i = tail call range(i32 -2147483648, 2147483647) i32 @luaK_code(ptr noundef nonnull %fs, i32 noundef 2147483448) br label %return if.then.i: ; preds = %entry.if.then.i_crit_edge, %if.then @@ -1978,13 +1976,13 @@ freeexp.exit: ; preds = %discharge2anyreg.ex %shl6.i.i17 = shl nuw nsw i32 %cond, 15 %or3.i.i = or disjoint i32 %shl2.i.i, %shl6.i.i17 %or7.i.i18 = or disjoint i32 %or3.i.i, 32707 - %call.i.i19 = tail call range(i32 -2147483648, 2147483647) i32 @luaK_code(ptr noundef %fs, i32 noundef %or7.i.i18) - %call.i.i.i20 = tail call range(i32 -2147483648, 2147483647) i32 @luaK_code(ptr noundef %fs, i32 noundef 2147483448) br label %return return: ; preds = %freeexp.exit, %removelastinstruction.exit - %retval.0 = phi i32 [ %call.i.i.i, %removelastinstruction.exit ], [ %call.i.i.i20, %freeexp.exit ] - ret i32 %retval.0 + %or7.i.i18.sink = phi i32 [ %or7.i.i18, %freeexp.exit ], [ %or7.i.i, %removelastinstruction.exit ] + %call.i.i19 = tail call range(i32 -2147483648, 2147483647) i32 @luaK_code(ptr noundef %fs, i32 noundef %or7.i.i18.sink) + %call.i.i.i20 = tail call range(i32 -2147483648, 2147483647) i32 @luaK_code(ptr noundef %fs, i32 noundef 2147483448) + ret i32 %call.i.i.i20 } ; Function Attrs: nounwind uwtable diff --git a/bench/lua/optimized/loadlib.ll b/bench/lua/optimized/loadlib.ll index e83c29671de..11a4c740ae4 100644 --- a/bench/lua/optimized/loadlib.ll +++ b/bench/lua/optimized/loadlib.ll @@ -489,35 +489,30 @@ entry: %call.i = tail call i32 @lua_getfield(ptr noundef %L, i32 noundef -1001001, ptr noundef nonnull @.str) #6 %call1.i = tail call ptr @lua_tolstring(ptr noundef %L, i32 noundef -1, ptr noundef null) #6 %cmp.i = icmp eq ptr %call1.i, null - br i1 %cmp.i, label %if.then.i, label %entry.split.i - -entry.split.i: ; preds = %entry - %call66.i = tail call fastcc ptr @searchpath(ptr noundef %L, ptr noundef %call, ptr noundef nonnull %call1.i, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21) - br label %findfile.exit + br i1 %cmp.i, label %if.then.i, label %findfile.exit if.then.i: ; preds = %entry %call5.i = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %L, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str) #6 - %call67.i = tail call fastcc ptr @searchpath(ptr noundef %L, ptr noundef %call, ptr noundef null, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21) br label %findfile.exit -findfile.exit: ; preds = %entry.split.i, %if.then.i - %phi.call.i = phi ptr [ %call66.i, %entry.split.i ], [ %call67.i, %if.then.i ] - %cmp = icmp eq ptr %phi.call.i, null +findfile.exit: ; preds = %entry, %if.then.i + %call66.i = tail call fastcc ptr @searchpath(ptr noundef %L, ptr noundef %call, ptr noundef %call1.i, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21) + %cmp = icmp eq ptr %call66.i, null br i1 %cmp, label %return, label %if.end if.end: ; preds = %findfile.exit - %call2 = tail call i32 @luaL_loadfilex(ptr noundef %L, ptr noundef nonnull %phi.call.i, ptr noundef null) #6 + %call2 = tail call i32 @luaL_loadfilex(ptr noundef %L, ptr noundef nonnull %call66.i, ptr noundef null) #6 %cmp3.not = icmp eq i32 %call2, 0 br i1 %cmp3.not, label %if.then.i6, label %if.else.i if.then.i6: ; preds = %if.end - %call.i7 = tail call ptr @lua_pushstring(ptr noundef %L, ptr noundef nonnull %phi.call.i) #6 + %call.i7 = tail call ptr @lua_pushstring(ptr noundef %L, ptr noundef nonnull %call66.i) #6 br label %return if.else.i: ; preds = %if.end %call2.i = tail call ptr @lua_tolstring(ptr noundef %L, i32 noundef 1, ptr noundef null) #6 %call3.i = tail call ptr @lua_tolstring(ptr noundef %L, i32 noundef -1, ptr noundef null) #6 - %call4.i = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %L, ptr noundef nonnull @.str.31, ptr noundef %call2.i, ptr noundef nonnull %phi.call.i, ptr noundef %call3.i) #6 + %call4.i = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %L, ptr noundef nonnull @.str.31, ptr noundef %call2.i, ptr noundef nonnull %call66.i, ptr noundef %call3.i) #6 br label %return return: ; preds = %if.else.i, %if.then.i6, %findfile.exit @@ -532,35 +527,30 @@ entry: %call.i = tail call i32 @lua_getfield(ptr noundef %L, i32 noundef -1001001, ptr noundef nonnull @.str.3) #6 %call1.i = tail call ptr @lua_tolstring(ptr noundef %L, i32 noundef -1, ptr noundef null) #6 %cmp.i = icmp eq ptr %call1.i, null - br i1 %cmp.i, label %if.then.i, label %entry.split.i - -entry.split.i: ; preds = %entry - %call66.i = tail call fastcc ptr @searchpath(ptr noundef %L, ptr noundef %call, ptr noundef nonnull %call1.i, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21) - br label %findfile.exit + br i1 %cmp.i, label %if.then.i, label %findfile.exit if.then.i: ; preds = %entry %call5.i = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %L, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.3) #6 - %call67.i = tail call fastcc ptr @searchpath(ptr noundef %L, ptr noundef %call, ptr noundef null, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21) br label %findfile.exit -findfile.exit: ; preds = %entry.split.i, %if.then.i - %phi.call.i = phi ptr [ %call66.i, %entry.split.i ], [ %call67.i, %if.then.i ] - %cmp = icmp eq ptr %phi.call.i, null +findfile.exit: ; preds = %entry, %if.then.i + %call66.i = tail call fastcc ptr @searchpath(ptr noundef %L, ptr noundef %call, ptr noundef %call1.i, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21) + %cmp = icmp eq ptr %call66.i, null br i1 %cmp, label %return, label %if.end if.end: ; preds = %findfile.exit - %call2 = tail call fastcc i32 @loadfunc(ptr noundef %L, ptr noundef %phi.call.i, ptr noundef %call) + %call2 = tail call fastcc i32 @loadfunc(ptr noundef %L, ptr noundef %call66.i, ptr noundef %call) %cmp3.not = icmp eq i32 %call2, 0 br i1 %cmp3.not, label %if.then.i7, label %if.else.i if.then.i7: ; preds = %if.end - %call.i8 = tail call ptr @lua_pushstring(ptr noundef %L, ptr noundef nonnull %phi.call.i) #6 + %call.i8 = tail call ptr @lua_pushstring(ptr noundef %L, ptr noundef nonnull %call66.i) #6 br label %return if.else.i: ; preds = %if.end %call2.i = tail call ptr @lua_tolstring(ptr noundef %L, i32 noundef 1, ptr noundef null) #6 %call3.i = tail call ptr @lua_tolstring(ptr noundef %L, i32 noundef -1, ptr noundef null) #6 - %call4.i = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %L, ptr noundef nonnull @.str.31, ptr noundef %call2.i, ptr noundef nonnull %phi.call.i, ptr noundef %call3.i) #6 + %call4.i = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %L, ptr noundef nonnull @.str.31, ptr noundef %call2.i, ptr noundef nonnull %call66.i, ptr noundef %call3.i) #6 br label %return return: ; preds = %if.else.i, %if.then.i7, %findfile.exit @@ -585,24 +575,19 @@ if.end: ; preds = %entry %call.i = tail call i32 @lua_getfield(ptr noundef %L, i32 noundef -1001001, ptr noundef nonnull @.str.3) #6 %call1.i = tail call ptr @lua_tolstring(ptr noundef %L, i32 noundef -1, ptr noundef null) #6 %cmp.i = icmp eq ptr %call1.i, null - br i1 %cmp.i, label %if.then.i, label %entry.split.i - -entry.split.i: ; preds = %if.end - %call66.i = tail call fastcc ptr @searchpath(ptr noundef %L, ptr noundef %call3, ptr noundef nonnull %call1.i, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21) - br label %findfile.exit + br i1 %cmp.i, label %if.then.i, label %findfile.exit if.then.i: ; preds = %if.end %call5.i = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %L, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.3) #6 - %call67.i = tail call fastcc ptr @searchpath(ptr noundef %L, ptr noundef %call3, ptr noundef null, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21) br label %findfile.exit -findfile.exit: ; preds = %entry.split.i, %if.then.i - %phi.call.i = phi ptr [ %call66.i, %entry.split.i ], [ %call67.i, %if.then.i ] - %cmp5 = icmp eq ptr %phi.call.i, null +findfile.exit: ; preds = %if.end, %if.then.i + %call66.i = tail call fastcc ptr @searchpath(ptr noundef %L, ptr noundef %call3, ptr noundef %call1.i, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21) + %cmp5 = icmp eq ptr %call66.i, null br i1 %cmp5, label %return, label %if.end7 if.end7: ; preds = %findfile.exit - %call8 = tail call fastcc i32 @loadfunc(ptr noundef %L, ptr noundef %phi.call.i, ptr noundef %call) + %call8 = tail call fastcc i32 @loadfunc(ptr noundef %L, ptr noundef %call66.i, ptr noundef %call) switch i32 %call8, label %if.then12 [ i32 0, label %if.end15 i32 2, label %if.else @@ -611,15 +596,15 @@ if.end7: ; preds = %findfile.exit if.then12: ; preds = %if.end7 %call2.i = tail call ptr @lua_tolstring(ptr noundef %L, i32 noundef 1, ptr noundef null) #6 %call3.i = tail call ptr @lua_tolstring(ptr noundef %L, i32 noundef -1, ptr noundef null) #6 - %call4.i = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %L, ptr noundef nonnull @.str.31, ptr noundef %call2.i, ptr noundef nonnull %phi.call.i, ptr noundef %call3.i) #6 + %call4.i = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %L, ptr noundef nonnull @.str.31, ptr noundef %call2.i, ptr noundef nonnull %call66.i, ptr noundef %call3.i) #6 br label %return if.else: ; preds = %if.end7 - %call14 = tail call ptr (ptr, ptr, ...) @lua_pushfstring(ptr noundef %L, ptr noundef nonnull @.str.35, ptr noundef %call, ptr noundef nonnull %phi.call.i) #6 + %call14 = tail call ptr (ptr, ptr, ...) @lua_pushfstring(ptr noundef %L, ptr noundef nonnull @.str.35, ptr noundef %call, ptr noundef nonnull %call66.i) #6 br label %return if.end15: ; preds = %if.end7 - %call16 = tail call ptr @lua_pushstring(ptr noundef %L, ptr noundef nonnull %phi.call.i) #6 + %call16 = tail call ptr @lua_pushstring(ptr noundef %L, ptr noundef nonnull %call66.i) #6 br label %return return: ; preds = %findfile.exit, %entry, %if.end15, %if.else, %if.then12 diff --git a/bench/luajit/optimized/lj_crecord.ll b/bench/luajit/optimized/lj_crecord.ll index 199aebfae61..547fc96ebc9 100644 --- a/bench/luajit/optimized/lj_crecord.ll +++ b/bench/luajit/optimized/lj_crecord.ll @@ -5801,9 +5801,7 @@ crec_copy_emit.exit: ; preds = %if.end.i58 if.then40: ; preds = %crec_copy_emit.exit store i16 23040, ptr %ot1.i64.i, align 4 store i16 0, ptr %fold.i63.i, align 8 - store i16 0, ptr %op2.i67.i, align 2 - %call41 = tail call i32 @lj_opt_fold(ptr noundef nonnull %J) #8 - br label %return + br label %return.sink.split fallback: ; preds = %if.else20.i.i, %if.else41.i.i, %if.then22.i, %crec_ct2irt.exit.i, %while.body.i, %while.body.i45, %entry, %emitcopy, %if.end %call45 = tail call i32 (ptr, i32, ...) @lj_ir_call(ptr noundef %J, i32 noundef 104, i32 noundef %trdst, i32 noundef %trsrc, i32 noundef %trlen) #8 @@ -5812,11 +5810,15 @@ fallback: ; preds = %if.else20.i.i, %if. store i16 23040, ptr %ot1.i, align 4 store i16 0, ptr %fold.i, align 8 %op2.i = getelementptr inbounds i8, ptr %J, i64 186 - store i16 0, ptr %op2.i, align 2 - %call46 = tail call i32 @lj_opt_fold(ptr noundef %J) #8 + br label %return.sink.split + +return.sink.split: ; preds = %fallback, %if.then40 + %op2.i67.i.sink = phi ptr [ %op2.i67.i, %if.then40 ], [ %op2.i, %fallback ] + store i16 0, ptr %op2.i67.i.sink, align 2 + %call41 = tail call i32 @lj_opt_fold(ptr noundef %J) #8 br label %return -return: ; preds = %crec_copy_emit.exit, %if.then40, %if.then, %fallback +return: ; preds = %return.sink.split, %crec_copy_emit.exit, %if.then ret void } diff --git a/bench/luajit/optimized/lj_opt_narrow.ll b/bench/luajit/optimized/lj_opt_narrow.ll index 2563f487750..49bf7f82813 100644 --- a/bench/luajit/optimized/lj_opt_narrow.ll +++ b/bench/luajit/optimized/lj_opt_narrow.ll @@ -557,14 +557,7 @@ entry: if.then: ; preds = %entry %conv = trunc i32 %tr to i16 - %fold.i33 = getelementptr inbounds i8, ptr %J, i64 184 - %ot1.i34 = getelementptr inbounds i8, ptr %J, i64 188 - store i16 23443, ptr %ot1.i34, align 4 - store i16 %conv, ptr %fold.i33, align 8 - %op2.i37 = getelementptr inbounds i8, ptr %J, i64 186 - store i16 8814, ptr %op2.i37, align 2 - %call = tail call i32 @lj_opt_fold(ptr noundef %J) #5 - br label %return + br label %return.sink.split if.end: ; preds = %entry %ir1 = getelementptr inbounds i8, ptr %J, i64 32 @@ -597,17 +590,23 @@ if.then21: ; preds = %land.lhs.true13 %add24 = shl nuw nsw i16 %conv23, 8 %or = add nsw i16 %add24, -3053 %5 = load i16, ptr %arrayidx, align 8 + br label %return.sink.split + +return.sink.split: ; preds = %if.then, %if.then21 + %or.sink = phi i16 [ %or, %if.then21 ], [ 23443, %if.then ] + %.sink19 = phi i16 [ %5, %if.then21 ], [ %conv, %if.then ] + %.sink = phi i16 [ %3, %if.then21 ], [ 8814, %if.then ] %fold.i = getelementptr inbounds i8, ptr %J, i64 184 %ot1.i = getelementptr inbounds i8, ptr %J, i64 188 - store i16 %or, ptr %ot1.i, align 4 - store i16 %5, ptr %fold.i, align 8 + store i16 %or.sink, ptr %ot1.i, align 4 + store i16 %.sink19, ptr %fold.i, align 8 %op2.i = getelementptr inbounds i8, ptr %J, i64 186 - store i16 %3, ptr %op2.i, align 2 - %call27 = tail call i32 @lj_opt_fold(ptr noundef nonnull %J) #5 + store i16 %.sink, ptr %op2.i, align 2 + %call27 = tail call i32 @lj_opt_fold(ptr noundef %J) #5 br label %return -return: ; preds = %if.end, %land.lhs.true, %land.lhs.true13, %if.then21, %if.then - %retval.0 = phi i32 [ %call, %if.then ], [ %call27, %if.then21 ], [ %tr, %if.end ], [ %tr, %land.lhs.true13 ], [ %tr, %land.lhs.true ] +return: ; preds = %return.sink.split, %if.end, %land.lhs.true, %land.lhs.true13 + %retval.0 = phi i32 [ %tr, %if.end ], [ %tr, %land.lhs.true13 ], [ %tr, %land.lhs.true ], [ %call27, %return.sink.split ] ret i32 %retval.0 } diff --git a/bench/luau/optimized/AstQuery.cpp.ll b/bench/luau/optimized/AstQuery.cpp.ll index e9b75afc24d..dcff338f340 100644 --- a/bench/luau/optimized/AstQuery.cpp.ll +++ b/bench/luau/optimized/AstQuery.cpp.ll @@ -5568,30 +5568,24 @@ define internal noundef zeroext i1 @_ZN4Luau12_GLOBAL__N_116FindFullAncestry5vis %6 = getelementptr inbounds i8, ptr %5, i64 12 %7 = getelementptr inbounds i8, ptr %0, i64 32 %8 = tail call noundef zeroext i1 @_ZNK4Luau8Location8containsERKNS_8PositionE(ptr noundef nonnull align 4 dereferenceable(16) %6, ptr noundef nonnull align 4 dereferenceable(8) %7) - br i1 %8, label %9, label %13 + br i1 %8, label %.sink.split, label %9 9: ; preds = %2 - %10 = load ptr, ptr %4, align 8 + %10 = getelementptr inbounds i8, ptr %1, i64 40 %11 = load ptr, ptr %10, align 8 - %12 = load ptr, ptr %11, align 8 - tail call void %12(ptr noundef nonnull align 8 dereferenceable(28) %10, ptr noundef nonnull %0) - br label %22 + %12 = getelementptr inbounds i8, ptr %11, i64 12 + %13 = tail call noundef zeroext i1 @_ZNK4Luau8Location8containsERKNS_8PositionE(ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(8) %7) + br i1 %13, label %.sink.split, label %17 -13: ; preds = %2 - %14 = getelementptr inbounds i8, ptr %1, i64 40 +.sink.split: ; preds = %9, %2 + %.sink9 = phi ptr [ %4, %2 ], [ %10, %9 ] + %14 = load ptr, ptr %.sink9, align 8 %15 = load ptr, ptr %14, align 8 - %16 = getelementptr inbounds i8, ptr %15, i64 12 - %17 = tail call noundef zeroext i1 @_ZNK4Luau8Location8containsERKNS_8PositionE(ptr noundef nonnull align 4 dereferenceable(16) %16, ptr noundef nonnull align 4 dereferenceable(8) %7) - br i1 %17, label %18, label %22 - -18: ; preds = %13 - %19 = load ptr, ptr %14, align 8 - %20 = load ptr, ptr %19, align 8 - %21 = load ptr, ptr %20, align 8 - tail call void %21(ptr noundef nonnull align 8 dereferenceable(212) %19, ptr noundef nonnull %0) - br label %22 + %16 = load ptr, ptr %15, align 8 + tail call void %16(ptr noundef nonnull align 8 dereferenceable(28) %14, ptr noundef nonnull %0) + br label %17 -22: ; preds = %13, %18, %9 +17: ; preds = %.sink.split, %9 ret i1 false } @@ -5657,30 +5651,24 @@ define internal noundef zeroext i1 @_ZN4Luau12_GLOBAL__N_18FindNode5visitEPNS_15 %9 = getelementptr inbounds i8, ptr %8, i64 12 %10 = getelementptr inbounds i8, ptr %0, i64 8 %11 = tail call noundef zeroext i1 @_ZNK4Luau8Location8containsERKNS_8PositionE(ptr noundef nonnull align 4 dereferenceable(16) %9, ptr noundef nonnull align 4 dereferenceable(8) %10) - br i1 %11, label %12, label %16 + br i1 %11, label %.sink.split, label %12 12: ; preds = %2 - %13 = load ptr, ptr %7, align 8 + %13 = getelementptr inbounds i8, ptr %1, i64 40 %14 = load ptr, ptr %13, align 8 - %15 = load ptr, ptr %14, align 8 - tail call void %15(ptr noundef nonnull align 8 dereferenceable(28) %13, ptr noundef nonnull %0) - br label %25 + %15 = getelementptr inbounds i8, ptr %14, i64 12 + %16 = tail call noundef zeroext i1 @_ZNK4Luau8Location8containsERKNS_8PositionE(ptr noundef nonnull align 4 dereferenceable(16) %15, ptr noundef nonnull align 4 dereferenceable(8) %10) + br i1 %16, label %.sink.split, label %20 -16: ; preds = %2 - %17 = getelementptr inbounds i8, ptr %1, i64 40 +.sink.split: ; preds = %12, %2 + %.sink9 = phi ptr [ %7, %2 ], [ %13, %12 ] + %17 = load ptr, ptr %.sink9, align 8 %18 = load ptr, ptr %17, align 8 - %19 = getelementptr inbounds i8, ptr %18, i64 12 - %20 = tail call noundef zeroext i1 @_ZNK4Luau8Location8containsERKNS_8PositionE(ptr noundef nonnull align 4 dereferenceable(16) %19, ptr noundef nonnull align 4 dereferenceable(8) %10) - br i1 %20, label %21, label %25 - -21: ; preds = %16 - %22 = load ptr, ptr %17, align 8 - %23 = load ptr, ptr %22, align 8 - %24 = load ptr, ptr %23, align 8 - tail call void %24(ptr noundef nonnull align 8 dereferenceable(212) %22, ptr noundef nonnull %0) - br label %25 + %19 = load ptr, ptr %18, align 8 + tail call void %19(ptr noundef nonnull align 8 dereferenceable(28) %17, ptr noundef nonnull %0) + br label %20 -25: ; preds = %16, %21, %12 +20: ; preds = %.sink.split, %12 ret i1 false } diff --git a/bench/meshlab/optimized/apss.cpp.ll b/bench/meshlab/optimized/apss.cpp.ll index 70a2bf4e4bc..3a9fa9ff073 100644 --- a/bench/meshlab/optimized/apss.cpp.ll +++ b/bench/meshlab/optimized/apss.cpp.ll @@ -2007,7 +2007,7 @@ define weak_odr noundef zeroext i1 @_ZNK7GaelMls4APSSI6CMeshOE3fitERKN3vcg6Point 13: ; preds = %2 %14 = getelementptr inbounds i8, ptr %0, i64 84 store i8 0, ptr %14, align 4 - br label %206 + br label %205 15: ; preds = %2 %16 = icmp eq i32 %11, 1 @@ -2079,7 +2079,7 @@ _ZNK7GaelMls12NeighborhoodIfE5indexEi.exit: ; preds = %29 store double 0.000000e+00, ptr %63, align 8 %64 = getelementptr inbounds i8, ptr %0, i64 328 store i32 1, ptr %64, align 8 - br label %206 + br label %205 65: ; preds = %.preheader, %_ZNSt6vectorIfSaIfEE2atEm.exit %.043137 = phi double [ 0.000000e+00, %.preheader ], [ %111, %_ZNSt6vectorIfSaIfEE2atEm.exit ] @@ -2229,19 +2229,19 @@ _ZNSt6vectorIfSaIfEE2atEm.exit: ; preds = %_ZNK7GaelMls12Neigh %168 = tail call double @sqrt(double noundef %167) #22 %169 = getelementptr inbounds i8, ptr %0, i64 320 store double %168, ptr %169, align 8 - br label %198 + br label %197 170: ; preds = %118 %171 = fcmp oeq double %134, 0.000000e+00 %172 = getelementptr inbounds i8, ptr %0, i64 328 %173 = fmul double %143, %143 %174 = tail call double @llvm.fmuladd.f64(double %142, double %142, double %173) - br i1 %171, label %175, label %182 + %175 = tail call double @llvm.fmuladd.f64(double %144, double %144, double %174) + br i1 %171, label %176, label %182 -175: ; preds = %170 +176: ; preds = %170 store i32 1, ptr %172, align 8 - %176 = tail call double @llvm.fmuladd.f64(double %144, double %144, double %174) - %sqrt.i.i = tail call noundef double @llvm.sqrt.f64(double %176) + %sqrt.i.i = tail call noundef double @llvm.sqrt.f64(double %175) %177 = fdiv double 1.000000e+00, %sqrt.i.i %178 = fmul double %142, %177 store double %178, ptr %145, align 8 @@ -2251,58 +2251,57 @@ _ZNSt6vectorIfSaIfEE2atEm.exit: ; preds = %_ZNK7GaelMls12Neigh store double %180, ptr %.sroa.357.0..sroa_idx, align 8 %181 = fmul double %150, %177 store double %181, ptr %151, align 8 - br label %198 + br label %197 182: ; preds = %170 store i32 2, ptr %172, align 8 - %183 = tail call noundef double @llvm.fmuladd.f64(double %144, double %144, double %174) - %184 = fmul double %150, -4.000000e+00 - %185 = tail call double @llvm.fmuladd.f64(double %184, double %134, double %183) - %186 = tail call double @sqrt(double noundef %185) #22 - %187 = fdiv double 1.000000e+00, %186 - %188 = load double, ptr %151, align 8 - %189 = fmul double %188, %187 - store double %189, ptr %151, align 8 - %190 = load double, ptr %145, align 8 - %191 = fmul double %187, %190 - store double %191, ptr %145, align 8 - %192 = load double, ptr %.sroa.256.0..sroa_idx, align 8 - %193 = fmul double %187, %192 - store double %193, ptr %.sroa.256.0..sroa_idx, align 8 - %194 = load double, ptr %.sroa.357.0..sroa_idx, align 8 - %195 = fmul double %187, %194 - store double %195, ptr %.sroa.357.0..sroa_idx, align 8 - %196 = load double, ptr %152, align 8 - %197 = fmul double %187, %196 - store double %197, ptr %152, align 8 - br label %198 - -198: ; preds = %175, %182, %155 - %199 = getelementptr inbounds i8, ptr %0, i64 336 - store double %99, ptr %199, align 8 + %183 = fmul double %150, -4.000000e+00 + %184 = tail call double @llvm.fmuladd.f64(double %183, double %134, double %175) + %185 = tail call double @sqrt(double noundef %184) #22 + %186 = fdiv double 1.000000e+00, %185 + %187 = load double, ptr %151, align 8 + %188 = fmul double %187, %186 + store double %188, ptr %151, align 8 + %189 = load double, ptr %145, align 8 + %190 = fmul double %186, %189 + store double %190, ptr %145, align 8 + %191 = load double, ptr %.sroa.256.0..sroa_idx, align 8 + %192 = fmul double %186, %191 + store double %192, ptr %.sroa.256.0..sroa_idx, align 8 + %193 = load double, ptr %.sroa.357.0..sroa_idx, align 8 + %194 = fmul double %186, %193 + store double %194, ptr %.sroa.357.0..sroa_idx, align 8 + %195 = load double, ptr %152, align 8 + %196 = fmul double %186, %195 + store double %196, ptr %152, align 8 + br label %197 + +197: ; preds = %176, %182, %155 + %198 = getelementptr inbounds i8, ptr %0, i64 336 + store double %99, ptr %198, align 8 %.sroa.890.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 344 store double %100, ptr %.sroa.890.0..sroa_idx, align 8 %.sroa.14.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 352 store double %101, ptr %.sroa.14.0..sroa_idx, align 8 - %200 = getelementptr inbounds i8, ptr %0, i64 360 - store double %105, ptr %200, align 8 + %199 = getelementptr inbounds i8, ptr %0, i64 360 + store double %105, ptr %199, align 8 %.sroa.680.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 368 store double %106, ptr %.sroa.680.0..sroa_idx, align 8 %.sroa.10.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 376 store double %107, ptr %.sroa.10.0..sroa_idx, align 8 - %201 = getelementptr inbounds i8, ptr %0, i64 400 - store double %116, ptr %201, align 8 - %202 = getelementptr inbounds i8, ptr %0, i64 384 - store double %115, ptr %202, align 8 - %203 = getelementptr inbounds i8, ptr %0, i64 392 - store double %111, ptr %203, align 8 - %204 = getelementptr inbounds i8, ptr %0, i64 88 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %204, ptr noundef nonnull align 4 dereferenceable(12) %1, i64 12, i1 false) - %205 = getelementptr inbounds i8, ptr %0, i64 84 - store i8 1, ptr %205, align 4 - br label %206 - -206: ; preds = %198, %_ZNK7GaelMls12NeighborhoodIfE5indexEi.exit, %13 + %200 = getelementptr inbounds i8, ptr %0, i64 400 + store double %116, ptr %200, align 8 + %201 = getelementptr inbounds i8, ptr %0, i64 384 + store double %115, ptr %201, align 8 + %202 = getelementptr inbounds i8, ptr %0, i64 392 + store double %111, ptr %202, align 8 + %203 = getelementptr inbounds i8, ptr %0, i64 88 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %203, ptr noundef nonnull align 4 dereferenceable(12) %1, i64 12, i1 false) + %204 = getelementptr inbounds i8, ptr %0, i64 84 + store i8 1, ptr %204, align 4 + br label %205 + +205: ; preds = %197, %_ZNK7GaelMls12NeighborhoodIfE5indexEi.exit, %13 ret i1 %12 } diff --git a/bench/minetest/optimized/CGUIComboBox.cpp.ll b/bench/minetest/optimized/CGUIComboBox.cpp.ll index 061dfea16fb..4e412bc4488 100644 --- a/bench/minetest/optimized/CGUIComboBox.cpp.ll +++ b/bench/minetest/optimized/CGUIComboBox.cpp.ll @@ -1798,26 +1798,23 @@ if.end: ; preds = %lor.lhs.false %cmp4 = icmp eq i32 %idx, -1 %SelectedText = getelementptr inbounds i8, ptr %this, i64 320 %2 = load ptr, ptr %SelectedText, align 8, !tbaa !49 - br i1 %cmp4, label %if.then5, label %if.else - -if.then5: ; preds = %if.end - %vtable = load ptr, ptr %2, align 8, !tbaa !3 - %vfn = getelementptr inbounds i8, ptr %vtable, i64 160 - %3 = load ptr, ptr %vfn, align 8 - tail call void %3(ptr noundef nonnull align 8 dereferenceable(308) %2, ptr noundef nonnull @.str) #18 - br label %if.end13 + br i1 %cmp4, label %if.end13.sink.split, label %if.else if.else: ; preds = %if.end %conv.i16 = zext nneg i32 %idx to i64 %add.ptr.i.i = getelementptr inbounds %"struct.irr::gui::CGUIComboBox::SComboData", ptr %1, i64 %conv.i16 - %4 = load ptr, ptr %add.ptr.i.i, align 8, !tbaa !87 + %3 = load ptr, ptr %add.ptr.i.i, align 8, !tbaa !87 + br label %if.end13.sink.split + +if.end13.sink.split: ; preds = %if.end, %if.else + %.sink = phi ptr [ %3, %if.else ], [ @.str, %if.end ] %vtable11 = load ptr, ptr %2, align 8, !tbaa !3 %vfn12 = getelementptr inbounds i8, ptr %vtable11, i64 160 - %5 = load ptr, ptr %vfn12, align 8 - tail call void %5(ptr noundef nonnull align 8 dereferenceable(308) %2, ptr noundef %4) #18 + %4 = load ptr, ptr %vfn12, align 8 + tail call void %4(ptr noundef nonnull align 8 dereferenceable(308) %2, ptr noundef %.sink) #18 br label %if.end13 -if.end13: ; preds = %if.else, %if.then5, %lor.lhs.false, %entry +if.end13: ; preds = %if.end13.sink.split, %lor.lhs.false, %entry ret void } diff --git a/bench/minetest/optimized/mesh_compare.cpp.ll b/bench/minetest/optimized/mesh_compare.cpp.ll index 742cf3a0ea3..a21db1a7a72 100644 --- a/bench/minetest/optimized/mesh_compare.cpp.ll +++ b/bench/minetest/optimized/mesh_compare.cpp.ll @@ -1385,15 +1385,7 @@ entry: land.lhs.true: ; preds = %entry %arrayidx.i.i43 = getelementptr inbounds i8, ptr %t, i64 72 %call5 = call noundef zeroext i1 @_ZNK3irr5video9S3DVertexltERKS1_(ptr noundef nonnull align 4 dereferenceable(36) %t, ptr noundef nonnull align 4 dereferenceable(36) %arrayidx.i.i43) - br i1 %call5, label %if.then, label %if.end - -if.then: ; preds = %land.lhs.true - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %agg.result, ptr noundef nonnull align 8 dereferenceable(36) %t, i64 36, i1 false), !tbaa.struct !28 - %arrayinit.element = getelementptr inbounds i8, ptr %agg.result, i64 36 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %arrayinit.element, ptr noundef nonnull align 4 dereferenceable(36) %arrayidx.i.i, i64 36, i1 false), !tbaa.struct !28 - %arrayinit.element8 = getelementptr inbounds i8, ptr %agg.result, i64 72 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %arrayinit.element8, ptr noundef nonnull align 8 dereferenceable(36) %arrayidx.i.i43, i64 36, i1 false), !tbaa.struct !28 - br label %return + br i1 %call5, label %return, label %if.end if.end: ; preds = %land.lhs.true, %entry %arrayidx.i.i47 = getelementptr inbounds i8, ptr %t, i64 72 @@ -1402,15 +1394,7 @@ if.end: ; preds = %land.lhs.true, %ent land.lhs.true13: ; preds = %if.end %call16 = call noundef zeroext i1 @_ZNK3irr5video9S3DVertexltERKS1_(ptr noundef nonnull align 4 dereferenceable(36) %arrayidx.i.i, ptr noundef nonnull align 4 dereferenceable(36) %t) - br i1 %call16, label %if.then17, label %if.end25 - -if.then17: ; preds = %land.lhs.true13 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %agg.result, ptr noundef nonnull align 4 dereferenceable(36) %arrayidx.i.i, i64 36, i1 false), !tbaa.struct !28 - %arrayinit.element21 = getelementptr inbounds i8, ptr %agg.result, i64 36 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %arrayinit.element21, ptr noundef nonnull align 8 dereferenceable(36) %arrayidx.i.i47, i64 36, i1 false), !tbaa.struct !28 - %arrayinit.element23 = getelementptr inbounds i8, ptr %agg.result, i64 72 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %arrayinit.element23, ptr noundef nonnull align 8 dereferenceable(36) %t, i64 36, i1 false), !tbaa.struct !28 - br label %return + br i1 %call16, label %return, label %if.end25 if.end25: ; preds = %land.lhs.true13, %if.end %call28 = call noundef zeroext i1 @_ZNK3irr5video9S3DVertexltERKS1_(ptr noundef nonnull align 4 dereferenceable(36) %arrayidx.i.i47, ptr noundef nonnull align 4 dereferenceable(36) %t) @@ -1418,15 +1402,7 @@ if.end25: ; preds = %land.lhs.true13, %i land.lhs.true29: ; preds = %if.end25 %call32 = call noundef zeroext i1 @_ZNK3irr5video9S3DVertexltERKS1_(ptr noundef nonnull align 4 dereferenceable(36) %arrayidx.i.i47, ptr noundef nonnull align 4 dereferenceable(36) %arrayidx.i.i) - br i1 %call32, label %if.then33, label %if.end41 - -if.then33: ; preds = %land.lhs.true29 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %agg.result, ptr noundef nonnull align 8 dereferenceable(36) %arrayidx.i.i47, i64 36, i1 false), !tbaa.struct !28 - %arrayinit.element37 = getelementptr inbounds i8, ptr %agg.result, i64 36 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %arrayinit.element37, ptr noundef nonnull align 8 dereferenceable(36) %t, i64 36, i1 false), !tbaa.struct !28 - %arrayinit.element39 = getelementptr inbounds i8, ptr %agg.result, i64 72 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %arrayinit.element39, ptr noundef nonnull align 4 dereferenceable(36) %arrayidx.i.i, i64 36, i1 false), !tbaa.struct !28 - br label %return + br i1 %call32, label %return, label %if.end41 if.end41: ; preds = %land.lhs.true29, %if.end25 %exception = call ptr @__cxa_allocate_exception(i64 16) #16 @@ -1443,7 +1419,15 @@ lpad: ; preds = %if.end41 call void @__cxa_free_exception(ptr %exception) #16 resume { ptr, i32 } %0 -return: ; preds = %if.then33, %if.then17, %if.then +return: ; preds = %land.lhs.true29, %land.lhs.true13, %land.lhs.true + %arrayidx.i.i47.sink = phi ptr [ %t, %land.lhs.true ], [ %arrayidx.i.i, %land.lhs.true13 ], [ %arrayidx.i.i47, %land.lhs.true29 ] + %t.sink = phi ptr [ %arrayidx.i.i, %land.lhs.true ], [ %arrayidx.i.i47, %land.lhs.true13 ], [ %t, %land.lhs.true29 ] + %arrayidx.i.i.sink = phi ptr [ %arrayidx.i.i43, %land.lhs.true ], [ %t, %land.lhs.true13 ], [ %arrayidx.i.i, %land.lhs.true29 ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %agg.result, ptr noundef nonnull align 4 dereferenceable(36) %arrayidx.i.i47.sink, i64 36, i1 false) + %arrayinit.element37 = getelementptr inbounds i8, ptr %agg.result, i64 36 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %arrayinit.element37, ptr noundef nonnull align 4 dereferenceable(36) %t.sink, i64 36, i1 false) + %arrayinit.element39 = getelementptr inbounds i8, ptr %agg.result, i64 72 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %arrayinit.element39, ptr noundef nonnull align 4 dereferenceable(36) %arrayidx.i.i.sink, i64 36, i1 false) ret void } diff --git a/bench/minetest/optimized/player_sao.cpp.ll b/bench/minetest/optimized/player_sao.cpp.ll index 0d68e273dfe..dffd29e0b93 100644 --- a/bench/minetest/optimized/player_sao.cpp.ll +++ b/bench/minetest/optimized/player_sao.cpp.ll @@ -4676,19 +4676,9 @@ if.then275: ; preds = %if.end273 %243 = load ptr, ptr %vfn.i761, align 8 %call.i762 = call noundef ptr %243(ptr noundef nonnull align 8 dereferenceable(850) %this) %tobool.i763.not = icmp eq ptr %call.i762, null - br i1 %tobool.i763.not, label %if.else, label %if.then281 - -if.then281: ; preds = %if.then275 - %m_last_good_position282 = getelementptr inbounds i8, ptr %this, i64 884 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %pos279, ptr noundef nonnull align 4 dereferenceable(12) %m_last_good_position282, i64 12, i1 false), !tbaa.struct !174 - br label %if.end284 - -if.else: ; preds = %if.then275 - %m_base_position283 = getelementptr inbounds i8, ptr %this, i64 32 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %pos279, ptr noundef nonnull align 8 dereferenceable(12) %m_base_position283, i64 12, i1 false), !tbaa.struct !174 - br label %if.end284 - -if.end284: ; preds = %if.else, %if.then281 + %. = select i1 %tobool.i763.not, i64 32, i64 884 + %m_base_position283 = getelementptr inbounds i8, ptr %this, i64 %. + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %pos279, ptr noundef nonnull align 4 dereferenceable(12) %m_base_position283, i64 12, i1 false) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %str285) #34 call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %ref.tmp286) #34 store <2 x float> zeroinitializer, ptr %ref.tmp286, align 8, !tbaa !76 @@ -4712,7 +4702,7 @@ if.end284: ; preds = %if.else, %if.then28 %call.i769770 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt5dequeI19ActiveObjectMessageSaIS0_EE12emplace_backIJtbRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEERS0_DpOT_(ptr noundef nonnull align 8 dereferenceable(80) %m_messages_out288, ptr noundef nonnull align 2 dereferenceable(2) %ref.tmp289, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp293, ptr noundef nonnull align 8 dereferenceable(32) %str285) to label %invoke.cont295 unwind label %lpad294 -invoke.cont295: ; preds = %if.end284 +invoke.cont295: ; preds = %if.then275 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp293) #34 call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %ref.tmp289) #34 %245 = load ptr, ptr %str285, align 8, !tbaa !11 @@ -4736,7 +4726,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit777: ; preds = %if call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %pos279) #34 br label %if.end303 -lpad294: ; preds = %if.end284 +lpad294: ; preds = %if.then275 %248 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp293) #34 diff --git a/bench/miniaudio/optimized/unity.c.ll b/bench/miniaudio/optimized/unity.c.ll index 3d678e881ea..6bef48ecd2d 100644 --- a/bench/miniaudio/optimized/unity.c.ll +++ b/bench/miniaudio/optimized/unity.c.ll @@ -42536,19 +42536,9 @@ if.then2.i.i: ; preds = %if.then40.i if.end74.i: ; preds = %if.then2.i.i, %if.then67.i %35 = phi i8 [ %31, %if.then2.i.i ], [ %.pre.i, %if.then67.i ] %tobool76.not.i = icmp eq i8 %35, 0 - br i1 %tobool76.not.i, label %if.else82.i, label %if.then77.i - -if.then77.i: ; preds = %if.end74.i - %call81.i = call i32 @ma_channel_converter_process_pcm_frames(ptr noundef nonnull %channelConverter17.i, ptr noundef nonnull %pTempBufferOut.i, ptr noundef nonnull %pTempBufferIn.i, i64 noundef %frameCountThisIteration.1.i) - br label %if.end86.i - -if.else82.i: ; preds = %if.end74.i - %call85.i = call i32 @ma_channel_converter_process_pcm_frames(ptr noundef nonnull %channelConverter17.i, ptr noundef %pFramesOutThisIteration.0.i, ptr noundef nonnull %pTempBufferIn.i, i64 noundef %frameCountThisIteration.1.i) - br label %if.end86.i - -if.end86.i: ; preds = %if.else82.i, %if.then77.i - %result.0.i = phi i32 [ %call81.i, %if.then77.i ], [ %call85.i, %if.else82.i ] - %cmp87.not.i = icmp eq i32 %result.0.i, 0 + %pFramesOutThisIteration.0.pTempBufferOut.i = select i1 %tobool76.not.i, ptr %pFramesOutThisIteration.0.i, ptr %pTempBufferOut.i + %call85.i = call i32 @ma_channel_converter_process_pcm_frames(ptr noundef nonnull %channelConverter17.i, ptr noundef %pFramesOutThisIteration.0.pTempBufferOut.i, ptr noundef nonnull %pTempBufferIn.i, i64 noundef %frameCountThisIteration.1.i) + %cmp87.not.i = icmp eq i32 %call85.i, 0 br i1 %cmp87.not.i, label %if.end106.i, label %if.end122.i if.else91.i: ; preds = %if.end38.i @@ -42559,8 +42549,8 @@ if.else91.i: ; preds = %if.end38.i %cmp102.not.i = icmp eq i32 %call101.i, 0 br i1 %cmp102.not.i, label %if.end106.i, label %if.end122.i -if.end106.i: ; preds = %if.else91.i, %if.end86.i - %frameCountThisIteration.2.i = phi i64 [ %frameCountThisIteration.1.i, %if.end86.i ], [ %spec.select71.i, %if.else91.i ] +if.end106.i: ; preds = %if.else91.i, %if.end74.i + %frameCountThisIteration.2.i = phi i64 [ %frameCountThisIteration.1.i, %if.end74.i ], [ %spec.select71.i, %if.else91.i ] %36 = load i8, ptr %hasPostFormatConversion55.i, align 1 %tobool108.i = icmp ne i8 %36, 0 %cmp110.i = icmp ne ptr %pFramesOutThisIteration.0.i, null @@ -42582,7 +42572,7 @@ if.end121.i: ; preds = %if.then112.i, %if.e %cmp15.i = icmp ult i64 %add.i, %cond.i60 br i1 %cmp15.i, label %while.body.i, label %if.end122.i, !llvm.loop !483 -if.end122.i: ; preds = %if.end121.i, %if.else91.i, %if.end86.i, %if.else.i61, %if.then10.i +if.end122.i: ; preds = %if.end121.i, %if.else91.i, %if.end74.i, %if.else.i61, %if.then10.i br i1 %cmp.not.i52, label %if.end126.i, label %if.then125.i if.then125.i: ; preds = %if.end122.i @@ -43199,7 +43189,7 @@ if.end3.i132: ; preds = %if.then2.i131, %if. br label %while.cond.i154 while.cond.i154: ; preds = %if.end118.i, %if.end3.i132 - %framesProcessedIn.0.i155 = phi i64 [ 0, %if.end3.i132 ], [ %add.i195, %if.end118.i ] + %framesProcessedIn.0.i155 = phi i64 [ 0, %if.end3.i132 ], [ %add.i194, %if.end118.i ] %framesProcessedOut.0.i156 = phi i64 [ 0, %if.end3.i132 ], [ %add119.i, %if.end118.i ] %cmp16.i = icmp ult i64 %framesProcessedOut.0.i156, %frameCountOut.0.i133 br i1 %cmp16.i, label %while.body.i161, label %while.end.i157 @@ -43306,22 +43296,22 @@ if.end71.i: ; preds = %if.then70.i, %if.en if.then74.i: ; preds = %if.end71.i %cmp75.not.i = icmp eq ptr %pRunningFramesIn.0.i166, null - br i1 %cmp75.not.i, label %if.end85.i, label %if.then77.i187 + br i1 %cmp75.not.i, label %if.end85.i, label %if.then77.i -if.then77.i187: ; preds = %if.then74.i +if.then77.i: ; preds = %if.then74.i %166 = load i32, ptr %channelConverter.i134, align 8 %167 = load i32, ptr %pConverter, align 8 %168 = load i32, ptr %channelsIn21.i, align 8 %169 = load i32, ptr %ditherMode.i153, align 8 - %conv.i.i188 = zext i32 %168 to i64 - %mul.i70.i = mul i64 %164, %conv.i.i188 + %conv.i.i187 = zext i32 %168 to i64 + %mul.i70.i = mul i64 %164, %conv.i.i187 call void @ma_pcm_convert(ptr noundef nonnull %pTempBufferIn.i120, i32 noundef %166, ptr noundef nonnull %pRunningFramesIn.0.i166, i32 noundef %167, i64 noundef %mul.i70.i, i32 noundef %169) %.pre83.i = load i64, ptr %frameCountInThisIteration.i123, align 8 br label %if.end85.i -if.end85.i: ; preds = %if.then77.i187, %if.then74.i, %if.end71.i - %170 = phi i64 [ %.pre83.i, %if.then77.i187 ], [ %164, %if.then74.i ], [ %164, %if.end71.i ] - %pChannelsBufferIn.0.i = phi ptr [ %pTempBufferIn.i120, %if.then77.i187 ], [ null, %if.then74.i ], [ %pRunningFramesIn.0.i166, %if.end71.i ] +if.end85.i: ; preds = %if.then77.i, %if.then74.i, %if.end71.i + %170 = phi i64 [ %.pre83.i, %if.then77.i ], [ %164, %if.then74.i ], [ %164, %if.end71.i ] + %pChannelsBufferIn.0.i = phi ptr [ %pTempBufferIn.i120, %if.then77.i ], [ null, %if.then74.i ], [ %pRunningFramesIn.0.i166, %if.end71.i ] %call88.i = call i32 @ma_channel_converter_process_pcm_frames(ptr noundef nonnull %channelConverter.i134, ptr noundef nonnull %pTempBufferMid.i121, ptr noundef %pChannelsBufferIn.0.i, i64 noundef %170) %cmp89.not.i = icmp eq i32 %call88.i, 0 br i1 %cmp89.not.i, label %if.end92.i, label %ma_data_converter_process_pcm_frames__channels_first.exit @@ -43329,25 +43319,25 @@ if.end85.i: ; preds = %if.then77.i187, %if if.end92.i: ; preds = %if.end85.i %171 = load i8, ptr %hasPostFormatConversion.i147, align 1 %tobool94.not.i = icmp eq i8 %171, 0 - %pRunningFramesOut.0.pTempBufferOut.i189 = select i1 %tobool94.not.i, ptr %pRunningFramesOut.0.i173, ptr %pTempBufferOut.i122 + %pRunningFramesOut.0.pTempBufferOut.i188 = select i1 %tobool94.not.i, ptr %pRunningFramesOut.0.i173, ptr %pTempBufferOut.i122 %172 = load ptr, ptr %pBackendVTable.i.i149, align 8 - %cmp5.i.i190 = icmp eq ptr %172, null - br i1 %cmp5.i.i190, label %ma_data_converter_process_pcm_frames__channels_first.exit, label %lor.lhs.false.i72.i + %cmp5.i.i189 = icmp eq ptr %172, null + br i1 %cmp5.i.i189, label %ma_data_converter_process_pcm_frames__channels_first.exit, label %lor.lhs.false.i72.i lor.lhs.false.i72.i: ; preds = %if.end92.i - %onProcess.i.i191 = getelementptr inbounds i8, ptr %172, i64 24 - %173 = load ptr, ptr %onProcess.i.i191, align 8 - %cmp7.i.i192 = icmp eq ptr %173, null - br i1 %cmp7.i.i192, label %ma_data_converter_process_pcm_frames__channels_first.exit, label %ma_resampler_process_pcm_frames.exit.i193 + %onProcess.i.i190 = getelementptr inbounds i8, ptr %172, i64 24 + %173 = load ptr, ptr %onProcess.i.i190, align 8 + %cmp7.i.i191 = icmp eq ptr %173, null + br i1 %cmp7.i.i191, label %ma_data_converter_process_pcm_frames__channels_first.exit, label %ma_resampler_process_pcm_frames.exit.i192 -ma_resampler_process_pcm_frames.exit.i193: ; preds = %lor.lhs.false.i72.i +ma_resampler_process_pcm_frames.exit.i192: ; preds = %lor.lhs.false.i72.i %174 = load ptr, ptr %pBackendUserData.i.i150, align 8 %175 = load ptr, ptr %resampler.i140, align 8 - %call.i74.i = call i32 %173(ptr noundef %174, ptr noundef %175, ptr noundef nonnull %pTempBufferMid.i121, ptr noundef nonnull %frameCountInThisIteration.i123, ptr noundef %pRunningFramesOut.0.pTempBufferOut.i189, ptr noundef nonnull %frameCountOutThisIteration.i124) #64 - %cmp102.not.i194 = icmp eq i32 %call.i74.i, 0 - br i1 %cmp102.not.i194, label %if.end105.i, label %ma_data_converter_process_pcm_frames__channels_first.exit + %call.i74.i = call i32 %173(ptr noundef %174, ptr noundef %175, ptr noundef nonnull %pTempBufferMid.i121, ptr noundef nonnull %frameCountInThisIteration.i123, ptr noundef %pRunningFramesOut.0.pTempBufferOut.i188, ptr noundef nonnull %frameCountOutThisIteration.i124) #64 + %cmp102.not.i193 = icmp eq i32 %call.i74.i, 0 + br i1 %cmp102.not.i193, label %if.end105.i, label %ma_data_converter_process_pcm_frames__channels_first.exit -if.end105.i: ; preds = %ma_resampler_process_pcm_frames.exit.i193 +if.end105.i: ; preds = %ma_resampler_process_pcm_frames.exit.i192 %176 = load i8, ptr %hasPostFormatConversion.i147, align 1 %tobool107.i = icmp ne i8 %176, 0 %cmp109.i = icmp ne ptr %pRunningFramesOut.0.i173, null @@ -43362,19 +43352,19 @@ if.then111.i: ; preds = %if.end105.i %181 = load i32, ptr %ditherMode.i153, align 8 %conv.i76.i = zext i32 %180 to i64 %mul.i77.i = mul i64 %179, %conv.i76.i - call void @ma_pcm_convert(ptr noundef nonnull %pRunningFramesOut.0.i173, i32 noundef %177, ptr noundef nonnull %pRunningFramesOut.0.pTempBufferOut.i189, i32 noundef %178, i64 noundef %mul.i77.i, i32 noundef %181) + call void @ma_pcm_convert(ptr noundef nonnull %pRunningFramesOut.0.i173, i32 noundef %177, ptr noundef nonnull %pRunningFramesOut.0.pTempBufferOut.i188, i32 noundef %178, i64 noundef %mul.i77.i, i32 noundef %181) br label %if.end118.i if.end118.i: ; preds = %if.then111.i, %if.end105.i %182 = load i64, ptr %frameCountInThisIteration.i123, align 8 - %add.i195 = add i64 %182, %framesProcessedIn.0.i155 + %add.i194 = add i64 %182, %framesProcessedIn.0.i155 %183 = load i64, ptr %frameCountOutThisIteration.i124, align 8 %add119.i = add i64 %183, %framesProcessedOut.0.i156 %cmp120.i = icmp eq i64 %183, 0 br i1 %cmp120.i, label %while.end.i157, label %while.cond.i154, !llvm.loop !486 while.end.i157: ; preds = %if.end118.i, %while.cond.i154 - %framesProcessedIn.1.i158 = phi i64 [ %add.i195, %if.end118.i ], [ %framesProcessedIn.0.i155, %while.cond.i154 ] + %framesProcessedIn.1.i158 = phi i64 [ %add.i194, %if.end118.i ], [ %framesProcessedIn.0.i155, %while.cond.i154 ] %framesProcessedOut.1.i159 = phi i64 [ %add119.i, %if.end118.i ], [ %framesProcessedOut.0.i156, %while.cond.i154 ] br i1 %cmp.not.i126, label %if.end127.i, label %if.then126.i @@ -43389,8 +43379,8 @@ if.then130.i: ; preds = %if.end127.i store i64 %framesProcessedOut.1.i159, ptr %pFrameCountOut, align 8 br label %ma_data_converter_process_pcm_frames__channels_first.exit -ma_data_converter_process_pcm_frames__channels_first.exit: ; preds = %if.end85.i, %if.end92.i, %lor.lhs.false.i72.i, %ma_resampler_process_pcm_frames.exit.i193, %if.end127.i, %if.then130.i - %retval.0.i160 = phi i32 [ 0, %if.then130.i ], [ 0, %if.end127.i ], [ %call88.i, %if.end85.i ], [ %call.i74.i, %ma_resampler_process_pcm_frames.exit.i193 ], [ -29, %lor.lhs.false.i72.i ], [ -29, %if.end92.i ] +ma_data_converter_process_pcm_frames__channels_first.exit: ; preds = %if.end85.i, %if.end92.i, %lor.lhs.false.i72.i, %ma_resampler_process_pcm_frames.exit.i192, %if.end127.i, %if.then130.i + %retval.0.i160 = phi i32 [ 0, %if.then130.i ], [ 0, %if.end127.i ], [ %call88.i, %if.end85.i ], [ %call.i74.i, %ma_resampler_process_pcm_frames.exit.i192 ], [ -29, %lor.lhs.false.i72.i ], [ -29, %if.end92.i ] call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %pTempBufferIn.i120) call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %pTempBufferMid.i121) call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %pTempBufferOut.i122) diff --git a/bench/ms-gsl/optimized/algorithm_tests.cpp.ll b/bench/ms-gsl/optimized/algorithm_tests.cpp.ll index d0cd11c5fe7..a2a9dd01361 100644 --- a/bench/ms-gsl/optimized/algorithm_tests.cpp.ll +++ b/bench/ms-gsl/optimized/algorithm_tests.cpp.ll @@ -2978,7 +2978,7 @@ if.then194: ; preds = %if.end192 to label %invoke.cont199 unwind label %lpad198 invoke.cont199: ; preds = %if.then194 - switch i32 %call200, label %sw.epilog270 [ + switch i32 %call200, label %if.end287.sink.split [ i32 0, label %sw.bb201 i32 1, label %sw.bb214 ] @@ -3008,7 +3008,7 @@ invoke.cont206: ; preds = %invoke.cont204 to label %invoke.cont210 unwind label %lpad198 invoke.cont210: ; preds = %invoke.cont206 - br i1 %call211, label %sw.epilog270, label %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit116 + br i1 %call211, label %if.end287.sink.split, label %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit116 sw.bb214: ; preds = %invoke.cont199 %114 = load ptr, ptr %gtest_dt184, align 8 @@ -3068,7 +3068,7 @@ invoke.cont266: ; preds = %try.cont263 %vfn.i105 = getelementptr inbounds i8, ptr %vtable.i104, i64 40 %127 = load ptr, ptr %vfn.i105, align 8 invoke void %127(ptr noundef nonnull align 8 dereferenceable(8) %114, i32 noundef 0) - to label %sw.epilog270 unwind label %terminate.lpad.i106 + to label %if.end287.sink.split unwind label %terminate.lpad.i106 terminate.lpad.i106: ; preds = %invoke.cont266 %128 = landingpad { ptr, i32 } @@ -3121,26 +3121,19 @@ terminate.lpad.i110: ; preds = %ehcleanup268 call void @__clang_call_terminate(ptr %137) #21 unreachable -sw.epilog270: ; preds = %invoke.cont266, %invoke.cont199, %invoke.cont210 - %vtable.i.i114.c = load ptr, ptr %108, align 8 - %vfn.i.i115.c = getelementptr inbounds i8, ptr %vtable.i.i114.c, i64 8 - %138 = load ptr, ptr %vfn.i.i115.c, align 8 - call void %138(ptr noundef nonnull align 8 dereferenceable(8) %108) #19 - br label %if.end287 - _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit116: ; preds = %invoke.cont210 %vtable.i.i114 = load ptr, ptr %108, align 8 %vfn.i.i115 = getelementptr inbounds i8, ptr %vtable.i.i114, i64 8 - %139 = load ptr, ptr %vfn.i.i115, align 8 - call void %139(ptr noundef nonnull align 8 dereferenceable(8) %108) #19 + %138 = load ptr, ptr %vfn.i.i115, align 8 + call void %138(ptr noundef nonnull align 8 dereferenceable(8) %108) #19 br label %gtest_label_219 _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit121: ; preds = %ehcleanup268, %lpad198 %.pn19.pn = phi { ptr, i32 } [ %110, %lpad198 ], [ %.pn19, %ehcleanup268 ] %vtable.i.i119 = load ptr, ptr %108, align 8 %vfn.i.i120 = getelementptr inbounds i8, ptr %vtable.i.i119, i64 8 - %140 = load ptr, ptr %vfn.i.i120, align 8 - call void %140(ptr noundef nonnull align 8 dereferenceable(8) %108) #19 + %139 = load ptr, ptr %vfn.i.i120, align 8 + call void %139(ptr noundef nonnull align 8 dereferenceable(8) %108) #19 br label %eh.resume gtest_label_219: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit116, %if.end181, %_ZN7testing7MatcherIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit100 @@ -3158,42 +3151,43 @@ invoke.cont282: ; preds = %invoke.cont280 invoke.cont284: ; preds = %invoke.cont282 call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp278) #19 - %141 = load ptr, ptr %ref.tmp277, align 8 - %cmp.not.i.i122 = icmp eq ptr %141, null - br i1 %cmp.not.i.i122, label %if.end287, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i123 - -_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i123: ; preds = %invoke.cont284 - %vtable.i.i.i124 = load ptr, ptr %141, align 8 - %vfn.i.i.i125 = getelementptr inbounds i8, ptr %vtable.i.i.i124, i64 8 - %142 = load ptr, ptr %vfn.i.i.i125, align 8 - call void %142(ptr noundef nonnull align 8 dereferenceable(128) %141) #19 - br label %if.end287 + %140 = load ptr, ptr %ref.tmp277, align 8 + %cmp.not.i.i122 = icmp eq ptr %140, null + br i1 %cmp.not.i.i122, label %if.end287, label %if.end287.sink.split lpad279: ; preds = %invoke.cont280, %gtest_label_219 - %143 = landingpad { ptr, i32 } + %141 = landingpad { ptr, i32 } cleanup br label %ehcleanup286 lpad283: ; preds = %invoke.cont282 - %144 = landingpad { ptr, i32 } + %142 = landingpad { ptr, i32 } cleanup call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp278) #19 br label %ehcleanup286 ehcleanup286: ; preds = %lpad283, %lpad279 - %.pn22 = phi { ptr, i32 } [ %144, %lpad283 ], [ %143, %lpad279 ] - %145 = load ptr, ptr %ref.tmp277, align 8 - %cmp.not.i.i127 = icmp eq ptr %145, null + %.pn22 = phi { ptr, i32 } [ %142, %lpad283 ], [ %141, %lpad279 ] + %143 = load ptr, ptr %ref.tmp277, align 8 + %cmp.not.i.i127 = icmp eq ptr %143, null br i1 %cmp.not.i.i127, label %eh.resume, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i128 _ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i128: ; preds = %ehcleanup286 - %vtable.i.i.i129 = load ptr, ptr %145, align 8 + %vtable.i.i.i129 = load ptr, ptr %143, align 8 %vfn.i.i.i130 = getelementptr inbounds i8, ptr %vtable.i.i.i129, i64 8 - %146 = load ptr, ptr %vfn.i.i.i130, align 8 - call void %146(ptr noundef nonnull align 8 dereferenceable(128) %145) #19 + %144 = load ptr, ptr %vfn.i.i.i130, align 8 + call void %144(ptr noundef nonnull align 8 dereferenceable(128) %143) #19 br label %eh.resume -if.end287: ; preds = %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i123, %invoke.cont284, %sw.epilog270, %if.end192 +if.end287.sink.split: ; preds = %invoke.cont284, %invoke.cont210, %invoke.cont199, %invoke.cont266 + %.sink144 = phi ptr [ %108, %invoke.cont266 ], [ %108, %invoke.cont199 ], [ %108, %invoke.cont210 ], [ %140, %invoke.cont284 ] + %vtable.i.i.i124 = load ptr, ptr %.sink144, align 8 + %vfn.i.i.i125 = getelementptr inbounds i8, ptr %vtable.i.i.i124, i64 8 + %145 = load ptr, ptr %vfn.i.i.i125, align 8 + call void %145(ptr noundef nonnull align 8 dereferenceable(8) %.sink144) #19 + br label %if.end287 + +if.end287: ; preds = %if.end287.sink.split, %invoke.cont284, %if.end192 ret void eh.resume: ; preds = %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i128, %ehcleanup286, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i85, %ehcleanup180, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i39, %ehcleanup75, %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit121, %lpad186, %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit78, %lpad81, %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit37, %lpad @@ -3201,10 +3195,10 @@ eh.resume: ; preds = %_ZNKSt14default_del resume { ptr, i32 } %.pn22.pn terminate.lpad: ; preds = %lpad245, %lpad235, %lpad139, %lpad129, %lpad43, %lpad35 - %147 = landingpad { ptr, i32 } + %146 = landingpad { ptr, i32 } catch ptr null - %148 = extractvalue { ptr, i32 } %147, 0 - call void @__clang_call_terminate(ptr %148) #21 + %147 = extractvalue { ptr, i32 } %146, 0 + call void @__clang_call_terminate(ptr %147) #21 unreachable } diff --git a/bench/nghttp2/optimized/libevent-server.c.ll b/bench/nghttp2/optimized/libevent-server.c.ll index 986a38a15a1..e23094d9f2d 100644 --- a/bench/nghttp2/optimized/libevent-server.c.ll +++ b/bench/nghttp2/optimized/libevent-server.c.ll @@ -240,7 +240,7 @@ entry: %0 = load ptr, ptr %arg, align 8 %call.i.i = tail call ptr @SSL_new(ptr noundef %0) #23 %tobool.not.i.i = icmp eq ptr %call.i.i, null - br i1 %tobool.not.i.i, label %if.then.i.i, label %create_ssl.exit.i + br i1 %tobool.not.i.i, label %if.then.i.i, label %create_http2_session_data.exit if.then.i.i: ; preds = %entry %call1.i.i = tail call i64 @ERR_get_error() #23 @@ -248,7 +248,7 @@ if.then.i.i: ; preds = %entry tail call void (i32, ptr, ...) @errx(i32 noundef 1, ptr noundef nonnull @.str.9, ptr noundef %call2.i.i) #24 unreachable -create_ssl.exit.i: ; preds = %entry +create_http2_session_data.exit: ; preds = %entry %calloc.i = tail call dereferenceable_or_null(64) ptr @calloc(i64 1, i64 64) %app_ctx2.i = getelementptr inbounds i8, ptr %calloc.i, i64 40 store ptr %arg, ptr %app_ctx2.i, align 8 @@ -261,23 +261,13 @@ create_ssl.exit.i: ; preds = %entry %call6.i = call i32 @bufferevent_enable(ptr noundef %call4.i, i16 noundef signext 6) #23 %call7.i = call i32 @getnameinfo(ptr noundef %addr, i32 noundef %addrlen, ptr noundef nonnull %host.i, i32 noundef 1025, ptr noundef null, i32 noundef 0, i32 noundef 1) #23 %cmp.not.i = icmp eq i32 %call7.i, 0 - br i1 %cmp.not.i, label %if.else.i, label %if.then.i - -if.then.i: ; preds = %create_ssl.exit.i - %call8.i = call noalias dereferenceable_or_null(10) ptr @strdup(ptr noundef nonnull @.str.8) #23 - br label %create_http2_session_data.exit - -if.else.i: ; preds = %create_ssl.exit.i - %call10.i = call noalias ptr @strdup(ptr noundef nonnull %host.i) #23 - br label %create_http2_session_data.exit - -create_http2_session_data.exit: ; preds = %if.then.i, %if.else.i - %call8.sink.i = phi ptr [ %call10.i, %if.else.i ], [ %call8.i, %if.then.i ] + %host..str.8.i = select i1 %cmp.not.i, ptr %host.i, ptr @.str.8 + %call10.i = call noalias ptr @strdup(ptr noundef nonnull %host..str.8.i) #23 %2 = getelementptr inbounds i8, ptr %calloc.i, i64 56 - store ptr %call8.sink.i, ptr %2, align 8 + store ptr %call10.i, ptr %2, align 8 call void @llvm.lifetime.end.p0(i64 1025, ptr nonnull %host.i) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %val.i) - call void @bufferevent_setcb(ptr noundef %call4.i, ptr noundef nonnull @readcb, ptr noundef nonnull @writecb, ptr noundef nonnull @eventcb, ptr noundef nonnull %calloc.i) #23 + call void @bufferevent_setcb(ptr noundef %call4.i, ptr noundef nonnull @readcb, ptr noundef nonnull @writecb, ptr noundef nonnull @eventcb, ptr noundef %calloc.i) #23 ret void } diff --git a/bench/nori/optimized/screen.cpp.ll b/bench/nori/optimized/screen.cpp.ll index 82978f49508..f830107dca6 100644 --- a/bench/nori/optimized/screen.cpp.ll +++ b/bench/nori/optimized/screen.cpp.ll @@ -6975,7 +6975,7 @@ define internal fastcc void @_ZL19glnvg__convertPaintP12GLNVGcontextP17GLNVGfrag %86 = lshr i64 %78, 32 %87 = trunc nuw i64 %86 to i32 %88 = bitcast i32 %87 to float - br i1 %.not, label %123, label %89 + br i1 %.not, label %121, label %89 89: ; preds = %74 %90 = getelementptr inbounds i8, ptr %0, i64 40 @@ -7006,7 +7006,7 @@ _ZL18glnvg__findTextureP12GLNVGcontexti.exit: ; preds = %96 %101 = load i32, ptr %100, align 4 %102 = and i32 %101, 8 %.not67 = icmp eq i32 %102, 0 - br i1 %.not67, label %109, label %103 + br i1 %.not67, label %108, label %103 103: ; preds = %_ZL18glnvg__findTextureP12GLNVGcontexti.exit %104 = getelementptr inbounds i8, ptr %1, i64 148 @@ -7019,88 +7019,85 @@ _ZL18glnvg__findTextureP12GLNVGcontexti.exit: ; preds = %96 %107 = fmul float %106, -5.000000e-01 call void @nvgTransformTranslate(ptr noundef nonnull %9, float noundef 0.000000e+00, float noundef %107) call void @nvgTransformMultiply(ptr noundef nonnull %9, ptr noundef nonnull %10) - %108 = call i32 @nvgTransformInverse(ptr noundef nonnull %8, ptr noundef nonnull %9) - br label %111 - -109: ; preds = %_ZL18glnvg__findTextureP12GLNVGcontexti.exit - %110 = call i32 @nvgTransformInverse(ptr noundef nonnull %8, ptr noundef %2) - br label %111 - -111: ; preds = %109, %103 - %112 = getelementptr inbounds i8, ptr %1, i64 172 - store i32 1, ptr %112, align 4 - %113 = getelementptr inbounds i8, ptr %97, i64 16 - %114 = load i32, ptr %113, align 4 - %115 = icmp eq i32 %114, 2 - br i1 %115, label %116, label %121 - -116: ; preds = %111 - %117 = load i32, ptr %100, align 4 - %118 = lshr i32 %117, 4 - %.lobit = and i32 %118, 1 - %119 = xor i32 %.lobit, 1 + br label %108 + +108: ; preds = %_ZL18glnvg__findTextureP12GLNVGcontexti.exit, %103 + %.sink84 = phi ptr [ %9, %103 ], [ %2, %_ZL18glnvg__findTextureP12GLNVGcontexti.exit ] + %109 = call i32 @nvgTransformInverse(ptr noundef nonnull %8, ptr noundef %.sink84) + %110 = getelementptr inbounds i8, ptr %1, i64 172 + store i32 1, ptr %110, align 4 + %111 = getelementptr inbounds i8, ptr %97, i64 16 + %112 = load i32, ptr %111, align 4 + %113 = icmp eq i32 %112, 2 + br i1 %113, label %114, label %119 + +114: ; preds = %108 + %115 = load i32, ptr %100, align 4 + %116 = lshr i32 %115, 4 + %.lobit = and i32 %116, 1 + %117 = xor i32 %.lobit, 1 + %118 = getelementptr inbounds i8, ptr %1, i64 168 + store i32 %117, ptr %118, align 4 + br label %130 + +119: ; preds = %108 %120 = getelementptr inbounds i8, ptr %1, i64 168 - store i32 %119, ptr %120, align 4 - br label %132 - -121: ; preds = %111 - %122 = getelementptr inbounds i8, ptr %1, i64 168 - store i32 2, ptr %122, align 4 - br label %132 - -123: ; preds = %74 - %124 = getelementptr inbounds i8, ptr %1, i64 172 - store i32 0, ptr %124, align 4 - %125 = getelementptr inbounds i8, ptr %2, i64 32 - %126 = load float, ptr %125, align 4 - %127 = getelementptr inbounds i8, ptr %1, i64 152 - store float %126, ptr %127, align 4 - %128 = getelementptr inbounds i8, ptr %2, i64 36 - %129 = load float, ptr %128, align 4 - %130 = getelementptr inbounds i8, ptr %1, i64 156 - store float %129, ptr %130, align 4 - %131 = call i32 @nvgTransformInverse(ptr noundef nonnull %8, ptr noundef nonnull %2) - br label %132 - -132: ; preds = %116, %121, %123 - %133 = getelementptr inbounds i8, ptr %1, i64 48 - %134 = load float, ptr %8, align 16 - store float %134, ptr %133, align 4 - %135 = getelementptr inbounds i8, ptr %8, i64 4 - %136 = load float, ptr %135, align 4 - %137 = getelementptr inbounds i8, ptr %1, i64 52 - store float %136, ptr %137, align 4 - %138 = getelementptr inbounds i8, ptr %1, i64 56 - store float 0.000000e+00, ptr %138, align 4 - %139 = getelementptr inbounds i8, ptr %1, i64 60 - store float 0.000000e+00, ptr %139, align 4 - %140 = getelementptr inbounds i8, ptr %8, i64 8 - %141 = load float, ptr %140, align 8 - %142 = getelementptr inbounds i8, ptr %1, i64 64 - store float %141, ptr %142, align 4 - %143 = getelementptr inbounds i8, ptr %8, i64 12 - %144 = load float, ptr %143, align 4 - %145 = getelementptr inbounds i8, ptr %1, i64 68 - store float %144, ptr %145, align 4 - %146 = getelementptr inbounds i8, ptr %1, i64 72 - store float 0.000000e+00, ptr %146, align 4 - %147 = getelementptr inbounds i8, ptr %1, i64 76 - store float 0.000000e+00, ptr %147, align 4 - %148 = getelementptr inbounds i8, ptr %8, i64 16 - %149 = load float, ptr %148, align 16 - %150 = getelementptr inbounds i8, ptr %1, i64 80 - store float %149, ptr %150, align 4 - %151 = getelementptr inbounds i8, ptr %8, i64 20 - %152 = load float, ptr %151, align 4 - %153 = getelementptr inbounds i8, ptr %1, i64 84 - store float %152, ptr %153, align 4 - %154 = getelementptr inbounds i8, ptr %1, i64 88 - store float 1.000000e+00, ptr %154, align 4 - %155 = getelementptr inbounds i8, ptr %1, i64 92 - store float 0.000000e+00, ptr %155, align 4 + store i32 2, ptr %120, align 4 + br label %130 + +121: ; preds = %74 + %122 = getelementptr inbounds i8, ptr %1, i64 172 + store i32 0, ptr %122, align 4 + %123 = getelementptr inbounds i8, ptr %2, i64 32 + %124 = load float, ptr %123, align 4 + %125 = getelementptr inbounds i8, ptr %1, i64 152 + store float %124, ptr %125, align 4 + %126 = getelementptr inbounds i8, ptr %2, i64 36 + %127 = load float, ptr %126, align 4 + %128 = getelementptr inbounds i8, ptr %1, i64 156 + store float %127, ptr %128, align 4 + %129 = call i32 @nvgTransformInverse(ptr noundef nonnull %8, ptr noundef nonnull %2) + br label %130 + +130: ; preds = %114, %119, %121 + %131 = getelementptr inbounds i8, ptr %1, i64 48 + %132 = load float, ptr %8, align 16 + store float %132, ptr %131, align 4 + %133 = getelementptr inbounds i8, ptr %8, i64 4 + %134 = load float, ptr %133, align 4 + %135 = getelementptr inbounds i8, ptr %1, i64 52 + store float %134, ptr %135, align 4 + %136 = getelementptr inbounds i8, ptr %1, i64 56 + store float 0.000000e+00, ptr %136, align 4 + %137 = getelementptr inbounds i8, ptr %1, i64 60 + store float 0.000000e+00, ptr %137, align 4 + %138 = getelementptr inbounds i8, ptr %8, i64 8 + %139 = load float, ptr %138, align 8 + %140 = getelementptr inbounds i8, ptr %1, i64 64 + store float %139, ptr %140, align 4 + %141 = getelementptr inbounds i8, ptr %8, i64 12 + %142 = load float, ptr %141, align 4 + %143 = getelementptr inbounds i8, ptr %1, i64 68 + store float %142, ptr %143, align 4 + %144 = getelementptr inbounds i8, ptr %1, i64 72 + store float 0.000000e+00, ptr %144, align 4 + %145 = getelementptr inbounds i8, ptr %1, i64 76 + store float 0.000000e+00, ptr %145, align 4 + %146 = getelementptr inbounds i8, ptr %8, i64 16 + %147 = load float, ptr %146, align 16 + %148 = getelementptr inbounds i8, ptr %1, i64 80 + store float %147, ptr %148, align 4 + %149 = getelementptr inbounds i8, ptr %8, i64 20 + %150 = load float, ptr %149, align 4 + %151 = getelementptr inbounds i8, ptr %1, i64 84 + store float %150, ptr %151, align 4 + %152 = getelementptr inbounds i8, ptr %1, i64 88 + store float 1.000000e+00, ptr %152, align 4 + %153 = getelementptr inbounds i8, ptr %1, i64 92 + store float 0.000000e+00, ptr %153, align 4 br label %_ZL18glnvg__findTextureP12GLNVGcontexti.exit.thread -_ZL18glnvg__findTextureP12GLNVGcontexti.exit.thread: ; preds = %95, %89, %132 +_ZL18glnvg__findTextureP12GLNVGcontexti.exit.thread: ; preds = %95, %89, %130 ret void } diff --git a/bench/ocio/optimized/Config.cpp.ll b/bench/ocio/optimized/Config.cpp.ll index 32383d06e3d..edc066ca934 100644 --- a/bench/ocio/optimized/Config.cpp.ll +++ b/bench/ocio/optimized/Config.cpp.ll @@ -20721,63 +20721,60 @@ invoke.cont13: ; preds = %invoke.cont11 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #29 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp5) #29 %2 = load ptr, ptr %this, align 8 - %m_context = getelementptr inbounds i8, ptr %2, i64 56 - %3 = load ptr, ptr %m_context, align 8 - call void @_ZN19OpenColorIO_v2_4dev7Context12setStringVarEPKcS2_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull %name, ptr noundef nonnull %defaultValue) #29 br label %if.end49 lpad: ; preds = %if.then4 - %4 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } cleanup br label %ehcleanup17 lpad10: ; preds = %invoke.cont - %5 = landingpad { ptr, i32 } + %4 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad12: ; preds = %invoke.cont11 - %6 = landingpad { ptr, i32 } + %5 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp8) #29 br label %ehcleanup ehcleanup: ; preds = %lpad12, %lpad10 - %.pn9 = phi { ptr, i32 } [ %6, %lpad12 ], [ %5, %lpad10 ] + %.pn9 = phi { ptr, i32 } [ %5, %lpad12 ], [ %4, %lpad10 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp9) #29 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #29 br label %ehcleanup17 ehcleanup17: ; preds = %ehcleanup, %lpad - %.pn9.pn = phi { ptr, i32 } [ %.pn9, %ehcleanup ], [ %4, %lpad ] + %.pn9.pn = phi { ptr, i32 } [ %.pn9, %ehcleanup ], [ %3, %lpad ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp5) #29 br label %eh.resume if.else: ; preds = %if.end - %7 = load ptr, ptr %this, align 8 + %6 = load ptr, ptr %this, align 8 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp24) #29 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp23, ptr noundef nonnull %name, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp24) to label %invoke.cont26 unwind label %lpad25 invoke.cont26: ; preds = %if.else - %_M_parent.i.i.i.i = getelementptr inbounds i8, ptr %7, i64 24 - %8 = load ptr, ptr %_M_parent.i.i.i.i, align 8 - %add.ptr.i.i.i = getelementptr inbounds i8, ptr %7, i64 16 - %cmp.not6.i.i.i = icmp eq ptr %8, null + %_M_parent.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 24 + %7 = load ptr, ptr %_M_parent.i.i.i.i, align 8 + %add.ptr.i.i.i = getelementptr inbounds i8, ptr %6, i64 16 + %cmp.not6.i.i.i = icmp eq ptr %7, null br i1 %cmp.not6.i.i.i, label %invoke.cont28, label %while.body.i.i.i while.body.i.i.i: ; preds = %invoke.cont26, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i.i - %__x.addr.08.i.i.i = phi ptr [ %__x.addr.1.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i.i ], [ %8, %invoke.cont26 ] + %__x.addr.08.i.i.i = phi ptr [ %__x.addr.1.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i.i ], [ %7, %invoke.cont26 ] %__y.addr.07.i.i.i = phi ptr [ %__y.addr.1.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i.i ], [ %add.ptr.i.i.i, %invoke.cont26 ] %_M_storage.i.i.i.i.i = getelementptr inbounds i8, ptr %__x.addr.08.i.i.i, i64 32 %call.i.i.i.i.i = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_storage.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp23) to label %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i.i unwind label %terminate.lpad.i.i.i.i.i terminate.lpad.i.i.i.i.i: ; preds = %while.body.i.i.i - %9 = landingpad { ptr, i32 } + %8 = landingpad { ptr, i32 } catch ptr null - %10 = extractvalue { ptr, i32 } %9, 0 - call void @__clang_call_terminate(ptr %10) #33 + %9 = extractvalue { ptr, i32 } %8, 0 + call void @__clang_call_terminate(ptr %9) #33 unreachable _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i.i: ; preds = %while.body.i.i.i @@ -20799,10 +20796,10 @@ lor.lhs.false.i.i: ; preds = %_ZNSt8_Rb_treeINSt7 to label %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i unwind label %terminate.lpad.i.i.i.i terminate.lpad.i.i.i.i: ; preds = %lor.lhs.false.i.i - %11 = landingpad { ptr, i32 } + %10 = landingpad { ptr, i32 } catch ptr null - %12 = extractvalue { ptr, i32 } %11, 0 - call void @__clang_call_terminate(ptr %12) #33 + %11 = extractvalue { ptr, i32 } %10, 0 + call void @__clang_call_terminate(ptr %11) #33 unreachable _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i: ; preds = %lor.lhs.false.i.i @@ -20814,10 +20811,10 @@ invoke.cont28: ; preds = %_ZNKSt4lessINSt7__c %retval.sroa.0.0.i.i = phi ptr [ %add.ptr.i.i.i, %_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS8_EPSt18_Rb_tree_node_baseRS7_.exit.i.i ], [ %add.ptr.i.i.i, %invoke.cont26 ], [ %spec.select.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp23) #29 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp24) #29 - %13 = load ptr, ptr %this, align 8 - %add.ptr.i.i = getelementptr inbounds i8, ptr %13, i64 16 + %12 = load ptr, ptr %this, align 8 + %add.ptr.i.i = getelementptr inbounds i8, ptr %12, i64 16 %cmp.i.not = icmp eq ptr %retval.sroa.0.0.i.i, %add.ptr.i.i - br i1 %cmp.i.not, label %if.end45, label %if.then39 + br i1 %cmp.i.not, label %if.end49, label %if.then39 if.then39: ; preds = %invoke.cont28 %call.i1.i.i = call noundef nonnull ptr @_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_(ptr noundef %retval.sroa.0.0.i.i, ptr noundef nonnull align 8 dereferenceable(32) %add.ptr.i.i) #29 @@ -20826,29 +20823,27 @@ if.then39: ; preds = %invoke.cont28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i.i.i.i.i.i.i) #29 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_storage.i.i.i.i.i.i) #29 call void @_ZdlPv(ptr noundef nonnull %call.i1.i.i) #32 - %_M_node_count.i.i.i = getelementptr inbounds i8, ptr %13, i64 48 - %14 = load i64, ptr %_M_node_count.i.i.i, align 8 - %dec.i.i.i = add i64 %14, -1 + %_M_node_count.i.i.i = getelementptr inbounds i8, ptr %12, i64 48 + %13 = load i64, ptr %_M_node_count.i.i.i, align 8 + %dec.i.i.i = add i64 %13, -1 store i64 %dec.i.i.i, ptr %_M_node_count.i.i.i, align 8 %.pre = load ptr, ptr %this, align 8 - br label %if.end45 + br label %if.end49 lpad25: ; preds = %if.else - %15 = landingpad { ptr, i32 } + %14 = landingpad { ptr, i32 } cleanup call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp24) #29 br label %eh.resume -if.end45: ; preds = %if.then39, %invoke.cont28 - %16 = phi ptr [ %.pre, %if.then39 ], [ %13, %invoke.cont28 ] - %m_context47 = getelementptr inbounds i8, ptr %16, i64 56 - %17 = load ptr, ptr %m_context47, align 8 - call void @_ZN19OpenColorIO_v2_4dev7Context12setStringVarEPKcS2_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull %name, ptr noundef null) #29 - br label %if.end49 - -if.end49: ; preds = %if.end45, %invoke.cont13 - %18 = load ptr, ptr %this, align 8 - %m_cacheidMutex = getelementptr inbounds i8, ptr %18, i64 872 +if.end49: ; preds = %invoke.cont28, %if.then39, %invoke.cont13 + %.sink = phi ptr [ %2, %invoke.cont13 ], [ %.pre, %if.then39 ], [ %12, %invoke.cont28 ] + %.sink18 = phi ptr [ %defaultValue, %invoke.cont13 ], [ null, %if.then39 ], [ null, %invoke.cont28 ] + %m_context47 = getelementptr inbounds i8, ptr %.sink, i64 56 + %15 = load ptr, ptr %m_context47, align 8 + call void @_ZN19OpenColorIO_v2_4dev7Context12setStringVarEPKcS2_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull %name, ptr noundef %.sink18) #29 + %16 = load ptr, ptr %this, align 8 + %m_cacheidMutex = getelementptr inbounds i8, ptr %16, i64 872 %call1.i.i.i = call noundef i32 @pthread_mutex_lock(ptr noundef nonnull %m_cacheidMutex) #29 %tobool.not.i.i = icmp eq i32 %call1.i.i.i, 0 br i1 %tobool.not.i.i, label %_ZNSt10lock_guardISt5mutexEC2ERS0_.exit, label %if.then.i.i @@ -20858,8 +20853,8 @@ if.then.i.i: ; preds = %if.end49 unreachable _ZNSt10lock_guardISt5mutexEC2ERS0_.exit: ; preds = %if.end49 - %19 = load ptr, ptr %this, align 8 - invoke void @_ZN19OpenColorIO_v2_4dev6Config4Impl13resetCacheIDsEv(ptr noundef nonnull align 8 dereferenceable(1120) %19) + %17 = load ptr, ptr %this, align 8 + invoke void @_ZN19OpenColorIO_v2_4dev6Config4Impl13resetCacheIDsEv(ptr noundef nonnull align 8 dereferenceable(1120) %17) to label %invoke.cont54 unwind label %lpad51 invoke.cont54: ; preds = %_ZNSt10lock_guardISt5mutexEC2ERS0_.exit @@ -20870,13 +20865,13 @@ return: ; preds = %entry, %lor.lhs.fal ret void lpad51: ; preds = %_ZNSt10lock_guardISt5mutexEC2ERS0_.exit - %20 = landingpad { ptr, i32 } + %18 = landingpad { ptr, i32 } cleanup %call1.i.i.i16 = call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull %m_cacheidMutex) #29 br label %eh.resume eh.resume: ; preds = %lpad51, %lpad25, %ehcleanup17 - %.pn12 = phi { ptr, i32 } [ %20, %lpad51 ], [ %.pn9.pn, %ehcleanup17 ], [ %15, %lpad25 ] + %.pn12 = phi { ptr, i32 } [ %18, %lpad51 ], [ %.pn9.pn, %ehcleanup17 ], [ %14, %lpad25 ] resume { ptr, i32 } %.pn12 } diff --git a/bench/ocio/optimized/ImageDesc.cpp.ll b/bench/ocio/optimized/ImageDesc.cpp.ll index be5048615a5..0a343d69d89 100644 --- a/bench/ocio/optimized/ImageDesc.cpp.ll +++ b/bench/ocio/optimized/ImageDesc.cpp.ll @@ -136,84 +136,56 @@ if.then: ; preds = %entry %m_chanStrideBytes.i = getelementptr inbounds i8, ptr %9, i64 72 %10 = load i64, ptr %m_chanStrideBytes.i, align 8 %call25 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %call23, i64 noundef %10) - %call26 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call25, ptr noundef nonnull @.str.2) - %call27 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.8) - %vtable28 = load ptr, ptr %0, align 8 - %vfn29 = getelementptr inbounds i8, ptr %vtable28, i64 72 - %11 = load ptr, ptr %vfn29, align 8 - %call30 = tail call noundef i64 %11(ptr noundef nonnull align 8 dereferenceable(16) %0) - %call31 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %call27, i64 noundef %call30) - %call32 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call31, ptr noundef nonnull @.str.2) - %call33 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.9) - %vtable34 = load ptr, ptr %0, align 8 - %vfn35 = getelementptr inbounds i8, ptr %vtable34, i64 80 - %12 = load ptr, ptr %vfn35, align 8 - %call36 = tail call noundef i64 %12(ptr noundef nonnull align 8 dereferenceable(16) %0) - %call37 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %call33, i64 noundef %call36) br label %if.end146 dynamic_cast.notnull40: ; preds = %entry - %13 = tail call ptr @__dynamic_cast(ptr nonnull %img, ptr nonnull @_ZTIN19OpenColorIO_v2_4dev9ImageDescE, ptr nonnull @_ZTIN19OpenColorIO_v2_4dev15PlanarImageDescE, i64 0) #19 - %tobool43.not = icmp eq ptr %13, null + %11 = tail call ptr @__dynamic_cast(ptr nonnull %img, ptr nonnull @_ZTIN19OpenColorIO_v2_4dev9ImageDescE, ptr nonnull @_ZTIN19OpenColorIO_v2_4dev15PlanarImageDescE, i64 0) #19 + %tobool43.not = icmp eq ptr %11, null br i1 %tobool43.not, label %if.else95, label %if.then44 if.then44: ; preds = %dynamic_cast.notnull40 %call45 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.12) %call46 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.13) - %vtable47 = load ptr, ptr %13, align 8 + %vtable47 = load ptr, ptr %11, align 8 %vfn48 = getelementptr inbounds i8, ptr %vtable47, i64 16 - %14 = load ptr, ptr %vfn48, align 8 - %call49 = tail call noundef ptr %14(ptr noundef nonnull align 8 dereferenceable(16) %13) + %12 = load ptr, ptr %vfn48, align 8 + %call49 = tail call noundef ptr %12(ptr noundef nonnull align 8 dereferenceable(16) %11) %call50 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPKv(ptr noundef nonnull align 8 dereferenceable(8) %call46, ptr noundef %call49) %call51 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call50, ptr noundef nonnull @.str.2) %call52 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.14) - %vtable53 = load ptr, ptr %13, align 8 + %vtable53 = load ptr, ptr %11, align 8 %vfn54 = getelementptr inbounds i8, ptr %vtable53, i64 24 - %15 = load ptr, ptr %vfn54, align 8 - %call55 = tail call noundef ptr %15(ptr noundef nonnull align 8 dereferenceable(16) %13) + %13 = load ptr, ptr %vfn54, align 8 + %call55 = tail call noundef ptr %13(ptr noundef nonnull align 8 dereferenceable(16) %11) %call56 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPKv(ptr noundef nonnull align 8 dereferenceable(8) %call52, ptr noundef %call55) %call57 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call56, ptr noundef nonnull @.str.2) %call58 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.15) - %vtable59 = load ptr, ptr %13, align 8 + %vtable59 = load ptr, ptr %11, align 8 %vfn60 = getelementptr inbounds i8, ptr %vtable59, i64 32 - %16 = load ptr, ptr %vfn60, align 8 - %call61 = tail call noundef ptr %16(ptr noundef nonnull align 8 dereferenceable(16) %13) + %14 = load ptr, ptr %vfn60, align 8 + %call61 = tail call noundef ptr %14(ptr noundef nonnull align 8 dereferenceable(16) %11) %call62 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPKv(ptr noundef nonnull align 8 dereferenceable(8) %call58, ptr noundef %call61) %call63 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call62, ptr noundef nonnull @.str.2) %call64 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.16) - %vtable65 = load ptr, ptr %13, align 8 + %vtable65 = load ptr, ptr %11, align 8 %vfn66 = getelementptr inbounds i8, ptr %vtable65, i64 40 - %17 = load ptr, ptr %vfn66, align 8 - %call67 = tail call noundef ptr %17(ptr noundef nonnull align 8 dereferenceable(16) %13) + %15 = load ptr, ptr %vfn66, align 8 + %call67 = tail call noundef ptr %15(ptr noundef nonnull align 8 dereferenceable(16) %11) %call68 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPKv(ptr noundef nonnull align 8 dereferenceable(8) %call64, ptr noundef %call67) %call69 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call68, ptr noundef nonnull @.str.2) %call70 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.4) - %vtable71 = load ptr, ptr %13, align 8 + %vtable71 = load ptr, ptr %11, align 8 %vfn72 = getelementptr inbounds i8, ptr %vtable71, i64 56 - %18 = load ptr, ptr %vfn72, align 8 - %call73 = tail call noundef i64 %18(ptr noundef nonnull align 8 dereferenceable(16) %13) + %16 = load ptr, ptr %vfn72, align 8 + %call73 = tail call noundef i64 %16(ptr noundef nonnull align 8 dereferenceable(16) %11) %call74 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %call70, i64 noundef %call73) %call75 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call74, ptr noundef nonnull @.str.2) %call76 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.5) - %vtable77 = load ptr, ptr %13, align 8 + %vtable77 = load ptr, ptr %11, align 8 %vfn78 = getelementptr inbounds i8, ptr %vtable77, i64 64 - %19 = load ptr, ptr %vfn78, align 8 - %call79 = tail call noundef i64 %19(ptr noundef nonnull align 8 dereferenceable(16) %13) + %17 = load ptr, ptr %vfn78, align 8 + %call79 = tail call noundef i64 %17(ptr noundef nonnull align 8 dereferenceable(16) %11) %call80 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %call76, i64 noundef %call79) - %call81 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call80, ptr noundef nonnull @.str.2) - %call82 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.8) - %vtable83 = load ptr, ptr %13, align 8 - %vfn84 = getelementptr inbounds i8, ptr %vtable83, i64 72 - %20 = load ptr, ptr %vfn84, align 8 - %call85 = tail call noundef i64 %20(ptr noundef nonnull align 8 dereferenceable(16) %13) - %call86 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %call82, i64 noundef %call85) - %call87 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call86, ptr noundef nonnull @.str.2) - %call88 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.9) - %vtable89 = load ptr, ptr %13, align 8 - %vfn90 = getelementptr inbounds i8, ptr %vtable89, i64 80 - %21 = load ptr, ptr %vfn90, align 8 - %call91 = tail call noundef i64 %21(ptr noundef nonnull align 8 dereferenceable(16) %13) - %call92 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %call88, i64 noundef %call91) br label %if.end146 if.else95: ; preds = %dynamic_cast.notnull40 @@ -221,63 +193,64 @@ if.else95: ; preds = %dynamic_cast.notnul %call97 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.13) %vtable98 = load ptr, ptr %img, align 8 %vfn99 = getelementptr inbounds i8, ptr %vtable98, i64 16 - %22 = load ptr, ptr %vfn99, align 8 - %call100 = tail call noundef ptr %22(ptr noundef nonnull align 8 dereferenceable(8) %img) + %18 = load ptr, ptr %vfn99, align 8 + %call100 = tail call noundef ptr %18(ptr noundef nonnull align 8 dereferenceable(8) %img) %call101 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPKv(ptr noundef nonnull align 8 dereferenceable(8) %call97, ptr noundef %call100) %call102 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call101, ptr noundef nonnull @.str.2) %call103 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.14) %vtable104 = load ptr, ptr %img, align 8 %vfn105 = getelementptr inbounds i8, ptr %vtable104, i64 24 - %23 = load ptr, ptr %vfn105, align 8 - %call106 = tail call noundef ptr %23(ptr noundef nonnull align 8 dereferenceable(8) %img) + %19 = load ptr, ptr %vfn105, align 8 + %call106 = tail call noundef ptr %19(ptr noundef nonnull align 8 dereferenceable(8) %img) %call107 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPKv(ptr noundef nonnull align 8 dereferenceable(8) %call103, ptr noundef %call106) %call108 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call107, ptr noundef nonnull @.str.2) %call109 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.15) %vtable110 = load ptr, ptr %img, align 8 %vfn111 = getelementptr inbounds i8, ptr %vtable110, i64 32 - %24 = load ptr, ptr %vfn111, align 8 - %call112 = tail call noundef ptr %24(ptr noundef nonnull align 8 dereferenceable(8) %img) + %20 = load ptr, ptr %vfn111, align 8 + %call112 = tail call noundef ptr %20(ptr noundef nonnull align 8 dereferenceable(8) %img) %call113 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPKv(ptr noundef nonnull align 8 dereferenceable(8) %call109, ptr noundef %call112) %call114 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call113, ptr noundef nonnull @.str.2) %call115 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.16) %vtable116 = load ptr, ptr %img, align 8 %vfn117 = getelementptr inbounds i8, ptr %vtable116, i64 40 - %25 = load ptr, ptr %vfn117, align 8 - %call118 = tail call noundef ptr %25(ptr noundef nonnull align 8 dereferenceable(8) %img) + %21 = load ptr, ptr %vfn117, align 8 + %call118 = tail call noundef ptr %21(ptr noundef nonnull align 8 dereferenceable(8) %img) %call119 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPKv(ptr noundef nonnull align 8 dereferenceable(8) %call115, ptr noundef %call118) %call120 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call119, ptr noundef nonnull @.str.2) %call121 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.4) %vtable122 = load ptr, ptr %img, align 8 %vfn123 = getelementptr inbounds i8, ptr %vtable122, i64 56 - %26 = load ptr, ptr %vfn123, align 8 - %call124 = tail call noundef i64 %26(ptr noundef nonnull align 8 dereferenceable(8) %img) + %22 = load ptr, ptr %vfn123, align 8 + %call124 = tail call noundef i64 %22(ptr noundef nonnull align 8 dereferenceable(8) %img) %call125 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %call121, i64 noundef %call124) %call126 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call125, ptr noundef nonnull @.str.2) %call127 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.5) %vtable128 = load ptr, ptr %img, align 8 %vfn129 = getelementptr inbounds i8, ptr %vtable128, i64 64 - %27 = load ptr, ptr %vfn129, align 8 - %call130 = tail call noundef i64 %27(ptr noundef nonnull align 8 dereferenceable(8) %img) + %23 = load ptr, ptr %vfn129, align 8 + %call130 = tail call noundef i64 %23(ptr noundef nonnull align 8 dereferenceable(8) %img) %call131 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %call127, i64 noundef %call130) - %call132 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call131, ptr noundef nonnull @.str.2) - %call133 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.8) - %vtable134 = load ptr, ptr %img, align 8 - %vfn135 = getelementptr inbounds i8, ptr %vtable134, i64 72 - %28 = load ptr, ptr %vfn135, align 8 - %call136 = tail call noundef i64 %28(ptr noundef nonnull align 8 dereferenceable(8) %img) - %call137 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %call133, i64 noundef %call136) - %call138 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call137, ptr noundef nonnull @.str.2) - %call139 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.9) - %vtable140 = load ptr, ptr %img, align 8 - %vfn141 = getelementptr inbounds i8, ptr %vtable140, i64 80 - %29 = load ptr, ptr %vfn141, align 8 - %call142 = tail call noundef i64 %29(ptr noundef nonnull align 8 dereferenceable(8) %img) - %call143 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %call139, i64 noundef %call142) br label %if.end146 if.end146: ; preds = %if.then44, %if.else95, %if.then - %call92.sink = phi ptr [ %call92, %if.then44 ], [ %call143, %if.else95 ], [ %call37, %if.then ] - %call93 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call92.sink, ptr noundef nonnull @.str.10) + %call80.sink = phi ptr [ %call80, %if.then44 ], [ %call131, %if.else95 ], [ %call25, %if.then ] + %.sink64 = phi ptr [ %11, %if.then44 ], [ %img, %if.else95 ], [ %0, %if.then ] + %call81 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call80.sink, ptr noundef nonnull @.str.2) + %call82 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.8) + %vtable83 = load ptr, ptr %.sink64, align 8 + %vfn84 = getelementptr inbounds i8, ptr %vtable83, i64 72 + %24 = load ptr, ptr %vfn84, align 8 + %call85 = tail call noundef i64 %24(ptr noundef nonnull align 8 dereferenceable(8) %.sink64) + %call86 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %call82, i64 noundef %call85) + %call87 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call86, ptr noundef nonnull @.str.2) + %call88 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.9) + %vtable89 = load ptr, ptr %.sink64, align 8 + %vfn90 = getelementptr inbounds i8, ptr %vtable89, i64 80 + %25 = load ptr, ptr %vfn90, align 8 + %call91 = tail call noundef i64 %25(ptr noundef nonnull align 8 dereferenceable(8) %.sink64) + %call92 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %call88, i64 noundef %call91) + %call93 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call92, ptr noundef nonnull @.str.10) %call94 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.11) ret ptr %os } diff --git a/bench/ockam-rs/optimized/40iecfzh8kpu4oof.ll b/bench/ockam-rs/optimized/40iecfzh8kpu4oof.ll index 517541ddaf4..75435c29bab 100644 --- a/bench/ockam-rs/optimized/40iecfzh8kpu4oof.ll +++ b/bench/ockam-rs/optimized/40iecfzh8kpu4oof.ll @@ -31616,32 +31616,31 @@ define hidden void @"_ZN112_$LT$ockam_vault..types..signatures..EdDSACurve25519S tail call void @llvm.experimental.noalias.scope.decl(metadata !3325) %5 = load i8, ptr %4, align 8, !range !500, !alias.scope !3328, !noalias !3325, !noundef !4 %trunc.i = trunc nuw i8 %5 to i1 - br i1 %trunc.i, label %9, label %6 + br i1 %trunc.i, label %8, label %6 6: ; preds = %3 %7 = getelementptr inbounds i8, ptr %4, i64 1 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4, ptr noundef nonnull align 1 dereferenceable(64) %7, i64 64, i1 false), !alias.scope !3330 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4, i64 64, i1 false) - call void @llvm.lifetime.end.p0(i64 71, ptr nonnull %.sroa.4) - %8 = getelementptr inbounds i8, ptr %0, i64 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %8, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6, i64 64, i1 false) - br label %12 + br label %10 -9: ; preds = %3 - %10 = getelementptr inbounds i8, ptr %4, i64 8 +8: ; preds = %3 + %9 = getelementptr inbounds i8, ptr %4, i64 8 %.sroa.4.8..sroa_idx9 = getelementptr inbounds i8, ptr %.sroa.4, i64 7 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4.8..sroa_idx9, ptr noundef nonnull align 8 dereferenceable(64) %10, i64 64, i1 false), !alias.scope !3330 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4.8..sroa_idx9, ptr noundef nonnull align 8 dereferenceable(64) %9, i64 64, i1 false), !alias.scope !3330 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %4) %.sroa.6.8..sroa_idx = getelementptr inbounds i8, ptr %.sroa.6, i64 7 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6.8..sroa_idx, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4.8..sroa_idx9, i64 64, i1 false) - call void @llvm.lifetime.end.p0(i64 71, ptr nonnull %.sroa.4) - %11 = getelementptr inbounds i8, ptr %0, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %11, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6.8..sroa_idx, i64 64, i1 false) - br label %12 + br label %10 -12: ; preds = %9, %6 - %.sink = phi i8 [ 1, %9 ], [ 0, %6 ] +10: ; preds = %8, %6 + %.sink17 = phi i64 [ 8, %8 ], [ 1, %6 ] + %.sroa.6.8..sroa_idx.sink = phi ptr [ %.sroa.6.8..sroa_idx, %8 ], [ %.sroa.6, %6 ] + %.sink = phi i8 [ 1, %8 ], [ 0, %6 ] + call void @llvm.lifetime.end.p0(i64 71, ptr nonnull %.sroa.4) + %11 = getelementptr inbounds i8, ptr %0, i64 %.sink17 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %11, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6.8..sroa_idx.sink, i64 64, i1 false) call void @llvm.lifetime.end.p0(i64 71, ptr nonnull %.sroa.6) store i8 %.sink, ptr %0, align 8 ret void @@ -31659,32 +31658,31 @@ define hidden void @"_ZN117_$LT$ockam_vault..types..signatures..ECDSASHA256Curve tail call void @llvm.experimental.noalias.scope.decl(metadata !3331) %5 = load i8, ptr %4, align 8, !range !500, !alias.scope !3334, !noalias !3331, !noundef !4 %trunc.i = trunc nuw i8 %5 to i1 - br i1 %trunc.i, label %9, label %6 + br i1 %trunc.i, label %8, label %6 6: ; preds = %3 %7 = getelementptr inbounds i8, ptr %4, i64 1 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4, ptr noundef nonnull align 1 dereferenceable(64) %7, i64 64, i1 false), !alias.scope !3336 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4, i64 64, i1 false) - call void @llvm.lifetime.end.p0(i64 71, ptr nonnull %.sroa.4) - %8 = getelementptr inbounds i8, ptr %0, i64 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %8, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6, i64 64, i1 false) - br label %12 + br label %10 -9: ; preds = %3 - %10 = getelementptr inbounds i8, ptr %4, i64 8 +8: ; preds = %3 + %9 = getelementptr inbounds i8, ptr %4, i64 8 %.sroa.4.8..sroa_idx9 = getelementptr inbounds i8, ptr %.sroa.4, i64 7 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4.8..sroa_idx9, ptr noundef nonnull align 8 dereferenceable(64) %10, i64 64, i1 false), !alias.scope !3336 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4.8..sroa_idx9, ptr noundef nonnull align 8 dereferenceable(64) %9, i64 64, i1 false), !alias.scope !3336 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %4) %.sroa.6.8..sroa_idx = getelementptr inbounds i8, ptr %.sroa.6, i64 7 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6.8..sroa_idx, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4.8..sroa_idx9, i64 64, i1 false) - call void @llvm.lifetime.end.p0(i64 71, ptr nonnull %.sroa.4) - %11 = getelementptr inbounds i8, ptr %0, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %11, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6.8..sroa_idx, i64 64, i1 false) - br label %12 + br label %10 -12: ; preds = %9, %6 - %.sink = phi i8 [ 1, %9 ], [ 0, %6 ] +10: ; preds = %8, %6 + %.sink17 = phi i64 [ 8, %8 ], [ 1, %6 ] + %.sroa.6.8..sroa_idx.sink = phi ptr [ %.sroa.6.8..sroa_idx, %8 ], [ %.sroa.6, %6 ] + %.sink = phi i8 [ 1, %8 ], [ 0, %6 ] + call void @llvm.lifetime.end.p0(i64 71, ptr nonnull %.sroa.4) + %11 = getelementptr inbounds i8, ptr %0, i64 %.sink17 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %11, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6.8..sroa_idx.sink, i64 64, i1 false) call void @llvm.lifetime.end.p0(i64 71, ptr nonnull %.sroa.6) store i8 %.sink, ptr %0, align 8 ret void @@ -138448,23 +138446,11 @@ define hidden void @"_ZN4core6option15Option$LT$T$GT$11map_or_else17h05605e2c2f5 define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17hbc92dae1fcd1db6bE.llvm.7150957337258438421"(ptr noalias nocapture noundef writeonly sret({ i8, [71 x i8] }) align 8 dereferenceable(72) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(72) %1) unnamed_addr #10 { %3 = load i8, ptr %1, align 8, !range !500, !noundef !4 %trunc = trunc nuw i8 %3 to i1 - br i1 %trunc, label %7, label %4 - -4: ; preds = %2 - %5 = getelementptr inbounds i8, ptr %1, i64 1 - %6 = getelementptr inbounds i8, ptr %0, i64 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %6, ptr noundef nonnull align 1 dereferenceable(64) %5, i64 64, i1 false) - br label %10 - -7: ; preds = %2 - %8 = getelementptr inbounds i8, ptr %1, i64 8 - %9 = getelementptr inbounds i8, ptr %0, i64 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %9, ptr noundef nonnull align 8 dereferenceable(64) %8, i64 64, i1 false) - br label %10 - -10: ; preds = %4, %7 - %.sink = phi i8 [ 1, %7 ], [ 0, %4 ] - store i8 %.sink, ptr %0, align 8 + %. = select i1 %trunc, i64 8, i64 1 + %4 = getelementptr inbounds i8, ptr %1, i64 %. + %5 = getelementptr inbounds i8, ptr %0, i64 %. + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %5, ptr noundef nonnull align 1 dereferenceable(64) %4, i64 64, i1 false) + store i8 %3, ptr %0, align 8 ret void } @@ -195503,8 +195489,8 @@ define internal fastcc void @"_ZN9ockam_api9cli_state10identities59_$LT$impl$u20 %.sroa.8258.i.i.i.i.i = alloca [3 x i64], align 8 %60 = alloca { { ptr, i64 }, i64 }, align 8 %61 = alloca { i8, [65 x i8] }, align 1 + %.sroa.3336.i.i.i.i.i = alloca [32 x i8], align 1 %.sroa.6.i.i.i.i.i = alloca [3 x i64], align 8 - %.sroa.6248.i.i.i.i.i = alloca [32 x i8], align 1 %.sroa.10.i.i.i.i.i = alloca [3 x i64], align 8 %.sroa.2252.i.i.i.i.i = alloca [32 x i8], align 1 %62 = alloca { i8, [65 x i8] }, align 1 @@ -197111,13 +197097,13 @@ common.ret: ; preds = %1613, %1179, %197, store ptr %.sroa.3240.0.copyload.i.i.i.i.i, ptr %.sroa.9.1..sroa_idx.i.i.i.i.i, align 1, !noalias !25537 %.sroa.11.1..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %62, i64 15 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(51) %.sroa.11.1..sroa_idx.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(51) %.sroa.5.i.i.i.i.i, i64 51, i1 false), !noalias !25537 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %.sroa.6248.i.i.i.i.i) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.10.i.i.i.i.i) %570 = getelementptr inbounds i8, ptr %1, i64 1018 store i8 0, ptr %570, align 2, !noalias !25537 %.sroa.5254.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 1072 %.sroa.5254.0.copyload.i.i.i.i.i = load i64, ptr %.sroa.5254.0..sroa_idx.i.i.i.i.i, align 8, !noalias !25537 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.6.i.i.i.i.i), !noalias !25528 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %.sroa.3336.i.i.i.i.i), !noalias !25537 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.6.i.i.i.i.i), !noalias !25537 %571 = and i64 %.sroa.5254.0.copyload.i.i.i.i.i, -2 %switch.i.i.i.i = icmp eq i64 %571, 2 br i1 %switch.i.i.i.i, label %"_ZN4core6option15Option$LT$T$GT$9unwrap_or17h9ebf51e51a8ac2e3E.exit.i.i.i.i.i", label %572 @@ -197125,23 +197111,23 @@ common.ret: ; preds = %1613, %1179, %197, 572: ; preds = %569 %.sroa.7255.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 1080 %573 = getelementptr inbounds i8, ptr %1, i64 1040 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %.sroa.6248.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %573, i64 32, i1 false), !noalias !25537 br label %"_ZN4core6option15Option$LT$T$GT$9unwrap_or17h9ebf51e51a8ac2e3E.exit.i.i.i.i.i" "_ZN4core6option15Option$LT$T$GT$9unwrap_or17h9ebf51e51a8ac2e3E.exit.i.i.i.i.i": ; preds = %572, %569 - %.sroa.7255.0..sroa_idx.i.sink.i.i.i.i = phi ptr [ %.sroa.7255.0..sroa_idx.i.i.i.i.i, %572 ], [ %.sroa.6.i.i.i.i.i, %569 ] + %.sroa.3336.sink.i.i.i.i.i = phi ptr [ %573, %572 ], [ %.sroa.3336.i.i.i.i.i, %569 ] + %.sroa.6.sink.i.i.i.i.i = phi ptr [ %.sroa.7255.0..sroa_idx.i.i.i.i.i, %572 ], [ %.sroa.6.i.i.i.i.i, %569 ] %.sroa.8.0.i.i.i.i.i = phi i64 [ %.sroa.5254.0.copyload.i.i.i.i.i, %572 ], [ 2, %569 ] %.sroa.0246.0.i.i.i.i.i = phi i8 [ 1, %572 ], [ 0, %569 ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.10.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.7255.0..sroa_idx.i.sink.i.i.i.i, i64 24, i1 false), !noalias !25537 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.6.i.i.i.i.i), !noalias !25528 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %.sroa.2252.i.i.i.i.i, ptr noundef nonnull align 1 dereferenceable(32) %.sroa.6248.i.i.i.i.i, i64 32, i1 false), !noalias !25537 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %.sroa.2252.i.i.i.i.i, ptr noundef nonnull align 1 dereferenceable(32) %.sroa.3336.sink.i.i.i.i.i, i64 32, i1 false), !noalias !25537 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.10.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.6.sink.i.i.i.i.i, i64 24, i1 false), !noalias !25537 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.3336.i.i.i.i.i), !noalias !25537 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.6.i.i.i.i.i), !noalias !25537 %574 = getelementptr inbounds i8, ptr %1, i64 1017 store i8 1, ptr %574, align 1, !noalias !25537 %575 = getelementptr inbounds i8, ptr %1, i64 776 store i64 %.sroa.8.0.i.i.i.i.i, ptr %575, align 8, !noalias !25537 %.sroa.10.40..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 784 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.10.40..sroa_idx.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.10.i.i.i.i.i, i64 24, i1 false), !noalias !25537 - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.6248.i.i.i.i.i) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.10.i.i.i.i.i) call void @llvm.lifetime.start.p0(i64 66, ptr nonnull %61), !noalias !25537 invoke void @"_ZN14ockam_identity6models5utils14change_history165_$LT$impl$u20$core..convert..From$LT$ockam_vault..types..public_keys..VerifyingPublicKey$GT$$u20$for$u20$ockam_identity..models..change_history..PrimaryPublicKey$GT$4from17hde5dddccf1a8ef29E"(ptr noalias nocapture noundef nonnull sret({ i8, [65 x i8] }) align 1 dereferenceable(66) %61, ptr noalias nocapture noundef nonnull align 1 dereferenceable(66) %62) diff --git a/bench/ockam-rs/optimized/gotvfwvqrrp4xgl.ll b/bench/ockam-rs/optimized/gotvfwvqrrp4xgl.ll index 572c9a29ca0..c238ce1bd24 100644 --- a/bench/ockam-rs/optimized/gotvfwvqrrp4xgl.ll +++ b/bench/ockam-rs/optimized/gotvfwvqrrp4xgl.ll @@ -8751,32 +8751,31 @@ define hidden void @"_ZN112_$LT$ockam_vault..types..signatures..EdDSACurve25519S tail call void @llvm.experimental.noalias.scope.decl(metadata !1160) %5 = load i8, ptr %4, align 8, !range !667, !alias.scope !1163, !noalias !1160, !noundef !4 %trunc.i = trunc nuw i8 %5 to i1 - br i1 %trunc.i, label %9, label %6 + br i1 %trunc.i, label %8, label %6 6: ; preds = %3 %7 = getelementptr inbounds i8, ptr %4, i64 1 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4, ptr noundef nonnull align 1 dereferenceable(64) %7, i64 64, i1 false), !alias.scope !1165 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4, i64 64, i1 false) - call void @llvm.lifetime.end.p0(i64 71, ptr nonnull %.sroa.4) - %8 = getelementptr inbounds i8, ptr %0, i64 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %8, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6, i64 64, i1 false) - br label %12 + br label %10 -9: ; preds = %3 - %10 = getelementptr inbounds i8, ptr %4, i64 8 +8: ; preds = %3 + %9 = getelementptr inbounds i8, ptr %4, i64 8 %.sroa.4.8..sroa_idx9 = getelementptr inbounds i8, ptr %.sroa.4, i64 7 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4.8..sroa_idx9, ptr noundef nonnull align 8 dereferenceable(64) %10, i64 64, i1 false), !alias.scope !1165 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4.8..sroa_idx9, ptr noundef nonnull align 8 dereferenceable(64) %9, i64 64, i1 false), !alias.scope !1165 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %4) %.sroa.6.8..sroa_idx = getelementptr inbounds i8, ptr %.sroa.6, i64 7 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6.8..sroa_idx, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4.8..sroa_idx9, i64 64, i1 false) - call void @llvm.lifetime.end.p0(i64 71, ptr nonnull %.sroa.4) - %11 = getelementptr inbounds i8, ptr %0, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %11, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6.8..sroa_idx, i64 64, i1 false) - br label %12 + br label %10 -12: ; preds = %9, %6 - %.sink = phi i8 [ 1, %9 ], [ 0, %6 ] +10: ; preds = %8, %6 + %.sink17 = phi i64 [ 8, %8 ], [ 1, %6 ] + %.sroa.6.8..sroa_idx.sink = phi ptr [ %.sroa.6.8..sroa_idx, %8 ], [ %.sroa.6, %6 ] + %.sink = phi i8 [ 1, %8 ], [ 0, %6 ] + call void @llvm.lifetime.end.p0(i64 71, ptr nonnull %.sroa.4) + %11 = getelementptr inbounds i8, ptr %0, i64 %.sink17 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %11, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6.8..sroa_idx.sink, i64 64, i1 false) call void @llvm.lifetime.end.p0(i64 71, ptr nonnull %.sroa.6) store i8 %.sink, ptr %0, align 8 ret void @@ -8794,32 +8793,31 @@ define hidden void @"_ZN117_$LT$ockam_vault..types..signatures..ECDSASHA256Curve tail call void @llvm.experimental.noalias.scope.decl(metadata !1166) %5 = load i8, ptr %4, align 8, !range !667, !alias.scope !1169, !noalias !1166, !noundef !4 %trunc.i = trunc nuw i8 %5 to i1 - br i1 %trunc.i, label %9, label %6 + br i1 %trunc.i, label %8, label %6 6: ; preds = %3 %7 = getelementptr inbounds i8, ptr %4, i64 1 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4, ptr noundef nonnull align 1 dereferenceable(64) %7, i64 64, i1 false), !alias.scope !1171 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4, i64 64, i1 false) - call void @llvm.lifetime.end.p0(i64 71, ptr nonnull %.sroa.4) - %8 = getelementptr inbounds i8, ptr %0, i64 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %8, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6, i64 64, i1 false) - br label %12 + br label %10 -9: ; preds = %3 - %10 = getelementptr inbounds i8, ptr %4, i64 8 +8: ; preds = %3 + %9 = getelementptr inbounds i8, ptr %4, i64 8 %.sroa.4.8..sroa_idx9 = getelementptr inbounds i8, ptr %.sroa.4, i64 7 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4.8..sroa_idx9, ptr noundef nonnull align 8 dereferenceable(64) %10, i64 64, i1 false), !alias.scope !1171 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4.8..sroa_idx9, ptr noundef nonnull align 8 dereferenceable(64) %9, i64 64, i1 false), !alias.scope !1171 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %4) %.sroa.6.8..sroa_idx = getelementptr inbounds i8, ptr %.sroa.6, i64 7 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6.8..sroa_idx, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.4.8..sroa_idx9, i64 64, i1 false) - call void @llvm.lifetime.end.p0(i64 71, ptr nonnull %.sroa.4) - %11 = getelementptr inbounds i8, ptr %0, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %11, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6.8..sroa_idx, i64 64, i1 false) - br label %12 + br label %10 -12: ; preds = %9, %6 - %.sink = phi i8 [ 1, %9 ], [ 0, %6 ] +10: ; preds = %8, %6 + %.sink17 = phi i64 [ 8, %8 ], [ 1, %6 ] + %.sroa.6.8..sroa_idx.sink = phi ptr [ %.sroa.6.8..sroa_idx, %8 ], [ %.sroa.6, %6 ] + %.sink = phi i8 [ 1, %8 ], [ 0, %6 ] + call void @llvm.lifetime.end.p0(i64 71, ptr nonnull %.sroa.4) + %11 = getelementptr inbounds i8, ptr %0, i64 %.sink17 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %11, ptr noundef nonnull align 1 dereferenceable(64) %.sroa.6.8..sroa_idx.sink, i64 64, i1 false) call void @llvm.lifetime.end.p0(i64 71, ptr nonnull %.sroa.6) store i8 %.sink, ptr %0, align 8 ret void @@ -75330,23 +75328,11 @@ define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17h81d0fa0bb28c3bce define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17hed2e6f2067bac699E.llvm.12634899616595775615"(ptr noalias nocapture noundef writeonly sret({ i8, [71 x i8] }) align 8 dereferenceable(72) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(72) %1) unnamed_addr #2 { %3 = load i8, ptr %1, align 8, !range !667, !noundef !4 %trunc = trunc nuw i8 %3 to i1 - br i1 %trunc, label %7, label %4 - -4: ; preds = %2 - %5 = getelementptr inbounds i8, ptr %1, i64 1 - %6 = getelementptr inbounds i8, ptr %0, i64 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %6, ptr noundef nonnull align 1 dereferenceable(64) %5, i64 64, i1 false) - br label %10 - -7: ; preds = %2 - %8 = getelementptr inbounds i8, ptr %1, i64 8 - %9 = getelementptr inbounds i8, ptr %0, i64 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %9, ptr noundef nonnull align 8 dereferenceable(64) %8, i64 64, i1 false) - br label %10 - -10: ; preds = %4, %7 - %.sink = phi i8 [ 1, %7 ], [ 0, %4 ] - store i8 %.sink, ptr %0, align 8 + %. = select i1 %trunc, i64 8, i64 1 + %4 = getelementptr inbounds i8, ptr %1, i64 %. + %5 = getelementptr inbounds i8, ptr %0, i64 %. + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %5, ptr noundef nonnull align 1 dereferenceable(64) %4, i64 64, i1 false) + store i8 %3, ptr %0, align 8 ret void } diff --git a/bench/oiio/optimized/tiffinput.cpp.ll b/bench/oiio/optimized/tiffinput.cpp.ll index cb46f835614..318a9078099 100644 --- a/bench/oiio/optimized/tiffinput.cpp.ll +++ b/bench/oiio/optimized/tiffinput.cpp.ll @@ -6771,21 +6771,23 @@ while.cond.preheader.lr.ph.split: ; preds = %while.cond.preheade while.cond.preheader.us53.preheader: ; preds = %while.cond.preheader.lr.ph.split %2 = shl nuw i32 %n, 1 %3 = zext i32 %2 to i64 - tail call void @llvm.memset.p0.i64(ptr align 2 %out, i8 0, i64 %3, i1 false) - br label %for.end + br label %for.end.sink.split while.cond.preheader.us44.preheader: ; preds = %while.cond.preheader.lr.ph.split %4 = zext nneg i32 %n to i64 - tail call void @llvm.memset.p0.i64(ptr align 1 %out, i8 0, i64 %4, i1 false) - br label %for.end + br label %for.end.sink.split while.cond.preheader.preheader: ; preds = %while.cond.preheader.lr.ph.split %5 = zext nneg i32 %n to i64 %6 = shl nuw nsw i64 %5, 2 - tail call void @llvm.memset.p0.i64(ptr align 4 %out, i8 0, i64 %6, i1 false) + br label %for.end.sink.split + +for.end.sink.split: ; preds = %while.cond.preheader.preheader, %while.cond.preheader.us44.preheader, %while.cond.preheader.us53.preheader + %.sink = phi i64 [ %3, %while.cond.preheader.us53.preheader ], [ %4, %while.cond.preheader.us44.preheader ], [ %6, %while.cond.preheader.preheader ] + tail call void @llvm.memset.p0.i64(ptr align 1 %out, i8 0, i64 %.sink, i1 false) br label %for.end -for.end: ; preds = %for.inc.us, %while.cond.preheader.us53.preheader, %while.cond.preheader.us44.preheader, %while.cond.preheader.preheader, %entry +for.end: ; preds = %for.inc.us, %for.end.sink.split, %entry ret void } @@ -7694,7 +7696,7 @@ while.cond.while.end_crit_edge.us.i152: ; preds = %if.end.us.i138, %if while.cond.preheader.lr.ph.split.i123: ; preds = %while.cond.preheader.lr.ph.i118 %115 = shl nuw i32 %cond264, 1 %116 = zext i32 %115 to i64 - call void @llvm.memset.p0.i64(ptr align 2 %cond283, i8 0, i64 %116, i1 false) + call void @llvm.memset.p0.i64(ptr align 1 %cond283, i8 0, i64 %116, i1 false) br label %_ZN18OpenImageIO_v2_6_09TIFFInput11bit_convertEiPKhiPvi.exit172 _ZN18OpenImageIO_v2_6_09TIFFInput11bit_convertEiPKhiPvi.exit172: ; preds = %while.cond.while.end_crit_edge.us.i152, %for.body256, %while.cond.preheader.lr.ph.split.i123 @@ -7828,7 +7830,7 @@ while.cond.while.end_crit_edge.us.i214: ; preds = %if.end.us.i200, %if while.cond.preheader.lr.ph.split.i185: ; preds = %while.cond.preheader.lr.ph.i180 %133 = shl nuw nsw i64 %129, 2 - call void @llvm.memset.p0.i64(ptr align 4 %cond330, i8 0, i64 %133, i1 false) + call void @llvm.memset.p0.i64(ptr align 1 %cond330, i8 0, i64 %133, i1 false) br label %_ZN18OpenImageIO_v2_6_09TIFFInput11bit_convertEiPKhiPvi.exit234 _ZN18OpenImageIO_v2_6_09TIFFInput11bit_convertEiPKhiPvi.exit234: ; preds = %while.cond.while.end_crit_edge.us.i214, %for.body303, %while.cond.preheader.lr.ph.split.i185 @@ -10442,7 +10444,7 @@ while.cond.while.end_crit_edge.us.i120: ; preds = %if.end.us.i106, %if while.cond.preheader.lr.ph.split.i91: ; preds = %while.cond.preheader.lr.ph.i86 %73 = shl i64 %cond221, 1 %74 = and i64 %73, 4294967294 - tail call void @llvm.memset.p0.i64(ptr align 2 %cond240, i8 0, i64 %74, i1 false) + tail call void @llvm.memset.p0.i64(ptr align 1 %cond240, i8 0, i64 %74, i1 false) br label %_ZN18OpenImageIO_v2_6_09TIFFInput11bit_convertEiPKhiPvi.exit140 _ZN18OpenImageIO_v2_6_09TIFFInput11bit_convertEiPKhiPvi.exit140: ; preds = %while.cond.while.end_crit_edge.us.i120, %for.body215, %while.cond.preheader.lr.ph.split.i91 diff --git a/bench/oniguruma/optimized/st.ll b/bench/oniguruma/optimized/st.ll index 9e2df23ea57..05003835b4f 100644 --- a/bench/oniguruma/optimized/st.ll +++ b/bench/oniguruma/optimized/st.ll @@ -714,7 +714,7 @@ define noalias noundef ptr @onig_st_copy(ptr nocapture noundef readonly %0) loca %9 = getelementptr inbounds i8, ptr %4, i64 16 store ptr %8, ptr %9, align 8 %10 = icmp eq ptr %8, null - br i1 %10, label %14, label %.preheader + br i1 %10, label %.loopexit.sink.split, label %.preheader .preheader: ; preds = %6 %11 = icmp sgt i32 %3, 0 @@ -723,50 +723,49 @@ define noalias noundef ptr @onig_st_copy(ptr nocapture noundef readonly %0) loca .lr.ph37: ; preds = %.preheader %12 = getelementptr inbounds i8, ptr %0, i64 16 %13 = load ptr, ptr %12, align 8 - br label %15 + br label %14 -14: ; preds = %6 - tail call void @free(ptr noundef nonnull %4) #13 - br label %.loopexit - -15: ; preds = %.lr.ph37, %._crit_edge +14: ; preds = %.lr.ph37, %._crit_edge %indvars.iv = phi i64 [ 0, %.lr.ph37 ], [ %indvars.iv.next, %._crit_edge ] - %16 = getelementptr inbounds ptr, ptr %8, i64 %indvars.iv - store ptr null, ptr %16, align 8 - %17 = getelementptr inbounds ptr, ptr %13, i64 %indvars.iv - %.03033 = load ptr, ptr %17, align 8 + %15 = getelementptr inbounds ptr, ptr %8, i64 %indvars.iv + store ptr null, ptr %15, align 8 + %16 = getelementptr inbounds ptr, ptr %13, i64 %indvars.iv + %.03033 = load ptr, ptr %16, align 8 %.not34 = icmp eq ptr %.03033, null br i1 %.not34, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %15, %22 - %18 = phi ptr [ %19, %22 ], [ null, %15 ] - %.03035 = phi ptr [ %.030, %22 ], [ %.03033, %15 ] - %19 = tail call noalias dereferenceable_or_null(32) ptr @malloc(i64 noundef 32) #11 - %20 = icmp eq ptr %19, null - br i1 %20, label %21, label %22 +.lr.ph: ; preds = %14, %21 + %17 = phi ptr [ %18, %21 ], [ null, %14 ] + %.03035 = phi ptr [ %.030, %21 ], [ %.03033, %14 ] + %18 = tail call noalias dereferenceable_or_null(32) ptr @malloc(i64 noundef 32) #11 + %19 = icmp eq ptr %18, null + br i1 %19, label %20, label %21 -21: ; preds = %.lr.ph +20: ; preds = %.lr.ph tail call void @free(ptr noundef nonnull %8) #13 - tail call void @free(ptr noundef %4) #13 - br label %.loopexit + br label %.loopexit.sink.split -22: ; preds = %.lr.ph - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %.03035, i64 24, i1 false) - %23 = getelementptr inbounds i8, ptr %19, i64 24 - store ptr %18, ptr %23, align 8 - store ptr %19, ptr %16, align 8 - %24 = getelementptr inbounds i8, ptr %.03035, i64 24 - %.030 = load ptr, ptr %24, align 8 +21: ; preds = %.lr.ph + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(32) %.03035, i64 24, i1 false) + %22 = getelementptr inbounds i8, ptr %18, i64 24 + store ptr %17, ptr %22, align 8 + store ptr %18, ptr %15, align 8 + %23 = getelementptr inbounds i8, ptr %.03035, i64 24 + %.030 = load ptr, ptr %23, align 8 %.not = icmp eq ptr %.030, null br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !12 -._crit_edge: ; preds = %22, %15 +._crit_edge: ; preds = %21, %14 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %7 - br i1 %exitcond.not, label %.loopexit, label %15, !llvm.loop !13 + br i1 %exitcond.not, label %.loopexit, label %14, !llvm.loop !13 + +.loopexit.sink.split: ; preds = %6, %20 + tail call void @free(ptr noundef %4) #13 + br label %.loopexit -.loopexit: ; preds = %._crit_edge, %.preheader, %1, %21, %14 - %.0 = phi ptr [ null, %14 ], [ null, %21 ], [ null, %1 ], [ %4, %.preheader ], [ %4, %._crit_edge ] +.loopexit: ; preds = %._crit_edge, %.loopexit.sink.split, %.preheader, %1 + %.0 = phi ptr [ null, %1 ], [ %4, %.preheader ], [ null, %.loopexit.sink.split ], [ %4, %._crit_edge ] ret ptr %.0 } diff --git a/bench/opencv/optimized/ts_gtest.cpp.ll b/bench/opencv/optimized/ts_gtest.cpp.ll index 986fa3683e2..dde2316919f 100644 --- a/bench/opencv/optimized/ts_gtest.cpp.ll +++ b/bench/opencv/optimized/ts_gtest.cpp.ll @@ -57678,10 +57678,6 @@ define internal fastcc void @_ZN7testing8internalL17LoadFlagsFromFileERKNSt7__cx %.not = icmp eq ptr %5, null br i1 %.not, label %6, label %.split -.split: ; preds = %0 - call void @_ZN7testing8internal14ReadEntireFileB5cxx11EP8_IO_FILE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %2, ptr noundef nonnull %5) - br label %14 - 6: ; preds = %0 call void @_ZN7testing8internal8GTestLogC1ENS0_16GTestLogSeverityEPKci(ptr noundef nonnull align 4 dereferenceable(4) %1, i32 noundef 3, ptr noundef nonnull @.str.56, i32 noundef 7320) %7 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.413) @@ -57697,102 +57693,103 @@ define internal fastcc void @_ZN7testing8internalL17LoadFlagsFromFileERKNSt7__cx .split13: ; preds = %10 call void @_ZN7testing8internal8GTestLogD1Ev(ptr noundef nonnull align 4 dereferenceable(4) %1) #50 - call void @_ZN7testing8internal14ReadEntireFileB5cxx11EP8_IO_FILE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %2, ptr noundef null) - br label %14 + br label %.split 12: ; preds = %10, %8, %6 %13 = landingpad { ptr, i32 } cleanup call void @_ZN7testing8internal8GTestLogD1Ev(ptr noundef nonnull align 4 dereferenceable(4) %1) #50 - br label %39 + br label %38 -14: ; preds = %.split13, %.split - %15 = call noundef i32 @fclose(ptr noundef %5) +.split: ; preds = %0, %.split13 + %.sink = phi ptr [ null, %.split13 ], [ %5, %0 ] + call void @_ZN7testing8internal14ReadEntireFileB5cxx11EP8_IO_FILE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %2, ptr noundef %.sink) + %14 = call noundef i32 @fclose(ptr noundef %5) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %3, i8 0, i64 24, i1 false) invoke void @_ZN7testing8internal11SplitStringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcPSt6vectorIS6_SaIS6_EE(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 noundef signext 10, ptr noundef nonnull %3) to label %.preheader unwind label %.loopexit.split-lp -.preheader: ; preds = %14 - %16 = getelementptr inbounds i8, ptr %3, i64 8 - %17 = load ptr, ptr %16, align 8 - %18 = load ptr, ptr %3, align 8 - %.not6 = icmp eq ptr %17, %18 +.preheader: ; preds = %.split + %15 = getelementptr inbounds i8, ptr %3, i64 8 + %16 = load ptr, ptr %15, align 8 + %17 = load ptr, ptr %3, align 8 + %.not6 = icmp eq ptr %16, %17 br i1 %.not6, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.preheader, %29 - %19 = phi ptr [ %.pre, %29 ], [ %18, %.preheader ] - %.04 = phi i64 [ %30, %29 ], [ 0, %.preheader ] - %20 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %19, i64 %.04 - %21 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %20) #50 +.lr.ph: ; preds = %.preheader, %28 + %18 = phi ptr [ %.pre, %28 ], [ %17, %.preheader ] + %.04 = phi i64 [ %29, %28 ], [ 0, %.preheader ] + %19 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %18, i64 %.04 + %20 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %19) #50 %.pre = load ptr, ptr %3, align 8 - br i1 %21, label %29, label %23 + br i1 %20, label %28, label %22 -.loopexit: ; preds = %23 +.loopexit: ; preds = %22 %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %22 + br label %21 -.loopexit.split-lp: ; preds = %14 +.loopexit.split-lp: ; preds = %.split %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %22 + br label %21 -22: ; preds = %.loopexit.split-lp, %.loopexit +21: ; preds = %.loopexit.split-lp, %.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #50 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #50 - br label %39 + br label %38 -23: ; preds = %.lr.ph - %24 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %.pre, i64 %.04 - %25 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %24) #50 - %26 = invoke fastcc noundef zeroext i1 @_ZN7testing8internalL19ParseGoogleTestFlagEPKc(ptr noundef %25) - to label %27 unwind label %.loopexit +22: ; preds = %.lr.ph + %23 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %.pre, i64 %.04 + %24 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %23) #50 + %25 = invoke fastcc noundef zeroext i1 @_ZN7testing8internalL19ParseGoogleTestFlagEPKc(ptr noundef %24) + to label %26 unwind label %.loopexit -27: ; preds = %23 - br i1 %26, label %29, label %28 +26: ; preds = %22 + br i1 %25, label %28, label %27 -28: ; preds = %27 +27: ; preds = %26 store i8 1, ptr @_ZN7testing8internal11g_help_flagE, align 1 - br label %29 + br label %28 -29: ; preds = %27, %28, %.lr.ph - %30 = add nuw i64 %.04, 1 - %31 = load ptr, ptr %16, align 8 - %32 = ptrtoint ptr %31 to i64 - %33 = ptrtoint ptr %.pre to i64 - %34 = sub i64 %32, %33 - %35 = ashr exact i64 %34, 5 - %36 = icmp ult i64 %30, %35 - br i1 %36, label %.lr.ph, label %._crit_edge, !llvm.loop !1140 +28: ; preds = %26, %27, %.lr.ph + %29 = add nuw i64 %.04, 1 + %30 = load ptr, ptr %15, align 8 + %31 = ptrtoint ptr %30 to i64 + %32 = ptrtoint ptr %.pre to i64 + %33 = sub i64 %31, %32 + %34 = ashr exact i64 %33, 5 + %35 = icmp ult i64 %29, %34 + br i1 %35, label %.lr.ph, label %._crit_edge, !llvm.loop !1140 -._crit_edge: ; preds = %29, %.preheader - %.lcssa2 = phi ptr [ %17, %.preheader ], [ %31, %29 ] - %.pr.i = phi ptr [ %18, %.preheader ], [ %.pre, %29 ] +._crit_edge: ; preds = %28, %.preheader + %.lcssa2 = phi ptr [ %16, %.preheader ], [ %30, %28 ] + %.pr.i = phi ptr [ %17, %.preheader ], [ %.pre, %28 ] %.not4.i.i.i.i = icmp eq ptr %.pr.i, %.lcssa2 br i1 %.not4.i.i.i.i, label %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i, label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %._crit_edge, %.lr.ph.i.i.i.i - %.05.i.i.i.i = phi ptr [ %37, %.lr.ph.i.i.i.i ], [ %.pr.i, %._crit_edge ] + %.05.i.i.i.i = phi ptr [ %36, %.lr.ph.i.i.i.i ], [ %.pr.i, %._crit_edge ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.05.i.i.i.i) #50 - %37 = getelementptr inbounds i8, ptr %.05.i.i.i.i, i64 32 - %.not.i.i.i.i = icmp eq ptr %37, %.lcssa2 + %36 = getelementptr inbounds i8, ptr %.05.i.i.i.i, i64 32 + %.not.i.i.i.i = icmp eq ptr %36, %.lcssa2 br i1 %.not.i.i.i.i, label %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i, label %.lr.ph.i.i.i.i, !llvm.loop !20 _ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i: ; preds = %.lr.ph.i.i.i.i, %._crit_edge %.not.i.i.i = icmp eq ptr %.pr.i, null - br i1 %.not.i.i.i, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit, label %38 + br i1 %.not.i.i.i, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit, label %37 -38: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i +37: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i call void @_ZdlPv(ptr noundef nonnull %.pr.i) #52 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i, %38 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i, %37 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #50 ret void -39: ; preds = %22, %12 - %.pn.pn = phi { ptr, i32 } [ %lpad.phi, %22 ], [ %13, %12 ] +38: ; preds = %21, %12 + %.pn.pn = phi { ptr, i32 } [ %lpad.phi, %21 ], [ %13, %12 ] resume { ptr, i32 } %.pn.pn } diff --git a/bench/openexr/optimized/ImfScanLineInputFile.cpp.ll b/bench/openexr/optimized/ImfScanLineInputFile.cpp.ll index 042c3b928b4..8b1a29fb221 100644 --- a/bench/openexr/optimized/ImfScanLineInputFile.cpp.ll +++ b/bench/openexr/optimized/ImfScanLineInputFile.cpp.ll @@ -4789,46 +4789,39 @@ if.end60: ; preds = %_ZN9Imath_3_24modpE %sub.ptr.rhs.cast.i = ptrtoint ptr %optimizationData.val to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 56 - %cmp71 = icmp ugt i64 %sub.ptr.div.i, 4 - br i1 %cmp71, label %if.then72, label %if.else74 - -if.then72: ; preds = %if.end60 - call fastcc void @_ZNK7Imf_3_212_GLOBAL__N_117LineBufferTaskIIF15getWritePointerIN9Imath_3_24halfEEEviRPtRmS7_i(ptr noundef nonnull readonly align 8 dereferenceable(48) %this, i32 noundef %y.041, ptr noundef nonnull align 8 dereferenceable(8) %writePtrRight, ptr noundef nonnull align 8 dereferenceable(8) %pixelsToCopySSE, ptr noundef nonnull align 8 dereferenceable(8) %pixelsToCopyNormal, i32 noundef 0) + %cmp71 = icmp ult i64 %sub.ptr.div.i, 5 + call fastcc void @_ZNK7Imf_3_212_GLOBAL__N_117LineBufferTaskIIF15getWritePointerIN9Imath_3_24halfEEEviRPtRmS7_i(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef %y.041, ptr noundef nonnull align 8 dereferenceable(8) %writePtrRight, ptr noundef nonnull align 8 dereferenceable(8) %pixelsToCopySSE, ptr noundef nonnull align 8 dereferenceable(8) %pixelsToCopyNormal, i32 noundef 0) %38 = load ptr, ptr %writePtrRight, align 8 %tobool.not.i = icmp eq ptr %38, null - br i1 %tobool.not.i, label %if.end76, label %if.end76.thread + %brmerge = select i1 %cmp71, i1 true, i1 %tobool.not.i + br i1 %brmerge, label %if.end76, label %if.end76.thread -if.end76.thread: ; preds = %if.then72 +if.end76.thread: ; preds = %if.end60 call fastcc void @_ZNK7Imf_3_212_GLOBAL__N_117LineBufferTaskIIF15getWritePointerIN9Imath_3_24halfEEEviRPtRmS7_i(ptr noundef nonnull readonly align 8 dereferenceable(48) %this, i32 noundef %y.041, ptr noundef nonnull align 8 dereferenceable(8) %writePtrLeft, ptr noundef nonnull align 8 dereferenceable(8) %pixelsToCopySSE, ptr noundef nonnull align 8 dereferenceable(8) %pixelsToCopyNormal, i32 noundef 1) %39 = load i64, ptr %pixelsToCopySSE, align 8 %40 = load i64, ptr %pixelsToCopyNormal, align 8 br label %for.cond85.preheader -if.else74: ; preds = %if.end60 - call fastcc void @_ZNK7Imf_3_212_GLOBAL__N_117LineBufferTaskIIF15getWritePointerIN9Imath_3_24halfEEEviRPtRmS7_i(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef %y.041, ptr noundef nonnull align 8 dereferenceable(8) %writePtrRight, ptr noundef nonnull align 8 dereferenceable(8) %pixelsToCopySSE, ptr noundef nonnull align 8 dereferenceable(8) %pixelsToCopyNormal, i32 noundef 0) - %.pre = load ptr, ptr %writePtrRight, align 8 - %41 = icmp eq ptr %.pre, null - br label %if.end76 - -if.end76: ; preds = %if.then72, %if.else74 - %cmp77 = phi i1 [ true, %if.then72 ], [ %41, %if.else74 ] - %42 = load i64, ptr %pixelsToCopySSE, align 8 - %cmp79 = icmp eq i64 %42, 0 - %or.cond = select i1 %cmp77, i1 %cmp79, i1 false - %43 = load i64, ptr %pixelsToCopyNormal, align 8 - %cmp81 = icmp eq i64 %43, 0 +if.end76: ; preds = %if.end60 + %not.cmp71 = xor i1 %cmp71, true + %tobool.not.i.mux = select i1 %not.cmp71, i1 true, i1 %tobool.not.i + %41 = load i64, ptr %pixelsToCopySSE, align 8 + %cmp79 = icmp eq i64 %41, 0 + %or.cond = select i1 %tobool.not.i.mux, i1 %cmp79, i1 false + %42 = load i64, ptr %pixelsToCopyNormal, align 8 + %cmp81 = icmp eq i64 %42, 0 %or.cond1 = select i1 %or.cond, i1 %cmp81, i1 false br i1 %or.cond1, label %for.inc167, label %for.cond85.preheader for.cond85.preheader: ; preds = %if.end76.thread, %if.end76 - %44 = phi i64 [ %40, %if.end76.thread ], [ %43, %if.end76 ] - %45 = phi i64 [ %39, %if.end76.thread ], [ %42, %if.end76 ] + %43 = phi i64 [ %40, %if.end76.thread ], [ %42, %if.end76 ] + %44 = phi i64 [ %39, %if.end76.thread ], [ %41, %if.end76 ] %cmp8638.not = icmp eq ptr %optimizationData.val26, %optimizationData.val br i1 %cmp8638.not, label %for.end96, label %for.body87.lr.ph for.body87.lr.ph: ; preds = %for.cond85.preheader - %mul = shl i64 %45, 3 - %add91 = add i64 %mul, %44 + %mul = shl i64 %44, 3 + %add91 = add i64 %mul, %43 %umax = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) br label %for.body87 @@ -4836,8 +4829,8 @@ for.body87: ; preds = %for.body87.lr.ph, % %i84.039 = phi i64 [ 0, %for.body87.lr.ph ], [ %inc95, %for.body87 ] %optimizationData89.val = load ptr, ptr %optimizationData, align 8 %offset = getelementptr inbounds %"struct.Imf_3_2::(anonymous namespace)::sliceOptimizationData", ptr %optimizationData89.val, i64 %i84.039, i32 3 - %46 = load i64, ptr %offset, align 8 - %mul92 = mul i64 %46, %add91 + %45 = load i64, ptr %offset, align 8 + %mul92 = mul i64 %45, %add91 %add.ptr93 = getelementptr inbounds i16, ptr %add.ptr, i64 %mul92 %arrayidx = getelementptr inbounds [8 x ptr], ptr %readPointers, i64 0, i64 %i84.039 store ptr %add.ptr93, ptr %arrayidx, align 8 @@ -4873,14 +4866,14 @@ if.else111: ; preds = %for.end96 if.then115: ; preds = %if.else111, %if.else111 %optimizationData117.val = load ptr, ptr %optimizationData, align 8 %fill = getelementptr inbounds i8, ptr %optimizationData117.val, i64 176 - %47 = load i8, ptr %fill, align 8 - %tobool119 = trunc i8 %47 to i1 + %46 = load i8, ptr %fill, align 8 + %tobool119 = trunc i8 %46 to i1 br i1 %tobool119, label %if.then120, label %if.else129 if.then120: ; preds = %if.then115 %fillValue = getelementptr inbounds i8, ptr %optimizationData117.val, i64 178 - %48 = load i16, ptr %fillValue, align 2 - store i16 %48, ptr %ref.tmp, align 2 + %47 = load i16, ptr %fillValue, align 2 + store i16 %47, ptr %ref.tmp, align 2 invoke void @_ZN7Imf_3_225optimizedWriteToRGBAFillAERPtS1_S1_RKtS1_RKmS5_(ptr noundef nonnull align 8 dereferenceable(8) %readPointers, ptr noundef nonnull align 8 dereferenceable(8) %arrayidx101, ptr noundef nonnull align 8 dereferenceable(8) %arrayidx102, ptr noundef nonnull align 2 dereferenceable(2) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %writePtrRight, ptr noundef nonnull align 8 dereferenceable(8) %pixelsToCopySSE, ptr noundef nonnull align 8 dereferenceable(8) %pixelsToCopyNormal) to label %if.end135 unwind label %lpad.loopexit @@ -4892,18 +4885,18 @@ if.end135: ; preds = %if.else129, %if.the br i1 %cmp114, label %if.then137, label %for.inc167 if.then137: ; preds = %if.end135 - %49 = load ptr, ptr %_ifd45, align 8 - %optimizationData139 = getelementptr inbounds i8, ptr %49, i64 336 + %48 = load ptr, ptr %_ifd45, align 8 + %optimizationData139 = getelementptr inbounds i8, ptr %48, i64 336 %optimizationData139.val = load ptr, ptr %optimizationData139, align 8 %fill141 = getelementptr inbounds i8, ptr %optimizationData139.val, i64 400 - %50 = load i8, ptr %fill141, align 8 - %tobool142 = trunc i8 %50 to i1 + %49 = load i8, ptr %fill141, align 8 + %tobool142 = trunc i8 %49 to i1 br i1 %tobool142, label %if.then143, label %if.else154 if.then143: ; preds = %if.then137 %fillValue151 = getelementptr inbounds i8, ptr %optimizationData139.val, i64 402 - %51 = load i16, ptr %fillValue151, align 2 - store i16 %51, ptr %ref.tmp147, align 2 + %50 = load i16, ptr %fillValue151, align 2 + store i16 %50, ptr %ref.tmp147, align 2 invoke void @_ZN7Imf_3_225optimizedWriteToRGBAFillAERPtS1_S1_RKtS1_RKmS5_(ptr noundef nonnull align 8 dereferenceable(8) %arrayidx107, ptr noundef nonnull align 8 dereferenceable(8) %arrayidx108, ptr noundef nonnull align 8 dereferenceable(8) %arrayidx157, ptr noundef nonnull align 2 dereferenceable(2) %ref.tmp147, ptr noundef nonnull align 8 dereferenceable(8) %writePtrLeft, ptr noundef nonnull align 8 dereferenceable(8) %pixelsToCopySSE, ptr noundef nonnull align 8 dereferenceable(8) %pixelsToCopyNormal) to label %for.inc167 unwind label %lpad.loopexit @@ -4921,35 +4914,35 @@ invoke.cont164: ; preds = %if.else162 to label %unreachable unwind label %lpad.loopexit.split-lp lpad163: ; preds = %if.else162 - %52 = landingpad { ptr, i32 } + %51 = landingpad { ptr, i32 } catch ptr @_ZTISt9exception catch ptr null call void @__cxa_free_exception(ptr %exception) #30 br label %catch.dispatch catch.dispatch: ; preds = %lpad.loopexit, %lpad.loopexit.split-lp, %lpad163 - %.pn = phi { ptr, i32 } [ %52, %lpad163 ], [ %lpad.loopexit33, %lpad.loopexit ], [ %lpad.loopexit.split-lp34, %lpad.loopexit.split-lp ] + %.pn = phi { ptr, i32 } [ %51, %lpad163 ], [ %lpad.loopexit33, %lpad.loopexit ], [ %lpad.loopexit.split-lp34, %lpad.loopexit.split-lp ] %exn.slot.0 = extractvalue { ptr, i32 } %.pn, 0 %ehselector.slot.0 = extractvalue { ptr, i32 } %.pn, 1 - %53 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #30 - %matches = icmp eq i32 %ehselector.slot.0, %53 - %54 = call ptr @__cxa_begin_catch(ptr %exn.slot.0) #30 - %55 = load ptr, ptr %_lineBuffer, align 8 - %hasException185 = getelementptr inbounds i8, ptr %55, i64 48 - %56 = load i8, ptr %hasException185, align 8 - %tobool186 = trunc i8 %56 to i1 + %52 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #30 + %matches = icmp eq i32 %ehselector.slot.0, %52 + %53 = call ptr @__cxa_begin_catch(ptr %exn.slot.0) #30 + %54 = load ptr, ptr %_lineBuffer, align 8 + %hasException185 = getelementptr inbounds i8, ptr %54, i64 48 + %55 = load i8, ptr %hasException185, align 8 + %tobool186 = trunc i8 %55 to i1 br i1 %matches, label %catch182, label %catch catch182: ; preds = %catch.dispatch br i1 %tobool186, label %try.cont.sink.split, label %if.then187 if.then187: ; preds = %catch182 - %vtable188 = load ptr, ptr %54, align 8 + %vtable188 = load ptr, ptr %53, align 8 %vfn189 = getelementptr inbounds i8, ptr %vtable188, i64 16 - %57 = load ptr, ptr %vfn189, align 8 - %call190 = call noundef ptr %57(ptr noundef nonnull align 8 dereferenceable(8) %54) #30 - %58 = load ptr, ptr %_lineBuffer, align 8 - %exception192 = getelementptr inbounds i8, ptr %58, i64 56 + %56 = load ptr, ptr %vfn189, align 8 + %call190 = call noundef ptr %56(ptr noundef nonnull align 8 dereferenceable(8) %53) #30 + %57 = load ptr, ptr %_lineBuffer, align 8 + %exception192 = getelementptr inbounds i8, ptr %57, i64 56 %call195 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %exception192, ptr noundef %call190) to label %try.cont.sink.split.sink.split unwind label %lpad193 @@ -4957,7 +4950,7 @@ catch: ; preds = %catch.dispatch br i1 %tobool186, label %try.cont.sink.split, label %if.then172 if.then172: ; preds = %catch - %exception174 = getelementptr inbounds i8, ptr %55, i64 56 + %exception174 = getelementptr inbounds i8, ptr %54, i64 56 %call177 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %exception174, ptr noundef nonnull @.str.21) to label %try.cont.sink.split.sink.split unwind label %lpad175 @@ -4967,20 +4960,20 @@ for.inc167: ; preds = %if.then105, %invoke br i1 %cmp55.not, label %try.cont, label %for.body56, !llvm.loop !41 lpad175: ; preds = %if.then172 - %59 = landingpad { ptr, i32 } + %58 = landingpad { ptr, i32 } cleanup invoke void @__cxa_end_catch() to label %eh.resume unwind label %terminate.lpad lpad193: ; preds = %if.then187 - %60 = landingpad { ptr, i32 } + %59 = landingpad { ptr, i32 } cleanup invoke void @__cxa_end_catch() to label %eh.resume unwind label %terminate.lpad try.cont.sink.split.sink.split: ; preds = %if.then172, %if.then187 - %61 = load ptr, ptr %_lineBuffer, align 8 - %hasException197 = getelementptr inbounds i8, ptr %61, i64 48 + %60 = load ptr, ptr %_lineBuffer, align 8 + %hasException197 = getelementptr inbounds i8, ptr %60, i64 48 store i8 1, ptr %hasException197, align 8 br label %try.cont.sink.split @@ -4992,14 +4985,14 @@ try.cont: ; preds = %for.inc167, %try.co ret void eh.resume: ; preds = %lpad193, %lpad175 - %.pn24 = phi { ptr, i32 } [ %60, %lpad193 ], [ %59, %lpad175 ] + %.pn24 = phi { ptr, i32 } [ %59, %lpad193 ], [ %58, %lpad175 ] resume { ptr, i32 } %.pn24 terminate.lpad: ; preds = %lpad193, %lpad175 - %62 = landingpad { ptr, i32 } + %61 = landingpad { ptr, i32 } catch ptr null - %63 = extractvalue { ptr, i32 } %62, 0 - call void @__clang_call_terminate(ptr %63) #31 + %62 = extractvalue { ptr, i32 } %61, 0 + call void @__clang_call_terminate(ptr %62) #31 unreachable unreachable: ; preds = %invoke.cont164 diff --git a/bench/openjdk/optimized/symtab.ll b/bench/openjdk/optimized/symtab.ll index 1368223c5d8..1323a71dd6a 100644 --- a/bench/openjdk/optimized/symtab.ll +++ b/bench/openjdk/optimized/symtab.ll @@ -461,8 +461,7 @@ build_symtab_from_debug_link.exit: ; preds = %open_file_from_debu 212: ; preds = %209 call void @hdestroy_r(ptr noundef nonnull %211) #14 %213 = load ptr, ptr %210, align 8 - call void @free(ptr noundef %213) #14 - br label %.preheader.sink.split + br label %.preheader.sink.split.sink.split 214: ; preds = %68 call void @free(ptr noundef nonnull %66) #14 @@ -470,12 +469,18 @@ build_symtab_from_debug_link.exit: ; preds = %open_file_from_debu .loopexit247: ; preds = %54, %214 call void @hdestroy_r(ptr noundef nonnull %51) #14 - call void @free(ptr noundef nonnull %51) #14 + br label %.preheader.sink.split.sink.split + +.preheader.sink.split.sink.split: ; preds = %.loopexit247, %212 + %.sink304 = phi ptr [ %213, %212 ], [ %51, %.loopexit247 ] + %.sink303.sink.ph = phi ptr [ %.1.lcssa226229234, %212 ], [ %41, %.loopexit247 ] + %.0111157241.ph.ph = phi ptr [ %.5145, %212 ], [ null, %.loopexit247 ] + call void @free(ptr noundef %.sink304) #14 br label %.preheader.sink.split -.preheader.sink.split: ; preds = %43, %179, %209, %212, %.loopexit247 - %.sink303.sink = phi ptr [ %41, %.loopexit247 ], [ %177, %179 ], [ %.1.lcssa226229234, %209 ], [ %.1.lcssa226229234, %212 ], [ %41, %43 ] - %.0111157241.ph = phi ptr [ null, %.loopexit247 ], [ %.1.lcssa226229233, %179 ], [ %.5145, %209 ], [ %.5145, %212 ], [ null, %43 ] +.preheader.sink.split: ; preds = %43, %.preheader.sink.split.sink.split, %179, %209 + %.sink303.sink = phi ptr [ %177, %179 ], [ %.1.lcssa226229234, %209 ], [ %.sink303.sink.ph, %.preheader.sink.split.sink.split ], [ %41, %43 ] + %.0111157241.ph = phi ptr [ %.1.lcssa226229233, %179 ], [ %.5145, %209 ], [ %.0111157241.ph.ph, %.preheader.sink.split.sink.split ], [ null, %43 ] call void @free(ptr noundef nonnull %.sink303.sink) #14 br label %.preheader diff --git a/bench/openmpi/optimized/ompi_rte.ll b/bench/openmpi/optimized/ompi_rte.ll index c6419cb1d67..e0c409326ed 100644 --- a/bench/openmpi/optimized/ompi_rte.ll +++ b/bench/openmpi/optimized/ompi_rte.ll @@ -2865,17 +2865,12 @@ define void @ompi_rte_wait_for_debugger() local_unnamed_addr #0 { 2: ; preds = %0 %3 = tail call ptr @getenv(ptr noundef nonnull @.str.56) #19 %4 = icmp eq ptr %3, null - br i1 %4, label %5, label %6 + %spec.select = select i1 %4, ptr null, ptr @.str.62 + br label %5 5: ; preds = %2, %0 - tail call void @ompi_rte_breakpoint(ptr noundef null) - br label %7 - -6: ; preds = %2 - tail call void @ompi_rte_breakpoint(ptr noundef nonnull @.str.62) - br label %7 - -7: ; preds = %6, %5 + %.str.62.sink = phi ptr [ null, %0 ], [ %spec.select, %2 ] + tail call void @ompi_rte_breakpoint(ptr noundef %.str.62.sink) ret void } diff --git a/bench/openspiel/optimized/solitaire.cc.ll b/bench/openspiel/optimized/solitaire.cc.ll index 08f0e255383..ab2f96c6e98 100644 --- a/bench/openspiel/optimized/solitaire.cc.ll +++ b/bench/openspiel/optimized/solitaire.cc.ll @@ -4106,37 +4106,31 @@ define void @_ZNK10open_spiel9solitaire10Foundation7TargetsEv(ptr dead_on_unwind %6 = getelementptr inbounds nuw i8, ptr %1, i64 16 %7 = load ptr, ptr %6, align 8 %8 = icmp eq ptr %5, %7 - br i1 %8, label %14, label %9 + br i1 %8, label %11, label %9 9: ; preds = %2 %10 = getelementptr inbounds i8, ptr %7, i64 -20 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %.sroa.0, ptr noundef nonnull align 4 dereferenceable(20) %10, i64 20, i1 false) tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, i8 0, i64 24, i1 false) - %11 = tail call noalias noundef nonnull dereferenceable(20) ptr @_Znwm(i64 noundef 20) #33 - store ptr %11, ptr %0, align 8 - %12 = getelementptr inbounds i8, ptr %11, i64 20 - %13 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %12, ptr %13, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %11, ptr noundef nonnull align 8 dereferenceable(20) %.sroa.0, i64 20, i1 false) - br label %20 + br label %14 -14: ; preds = %2 - %15 = getelementptr inbounds nuw i8, ptr %1, i64 36 - %16 = load i32, ptr %15, align 4 - call void @_ZN10open_spiel9solitaire4CardC1EbNS0_8SuitTypeENS0_8RankTypeENS0_12LocationTypeE(ptr noundef nonnull align 4 dereferenceable(20) %3, i1 noundef zeroext false, i32 noundef %16, i32 noundef 0, i32 noundef 2) +11: ; preds = %2 + %12 = getelementptr inbounds nuw i8, ptr %1, i64 36 + %13 = load i32, ptr %12, align 4 + call void @_ZN10open_spiel9solitaire4CardC1EbNS0_8SuitTypeENS0_8RankTypeENS0_12LocationTypeE(ptr noundef nonnull align 4 dereferenceable(20) %3, i1 noundef zeroext false, i32 noundef %13, i32 noundef 0, i32 noundef 2) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, i8 0, i64 24, i1 false) - %17 = call noalias noundef nonnull dereferenceable(20) ptr @_Znwm(i64 noundef 20) #33 - store ptr %17, ptr %0, align 8 - %18 = getelementptr inbounds i8, ptr %17, i64 20 - %19 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %18, ptr %19, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %17, ptr noundef nonnull align 4 dereferenceable(20) %3, i64 20, i1 false) - br label %20 + br label %14 -20: ; preds = %14, %9 - %.sink = phi ptr [ %18, %14 ], [ %12, %9 ] - %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sink, ptr %21, align 8 +14: ; preds = %11, %9 + %.sink14 = phi ptr [ %3, %11 ], [ %.sroa.0, %9 ] + %15 = call noalias noundef nonnull dereferenceable(20) ptr @_Znwm(i64 noundef 20) #33 + store ptr %15, ptr %0, align 8 + %16 = getelementptr inbounds i8, ptr %15, i64 20 + %17 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %16, ptr %17, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %15, ptr noundef nonnull align 4 dereferenceable(20) %.sink14, i64 20, i1 false) + %18 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %16, ptr %18, align 8 ret void } diff --git a/bench/openssl/optimized/enginetest-bin-enginetest.ll b/bench/openssl/optimized/enginetest-bin-enginetest.ll index f99414db326..d1db9512adf 100644 --- a/bench/openssl/optimized/enginetest-bin-enginetest.ll +++ b/bench/openssl/optimized/enginetest-bin-enginetest.ll @@ -532,22 +532,21 @@ lor.lhs.false3.i: ; preds = %entry if.then.i: ; preds = %lor.lhs.false3.i, %entry tail call void @RSA_free(ptr noundef %call.i) #8 - tail call void @EVP_PKEY_free(ptr noundef %call1.i) #8 - br label %get_test_pkey.exit + br label %return.sink.split.i if.end.i: ; preds = %lor.lhs.false3.i %call5.i = tail call ptr @BN_bin2bn(ptr noundef nonnull @get_test_pkey.n, i32 noundef 65, ptr noundef null) #8 %call6.i = tail call ptr @BN_bin2bn(ptr noundef nonnull @get_test_pkey.e, i32 noundef 1, ptr noundef null) #8 %call7.i = tail call i32 @RSA_set0_key(ptr noundef nonnull %call.i, ptr noundef %call5.i, ptr noundef %call6.i, ptr noundef null) #8 %tobool8.not.i = icmp eq i32 %call7.i, 0 - br i1 %tobool8.not.i, label %if.then9.i, label %get_test_pkey.exit + br i1 %tobool8.not.i, label %return.sink.split.i, label %get_test_pkey.exit -if.then9.i: ; preds = %if.end.i - tail call void @EVP_PKEY_free(ptr noundef nonnull %call1.i) #8 +return.sink.split.i: ; preds = %if.end.i, %if.then.i + tail call void @EVP_PKEY_free(ptr noundef %call1.i) #8 br label %get_test_pkey.exit -get_test_pkey.exit: ; preds = %if.then.i, %if.end.i, %if.then9.i - %retval.0.i = phi ptr [ null, %if.then.i ], [ null, %if.then9.i ], [ %call1.i, %if.end.i ] +get_test_pkey.exit: ; preds = %if.end.i, %return.sink.split.i + %retval.0.i = phi ptr [ %call1.i, %if.end.i ], [ null, %return.sink.split.i ] %call1 = tail call i32 @test_ptr(ptr noundef nonnull @.str.14, i32 noundef 262, ptr noundef nonnull @.str.60, ptr noundef %retval.0.i) #8 %tobool.not = icmp eq i32 %call1, 0 br i1 %tobool.not, label %err, label %if.end diff --git a/bench/openusd/optimized/decodemv.c.ll b/bench/openusd/optimized/decodemv.c.ll index 242d3b9f457..a56c76078c7 100644 --- a/bench/openusd/optimized/decodemv.c.ll +++ b/bench/openusd/optimized/decodemv.c.ll @@ -8993,7 +8993,7 @@ copy_segment_id.exit: ; preds = %._crit_edge.split.u %107 = getelementptr inbounds nuw i8, ptr %0, i64 19539 %108 = load i8, ptr %107, align 1 %.not84 = icmp eq i8 %108, 0 - br i1 %.not84, label %190, label %109 + br i1 %.not84, label %get_predicted_segment_id.exit112.sink.split, label %109 109: ; preds = %106 %110 = getelementptr i8, ptr %1, i64 7880 @@ -9091,7 +9091,7 @@ aom_read_symbol_.exit: ; preds = %av1_get_pred_contex store i16 %171, ptr %166, align 1 %172 = and i32 %133, 1 %.not85 = icmp eq i32 %172, 0 - br i1 %.not85, label %188, label %173 + br i1 %.not85, label %get_predicted_segment_id.exit112.sink.split, label %173 173: ; preds = %aom_read_symbol_.exit %174 = getelementptr inbounds nuw i8, ptr %0, i64 19712 @@ -9136,48 +9136,44 @@ aom_read_symbol_.exit: ; preds = %av1_get_pred_contex %exitcond29.not.i.i111 = icmp eq i32 %187, %28 br i1 %exitcond29.not.i.i111, label %get_predicted_segment_id.exit112, label %.preheader.us.i.i100, !llvm.loop !29 -188: ; preds = %aom_read_symbol_.exit - %189 = tail call fastcc i32 @read_segment_id(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %3, i32 noundef 0) +get_predicted_segment_id.exit112.sink.split: ; preds = %106, %aom_read_symbol_.exit + %188 = tail call fastcc i32 @read_segment_id(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef %3, i32 noundef 0) br label %get_predicted_segment_id.exit112 -190: ; preds = %106 - %191 = tail call fastcc i32 @read_segment_id(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef %3, i32 noundef 0) - br label %get_predicted_segment_id.exit112 - -get_predicted_segment_id.exit112: ; preds = %._crit_edge.us.i.i110, %176, %173, %188, %190 - %.074 = phi i32 [ %189, %188 ], [ %191, %190 ], [ 0, %173 ], [ 2147483647, %176 ], [ %.1..us.i.i107, %._crit_edge.us.i.i110 ] - %192 = icmp sgt i32 %28, 0 - br i1 %192, label %.preheader.lr.ph.i113, label %get_predicted_segment_id.exit +get_predicted_segment_id.exit112: ; preds = %._crit_edge.us.i.i110, %get_predicted_segment_id.exit112.sink.split, %176, %173 + %.074 = phi i32 [ 0, %173 ], [ 2147483647, %176 ], [ %188, %get_predicted_segment_id.exit112.sink.split ], [ %.1..us.i.i107, %._crit_edge.us.i.i110 ] + %189 = icmp sgt i32 %28, 0 + br i1 %189, label %.preheader.lr.ph.i113, label %get_predicted_segment_id.exit .preheader.lr.ph.i113: ; preds = %get_predicted_segment_id.exit112 - %193 = icmp sgt i32 %., 0 - %194 = trunc i32 %.074 to i8 - %195 = getelementptr inbounds nuw i8, ptr %0, i64 632 - br i1 %193, label %.preheader.us.i114, label %get_predicted_segment_id.exit + %190 = icmp sgt i32 %., 0 + %191 = trunc i32 %.074 to i8 + %192 = getelementptr inbounds nuw i8, ptr %0, i64 632 + br i1 %190, label %.preheader.us.i114, label %get_predicted_segment_id.exit .preheader.us.i114: ; preds = %.preheader.lr.ph.i113, %._crit_edge.us.i118 - %.01113.us.i115 = phi i32 [ %207, %._crit_edge.us.i118 ], [ 0, %.preheader.lr.ph.i113 ] - br label %196 - -196: ; preds = %196, %.preheader.us.i114 - %.012.us.i116 = phi i32 [ 0, %.preheader.us.i114 ], [ %206, %196 ] - %197 = load ptr, ptr %195, align 8 - %198 = getelementptr inbounds nuw i8, ptr %197, i64 80 - %199 = load ptr, ptr %198, align 8 - %200 = load i32, ptr %12, align 8 - %201 = mul nsw i32 %200, %.01113.us.i115 - %202 = add i32 %.012.us.i116, %15 - %203 = add i32 %202, %201 - %204 = sext i32 %203 to i64 - %205 = getelementptr inbounds i8, ptr %199, i64 %204 - store i8 %194, ptr %205, align 1 - %206 = add nuw nsw i32 %.012.us.i116, 1 - %exitcond.not.i117 = icmp eq i32 %206, %. - br i1 %exitcond.not.i117, label %._crit_edge.us.i118, label %196, !llvm.loop !6 - -._crit_edge.us.i118: ; preds = %196 - %207 = add nuw nsw i32 %.01113.us.i115, 1 - %exitcond16.not.i119 = icmp eq i32 %207, %28 + %.01113.us.i115 = phi i32 [ %204, %._crit_edge.us.i118 ], [ 0, %.preheader.lr.ph.i113 ] + br label %193 + +193: ; preds = %193, %.preheader.us.i114 + %.012.us.i116 = phi i32 [ 0, %.preheader.us.i114 ], [ %203, %193 ] + %194 = load ptr, ptr %192, align 8 + %195 = getelementptr inbounds nuw i8, ptr %194, i64 80 + %196 = load ptr, ptr %195, align 8 + %197 = load i32, ptr %12, align 8 + %198 = mul nsw i32 %197, %.01113.us.i115 + %199 = add i32 %.012.us.i116, %15 + %200 = add i32 %199, %198 + %201 = sext i32 %200 to i64 + %202 = getelementptr inbounds i8, ptr %196, i64 %201 + store i8 %191, ptr %202, align 1 + %203 = add nuw nsw i32 %.012.us.i116, 1 + %exitcond.not.i117 = icmp eq i32 %203, %. + br i1 %exitcond.not.i117, label %._crit_edge.us.i118, label %193, !llvm.loop !6 + +._crit_edge.us.i118: ; preds = %193 + %204 = add nuw nsw i32 %.01113.us.i115, 1 + %exitcond16.not.i119 = icmp eq i32 %204, %28 br i1 %exitcond16.not.i119, label %get_predicted_segment_id.exit, label %.preheader.us.i114, !llvm.loop !7 get_predicted_segment_id.exit: ; preds = %._crit_edge.us.i, %._crit_edge.us.i118, %._crit_edge.us.i.i, %.preheader.lr.ph.i113, %get_predicted_segment_id.exit112, %.preheader.lr.ph.i88, %88, %63, %copy_segment_id.exit, %75, %4 diff --git a/bench/openusd/optimized/stackTrace.cpp.ll b/bench/openusd/optimized/stackTrace.cpp.ll index d3c5572aa85..45e039a0c29 100644 --- a/bench/openusd/optimized/stackTrace.cpp.ll +++ b/bench/openusd/optimized/stackTrace.cpp.ll @@ -1597,58 +1597,48 @@ _ZNK32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_113Arch_ProgInfo18PrintInfoFo %173 = call i64 @fwrite(ptr nonnull @.str.35, i64 6, i64 1, ptr %172) #36 %174 = load ptr, ptr @stderr, align 8 %175 = call i32 @fflush(ptr noundef %174) - br i1 %.not63, label %178, label %176 - -176: ; preds = %164 - %177 = call fastcc noundef i32 @_ZN32pxrInternal_v0_24__pxrReserved__L20_LogStackTraceForPidEbPKcS1_(i1 noundef zeroext %0, ptr noundef %5, ptr noundef nonnull %1) - br label %180 - -178: ; preds = %164 - %179 = call fastcc noundef i32 @_ZN32pxrInternal_v0_24__pxrReserved__L20_LogStackTraceForPidEbPKcS1_(i1 noundef zeroext %0, ptr noundef %5, ptr noundef %2) - br label %180 - -180: ; preds = %178, %176 - %181 = phi i32 [ %177, %176 ], [ %179, %178 ] - %182 = load ptr, ptr @stderr, align 8 - %183 = call i64 @fwrite(ptr nonnull @.str.36, i64 7, i64 1, ptr %182) #36 - %184 = load atomic i8, ptr @_ZGVZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEvE7logInfo acquire, align 8 - %185 = icmp eq i8 %184, 0 - br i1 %185, label %186, label %_ZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEv.exit81, !prof !4 - -186: ; preds = %180 - %187 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEvE7logInfo) #31 - %.not.i80 = icmp eq i32 %187, 0 - br i1 %.not.i80, label %_ZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEv.exit81, label %188 - -188: ; preds = %186 + %. = select i1 %.not63, ptr %2, ptr %1 + %176 = call fastcc noundef i32 @_ZN32pxrInternal_v0_24__pxrReserved__L20_LogStackTraceForPidEbPKcS1_(i1 noundef zeroext %0, ptr noundef %5, ptr noundef %.) + %177 = load ptr, ptr @stderr, align 8 + %178 = call i64 @fwrite(ptr nonnull @.str.36, i64 7, i64 1, ptr %177) #36 + %179 = load atomic i8, ptr @_ZGVZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEvE7logInfo acquire, align 8 + %180 = icmp eq i8 %179, 0 + br i1 %180, label %181, label %_ZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEv.exit81, !prof !4 + +181: ; preds = %164 + %182 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEvE7logInfo) #31 + %.not.i80 = icmp eq i32 %182, 0 + br i1 %.not.i80, label %_ZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEv.exit81, label %183 + +183: ; preds = %181 store i32 0, ptr getelementptr inbounds (i8, ptr @_ZZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEvE7logInfo, i64 8), align 8 store ptr null, ptr getelementptr inbounds (i8, ptr @_ZZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEvE7logInfo, i64 16), align 8 store ptr getelementptr inbounds (i8, ptr @_ZZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEvE7logInfo, i64 8), ptr getelementptr inbounds (i8, ptr @_ZZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEvE7logInfo, i64 24), align 8 store ptr getelementptr inbounds (i8, ptr @_ZZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEvE7logInfo, i64 8), ptr getelementptr inbounds (i8, ptr @_ZZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEvE7logInfo, i64 32), align 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) getelementptr inbounds (i8, ptr @_ZZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEvE7logInfo, i64 40), i8 0, i64 48, i1 false) - %189 = call i32 @__cxa_atexit(ptr nonnull @_ZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_112Arch_LogInfoD2Ev, ptr nonnull @_ZZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEvE7logInfo, ptr nonnull @__dso_handle) #31 + %184 = call i32 @__cxa_atexit(ptr nonnull @_ZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_112Arch_LogInfoD2Ev, ptr nonnull @_ZZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEvE7logInfo, ptr nonnull @__dso_handle) #31 call void @__cxa_guard_release(ptr nonnull @_ZGVZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEvE7logInfo) #31 br label %_ZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEv.exit81 -_ZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEv.exit81: ; preds = %180, %186, %188 - %190 = load ptr, ptr @stderr, align 8 - call fastcc void @_ZNK32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_112Arch_LogInfo19EmitAnyExtraLogInfoEP8_IO_FILEm(ptr noundef %190, i64 noundef 3) +_ZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEv.exit81: ; preds = %164, %181, %183 + %185 = load ptr, ptr @stderr, align 8 + call fastcc void @_ZNK32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_112Arch_LogInfo19EmitAnyExtraLogInfoEP8_IO_FILEm(ptr noundef %185, i64 noundef 3) call fastcc void @"_ZZN32pxrInternal_v0_24__pxrReserved__L26_ArchLogProcessStateHelperEbPKcS1_S1_ENK3$_0clEi"(i32 noundef %.sroa.speculated) - %191 = load ptr, ptr @stderr, align 8 - %fputc68 = call i32 @fputc(i32 10, ptr %191) - %.not69 = icmp eq i32 %181, 0 - br i1 %.not69, label %_ZN32pxrInternal_v0_24__pxrReserved__L29_FinishLoggingFatalStackTraceEPKcS1_S1_b.exit, label %192 + %186 = load ptr, ptr @stderr, align 8 + %fputc68 = call i32 @fputc(i32 10, ptr %186) + %.not69 = icmp eq i32 %176, 0 + br i1 %.not69, label %_ZN32pxrInternal_v0_24__pxrReserved__L29_FinishLoggingFatalStackTraceEPKcS1_S1_b.exit, label %187 -192: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEv.exit81 - %193 = load i8, ptr @_ZN32pxrInternal_v0_24__pxrReserved__L19_shouldLogStackToDbE, align 1 - %194 = trunc nuw i8 %193 to i1 - br i1 %194, label %195, label %_ZN32pxrInternal_v0_24__pxrReserved__L29_FinishLoggingFatalStackTraceEPKcS1_S1_b.exit +187: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEv.exit81 + %188 = load i8, ptr @_ZN32pxrInternal_v0_24__pxrReserved__L19_shouldLogStackToDbE, align 1 + %189 = trunc nuw i8 %188 to i1 + br i1 %189, label %190, label %_ZN32pxrInternal_v0_24__pxrReserved__L29_FinishLoggingFatalStackTraceEPKcS1_S1_b.exit -195: ; preds = %192 +190: ; preds = %187 call fastcc void @_ZN32pxrInternal_v0_24__pxrReserved__L20_InvokeSessionLoggerEPKcS1_(ptr noundef nonnull %.str.1..i, ptr noundef nonnull %5) br label %_ZN32pxrInternal_v0_24__pxrReserved__L29_FinishLoggingFatalStackTraceEPKcS1_S1_b.exit -_ZN32pxrInternal_v0_24__pxrReserved__L29_FinishLoggingFatalStackTraceEPKcS1_S1_b.exit: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEv.exit81, %192, %195, %.loopexit +_ZN32pxrInternal_v0_24__pxrReserved__L29_FinishLoggingFatalStackTraceEPKcS1_S1_b.exit: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__L25ArchStackTrace_GetLogInfoEv.exit81, %187, %190, %.loopexit store atomic i8 0, ptr @_ZZN32pxrInternal_v0_24__pxrReserved__L26_ArchLogProcessStateHelperEbPKcS1_S1_E4busy release, align 1 ret void } diff --git a/bench/openvdb/optimized/StreamCompression.cc.ll b/bench/openvdb/optimized/StreamCompression.cc.ll index 6bae4022f52..95e92afc3f6 100644 --- a/bench/openvdb/optimized/StreamCompression.cc.ll +++ b/bench/openvdb/optimized/StreamCompression.cc.ll @@ -348,30 +348,20 @@ entry: %spec.select = select i1 %or.cond, i64 %add, i64 %uncompressedBytes %add2 = add i64 %spec.select, 16 %cmp3 = icmp ugt i64 %add2, 2147483631 - br i1 %cmp3, label %cond.true, label %cond.false - -cond.true: ; preds = %entry - %call = tail call noalias noundef nonnull dereferenceable(1) ptr @_Znam(i64 noundef 1) #21 - br label %cond.end - -cond.false: ; preds = %entry - %call5 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %add2) #21 - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi ptr [ %call, %cond.true ], [ %call5, %cond.false ] - invoke void @_ZN7openvdb5v11_011compression13bloscCompressEPcRmmPKcm(ptr noundef nonnull %cond, ptr noundef nonnull align 8 dereferenceable(8) %compressedBytes, i64 noundef %add2, ptr noundef %buffer, i64 noundef %uncompressedBytes) + %.add2 = select i1 %cmp3, i64 1, i64 %add2 + %call5 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %.add2) #21 + invoke void @_ZN7openvdb5v11_011compression13bloscCompressEPcRmmPKcm(ptr noundef nonnull %call5, ptr noundef nonnull align 8 dereferenceable(8) %compressedBytes, i64 noundef %add2, ptr noundef %buffer, i64 noundef %uncompressedBytes) to label %invoke.cont unwind label %_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit -invoke.cont: ; preds = %cond.end +invoke.cont: ; preds = %entry %1 = load i64, ptr %compressedBytes, align 8 %cmp10 = icmp eq i64 %1, 0 br i1 %cmp10, label %_ZNKSt14default_deleteIA_cEclIcEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i15, label %if.end12 -_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit: ; preds = %if.then14, %cond.end +_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit: ; preds = %if.then14, %entry %2 = landingpad { ptr, i32 } cleanup - tail call void @_ZdaPv(ptr noundef nonnull %cond) #22 + tail call void @_ZdaPv(ptr noundef nonnull %call5) #22 resume { ptr, i32 } %2 if.end12: ; preds = %invoke.cont @@ -382,19 +372,19 @@ if.then14: ; preds = %if.end12 to label %_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit13 unwind label %_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit _ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit13: ; preds = %if.then14 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %call16, ptr nonnull align 1 %cond, i64 %1, i1 false) - tail call void @_ZdaPv(ptr noundef nonnull %cond) #22 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %call16, ptr nonnull align 1 %call5, i64 %1, i1 false) + tail call void @_ZdaPv(ptr noundef nonnull %call5) #22 br label %cleanup.thread cleanup.thread: ; preds = %if.end12, %_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit13 - %outBuffer.sroa.0.1 = phi ptr [ %call16, %_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit13 ], [ %cond, %if.end12 ] + %outBuffer.sroa.0.1 = phi ptr [ %call16, %_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit13 ], [ %call5, %if.end12 ] %3 = ptrtoint ptr %outBuffer.sroa.0.1 to i64 store i64 %3, ptr %agg.result, align 8 br label %_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit16 _ZNKSt14default_deleteIA_cEclIcEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i15: ; preds = %invoke.cont store ptr null, ptr %agg.result, align 8 - tail call void @_ZdaPv(ptr noundef nonnull %cond) #22 + tail call void @_ZdaPv(ptr noundef nonnull %call5) #22 br label %_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit16 _ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit16: ; preds = %cleanup.thread, %_ZNKSt14default_deleteIA_cEclIcEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i15 @@ -411,30 +401,20 @@ entry: %spec.select.i = select i1 %or.cond.i, i64 %add.i, i64 %uncompressedBytes %add2.i = add i64 %spec.select.i, 16 %cmp3.i = icmp ugt i64 %add2.i, 2147483631 - br i1 %cmp3.i, label %cond.true.i, label %cond.false.i - -cond.true.i: ; preds = %entry - %call.i = tail call noalias noundef nonnull dereferenceable(1) ptr @_Znam(i64 noundef 1) #21, !noalias !4 - br label %cond.end.i - -cond.false.i: ; preds = %entry - %call5.i = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %add2.i) #21, !noalias !4 - br label %cond.end.i - -cond.end.i: ; preds = %cond.false.i, %cond.true.i - %cond.i = phi ptr [ %call.i, %cond.true.i ], [ %call5.i, %cond.false.i ] - invoke void @_ZN7openvdb5v11_011compression13bloscCompressEPcRmmPKcm(ptr noundef nonnull %cond.i, ptr noundef nonnull align 8 dereferenceable(8) %compressedBytes, i64 noundef %add2.i, ptr noundef %buffer, i64 noundef %uncompressedBytes) + %.add2.i = select i1 %cmp3.i, i64 1, i64 %add2.i + %call5.i = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %.add2.i) #21, !noalias !4 + invoke void @_ZN7openvdb5v11_011compression13bloscCompressEPcRmmPKcm(ptr noundef nonnull %call5.i, ptr noundef nonnull align 8 dereferenceable(8) %compressedBytes, i64 noundef %add2.i, ptr noundef %buffer, i64 noundef %uncompressedBytes) to label %invoke.cont.i unwind label %_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit.i, !noalias !4 -invoke.cont.i: ; preds = %cond.end.i +invoke.cont.i: ; preds = %entry %1 = load i64, ptr %compressedBytes, align 8 - tail call void @_ZdaPv(ptr noundef nonnull %cond.i) #22 + tail call void @_ZdaPv(ptr noundef nonnull %call5.i) #22 ret i64 %1 -_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit.i: ; preds = %cond.end.i +_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit.i: ; preds = %entry %2 = landingpad { ptr, i32 } cleanup - tail call void @_ZdaPv(ptr noundef nonnull %cond.i) #22, !noalias !4 + tail call void @_ZdaPv(ptr noundef nonnull %call5.i) #22, !noalias !4 resume { ptr, i32 } %2 } @@ -2525,30 +2505,20 @@ if.then2: ; preds = %_ZN7openvdb5v11_011 %spec.select.i.i = select i1 %or.cond.i, i64 %add.i.i, i64 %size %add2.i.i = add i64 %spec.select.i.i, 16 %cmp3.i.i = icmp ugt i64 %add2.i.i, 2147483631 - br i1 %cmp3.i.i, label %cond.true.i.i, label %cond.false.i.i - -cond.true.i.i: ; preds = %if.then2 - %call.i.i = tail call noalias noundef nonnull dereferenceable(1) ptr @_Znam(i64 noundef 1) #21, !noalias !13 - br label %cond.end.i.i - -cond.false.i.i: ; preds = %if.then2 - %call5.i.i = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %add2.i.i) #21, !noalias !13 - br label %cond.end.i.i - -cond.end.i.i: ; preds = %cond.false.i.i, %cond.true.i.i - %cond.i.i = phi ptr [ %call.i.i, %cond.true.i.i ], [ %call5.i.i, %cond.false.i.i ] - invoke void @_ZN7openvdb5v11_011compression13bloscCompressEPcRmmPKcm(ptr noundef nonnull %cond.i.i, ptr noundef nonnull align 8 dereferenceable(8) %compressedBytes.i, i64 noundef %add2.i.i, ptr noundef %buffer, i64 noundef %size) + %.add2.i.i = select i1 %cmp3.i.i, i64 1, i64 %add2.i.i + %call5.i.i = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %.add2.i.i) #21, !noalias !13 + invoke void @_ZN7openvdb5v11_011compression13bloscCompressEPcRmmPKcm(ptr noundef nonnull %call5.i.i, ptr noundef nonnull align 8 dereferenceable(8) %compressedBytes.i, i64 noundef %add2.i.i, ptr noundef %buffer, i64 noundef %size) to label %_ZN7openvdb5v11_011compression19bloscCompressedSizeEPKcm.exit unwind label %_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit.i.i, !noalias !13 -_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit.i.i: ; preds = %cond.end.i.i +_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit.i.i: ; preds = %if.then2 %6 = landingpad { ptr, i32 } cleanup - tail call void @_ZdaPv(ptr noundef nonnull %cond.i.i) #22, !noalias !13 + tail call void @_ZdaPv(ptr noundef nonnull %call5.i.i) #22, !noalias !13 resume { ptr, i32 } %6 -_ZN7openvdb5v11_011compression19bloscCompressedSizeEPKcm.exit: ; preds = %cond.end.i.i +_ZN7openvdb5v11_011compression19bloscCompressedSizeEPKcm.exit: ; preds = %if.then2 %7 = load i64, ptr %compressedBytes.i, align 8 - tail call void @_ZdaPv(ptr noundef nonnull %cond.i.i) #22 + tail call void @_ZdaPv(ptr noundef nonnull %call5.i.i) #22 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %compressedBytes.i) store i64 %7, ptr %compressedBytes, align 8 br label %if.end4 diff --git a/bench/pbrt-v4/optimized/bxdfs.cpp.ll b/bench/pbrt-v4/optimized/bxdfs.cpp.ll index 61fecd07c09..303db8f6ec6 100644 --- a/bench/pbrt-v4/optimized/bxdfs.cpp.ll +++ b/bench/pbrt-v4/optimized/bxdfs.cpp.ll @@ -12704,20 +12704,12 @@ lpad4: ; preds = %invoke.cont3 do.body: ; preds = %invoke.cont5 %call8 = call i32 @fseek(ptr noundef nonnull %call, i64 noundef 0, i32 noundef 2) %tobool.not = icmp eq i32 %call8, 0 - br i1 %tobool.not, label %do.end, label %if.then9 - -if.then9: ; preds = %do.body - %call11 = call i32 @fclose(ptr noundef nonnull %call) - br label %if.then98.invoke + br i1 %tobool.not, label %do.end, label %if.then98.invoke.sink.split do.end: ; preds = %do.body %call15 = call i64 @ftell(ptr noundef nonnull %call) %cmp17.not = icmp eq i64 %call15, -1 - br i1 %cmp17.not, label %if.then18, label %do.end24 - -if.then18: ; preds = %do.end - %call20 = call i32 @fclose(ptr noundef nonnull %call) - br label %if.then98.invoke + br i1 %cmp17.not, label %if.then98.invoke.sink.split, label %do.end24 do.end24: ; preds = %do.end %m_size = getelementptr inbounds i8, ptr %this, i64 88 @@ -12725,47 +12717,27 @@ do.end24: ; preds = %do.end call void @rewind(ptr noundef nonnull %call) %3 = load i64, ptr %m_size, align 8 %cmp28 = icmp ugt i64 %3, 17 - br i1 %cmp28, label %do.body36, label %if.then29 - -if.then29: ; preds = %do.end24 - %call31 = call i32 @fclose(ptr noundef nonnull %call) - br label %if.then98.invoke + br i1 %cmp28, label %do.body36, label %if.then98.invoke.sink.split do.body36: ; preds = %do.end24 %call38 = call i64 @fread(ptr noundef nonnull %header, i64 noundef 1, i64 noundef 12, ptr noundef nonnull %call) %cmp39 = icmp eq i64 %call38, 12 - br i1 %cmp39, label %do.body47, label %if.then40 - -if.then40: ; preds = %do.body36 - %call42 = call i32 @fclose(ptr noundef nonnull %call) - br label %if.then98.invoke + br i1 %cmp39, label %do.body47, label %if.then98.invoke.sink.split do.body47: ; preds = %do.body36 %call50 = call i64 @fread(ptr noundef nonnull %version, i64 noundef 1, i64 noundef 2, ptr noundef nonnull %call) %cmp51 = icmp eq i64 %call50, 2 - br i1 %cmp51, label %do.body59, label %if.then52 - -if.then52: ; preds = %do.body47 - %call54 = call i32 @fclose(ptr noundef nonnull %call) - br label %if.then98.invoke + br i1 %cmp51, label %do.body59, label %if.then98.invoke.sink.split do.body59: ; preds = %do.body47 %call61 = call i64 @fread(ptr noundef nonnull %n_fields, i64 noundef 4, i64 noundef 1, ptr noundef nonnull %call) %cmp62 = icmp eq i64 %call61, 1 - br i1 %cmp62, label %do.body70, label %if.then63 - -if.then63: ; preds = %do.body59 - %call65 = call i32 @fclose(ptr noundef nonnull %call) - br label %if.then98.invoke + br i1 %cmp62, label %do.body70, label %if.then98.invoke.sink.split do.body70: ; preds = %do.body59 %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(12) %header, ptr noundef nonnull dereferenceable(12) @.str.32, i64 12) %cmp73 = icmp eq i32 %bcmp, 0 - br i1 %cmp73, label %do.body81, label %if.then74 - -if.then74: ; preds = %do.body70 - %call76 = call i32 @fclose(ptr noundef nonnull %call) - br label %if.then98.invoke + br i1 %cmp73, label %do.body81, label %if.then98.invoke.sink.split do.body81: ; preds = %do.body70 %4 = load i8, ptr %version, align 1 @@ -12774,7 +12746,7 @@ do.body81: ; preds = %do.body70 %5 = load i8, ptr %arrayidx83, align 1 %cmp85 = icmp eq i8 %5, 0 %or.cond = select i1 %cmp82, i1 %cmp85, i1 false - br i1 %or.cond, label %for.cond.preheader, label %if.then86 + br i1 %or.cond, label %for.cond.preheader, label %if.then98.invoke.sink.split for.cond.preheader: ; preds = %do.body81 %6 = load i32, ptr %n_fields, align 4 @@ -12789,22 +12761,19 @@ do.body94.lr.ph: ; preds = %for.cond.preheader %data248 = getelementptr inbounds i8, ptr %ref.tmp242, i64 40 br label %do.body94 -if.then86: ; preds = %do.body81 - %call88 = call i32 @fclose(ptr noundef nonnull %call) - br label %if.then98.invoke - do.body94: ; preds = %do.body94.lr.ph, %_ZNSt6vectorImSaImEED2Ev.exit %i.0145 = phi i32 [ 0, %do.body94.lr.ph ], [ %inc257, %_ZNSt6vectorImSaImEED2Ev.exit ] %call96 = call i64 @fread(ptr noundef nonnull %name_length, i64 noundef 2, i64 noundef 1, ptr noundef %call) %cmp97 = icmp eq i64 %call96, 1 - br i1 %cmp97, label %do.end104, label %if.then98 + br i1 %cmp97, label %do.end104, label %if.then98.invoke.sink.split -if.then98: ; preds = %do.body94 - %call100 = call i32 @fclose(ptr noundef %call) +if.then98.invoke.sink.split: ; preds = %do.body94, %do.body81, %do.body70, %do.body59, %do.body47, %do.body36, %do.end24, %do.end, %do.body + %.ph = phi ptr [ @.str.26, %do.body ], [ @.str.27, %do.end ], [ @.str.28, %do.end24 ], [ @.str.29, %do.body36 ], [ @.str.30, %do.body47 ], [ @.str.31, %do.body59 ], [ @.str.33, %do.body70 ], [ @.str.34, %do.body81 ], [ @.str.35, %do.body94 ] + %call11 = call i32 @fclose(ptr noundef %call) br label %if.then98.invoke -if.then98.invoke: ; preds = %invoke.cont5, %if.then9, %if.then18, %if.then29, %if.then40, %if.then52, %if.then63, %if.then74, %if.then86, %if.then98 - %7 = phi ptr [ @.str.35, %if.then98 ], [ @.str.34, %if.then86 ], [ @.str.33, %if.then74 ], [ @.str.31, %if.then63 ], [ @.str.30, %if.then52 ], [ @.str.29, %if.then40 ], [ @.str.28, %if.then29 ], [ @.str.27, %if.then18 ], [ @.str.26, %if.then9 ], [ @.str.25, %invoke.cont5 ] +if.then98.invoke: ; preds = %if.then98.invoke.sink.split, %invoke.cont5 + %7 = phi ptr [ @.str.25, %invoke.cont5 ], [ %.ph, %if.then98.invoke.sink.split ] invoke void @_ZN4pbrt9ErrorExitIJRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvPKcDpOT_(ptr noundef nonnull %7, ptr noundef nonnull align 8 dereferenceable(32) %filename) #25 to label %if.then98.cont unwind label %lpad2 diff --git a/bench/pbrt-v4/optimized/parser.cpp.ll b/bench/pbrt-v4/optimized/parser.cpp.ll index f9d34a70c56..a6228a2a327 100644 --- a/bench/pbrt-v4/optimized/parser.cpp.ll +++ b/bench/pbrt-v4/optimized/parser.cpp.ll @@ -9390,12 +9390,7 @@ lpad32: ; preds = %if.then27, %if.then if.end36: ; preds = %init.end %_M_str.i25 = getelementptr inbounds i8, ptr %t, i64 8 %tobool.not.i.i.i.i.i = icmp eq i64 %8, 0 - br i1 %tobool.not.i.i.i.i.i, label %invoke.cont41.thread, label %invoke.cont41.thread70 - -invoke.cont41.thread70: ; preds = %if.end36 - %14 = load ptr, ptr %_M_str.i25, align 8 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 16 %buf, ptr align 1 %14, i64 %8, i1 false) - br label %for.body.i.preheader + br i1 %tobool.not.i.i.i.i.i, label %invoke.cont41.thread, label %for.body.i.preheader invoke.cont41.thread: ; preds = %if.end36 %arrayidx64 = getelementptr inbounds i8, ptr %buf, i64 %8 @@ -9406,17 +9401,16 @@ invoke.cont41.thread: ; preds = %if.end36 invoke.cont41: ; preds = %if.then27 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %call.i24, i8 0, i64 %add31, i1 false), !noalias !233 %_M_str.i2546 = getelementptr inbounds i8, ptr %t, i64 8 - %15 = load ptr, ptr %_M_str.i2546, align 8 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %call.i24, ptr align 1 %15, i64 %8, i1 false) br label %for.body.i.preheader -for.body.i.preheader: ; preds = %invoke.cont41, %invoke.cont41.thread70 - %call.i24.sink = phi ptr [ %call.i24, %invoke.cont41 ], [ %buf, %invoke.cont41.thread70 ] - %allocBuf.sroa.0.14980 = phi ptr [ %call.i24, %invoke.cont41 ], [ null, %invoke.cont41.thread70 ] - %_M_str.i255378 = phi ptr [ %_M_str.i2546, %invoke.cont41 ], [ %_M_str.i25, %invoke.cont41.thread70 ] - %16 = phi ptr [ %15, %invoke.cont41 ], [ %14, %invoke.cont41.thread70 ] - %add.ptr.i5577 = getelementptr inbounds i8, ptr %16, i64 %8 - %arrayidx = getelementptr inbounds i8, ptr %call.i24.sink, i64 %8 +for.body.i.preheader: ; preds = %if.end36, %invoke.cont41 + %_M_str.i2546.sink = phi ptr [ %_M_str.i2546, %invoke.cont41 ], [ %_M_str.i25, %if.end36 ] + %call.i24.sink82 = phi ptr [ %call.i24, %invoke.cont41 ], [ %buf, %if.end36 ] + %allocBuf.sroa.0.14980 = phi ptr [ %call.i24, %invoke.cont41 ], [ null, %if.end36 ] + %14 = load ptr, ptr %_M_str.i2546.sink, align 8 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %call.i24.sink82, ptr align 1 %14, i64 %8, i1 false) + %add.ptr.i5577 = getelementptr inbounds i8, ptr %14, i64 %8 + %arrayidx = getelementptr inbounds i8, ptr %call.i24.sink82, i64 %8 store i8 0, ptr %arrayidx, align 1 store i32 0, ptr %length, align 4 br label %for.body.i @@ -9427,20 +9421,20 @@ for.cond.i: ; preds = %for.body.i br i1 %cmp.not.i27, label %if.then48, label %for.body.i for.body.i: ; preds = %for.body.i.preheader, %for.cond.i - %__begin2.03.i = phi ptr [ %incdec.ptr.i, %for.cond.i ], [ %16, %for.body.i.preheader ] - %17 = load i8, ptr %__begin2.03.i, align 1 - %18 = add i8 %17, -48 - %or.cond.i = icmp ult i8 %18, 10 + %__begin2.03.i = phi ptr [ %incdec.ptr.i, %for.cond.i ], [ %14, %for.body.i.preheader ] + %15 = load i8, ptr %__begin2.03.i, align 1 + %16 = add i8 %15, -48 + %or.cond.i = icmp ult i8 %16, 10 br i1 %or.cond.i, label %for.cond.i, label %if.else if.then48: ; preds = %for.cond.i, %invoke.cont41.thread %allocBuf.sroa.0.15069 = phi ptr [ null, %invoke.cont41.thread ], [ %allocBuf.sroa.0.14980, %for.cond.i ] - %bufp.05267 = phi ptr [ %buf, %invoke.cont41.thread ], [ %call.i24.sink, %for.cond.i ] - %_M_str.i255466 = phi ptr [ %_M_str.i25, %invoke.cont41.thread ], [ %_M_str.i255378, %for.cond.i ] + %bufp.05267 = phi ptr [ %buf, %invoke.cont41.thread ], [ %call.i24.sink82, %for.cond.i ] + %_M_str.i255466 = phi ptr [ %_M_str.i25, %invoke.cont41.thread ], [ %_M_str.i2546.sink, %for.cond.i ] %call49 = call i64 @strtol(ptr noundef nonnull %bufp.05267, ptr noundef nonnull %endptr, i32 noundef 10) #33 %conv50 = sitofp i64 %call49 to double - %19 = load ptr, ptr %endptr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %19 to i64 + %17 = load ptr, ptr %endptr, align 8 + %sub.ptr.lhs.cast = ptrtoint ptr %17 to i64 %sub.ptr.rhs.cast = ptrtoint ptr %bufp.05267 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %conv51 = trunc i64 %sub.ptr.sub to i32 @@ -9449,7 +9443,7 @@ if.then48: ; preds = %for.cond.i, %invoke if.else: ; preds = %for.body.i %conv54 = trunc i64 %8 to i32 - %call56 = invoke noundef float @_ZNK17double_conversion23StringToDoubleConverter13StringToFloatEPKciPi(ptr noundef nonnull align 8 dereferenceable(42) @_ZN4pbrtL11floatParserE, ptr noundef nonnull %call.i24.sink, i32 noundef %conv54, ptr noundef nonnull %length) + %call56 = invoke noundef float @_ZNK17double_conversion23StringToDoubleConverter13StringToFloatEPKciPi(ptr noundef nonnull align 8 dereferenceable(42) @_ZN4pbrtL11floatParserE, ptr noundef nonnull %call.i24.sink82, i32 noundef %conv54, ptr noundef nonnull %length) to label %invoke.cont55 unwind label %lpad32 invoke.cont55: ; preds = %if.else @@ -9459,10 +9453,10 @@ invoke.cont55: ; preds = %if.else if.end58: ; preds = %invoke.cont55, %if.then48 %allocBuf.sroa.0.15068 = phi ptr [ %allocBuf.sroa.0.14980, %invoke.cont55 ], [ %allocBuf.sroa.0.15069, %if.then48 ] - %_M_str.i255465 = phi ptr [ %_M_str.i255378, %invoke.cont55 ], [ %_M_str.i255466, %if.then48 ] - %20 = phi i32 [ %.pr39, %invoke.cont55 ], [ %conv51, %if.then48 ] + %_M_str.i255465 = phi ptr [ %_M_str.i2546.sink, %invoke.cont55 ], [ %_M_str.i255466, %if.then48 ] + %18 = phi i32 [ %.pr39, %invoke.cont55 ], [ %conv51, %if.then48 ] %val.0 = phi double [ %conv57, %invoke.cont55 ], [ %conv50, %if.then48 ] - %cmp59 = icmp eq i32 %20, 0 + %cmp59 = icmp eq i32 %18, 0 br i1 %cmp59, label %if.then60, label %if.end68 if.then60: ; preds = %if.end58 @@ -9480,7 +9474,7 @@ invoke.cont67: ; preds = %invoke.cont65 unreachable lpad66: ; preds = %invoke.cont65 - %21 = landingpad { ptr, i32 } + %19 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp62) #33 br label %ehcleanup @@ -9495,7 +9489,7 @@ _ZNKSt14default_deleteIA_cEclIcEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5v ehcleanup: ; preds = %lpad66, %lpad32 %allocBuf.sroa.0.0 = phi ptr [ %allocBuf.sroa.0.15068, %lpad66 ], [ %allocBuf.sroa.0.2, %lpad32 ] - %.pn = phi { ptr, i32 } [ %21, %lpad66 ], [ %13, %lpad32 ] + %.pn = phi { ptr, i32 } [ %19, %lpad66 ], [ %13, %lpad32 ] %cmp.not.i31 = icmp eq ptr %allocBuf.sroa.0.0, null br i1 %cmp.not.i31, label %_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev.exit33, label %_ZNKSt14default_deleteIA_cEclIcEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i32 diff --git a/bench/php/optimized/php_pcre.ll b/bench/php/optimized/php_pcre.ll index 59f82f20bbd..9f34f0f4614 100644 --- a/bench/php/optimized/php_pcre.ll +++ b/bench/php/optimized/php_pcre.ll @@ -8357,20 +8357,9 @@ define internal noundef i32 @OnUpdateJit(ptr noundef %0, ptr noundef %1, ptr nou %8 = load i8, ptr getelementptr inbounds (i8, ptr @pcre_globals, i64 72), align 8 %9 = trunc i8 %8 to i1 %10 = load ptr, ptr @jit_stack, align 8 - %11 = icmp ne ptr %10, null - %or.cond = select i1 %9, i1 %11, i1 false - %12 = load ptr, ptr @mctx, align 8 - br i1 %or.cond, label %13, label %14 - -13: ; preds = %6 - tail call void @php_pcre2_jit_stack_assign(ptr noundef %12, ptr noundef null, ptr noundef nonnull %10) #23 - br label %15 - -14: ; preds = %6 - tail call void @php_pcre2_jit_stack_assign(ptr noundef %12, ptr noundef null, ptr noundef null) #23 - br label %15 - -15: ; preds = %14, %13 + %11 = load ptr, ptr @mctx, align 8 + %. = select i1 %9, ptr %10, ptr null + tail call void @php_pcre2_jit_stack_assign(ptr noundef %11, ptr noundef null, ptr noundef %.) #23 ret i32 0 } diff --git a/bench/portaudio/optimized/pa_linux_pulseaudio.c.ll b/bench/portaudio/optimized/pa_linux_pulseaudio.c.ll index f7168f6c10e..2c7d9c4a504 100644 --- a/bench/portaudio/optimized/pa_linux_pulseaudio.c.ll +++ b/bench/portaudio/optimized/pa_linux_pulseaudio.c.ll @@ -748,7 +748,7 @@ define void @Terminate(ptr noundef %0) #0 { define i32 @OpenStream(ptr noundef %0, ptr nocapture noundef writeonly %1, ptr noundef readonly %2, ptr noundef readonly %3, double noundef %4, i64 noundef %5, i64 noundef %6, ptr noundef %7, ptr noundef %8) #0 { %10 = and i64 %6, 4294901760 %.not = icmp eq i64 %10, 0 - br i1 %.not, label %11, label %164 + br i1 %.not, label %11, label %160 11: ; preds = %9 %12 = icmp eq i64 %5, 0 @@ -758,7 +758,7 @@ define i32 @OpenStream(ptr noundef %0, ptr nocapture noundef writeonly %1, ptr n tail call void @PaPulseAudio_Lock(ptr noundef %14) #13 %15 = tail call ptr @PaUtil_AllocateZeroInitializedMemory(i64 noundef 664) #13 %.not183 = icmp eq ptr %15, null - br i1 %.not183, label %159, label %16 + br i1 %.not183, label %155, label %16 16: ; preds = %11 %17 = getelementptr inbounds nuw i8, ptr %15, i64 416 @@ -773,7 +773,7 @@ define i32 @OpenStream(ptr noundef %0, ptr nocapture noundef writeonly %1, ptr n %.not184 = icmp eq ptr %22, null %.not185 = icmp eq ptr %20, null %or.cond = select i1 %.not184, i1 true, i1 %.not185 - br i1 %or.cond, label %161, label %23 + br i1 %or.cond, label %157, label %23 23: ; preds = %16 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(17) %22, ptr noundef nonnull align 16 dereferenceable(17) @__const.OpenStream.defaultSourceStreamName, i64 17, i1 false) @@ -802,7 +802,7 @@ define i32 @OpenStream(ptr noundef %0, ptr nocapture noundef writeonly %1, ptr n %36 = load i64, ptr %35, align 8 %37 = load i32, ptr %2, align 8 %38 = icmp eq i32 %37, -2 - br i1 %38, label %161, label %39 + br i1 %38, label %157, label %39 39: ; preds = %32 %40 = getelementptr inbounds nuw i8, ptr %0, i64 40 @@ -813,13 +813,13 @@ define i32 @OpenStream(ptr noundef %0, ptr nocapture noundef writeonly %1, ptr n %45 = getelementptr inbounds nuw i8, ptr %44, i64 20 %46 = load i32, ptr %45, align 4 %47 = icmp sgt i32 %34, %46 - br i1 %47, label %161, label %48 + br i1 %47, label %157, label %48 48: ; preds = %39 %49 = getelementptr inbounds nuw i8, ptr %2, i64 24 %50 = load ptr, ptr %49, align 8 %.not187 = icmp eq ptr %50, null - br i1 %.not187, label %51, label %161 + br i1 %.not187, label %51, label %157 51: ; preds = %48 %52 = tail call i64 @PaUtil_SelectClosestAvailableFormat(i64 noundef %36, i64 noundef %36) #13 @@ -830,7 +830,7 @@ define i32 @OpenStream(ptr noundef %0, ptr nocapture noundef writeonly %1, ptr n %56 = getelementptr inbounds nuw i8, ptr %15, i64 452 %57 = tail call i32 @PaPulseAudio_ConvertPortaudioFormatToPaPulseAudio_(i64 noundef %52, ptr noundef nonnull %56) %.not188 = icmp eq i32 %57, 0 - br i1 %.not188, label %58, label %161 + br i1 %.not188, label %58, label %157 58: ; preds = %51 %59 = fptoui double %4 to i32 @@ -843,7 +843,7 @@ define i32 @OpenStream(ptr noundef %0, ptr nocapture noundef writeonly %1, ptr n store i32 %34, ptr %63, align 4 %64 = tail call i32 @pa_sample_spec_valid(ptr noundef nonnull %56) #14 %.not189 = icmp eq i32 %64, 0 - br i1 %.not189, label %161, label %65 + br i1 %.not189, label %157, label %65 65: ; preds = %58 %66 = getelementptr inbounds nuw i8, ptr %0, i64 82232 @@ -874,7 +874,7 @@ define i32 @OpenStream(ptr noundef %0, ptr nocapture noundef writeonly %1, ptr n store i32 %.sink, ptr %80, align 8 %81 = tail call i32 @PaPulseAudio_BlockingInitRingBuffer(ptr noundef nonnull %31, i32 noundef 262144) %.not191 = icmp eq i32 %81, 0 - br i1 %.not191, label %82, label %161 + br i1 %.not191, label %82, label %157 82: ; preds = %23, %72 %.0159 = phi i32 [ %34, %72 ], [ 0, %23 ] @@ -890,7 +890,7 @@ define i32 @OpenStream(ptr noundef %0, ptr nocapture noundef writeonly %1, ptr n %87 = load i64, ptr %86, align 8 %88 = load i32, ptr %3, align 8 %89 = icmp eq i32 %88, -2 - br i1 %89, label %161, label %90 + br i1 %89, label %157, label %90 90: ; preds = %83 %91 = getelementptr inbounds nuw i8, ptr %0, i64 40 @@ -901,13 +901,13 @@ define i32 @OpenStream(ptr noundef %0, ptr nocapture noundef writeonly %1, ptr n %96 = getelementptr inbounds nuw i8, ptr %95, i64 24 %97 = load i32, ptr %96, align 8 %98 = icmp sgt i32 %85, %97 - br i1 %98, label %161, label %99 + br i1 %98, label %157, label %99 99: ; preds = %90 %100 = getelementptr inbounds nuw i8, ptr %3, i64 24 %101 = load ptr, ptr %100, align 8 %.not193 = icmp eq ptr %101, null - br i1 %.not193, label %102, label %161 + br i1 %.not193, label %102, label %157 102: ; preds = %99 %103 = tail call i64 @PaUtil_SelectClosestAvailableFormat(i64 noundef %87, i64 noundef %87) #13 @@ -918,7 +918,7 @@ define i32 @OpenStream(ptr noundef %0, ptr nocapture noundef writeonly %1, ptr n %107 = getelementptr inbounds nuw i8, ptr %15, i64 440 %108 = tail call i32 @PaPulseAudio_ConvertPortaudioFormatToPaPulseAudio_(i64 noundef %103, ptr noundef nonnull %107) %.not194 = icmp eq i32 %108, 0 - br i1 %.not194, label %109, label %161 + br i1 %.not194, label %109, label %157 109: ; preds = %102 %110 = fptoui double %4 to i32 @@ -931,7 +931,7 @@ define i32 @OpenStream(ptr noundef %0, ptr nocapture noundef writeonly %1, ptr n store i32 %85, ptr %114, align 8 %115 = tail call i32 @pa_sample_spec_valid(ptr noundef nonnull %107) #14 %.not195 = icmp eq i32 %115, 0 - br i1 %.not195, label %161, label %116 + br i1 %.not195, label %157, label %116 116: ; preds = %109 %117 = getelementptr inbounds nuw i8, ptr %0, i64 82232 @@ -978,63 +978,53 @@ define i32 @OpenStream(ptr noundef %0, ptr nocapture noundef writeonly %1, ptr n %138 = getelementptr inbounds nuw i8, ptr %15, i64 424 store ptr %137, ptr %138, align 8 %.not197 = icmp eq ptr %7, null - br i1 %.not197, label %141, label %139 - -139: ; preds = %132 - %140 = getelementptr inbounds nuw i8, ptr %0, i64 72 - tail call void @PaUtil_InitializeStreamRepresentation(ptr noundef nonnull %15, ptr noundef nonnull %140, ptr noundef nonnull %7, ptr noundef %8) #13 - br label %143 - -141: ; preds = %132 - %142 = getelementptr inbounds nuw i8, ptr %0, i64 168 - tail call void @PaUtil_InitializeStreamRepresentation(ptr noundef nonnull %15, ptr noundef nonnull %142, ptr noundef null, ptr noundef %8) #13 - br label %143 - -143: ; preds = %141, %139 - %144 = getelementptr inbounds nuw i8, ptr %15, i64 80 - tail call void @PaUtil_InitializeCpuLoadMeasurer(ptr noundef nonnull %144, double noundef %4) #13 - %145 = getelementptr inbounds nuw i8, ptr %15, i64 104 - %146 = tail call i32 @PaUtil_InitializeBufferProcessor(ptr noundef nonnull %145, i32 noundef %.0159, i64 noundef %.0157, i64 noundef %.0155, i32 noundef %.0158, i64 noundef %.0156, i64 noundef %.0, double noundef %4, i64 noundef %6, i64 noundef %spec.store.select, i64 noundef %5, i32 noundef 2, ptr noundef %7, ptr noundef %8) #13 - %.not198 = icmp eq i32 %146, 0 - br i1 %.not198, label %147, label %161 - -147: ; preds = %143 - %148 = tail call i64 @PaUtil_GetBufferProcessorInputLatencyFrames(ptr noundef nonnull %145) #13 + %. = select i1 %.not197, i64 168, i64 72 + %139 = getelementptr inbounds nuw i8, ptr %0, i64 %. + tail call void @PaUtil_InitializeStreamRepresentation(ptr noundef nonnull %15, ptr noundef nonnull %139, ptr noundef %7, ptr noundef %8) #13 + %140 = getelementptr inbounds nuw i8, ptr %15, i64 80 + tail call void @PaUtil_InitializeCpuLoadMeasurer(ptr noundef nonnull %140, double noundef %4) #13 + %141 = getelementptr inbounds nuw i8, ptr %15, i64 104 + %142 = tail call i32 @PaUtil_InitializeBufferProcessor(ptr noundef nonnull %141, i32 noundef %.0159, i64 noundef %.0157, i64 noundef %.0155, i32 noundef %.0158, i64 noundef %.0156, i64 noundef %.0, double noundef %4, i64 noundef %6, i64 noundef %spec.store.select, i64 noundef %5, i32 noundef 2, ptr noundef %7, ptr noundef %8) #13 + %.not198 = icmp eq i32 %142, 0 + br i1 %.not198, label %143, label %157 + +143: ; preds = %132 + %144 = tail call i64 @PaUtil_GetBufferProcessorInputLatencyFrames(ptr noundef nonnull %141) #13 + %145 = uitofp i64 %144 to double + %146 = fdiv double %145, %4 + %147 = getelementptr inbounds nuw i8, ptr %15, i64 56 + store double %146, ptr %147, align 8 + %148 = tail call i64 @PaUtil_GetBufferProcessorOutputLatencyFrames(ptr noundef nonnull %141) #13 %149 = uitofp i64 %148 to double %150 = fdiv double %149, %4 - %151 = getelementptr inbounds nuw i8, ptr %15, i64 56 + %151 = getelementptr inbounds nuw i8, ptr %15, i64 64 store double %150, ptr %151, align 8 - %152 = tail call i64 @PaUtil_GetBufferProcessorOutputLatencyFrames(ptr noundef nonnull %145) #13 - %153 = uitofp i64 %152 to double - %154 = fdiv double %153, %4 - %155 = getelementptr inbounds nuw i8, ptr %15, i64 64 - store double %154, ptr %155, align 8 - %156 = getelementptr inbounds nuw i8, ptr %15, i64 72 - store double %4, ptr %156, align 8 - %157 = getelementptr inbounds nuw i8, ptr %15, i64 544 - store i64 %spec.store.select, ptr %157, align 8 - %158 = getelementptr inbounds nuw i8, ptr %15, i64 536 - store i64 %spec.store.select, ptr %158, align 8 + %152 = getelementptr inbounds nuw i8, ptr %15, i64 72 + store double %4, ptr %152, align 8 + %153 = getelementptr inbounds nuw i8, ptr %15, i64 544 + store i64 %spec.store.select, ptr %153, align 8 + %154 = getelementptr inbounds nuw i8, ptr %15, i64 536 + store i64 %spec.store.select, ptr %154, align 8 store ptr %15, ptr %1, align 8 - br label %159 - -159: ; preds = %11, %161, %147 - %.1 = phi i32 [ %.0161.ph, %161 ], [ 0, %147 ], [ -9992, %11 ] - %160 = load ptr, ptr %13, align 8 - tail call void @PaPulseAudio_UnLock(ptr noundef %160) #13 - br label %164 - -161: ; preds = %109, %99, %90, %83, %58, %48, %39, %32, %16, %143, %102, %72, %51 - %.0161.ph = phi i32 [ -9999, %109 ], [ -9984, %99 ], [ -9998, %90 ], [ -9996, %83 ], [ -9999, %58 ], [ -9984, %48 ], [ -9998, %39 ], [ -9996, %32 ], [ -9992, %16 ], [ %146, %143 ], [ %108, %102 ], [ %81, %72 ], [ %57, %51 ] - %162 = load ptr, ptr %19, align 8 - tail call void @PaUtil_FreeMemory(ptr noundef %162) #13 - %163 = load ptr, ptr %21, align 8 - tail call void @PaUtil_FreeMemory(ptr noundef %163) #13 + br label %155 + +155: ; preds = %11, %157, %143 + %.1 = phi i32 [ %.0161.ph, %157 ], [ 0, %143 ], [ -9992, %11 ] + %156 = load ptr, ptr %13, align 8 + tail call void @PaPulseAudio_UnLock(ptr noundef %156) #13 + br label %160 + +157: ; preds = %109, %99, %90, %83, %58, %48, %39, %32, %16, %132, %102, %72, %51 + %.0161.ph = phi i32 [ -9999, %109 ], [ -9984, %99 ], [ -9998, %90 ], [ -9996, %83 ], [ -9999, %58 ], [ -9984, %48 ], [ -9998, %39 ], [ -9996, %32 ], [ -9992, %16 ], [ %142, %132 ], [ %108, %102 ], [ %81, %72 ], [ %57, %51 ] + %158 = load ptr, ptr %19, align 8 + tail call void @PaUtil_FreeMemory(ptr noundef %158) #13 + %159 = load ptr, ptr %21, align 8 + tail call void @PaUtil_FreeMemory(ptr noundef %159) #13 tail call void @PaUtil_FreeMemory(ptr noundef nonnull %15) #13 - br label %159 + br label %155 -164: ; preds = %9, %159 - %.0160 = phi i32 [ %.1, %159 ], [ -9995, %9 ] +160: ; preds = %9, %155 + %.0160 = phi i32 [ %.1, %155 ], [ -9995, %9 ] ret i32 %.0160 } diff --git a/bench/postgres/optimized/pathkeys.ll b/bench/postgres/optimized/pathkeys.ll index b544d10a62f..62528157026 100644 --- a/bench/postgres/optimized/pathkeys.ll +++ b/bench/postgres/optimized/pathkeys.ll @@ -3408,9 +3408,7 @@ update_mergeclause_eclasses.exit: ; preds = %.lr.ph11.i, %.prehe 116: ; preds = %._crit_edge187 %117 = tail call ptr @list_copy_head(ptr noundef nonnull %76, i32 noundef %5) #10 - tail call void @pfree(ptr noundef %10) #10 - tail call void @pfree(ptr noundef %12) #10 - br label %list_length.exit.thread + br label %list_length.exit.thread.sink.split .thread160: ; preds = %..loopexit_crit_edge.us, %.lr.ph198, %.thread157, %.lr.ph198.split.us.split, %._crit_edge187, %._crit_edge180 %.0111 = phi ptr [ null, %._crit_edge187 ], [ null, %._crit_edge180 ], [ %92, %.lr.ph198.split.us.split ], [ %92, %.thread157 ], [ %92, %.lr.ph198 ], [ %92, %..loopexit_crit_edge.us ] @@ -3445,7 +3443,7 @@ update_mergeclause_eclasses.exit: ; preds = %.lr.ph11.i, %.prehe %.0114.lcssa = phi i64 [ 0, %119 ], [ %125, %._crit_edge208.loopexit ] %.0112.lcssa = phi i32 [ %120, %119 ], [ %spec.select144, %._crit_edge208.loopexit ] %126 = icmp slt i32 %.0112.lcssa, 0 - br i1 %126, label %137, label %127 + br i1 %126, label %list_length.exit.thread.sink.split, label %127 127: ; preds = %._crit_edge208 %128 = getelementptr ptr, ptr %10, i64 %.0114.lcssa @@ -3461,13 +3459,14 @@ update_mergeclause_eclasses.exit: ; preds = %.lr.ph11.i, %.prehe %136 = tail call ptr @lappend(ptr noundef %.1, ptr noundef %135) #10 br label %119 -137: ; preds = %._crit_edge208 +list_length.exit.thread.sink.split: ; preds = %._crit_edge208, %116 + %.0.ph = phi ptr [ %117, %116 ], [ %.1, %._crit_edge208 ] tail call void @pfree(ptr noundef %10) #10 - tail call void @pfree(ptr noundef nonnull %12) #10 + tail call void @pfree(ptr noundef %12) #10 br label %list_length.exit.thread -list_length.exit.thread: ; preds = %3, %list_length.exit, %137, %116 - %.0 = phi ptr [ %.1, %137 ], [ %117, %116 ], [ null, %list_length.exit ], [ null, %3 ] +list_length.exit.thread: ; preds = %list_length.exit.thread.sink.split, %3, %list_length.exit + %.0 = phi ptr [ null, %list_length.exit ], [ null, %3 ], [ %.0.ph, %list_length.exit.thread.sink.split ] ret ptr %.0 } diff --git a/bench/proj/optimized/4D_api.cpp.ll b/bench/proj/optimized/4D_api.cpp.ll index 5cf7a6a6a3c..61af1e01bd2 100644 --- a/bench/proj/optimized/4D_api.cpp.ll +++ b/bench/proj/optimized/4D_api.cpp.ll @@ -2252,13 +2252,13 @@ _ZNSt12__shared_ptrIN5osgeo4proj2io15DatabaseContextELN9__gnu_cxx12_Lock_policyE ; Function Attrs: mustprogress uwtable define ptr @proj_trans_get_last_used_operation(ptr noundef %0) local_unnamed_addr #1 { %2 = icmp eq ptr %0, null - br i1 %2, label %21, label %3 + br i1 %2, label %19, label %3 3: ; preds = %1 %4 = getelementptr inbounds i8, ptr %0, i64 840 %5 = load i32, ptr %4, align 8 %6 = icmp slt i32 %5, 0 - br i1 %6, label %21, label %7 + br i1 %6, label %19, label %7 7: ; preds = %3 %8 = getelementptr inbounds i8, ptr %0, i64 816 @@ -2267,21 +2267,21 @@ define ptr @proj_trans_get_last_used_operation(ptr noundef %0) local_unnamed_add %11 = load ptr, ptr %10, align 8 %12 = icmp eq ptr %9, %11 %13 = load ptr, ptr %0, align 8 - br i1 %12, label %14, label %16 + br i1 %12, label %.sink.split, label %14 14: ; preds = %7 - %15 = tail call ptr @proj_clone(ptr noundef %13, ptr noundef nonnull %0) - br label %21 + %15 = zext nneg i32 %5 to i64 + %16 = getelementptr inbounds %struct.PJCoordOperation, ptr %9, i64 %15, i32 10 + %17 = load ptr, ptr %16, align 8 + br label %.sink.split -16: ; preds = %7 - %17 = zext nneg i32 %5 to i64 - %18 = getelementptr inbounds %struct.PJCoordOperation, ptr %9, i64 %17, i32 10 - %19 = load ptr, ptr %18, align 8 - %20 = tail call ptr @proj_clone(ptr noundef %13, ptr noundef %19) - br label %21 +.sink.split: ; preds = %7, %14 + %.sink = phi ptr [ %17, %14 ], [ %0, %7 ] + %18 = tail call ptr @proj_clone(ptr noundef %13, ptr noundef %.sink) + br label %19 -21: ; preds = %1, %3, %16, %14 - %.0 = phi ptr [ %15, %14 ], [ %20, %16 ], [ null, %3 ], [ null, %1 ] +19: ; preds = %.sink.split, %1, %3 + %.0 = phi ptr [ null, %3 ], [ null, %1 ], [ %18, %.sink.split ] ret ptr %.0 } @@ -6042,16 +6042,15 @@ define internal fastcc noundef ptr @_ZL43create_operation_geocentric_crs_to_geog .critedge: ; preds = %2, %20 call void (ptr, ptr, ...) @_Z22proj_context_log_debugP6pj_ctxPKcz(ptr noundef %0, ptr noundef nonnull @.str.93) - call void @proj_list_destroy(ptr noundef %17) br label %25 23: ; preds = %20 %24 = call ptr @proj_list_get(ptr noundef %0, ptr noundef nonnull %17, i32 noundef 0) - call void @proj_list_destroy(ptr noundef nonnull %17) br label %25 25: ; preds = %23, %.critedge %.0 = phi ptr [ null, %.critedge ], [ %24, %23 ] + call void @proj_list_destroy(ptr noundef %17) ret ptr %.0 } diff --git a/bench/protobuf/optimized/enum.cc.ll b/bench/protobuf/optimized/enum.cc.ll index ead47a8d9c2..de1d1931d9d 100644 --- a/bench/protobuf/optimized/enum.cc.ll +++ b/bench/protobuf/optimized/enum.cc.ll @@ -12703,26 +12703,18 @@ if.then: ; preds = %entry %conv3.i = zext i8 %1 to i64 %arrayidx.i6.i = getelementptr inbounds %"union.absl::lts_20230802::container_internal::map_slot_type.281", ptr %add.ptr.i.i.i.i, i64 %conv3.i %cmp.not7.i = icmp eq i8 %1, 0 - br i1 %cmp.not7.i, label %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit, label %for.body.i + br i1 %cmp.not7.i, label %return.sink.split, label %for.body.i for.body.i: ; preds = %if.then, %for.body.i %s.08.i = phi ptr [ %incdec.ptr.i, %for.body.i ], [ %add.ptr.i.i.i.i, %if.then ] tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %s.08.i) #27 %incdec.ptr.i = getelementptr inbounds i8, ptr %s.08.i, i64 40 %cmp.not.i = icmp eq ptr %incdec.ptr.i, %arrayidx.i6.i - br i1 %cmp.not.i, label %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit, label %for.body.i, !llvm.loop !255 - -_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit: ; preds = %for.body.i, %if.then - tail call void @_ZdlPv(ptr noundef %node) #28 - br label %return + br i1 %cmp.not.i, label %return.sink.split, label %for.body.i, !llvm.loop !255 if.end: ; preds = %entry %cmp = icmp eq i8 %1, 0 - br i1 %cmp, label %if.then7, label %while.body.preheader - -if.then7: ; preds = %if.end - tail call void @_ZdlPv(ptr noundef nonnull %node) #28 - br label %return + br i1 %cmp, label %return.sink.split, label %while.body.preheader while.body.preheader: ; preds = %if.end %2 = load ptr, ptr %node, align 8 @@ -12838,7 +12830,11 @@ do.end52: ; preds = %if.end46 %conv39 = zext i8 %16 to i64 br label %do.body.backedge -return: ; preds = %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit86, %if.then7, %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit +return.sink.split: ; preds = %for.body.i, %if.end, %if.then + tail call void @_ZdlPv(ptr noundef %node) #28 + br label %return + +return: ; preds = %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit86, %return.sink.split ret void } diff --git a/bench/protobuf/optimized/field_mask_util.cc.ll b/bench/protobuf/optimized/field_mask_util.cc.ll index 1b99215500d..2b9e2fb62fe 100644 --- a/bench/protobuf/optimized/field_mask_util.cc.ll +++ b/bench/protobuf/optimized/field_mask_util.cc.ll @@ -4137,7 +4137,7 @@ if.then: ; preds = %entry %2 = getelementptr inbounds i8, ptr %node, i64 %arrayidx.i83.idx %arrayidx.i83.ptr = getelementptr inbounds i8, ptr %2, i64 16 %cmp.not.i3 = icmp eq i8 %node.val52, 0 - br i1 %cmp.not.i3, label %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10unique_ptrIN6google8protobuf4util12_GLOBAL__N_113FieldMaskTree4NodeESt14default_deleteISG_EESt4lessIS9_ESaISt4pairIKS9_SJ_EELi256ELb0EEEE15value_destroy_nEhhPSP_.exit, label %for.body.i.preheader + br i1 %cmp.not.i3, label %return.sink.split, label %for.body.i.preheader for.body.i.preheader: ; preds = %if.then %add.ptr.i.i.i84.ptr = getelementptr inbounds i8, ptr %node, i64 16 @@ -4170,19 +4170,11 @@ _ZNSt15__new_allocatorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaI tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %s.0.i4) #20 %incdec.ptr.i = getelementptr inbounds i8, ptr %s.0.i4, i64 40 %cmp.not.i = icmp eq ptr %incdec.ptr.i, %arrayidx.i83.ptr - br i1 %cmp.not.i, label %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10unique_ptrIN6google8protobuf4util12_GLOBAL__N_113FieldMaskTree4NodeESt14default_deleteISG_EESt4lessIS9_ESaISt4pairIKS9_SJ_EELi256ELb0EEEE15value_destroy_nEhhPSP_.exit, label %for.body.i, !llvm.loop !104 - -_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10unique_ptrIN6google8protobuf4util12_GLOBAL__N_113FieldMaskTree4NodeESt14default_deleteISG_EESt4lessIS9_ESaISt4pairIKS9_SJ_EELi256ELb0EEEE15value_destroy_nEhhPSP_.exit: ; preds = %_ZNSt15__new_allocatorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10unique_ptrIN6google8protobuf4util12_GLOBAL__N_113FieldMaskTree4NodeESt14default_deleteISE_EEEE7destroyISI_EEvPT_.exit, %if.then - tail call void @_ZdlPv(ptr noundef %node) #19 - br label %return + br i1 %cmp.not.i, label %return.sink.split, label %for.body.i, !llvm.loop !104 if.end: ; preds = %entry %cmp = icmp eq i8 %node.val52, 0 - br i1 %cmp, label %if.then7, label %while.body.preheader - -if.then7: ; preds = %if.end - tail call void @_ZdlPv(ptr noundef nonnull %node) #19 - br label %return + br i1 %cmp, label %return.sink.split, label %while.body.preheader while.body.preheader: ; preds = %if.end %node.val45 = load ptr, ptr %node, align 8 @@ -4352,7 +4344,11 @@ do.end52: ; preds = %if.end46 %conv39 = zext i8 %parent.3.val46 to i64 br label %do.body.backedge -return: ; preds = %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10unique_ptrIN6google8protobuf4util12_GLOBAL__N_113FieldMaskTree4NodeESt14default_deleteISG_EESt4lessIS9_ESaISt4pairIKS9_SJ_EELi256ELb0EEEE15value_destroy_nEhhPSP_.exit81, %if.then7, %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10unique_ptrIN6google8protobuf4util12_GLOBAL__N_113FieldMaskTree4NodeESt14default_deleteISG_EESt4lessIS9_ESaISt4pairIKS9_SJ_EELi256ELb0EEEE15value_destroy_nEhhPSP_.exit +return.sink.split: ; preds = %_ZNSt15__new_allocatorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10unique_ptrIN6google8protobuf4util12_GLOBAL__N_113FieldMaskTree4NodeESt14default_deleteISE_EEEE7destroyISI_EEvPT_.exit, %if.end, %if.then + tail call void @_ZdlPv(ptr noundef %node) #19 + br label %return + +return: ; preds = %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10unique_ptrIN6google8protobuf4util12_GLOBAL__N_113FieldMaskTree4NodeESt14default_deleteISG_EESt4lessIS9_ESaISt4pairIKS9_SJ_EELi256ELb0EEEE15value_destroy_nEhhPSP_.exit81, %return.sink.split ret void } @@ -6935,9 +6931,7 @@ _ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit: ; preds = %if.end14, %if. if.then17: ; preds = %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit %call6.val = load ptr, ptr %call6, align 8 - %call19 = tail call noundef ptr @_ZNK6google8protobuf15FieldDescriptor12message_typeEv(ptr noundef nonnull align 8 dereferenceable(88) %add.ptr.i) - tail call fastcc void @_ZN6google8protobuf4util12_GLOBAL__N_113FieldMaskTree20AddRequiredFieldPathEPNS3_4NodeEPKNS0_10DescriptorE(ptr noundef %call6.val, ptr noundef %call19) - br label %for.inc + br label %for.inc.sink.split if.else21: ; preds = %for.body %type_once_.i.i23 = getelementptr inbounds i8, ptr %add.ptr.i, i64 24 @@ -7098,14 +7092,15 @@ if.then32: ; preds = %_ZN4absl12lts_20230 %33 = getelementptr i8, ptr %second.val, i64 16 %call35.val = load i64, ptr %33, align 8 %cmp.i.i41 = icmp eq i64 %call35.val, 0 - br i1 %cmp.i.i41, label %for.inc, label %if.then38 + br i1 %cmp.i.i41, label %for.inc, label %for.inc.sink.split -if.then38: ; preds = %if.then32 - %call39 = tail call noundef ptr @_ZNK6google8protobuf15FieldDescriptor12message_typeEv(ptr noundef nonnull align 8 dereferenceable(88) %add.ptr.i) - tail call fastcc void @_ZN6google8protobuf4util12_GLOBAL__N_113FieldMaskTree20AddRequiredFieldPathEPNS3_4NodeEPKNS0_10DescriptorE(ptr noundef nonnull %second.val, ptr noundef %call39) +for.inc.sink.split: ; preds = %if.then32, %if.then17 + %call6.val.sink = phi ptr [ %call6.val, %if.then17 ], [ %second.val, %if.then32 ] + %call19 = tail call noundef ptr @_ZNK6google8protobuf15FieldDescriptor12message_typeEv(ptr noundef nonnull align 8 dereferenceable(88) %add.ptr.i) + tail call fastcc void @_ZN6google8protobuf4util12_GLOBAL__N_113FieldMaskTree20AddRequiredFieldPathEPNS3_4NodeEPKNS0_10DescriptorE(ptr noundef %call6.val.sink, ptr noundef %call19) br label %for.inc -for.inc: ; preds = %if.then17, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit, %_ZN4absl12lts_2023080218container_internal15btree_containerINS1_5btreeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10unique_ptrIN6google8protobuf4util12_GLOBAL__N_113FieldMaskTree4NodeESt14default_deleteISH_EESt4lessISA_ESaISt4pairIKSA_SK_EELi256ELb0EEEEEE4findISA_EENS1_14btree_iteratorINS1_10btree_nodeISR_EERSP_PSP_EERKT_.exit, %if.then38, %if.then32, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit37, %if.else +for.inc: ; preds = %for.inc.sink.split, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit, %_ZN4absl12lts_2023080218container_internal15btree_containerINS1_5btreeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10unique_ptrIN6google8protobuf4util12_GLOBAL__N_113FieldMaskTree4NodeESt14default_deleteISH_EESt4lessISA_ESaISt4pairIKSA_SK_EELi256ELb0EEEEEE4findISA_EENS1_14btree_iteratorINS1_10btree_nodeISR_EERSP_PSP_EERKT_.exit, %if.then32, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit37, %if.else %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 %for.end, label %for.body, !llvm.loop !141 diff --git a/bench/proxygen/optimized/HPACKDecoderBase.cpp.ll b/bench/proxygen/optimized/HPACKDecoderBase.cpp.ll index ddaae275be6..73bbf90e1a9 100644 --- a/bench/proxygen/optimized/HPACKDecoderBase.cpp.ll +++ b/bench/proxygen/optimized/HPACKDecoderBase.cpp.ll @@ -1387,23 +1387,20 @@ if.end.i.i: ; preds = %entry %value = getelementptr inbounds i8, ptr %this, i64 8 %cmp.i.i.i = icmp eq i8 %1, -128 %2 = load ptr, ptr %value, align 8 - br i1 %cmp.i.i.i, label %if.then.i.i.i, label %if.else.i.i.i - -if.then.i.i.i: ; preds = %if.end.i.i - tail call void @free(ptr noundef %2) #24 - br label %_ZN5folly14basic_fbstringIcSt11char_traitsIcESaIcENS_13fbstring_coreIcEEED2Ev.exit + br i1 %cmp.i.i.i, label %if.end.sink.split.i.i.i, label %if.else.i.i.i if.else.i.i.i: ; preds = %if.end.i.i %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %2, i64 -8 %3 = atomicrmw sub ptr %add.ptr.i.i.i.i.i, i64 1 acq_rel, align 8 %cmp.i.i.i.i = icmp eq i64 %3, 1 - br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %_ZN5folly14basic_fbstringIcSt11char_traitsIcESaIcENS_13fbstring_coreIcEEED2Ev.exit + br i1 %cmp.i.i.i.i, label %if.end.sink.spli{"code":"internal","msg":"git-diff-tree: context deadline exceeded","meta":{"cause":"*fmt.wrapError"}}