diff --git a/bench/abseil-cpp/optimized/statusor_test.cc.ll b/bench/abseil-cpp/optimized/statusor_test.cc.ll index e9f5b1ffa2e..b3dfe98be7e 100644 --- a/bench/abseil-cpp/optimized/statusor_test.cc.ll +++ b/bench/abseil-cpp/optimized/statusor_test.cc.ll @@ -122192,6 +122192,7 @@ entry: ; Function Attrs: mustprogress uwtable define internal void @_ZN12_GLOBAL__N_145StatusOr_StatusAssignmentFromStatusError_Test8TestBodyEv(ptr nocapture nonnull readnone align 8 %this) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { invoke.cont: + %ref.tmp.i = alloca %"class.absl::Status", align 8 %statusor = alloca %"class.absl::StatusOr.1459", align 8 %ref.tmp = alloca %"class.absl::Status", align 8 %gtest_ar_ = alloca %"class.testing::AssertionResult", align 8 @@ -122202,34 +122203,38 @@ invoke.cont: %ref.tmp25 = alloca %"class.absl::Status", align 8 %ref.tmp35 = alloca %"class.testing::Message", align 8 %ref.tmp38 = alloca %"class.testing::internal::AssertHelper", align 8 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp.i) + call void @_ZN4absl6StatusC1ENS_10StatusCodeESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp.i, i32 noundef 2, i64 0, ptr nonnull @.str.225) %0 = getelementptr inbounds i8, ptr %statusor, i64 8 - call void @_ZN4absl6StatusC1ENS_10StatusCodeESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 2, i64 0, ptr nonnull @.str.225) + %1 = load i64, ptr %ref.tmp.i, align 8 + store i64 %1, ptr %0, align 8 store i64 1, ptr %statusor, align 8 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp.i) store i64 5, ptr %ref.tmp, align 8 invoke void @_ZN4absl17internal_statusor12StatusOrDataINS_6StatusEE12AssignStatusIS2_EEvOT_(ptr noundef nonnull align 8 dereferenceable(16) %statusor, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont - %1 = load i64, ptr %ref.tmp, align 8 - %and.i.i.i = and i64 %1, 1 + %2 = load i64, ptr %ref.tmp, align 8 + %and.i.i.i = and i64 %2, 1 %cmp.i.not.i.i = icmp eq i64 %and.i.i.i, 0 br i1 %cmp.i.not.i.i, label %if.then.i.i, label %_ZN4absl6StatusD2Ev.exit if.then.i.i: ; preds = %invoke.cont3 - %2 = inttoptr i64 %1 to ptr - invoke void @_ZNK4absl15status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %2) + %3 = inttoptr i64 %2 to ptr + invoke void @_ZNK4absl15status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %3) to label %_ZN4absl6StatusD2Ev.exit unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %if.then.i.i - %3 = landingpad { ptr, i32 } + %4 = landingpad { ptr, i32 } catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #31 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #31 unreachable _ZN4absl6StatusD2Ev.exit: ; preds = %invoke.cont3, %if.then.i.i - %5 = load i64, ptr %statusor, align 8 - %cmp.i.i = icmp ne i64 %5, 1 + %6 = load i64, ptr %statusor, align 8 + %cmp.i.i = icmp ne i64 %6, 1 %frombool = zext i1 %cmp.i.i to i8 store i8 %frombool, ptr %gtest_ar_, align 8 %message_.i = getelementptr inbounds i8, ptr %gtest_ar_, i64 8 @@ -122237,7 +122242,7 @@ _ZN4absl6StatusD2Ev.exit: ; preds = %invoke.cont3, %if.t br i1 %cmp.i.i, label %invoke.cont26, label %if.else lpad2: ; preds = %invoke.cont - %6 = landingpad { ptr, i32 } + %7 = landingpad { ptr, i32 } cleanup call void @_ZN4absl6StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #27 br label %ehcleanup49 @@ -122262,54 +122267,54 @@ invoke.cont18: ; preds = %invoke.cont15 invoke.cont20: ; preds = %invoke.cont18 call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp12) #27 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp13) #27 - %7 = load ptr, ptr %ref.tmp9, align 8 - %cmp.not.i.i = icmp eq ptr %7, null + %8 = load ptr, ptr %ref.tmp9, align 8 + %cmp.not.i.i = icmp eq ptr %8, null br i1 %cmp.not.i.i, label %if.end, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i _ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i: ; preds = %invoke.cont20 - %vtable.i.i.i = load ptr, ptr %7, align 8 + %vtable.i.i.i = load ptr, ptr %8, align 8 %vfn.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i, i64 8 - %8 = load ptr, ptr %vfn.i.i.i, align 8 - call void %8(ptr noundef nonnull align 8 dereferenceable(128) %7) #27 + %9 = load ptr, ptr %vfn.i.i.i, align 8 + call void %9(ptr noundef nonnull align 8 dereferenceable(128) %8) #27 br label %if.end lpad10: ; preds = %if.else - %9 = landingpad { ptr, i32 } + %10 = landingpad { ptr, i32 } cleanup br label %ehcleanup22 lpad14: ; preds = %invoke.cont11 - %10 = landingpad { ptr, i32 } + %11 = landingpad { ptr, i32 } cleanup br label %ehcleanup21 lpad17: ; preds = %invoke.cont15 - %11 = landingpad { ptr, i32 } + %12 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad19: ; preds = %invoke.cont18 - %12 = landingpad { ptr, i32 } + %13 = landingpad { ptr, i32 } cleanup call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp12) #27 br label %ehcleanup ehcleanup: ; preds = %lpad19, %lpad17 - %.pn = phi { ptr, i32 } [ %12, %lpad19 ], [ %11, %lpad17 ] + %.pn = phi { ptr, i32 } [ %13, %lpad19 ], [ %12, %lpad17 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp13) #27 br label %ehcleanup21 ehcleanup21: ; preds = %ehcleanup, %lpad14 - %.pn.pn = phi { ptr, i32 } [ %.pn, %ehcleanup ], [ %10, %lpad14 ] - %13 = load ptr, ptr %ref.tmp9, align 8 - %cmp.not.i.i8 = icmp eq ptr %13, null + %.pn.pn = phi { ptr, i32 } [ %.pn, %ehcleanup ], [ %11, %lpad14 ] + %14 = load ptr, ptr %ref.tmp9, align 8 + %cmp.not.i.i8 = icmp eq ptr %14, null br i1 %cmp.not.i.i8, label %_ZN7testing7MessageD2Ev.exit12, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i9 _ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i9: ; preds = %ehcleanup21 - %vtable.i.i.i10 = load ptr, ptr %13, align 8 + %vtable.i.i.i10 = load ptr, ptr %14, align 8 %vfn.i.i.i11 = getelementptr inbounds i8, ptr %vtable.i.i.i10, i64 8 - %14 = load ptr, ptr %vfn.i.i.i11, align 8 - call void %14(ptr noundef nonnull align 8 dereferenceable(128) %13) #27 + %15 = load ptr, ptr %vfn.i.i.i11, align 8 + call void %15(ptr noundef nonnull align 8 dereferenceable(128) %14) #27 br label %_ZN7testing7MessageD2Ev.exit12 _ZN7testing7MessageD2Ev.exit12: ; preds = %ehcleanup21, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i9 @@ -122330,8 +122335,8 @@ _ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEP invoke.cont26: ; preds = %_ZN4absl6StatusD2Ev.exit, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i, %if.end store ptr null, ptr %message_.i, align 8 store i64 5, ptr %ref.tmp25, align 8 - %15 = load i64, ptr %statusor, align 8, !noalias !2200 - %cmp.i.i.i = icmp eq i64 %15, 5 + %16 = load i64, ptr %statusor, align 8, !noalias !2200 + %cmp.i.i.i = icmp eq i64 %16, 5 br i1 %cmp.i.i.i, label %if.then.i.i15, label %if.end.i.i if.then.i.i15: ; preds = %invoke.cont26 @@ -122343,35 +122348,35 @@ if.end.i.i: ; preds = %invoke.cont26 to label %invoke.cont30 unwind label %lpad29 invoke.cont30: ; preds = %if.then.i.i15, %if.end.i.i - %16 = load i64, ptr %ref.tmp25, align 8 - %and.i.i.i18 = and i64 %16, 1 + %17 = load i64, ptr %ref.tmp25, align 8 + %and.i.i.i18 = and i64 %17, 1 %cmp.i.not.i.i19 = icmp eq i64 %and.i.i.i18, 0 br i1 %cmp.i.not.i.i19, label %if.then.i.i20, label %_ZN4absl6StatusD2Ev.exit22 if.then.i.i20: ; preds = %invoke.cont30 - %17 = inttoptr i64 %16 to ptr - invoke void @_ZNK4absl15status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %17) + %18 = inttoptr i64 %17 to ptr + invoke void @_ZNK4absl15status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %18) to label %_ZN4absl6StatusD2Ev.exit22 unwind label %terminate.lpad.i21 terminate.lpad.i21: ; preds = %if.then.i.i20 - %18 = landingpad { ptr, i32 } + %19 = landingpad { ptr, i32 } catch ptr null - %19 = extractvalue { ptr, i32 } %18, 0 - call void @__clang_call_terminate(ptr %19) #31 + %20 = extractvalue { ptr, i32 } %19, 0 + call void @__clang_call_terminate(ptr %20) #31 unreachable _ZN4absl6StatusD2Ev.exit22: ; preds = %invoke.cont30, %if.then.i.i20 - %20 = load i8, ptr %gtest_ar, align 8 - %tobool.i23 = trunc i8 %20 to i1 + %21 = load i8, ptr %gtest_ar, align 8 + %tobool.i23 = trunc i8 %21 to i1 br i1 %tobool.i23, label %if.end47, label %if.else34 ehcleanup22: ; preds = %_ZN7testing7MessageD2Ev.exit12, %lpad10 - %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %_ZN7testing7MessageD2Ev.exit12 ], [ %9, %lpad10 ] + %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %_ZN7testing7MessageD2Ev.exit12 ], [ %10, %lpad10 ] call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %gtest_ar_) #27 br label %ehcleanup49 lpad29: ; preds = %if.end.i.i, %if.then.i.i15 - %21 = landingpad { ptr, i32 } + %22 = landingpad { ptr, i32 } cleanup call void @_ZN4absl6StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp25) #27 br label %ehcleanup49 @@ -122382,12 +122387,12 @@ if.else34: ; preds = %_ZN4absl6StatusD2Ev invoke.cont37: ; preds = %if.else34 %message_.i.i = getelementptr inbounds i8, ptr %gtest_ar, i64 8 - %22 = load ptr, ptr %message_.i.i, align 8 - %cmp.i.i.not.i.i = icmp eq ptr %22, null + %23 = load ptr, ptr %message_.i.i, align 8 + %cmp.i.i.not.i.i = icmp eq ptr %23, null br i1 %cmp.i.i.not.i.i, label %invoke.cont40, label %cond.true.i.i cond.true.i.i: ; preds = %invoke.cont37 - %call4.i.i = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %22) #27 + %call4.i.i = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %23) #27 br label %invoke.cont40 invoke.cont40: ; preds = %cond.true.i.i, %invoke.cont37 @@ -122401,15 +122406,15 @@ invoke.cont42: ; preds = %invoke.cont40 invoke.cont44: ; preds = %invoke.cont42 call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp38) #27 - %23 = load ptr, ptr %ref.tmp35, align 8 - %cmp.not.i.i24 = icmp eq ptr %23, null + %24 = load ptr, ptr %ref.tmp35, align 8 + %cmp.not.i.i24 = icmp eq ptr %24, null br i1 %cmp.not.i.i24, label %_ZN7testing7MessageD2Ev.exit28, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i25 _ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i25: ; preds = %invoke.cont44 - %vtable.i.i.i26 = load ptr, ptr %23, align 8 + %vtable.i.i.i26 = load ptr, ptr %24, align 8 %vfn.i.i.i27 = getelementptr inbounds i8, ptr %vtable.i.i.i26, i64 8 - %24 = load ptr, ptr %vfn.i.i.i27, align 8 - call void %24(ptr noundef nonnull align 8 dereferenceable(128) %23) #27 + %25 = load ptr, ptr %vfn.i.i.i27, align 8 + call void %25(ptr noundef nonnull align 8 dereferenceable(128) %24) #27 br label %_ZN7testing7MessageD2Ev.exit28 _ZN7testing7MessageD2Ev.exit28: ; preds = %invoke.cont44, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i25 @@ -122417,32 +122422,32 @@ _ZN7testing7MessageD2Ev.exit28: ; preds = %invoke.cont44, %_ZN br label %if.end47 lpad36: ; preds = %if.else34 - %25 = landingpad { ptr, i32 } + %26 = landingpad { ptr, i32 } cleanup br label %ehcleanup48 lpad39: ; preds = %invoke.cont40 - %26 = landingpad { ptr, i32 } + %27 = landingpad { ptr, i32 } cleanup br label %ehcleanup46 lpad43: ; preds = %invoke.cont42 - %27 = landingpad { ptr, i32 } + %28 = landingpad { ptr, i32 } cleanup call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp38) #27 br label %ehcleanup46 ehcleanup46: ; preds = %lpad43, %lpad39 - %.pn4 = phi { ptr, i32 } [ %27, %lpad43 ], [ %26, %lpad39 ] - %28 = load ptr, ptr %ref.tmp35, align 8 - %cmp.not.i.i29 = icmp eq ptr %28, null + %.pn4 = phi { ptr, i32 } [ %28, %lpad43 ], [ %27, %lpad39 ] + %29 = load ptr, ptr %ref.tmp35, align 8 + %cmp.not.i.i29 = icmp eq ptr %29, null br i1 %cmp.not.i.i29, label %_ZN7testing7MessageD2Ev.exit33, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i30 _ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i30: ; preds = %ehcleanup46 - %vtable.i.i.i31 = load ptr, ptr %28, align 8 + %vtable.i.i.i31 = load ptr, ptr %29, align 8 %vfn.i.i.i32 = getelementptr inbounds i8, ptr %vtable.i.i.i31, i64 8 - %29 = load ptr, ptr %vfn.i.i.i32, align 8 - call void %29(ptr noundef nonnull align 8 dereferenceable(128) %28) #27 + %30 = load ptr, ptr %vfn.i.i.i32, align 8 + call void %30(ptr noundef nonnull align 8 dereferenceable(128) %29) #27 br label %_ZN7testing7MessageD2Ev.exit33 _ZN7testing7MessageD2Ev.exit33: ; preds = %ehcleanup46, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i30 @@ -122451,66 +122456,66 @@ _ZN7testing7MessageD2Ev.exit33: ; preds = %ehcleanup46, %_ZNKS if.end47: ; preds = %_ZN4absl6StatusD2Ev.exit22, %_ZN7testing7MessageD2Ev.exit28 %message_.i34 = getelementptr inbounds i8, ptr %gtest_ar, i64 8 - %30 = load ptr, ptr %message_.i34, align 8 - %cmp.not.i.i35 = icmp eq ptr %30, null + %31 = load ptr, ptr %message_.i34, align 8 + %cmp.not.i.i35 = icmp eq ptr %31, null br i1 %cmp.not.i.i35, label %_ZN7testing15AssertionResultD2Ev.exit37, label %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i36 _ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i36: ; preds = %if.end47 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #27 - call void @_ZdlPv(ptr noundef nonnull %30) #28 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #27 + call void @_ZdlPv(ptr noundef nonnull %31) #28 br label %_ZN7testing15AssertionResultD2Ev.exit37 _ZN7testing15AssertionResultD2Ev.exit37: ; preds = %if.end47, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i36 store ptr null, ptr %message_.i34, align 8 - %31 = load i64, ptr %statusor, align 8 - %cmp.i.i.i.i = icmp eq i64 %31, 1 + %32 = load i64, ptr %statusor, align 8 + %cmp.i.i.i.i = icmp eq i64 %32, 1 br i1 %cmp.i.i.i.i, label %_ZN4absl6StatusD2Ev.exit.i.i, label %if.else.i.i _ZN4absl6StatusD2Ev.exit.i.i: ; preds = %_ZN7testing15AssertionResultD2Ev.exit37 - %32 = load i64, ptr %0, align 8 - %and.i.i.i1.i.i = and i64 %32, 1 + %33 = load i64, ptr %0, align 8 + %and.i.i.i1.i.i = and i64 %33, 1 %cmp.i.not.i.i2.i.i = icmp eq i64 %and.i.i.i1.i.i, 0 br i1 %cmp.i.not.i.i2.i.i, label %if.then.i.i3.i.i, label %_ZN4absl8StatusOrINS_6StatusEED2Ev.exit if.then.i.i3.i.i: ; preds = %_ZN4absl6StatusD2Ev.exit.i.i - %33 = inttoptr i64 %32 to ptr - invoke void @_ZNK4absl15status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %33) + %34 = inttoptr i64 %33 to ptr + invoke void @_ZNK4absl15status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %34) to label %_ZN4absl8StatusOrINS_6StatusEED2Ev.exit unwind label %terminate.lpad.i4.i.i terminate.lpad.i4.i.i: ; preds = %if.then.i.i3.i.i - %34 = landingpad { ptr, i32 } + %35 = landingpad { ptr, i32 } catch ptr null - %35 = extractvalue { ptr, i32 } %34, 0 - call void @__clang_call_terminate(ptr %35) #31 + %36 = extractvalue { ptr, i32 } %35, 0 + call void @__clang_call_terminate(ptr %36) #31 unreachable if.else.i.i: ; preds = %_ZN7testing15AssertionResultD2Ev.exit37 - %and.i.i.i6.i.i = and i64 %31, 1 + %and.i.i.i6.i.i = and i64 %32, 1 %cmp.i.not.i.i7.i.i = icmp eq i64 %and.i.i.i6.i.i, 0 br i1 %cmp.i.not.i.i7.i.i, label %if.then.i.i8.i.i, label %_ZN4absl8StatusOrINS_6StatusEED2Ev.exit if.then.i.i8.i.i: ; preds = %if.else.i.i - %36 = inttoptr i64 %31 to ptr - invoke void @_ZNK4absl15status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %36) + %37 = inttoptr i64 %32 to ptr + invoke void @_ZNK4absl15status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %37) to label %_ZN4absl8StatusOrINS_6StatusEED2Ev.exit unwind label %terminate.lpad.i9.i.i terminate.lpad.i9.i.i: ; preds = %if.then.i.i8.i.i - %37 = landingpad { ptr, i32 } + %38 = landingpad { ptr, i32 } catch ptr null - %38 = extractvalue { ptr, i32 } %37, 0 - call void @__clang_call_terminate(ptr %38) #31 + %39 = extractvalue { ptr, i32 } %38, 0 + call void @__clang_call_terminate(ptr %39) #31 unreachable _ZN4absl8StatusOrINS_6StatusEED2Ev.exit: ; preds = %_ZN4absl6StatusD2Ev.exit.i.i, %if.then.i.i3.i.i, %if.else.i.i, %if.then.i.i8.i.i ret void ehcleanup48: ; preds = %_ZN7testing7MessageD2Ev.exit33, %lpad36 - %.pn4.pn = phi { ptr, i32 } [ %.pn4, %_ZN7testing7MessageD2Ev.exit33 ], [ %25, %lpad36 ] + %.pn4.pn = phi { ptr, i32 } [ %.pn4, %_ZN7testing7MessageD2Ev.exit33 ], [ %26, %lpad36 ] call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %gtest_ar) #27 br label %ehcleanup49 ehcleanup49: ; preds = %ehcleanup48, %lpad29, %ehcleanup22, %lpad2 - %.pn4.pn.pn = phi { ptr, i32 } [ %.pn4.pn, %ehcleanup48 ], [ %21, %lpad29 ], [ %.pn.pn.pn, %ehcleanup22 ], [ %6, %lpad2 ] + %.pn4.pn.pn = phi { ptr, i32 } [ %.pn4.pn, %ehcleanup48 ], [ %22, %lpad29 ], [ %.pn.pn.pn, %ehcleanup22 ], [ %7, %lpad2 ] call void @_ZN4absl8StatusOrINS_6StatusEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %statusor) #27 resume { ptr, i32 } %.pn4.pn.pn } diff --git a/bench/actix-rs/optimized/3q3jkuswkinqn2en.ll b/bench/actix-rs/optimized/3q3jkuswkinqn2en.ll index 890ea66c22d..4b254528ddf 100644 --- a/bench/actix-rs/optimized/3q3jkuswkinqn2en.ll +++ b/bench/actix-rs/optimized/3q3jkuswkinqn2en.ll @@ -2218,10 +2218,8 @@ _ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit.i.i8.i: ; preds = %.0.sroa.speculated.i23.i12 = phi i64 [ %.0.sroa.speculated.i23.i11, %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.i" ], [ %.0.sroa.speculated.i23.i, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i" ], [ 0, %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit.i.i.i ] %64 = phi i64 [ %62, %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.i" ], [ %61, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i" ], [ 0, %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit.i.i.i ] %65 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i4.i17, i64 %.0.sroa.speculated.i23.i12 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) call void @_ZN11actix_files8path_buf11PathBufWrap10parse_path17hec1a22edd47e4ef5E(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 1 %65, i64 noundef %64, i1 noundef zeroext false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) ret void } diff --git a/bench/actix-rs/optimized/48s07gwzc9uq6bop.ll b/bench/actix-rs/optimized/48s07gwzc9uq6bop.ll index a592fc080ec..a2ac0dc29e2 100644 --- a/bench/actix-rs/optimized/48s07gwzc9uq6bop.ll +++ b/bench/actix-rs/optimized/48s07gwzc9uq6bop.ll @@ -497,31 +497,35 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17hd154e818eac4a7 ; Function Attrs: nonlazybind uwtable define hidden void @_ZN5regex8regexset6string8RegexSet3new17h1d9f77a0a4aba50dE(ptr noalias nocapture noundef sret({ ptr, [3 x i64] }) align 8 dereferenceable(32) %0, ptr noalias nocapture noundef align 8 dereferenceable(24) %1) unnamed_addr #3 personality ptr @rust_eh_personality { - %3 = alloca { { { { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { [24 x i8], i8, [7 x i8] }, { i8, [1 x i8] }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }, { { i64, ptr, {} }, i64 }, { i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [2 x i8] } } }, align 8 + %3 = alloca { { { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { [24 x i8], i8, [7 x i8] }, { i8, [1 x i8] }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }, { { i64, ptr, {} }, i64 }, { i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [2 x i8] } }, align 8 + %4 = alloca { { { { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { [24 x i8], i8, [7 x i8] }, { i8, [1 x i8] }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }, { { i64, ptr, {} }, i64 }, { i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [2 x i8] } } }, align 8 + call void @llvm.lifetime.start.p0(i64 168, ptr nonnull %4) call void @llvm.lifetime.start.p0(i64 168, ptr nonnull %3) call void @_ZN5regex8builders7Builder3new17hfc0afc4a85e2761aE(ptr noalias nocapture noundef nonnull sret({ { { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { [24 x i8], i8, [7 x i8] }, { i8, [1 x i8] }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }, { { i64, ptr, {} }, i64 }, { i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [2 x i8] } }) align 8 dereferenceable(168) %3, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %1) - invoke void @_ZN5regex8builders6string15RegexSetBuilder5build17hfaf32f9b5cb4fe61E(ptr noalias nocapture noundef nonnull sret({ ptr, [3 x i64] }) align 8 dereferenceable(32) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(168) %3) - to label %6 unwind label %4 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(168) %4, ptr noundef nonnull align 8 dereferenceable(168) %3, i64 168, i1 false) + call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %3) + invoke void @_ZN5regex8builders6string15RegexSetBuilder5build17hfaf32f9b5cb4fe61E(ptr noalias nocapture noundef nonnull sret({ ptr, [3 x i64] }) align 8 dereferenceable(32) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(168) %4) + to label %7 unwind label %5 -4: ; preds = %2 - %5 = landingpad { ptr, i32 } +5: ; preds = %2 + %6 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr45drop_in_place$LT$regex..builders..Builder$GT$17h94e4e6597030ae71E"(ptr noalias noundef nonnull align 8 dereferenceable(168) %3) - to label %"_ZN4core3ptr61drop_in_place$LT$regex..builders..string..RegexSetBuilder$GT$17ha51c5a8728b63292E.exit" unwind label %7 + invoke void @"_ZN4core3ptr45drop_in_place$LT$regex..builders..Builder$GT$17h94e4e6597030ae71E"(ptr noalias noundef nonnull align 8 dereferenceable(168) %4) + to label %"_ZN4core3ptr61drop_in_place$LT$regex..builders..string..RegexSetBuilder$GT$17ha51c5a8728b63292E.exit" unwind label %8 -6: ; preds = %2 - call void @"_ZN4core3ptr45drop_in_place$LT$regex..builders..Builder$GT$17h94e4e6597030ae71E"(ptr noalias noundef nonnull align 8 dereferenceable(168) %3) - call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %3) +7: ; preds = %2 + call void @"_ZN4core3ptr45drop_in_place$LT$regex..builders..Builder$GT$17h94e4e6597030ae71E"(ptr noalias noundef nonnull align 8 dereferenceable(168) %4) + call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %4) ret void -7: ; preds = %4 - %8 = landingpad { ptr, i32 } +8: ; preds = %5 + %9 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #15 unreachable -"_ZN4core3ptr61drop_in_place$LT$regex..builders..string..RegexSetBuilder$GT$17ha51c5a8728b63292E.exit": ; preds = %4 - resume { ptr, i32 } %5 +"_ZN4core3ptr61drop_in_place$LT$regex..builders..string..RegexSetBuilder$GT$17ha51c5a8728b63292E.exit": ; preds = %5 + resume { ptr, i32 } %6 } ; Function Attrs: inlinehint mustprogress nofree nounwind nonlazybind willreturn memory(read, inaccessiblemem: readwrite) uwtable diff --git a/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll b/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll index 4d2b8ced2cc..0ee7ae681d0 100644 --- a/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll +++ b/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll @@ -9446,76 +9446,74 @@ define hidden void @"_ZN6brotli3enc19context_map_entropy30ContextMapEntropy$LT$A ; Function Attrs: nonlazybind uwtable define hidden void @"_ZN6brotli3enc6writer25CompressorWriter$LT$W$GT$3new17h7c89be31f82c014aE"(ptr noalias nocapture noundef writeonly sret({ { { { i64, [1 x i64] }, { { i64, [14 x i64] }, { i32, [1 x i32] }, { [4 x { i16, i16 }], { i64, i32, i32, i32, [1 x i32] }, i64, { i32, i32, i32, i32, i32, i32 }, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [7 x i8] }, { { { { { { ptr, i64 } }, {} }, {} } }, i64, i32, i32, i32, i32, i32, i32 }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, i64, i64, i64, i64, i64, i64, i64, [16 x i32], [4 x i32], i64, [1024 x i32], [128 x i8], [128 x i16], [512 x i8], i64, i64, i64, [16 x i8], i64, i32, i32, i16, i8, i8, i8, i8, {}, i8, i8, i8, {}, {}, {}, [7 x i8] }, { { { { { ptr, i64 } }, {} }, {} } }, { ptr, [3 x i64] }, ptr } } }) align 8 dereferenceable(5648) %0, ptr noalias nocapture noundef align 8 dereferenceable(32) %1, i64 noundef %2, i32 noundef %3, i32 noundef %4) unnamed_addr #1 personality ptr @rust_eh_personality { %6 = alloca { { { ptr, i64, i64, ptr } } }, align 8 - %7 = alloca { { i64, ptr, {} }, i64 }, align 8 - %.sroa.0 = alloca { { i64, [1 x i64] }, { { i64, [14 x i64] }, { i32, [1 x i32] }, { [4 x { i16, i16 }], { i64, i32, i32, i32, [1 x i32] }, i64, { i32, i32, i32, i32, i32, i32 }, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [7 x i8] }, { { { { { { ptr, i64 } }, {} }, {} } }, i64, i32, i32, i32, i32, i32, i32 }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, i64, i64, i64, i64, i64, i64, i64, [16 x i32], [4 x i32], i64, [1024 x i32], [128 x i8], [128 x i16], [512 x i8], i64, i64, i64, [16 x i8], i64, i32, i32, i16, i8, i8, i8, i8, {}, i8, i8, i8, {}, {}, {}, [7 x i8] }, { { { { { ptr, i64 } }, {} }, {} } }, { ptr, [3 x i64] }, ptr }, align 8 - %8 = icmp eq i64 %2, 0 - %spec.store.select = select i1 %8, i64 4096, i64 %2 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) - %9 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h6e5f59cc06b1616aE"(i64 noundef %spec.store.select, i1 noundef zeroext true) - to label %.noexc unwind label %26 + %7 = alloca { { i64, [1 x i64] }, { { i64, [14 x i64] }, { i32, [1 x i32] }, { [4 x { i16, i16 }], { i64, i32, i32, i32, [1 x i32] }, i64, { i32, i32, i32, i32, i32, i32 }, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [7 x i8] }, { { { { { { ptr, i64 } }, {} }, {} } }, i64, i32, i32, i32, i32, i32, i32 }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, i64, i64, i64, i64, i64, i64, i64, [16 x i32], [4 x i32], i64, [1024 x i32], [128 x i8], [128 x i16], [512 x i8], i64, i64, i64, [16 x i8], i64, i32, i32, i16, i8, i8, i8, i8, {}, i8, i8, i8, {}, {}, {}, [7 x i8] }, { { { { { ptr, i64 } }, {} }, {} } }, { ptr, [3 x i64] }, ptr }, align 8 + %8 = alloca { { i64, ptr, {} }, i64 }, align 8 + %9 = icmp eq i64 %2, 0 + %spec.store.select = select i1 %9, i64 4096, i64 %2 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) + %10 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h6e5f59cc06b1616aE"(i64 noundef %spec.store.select, i1 noundef zeroext true) + to label %.noexc unwind label %27 .noexc: ; preds = %5 - %10 = extractvalue { i64, ptr } %9, 1 - %.sink1.i.i = extractvalue { i64, ptr } %9, 0 - store i64 %.sink1.i.i, ptr %7, align 8, !alias.scope !978 - %11 = getelementptr inbounds i8, ptr %7, i64 8 - store ptr %10, ptr %11, align 8, !alias.scope !978 - %12 = getelementptr inbounds i8, ptr %7, i64 16 - store i64 %spec.store.select, ptr %12, align 8, !alias.scope !978 - %13 = invoke { ptr, i64 } @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16into_boxed_slice17hf746a9a921295d28E"(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %7) - to label %14 unwind label %26 - -14: ; preds = %.noexc - %15 = extractvalue { ptr, i64 } %13, 0 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) - %16 = icmp ne ptr %15, null - tail call void @llvm.assume(i1 %16) - %17 = extractvalue { ptr, i64 } %13, 1 - call void @llvm.lifetime.start.p0(i64 5648, ptr nonnull %.sroa.0) + %11 = extractvalue { i64, ptr } %10, 1 + %.sink1.i.i = extractvalue { i64, ptr } %10, 0 + store i64 %.sink1.i.i, ptr %8, align 8, !alias.scope !978 + %12 = getelementptr inbounds i8, ptr %8, i64 8 + store ptr %11, ptr %12, align 8, !alias.scope !978 + %13 = getelementptr inbounds i8, ptr %8, i64 16 + store i64 %spec.store.select, ptr %13, align 8, !alias.scope !978 + %14 = invoke { ptr, i64 } @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16into_boxed_slice17hf746a9a921295d28E"(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %8) + to label %15 unwind label %27 + +15: ; preds = %.noexc + %16 = extractvalue { ptr, i64 } %14, 0 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) + %17 = icmp ne ptr %16, null + tail call void @llvm.assume(i1 %17) + %18 = extractvalue { ptr, i64 } %14, 1 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6), !noalias !981 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %1, i64 32, i1 false) - %18 = invoke noundef nonnull ptr @_ZN3std2io5error5Error3new17h3ec4cf2bbe40c7d6E(i8 noundef 21, ptr noalias noundef nonnull readonly align 1 @anon.854811f44bca550c56cb6f681a6a9a44.258.llvm.2002727345234535996, i64 noundef 12) - to label %19 unwind label %20, !noalias !981 + %19 = invoke noundef nonnull ptr @_ZN3std2io5error5Error3new17h3ec4cf2bbe40c7d6E(i8 noundef 21, ptr noalias noundef nonnull readonly align 1 @anon.854811f44bca550c56cb6f681a6a9a44.258.llvm.2002727345234535996, i64 noundef 12) + to label %20 unwind label %21, !noalias !981 -19: ; preds = %14 - call void @"_ZN6brotli3enc6writer64CompressorWriterCustomIo$LT$ErrType$C$W$C$BufferType$C$Alloc$GT$3new17hbcafba27d6e69a79E.llvm.2002727345234535996"(ptr noalias nocapture noundef nonnull sret({ { i64, [1 x i64] }, { { i64, [14 x i64] }, { i32, [1 x i32] }, { [4 x { i16, i16 }], { i64, i32, i32, i32, [1 x i32] }, i64, { i32, i32, i32, i32, i32, i32 }, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [7 x i8] }, { { { { { { ptr, i64 } }, {} }, {} } }, i64, i32, i32, i32, i32, i32, i32 }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, i64, i64, i64, i64, i64, i64, i64, [16 x i32], [4 x i32], i64, [1024 x i32], [128 x i8], [128 x i16], [512 x i8], i64, i64, i64, [16 x i8], i64, i32, i32, i16, i8, i8, i8, i8, {}, i8, i8, i8, {}, {}, {}, [7 x i8] }, { { { { { ptr, i64 } }, {} }, {} } }, { ptr, [3 x i64] }, ptr }) align 8 dereferenceable(5648) %.sroa.0, ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %6, ptr noalias noundef nonnull align 1 %15, i64 noundef %17, ptr noundef nonnull %18, i32 noundef %3, i32 noundef %4) +20: ; preds = %15 + call void @"_ZN6brotli3enc6writer64CompressorWriterCustomIo$LT$ErrType$C$W$C$BufferType$C$Alloc$GT$3new17hbcafba27d6e69a79E.llvm.2002727345234535996"(ptr noalias nocapture noundef nonnull sret({ { i64, [1 x i64] }, { { i64, [14 x i64] }, { i32, [1 x i32] }, { [4 x { i16, i16 }], { i64, i32, i32, i32, [1 x i32] }, i64, { i32, i32, i32, i32, i32, i32 }, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [7 x i8] }, { { { { { { ptr, i64 } }, {} }, {} } }, i64, i32, i32, i32, i32, i32, i32 }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, { { { { { ptr, i64 } }, {} }, {} } }, i64, i64, i64, i64, i64, i64, i64, [16 x i32], [4 x i32], i64, [1024 x i32], [128 x i8], [128 x i16], [512 x i8], i64, i64, i64, [16 x i8], i64, i32, i32, i16, i8, i8, i8, i8, {}, i8, i8, i8, {}, {}, {}, [7 x i8] }, { { { { { ptr, i64 } }, {} }, {} } }, { ptr, [3 x i64] }, ptr }) align 8 dereferenceable(5648) %7, ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %6, ptr noalias noundef nonnull align 1 %16, i64 noundef %18, ptr noundef nonnull %19, i32 noundef %3, i32 noundef %4) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6), !noalias !981 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(5648) %0, ptr noundef nonnull align 8 dereferenceable(5648) %.sroa.0, i64 5648, i1 false) - call void @llvm.lifetime.end.p0(i64 5648, ptr nonnull %.sroa.0) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(5648) %0, ptr noundef nonnull align 8 dereferenceable(5648) %7, i64 5648, i1 false) ret void -20: ; preds = %14 - %21 = landingpad { ptr, i32 } +21: ; preds = %15 + %22 = landingpad { ptr, i32 } cleanup - %22 = icmp eq i64 %17, 0 - br i1 %22, label %25, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.14998522591088738574.exit.i.i.i.i" + %23 = icmp eq i64 %18, 0 + br i1 %23, label %26, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.14998522591088738574.exit.i.i.i.i" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.14998522591088738574.exit.i.i.i.i": ; preds = %20 - tail call void @__rust_dealloc(ptr noundef nonnull %15, i64 noundef %17, i64 noundef 1) #32, !noalias !986 - br label %25 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.14998522591088738574.exit.i.i.i.i": ; preds = %21 + tail call void @__rust_dealloc(ptr noundef nonnull %16, i64 noundef %18, i64 noundef 1) #32, !noalias !986 + br label %26 -23: ; preds = %25 - %24 = landingpad { ptr, i32 } +24: ; preds = %26 + %25 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #34, !noalias !993 unreachable -25: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.14998522591088738574.exit.i.i.i.i", %20 +26: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.14998522591088738574.exit.i.i.i.i", %21 invoke void @"_ZN68_$LT$bytes..bytes_mut..BytesMut$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha467eeae9528831cE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %6) - to label %.body.thread unwind label %23, !noalias !993 + to label %.body.thread unwind label %24, !noalias !993 -.body.thread: ; preds = %26, %25 - %eh.lpad-body9 = phi { ptr, i32 } [ %21, %25 ], [ %lpad.thr_comm, %26 ] +.body.thread: ; preds = %27, %26 + %eh.lpad-body9 = phi { ptr, i32 } [ %22, %26 ], [ %lpad.thr_comm, %27 ] resume { ptr, i32 } %eh.lpad-body9 -26: ; preds = %5, %.noexc +27: ; preds = %5, %.noexc %lpad.thr_comm = landingpad { ptr, i32 } cleanup invoke void @"_ZN68_$LT$bytes..bytes_mut..BytesMut$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha467eeae9528831cE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %1) - to label %.body.thread unwind label %27 + to label %.body.thread unwind label %28 -27: ; preds = %26 - %28 = landingpad { ptr, i32 } +28: ; preds = %27 + %29 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #34 unreachable @@ -10610,16 +10608,19 @@ define noundef zeroext i1 @_ZN10actix_http4body4size8BodySize6is_eof17h6371df0f3 define hidden void @_ZN10actix_http4test10TestBuffer3new17he49f29118c46ec0fE(ptr noalias nocapture noundef writeonly sret({ ptr, ptr, ptr }) align 8 dereferenceable(24) %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) unnamed_addr #1 personality ptr @rust_eh_personality { %4 = alloca { i64, i64, { i64, { { ptr, i64, i64, ptr } } } }, align 8 %5 = alloca { i64, i64, { i64, { { ptr, i64, i64, ptr } } } }, align 8 + %.sroa.4 = alloca { ptr, i64, i64, ptr }, align 8 %6 = alloca ptr, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) - %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %5, i64 24 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %.sroa.4) + call void @"_ZN81_$LT$bytes..bytes_mut..BytesMut$u20$as$u20$core..convert..From$LT$$RF$str$GT$$GT$4from17hccb93b5a183180afE"(ptr noalias nocapture noundef nonnull sret({ ptr, i64, i64, ptr }) align 8 dereferenceable(32) %.sroa.4, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %5), !noalias !1078 - call void @"_ZN81_$LT$bytes..bytes_mut..BytesMut$u20$as$u20$core..convert..From$LT$$RF$str$GT$$GT$4from17hccb93b5a183180afE"(ptr noalias nocapture noundef nonnull sret({ ptr, i64, i64, ptr }) align 8 dereferenceable(32) %.sroa.4.0..sroa_idx, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) store i64 1, ptr %5, align 8, !noalias !1078 %7 = getelementptr inbounds i8, ptr %5, i64 8 store i64 1, ptr %7, align 8, !noalias !1078 %8 = getelementptr inbounds i8, ptr %5, i64 16 store i64 0, ptr %8, align 8 + %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %5, i64 24 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.4.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.4, i64 32, i1 false) %9 = invoke { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17hb4f01ccf52c1821cE.llvm.448588166012416074(ptr noalias noundef nonnull readonly align 1 @anon.8f37cc3906fcce93576d9d7b4606f951.29.llvm.448588166012416074, i64 noundef 8, i64 noundef 56, i1 noundef zeroext false) to label %.noexc.i unwind label %13, !noalias !1078 @@ -10655,6 +10656,7 @@ common.resume: ; preds = %.body, %13 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %10, ptr noundef nonnull align 8 dereferenceable(56) %5, i64 56, i1 false) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %5), !noalias !1078 store ptr %10, ptr %6, align 8 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.4) %17 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h6e5f59cc06b1616aE"(i64 noundef 0, i1 noundef zeroext false) to label %20 unwind label %18 diff --git a/bench/actix-rs/optimized/4qw0kfiz3ki66qyr.ll b/bench/actix-rs/optimized/4qw0kfiz3ki66qyr.ll index 48b03451382..0f8772803a9 100644 --- a/bench/actix-rs/optimized/4qw0kfiz3ki66qyr.ll +++ b/bench/actix-rs/optimized/4qw0kfiz3ki66qyr.ll @@ -748,69 +748,73 @@ _ZN14regex_automata4meta5regex5Regex25which_overlapping_matches17h1d9e57daa28201 ; Function Attrs: nonlazybind uwtable define void @_ZN12actix_router9regex_set8RegexSet3new17h80c031cfb9aa7aa8E(ptr noalias nocapture noundef writeonly sret({ { { ptr, ptr }, { { { ptr, i64 } }, {}, {} } } }) align 8 dereferenceable(32) %0, ptr noalias nocapture noundef align 8 dereferenceable(24) %1) unnamed_addr #1 personality ptr @rust_eh_personality { - %3 = alloca { { { { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { [24 x i8], i8, [7 x i8] }, { i8, [1 x i8] }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }, { { i64, ptr, {} }, i64 }, { i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [2 x i8] } } }, align 8 - %4 = alloca { i64, [2 x i64] }, align 8 - %5 = alloca { ptr, [3 x i64] }, align 8 - %6 = alloca { { ptr, ptr }, { { { ptr, i64 } }, {}, {} } }, align 8 + %3 = alloca { { { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { [24 x i8], i8, [7 x i8] }, { i8, [1 x i8] }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }, { { i64, ptr, {} }, i64 }, { i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [2 x i8] } }, align 8 + %4 = alloca { { { { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { [24 x i8], i8, [7 x i8] }, { i8, [1 x i8] }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }, { { i64, ptr, {} }, i64 }, { i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [2 x i8] } } }, align 8 + %5 = alloca { i64, [2 x i64] }, align 8 + %6 = alloca { ptr, [3 x i64] }, align 8 + %7 = alloca { { ptr, ptr }, { { { ptr, i64 } }, {}, {} } }, align 8 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) + call void @llvm.lifetime.start.p0(i64 168, ptr nonnull %4), !noalias !89 call void @llvm.lifetime.start.p0(i64 168, ptr nonnull %3), !noalias !89 call void @_ZN5regex8builders7Builder3new17hfc0afc4a85e2761aE(ptr noalias nocapture noundef nonnull sret({ { { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { [24 x i8], i8, [7 x i8] }, { i8, [1 x i8] }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }, { { i64, ptr, {} }, i64 }, { i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [2 x i8] } }) align 8 dereferenceable(168) %3, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %1), !noalias !93 - invoke void @_ZN5regex8builders6string15RegexSetBuilder5build17hfaf32f9b5cb4fe61E(ptr noalias nocapture noundef nonnull sret({ ptr, [3 x i64] }) align 8 dereferenceable(32) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(168) %3) - to label %_ZN5regex8regexset6string8RegexSet3new17h1d9f77a0a4aba50dE.exit unwind label %7, !noalias !94 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(168) %4, ptr noundef nonnull align 8 dereferenceable(168) %3, i64 168, i1 false), !noalias !89 + call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %3), !noalias !89 + invoke void @_ZN5regex8builders6string15RegexSetBuilder5build17hfaf32f9b5cb4fe61E(ptr noalias nocapture noundef nonnull sret({ ptr, [3 x i64] }) align 8 dereferenceable(32) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(168) %4) + to label %_ZN5regex8regexset6string8RegexSet3new17h1d9f77a0a4aba50dE.exit unwind label %8, !noalias !94 -7: ; preds = %2 - %8 = landingpad { ptr, i32 } +8: ; preds = %2 + %9 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr45drop_in_place$LT$regex..builders..Builder$GT$17h94e4e6597030ae71E"(ptr noalias noundef nonnull align 8 dereferenceable(168) %3) - to label %common.resume unwind label %9, !noalias !89 + invoke void @"_ZN4core3ptr45drop_in_place$LT$regex..builders..Builder$GT$17h94e4e6597030ae71E"(ptr noalias noundef nonnull align 8 dereferenceable(168) %4) + to label %common.resume unwind label %10, !noalias !89 -9: ; preds = %7 - %10 = landingpad { ptr, i32 } +10: ; preds = %8 + %11 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #16, !noalias !89 unreachable -common.resume: ; preds = %15, %7 - %common.resume.op = phi { ptr, i32 } [ %8, %7 ], [ %16, %15 ] +common.resume: ; preds = %16, %8 + %common.resume.op = phi { ptr, i32 } [ %9, %8 ], [ %17, %16 ] resume { ptr, i32 } %common.resume.op _ZN5regex8regexset6string8RegexSet3new17h1d9f77a0a4aba50dE.exit: ; preds = %2 - call void @"_ZN4core3ptr45drop_in_place$LT$regex..builders..Builder$GT$17h94e4e6597030ae71E"(ptr noalias noundef nonnull align 8 dereferenceable(168) %3), !noalias !89 - call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %3), !noalias !89 + call void @"_ZN4core3ptr45drop_in_place$LT$regex..builders..Builder$GT$17h94e4e6597030ae71E"(ptr noalias noundef nonnull align 8 dereferenceable(168) %4), !noalias !89 + call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %4), !noalias !89 call void @llvm.experimental.noalias.scope.decl(metadata !95) call void @llvm.experimental.noalias.scope.decl(metadata !98) - %11 = load ptr, ptr %5, align 8, !alias.scope !98, !noalias !100, !noundef !10 - %12 = icmp eq ptr %11, null - br i1 %12, label %13, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hca27a6db71fc154aE.llvm.6377515938606049148.exit" - -13: ; preds = %_ZN5regex8regexset6string8RegexSet3new17h1d9f77a0a4aba50dE.exit - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !102 - %14 = getelementptr inbounds i8, ptr %5, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %14, i64 24, i1 false), !noalias !100 - invoke void @_ZN4core6result13unwrap_failed17ha188096f98826595E(ptr noalias noundef nonnull readonly align 1 @anon.c811ec582cdc986de3ef720eba6c8e83.38.llvm.6377515938606049148, i64 noundef 43, ptr noundef nonnull align 1 %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.c811ec582cdc986de3ef720eba6c8e83.39.llvm.6377515938606049148, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.c811ec582cdc986de3ef720eba6c8e83.41.llvm.6377515938606049148) #13 - to label %17 unwind label %15, !noalias !103 - -15: ; preds = %13 - %16 = landingpad { ptr, i32 } + %12 = load ptr, ptr %6, align 8, !alias.scope !98, !noalias !100, !noundef !10 + %13 = icmp eq ptr %12, null + br i1 %13, label %14, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hca27a6db71fc154aE.llvm.6377515938606049148.exit" + +14: ; preds = %_ZN5regex8regexset6string8RegexSet3new17h1d9f77a0a4aba50dE.exit + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !102 + %15 = getelementptr inbounds i8, ptr %6, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %15, i64 24, i1 false), !noalias !100 + invoke void @_ZN4core6result13unwrap_failed17ha188096f98826595E(ptr noalias noundef nonnull readonly align 1 @anon.c811ec582cdc986de3ef720eba6c8e83.38.llvm.6377515938606049148, i64 noundef 43, ptr noundef nonnull align 1 %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.c811ec582cdc986de3ef720eba6c8e83.39.llvm.6377515938606049148, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.c811ec582cdc986de3ef720eba6c8e83.41.llvm.6377515938606049148) #13 + to label %18 unwind label %16, !noalias !103 + +16: ; preds = %14 + %17 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr40drop_in_place$LT$regex..error..Error$GT$17h94ec53c9aa435809E.llvm.6377515938606049148"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) #15 - to label %common.resume unwind label %18, !noalias !103 + invoke void @"_ZN4core3ptr40drop_in_place$LT$regex..error..Error$GT$17h94ec53c9aa435809E.llvm.6377515938606049148"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) #15 + to label %common.resume unwind label %19, !noalias !103 -17: ; preds = %13 +18: ; preds = %14 unreachable -18: ; preds = %15 - %19 = landingpad { ptr, i32 } +19: ; preds = %16 + %20 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #16, !noalias !103 unreachable "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hca27a6db71fc154aE.llvm.6377515938606049148.exit": ; preds = %_ZN5regex8regexset6string8RegexSet3new17h1d9f77a0a4aba50dE.exit - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %5, i64 32, i1 false), !alias.scope !103, !noalias !104 - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %6, i64 32, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %6, i64 32, i1 false), !alias.scope !103, !noalias !104 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %7, i64 32, i1 false) + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) ret void } diff --git a/bench/actix-rs/optimized/d7z2ueos8qkfuul.ll b/bench/actix-rs/optimized/d7z2ueos8qkfuul.ll index ac39e785f07..3f781a1b4b8 100644 --- a/bench/actix-rs/optimized/d7z2ueos8qkfuul.ll +++ b/bench/actix-rs/optimized/d7z2ueos8qkfuul.ll @@ -33577,87 +33577,91 @@ common.ret: ; preds = %321, %147, %82 ; Function Attrs: nonlazybind uwtable define void @"_ZN84_$LT$awc..client..connection..H2ConnectionInner$u20$as$u20$core..ops..drop..Drop$GT$4drop17hba179975a6aba4e5E"(ptr noalias noundef align 8 dereferenceable(40) %0) unnamed_addr #1 personality ptr @rust_eh_personality { %2 = alloca { { { { ptr, { i32, i32 } }, ptr }, i8, [7 x i8] } }, align 8 - %3 = alloca { { i8, [39 x i8] } }, align 8 + %3 = alloca { { { ptr, { i32, i32 } }, i8, [7 x i8] }, { { { ptr, { i32, i32 } }, ptr } } }, align 8 %4 = alloca { { i8, [39 x i8] } }, align 8 - %5 = alloca { i8, [39 x i8] }, align 8 + %5 = alloca { { i8, [39 x i8] } }, align 8 + %6 = alloca { i8, [39 x i8] }, align 8 %.sroa.6.i = alloca [39 x i8], align 1 - %6 = alloca ptr, align 8 - %7 = alloca { { { { i64, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { { { ptr, i64 } }, {} }, {} }, i16, [3 x i16] }, { { { i8, [15 x i8] } }, { { { ptr, ptr, i64, { ptr } } } }, { { { ptr, ptr, i64, { ptr } } }, i16, [3 x i16] } }, { { i8, [23 x i8] } }, ptr, i8, {}, [7 x i8] }, {} }, align 8 - %8 = alloca { i64, [6 x i64] }, align 8 - call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %8) - %9 = getelementptr inbounds i8, ptr %0, i64 8 - call void @llvm.lifetime.start.p0(i64 224, ptr nonnull %7) - call void @_ZN4http7request5Parts3new17h4ee87e1ebd391abfE(ptr noalias nocapture noundef nonnull sret({ { { i64, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { { { ptr, i64 } }, {} }, {} }, i16, [3 x i16] }, { { { i8, [15 x i8] } }, { { { ptr, ptr, i64, { ptr } } } }, { { { ptr, ptr, i64, { ptr } } }, i16, [3 x i16] } }, { { i8, [23 x i8] } }, ptr, i8, {}, [7 x i8] }) align 8 dereferenceable(224) %7) + %7 = alloca ptr, align 8 + %8 = alloca { { { { i64, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { { { ptr, i64 } }, {} }, {} }, i16, [3 x i16] }, { { { i8, [15 x i8] } }, { { { ptr, ptr, i64, { ptr } } } }, { { { ptr, ptr, i64, { ptr } } }, i16, [3 x i16] } }, { { i8, [23 x i8] } }, ptr, i8, {}, [7 x i8] }, {} }, align 8 + %9 = alloca { i64, [6 x i64] }, align 8 + call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %9) + %10 = getelementptr inbounds i8, ptr %0, i64 8 + call void @llvm.lifetime.start.p0(i64 224, ptr nonnull %8) + call void @_ZN4http7request5Parts3new17h4ee87e1ebd391abfE(ptr noalias nocapture noundef nonnull sret({ { { i64, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { { { ptr, i64 } }, {} }, {} }, i16, [3 x i16] }, { { { i8, [15 x i8] } }, { { { ptr, ptr, i64, { ptr } } } }, { { { ptr, ptr, i64, { ptr } } }, i16, [3 x i16] } }, { { i8, [23 x i8] } }, ptr, i8, {}, [7 x i8] }) align 8 dereferenceable(224) %8) tail call void @llvm.experimental.noalias.scope.decl(metadata !9766) tail call void @llvm.experimental.noalias.scope.decl(metadata !9769) - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) - store ptr %9, ptr %6, align 8, !noalias !9771 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) + store ptr %10, ptr %7, align 8, !noalias !9771 call void @llvm.lifetime.start.p0(i64 39, ptr nonnull %.sroa.6.i) - call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5), !noalias !9771 - %10 = getelementptr inbounds i8, ptr %0, i64 24 - %11 = load ptr, ptr %10, align 8, !alias.scope !9769, !noalias !9773, !noundef !4 - %12 = icmp eq ptr %11, null - %..i = select i1 %12, ptr null, ptr %10 - call void @"_ZN2h25proto7streams7streams20Streams$LT$B$C$P$GT$12send_request17h995ceea8f4dd5603E"(ptr noalias nocapture noundef nonnull sret({ i8, [39 x i8] }) align 8 dereferenceable(40) %5, ptr noalias noundef nonnull align 8 dereferenceable(16) %9, ptr noalias nocapture noundef nonnull align 8 dereferenceable(224) %7, i1 noundef zeroext true, ptr noalias noundef readonly align 8 dereferenceable_or_null(16) %..i), !noalias !9766 + call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6), !noalias !9771 + %11 = getelementptr inbounds i8, ptr %0, i64 24 + %12 = load ptr, ptr %11, align 8, !alias.scope !9769, !noalias !9773, !noundef !4 + %13 = icmp eq ptr %12, null + %..i = select i1 %13, ptr null, ptr %11 + call void @"_ZN2h25proto7streams7streams20Streams$LT$B$C$P$GT$12send_request17h995ceea8f4dd5603E"(ptr noalias nocapture noundef nonnull sret({ i8, [39 x i8] }) align 8 dereferenceable(40) %6, ptr noalias noundef nonnull align 8 dereferenceable(16) %10, ptr noalias nocapture noundef nonnull align 8 dereferenceable(224) %8, i1 noundef zeroext true, ptr noalias noundef readonly align 8 dereferenceable_or_null(16) %..i), !noalias !9766 tail call void @llvm.experimental.noalias.scope.decl(metadata !9774) tail call void @llvm.experimental.noalias.scope.decl(metadata !9777) - %13 = load i8, ptr %5, align 8, !range !1379, !alias.scope !9777, !noalias !9779, !noundef !4 - %14 = icmp eq i8 %13, 4 - br i1 %14, label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hda87a7b4ff855175E.llvm.14108317313071697234.exit.thread.i", label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hda87a7b4ff855175E.llvm.14108317313071697234.exit.i" + %14 = load i8, ptr %6, align 8, !range !1379, !alias.scope !9777, !noalias !9779, !noundef !4 + %15 = icmp eq i8 %14, 4 + br i1 %15, label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hda87a7b4ff855175E.llvm.14108317313071697234.exit.thread.i", label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hda87a7b4ff855175E.llvm.14108317313071697234.exit.i" "_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hda87a7b4ff855175E.llvm.14108317313071697234.exit.thread.i": ; preds = %1 - %15 = getelementptr inbounds i8, ptr %5, i64 8 + %16 = getelementptr inbounds i8, ptr %6, i64 8 %.sroa.6.8..sroa_idx.i = getelementptr inbounds i8, ptr %.sroa.6.i, i64 7 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %.sroa.6.8..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(32) %15, i64 32, i1 false), !alias.scope !9780, !noalias !9771 - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5), !noalias !9771 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %.sroa.6.8..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(32) %16, i64 32, i1 false), !alias.scope !9780, !noalias !9771 + call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6), !noalias !9771 br label %"_ZN4core3ptr153drop_in_place$LT$core..result..Result$LT$$LP$h2..client..ResponseFuture$C$h2..share..SendStream$LT$bytes..bytes..Bytes$GT$$RP$$C$h2..error..Error$GT$$GT$17h1536c51918f03d7aE.llvm.14828715386332725032.exit" "_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hda87a7b4ff855175E.llvm.14108317313071697234.exit.i": ; preds = %1 - call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %3), !noalias !9781 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 8 dereferenceable(40) %5, i64 40, i1 false), !noalias !9779 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4), !noalias !9781 - call void @"_ZN91_$LT$h2..error..Error$u20$as$u20$core..convert..From$LT$h2..codec..error..SendError$GT$$GT$4from17h5ec768395179ab99E"(ptr noalias nocapture noundef nonnull sret({ { i8, [39 x i8] } }) align 8 dereferenceable(40) %4, ptr noalias nocapture noundef nonnull align 8 dereferenceable(40) %3), !noalias !9782 - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3), !noalias !9781 - %.sroa.0.0.copyload.i = load i8, ptr %4, align 8, !noalias !9785 - %.sroa.6.0..sroa_idx.i = getelementptr inbounds i8, ptr %4, i64 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(39) %.sroa.6.i, ptr noundef nonnull align 1 dereferenceable(39) %.sroa.6.0..sroa_idx.i, i64 39, i1 false), !noalias !9785 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %4, ptr noundef nonnull align 8 dereferenceable(40) %6, i64 40, i1 false), !noalias !9779 + call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5), !noalias !9781 + call void @"_ZN91_$LT$h2..error..Error$u20$as$u20$core..convert..From$LT$h2..codec..error..SendError$GT$$GT$4from17h5ec768395179ab99E"(ptr noalias nocapture noundef nonnull sret({ { i8, [39 x i8] } }) align 8 dereferenceable(40) %5, ptr noalias nocapture noundef nonnull align 8 dereferenceable(40) %4), !noalias !9782 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4), !noalias !9781 - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5), !noalias !9771 + %.sroa.0.0.copyload.i = load i8, ptr %5, align 8, !noalias !9785 + %.sroa.6.0..sroa_idx.i = getelementptr inbounds i8, ptr %5, i64 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(39) %.sroa.6.i, ptr noundef nonnull align 1 dereferenceable(39) %.sroa.6.0..sroa_idx.i, i64 39, i1 false), !noalias !9785 + call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5), !noalias !9781 + call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6), !noalias !9771 tail call void @llvm.experimental.noalias.scope.decl(metadata !9786) tail call void @llvm.experimental.noalias.scope.decl(metadata !9789) - %16 = icmp eq i8 %.sroa.0.0.copyload.i, 5 - br i1 %16, label %"_ZN4core3ptr153drop_in_place$LT$core..result..Result$LT$$LP$h2..client..ResponseFuture$C$h2..share..SendStream$LT$bytes..bytes..Bytes$GT$$RP$$C$h2..error..Error$GT$$GT$17h1536c51918f03d7aE.llvm.14828715386332725032.exit", label %"_ZN4core3ptr153drop_in_place$LT$core..result..Result$LT$$LP$h2..client..ResponseFuture$C$h2..share..SendStream$LT$bytes..bytes..Bytes$GT$$RP$$C$h2..error..Error$GT$$GT$17h1536c51918f03d7aE.llvm.14828715386332725032.exit1" + %17 = icmp eq i8 %.sroa.0.0.copyload.i, 5 + br i1 %17, label %"_ZN4core3ptr153drop_in_place$LT$core..result..Result$LT$$LP$h2..client..ResponseFuture$C$h2..share..SendStream$LT$bytes..bytes..Bytes$GT$$RP$$C$h2..error..Error$GT$$GT$17h1536c51918f03d7aE.llvm.14828715386332725032.exit", label %"_ZN4core3ptr153drop_in_place$LT$core..result..Result$LT$$LP$h2..client..ResponseFuture$C$h2..share..SendStream$LT$bytes..bytes..Bytes$GT$$RP$$C$h2..error..Error$GT$$GT$17h1536c51918f03d7aE.llvm.14828715386332725032.exit1" "_ZN4core3ptr153drop_in_place$LT$core..result..Result$LT$$LP$h2..client..ResponseFuture$C$h2..share..SendStream$LT$bytes..bytes..Bytes$GT$$RP$$C$h2..error..Error$GT$$GT$17h1536c51918f03d7aE.llvm.14828715386332725032.exit": ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hda87a7b4ff855175E.llvm.14108317313071697234.exit.thread.i", %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hda87a7b4ff855175E.llvm.14108317313071697234.exit.i" call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2), !noalias !9791 %.sroa.6.8..sroa_idx4.i = getelementptr inbounds i8, ptr %.sroa.6.i, i64 7 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 1 dereferenceable(32) %.sroa.6.8..sroa_idx4.i, i64 32, i1 false), !noalias !9793 - %17 = getelementptr inbounds i8, ptr %8, i64 8 - call void @"_ZN2h26client20SendRequest$LT$B$GT$12send_request28_$u7b$$u7b$closure$u7d$$u7d$17he0a73652482f3894E.llvm.14108317313071697234"(ptr noalias nocapture noundef nonnull sret({ { { ptr, { i32, i32 } }, i8, [7 x i8] }, { { { ptr, { i32, i32 } }, ptr } } }) align 8 dereferenceable(48) %17, ptr noalias noundef nonnull align 8 dereferenceable(8) %6, ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %2), !noalias !9794 + call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3), !noalias !9791 + call void @"_ZN2h26client20SendRequest$LT$B$GT$12send_request28_$u7b$$u7b$closure$u7d$$u7d$17he0a73652482f3894E.llvm.14108317313071697234"(ptr noalias nocapture noundef nonnull sret({ { { ptr, { i32, i32 } }, i8, [7 x i8] }, { { { ptr, { i32, i32 } }, ptr } } }) align 8 dereferenceable(48) %3, ptr noalias noundef nonnull align 8 dereferenceable(8) %7, ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %2), !noalias !9794 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2), !noalias !9791 - store i64 0, ptr %8, align 8, !alias.scope !9795, !noalias !9796 + %18 = getelementptr inbounds i8, ptr %9, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %18, ptr noundef nonnull align 8 dereferenceable(48) %3, i64 48, i1 false), !noalias !9795 + call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3), !noalias !9791 + store i64 0, ptr %9, align 8, !alias.scope !9796, !noalias !9795 call void @llvm.lifetime.end.p0(i64 39, ptr nonnull %.sroa.6.i) - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) - call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %7) - call void @"_ZN4core3ptr106drop_in_place$LT$$LP$h2..client..ResponseFuture$C$h2..share..SendStream$LT$bytes..bytes..Bytes$GT$$RP$$GT$17h5033aa036bae1677E.llvm.14828715386332725032"(ptr noalias noundef nonnull align 8 dereferenceable(48) %17) - call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8) - br label %19 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) + call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %8) + call void @"_ZN4core3ptr106drop_in_place$LT$$LP$h2..client..ResponseFuture$C$h2..share..SendStream$LT$bytes..bytes..Bytes$GT$$RP$$GT$17h5033aa036bae1677E.llvm.14828715386332725032"(ptr noalias noundef nonnull align 8 dereferenceable(48) %18) + call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %9) + br label %20 "_ZN4core3ptr153drop_in_place$LT$core..result..Result$LT$$LP$h2..client..ResponseFuture$C$h2..share..SendStream$LT$bytes..bytes..Bytes$GT$$RP$$C$h2..error..Error$GT$$GT$17h1536c51918f03d7aE.llvm.14828715386332725032.exit1": ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hda87a7b4ff855175E.llvm.14108317313071697234.exit.i" - %18 = getelementptr inbounds i8, ptr %8, i64 8 - store i8 %.sroa.0.0.copyload.i, ptr %18, align 8, !alias.scope !9797, !noalias !9798 - %.sroa.6.0..sroa_idx3.i = getelementptr inbounds i8, ptr %8, i64 9 + %19 = getelementptr inbounds i8, ptr %9, i64 8 + store i8 %.sroa.0.0.copyload.i, ptr %19, align 8, !alias.scope !9797, !noalias !9798 + %.sroa.6.0..sroa_idx3.i = getelementptr inbounds i8, ptr %9, i64 9 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(39) %.sroa.6.0..sroa_idx3.i, ptr noundef nonnull align 1 dereferenceable(39) %.sroa.6.i, i64 39, i1 false), !alias.scope !9799, !noalias !9798 - store i64 1, ptr %8, align 8, !alias.scope !9795, !noalias !9796 + store i64 1, ptr %9, align 8, !alias.scope !9796, !noalias !9795 call void @llvm.lifetime.end.p0(i64 39, ptr nonnull %.sroa.6.i) - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) - call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %7) - call void @"_ZN4core3ptr36drop_in_place$LT$h2..error..Kind$GT$17hf651a395fa7727e7E.llvm.14828715386332725032"(ptr noalias noundef nonnull align 8 dereferenceable(40) %18) - call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8) + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) + call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %8) + call void @"_ZN4core3ptr36drop_in_place$LT$h2..error..Kind$GT$17hf651a395fa7727e7E.llvm.14828715386332725032"(ptr noalias noundef nonnull align 8 dereferenceable(40) %19) + call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %9) call void @"_ZN5tokio7runtime4task7harness52_$LT$impl$u20$tokio..runtime..task..raw..RawTask$GT$12remote_abort17hcf068a9e6bbc7470E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %0) - br label %19 + br label %20 -19: ; preds = %"_ZN4core3ptr153drop_in_place$LT$core..result..Result$LT$$LP$h2..client..ResponseFuture$C$h2..share..SendStream$LT$bytes..bytes..Bytes$GT$$RP$$C$h2..error..Error$GT$$GT$17h1536c51918f03d7aE.llvm.14828715386332725032.exit1", %"_ZN4core3ptr153drop_in_place$LT$core..result..Result$LT$$LP$h2..client..ResponseFuture$C$h2..share..SendStream$LT$bytes..bytes..Bytes$GT$$RP$$C$h2..error..Error$GT$$GT$17h1536c51918f03d7aE.llvm.14828715386332725032.exit" +20: ; preds = %"_ZN4core3ptr153drop_in_place$LT$core..result..Result$LT$$LP$h2..client..ResponseFuture$C$h2..share..SendStream$LT$bytes..bytes..Bytes$GT$$RP$$C$h2..error..Error$GT$$GT$17h1536c51918f03d7aE.llvm.14828715386332725032.exit1", %"_ZN4core3ptr153drop_in_place$LT$core..result..Result$LT$$LP$h2..client..ResponseFuture$C$h2..share..SendStream$LT$bytes..bytes..Bytes$GT$$RP$$C$h2..error..Error$GT$$GT$17h1536c51918f03d7aE.llvm.14828715386332725032.exit" ret void } @@ -44528,9 +44532,9 @@ attributes #29 = { noreturn } !9791 = !{!9787, !9790, !9792, !9767, !9770, !9772} !9792 = distinct !{!9792, !9788, !"_ZN4core6result19Result$LT$T$C$E$GT$3map17h3eb420e7239473f4E.llvm.14108317313071697234: argument 2"} !9793 = !{!9787, !9792, !9767, !9770, !9772} -!9794 = !{!9790, !9772} -!9795 = !{!9787, !9767} -!9796 = !{!9790, !9792, !9770, !9772} +!9794 = !{!9787, !9790, !9767, !9772} +!9795 = !{!9790, !9792, !9770, !9772} +!9796 = !{!9787, !9767} !9797 = !{!9787, !9790, !9767} !9798 = !{!9792, !9770, !9772} !9799 = !{!9787, !9790} diff --git a/bench/actix-rs/optimized/h71pcgvmobkrtmz.ll b/bench/actix-rs/optimized/h71pcgvmobkrtmz.ll index a38b30f2cf2..6a590824e88 100644 --- a/bench/actix-rs/optimized/h71pcgvmobkrtmz.ll +++ b/bench/actix-rs/optimized/h71pcgvmobkrtmz.ll @@ -4507,10 +4507,8 @@ define hidden void @_ZN2h25proto8settings8Settings9poll_send17hb13986ae3825d7f5E br i1 %46, label %48, label %47 47: ; preds = %45 - call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) call void @"_ZN92_$LT$h2..proto..error..Error$u20$as$u20$core..convert..From$LT$std..io..error..Error$GT$$GT$4from17h917e9afe9fdc47aaE"(ptr noalias nocapture noundef nonnull sret({ i8, [39 x i8] }) align 8 dereferenceable(40) %9, ptr noundef nonnull %42) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %9, i64 40, i1 false) - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) br label %155 48: ; preds = %45 @@ -4863,10 +4861,8 @@ _ZN2h25hpack7encoder7Encoder15update_max_size17h69fcf984a18589a4E.exit: ; preds br i1 %164, label %166, label %165 165: ; preds = %163 - call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %8) call void @"_ZN92_$LT$h2..proto..error..Error$u20$as$u20$core..convert..From$LT$std..io..error..Error$GT$$GT$4from17h917e9afe9fdc47aaE"(ptr noalias nocapture noundef nonnull sret({ i8, [39 x i8] }) align 8 dereferenceable(40) %8, ptr noundef nonnull %161) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %8, i64 40, i1 false) - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) br label %294 166: ; preds = %163 @@ -5287,10 +5283,8 @@ define hidden void @_ZN2h25proto8settings8Settings9poll_send17hda9781bbaed80a1aE br i1 %46, label %48, label %47 47: ; preds = %45 - call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) call void @"_ZN92_$LT$h2..proto..error..Error$u20$as$u20$core..convert..From$LT$std..io..error..Error$GT$$GT$4from17h917e9afe9fdc47aaE"(ptr noalias nocapture noundef nonnull sret({ i8, [39 x i8] }) align 8 dereferenceable(40) %9, ptr noundef nonnull %42) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %9, i64 40, i1 false) - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) br label %155 48: ; preds = %45 @@ -5643,10 +5637,8 @@ _ZN2h25hpack7encoder7Encoder15update_max_size17h69fcf984a18589a4E.exit: ; preds br i1 %164, label %166, label %165 165: ; preds = %163 - call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %8) call void @"_ZN92_$LT$h2..proto..error..Error$u20$as$u20$core..convert..From$LT$std..io..error..Error$GT$$GT$4from17h917e9afe9fdc47aaE"(ptr noalias nocapture noundef nonnull sret({ i8, [39 x i8] }) align 8 dereferenceable(40) %8, ptr noundef nonnull %161) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %8, i64 40, i1 false) - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) br label %294 166: ; preds = %163 diff --git a/bench/clap-rs/optimized/4bajo035z6e1d4qz.ll b/bench/clap-rs/optimized/4bajo035z6e1d4qz.ll index 043ec41448d..b97e0cf0b56 100644 --- a/bench/clap-rs/optimized/4bajo035z6e1d4qz.ll +++ b/bench/clap-rs/optimized/4bajo035z6e1d4qz.ll @@ -9901,190 +9901,198 @@ define void @_ZN12clap_builder6output3fmt9Colorizer12with_content17hd6102a1a37e8 define noundef ptr @_ZN12clap_builder6output3fmt9Colorizer5print17h1e8d51865bbae37aE(ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %0) unnamed_addr #0 personality ptr @rust_eh_personality { switch.lookup: %1 = alloca ptr, align 8 - %2 = alloca ptr, align 8 - %3 = alloca { { [12 x i8], i8, [11 x i8] } }, align 8 + %2 = alloca { { [12 x i8], i8, [11 x i8] } }, align 8 + %3 = alloca ptr, align 8 %4 = alloca { { [12 x i8], i8, [11 x i8] } }, align 8 - %5 = getelementptr inbounds i8, ptr %0, i64 25 - %6 = load i8, ptr %5, align 1, !range !2074, !noundef !5 - %7 = shl nuw nsw i8 %6, 3 - %switch.shiftamt = zext nneg i8 %7 to i24 + %5 = alloca { { [12 x i8], i8, [11 x i8] } }, align 8 + %6 = alloca { { [12 x i8], i8, [11 x i8] } }, align 8 + %7 = getelementptr inbounds i8, ptr %0, i64 25 + %8 = load i8, ptr %7, align 1, !range !2074, !noundef !5 + %9 = shl nuw nsw i8 %8, 3 + %switch.shiftamt = zext nneg i8 %9 to i24 %switch.downshift = lshr i24 197120, %switch.shiftamt %switch.masked = trunc i24 %switch.downshift to i8 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) - %8 = getelementptr inbounds i8, ptr %0, i64 24 - %9 = load i8, ptr %8, align 8, !range !284, !noundef !5 - %trunc = trunc nuw i8 %9 to i1 - br i1 %trunc, label %13, label %10 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) + %10 = getelementptr inbounds i8, ptr %0, i64 24 + %11 = load i8, ptr %10, align 8, !range !284, !noundef !5 + %trunc = trunc nuw i8 %11 to i1 + br i1 %trunc, label %15, label %12 -10: ; preds = %switch.lookup +12: ; preds = %switch.lookup + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %1) - %11 = tail call noundef nonnull align 8 ptr @_ZN3std2io5stdio6stdout17hef67cddda34c75efE() - store ptr %11, ptr %1, align 8 - %12 = call noundef nonnull align 8 ptr @_ZN3std2io5stdio6Stdout4lock17h50d92567ab37f388E(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %1) - call fastcc void @"_ZN8anstream4auto19AutoStream$LT$S$GT$3new17hf3a497e9d570c81aE"(ptr noalias nocapture noundef align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 %12, i8 noundef %switch.masked) + %13 = tail call noundef nonnull align 8 ptr @_ZN3std2io5stdio6stdout17hef67cddda34c75efE() + store ptr %13, ptr %1, align 8 + %14 = call noundef nonnull align 8 ptr @_ZN3std2io5stdio6Stdout4lock17h50d92567ab37f388E(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %1) + call fastcc void @"_ZN8anstream4auto19AutoStream$LT$S$GT$3new17hf3a497e9d570c81aE"(ptr noalias nocapture noundef align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 %14, i8 noundef %switch.masked) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %1) - br label %16 + br label %18 -13: ; preds = %switch.lookup - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) - store ptr @_ZN3std2io5stdio6stderr8INSTANCE17h92bdbb22b083e19dE, ptr %2, align 8 - %14 = call noundef nonnull align 8 ptr @_ZN3std2io5stdio6Stderr4lock17h5cab974ef0b107bfE(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %2) - call fastcc void @"_ZN8anstream4auto19AutoStream$LT$S$GT$3new17hf9ba629d2214c12cE"(ptr noalias nocapture noundef align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 %14, i8 noundef %switch.masked) - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) - br label %16 +15: ; preds = %switch.lookup + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) + store ptr @_ZN3std2io5stdio6stderr8INSTANCE17h92bdbb22b083e19dE, ptr %3, align 8 + %16 = call noundef nonnull align 8 ptr @_ZN3std2io5stdio6Stderr4lock17h5cab974ef0b107bfE(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %3) + call fastcc void @"_ZN8anstream4auto19AutoStream$LT$S$GT$3new17hf9ba629d2214c12cE"(ptr noalias nocapture noundef align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 %16, i8 noundef %switch.masked) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) + br label %18 -15: ; preds = %16 +17: ; preds = %18 %lpad.thr_comm.split-lp = landingpad { ptr, i32 } cleanup - br i1 %trunc, label %70, label %73 + br i1 %trunc, label %72, label %75 -16: ; preds = %13, %10 - %.sroa.3.0 = phi ptr [ @anon.2a757f94df976b32f02a2f1dccbcbbcb.87, %13 ], [ @anon.2a757f94df976b32f02a2f1dccbcbbcb.86, %10 ] - %.sroa.0.0 = phi ptr [ %3, %13 ], [ %4, %10 ] +18: ; preds = %15, %12 + %.sroa.3.0 = phi ptr [ @anon.2a757f94df976b32f02a2f1dccbcbbcb.87, %15 ], [ @anon.2a757f94df976b32f02a2f1dccbcbbcb.86, %12 ] + %.sroa.0.0 = phi ptr [ %5, %15 ], [ %6, %12 ] call void @llvm.experimental.noalias.scope.decl(metadata !2075) call void @llvm.experimental.noalias.scope.decl(metadata !2078) - %17 = getelementptr inbounds i8, ptr %0, i64 8 - %18 = load ptr, ptr %17, align 8, !alias.scope !2075, !noalias !2078, !nonnull !5, !noundef !5 - %19 = getelementptr inbounds i8, ptr %0, i64 16 - %20 = load i64, ptr %19, align 8, !alias.scope !2075, !noalias !2078, !noundef !5 - %21 = getelementptr inbounds i8, ptr %.sroa.3.0, i64 56 - %22 = load ptr, ptr %21, align 8, !invariant.load !5, !alias.scope !2078, !noalias !2075, !nonnull !5 - %23 = invoke noundef ptr %22(ptr noundef nonnull align 1 %.sroa.0.0, ptr noalias noundef nonnull readonly align 1 %18, i64 noundef %20) - to label %_ZN12clap_builder7builder10styled_str9StyledStr8write_to17h62d20dc810fce987E.exit unwind label %15 - -_ZN12clap_builder7builder10styled_str9StyledStr8write_to17h62d20dc810fce987E.exit: ; preds = %16 - br i1 %trunc, label %24, label %46 - -"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StderrLock$GT$$GT$17h541a8926d68eee9eE.exit": ; preds = %"_ZN4core3ptr47drop_in_place$LT$std..io..stdio..StderrLock$GT$17h13363fcb957efd9bE.exit.sink.split.i.i", %.noexc11, %37, %.noexc, %28 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) + %19 = getelementptr inbounds i8, ptr %0, i64 8 + %20 = load ptr, ptr %19, align 8, !alias.scope !2075, !noalias !2078, !nonnull !5, !noundef !5 + %21 = getelementptr inbounds i8, ptr %0, i64 16 + %22 = load i64, ptr %21, align 8, !alias.scope !2075, !noalias !2078, !noundef !5 + %23 = getelementptr inbounds i8, ptr %.sroa.3.0, i64 56 + %24 = load ptr, ptr %23, align 8, !invariant.load !5, !alias.scope !2078, !noalias !2075, !nonnull !5 + %25 = invoke noundef ptr %24(ptr noundef nonnull align 1 %.sroa.0.0, ptr noalias noundef nonnull readonly align 1 %20, i64 noundef %22) + to label %_ZN12clap_builder7builder10styled_str9StyledStr8write_to17h62d20dc810fce987E.exit unwind label %17 + +_ZN12clap_builder7builder10styled_str9StyledStr8write_to17h62d20dc810fce987E.exit: ; preds = %18 + br i1 %trunc, label %26, label %48 + +"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StderrLock$GT$$GT$17h541a8926d68eee9eE.exit": ; preds = %"_ZN4core3ptr47drop_in_place$LT$std..io..stdio..StderrLock$GT$17h13363fcb957efd9bE.exit.sink.split.i.i", %.noexc11, %39, %.noexc, %30 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) br label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StdoutLock$GT$$GT$17h030c49b74094db73E.exit" -24: ; preds = %_ZN12clap_builder7builder10styled_str9StyledStr8write_to17h62d20dc810fce987E.exit +26: ; preds = %_ZN12clap_builder7builder10styled_str9StyledStr8write_to17h62d20dc810fce987E.exit call void @llvm.experimental.noalias.scope.decl(metadata !2080) call void @llvm.experimental.noalias.scope.decl(metadata !2083) - %25 = getelementptr inbounds i8, ptr %3, i64 12 - %26 = load i8, ptr %25, align 4, !range !178, !alias.scope !2086, !noundef !5 - %27 = icmp eq i8 %26, 8 - br i1 %27, label %28, label %37 + %27 = getelementptr inbounds i8, ptr %5, i64 12 + %28 = load i8, ptr %27, align 4, !range !178, !alias.scope !2086, !noundef !5 + %29 = icmp eq i8 %28, 8 + br i1 %29, label %30, label %39 -28: ; preds = %24 +30: ; preds = %26 call void @llvm.experimental.noalias.scope.decl(metadata !2087) call void @llvm.experimental.noalias.scope.decl(metadata !2090) call void @llvm.experimental.noalias.scope.decl(metadata !2093) - %29 = load ptr, ptr %3, align 8, !alias.scope !2096, !nonnull !5, !align !31, !noundef !5 - %30 = getelementptr inbounds i8, ptr %29, i64 20 - %31 = load i32, ptr %30, align 4, !noalias !2096, !noundef !5 - %32 = add i32 %31, -1 - store i32 %32, ptr %30, align 4, !noalias !2096 - %33 = icmp eq i32 %32, 0 - br i1 %33, label %.noexc, label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StderrLock$GT$$GT$17h541a8926d68eee9eE.exit" - -.noexc: ; preds = %28 - call void @_ZN4core4sync6atomic12atomic_store17he7b6a1acc015219fE.llvm.13290713768692451428(ptr noundef nonnull %29, i64 noundef 0, i8 noundef 0) - %34 = getelementptr inbounds i8, ptr %29, i64 16 - %35 = atomicrmw xchg ptr %34, i32 0 release, align 4, !noalias !2096 - %36 = icmp eq i32 %35, 2 - br i1 %36, label %"_ZN4core3ptr47drop_in_place$LT$std..io..stdio..StderrLock$GT$17h13363fcb957efd9bE.exit.sink.split.i.i", label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StderrLock$GT$$GT$17h541a8926d68eee9eE.exit" - -37: ; preds = %24 + %31 = load ptr, ptr %5, align 8, !alias.scope !2096, !nonnull !5, !align !31, !noundef !5 + %32 = getelementptr inbounds i8, ptr %31, i64 20 + %33 = load i32, ptr %32, align 4, !noalias !2096, !noundef !5 + %34 = add i32 %33, -1 + store i32 %34, ptr %32, align 4, !noalias !2096 + %35 = icmp eq i32 %34, 0 + br i1 %35, label %.noexc, label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StderrLock$GT$$GT$17h541a8926d68eee9eE.exit" + +.noexc: ; preds = %30 + call void @_ZN4core4sync6atomic12atomic_store17he7b6a1acc015219fE.llvm.13290713768692451428(ptr noundef nonnull %31, i64 noundef 0, i8 noundef 0) + %36 = getelementptr inbounds i8, ptr %31, i64 16 + %37 = atomicrmw xchg ptr %36, i32 0 release, align 4, !noalias !2096 + %38 = icmp eq i32 %37, 2 + br i1 %38, label %"_ZN4core3ptr47drop_in_place$LT$std..io..stdio..StderrLock$GT$17h13363fcb957efd9bE.exit.sink.split.i.i", label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StderrLock$GT$$GT$17h541a8926d68eee9eE.exit" + +39: ; preds = %26 call void @llvm.experimental.noalias.scope.decl(metadata !2097) call void @llvm.experimental.noalias.scope.decl(metadata !2100) call void @llvm.experimental.noalias.scope.decl(metadata !2103) call void @llvm.experimental.noalias.scope.decl(metadata !2106) - %38 = load ptr, ptr %3, align 8, !alias.scope !2109, !nonnull !5, !align !31, !noundef !5 - %39 = getelementptr inbounds i8, ptr %38, i64 20 - %40 = load i32, ptr %39, align 4, !noalias !2109, !noundef !5 - %41 = add i32 %40, -1 - store i32 %41, ptr %39, align 4, !noalias !2109 - %42 = icmp eq i32 %41, 0 - br i1 %42, label %.noexc11, label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StderrLock$GT$$GT$17h541a8926d68eee9eE.exit" - -.noexc11: ; preds = %37 - call void @_ZN4core4sync6atomic12atomic_store17he7b6a1acc015219fE.llvm.13290713768692451428(ptr noundef nonnull %38, i64 noundef 0, i8 noundef 0) - %43 = getelementptr inbounds i8, ptr %38, i64 16 - %44 = atomicrmw xchg ptr %43, i32 0 release, align 4, !noalias !2109 - %45 = icmp eq i32 %44, 2 - br i1 %45, label %"_ZN4core3ptr47drop_in_place$LT$std..io..stdio..StderrLock$GT$17h13363fcb957efd9bE.exit.sink.split.i.i", label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StderrLock$GT$$GT$17h541a8926d68eee9eE.exit" + %40 = load ptr, ptr %5, align 8, !alias.scope !2109, !nonnull !5, !align !31, !noundef !5 + %41 = getelementptr inbounds i8, ptr %40, i64 20 + %42 = load i32, ptr %41, align 4, !noalias !2109, !noundef !5 + %43 = add i32 %42, -1 + store i32 %43, ptr %41, align 4, !noalias !2109 + %44 = icmp eq i32 %43, 0 + br i1 %44, label %.noexc11, label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StderrLock$GT$$GT$17h541a8926d68eee9eE.exit" + +.noexc11: ; preds = %39 + call void @_ZN4core4sync6atomic12atomic_store17he7b6a1acc015219fE.llvm.13290713768692451428(ptr noundef nonnull %40, i64 noundef 0, i8 noundef 0) + %45 = getelementptr inbounds i8, ptr %40, i64 16 + %46 = atomicrmw xchg ptr %45, i32 0 release, align 4, !noalias !2109 + %47 = icmp eq i32 %46, 2 + br i1 %47, label %"_ZN4core3ptr47drop_in_place$LT$std..io..stdio..StderrLock$GT$17h13363fcb957efd9bE.exit.sink.split.i.i", label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StderrLock$GT$$GT$17h541a8926d68eee9eE.exit" "_ZN4core3ptr47drop_in_place$LT$std..io..stdio..StderrLock$GT$17h13363fcb957efd9bE.exit.sink.split.i.i": ; preds = %.noexc11, %.noexc - %.sink.i.i = phi ptr [ %34, %.noexc ], [ %43, %.noexc11 ] + %.sink.i.i = phi ptr [ %36, %.noexc ], [ %45, %.noexc11 ] call void @_ZN3std3sys4unix5locks11futex_mutex5Mutex4wake17hb07a3d057da5ea39E(ptr noundef nonnull align 4 %.sink.i.i) br label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StderrLock$GT$$GT$17h541a8926d68eee9eE.exit" -"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StdoutLock$GT$$GT$17h030c49b74094db73E.exit": ; preds = %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StderrLock$GT$$GT$17h541a8926d68eee9eE.exit", %"_ZN4core3ptr47drop_in_place$LT$std..io..stdio..StdoutLock$GT$17h654c40d3f65508eeE.exit.sink.split.i.i", %66, %60, %56, %50 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) - ret ptr %23 +"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StdoutLock$GT$$GT$17h030c49b74094db73E.exit": ; preds = %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StderrLock$GT$$GT$17h541a8926d68eee9eE.exit", %"_ZN4core3ptr47drop_in_place$LT$std..io..stdio..StdoutLock$GT$17h654c40d3f65508eeE.exit.sink.split.i.i", %68, %62, %58, %52 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) + ret ptr %25 -46: ; preds = %_ZN12clap_builder7builder10styled_str9StyledStr8write_to17h62d20dc810fce987E.exit - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) +48: ; preds = %_ZN12clap_builder7builder10styled_str9StyledStr8write_to17h62d20dc810fce987E.exit + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) call void @llvm.experimental.noalias.scope.decl(metadata !2110) call void @llvm.experimental.noalias.scope.decl(metadata !2113) - %47 = getelementptr inbounds i8, ptr %4, i64 12 - %48 = load i8, ptr %47, align 4, !range !178, !alias.scope !2116, !noundef !5 - %49 = icmp eq i8 %48, 8 - br i1 %49, label %50, label %60 + %49 = getelementptr inbounds i8, ptr %6, i64 12 + %50 = load i8, ptr %49, align 4, !range !178, !alias.scope !2116, !noundef !5 + %51 = icmp eq i8 %50, 8 + br i1 %51, label %52, label %62 -50: ; preds = %46 +52: ; preds = %48 call void @llvm.experimental.noalias.scope.decl(metadata !2117) call void @llvm.experimental.noalias.scope.decl(metadata !2120) call void @llvm.experimental.noalias.scope.decl(metadata !2123) - %51 = load ptr, ptr %4, align 8, !alias.scope !2126, !nonnull !5, !align !31, !noundef !5 - %52 = getelementptr inbounds i8, ptr %51, i64 52 - %53 = load i32, ptr %52, align 4, !noalias !2126, !noundef !5 - %54 = add i32 %53, -1 - store i32 %54, ptr %52, align 4, !noalias !2126 - %55 = icmp eq i32 %54, 0 - br i1 %55, label %56, label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StdoutLock$GT$$GT$17h030c49b74094db73E.exit" - -56: ; preds = %50 - call void @_ZN4core4sync6atomic12atomic_store17he7b6a1acc015219fE.llvm.13290713768692451428(ptr noundef nonnull %51, i64 noundef 0, i8 noundef 0), !noalias !2126 - %57 = getelementptr inbounds i8, ptr %51, i64 48 - %58 = atomicrmw xchg ptr %57, i32 0 release, align 4, !noalias !2126 - %59 = icmp eq i32 %58, 2 - br i1 %59, label %"_ZN4core3ptr47drop_in_place$LT$std..io..stdio..StdoutLock$GT$17h654c40d3f65508eeE.exit.sink.split.i.i", label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StdoutLock$GT$$GT$17h030c49b74094db73E.exit" - -60: ; preds = %46 + %53 = load ptr, ptr %6, align 8, !alias.scope !2126, !nonnull !5, !align !31, !noundef !5 + %54 = getelementptr inbounds i8, ptr %53, i64 52 + %55 = load i32, ptr %54, align 4, !noalias !2126, !noundef !5 + %56 = add i32 %55, -1 + store i32 %56, ptr %54, align 4, !noalias !2126 + %57 = icmp eq i32 %56, 0 + br i1 %57, label %58, label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StdoutLock$GT$$GT$17h030c49b74094db73E.exit" + +58: ; preds = %52 + call void @_ZN4core4sync6atomic12atomic_store17he7b6a1acc015219fE.llvm.13290713768692451428(ptr noundef nonnull %53, i64 noundef 0, i8 noundef 0), !noalias !2126 + %59 = getelementptr inbounds i8, ptr %53, i64 48 + %60 = atomicrmw xchg ptr %59, i32 0 release, align 4, !noalias !2126 + %61 = icmp eq i32 %60, 2 + br i1 %61, label %"_ZN4core3ptr47drop_in_place$LT$std..io..stdio..StdoutLock$GT$17h654c40d3f65508eeE.exit.sink.split.i.i", label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StdoutLock$GT$$GT$17h030c49b74094db73E.exit" + +62: ; preds = %48 call void @llvm.experimental.noalias.scope.decl(metadata !2127) call void @llvm.experimental.noalias.scope.decl(metadata !2130) call void @llvm.experimental.noalias.scope.decl(metadata !2133) call void @llvm.experimental.noalias.scope.decl(metadata !2136) - %61 = load ptr, ptr %4, align 8, !alias.scope !2139, !nonnull !5, !align !31, !noundef !5 - %62 = getelementptr inbounds i8, ptr %61, i64 52 - %63 = load i32, ptr %62, align 4, !noalias !2139, !noundef !5 - %64 = add i32 %63, -1 - store i32 %64, ptr %62, align 4, !noalias !2139 - %65 = icmp eq i32 %64, 0 - br i1 %65, label %66, label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StdoutLock$GT$$GT$17h030c49b74094db73E.exit" - -66: ; preds = %60 - call void @_ZN4core4sync6atomic12atomic_store17he7b6a1acc015219fE.llvm.13290713768692451428(ptr noundef nonnull %61, i64 noundef 0, i8 noundef 0), !noalias !2139 - %67 = getelementptr inbounds i8, ptr %61, i64 48 - %68 = atomicrmw xchg ptr %67, i32 0 release, align 4, !noalias !2139 - %69 = icmp eq i32 %68, 2 - br i1 %69, label %"_ZN4core3ptr47drop_in_place$LT$std..io..stdio..StdoutLock$GT$17h654c40d3f65508eeE.exit.sink.split.i.i", label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StdoutLock$GT$$GT$17h030c49b74094db73E.exit" - -"_ZN4core3ptr47drop_in_place$LT$std..io..stdio..StdoutLock$GT$17h654c40d3f65508eeE.exit.sink.split.i.i": ; preds = %66, %56 - %.sink.i.i13 = phi ptr [ %57, %56 ], [ %67, %66 ] + %63 = load ptr, ptr %6, align 8, !alias.scope !2139, !nonnull !5, !align !31, !noundef !5 + %64 = getelementptr inbounds i8, ptr %63, i64 52 + %65 = load i32, ptr %64, align 4, !noalias !2139, !noundef !5 + %66 = add i32 %65, -1 + store i32 %66, ptr %64, align 4, !noalias !2139 + %67 = icmp eq i32 %66, 0 + br i1 %67, label %68, label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StdoutLock$GT$$GT$17h030c49b74094db73E.exit" + +68: ; preds = %62 + call void @_ZN4core4sync6atomic12atomic_store17he7b6a1acc015219fE.llvm.13290713768692451428(ptr noundef nonnull %63, i64 noundef 0, i8 noundef 0), !noalias !2139 + %69 = getelementptr inbounds i8, ptr %63, i64 48 + %70 = atomicrmw xchg ptr %69, i32 0 release, align 4, !noalias !2139 + %71 = icmp eq i32 %70, 2 + br i1 %71, label %"_ZN4core3ptr47drop_in_place$LT$std..io..stdio..StdoutLock$GT$17h654c40d3f65508eeE.exit.sink.split.i.i", label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StdoutLock$GT$$GT$17h030c49b74094db73E.exit" + +"_ZN4core3ptr47drop_in_place$LT$std..io..stdio..StdoutLock$GT$17h654c40d3f65508eeE.exit.sink.split.i.i": ; preds = %68, %58 + %.sink.i.i13 = phi ptr [ %59, %58 ], [ %69, %68 ] call void @_ZN3std3sys4unix5locks11futex_mutex5Mutex4wake17hb07a3d057da5ea39E(ptr noundef nonnull align 4 %.sink.i.i13), !noalias !2116 br label %"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StdoutLock$GT$$GT$17h030c49b74094db73E.exit" -70: ; preds = %15 - invoke void @"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StderrLock$GT$$GT$17h541a8926d68eee9eE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %3) #39 - to label %.thread unwind label %71 +72: ; preds = %17 + invoke void @"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StderrLock$GT$$GT$17h541a8926d68eee9eE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) #39 + to label %.thread unwind label %73 -71: ; preds = %73, %70 - %72 = landingpad { ptr, i32 } +73: ; preds = %75, %72 + %74 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #40 unreachable -.thread: ; preds = %70, %73 +.thread: ; preds = %72, %75 resume { ptr, i32 } %lpad.thr_comm.split-lp -73: ; preds = %15 - invoke void @"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StdoutLock$GT$$GT$17h030c49b74094db73E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) #39 - to label %.thread unwind label %71 +75: ; preds = %17 + invoke void @"_ZN4core3ptr81drop_in_place$LT$anstream..auto..AutoStream$LT$std..io..stdio..StdoutLock$GT$$GT$17h030c49b74094db73E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #39 + to label %.thread unwind label %73 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/coreutils-rs/optimized/17794vwpak0yjaal.ll b/bench/coreutils-rs/optimized/17794vwpak0yjaal.ll index 0fa2777216f..d2f2eae5f57 100644 --- a/bench/coreutils-rs/optimized/17794vwpak0yjaal.ll +++ b/bench/coreutils-rs/optimized/17794vwpak0yjaal.ll @@ -701,46 +701,50 @@ define hidden noundef i128 @"_ZN73_$LT$P$u20$as$u20$clap_builder..builder..value ; Function Attrs: nonlazybind uwtable define hidden { ptr, ptr } @"_ZN73_$LT$P$u20$as$u20$clap_builder..builder..value_parser..AnyValueParser$GT$9clone_any17h6b582ab0ef7ec0e3E"(ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %0) unnamed_addr #0 personality ptr @rust_eh_personality { - %2 = alloca { { { i64, ptr, {} }, i64 } }, align 8 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) - %3 = getelementptr inbounds i8, ptr %0, i64 8 - %.val = load ptr, ptr %3, align 8, !alias.scope !121, !noalias !124, !nonnull !17, !noundef !17 - %4 = getelementptr inbounds i8, ptr %0, i64 16 - %.val1 = load i64, ptr %4, align 8, !alias.scope !121, !noalias !124, !noundef !17 - call void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17h5cd8eb8cddf3fb17E.llvm.16362308951569835614"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr, {} }, i64 }) align 8 dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 %.val, i64 noundef %.val1) - %5 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !126 - %6 = tail call noundef align 8 dereferenceable_or_null(24) ptr @__rust_alloc(i64 noundef 24, i64 noundef 8) #16, !noalias !126 - %7 = icmp eq ptr %6, null - br i1 %7, label %8, label %"_ZN5alloc5boxed12Box$LT$T$GT$3new17hbd8629f345880e17E.exit" - -8: ; preds = %1 + %2 = alloca { { i64, ptr, {} }, i64 }, align 8 + %3 = alloca { { { i64, ptr, {} }, i64 } }, align 8 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) + %4 = getelementptr inbounds i8, ptr %0, i64 8 + %.val = load ptr, ptr %4, align 8, !alias.scope !121, !noalias !124, !nonnull !17, !noundef !17 + %5 = getelementptr inbounds i8, ptr %0, i64 16 + %.val1 = load i64, ptr %5, align 8, !alias.scope !121, !noalias !124, !noundef !17 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2), !noalias !126 + call void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17h5cd8eb8cddf3fb17E.llvm.16362308951569835614"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr, {} }, i64 }) align 8 dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 %.val, i64 noundef %.val1), !noalias !129 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2), !noalias !126 + %6 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !132 + %7 = tail call noundef align 8 dereferenceable_or_null(24) ptr @__rust_alloc(i64 noundef 24, i64 noundef 8) #16, !noalias !132 + %8 = icmp eq ptr %7, null + br i1 %8, label %9, label %"_ZN5alloc5boxed12Box$LT$T$GT$3new17hbd8629f345880e17E.exit" + +9: ; preds = %1 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 24) #13 - to label %.noexc unwind label %9 + to label %.noexc unwind label %10 -.noexc: ; preds = %8 +.noexc: ; preds = %9 unreachable -9: ; preds = %8 - %10 = landingpad { ptr, i32 } +10: ; preds = %9 + %11 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr79drop_in_place$LT$uucore..parser..shortcut_value_parser..ShortcutValueParser$GT$17h6e72bfffd1159545E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %2) #14 - to label %13 unwind label %11 + invoke void @"_ZN4core3ptr79drop_in_place$LT$uucore..parser..shortcut_value_parser..ShortcutValueParser$GT$17h6e72bfffd1159545E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %3) #14 + to label %14 unwind label %12 -11: ; preds = %9 - %12 = landingpad { ptr, i32 } +12: ; preds = %10 + %13 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #15 unreachable -13: ; preds = %9 - resume { ptr, i32 } %10 +14: ; preds = %10 + resume { ptr, i32 } %11 "_ZN5alloc5boxed12Box$LT$T$GT$3new17hbd8629f345880e17E.exit": ; preds = %1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 24, i1 false) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) - %14 = insertvalue { ptr, ptr } poison, ptr %6, 0 - %15 = insertvalue { ptr, ptr } %14, ptr @anon.290a64da459b28f2bcf5dbec20c9a84e.14, 1 - ret { ptr, ptr } %15 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) + %15 = insertvalue { ptr, ptr } poison, ptr %7, 0 + %16 = insertvalue { ptr, ptr } %15, ptr @anon.290a64da459b28f2bcf5dbec20c9a84e.14, 1 + ret { ptr, ptr } %16 } ; Function Attrs: nonlazybind uwtable @@ -755,14 +759,14 @@ define hidden void @"_ZN73_$LT$P$u20$as$u20$clap_builder..builder..value_parser. 11: ; preds = %6 %12 = getelementptr inbounds i8, ptr %7, i64 16 - call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7), !noalias !129 + call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7), !noalias !135 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) - store i64 1, ptr %7, align 8, !noalias !129 + store i64 1, ptr %7, align 8, !noalias !135 %13 = getelementptr inbounds i8, ptr %7, i64 8 - store i64 1, ptr %13, align 8, !noalias !129 + store i64 1, ptr %13, align 8, !noalias !135 %14 = invoke { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17hb4f01ccf52c1821cE.llvm.4745837267571974126(ptr noalias noundef nonnull readonly align 1 @anon.bd12efcf8e9d86ce7fa32f628f0425f8.8.llvm.4745837267571974126, i64 noundef 8, i64 noundef 40, i1 noundef zeroext false) - to label %.noexc.i unwind label %18, !noalias !129 + to label %.noexc.i unwind label %18, !noalias !135 .noexc.i: ; preds = %11 %15 = extractvalue { ptr, i64 } %14, 0 @@ -771,7 +775,7 @@ define hidden void @"_ZN73_$LT$P$u20$as$u20$clap_builder..builder..value_parser. 17: ; preds = %.noexc.i invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 40) #13 - to label %.noexc6.i unwind label %18, !noalias !129 + to label %.noexc6.i unwind label %18, !noalias !135 .noexc6.i: ; preds = %17 unreachable @@ -780,12 +784,12 @@ define hidden void @"_ZN73_$LT$P$u20$as$u20$clap_builder..builder..value_parser. %19 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr71drop_in_place$LT$alloc..sync..ArcInner$LT$alloc..string..String$GT$$GT$17h9739475c809d3f5eE"(ptr noalias noundef nonnull align 8 dereferenceable(40) %7) #14 - to label %22 unwind label %20, !noalias !129 + to label %22 unwind label %20, !noalias !135 20: ; preds = %18 %21 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #15, !noalias !129 + call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #15, !noalias !135 unreachable 22: ; preds = %18 @@ -793,7 +797,7 @@ define hidden void @"_ZN73_$LT$P$u20$as$u20$clap_builder..builder..value_parser. _ZN12clap_builder4util9any_value8AnyValue3new17hd5a91b05a26906e1E.exit: ; preds = %.noexc.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %15, ptr noundef nonnull align 8 dereferenceable(40) %7, i64 40, i1 false) - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7), !noalias !129 + call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7), !noalias !135 store ptr %15, ptr %0, align 16 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store ptr @anon.bd12efcf8e9d86ce7fa32f628f0425f8.0.llvm.4745837267571974126, ptr %.sroa.4.0..sroa_idx, align 8 @@ -1041,9 +1045,15 @@ attributes #16 = { nounwind } !124 = !{!125} !125 = distinct !{!125, !123, !"_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h1dfc9086e52531c2E: argument 0"} !126 = !{!127} -!127 = distinct !{!127, !128, !"_ZN5alloc5boxed12Box$LT$T$GT$3new17hbd8629f345880e17E: argument 0"} -!128 = distinct !{!128, !"_ZN5alloc5boxed12Box$LT$T$GT$3new17hbd8629f345880e17E"} -!129 = !{!130, !132} -!130 = distinct !{!130, !131, !"_ZN12clap_builder4util9any_value8AnyValue3new17hd5a91b05a26906e1E: argument 0"} -!131 = distinct !{!131, !"_ZN12clap_builder4util9any_value8AnyValue3new17hd5a91b05a26906e1E"} -!132 = distinct !{!132, !131, !"_ZN12clap_builder4util9any_value8AnyValue3new17hd5a91b05a26906e1E: argument 1"} +!127 = distinct !{!127, !128, !"_ZN97_$LT$uucore..parser..shortcut_value_parser..ShortcutValueParser$u20$as$u20$core..clone..Clone$GT$5clone17h71169416cc06ddefE: argument 0"} +!128 = distinct !{!128, !"_ZN97_$LT$uucore..parser..shortcut_value_parser..ShortcutValueParser$u20$as$u20$core..clone..Clone$GT$5clone17h71169416cc06ddefE"} +!129 = !{!130, !127} +!130 = distinct !{!130, !131, !"_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h1dfc9086e52531c2E: argument 1"} +!131 = distinct !{!131, !"_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h1dfc9086e52531c2E"} +!132 = !{!133} +!133 = distinct !{!133, !134, !"_ZN5alloc5boxed12Box$LT$T$GT$3new17hbd8629f345880e17E: argument 0"} +!134 = distinct !{!134, !"_ZN5alloc5boxed12Box$LT$T$GT$3new17hbd8629f345880e17E"} +!135 = !{!136, !138} +!136 = distinct !{!136, !137, !"_ZN12clap_builder4util9any_value8AnyValue3new17hd5a91b05a26906e1E: argument 0"} +!137 = distinct !{!137, !"_ZN12clap_builder4util9any_value8AnyValue3new17hd5a91b05a26906e1E"} +!138 = distinct !{!138, !137, !"_ZN12clap_builder4util9any_value8AnyValue3new17hd5a91b05a26906e1E: argument 1"} diff --git a/bench/coreutils-rs/optimized/1e5pt7vtfxa4ahz7.ll b/bench/coreutils-rs/optimized/1e5pt7vtfxa4ahz7.ll index 13df999b343..1bc282007a0 100644 --- a/bench/coreutils-rs/optimized/1e5pt7vtfxa4ahz7.ll +++ b/bench/coreutils-rs/optimized/1e5pt7vtfxa4ahz7.ll @@ -2022,6 +2022,7 @@ define void @_ZN11uu_realpath24prepare_relative_options17h16f7a2a33f9e92ecE(ptr %13 = alloca { { ptr, i64 }, { ptr, i64 }, { ptr, [1 x i64] } }, align 8 %14 = alloca { i128, [4 x i64] }, align 16 %15 = alloca { ptr, i64 }, align 8 + %.sroa.099 = alloca { { i64, ptr, {} }, i64 }, align 8 %16 = alloca { { i64, [2 x i64] }, { i64, [2 x i64] } }, align 8 %17 = alloca { i64, [2 x i64] }, align 8 %18 = alloca { i64, [2 x i64] }, align 8 @@ -2112,11 +2113,14 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hba0a0c4fb0911f70E.exit.thr br label %59 _ZN12clap_builder6parser5error12MatchesError6unwrap17hba0a0c4fb0911f70E.exit: ; preds = %33 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.099) %57 = getelementptr i8, ptr %41, i64 24 %.val62 = load ptr, ptr %57, align 8, !nonnull !5, !noundef !5 %58 = getelementptr i8, ptr %41, i64 32 %.val63 = load i64, ptr %58, align 8, !noundef !5 - call void @_ZN3std3sys6os_str5bytes5Slice8to_owned17had945b6c4cd6e040E(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %24, ptr noalias noundef nonnull readonly align 1 %.val62, i64 noundef %.val63) + call void @_ZN3std3sys6os_str5bytes5Slice8to_owned17had945b6c4cd6e040E(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %.sroa.099, ptr noalias noundef nonnull readonly align 1 %.val62, i64 noundef %.val63) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.099, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.099) br label %59 59: ; preds = %_ZN12clap_builder6parser5error12MatchesError6unwrap17hba0a0c4fb0911f70E.exit, %_ZN12clap_builder6parser5error12MatchesError6unwrap17hba0a0c4fb0911f70E.exit.thread diff --git a/bench/delta-rs/optimized/20d38kflwyye7r28.ll b/bench/delta-rs/optimized/20d38kflwyye7r28.ll index d2ca652388e..7c87646fbef 100644 --- a/bench/delta-rs/optimized/20d38kflwyye7r28.ll +++ b/bench/delta-rs/optimized/20d38kflwyye7r28.ll @@ -757,70 +757,74 @@ common.resume: ; preds = %18, %8 ; Function Attrs: nonlazybind uwtable define hidden { ptr, ptr } @_ZN12object_store11ObjectStore16list_with_offset17h1cfeb0d2538ff227E(ptr noalias noundef readonly align 8 dereferenceable(8) %0, ptr noalias noundef readonly align 8 dereferenceable_or_null(24) %1, ptr noalias noundef readonly align 8 dereferenceable(24) %2) unnamed_addr #1 personality ptr @rust_eh_personality { - %4 = alloca { { { { { { i64, ptr, {} }, i64 } } } }, { i64, [11 x i64] }, { { { { { ptr, ptr } }, {} }, {} } }, i8, [7 x i8] }, align 8 - %5 = alloca { { { { i64, ptr, {} }, i64 } } }, align 8 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) - call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hf54273bb14505f61E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) - call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %4) - %6 = invoke { ptr, ptr } @"_ZN81_$LT$object_store..azure..MicrosoftAzure$u20$as$u20$object_store..ObjectStore$GT$4list17he77594bd440489f4E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %0, ptr noalias noundef readonly align 8 dereferenceable_or_null(24) %1) - to label %7 unwind label %25 - -7: ; preds = %3 - %8 = extractvalue { ptr, ptr } %6, 0 - %9 = extractvalue { ptr, ptr } %6, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) - %10 = getelementptr inbounds i8, ptr %4, i64 120 - store ptr %8, ptr %10, align 8 - %11 = getelementptr inbounds i8, ptr %4, i64 128 - store ptr %9, ptr %11, align 8 - %12 = getelementptr inbounds i8, ptr %4, i64 136 - store i8 3, ptr %12, align 8 - %13 = getelementptr inbounds i8, ptr %4, i64 24 - store i64 -9223372036854775808, ptr %13, align 8 - %14 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !92 - %15 = tail call noundef align 8 dereferenceable_or_null(144) ptr @__rust_alloc(i64 noundef 144, i64 noundef 8) #31, !noalias !92 - %16 = icmp eq ptr %15, null - br i1 %16, label %17, label %22 + %4 = alloca { { { i64, ptr, {} }, i64 } }, align 8 + %5 = alloca { { { { { { i64, ptr, {} }, i64 } } } }, { i64, [11 x i64] }, { { { { { ptr, ptr } }, {} }, {} } }, i8, [7 x i8] }, align 8 + %6 = alloca { { { { i64, ptr, {} }, i64 } } }, align 8 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) + call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hf54273bb14505f61E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) + call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %5) + %7 = invoke { ptr, ptr } @"_ZN81_$LT$object_store..azure..MicrosoftAzure$u20$as$u20$object_store..ObjectStore$GT$4list17he77594bd440489f4E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %0, ptr noalias noundef readonly align 8 dereferenceable_or_null(24) %1) + to label %8 unwind label %26 -17: ; preds = %7 +8: ; preds = %3 + %9 = extractvalue { ptr, ptr } %7, 0 + %10 = extractvalue { ptr, ptr } %7, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %6, i64 24, i1 false) + %11 = getelementptr inbounds i8, ptr %5, i64 120 + store ptr %9, ptr %11, align 8 + %12 = getelementptr inbounds i8, ptr %5, i64 128 + store ptr %10, ptr %12, align 8 + %13 = getelementptr inbounds i8, ptr %5, i64 136 + store i8 3, ptr %13, align 8 + %14 = getelementptr inbounds i8, ptr %5, i64 24 + store i64 -9223372036854775808, ptr %14, align 8 + %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !92 + %16 = tail call noundef align 8 dereferenceable_or_null(144) ptr @__rust_alloc(i64 noundef 144, i64 noundef 8) #31, !noalias !92 + %17 = icmp eq ptr %16, null + br i1 %17, label %18, label %23 + +18: ; preds = %8 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 144) #32 - to label %.noexc unwind label %18 + to label %.noexc unwind label %19 -.noexc: ; preds = %17 +.noexc: ; preds = %18 unreachable -18: ; preds = %17 - %19 = landingpad { ptr, i32 } +19: ; preds = %18 + %20 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr467drop_in_place$LT$futures_util..stream..try_stream..try_filter..TryFilter$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$object_store..ObjectMeta$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$C$futures_util..future..ready..Ready$LT$bool$GT$$C$$LT$object_store..azure..MicrosoftAzure$u20$as$u20$object_store..ObjectStore$GT$..list_with_offset..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ace54a8969f93cE"(ptr noalias noundef nonnull align 8 dereferenceable(144) %4) #33 - to label %.body unwind label %20 + invoke void @"_ZN4core3ptr467drop_in_place$LT$futures_util..stream..try_stream..try_filter..TryFilter$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$object_store..ObjectMeta$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$C$futures_util..future..ready..Ready$LT$bool$GT$$C$$LT$object_store..azure..MicrosoftAzure$u20$as$u20$object_store..ObjectStore$GT$..list_with_offset..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ace54a8969f93cE"(ptr noalias noundef nonnull align 8 dereferenceable(144) %5) #33 + to label %.body unwind label %21 -20: ; preds = %18 - %21 = landingpad { ptr, i32 } +21: ; preds = %19 + %22 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #34 unreachable -22: ; preds = %7 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %15, ptr noundef nonnull align 8 dereferenceable(144) %4, i64 144, i1 false) - call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %4) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) - %23 = insertvalue { ptr, ptr } poison, ptr %15, 0 - %24 = insertvalue { ptr, ptr } %23, ptr @anon.b22475c6f4646dc536b9171d4d0a0d13.5, 1 - ret { ptr, ptr } %24 +23: ; preds = %8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %16, ptr noundef nonnull align 8 dereferenceable(144) %5, i64 144, i1 false) + call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %5) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) + %24 = insertvalue { ptr, ptr } poison, ptr %16, 0 + %25 = insertvalue { ptr, ptr } %24, ptr @anon.b22475c6f4646dc536b9171d4d0a0d13.5, 1 + ret { ptr, ptr } %25 -.body: ; preds = %18, %25 - %eh.lpad-body6 = phi { ptr, i32 } [ %26, %25 ], [ %19, %18 ] +.body: ; preds = %19, %26 + %eh.lpad-body6 = phi { ptr, i32 } [ %27, %26 ], [ %20, %19 ] resume { ptr, i32 } %eh.lpad-body6 -25: ; preds = %3 - %26 = landingpad { ptr, i32 } +26: ; preds = %3 + %27 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr45drop_in_place$LT$object_store..path..Path$GT$17h31b081cef248c658E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) #33 - to label %.body unwind label %27 + invoke void @"_ZN4core3ptr45drop_in_place$LT$object_store..path..Path$GT$17h31b081cef248c658E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #33 + to label %.body unwind label %28 -27: ; preds = %25 - %28 = landingpad { ptr, i32 } +28: ; preds = %26 + %29 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #34 unreachable diff --git a/bench/delta-rs/optimized/3yt47vxpbp4b5dih.ll b/bench/delta-rs/optimized/3yt47vxpbp4b5dih.ll index e9c08852b49..d94023e2fef 100644 --- a/bench/delta-rs/optimized/3yt47vxpbp4b5dih.ll +++ b/bench/delta-rs/optimized/3yt47vxpbp4b5dih.ll @@ -4225,70 +4225,74 @@ common.ret: ; preds = %48, %25 ; Function Attrs: nonlazybind uwtable define hidden { ptr, ptr } @_ZN12object_store11ObjectStore16list_with_offset17hbee73c698102c350E(ptr noalias noundef readonly align 8 dereferenceable(8) %0, ptr noalias noundef readonly align 8 dereferenceable_or_null(24) %1, ptr noalias noundef readonly align 8 dereferenceable(24) %2) unnamed_addr #0 personality ptr @rust_eh_personality { - %4 = alloca { { { { { { i64, ptr, {} }, i64 } } } }, { i64, [11 x i64] }, { { { { { ptr, ptr } }, {} }, {} } }, i8, [7 x i8] }, align 8 - %5 = alloca { { { { i64, ptr, {} }, i64 } } }, align 8 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) - call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hf54273bb14505f61E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) - call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %4) - %6 = invoke { ptr, ptr } @"_ZN76_$LT$object_store..memory..InMemory$u20$as$u20$object_store..ObjectStore$GT$4list17ha9fba3d5bd7b4352E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %0, ptr noalias noundef readonly align 8 dereferenceable_or_null(24) %1) - to label %7 unwind label %25 - -7: ; preds = %3 - %8 = extractvalue { ptr, ptr } %6, 0 - %9 = extractvalue { ptr, ptr } %6, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) - %10 = getelementptr inbounds i8, ptr %4, i64 120 - store ptr %8, ptr %10, align 8 - %11 = getelementptr inbounds i8, ptr %4, i64 128 - store ptr %9, ptr %11, align 8 - %12 = getelementptr inbounds i8, ptr %4, i64 136 - store i8 3, ptr %12, align 8 - %13 = getelementptr inbounds i8, ptr %4, i64 24 - store i64 -9223372036854775808, ptr %13, align 8 - %14 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !546 - %15 = tail call noundef align 8 dereferenceable_or_null(144) ptr @__rust_alloc(i64 noundef 144, i64 noundef 8) #43, !noalias !546 - %16 = icmp eq ptr %15, null - br i1 %16, label %17, label %22 + %4 = alloca { { { i64, ptr, {} }, i64 } }, align 8 + %5 = alloca { { { { { { i64, ptr, {} }, i64 } } } }, { i64, [11 x i64] }, { { { { { ptr, ptr } }, {} }, {} } }, i8, [7 x i8] }, align 8 + %6 = alloca { { { { i64, ptr, {} }, i64 } } }, align 8 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) + call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hf54273bb14505f61E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) + call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %5) + %7 = invoke { ptr, ptr } @"_ZN76_$LT$object_store..memory..InMemory$u20$as$u20$object_store..ObjectStore$GT$4list17ha9fba3d5bd7b4352E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %0, ptr noalias noundef readonly align 8 dereferenceable_or_null(24) %1) + to label %8 unwind label %26 -17: ; preds = %7 +8: ; preds = %3 + %9 = extractvalue { ptr, ptr } %7, 0 + %10 = extractvalue { ptr, ptr } %7, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %6, i64 24, i1 false) + %11 = getelementptr inbounds i8, ptr %5, i64 120 + store ptr %9, ptr %11, align 8 + %12 = getelementptr inbounds i8, ptr %5, i64 128 + store ptr %10, ptr %12, align 8 + %13 = getelementptr inbounds i8, ptr %5, i64 136 + store i8 3, ptr %13, align 8 + %14 = getelementptr inbounds i8, ptr %5, i64 24 + store i64 -9223372036854775808, ptr %14, align 8 + %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !546 + %16 = tail call noundef align 8 dereferenceable_or_null(144) ptr @__rust_alloc(i64 noundef 144, i64 noundef 8) #43, !noalias !546 + %17 = icmp eq ptr %16, null + br i1 %17, label %18, label %23 + +18: ; preds = %8 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 144) #40 - to label %.noexc unwind label %18 + to label %.noexc unwind label %19 -.noexc: ; preds = %17 +.noexc: ; preds = %18 unreachable -18: ; preds = %17 - %19 = landingpad { ptr, i32 } +19: ; preds = %18 + %20 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr462drop_in_place$LT$futures_util..stream..try_stream..try_filter..TryFilter$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$object_store..ObjectMeta$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$C$futures_util..future..ready..Ready$LT$bool$GT$$C$$LT$object_store..memory..InMemory$u20$as$u20$object_store..ObjectStore$GT$..list_with_offset..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h164b0a7106e58c59E"(ptr noalias noundef nonnull align 8 dereferenceable(144) %4) #41 - to label %.body unwind label %20 + invoke void @"_ZN4core3ptr462drop_in_place$LT$futures_util..stream..try_stream..try_filter..TryFilter$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$object_store..ObjectMeta$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$C$futures_util..future..ready..Ready$LT$bool$GT$$C$$LT$object_store..memory..InMemory$u20$as$u20$object_store..ObjectStore$GT$..list_with_offset..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h164b0a7106e58c59E"(ptr noalias noundef nonnull align 8 dereferenceable(144) %5) #41 + to label %.body unwind label %21 -20: ; preds = %18 - %21 = landingpad { ptr, i32 } +21: ; preds = %19 + %22 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #42 unreachable -22: ; preds = %7 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %15, ptr noundef nonnull align 8 dereferenceable(144) %4, i64 144, i1 false) - call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %4) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) - %23 = insertvalue { ptr, ptr } poison, ptr %15, 0 - %24 = insertvalue { ptr, ptr } %23, ptr @anon.d9b40b51c838cca9395a4ebf6321c518.19, 1 - ret { ptr, ptr } %24 - -.body: ; preds = %18, %25 - %eh.lpad-body6 = phi { ptr, i32 } [ %26, %25 ], [ %19, %18 ] +23: ; preds = %8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %16, ptr noundef nonnull align 8 dereferenceable(144) %5, i64 144, i1 false) + call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %5) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) + %24 = insertvalue { ptr, ptr } poison, ptr %16, 0 + %25 = insertvalue { ptr, ptr } %24, ptr @anon.d9b40b51c838cca9395a4ebf6321c518.19, 1 + ret { ptr, ptr } %25 + +.body: ; preds = %19, %26 + %eh.lpad-body6 = phi { ptr, i32 } [ %27, %26 ], [ %20, %19 ] resume { ptr, i32 } %eh.lpad-body6 -25: ; preds = %3 - %26 = landingpad { ptr, i32 } +26: ; preds = %3 + %27 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr45drop_in_place$LT$object_store..path..Path$GT$17ha1e4e72be02114afE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) #41 - to label %.body unwind label %27 + invoke void @"_ZN4core3ptr45drop_in_place$LT$object_store..path..Path$GT$17ha1e4e72be02114afE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #41 + to label %.body unwind label %28 -27: ; preds = %25 - %28 = landingpad { ptr, i32 } +28: ; preds = %26 + %29 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #42 unreachable @@ -28241,6 +28245,7 @@ define void @_ZN13deltalake_aws16create_value_map17h57a0192bc43d5011E(ptr noalia %18 = alloca { { i64, [1 x i64] }, { i64, [1 x i64] }, { ptr, ptr }, i32, i32, i8, [7 x i8] }, align 8 %19 = alloca { { { i64, ptr, {} }, i64 } }, align 8 %20 = alloca { ptr, [3 x i64] }, align 8 + %.sroa.01.i = alloca { { i64, ptr, {} }, i64 }, align 8 %21 = alloca { { { { { { { { { i64, [8 x i64] }, { ptr, i64 }, { ptr, i64 } }, i64, i64, i8, i8, [6 x i8] } }, {} }, i64 }, {} }, {} }, {} }, align 8 %22 = alloca { i8, [55 x i8] }, align 8 %23 = alloca { i8, [55 x i8] }, align 8 @@ -28262,14 +28267,21 @@ define void @_ZN13deltalake_aws16create_value_map17h57a0192bc43d5011E(ptr noalia %39 = alloca { i8, [55 x i8] }, align 8 %40 = alloca { { { { ptr, i64, i64, i64 }, {}, {} }, { i64, i64 } } }, align 8 %41 = alloca { { { { ptr, i64, i64, i64 }, {}, {} }, { i64, i64 } } }, align 8 + %.sroa.0 = alloca { { { i64, [8 x i64] }, { ptr, i64 }, { ptr, i64 } }, i64, i64, i8, i8, [6 x i8] }, align 8 %42 = alloca { { { { i64, ptr, {} }, i64 } } }, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %42) + call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %.sroa.0) + call void @_ZN12object_store4path4Path5parts17h82537d3ba3bfe052E(ptr noalias nocapture noundef nonnull sret({ { { { { i64, [8 x i64] }, { ptr, i64 }, { ptr, i64 } }, i64, i64, i8, i8, [6 x i8] } }, {} }) align 8 dereferenceable(128) %.sroa.0, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1) call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %21), !noalias !5602 - call void @_ZN12object_store4path4Path5parts17h82537d3ba3bfe052E(ptr noalias nocapture noundef nonnull sret({ { { { { i64, [8 x i64] }, { ptr, i64 }, { ptr, i64 } }, i64, i64, i8, i8, [6 x i8] } }, {} }) align 8 dereferenceable(128) %21, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %21, ptr noundef nonnull align 8 dereferenceable(128) %.sroa.0, i64 128, i1 false), !noalias !5606 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %21, i64 128 store i64 1, ptr %.sroa.4.0..sroa_idx, align 8, !noalias !5606 - call void @_ZN9itertools9Itertools4join17h48e17936cccc7e76E.llvm.8685928533442901714(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %42, ptr noalias noundef nonnull align 8 dereferenceable(136) %21, ptr noalias noundef nonnull readonly align 1 @anon.e7bbb14fc9841fea9b9688bd70a4e67f.32.llvm.8685928533442901714, i64 noundef 1), !noalias !5607 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.01.i), !noalias !5602 + call void @_ZN9itertools9Itertools4join17h48e17936cccc7e76E.llvm.8685928533442901714(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %.sroa.01.i, ptr noalias noundef nonnull align 8 dereferenceable(136) %21, ptr noalias noundef nonnull readonly align 1 @anon.e7bbb14fc9841fea9b9688bd70a4e67f.32.llvm.8685928533442901714, i64 noundef 1), !noalias !5602 call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %21), !noalias !5602 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.01.i, i64 24, i1 false), !noalias !5607 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.01.i), !noalias !5602 + call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %.sroa.0) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %41) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %40) %43 = load i64, ptr @_ZN3std4hash6random11RandomState3new4KEYS7__getit5__KEY17hc99e64f5c8d1830fE, align 8, !range !978, !noalias !5608, !noundef !4 diff --git a/bench/delta-rs/optimized/4rnu0gt98xtph6lk.ll b/bench/delta-rs/optimized/4rnu0gt98xtph6lk.ll index 11d58da1434..1a6688911c9 100644 --- a/bench/delta-rs/optimized/4rnu0gt98xtph6lk.ll +++ b/bench/delta-rs/optimized/4rnu0gt98xtph6lk.ll @@ -1350,70 +1350,74 @@ common.resume: ; preds = %18, %8 ; Function Attrs: nonlazybind uwtable define hidden { ptr, ptr } @_ZN12object_store11ObjectStore16list_with_offset17h5f101f1f5ebc51ecE(ptr noalias noundef readonly align 8 dereferenceable(8) %0, ptr noalias noundef readonly align 8 dereferenceable_or_null(24) %1, ptr noalias noundef readonly align 8 dereferenceable(24) %2) unnamed_addr #0 personality ptr @rust_eh_personality { - %4 = alloca { { { { { { i64, ptr, {} }, i64 } } } }, { i64, [11 x i64] }, { { { { { ptr, ptr } }, {} }, {} } }, i8, [7 x i8] }, align 8 - %5 = alloca { { { { i64, ptr, {} }, i64 } } }, align 8 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) - call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hf54273bb14505f61E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) - call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %4) - %6 = invoke { ptr, ptr } @"_ZN82_$LT$object_store..local..LocalFileSystem$u20$as$u20$object_store..ObjectStore$GT$4list17h3fee7735c8c8ae69E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %0, ptr noalias noundef readonly align 8 dereferenceable_or_null(24) %1) - to label %7 unwind label %25 + %4 = alloca { { { i64, ptr, {} }, i64 } }, align 8 + %5 = alloca { { { { { { i64, ptr, {} }, i64 } } } }, { i64, [11 x i64] }, { { { { { ptr, ptr } }, {} }, {} } }, i8, [7 x i8] }, align 8 + %6 = alloca { { { { i64, ptr, {} }, i64 } } }, align 8 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) + call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hf54273bb14505f61E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) + call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %5) + %7 = invoke { ptr, ptr } @"_ZN82_$LT$object_store..local..LocalFileSystem$u20$as$u20$object_store..ObjectStore$GT$4list17h3fee7735c8c8ae69E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %0, ptr noalias noundef readonly align 8 dereferenceable_or_null(24) %1) + to label %8 unwind label %26 -7: ; preds = %3 - %8 = extractvalue { ptr, ptr } %6, 0 - %9 = extractvalue { ptr, ptr } %6, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) - %10 = getelementptr inbounds i8, ptr %4, i64 120 - store ptr %8, ptr %10, align 8 - %11 = getelementptr inbounds i8, ptr %4, i64 128 +8: ; preds = %3 + %9 = extractvalue { ptr, ptr } %7, 0 + %10 = extractvalue { ptr, ptr } %7, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %6, i64 24, i1 false) + %11 = getelementptr inbounds i8, ptr %5, i64 120 store ptr %9, ptr %11, align 8 - %12 = getelementptr inbounds i8, ptr %4, i64 136 - store i8 3, ptr %12, align 8 - %13 = getelementptr inbounds i8, ptr %4, i64 24 - store i64 -9223372036854775808, ptr %13, align 8 - %14 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !367 - %15 = tail call noundef align 8 dereferenceable_or_null(144) ptr @__rust_alloc(i64 noundef 144, i64 noundef 8) #25, !noalias !367 - %16 = icmp eq ptr %15, null - br i1 %16, label %17, label %22 - -17: ; preds = %7 + %12 = getelementptr inbounds i8, ptr %5, i64 128 + store ptr %10, ptr %12, align 8 + %13 = getelementptr inbounds i8, ptr %5, i64 136 + store i8 3, ptr %13, align 8 + %14 = getelementptr inbounds i8, ptr %5, i64 24 + store i64 -9223372036854775808, ptr %14, align 8 + %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !367 + %16 = tail call noundef align 8 dereferenceable_or_null(144) ptr @__rust_alloc(i64 noundef 144, i64 noundef 8) #25, !noalias !367 + %17 = icmp eq ptr %16, null + br i1 %17, label %18, label %23 + +18: ; preds = %8 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 144) #26 - to label %.noexc unwind label %18 + to label %.noexc unwind label %19 -.noexc: ; preds = %17 +.noexc: ; preds = %18 unreachable -18: ; preds = %17 - %19 = landingpad { ptr, i32 } +19: ; preds = %18 + %20 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr468drop_in_place$LT$futures_util..stream..try_stream..try_filter..TryFilter$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$object_store..ObjectMeta$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$C$futures_util..future..ready..Ready$LT$bool$GT$$C$$LT$object_store..local..LocalFileSystem$u20$as$u20$object_store..ObjectStore$GT$..list_with_offset..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcfe3f7e4afdc8f31E"(ptr noalias noundef nonnull align 8 dereferenceable(144) %4) #23 - to label %.body unwind label %20 + invoke void @"_ZN4core3ptr468drop_in_place$LT$futures_util..stream..try_stream..try_filter..TryFilter$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$object_store..ObjectMeta$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$C$futures_util..future..ready..Ready$LT$bool$GT$$C$$LT$object_store..local..LocalFileSystem$u20$as$u20$object_store..ObjectStore$GT$..list_with_offset..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcfe3f7e4afdc8f31E"(ptr noalias noundef nonnull align 8 dereferenceable(144) %5) #23 + to label %.body unwind label %21 -20: ; preds = %18 - %21 = landingpad { ptr, i32 } +21: ; preds = %19 + %22 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #24 unreachable -22: ; preds = %7 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %15, ptr noundef nonnull align 8 dereferenceable(144) %4, i64 144, i1 false) - call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %4) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) - %23 = insertvalue { ptr, ptr } poison, ptr %15, 0 - %24 = insertvalue { ptr, ptr } %23, ptr @anon.9830662ab85564cf5ada40a3500d23d6.2.llvm.1413925132987444071, 1 - ret { ptr, ptr } %24 +23: ; preds = %8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %16, ptr noundef nonnull align 8 dereferenceable(144) %5, i64 144, i1 false) + call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %5) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) + %24 = insertvalue { ptr, ptr } poison, ptr %16, 0 + %25 = insertvalue { ptr, ptr } %24, ptr @anon.9830662ab85564cf5ada40a3500d23d6.2.llvm.1413925132987444071, 1 + ret { ptr, ptr } %25 -.body: ; preds = %18, %25 - %eh.lpad-body6 = phi { ptr, i32 } [ %26, %25 ], [ %19, %18 ] +.body: ; preds = %19, %26 + %eh.lpad-body6 = phi { ptr, i32 } [ %27, %26 ], [ %20, %19 ] resume { ptr, i32 } %eh.lpad-body6 -25: ; preds = %3 - %26 = landingpad { ptr, i32 } +26: ; preds = %3 + %27 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr45drop_in_place$LT$object_store..path..Path$GT$17he665f6ff3cbdf658E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) #23 - to label %.body unwind label %27 + invoke void @"_ZN4core3ptr45drop_in_place$LT$object_store..path..Path$GT$17he665f6ff3cbdf658E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #23 + to label %.body unwind label %28 -27: ; preds = %25 - %28 = landingpad { ptr, i32 } +28: ; preds = %26 + %29 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #24 unreachable diff --git a/bench/delta-rs/optimized/4yzqn3zldbxccs8p.ll b/bench/delta-rs/optimized/4yzqn3zldbxccs8p.ll index 836331a13d3..21587ccbfc6 100644 --- a/bench/delta-rs/optimized/4yzqn3zldbxccs8p.ll +++ b/bench/delta-rs/optimized/4yzqn3zldbxccs8p.ll @@ -2310,70 +2310,74 @@ common.resume: ; preds = %18, %8 ; Function Attrs: nonlazybind uwtable define hidden { ptr, ptr } @_ZN12object_store11ObjectStore16list_with_offset17hf470a301db470ce8E(ptr noalias noundef readonly align 8 dereferenceable(8) %0, ptr noalias noundef readonly align 8 dereferenceable_or_null(24) %1, ptr noalias noundef readonly align 8 dereferenceable(24) %2) unnamed_addr #2 personality ptr @rust_eh_personality { - %4 = alloca { { { { { { i64, ptr, {} }, i64 } } } }, { i64, [11 x i64] }, { { { { { ptr, ptr } }, {} }, {} } }, i8, [7 x i8] }, align 8 - %5 = alloca { { { { i64, ptr, {} }, i64 } } }, align 8 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) - call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hf54273bb14505f61E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) - call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %4) - %6 = invoke { ptr, ptr } @"_ZN82_$LT$object_store..local..LocalFileSystem$u20$as$u20$object_store..ObjectStore$GT$4list17h3fee7735c8c8ae69E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %0, ptr noalias noundef readonly align 8 dereferenceable_or_null(24) %1) - to label %7 unwind label %25 + %4 = alloca { { { i64, ptr, {} }, i64 } }, align 8 + %5 = alloca { { { { { { i64, ptr, {} }, i64 } } } }, { i64, [11 x i64] }, { { { { { ptr, ptr } }, {} }, {} } }, i8, [7 x i8] }, align 8 + %6 = alloca { { { { i64, ptr, {} }, i64 } } }, align 8 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) + call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hf54273bb14505f61E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) + call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %5) + %7 = invoke { ptr, ptr } @"_ZN82_$LT$object_store..local..LocalFileSystem$u20$as$u20$object_store..ObjectStore$GT$4list17h3fee7735c8c8ae69E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %0, ptr noalias noundef readonly align 8 dereferenceable_or_null(24) %1) + to label %8 unwind label %26 -7: ; preds = %3 - %8 = extractvalue { ptr, ptr } %6, 0 - %9 = extractvalue { ptr, ptr } %6, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) - %10 = getelementptr inbounds i8, ptr %4, i64 120 - store ptr %8, ptr %10, align 8 - %11 = getelementptr inbounds i8, ptr %4, i64 128 +8: ; preds = %3 + %9 = extractvalue { ptr, ptr } %7, 0 + %10 = extractvalue { ptr, ptr } %7, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %6, i64 24, i1 false) + %11 = getelementptr inbounds i8, ptr %5, i64 120 store ptr %9, ptr %11, align 8 - %12 = getelementptr inbounds i8, ptr %4, i64 136 - store i8 3, ptr %12, align 8 - %13 = getelementptr inbounds i8, ptr %4, i64 24 - store i64 -9223372036854775808, ptr %13, align 8 - %14 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !354 - %15 = tail call noundef align 8 dereferenceable_or_null(144) ptr @__rust_alloc(i64 noundef 144, i64 noundef 8) #24, !noalias !354 - %16 = icmp eq ptr %15, null - br i1 %16, label %17, label %22 + %12 = getelementptr inbounds i8, ptr %5, i64 128 + store ptr %10, ptr %12, align 8 + %13 = getelementptr inbounds i8, ptr %5, i64 136 + store i8 3, ptr %13, align 8 + %14 = getelementptr inbounds i8, ptr %5, i64 24 + store i64 -9223372036854775808, ptr %14, align 8 + %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !354 + %16 = tail call noundef align 8 dereferenceable_or_null(144) ptr @__rust_alloc(i64 noundef 144, i64 noundef 8) #24, !noalias !354 + %17 = icmp eq ptr %16, null + br i1 %17, label %18, label %23 -17: ; preds = %7 +18: ; preds = %8 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 144) #36 - to label %.noexc unwind label %18 + to label %.noexc unwind label %19 -.noexc: ; preds = %17 +.noexc: ; preds = %18 unreachable -18: ; preds = %17 - %19 = landingpad { ptr, i32 } +19: ; preds = %18 + %20 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr468drop_in_place$LT$futures_util..stream..try_stream..try_filter..TryFilter$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$object_store..ObjectMeta$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$C$futures_util..future..ready..Ready$LT$bool$GT$$C$$LT$object_store..local..LocalFileSystem$u20$as$u20$object_store..ObjectStore$GT$..list_with_offset..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17heac06b2684e8064bE"(ptr noalias noundef nonnull align 8 dereferenceable(144) %4) #37 - to label %.body unwind label %20 + invoke void @"_ZN4core3ptr468drop_in_place$LT$futures_util..stream..try_stream..try_filter..TryFilter$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$object_store..ObjectMeta$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$C$futures_util..future..ready..Ready$LT$bool$GT$$C$$LT$object_store..local..LocalFileSystem$u20$as$u20$object_store..ObjectStore$GT$..list_with_offset..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17heac06b2684e8064bE"(ptr noalias noundef nonnull align 8 dereferenceable(144) %5) #37 + to label %.body unwind label %21 -20: ; preds = %18 - %21 = landingpad { ptr, i32 } +21: ; preds = %19 + %22 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #38 unreachable -22: ; preds = %7 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %15, ptr noundef nonnull align 8 dereferenceable(144) %4, i64 144, i1 false) - call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %4) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) - %23 = insertvalue { ptr, ptr } poison, ptr %15, 0 - %24 = insertvalue { ptr, ptr } %23, ptr @anon.e9045b00a1ae718fdaff1813a74cc412.144, 1 - ret { ptr, ptr } %24 +23: ; preds = %8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %16, ptr noundef nonnull align 8 dereferenceable(144) %5, i64 144, i1 false) + call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %5) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) + %24 = insertvalue { ptr, ptr } poison, ptr %16, 0 + %25 = insertvalue { ptr, ptr } %24, ptr @anon.e9045b00a1ae718fdaff1813a74cc412.144, 1 + ret { ptr, ptr } %25 -.body: ; preds = %18, %25 - %eh.lpad-body6 = phi { ptr, i32 } [ %26, %25 ], [ %19, %18 ] +.body: ; preds = %19, %26 + %eh.lpad-body6 = phi { ptr, i32 } [ %27, %26 ], [ %20, %19 ] resume { ptr, i32 } %eh.lpad-body6 -25: ; preds = %3 - %26 = landingpad { ptr, i32 } +26: ; preds = %3 + %27 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr45drop_in_place$LT$object_store..path..Path$GT$17ha1e4e72be02114afE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) #37 - to label %.body unwind label %27 + invoke void @"_ZN4core3ptr45drop_in_place$LT$object_store..path..Path$GT$17ha1e4e72be02114afE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #37 + to label %.body unwind label %28 -27: ; preds = %25 - %28 = landingpad { ptr, i32 } +28: ; preds = %26 + %29 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #38 unreachable diff --git a/bench/diesel-rs/optimized/3btvyztn2iiarpvf.ll b/bench/diesel-rs/optimized/3btvyztn2iiarpvf.ll index aed3f89a1f6..b1e01d2dc1a 100644 --- a/bench/diesel-rs/optimized/3btvyztn2iiarpvf.ll +++ b/bench/diesel-rs/optimized/3btvyztn2iiarpvf.ll @@ -7890,105 +7890,109 @@ define hidden void @"_ZN6diesel6sqlite10connection4stmt12StatementUse3run28_$u7b define hidden void @_ZN6diesel6sqlite10connection4stmt12StatementUse4step17h2f7cd499d3de4046E(ptr noalias nocapture noundef writeonly sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %0, ptr noalias noundef align 8 dereferenceable(104) %1, i1 noundef zeroext %2) unnamed_addr #0 personality ptr @rust_eh_personality { %4 = alloca { [1 x i64], i64, [1 x i64] }, align 8 %5 = alloca { i64, [3 x i64] }, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) - %6 = load i64, ptr %1, align 8, !range !179, !noundef !10 - %trunc.i = trunc nuw i64 %6 to i1 - %7 = getelementptr inbounds i8, ptr %1, i64 8 - %8 = load ptr, ptr %7, align 8, !nonnull !10, !align !11 - %.0.i = select i1 %trunc.i, ptr %8, ptr %7 - %9 = load ptr, ptr %.0.i, align 8, !nonnull !10, !noundef !10 - %10 = tail call noundef i32 @sqlite3_step(ptr noundef nonnull %9) - switch i32 %10, label %11 [ - i32 101, label %14 - i32 100, label %16 + %6 = alloca { i64, [3 x i64] }, align 8 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) + %7 = load i64, ptr %1, align 8, !range !179, !noundef !10 + %trunc.i = trunc nuw i64 %7 to i1 + %8 = getelementptr inbounds i8, ptr %1, i64 8 + %9 = load ptr, ptr %8, align 8, !nonnull !10, !align !11 + %.0.i = select i1 %trunc.i, ptr %9, ptr %8 + %10 = load ptr, ptr %.0.i, align 8, !nonnull !10, !noundef !10 + %11 = tail call noundef i32 @sqlite3_step(ptr noundef nonnull %10) + switch i32 %11, label %12 [ + i32 101, label %15 + i32 100, label %17 ] -11: ; preds = %3 +12: ; preds = %3 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) tail call void @llvm.experimental.noalias.scope.decl(metadata !1088) - %12 = load ptr, ptr %.0.i, align 8, !alias.scope !1088, !nonnull !10, !noundef !10 - %13 = tail call noundef ptr @sqlite3_db_handle(ptr noundef nonnull %12), !noalias !1088 - call void @_ZN6diesel6sqlite10connection4stmt10last_error17h88cad45d2dd6209dE.llvm.3868854263495710559(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %5, ptr noundef %13) - br label %18 + %13 = load ptr, ptr %.0.i, align 8, !alias.scope !1088, !nonnull !10, !noundef !10 + %14 = tail call noundef ptr @sqlite3_db_handle(ptr noundef nonnull %13), !noalias !1088 + call void @_ZN6diesel6sqlite10connection4stmt10last_error17h88cad45d2dd6209dE.llvm.3868854263495710559(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %5, ptr noundef %14) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %5, i64 32, i1 false) + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) + br label %19 -14: ; preds = %3 - %15 = getelementptr inbounds i8, ptr %5, i64 8 - store i8 0, ptr %15, align 8 - store i64 -9223372036854775798, ptr %5, align 8 - br label %18 +15: ; preds = %3 + %16 = getelementptr inbounds i8, ptr %6, i64 8 + store i8 0, ptr %16, align 8 + store i64 -9223372036854775798, ptr %6, align 8 + br label %19 -16: ; preds = %3 - %17 = getelementptr inbounds i8, ptr %5, i64 8 - store i8 1, ptr %17, align 8 - store i64 -9223372036854775798, ptr %5, align 8 - br label %18 +17: ; preds = %3 + %18 = getelementptr inbounds i8, ptr %6, i64 8 + store i8 1, ptr %18, align 8 + store i64 -9223372036854775798, ptr %6, align 8 + br label %19 -18: ; preds = %16, %14, %11 - br i1 %2, label %20, label %19 +19: ; preds = %17, %15, %12 + br i1 %2, label %21, label %20 -19: ; preds = %"_ZN4core3ptr102drop_in_place$LT$diesel..util..once_cell..OnceCell$LT$alloc..vec..Vec$LT$$BP$const$u20$str$GT$$GT$$GT$17h54472c3e358a4b9cE.exit", %18 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %5, i64 32, i1 false) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) +20: ; preds = %"_ZN4core3ptr102drop_in_place$LT$diesel..util..once_cell..OnceCell$LT$alloc..vec..Vec$LT$$BP$const$u20$str$GT$$GT$$GT$17h54472c3e358a4b9cE.exit", %19 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %6, i64 32, i1 false) + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) ret void -20: ; preds = %18 - %21 = getelementptr inbounds i8, ptr %1, i64 80 +21: ; preds = %19 + %22 = getelementptr inbounds i8, ptr %1, i64 80 tail call void @llvm.experimental.noalias.scope.decl(metadata !1091) tail call void @llvm.experimental.noalias.scope.decl(metadata !1094) tail call void @llvm.experimental.noalias.scope.decl(metadata !1097) - %22 = load i64, ptr %21, align 8, !range !104, !alias.scope !1100, !noundef !10 - %23 = icmp eq i64 %22, -9223372036854775808 - br i1 %23, label %"_ZN4core3ptr102drop_in_place$LT$diesel..util..once_cell..OnceCell$LT$alloc..vec..Vec$LT$$BP$const$u20$str$GT$$GT$$GT$17h54472c3e358a4b9cE.exit", label %24 + %23 = load i64, ptr %22, align 8, !range !104, !alias.scope !1100, !noundef !10 + %24 = icmp eq i64 %23, -9223372036854775808 + br i1 %24, label %"_ZN4core3ptr102drop_in_place$LT$diesel..util..once_cell..OnceCell$LT$alloc..vec..Vec$LT$$BP$const$u20$str$GT$$GT$$GT$17h54472c3e358a4b9cE.exit", label %25 -24: ; preds = %20 +25: ; preds = %21 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !1101 - invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha3eaf5a836cdeedbE.llvm.2909037117879540835"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %21) - to label %.noexc unwind label %33 - -.noexc: ; preds = %24 - %25 = getelementptr inbounds i8, ptr %4, i64 8 - %26 = load i64, ptr %25, align 8, !range !104, !noalias !1101, !noundef !10 - %.not.i.i.i.i.i.i = icmp eq i64 %26, 0 - br i1 %.not.i.i.i.i.i.i, label %"_ZN4core3ptr61drop_in_place$LT$alloc..vec..Vec$LT$$BP$const$u20$str$GT$$GT$17ha7cdebbaa5845bbfE.exit.i.i.i", label %27 - -27: ; preds = %.noexc - %28 = getelementptr inbounds i8, ptr %4, i64 16 - %29 = load i64, ptr %28, align 8, !noalias !1101, !noundef !10 - %30 = icmp eq i64 %29, 0 - br i1 %30, label %"_ZN4core3ptr61drop_in_place$LT$alloc..vec..Vec$LT$$BP$const$u20$str$GT$$GT$17ha7cdebbaa5845bbfE.exit.i.i.i", label %31 - -31: ; preds = %27 - %32 = load ptr, ptr %4, align 8, !noalias !1101, !nonnull !10, !noundef !10 - tail call void @__rust_dealloc(ptr noundef nonnull %32, i64 noundef %29, i64 noundef %26) #27 + invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha3eaf5a836cdeedbE.llvm.2909037117879540835"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %22) + to label %.noexc unwind label %34 + +.noexc: ; preds = %25 + %26 = getelementptr inbounds i8, ptr %4, i64 8 + %27 = load i64, ptr %26, align 8, !range !104, !noalias !1101, !noundef !10 + %.not.i.i.i.i.i.i = icmp eq i64 %27, 0 + br i1 %.not.i.i.i.i.i.i, label %"_ZN4core3ptr61drop_in_place$LT$alloc..vec..Vec$LT$$BP$const$u20$str$GT$$GT$17ha7cdebbaa5845bbfE.exit.i.i.i", label %28 + +28: ; preds = %.noexc + %29 = getelementptr inbounds i8, ptr %4, i64 16 + %30 = load i64, ptr %29, align 8, !noalias !1101, !noundef !10 + %31 = icmp eq i64 %30, 0 + br i1 %31, label %"_ZN4core3ptr61drop_in_place$LT$alloc..vec..Vec$LT$$BP$const$u20$str$GT$$GT$17ha7cdebbaa5845bbfE.exit.i.i.i", label %32 + +32: ; preds = %28 + %33 = load ptr, ptr %4, align 8, !noalias !1101, !nonnull !10, !noundef !10 + tail call void @__rust_dealloc(ptr noundef nonnull %33, i64 noundef %30, i64 noundef %27) #27 br label %"_ZN4core3ptr61drop_in_place$LT$alloc..vec..Vec$LT$$BP$const$u20$str$GT$$GT$17ha7cdebbaa5845bbfE.exit.i.i.i" -"_ZN4core3ptr61drop_in_place$LT$alloc..vec..Vec$LT$$BP$const$u20$str$GT$$GT$17ha7cdebbaa5845bbfE.exit.i.i.i": ; preds = %31, %27, %.noexc +"_ZN4core3ptr61drop_in_place$LT$alloc..vec..Vec$LT$$BP$const$u20$str$GT$$GT$17ha7cdebbaa5845bbfE.exit.i.i.i": ; preds = %32, %28, %.noexc call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !1101 br label %"_ZN4core3ptr102drop_in_place$LT$diesel..util..once_cell..OnceCell$LT$alloc..vec..Vec$LT$$BP$const$u20$str$GT$$GT$$GT$17h54472c3e358a4b9cE.exit" -33: ; preds = %24 - %34 = landingpad { ptr, i32 } +34: ; preds = %25 + %35 = landingpad { ptr, i32 } cleanup - store i64 -9223372036854775808, ptr %21, align 8 - %35 = load i64, ptr %5, align 8, !range !166, !alias.scope !1108, !noundef !10 - %36 = icmp eq i64 %35, -9223372036854775798 - br i1 %36, label %"_ZN4core3ptr77drop_in_place$LT$core..result..Result$LT$bool$C$diesel..result..Error$GT$$GT$17hff17af72e7f92e20E.llvm.3868854263495710559.exit", label %37 + store i64 -9223372036854775808, ptr %22, align 8 + %36 = load i64, ptr %6, align 8, !range !166, !alias.scope !1108, !noundef !10 + %37 = icmp eq i64 %36, -9223372036854775798 + br i1 %37, label %"_ZN4core3ptr77drop_in_place$LT$core..result..Result$LT$bool$C$diesel..result..Error$GT$$GT$17hff17af72e7f92e20E.llvm.3868854263495710559.exit", label %38 -37: ; preds = %33 - invoke void @"_ZN4core3ptr42drop_in_place$LT$diesel..result..Error$GT$17h3557db855e5379c0E.llvm.3868854263495710559"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %"_ZN4core3ptr77drop_in_place$LT$core..result..Result$LT$bool$C$diesel..result..Error$GT$$GT$17hff17af72e7f92e20E.llvm.3868854263495710559.exit" unwind label %38 +38: ; preds = %34 + invoke void @"_ZN4core3ptr42drop_in_place$LT$diesel..result..Error$GT$17h3557db855e5379c0E.llvm.3868854263495710559"(ptr noalias noundef nonnull align 8 dereferenceable(32) %6) + to label %"_ZN4core3ptr77drop_in_place$LT$core..result..Result$LT$bool$C$diesel..result..Error$GT$$GT$17hff17af72e7f92e20E.llvm.3868854263495710559.exit" unwind label %39 -"_ZN4core3ptr102drop_in_place$LT$diesel..util..once_cell..OnceCell$LT$alloc..vec..Vec$LT$$BP$const$u20$str$GT$$GT$$GT$17h54472c3e358a4b9cE.exit": ; preds = %"_ZN4core3ptr61drop_in_place$LT$alloc..vec..Vec$LT$$BP$const$u20$str$GT$$GT$17ha7cdebbaa5845bbfE.exit.i.i.i", %20 - store i64 -9223372036854775808, ptr %21, align 8 - br label %19 +"_ZN4core3ptr102drop_in_place$LT$diesel..util..once_cell..OnceCell$LT$alloc..vec..Vec$LT$$BP$const$u20$str$GT$$GT$$GT$17h54472c3e358a4b9cE.exit": ; preds = %"_ZN4core3ptr61drop_in_place$LT$alloc..vec..Vec$LT$$BP$const$u20$str$GT$$GT$17ha7cdebbaa5845bbfE.exit.i.i.i", %21 + store i64 -9223372036854775808, ptr %22, align 8 + br label %20 -38: ; preds = %37 - %39 = landingpad { ptr, i32 } +39: ; preds = %38 + %40 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #30 unreachable -"_ZN4core3ptr77drop_in_place$LT$core..result..Result$LT$bool$C$diesel..result..Error$GT$$GT$17hff17af72e7f92e20E.llvm.3868854263495710559.exit": ; preds = %33, %37 - resume { ptr, i32 } %34 +"_ZN4core3ptr77drop_in_place$LT$core..result..Result$LT$bool$C$diesel..result..Error$GT$$GT$17hff17af72e7f92e20E.llvm.3868854263495710559.exit": ; preds = %34, %38 + resume { ptr, i32 } %35 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/diesel-rs/optimized/4evqpcg6dxygah01.ll b/bench/diesel-rs/optimized/4evqpcg6dxygah01.ll index eb887e96618..68084bfb047 100644 --- a/bench/diesel-rs/optimized/4evqpcg6dxygah01.ll +++ b/bench/diesel-rs/optimized/4evqpcg6dxygah01.ll @@ -2543,31 +2543,35 @@ define void @_ZN17all_about_updates15hide_everything17hfd47f7c16837509cE(ptr noa ; Function Attrs: nonlazybind uwtable define void @_ZN17all_about_updates23update_from_post_fields17hb24d248db6561488E(ptr noalias nocapture noundef sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %0, ptr noalias noundef readonly align 8 dereferenceable(80) %1, ptr noalias noundef align 8 dereferenceable(128) %2) unnamed_addr #0 personality ptr @rust_eh_personality { %4 = alloca { ptr, ptr, ptr, ptr, ptr }, align 8 - %5 = alloca { { ptr, ptr, ptr, ptr, ptr }, { {} }, {}, {} }, align 8 - call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5) - call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4), !noalias !415 - %6 = tail call noundef align 8 dereferenceable(24) ptr @"_ZN6diesel10type_impls10primitives13foreign_impls1_119_$LT$impl$u20$diesel..expression..AsExpression$LT$diesel..sql_types..Text$GT$$u20$for$u20$$RF$alloc..string..String$GT$13as_expression17hb0ccee00cd9163d4E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1), !noalias !422 - %7 = getelementptr inbounds i8, ptr %1, i64 24 - %8 = tail call noundef align 8 dereferenceable(24) ptr @"_ZN6diesel10type_impls10primitives13foreign_impls1_119_$LT$impl$u20$diesel..expression..AsExpression$LT$diesel..sql_types..Text$GT$$u20$for$u20$$RF$alloc..string..String$GT$13as_expression17hb0ccee00cd9163d4E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %7), !noalias !422 - %9 = getelementptr inbounds i8, ptr %1, i64 76 - %10 = tail call noundef align 1 dereferenceable(1) ptr @"_ZN6diesel10type_impls10primitives13foreign_impls1_102_$LT$impl$u20$diesel..expression..AsExpression$LT$diesel..sql_types..Bool$GT$$u20$for$u20$$RF$bool$GT$13as_expression17hb6ff24b02c5022a4E"(ptr noalias noundef nonnull readonly align 1 dereferenceable(1) %9), !noalias !422 - %11 = getelementptr inbounds i8, ptr %1, i64 48 - %12 = tail call noundef align 8 dereferenceable(16) ptr @"_ZN6diesel10type_impls13date_and_time1_124_$LT$impl$u20$diesel..expression..AsExpression$LT$diesel..sql_types..Timestamp$GT$$u20$for$u20$$RF$std..time..SystemTime$GT$13as_expression17h501471e81a73b24cE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %11), !noalias !422 - %13 = getelementptr inbounds i8, ptr %1, i64 72 - %14 = tail call noundef align 4 dereferenceable(4) ptr @"_ZN6diesel10type_impls10primitives13foreign_impls1_104_$LT$impl$u20$diesel..expression..AsExpression$LT$diesel..sql_types..Integer$GT$$u20$for$u20$$RF$i32$GT$13as_expression17h5daa42a20fc07c02E"(ptr noalias noundef nonnull readonly align 4 dereferenceable(4) %13), !noalias !422 - store ptr %6, ptr %4, align 8, !noalias !415 - %15 = getelementptr inbounds i8, ptr %4, i64 8 - store ptr %8, ptr %15, align 8, !noalias !415 - %16 = getelementptr inbounds i8, ptr %4, i64 16 - store ptr %10, ptr %16, align 8, !noalias !415 - %17 = getelementptr inbounds i8, ptr %4, i64 24 - store ptr %12, ptr %17, align 8, !noalias !415 - %18 = getelementptr inbounds i8, ptr %4, i64 32 - store ptr %14, ptr %18, align 8, !noalias !415 - call void @"_ZN6diesel10type_impls6tuples124_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$C$T2$C$T3$C$T4$RP$$GT$12as_changeset17h5f39969ad68203e2E"(ptr noalias nocapture noundef nonnull sret({ ptr, ptr, ptr, ptr, ptr }) align 8 dereferenceable(40) %5, ptr noalias nocapture noundef nonnull align 8 dereferenceable(40) %4), !noalias !9 - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4), !noalias !415 - call void @"_ZN87_$LT$diesel..pg..connection..PgConnection$u20$as$u20$diesel..connection..Connection$GT$23execute_returning_count17h83f9b30708857f88E"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %0, ptr noalias noundef nonnull align 8 dereferenceable(128) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(40) %5) - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) + %5 = alloca { ptr, ptr, ptr, ptr, ptr }, align 8 + %6 = alloca { { ptr, ptr, ptr, ptr, ptr }, { {} }, {}, {} }, align 8 + call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) + call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5), !noalias !415 + call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4), !noalias !419 + %7 = tail call noundef align 8 dereferenceable(24) ptr @"_ZN6diesel10type_impls10primitives13foreign_impls1_119_$LT$impl$u20$diesel..expression..AsExpression$LT$diesel..sql_types..Text$GT$$u20$for$u20$$RF$alloc..string..String$GT$13as_expression17hb0ccee00cd9163d4E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1), !noalias !423 + %8 = getelementptr inbounds i8, ptr %1, i64 24 + %9 = tail call noundef align 8 dereferenceable(24) ptr @"_ZN6diesel10type_impls10primitives13foreign_impls1_119_$LT$impl$u20$diesel..expression..AsExpression$LT$diesel..sql_types..Text$GT$$u20$for$u20$$RF$alloc..string..String$GT$13as_expression17hb0ccee00cd9163d4E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %8), !noalias !423 + %10 = getelementptr inbounds i8, ptr %1, i64 76 + %11 = tail call noundef align 1 dereferenceable(1) ptr @"_ZN6diesel10type_impls10primitives13foreign_impls1_102_$LT$impl$u20$diesel..expression..AsExpression$LT$diesel..sql_types..Bool$GT$$u20$for$u20$$RF$bool$GT$13as_expression17hb6ff24b02c5022a4E"(ptr noalias noundef nonnull readonly align 1 dereferenceable(1) %10), !noalias !423 + %12 = getelementptr inbounds i8, ptr %1, i64 48 + %13 = tail call noundef align 8 dereferenceable(16) ptr @"_ZN6diesel10type_impls13date_and_time1_124_$LT$impl$u20$diesel..expression..AsExpression$LT$diesel..sql_types..Timestamp$GT$$u20$for$u20$$RF$std..time..SystemTime$GT$13as_expression17h501471e81a73b24cE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %12), !noalias !423 + %14 = getelementptr inbounds i8, ptr %1, i64 72 + %15 = tail call noundef align 4 dereferenceable(4) ptr @"_ZN6diesel10type_impls10primitives13foreign_impls1_104_$LT$impl$u20$diesel..expression..AsExpression$LT$diesel..sql_types..Integer$GT$$u20$for$u20$$RF$i32$GT$13as_expression17h5daa42a20fc07c02E"(ptr noalias noundef nonnull readonly align 4 dereferenceable(4) %14), !noalias !423 + store ptr %7, ptr %4, align 8, !noalias !419 + %16 = getelementptr inbounds i8, ptr %4, i64 8 + store ptr %9, ptr %16, align 8, !noalias !419 + %17 = getelementptr inbounds i8, ptr %4, i64 16 + store ptr %11, ptr %17, align 8, !noalias !419 + %18 = getelementptr inbounds i8, ptr %4, i64 24 + store ptr %13, ptr %18, align 8, !noalias !419 + %19 = getelementptr inbounds i8, ptr %4, i64 32 + store ptr %15, ptr %19, align 8, !noalias !419 + call void @"_ZN6diesel10type_impls6tuples124_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$C$T2$C$T3$C$T4$RP$$GT$12as_changeset17h5f39969ad68203e2E"(ptr noalias nocapture noundef nonnull sret({ ptr, ptr, ptr, ptr, ptr }) align 8 dereferenceable(40) %5, ptr noalias nocapture noundef nonnull align 8 dereferenceable(40) %4), !noalias !424 + call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4), !noalias !419 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %6, ptr noundef nonnull align 8 dereferenceable(40) %5, i64 40, i1 false), !noalias !425 + call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5), !noalias !415 + call void @"_ZN87_$LT$diesel..pg..connection..PgConnection$u20$as$u20$diesel..connection..Connection$GT$23execute_returning_count17h83f9b30708857f88E"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %0, ptr noalias noundef nonnull align 8 dereferenceable(128) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(40) %6) + call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) ret void } @@ -2577,9 +2581,9 @@ define void @_ZN17all_about_updates18update_with_option17hd782219a8ebc4583E(ptr %4 = tail call noundef align 8 dereferenceable(16) ptr @"_ZN6diesel10type_impls10primitives13foreign_impls1_105_$LT$impl$u20$diesel..expression..AsExpression$LT$diesel..sql_types..Text$GT$$u20$for$u20$$RF$$RF$str$GT$13as_expression17h3e9485229295b47dE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) getelementptr inbounds (i8, ptr @anon.7677ef7fe63393c0d74a2170710465ed.3, i64 16)) %5 = tail call noundef align 8 dereferenceable(16) ptr @"_ZN137_$LT$diesel..expression..operators..Eq$LT$Left$C$Right$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17hd33b9bfd40b2147dE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %4) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) - store ptr null, ptr %3, align 8, !noalias !423 + store ptr null, ptr %3, align 8, !noalias !426 %6 = getelementptr inbounds i8, ptr %3, i64 8 - store ptr %5, ptr %6, align 8, !noalias !423 + store ptr %5, ptr %6, align 8, !noalias !426 call void @"_ZN87_$LT$diesel..pg..connection..PgConnection$u20$as$u20$diesel..connection..Connection$GT$23execute_returning_count17h435e3d9a6bc2bc86E"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %0, ptr noalias noundef nonnull align 8 dereferenceable(128) %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %3) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) ret void @@ -2656,19 +2660,19 @@ define void @"_ZN17all_about_updates1_117_$LT$impl$u20$diesel..query_builder..up call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %1, i64 24, i1 false) - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.0.i), !noalias !429 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.0.i), !noalias !432 invoke void @"_ZN6diesel10type_impls10primitives13foreign_impls1_115_$LT$impl$u20$diesel..expression..AsExpression$LT$diesel..sql_types..Text$GT$$u20$for$u20$alloc..string..String$GT$13as_expression17hfdd612abb3cec54aE"(ptr noalias nocapture noundef nonnull sret({ { { { i64, ptr }, i64 } }, {} }) align 8 dereferenceable(24) %.sroa.0.i, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %5) to label %8 unwind label %38 8: ; preds = %2 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0.i, i64 24, i1 false), !noalias !433 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.0.i), !noalias !429 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0.i, i64 24, i1 false), !noalias !436 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.0.i), !noalias !432 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) %9 = getelementptr inbounds i8, ptr %1, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.0.i4), !noalias !434 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.0.i4), !noalias !437 invoke void @"_ZN6diesel10type_impls10primitives13foreign_impls1_115_$LT$impl$u20$diesel..expression..AsExpression$LT$diesel..sql_types..Text$GT$$u20$for$u20$alloc..string..String$GT$13as_expression17hfdd612abb3cec54aE"(ptr noalias nocapture noundef nonnull sret({ { { { i64, ptr }, i64 } }, {} }) align 8 dereferenceable(24) %.sroa.0.i4, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %3) to label %13 unwind label %11 @@ -2683,8 +2687,8 @@ define void @"_ZN17all_about_updates1_117_$LT$impl$u20$diesel..query_builder..up br label %10 13: ; preds = %8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0.i4, i64 24, i1 false), !noalias !438 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.0.i4), !noalias !434 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0.i4, i64 24, i1 false), !noalias !441 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.0.i4), !noalias !437 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) %14 = getelementptr inbounds i8, ptr %1, i64 76 %15 = load i8, ptr %14, align 4, !range !10, !noundef !9 @@ -2702,7 +2706,7 @@ _ZN6diesel18expression_methods25global_expression_methods17ExpressionMethods2eq1 %20 = getelementptr inbounds i8, ptr %1, i64 48 %21 = load i64, ptr %20, align 8, !noundef !9 %22 = getelementptr inbounds i8, ptr %1, i64 56 - %23 = load i32, ptr %22, align 8, !range !439, !noundef !9 + %23 = load i32, ptr %22, align 8, !range !442, !noundef !9 %24 = invoke { i64, i32 } @"_ZN6diesel10type_impls13date_and_time1_120_$LT$impl$u20$diesel..expression..AsExpression$LT$diesel..sql_types..Timestamp$GT$$u20$for$u20$std..time..SystemTime$GT$13as_expression17hc6ddd1d2ceaf0218E"(i64 noundef %21, i32 noundef %23) to label %_ZN6diesel18expression_methods25global_expression_methods17ExpressionMethods2eq17h3d1ec8bf56239169E.exit unwind label %18 @@ -2815,12 +2819,12 @@ define void @"_ZN17all_about_updates18update_with_option1_141_$LT$impl$u20$diese 23: ; preds = %12, %16 %.sroa.04.0 = phi ptr [ %20, %16 ], [ null, %12 ] %.sroa.55.0 = phi i64 [ %22, %16 ], [ undef, %12 ] - tail call void @llvm.experimental.noalias.scope.decl(metadata !440) + tail call void @llvm.experimental.noalias.scope.decl(metadata !443) %24 = icmp eq ptr %.sroa.0.0, null br i1 %24, label %"_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17hf0aedb94b22c316dE.llvm.12703545329642850438.exit.i", label %25 25: ; preds = %23 - %26 = tail call { ptr, i64 } @"_ZN137_$LT$diesel..expression..operators..Eq$LT$Left$C$Right$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17h7b04bb07f3008016E"(ptr noalias noundef nonnull readonly align 1 %.sroa.0.0, i64 noundef %.sroa.5.0), !noalias !443 + %26 = tail call { ptr, i64 } @"_ZN137_$LT$diesel..expression..operators..Eq$LT$Left$C$Right$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17h7b04bb07f3008016E"(ptr noalias noundef nonnull readonly align 1 %.sroa.0.0, i64 noundef %.sroa.5.0), !noalias !446 %27 = extractvalue { ptr, i64 } %26, 0 %28 = extractvalue { ptr, i64 } %26, 1 br label %"_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17hf0aedb94b22c316dE.llvm.12703545329642850438.exit.i" @@ -2832,7 +2836,7 @@ define void @"_ZN17all_about_updates18update_with_option1_141_$LT$impl$u20$diese br i1 %29, label %"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17h0b9e71c3760be6ceE.exit", label %30 30: ; preds = %"_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17hf0aedb94b22c316dE.llvm.12703545329642850438.exit.i" - %31 = tail call { ptr, i64 } @"_ZN137_$LT$diesel..expression..operators..Eq$LT$Left$C$Right$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17h0275eab74fdbdf97E"(ptr noalias noundef nonnull readonly align 1 %.sroa.04.0, i64 noundef %.sroa.55.0), !noalias !443 + %31 = tail call { ptr, i64 } @"_ZN137_$LT$diesel..expression..operators..Eq$LT$Left$C$Right$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17h0275eab74fdbdf97E"(ptr noalias noundef nonnull readonly align 1 %.sroa.04.0, i64 noundef %.sroa.55.0), !noalias !446 %32 = extractvalue { ptr, i64 } %31, 0 %33 = extractvalue { ptr, i64 } %31, 1 br label %"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17h0b9e71c3760be6ceE.exit" @@ -2840,13 +2844,13 @@ define void @"_ZN17all_about_updates18update_with_option1_141_$LT$impl$u20$diese "_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17h0b9e71c3760be6ceE.exit": ; preds = %"_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17hf0aedb94b22c316dE.llvm.12703545329642850438.exit.i", %30 %.sroa.02.0.i2.i = phi ptr [ %32, %30 ], [ null, %"_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17hf0aedb94b22c316dE.llvm.12703545329642850438.exit.i" ] %.sroa.33.0.i3.i = phi i64 [ %33, %30 ], [ undef, %"_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17hf0aedb94b22c316dE.llvm.12703545329642850438.exit.i" ] - store ptr %.sroa.02.0.i.i, ptr %0, align 8, !alias.scope !440, !noalias !445 + store ptr %.sroa.02.0.i.i, ptr %0, align 8, !alias.scope !443, !noalias !448 %34 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %.sroa.33.0.i.i, ptr %34, align 8, !alias.scope !440, !noalias !445 + store i64 %.sroa.33.0.i.i, ptr %34, align 8, !alias.scope !443, !noalias !448 %35 = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %.sroa.02.0.i2.i, ptr %35, align 8, !alias.scope !440, !noalias !445 + store ptr %.sroa.02.0.i2.i, ptr %35, align 8, !alias.scope !443, !noalias !448 %36 = getelementptr inbounds i8, ptr %0, i64 24 - store i64 %.sroa.33.0.i3.i, ptr %36, align 8, !alias.scope !440, !noalias !445 + store i64 %.sroa.33.0.i3.i, ptr %36, align 8, !alias.scope !443, !noalias !448 ret void } @@ -2877,7 +2881,7 @@ define { ptr, ptr } @"_ZN17all_about_updates18update_with_option1_145_$LT$impl$u br i1 %13, label %"_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17h296a56459d25f7deE.llvm.12703545329642850438.exit.i", label %14 14: ; preds = %12 - %15 = tail call noundef align 8 dereferenceable(16) ptr @"_ZN137_$LT$diesel..expression..operators..Eq$LT$Left$C$Right$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17hc6e54cd8c9d4dfeeE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %.07), !noalias !446 + %15 = tail call noundef align 8 dereferenceable(16) ptr @"_ZN137_$LT$diesel..expression..operators..Eq$LT$Left$C$Right$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17hc6e54cd8c9d4dfeeE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %.07), !noalias !449 br label %"_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17h296a56459d25f7deE.llvm.12703545329642850438.exit.i" "_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17h296a56459d25f7deE.llvm.12703545329642850438.exit.i": ; preds = %14, %12 @@ -3503,37 +3507,40 @@ attributes #16 = { noreturn } !412 = distinct !{!412, !411, !"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17h6732ec54ee3bf697E: argument 1"} !413 = distinct !{!413, !408, !"_ZN6diesel13query_builder16update_statement28UpdateStatement$LT$T$C$U$GT$3set17h268a6eaf89ba9588E: argument 1"} !414 = !{!413} -!415 = !{!416, !418, !419, !421} -!416 = distinct !{!416, !417, !"_ZN17all_about_updates1_121_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$RF$all_about_updates..Post$GT$12as_changeset17hf40c2d0feb4dc9f2E: argument 0"} -!417 = distinct !{!417, !"_ZN17all_about_updates1_121_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$RF$all_about_updates..Post$GT$12as_changeset17hf40c2d0feb4dc9f2E"} -!418 = distinct !{!418, !417, !"_ZN17all_about_updates1_121_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$RF$all_about_updates..Post$GT$12as_changeset17hf40c2d0feb4dc9f2E: argument 1"} -!419 = distinct !{!419, !420, !"_ZN6diesel13query_builder16update_statement28UpdateStatement$LT$T$C$U$GT$3set17haffba55f53196c6dE: argument 0"} -!420 = distinct !{!420, !"_ZN6diesel13query_builder16update_statement28UpdateStatement$LT$T$C$U$GT$3set17haffba55f53196c6dE"} -!421 = distinct !{!421, !420, !"_ZN6diesel13query_builder16update_statement28UpdateStatement$LT$T$C$U$GT$3set17haffba55f53196c6dE: argument 1"} -!422 = !{!416, !419} -!423 = !{!424, !426, !427, !428} -!424 = distinct !{!424, !425, !"_ZN78_$LT$T$u20$as$u20$diesel..query_dsl..load_dsl..ExecuteDsl$LT$Conn$C$DB$GT$$GT$7execute17h39c2cbfbbfa8d9baE: argument 0"} -!425 = distinct !{!425, !"_ZN78_$LT$T$u20$as$u20$diesel..query_dsl..load_dsl..ExecuteDsl$LT$Conn$C$DB$GT$$GT$7execute17h39c2cbfbbfa8d9baE"} -!426 = distinct !{!426, !425, !"_ZN78_$LT$T$u20$as$u20$diesel..query_dsl..load_dsl..ExecuteDsl$LT$Conn$C$DB$GT$$GT$7execute17h39c2cbfbbfa8d9baE: argument 1"} -!427 = distinct !{!427, !425, !"_ZN78_$LT$T$u20$as$u20$diesel..query_dsl..load_dsl..ExecuteDsl$LT$Conn$C$DB$GT$$GT$7execute17h39c2cbfbbfa8d9baE: argument 2"} -!428 = distinct !{!428, !425, !"_ZN78_$LT$T$u20$as$u20$diesel..query_dsl..load_dsl..ExecuteDsl$LT$Conn$C$DB$GT$$GT$7execute17h39c2cbfbbfa8d9baE: argument 3"} -!429 = !{!430, !432} -!430 = distinct !{!430, !431, !"_ZN6diesel18expression_methods25global_expression_methods17ExpressionMethods2eq17h5f61fd8a977b5a18E: argument 0"} -!431 = distinct !{!431, !"_ZN6diesel18expression_methods25global_expression_methods17ExpressionMethods2eq17h5f61fd8a977b5a18E"} -!432 = distinct !{!432, !431, !"_ZN6diesel18expression_methods25global_expression_methods17ExpressionMethods2eq17h5f61fd8a977b5a18E: argument 1"} -!433 = !{!432} -!434 = !{!435, !437} -!435 = distinct !{!435, !436, !"_ZN6diesel18expression_methods25global_expression_methods17ExpressionMethods2eq17hb9c7d197d0147faeE: argument 0"} -!436 = distinct !{!436, !"_ZN6diesel18expression_methods25global_expression_methods17ExpressionMethods2eq17hb9c7d197d0147faeE"} -!437 = distinct !{!437, !436, !"_ZN6diesel18expression_methods25global_expression_methods17ExpressionMethods2eq17hb9c7d197d0147faeE: argument 1"} -!438 = !{!437} -!439 = !{i32 0, i32 1000000000} -!440 = !{!441} -!441 = distinct !{!441, !442, !"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17h0b9e71c3760be6ceE: argument 0"} -!442 = distinct !{!442, !"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17h0b9e71c3760be6ceE"} -!443 = !{!441, !444} -!444 = distinct !{!444, !442, !"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17h0b9e71c3760be6ceE: argument 1"} -!445 = !{!444} -!446 = !{!447} -!447 = distinct !{!447, !448, !"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17hfc757bb5597d52f6E: argument 1"} -!448 = distinct !{!448, !"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17hfc757bb5597d52f6E"} +!415 = !{!416, !418} +!416 = distinct !{!416, !417, !"_ZN6diesel13query_builder16update_statement28UpdateStatement$LT$T$C$U$GT$3set17haffba55f53196c6dE: argument 0"} +!417 = distinct !{!417, !"_ZN6diesel13query_builder16update_statement28UpdateStatement$LT$T$C$U$GT$3set17haffba55f53196c6dE"} +!418 = distinct !{!418, !417, !"_ZN6diesel13query_builder16update_statement28UpdateStatement$LT$T$C$U$GT$3set17haffba55f53196c6dE: argument 1"} +!419 = !{!420, !422, !416, !418} +!420 = distinct !{!420, !421, !"_ZN17all_about_updates1_121_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$RF$all_about_updates..Post$GT$12as_changeset17hf40c2d0feb4dc9f2E: argument 0"} +!421 = distinct !{!421, !"_ZN17all_about_updates1_121_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$RF$all_about_updates..Post$GT$12as_changeset17hf40c2d0feb4dc9f2E"} +!422 = distinct !{!422, !421, !"_ZN17all_about_updates1_121_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$RF$all_about_updates..Post$GT$12as_changeset17hf40c2d0feb4dc9f2E: argument 1"} +!423 = !{!420, !416} +!424 = !{!416} +!425 = !{!418} +!426 = !{!427, !429, !430, !431} +!427 = distinct !{!427, !428, !"_ZN78_$LT$T$u20$as$u20$diesel..query_dsl..load_dsl..ExecuteDsl$LT$Conn$C$DB$GT$$GT$7execute17h39c2cbfbbfa8d9baE: argument 0"} +!428 = distinct !{!428, !"_ZN78_$LT$T$u20$as$u20$diesel..query_dsl..load_dsl..ExecuteDsl$LT$Conn$C$DB$GT$$GT$7execute17h39c2cbfbbfa8d9baE"} +!429 = distinct !{!429, !428, !"_ZN78_$LT$T$u20$as$u20$diesel..query_dsl..load_dsl..ExecuteDsl$LT$Conn$C$DB$GT$$GT$7execute17h39c2cbfbbfa8d9baE: argument 1"} +!430 = distinct !{!430, !428, !"_ZN78_$LT$T$u20$as$u20$diesel..query_dsl..load_dsl..ExecuteDsl$LT$Conn$C$DB$GT$$GT$7execute17h39c2cbfbbfa8d9baE: argument 2"} +!431 = distinct !{!431, !428, !"_ZN78_$LT$T$u20$as$u20$diesel..query_dsl..load_dsl..ExecuteDsl$LT$Conn$C$DB$GT$$GT$7execute17h39c2cbfbbfa8d9baE: argument 3"} +!432 = !{!433, !435} +!433 = distinct !{!433, !434, !"_ZN6diesel18expression_methods25global_expression_methods17ExpressionMethods2eq17h5f61fd8a977b5a18E: argument 0"} +!434 = distinct !{!434, !"_ZN6diesel18expression_methods25global_expression_methods17ExpressionMethods2eq17h5f61fd8a977b5a18E"} +!435 = distinct !{!435, !434, !"_ZN6diesel18expression_methods25global_expression_methods17ExpressionMethods2eq17h5f61fd8a977b5a18E: argument 1"} +!436 = !{!435} +!437 = !{!438, !440} +!438 = distinct !{!438, !439, !"_ZN6diesel18expression_methods25global_expression_methods17ExpressionMethods2eq17hb9c7d197d0147faeE: argument 0"} +!439 = distinct !{!439, !"_ZN6diesel18expression_methods25global_expression_methods17ExpressionMethods2eq17hb9c7d197d0147faeE"} +!440 = distinct !{!440, !439, !"_ZN6diesel18expression_methods25global_expression_methods17ExpressionMethods2eq17hb9c7d197d0147faeE: argument 1"} +!441 = !{!440} +!442 = !{i32 0, i32 1000000000} +!443 = !{!444} +!444 = distinct !{!444, !445, !"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17h0b9e71c3760be6ceE: argument 0"} +!445 = distinct !{!445, !"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17h0b9e71c3760be6ceE"} +!446 = !{!444, !447} +!447 = distinct !{!447, !445, !"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17h0b9e71c3760be6ceE: argument 1"} +!448 = !{!447} +!449 = !{!450} +!450 = distinct !{!450, !451, !"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17hfc757bb5597d52f6E: argument 1"} +!451 = distinct !{!451, !"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17hfc757bb5597d52f6E"} diff --git a/bench/duckdb/optimized/ub_duckdb_func_cast.cpp.ll b/bench/duckdb/optimized/ub_duckdb_func_cast.cpp.ll index c6b30bb9c7c..d667d452a5d 100644 --- a/bench/duckdb/optimized/ub_duckdb_func_cast.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_func_cast.cpp.ll @@ -14113,6 +14113,7 @@ declare void @_ZN6duckdb6Vector11ReinterpretERKS0_(ptr noundef nonnull align 8 d ; Function Attrs: mustprogress uwtable define void @_ZN6duckdb12DefaultCasts19ImplicitToUnionCastERNS_13BindCastInputERKNS_11LogicalTypeES5_(ptr dead_on_unwind noalias writable sret(%"struct.duckdb::BoundCastInfo") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(24) %input, ptr noundef nonnull align 8 dereferenceable(24) %source, ptr noundef nonnull align 8 dereferenceable(24) %target) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 { entry: + %cast_data = alloca %"class.duckdb::unique_ptr", align 8 %agg.tmp = alloca %"class.duckdb::unique_ptr", align 8 %call = tail call noundef zeroext i1 @_ZN6duckdb17StructToUnionCast27AllowImplicitCastFromStructERKNS_11LogicalTypeES3_(ptr noundef nonnull align 8 dereferenceable(24) %source, ptr noundef nonnull align 8 dereferenceable(24) %target) br i1 %call, label %if.then, label %if.end @@ -14122,40 +14123,48 @@ if.then: ; preds = %entry br label %return if.end: ; preds = %entry - call void @_ZN6duckdb15BindToUnionCastERNS_13BindCastInputERKNS_11LogicalTypeES4_(ptr dead_on_unwind nonnull writable sret(%"class.duckdb::unique_ptr") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(24) %input, ptr noundef nonnull align 8 dereferenceable(24) %source, ptr noundef nonnull align 8 dereferenceable(24) %target) + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %cast_data) #30 + call void @_ZN6duckdb15BindToUnionCastERNS_13BindCastInputERKNS_11LogicalTypeES4_(ptr dead_on_unwind nonnull writable sret(%"class.duckdb::unique_ptr") align 8 %cast_data, ptr noundef nonnull align 8 dereferenceable(24) %input, ptr noundef nonnull align 8 dereferenceable(24) %source, ptr noundef nonnull align 8 dereferenceable(24) %target) + %0 = load i64, ptr %cast_data, align 8, !tbaa !6 + store i64 %0, ptr %agg.tmp, align 8, !tbaa !6 invoke void @_ZN6duckdb13BoundCastInfoC1EPFbRNS_6VectorES2_mRNS_14CastParametersEENS_10unique_ptrINS_13BoundCastDataESt14default_deleteIS8_ELb1EEEPFNS7_INS_18FunctionLocalStateES9_ISC_ELb1EEERNS_24CastLocalStateParametersEE(ptr noundef nonnull align 8 dereferenceable(24) %agg.result, ptr noundef nonnull @_ZN6duckdbL11ToUnionCastERNS_6VectorES1_mRNS_14CastParametersE, ptr noundef nonnull %agg.tmp, ptr noundef nonnull @_ZN6duckdb21InitToUnionLocalStateERNS_24CastLocalStateParametersE) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.end - %0 = load ptr, ptr %agg.tmp, align 8, !tbaa !6 - %cmp.not.i = icmp eq ptr %0, null - br i1 %cmp.not.i, label %return, label %_ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i + %1 = load ptr, ptr %agg.tmp, align 8, !tbaa !6 + %cmp.not.i = icmp eq ptr %1, null + br i1 %cmp.not.i, label %_ZNSt10unique_ptrIN6duckdb13BoundCastDataESt14default_deleteIS1_EED2Ev.exit11, label %_ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i _ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i: ; preds = %invoke.cont - %vtable.i.i = load ptr, ptr %0, align 8, !tbaa !17 + %vtable.i.i = load ptr, ptr %1, align 8, !tbaa !17 %vfn.i.i = getelementptr inbounds i8, ptr %vtable.i.i, i64 8 - %1 = load ptr, ptr %vfn.i.i, align 8 - call void %1(ptr noundef nonnull align 8 dereferenceable(8) %0) #30 + %2 = load ptr, ptr %vfn.i.i, align 8 + call void %2(ptr noundef nonnull align 8 dereferenceable(8) %1) #30 + br label %_ZNSt10unique_ptrIN6duckdb13BoundCastDataESt14default_deleteIS1_EED2Ev.exit11 + +_ZNSt10unique_ptrIN6duckdb13BoundCastDataESt14default_deleteIS1_EED2Ev.exit11: ; preds = %_ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i, %invoke.cont + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %cast_data) #30 br label %return lpad: ; preds = %if.end - %2 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } cleanup - %3 = load ptr, ptr %agg.tmp, align 8, !tbaa !6 - %cmp.not.i12 = icmp eq ptr %3, null + %4 = load ptr, ptr %agg.tmp, align 8, !tbaa !6 + %cmp.not.i12 = icmp eq ptr %4, null br i1 %cmp.not.i12, label %_ZNSt10unique_ptrIN6duckdb13BoundCastDataESt14default_deleteIS1_EED2Ev.exit21, label %_ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i13 _ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i13: ; preds = %lpad - %vtable.i.i14 = load ptr, ptr %3, align 8, !tbaa !17 + %vtable.i.i14 = load ptr, ptr %4, align 8, !tbaa !17 %vfn.i.i15 = getelementptr inbounds i8, ptr %vtable.i.i14, i64 8 - %4 = load ptr, ptr %vfn.i.i15, align 8 - call void %4(ptr noundef nonnull align 8 dereferenceable(8) %3) #30 + %5 = load ptr, ptr %vfn.i.i15, align 8 + call void %5(ptr noundef nonnull align 8 dereferenceable(8) %4) #30 br label %_ZNSt10unique_ptrIN6duckdb13BoundCastDataESt14default_deleteIS1_EED2Ev.exit21 _ZNSt10unique_ptrIN6duckdb13BoundCastDataESt14default_deleteIS1_EED2Ev.exit21: ; preds = %_ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i13, %lpad - resume { ptr, i32 } %2 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %cast_data) #30 + resume { ptr, i32 } %3 -return: ; preds = %invoke.cont, %_ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i, %if.then +return: ; preds = %_ZNSt10unique_ptrIN6duckdb13BoundCastDataESt14default_deleteIS1_EED2Ev.exit11, %if.then ret void } diff --git a/bench/duckdb/optimized/ub_duckdb_function.cpp.ll b/bench/duckdb/optimized/ub_duckdb_function.cpp.ll index 2e0ac78088a..bf778ecc788 100644 --- a/bench/duckdb/optimized/ub_duckdb_function.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_function.cpp.ll @@ -10704,6 +10704,7 @@ define void @_ZN6duckdb14FunctionBinder21BindAggregateFunctionENS_17AggregateFun entry: %aggr_type.addr = alloca i8, align 1 %bind_info = alloca %"class.duckdb::unique_ptr.198", align 8 + %ref.tmp = alloca %"class.duckdb::unique_ptr.198", align 8 store i8 %aggr_type, ptr %aggr_type.addr, align 1, !tbaa !207 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %bind_info) #30 store ptr null, ptr %bind_info, align 8, !tbaa !202 @@ -10713,8 +10714,11 @@ entry: br i1 %tobool.not, label %if.end, label %if.then if.then: ; preds = %entry + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp) #30 %1 = load ptr, ptr %this, align 8, !tbaa !172 - call void %0(ptr dead_on_unwind nonnull writable sret(%"class.duckdb::unique_ptr.198") align 8 %bind_info, ptr noundef nonnull align 8 dereferenceable(592) %1, ptr noundef nonnull align 8 dereferenceable(281) %bound_function, ptr noundef nonnull align 8 dereferenceable(24) %children) + call void %0(ptr dead_on_unwind nonnull writable sret(%"class.duckdb::unique_ptr.198") align 8 %ref.tmp, ptr noundef nonnull align 8 dereferenceable(592) %1, ptr noundef nonnull align 8 dereferenceable(281) %bound_function, ptr noundef nonnull align 8 dereferenceable(24) %children) + %2 = load ptr, ptr %ref.tmp, align 8, !tbaa !4 + store ptr %2, ptr %bind_info, align 8, !tbaa !4 %.pre32 = load ptr, ptr %children, align 8, !tbaa !184 %_M_finish.i14.phi.trans.insert = getelementptr inbounds i8, ptr %children, i64 8 %.pre31 = load ptr, ptr %_M_finish.i14.phi.trans.insert, align 8, !tbaa !168 @@ -10722,6 +10726,7 @@ if.then: ; preds = %entry %.pre30 = load ptr, ptr %arguments.phi.trans.insert, align 8, !tbaa !130 %_M_finish.i.phi.trans.insert = getelementptr inbounds i8, ptr %bound_function, i64 80 %.pre = load ptr, ptr %_M_finish.i.phi.trans.insert, align 8, !tbaa !131 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp) #30 %sub.ptr.lhs.cast.i = ptrtoint ptr %.pre to i64 %sub.ptr.rhs.cast.i = ptrtoint ptr %.pre30 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i @@ -10743,15 +10748,15 @@ invoke.cont9: ; preds = %if.end to label %invoke.cont10 unwind label %ehcleanup invoke.cont10: ; preds = %invoke.cont9 - %2 = load ptr, ptr %bind_info, align 8, !tbaa !4 - %cmp.not.i19 = icmp eq ptr %2, null + %3 = load ptr, ptr %bind_info, align 8, !tbaa !4 + %cmp.not.i19 = icmp eq ptr %3, null br i1 %cmp.not.i19, label %_ZNSt10unique_ptrIN6duckdb12FunctionDataESt14default_deleteIS1_EED2Ev.exit23, label %_ZNKSt14default_deleteIN6duckdb12FunctionDataEEclEPS1_.exit.i20 _ZNKSt14default_deleteIN6duckdb12FunctionDataEEclEPS1_.exit.i20: ; preds = %invoke.cont10 - %vtable.i.i21 = load ptr, ptr %2, align 8, !tbaa !16 + %vtable.i.i21 = load ptr, ptr %3, align 8, !tbaa !16 %vfn.i.i22 = getelementptr inbounds i8, ptr %vtable.i.i21, i64 8 - %3 = load ptr, ptr %vfn.i.i22, align 8 - call void %3(ptr noundef nonnull align 8 dereferenceable(8) %2) #30 + %4 = load ptr, ptr %vfn.i.i22, align 8 + call void %4(ptr noundef nonnull align 8 dereferenceable(8) %3) #30 br label %_ZNSt10unique_ptrIN6duckdb12FunctionDataESt14default_deleteIS1_EED2Ev.exit23 _ZNSt10unique_ptrIN6duckdb12FunctionDataESt14default_deleteIS1_EED2Ev.exit23: ; preds = %_ZNKSt14default_deleteIN6duckdb12FunctionDataEEclEPS1_.exit.i20, %invoke.cont10 @@ -10759,7 +10764,7 @@ _ZNSt10unique_ptrIN6duckdb12FunctionDataESt14default_deleteIS1_EED2Ev.exit23: ; ret void ehcleanup: ; preds = %invoke.cont9, %if.end, %if.then - %4 = landingpad { ptr, i32 } + %5 = landingpad { ptr, i32 } cleanup %.pre33 = load ptr, ptr %bind_info, align 8, !tbaa !4 %cmp.not.i24 = icmp eq ptr %.pre33, null @@ -10768,13 +10773,13 @@ ehcleanup: ; preds = %invoke.cont9, %if.e _ZNKSt14default_deleteIN6duckdb12FunctionDataEEclEPS1_.exit.i25: ; preds = %ehcleanup %vtable.i.i26 = load ptr, ptr %.pre33, align 8, !tbaa !16 %vfn.i.i27 = getelementptr inbounds i8, ptr %vtable.i.i26, i64 8 - %5 = load ptr, ptr %vfn.i.i27, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(8) %.pre33) #30 + %6 = load ptr, ptr %vfn.i.i27, align 8 + call void %6(ptr noundef nonnull align 8 dereferenceable(8) %.pre33) #30 br label %_ZNSt10unique_ptrIN6duckdb12FunctionDataESt14default_deleteIS1_EED2Ev.exit28 _ZNSt10unique_ptrIN6duckdb12FunctionDataESt14default_deleteIS1_EED2Ev.exit28: ; preds = %_ZNKSt14default_deleteIN6duckdb12FunctionDataEEclEPS1_.exit.i25, %ehcleanup call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %bind_info) #30 - resume { ptr, i32 } %4 + resume { ptr, i32 } %5 } ; Function Attrs: mustprogress uwtable diff --git a/bench/duckdb/optimized/ub_duckdb_union_cast.cpp.ll b/bench/duckdb/optimized/ub_duckdb_union_cast.cpp.ll index f26e79166d3..15b11e686c5 100644 --- a/bench/duckdb/optimized/ub_duckdb_union_cast.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_union_cast.cpp.ll @@ -2144,42 +2144,48 @@ _ZNSt12_Vector_baseIN6duckdb13BoundCastInfoESaIS1_EED2Ev.exit: ; preds = %if.the ; Function Attrs: mustprogress uwtable define void @_ZN6duckdb17StructToUnionCast4BindERNS_13BindCastInputERKNS_11LogicalTypeES5_(ptr dead_on_unwind noalias writable sret(%"struct.duckdb::BoundCastInfo") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(24) %input, ptr noundef nonnull align 8 dereferenceable(24) %source, ptr noundef nonnull align 8 dereferenceable(24) %target) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 { entry: + %cast_data = alloca %"class.duckdb::unique_ptr.30", align 8 %agg.tmp = alloca %"class.duckdb::unique_ptr.30", align 8 - call void @_ZN6duckdb17StructToUnionCast8BindDataERNS_13BindCastInputERKNS_11LogicalTypeES5_(ptr dead_on_unwind nonnull writable sret(%"class.duckdb::unique_ptr.30") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(24) %input, ptr noundef nonnull align 8 dereferenceable(24) %source, ptr noundef nonnull align 8 dereferenceable(24) %target) + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %cast_data) #18 + call void @_ZN6duckdb17StructToUnionCast8BindDataERNS_13BindCastInputERKNS_11LogicalTypeES5_(ptr dead_on_unwind nonnull writable sret(%"class.duckdb::unique_ptr.30") align 8 %cast_data, ptr noundef nonnull align 8 dereferenceable(24) %input, ptr noundef nonnull align 8 dereferenceable(24) %source, ptr noundef nonnull align 8 dereferenceable(24) %target) + %0 = load i64, ptr %cast_data, align 8, !tbaa !18 + store i64 %0, ptr %agg.tmp, align 8, !tbaa !18 invoke void @_ZN6duckdb13BoundCastInfoC1EPFbRNS_6VectorES2_mRNS_14CastParametersEENS_10unique_ptrINS_13BoundCastDataESt14default_deleteIS8_ELb1EEEPFNS7_INS_18FunctionLocalStateES9_ISC_ELb1EEERNS_24CastLocalStateParametersEE(ptr noundef nonnull align 8 dereferenceable(24) %agg.result, ptr noundef nonnull @_ZN6duckdb17StructToUnionCast4CastERNS_6VectorES2_mRNS_14CastParametersE, ptr noundef nonnull %agg.tmp, ptr noundef nonnull @_ZN6duckdb19StructBoundCastData24InitStructCastLocalStateERNS_24CastLocalStateParametersE) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - %0 = load ptr, ptr %agg.tmp, align 8, !tbaa !18 - %cmp.not.i = icmp eq ptr %0, null + %1 = load ptr, ptr %agg.tmp, align 8, !tbaa !18 + %cmp.not.i = icmp eq ptr %1, null br i1 %cmp.not.i, label %_ZNSt10unique_ptrIN6duckdb13BoundCastDataESt14default_deleteIS1_EED2Ev.exit6, label %_ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i _ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i: ; preds = %invoke.cont - %vtable.i.i = load ptr, ptr %0, align 8, !tbaa !70 + %vtable.i.i = load ptr, ptr %1, align 8, !tbaa !70 %vfn.i.i = getelementptr inbounds i8, ptr %vtable.i.i, i64 8 - %1 = load ptr, ptr %vfn.i.i, align 8 - call void %1(ptr noundef nonnull align 8 dereferenceable(8) %0) #18 + %2 = load ptr, ptr %vfn.i.i, align 8 + call void %2(ptr noundef nonnull align 8 dereferenceable(8) %1) #18 br label %_ZNSt10unique_ptrIN6duckdb13BoundCastDataESt14default_deleteIS1_EED2Ev.exit6 _ZNSt10unique_ptrIN6duckdb13BoundCastDataESt14default_deleteIS1_EED2Ev.exit6: ; preds = %_ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i, %invoke.cont + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %cast_data) #18 ret void lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } cleanup - %3 = load ptr, ptr %agg.tmp, align 8, !tbaa !18 - %cmp.not.i7 = icmp eq ptr %3, null + %4 = load ptr, ptr %agg.tmp, align 8, !tbaa !18 + %cmp.not.i7 = icmp eq ptr %4, null br i1 %cmp.not.i7, label %_ZNSt10unique_ptrIN6duckdb13BoundCastDataESt14default_deleteIS1_EED2Ev.exit16, label %_ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i8 _ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i8: ; preds = %lpad - %vtable.i.i9 = load ptr, ptr %3, align 8, !tbaa !70 + %vtable.i.i9 = load ptr, ptr %4, align 8, !tbaa !70 %vfn.i.i10 = getelementptr inbounds i8, ptr %vtable.i.i9, i64 8 - %4 = load ptr, ptr %vfn.i.i10, align 8 - call void %4(ptr noundef nonnull align 8 dereferenceable(8) %3) #18 + %5 = load ptr, ptr %vfn.i.i10, align 8 + call void %5(ptr noundef nonnull align 8 dereferenceable(8) %4) #18 br label %_ZNSt10unique_ptrIN6duckdb13BoundCastDataESt14default_deleteIS1_EED2Ev.exit16 _ZNSt10unique_ptrIN6duckdb13BoundCastDataESt14default_deleteIS1_EED2Ev.exit16: ; preds = %_ZNKSt14default_deleteIN6duckdb13BoundCastDataEEclEPS1_.exit.i8, %lpad - resume { ptr, i32 } %2 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %cast_data) #18 + resume { ptr, i32 } %3 } declare void @_ZN6duckdb19StructBoundCastData24InitStructCastLocalStateERNS_24CastLocalStateParametersE(ptr dead_on_unwind writable sret(%"class.duckdb::unique_ptr.39") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #2 diff --git a/bench/folly/optimized/IPAddressV6.cpp.ll b/bench/folly/optimized/IPAddressV6.cpp.ll index 313d05869e4..ce7f36f3ab1 100644 --- a/bench/folly/optimized/IPAddressV6.cpp.ll +++ b/bench/folly/optimized/IPAddressV6.cpp.ll @@ -8768,6 +8768,7 @@ declare void @_ZNSt13runtime_errorC2EOS_(ptr noundef nonnull align 8 dereference ; Function Attrs: mustprogress uwtable define noundef zeroext i1 @_ZNK5folly11IPAddressV610isLoopbackEv(ptr nocapture noundef nonnull readonly align 4 dereferenceable(18) %this) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 { entry: + %retval.i = alloca %"class.folly::IPAddressV4", align 4 %ref.tmp = alloca %"class.folly::IPAddressV4", align 4 %arrayidx.4.i = getelementptr inbounds i8, ptr %this, i64 4 %0 = load <8 x i8>, ptr %this, align 4 @@ -8805,6 +8806,7 @@ _ZNK5folly11IPAddressV612isIPv4MappedEv.exit: ; preds = %entry br i1 %cmp8.i, label %land.rhs, label %if.end.critedge land.rhs: ; preds = %_ZNK5folly11IPAddressV612isIPv4MappedEv.exit + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %retval.i) %11 = load <4 x i8>, ptr %arrayidx.8.i, align 4 %.fr10.i = freeze <4 x i8> %11 %.fr10.scalar.i = bitcast <4 x i8> %.fr10.i to i32 @@ -8829,7 +8831,10 @@ lpad.i: ; preds = %if.then.i _ZNK5folly11IPAddressV610createIPv4Ev.exit: ; preds = %land.rhs %arrayidx.i = getelementptr inbounds i8, ptr %this, i64 12 %addr.sroa.0.0.copyload.i.i = load i32, ptr %arrayidx.i, align 4 - call void @_ZN5folly11IPAddressV4C1E7in_addr(ptr noundef nonnull align 4 dereferenceable(4) %ref.tmp, i32 %addr.sroa.0.0.copyload.i.i) #34 + call void @_ZN5folly11IPAddressV4C1E7in_addr(ptr noundef nonnull align 4 dereferenceable(4) %retval.i, i32 %addr.sroa.0.0.copyload.i.i) #34 + %14 = load i32, ptr %retval.i, align 4 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %retval.i) + store i32 %14, ptr %ref.tmp, align 4 %call5 = call noundef zeroext i1 @_ZNK5folly11IPAddressV410isLoopbackEv(ptr noundef nonnull align 4 dereferenceable(4) %ref.tmp) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %ref.tmp) #34 br i1 %call5, label %return, label %_ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge @@ -8977,7 +8982,9 @@ declare void @__cxa_guard_abort(ptr) local_unnamed_addr #8 ; Function Attrs: mustprogress uwtable define noundef zeroext i1 @_ZNK5folly11IPAddressV69isPrivateEv(ptr nocapture noundef nonnull readonly align 4 dereferenceable(18) %this) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 { entry: + %retval.i.i = alloca %"class.folly::IPAddressV4", align 4 %ref.tmp.i = alloca %"class.folly::IPAddressV4", align 4 + %retval.i = alloca %"class.folly::IPAddressV4", align 4 %ba.i = alloca %"struct.std::array", align 8 %masked.i = alloca %"class.folly::IPAddressV6", align 4 %ref.tmp = alloca %"class.folly::IPAddressV4", align 4 @@ -9013,6 +9020,7 @@ _ZNK5folly11IPAddressV612isIPv4MappedEv.exit: ; preds = %entry br i1 %cmp8.i, label %land.rhs, label %if.end.critedge land.rhs: ; preds = %_ZNK5folly11IPAddressV612isIPv4MappedEv.exit + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %retval.i) %10 = load <4 x i8>, ptr %arrayidx.8.i, align 4 %.fr10.i = freeze <4 x i8> %10 %.fr10.scalar.i = bitcast <4 x i8> %.fr10.i to i32 @@ -9029,7 +9037,7 @@ invoke.cont.i: ; preds = %if.then.i unreachable common.resume: ; preds = %lpad.i.i, %lpad.i - %common.resume.op = phi { ptr, i32 } [ %12, %lpad.i ], [ %26, %lpad.i.i ] + %common.resume.op = phi { ptr, i32 } [ %12, %lpad.i ], [ %27, %lpad.i.i ] resume { ptr, i32 } %common.resume.op lpad.i: ; preds = %if.then.i @@ -9041,7 +9049,10 @@ lpad.i: ; preds = %if.then.i _ZNK5folly11IPAddressV610createIPv4Ev.exit: ; preds = %land.rhs %arrayidx.i = getelementptr inbounds i8, ptr %this, i64 12 %addr.sroa.0.0.copyload.i.i = load i32, ptr %arrayidx.i, align 4 - call void @_ZN5folly11IPAddressV4C1E7in_addr(ptr noundef nonnull align 4 dereferenceable(4) %ref.tmp, i32 %addr.sroa.0.0.copyload.i.i) #34 + call void @_ZN5folly11IPAddressV4C1E7in_addr(ptr noundef nonnull align 4 dereferenceable(4) %retval.i, i32 %addr.sroa.0.0.copyload.i.i) #34 + %13 = load i32, ptr %retval.i, align 4 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %retval.i) + store i32 %13, ptr %ref.tmp, align 4 %call5 = call noundef zeroext i1 @_ZNK5folly11IPAddressV49isPrivateEv(ptr noundef nonnull align 4 dereferenceable(4) %ref.tmp) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %ref.tmp) #34 br i1 %call5, label %return, label %_ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge @@ -9051,7 +9062,7 @@ _ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge: ; preds = %_ZNK5fol %.pre10 = freeze <8 x i8> %.pre %.pre8 = load i8, ptr %arrayidx.9.i, align 1 %.pre9 = load i8, ptr %arrayidx3.i, align 2 - %13 = extractelement <8 x i8> %.pre10, i64 0 + %14 = extractelement <8 x i8> %.pre10, i64 0 %.pre11 = freeze i8 %.pre8 br label %if.end @@ -9062,21 +9073,21 @@ if.end.critedge: ; preds = %_ZNK5folly11IPAddre if.end: ; preds = %_ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge, %if.end.critedge %.fr26.i.pre-phi = phi i8 [ %.pre11, %_ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge ], [ %.fr12, %if.end.critedge ] %.fr.i1.pre-phi = phi <8 x i8> [ %.pre10, %_ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge ], [ %.fr, %if.end.critedge ] - %14 = phi i8 [ %13, %_ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge ], [ %8, %if.end.critedge ] - %15 = phi i8 [ %.pre9, %_ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge ], [ %3, %if.end.critedge ] + %15 = phi i8 [ %14, %_ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge ], [ %8, %if.end.critedge ] + %16 = phi i8 [ %.pre9, %_ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge ], [ %3, %if.end.critedge ] %arrayidx.4.i.i = getelementptr inbounds i8, ptr %this, i64 4 - %16 = load i8, ptr %arrayidx.8.i, align 4 - %.fr27.i = freeze i8 %16 - %cmp5.i.i = icmp eq i8 %15, -1 + %17 = load i8, ptr %arrayidx.8.i, align 4 + %.fr27.i = freeze i8 %17 + %cmp5.i.i = icmp eq i8 %16, -1 %.fr.scalar.i3 = bitcast <8 x i8> %.fr.i1.pre-phi to i64 - %17 = icmp eq i64 %.fr.scalar.i3, 0 - %18 = or i8 %.fr26.i.pre-phi, %.fr27.i - %19 = icmp eq i8 %18, 0 - %20 = and i1 %17, %19 - %op.rdx25.i = select i1 %20, i1 %cmp5.i.i, i1 false + %18 = icmp eq i64 %.fr.scalar.i3, 0 + %19 = or i8 %.fr26.i.pre-phi, %.fr27.i + %20 = icmp eq i8 %19, 0 + %21 = and i1 %18, %20 + %op.rdx25.i = select i1 %21, i1 %cmp5.i.i, i1 false %bc3.i = bitcast <8 x i8> %.fr.i1.pre-phi to <2 x i32> - %21 = extractelement <2 x i32> %bc3.i, i64 0 - %22 = extractelement <2 x i32> %bc3.i, i64 1 + %22 = extractelement <2 x i32> %bc3.i, i64 0 + %23 = extractelement <2 x i32> %bc3.i, i64 1 br i1 %op.rdx25.i, label %_ZNK5folly11IPAddressV612isIPv4MappedEv.exit.i, label %_ZNK5folly11IPAddressV612isIPv4MappedEv.exit.thread.i _ZNK5folly11IPAddressV612isIPv4MappedEv.exit.thread.i: ; preds = %if.end @@ -9085,17 +9096,18 @@ _ZNK5folly11IPAddressV612isIPv4MappedEv.exit.thread.i: ; preds = %if.end _ZNK5folly11IPAddressV612isIPv4MappedEv.exit.i: ; preds = %if.end %arrayidx6.i.i = getelementptr inbounds i8, ptr %this, i64 11 - %23 = load i8, ptr %arrayidx6.i.i, align 1, !tbaa !25 - %cmp8.i.i = icmp eq i8 %23, -1 + %24 = load i8, ptr %arrayidx6.i.i, align 1, !tbaa !25 + %cmp8.i.i = icmp eq i8 %24, -1 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %ref.tmp.i) #34 br i1 %cmp8.i.i, label %land.rhs.i, label %if.end.critedge.i land.rhs.i: ; preds = %_ZNK5folly11IPAddressV612isIPv4MappedEv.exit.i - %24 = load <4 x i8>, ptr %arrayidx.8.i, align 4 - %.fr10.i.i = freeze <4 x i8> %24 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %retval.i.i) + %25 = load <4 x i8>, ptr %arrayidx.8.i, align 4 + %.fr10.i.i = freeze <4 x i8> %25 %.fr10.scalar.i.i = bitcast <4 x i8> %.fr10.i.i to i32 - %25 = icmp eq i32 %.fr10.scalar.i.i, -65536 - br i1 %25, label %_ZNK5folly11IPAddressV610createIPv4Ev.exit.i, label %if.then.i.i + %26 = icmp eq i32 %.fr10.scalar.i.i, -65536 + br i1 %26, label %_ZNK5folly11IPAddressV610createIPv4Ev.exit.i, label %if.then.i.i if.then.i.i: ; preds = %land.rhs.i %exception.i.i = call ptr @__cxa_allocate_exception(i64 16) #34 @@ -9107,7 +9119,7 @@ invoke.cont.i.i: ; preds = %if.then.i.i unreachable lpad.i.i: ; preds = %if.then.i.i - %26 = landingpad { ptr, i32 } + %27 = landingpad { ptr, i32 } cleanup call void @__cxa_free_exception(ptr %exception.i.i) #34 br label %common.resume @@ -9115,7 +9127,10 @@ lpad.i.i: ; preds = %if.then.i.i _ZNK5folly11IPAddressV610createIPv4Ev.exit.i: ; preds = %land.rhs.i %arrayidx.i.i = getelementptr inbounds i8, ptr %this, i64 12 %addr.sroa.0.0.copyload.i.i.i = load i32, ptr %arrayidx.i.i, align 4 - call void @_ZN5folly11IPAddressV4C1E7in_addr(ptr noundef nonnull align 4 dereferenceable(4) %ref.tmp.i, i32 %addr.sroa.0.0.copyload.i.i.i) #34 + call void @_ZN5folly11IPAddressV4C1E7in_addr(ptr noundef nonnull align 4 dereferenceable(4) %retval.i.i, i32 %addr.sroa.0.0.copyload.i.i.i) #34 + %28 = load i32, ptr %retval.i.i, align 4 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %retval.i.i) + store i32 %28, ptr %ref.tmp.i, align 4 %call5.i = call noundef zeroext i1 @_ZNK5folly11IPAddressV410isLoopbackEv(ptr noundef nonnull align 4 dereferenceable(4) %ref.tmp.i) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %ref.tmp.i) #34 br i1 %call5.i, label %return, label %_ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge.i @@ -9123,7 +9138,7 @@ _ZNK5folly11IPAddressV610createIPv4Ev.exit.i: ; preds = %land.rhs.i _ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge.i: ; preds = %_ZNK5folly11IPAddressV610createIPv4Ev.exit.i %socka.sroa.4.8.copyload.pre.i = load i32, ptr %this, align 4 %socka.sroa.6.8.copyload.pre.i = load i32, ptr %arrayidx.4.i.i, align 4 - %27 = trunc i32 %socka.sroa.4.8.copyload.pre.i to i8 + %29 = trunc i32 %socka.sroa.4.8.copyload.pre.i to i8 br label %if.end.i if.end.critedge.i: ; preds = %_ZNK5folly11IPAddressV612isIPv4MappedEv.exit.i, %_ZNK5folly11IPAddressV612isIPv4MappedEv.exit.thread.i @@ -9131,9 +9146,9 @@ if.end.critedge.i: ; preds = %_ZNK5folly11IPAddre br label %if.end.i if.end.i: ; preds = %if.end.critedge.i, %_ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge.i - %28 = phi i8 [ %27, %_ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge.i ], [ %14, %if.end.critedge.i ] - %socka.sroa.6.8.copyload.i = phi i32 [ %socka.sroa.6.8.copyload.pre.i, %_ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge.i ], [ %22, %if.end.critedge.i ] - %socka.sroa.4.8.copyload.i = phi i32 [ %socka.sroa.4.8.copyload.pre.i, %_ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge.i ], [ %21, %if.end.critedge.i ] + %30 = phi i8 [ %29, %_ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge.i ], [ %15, %if.end.critedge.i ] + %socka.sroa.6.8.copyload.i = phi i32 [ %socka.sroa.6.8.copyload.pre.i, %_ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge.i ], [ %23, %if.end.critedge.i ] + %socka.sroa.4.8.copyload.i = phi i32 [ %socka.sroa.4.8.copyload.pre.i, %_ZNK5folly11IPAddressV610createIPv4Ev.exit.if.end_crit_edge.i ], [ %22, %if.end.critedge.i ] %socka.sroa.7.8.copyload.i = load i32, ptr %arrayidx.8.i, align 4 %cmp.i = icmp eq i32 %socka.sroa.4.8.copyload.i, 0 %cmp8.i4 = icmp eq i32 %socka.sroa.6.8.copyload.i, 0 @@ -9149,11 +9164,11 @@ if.end.i: ; preds = %if.end.critedge.i, lor.rhs: ; preds = %if.end.i call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %masked.i) #34 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ba.i) #34, !noalias !278 - %and11.i.i = and i8 %28, -2 + %and11.i.i = and i8 %30, -2 %retval.sroa.0.sroa.0.0.insert.ext.i.i = zext i8 %and11.i.i to i64 store i64 %retval.sroa.0.sroa.0.0.insert.ext.i.i, ptr %ba.i, align 8, !noalias !278 - %29 = getelementptr inbounds i8, ptr %ba.i, i64 8 - store i64 0, ptr %29, align 8, !noalias !278 + %31 = getelementptr inbounds i8, ptr %ba.i, i64 8 + store i64 0, ptr %31, align 8, !noalias !278 call void @_ZN5folly11IPAddressV6C1ERKSt5arrayIhLm16EE(ptr noundef nonnull align 4 dereferenceable(18) %masked.i, ptr noundef nonnull align 1 dereferenceable(16) %ba.i) #34 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ba.i) #34, !noalias !278 %rhsv = load i16, ptr %masked.i, align 4 diff --git a/bench/grpc/optimized/client_authority_filter.cc.ll b/bench/grpc/optimized/client_authority_filter.cc.ll index 29521444621..037006822c8 100644 --- a/bench/grpc/optimized/client_authority_filter.cc.ll +++ b/bench/grpc/optimized/client_authority_filter.cc.ll @@ -220,6 +220,7 @@ declare i32 @__cxa_atexit(ptr, ptr, ptr) local_unnamed_addr #2 define void @_ZN9grpc_core21ClientAuthorityFilter6CreateERKNS_11ChannelArgsENS_13ChannelFilter4ArgsE(ptr noalias sret(%"class.absl::lts_20230802::StatusOr") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(8) %args, ptr nocapture readnone %.coerce0, ptr nocapture readnone %.coerce1) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { entry: %ref.tmp.i.i.i.i.i = alloca %struct.grpc_slice, align 8 + %ref.tmp.i.i = alloca %struct.grpc_slice, align 8 %default_authority = alloca %"class.std::optional", align 8 %ref.tmp = alloca %"class.absl::lts_20230802::Status", align 8 %ref.tmp2 = alloca %"class.grpc_core::ClientAuthorityFilter", align 8 @@ -270,7 +271,10 @@ if.end: ; preds = %entry %agg.tmp4.sroa.0.0.copyload = load i64, ptr %default_authority, align 8 %agg.tmp4.sroa.2.0.call5.sroa_idx = getelementptr inbounds i8, ptr %default_authority, i64 8 %agg.tmp4.sroa.2.0.copyload = load ptr, ptr %agg.tmp4.sroa.2.0.call5.sroa_idx, align 8 - call void @grpc_slice_from_copied_buffer(ptr nonnull sret(%struct.grpc_slice) align 8 %agg.tmp3, ptr noundef %agg.tmp4.sroa.2.0.copyload, i64 noundef %agg.tmp4.sroa.0.0.copyload) + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i), !noalias !4 + call void @grpc_slice_from_copied_buffer(ptr nonnull sret(%struct.grpc_slice) align 8 %ref.tmp.i.i, ptr noundef %agg.tmp4.sroa.2.0.copyload, i64 noundef %agg.tmp4.sroa.0.0.copyload), !noalias !7 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp3, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i.i, i64 32, i1 false) + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i.i), !noalias !4 store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core13ChannelFilterE, i64 16), ptr %ref.tmp2, align 8 %event_engine_.i.i = getelementptr inbounds i8, ptr %ref.tmp2, i64 8 invoke void @_ZN17grpc_event_engine12experimental21GetDefaultEventEngineEN9grpc_core14SourceLocationE(ptr nonnull sret(%"class.std::shared_ptr") align 8 %event_engine_.i.i, ptr nonnull @.str.6, i32 76) @@ -280,7 +284,7 @@ invoke.cont7: ; preds = %if.end store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core21ClientAuthorityFilterE, i64 16), ptr %ref.tmp2, align 8 %default_authority_.i = getelementptr inbounds i8, ptr %ref.tmp2, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %default_authority_.i, ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp3, i64 32, i1 false) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp3, i8 0, i64 32, i1 false), !noalias !4 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp3, i8 0, i64 32, i1 false), !noalias !10 %5 = getelementptr inbounds i8, ptr %agg.result, i64 8 store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core13ChannelFilterE, i64 16), ptr %5, align 8 %event_engine_.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 16 @@ -314,7 +318,7 @@ _ZN9grpc_core5SliceD2Ev.exit.i: ; preds = %invoke.cont7, %if.t %default_authority_.i.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 32 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i.i.i.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %default_authority_.i, i64 32, i1 false) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %default_authority_.i, i8 0, i64 32, i1 false), !noalias !7 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %default_authority_.i, i8 0, i64 32, i1 false), !noalias !13 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %default_authority_.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i.i.i.i.i, i64 32, i1 false) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i.i.i.i.i) store i64 0, ptr %agg.result, align 8 @@ -618,7 +622,7 @@ if.then: ; preds = %entry br i1 %cmp.i.i, label %if.then.i.i, label %_ZNK9grpc_core5Slice3RefEv.exit if.then.i.i: ; preds = %if.then - %4 = atomicrmw add ptr %3, i64 1 monotonic, align 8, !noalias !10 + %4 = atomicrmw add ptr %3, i64 1 monotonic, align 8, !noalias !16 %ref.tmp.sroa.0.0.copyload.pre = load ptr, ptr %default_authority_, align 8 %.pre = load i16, ptr %0, align 2 br label %_ZNK9grpc_core5Slice3RefEv.exit @@ -638,7 +642,7 @@ _ZNK9grpc_core5Slice3RefEv.exit: ; preds = %if.then, %if.then.i if.then.i.i.i: ; preds = %_ZNK9grpc_core5Slice3RefEv.exit call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %replacement.sroa.4.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.sroa.6, i64 24, i1 false) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.sroa.6, i8 0, i64 24, i1 false), !noalias !13 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.sroa.6, i8 0, i64 24, i1 false), !noalias !19 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %__tmp.i.i.i.i.sroa.4.i.i.i) %__tmp.i.i.i.i.sroa.0.0.copyload.i.i.i = load ptr, ptr %u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, align 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %__tmp.i.i.i.i.sroa.4.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i.i4.i.i.i.sroa.4.0.u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.sroa_idx, i64 24, i1 false) @@ -670,7 +674,7 @@ terminate.lpad.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i if.else.i.i.i: ; preds = %_ZNK9grpc_core5Slice3RefEv.exit call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %ref.tmp.i.i4.i.i.i.sroa.4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i.i4.i.i.i.sroa.4, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.sroa.6, i64 24, i1 false) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.sroa.6, i8 0, i64 24, i1 false), !noalias !16 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.sroa.6, i8 0, i64 24, i1 false), !noalias !22 store ptr %ref.tmp.sroa.0.0.copyload, ptr %u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, align 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i.i4.i.i.i.sroa.4.0.u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i.i4.i.i.i.sroa.4, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %ref.tmp.i.i4.i.i.i.sroa.4) @@ -697,7 +701,7 @@ if.end: ; preds = %invoke.cont.if.end_ %polling_entity4.i = getelementptr inbounds i8, ptr %call_args, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %polling_entity.i, ptr noundef nonnull align 8 dereferenceable(32) %polling_entity4.i, i64 32, i1 false) %_M_manager.i.i = getelementptr inbounds i8, ptr %next_promise_factory, i64 16 - %14 = load ptr, ptr %_M_manager.i.i, align 8, !noalias !19 + %14 = load ptr, ptr %_M_manager.i.i, align 8, !noalias !25 %tobool.not.i.i = icmp eq ptr %14, null br i1 %tobool.not.i.i, label %if.then.i, label %if.end.i @@ -710,7 +714,7 @@ if.then.i: ; preds = %if.end if.end.i: ; preds = %if.end %_M_invoker.i = getelementptr inbounds i8, ptr %next_promise_factory, i64 24 - %15 = load ptr, ptr %_M_invoker.i, align 8, !noalias !19 + %15 = load ptr, ptr %_M_invoker.i, align 8, !noalias !25 invoke void %15(ptr sret(%"class.grpc_core::ArenaPromise") align 16 %agg.result, ptr noundef nonnull align 8 dereferenceable(16) %next_promise_factory, ptr noundef nonnull align 8 dereferenceable(56) %agg.tmp6) to label %invoke.cont8 unwind label %lpad7 @@ -1259,13 +1263,13 @@ _ZN9grpc_core17ManualConstructorISt4pairINS_5SliceES2_EE7DestroyEv.exit.i.i.i: ; %inc.i.i.i = add nuw i64 %i.09.i.i.i, 1 %11 = load i64, ptr %count.i.i.i, align 8 %cmp4.i.i.i = icmp ult i64 %inc.i.i.i, %11 - br i1 %cmp4.i.i.i, label %for.body.i.i.i, label %for.end.i.i.i, !llvm.loop !22 + br i1 %cmp4.i.i.i, label %for.body.i.i.i, label %for.end.i.i.i, !llvm.loop !28 for.end.i.i.i: ; preds = %_ZN9grpc_core17ManualConstructorISt4pairINS_5SliceES2_EE7DestroyEv.exit.i.i.i store i64 0, ptr %count.i.i.i, align 8 %chunk.0.i.i.i = load ptr, ptr %chunk.012.i.i.i, align 8 %cmp.not.i.i.i = icmp eq ptr %chunk.0.i.i.i, null - br i1 %cmp.not.i.i.i, label %while.end.loopexit.i.i.i, label %land.rhs.i.i.i, !llvm.loop !24 + br i1 %cmp.not.i.i.i, label %while.end.loopexit.i.i.i, label %land.rhs.i.i.i, !llvm.loop !30 while.end.loopexit.i.i.i: ; preds = %for.end.i.i.i, %land.rhs.i.i.i %.pre.i.i.i = load ptr, ptr %first_.i.i.i, align 8 @@ -1322,7 +1326,7 @@ for.body.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %name.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"struct.grpc_core::LbCostBinMetadata::ValueType", ptr %cond.i.i.i.i.i, i64 %dec.i.i.i.i.i.i, i32 1 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %name.i.i.i.i.i.i.i.i.i) #19 %cmp.not.i.i.i.i.i.i = icmp eq i64 %dec.i.i.i.i.i.i, 0 - br i1 %cmp.not.i.i.i.i.i.i, label %_ZN4absl12lts_2023080223inlined_vector_internal14DestroyAdapterISaIN9grpc_core17LbCostBinMetadata9ValueTypeEELb0EE15DestroyElementsERS6_PS5_m.exit.i.i.i.i.i, label %for.body.i.i.i.i.i.i, !llvm.loop !25 + br i1 %cmp.not.i.i.i.i.i.i, label %_ZN4absl12lts_2023080223inlined_vector_internal14DestroyAdapterISaIN9grpc_core17LbCostBinMetadata9ValueTypeEELb0EE15DestroyElementsERS6_PS5_m.exit.i.i.i.i.i, label %for.body.i.i.i.i.i.i, !llvm.loop !31 _ZN4absl12lts_2023080223inlined_vector_internal14DestroyAdapterISaIN9grpc_core17LbCostBinMetadata9ValueTypeEELb0EE15DestroyElementsERS6_PS5_m.exit.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i %.pre.i.i.i.i.i = load i64, ptr %u.i.i.i, align 8 @@ -1370,7 +1374,7 @@ for.body.i.i.i.i.i.i14: ; preds = %for.body.i.i.i.i.i. %add.ptr.i.i.i.i.i.i = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %cond.i.i.i.i.i10, i64 %dec.i.i.i.i.i.i16 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %add.ptr.i.i.i.i.i.i) #19 %cmp.not.i.i.i.i.i.i17 = icmp eq i64 %dec.i.i.i.i.i.i16, 0 - br i1 %cmp.not.i.i.i.i.i.i17, label %_ZN4absl12lts_2023080223inlined_vector_internal14DestroyAdapterISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEELb0EE15DestroyElementsERS9_PS8_m.exit.i.i.i.i.i, label %for.body.i.i.i.i.i.i14, !llvm.loop !26 + br i1 %cmp.not.i.i.i.i.i.i17, label %_ZN4absl12lts_2023080223inlined_vector_internal14DestroyAdapterISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEELb0EE15DestroyElementsERS9_PS8_m.exit.i.i.i.i.i, label %for.body.i.i.i.i.i.i14, !llvm.loop !32 _ZN4absl12lts_2023080223inlined_vector_internal14DestroyAdapterISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEELb0EE15DestroyElementsERS9_PS8_m.exit.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i14 %.pre.i.i.i.i.i18 = load i64, ptr %u.i.i.i.i, align 8 @@ -1952,7 +1956,7 @@ entry: store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core21promise_filter_detail8CallDataILNS_14FilterEndpointE0EEE, i64 16), ptr %0, align 16 %add.ptr.i = getelementptr inbounds i8, ptr %0, i64 8 store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core21promise_filter_detail8CallDataILNS_14FilterEndpointE0EEE, i64 160), ptr %add.ptr.i, align 8 - store i64 0, ptr %agg.result, align 8, !alias.scope !27 + store i64 0, ptr %agg.result, align 8, !alias.scope !33 ret void } @@ -2167,10 +2171,10 @@ _ZN9grpc_core21ClientAuthorityFilterC2EOS0_.exit: ; preds = %invoke.cont11, %if. %default_authority_2.i = getelementptr inbounds i8, ptr %status, i64 32 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i.i, ptr noundef nonnull align 8 dereferenceable(32) %default_authority_2.i, i64 32, i1 false) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %default_authority_2.i, i8 0, i64 32, i1 false), !noalias !30 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %default_authority_2.i, i8 0, i64 32, i1 false), !noalias !36 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %default_authority_.i, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i.i, i64 32, i1 false) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i.i) - store i64 0, ptr %agg.result, align 8, !alias.scope !33 + store i64 0, ptr %agg.result, align 8, !alias.scope !39 br label %cleanup cleanup: ; preds = %if.then.i.i8, %invoke.cont8, %_ZN9grpc_core21ClientAuthorityFilterC2EOS0_.exit @@ -2308,9 +2312,9 @@ declare void @_ZThn8_N9grpc_core21promise_filter_detail12BaseCallData4DropEt(ptr define linkonce_odr void @_ZThn8_NK9grpc_core21promise_filter_detail12BaseCallData16ActivityDebugTagB5cxx11Et(ptr noalias sret(%"class.std::__cxx11::basic_string") align 8 %agg.result, ptr noundef %this, i16 noundef zeroext %0) unnamed_addr #15 comdat align 2 { entry: %1 = getelementptr inbounds i8, ptr %this, i64 -8 - %vtable.i = load ptr, ptr %1, align 8, !noalias !36 + %vtable.i = load ptr, ptr %1, align 8, !noalias !42 %vfn.i = getelementptr inbounds i8, ptr %vtable.i, i64 56 - %2 = load ptr, ptr %vfn.i, align 8, !noalias !36 + %2 = load ptr, ptr %vfn.i, align 8, !noalias !42 tail call void %2(ptr sret(%"class.std::__cxx11::basic_string") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(8) %1) ret void } @@ -2651,20 +2655,20 @@ define internal void @_GLOBAL__sub_I_client_authority_filter.cc() #15 section ". entry: tail call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) %0 = tail call i32 @__cxa_atexit(ptr nonnull @_ZNSt8ios_base4InitD1Ev, ptr nonnull @_ZStL8__ioinit, ptr nonnull @__dso_handle) #19 - store ptr @_ZN9grpc_core21promise_filter_detail19BaseCallDataMethods27StartTransportStreamOpBatchEP17grpc_call_elementP30grpc_transport_stream_op_batch, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, align 8, !alias.scope !39 - store ptr @_ZN9grpc_core21promise_filter_detail20ChannelFilterMethods15MakeCallPromiseEP20grpc_channel_elementNS_8CallArgsESt8functionIFNS_12ArenaPromiseISt10unique_ptrI19grpc_metadata_batchNS_5Arena13PooledDeleterEEEES4_EE, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 8), align 8, !alias.scope !39 - store ptr null, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 16), align 8, !alias.scope !39 - store ptr @_ZN9grpc_core21promise_filter_detail20ChannelFilterMethods16StartTransportOpEP20grpc_channel_elementP17grpc_transport_op, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 24), align 8, !alias.scope !39 - store i64 272, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 32), align 8, !alias.scope !39 - store ptr @_ZN9grpc_core21promise_filter_detail30CallDataFilterWithFlagsMethodsINS0_8CallDataILNS_14FilterEndpointE0EEELh0EE12InitCallElemEP17grpc_call_elementPK22grpc_call_element_args, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 40), align 8, !alias.scope !39 - store ptr @_ZN9grpc_core21promise_filter_detail19BaseCallDataMethods22SetPollsetOrPollsetSetEP17grpc_call_elementP19grpc_polling_entity, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 48), align 8, !alias.scope !39 - store ptr @_ZN9grpc_core21promise_filter_detail30CallDataFilterWithFlagsMethodsINS0_8CallDataILNS_14FilterEndpointE0EEELh0EE15DestroyCallElemEP17grpc_call_elementPK20grpc_call_final_infoP12grpc_closure, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 56), align 8, !alias.scope !39 - store i64 56, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 64), align 8, !alias.scope !39 - store ptr @_ZN9grpc_core21promise_filter_detail29ChannelFilterWithFlagsMethodsINS_21ClientAuthorityFilterELh0EE15InitChannelElemEP20grpc_channel_elementP25grpc_channel_element_args, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 72), align 8, !alias.scope !39 - store ptr @_ZN9grpc_core21promise_filter_detail20ChannelFilterMethods19PostInitChannelElemEP18grpc_channel_stackP20grpc_channel_element, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 80), align 8, !alias.scope !39 - store ptr @_ZN9grpc_core21promise_filter_detail20ChannelFilterMethods18DestroyChannelElemEP20grpc_channel_element, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 88), align 8, !alias.scope !39 - store ptr @_ZN9grpc_core21promise_filter_detail20ChannelFilterMethods14GetChannelInfoEP20grpc_channel_elementPK17grpc_channel_info, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 96), align 8, !alias.scope !39 - store ptr @.str.3, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 104), align 8, !alias.scope !39 + store ptr @_ZN9grpc_core21promise_filter_detail19BaseCallDataMethods27StartTransportStreamOpBatchEP17grpc_call_elementP30grpc_transport_stream_op_batch, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, align 8, !alias.scope !45 + store ptr @_ZN9grpc_core21promise_filter_detail20ChannelFilterMethods15MakeCallPromiseEP20grpc_channel_elementNS_8CallArgsESt8functionIFNS_12ArenaPromiseISt10unique_ptrI19grpc_metadata_batchNS_5Arena13PooledDeleterEEEES4_EE, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 8), align 8, !alias.scope !45 + store ptr null, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 16), align 8, !alias.scope !45 + store ptr @_ZN9grpc_core21promise_filter_detail20ChannelFilterMethods16StartTransportOpEP20grpc_channel_elementP17grpc_transport_op, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 24), align 8, !alias.scope !45 + store i64 272, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 32), align 8, !alias.scope !45 + store ptr @_ZN9grpc_core21promise_filter_detail30CallDataFilterWithFlagsMethodsINS0_8CallDataILNS_14FilterEndpointE0EEELh0EE12InitCallElemEP17grpc_call_elementPK22grpc_call_element_args, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 40), align 8, !alias.scope !45 + store ptr @_ZN9grpc_core21promise_filter_detail19BaseCallDataMethods22SetPollsetOrPollsetSetEP17grpc_call_elementP19grpc_polling_entity, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 48), align 8, !alias.scope !45 + store ptr @_ZN9grpc_core21promise_filter_detail30CallDataFilterWithFlagsMethodsINS0_8CallDataILNS_14FilterEndpointE0EEELh0EE15DestroyCallElemEP17grpc_call_elementPK20grpc_call_final_infoP12grpc_closure, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 56), align 8, !alias.scope !45 + store i64 56, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 64), align 8, !alias.scope !45 + store ptr @_ZN9grpc_core21promise_filter_detail29ChannelFilterWithFlagsMethodsINS_21ClientAuthorityFilterELh0EE15InitChannelElemEP20grpc_channel_elementP25grpc_channel_element_args, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 72), align 8, !alias.scope !45 + store ptr @_ZN9grpc_core21promise_filter_detail20ChannelFilterMethods19PostInitChannelElemEP18grpc_channel_stackP20grpc_channel_element, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 80), align 8, !alias.scope !45 + store ptr @_ZN9grpc_core21promise_filter_detail20ChannelFilterMethods18DestroyChannelElemEP20grpc_channel_element, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 88), align 8, !alias.scope !45 + store ptr @_ZN9grpc_core21promise_filter_detail20ChannelFilterMethods14GetChannelInfoEP20grpc_channel_elementPK17grpc_channel_info, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 96), align 8, !alias.scope !45 + store ptr @.str.3, ptr getelementptr inbounds (i8, ptr @_ZN9grpc_core21ClientAuthorityFilter7kFilterE, i64 104), align 8, !alias.scope !45 ret void } @@ -2707,40 +2711,46 @@ attributes #22 = { builtin nounwind } !2 = !{i32 7, !"uwtable", i32 2} !3 = !{i32 7, !"frame-pointer", i32 2} !4 = !{!5} -!5 = distinct !{!5, !6, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} -!6 = distinct !{!6, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} -!7 = !{!8} -!8 = distinct !{!8, !9, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} -!9 = distinct !{!9, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} +!5 = distinct !{!5, !6, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedStringESt17basic_string_viewIcSt11char_traitsIcEE: %agg.result"} +!6 = distinct !{!6, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedStringESt17basic_string_viewIcSt11char_traitsIcEE"} +!7 = !{!8, !5} +!8 = distinct !{!8, !9, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedBufferEPKcm: %agg.result"} +!9 = distinct !{!9, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedBufferEPKcm"} !10 = !{!11} -!11 = distinct !{!11, !12, !"_ZNK9grpc_core5Slice3RefEv: %agg.result"} -!12 = distinct !{!12, !"_ZNK9grpc_core5Slice3RefEv"} +!11 = distinct !{!11, !12, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} +!12 = distinct !{!12, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} !13 = !{!14} !14 = distinct !{!14, !15, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} !15 = distinct !{!15, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} !16 = !{!17} -!17 = distinct !{!17, !18, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} -!18 = distinct !{!18, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} +!17 = distinct !{!17, !18, !"_ZNK9grpc_core5Slice3RefEv: %agg.result"} +!18 = distinct !{!18, !"_ZNK9grpc_core5Slice3RefEv"} !19 = !{!20} -!20 = distinct !{!20, !21, !"_ZNKSt8functionIFN9grpc_core12ArenaPromiseISt10unique_ptrI19grpc_metadata_batchNS0_5Arena13PooledDeleterEEEENS0_8CallArgsEEEclES8_: %agg.result"} -!21 = distinct !{!21, !"_ZNKSt8functionIFN9grpc_core12ArenaPromiseISt10unique_ptrI19grpc_metadata_batchNS0_5Arena13PooledDeleterEEEENS0_8CallArgsEEEclES8_"} -!22 = distinct !{!22, !23} -!23 = !{!"llvm.loop.mustprogress"} -!24 = distinct !{!24, !23} -!25 = distinct !{!25, !23} -!26 = distinct !{!26, !23} -!27 = !{!28} -!28 = distinct !{!28, !29, !"_ZN4absl12lts_202308028OkStatusEv: %agg.result"} -!29 = distinct !{!29, !"_ZN4absl12lts_202308028OkStatusEv"} -!30 = !{!31} -!31 = distinct !{!31, !32, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} -!32 = distinct !{!32, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} +!20 = distinct !{!20, !21, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} +!21 = distinct !{!21, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} +!22 = !{!23} +!23 = distinct !{!23, !24, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} +!24 = distinct !{!24, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} +!25 = !{!26} +!26 = distinct !{!26, !27, !"_ZNKSt8functionIFN9grpc_core12ArenaPromiseISt10unique_ptrI19grpc_metadata_batchNS0_5Arena13PooledDeleterEEEENS0_8CallArgsEEEclES8_: %agg.result"} +!27 = distinct !{!27, !"_ZNKSt8functionIFN9grpc_core12ArenaPromiseISt10unique_ptrI19grpc_metadata_batchNS0_5Arena13PooledDeleterEEEENS0_8CallArgsEEEclES8_"} +!28 = distinct !{!28, !29} +!29 = !{!"llvm.loop.mustprogress"} +!30 = distinct !{!30, !29} +!31 = distinct !{!31, !29} +!32 = distinct !{!32, !29} !33 = !{!34} !34 = distinct !{!34, !35, !"_ZN4absl12lts_202308028OkStatusEv: %agg.result"} !35 = distinct !{!35, !"_ZN4absl12lts_202308028OkStatusEv"} !36 = !{!37} -!37 = distinct !{!37, !38, !"_ZNK9grpc_core21promise_filter_detail12BaseCallData16ActivityDebugTagB5cxx11Et: %agg.result"} -!38 = distinct !{!38, !"_ZNK9grpc_core21promise_filter_detail12BaseCallData16ActivityDebugTagB5cxx11Et"} +!37 = distinct !{!37, !38, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} +!38 = distinct !{!38, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} !39 = !{!40} -!40 = distinct !{!40, !41, !"_ZN9grpc_core22MakePromiseBasedFilterINS_21ClientAuthorityFilterELNS_14FilterEndpointE0ELh0EEENSt9enable_ifIXaasr3std10is_base_ofINS_13ChannelFilterET_EE5valuentsr3std10is_base_ofINS_22ImplementChannelFilterIS5_EES5_EE5valueE19grpc_channel_filterE4typeEPKc: %agg.result"} -!41 = distinct !{!41, !"_ZN9grpc_core22MakePromiseBasedFilterINS_21ClientAuthorityFilterELNS_14FilterEndpointE0ELh0EEENSt9enable_ifIXaasr3std10is_base_ofINS_13ChannelFilterET_EE5valuentsr3std10is_base_ofINS_22ImplementChannelFilterIS5_EES5_EE5valueE19grpc_channel_filterE4typeEPKc"} +!40 = distinct !{!40, !41, !"_ZN4absl12lts_202308028OkStatusEv: %agg.result"} +!41 = distinct !{!41, !"_ZN4absl12lts_202308028OkStatusEv"} +!42 = !{!43} +!43 = distinct !{!43, !44, !"_ZNK9grpc_core21promise_filter_detail12BaseCallData16ActivityDebugTagB5cxx11Et: %agg.result"} +!44 = distinct !{!44, !"_ZNK9grpc_core21promise_filter_detail12BaseCallData16ActivityDebugTagB5cxx11Et"} +!45 = !{!46} +!46 = distinct !{!46, !47, !"_ZN9grpc_core22MakePromiseBasedFilterINS_21ClientAuthorityFilterELNS_14FilterEndpointE0ELh0EEENSt9enable_ifIXaasr3std10is_base_ofINS_13ChannelFilterET_EE5valuentsr3std10is_base_ofINS_22ImplementChannelFilterIS5_EES5_EE5valueE19grpc_channel_filterE4typeEPKc: %agg.result"} +!47 = distinct !{!47, !"_ZN9grpc_core22MakePromiseBasedFilterINS_21ClientAuthorityFilterELNS_14FilterEndpointE0ELh0EEENSt9enable_ifIXaasr3std10is_base_ofINS_13ChannelFilterET_EE5valuentsr3std10is_base_ofINS_22ImplementChannelFilterIS5_EES5_EE5valueE19grpc_channel_filterE4typeEPKc"} diff --git a/bench/grpc/optimized/hpack_parser.cc.ll b/bench/grpc/optimized/hpack_parser.cc.ll index 79abdcccda8..4db9f395945 100644 --- a/bench/grpc/optimized/hpack_parser.cc.ll +++ b/bench/grpc/optimized/hpack_parser.cc.ll @@ -17109,9 +17109,13 @@ define linkonce_odr void @_ZN9grpc_core15metadata_detail11ParseHelperI19grpc_met entry: %ref.tmp.i = alloca %struct.grpc_slice, align 8 %ref.tmp16.i = alloca %struct.grpc_slice, align 8 + %ref.tmp.i.i = alloca %struct.grpc_slice, align 8 %agg.tmp2 = alloca %"class.grpc_core::Slice", align 8 %agg.tmp4 = alloca %"class.grpc_core::Slice", align 8 - call void @grpc_slice_from_copied_buffer(ptr nonnull sret(%struct.grpc_slice) align 8 %agg.tmp2, ptr noundef %key.coerce1, i64 noundef %key.coerce0) + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i), !noalias !686 + call void @grpc_slice_from_copied_buffer(ptr nonnull sret(%struct.grpc_slice) align 8 %ref.tmp.i.i, ptr noundef %key.coerce1, i64 noundef %key.coerce0), !noalias !689 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i.i, i64 32, i1 false) + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i.i), !noalias !686 %will_keep_past_request_lifetime_ = getelementptr inbounds i8, ptr %this, i64 32 %0 = load i8, ptr %will_keep_past_request_lifetime_, align 8 %tobool = trunc i8 %0 to i1 @@ -17120,7 +17124,7 @@ entry: cond.true: ; preds = %entry call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp16.i) - %1 = load ptr, ptr %this, align 8, !noalias !686 + %1 = load ptr, ptr %this, align 8, !noalias !692 %magicptr.i = ptrtoint ptr %1 to i64 switch i64 %magicptr.i, label %if.end9.i [ i64 0, label %if.then.i @@ -17140,13 +17144,13 @@ if.then7.i: ; preds = %cond.true br label %_ZN9grpc_core5Slice17TakeUniquelyOwnedEv.exit if.end9.i: ; preds = %cond.true - %2 = load atomic i64, ptr %1 monotonic, align 8, !noalias !686 + %2 = load atomic i64, ptr %1 monotonic, align 8, !noalias !692 %cmp.i.i = icmp eq i64 %2, 1 br i1 %cmp.i.i, label %if.then13.i, label %if.end15.i if.then13.i: ; preds = %if.end9.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp4, ptr noundef nonnull align 8 dereferenceable(32) %this, i64 32, i1 false) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %this, i8 0, i64 32, i1 false), !noalias !689 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %this, i8 0, i64 32, i1 false), !noalias !695 br label %_ZN9grpc_core5Slice17TakeUniquelyOwnedEv.exit if.end15.i: ; preds = %if.end9.i @@ -17164,7 +17168,7 @@ _ZN9grpc_core5Slice17TakeUniquelyOwnedEv.exit: ; preds = %if.then.i, %.noexc, cond.false: ; preds = %entry call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp4, ptr noundef nonnull align 8 dereferenceable(32) %this, i64 32, i1 false) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %this, i8 0, i64 32, i1 false), !noalias !692 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %this, i8 0, i64 32, i1 false), !noalias !698 br label %cond.end cond.end: ; preds = %_ZN9grpc_core5Slice17TakeUniquelyOwnedEv.exit, %cond.false @@ -17306,12 +17310,12 @@ entry: %conv.i.i.i = and i64 %3, 255 %cond.i2.i.i = select i1 %tobool.not.i.i.i, i64 %conv.i.i.i, i64 %3 %second.i = getelementptr inbounds i8, ptr %0, i64 32 - %4 = load ptr, ptr %second.i, align 8, !noalias !695 + %4 = load ptr, ptr %second.i, align 8, !noalias !701 %cmp.i.i.i = icmp ugt ptr %4, inttoptr (i64 1 to ptr) br i1 %cmp.i.i.i, label %if.then.i.i.i, label %_ZNK9grpc_core5Slice3RefEv.exit.i if.then.i.i.i: ; preds = %entry - %5 = atomicrmw add ptr %4, i64 1 monotonic, align 8, !noalias !695 + %5 = atomicrmw add ptr %4, i64 1 monotonic, align 8, !noalias !701 br label %_ZNK9grpc_core5Slice3RefEv.exit.i _ZNK9grpc_core5Slice3RefEv.exit.i: ; preds = %if.then.i.i.i, %entry @@ -17370,37 +17374,37 @@ entry: call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %ref.tmp.i) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %ref.tmp2.i) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %ref.tmp3.i) - %0 = load ptr, ptr %value, align 8, !noalias !698 - %1 = load ptr, ptr %0, align 8, !noalias !698 + %0 = load ptr, ptr %value, align 8, !noalias !704 + %1 = load ptr, ptr %0, align 8, !noalias !704 %tobool.not.i.i.i = icmp eq ptr %1, null %bytes.i.i.i = getelementptr inbounds i8, ptr %0, i64 16 - %2 = load ptr, ptr %bytes.i.i.i, align 8, !noalias !698 + %2 = load ptr, ptr %bytes.i.i.i, align 8, !noalias !704 %bytes5.i.i.i = getelementptr inbounds i8, ptr %0, i64 9 %cond.i.i.i = select i1 %tobool.not.i.i.i, ptr %bytes5.i.i.i, ptr %2 %data.i.i.i = getelementptr inbounds i8, ptr %0, i64 8 - %3 = load i64, ptr %data.i.i.i, align 8, !noalias !698 + %3 = load i64, ptr %data.i.i.i, align 8, !noalias !704 %conv.i.i.i = and i64 %3, 255 %cond.i2.i.i = select i1 %tobool.not.i.i.i, i64 %conv.i.i.i, i64 %3 - store i64 %cond.i2.i.i, ptr %ref.tmp.i, align 8, !noalias !698 + store i64 %cond.i2.i.i, ptr %ref.tmp.i, align 8, !noalias !704 %pc.sroa.2.0.piece_.sroa_idx.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - store ptr %cond.i.i.i, ptr %pc.sroa.2.0.piece_.sroa_idx.i.i, align 8, !noalias !698 - store i64 2, ptr %ref.tmp2.i, align 8, !noalias !698 + store ptr %cond.i.i.i, ptr %pc.sroa.2.0.piece_.sroa_idx.i.i, align 8, !noalias !704 + store i64 2, ptr %ref.tmp2.i, align 8, !noalias !704 %4 = getelementptr inbounds i8, ptr %ref.tmp2.i, i64 8 - store ptr @.str.64, ptr %4, align 8, !noalias !698 + store ptr @.str.64, ptr %4, align 8, !noalias !704 %second.i = getelementptr inbounds i8, ptr %0, i64 32 - %5 = load ptr, ptr %second.i, align 8, !noalias !698 + %5 = load ptr, ptr %second.i, align 8, !noalias !704 %tobool.not.i.i2.i = icmp eq ptr %5, null %bytes.i.i3.i = getelementptr inbounds i8, ptr %0, i64 48 - %6 = load ptr, ptr %bytes.i.i3.i, align 8, !noalias !698 + %6 = load ptr, ptr %bytes.i.i3.i, align 8, !noalias !704 %bytes5.i.i4.i = getelementptr inbounds i8, ptr %0, i64 41 %cond.i.i5.i = select i1 %tobool.not.i.i2.i, ptr %bytes5.i.i4.i, ptr %6 %data.i.i6.i = getelementptr inbounds i8, ptr %0, i64 40 - %7 = load i64, ptr %data.i.i6.i, align 8, !noalias !698 + %7 = load i64, ptr %data.i.i6.i, align 8, !noalias !704 %conv.i.i7.i = and i64 %7, 255 %cond.i2.i8.i = select i1 %tobool.not.i.i2.i, i64 %conv.i.i7.i, i64 %7 - store i64 %cond.i2.i8.i, ptr %ref.tmp3.i, align 8, !noalias !698 + store i64 %cond.i2.i8.i, ptr %ref.tmp3.i, align 8, !noalias !704 %pc.sroa.2.0.piece_.sroa_idx.i11.i = getelementptr inbounds i8, ptr %ref.tmp3.i, i64 8 - store ptr %cond.i.i5.i, ptr %pc.sroa.2.0.piece_.sroa_idx.i11.i, align 8, !noalias !698 + store ptr %cond.i.i5.i, ptr %pc.sroa.2.0.piece_.sroa_idx.i11.i, align 8, !noalias !704 call void @_ZN4absl12lts_202308026StrCatB5cxx11ERKNS0_8AlphaNumES3_S3_(ptr sret(%"class.std::__cxx11::basic_string") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(48) %ref.tmp.i, ptr noundef nonnull align 8 dereferenceable(48) %ref.tmp2.i, ptr noundef nonnull align 8 dereferenceable(48) %ref.tmp3.i) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %ref.tmp.i) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %ref.tmp2.i) @@ -17447,12 +17451,12 @@ entry: %call = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #29 %value_ = getelementptr inbounds i8, ptr %result, i64 8 %0 = load ptr, ptr %value_, align 8 - %1 = load ptr, ptr %0, align 8, !noalias !701 + %1 = load ptr, ptr %0, align 8, !noalias !707 %cmp.i.i = icmp ugt ptr %1, inttoptr (i64 1 to ptr) br i1 %cmp.i.i, label %if.then.i.i, label %invoke.cont if.then.i.i: ; preds = %entry - %2 = atomicrmw add ptr %1, i64 1 monotonic, align 8, !noalias !701 + %2 = atomicrmw add ptr %1, i64 1 monotonic, align 8, !noalias !707 br label %invoke.cont invoke.cont: ; preds = %if.then.i.i, %entry @@ -17485,14 +17489,14 @@ if.then7.i: ; preds = %cond.true br label %_ZN9grpc_core5Slice17TakeUniquelyOwnedEv.exit if.end9.i: ; preds = %cond.true - %4 = load atomic i64, ptr %3 monotonic, align 8, !noalias !704 + %4 = load atomic i64, ptr %3 monotonic, align 8, !noalias !710 %cmp.i.i4 = icmp eq i64 %4, 1 br i1 %cmp.i.i4, label %if.then13.i, label %if.end15.i if.then13.i: ; preds = %if.end9.i %ref.tmp14.i.sroa.4.0.value.sroa_idx = getelementptr inbounds i8, ptr %value, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp2.sroa.8, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp14.i.sroa.4.0.value.sroa_idx, i64 24, i1 false) - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %value, i8 0, i64 32, i1 false), !noalias !707 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %value, i8 0, i64 32, i1 false), !noalias !713 br label %_ZN9grpc_core5Slice17TakeUniquelyOwnedEv.exit if.end15.i: ; preds = %if.end9.i @@ -17515,7 +17519,7 @@ cond.false: ; preds = %invoke.cont %ref.tmp.i6.sroa.0.0.copyload = load ptr, ptr %value, align 8 %ref.tmp.i6.sroa.4.0.value.sroa_idx = getelementptr inbounds i8, ptr %value, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp2.sroa.8, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i6.sroa.4.0.value.sroa_idx, i64 24, i1 false) - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %value, i8 0, i64 32, i1 false), !noalias !710 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %value, i8 0, i64 32, i1 false), !noalias !716 br label %_ZN9grpc_core5SliceD2Ev.exit15 _ZN9grpc_core5SliceD2Ev.exit15: ; preds = %_ZN9grpc_core5Slice17TakeUniquelyOwnedEv.exit, %cond.false @@ -17823,14 +17827,14 @@ _ZN9grpc_core16HpackParseResultC2ENS_16HpackParseStatusE.exit: store ptr null, ptr %agg.result, align 8 %call.i1.i = tail call noalias noundef nonnull dereferenceable(88) ptr @_Znwm(i64 noundef 88) #29 %refs_.i.i.i.i = getelementptr inbounds i8, ptr %call.i1.i, i64 8 - store i64 1, ptr %refs_.i.i.i.i, align 8, !noalias !713 - store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core16HpackParseResult21HpackParseResultStateE, i64 16), ptr %call.i1.i, align 8, !noalias !713 + store i64 1, ptr %refs_.i.i.i.i, align 8, !noalias !719 + store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core16HpackParseResult21HpackParseResultStateE, i64 16), ptr %call.i1.i, align 8, !noalias !719 %status.i.i.i = getelementptr inbounds i8, ptr %call.i1.i, i64 16 - store i8 8, ptr %status.i.i.i, align 1, !noalias !713 + store i8 8, ptr %status.i.i.i, align 1, !noalias !719 %key.i.i.i = getelementptr inbounds i8, ptr %call.i1.i, i64 40 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %key.i.i.i) #30, !noalias !713 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %key.i.i.i) #30, !noalias !719 %_M_engaged.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i1.i, i64 80 - store i8 0, ptr %_M_engaged.i.i.i.i.i.i.i.i, align 8, !noalias !713 + store i8 0, ptr %_M_engaged.i.i.i.i.i.i.i.i, align 8, !noalias !719 store ptr %call.i1.i, ptr %agg.result, align 8 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp1) #30 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %agg.tmp.i) @@ -17896,7 +17900,7 @@ entry: %__guard.i = alloca %struct._Guard, align 8 %ref.tmp.i = alloca %"class.std::allocator.151", align 1 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp.i) - call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp.i) #30, !noalias !716 + call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp.i) #30, !noalias !722 %call.i1.i = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %agg.result) to label %call.i.noexc.i unwind label %lpad.i @@ -22842,7 +22846,7 @@ sw.bb11.i1004.i: ; preds = %if.end.i993.i sw.epilog: ; preds = %sw.bb11.i1004.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i1033.i, %if.then.i.i.i1011.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i76.i.i.i, %if.then.i.i53.i.i.i, %sw.bb40.i.i.i, %sw.bb33.i.i.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i41.i.i.i, %if.then.i.i18.i.i.i, %sw.bb24.i.i.i, %sw.bb17.i.i.i, %sw.bb14.i.i.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i.i985.i, %if.then.i.i.i.i962.i, %sw.bb7.i.i.i, %sw.bb.i5.i989.i, %if.then.i954.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i946.i, %if.then.i.i.i924.i, %sw.bb6.i.i906.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i.i902.i, %if.then.i.i.i.i879.i, %sw.bb.i5.i908.i, %if.then.i868.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i860.i, %if.then.i.i.i838.i, %sw.bb6.i.i820.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i.i816.i, %if.then.i.i.i.i793.i, %sw.bb.i5.i.i, %if.then.i784.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i775.i, %if.then.i.i.i752.i, %sw.bb.i4.i738.i, %if.then.i735.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i726.i, %if.then.i.i.i703.i, %sw.bb.i4.i686.i, %if.then.i684.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i676.i, %if.then.i.i.i654.i, %sw.bb6.i.i.i, %sw.bb5.i.i.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i.i.i, %if.then.i.i.i.i638.i, %if.then.i635.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i623.i, %if.then.i.i.i600.i, %if.then.i629.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i577.i, %if.then.i.i.i554.i, %if.then.i583.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i531.i, %if.then.i.i.i508.i, %if.then.i537.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i486.i, %if.then.i.i.i463.i, %if.then.i492.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i440.i, %if.then.i.i.i417.i, %if.then.i446.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i394.i, %if.then.i.i.i371.i, %if.then.i400.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i349.i, %if.then.i.i.i326.i, %if.then.i355.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i304.i, %if.then.i.i.i281.i, %if.then.i310.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i258.i, %if.then.i.i.i235.i, %if.then.i264.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i213.i, %if.then.i.i.i190.i, %if.then.i219.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i167.i, %if.then.i.i.i144.i, %if.then.i173.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i121.i, %if.then.i.i.i98.i, %if.then.i127.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i76.i, %if.then.i.i.i53.i, %if.then.i82.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i38.i, %if.then.i.i.i15.i, %if.then.i.i232, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i260, %if.then.i.i.i238, %if.end.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i76.i.i, %if.then.i.i53.i.i, %sw.bb39.i.i, %sw.bb32.i.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i41.i.i, %if.then.i.i18.i.i, %sw.bb23.i.i, %sw.bb16.i.i, %sw.bb14.i.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i.i, %if.then.i.i.i.i208, %sw.bb7.i.i205, %sw.bb.i5.i, %if.then.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i196, %if.then.i.i173, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i161, %if.then.i.i138, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i91, %if.then.i.i68 %528 = load i8, ptr %done_, align 1 %tobool = trunc i8 %528 to i1 - br i1 %tobool, label %while.end, label %while.body, !llvm.loop !719 + br i1 %tobool, label %while.end, label %while.body, !llvm.loop !725 while.end: ; preds = %sw.epilog, %entry, %sw.bb210.i, %sw.bb199.i, %sw.bb197.i, %sw.bb190.i, %sw.bb183.i, %sw.bb172.i, %sw.bb170.i, %sw.bb163.i, %sw.bb156.i, %sw.bb145.i, %sw.bb143.i, %sw.bb136.i, %sw.bb129.i, %sw.bb118.i, %sw.bb116.i, %sw.bb109.i, %sw.bb102.i, %sw.bb100.i, %sw.bb89.i, %sw.bb82.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i210.i, %if.then.i.i187.i, %sw.bb73.i, %sw.bb66.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i170.i, %if.then.i.i147.i, %sw.bb57.i, %sw.bb50.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i130.i, %if.then.i.i107.i, %sw.bb41.i, %sw.bb34.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i93.i, %if.then.i.i70.i, %sw.bb25.i, %sw.bb18.i, %sw.bb15.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i, %if.then.i.i.i, %sw.bb8.i, %sw.bb2.i19, %sw.epilog.i %ok_ = getelementptr inbounds i8, ptr %this, i64 36 @@ -28674,7 +28678,7 @@ sw.bb11.i1057.i: ; preds = %if.end.i1046.i sw.epilog: ; preds = %sw.bb11.i1057.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i1085.i, %if.then.i.i12.i.i, %if.then3.i.i1092.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i82.i.i.i, %if.then.i.i59.i.i.i, %if.then3.i89.i.i.i, %sw.bb40.i.i.i, %sw.bb33.i.i.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i41.i.i.i, %if.then.i.i18.i.i.i, %if.then3.i48.i.i.i, %sw.bb24.i.i.i, %sw.bb17.i.i.i, %sw.bb14.i.i.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i.i1034.i, %if.then.i.i.i.i1011.i, %if.then3.i.i.i1041.i, %sw.bb7.i.i.i, %sw.bb.i5.i1042.i, %if.then.i1002.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i990.i, %if.then.i.i8.i.i, %if.then3.i.i997.i, %sw.bb6.i.i951.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i.i945.i, %if.then.i.i.i.i922.i, %if.then3.i.i.i.i, %sw.bb.i5.i953.i, %if.then.i910.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i898.i, %if.then.i.i10.i.i, %if.then3.i.i905.i, %sw.bb6.i.i858.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i.i853.i, %if.then.i.i.i.i830.i, %sw.bb.i5.i.i, %if.then.i820.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i810.i, %if.then.i.i.i787.i, %sw.bb.i4.i773.i, %if.then.i770.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i760.i, %if.then.i.i.i737.i, %sw.bb.i4.i719.i, %if.then.i717.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i708.i, %if.then.i.i7.i.i, %sw.bb6.i.i.i, %sw.bb5.i.i.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i.i.i, %if.then.i.i.i.i670.i, %if.then.i667.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i654.i, %if.then.i.i.i631.i, %if.then.i661.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i606.i, %if.then.i.i.i583.i, %if.then.i613.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i558.i, %if.then.i.i.i535.i, %if.then.i565.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i511.i, %if.then.i.i.i488.i, %if.then.i518.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i463.i, %if.then.i.i.i440.i, %if.then.i470.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i415.i, %if.then.i.i.i392.i, %if.then.i422.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i368.i, %if.then.i.i.i345.i, %if.then.i375.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i321.i, %if.then.i.i.i298.i, %if.then.i328.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i273.i, %if.then.i.i.i250.i, %if.then.i280.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i226.i, %if.then.i.i.i203.i, %if.then.i233.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i178.i, %if.then.i.i.i155.i, %if.then.i185.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i130.i, %if.then.i.i.i107.i, %if.then.i137.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i83.i, %if.then.i.i.i60.i, %if.then.i90.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i42.i, %if.then.i.i.i19.i, %if.then.i47.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i289, %if.then.i.i9.i, %if.then3.i.i296, %if.end.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i80.i.i, %if.then.i.i57.i.i, %if.then3.i87.i.i, %sw.bb39.i.i, %sw.bb32.i.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i42.i.i, %if.then.i.i19.i.i, %if.then3.i.i.i, %sw.bb23.i.i, %sw.bb16.i.i, %sw.bb14.i.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i.i, %if.then.i.i.i.i237, %sw.bb7.i.i234, %sw.bb.i5.i, %if.then.i231, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i220, %if.then.i.i197, %if.then3.i227, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i179, %if.then.i.i156, %if.then3.i186, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i97, %if.then.i.i74, %if.then3.i104 %652 = load i8, ptr %done_, align 1 %tobool = trunc i8 %652 to i1 - br i1 %tobool, label %while.end, label %while.body, !llvm.loop !720 + br i1 %tobool, label %while.end, label %while.body, !llvm.loop !726 while.end: ; preds = %sw.epilog, %entry, %sw.bb210.i, %sw.bb199.i, %sw.bb197.i, %sw.bb190.i, %sw.bb183.i, %sw.bb172.i, %sw.bb170.i, %sw.bb163.i, %sw.bb156.i, %sw.bb145.i, %sw.bb143.i, %sw.bb136.i, %sw.bb129.i, %sw.bb118.i, %sw.bb116.i, %sw.bb109.i, %sw.bb102.i, %sw.bb100.i, %sw.bb89.i, %sw.bb82.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i211.i, %if.then.i.i188.i, %if.then3.i218.i, %sw.bb73.i, %sw.bb66.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i165.i, %if.then.i.i142.i, %if.then3.i172.i, %sw.bb57.i, %sw.bb50.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i119.i, %if.then.i.i96.i, %if.then3.i126.i, %sw.bb41.i, %sw.bb34.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i76.i, %if.then.i.i53.i, %if.then3.i83.i, %sw.bb25.i, %sw.bb18.i, %sw.bb15.i, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i, %if.then.i.i.i, %if.then3.i.i, %sw.bb8.i, %sw.bb2.i14, %sw.epilog.i %ok_ = getelementptr inbounds i8, ptr %this, i64 44 @@ -29998,37 +30002,43 @@ attributes #31 = { nounwind willreturn memory(read) } !684 = distinct !{!684, !685, !"_ZN4absl12lts_202308026StrCatB5cxx11ERKNS0_8AlphaNumE: %agg.result"} !685 = distinct !{!685, !"_ZN4absl12lts_202308026StrCatB5cxx11ERKNS0_8AlphaNumE"} !686 = !{!687} -!687 = distinct !{!687, !688, !"_ZN9grpc_core5Slice17TakeUniquelyOwnedEv: %agg.result"} -!688 = distinct !{!688, !"_ZN9grpc_core5Slice17TakeUniquelyOwnedEv"} +!687 = distinct !{!687, !688, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedStringESt17basic_string_viewIcSt11char_traitsIcEE: %agg.result"} +!688 = distinct !{!688, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedStringESt17basic_string_viewIcSt11char_traitsIcEE"} !689 = !{!690, !687} -!690 = distinct !{!690, !691, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} -!691 = distinct !{!691, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} +!690 = distinct !{!690, !691, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedBufferEPKcm: %agg.result"} +!691 = distinct !{!691, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedBufferEPKcm"} !692 = !{!693} -!693 = distinct !{!693, !694, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} -!694 = distinct !{!694, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} -!695 = !{!696} -!696 = distinct !{!696, !697, !"_ZNK9grpc_core5Slice3RefEv: %agg.result"} -!697 = distinct !{!697, !"_ZNK9grpc_core5Slice3RefEv"} +!693 = distinct !{!693, !694, !"_ZN9grpc_core5Slice17TakeUniquelyOwnedEv: %agg.result"} +!694 = distinct !{!694, !"_ZN9grpc_core5Slice17TakeUniquelyOwnedEv"} +!695 = !{!696, !693} +!696 = distinct !{!696, !697, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} +!697 = distinct !{!697, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} !698 = !{!699} -!699 = distinct !{!699, !700, !"_ZZN9grpc_core14ParsedMetadataI19grpc_metadata_batchE14KeyValueVTableESt17basic_string_viewIcSt11char_traitsIcEEENKUlRKNS_15metadata_detail6BufferEE0_clB5cxx11ESA_: %agg.result"} -!700 = distinct !{!700, !"_ZZN9grpc_core14ParsedMetadataI19grpc_metadata_batchE14KeyValueVTableESt17basic_string_viewIcSt11char_traitsIcEEENKUlRKNS_15metadata_detail6BufferEE0_clB5cxx11ESA_"} +!699 = distinct !{!699, !700, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} +!700 = distinct !{!700, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} !701 = !{!702} !702 = distinct !{!702, !703, !"_ZNK9grpc_core5Slice3RefEv: %agg.result"} !703 = distinct !{!703, !"_ZNK9grpc_core5Slice3RefEv"} !704 = !{!705} -!705 = distinct !{!705, !706, !"_ZN9grpc_core5Slice17TakeUniquelyOwnedEv: %agg.result"} -!706 = distinct !{!706, !"_ZN9grpc_core5Slice17TakeUniquelyOwnedEv"} -!707 = !{!708, !705} -!708 = distinct !{!708, !709, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} -!709 = distinct !{!709, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} +!705 = distinct !{!705, !706, !"_ZZN9grpc_core14ParsedMetadataI19grpc_metadata_batchE14KeyValueVTableESt17basic_string_viewIcSt11char_traitsIcEEENKUlRKNS_15metadata_detail6BufferEE0_clB5cxx11ESA_: %agg.result"} +!706 = distinct !{!706, !"_ZZN9grpc_core14ParsedMetadataI19grpc_metadata_batchE14KeyValueVTableESt17basic_string_viewIcSt11char_traitsIcEEENKUlRKNS_15metadata_detail6BufferEE0_clB5cxx11ESA_"} +!707 = !{!708} +!708 = distinct !{!708, !709, !"_ZNK9grpc_core5Slice3RefEv: %agg.result"} +!709 = distinct !{!709, !"_ZNK9grpc_core5Slice3RefEv"} !710 = !{!711} -!711 = distinct !{!711, !712, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} -!712 = distinct !{!712, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} -!713 = !{!714} -!714 = distinct !{!714, !715, !"_ZN9grpc_core14MakeRefCountedINS_16HpackParseResult21HpackParseResultStateEJRNS_16HpackParseStatusEEEENS_13RefCountedPtrIT_EEDpOT0_: %agg.result"} -!715 = distinct !{!715, !"_ZN9grpc_core14MakeRefCountedINS_16HpackParseResult21HpackParseResultStateEJRNS_16HpackParseStatusEEEENS_13RefCountedPtrIT_EEDpOT0_"} +!711 = distinct !{!711, !712, !"_ZN9grpc_core5Slice17TakeUniquelyOwnedEv: %agg.result"} +!712 = distinct !{!712, !"_ZN9grpc_core5Slice17TakeUniquelyOwnedEv"} +!713 = !{!714, !711} +!714 = distinct !{!714, !715, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} +!715 = distinct !{!715, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} !716 = !{!717} -!717 = distinct !{!717, !718, !"_ZZN9grpc_core14ParsedMetadataI19grpc_metadata_batchE11EmptyVTableEvENKUlRKNS_15metadata_detail6BufferEE_clB5cxx11ES6_: %agg.result"} -!718 = distinct !{!718, !"_ZZN9grpc_core14ParsedMetadataI19grpc_metadata_batchE11EmptyVTableEvENKUlRKNS_15metadata_detail6BufferEE_clB5cxx11ES6_"} -!719 = distinct !{!719, !8} -!720 = distinct !{!720, !8} +!717 = distinct !{!717, !718, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} +!718 = distinct !{!718, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} +!719 = !{!720} +!720 = distinct !{!720, !721, !"_ZN9grpc_core14MakeRefCountedINS_16HpackParseResult21HpackParseResultStateEJRNS_16HpackParseStatusEEEENS_13RefCountedPtrIT_EEDpOT0_: %agg.result"} +!721 = distinct !{!721, !"_ZN9grpc_core14MakeRefCountedINS_16HpackParseResult21HpackParseResultStateEJRNS_16HpackParseStatusEEEENS_13RefCountedPtrIT_EEDpOT0_"} +!722 = !{!723} +!723 = distinct !{!723, !724, !"_ZZN9grpc_core14ParsedMetadataI19grpc_metadata_batchE11EmptyVTableEvENKUlRKNS_15metadata_detail6BufferEE_clB5cxx11ES6_: %agg.result"} +!724 = distinct !{!724, !"_ZZN9grpc_core14ParsedMetadataI19grpc_metadata_batchE11EmptyVTableEvENKUlRKNS_15metadata_detail6BufferEE_clB5cxx11ES6_"} +!725 = distinct !{!725, !8} +!726 = distinct !{!726, !8} diff --git a/bench/grpc/optimized/hpack_parser_table.cc.ll b/bench/grpc/optimized/hpack_parser_table.cc.ll index 41613ff0f0f..3f4028badbd 100644 --- a/bench/grpc/optimized/hpack_parser_table.cc.ll +++ b/bench/grpc/optimized/hpack_parser_table.cc.ll @@ -8566,9 +8566,13 @@ define linkonce_odr void @_ZN9grpc_core15metadata_detail11ParseHelperI19grpc_met entry: %ref.tmp.i = alloca %struct.grpc_slice, align 8 %ref.tmp16.i = alloca %struct.grpc_slice, align 8 + %ref.tmp.i.i = alloca %struct.grpc_slice, align 8 %agg.tmp2 = alloca %"class.grpc_core::Slice", align 8 %agg.tmp4 = alloca %"class.grpc_core::Slice", align 8 - call void @grpc_slice_from_copied_buffer(ptr nonnull sret(%struct.grpc_slice) align 8 %agg.tmp2, ptr noundef %key.coerce1, i64 noundef %key.coerce0) + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i), !noalias !438 + call void @grpc_slice_from_copied_buffer(ptr nonnull sret(%struct.grpc_slice) align 8 %ref.tmp.i.i, ptr noundef %key.coerce1, i64 noundef %key.coerce0), !noalias !441 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i.i, i64 32, i1 false) + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i.i), !noalias !438 %will_keep_past_request_lifetime_ = getelementptr inbounds i8, ptr %this, i64 32 %0 = load i8, ptr %will_keep_past_request_lifetime_, align 8 %tobool = trunc i8 %0 to i1 @@ -8577,7 +8581,7 @@ entry: cond.true: ; preds = %entry call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp16.i) - %1 = load ptr, ptr %this, align 8, !noalias !438 + %1 = load ptr, ptr %this, align 8, !noalias !444 %magicptr.i = ptrtoint ptr %1 to i64 switch i64 %magicptr.i, label %if.end9.i [ i64 0, label %if.then.i @@ -8597,13 +8601,13 @@ if.then7.i: ; preds = %cond.true br label %_ZN9grpc_core5Slice17TakeUniquelyOwnedEv.exit if.end9.i: ; preds = %cond.true - %2 = load atomic i64, ptr %1 monotonic, align 8, !noalias !438 + %2 = load atomic i64, ptr %1 monotonic, align 8, !noalias !444 %cmp.i.i = icmp eq i64 %2, 1 br i1 %cmp.i.i, label %if.then13.i, label %if.end15.i if.then13.i: ; preds = %if.end9.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp4, ptr noundef nonnull align 8 dereferenceable(32) %this, i64 32, i1 false) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %this, i8 0, i64 32, i1 false), !noalias !441 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %this, i8 0, i64 32, i1 false), !noalias !447 br label %_ZN9grpc_core5Slice17TakeUniquelyOwnedEv.exit if.end15.i: ; preds = %if.end9.i @@ -8621,7 +8625,7 @@ _ZN9grpc_core5Slice17TakeUniquelyOwnedEv.exit: ; preds = %if.then.i, %.noexc, cond.false: ; preds = %entry call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp4, ptr noundef nonnull align 8 dereferenceable(32) %this, i64 32, i1 false) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %this, i8 0, i64 32, i1 false), !noalias !444 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %this, i8 0, i64 32, i1 false), !noalias !450 br label %cond.end cond.end: ; preds = %_ZN9grpc_core5Slice17TakeUniquelyOwnedEv.exit, %cond.false @@ -8765,12 +8769,12 @@ entry: %conv.i.i.i = and i64 %3, 255 %cond.i2.i.i = select i1 %tobool.not.i.i.i, i64 %conv.i.i.i, i64 %3 %second.i = getelementptr inbounds i8, ptr %0, i64 32 - %4 = load ptr, ptr %second.i, align 8, !noalias !447 + %4 = load ptr, ptr %second.i, align 8, !noalias !453 %cmp.i.i.i = icmp ugt ptr %4, inttoptr (i64 1 to ptr) br i1 %cmp.i.i.i, label %if.then.i.i.i, label %_ZNK9grpc_core5Slice3RefEv.exit.i if.then.i.i.i: ; preds = %entry - %5 = atomicrmw add ptr %4, i64 1 monotonic, align 8, !noalias !447 + %5 = atomicrmw add ptr %4, i64 1 monotonic, align 8, !noalias !453 br label %_ZNK9grpc_core5Slice3RefEv.exit.i _ZNK9grpc_core5Slice3RefEv.exit.i: ; preds = %if.then.i.i.i, %entry @@ -8829,37 +8833,37 @@ entry: call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %ref.tmp.i) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %ref.tmp2.i) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %ref.tmp3.i) - %0 = load ptr, ptr %value, align 8, !noalias !450 - %1 = load ptr, ptr %0, align 8, !noalias !450 + %0 = load ptr, ptr %value, align 8, !noalias !456 + %1 = load ptr, ptr %0, align 8, !noalias !456 %tobool.not.i.i.i = icmp eq ptr %1, null %bytes.i.i.i = getelementptr inbounds i8, ptr %0, i64 16 - %2 = load ptr, ptr %bytes.i.i.i, align 8, !noalias !450 + %2 = load ptr, ptr %bytes.i.i.i, align 8, !noalias !456 %bytes5.i.i.i = getelementptr inbounds i8, ptr %0, i64 9 %cond.i.i.i = select i1 %tobool.not.i.i.i, ptr %bytes5.i.i.i, ptr %2 %data.i.i.i = getelementptr inbounds i8, ptr %0, i64 8 - %3 = load i64, ptr %data.i.i.i, align 8, !noalias !450 + %3 = load i64, ptr %data.i.i.i, align 8, !noalias !456 %conv.i.i.i = and i64 %3, 255 %cond.i2.i.i = select i1 %tobool.not.i.i.i, i64 %conv.i.i.i, i64 %3 - store i64 %cond.i2.i.i, ptr %ref.tmp.i, align 8, !noalias !450 + store i64 %cond.i2.i.i, ptr %ref.tmp.i, align 8, !noalias !456 %pc.sroa.2.0.piece_.sroa_idx.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - store ptr %cond.i.i.i, ptr %pc.sroa.2.0.piece_.sroa_idx.i.i, align 8, !noalias !450 - store i64 2, ptr %ref.tmp2.i, align 8, !noalias !450 + store ptr %cond.i.i.i, ptr %pc.sroa.2.0.piece_.sroa_idx.i.i, align 8, !noalias !456 + store i64 2, ptr %ref.tmp2.i, align 8, !noalias !456 %4 = getelementptr inbounds i8, ptr %ref.tmp2.i, i64 8 - store ptr @.str.98, ptr %4, align 8, !noalias !450 + store ptr @.str.98, ptr %4, align 8, !noalias !456 %second.i = getelementptr inbounds i8, ptr %0, i64 32 - %5 = load ptr, ptr %second.i, align 8, !noalias !450 + %5 = load ptr, ptr %second.i, align 8, !noalias !456 %tobool.not.i.i2.i = icmp eq ptr %5, null %bytes.i.i3.i = getelementptr inbounds i8, ptr %0, i64 48 - %6 = load ptr, ptr %bytes.i.i3.i, align 8, !noalias !450 + %6 = load ptr, ptr %bytes.i.i3.i, align 8, !noalias !456 %bytes5.i.i4.i = getelementptr inbounds i8, ptr %0, i64 41 %cond.i.i5.i = select i1 %tobool.not.i.i2.i, ptr %bytes5.i.i4.i, ptr %6 %data.i.i6.i = getelementptr inbounds i8, ptr %0, i64 40 - %7 = load i64, ptr %data.i.i6.i, align 8, !noalias !450 + %7 = load i64, ptr %data.i.i6.i, align 8, !noalias !456 %conv.i.i7.i = and i64 %7, 255 %cond.i2.i8.i = select i1 %tobool.not.i.i2.i, i64 %conv.i.i7.i, i64 %7 - store i64 %cond.i2.i8.i, ptr %ref.tmp3.i, align 8, !noalias !450 + store i64 %cond.i2.i8.i, ptr %ref.tmp3.i, align 8, !noalias !456 %pc.sroa.2.0.piece_.sroa_idx.i11.i = getelementptr inbounds i8, ptr %ref.tmp3.i, i64 8 - store ptr %cond.i.i5.i, ptr %pc.sroa.2.0.piece_.sroa_idx.i11.i, align 8, !noalias !450 + store ptr %cond.i.i5.i, ptr %pc.sroa.2.0.piece_.sroa_idx.i11.i, align 8, !noalias !456 call void @_ZN4absl12lts_202308026StrCatB5cxx11ERKNS0_8AlphaNumES3_S3_(ptr sret(%"class.std::__cxx11::basic_string") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(48) %ref.tmp.i, ptr noundef nonnull align 8 dereferenceable(48) %ref.tmp2.i, ptr noundef nonnull align 8 dereferenceable(48) %ref.tmp3.i) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %ref.tmp.i) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %ref.tmp2.i) @@ -8906,12 +8910,12 @@ entry: %call = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #26 %value_ = getelementptr inbounds i8, ptr %result, i64 8 %0 = load ptr, ptr %value_, align 8 - %1 = load ptr, ptr %0, align 8, !noalias !453 + %1 = load ptr, ptr %0, align 8, !noalias !459 %cmp.i.i = icmp ugt ptr %1, inttoptr (i64 1 to ptr) br i1 %cmp.i.i, label %if.then.i.i, label %invoke.cont if.then.i.i: ; preds = %entry - %2 = atomicrmw add ptr %1, i64 1 monotonic, align 8, !noalias !453 + %2 = atomicrmw add ptr %1, i64 1 monotonic, align 8, !noalias !459 br label %invoke.cont invoke.cont: ; preds = %if.then.i.i, %entry @@ -8944,14 +8948,14 @@ if.then7.i: ; preds = %cond.true br label %_ZN9grpc_core5Slice17TakeUniquelyOwnedEv.exit if.end9.i: ; preds = %cond.true - %4 = load atomic i64, ptr %3 monotonic, align 8, !noalias !456 + %4 = load atomic i64, ptr %3 monotonic, align 8, !noalias !462 %cmp.i.i4 = icmp eq i64 %4, 1 br i1 %cmp.i.i4, label %if.then13.i, label %if.end15.i if.then13.i: ; preds = %if.end9.i %ref.tmp14.i.sroa.4.0.value.sroa_idx = getelementptr inbounds i8, ptr %value, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp2.sroa.8, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp14.i.sroa.4.0.value.sroa_idx, i64 24, i1 false) - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %value, i8 0, i64 32, i1 false), !noalias !459 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %value, i8 0, i64 32, i1 false), !noalias !465 br label %_ZN9grpc_core5Slice17TakeUniquelyOwnedEv.exit if.end15.i: ; preds = %if.end9.i @@ -8974,7 +8978,7 @@ cond.false: ; preds = %invoke.cont %ref.tmp.i6.sroa.0.0.copyload = load ptr, ptr %value, align 8 %ref.tmp.i6.sroa.4.0.value.sroa_idx = getelementptr inbounds i8, ptr %value, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp2.sroa.8, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i6.sroa.4.0.value.sroa_idx, i64 24, i1 false) - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %value, i8 0, i64 32, i1 false), !noalias !462 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %value, i8 0, i64 32, i1 false), !noalias !468 br label %_ZN9grpc_core5SliceD2Ev.exit15 _ZN9grpc_core5SliceD2Ev.exit15: ; preds = %_ZN9grpc_core5Slice17TakeUniquelyOwnedEv.exit, %cond.false @@ -9129,25 +9133,25 @@ _ZNSt12_Vector_baseIN9grpc_core10HPackTable7MementoESaIS2_EE11_M_allocateEm.exit for.body.i.i.i: ; preds = %_ZNSt12_Vector_baseIN9grpc_core10HPackTable7MementoESaIS2_EE11_M_allocateEm.exit, %_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i %__cur.08.i.i.i = phi ptr [ %incdec.ptr1.i.i.i, %_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i ], [ %cond.i10, %_ZNSt12_Vector_baseIN9grpc_core10HPackTable7MementoESaIS2_EE11_M_allocateEm.exit ] %__first.addr.07.i.i.i = phi ptr [ %incdec.ptr.i.i.i, %_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i ], [ %1, %_ZNSt12_Vector_baseIN9grpc_core10HPackTable7MementoESaIS2_EE11_M_allocateEm.exit ] - tail call void @llvm.experimental.noalias.scope.decl(metadata !465) - tail call void @llvm.experimental.noalias.scope.decl(metadata !468) - %6 = load ptr, ptr %__first.addr.07.i.i.i, align 8, !alias.scope !468, !noalias !465 - store ptr %6, ptr %__cur.08.i.i.i, align 8, !alias.scope !465, !noalias !468 + tail call void @llvm.experimental.noalias.scope.decl(metadata !471) + tail call void @llvm.experimental.noalias.scope.decl(metadata !474) + %6 = load ptr, ptr %__first.addr.07.i.i.i, align 8, !alias.scope !474, !noalias !471 + store ptr %6, ptr %__cur.08.i.i.i, align 8, !alias.scope !471, !noalias !474 %value_.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i, i64 8 %value_3.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.07.i.i.i, i64 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %value_.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %value_3.i.i.i.i.i.i.i.i, i64 32, i1 false), !alias.scope !470 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %value_.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %value_3.i.i.i.i.i.i.i.i, i64 32, i1 false), !alias.scope !476 %transport_size_.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i, i64 40 %transport_size_4.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.07.i.i.i, i64 40 - %7 = load i32, ptr %transport_size_4.i.i.i.i.i.i.i.i, align 8, !alias.scope !468, !noalias !465 - store i32 %7, ptr %transport_size_.i.i.i.i.i.i.i.i, align 8, !alias.scope !465, !noalias !468 - store ptr @_ZZN9grpc_core14ParsedMetadataI19grpc_metadata_batchE11EmptyVTableEvE6vtable, ptr %__first.addr.07.i.i.i, align 8, !alias.scope !468, !noalias !465 + %7 = load i32, ptr %transport_size_4.i.i.i.i.i.i.i.i, align 8, !alias.scope !474, !noalias !471 + store i32 %7, ptr %transport_size_.i.i.i.i.i.i.i.i, align 8, !alias.scope !471, !noalias !474 + store ptr @_ZZN9grpc_core14ParsedMetadataI19grpc_metadata_batchE11EmptyVTableEvE6vtable, ptr %__first.addr.07.i.i.i, align 8, !alias.scope !474, !noalias !471 %parse_status.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i, i64 48 %parse_status3.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.07.i.i.i, i64 48 - %8 = load i64, ptr %parse_status3.i.i.i.i.i.i.i, align 8, !alias.scope !468, !noalias !465 - store i64 %8, ptr %parse_status.i.i.i.i.i.i.i, align 8, !alias.scope !465, !noalias !468 - store ptr null, ptr %parse_status3.i.i.i.i.i.i.i, align 8, !alias.scope !468, !noalias !465 + %8 = load i64, ptr %parse_status3.i.i.i.i.i.i.i, align 8, !alias.scope !474, !noalias !471 + store i64 %8, ptr %parse_status.i.i.i.i.i.i.i, align 8, !alias.scope !471, !noalias !474 + store ptr null, ptr %parse_status3.i.i.i.i.i.i.i, align 8, !alias.scope !474, !noalias !471 invoke void @_ZN9grpc_core15metadata_detail21DestroyTrivialMementoERKNS0_6BufferE(ptr noundef nonnull align 8 dereferenceable(32) %value_3.i.i.i.i.i.i.i.i) - to label %_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i unwind label %terminate.lpad.i.i.i.i.i.i.i.i, !noalias !465 + to label %_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i unwind label %terminate.lpad.i.i.i.i.i.i.i.i, !noalias !471 terminate.lpad.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i %9 = landingpad { ptr, i32 } @@ -9171,25 +9175,25 @@ _ZNSt6vectorIN9grpc_core10HPackTable7MementoESaIS2_EE11_S_relocateEPS2_S5_S5_RS3 for.body.i.i.i12: ; preds = %_ZNSt6vectorIN9grpc_core10HPackTable7MementoESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit, %_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i22 %__cur.08.i.i.i13 = phi ptr [ %incdec.ptr1.i.i.i24, %_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i22 ], [ %incdec.ptr, %_ZNSt6vectorIN9grpc_core10HPackTable7MementoESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit ] %__first.addr.07.i.i.i14 = phi ptr [ %incdec.ptr.i.i.i23, %_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i22 ], [ %__position.coerce, %_ZNSt6vectorIN9grpc_core10HPackTable7MementoESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit ] - tail call void @llvm.experimental.noalias.scope.decl(metadata !471) - tail call void @llvm.experimental.noalias.scope.decl(metadata !474) - %11 = load ptr, ptr %__first.addr.07.i.i.i14, align 8, !alias.scope !474, !noalias !471 - store ptr %11, ptr %__cur.08.i.i.i13, align 8, !alias.scope !471, !noalias !474 + tail call void @llvm.experimental.noalias.scope.decl(metadata !477) + tail call void @llvm.experimental.noalias.scope.decl(metadata !480) + %11 = load ptr, ptr %__first.addr.07.i.i.i14, align 8, !alias.scope !480, !noalias !477 + store ptr %11, ptr %__cur.08.i.i.i13, align 8, !alias.scope !477, !noalias !480 %value_.i.i.i.i.i.i.i.i15 = getelementptr inbounds i8, ptr %__cur.08.i.i.i13, i64 8 %value_3.i.i.i.i.i.i.i.i16 = getelementptr inbounds i8, ptr %__first.addr.07.i.i.i14, i64 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %value_.i.i.i.i.i.i.i.i15, ptr noundef nonnull align 8 dereferenceable(32) %value_3.i.i.i.i.i.i.i.i16, i64 32, i1 false), !alias.scope !476 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %value_.i.i.i.i.i.i.i.i15, ptr noundef nonnull align 8 dereferenceable(32) %value_3.i.i.i.i.i.i.i.i16, i64 32, i1 false), !alias.scope !482 %transport_size_.i.i.i.i.i.i.i.i17 = getelementptr inbounds i8, ptr %__cur.08.i.i.i13, i64 40 %transport_size_4.i.i.i.i.i.i.i.i18 = getelementptr inbounds i8, ptr %__first.addr.07.i.i.i14, i64 40 - %12 = load i32, ptr %transport_size_4.i.i.i.i.i.i.i.i18, align 8, !alias.scope !474, !noalias !471 - store i32 %12, ptr %transport_size_.i.i.i.i.i.i.i.i17, align 8, !alias.scope !471, !noalias !474 - store ptr @_ZZN9grpc_core14ParsedMetadataI19grpc_metadata_batchE11EmptyVTableEvE6vtable, ptr %__first.addr.07.i.i.i14, align 8, !alias.scope !474, !noalias !471 + %12 = load i32, ptr %transport_size_4.i.i.i.i.i.i.i.i18, align 8, !alias.scope !480, !noalias !477 + store i32 %12, ptr %transport_size_.i.i.i.i.i.i.i.i17, align 8, !alias.scope !477, !noalias !480 + store ptr @_ZZN9grpc_core14ParsedMetadataI19grpc_metadata_batchE11EmptyVTableEvE6vtable, ptr %__first.addr.07.i.i.i14, align 8, !alias.scope !480, !noalias !477 %parse_status.i.i.i.i.i.i.i19 = getelementptr inbounds i8, ptr %__cur.08.i.i.i13, i64 48 %parse_status3.i.i.i.i.i.i.i20 = getelementptr inbounds i8, ptr %__first.addr.07.i.i.i14, i64 48 - %13 = load i64, ptr %parse_status3.i.i.i.i.i.i.i20, align 8, !alias.scope !474, !noalias !471 - store i64 %13, ptr %parse_status.i.i.i.i.i.i.i19, align 8, !alias.scope !471, !noalias !474 - store ptr null, ptr %parse_status3.i.i.i.i.i.i.i20, align 8, !alias.scope !474, !noalias !471 + %13 = load i64, ptr %parse_status3.i.i.i.i.i.i.i20, align 8, !alias.scope !480, !noalias !477 + store i64 %13, ptr %parse_status.i.i.i.i.i.i.i19, align 8, !alias.scope !477, !noalias !480 + store ptr null, ptr %parse_status3.i.i.i.i.i.i.i20, align 8, !alias.scope !480, !noalias !477 invoke void @_ZN9grpc_core15metadata_detail21DestroyTrivialMementoERKNS0_6BufferE(ptr noundef nonnull align 8 dereferenceable(32) %value_3.i.i.i.i.i.i.i.i16) - to label %_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i22 unwind label %terminate.lpad.i.i.i.i.i.i.i.i21, !noalias !471 + to label %_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i22 unwind label %terminate.lpad.i.i.i.i.i.i.i.i21, !noalias !477 terminate.lpad.i.i.i.i.i.i.i.i21: ; preds = %for.body.i.i.i12 %14 = landingpad { ptr, i32 } @@ -9804,41 +9808,47 @@ attributes #27 = { nounwind willreturn memory(read) } !436 = distinct !{!436, !437, !"_ZN4absl12lts_202308026StrCatB5cxx11ERKNS0_8AlphaNumE: %agg.result"} !437 = distinct !{!437, !"_ZN4absl12lts_202308026StrCatB5cxx11ERKNS0_8AlphaNumE"} !438 = !{!439} -!439 = distinct !{!439, !440, !"_ZN9grpc_core5Slice17TakeUniquelyOwnedEv: %agg.result"} -!440 = distinct !{!440, !"_ZN9grpc_core5Slice17TakeUniquelyOwnedEv"} +!439 = distinct !{!439, !440, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedStringESt17basic_string_viewIcSt11char_traitsIcEE: %agg.result"} +!440 = distinct !{!440, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedStringESt17basic_string_viewIcSt11char_traitsIcEE"} !441 = !{!442, !439} -!442 = distinct !{!442, !443, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} -!443 = distinct !{!443, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} +!442 = distinct !{!442, !443, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedBufferEPKcm: %agg.result"} +!443 = distinct !{!443, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedBufferEPKcm"} !444 = !{!445} -!445 = distinct !{!445, !446, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} -!446 = distinct !{!446, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} -!447 = !{!448} -!448 = distinct !{!448, !449, !"_ZNK9grpc_core5Slice3RefEv: %agg.result"} -!449 = distinct !{!449, !"_ZNK9grpc_core5Slice3RefEv"} +!445 = distinct !{!445, !446, !"_ZN9grpc_core5Slice17TakeUniquelyOwnedEv: %agg.result"} +!446 = distinct !{!446, !"_ZN9grpc_core5Slice17TakeUniquelyOwnedEv"} +!447 = !{!448, !445} +!448 = distinct !{!448, !449, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} +!449 = distinct !{!449, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} !450 = !{!451} -!451 = distinct !{!451, !452, !"_ZZN9grpc_core14ParsedMetadataI19grpc_metadata_batchE14KeyValueVTableESt17basic_string_viewIcSt11char_traitsIcEEENKUlRKNS_15metadata_detail6BufferEE0_clB5cxx11ESA_: %agg.result"} -!452 = distinct !{!452, !"_ZZN9grpc_core14ParsedMetadataI19grpc_metadata_batchE14KeyValueVTableESt17basic_string_viewIcSt11char_traitsIcEEENKUlRKNS_15metadata_detail6BufferEE0_clB5cxx11ESA_"} +!451 = distinct !{!451, !452, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} +!452 = distinct !{!452, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} !453 = !{!454} !454 = distinct !{!454, !455, !"_ZNK9grpc_core5Slice3RefEv: %agg.result"} !455 = distinct !{!455, !"_ZNK9grpc_core5Slice3RefEv"} !456 = !{!457} -!457 = distinct !{!457, !458, !"_ZN9grpc_core5Slice17TakeUniquelyOwnedEv: %agg.result"} -!458 = distinct !{!458, !"_ZN9grpc_core5Slice17TakeUniquelyOwnedEv"} -!459 = !{!460, !457} -!460 = distinct !{!460, !461, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} -!461 = distinct !{!461, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} +!457 = distinct !{!457, !458, !"_ZZN9grpc_core14ParsedMetadataI19grpc_metadata_batchE14KeyValueVTableESt17basic_string_viewIcSt11char_traitsIcEEENKUlRKNS_15metadata_detail6BufferEE0_clB5cxx11ESA_: %agg.result"} +!458 = distinct !{!458, !"_ZZN9grpc_core14ParsedMetadataI19grpc_metadata_batchE14KeyValueVTableESt17basic_string_viewIcSt11char_traitsIcEEENKUlRKNS_15metadata_detail6BufferEE0_clB5cxx11ESA_"} +!459 = !{!460} +!460 = distinct !{!460, !461, !"_ZNK9grpc_core5Slice3RefEv: %agg.result"} +!461 = distinct !{!461, !"_ZNK9grpc_core5Slice3RefEv"} !462 = !{!463} -!463 = distinct !{!463, !464, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} -!464 = distinct !{!464, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} -!465 = !{!466} -!466 = distinct !{!466, !467, !"_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_: %__dest"} -!467 = distinct !{!467, !"_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_"} +!463 = distinct !{!463, !464, !"_ZN9grpc_core5Slice17TakeUniquelyOwnedEv: %agg.result"} +!464 = distinct !{!464, !"_ZN9grpc_core5Slice17TakeUniquelyOwnedEv"} +!465 = !{!466, !463} +!466 = distinct !{!466, !467, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} +!467 = distinct !{!467, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} !468 = !{!469} -!469 = distinct !{!469, !467, !"_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_: %__orig"} -!470 = !{!466, !469} +!469 = distinct !{!469, !470, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} +!470 = distinct !{!470, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} !471 = !{!472} !472 = distinct !{!472, !473, !"_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_: %__dest"} !473 = distinct !{!473, !"_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_"} !474 = !{!475} !475 = distinct !{!475, !473, !"_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_: %__orig"} !476 = !{!472, !475} +!477 = !{!478} +!478 = distinct !{!478, !479, !"_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_: %__dest"} +!479 = distinct !{!479, !"_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_"} +!480 = !{!481} +!481 = distinct !{!481, !479, !"_ZSt19__relocate_object_aIN9grpc_core10HPackTable7MementoES2_SaIS2_EEvPT_PT0_RT1_: %__orig"} +!482 = !{!478, !481} diff --git a/bench/grpc/optimized/metadata_batch.cc.ll b/bench/grpc/optimized/metadata_batch.cc.ll index cf68dba060c..126dd689389 100644 --- a/bench/grpc/optimized/metadata_batch.cc.ll +++ b/bench/grpc/optimized/metadata_batch.cc.ll @@ -180,15 +180,19 @@ define void @_ZN9grpc_core15metadata_detail10UnknownMap6AppendESt17basic_string_ entry: %ref.tmp.i1.i.i.i.i = alloca %struct.grpc_slice, align 8 %ref.tmp.i.i.i.i.i = alloca %struct.grpc_slice, align 8 + %ref.tmp.i.i = alloca %struct.grpc_slice, align 8 %ref.tmp = alloca %"class.grpc_core::Slice", align 8 %ref.tmp2 = alloca %"class.grpc_core::Slice", align 8 - call void @grpc_slice_from_copied_buffer(ptr nonnull sret(%struct.grpc_slice) align 8 %ref.tmp, ptr noundef %key.coerce1, i64 noundef %key.coerce0) - %0 = load ptr, ptr %value, align 8, !noalias !4 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i), !noalias !4 + call void @grpc_slice_from_copied_buffer(ptr nonnull sret(%struct.grpc_slice) align 8 %ref.tmp.i.i, ptr noundef %key.coerce1, i64 noundef %key.coerce0), !noalias !7 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i.i, i64 32, i1 false) + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i.i), !noalias !4 + %0 = load ptr, ptr %value, align 8, !noalias !10 %cmp.i.i = icmp ugt ptr %0, inttoptr (i64 1 to ptr) br i1 %cmp.i.i, label %if.then.i.i, label %invoke.cont if.then.i.i: ; preds = %entry - %1 = atomicrmw add ptr %0, i64 1 monotonic, align 8, !noalias !4 + %1 = atomicrmw add ptr %0, i64 1 monotonic, align 8, !noalias !10 br label %invoke.cont invoke.cont: ; preds = %if.then.i.i, %entry @@ -295,7 +299,7 @@ land.rhs.i.us.i.i.i.i: ; preds = %while.body.i.us.i.i while.body.i.us.i.i.i.i: ; preds = %land.rhs.i.us.i.i.i.i %5 = load ptr, ptr %__first.sroa.0.1.us.i.i.i.i, align 8 %cmp.not.i.us.i.i.i.i = icmp eq ptr %5, null - br i1 %cmp.not.i.us.i.i.i.i, label %_ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit.us.i.i.i.i, label %land.rhs.i.us.i.i.i.i, !llvm.loop !7 + br i1 %cmp.not.i.us.i.i.i.i, label %_ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit.us.i.i.i.i, label %land.rhs.i.us.i.i.i.i, !llvm.loop !13 _ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit.us.i.i.i.i: ; preds = %while.body.i.us.i.i.i.i, %land.rhs.i.us.i.i.i.i %__first.sroa.0.2.us.i.i.i.i = phi ptr [ null, %while.body.i.us.i.i.i.i ], [ %__first.sroa.0.1.us.i.i.i.i, %land.rhs.i.us.i.i.i.i ] @@ -303,7 +307,7 @@ _ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.e %cmp.i.i.us.i.i.i.i = icmp ne ptr %__first.sroa.0.2.us.i.i.i.i, null %cmp4.i.i.us.i.i.i.i = icmp ne i64 %__first.sroa.6.2.us.i.i.i.i, 0 %.not.i.us.i.i.i.i = or i1 %cmp.i.i.us.i.i.i.i, %cmp4.i.i.us.i.i.i.i - br i1 %.not.i.us.i.i.i.i, label %land.rhs.us.i.i.i.i, label %"_ZSt9remove_ifIN9grpc_core13ChunkedVectorISt4pairINS0_5SliceES3_ELm10EE15ForwardIteratorEZNS0_15metadata_detail10UnknownMap6RemoveESt17basic_string_viewIcSt11char_traitsIcEEE3$_0ET_SE_SE_T0_.exit", !llvm.loop !9 + br i1 %.not.i.us.i.i.i.i, label %land.rhs.us.i.i.i.i, label %"_ZSt9remove_ifIN9grpc_core13ChunkedVectorISt4pairINS0_5SliceES3_ELm10EE15ForwardIteratorEZNS0_15metadata_detail10UnknownMap6RemoveESt17basic_string_viewIcSt11char_traitsIcEEE3$_0ET_SE_SE_T0_.exit", !llvm.loop !15 land.rhs.i.i.i.i: ; preds = %land.rhs.lr.ph.i.i.i.i, %_ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit.i.i.i.i %__first.sroa.6.09.i.i.i.i = phi i64 [ %__first.sroa.6.2.i.i.i.i, %_ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit.i.i.i.i ], [ 0, %land.rhs.lr.ph.i.i.i.i ] @@ -343,7 +347,7 @@ land.rhs.i.i.i.i.i: ; preds = %while.body.i.i.i.i. while.body.i.i.i.i.i: ; preds = %land.rhs.i.i.i.i.i %10 = load ptr, ptr %__first.sroa.0.1.i.i.i.i, align 8 %cmp.not.i.i.i.i.i = icmp eq ptr %10, null - br i1 %cmp.not.i.i.i.i.i, label %_ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit.i.i.i.i, label %land.rhs.i.i.i.i.i, !llvm.loop !7 + br i1 %cmp.not.i.i.i.i.i, label %_ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit.i.i.i.i, label %land.rhs.i.i.i.i.i, !llvm.loop !13 _ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit.i.i.i.i: ; preds = %while.body.i.i.i.i.i, %land.rhs.i.i.i.i.i %__first.sroa.0.2.i.i.i.i = phi ptr [ null, %while.body.i.i.i.i.i ], [ %__first.sroa.0.1.i.i.i.i, %land.rhs.i.i.i.i.i ] @@ -351,7 +355,7 @@ _ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.e %cmp.i.i.i.i.i.i = icmp ne ptr %__first.sroa.0.2.i.i.i.i, null %cmp4.i.i.i.i.i.i = icmp ne i64 %__first.sroa.6.2.i.i.i.i, 0 %.not.i.i.i.i.i = or i1 %cmp.i.i.i.i.i.i, %cmp4.i.i.i.i.i.i - br i1 %.not.i.i.i.i.i, label %land.rhs.i.i.i.i, label %"_ZSt9remove_ifIN9grpc_core13ChunkedVectorISt4pairINS0_5SliceES3_ELm10EE15ForwardIteratorEZNS0_15metadata_detail10UnknownMap6RemoveESt17basic_string_viewIcSt11char_traitsIcEEE3$_0ET_SE_SE_T0_.exit", !llvm.loop !9 + br i1 %.not.i.i.i.i.i, label %land.rhs.i.i.i.i, label %"_ZSt9remove_ifIN9grpc_core13ChunkedVectorISt4pairINS0_5SliceES3_ELm10EE15ForwardIteratorEZNS0_15metadata_detail10UnknownMap6RemoveESt17basic_string_viewIcSt11char_traitsIcEEE3$_0ET_SE_SE_T0_.exit", !llvm.loop !15 "_ZSt9__find_ifIN9grpc_core13ChunkedVectorISt4pairINS0_5SliceES3_ELm10EE15ForwardIteratorEN9__gnu_cxx5__ops10_Iter_predIZNS0_15metadata_detail10UnknownMap6RemoveESt17basic_string_viewIcSt11char_traitsIcEEE3$_0EEET_SI_SI_T0_.exit.i.i.thread": ; preds = %land.rhs.i.i.i.i.i.i.i, %land.rhs.us.i.i.i.i %__first.sroa.0.0.lcssa.i.i.i.i.ph = phi ptr [ %__first.sroa.0.08.us.i.i.i.i, %land.rhs.us.i.i.i.i ], [ %__first.sroa.0.08.i.i.i.i, %land.rhs.i.i.i.i.i.i.i ] @@ -370,7 +374,7 @@ land.rhs.i.i.i: ; preds = %"_ZSt9__find_ifIN9g while.body.i.i.i: ; preds = %land.rhs.i.i.i %12 = load ptr, ptr %__first.sroa.0.1.i.i, align 8 %cmp.not.i.i.i = icmp eq ptr %12, null - br i1 %cmp.not.i.i.i, label %"_ZSt9remove_ifIN9grpc_core13ChunkedVectorISt4pairINS0_5SliceES3_ELm10EE15ForwardIteratorEZNS0_15metadata_detail10UnknownMap6RemoveESt17basic_string_viewIcSt11char_traitsIcEEE3$_0ET_SE_SE_T0_.exit", label %land.rhs.i.i.i, !llvm.loop !7 + br i1 %cmp.not.i.i.i, label %"_ZSt9remove_ifIN9grpc_core13ChunkedVectorISt4pairINS0_5SliceES3_ELm10EE15ForwardIteratorEZNS0_15metadata_detail10UnknownMap6RemoveESt17basic_string_viewIcSt11char_traitsIcEEE3$_0ET_SE_SE_T0_.exit", label %land.rhs.i.i.i, !llvm.loop !13 for.body.i.i: ; preds = %land.rhs.i.i.i, %_ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit32.i.i %retval.sroa.6.159.i.i = phi i64 [ %retval.sroa.6.271.i.i, %_ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit32.i.i ], [ %__first.sroa.6.0.lcssa.i.i.i.i.ph, %land.rhs.i.i.i ] @@ -429,7 +433,7 @@ land.rhs.i15.i.i: ; preds = %while.body.i19.i.i, while.body.i19.i.i: ; preds = %land.rhs.i15.i.i %17 = load ptr, ptr %retval.sroa.0.3.i.i, align 8 %cmp.not.i20.i.i = icmp eq ptr %17, null - br i1 %cmp.not.i20.i.i, label %for.inc.i.i, label %land.rhs.i15.i.i, !llvm.loop !7 + br i1 %cmp.not.i20.i.i, label %for.inc.i.i, label %land.rhs.i15.i.i, !llvm.loop !13 for.inc.thread.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i, %land.rhs.i.i.i5.i.i %inc.i2366.i.i = add i64 %__first.sroa.13.057.i.i, 1 @@ -459,7 +463,7 @@ land.rhs.i26.i.i: ; preds = %while.body.i30.i.i, while.body.i30.i.i: ; preds = %land.rhs.i26.i.i %19 = load ptr, ptr %__first.sroa.0.3.i.i, align 8 %cmp.not.i31.i.i = icmp eq ptr %19, null - br i1 %cmp.not.i31.i.i, label %_ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit32.i.i, label %land.rhs.i26.i.i, !llvm.loop !7 + br i1 %cmp.not.i31.i.i, label %_ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit32.i.i, label %land.rhs.i26.i.i, !llvm.loop !13 _ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit32.i.i: ; preds = %while.body.i30.i.i, %land.rhs.i26.i.i, %for.inc.i.i %retval.sroa.6.271.i.i = phi i64 [ %retval.sroa.6.2.i.i, %for.inc.i.i ], [ %retval.sroa.6.270.i.i, %land.rhs.i26.i.i ], [ %retval.sroa.6.270.i.i, %while.body.i30.i.i ] @@ -469,7 +473,7 @@ _ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.e %cmp.i.i.i.i = icmp ne ptr %__first.sroa.0.4.i.i, null %cmp4.i.i.i.i = icmp ne i64 %__first.sroa.13.4.i.i, 0 %.not.i.i.i = or i1 %cmp.i.i.i.i, %cmp4.i.i.i.i - br i1 %.not.i.i.i, label %for.body.i.i, label %"_ZSt9remove_ifIN9grpc_core13ChunkedVectorISt4pairINS0_5SliceES3_ELm10EE15ForwardIteratorEZNS0_15metadata_detail10UnknownMap6RemoveESt17basic_string_viewIcSt11char_traitsIcEEE3$_0ET_SE_SE_T0_.exit", !llvm.loop !10 + br i1 %.not.i.i.i, label %for.body.i.i, label %"_ZSt9remove_ifIN9grpc_core13ChunkedVectorISt4pairINS0_5SliceES3_ELm10EE15ForwardIteratorEZNS0_15metadata_detail10UnknownMap6RemoveESt17basic_string_viewIcSt11char_traitsIcEEE3$_0ET_SE_SE_T0_.exit", !llvm.loop !16 "_ZSt9remove_ifIN9grpc_core13ChunkedVectorISt4pairINS0_5SliceES3_ELm10EE15ForwardIteratorEZNS0_15metadata_detail10UnknownMap6RemoveESt17basic_string_viewIcSt11char_traitsIcEEE3$_0ET_SE_SE_T0_.exit": ; preds = %_ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit.i.i.i.i, %_ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit.us.i.i.i.i, %while.body.i.i.i, %_ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit32.i.i, %land.lhs.true.i, %entry %retval.sroa.0.0.i.i = phi ptr [ null, %entry ], [ null, %land.lhs.true.i ], [ %retval.sroa.0.269.i.i, %_ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit32.i.i ], [ %__first.sroa.0.0.lcssa.i.i.i.i.ph, %while.body.i.i.i ], [ null, %_ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit.us.i.i.i.i ], [ null, %_ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE15ForwardIteratorppEv.exit.i.i.i.i ] @@ -549,7 +553,7 @@ _ZN9grpc_core17ManualConstructorISt4pairINS_5SliceES2_EE7DestroyEv.exit: ; preds %inc = add nuw i64 %i.035, 1 %12 = load i64, ptr %count, align 8 %cmp = icmp ult i64 %inc, %12 - br i1 %cmp, label %for.body, label %for.end, !llvm.loop !11 + br i1 %cmp, label %for.body, label %for.end, !llvm.loop !17 for.end: ; preds = %_ZN9grpc_core17ManualConstructorISt4pairINS_5SliceES2_EE7DestroyEv.exit, %for.cond.preheader store i64 %it.coerce1, ptr %count, align 8 @@ -623,13 +627,13 @@ _ZN9grpc_core17ManualConstructorISt4pairINS_5SliceES2_EE7DestroyEv.exit26: ; pre %inc14 = add nuw i64 %i6.037, 1 %26 = load i64, ptr %count8, align 8 %cmp9 = icmp ult i64 %inc14, %26 - br i1 %cmp9, label %for.body10, label %for.end15, !llvm.loop !12 + br i1 %cmp9, label %for.body10, label %for.end15, !llvm.loop !18 for.end15: ; preds = %_ZN9grpc_core17ManualConstructorISt4pairINS_5SliceES2_EE7DestroyEv.exit26, %for.cond7.preheader store i64 0, ptr %count8, align 8 %27 = load ptr, ptr %14, align 8 %cmp5.not = icmp eq ptr %27, null - br i1 %cmp5.not, label %while.end, label %for.cond7.preheader, !llvm.loop !13 + br i1 %cmp5.not, label %while.end, label %for.cond7.preheader, !llvm.loop !19 while.end: ; preds = %for.end15, %for.end, %entry ret void @@ -761,7 +765,7 @@ land.rhs.i34: ; preds = %for.inc, %while.bod while.body.i: ; preds = %land.rhs.i34 %15 = load ptr, ptr %__begin2.sroa.0.1, align 8 %cmp.not.i36 = icmp eq ptr %15, null - br i1 %cmp.not.i36, label %_ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE20ConstForwardIteratorppEv.exit, label %land.rhs.i34, !llvm.loop !14 + br i1 %cmp.not.i36, label %_ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE20ConstForwardIteratorppEv.exit, label %land.rhs.i34, !llvm.loop !20 _ZN9grpc_core13ChunkedVectorISt4pairINS_5SliceES2_ELm10EE20ConstForwardIteratorppEv.exit: ; preds = %land.rhs.i34, %while.body.i %__begin2.sroa.0.2 = phi ptr [ null, %while.body.i ], [ %__begin2.sroa.0.1, %land.rhs.i34 ] @@ -1038,6 +1042,7 @@ entry: ; Function Attrs: mustprogress uwtable define noundef zeroext range(i8 0, 3) i8 @_ZN9grpc_core18HttpSchemeMetadata5ParseESt17basic_string_viewIcSt11char_traitsIcEEN4absl12lts_2023080211FunctionRefIFvS4_RKNS_5SliceEEEE(i64 %value.coerce0, ptr %value.coerce1, ptr %on_error.coerce0, ptr nocapture readonly %on_error.coerce1) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { entry: + %ref.tmp.i.i = alloca %struct.grpc_slice, align 8 %ref.tmp = alloca %"class.grpc_core::Slice", align 8 switch i64 %value.coerce0, label %if.end6 [ i64 4, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i @@ -1055,7 +1060,10 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i6: ; preds = %entry br i1 %cmp.i.i8, label %return, label %if.end6 if.end6: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i, %entry, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i6 - call void @grpc_slice_from_copied_buffer(ptr nonnull sret(%struct.grpc_slice) align 8 %ref.tmp, ptr noundef %value.coerce1, i64 noundef %value.coerce0) + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i), !noalias !21 + call void @grpc_slice_from_copied_buffer(ptr nonnull sret(%struct.grpc_slice) align 8 %ref.tmp.i.i, ptr noundef %value.coerce1, i64 noundef %value.coerce0), !noalias !24 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i.i, i64 32, i1 false) + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i.i), !noalias !21 invoke void %on_error.coerce1(ptr %on_error.coerce0, i64 13, ptr nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) to label %invoke.cont unwind label %lpad @@ -1525,9 +1533,9 @@ define void @_ZN9grpc_core20GrpcRegisteredMethod12DisplayValueB5cxx11EPv(ptr noa entry: %ref.tmp.i = alloca [1 x %"class.absl::lts_20230802::str_format_internal::FormatArgImpl"], align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp.i) - store ptr %x, ptr %ref.tmp.i, align 8, !noalias !15 + store ptr %x, ptr %ref.tmp.i, align 8, !noalias !27 %dispatcher_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - store ptr @_ZN4absl12lts_2023080219str_format_internal13FormatArgImpl8DispatchINS1_7VoidPtrEEEbNS2_4DataENS1_24FormatConversionSpecImplEPv, ptr %dispatcher_.i.i.i, align 8, !noalias !15 + store ptr @_ZN4absl12lts_2023080219str_format_internal13FormatArgImpl8DispatchINS1_7VoidPtrEEEbNS2_4DataENS1_24FormatConversionSpecImplEPv, ptr %dispatcher_.i.i.i, align 8, !noalias !27 call void @_ZN4absl12lts_2023080219str_format_internal10FormatPackB5cxx11ENS1_21UntypedFormatSpecImplENS0_4SpanIKNS1_13FormatArgImplEEE(ptr sret(%"class.std::__cxx11::basic_string") align 8 %agg.result, ptr nonnull @.str.25, i64 2, ptr nonnull %ref.tmp.i, i64 1) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp.i) ret void @@ -1909,16 +1917,28 @@ attributes #22 = { noreturn } !2 = !{i32 7, !"uwtable", i32 2} !3 = !{i32 7, !"frame-pointer", i32 2} !4 = !{!5} -!5 = distinct !{!5, !6, !"_ZNK9grpc_core5Slice3RefEv: %agg.result"} -!6 = distinct !{!6, !"_ZNK9grpc_core5Slice3RefEv"} -!7 = distinct !{!7, !8} -!8 = !{!"llvm.loop.mustprogress"} -!9 = distinct !{!9, !8} -!10 = distinct !{!10, !8} -!11 = distinct !{!11, !8} -!12 = distinct !{!12, !8} -!13 = distinct !{!13, !8} -!14 = distinct !{!14, !8} -!15 = !{!16} -!16 = distinct !{!16, !17, !"_ZN4absl12lts_202308029StrFormatIJPvEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_19str_format_internal18FormatSpecTemplateIJXspclsr19str_format_internalE14ArgumentToConvIT_EEEEEEDpRKSB_: %agg.result"} -!17 = distinct !{!17, !"_ZN4absl12lts_202308029StrFormatIJPvEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_19str_format_internal18FormatSpecTemplateIJXspclsr19str_format_internalE14ArgumentToConvIT_EEEEEEDpRKSB_"} +!5 = distinct !{!5, !6, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedStringESt17basic_string_viewIcSt11char_traitsIcEE: %agg.result"} +!6 = distinct !{!6, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedStringESt17basic_string_viewIcSt11char_traitsIcEE"} +!7 = !{!8, !5} +!8 = distinct !{!8, !9, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedBufferEPKcm: %agg.result"} +!9 = distinct !{!9, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedBufferEPKcm"} +!10 = !{!11} +!11 = distinct !{!11, !12, !"_ZNK9grpc_core5Slice3RefEv: %agg.result"} +!12 = distinct !{!12, !"_ZNK9grpc_core5Slice3RefEv"} +!13 = distinct !{!13, !14} +!14 = !{!"llvm.loop.mustprogress"} +!15 = distinct !{!15, !14} +!16 = distinct !{!16, !14} +!17 = distinct !{!17, !14} +!18 = distinct !{!18, !14} +!19 = distinct !{!19, !14} +!20 = distinct !{!20, !14} +!21 = !{!22} +!22 = distinct !{!22, !23, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedBufferISt17basic_string_viewIcSt11char_traitsIcEEEES2_RKT_: %agg.result"} +!23 = distinct !{!23, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedBufferISt17basic_string_viewIcSt11char_traitsIcEEEES2_RKT_"} +!24 = !{!25, !22} +!25 = distinct !{!25, !26, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedBufferEPKcm: %agg.result"} +!26 = distinct !{!26, !"_ZN9grpc_core12slice_detail16CopyConstructorsINS_5SliceEE16FromCopiedBufferEPKcm"} +!27 = !{!28} +!28 = distinct !{!28, !29, !"_ZN4absl12lts_202308029StrFormatIJPvEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_19str_format_internal18FormatSpecTemplateIJXspclsr19str_format_internalE14ArgumentToConvIT_EEEEEEDpRKSB_: %agg.result"} +!29 = distinct !{!29, !"_ZN4absl12lts_202308029StrFormatIJPvEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_19str_format_internal18FormatSpecTemplateIJXspclsr19str_format_internalE14ArgumentToConvIT_EEEEEEDpRKSB_"} diff --git a/bench/grpc/optimized/percent_encoding.cc.ll b/bench/grpc/optimized/percent_encoding.cc.ll index 4d7bf69cfda..b2b95f5b654 100644 --- a/bench/grpc/optimized/percent_encoding.cc.ll +++ b/bench/grpc/optimized/percent_encoding.cc.ll @@ -26,6 +26,7 @@ $__clang_call_terminate = comdat any define void @_ZN9grpc_core18PercentEncodeSliceENS_5SliceENS_19PercentEncodingTypeE(ptr noalias nocapture writeonly sret(%"class.grpc_core::Slice") align 8 %agg.result, ptr noundef %slice, i32 noundef %type) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 { entry: %ref.tmp.i48 = alloca %struct.grpc_slice, align 8 + %ref.tmp.i23 = alloca %struct.grpc_slice, align 8 %ref.tmp.i = alloca %struct.grpc_slice, align 8 %out = alloca %"class.grpc_core::MutableSlice", align 8 switch i32 %type, label %do.body.i [ @@ -88,7 +89,10 @@ if.then: ; preds = %_ZN9grpc_core12_GLO br label %return invoke.cont15: ; preds = %for.end - call void @grpc_slice_malloc(ptr nonnull sret(%struct.grpc_slice) align 8 %out, i64 noundef %add) + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i23) + call void @grpc_slice_malloc(ptr nonnull sret(%struct.grpc_slice) align 8 %ref.tmp.i23, i64 noundef %add), !noalias !7 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %out, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i23, i64 32, i1 false) + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i23) %5 = load ptr, ptr %out, align 8 %tobool.not.i.i = icmp eq ptr %5, null %bytes.i.i = getelementptr inbounds i8, ptr %out, i64 16 @@ -264,7 +268,7 @@ for.body: ; preds = %entry, %for.cond if.then3: ; preds = %for.cond, %entry call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i, ptr noundef nonnull align 8 dereferenceable(32) %slice_in, i64 32, i1 false) - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %slice_in, i8 0, i64 32, i1 false), !noalias !7 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %slice_in, i8 0, i64 32, i1 false), !noalias !10 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i, i64 32, i1 false) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i) br label %return @@ -282,17 +286,17 @@ if.then.i: ; preds = %if.end4 br label %invoke.cont6 land.lhs.true.i: ; preds = %if.end4 - %4 = load atomic i64, ptr %0 monotonic, align 8, !noalias !10 + %4 = load atomic i64, ptr %0 monotonic, align 8, !noalias !13 %cmp.i.i = icmp eq i64 %4, 1 br i1 %cmp.i.i, label %if.then10.i, label %if.end11.i if.then10.i: ; preds = %land.lhs.true.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %out, ptr noundef nonnull align 8 dereferenceable(32) %slice_in, i64 32, i1 false) - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %slice_in, i8 0, i64 32, i1 false), !noalias !13 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %slice_in, i8 0, i64 32, i1 false), !noalias !16 br label %invoke.cont6 if.end11.i: ; preds = %land.lhs.true.i, %if.end4 - call void @grpc_slice_copy(ptr nonnull sret(%struct.grpc_slice) align 8 %ref.tmp12.i, ptr noundef nonnull byval(%struct.grpc_slice) align 8 %slice_in), !noalias !10 + call void @grpc_slice_copy(ptr nonnull sret(%struct.grpc_slice) align 8 %ref.tmp12.i, ptr noundef nonnull byval(%struct.grpc_slice) align 8 %slice_in), !noalias !13 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %out, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp12.i, i64 32, i1 false) br label %invoke.cont6 @@ -455,7 +459,7 @@ if.end38: ; preds = %if.then19, %invoke. %p.1 = phi ptr [ %add.ptr33, %invoke.cont28 ], [ %add.ptr, %if.then19 ], [ %add.ptr, %if.else35 ] %q.1 = getelementptr inbounds i8, ptr %q.089, i64 1 %cmp10.not = icmp eq ptr %p.1, %add.ptr.i31 - br i1 %cmp10.not, label %invoke.cont39.loopexit, label %while.body, !llvm.loop !16 + br i1 %cmp10.not, label %invoke.cont39.loopexit, label %while.body, !llvm.loop !19 invoke.cont39.loopexit: ; preds = %if.end38 %.pre = load ptr, ptr %out, align 8 @@ -473,8 +477,8 @@ invoke.cont39: ; preds = %invoke.cont39.loope %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i62) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %agg.tmp.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp.i, ptr noundef nonnull align 8 dereferenceable(32) %out, i64 32, i1 false), !noalias !18 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %out, i8 0, i64 32, i1 false), !noalias !21 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp.i, ptr noundef nonnull align 8 dereferenceable(32) %out, i64 32, i1 false), !noalias !21 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %out, i8 0, i64 32, i1 false), !noalias !24 invoke void @grpc_slice_sub_no_ref(ptr nonnull sret(%struct.grpc_slice) align 8 %ref.tmp.i62, ptr noundef nonnull byval(%struct.grpc_slice) align 8 %agg.tmp.i, i64 noundef 0, i64 noundef %sub.ptr.sub) to label %invoke.cont43 unwind label %lpad @@ -484,7 +488,7 @@ invoke.cont43: ; preds = %invoke.cont39 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %agg.tmp.i) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i65) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i65, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.sroa.0, i64 32, i1 false) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.sroa.0, i8 0, i64 32, i1 false), !noalias !24 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.sroa.0, i8 0, i64 32, i1 false), !noalias !27 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i65, i64 32, i1 false) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i65) %23 = load ptr, ptr %out, align 8 @@ -569,22 +573,25 @@ attributes #11 = { noreturn nounwind } !5 = distinct !{!5, !6, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} !6 = distinct !{!6, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} !7 = !{!8} -!8 = distinct !{!8, !9, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} -!9 = distinct !{!9, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} +!8 = distinct !{!8, !9, !"_ZN9grpc_core12MutableSlice19CreateUninitializedEm: %agg.result"} +!9 = distinct !{!9, !"_ZN9grpc_core12MutableSlice19CreateUninitializedEm"} !10 = !{!11} -!11 = distinct !{!11, !12, !"_ZN9grpc_core5Slice11TakeMutableEv: %agg.result"} -!12 = distinct !{!12, !"_ZN9grpc_core5Slice11TakeMutableEv"} -!13 = !{!14, !11} -!14 = distinct !{!14, !15, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} -!15 = distinct !{!15, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} -!16 = distinct !{!16, !17} -!17 = !{!"llvm.loop.mustprogress"} -!18 = !{!19} -!19 = distinct !{!19, !20, !"_ZN9grpc_core12MutableSlice12TakeSubSliceEmm: %agg.result"} -!20 = distinct !{!20, !"_ZN9grpc_core12MutableSlice12TakeSubSliceEmm"} -!21 = !{!22, !19} -!22 = distinct !{!22, !23, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} -!23 = distinct !{!23, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} -!24 = !{!25} +!11 = distinct !{!11, !12, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} +!12 = distinct !{!12, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} +!13 = !{!14} +!14 = distinct !{!14, !15, !"_ZN9grpc_core5Slice11TakeMutableEv: %agg.result"} +!15 = distinct !{!15, !"_ZN9grpc_core5Slice11TakeMutableEv"} +!16 = !{!17, !14} +!17 = distinct !{!17, !18, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} +!18 = distinct !{!18, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} +!19 = distinct !{!19, !20} +!20 = !{!"llvm.loop.mustprogress"} +!21 = !{!22} +!22 = distinct !{!22, !23, !"_ZN9grpc_core12MutableSlice12TakeSubSliceEmm: %agg.result"} +!23 = distinct !{!23, !"_ZN9grpc_core12MutableSlice12TakeSubSliceEmm"} +!24 = !{!25, !22} !25 = distinct !{!25, !26, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} !26 = distinct !{!26, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} +!27 = !{!28} +!28 = distinct !{!28, !29, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv: %agg.result"} +!29 = distinct !{!29, !"_ZN9grpc_core12slice_detail9BaseSlice10TakeCSliceEv"} diff --git a/bench/hyperscan/optimized/slot_manager.cpp.ll b/bench/hyperscan/optimized/slot_manager.cpp.ll index 3ebcf7401df..56f3c3f37bb 100644 --- a/bench/hyperscan/optimized/slot_manager.cpp.ll +++ b/bench/hyperscan/optimized/slot_manager.cpp.ll @@ -350,9 +350,13 @@ entry: ; Function Attrs: mustprogress uwtable define hidden noundef ptr @_ZN3ue29SlotCache4findERKNS_8NGHolderERKNS_9CharReachEjb(ptr noundef nonnull align 8 dereferenceable(136) %this, ptr noundef nonnull align 8 dereferenceable(136) %prefix, ptr nocapture noundef nonnull readonly align 8 dereferenceable(32) %escapes, i32 noundef %parent_slot, i1 noundef zeroext %is_reset) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 { entry: + %ref.tmp.i = alloca %"class.std::unique_ptr.2", align 8 %entry2 = alloca %"struct.ue2::SlotCacheEntry", align 8 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp.i) %frombool.i = zext i1 %is_reset to i8 - call void @_ZN3ue211cloneHolderERKNS_8NGHolderE(ptr nonnull sret(%"class.std::unique_ptr.2") align 8 %entry2, ptr noundef nonnull align 8 dereferenceable(136) %prefix) + call void @_ZN3ue211cloneHolderERKNS_8NGHolderE(ptr nonnull sret(%"class.std::unique_ptr.2") align 8 %ref.tmp.i, ptr noundef nonnull align 8 dereferenceable(136) %prefix) + %0 = load ptr, ptr %ref.tmp.i, align 8 + store ptr %0, ptr %entry2, align 8 %escapes.i = getelementptr inbounds i8, ptr %entry2, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %escapes.i, ptr noundef nonnull readonly align 8 dereferenceable(32) %escapes, i64 32, i1 false) %parent_slot.i = getelementptr inbounds i8, ptr %entry2, i64 40 @@ -361,36 +365,37 @@ entry: store i8 %frombool.i, ptr %is_reset.i, align 4 %slot.i = getelementptr inbounds i8, ptr %entry2, i64 48 store i32 0, ptr %slot.i, align 8 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp.i) %call.i1 = invoke ptr @_ZNSt10_HashtableIN3ue214SlotCacheEntryES1_SaIS1_ENSt8__detail9_IdentityENS0_14SlotEntryEqualENS0_15SlotEntryHasherENS3_18_Mod_range_hashingENS3_20_Default_ranged_hashENS3_20_Prime_rehash_policyENS3_17_Hashtable_traitsILb1ELb1ELb1EEEE4findERKS1_(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 8 dereferenceable(52) %entry2) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - %0 = load ptr, ptr %entry2, align 8 - %cmp.not.i.i2 = icmp eq ptr %0, null + %1 = load ptr, ptr %entry2, align 8 + %cmp.not.i.i2 = icmp eq ptr %1, null br i1 %cmp.not.i.i2, label %_ZN3ue214SlotCacheEntryD2Ev.exit6, label %_ZNKSt14default_deleteIKN3ue28NGHolderEEclEPS2_.exit.i.i3 lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } + %2 = landingpad { ptr, i32 } cleanup - %2 = load ptr, ptr %entry2, align 8 - %cmp.not.i.i = icmp eq ptr %2, null + %3 = load ptr, ptr %entry2, align 8 + %cmp.not.i.i = icmp eq ptr %3, null br i1 %cmp.not.i.i, label %_ZN3ue214SlotCacheEntryD2Ev.exit, label %_ZNKSt14default_deleteIKN3ue28NGHolderEEclEPS2_.exit.i.i _ZNKSt14default_deleteIKN3ue28NGHolderEEclEPS2_.exit.i.i: ; preds = %lpad - %vtable.i.i.i = load ptr, ptr %2, align 8 + %vtable.i.i.i = load ptr, ptr %3, align 8 %vfn.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i, i64 8 - %3 = load ptr, ptr %vfn.i.i.i, align 8 - call void %3(ptr noundef nonnull align 8 dereferenceable(136) %2) #22 + %4 = load ptr, ptr %vfn.i.i.i, align 8 + call void %4(ptr noundef nonnull align 8 dereferenceable(136) %3) #22 br label %_ZN3ue214SlotCacheEntryD2Ev.exit _ZN3ue214SlotCacheEntryD2Ev.exit: ; preds = %lpad, %_ZNKSt14default_deleteIKN3ue28NGHolderEEclEPS2_.exit.i.i - resume { ptr, i32 } %1 + resume { ptr, i32 } %2 _ZNKSt14default_deleteIKN3ue28NGHolderEEclEPS2_.exit.i.i3: ; preds = %invoke.cont - %vtable.i.i.i4 = load ptr, ptr %0, align 8 + %vtable.i.i.i4 = load ptr, ptr %1, align 8 %vfn.i.i.i5 = getelementptr inbounds i8, ptr %vtable.i.i.i4, i64 8 - %4 = load ptr, ptr %vfn.i.i.i5, align 8 - call void %4(ptr noundef nonnull align 8 dereferenceable(136) %0) #22 + %5 = load ptr, ptr %vfn.i.i.i5, align 8 + call void %5(ptr noundef nonnull align 8 dereferenceable(136) %1) #22 br label %_ZN3ue214SlotCacheEntryD2Ev.exit6 _ZN3ue214SlotCacheEntryD2Ev.exit6: ; preds = %invoke.cont, %_ZNKSt14default_deleteIKN3ue28NGHolderEEclEPS2_.exit.i.i3 @@ -575,12 +580,16 @@ entry: %parent_slot.addr.i = alloca i32, align 4 %is_reset.addr.i = alloca i8, align 1 %slot.addr.i = alloca i32, align 4 + %ref.tmp.i.i = alloca %"class.std::unique_ptr.2", align 8 %entry2.i = alloca %"struct.ue2::SlotCacheEntry", align 8 %cache = getelementptr inbounds i8, ptr %this, i64 8 %0 = load ptr, ptr %cache, align 8 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %entry2.i) + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp.i.i) %frombool.i.i = zext i1 %is_reset to i8 - call void @_ZN3ue211cloneHolderERKNS_8NGHolderE(ptr nonnull sret(%"class.std::unique_ptr.2") align 8 %entry2.i, ptr noundef nonnull align 8 dereferenceable(136) %prefix) + call void @_ZN3ue211cloneHolderERKNS_8NGHolderE(ptr nonnull sret(%"class.std::unique_ptr.2") align 8 %ref.tmp.i.i, ptr noundef nonnull align 8 dereferenceable(136) %prefix) + %1 = load ptr, ptr %ref.tmp.i.i, align 8 + store ptr %1, ptr %entry2.i, align 8 %escapes.i.i = getelementptr inbounds i8, ptr %entry2.i, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %escapes.i.i, ptr noundef nonnull readonly align 8 dereferenceable(32) %escapes, i64 32, i1 false) %parent_slot.i.i = getelementptr inbounds i8, ptr %entry2.i, i64 40 @@ -589,36 +598,37 @@ entry: store i8 %frombool.i.i, ptr %is_reset.i.i, align 4 %slot.i.i = getelementptr inbounds i8, ptr %entry2.i, i64 48 store i32 0, ptr %slot.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp.i.i) %call.i1.i = invoke ptr @_ZNSt10_HashtableIN3ue214SlotCacheEntryES1_SaIS1_ENSt8__detail9_IdentityENS0_14SlotEntryEqualENS0_15SlotEntryHasherENS3_18_Mod_range_hashingENS3_20_Default_ranged_hashENS3_20_Prime_rehash_policyENS3_17_Hashtable_traitsILb1ELb1ELb1EEEE4findERKS1_(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(52) %entry2.i) to label %invoke.cont.i unwind label %lpad.i invoke.cont.i: ; preds = %entry - %1 = load ptr, ptr %entry2.i, align 8 - %cmp.not.i.i2.i = icmp eq ptr %1, null + %2 = load ptr, ptr %entry2.i, align 8 + %cmp.not.i.i2.i = icmp eq ptr %2, null br i1 %cmp.not.i.i2.i, label %_ZN3ue29SlotCache4findERKNS_8NGHolderERKNS_9CharReachEjb.exit, label %_ZNKSt14default_deleteIKN3ue28NGHolderEEclEPS2_.exit.i.i3.i lpad.i: ; preds = %entry - %2 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } cleanup - %3 = load ptr, ptr %entry2.i, align 8 - %cmp.not.i.i.i = icmp eq ptr %3, null + %4 = load ptr, ptr %entry2.i, align 8 + %cmp.not.i.i.i = icmp eq ptr %4, null br i1 %cmp.not.i.i.i, label %_ZN3ue214SlotCacheEntryD2Ev.exit.i, label %_ZNKSt14default_deleteIKN3ue28NGHolderEEclEPS2_.exit.i.i.i _ZNKSt14default_deleteIKN3ue28NGHolderEEclEPS2_.exit.i.i.i: ; preds = %lpad.i - %vtable.i.i.i.i = load ptr, ptr %3, align 8 + %vtable.i.i.i.i = load ptr, ptr %4, align 8 %vfn.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i, i64 8 - %4 = load ptr, ptr %vfn.i.i.i.i, align 8 - call void %4(ptr noundef nonnull align 8 dereferenceable(136) %3) #22 + %5 = load ptr, ptr %vfn.i.i.i.i, align 8 + call void %5(ptr noundef nonnull align 8 dereferenceable(136) %4) #22 br label %_ZN3ue214SlotCacheEntryD2Ev.exit.i _ZN3ue214SlotCacheEntryD2Ev.exit.i: ; preds = %_ZNKSt14default_deleteIKN3ue28NGHolderEEclEPS2_.exit.i.i.i, %lpad.i - resume { ptr, i32 } %2 + resume { ptr, i32 } %3 _ZNKSt14default_deleteIKN3ue28NGHolderEEclEPS2_.exit.i.i3.i: ; preds = %invoke.cont.i - %vtable.i.i.i4.i = load ptr, ptr %1, align 8 + %vtable.i.i.i4.i = load ptr, ptr %2, align 8 %vfn.i.i.i5.i = getelementptr inbounds i8, ptr %vtable.i.i.i4.i, i64 8 - %5 = load ptr, ptr %vfn.i.i.i5.i, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(136) %1) #22 + %6 = load ptr, ptr %vfn.i.i.i5.i, align 8 + call void %6(ptr noundef nonnull align 8 dereferenceable(136) %2) #22 br label %_ZN3ue29SlotCache4findERKNS_8NGHolderERKNS_9CharReachEjb.exit _ZN3ue29SlotCache4findERKNS_8NGHolderERKNS_9CharReachEjb.exit: ; preds = %invoke.cont.i, %_ZNKSt14default_deleteIKN3ue28NGHolderEEclEPS2_.exit.i.i3.i @@ -628,29 +638,29 @@ _ZN3ue29SlotCache4findERKNS_8NGHolderERKNS_9CharReachEjb.exit: ; preds = %invoke do.end8: ; preds = %_ZN3ue29SlotCache4findERKNS_8NGHolderERKNS_9CharReachEjb.exit %slot = getelementptr inbounds i8, ptr %call.i1.i, i64 56 - %6 = load i32, ptr %slot, align 8 + %7 = load i32, ptr %slot, align 8 br label %return do.end10: ; preds = %_ZN3ue29SlotCache4findERKNS_8NGHolderERKNS_9CharReachEjb.exit - %7 = load ptr, ptr %cache, align 8 - %8 = load i32, ptr %this, align 8 + %8 = load ptr, ptr %cache, align 8 + %9 = load i32, ptr %this, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %parent_slot.addr.i) call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %is_reset.addr.i) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %slot.addr.i) store i32 %parent_slot, ptr %parent_slot.addr.i, align 4 store i8 %frombool.i.i, ptr %is_reset.addr.i, align 1 - store i32 %8, ptr %slot.addr.i, align 4 - %call.i.i.i = call { ptr, i8 } @_ZNSt10_HashtableIN3ue214SlotCacheEntryES1_SaIS1_ENSt8__detail9_IdentityENS0_14SlotEntryEqualENS0_15SlotEntryHasherENS3_18_Mod_range_hashingENS3_20_Default_ranged_hashENS3_20_Prime_rehash_policyENS3_17_Hashtable_traitsILb1ELb1ELb1EEEE10_M_emplaceIJRKNS0_8NGHolderERKNS0_9CharReachERjRbSK_EEESt4pairINS3_14_Node_iteratorIS1_Lb1ELb1EEEbESt17integral_constantIbLb1EEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %7, ptr noundef nonnull align 8 dereferenceable(136) %prefix, ptr noundef nonnull align 8 dereferenceable(32) %escapes, ptr noundef nonnull align 4 dereferenceable(4) %parent_slot.addr.i, ptr noundef nonnull align 1 dereferenceable(1) %is_reset.addr.i, ptr noundef nonnull align 4 dereferenceable(4) %slot.addr.i) + store i32 %9, ptr %slot.addr.i, align 4 + %call.i.i.i = call { ptr, i8 } @_ZNSt10_HashtableIN3ue214SlotCacheEntryES1_SaIS1_ENSt8__detail9_IdentityENS0_14SlotEntryEqualENS0_15SlotEntryHasherENS3_18_Mod_range_hashingENS3_20_Default_ranged_hashENS3_20_Prime_rehash_policyENS3_17_Hashtable_traitsILb1ELb1ELb1EEEE10_M_emplaceIJRKNS0_8NGHolderERKNS0_9CharReachERjRbSK_EEESt4pairINS3_14_Node_iteratorIS1_Lb1ELb1EEEbESt17integral_constantIbLb1EEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %8, ptr noundef nonnull align 8 dereferenceable(136) %prefix, ptr noundef nonnull align 8 dereferenceable(32) %escapes, ptr noundef nonnull align 4 dereferenceable(4) %parent_slot.addr.i, ptr noundef nonnull align 1 dereferenceable(1) %is_reset.addr.i, ptr noundef nonnull align 4 dereferenceable(4) %slot.addr.i) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %parent_slot.addr.i) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %is_reset.addr.i) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %slot.addr.i) - %9 = load i32, ptr %this, align 8 - %inc = add i32 %9, 1 + %10 = load i32, ptr %this, align 8 + %inc = add i32 %10, 1 store i32 %inc, ptr %this, align 8 br label %return return: ; preds = %do.end10, %do.end8 - %retval.0 = phi i32 [ %6, %do.end8 ], [ %9, %do.end10 ] + %retval.0 = phi i32 [ %7, %do.end8 ], [ %10, %do.end10 ] ret i32 %retval.0 } diff --git a/bench/image-rs/optimized/34r8dryqmufipcqz.ll b/bench/image-rs/optimized/34r8dryqmufipcqz.ll index 89b78e43a4d..74ee75a3922 100644 --- a/bench/image-rs/optimized/34r8dryqmufipcqz.ll +++ b/bench/image-rs/optimized/34r8dryqmufipcqz.ll @@ -17155,6 +17155,7 @@ define hidden void @"_ZN5image6codecs7openexr23OpenExrDecoder$LT$R$GT$21with_alp %4 = alloca { [1 x i64], i64, [1 x i64] }, align 8 %5 = alloca { { i64, ptr }, i64 }, align 8 %6 = alloca { { { { i64, ptr }, i64 } } }, align 8 + %.sroa.0.i.i.i = alloca { { i64, ptr }, i64 }, align 8 %7 = alloca { i8, [31 x i8] }, align 8 %8 = alloca { [1 x i64], i64, [1 x i64] }, align 8 %9 = alloca { { i64, ptr }, i64 }, align 8 @@ -17365,11 +17366,13 @@ define hidden void @"_ZN5image6codecs7openexr23OpenExrDecoder$LT$R$GT$21with_alp store i8 0, ptr %7, align 8, !noalias !4525 %.sroa.484.0..sroa_idx = getelementptr inbounds i8, ptr %7, i64 1 store i8 11, ptr %.sroa.484.0..sroa_idx, align 1, !noalias !4525 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !4526 - invoke void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17h9c838cc96b95a841E.llvm.6960974148744716740"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr }, i64 }) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 1 @anon.fbd0a4e148fbe6762a2d1a1104c17af0.120, i64 noundef 44) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.0.i.i.i), !noalias !4526 + invoke void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17h9c838cc96b95a841E.llvm.6960974148744716740"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr }, i64 }) align 8 dereferenceable(24) %.sroa.0.i.i.i, ptr noalias noundef nonnull readonly align 1 @anon.fbd0a4e148fbe6762a2d1a1104c17af0.120, i64 noundef 44) to label %.noexc.i unwind label %80, !noalias !4531 .noexc.i: ; preds = %.loopexit104 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !4526 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0.i.i.i, i64 24, i1 false), !noalias !4526 %75 = invoke noundef ptr @_ZN5alloc5alloc15exchange_malloc17hbe31f2048284b3faE.llvm.6960974148744716740(i64 noundef 24, i64 noundef 8) to label %98 unwind label %76, !noalias !4532 @@ -17430,6 +17433,7 @@ define hidden void @"_ZN5image6codecs7openexr23OpenExrDecoder$LT$R$GT$21with_alp 98: ; preds = %.noexc.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %75, ptr noundef nonnull align 8 dereferenceable(24) %6, i64 24, i1 false), !noalias !4531 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !4526 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.0.i.i.i), !noalias !4526 %.sroa.079.0.copyload = load i64, ptr %7, align 8, !noalias !4542 %.sroa.480.0..sroa_idx = getelementptr inbounds i8, ptr %7, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.454.sroa.0, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.480.0..sroa_idx, i64 24, i1 false) @@ -17579,6 +17583,7 @@ define hidden void @"_ZN5image6codecs7openexr23OpenExrDecoder$LT$R$GT$21with_alp %5 = alloca { { i64, ptr }, i64 }, align 8 %6 = alloca { i8, [15 x i8] }, align 8 %7 = alloca { { { { i64, ptr }, i64 } } }, align 8 + %.sroa.0.i.i.i = alloca { { i64, ptr }, i64 }, align 8 %8 = alloca { i8, [31 x i8] }, align 8 %9 = alloca { [1 x i64], i64, [1 x i64] }, align 8 %10 = alloca { { i64, ptr }, i64 }, align 8 @@ -17789,11 +17794,13 @@ define hidden void @"_ZN5image6codecs7openexr23OpenExrDecoder$LT$R$GT$21with_alp store i8 0, ptr %8, align 8, !noalias !4610 %.sroa.484.0..sroa_idx = getelementptr inbounds i8, ptr %8, i64 1 store i8 11, ptr %.sroa.484.0..sroa_idx, align 1, !noalias !4610 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !4611 - invoke void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17h9c838cc96b95a841E.llvm.6960974148744716740"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr }, i64 }) align 8 dereferenceable(24) %7, ptr noalias noundef nonnull readonly align 1 @anon.fbd0a4e148fbe6762a2d1a1104c17af0.120, i64 noundef 44) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.0.i.i.i), !noalias !4611 + invoke void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17h9c838cc96b95a841E.llvm.6960974148744716740"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr }, i64 }) align 8 dereferenceable(24) %.sroa.0.i.i.i, ptr noalias noundef nonnull readonly align 1 @anon.fbd0a4e148fbe6762a2d1a1104c17af0.120, i64 noundef 44) to label %.noexc.i unwind label %81, !noalias !4616 .noexc.i: ; preds = %.loopexit104 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !4611 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0.i.i.i, i64 24, i1 false), !noalias !4611 %76 = invoke noundef ptr @_ZN5alloc5alloc15exchange_malloc17hbe31f2048284b3faE.llvm.6960974148744716740(i64 noundef 24, i64 noundef 8) to label %99 unwind label %77, !noalias !4617 @@ -17854,6 +17861,7 @@ define hidden void @"_ZN5image6codecs7openexr23OpenExrDecoder$LT$R$GT$21with_alp 99: ; preds = %.noexc.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %76, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false), !noalias !4616 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !4611 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.0.i.i.i), !noalias !4611 %.sroa.079.0.copyload = load i64, ptr %8, align 8, !noalias !4627 %.sroa.480.0..sroa_idx = getelementptr inbounds i8, ptr %8, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.454.sroa.0, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.480.0..sroa_idx, i64 24, i1 false) @@ -19086,6 +19094,7 @@ switch.lookup: %13 = alloca { { i64, [3 x i64] } }, align 8 %14 = alloca { i8, [63 x i8] }, align 8 %15 = alloca { { { { i64, ptr }, i64 } } }, align 8 + %.sroa.0.i.i.i.i = alloca { { i64, ptr }, i64 }, align 8 %16 = alloca { i8, [31 x i8] }, align 8 %.sroa.238.i = alloca [63 x i8], align 1 %17 = alloca { { i64, [2 x i64] }, { i32, [2 x i32] }, i8, [3 x i8] }, align 8 @@ -19305,11 +19314,13 @@ _ZN5image5color9ColorType15bytes_per_pixel17hcff21ecdd81b7288E.exit.i: ; preds = store i8 0, ptr %16, align 8, !noalias !4871 %.sroa.4.0..sroa_idx56.i = getelementptr inbounds i8, ptr %16, i64 1 store i8 11, ptr %.sroa.4.0..sroa_idx56.i, align 1, !noalias !4871 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15), !noalias !4872 - invoke void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17h9c838cc96b95a841E.llvm.6960974148744716740"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr }, i64 }) align 8 dereferenceable(24) %15, ptr noalias noundef nonnull readonly align 1 @anon.fbd0a4e148fbe6762a2d1a1104c17af0.127, i64 noundef 72) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.0.i.i.i.i), !noalias !4872 + invoke void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17h9c838cc96b95a841E.llvm.6960974148744716740"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr }, i64 }) align 8 dereferenceable(24) %.sroa.0.i.i.i.i, ptr noalias noundef nonnull readonly align 1 @anon.fbd0a4e148fbe6762a2d1a1104c17af0.127, i64 noundef 72) to label %.noexc.i.i unwind label %91, !noalias !4877 .noexc.i.i: ; preds = %85 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15), !noalias !4872 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0.i.i.i.i, i64 24, i1 false), !noalias !4872 %86 = invoke noundef ptr @_ZN5alloc5alloc15exchange_malloc17hbe31f2048284b3faE.llvm.6960974148744716740(i64 noundef 24, i64 noundef 8) to label %_ZN5image5error13EncodingError3new17h3bd8d82b52cc5fa8E.exit.i unwind label %87, !noalias !4878 @@ -19344,6 +19355,7 @@ _ZN5image5color9ColorType15bytes_per_pixel17hcff21ecdd81b7288E.exit.i: ; preds = _ZN5image5error13EncodingError3new17h3bd8d82b52cc5fa8E.exit.i: ; preds = %.noexc.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %86, ptr noundef nonnull align 8 dereferenceable(24) %15, i64 24, i1 false), !noalias !4877 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15), !noalias !4872 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.0.i.i.i.i), !noalias !4872 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.i, ptr noundef nonnull align 8 dereferenceable(32) %16, i64 32, i1 false), !noalias !4881 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16), !noalias !4866 %.sroa.4.sroa.0.7..sroa_idx.i = getelementptr inbounds i8, ptr %.sroa.4.sroa.0.i, i64 7 diff --git a/bench/image-rs/optimized/4srzh4wujeew249y.ll b/bench/image-rs/optimized/4srzh4wujeew249y.ll index 93734fe4fd9..4aaf479bfb3 100644 --- a/bench/image-rs/optimized/4srzh4wujeew249y.ll +++ b/bench/image-rs/optimized/4srzh4wujeew249y.ll @@ -25145,23 +25145,21 @@ define void @"_ZN102_$LT$image..error..ImageFormatHint$u20$as$u20$core..convert. ; Function Attrs: nonlazybind uwtable define void @"_ZN96_$LT$image..error..ImageFormatHint$u20$as$u20$core..convert..From$LT$$RF$std..path..Path$GT$$GT$4from17h250df3d1239757cdE"(ptr noalias nocapture noundef writeonly sret({ i8, [31 x i8] }) align 8 dereferenceable(32) %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) unnamed_addr #2 { - %.sroa.02 = alloca { { i64, ptr }, i64 }, align 8 - %4 = tail call { ptr, i64 } @_ZN3std4path4Path9extension17hf75b7b3f26fcd3e7E(ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) - %.fca.0.extract = extractvalue { ptr, i64 } %4, 0 - %5 = icmp eq ptr %.fca.0.extract, null - br i1 %5, label %8, label %6 - -6: ; preds = %3 - %.fca.1.extract = extractvalue { ptr, i64 } %4, 1 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.02) - call void @_ZN3std3sys4unix6os_str5Slice8to_owned17h81ac8c9c3fbf909aE(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 dereferenceable(24) %.sroa.02, ptr noalias noundef nonnull readonly align 1 %.fca.0.extract, i64 noundef %.fca.1.extract) - %7 = getelementptr inbounds i8, ptr %0, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.02, i64 24, i1 false) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.02) - br label %8 + %4 = alloca { { { i64, ptr }, i64 } }, align 8 + %5 = tail call { ptr, i64 } @_ZN3std4path4Path9extension17hf75b7b3f26fcd3e7E(ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) + %.fca.0.extract = extractvalue { ptr, i64 } %5, 0 + %6 = icmp eq ptr %.fca.0.extract, null + br i1 %6, label %9, label %7 + +7: ; preds = %3 + %.fca.1.extract = extractvalue { ptr, i64 } %5, 1 + call void @_ZN3std3sys4unix6os_str5Slice8to_owned17h81ac8c9c3fbf909aE(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 1 %.fca.0.extract, i64 noundef %.fca.1.extract) + %8 = getelementptr inbounds i8, ptr %0, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) + br label %9 -8: ; preds = %3, %6 - %.sink = phi i8 [ 2, %6 ], [ 3, %3 ] +9: ; preds = %3, %7 + %.sink = phi i8 [ 2, %7 ], [ 3, %3 ] store i8 %.sink, ptr %0, align 8 ret void } diff --git a/bench/influxdb-rs/optimized/1s5ibqekmzia6ibu.ll b/bench/influxdb-rs/optimized/1s5ibqekmzia6ibu.ll index 6db0482dede..b77eb8fc508 100644 --- a/bench/influxdb-rs/optimized/1s5ibqekmzia6ibu.ll +++ b/bench/influxdb-rs/optimized/1s5ibqekmzia6ibu.ll @@ -1032,10 +1032,11 @@ default.unreachable17: ; preds = %2 define hidden void @_ZN17crossbeam_channel7channel7bounded17h70fb5e5bd2051c82E(ptr noalias nocapture noundef writeonly sret({ { i64, ptr }, { i64, ptr } }) align 8 dereferenceable(32) %0, i64 noundef %1) unnamed_addr #1 personality ptr @rust_eh_personality { %3 = alloca { { { { i64 }, [15 x i64] }, { { i64 }, [15 x i64] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } } } }, { i8 }, [7 x i8] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } } } }, { i8 }, [7 x i8] }, i64, i64, i64, { ptr, i64 }, [11 x i64] }, { i64 }, { i64 }, { i8 }, [111 x i8] }, align 128 %4 = alloca { { { { { i32 } }, { { i8 } }, [3 x i8], { { { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } }, { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } }, i8, [7 x i8] } } }, {} }, { i64 }, { i64 }, { i8 }, [7 x i8] }, align 8 - %5 = icmp eq i64 %1, 0 - br i1 %5, label %6, label %17 + %5 = alloca { { { i64 }, [15 x i64] }, { { i64 }, [15 x i64] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } } } }, { i8 }, [7 x i8] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } } } }, { i8 }, [7 x i8] }, i64, i64, i64, { ptr, i64 }, [11 x i64] }, align 128 + %6 = icmp eq i64 %1, 0 + br i1 %6, label %7, label %18 -6: ; preds = %2 +7: ; preds = %2 call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %4), !noalias !122 store i32 0, ptr %4, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 4 @@ -1056,80 +1057,82 @@ define hidden void @_ZN17crossbeam_channel7channel7bounded17h70fb5e5bd2051c82E(p store ptr inttoptr (i64 8 to ptr), ptr %.sroa.15.0..sroa_idx, align 8 %.sroa.1650.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 88 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(17) %.sroa.1650.0..sroa_idx, i8 0, i64 17, i1 false) - %7 = getelementptr inbounds i8, ptr %4, i64 112 - store i64 1, ptr %7, align 8, !noalias !122 - %8 = getelementptr inbounds i8, ptr %4, i64 120 + %8 = getelementptr inbounds i8, ptr %4, i64 112 store i64 1, ptr %8, align 8, !noalias !122 - %9 = getelementptr inbounds i8, ptr %4, i64 128 - store i8 0, ptr %9, align 8, !noalias !122 - %10 = invoke { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h69eb46720be4b0f9E.llvm.4074410953282169344(ptr noalias noundef nonnull readonly align 1 @anon.e208aac8e7bdb0bb4451e98d70003dfe.0.llvm.4074410953282169344, i64 noundef 8, i64 noundef 136, i1 noundef zeroext false) - to label %.noexc.i unwind label %13, !noalias !122 - -.noexc.i: ; preds = %6 - %.fca.0.extract.i.i = extractvalue { ptr, i64 } %10, 0 - %11 = icmp eq ptr %.fca.0.extract.i.i, null - br i1 %11, label %12, label %_ZN17crossbeam_channel7counter3new17h4aa18a6e96ef5821E.exit - -12: ; preds = %.noexc.i + %9 = getelementptr inbounds i8, ptr %4, i64 120 + store i64 1, ptr %9, align 8, !noalias !122 + %10 = getelementptr inbounds i8, ptr %4, i64 128 + store i8 0, ptr %10, align 8, !noalias !122 + %11 = invoke { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h69eb46720be4b0f9E.llvm.4074410953282169344(ptr noalias noundef nonnull readonly align 1 @anon.e208aac8e7bdb0bb4451e98d70003dfe.0.llvm.4074410953282169344, i64 noundef 8, i64 noundef 136, i1 noundef zeroext false) + to label %.noexc.i unwind label %14, !noalias !122 + +.noexc.i: ; preds = %7 + %.fca.0.extract.i.i = extractvalue { ptr, i64 } %11, 0 + %12 = icmp eq ptr %.fca.0.extract.i.i, null + br i1 %12, label %13, label %_ZN17crossbeam_channel7counter3new17h4aa18a6e96ef5821E.exit + +13: ; preds = %.noexc.i invoke void @_ZN5alloc5alloc18handle_alloc_error17h7d585e222775d2b3E(i64 noundef 8, i64 noundef 136) #33 - to label %.noexc9.i unwind label %13, !noalias !122 + to label %.noexc9.i unwind label %14, !noalias !122 -.noexc9.i: ; preds = %12 +.noexc9.i: ; preds = %13 unreachable -13: ; preds = %12, %6 - %14 = landingpad { ptr, i32 } +14: ; preds = %13, %7 + %15 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr60drop_in_place$LT$crossbeam_channel..flavors..zero..Inner$GT$17h437e1cd82d9c9dbeE.llvm.12494526139044184965"(ptr noalias noundef nonnull align 8 dereferenceable(104) %.sroa.649.0..sroa_idx) - to label %common.resume unwind label %15, !noalias !122 + to label %common.resume unwind label %16, !noalias !122 -15: ; preds = %13 - %16 = landingpad { ptr, i32 } +16: ; preds = %14 + %17 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #34, !noalias !122 unreachable -common.resume: ; preds = %24, %13 - %common.resume.op = phi { ptr, i32 } [ %14, %13 ], [ %25, %24 ] +common.resume: ; preds = %25, %14 + %common.resume.op = phi { ptr, i32 } [ %15, %14 ], [ %26, %25 ] resume { ptr, i32 } %common.resume.op _ZN17crossbeam_channel7counter3new17h4aa18a6e96ef5821E.exit: ; preds = %.noexc.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %.fca.0.extract.i.i, ptr noundef nonnull align 8 dereferenceable(136) %4, i64 136, i1 false) call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %4), !noalias !122 - br label %28 + br label %29 -17: ; preds = %2 +18: ; preds = %2 + call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %5) + call void @"_ZN17crossbeam_channel7flavors5array16Channel$LT$T$GT$13with_capacity17h9c7419a3351d92a1E"(ptr noalias nocapture noundef nonnull sret({ { { i64 }, [15 x i64] }, { { i64 }, [15 x i64] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } } } }, { i8 }, [7 x i8] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } } } }, { i8 }, [7 x i8] }, i64, i64, i64, { ptr, i64 }, [11 x i64] }) align 128 dereferenceable(512) %5, i64 noundef %1) call void @llvm.lifetime.start.p0(i64 640, ptr nonnull %3), !noalias !125 - call void @"_ZN17crossbeam_channel7flavors5array16Channel$LT$T$GT$13with_capacity17h9c7419a3351d92a1E"(ptr noalias nocapture noundef nonnull sret({ { { i64 }, [15 x i64] }, { { i64 }, [15 x i64] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } } } }, { i8 }, [7 x i8] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } } } }, { i8 }, [7 x i8] }, i64, i64, i64, { ptr, i64 }, [11 x i64] }) align 128 dereferenceable(512) %3, i64 noundef %1) - %18 = getelementptr inbounds i8, ptr %3, i64 512 - store i64 1, ptr %18, align 128, !noalias !125 - %19 = getelementptr inbounds i8, ptr %3, i64 520 - store i64 1, ptr %19, align 8, !noalias !125 - %20 = getelementptr inbounds i8, ptr %3, i64 528 - store i8 0, ptr %20, align 16, !noalias !125 - %21 = invoke { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h69eb46720be4b0f9E.llvm.4074410953282169344(ptr noalias noundef nonnull readonly align 1 @anon.e208aac8e7bdb0bb4451e98d70003dfe.0.llvm.4074410953282169344, i64 noundef 128, i64 noundef 640, i1 noundef zeroext false) - to label %.noexc.i47 unwind label %24, !noalias !125 - -.noexc.i47: ; preds = %17 - %.fca.0.extract.i.i48 = extractvalue { ptr, i64 } %21, 0 - %22 = icmp eq ptr %.fca.0.extract.i.i48, null - br i1 %22, label %23, label %_ZN17crossbeam_channel7counter3new17hdd2b9346fab20a59E.exit - -23: ; preds = %.noexc.i47 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 128 dereferenceable(512) %3, ptr noundef nonnull align 128 dereferenceable(512) %5, i64 512, i1 false) + %19 = getelementptr inbounds i8, ptr %3, i64 512 + store i64 1, ptr %19, align 128, !noalias !125 + %20 = getelementptr inbounds i8, ptr %3, i64 520 + store i64 1, ptr %20, align 8, !noalias !125 + %21 = getelementptr inbounds i8, ptr %3, i64 528 + store i8 0, ptr %21, align 16, !noalias !125 + %22 = invoke { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h69eb46720be4b0f9E.llvm.4074410953282169344(ptr noalias noundef nonnull readonly align 1 @anon.e208aac8e7bdb0bb4451e98d70003dfe.0.llvm.4074410953282169344, i64 noundef 128, i64 noundef 640, i1 noundef zeroext false) + to label %.noexc.i47 unwind label %25, !noalias !125 + +.noexc.i47: ; preds = %18 + %.fca.0.extract.i.i48 = extractvalue { ptr, i64 } %22, 0 + %23 = icmp eq ptr %.fca.0.extract.i.i48, null + br i1 %23, label %24, label %_ZN17crossbeam_channel7counter3new17hdd2b9346fab20a59E.exit + +24: ; preds = %.noexc.i47 invoke void @_ZN5alloc5alloc18handle_alloc_error17h7d585e222775d2b3E(i64 noundef 128, i64 noundef 640) #33 - to label %.noexc8.i unwind label %24, !noalias !125 + to label %.noexc8.i unwind label %25, !noalias !125 -.noexc8.i: ; preds = %23 +.noexc8.i: ; preds = %24 unreachable -24: ; preds = %23, %17 - %25 = landingpad { ptr, i32 } +25: ; preds = %24, %18 + %26 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr116drop_in_place$LT$crossbeam_channel..flavors..array..Channel$LT$alloc..vec..Vec$LT$influxdb3_write..WalOp$GT$$GT$$GT$17h98f91bb044266376E.llvm.12494526139044184965"(ptr noalias noundef nonnull align 128 dereferenceable(512) %3) - to label %common.resume unwind label %26, !noalias !125 + to label %common.resume unwind label %27, !noalias !125 -26: ; preds = %24 - %27 = landingpad { ptr, i32 } +27: ; preds = %25 + %28 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #34, !noalias !125 unreachable @@ -1137,18 +1140,19 @@ _ZN17crossbeam_channel7counter3new17h4aa18a6e96ef5821E.exit: ; preds = %.noexc.i _ZN17crossbeam_channel7counter3new17hdd2b9346fab20a59E.exit: ; preds = %.noexc.i47 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 128 dereferenceable(640) %.fca.0.extract.i.i48, ptr noundef nonnull align 128 dereferenceable(640) %3, i64 640, i1 false) call void @llvm.lifetime.end.p0(i64 640, ptr nonnull %3), !noalias !125 - br label %28 + call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %5) + br label %29 -28: ; preds = %_ZN17crossbeam_channel7counter3new17hdd2b9346fab20a59E.exit, %_ZN17crossbeam_channel7counter3new17h4aa18a6e96ef5821E.exit +29: ; preds = %_ZN17crossbeam_channel7counter3new17hdd2b9346fab20a59E.exit, %_ZN17crossbeam_channel7counter3new17h4aa18a6e96ef5821E.exit %.sink54 = phi i64 [ 0, %_ZN17crossbeam_channel7counter3new17hdd2b9346fab20a59E.exit ], [ 2, %_ZN17crossbeam_channel7counter3new17h4aa18a6e96ef5821E.exit ] %.fca.0.extract.i.i48.sink52 = phi ptr [ %.fca.0.extract.i.i48, %_ZN17crossbeam_channel7counter3new17hdd2b9346fab20a59E.exit ], [ %.fca.0.extract.i.i, %_ZN17crossbeam_channel7counter3new17h4aa18a6e96ef5821E.exit ] store i64 %.sink54, ptr %0, align 8 - %29 = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %.fca.0.extract.i.i48.sink52, ptr %29, align 8 - %30 = getelementptr inbounds i8, ptr %0, i64 16 - store i64 %.sink54, ptr %30, align 8 - %31 = getelementptr inbounds i8, ptr %0, i64 24 - store ptr %.fca.0.extract.i.i48.sink52, ptr %31, align 8 + %30 = getelementptr inbounds i8, ptr %0, i64 8 + store ptr %.fca.0.extract.i.i48.sink52, ptr %30, align 8 + %31 = getelementptr inbounds i8, ptr %0, i64 16 + store i64 %.sink54, ptr %31, align 8 + %32 = getelementptr inbounds i8, ptr %0, i64 24 + store ptr %.fca.0.extract.i.i48.sink52, ptr %32, align 8 ret void } @@ -1156,10 +1160,11 @@ _ZN17crossbeam_channel7counter3new17hdd2b9346fab20a59E.exit: ; preds = %.noexc.i define hidden void @_ZN17crossbeam_channel7channel7bounded17hbcc5d181f5117155E(ptr noalias nocapture noundef writeonly sret({ { i64, ptr }, { i64, ptr } }) align 8 dereferenceable(32) %0, i64 noundef %1) unnamed_addr #1 personality ptr @rust_eh_personality { %3 = alloca { { { { i64 }, [15 x i64] }, { { i64 }, [15 x i64] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } } } }, { i8 }, [7 x i8] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } } } }, { i8 }, [7 x i8] }, i64, i64, i64, { ptr, i64 }, [11 x i64] }, { i64 }, { i64 }, { i8 }, [111 x i8] }, align 128 %4 = alloca { { { { { i32 } }, { { i8 } }, [3 x i8], { { { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } }, { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } }, i8, [7 x i8] } } }, {} }, { i64 }, { i64 }, { i8 }, [7 x i8] }, align 8 - %5 = icmp eq i64 %1, 0 - br i1 %5, label %6, label %17 + %5 = alloca { { { i64 }, [15 x i64] }, { { i64 }, [15 x i64] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } } } }, { i8 }, [7 x i8] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } } } }, { i8 }, [7 x i8] }, i64, i64, i64, { ptr, i64 }, [11 x i64] }, align 128 + %6 = icmp eq i64 %1, 0 + br i1 %6, label %7, label %18 -6: ; preds = %2 +7: ; preds = %2 call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %4), !noalias !128 store i32 0, ptr %4, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 4 @@ -1180,80 +1185,82 @@ define hidden void @_ZN17crossbeam_channel7channel7bounded17hbcc5d181f5117155E(p store ptr inttoptr (i64 8 to ptr), ptr %.sroa.15.0..sroa_idx, align 8 %.sroa.1650.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 88 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(17) %.sroa.1650.0..sroa_idx, i8 0, i64 17, i1 false) - %7 = getelementptr inbounds i8, ptr %4, i64 112 - store i64 1, ptr %7, align 8, !noalias !128 - %8 = getelementptr inbounds i8, ptr %4, i64 120 + %8 = getelementptr inbounds i8, ptr %4, i64 112 store i64 1, ptr %8, align 8, !noalias !128 - %9 = getelementptr inbounds i8, ptr %4, i64 128 - store i8 0, ptr %9, align 8, !noalias !128 - %10 = invoke { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h69eb46720be4b0f9E.llvm.4074410953282169344(ptr noalias noundef nonnull readonly align 1 @anon.e208aac8e7bdb0bb4451e98d70003dfe.0.llvm.4074410953282169344, i64 noundef 8, i64 noundef 136, i1 noundef zeroext false) - to label %.noexc.i unwind label %13, !noalias !128 - -.noexc.i: ; preds = %6 - %.fca.0.extract.i.i = extractvalue { ptr, i64 } %10, 0 - %11 = icmp eq ptr %.fca.0.extract.i.i, null - br i1 %11, label %12, label %_ZN17crossbeam_channel7counter3new17h45ddf7be9b549a74E.exit - -12: ; preds = %.noexc.i + %9 = getelementptr inbounds i8, ptr %4, i64 120 + store i64 1, ptr %9, align 8, !noalias !128 + %10 = getelementptr inbounds i8, ptr %4, i64 128 + store i8 0, ptr %10, align 8, !noalias !128 + %11 = invoke { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h69eb46720be4b0f9E.llvm.4074410953282169344(ptr noalias noundef nonnull readonly align 1 @anon.e208aac8e7bdb0bb4451e98d70003dfe.0.llvm.4074410953282169344, i64 noundef 8, i64 noundef 136, i1 noundef zeroext false) + to label %.noexc.i unwind label %14, !noalias !128 + +.noexc.i: ; preds = %7 + %.fca.0.extract.i.i = extractvalue { ptr, i64 } %11, 0 + %12 = icmp eq ptr %.fca.0.extract.i.i, null + br i1 %12, label %13, label %_ZN17crossbeam_channel7counter3new17h45ddf7be9b549a74E.exit + +13: ; preds = %.noexc.i invoke void @_ZN5alloc5alloc18handle_alloc_error17h7d585e222775d2b3E(i64 noundef 8, i64 noundef 136) #33 - to label %.noexc9.i unwind label %13, !noalias !128 + to label %.noexc9.i unwind label %14, !noalias !128 -.noexc9.i: ; preds = %12 +.noexc9.i: ; preds = %13 unreachable -13: ; preds = %12, %6 - %14 = landingpad { ptr, i32 } +14: ; preds = %13, %7 + %15 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr60drop_in_place$LT$crossbeam_channel..flavors..zero..Inner$GT$17h437e1cd82d9c9dbeE.llvm.12494526139044184965"(ptr noalias noundef nonnull align 8 dereferenceable(104) %.sroa.649.0..sroa_idx) - to label %common.resume unwind label %15, !noalias !128 + to label %common.resume unwind label %16, !noalias !128 -15: ; preds = %13 - %16 = landingpad { ptr, i32 } +16: ; preds = %14 + %17 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #34, !noalias !128 unreachable -common.resume: ; preds = %24, %13 - %common.resume.op = phi { ptr, i32 } [ %14, %13 ], [ %25, %24 ] +common.resume: ; preds = %25, %14 + %common.resume.op = phi { ptr, i32 } [ %15, %14 ], [ %26, %25 ] resume { ptr, i32 } %common.resume.op _ZN17crossbeam_channel7counter3new17h45ddf7be9b549a74E.exit: ; preds = %.noexc.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %.fca.0.extract.i.i, ptr noundef nonnull align 8 dereferenceable(136) %4, i64 136, i1 false) call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %4), !noalias !128 - br label %28 + br label %29 -17: ; preds = %2 +18: ; preds = %2 + call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %5) + call void @"_ZN17crossbeam_channel7flavors5array16Channel$LT$T$GT$13with_capacity17h97b5e51825cb2808E"(ptr noalias nocapture noundef nonnull sret({ { { i64 }, [15 x i64] }, { { i64 }, [15 x i64] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } } } }, { i8 }, [7 x i8] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } } } }, { i8 }, [7 x i8] }, i64, i64, i64, { ptr, i64 }, [11 x i64] }) align 128 dereferenceable(512) %5, i64 noundef %1) call void @llvm.lifetime.start.p0(i64 640, ptr nonnull %3), !noalias !131 - call void @"_ZN17crossbeam_channel7flavors5array16Channel$LT$T$GT$13with_capacity17h97b5e51825cb2808E"(ptr noalias nocapture noundef nonnull sret({ { { i64 }, [15 x i64] }, { { i64 }, [15 x i64] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } } } }, { i8 }, [7 x i8] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 } } } }, { i8 }, [7 x i8] }, i64, i64, i64, { ptr, i64 }, [11 x i64] }) align 128 dereferenceable(512) %3, i64 noundef %1) - %18 = getelementptr inbounds i8, ptr %3, i64 512 - store i64 1, ptr %18, align 128, !noalias !131 - %19 = getelementptr inbounds i8, ptr %3, i64 520 - store i64 1, ptr %19, align 8, !noalias !131 - %20 = getelementptr inbounds i8, ptr %3, i64 528 - store i8 0, ptr %20, align 16, !noalias !131 - %21 = invoke { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h69eb46720be4b0f9E.llvm.4074410953282169344(ptr noalias noundef nonnull readonly align 1 @anon.e208aac8e7bdb0bb4451e98d70003dfe.0.llvm.4074410953282169344, i64 noundef 128, i64 noundef 640, i1 noundef zeroext false) - to label %.noexc.i47 unwind label %24, !noalias !131 - -.noexc.i47: ; preds = %17 - %.fca.0.extract.i.i48 = extractvalue { ptr, i64 } %21, 0 - %22 = icmp eq ptr %.fca.0.extract.i.i48, null - br i1 %22, label %23, label %_ZN17crossbeam_channel7counter3new17h349d7fc2e86622c2E.exit - -23: ; preds = %.noexc.i47 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 128 dereferenceable(512) %3, ptr noundef nonnull align 128 dereferenceable(512) %5, i64 512, i1 false) + %19 = getelementptr inbounds i8, ptr %3, i64 512 + store i64 1, ptr %19, align 128, !noalias !131 + %20 = getelementptr inbounds i8, ptr %3, i64 520 + store i64 1, ptr %20, align 8, !noalias !131 + %21 = getelementptr inbounds i8, ptr %3, i64 528 + store i8 0, ptr %21, align 16, !noalias !131 + %22 = invoke { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h69eb46720be4b0f9E.llvm.4074410953282169344(ptr noalias noundef nonnull readonly align 1 @anon.e208aac8e7bdb0bb4451e98d70003dfe.0.llvm.4074410953282169344, i64 noundef 128, i64 noundef 640, i1 noundef zeroext false) + to label %.noexc.i47 unwind label %25, !noalias !131 + +.noexc.i47: ; preds = %18 + %.fca.0.extract.i.i48 = extractvalue { ptr, i64 } %22, 0 + %23 = icmp eq ptr %.fca.0.extract.i.i48, null + br i1 %23, label %24, label %_ZN17crossbeam_channel7counter3new17h349d7fc2e86622c2E.exit + +24: ; preds = %.noexc.i47 invoke void @_ZN5alloc5alloc18handle_alloc_error17h7d585e222775d2b3E(i64 noundef 128, i64 noundef 640) #33 - to label %.noexc8.i unwind label %24, !noalias !131 + to label %.noexc8.i unwind label %25, !noalias !131 -.noexc8.i: ; preds = %23 +.noexc8.i: ; preds = %24 unreachable -24: ; preds = %23, %17 - %25 = landingpad { ptr, i32 } +25: ; preds = %24, %18 + %26 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr160drop_in_place$LT$crossbeam_channel..flavors..array..Channel$LT$core..result..Result$LT$influxdb3_write..SequenceNumber$C$influxdb3_write..wal..Error$GT$$GT$$GT$17hfd3251cdb900e06fE.llvm.12494526139044184965"(ptr noalias noundef nonnull align 128 dereferenceable(512) %3) - to label %common.resume unwind label %26, !noalias !131 + to label %common.resume unwind label %27, !noalias !131 -26: ; preds = %24 - %27 = landingpad { ptr, i32 } +27: ; preds = %25 + %28 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #34, !noalias !131 unreachable @@ -1261,18 +1268,19 @@ _ZN17crossbeam_channel7counter3new17h45ddf7be9b549a74E.exit: ; preds = %.noexc.i _ZN17crossbeam_channel7counter3new17h349d7fc2e86622c2E.exit: ; preds = %.noexc.i47 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 128 dereferenceable(640) %.fca.0.extract.i.i48, ptr noundef nonnull align 128 dereferenceable(640) %3, i64 640, i1 false) call void @llvm.lifetime.end.p0(i64 640, ptr nonnull %3), !noalias !131 - br label %28 + call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %5) + br label %29 -28: ; preds = %_ZN17crossbeam_channel7counter3new17h349d7fc2e86622c2E.exit, %_ZN17crossbeam_channel7counter3new17h45ddf7be9b549a74E.exit +29: ; preds = %_ZN17crossbeam_channel7counter3new17h349d7fc2e86622c2E.exit, %_ZN17crossbeam_channel7counter3new17h45ddf7be9b549a74E.exit %.sink54 = phi i64 [ 0, %_ZN17crossbeam_channel7counter3new17h349d7fc2e86622c2E.exit ], [ 2, %_ZN17crossbeam_channel7counter3new17h45ddf7be9b549a74E.exit ] %.fca.0.extract.i.i48.sink52 = phi ptr [ %.fca.0.extract.i.i48, %_ZN17crossbeam_channel7counter3new17h349d7fc2e86622c2E.exit ], [ %.fca.0.extract.i.i, %_ZN17crossbeam_channel7counter3new17h45ddf7be9b549a74E.exit ] store i64 %.sink54, ptr %0, align 8 - %29 = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %.fca.0.extract.i.i48.sink52, ptr %29, align 8 - %30 = getelementptr inbounds i8, ptr %0, i64 16 - store i64 %.sink54, ptr %30, align 8 - %31 = getelementptr inbounds i8, ptr %0, i64 24 - store ptr %.fca.0.extract.i.i48.sink52, ptr %31, align 8 + %30 = getelementptr inbounds i8, ptr %0, i64 8 + store ptr %.fca.0.extract.i.i48.sink52, ptr %30, align 8 + %31 = getelementptr inbounds i8, ptr %0, i64 16 + store i64 %.sink54, ptr %31, align 8 + %32 = getelementptr inbounds i8, ptr %0, i64 24 + store ptr %.fca.0.extract.i.i48.sink52, ptr %32, align 8 ret void } diff --git a/bench/influxdb-rs/optimized/54bldmpi534adbqh.ll b/bench/influxdb-rs/optimized/54bldmpi534adbqh.ll index 967371889d3..4c4a702e36d 100644 --- a/bench/influxdb-rs/optimized/54bldmpi534adbqh.ll +++ b/bench/influxdb-rs/optimized/54bldmpi534adbqh.ll @@ -729,12 +729,16 @@ define hidden void @"_ZN108_$LT$alloc..collections..btree..map..Keys$LT$K$C$V$GT ; Function Attrs: nonlazybind uwtable define hidden void @"_ZN11arrow_array7builder32generic_bytes_dictionary_builder41GenericByteDictionaryBuilder$LT$K$C$T$GT$3new17h23dbbe29316376bbE"(ptr noalias nocapture noundef writeonly sret({ { { { { i64, i64 }, ptr, i64 }, i64, {} }, { { i64, [4 x i64] }, i64, i64 }, { i8, [23 x i8] } }, { { { { i64, i64 }, ptr, i64 }, i64, {} }, { { { i64, i64 }, ptr, i64 }, i64, {} }, { { i64, [4 x i64] }, i64, i64 } }, { { { ptr, i64, i64, i64 }, {}, {} }, {} }, { i64, i64, i64, i64 } }) align 8 dereferenceable(320) %0) unnamed_addr #0 personality ptr @rust_eh_personality { %2 = alloca { ptr, [3 x i64] }, align 8 + %.sroa.0.i = alloca { { i64, i64 }, ptr, i64 }, align 8 %.sroa.0 = alloca { ptr, i64, i64, i64 }, align 8 %3 = alloca { i64, i64, i64, i64 }, align 8 %4 = alloca { { { { i64, i64 }, ptr, i64 }, i64, {} }, { { { i64, i64 }, ptr, i64 }, i64, {} }, { { i64, [4 x i64] }, i64, i64 } }, align 8 %5 = alloca { { { { i64, i64 }, ptr, i64 }, i64, {} }, { { i64, [4 x i64] }, i64, i64 }, { i8, [23 x i8] } }, align 8 call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %5) - call void @_ZN12arrow_buffer6buffer7mutable13MutableBuffer13with_capacity17h599cdfd446541586E.llvm.12936710431969675094(ptr noalias nocapture noundef nonnull sret({ { i64, i64 }, ptr, i64 }) align 8 dereferenceable(32) %5, i64 noundef 4096) + tail call void @llvm.experimental.noalias.scope.decl(metadata !50) + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %.sroa.0.i), !noalias !50 + call void @_ZN12arrow_buffer6buffer7mutable13MutableBuffer13with_capacity17h599cdfd446541586E.llvm.12936710431969675094(ptr noalias nocapture noundef nonnull sret({ { i64, i64 }, ptr, i64 }) align 8 dereferenceable(32) %.sroa.0.i, i64 noundef 4096), !noalias !50 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.i, i64 32, i1 false) %.sroa.4.0..sroa_idx.i = getelementptr inbounds i8, ptr %5, i64 32 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.4.0..sroa_idx.i, i8 0, i64 16, i1 false), !alias.scope !50 %.sroa.42.0..sroa_idx.i = getelementptr inbounds i8, ptr %5, i64 80 @@ -743,6 +747,7 @@ define hidden void @"_ZN11arrow_array7builder32generic_bytes_dictionary_builder4 store i64 1024, ptr %.sroa.5.0..sroa_idx.i, align 8, !alias.scope !50 %6 = getelementptr inbounds i8, ptr %5, i64 96 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, i8 4, i64 24, i1 false), !alias.scope !50 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.0.i), !noalias !50 call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %4) invoke void @"_ZN11arrow_array7builder21generic_bytes_builder27GenericByteBuilder$LT$T$GT$13with_capacity17h6b9c82774ffd6f06E"(ptr noalias nocapture noundef nonnull sret({ { { { i64, i64 }, ptr, i64 }, i64, {} }, { { { i64, i64 }, ptr, i64 }, i64, {} }, { { i64, [4 x i64] }, i64, i64 } }) align 8 dereferenceable(136) %4, i64 noundef 1024, i64 noundef 1024) to label %10 unwind label %8 diff --git a/bench/just-rs/optimized/2sotx4bdu006z307.ll b/bench/just-rs/optimized/2sotx4bdu006z307.ll index f18f49e549d..98500459c0e 100644 --- a/bench/just-rs/optimized/2sotx4bdu006z307.ll +++ b/bench/just-rs/optimized/2sotx4bdu006z307.ll @@ -13685,17 +13685,21 @@ define hidden void @"_ZN4just5error10format_cmd28_$u7b$$u7b$closure$u7d$$u7d$17h %7 = alloca { { ptr, i64 }, { ptr, i64 }, { ptr, [1 x i64] } }, align 8 %8 = alloca { { i64, [1 x i64] }, { i64, [1 x i64] }, { ptr, ptr }, i32, i32, i8, [7 x i8] }, align 8 %9 = alloca { { { i64, ptr, {} }, i64 } }, align 8 - %10 = alloca { { i64, [2 x i64] }, { ptr, i64 } }, align 8 - call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %10) - %11 = getelementptr inbounds i8, ptr %2, i64 8 - %12 = load ptr, ptr %11, align 8, !nonnull !4, !noundef !4 - %13 = getelementptr inbounds i8, ptr %2, i64 16 - %14 = load i64, ptr %13, align 8, !noundef !4 - call void @_ZN3std3sys6os_str5bytes5Slice15to_string_lossy17hc81afb44f3a3eefcE(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %10, ptr noalias noundef nonnull readonly align 1 %12, i64 noundef %14) - %15 = getelementptr inbounds i8, ptr %10, i64 24 - store ptr @anon.aa5a0d5c8376d20d7c74586073353af9.113, ptr %15, align 8 - %16 = getelementptr inbounds i8, ptr %10, i64 32 - store i64 1, ptr %16, align 8 + %10 = alloca { i64, [2 x i64] }, align 8 + %11 = alloca { { i64, [2 x i64] }, { ptr, i64 } }, align 8 + call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %11) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) + %12 = getelementptr inbounds i8, ptr %2, i64 8 + %13 = load ptr, ptr %12, align 8, !nonnull !4, !noundef !4 + %14 = getelementptr inbounds i8, ptr %2, i64 16 + %15 = load i64, ptr %14, align 8, !noundef !4 + call void @_ZN3std3sys6os_str5bytes5Slice15to_string_lossy17hc81afb44f3a3eefcE(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %10, ptr noalias noundef nonnull readonly align 1 %13, i64 noundef %15) + %16 = getelementptr inbounds i8, ptr %11, i64 24 + store ptr @anon.aa5a0d5c8376d20d7c74586073353af9.113, ptr %16, align 8 + %17 = getelementptr inbounds i8, ptr %11, i64 32 + store i64 1, ptr %17, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %10, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9), !noalias !2693 store i64 0, ptr %9, align 8, !noalias !2693 %.sroa.4.0..sroa_idx.i = getelementptr inbounds i8, ptr %9, i64 8 @@ -13703,119 +13707,119 @@ define hidden void @"_ZN4just5error10format_cmd28_$u7b$$u7b$closure$u7d$$u7d$17h %.sroa.5.0..sroa_idx.i = getelementptr inbounds i8, ptr %9, i64 16 store i64 0, ptr %.sroa.5.0..sroa_idx.i, align 8, !noalias !2693 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8), !noalias !2693 - %17 = getelementptr inbounds i8, ptr %8, i64 52 - store i32 0, ptr %17, align 4, !noalias !2693 - %18 = getelementptr inbounds i8, ptr %8, i64 48 - store i32 32, ptr %18, align 8, !noalias !2693 - %19 = getelementptr inbounds i8, ptr %8, i64 56 - store i8 3, ptr %19, align 8, !noalias !2693 + %18 = getelementptr inbounds i8, ptr %8, i64 52 + store i32 0, ptr %18, align 4, !noalias !2693 + %19 = getelementptr inbounds i8, ptr %8, i64 48 + store i32 32, ptr %19, align 8, !noalias !2693 + %20 = getelementptr inbounds i8, ptr %8, i64 56 + store i8 3, ptr %20, align 8, !noalias !2693 store i64 0, ptr %8, align 8, !noalias !2693 - %20 = getelementptr inbounds i8, ptr %8, i64 16 - store i64 0, ptr %20, align 8, !noalias !2693 - %21 = getelementptr inbounds i8, ptr %8, i64 32 - store ptr %9, ptr %21, align 8, !noalias !2693 - %22 = getelementptr inbounds i8, ptr %8, i64 40 - store ptr @anon.aa5a0d5c8376d20d7c74586073353af9.45, ptr %22, align 8, !noalias !2693 + %21 = getelementptr inbounds i8, ptr %8, i64 16 + store i64 0, ptr %21, align 8, !noalias !2693 + %22 = getelementptr inbounds i8, ptr %8, i64 32 + store ptr %9, ptr %22, align 8, !noalias !2693 + %23 = getelementptr inbounds i8, ptr %8, i64 40 + store ptr @anon.aa5a0d5c8376d20d7c74586073353af9.45, ptr %23, align 8, !noalias !2693 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7), !noalias !2697 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6), !noalias !2697 - store ptr %15, ptr %6, align 8, !noalias !2697 - %23 = getelementptr inbounds i8, ptr %6, i64 8 - store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h49e559639de636d3E", ptr %23, align 8, !noalias !2697 - %24 = getelementptr inbounds i8, ptr %6, i64 16 - store ptr %10, ptr %24, align 8, !noalias !2697 - %25 = getelementptr inbounds i8, ptr %6, i64 24 - store ptr @"_ZN66_$LT$alloc..borrow..Cow$LT$B$GT$$u20$as$u20$core..fmt..Display$GT$3fmt17hd3ccb5c55869feb7E", ptr %25, align 8, !noalias !2697 - %26 = getelementptr inbounds i8, ptr %6, i64 32 - store ptr %15, ptr %26, align 8, !noalias !2697 - %27 = getelementptr inbounds i8, ptr %6, i64 40 - store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h49e559639de636d3E", ptr %27, align 8, !noalias !2697 + store ptr %16, ptr %6, align 8, !noalias !2697 + %24 = getelementptr inbounds i8, ptr %6, i64 8 + store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h49e559639de636d3E", ptr %24, align 8, !noalias !2697 + %25 = getelementptr inbounds i8, ptr %6, i64 16 + store ptr %11, ptr %25, align 8, !noalias !2697 + %26 = getelementptr inbounds i8, ptr %6, i64 24 + store ptr @"_ZN66_$LT$alloc..borrow..Cow$LT$B$GT$$u20$as$u20$core..fmt..Display$GT$3fmt17hd3ccb5c55869feb7E", ptr %26, align 8, !noalias !2697 + %27 = getelementptr inbounds i8, ptr %6, i64 32 + store ptr %16, ptr %27, align 8, !noalias !2697 + %28 = getelementptr inbounds i8, ptr %6, i64 40 + store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h49e559639de636d3E", ptr %28, align 8, !noalias !2697 store ptr @anon.33818b486a90266c1f1c95bf072e35a3.296.llvm.17757648456425634998, ptr %7, align 8, !alias.scope !2701, !noalias !2704 - %28 = getelementptr inbounds i8, ptr %7, i64 8 - store i64 3, ptr %28, align 8, !alias.scope !2701, !noalias !2704 - %29 = getelementptr inbounds i8, ptr %7, i64 32 - store ptr null, ptr %29, align 8, !alias.scope !2701, !noalias !2704 - %30 = getelementptr inbounds i8, ptr %7, i64 16 - store ptr %6, ptr %30, align 8, !alias.scope !2701, !noalias !2704 - %31 = getelementptr inbounds i8, ptr %7, i64 24 - store i64 3, ptr %31, align 8, !alias.scope !2701, !noalias !2704 - %32 = invoke noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17ha383391698d817f8E(ptr noalias noundef nonnull align 8 dereferenceable(64) %8, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %7) - to label %35 unwind label %33, !noalias !2707 - -33: ; preds = %36, %3 - %34 = landingpad { ptr, i32 } + %29 = getelementptr inbounds i8, ptr %7, i64 8 + store i64 3, ptr %29, align 8, !alias.scope !2701, !noalias !2704 + %30 = getelementptr inbounds i8, ptr %7, i64 32 + store ptr null, ptr %30, align 8, !alias.scope !2701, !noalias !2704 + %31 = getelementptr inbounds i8, ptr %7, i64 16 + store ptr %6, ptr %31, align 8, !alias.scope !2701, !noalias !2704 + %32 = getelementptr inbounds i8, ptr %7, i64 24 + store i64 3, ptr %32, align 8, !alias.scope !2701, !noalias !2704 + %33 = invoke noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17ha383391698d817f8E(ptr noalias noundef nonnull align 8 dereferenceable(64) %8, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %7) + to label %36 unwind label %34, !noalias !2707 + +34: ; preds = %37, %3 + %35 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h2f4461582ec6620eE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %9) #42 - to label %.body unwind label %37, !noalias !2707 + to label %.body unwind label %38, !noalias !2707 -35: ; preds = %3 +36: ; preds = %3 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7), !noalias !2697 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6), !noalias !2697 call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %4), !noalias !2693 - br i1 %32, label %36, label %39 + br i1 %33, label %37, label %40 -36: ; preds = %35 +37: ; preds = %36 invoke void @_ZN4core6result13unwrap_failed17ha188096f98826595E(ptr noalias noundef nonnull readonly align 1 @anon.aa5a0d5c8376d20d7c74586073353af9.46, i64 noundef 55, ptr noundef nonnull align 1 %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.aa5a0d5c8376d20d7c74586073353af9.101, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.aa5a0d5c8376d20d7c74586073353af9.48) #40 - to label %.noexc.i unwind label %33, !noalias !2707 + to label %.noexc.i unwind label %34, !noalias !2707 -.noexc.i: ; preds = %36 +.noexc.i: ; preds = %37 unreachable -37: ; preds = %33 - %38 = landingpad { ptr, i32 } +38: ; preds = %34 + %39 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #41, !noalias !2707 unreachable -.body: ; preds = %33 - invoke void @"_ZN4core3ptr84drop_in_place$LT$just..enclosure..Enclosure$LT$alloc..borrow..Cow$LT$str$GT$$GT$$GT$17h55771aad00989ed2E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %10) #42 - to label %53 unwind label %51 +.body: ; preds = %34 + invoke void @"_ZN4core3ptr84drop_in_place$LT$just..enclosure..Enclosure$LT$alloc..borrow..Cow$LT$str$GT$$GT$$GT$17h55771aad00989ed2E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %11) #42 + to label %54 unwind label %52 -39: ; preds = %35 +40: ; preds = %36 call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %4), !noalias !2693 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false), !noalias !2708 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8), !noalias !2693 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9), !noalias !2693 call void @llvm.experimental.noalias.scope.decl(metadata !2709) call void @llvm.experimental.noalias.scope.decl(metadata !2712) - %40 = load i64, ptr %10, align 8, !range !685, !alias.scope !2715, !noundef !4 - %41 = icmp eq i64 %40, -9223372036854775808 - br i1 %41, label %"_ZN4core3ptr84drop_in_place$LT$just..enclosure..Enclosure$LT$alloc..borrow..Cow$LT$str$GT$$GT$$GT$17h55771aad00989ed2E.exit", label %42 + %41 = load i64, ptr %11, align 8, !range !685, !alias.scope !2715, !noundef !4 + %42 = icmp eq i64 %41, -9223372036854775808 + br i1 %42, label %"_ZN4core3ptr84drop_in_place$LT$just..enclosure..Enclosure$LT$alloc..borrow..Cow$LT$str$GT$$GT$$GT$17h55771aad00989ed2E.exit", label %43 -42: ; preds = %39 +43: ; preds = %40 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !2716 - call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hb2fe6f6f3762db27E.llvm.1798434116971987782"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %10) - %43 = getelementptr inbounds i8, ptr %5, i64 8 - %44 = load i64, ptr %43, align 8, !range !685, !noalias !2716, !noundef !4 - %.not.i.i.i.i.i.i = icmp eq i64 %44, 0 - br i1 %.not.i.i.i.i.i.i, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h2f4461582ec6620eE.exit.i.i", label %45 - -45: ; preds = %42 - %46 = getelementptr inbounds i8, ptr %5, i64 16 - %47 = load i64, ptr %46, align 8, !noalias !2716, !noundef !4 - %48 = icmp eq i64 %47, 0 - br i1 %48, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h2f4461582ec6620eE.exit.i.i", label %49 - -49: ; preds = %45 - %50 = load ptr, ptr %5, align 8, !noalias !2716, !nonnull !4, !noundef !4 - call void @__rust_dealloc(ptr noundef nonnull %50, i64 noundef %47, i64 noundef %44) #43 + call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hb2fe6f6f3762db27E.llvm.1798434116971987782"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %11) + %44 = getelementptr inbounds i8, ptr %5, i64 8 + %45 = load i64, ptr %44, align 8, !range !685, !noalias !2716, !noundef !4 + %.not.i.i.i.i.i.i = icmp eq i64 %45, 0 + br i1 %.not.i.i.i.i.i.i, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h2f4461582ec6620eE.exit.i.i", label %46 + +46: ; preds = %43 + %47 = getelementptr inbounds i8, ptr %5, i64 16 + %48 = load i64, ptr %47, align 8, !noalias !2716, !noundef !4 + %49 = icmp eq i64 %48, 0 + br i1 %49, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h2f4461582ec6620eE.exit.i.i", label %50 + +50: ; preds = %46 + %51 = load ptr, ptr %5, align 8, !noalias !2716, !nonnull !4, !noundef !4 + call void @__rust_dealloc(ptr noundef nonnull %51, i64 noundef %48, i64 noundef %45) #43 br label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h2f4461582ec6620eE.exit.i.i" -"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h2f4461582ec6620eE.exit.i.i": ; preds = %49, %45, %42 +"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h2f4461582ec6620eE.exit.i.i": ; preds = %50, %46, %43 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !2716 br label %"_ZN4core3ptr84drop_in_place$LT$just..enclosure..Enclosure$LT$alloc..borrow..Cow$LT$str$GT$$GT$$GT$17h55771aad00989ed2E.exit" -"_ZN4core3ptr84drop_in_place$LT$just..enclosure..Enclosure$LT$alloc..borrow..Cow$LT$str$GT$$GT$$GT$17h55771aad00989ed2E.exit": ; preds = %39, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h2f4461582ec6620eE.exit.i.i" - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) +"_ZN4core3ptr84drop_in_place$LT$just..enclosure..Enclosure$LT$alloc..borrow..Cow$LT$str$GT$$GT$$GT$17h55771aad00989ed2E.exit": ; preds = %40, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h2f4461582ec6620eE.exit.i.i" + call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) ret void -51: ; preds = %.body - %52 = landingpad { ptr, i32 } +52: ; preds = %.body + %53 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #41 unreachable -53: ; preds = %.body - resume { ptr, i32 } %34 +54: ; preds = %.body + resume { ptr, i32 } %35 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/llvm/optimized/CGClass.cpp.ll b/bench/llvm/optimized/CGClass.cpp.ll index 9a3b4c3de5d..8ff6dcd5de6 100644 --- a/bench/llvm/optimized/CGClass.cpp.ll +++ b/bench/llvm/optimized/CGClass.cpp.ll @@ -5471,11 +5471,11 @@ _ZN4llvm11SmallVectorIN5clang7CodeGen15CodeGenFunction4VPtrELj4EED2Ev.exit: ; pr ; Function Attrs: mustprogress nounwind uwtable define dso_local void @_ZN5clang7CodeGen15CodeGenFunction18EmitDestructorBodyERNS0_15FunctionArgListE(ptr noundef nonnull align 8 dereferenceable(6488) %0, ptr nocapture noundef nonnull readnone align 8 dereferenceable(144) %1) local_unnamed_addr #0 align 2 { - %3 = alloca %"class.clang::CodeGen::Address", align 8 - %4 = alloca %"class.clang::CodeGen::Address", align 8 - %5 = alloca %"class.llvm::Twine", align 8 + %3 = alloca %"class.llvm::Twine", align 8 + %4 = alloca %"class.clang::CodeGen::CodeGenFunction::RunCleanupsScope", align 8 + %5 = alloca %"class.clang::CodeGen::Address", align 8 %6 = alloca %"class.clang::CodeGen::CodeGenFunction::RunCleanupsScope", align 8 - %7 = alloca %"class.clang::CodeGen::CodeGenFunction::RunCleanupsScope", align 8 + %7 = alloca %"class.clang::CodeGen::Address", align 8 %8 = getelementptr inbounds nuw i8, ptr %0, i64 1912 %.0.copyload.i.i.i.i = load i64, ptr %8, align 8 %9 = and i64 %.0.copyload.i.i.i.i, -8 @@ -5526,12 +5526,12 @@ _ZNK5clang13CXXMethodDecl9getParentEv.exit: ; preds = %13, %21 %40 = tail call ptr @_ZNK4llvm13AttributeList19addAttributeAtIndexERNS_11LLVMContextEjNS_9Attribute8AttrKindE(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %39, i32 noundef -1, i32 noundef 39) #13 store ptr %40, ptr %36, align 8 %41 = getelementptr inbounds nuw i8, ptr %0, i64 280 - call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5) + call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %3) %42 = tail call noundef ptr @_ZN4llvm4UsernwEmj(i64 noundef 72, i32 noundef 0) #13 %43 = getelementptr inbounds nuw i8, ptr %0, i64 352 %44 = load ptr, ptr %43, align 8 tail call void @_ZN4llvm15UnreachableInstC1ERNS_11LLVMContextENS_14InsertPositionE(ptr noundef nonnull align 8 dereferenceable(72) %42, ptr noundef nonnull align 8 dereferenceable(8) %44, ptr null, i64 0) #13 - %45 = getelementptr inbounds nuw i8, ptr %5, i64 32 + %45 = getelementptr inbounds nuw i8, ptr %3, i64 32 %46 = getelementptr inbounds nuw i8, ptr %0, i64 368 store i16 257, ptr %45, align 8 %47 = load ptr, ptr %46, align 8 @@ -5542,7 +5542,7 @@ _ZNK5clang13CXXMethodDecl9getParentEv.exit: ; preds = %13, %21 %49 = load ptr, ptr %47, align 8 %50 = getelementptr inbounds i8, ptr %49, i64 16 %51 = load ptr, ptr %50, align 8 - call void %51(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull %42, ptr noundef nonnull align 8 dereferenceable(34) %5, ptr %.sroa.0.0.copyload.i.i, i64 %.sroa.2.0.copyload.i.i) #13 + call void %51(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull %42, ptr noundef nonnull align 8 dereferenceable(34) %3, ptr %.sroa.0.0.copyload.i.i, i64 %.sroa.2.0.copyload.i.i) #13 %52 = load ptr, ptr %41, align 8 %53 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %41) #13 %54 = getelementptr inbounds %"struct.std::pair.1316", ptr %52, i64 %53 @@ -5560,7 +5560,7 @@ _ZNK5clang13CXXMethodDecl9getParentEv.exit: ; preds = %13, %21 br i1 %.not.i.i.i, label %_ZN4llvm13IRBuilderBase17CreateUnreachableEv.exit, label %.lr.ph.i.i.i _ZN4llvm13IRBuilderBase17CreateUnreachableEv.exit: ; preds = %.lr.ph.i.i.i, %34 - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) + call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) %59 = getelementptr inbounds nuw i8, ptr %0, i64 328 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(18) %59, i8 0, i64 18, i1 false) br label %333 @@ -5584,18 +5584,18 @@ _ZN4llvm13IRBuilderBase17CreateUnreachableEv.exit: ; preds = %.lr.ph.i.i.i, %34 br i1 %67, label %68, label %_ZN4llvm15isa_and_nonnullIJN5clang10CXXTryStmtEEPNS1_4StmtEEEbRKT0_.exit 68: ; preds = %.thread, %65 - %69 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %70 = getelementptr inbounds nuw i8, ptr %6, i64 24 + %69 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %70 = getelementptr inbounds nuw i8, ptr %4, i64 24 store ptr %0, ptr %70, align 8 - %71 = getelementptr inbounds nuw i8, ptr %6, i64 32 + %71 = getelementptr inbounds nuw i8, ptr %4, i64 32 %72 = getelementptr inbounds nuw i8, ptr %0, i64 2816 %73 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %72) #13 store i64 %73, ptr %71, align 8 - %74 = getelementptr inbounds nuw i8, ptr %6, i64 40 + %74 = getelementptr inbounds nuw i8, ptr %4, i64 40 store i8 0, ptr %74, align 8 - %75 = getelementptr inbounds nuw i8, ptr %6, i64 49 + %75 = getelementptr inbounds nuw i8, ptr %4, i64 49 store i8 1, ptr %75, align 1 - %76 = getelementptr inbounds nuw i8, ptr %6, i64 56 + %76 = getelementptr inbounds nuw i8, ptr %4, i64 56 store ptr %0, ptr %76, align 8 %77 = getelementptr inbounds nuw i8, ptr %0, i64 2224 %78 = load ptr, ptr %77, align 8 @@ -5604,14 +5604,14 @@ _ZN4llvm13IRBuilderBase17CreateUnreachableEv.exit: ; preds = %.lr.ph.i.i.i, %34 %81 = ptrtoint ptr %78 to i64 %82 = ptrtoint ptr %80 to i64 %83 = sub i64 %81, %82 - store i64 %83, ptr %6, align 8 + store i64 %83, ptr %4, align 8 %84 = getelementptr inbounds nuw i8, ptr %0, i64 2536 %85 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseImE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %84) #13 - %86 = getelementptr inbounds nuw i8, ptr %6, i64 16 + %86 = getelementptr inbounds nuw i8, ptr %4, i64 16 store i64 %85, ptr %86, align 8 %87 = getelementptr inbounds nuw i8, ptr %0, i64 3197 %88 = load i8, ptr %87, align 1 - %89 = getelementptr inbounds nuw i8, ptr %6, i64 48 + %89 = getelementptr inbounds nuw i8, ptr %4, i64 48 %90 = and i8 %88, 1 store i8 %90, ptr %89, align 8 store i8 0, ptr %87, align 1 @@ -5694,8 +5694,7 @@ _ZNK5clang13ReferenceType14getPointeeTypeEv.exit.i.i: ; preds = %_ZNK5clang4Type _ZNK5clang13CXXMethodDecl30getFunctionObjectParameterTypeEv.exit: ; preds = %103, %_ZNK5clang4Type5getAsINS_13ReferenceTypeEEEPKT_v.exit.i.i, %_ZNK5clang13ReferenceType14getPointeeTypeEv.exit.i.i %.sroa.0.0.in.i.sroa.speculated.i = phi i64 [ %.sroa.0.0.in.i.sroa.speculate.load._ZNK5clang13ReferenceType14getPointeeTypeEv.exit.i.i, %_ZNK5clang13ReferenceType14getPointeeTypeEv.exit.i.i ], [ %96, %103 ], [ %96, %_ZNK5clang4Type5getAsINS_13ReferenceTypeEEEPKT_v.exit.i.i ] - call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4) - call void @_ZN5clang7CodeGen15CodeGenFunction18LoadCXXThisAddressEv(ptr dead_on_unwind nonnull writable sret(%"class.clang::CodeGen::Address") align 8 %4, ptr noundef nonnull align 8 dereferenceable(6488) %0) + call void @_ZN5clang7CodeGen15CodeGenFunction18LoadCXXThisAddressEv(ptr dead_on_unwind nonnull writable sret(%"class.clang::CodeGen::Address") align 8 %5, ptr noundef nonnull align 8 dereferenceable(6488) %0) %128 = getelementptr inbounds nuw i8, ptr %0, i64 144 %129 = load ptr, ptr %128, align 8 %130 = getelementptr inbounds nuw i8, ptr %129, i64 224 @@ -5703,12 +5702,11 @@ _ZNK5clang13CXXMethodDecl30getFunctionObjectParameterTypeEv.exit: ; preds = %103 %132 = load ptr, ptr %131, align 8 %133 = getelementptr inbounds i8, ptr %132, i64 496 %134 = load ptr, ptr %133, align 8 - tail call void %134(ptr noundef nonnull align 8 dereferenceable(24) %131, ptr noundef nonnull align 8 dereferenceable(6488) %0, ptr noundef nonnull %10, i32 noundef 1, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef nonnull byval(%"class.clang::CodeGen::Address") align 8 %4, i64 %.sroa.0.0.in.i.sroa.speculated.i) #13 - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4) + tail call void %134(ptr noundef nonnull align 8 dereferenceable(24) %131, ptr noundef nonnull align 8 dereferenceable(6488) %0, ptr noundef nonnull %10, i32 noundef 1, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef nonnull byval(%"class.clang::CodeGen::Address") align 8 %5, i64 %.sroa.0.0.in.i.sroa.speculated.i) #13 br label %135 135: ; preds = %_ZNK5clang13CXXMethodDecl30getFunctionObjectParameterTypeEv.exit, %68 - call void @_ZN5clang7CodeGen15CodeGenFunction16RunCleanupsScopeD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %6) #13 + call void @_ZN5clang7CodeGen15CodeGenFunction16RunCleanupsScopeD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %4) #13 br label %333 _ZN4llvm15isa_and_nonnullIJN5clang10CXXTryStmtEEPNS1_4StmtEEEbRKT0_.exit: ; preds = %.thread @@ -5723,18 +5721,18 @@ _ZN4llvm15isa_and_nonnullIJN5clang10CXXTryStmtEEPNS1_4StmtEEEbRKT0_.exit: ; pred _ZN4llvm15isa_and_nonnullIJN5clang10CXXTryStmtEEPNS1_4StmtEEEbRKT0_.exit.thread: ; preds = %65, %138, %_ZN4llvm15isa_and_nonnullIJN5clang10CXXTryStmtEEPNS1_4StmtEEEbRKT0_.exit %.0.i.i73 = phi i1 [ true, %138 ], [ false, %_ZN4llvm15isa_and_nonnullIJN5clang10CXXTryStmtEEPNS1_4StmtEEEbRKT0_.exit ], [ false, %65 ] tail call void @_ZN5clang7CodeGen15CodeGenFunction26EmitAsanPrologueOrEpilogueEb(ptr noundef nonnull align 8 dereferenceable(6488) %0, i1 noundef zeroext false) - %139 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %140 = getelementptr inbounds nuw i8, ptr %7, i64 24 + %139 = getelementptr inbounds nuw i8, ptr %6, i64 8 + %140 = getelementptr inbounds nuw i8, ptr %6, i64 24 store ptr %0, ptr %140, align 8 - %141 = getelementptr inbounds nuw i8, ptr %7, i64 32 + %141 = getelementptr inbounds nuw i8, ptr %6, i64 32 %142 = getelementptr inbounds nuw i8, ptr %0, i64 2816 %143 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %142) #13 store i64 %143, ptr %141, align 8 - %144 = getelementptr inbounds nuw i8, ptr %7, i64 40 + %144 = getelementptr inbounds nuw i8, ptr %6, i64 40 store i8 0, ptr %144, align 8 - %145 = getelementptr inbounds nuw i8, ptr %7, i64 49 + %145 = getelementptr inbounds nuw i8, ptr %6, i64 49 store i8 1, ptr %145, align 1 - %146 = getelementptr inbounds nuw i8, ptr %7, i64 56 + %146 = getelementptr inbounds nuw i8, ptr %6, i64 56 store ptr %0, ptr %146, align 8 %147 = getelementptr inbounds nuw i8, ptr %0, i64 2224 %148 = load ptr, ptr %147, align 8 @@ -5743,14 +5741,14 @@ _ZN4llvm15isa_and_nonnullIJN5clang10CXXTryStmtEEPNS1_4StmtEEEbRKT0_.exit.thread: %151 = ptrtoint ptr %148 to i64 %152 = ptrtoint ptr %150 to i64 %153 = sub i64 %151, %152 - store i64 %153, ptr %7, align 8 + store i64 %153, ptr %6, align 8 %154 = getelementptr inbounds nuw i8, ptr %0, i64 2536 %155 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseImE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %154) #13 - %156 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %156 = getelementptr inbounds nuw i8, ptr %6, i64 16 store i64 %155, ptr %156, align 8 %157 = getelementptr inbounds nuw i8, ptr %0, i64 3197 %158 = load i8, ptr %157, align 1 - %159 = getelementptr inbounds nuw i8, ptr %7, i64 48 + %159 = getelementptr inbounds nuw i8, ptr %6, i64 48 %160 = and i8 %158, 1 store i8 %160, ptr %159, align 8 store i8 0, ptr %157, align 1 @@ -5836,8 +5834,7 @@ _ZNK5clang13ReferenceType14getPointeeTypeEv.exit.i.i51: ; preds = %_ZNK5clang4Ty _ZNK5clang13CXXMethodDecl30getFunctionObjectParameterTypeEv.exit54: ; preds = %172, %_ZNK5clang4Type5getAsINS_13ReferenceTypeEEEPKT_v.exit.i.i39, %_ZNK5clang13ReferenceType14getPointeeTypeEv.exit.i.i51 %.sroa.0.0.in.i.sroa.speculated.i38 = phi i64 [ %.sroa.0.0.in.i.sroa.speculate.load._ZNK5clang13ReferenceType14getPointeeTypeEv.exit.i.i53, %_ZNK5clang13ReferenceType14getPointeeTypeEv.exit.i.i51 ], [ %165, %172 ], [ %165, %_ZNK5clang4Type5getAsINS_13ReferenceTypeEEEPKT_v.exit.i.i39 ] - call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3) - call void @_ZN5clang7CodeGen15CodeGenFunction18LoadCXXThisAddressEv(ptr dead_on_unwind nonnull writable sret(%"class.clang::CodeGen::Address") align 8 %3, ptr noundef nonnull align 8 dereferenceable(6488) %0) + call void @_ZN5clang7CodeGen15CodeGenFunction18LoadCXXThisAddressEv(ptr dead_on_unwind nonnull writable sret(%"class.clang::CodeGen::Address") align 8 %7, ptr noundef nonnull align 8 dereferenceable(6488) %0) %197 = getelementptr inbounds nuw i8, ptr %0, i64 144 %198 = load ptr, ptr %197, align 8 %199 = getelementptr inbounds nuw i8, ptr %198, i64 224 @@ -5845,8 +5842,7 @@ _ZNK5clang13CXXMethodDecl30getFunctionObjectParameterTypeEv.exit54: ; preds = %1 %201 = load ptr, ptr %200, align 8 %202 = getelementptr inbounds i8, ptr %201, i64 496 %203 = load ptr, ptr %202, align 8 - tail call void %203(ptr noundef nonnull align 8 dereferenceable(24) %200, ptr noundef nonnull align 8 dereferenceable(6488) %0, ptr noundef nonnull %10, i32 noundef 2, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef nonnull byval(%"class.clang::CodeGen::Address") align 8 %3, i64 %.sroa.0.0.in.i.sroa.speculated.i38) #13 - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3) + tail call void %203(ptr noundef nonnull align 8 dereferenceable(24) %200, ptr noundef nonnull align 8 dereferenceable(6488) %0, ptr noundef nonnull %10, i32 noundef 2, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef nonnull byval(%"class.clang::CodeGen::Address") align 8 %7, i64 %.sroa.0.0.in.i.sroa.speculated.i38) #13 br label %318 204: ; preds = %163, %_ZN4llvm15isa_and_nonnullIJN5clang10CXXTryStmtEEPNS1_4StmtEEEbRKT0_.exit.thread @@ -6095,7 +6091,7 @@ _ZN5clang7CodeGen15CodeGenFunction16RunCleanupsScope12ForceCleanupESt16initializ br label %332 332: ; preds = %331, %_ZN5clang7CodeGen15CodeGenFunction16RunCleanupsScope12ForceCleanupESt16initializer_listIPPN4llvm5ValueEE.exit - call void @_ZN5clang7CodeGen15CodeGenFunction16RunCleanupsScopeD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %7) #13 + call void @_ZN5clang7CodeGen15CodeGenFunction16RunCleanupsScopeD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %6) #13 br label %333 333: ; preds = %332, %135, %_ZN4llvm13IRBuilderBase17CreateUnreachableEv.exit @@ -16308,7 +16304,6 @@ _ZNK5clang13CXXMethodDecl30getFunctionObjectParameterTypeEv.exit: ; preds = %27, %56 = getelementptr inbounds nuw i8, ptr %0, i64 16 %57 = load i8, ptr %56, align 8 %58 = trunc i8 %57 to i1 - call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4) call void @_ZN5clang7CodeGen15CodeGenFunction37GetAddressOfDirectBaseInCompleteClassENS0_7AddressEPKNS_13CXXRecordDeclES5_b(ptr dead_on_unwind nonnull writable sret(%"class.clang::CodeGen::Address") align 8 %4, ptr noundef nonnull align 8 dereferenceable(6488) %1, ptr noundef nonnull byval(%"class.clang::CodeGen::Address") align 8 %5, ptr noundef %54, ptr noundef %55, i1 noundef zeroext %58) %59 = load i8, ptr %56, align 8 %60 = trunc i8 %59 to i1 @@ -16320,7 +16315,6 @@ _ZNK5clang13CXXMethodDecl30getFunctionObjectParameterTypeEv.exit: ; preds = %27, %66 = getelementptr inbounds i8, ptr %65, i64 496 %67 = load ptr, ptr %66, align 8 tail call void %67(ptr noundef nonnull align 8 dereferenceable(24) %64, ptr noundef nonnull align 8 dereferenceable(6488) %1, ptr noundef nonnull %19, i32 noundef 2, i1 noundef zeroext %60, i1 noundef zeroext false, ptr noundef nonnull byval(%"class.clang::CodeGen::Address") align 8 %4, i64 %.sroa.0.0.in.i.sroa.speculated.i) #13 - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4) ret void } diff --git a/bench/llvm/optimized/IndexDecl.cpp.ll b/bench/llvm/optimized/IndexDecl.cpp.ll index 63ad7182e42..33ccedfb09f 100644 --- a/bench/llvm/optimized/IndexDecl.cpp.ll +++ b/bench/llvm/optimized/IndexDecl.cpp.ll @@ -4706,85 +4706,90 @@ declare noundef ptr @_ZNK5clang12FunctionDecl38getTemplateSpecializationArgsAsWr ; Function Attrs: mustprogress nounwind uwtable define internal fastcc void @_ZN12_GLOBAL__N_119IndexingDeclVisitor25handleTemplateArgumentLocERKN5clang19TemplateArgumentLocEPKNS1_9NamedDeclEPKNS1_11DeclContextE(ptr nocapture noundef nonnull readonly align 8 dereferenceable(9) %0, ptr nocapture noundef nonnull readonly align 8 dereferenceable(32) %1, ptr noundef %2, ptr noundef %3) unnamed_addr #0 align 2 { %5 = alloca %"class.clang::TemplateName", align 8 - %6 = alloca %"class.llvm::ArrayRef", align 8 - %7 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %.sroa.0.0.copyload.i = load i64, ptr %7, align 8 - %8 = load i32, ptr %1, align 8 - %9 = and i32 %8, 2147483647 - switch i32 %9, label %42 [ - i32 8, label %10 - i32 1, label %14 - i32 6, label %18 - i32 7, label %18 + %6 = alloca %"class.clang::TemplateName", align 8 + %7 = alloca %"class.llvm::ArrayRef", align 8 + %8 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %.sroa.0.0.copyload.i = load i64, ptr %8, align 8 + %9 = load i32, ptr %1, align 8 + %10 = and i32 %9, 2147483647 + switch i32 %10, label %44 [ + i32 8, label %11 + i32 1, label %15 + i32 6, label %19 + i32 7, label %19 ] -10: ; preds = %4 - %11 = load ptr, ptr %0, align 8 - %12 = and i64 %.sroa.0.0.copyload.i, -4 - %13 = inttoptr i64 %12 to ptr - tail call void @_ZN5clang5index15IndexingContext9indexBodyEPKNS_4StmtEPKNS_9NamedDeclEPKNS_11DeclContextE(ptr noundef nonnull align 8 dereferenceable(64) %11, ptr noundef %13, ptr noundef %2, ptr noundef %3) #9 - br label %42 - -14: ; preds = %4 - %15 = load ptr, ptr %0, align 8 - %16 = and i64 %.sroa.0.0.copyload.i, -4 - %17 = inttoptr i64 %16 to ptr - tail call void @_ZN5clang5index15IndexingContext19indexTypeSourceInfoEPNS_14TypeSourceInfoEPKNS_9NamedDeclEPKNS_11DeclContextEbb(ptr noundef nonnull align 8 dereferenceable(64) %15, ptr noundef %17, ptr noundef %2, ptr noundef %3, i1 noundef zeroext false, i1 noundef zeroext false) #9 - br label %42 +11: ; preds = %4 + %12 = load ptr, ptr %0, align 8 + %13 = and i64 %.sroa.0.0.copyload.i, -4 + %14 = inttoptr i64 %13 to ptr + tail call void @_ZN5clang5index15IndexingContext9indexBodyEPKNS_4StmtEPKNS_9NamedDeclEPKNS_11DeclContextE(ptr noundef nonnull align 8 dereferenceable(64) %12, ptr noundef %14, ptr noundef %2, ptr noundef %3) #9 + br label %44 -18: ; preds = %4, %4 - %19 = load ptr, ptr %0, align 8 - %20 = and i32 %8, 2147483646 - %switch.i = icmp eq i32 %20, 6 - br i1 %switch.i, label %21, label %_ZNK5clang19TemplateArgumentLoc23getTemplateQualifierLocEv.exit +15: ; preds = %4 + %16 = load ptr, ptr %0, align 8 + %17 = and i64 %.sroa.0.0.copyload.i, -4 + %18 = inttoptr i64 %17 to ptr + tail call void @_ZN5clang5index15IndexingContext19indexTypeSourceInfoEPNS_14TypeSourceInfoEPKNS_9NamedDeclEPKNS_11DeclContextEbb(ptr noundef nonnull align 8 dereferenceable(64) %16, ptr noundef %18, ptr noundef %2, ptr noundef %3, i1 noundef zeroext false, i1 noundef zeroext false) #9 + br label %44 -21: ; preds = %18 - %22 = and i64 %.sroa.0.0.copyload.i, -4 - %23 = inttoptr i64 %22 to ptr - %24 = load ptr, ptr %23, align 8 - %25 = getelementptr inbounds nuw i8, ptr %23, i64 8 - %26 = load ptr, ptr %25, align 8 +19: ; preds = %4, %4 + %20 = load ptr, ptr %0, align 8 + %21 = and i32 %9, 2147483646 + %switch.i = icmp eq i32 %21, 6 + br i1 %switch.i, label %22, label %_ZNK5clang19TemplateArgumentLoc23getTemplateQualifierLocEv.exit + +22: ; preds = %19 + %23 = and i64 %.sroa.0.0.copyload.i, -4 + %24 = inttoptr i64 %23 to ptr + %25 = load ptr, ptr %24, align 8 + %26 = getelementptr inbounds nuw i8, ptr %24, i64 8 + %27 = load ptr, ptr %26, align 8 br label %_ZNK5clang19TemplateArgumentLoc23getTemplateQualifierLocEv.exit -_ZNK5clang19TemplateArgumentLoc23getTemplateQualifierLocEv.exit: ; preds = %18, %21 - %.sroa.0.0.i = phi ptr [ %24, %21 ], [ null, %18 ] - %.sroa.4.0.i = phi ptr [ %26, %21 ], [ null, %18 ] - tail call void @_ZN5clang5index15IndexingContext27indexNestedNameSpecifierLocENS_22NestedNameSpecifierLocEPKNS_9NamedDeclEPKNS_11DeclContextE(ptr noundef nonnull align 8 dereferenceable(64) %19, ptr %.sroa.0.0.i, ptr %.sroa.4.0.i, ptr noundef %2, ptr noundef %3) #9 - %27 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %28 = load ptr, ptr %27, align 8 - call void @_ZN5clang12TemplateNameC1EPv(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %28) #9 - %29 = call noundef ptr @_ZNK5clang12TemplateName17getAsTemplateDeclEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9 - %.not = icmp eq ptr %29, null - br i1 %.not, label %42, label %30 - -30: ; preds = %_ZNK5clang19TemplateArgumentLoc23getTemplateQualifierLocEv.exit - %31 = getelementptr inbounds nuw i8, ptr %29, i64 48 - %32 = load ptr, ptr %31, align 8 - %.not22 = icmp eq ptr %32, null - br i1 %.not22, label %42, label %33 - -33: ; preds = %30 - %34 = load ptr, ptr %0, align 8 - %35 = load i32, ptr %1, align 8 - %36 = and i32 %35, 2147483646 - %switch.i24 = icmp eq i32 %36, 6 - br i1 %switch.i24, label %37, label %_ZNK5clang19TemplateArgumentLoc18getTemplateNameLocEv.exit - -37: ; preds = %33 - %.0.copyload.i.i.i.i.i.i.i.i.i.i.i26 = load i64, ptr %7, align 8 - %38 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i.i.i26, -4 - %39 = inttoptr i64 %38 to ptr - %40 = getelementptr inbounds nuw i8, ptr %39, i64 16 - %.sroa.0.0.copyload.i.i = load i32, ptr %40, align 8 +_ZNK5clang19TemplateArgumentLoc23getTemplateQualifierLocEv.exit: ; preds = %19, %22 + %.sroa.0.0.i = phi ptr [ %25, %22 ], [ null, %19 ] + %.sroa.4.0.i = phi ptr [ %27, %22 ], [ null, %19 ] + tail call void @_ZN5clang5index15IndexingContext27indexNestedNameSpecifierLocENS_22NestedNameSpecifierLocEPKNS_9NamedDeclEPKNS_11DeclContextE(ptr noundef nonnull align 8 dereferenceable(64) %20, ptr %.sroa.0.0.i, ptr %.sroa.4.0.i, ptr noundef %2, ptr noundef %3) #9 + %28 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %29 = load ptr, ptr %28, align 8 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) + call void @_ZN5clang12TemplateNameC1EPv(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %29) #9 + %30 = load i64, ptr %5, align 8 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) + store i64 %30, ptr %6, align 8 + %31 = call noundef ptr @_ZNK5clang12TemplateName17getAsTemplateDeclEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #9 + %.not = icmp eq ptr %31, null + br i1 %.not, label %44, label %32 + +32: ; preds = %_ZNK5clang19TemplateArgumentLoc23getTemplateQualifierLocEv.exit + %33 = getelementptr inbounds nuw i8, ptr %31, i64 48 + %34 = load ptr, ptr %33, align 8 + %.not22 = icmp eq ptr %34, null + br i1 %.not22, label %44, label %35 + +35: ; preds = %32 + %36 = load ptr, ptr %0, align 8 + %37 = load i32, ptr %1, align 8 + %38 = and i32 %37, 2147483646 + %switch.i24 = icmp eq i32 %38, 6 + br i1 %switch.i24, label %39, label %_ZNK5clang19TemplateArgumentLoc18getTemplateNameLocEv.exit + +39: ; preds = %35 + %.0.copyload.i.i.i.i.i.i.i.i.i.i.i26 = load i64, ptr %8, align 8 + %40 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i.i.i26, -4 + %41 = inttoptr i64 %40 to ptr + %42 = getelementptr inbounds nuw i8, ptr %41, i64 16 + %.sroa.0.0.copyload.i.i = load i32, ptr %42, align 8 br label %_ZNK5clang19TemplateArgumentLoc18getTemplateNameLocEv.exit -_ZNK5clang19TemplateArgumentLoc18getTemplateNameLocEv.exit: ; preds = %33, %37 - %.sroa.0.0.i25 = phi i32 [ %.sroa.0.0.copyload.i.i, %37 ], [ 0, %33 ] - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %6, i8 0, i64 16, i1 false) - %41 = call noundef zeroext i1 @_ZN5clang5index15IndexingContext15handleReferenceEPKNS_9NamedDeclENS_14SourceLocationES4_PKNS_11DeclContextEjN4llvm8ArrayRefINS0_14SymbolRelationEEEPKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(64) %34, ptr noundef nonnull %32, i32 %.sroa.0.0.i25, ptr noundef %2, ptr noundef %3, i32 noundef 0, ptr noundef nonnull byval(%"class.llvm::ArrayRef") align 8 %6, ptr noundef null) #9 - br label %42 +_ZNK5clang19TemplateArgumentLoc18getTemplateNameLocEv.exit: ; preds = %35, %39 + %.sroa.0.0.i25 = phi i32 [ %.sroa.0.0.copyload.i.i, %39 ], [ 0, %35 ] + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %7, i8 0, i64 16, i1 false) + %43 = call noundef zeroext i1 @_ZN5clang5index15IndexingContext15handleReferenceEPKNS_9NamedDeclENS_14SourceLocationES4_PKNS_11DeclContextEjN4llvm8ArrayRefINS0_14SymbolRelationEEEPKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(64) %36, ptr noundef nonnull %34, i32 %.sroa.0.0.i25, ptr noundef %2, ptr noundef %3, i32 noundef 0, ptr noundef nonnull byval(%"class.llvm::ArrayRef") align 8 %7, ptr noundef null) #9 + br label %44 -42: ; preds = %4, %_ZNK5clang19TemplateArgumentLoc23getTemplateQualifierLocEv.exit, %_ZNK5clang19TemplateArgumentLoc18getTemplateNameLocEv.exit, %30, %14, %10 +44: ; preds = %4, %_ZNK5clang19TemplateArgumentLoc23getTemplateQualifierLocEv.exit, %_ZNK5clang19TemplateArgumentLoc18getTemplateNameLocEv.exit, %32, %15, %11 ret void } diff --git a/bench/llvm/optimized/SemaLookup.cpp.ll b/bench/llvm/optimized/SemaLookup.cpp.ll index 9c1ed2cf7f9..edbee07225d 100644 --- a/bench/llvm/optimized/SemaLookup.cpp.ll +++ b/bench/llvm/optimized/SemaLookup.cpp.ll @@ -45980,130 +45980,135 @@ declare noundef ptr @_ZNK5clang31ClassTemplateSpecializationDecl22getSpecialized define internal fastcc void @_ZL33addAssociatedClassesAndNamespacesRN12_GLOBAL__N_116AssociatedLookupERKN5clang16TemplateArgumentE(ptr noundef nonnull align 8 dereferenceable(200) %0, ptr nocapture noundef nonnull readonly align 8 dereferenceable(24) %1) unnamed_addr #0 { %3 = alloca ptr, align 8 %4 = alloca %"class.clang::TemplateName", align 8 - %5 = alloca ptr, align 8 - %6 = load i32, ptr %1, align 8 - %7 = and i32 %6, 2147483647 - switch i32 %7, label %.loopexit [ - i32 9, label %56 - i32 1, label %8 - i32 6, label %11 - i32 7, label %11 + %5 = alloca %"class.clang::TemplateName", align 8 + %6 = alloca ptr, align 8 + %7 = load i32, ptr %1, align 8 + %8 = and i32 %7, 2147483647 + switch i32 %8, label %.loopexit [ + i32 9, label %58 + i32 1, label %9 + i32 6, label %12 + i32 7, label %12 ] -8: ; preds = %2 - %9 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %10 = load i64, ptr %9, align 8 - tail call fastcc void @_ZL33addAssociatedClassesAndNamespacesRN12_GLOBAL__N_116AssociatedLookupEN5clang8QualTypeE(ptr noundef nonnull align 8 dereferenceable(200) %0, i64 %10) +9: ; preds = %2 + %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %11 = load i64, ptr %10, align 8 + tail call fastcc void @_ZL33addAssociatedClassesAndNamespacesRN12_GLOBAL__N_116AssociatedLookupEN5clang8QualTypeE(ptr noundef nonnull align 8 dereferenceable(200) %0, i64 %11) br label %.loopexit -11: ; preds = %2, %2 - %12 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %13 = load ptr, ptr %12, align 8 - call void @_ZN5clang12TemplateNameC1EPv(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %13) #24 - %14 = call noundef ptr @_ZNK5clang12TemplateName17getAsTemplateDeclEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #24 - %15 = getelementptr inbounds nuw i8, ptr %14, i64 28 - %16 = load i32, ptr %15, align 4 - %17 = and i32 %16, 127 - %18 = icmp ne i32 %17, 69 - %.not25 = icmp eq ptr %14, null - %.not = or i1 %.not25, %18 - br i1 %.not, label %.loopexit, label %19 +12: ; preds = %2, %2 + %13 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %14 = load ptr, ptr %13, align 8 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) + call void @_ZN5clang12TemplateNameC1EPv(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %14) #24 + %15 = load i64, ptr %4, align 8 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) + store i64 %15, ptr %5, align 8 + %16 = call noundef ptr @_ZNK5clang12TemplateName17getAsTemplateDeclEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #24 + %17 = getelementptr inbounds nuw i8, ptr %16, i64 28 + %18 = load i32, ptr %17, align 4 + %19 = and i32 %18, 127 + %20 = icmp ne i32 %19, 69 + %.not25 = icmp eq ptr %16, null + %.not = or i1 %.not25, %20 + br i1 %.not, label %.loopexit, label %21 -19: ; preds = %11 - %20 = getelementptr inbounds nuw i8, ptr %14, i64 16 - %.0.copyload.i.i.i.i.i.i.i.i.i.i = load i64, ptr %20, align 8 - %21 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i.i, 4 - %22 = icmp eq i64 %21, 0 - %23 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i.i, -8 - %24 = inttoptr i64 %23 to ptr - br i1 %22, label %_ZN5clang4Decl14getDeclContextEv.exit, label %25 +21: ; preds = %12 + %22 = getelementptr inbounds nuw i8, ptr %16, i64 16 + %.0.copyload.i.i.i.i.i.i.i.i.i.i = load i64, ptr %22, align 8 + %23 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i.i, 4 + %24 = icmp eq i64 %23, 0 + %25 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i.i, -8 + %26 = inttoptr i64 %25 to ptr + br i1 %24, label %_ZN5clang4Decl14getDeclContextEv.exit, label %27 -25: ; preds = %19 - %26 = load ptr, ptr %24, align 8 +27: ; preds = %21 + %28 = load ptr, ptr %26, align 8 br label %_ZN5clang4Decl14getDeclContextEv.exit -_ZN5clang4Decl14getDeclContextEv.exit: ; preds = %19, %25 - %.0.i = phi ptr [ %26, %25 ], [ %24, %19 ] - %27 = getelementptr inbounds nuw i8, ptr %.0.i, i64 8 - %28 = load i16, ptr %27, align 8 - %29 = and i16 %28, 127 - %30 = zext nneg i16 %29 to i32 - %31 = add nsw i32 %30, -59 - %32 = icmp ult i32 %31, -3 - %33 = getelementptr inbounds i8, ptr %.0.i, i64 -64 - %spec.select.i.i22 = select i1 %32, ptr null, ptr %33 - store ptr %spec.select.i.i22, ptr %5, align 8 - br i1 %32, label %38, label %34 - -34: ; preds = %_ZN5clang4Decl14getDeclContextEv.exit - %35 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %36 = load ptr, ptr %35, align 8 - %37 = call noundef zeroext i1 @_ZN4llvm9SetVectorIPN5clang13CXXRecordDeclENS_11SmallVectorIS3_Lj16EEENS_8DenseSetIS3_NS_12DenseMapInfoIS3_vEEEELj16EE6insertERKS3_(ptr noundef nonnull align 8 dereferenceable(168) %36, ptr noundef nonnull align 8 dereferenceable(8) %5) - br label %38 +_ZN5clang4Decl14getDeclContextEv.exit: ; preds = %21, %27 + %.0.i = phi ptr [ %28, %27 ], [ %26, %21 ] + %29 = getelementptr inbounds nuw i8, ptr %.0.i, i64 8 + %30 = load i16, ptr %29, align 8 + %31 = and i16 %30, 127 + %32 = zext nneg i16 %31 to i32 + %33 = add nsw i32 %32, -59 + %34 = icmp ult i32 %33, -3 + %35 = getelementptr inbounds i8, ptr %.0.i, i64 -64 + %spec.select.i.i22 = select i1 %34, ptr null, ptr %35 + store ptr %spec.select.i.i22, ptr %6, align 8 + br i1 %34, label %40, label %36 -38: ; preds = %34, %_ZN5clang4Decl14getDeclContextEv.exit - %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %40 = load ptr, ptr %39, align 8 +36: ; preds = %_ZN5clang4Decl14getDeclContextEv.exit + %37 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %38 = load ptr, ptr %37, align 8 + %39 = call noundef zeroext i1 @_ZN4llvm9SetVectorIPN5clang13CXXRecordDeclENS_11SmallVectorIS3_Lj16EEENS_8DenseSetIS3_NS_12DenseMapInfoIS3_vEEEELj16EE6insertERKS3_(ptr noundef nonnull align 8 dereferenceable(168) %38, ptr noundef nonnull align 8 dereferenceable(8) %6) + br label %40 + +40: ; preds = %36, %_ZN5clang4Decl14getDeclContextEv.exit + %41 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %42 = load ptr, ptr %41, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) br label %_ZN5clang11DeclContext9getParentEv.exit.i -_ZN5clang11DeclContext9getParentEv.exit.i: ; preds = %_ZN5clang11DeclContext9getParentEv.exit.i.backedge, %38 - %.0.i23 = phi ptr [ %.0.i, %38 ], [ %.0.i23.be, %_ZN5clang11DeclContext9getParentEv.exit.i.backedge ] - %41 = getelementptr inbounds nuw i8, ptr %.0.i23, i64 8 - %42 = load i16, ptr %41, align 8 - %43 = and i16 %42, 127 - switch i16 %43, label %.critedge.i [ - i16 21, label %44 - i16 0, label %44 - ] - -44: ; preds = %_ZN5clang11DeclContext9getParentEv.exit.i, %_ZN5clang11DeclContext9getParentEv.exit.i - %45 = call noundef zeroext i1 @_ZNK5clang11DeclContext17isInlineNamespaceEv(ptr noundef nonnull align 8 dereferenceable(32) %.0.i23) #24 - br i1 %45, label %.critedge.i, label %_ZL25CollectEnclosingNamespaceRN4llvm14SmallSetVectorIPN5clang11DeclContextELj16EEES3_.exit - -.critedge.i: ; preds = %44, %_ZN5clang11DeclContext9getParentEv.exit.i - %46 = call noundef ptr @_ZN5clang4Decl19castFromDeclContextEPKNS_11DeclContextE(ptr noundef nonnull %.0.i23) #24 - %47 = getelementptr inbounds nuw i8, ptr %46, i64 16 - %.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i = load i64, ptr %47, align 8 - %48 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i, 4 - %49 = icmp eq i64 %48, 0 - %50 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i, -8 - %51 = inttoptr i64 %50 to ptr - br i1 %49, label %_ZN5clang11DeclContext9getParentEv.exit.i.backedge, label %52 +_ZN5clang11DeclContext9getParentEv.exit.i: ; preds = %_ZN5clang11DeclContext9getParentEv.exit.i.backedge, %40 + %.0.i23 = phi ptr [ %.0.i, %40 ], [ %.0.i23.be, %_ZN5clang11DeclContext9getParentEv.exit.i.backedge ] + %43 = getelementptr inbounds nuw i8, ptr %.0.i23, i64 8 + %44 = load i16, ptr %43, align 8 + %45 = and i16 %44, 127 + switch i16 %45, label %.critedge.i [ + i16 21, label %46 + i16 0, label %46 + ] + +46: ; preds = %_ZN5clang11DeclContext9getParentEv.exit.i, %_ZN5clang11DeclContext9getParentEv.exit.i + %47 = call noundef zeroext i1 @_ZNK5clang11DeclContext17isInlineNamespaceEv(ptr noundef nonnull align 8 dereferenceable(32) %.0.i23) #24 + br i1 %47, label %.critedge.i, label %_ZL25CollectEnclosingNamespaceRN4llvm14SmallSetVectorIPN5clang11DeclContextELj16EEES3_.exit + +.critedge.i: ; preds = %46, %_ZN5clang11DeclContext9getParentEv.exit.i + %48 = call noundef ptr @_ZN5clang4Decl19castFromDeclContextEPKNS_11DeclContextE(ptr noundef nonnull %.0.i23) #24 + %49 = getelementptr inbounds nuw i8, ptr %48, i64 16 + %.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i = load i64, ptr %49, align 8 + %50 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i, 4 + %51 = icmp eq i64 %50, 0 + %52 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i, -8 + %53 = inttoptr i64 %52 to ptr + br i1 %51, label %_ZN5clang11DeclContext9getParentEv.exit.i.backedge, label %54 -52: ; preds = %.critedge.i - %53 = load ptr, ptr %51, align 8 +54: ; preds = %.critedge.i + %55 = load ptr, ptr %53, align 8 br label %_ZN5clang11DeclContext9getParentEv.exit.i.backedge -_ZN5clang11DeclContext9getParentEv.exit.i.backedge: ; preds = %52, %.critedge.i - %.0.i23.be = phi ptr [ %53, %52 ], [ %51, %.critedge.i ] +_ZN5clang11DeclContext9getParentEv.exit.i.backedge: ; preds = %54, %.critedge.i + %.0.i23.be = phi ptr [ %55, %54 ], [ %53, %.critedge.i ] br label %_ZN5clang11DeclContext9getParentEv.exit.i, !llvm.loop !150 -_ZL25CollectEnclosingNamespaceRN4llvm14SmallSetVectorIPN5clang11DeclContextELj16EEES3_.exit: ; preds = %44 - %54 = call noundef ptr @_ZN5clang11DeclContext17getPrimaryContextEv(ptr noundef nonnull align 8 dereferenceable(32) %.0.i23) #24 - store ptr %54, ptr %3, align 8 - %55 = call noundef zeroext i1 @_ZN4llvm9SetVectorIPN5clang11DeclContextENS_11SmallVectorIS3_Lj16EEENS_8DenseSetIS3_NS_12DenseMapInfoIS3_vEEEELj16EE6insertERKS3_(ptr noundef nonnull align 8 dereferenceable(168) %40, ptr noundef nonnull align 8 dereferenceable(8) %3) +_ZL25CollectEnclosingNamespaceRN4llvm14SmallSetVectorIPN5clang11DeclContextELj16EEES3_.exit: ; preds = %46 + %56 = call noundef ptr @_ZN5clang11DeclContext17getPrimaryContextEv(ptr noundef nonnull align 8 dereferenceable(32) %.0.i23) #24 + store ptr %56, ptr %3, align 8 + %57 = call noundef zeroext i1 @_ZN4llvm9SetVectorIPN5clang11DeclContextENS_11SmallVectorIS3_Lj16EEENS_8DenseSetIS3_NS_12DenseMapInfoIS3_vEEEELj16EE6insertERKS3_(ptr noundef nonnull align 8 dereferenceable(168) %42, ptr noundef nonnull align 8 dereferenceable(8) %3) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) br label %.loopexit -56: ; preds = %2 - %57 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %58 = load ptr, ptr %57, align 8 - %59 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %60 = load i32, ptr %59, align 4 - %61 = zext i32 %60 to i64 - %62 = getelementptr inbounds %"class.clang::TemplateArgument", ptr %58, i64 %61 - %.not2126 = icmp eq i32 %60, 0 +58: ; preds = %2 + %59 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %60 = load ptr, ptr %59, align 8 + %61 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %62 = load i32, ptr %61, align 4 + %63 = zext i32 %62 to i64 + %64 = getelementptr inbounds %"class.clang::TemplateArgument", ptr %60, i64 %63 + %.not2126 = icmp eq i32 %62, 0 br i1 %.not2126, label %.loopexit, label %.lr.ph -.lr.ph: ; preds = %56, %.lr.ph - %.027 = phi ptr [ %63, %.lr.ph ], [ %58, %56 ] +.lr.ph: ; preds = %58, %.lr.ph + %.027 = phi ptr [ %65, %.lr.ph ], [ %60, %58 ] tail call fastcc void @_ZL33addAssociatedClassesAndNamespacesRN12_GLOBAL__N_116AssociatedLookupERKN5clang16TemplateArgumentE(ptr noundef nonnull align 8 dereferenceable(200) %0, ptr noundef nonnull align 8 dereferenceable(24) %.027) - %63 = getelementptr inbounds i8, ptr %.027, i64 24 - %.not21 = icmp eq ptr %63, %62 + %65 = getelementptr inbounds i8, ptr %.027, i64 24 + %.not21 = icmp eq ptr %65, %64 br i1 %.not21, label %.loopexit, label %.lr.ph -.loopexit: ; preds = %.lr.ph, %56, %11, %_ZL25CollectEnclosingNamespaceRN4llvm14SmallSetVectorIPN5clang11DeclContextELj16EEES3_.exit, %8, %2 +.loopexit: ; preds = %.lr.ph, %58, %12, %_ZL25CollectEnclosingNamespaceRN4llvm14SmallSetVectorIPN5clang11DeclContextELj16EEES3_.exit, %9, %2 ret void } diff --git a/bench/luau/optimized/Parser.cpp.ll b/bench/luau/optimized/Parser.cpp.ll index 806ad5fa735..bce953b99d3 100644 --- a/bench/luau/optimized/Parser.cpp.ll +++ b/bench/luau/optimized/Parser.cpp.ll @@ -18207,7 +18207,7 @@ define dso_local { ptr, ptr } @_ZN4Luau6Parser15parseSimpleTypeEbb(ptr noundef n %12 = alloca %"struct.Luau::AstArray.143", align 8 %13 = alloca %"struct.Luau::AstArray.143", align 8 %14 = alloca %"struct.Luau::AstArray.143", align 8 - %.sroa.022 = alloca %"struct.Luau::Location", align 8 + %.sroa.026 = alloca %"struct.Luau::Location", align 8 %15 = alloca %"struct.Luau::Parser::Name", align 8 %16 = alloca %"struct.Luau::Parser::MatchLexeme", align 4 %17 = alloca %"struct.Luau::Location", align 8 @@ -18361,48 +18361,55 @@ _ZN4Luau6Parser9parseNameEPKc.exit: ; preds = %_ZN4Luau6Parser25in _ZNSt8optionalIN4Luau8LocationEEaSIRS1_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS2_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES6_ISt6__and_IJSt9is_scalarIS1_ES7_IS1_NSt5decayISA_E4typeEEEEESt16is_constructibleIS1_JSA_EESt13is_assignableIS4_SA_EEERS2_E4typeEOSA_.exit: ; preds = %_ZN4Luau6Parser9parseNameEPKc.exit %81 = load i64, ptr %33, align 4 tail call void @_ZN4Luau6Parser10nextLexemeEv(ptr noundef nonnull align 8 dereferenceable(840) %0) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.022, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.2.0..sroa_idx.i, i64 16, i1 false) - tail call void @llvm.experimental.noalias.scope.decl(metadata !271) - %82 = load i32, ptr %32, align 8, !noalias !274 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.026, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.2.0..sroa_idx.i, i64 16, i1 false) + %82 = load i32, ptr %32, align 8, !noalias !271 %.not.i.i16 = icmp eq i32 %82, 281 br i1 %.not.i.i16, label %83, label %86 83: ; preds = %_ZNSt8optionalIN4Luau8LocationEEaSIRS1_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS2_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES6_ISt6__and_IJSt9is_scalarIS1_ES7_IS1_NSt5decayISA_E4typeEEEEESt16is_constructibleIS1_JSA_EESt13is_assignableIS4_SA_EEERS2_E4typeEOSA_.exit - %84 = load ptr, ptr %77, align 8, !noalias !274 + %84 = load ptr, ptr %77, align 8, !noalias !271 %85 = ptrtoint ptr %84 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.2.0..sroa_idx.i, ptr noundef nonnull align 4 dereferenceable(16) %33, i64 16, i1 false) - tail call void @_ZN4Luau6Parser10nextLexemeEv(ptr noundef nonnull align 8 dereferenceable(840) %0), !noalias !274 - store i64 %85, ptr %15, align 8, !alias.scope !271 - br label %_ZNK4Luau7AstNameeqEPKc.exit.threadthread-pre-split + %.sroa.4.8.copyload22 = load i64, ptr %33, align 4 + %.sroa.7.8..sroa_idx23 = getelementptr inbounds i8, ptr %0, i64 52 + %.sroa.7.8.copyload24 = load i64, ptr %.sroa.7.8..sroa_idx23, align 4 + tail call void @_ZN4Luau6Parser10nextLexemeEv(ptr noundef nonnull align 8 dereferenceable(840) %0), !noalias !271 + br label %_ZN4Luau6Parser14parseIndexNameEPKcRKNS_8PositionE.exit 86: ; preds = %_ZNSt8optionalIN4Luau8LocationEEaSIRS1_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS2_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES6_ISt6__and_IJSt9is_scalarIS1_ES7_IS1_NSt5decayISA_E4typeEEEEESt16is_constructibleIS1_JSA_EESt13is_assignableIS4_SA_EEERS2_E4typeEOSA_.exit - %.sroa.0.0.extract.trunc = trunc i64 %81 to i32 - tail call void @_ZN4Luau6Parser15reportNameErrorEPKc(ptr noundef nonnull align 8 dereferenceable(840) %0, ptr noundef nonnull @.str.86), !noalias !274 - %87 = load i32, ptr %32, align 8, !noalias !271 + %.sroa.025.0.extract.trunc = trunc i64 %81 to i32 + tail call void @_ZN4Luau6Parser15reportNameErrorEPKc(ptr noundef nonnull align 8 dereferenceable(840) %0, ptr noundef nonnull @.str.86), !noalias !271 + %87 = load i32, ptr %32, align 8, !noalias !276 %88 = add i32 %87, -290 %or.cond.i = icmp ult i32 %88, 21 %89 = load i32, ptr %33, align 4 - %90 = icmp eq i32 %89, %.sroa.0.0.extract.trunc + %90 = icmp eq i32 %89, %.sroa.025.0.extract.trunc %or.cond = select i1 %or.cond.i, i1 %90, i1 false br i1 %or.cond, label %91, label %94 91: ; preds = %86 - %92 = load ptr, ptr %77, align 8, !noalias !271 + %92 = load ptr, ptr %77, align 8, !noalias !276 %93 = ptrtoint ptr %92 to i64 - store i64 %93, ptr %15, align 8, !alias.scope !271 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.2.0..sroa_idx.i, ptr noundef nonnull align 4 dereferenceable(16) %33, i64 16, i1 false) - tail call void @_ZN4Luau6Parser10nextLexemeEv(ptr noundef nonnull align 8 dereferenceable(840) %0), !noalias !271 - br label %_ZNK4Luau7AstNameeqEPKc.exit.threadthread-pre-split + %.sroa.4.8.copyload = load i64, ptr %33, align 4 + %.sroa.7.8..sroa_idx = getelementptr inbounds i8, ptr %0, i64 52 + %.sroa.7.8.copyload = load i64, ptr %.sroa.7.8..sroa_idx, align 4 + tail call void @_ZN4Luau6Parser10nextLexemeEv(ptr noundef nonnull align 8 dereferenceable(840) %0), !noalias !276 + br label %_ZN4Luau6Parser14parseIndexNameEPKcRKNS_8PositionE.exit 94: ; preds = %86 - %.sroa.0.0.copyload.i17 = load i64, ptr %33, align 4, !noalias !271 + %.sroa.0.0.copyload.i17 = load i64, ptr %33, align 4, !noalias !276 %95 = getelementptr inbounds i8, ptr %0, i64 208 - %96 = load i64, ptr %95, align 8, !noalias !271 - store i64 %96, ptr %15, align 8, !alias.scope !271 - store i64 %.sroa.0.0.copyload.i17, ptr %.sroa.2.0..sroa_idx.i, align 8, !alias.scope !271 - %.sroa.3.0..sroa_idx4.i = getelementptr inbounds i8, ptr %15, i64 16 - store i64 %.sroa.0.0.copyload.i17, ptr %.sroa.3.0..sroa_idx4.i, align 8, !alias.scope !271 - %97 = inttoptr i64 %96 to ptr + %96 = load i64, ptr %95, align 8, !noalias !276 + br label %_ZN4Luau6Parser14parseIndexNameEPKcRKNS_8PositionE.exit + +_ZN4Luau6Parser14parseIndexNameEPKcRKNS_8PositionE.exit: ; preds = %83, %91, %94 + %.sroa.7.0 = phi i64 [ %.sroa.7.8.copyload24, %83 ], [ %.sroa.7.8.copyload, %91 ], [ %.sroa.0.0.copyload.i17, %94 ] + %.sroa.4.0 = phi i64 [ %.sroa.4.8.copyload22, %83 ], [ %.sroa.4.8.copyload, %91 ], [ %.sroa.0.0.copyload.i17, %94 ] + %.sroa.0.0 = phi i64 [ %85, %83 ], [ %93, %91 ], [ %96, %94 ] + store i64 %.sroa.0.0, ptr %15, align 8 + store i64 %.sroa.4.0, ptr %.sroa.2.0..sroa_idx.i, align 8 + %.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %15, i64 16 + store i64 %.sroa.7.0, ptr %.sroa.7.0..sroa_idx, align 8 + %97 = inttoptr i64 %.sroa.0.0 to ptr br label %_ZNK4Luau7AstNameeqEPKc.exit.threadthread-pre-split 98: ; preds = %_ZN4Luau6Parser9parseNameEPKc.exit @@ -18439,15 +18446,15 @@ _ZNK4Luau7AstNameeqEPKc.exit: ; preds = %99 call void @_ZN4Luau13AstTypeTypeofC1ERKNS_8LocationEPNS_7AstExprE(ptr noundef nonnull align 8 dereferenceable(40) %111, ptr noundef nonnull align 4 dereferenceable(16) %17, ptr noundef %104) br label %145 -_ZNK4Luau7AstNameeqEPKc.exit.threadthread-pre-split: ; preds = %94, %91, %83, %_ZNK4Luau7AstNameeqEPKc.exit, %98 - %.sroa.0.0.copyload.i2028 = phi ptr [ %78, %_ZNK4Luau7AstNameeqEPKc.exit ], [ %78, %98 ], [ %84, %83 ], [ %92, %91 ], [ %97, %94 ] - %.sroa.223.1 = phi i8 [ 0, %_ZNK4Luau7AstNameeqEPKc.exit ], [ 0, %98 ], [ 1, %83 ], [ 1, %91 ], [ 1, %94 ] +_ZNK4Luau7AstNameeqEPKc.exit.threadthread-pre-split: ; preds = %_ZN4Luau6Parser14parseIndexNameEPKcRKNS_8PositionE.exit, %_ZNK4Luau7AstNameeqEPKc.exit, %98 + %.sroa.0.0.copyload.i2033 = phi ptr [ %78, %_ZNK4Luau7AstNameeqEPKc.exit ], [ %78, %98 ], [ %97, %_ZN4Luau6Parser14parseIndexNameEPKcRKNS_8PositionE.exit ] + %.sroa.227.1 = phi i8 [ 0, %_ZNK4Luau7AstNameeqEPKc.exit ], [ 0, %98 ], [ 1, %_ZN4Luau6Parser14parseIndexNameEPKcRKNS_8PositionE.exit ] %.pr = load i32, ptr %32, align 8 br label %_ZNK4Luau7AstNameeqEPKc.exit.thread _ZNK4Luau7AstNameeqEPKc.exit.thread: ; preds = %_ZNK4Luau7AstNameeqEPKc.exit.threadthread-pre-split, %99 - %.sroa.0.0.copyload.i20 = phi ptr [ null, %99 ], [ %.sroa.0.0.copyload.i2028, %_ZNK4Luau7AstNameeqEPKc.exit.threadthread-pre-split ] - %.sroa.223.0 = phi i8 [ 0, %99 ], [ %.sroa.223.1, %_ZNK4Luau7AstNameeqEPKc.exit.threadthread-pre-split ] + %.sroa.0.0.copyload.i20 = phi ptr [ null, %99 ], [ %.sroa.0.0.copyload.i2033, %_ZNK4Luau7AstNameeqEPKc.exit.threadthread-pre-split ] + %.sroa.227.0 = phi i8 [ 0, %99 ], [ %.sroa.227.1, %_ZNK4Luau7AstNameeqEPKc.exit.threadthread-pre-split ] %112 = phi i32 [ %80, %99 ], [ %.pr, %_ZNK4Luau7AstNameeqEPKc.exit.threadthread-pre-split ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %18, i8 0, i64 16, i1 false) %113 = icmp eq i32 %112, 60 @@ -18473,10 +18480,10 @@ _ZNK4Luau7AstNameeqEPKc.exit.thread: ; preds = %_ZNK4Luau7AstNameeq store i64 %.sroa.1.0.copyload, ptr %122, align 8 call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %4) %123 = tail call noundef ptr @_ZN4Luau9Allocator8allocateEm(ptr noundef nonnull align 8 dereferenceable(16) %120, i64 noundef 112) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.022, i64 16, i1 false) - %.sroa.223.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 16 - store i8 %.sroa.223.0, ptr %.sroa.223.0..sroa_idx, align 8 - call void @_ZN4Luau16AstTypeReferenceC1ERKNS_8LocationESt8optionalINS_7AstNameEES5_S4_IS1_ES3_bRKNS_8AstArrayINS_13AstTypeOrPackEEE(ptr noundef nonnull align 8 dereferenceable(112) %123, ptr noundef nonnull align 4 dereferenceable(16) %19, ptr %78, i8 %.sroa.223.0, ptr %.sroa.0.0.copyload.i20, ptr noundef nonnull byval(%"class.std::optional.116") align 8 %4, ptr noundef nonnull align 4 dereferenceable(16) %.sroa.2.0..sroa_idx.i, i1 noundef zeroext %113, ptr noundef nonnull align 8 dereferenceable(16) %18) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.026, i64 16, i1 false) + %.sroa.227.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 16 + store i8 %.sroa.227.0, ptr %.sroa.227.0..sroa_idx, align 8 + call void @_ZN4Luau16AstTypeReferenceC1ERKNS_8LocationESt8optionalINS_7AstNameEES5_S4_IS1_ES3_bRKNS_8AstArrayINS_13AstTypeOrPackEEE(ptr noundef nonnull align 8 dereferenceable(112) %123, ptr noundef nonnull align 4 dereferenceable(16) %19, ptr %78, i8 %.sroa.227.0, ptr %.sroa.0.0.copyload.i20, ptr noundef nonnull byval(%"class.std::optional.116") align 8 %4, ptr noundef nonnull align 4 dereferenceable(16) %.sroa.2.0..sroa_idx.i, i1 noundef zeroext %113, ptr noundef nonnull align 8 dereferenceable(16) %18) call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %4) br label %145 @@ -23746,12 +23753,12 @@ attributes #33 = { allocsize(0) } !268 = !{!269, !266} !269 = distinct !{!269, !270, !"_ZN4Luau6Parser12parseNameOptEPKc: argument 0"} !270 = distinct !{!270, !"_ZN4Luau6Parser12parseNameOptEPKc"} -!271 = !{!272} -!272 = distinct !{!272, !273, !"_ZN4Luau6Parser14parseIndexNameEPKcRKNS_8PositionE: argument 0"} -!273 = distinct !{!273, !"_ZN4Luau6Parser14parseIndexNameEPKcRKNS_8PositionE"} -!274 = !{!275, !272} -!275 = distinct !{!275, !276, !"_ZN4Luau6Parser12parseNameOptEPKc: argument 0"} -!276 = distinct !{!276, !"_ZN4Luau6Parser12parseNameOptEPKc"} +!271 = !{!272, !274} +!272 = distinct !{!272, !273, !"_ZN4Luau6Parser12parseNameOptEPKc: argument 0"} +!273 = distinct !{!273, !"_ZN4Luau6Parser12parseNameOptEPKc"} +!274 = distinct !{!274, !275, !"_ZN4Luau6Parser14parseIndexNameEPKcRKNS_8PositionE: argument 0"} +!275 = distinct !{!275, !"_ZN4Luau6Parser14parseIndexNameEPKcRKNS_8PositionE"} +!276 = !{!274} !277 = distinct !{!277, !6} !278 = distinct !{!278, !6} !279 = !{!280} diff --git a/bench/meilisearch-rs/optimized/2cgldv3iwsojn360.ll b/bench/meilisearch-rs/optimized/2cgldv3iwsojn360.ll index caf279ab3c4..f0507f65792 100644 --- a/bench/meilisearch-rs/optimized/2cgldv3iwsojn360.ll +++ b/bench/meilisearch-rs/optimized/2cgldv3iwsojn360.ll @@ -3324,18 +3324,21 @@ define noundef ptr @_ZN17meilisearch_types10versioning19create_version_file17h82 %4 = alloca [48 x i8], align 8 %5 = alloca [24 x i8], align 8 %6 = alloca [24 x i8], align 8 + %7 = alloca [24 x i8], align 8 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) + call void @_ZN3std4path4Path5_join17h28e226e2326aba56E(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %7, ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 1 @anon.4e9b806ee0758ff2b0f3c055e3f79959.77, i64 noundef 7) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) - call void @_ZN3std4path4Path5_join17h28e226e2326aba56E(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 1 @anon.4e9b806ee0758ff2b0f3c055e3f79959.77, i64 noundef 7) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4) store ptr @_ZN17meilisearch_types10versioning13VERSION_MAJOR17h72ebb1f4da515421E, ptr %4, align 8 %.sroa.43.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 8 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h736ae9dfb67182e3E", ptr %.sroa.43.0..sroa_idx, align 8 - %7 = getelementptr inbounds i8, ptr %4, i64 16 - store ptr @_ZN17meilisearch_types10versioning13VERSION_MINOR17h2da9d7fe88367c06E, ptr %7, align 8 + %8 = getelementptr inbounds i8, ptr %4, i64 16 + store ptr @_ZN17meilisearch_types10versioning13VERSION_MINOR17h2da9d7fe88367c06E, ptr %8, align 8 %.sroa.47.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 24 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h736ae9dfb67182e3E", ptr %.sroa.47.0..sroa_idx, align 8 - %8 = getelementptr inbounds i8, ptr %4, i64 32 - store ptr @_ZN17meilisearch_types10versioning13VERSION_PATCH17hf979a51a810a9f17E, ptr %8, align 8 + %9 = getelementptr inbounds i8, ptr %4, i64 32 + store ptr @_ZN17meilisearch_types10versioning13VERSION_PATCH17hf979a51a810a9f17E, ptr %9, align 8 %.sroa.411.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 40 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h736ae9dfb67182e3E", ptr %.sroa.411.0..sroa_idx, align 8 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3), !noalias !546 @@ -3349,26 +3352,27 @@ define noundef ptr @_ZN17meilisearch_types10versioning19create_version_file17h82 %.sroa.10.0..sroa_idx = getelementptr inbounds i8, ptr %3, i64 32 store ptr null, ptr %.sroa.10.0..sroa_idx, align 8, !noalias !557 invoke void @_ZN5alloc3fmt6format12format_inner17h77a68f64fb1f586eE(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %5, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %3) - to label %_ZN5alloc3fmt6format17h7fed6a266585da9dE.exit unwind label %11 + to label %_ZN5alloc3fmt6format17h7fed6a266585da9dE.exit unwind label %12 _ZN5alloc3fmt6format17h7fed6a266585da9dE.exit: ; preds = %2 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3), !noalias !546 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4) - %9 = call noundef ptr @_ZN3std2fs5write17h89200f59b7eb139dE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %6, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %5) + %10 = call noundef ptr @_ZN3std2fs5write17h89200f59b7eb139dE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %6, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %5) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) - ret ptr %9 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) + ret ptr %10 -10: ; preds = %11 +11: ; preds = %12 resume { ptr, i32 } %lpad.thr_comm -11: ; preds = %2 +12: ; preds = %2 %lpad.thr_comm = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h8ad27ede4cfca0efE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #29 - to label %10 unwind label %12 + to label %11 unwind label %13 -12: ; preds = %11 - %13 = landingpad { ptr, i32 } +13: ; preds = %12 + %14 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #30 unreachable diff --git a/bench/meilisearch-rs/optimized/2eqafq69fd46y14a.ll b/bench/meilisearch-rs/optimized/2eqafq69fd46y14a.ll index 131b944ae3d..88938bc674b 100644 --- a/bench/meilisearch-rs/optimized/2eqafq69fd46y14a.ll +++ b/bench/meilisearch-rs/optimized/2eqafq69fd46y14a.ll @@ -18344,61 +18344,65 @@ define hidden { i16, i16 } @"_ZN4core6option19Option$LT$$RF$T$GT$6cloned17haf74f define hidden void @"_ZN4core6option19Option$LT$$RF$T$GT$6cloned17hc4ac918285138decE"(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([56 x i8]) align 8 dereferenceable(56) %0, ptr noalias noundef readonly align 8 dereferenceable_or_null(56) %1) unnamed_addr #0 personality ptr @rust_eh_personality { %3 = alloca [24 x i8], align 8 %4 = alloca [24 x i8], align 8 - %5 = icmp eq ptr %1, null - br i1 %5, label %23, label %6 + %5 = alloca [24 x i8], align 8 + %6 = icmp eq ptr %1, null + br i1 %6, label %24, label %7 -6: ; preds = %2 +7: ; preds = %2 tail call void @llvm.experimental.noalias.scope.decl(metadata !3538) - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !3541 - %7 = getelementptr inbounds i8, ptr %1, i64 32 - %8 = load i64, ptr %7, align 8, !range !6, !alias.scope !3538, !noalias !3543, !noundef !5 - %9 = icmp eq i64 %8, -9223372036854775808 - br i1 %9, label %10, label %11 - -10: ; preds = %6 - store i64 -9223372036854775808, ptr %4, align 8, !noalias !3541 - br label %12 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !3541 + %8 = getelementptr inbounds i8, ptr %1, i64 32 + %9 = load i64, ptr %8, align 8, !range !6, !alias.scope !3538, !noalias !3543, !noundef !5 + %10 = icmp eq i64 %9, -9223372036854775808 + br i1 %10, label %11, label %12 -11: ; preds = %6 - call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hdbaa59186bb9a20dE"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %7), !noalias !3543 - br label %12 +11: ; preds = %7 + store i64 -9223372036854775808, ptr %5, align 8, !noalias !3541 + br label %13 -12: ; preds = %11, %10 +12: ; preds = %7 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3), !noalias !3541 - %13 = getelementptr inbounds i8, ptr %1, i64 24 - %14 = getelementptr inbounds i8, ptr %1, i64 16 - %15 = load ptr, ptr %14, align 8, !alias.scope !3544, !noalias !3547, !nonnull !5, !noundef !5 - %16 = load i64, ptr %13, align 8, !alias.scope !3544, !noalias !3547, !noundef !5 - invoke void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17hdcf79207bcc80eb0E.llvm.3021571406010367114"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %3, ptr noalias noundef nonnull readonly align 8 %15, i64 noundef %16) - to label %"_ZN93_$LT$tracing_subscriber..filter..directive..StaticDirective$u20$as$u20$core..clone..Clone$GT$5clone17h7ebcec7f5fad262dE.llvm.784653754634180241.exit" unwind label %17, !noalias !3543 + call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hdbaa59186bb9a20dE"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %8), !noalias !3543 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 24, i1 false), !noalias !3541 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3), !noalias !3541 + br label %13 -17: ; preds = %12 - %18 = landingpad { ptr, i32 } +13: ; preds = %12, %11 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !3541 + %14 = getelementptr inbounds i8, ptr %1, i64 24 + %15 = getelementptr inbounds i8, ptr %1, i64 16 + %16 = load ptr, ptr %15, align 8, !alias.scope !3544, !noalias !3547, !nonnull !5, !noundef !5 + %17 = load i64, ptr %14, align 8, !alias.scope !3544, !noalias !3547, !noundef !5 + invoke void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17hdcf79207bcc80eb0E.llvm.3021571406010367114"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 %16, i64 noundef %17) + to label %"_ZN93_$LT$tracing_subscriber..filter..directive..StaticDirective$u20$as$u20$core..clone..Clone$GT$5clone17h7ebcec7f5fad262dE.llvm.784653754634180241.exit" unwind label %18, !noalias !3543 + +18: ; preds = %13 + %19 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$alloc..string..String$GT$$GT$17hede804bb89b8297dE.llvm.784653754634180241"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) #41 - to label %21 unwind label %19, !noalias !3543 + invoke void @"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$alloc..string..String$GT$$GT$17hede804bb89b8297dE.llvm.784653754634180241"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) #41 + to label %22 unwind label %20, !noalias !3543 -19: ; preds = %17 - %20 = landingpad { ptr, i32 } +20: ; preds = %18 + %21 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #42, !noalias !3543 unreachable -21: ; preds = %17 - resume { ptr, i32 } %18 +22: ; preds = %18 + resume { ptr, i32 } %19 -"_ZN93_$LT$tracing_subscriber..filter..directive..StaticDirective$u20$as$u20$core..clone..Clone$GT$5clone17h7ebcec7f5fad262dE.llvm.784653754634180241.exit": ; preds = %12 - %22 = load i64, ptr %1, align 8, !range !1425, !alias.scope !3538, !noalias !3543, !noundef !5 +"_ZN93_$LT$tracing_subscriber..filter..directive..StaticDirective$u20$as$u20$core..clone..Clone$GT$5clone17h7ebcec7f5fad262dE.llvm.784653754634180241.exit": ; preds = %13 + %23 = load i64, ptr %1, align 8, !range !1425, !alias.scope !3538, !noalias !3543, !noundef !5 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 32 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.5.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.5.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.4.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 24, i1 false) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3), !noalias !3541 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.4.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !3541 - br label %23 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !3541 + br label %24 -23: ; preds = %2, %"_ZN93_$LT$tracing_subscriber..filter..directive..StaticDirective$u20$as$u20$core..clone..Clone$GT$5clone17h7ebcec7f5fad262dE.llvm.784653754634180241.exit" - %storemerge = phi i64 [ %22, %"_ZN93_$LT$tracing_subscriber..filter..directive..StaticDirective$u20$as$u20$core..clone..Clone$GT$5clone17h7ebcec7f5fad262dE.llvm.784653754634180241.exit" ], [ 6, %2 ] +24: ; preds = %2, %"_ZN93_$LT$tracing_subscriber..filter..directive..StaticDirective$u20$as$u20$core..clone..Clone$GT$5clone17h7ebcec7f5fad262dE.llvm.784653754634180241.exit" + %storemerge = phi i64 [ %23, %"_ZN93_$LT$tracing_subscriber..filter..directive..StaticDirective$u20$as$u20$core..clone..Clone$GT$5clone17h7ebcec7f5fad262dE.llvm.784653754634180241.exit" ], [ 6, %2 ] store i64 %storemerge, ptr %0, align 8 ret void } @@ -45863,54 +45867,58 @@ define hidden void @"_ZN93_$LT$$RF$mut$u20$serde_json..de..Deserializer$LT$R$GT$ define hidden void @"_ZN93_$LT$tracing_subscriber..filter..directive..StaticDirective$u20$as$u20$core..clone..Clone$GT$5clone17h7ebcec7f5fad262dE.llvm.784653754634180241"(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([56 x i8]) align 8 dereferenceable(56) %0, ptr noalias noundef readonly align 8 dereferenceable(56) %1) unnamed_addr #3 personality ptr @rust_eh_personality { %3 = alloca [24 x i8], align 8 %4 = alloca [24 x i8], align 8 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) - %5 = getelementptr inbounds i8, ptr %1, i64 32 - %6 = load i64, ptr %5, align 8, !range !6, !noundef !5 - %7 = icmp eq i64 %6, -9223372036854775808 - br i1 %7, label %8, label %9 - -8: ; preds = %2 - store i64 -9223372036854775808, ptr %4, align 8 - br label %10 + %5 = alloca [24 x i8], align 8 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) + %6 = getelementptr inbounds i8, ptr %1, i64 32 + %7 = load i64, ptr %6, align 8, !range !6, !noundef !5 + %8 = icmp eq i64 %7, -9223372036854775808 + br i1 %8, label %9, label %10 9: ; preds = %2 - call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hdbaa59186bb9a20dE"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %5) - br label %10 + store i64 -9223372036854775808, ptr %5, align 8 + br label %11 -10: ; preds = %9, %8 +10: ; preds = %2 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) - %11 = getelementptr inbounds i8, ptr %1, i64 24 - %12 = getelementptr inbounds i8, ptr %1, i64 16 - %13 = load ptr, ptr %12, align 8, !alias.scope !6458, !noalias !6461, !nonnull !5, !noundef !5 - %14 = load i64, ptr %11, align 8, !alias.scope !6458, !noalias !6461, !noundef !5 - invoke void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17hdcf79207bcc80eb0E.llvm.3021571406010367114"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %3, ptr noalias noundef nonnull readonly align 8 %13, i64 noundef %14) - to label %"_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h1c76efc2e935a837E.exit" unwind label %15 - -15: ; preds = %10 - %16 = landingpad { ptr, i32 } + call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hdbaa59186bb9a20dE"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %6) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) + br label %11 + +11: ; preds = %10, %9 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) + %12 = getelementptr inbounds i8, ptr %1, i64 24 + %13 = getelementptr inbounds i8, ptr %1, i64 16 + %14 = load ptr, ptr %13, align 8, !alias.scope !6458, !noalias !6461, !nonnull !5, !noundef !5 + %15 = load i64, ptr %12, align 8, !alias.scope !6458, !noalias !6461, !noundef !5 + invoke void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17hdcf79207bcc80eb0E.llvm.3021571406010367114"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 %14, i64 noundef %15) + to label %"_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h1c76efc2e935a837E.exit" unwind label %16 + +16: ; preds = %11 + %17 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$alloc..string..String$GT$$GT$17hede804bb89b8297dE.llvm.784653754634180241"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) #41 - to label %22 unwind label %20 + invoke void @"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$alloc..string..String$GT$$GT$17hede804bb89b8297dE.llvm.784653754634180241"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) #41 + to label %23 unwind label %21 -"_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h1c76efc2e935a837E.exit": ; preds = %10 - %17 = load i64, ptr %1, align 8, !range !1425, !noundef !5 - %18 = getelementptr inbounds i8, ptr %0, i64 32 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) - %19 = getelementptr inbounds i8, ptr %0, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 24, i1 false) - store i64 %17, ptr %0, align 8 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) +"_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h1c76efc2e935a837E.exit": ; preds = %11 + %18 = load i64, ptr %1, align 8, !range !1425, !noundef !5 + %19 = getelementptr inbounds i8, ptr %0, i64 32 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) + %20 = getelementptr inbounds i8, ptr %0, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) + store i64 %18, ptr %0, align 8 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) ret void -20: ; preds = %15 - %21 = landingpad { ptr, i32 } +21: ; preds = %16 + %22 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #42 unreachable -22: ; preds = %15 - resume { ptr, i32 } %16 +23: ; preds = %16 + resume { ptr, i32 } %17 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/meilisearch-rs/optimized/3f4k2xees4fvt0r.ll b/bench/meilisearch-rs/optimized/3f4k2xees4fvt0r.ll index efb0ccd29d3..30474de3ed9 100644 --- a/bench/meilisearch-rs/optimized/3f4k2xees4fvt0r.ll +++ b/bench/meilisearch-rs/optimized/3f4k2xees4fvt0r.ll @@ -45882,62 +45882,66 @@ define hidden noundef align 8 ptr @"_ZN5milli9documents1_89_$LT$impl$u20$serde.. ; Function Attrs: nonlazybind uwtable define hidden void @_ZN5regex8regexset6string8RegexSet3new17hea7d4370e011747cE(ptr dead_on_unwind noalias nocapture noundef writable sret([32 x i8]) align 8 dereferenceable(32) %0, ptr noalias nocapture noundef align 8 dereferenceable(24) %1) unnamed_addr #0 personality ptr @rust_eh_personality { %3 = alloca [168 x i8], align 8 + %4 = alloca [168 x i8], align 8 + call void @llvm.lifetime.start.p0(i64 168, ptr nonnull %4) call void @llvm.lifetime.start.p0(i64 168, ptr nonnull %3) call void @_ZN5regex8builders7Builder3new17ha1700604c76f9b12E(ptr noalias nocapture noundef nonnull sret([168 x i8]) align 8 dereferenceable(168) %3, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %1) - invoke void @_ZN5regex8builders6string15RegexSetBuilder5build17hf9ebfa7150178a54E(ptr noalias nocapture noundef nonnull sret([32 x i8]) align 8 dereferenceable(32) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(168) %3) - to label %6 unwind label %4 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(168) %4, ptr noundef nonnull align 8 dereferenceable(168) %3, i64 168, i1 false) + call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %3) + invoke void @_ZN5regex8builders6string15RegexSetBuilder5build17hf9ebfa7150178a54E(ptr noalias nocapture noundef nonnull sret([32 x i8]) align 8 dereferenceable(32) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(168) %4) + to label %7 unwind label %5 -4: ; preds = %2 - %5 = landingpad { ptr, i32 } +5: ; preds = %2 + %6 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr61drop_in_place$LT$regex..builders..string..RegexSetBuilder$GT$17hc10942839523bfc6E"(ptr noalias noundef nonnull align 8 dereferenceable(168) %3) #49 - to label %common.resume unwind label %21 + invoke void @"_ZN4core3ptr61drop_in_place$LT$regex..builders..string..RegexSetBuilder$GT$17hc10942839523bfc6E"(ptr noalias noundef nonnull align 8 dereferenceable(168) %4) #49 + to label %common.resume unwind label %22 -6: ; preds = %2 - %7 = getelementptr inbounds i8, ptr %3, i64 128 - invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc..vec..Vec$LT$alloc..string..String$GT$$GT$17h9de31e24637f4632E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) - to label %14 unwind label %8 +7: ; preds = %2 + %8 = getelementptr inbounds i8, ptr %4, i64 128 + invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc..vec..Vec$LT$alloc..string..String$GT$$GT$17h9de31e24637f4632E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %8) + to label %15 unwind label %9 -8: ; preds = %6 - %9 = landingpad { ptr, i32 } +9: ; preds = %7 + %10 = landingpad { ptr, i32 } cleanup - %10 = getelementptr inbounds i8, ptr %3, i64 104 - %11 = load i8, ptr %10, align 8, !range !5172, !alias.scope !8520, !noundef !8 - %switch.not.i.i.i.i = icmp ult i8 %11, 2 - br i1 %switch.not.i.i.i.i, label %12, label %common.resume + %11 = getelementptr inbounds i8, ptr %4, i64 104 + %12 = load i8, ptr %11, align 8, !range !5172, !alias.scope !8520, !noundef !8 + %switch.not.i.i.i.i = icmp ult i8 %12, 2 + br i1 %switch.not.i.i.i.i, label %13, label %common.resume -12: ; preds = %8 - %13 = getelementptr inbounds i8, ptr %3, i64 80 - invoke void @"_ZN71_$LT$alloc..sync..Arc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc3b9a7f1a2bb82f3E.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 dereferenceable(16) %13) - to label %common.resume unwind label %19 +13: ; preds = %9 + %14 = getelementptr inbounds i8, ptr %4, i64 80 + invoke void @"_ZN71_$LT$alloc..sync..Arc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc3b9a7f1a2bb82f3E.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 dereferenceable(16) %14) + to label %common.resume unwind label %20 -14: ; preds = %6 - %15 = getelementptr inbounds i8, ptr %3, i64 104 - %16 = load i8, ptr %15, align 8, !range !5172, !alias.scope !8529, !noundef !8 - %switch.not.i.i1.i.i = icmp ult i8 %16, 2 - br i1 %switch.not.i.i1.i.i, label %17, label %"_ZN4core3ptr61drop_in_place$LT$regex..builders..string..RegexSetBuilder$GT$17hc10942839523bfc6E.exit" +15: ; preds = %7 + %16 = getelementptr inbounds i8, ptr %4, i64 104 + %17 = load i8, ptr %16, align 8, !range !5172, !alias.scope !8529, !noundef !8 + %switch.not.i.i1.i.i = icmp ult i8 %17, 2 + br i1 %switch.not.i.i1.i.i, label %18, label %"_ZN4core3ptr61drop_in_place$LT$regex..builders..string..RegexSetBuilder$GT$17hc10942839523bfc6E.exit" -17: ; preds = %14 - %18 = getelementptr inbounds i8, ptr %3, i64 80 - call void @"_ZN71_$LT$alloc..sync..Arc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc3b9a7f1a2bb82f3E.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 dereferenceable(16) %18) +18: ; preds = %15 + %19 = getelementptr inbounds i8, ptr %4, i64 80 + call void @"_ZN71_$LT$alloc..sync..Arc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc3b9a7f1a2bb82f3E.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 dereferenceable(16) %19) br label %"_ZN4core3ptr61drop_in_place$LT$regex..builders..string..RegexSetBuilder$GT$17hc10942839523bfc6E.exit" -19: ; preds = %12 - %20 = landingpad { ptr, i32 } +20: ; preds = %13 + %21 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #50 unreachable -common.resume: ; preds = %4, %8, %12 - %common.resume.op = phi { ptr, i32 } [ %9, %12 ], [ %9, %8 ], [ %5, %4 ] +common.resume: ; preds = %5, %9, %13 + %common.resume.op = phi { ptr, i32 } [ %10, %13 ], [ %10, %9 ], [ %6, %5 ] resume { ptr, i32 } %common.resume.op -"_ZN4core3ptr61drop_in_place$LT$regex..builders..string..RegexSetBuilder$GT$17hc10942839523bfc6E.exit": ; preds = %14, %17 - call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %3) +"_ZN4core3ptr61drop_in_place$LT$regex..builders..string..RegexSetBuilder$GT$17hc10942839523bfc6E.exit": ; preds = %15, %18 + call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %4) ret void -21: ; preds = %4 - %22 = landingpad { ptr, i32 } +22: ; preds = %5 + %23 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #50 unreachable diff --git a/bench/meilisearch-rs/optimized/4bitt7og17dqjles.ll b/bench/meilisearch-rs/optimized/4bitt7og17dqjles.ll index e2ceb9357dc..7c5e353c500 100644 --- a/bench/meilisearch-rs/optimized/4bitt7og17dqjles.ll +++ b/bench/meilisearch-rs/optimized/4bitt7og17dqjles.ll @@ -1023,73 +1023,76 @@ define hidden void @_ZN4uuid3fmt17format_hyphenated17h907119b5f9fded53E.llvm.808 ; Function Attrs: nonlazybind uwtable define hidden noundef align 8 ptr @"_ZN4uuid8external13serde_support62_$LT$impl$u20$serde..ser..Serialize$u20$for$u20$uuid..Uuid$GT$9serialize17hd632269691b1dcbeE"(ptr noalias nocapture noundef readonly align 1 dereferenceable(16) %0, ptr noalias noundef align 8 dereferenceable(8) %1) unnamed_addr #4 personality ptr @rust_eh_personality { - %3 = alloca [45 x i8], align 1 - call void @llvm.lifetime.start.p0(i64 45, ptr nonnull %3) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(45) %3, i8 0, i64 45, i1 false) + %3 = alloca [36 x i8], align 1 + %4 = alloca [45 x i8], align 1 + call void @llvm.lifetime.start.p0(i64 45, ptr nonnull %4) + %5 = getelementptr inbounds i8, ptr %4, i64 36 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(45) %5, i8 0, i64 9, i1 false) call void @_ZN4uuid3fmt17format_hyphenated17h907119b5f9fded53E.llvm.8087441491139147532(ptr noalias nocapture noundef nonnull sret([36 x i8]) align 1 dereferenceable(36) %3, ptr noalias noundef nonnull readonly align 1 dereferenceable(16) %0, i1 noundef zeroext false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(36) %4, ptr noundef nonnull align 1 dereferenceable(36) %3, i64 36, i1 false) tail call void @llvm.experimental.noalias.scope.decl(metadata !289) - %4 = getelementptr inbounds i8, ptr %1, i64 8 + %6 = getelementptr inbounds i8, ptr %1, i64 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !292) tail call void @llvm.experimental.noalias.scope.decl(metadata !295) tail call void @llvm.experimental.noalias.scope.decl(metadata !298) - %5 = load ptr, ptr %1, align 8, !alias.scope !301, !noalias !302, !nonnull !4, !align !15, !noundef !4 - %6 = getelementptr inbounds i8, ptr %5, i64 16 - %7 = load i64, ptr %6, align 8, !alias.scope !307, !noalias !316, !noundef !4 - %8 = load i64, ptr %5, align 8, !alias.scope !319, !noalias !316, !noundef !4 - %9 = icmp eq i64 %8, %7 - br i1 %9, label %10, label %11 - -10: ; preds = %2 - tail call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h8cfea285f73d90eeE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5, i64 noundef %7, i64 noundef 1), !noalias !316 - %.pre.i.i.i.i.i.i.i.i = load i64, ptr %6, align 8, !alias.scope !307, !noalias !316 - br label %11 - -11: ; preds = %10, %2 - %12 = phi i64 [ %7, %2 ], [ %.pre.i.i.i.i.i.i.i.i, %10 ] - %13 = getelementptr inbounds i8, ptr %5, i64 8 - %14 = load ptr, ptr %13, align 8, !alias.scope !307, !noalias !316, !nonnull !4, !noundef !4 - %15 = getelementptr inbounds i8, ptr %14, i64 %12 - store i8 34, ptr %15, align 1, !noalias !322 - %16 = load i64, ptr %6, align 8, !alias.scope !307, !noalias !316, !noundef !4 - %17 = add i64 %16, 1 - store i64 %17, ptr %6, align 8, !alias.scope !307, !noalias !316 - %18 = call noundef ptr @_ZN10serde_json3ser27format_escaped_str_contents17hc9df7fe4fdfa66faE.llvm.2337583790011467692(ptr noalias noundef nonnull align 8 dereferenceable(8) %1, ptr noalias noundef nonnull align 1 %4, ptr noalias noundef nonnull readonly align 1 %3, i64 noundef 36) - %19 = icmp eq ptr %18, null - br i1 %19, label %20, label %_ZN10serde_json3ser18format_escaped_str17hb314b7bc3dbee5f7E.exit.i + %7 = load ptr, ptr %1, align 8, !alias.scope !301, !noalias !302, !nonnull !4, !align !15, !noundef !4 + %8 = getelementptr inbounds i8, ptr %7, i64 16 + %9 = load i64, ptr %8, align 8, !alias.scope !307, !noalias !316, !noundef !4 + %10 = load i64, ptr %7, align 8, !alias.scope !319, !noalias !316, !noundef !4 + %11 = icmp eq i64 %10, %9 + br i1 %11, label %12, label %13 -20: ; preds = %11 +12: ; preds = %2 + tail call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h8cfea285f73d90eeE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %9, i64 noundef 1), !noalias !316 + %.pre.i.i.i.i.i.i.i.i = load i64, ptr %8, align 8, !alias.scope !307, !noalias !316 + br label %13 + +13: ; preds = %12, %2 + %14 = phi i64 [ %9, %2 ], [ %.pre.i.i.i.i.i.i.i.i, %12 ] + %15 = getelementptr inbounds i8, ptr %7, i64 8 + %16 = load ptr, ptr %15, align 8, !alias.scope !307, !noalias !316, !nonnull !4, !noundef !4 + %17 = getelementptr inbounds i8, ptr %16, i64 %14 + store i8 34, ptr %17, align 1, !noalias !322 + %18 = load i64, ptr %8, align 8, !alias.scope !307, !noalias !316, !noundef !4 + %19 = add i64 %18, 1 + store i64 %19, ptr %8, align 8, !alias.scope !307, !noalias !316 + %20 = call noundef ptr @_ZN10serde_json3ser27format_escaped_str_contents17hc9df7fe4fdfa66faE.llvm.2337583790011467692(ptr noalias noundef nonnull align 8 dereferenceable(8) %1, ptr noalias noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 1 %4, i64 noundef 36) + %21 = icmp eq ptr %20, null + br i1 %21, label %22, label %_ZN10serde_json3ser18format_escaped_str17hb314b7bc3dbee5f7E.exit.i + +22: ; preds = %13 call void @llvm.experimental.noalias.scope.decl(metadata !323) call void @llvm.experimental.noalias.scope.decl(metadata !326) - %21 = load ptr, ptr %1, align 8, !alias.scope !329, !noalias !330, !nonnull !4, !align !15, !noundef !4 - %22 = getelementptr inbounds i8, ptr %21, i64 16 - %23 = load i64, ptr %22, align 8, !alias.scope !332, !noalias !341, !noundef !4 - %24 = load i64, ptr %21, align 8, !alias.scope !344, !noalias !341, !noundef !4 - %25 = icmp eq i64 %24, %23 - br i1 %25, label %26, label %_ZN10serde_json3ser18format_escaped_str17hb314b7bc3dbee5f7E.exit.thread.i - -26: ; preds = %20 - call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h8cfea285f73d90eeE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %21, i64 noundef %23, i64 noundef 1), !noalias !341 - %.pre.i.i.i.i.i.i5.i.i = load i64, ptr %22, align 8, !alias.scope !332, !noalias !341 + %23 = load ptr, ptr %1, align 8, !alias.scope !329, !noalias !330, !nonnull !4, !align !15, !noundef !4 + %24 = getelementptr inbounds i8, ptr %23, i64 16 + %25 = load i64, ptr %24, align 8, !alias.scope !332, !noalias !341, !noundef !4 + %26 = load i64, ptr %23, align 8, !alias.scope !344, !noalias !341, !noundef !4 + %27 = icmp eq i64 %26, %25 + br i1 %27, label %28, label %_ZN10serde_json3ser18format_escaped_str17hb314b7bc3dbee5f7E.exit.thread.i + +28: ; preds = %22 + call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h8cfea285f73d90eeE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %23, i64 noundef %25, i64 noundef 1), !noalias !341 + %.pre.i.i.i.i.i.i5.i.i = load i64, ptr %24, align 8, !alias.scope !332, !noalias !341 br label %_ZN10serde_json3ser18format_escaped_str17hb314b7bc3dbee5f7E.exit.thread.i -_ZN10serde_json3ser18format_escaped_str17hb314b7bc3dbee5f7E.exit.thread.i: ; preds = %26, %20 - %27 = phi i64 [ %23, %20 ], [ %.pre.i.i.i.i.i.i5.i.i, %26 ] - %28 = getelementptr inbounds i8, ptr %21, i64 8 - %29 = load ptr, ptr %28, align 8, !alias.scope !332, !noalias !341, !nonnull !4, !noundef !4 - %30 = getelementptr inbounds i8, ptr %29, i64 %27 - store i8 34, ptr %30, align 1, !noalias !347 - %31 = load i64, ptr %22, align 8, !alias.scope !332, !noalias !341, !noundef !4 - %32 = add i64 %31, 1 - store i64 %32, ptr %22, align 8, !alias.scope !332, !noalias !341 +_ZN10serde_json3ser18format_escaped_str17hb314b7bc3dbee5f7E.exit.thread.i: ; preds = %28, %22 + %29 = phi i64 [ %25, %22 ], [ %.pre.i.i.i.i.i.i5.i.i, %28 ] + %30 = getelementptr inbounds i8, ptr %23, i64 8 + %31 = load ptr, ptr %30, align 8, !alias.scope !332, !noalias !341, !nonnull !4, !noundef !4 + %32 = getelementptr inbounds i8, ptr %31, i64 %29 + store i8 34, ptr %32, align 1, !noalias !347 + %33 = load i64, ptr %24, align 8, !alias.scope !332, !noalias !341, !noundef !4 + %34 = add i64 %33, 1 + store i64 %34, ptr %24, align 8, !alias.scope !332, !noalias !341 br label %"_ZN95_$LT$$RF$mut$u20$serde_json..ser..Serializer$LT$W$C$F$GT$$u20$as$u20$serde..ser..Serializer$GT$13serialize_str17hd0c48330401e6b40E.llvm.8087441491139147532.exit" -_ZN10serde_json3ser18format_escaped_str17hb314b7bc3dbee5f7E.exit.i: ; preds = %11 - %33 = call noundef nonnull align 8 ptr @_ZN10serde_json5error5Error2io17h8cb789c2d24d7f40E(ptr noundef nonnull %18) +_ZN10serde_json3ser18format_escaped_str17hb314b7bc3dbee5f7E.exit.i: ; preds = %13 + %35 = call noundef nonnull align 8 ptr @_ZN10serde_json5error5Error2io17h8cb789c2d24d7f40E(ptr noundef nonnull %20) br label %"_ZN95_$LT$$RF$mut$u20$serde_json..ser..Serializer$LT$W$C$F$GT$$u20$as$u20$serde..ser..Serializer$GT$13serialize_str17hd0c48330401e6b40E.llvm.8087441491139147532.exit" "_ZN95_$LT$$RF$mut$u20$serde_json..ser..Serializer$LT$W$C$F$GT$$u20$as$u20$serde..ser..Serializer$GT$13serialize_str17hd0c48330401e6b40E.llvm.8087441491139147532.exit": ; preds = %_ZN10serde_json3ser18format_escaped_str17hb314b7bc3dbee5f7E.exit.thread.i, %_ZN10serde_json3ser18format_escaped_str17hb314b7bc3dbee5f7E.exit.i - %.sroa.0.0.i = phi ptr [ %33, %_ZN10serde_json3ser18format_escaped_str17hb314b7bc3dbee5f7E.exit.i ], [ null, %_ZN10serde_json3ser18format_escaped_str17hb314b7bc3dbee5f7E.exit.thread.i ] - call void @llvm.lifetime.end.p0(i64 45, ptr nonnull %3) + %.sroa.0.0.i = phi ptr [ %35, %_ZN10serde_json3ser18format_escaped_str17hb314b7bc3dbee5f7E.exit.i ], [ null, %_ZN10serde_json3ser18format_escaped_str17hb314b7bc3dbee5f7E.exit.thread.i ] + call void @llvm.lifetime.end.p0(i64 45, ptr nonnull %4) ret ptr %.sroa.0.0.i } diff --git a/bench/meilisearch-rs/optimized/nd5rqkzol64hjfl.ll b/bench/meilisearch-rs/optimized/nd5rqkzol64hjfl.ll index dc9e6490302..7d9c437638b 100644 --- a/bench/meilisearch-rs/optimized/nd5rqkzol64hjfl.ll +++ b/bench/meilisearch-rs/optimized/nd5rqkzol64hjfl.ll @@ -6253,94 +6253,96 @@ define hidden void @_ZN16meilisearch_auth5store20generate_key_as_hexa17heb639d1d %5 = alloca [0 x i8], align 1 %6 = alloca [48 x i8], align 8 %7 = alloca [32 x i8], align 1 - %8 = alloca [16 x i8], align 8 - %9 = alloca [152 x i8], align 8 - %10 = alloca [160 x i8], align 8 - %11 = alloca [152 x i8], align 8 - %12 = alloca [36 x i8], align 1 - call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %12) - call void @_ZN4uuid3fmt17format_hyphenated17h907119b5f9fded53E.llvm.16590639573034840061(ptr noalias nocapture noundef nonnull sret([36 x i8]) align 1 dereferenceable(36) %12, ptr noalias noundef nonnull readonly align 1 dereferenceable(16) %1, i1 noundef zeroext false) - call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %11) - call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %10) - call void @"_ZN90_$LT$digest..core_api..wrapper..CoreWrapper$LT$T$GT$$u20$as$u20$crypto_common..KeyInit$GT$14new_from_slice17h15c1ebac4cece269E.llvm.16590639573034840061"(ptr noalias nocapture noundef nonnull sret([160 x i8]) align 8 dereferenceable(160) %10, ptr noalias noundef nonnull readonly align 1 %2, i64 noundef %3) + %8 = alloca [32 x i8], align 1 + %9 = alloca [16 x i8], align 8 + %10 = alloca [152 x i8], align 8 + %11 = alloca [160 x i8], align 8 + %12 = alloca [152 x i8], align 8 + %13 = alloca [36 x i8], align 1 + call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %13) + call void @_ZN4uuid3fmt17format_hyphenated17h907119b5f9fded53E.llvm.16590639573034840061(ptr noalias nocapture noundef nonnull sret([36 x i8]) align 1 dereferenceable(36) %13, ptr noalias noundef nonnull readonly align 1 dereferenceable(16) %1, i1 noundef zeroext false) + call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %12) + call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %11) + call void @"_ZN90_$LT$digest..core_api..wrapper..CoreWrapper$LT$T$GT$$u20$as$u20$crypto_common..KeyInit$GT$14new_from_slice17h15c1ebac4cece269E.llvm.16590639573034840061"(ptr noalias nocapture noundef nonnull sret([160 x i8]) align 8 dereferenceable(160) %11, ptr noalias noundef nonnull readonly align 1 %2, i64 noundef %3) tail call void @llvm.experimental.noalias.scope.decl(metadata !1290) tail call void @llvm.experimental.noalias.scope.decl(metadata !1293) call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %5) - %13 = load i64, ptr %10, align 8, !range !160, !alias.scope !1293, !noalias !1295, !noundef !4 - %trunc.i = trunc nuw i64 %13 to i1 - br i1 %trunc.i, label %14, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h3a5fadbc05ea59a0E.llvm.16590639573034840061.exit" + %14 = load i64, ptr %11, align 8, !range !160, !alias.scope !1293, !noalias !1295, !noundef !4 + %trunc.i = trunc nuw i64 %14 to i1 + br i1 %trunc.i, label %15, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h3a5fadbc05ea59a0E.llvm.16590639573034840061.exit" -14: ; preds = %4 +15: ; preds = %4 call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.0cb9b3cd82a9bc1899a20c7efca9230d.38.llvm.16590639573034840061, i64 noundef 43, ptr noundef nonnull align 1 %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.0cb9b3cd82a9bc1899a20c7efca9230d.39.llvm.16590639573034840061, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.0cb9b3cd82a9bc1899a20c7efca9230d.76.llvm.16590639573034840061) #19, !noalias !1297 unreachable "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h3a5fadbc05ea59a0E.llvm.16590639573034840061.exit": ; preds = %4 - %15 = getelementptr inbounds i8, ptr %10, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %11, ptr noundef nonnull align 8 dereferenceable(152) %15, i64 152, i1 false), !alias.scope !1297, !noalias !1298 + %16 = getelementptr inbounds i8, ptr %11, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %12, ptr noundef nonnull align 8 dereferenceable(152) %16, i64 152, i1 false), !alias.scope !1297, !noalias !1298 call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %5) - call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %10) - %16 = getelementptr inbounds i8, ptr %11, i64 80 + call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %11) + %17 = getelementptr inbounds i8, ptr %12, i64 80 tail call void @llvm.experimental.noalias.scope.decl(metadata !1299) tail call void @llvm.experimental.noalias.scope.decl(metadata !1302) - %17 = getelementptr inbounds i8, ptr %11, i64 144 - %18 = load i8, ptr %17, align 8, !alias.scope !1299, !noalias !1304, !noundef !4 - %19 = zext nneg i8 %18 to i64 - %20 = icmp ult i8 %18, 64 - tail call void @llvm.assume(i1 %20) - %21 = icmp ult i8 %18, 28 - br i1 %21, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17ha33db307e64c0f6aE.exit.i", label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17ha33db307e64c0f6aE.exit24.i" + %18 = getelementptr inbounds i8, ptr %12, i64 144 + %19 = load i8, ptr %18, align 8, !alias.scope !1299, !noalias !1304, !noundef !4 + %20 = zext nneg i8 %19 to i64 + %21 = icmp ult i8 %19, 64 + tail call void @llvm.assume(i1 %21) + %22 = icmp ult i8 %19, 28 + br i1 %22, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17ha33db307e64c0f6aE.exit.i", label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17ha33db307e64c0f6aE.exit24.i" "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17ha33db307e64c0f6aE.exit.i": ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h3a5fadbc05ea59a0E.llvm.16590639573034840061.exit" - %22 = getelementptr inbounds i8, ptr %16, i64 %19 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(36) %22, ptr noundef nonnull readonly align 1 dereferenceable(36) %12, i64 36, i1 false), !alias.scope !1306, !noalias !1310 - %23 = add nuw nsw i64 %19, 36 + %23 = getelementptr inbounds i8, ptr %17, i64 %20 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(36) %23, ptr noundef nonnull readonly align 1 dereferenceable(36) %13, i64 36, i1 false), !alias.scope !1306, !noalias !1310 + %24 = add nuw nsw i64 %20, 36 br label %_ZN5alloc3fmt6format17h7fed6a266585da9dE.llvm.16590639573034840061.exit "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17ha33db307e64c0f6aE.exit24.i": ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h3a5fadbc05ea59a0E.llvm.16590639573034840061.exit" - %24 = sub nuw nsw i64 64, %19 - %25 = getelementptr inbounds i8, ptr %12, i64 %24 - %26 = add nsw i64 %19, -28 - %27 = getelementptr inbounds i8, ptr %16, i64 %19 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %27, ptr nonnull readonly align 1 %12, i64 %24, i1 false), !alias.scope !1312, !noalias !1316 - %28 = getelementptr inbounds i8, ptr %11, i64 32 - %29 = load i64, ptr %28, align 8, !alias.scope !1318, !noalias !1323, !noundef !4 - %30 = add i64 %29, 1 - store i64 %30, ptr %28, align 8, !alias.scope !1318, !noalias !1323 - call void @_ZN4sha26sha25611compress25617hf161fad7d25975d1E(ptr noalias noundef nonnull align 4 dereferenceable(32) %11, ptr noalias noundef nonnull readonly align 1 %16, i64 noundef 1), !noalias !1304 - %31 = and i64 %26, -64 - %32 = getelementptr inbounds i8, ptr %25, i64 %31 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %16, ptr nonnull readonly align 1 %32, i64 %26, i1 false), !alias.scope !1328, !noalias !1332 + %25 = sub nuw nsw i64 64, %20 + %26 = getelementptr inbounds i8, ptr %13, i64 %25 + %27 = add nsw i64 %20, -28 + %28 = getelementptr inbounds i8, ptr %17, i64 %20 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %28, ptr nonnull readonly align 1 %13, i64 %25, i1 false), !alias.scope !1312, !noalias !1316 + %29 = getelementptr inbounds i8, ptr %12, i64 32 + %30 = load i64, ptr %29, align 8, !alias.scope !1318, !noalias !1323, !noundef !4 + %31 = add i64 %30, 1 + store i64 %31, ptr %29, align 8, !alias.scope !1318, !noalias !1323 + call void @_ZN4sha26sha25611compress25617hf161fad7d25975d1E(ptr noalias noundef nonnull align 4 dereferenceable(32) %12, ptr noalias noundef nonnull readonly align 1 %17, i64 noundef 1), !noalias !1304 + %32 = and i64 %27, -64 + %33 = getelementptr inbounds i8, ptr %26, i64 %32 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %17, ptr nonnull readonly align 1 %33, i64 %27, i1 false), !alias.scope !1328, !noalias !1332 br label %_ZN5alloc3fmt6format17h7fed6a266585da9dE.llvm.16590639573034840061.exit _ZN5alloc3fmt6format17h7fed6a266585da9dE.llvm.16590639573034840061.exit: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17ha33db307e64c0f6aE.exit24.i", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17ha33db307e64c0f6aE.exit.i" - %storemerge.in.i = phi i64 [ %26, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17ha33db307e64c0f6aE.exit24.i" ], [ %23, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17ha33db307e64c0f6aE.exit.i" ] + %storemerge.in.i = phi i64 [ %27, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17ha33db307e64c0f6aE.exit24.i" ], [ %24, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17ha33db307e64c0f6aE.exit.i" ] %storemerge.i = trunc nsw i64 %storemerge.in.i to i8 - store i8 %storemerge.i, ptr %17, align 8, !alias.scope !1299, !noalias !1304 - call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %9) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %9, ptr noundef nonnull align 8 dereferenceable(152) %11, i64 152, i1 false) - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) - call void @_ZN6digest11FixedOutput14finalize_fixed17h9bab35a7767e7365E.llvm.16590639573034840061(ptr noalias nocapture noundef nonnull sret([32 x i8]) align 1 dereferenceable(32) %7, ptr noalias nocapture noundef nonnull align 8 dereferenceable(152) %9) - call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %9) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) - store ptr %7, ptr %8, align 8 - %.sroa.43.0..sroa_idx = getelementptr inbounds i8, ptr %8, i64 8 + store i8 %storemerge.i, ptr %18, align 8, !alias.scope !1299, !noalias !1304 + call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %10) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %10, ptr noundef nonnull align 8 dereferenceable(152) %12, i64 152, i1 false) + call void @_ZN6digest11FixedOutput14finalize_fixed17h9bab35a7767e7365E.llvm.16590639573034840061(ptr noalias nocapture noundef nonnull sret([32 x i8]) align 1 dereferenceable(32) %7, ptr noalias nocapture noundef nonnull align 8 dereferenceable(152) %10) + call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %10) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %8, ptr noundef nonnull align 1 dereferenceable(32) %7, i64 32, i1 false) + store ptr %8, ptr %9, align 8 + %.sroa.43.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 8 store ptr @"_ZN13generic_array3hex91_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$generic_array..GenericArray$LT$u8$C$T$GT$$GT$3fmt17h445dc54fdde901f7E", ptr %.sroa.43.0..sroa_idx, align 8 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6), !noalias !1334 store ptr @anon.0cb9b3cd82a9bc1899a20c7efca9230d.77.llvm.16590639573034840061, ptr %6, align 8, !noalias !1345 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %6, i64 8 store i64 1, ptr %.sroa.5.0..sroa_idx, align 8, !noalias !1345 %.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %6, i64 16 - store ptr %8, ptr %.sroa.7.0..sroa_idx, align 8, !noalias !1345 + store ptr %9, ptr %.sroa.7.0..sroa_idx, align 8, !noalias !1345 %.sroa.8.0..sroa_idx = getelementptr inbounds i8, ptr %6, i64 24 store i64 1, ptr %.sroa.8.0..sroa_idx, align 8, !noalias !1345 %.sroa.10.0..sroa_idx = getelementptr inbounds i8, ptr %6, i64 32 store ptr null, ptr %.sroa.10.0..sroa_idx, align 8, !noalias !1345 call void @_ZN5alloc3fmt6format12format_inner17h77a68f64fb1f586eE(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %0, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %6), !noalias !1346 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6), !noalias !1334 - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) - call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %11) - call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %12) + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) + call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %12) + call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %13) ret void } diff --git a/bench/mini-lsm-rs/optimized/2rn59pv87vl7e835.ll b/bench/mini-lsm-rs/optimized/2rn59pv87vl7e835.ll index 1f11d5410e4..9aaaeeebc45 100644 --- a/bench/mini-lsm-rs/optimized/2rn59pv87vl7e835.ll +++ b/bench/mini-lsm-rs/optimized/2rn59pv87vl7e835.ll @@ -10645,150 +10645,154 @@ define internal fastcc noundef ptr @_ZN8mini_lsm11lsm_storage15LsmStorageInner21 %2 = alloca { { i64 }, { i64 }, { ptr, ptr, ptr, i64 } }, align 8 %3 = alloca { { i64 }, { i64 }, { ptr, ptr, ptr, i64 } }, align 8 %4 = alloca { i64, [13 x i64] }, align 8 - %5 = alloca { { { { { i64, ptr }, i64 } } } }, align 8 - %6 = alloca { ptr, [3 x i64] }, align 8 - %7 = getelementptr inbounds i8, ptr %0, i64 96 - %8 = atomicrmw add ptr %7, i64 1 seq_cst, align 8 - %9 = getelementptr inbounds i8, ptr %0, i64 80 - %10 = load ptr, ptr %9, align 8, !nonnull !7, !noundef !7 - %11 = getelementptr inbounds i8, ptr %10, i64 80 - %12 = load i8, ptr %11, align 8, !range !107, !noundef !7 - %13 = trunc nuw i8 %12 to i1 - br i1 %13, label %25, label %14 + %5 = alloca { ptr, ptr, ptr, i64 }, align 8 + %6 = alloca { { { { { i64, ptr }, i64 } } } }, align 8 + %7 = alloca { ptr, [3 x i64] }, align 8 + %8 = getelementptr inbounds i8, ptr %0, i64 96 + %9 = atomicrmw add ptr %8, i64 1 seq_cst, align 8 + %10 = getelementptr inbounds i8, ptr %0, i64 80 + %11 = load ptr, ptr %10, align 8, !nonnull !7, !noundef !7 + %12 = getelementptr inbounds i8, ptr %11, i64 80 + %13 = load i8, ptr %12, align 8, !range !107, !noundef !7 + %14 = trunc nuw i8 %13 to i1 + br i1 %14, label %26, label %15 -14: ; preds = %1 - %15 = getelementptr inbounds i8, ptr %3, i64 16 +15: ; preds = %1 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) + call void @_ZN8mini_lsm9mem_table8MemTable6create17h381eb20a94b244ceE(ptr noalias nocapture noundef nonnull sret({ ptr, ptr, ptr, i64 }) align 8 dereferenceable(32) %5, i64 noundef %9) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3), !noalias !1579 - call void @_ZN8mini_lsm9mem_table8MemTable6create17h381eb20a94b244ceE(ptr noalias nocapture noundef nonnull sret({ ptr, ptr, ptr, i64 }) align 8 dereferenceable(32) %15, i64 noundef %8) store i64 1, ptr %3, align 8, !noalias !1579 %16 = getelementptr inbounds i8, ptr %3, i64 8 store i64 1, ptr %16, align 8, !noalias !1579 - %17 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !1582 - %18 = tail call noundef align 8 dereferenceable_or_null(48) ptr @__rust_alloc(i64 noundef 48, i64 noundef 8) #24, !noalias !1582 - %19 = icmp eq ptr %18, null - br i1 %19, label %20, label %"_ZN5alloc4sync12Arc$LT$T$GT$3new17h9056487015dc1e46E.exit" - -20: ; preds = %14 + %17 = getelementptr inbounds i8, ptr %3, i64 16 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull readonly align 8 dereferenceable(32) %5, i64 32, i1 false) + %18 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !1582 + %19 = tail call noundef align 8 dereferenceable_or_null(48) ptr @__rust_alloc(i64 noundef 48, i64 noundef 8) #24, !noalias !1582 + %20 = icmp eq ptr %19, null + br i1 %20, label %21, label %"_ZN5alloc4sync12Arc$LT$T$GT$3new17h9056487015dc1e46E.exit" + +21: ; preds = %15 invoke void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef 8, i64 noundef 48) #27 - to label %.noexc.i unwind label %21, !noalias !1579 + to label %.noexc.i unwind label %22, !noalias !1579 -.noexc.i: ; preds = %20 +.noexc.i: ; preds = %21 unreachable -21: ; preds = %20 - %22 = landingpad { ptr, i32 } +22: ; preds = %21 + %23 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr50drop_in_place$LT$mini_lsm..mem_table..MemTable$GT$17ha4f454f2b62fe8a4E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %15) - to label %common.resume unwind label %23, !noalias !1579 + invoke void @"_ZN4core3ptr50drop_in_place$LT$mini_lsm..mem_table..MemTable$GT$17ha4f454f2b62fe8a4E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %17) + to label %common.resume unwind label %24, !noalias !1579 -23: ; preds = %21 - %24 = landingpad { ptr, i32 } +24: ; preds = %22 + %25 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #26, !noalias !1579 unreachable -common.resume: ; preds = %42, %21 - %common.resume.op = phi { ptr, i32 } [ %22, %21 ], [ %43, %42 ] +common.resume: ; preds = %43, %22 + %common.resume.op = phi { ptr, i32 } [ %23, %22 ], [ %44, %43 ] resume { ptr, i32 } %common.resume.op -"_ZN5alloc4sync12Arc$LT$T$GT$3new17h9056487015dc1e46E.exit": ; preds = %14 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %18, ptr noundef nonnull align 8 dereferenceable(48) %3, i64 48, i1 false), !noalias !1579 +"_ZN5alloc4sync12Arc$LT$T$GT$3new17h9056487015dc1e46E.exit": ; preds = %15 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %19, ptr noundef nonnull align 8 dereferenceable(48) %3, i64 48, i1 false), !noalias !1579 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3), !noalias !1579 - br label %31 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) + br label %32 -25: ; preds = %1 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) - %26 = getelementptr inbounds i8, ptr %0, i64 40 - call void @_ZN8mini_lsm11lsm_storage15LsmStorageInner18path_of_wal_static17hd5c84cb4d574bb66E(ptr noalias nocapture noundef nonnull sret({ { { { { i64, ptr }, i64 } } } }) align 8 dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %26, i64 noundef %8) - call void @_ZN8mini_lsm9mem_table8MemTable15create_with_wal17hb2eda89e7a38f694E(ptr noalias nocapture noundef nonnull sret({ ptr, [3 x i64] }) align 8 dereferenceable(32) %6, i64 noundef %8, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %5) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) - %27 = load ptr, ptr %6, align 8, !noundef !7 - %28 = icmp eq ptr %27, null - %29 = getelementptr inbounds i8, ptr %6, i64 8 - %30 = load ptr, ptr %29, align 8 - br i1 %28, label %46, label %35 - -31: ; preds = %"_ZN5alloc4sync12Arc$LT$T$GT$3new17h9056487015dc1e46E.exit39", %"_ZN5alloc4sync12Arc$LT$T$GT$3new17h9056487015dc1e46E.exit" - %.032 = phi ptr [ %39, %"_ZN5alloc4sync12Arc$LT$T$GT$3new17h9056487015dc1e46E.exit39" ], [ %18, %"_ZN5alloc4sync12Arc$LT$T$GT$3new17h9056487015dc1e46E.exit" ] - %32 = getelementptr i8, ptr %0, i64 64 - %.val = load ptr, ptr %32, align 8, !nonnull !7, !noundef !7 - %33 = tail call fastcc noundef ptr @_ZN8mini_lsm11lsm_storage15LsmStorageInner29freeze_memtable_with_memtable17h1c8fa458f3890602E(ptr nonnull %.val, ptr noundef nonnull %.032) - %34 = icmp eq ptr %33, null - br i1 %34, label %47, label %58 - -35: ; preds = %25 - %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %6, i64 16 +26: ; preds = %1 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) + %27 = getelementptr inbounds i8, ptr %0, i64 40 + call void @_ZN8mini_lsm11lsm_storage15LsmStorageInner18path_of_wal_static17hd5c84cb4d574bb66E(ptr noalias nocapture noundef nonnull sret({ { { { { i64, ptr }, i64 } } } }) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %27, i64 noundef %9) + call void @_ZN8mini_lsm9mem_table8MemTable15create_with_wal17hb2eda89e7a38f694E(ptr noalias nocapture noundef nonnull sret({ ptr, [3 x i64] }) align 8 dereferenceable(32) %7, i64 noundef %9, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %6) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) + %28 = load ptr, ptr %7, align 8, !noundef !7 + %29 = icmp eq ptr %28, null + %30 = getelementptr inbounds i8, ptr %7, i64 8 + %31 = load ptr, ptr %30, align 8 + br i1 %29, label %47, label %36 + +32: ; preds = %"_ZN5alloc4sync12Arc$LT$T$GT$3new17h9056487015dc1e46E.exit39", %"_ZN5alloc4sync12Arc$LT$T$GT$3new17h9056487015dc1e46E.exit" + %.032 = phi ptr [ %40, %"_ZN5alloc4sync12Arc$LT$T$GT$3new17h9056487015dc1e46E.exit39" ], [ %19, %"_ZN5alloc4sync12Arc$LT$T$GT$3new17h9056487015dc1e46E.exit" ] + %33 = getelementptr i8, ptr %0, i64 64 + %.val = load ptr, ptr %33, align 8, !nonnull !7, !noundef !7 + %34 = tail call fastcc noundef ptr @_ZN8mini_lsm11lsm_storage15LsmStorageInner29freeze_memtable_with_memtable17h1c8fa458f3890602E(ptr nonnull %.val, ptr noundef nonnull %.032) + %35 = icmp eq ptr %34, null + br i1 %35, label %48, label %59 + +36: ; preds = %26 + %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %7, i64 16 %.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %2, i64 32 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %2), !noalias !1585 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.3.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.5.0..sroa_idx, i64 16, i1 false) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) store i64 1, ptr %2, align 8, !noalias !1585 - %36 = getelementptr inbounds i8, ptr %2, i64 8 - store i64 1, ptr %36, align 8, !noalias !1585 - %37 = getelementptr inbounds i8, ptr %2, i64 16 - store ptr %27, ptr %37, align 8 + %37 = getelementptr inbounds i8, ptr %2, i64 8 + store i64 1, ptr %37, align 8, !noalias !1585 + %38 = getelementptr inbounds i8, ptr %2, i64 16 + store ptr %28, ptr %38, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %2, i64 24 - store ptr %30, ptr %.sroa.2.0..sroa_idx, align 8 - %38 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !1588 - %39 = tail call noundef align 8 dereferenceable_or_null(48) ptr @__rust_alloc(i64 noundef 48, i64 noundef 8) #24, !noalias !1588 - %40 = icmp eq ptr %39, null - br i1 %40, label %41, label %"_ZN5alloc4sync12Arc$LT$T$GT$3new17h9056487015dc1e46E.exit39" + store ptr %31, ptr %.sroa.2.0..sroa_idx, align 8 + %39 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !1588 + %40 = tail call noundef align 8 dereferenceable_or_null(48) ptr @__rust_alloc(i64 noundef 48, i64 noundef 8) #24, !noalias !1588 + %41 = icmp eq ptr %40, null + br i1 %41, label %42, label %"_ZN5alloc4sync12Arc$LT$T$GT$3new17h9056487015dc1e46E.exit39" -41: ; preds = %35 +42: ; preds = %36 invoke void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef 8, i64 noundef 48) #27 - to label %.noexc.i38 unwind label %42, !noalias !1585 + to label %.noexc.i38 unwind label %43, !noalias !1585 -.noexc.i38: ; preds = %41 +.noexc.i38: ; preds = %42 unreachable -42: ; preds = %41 - %43 = landingpad { ptr, i32 } +43: ; preds = %42 + %44 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr50drop_in_place$LT$mini_lsm..mem_table..MemTable$GT$17ha4f454f2b62fe8a4E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %37) - to label %common.resume unwind label %44, !noalias !1585 + invoke void @"_ZN4core3ptr50drop_in_place$LT$mini_lsm..mem_table..MemTable$GT$17ha4f454f2b62fe8a4E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %38) + to label %common.resume unwind label %45, !noalias !1585 -44: ; preds = %42 - %45 = landingpad { ptr, i32 } +45: ; preds = %43 + %46 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #26, !noalias !1585 unreachable -"_ZN5alloc4sync12Arc$LT$T$GT$3new17h9056487015dc1e46E.exit39": ; preds = %35 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %39, ptr noundef nonnull align 8 dereferenceable(48) %2, i64 48, i1 false), !noalias !1585 +"_ZN5alloc4sync12Arc$LT$T$GT$3new17h9056487015dc1e46E.exit39": ; preds = %36 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %40, ptr noundef nonnull align 8 dereferenceable(48) %2, i64 48, i1 false), !noalias !1585 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %2), !noalias !1585 - br label %31 + br label %32 -46: ; preds = %25 - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) - br label %58 +47: ; preds = %26 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) + br label %59 -47: ; preds = %31 - %48 = getelementptr inbounds i8, ptr %0, i64 104 - %49 = load ptr, ptr %48, align 8, !noundef !7 - %50 = icmp eq ptr %49, null - br i1 %50, label %51, label %52 +48: ; preds = %32 + %49 = getelementptr inbounds i8, ptr %0, i64 104 + %50 = load ptr, ptr %49, align 8, !noundef !7 + %51 = icmp eq ptr %50, null + br i1 %51, label %52, label %53 -51: ; preds = %47 +52: ; preds = %48 tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.be4378cf94b00e663cea5edf1bc978e2.29, i64 noundef 43, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.be4378cf94b00e663cea5edf1bc978e2.84) #27 unreachable -52: ; preds = %47 +53: ; preds = %48 call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %4) - %53 = getelementptr inbounds i8, ptr %4, i64 8 - store i64 %8, ptr %53, align 8 + %54 = getelementptr inbounds i8, ptr %4, i64 8 + store i64 %9, ptr %54, align 8 store i64 5, ptr %4, align 8 - %54 = call noundef ptr @_ZN8mini_lsm8manifest8Manifest20add_record_when_init17h830b52d6c817cfdbE(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %48, ptr noalias nocapture noundef nonnull align 8 dereferenceable(112) %4) + %55 = call noundef ptr @_ZN8mini_lsm8manifest8Manifest20add_record_when_init17h830b52d6c817cfdbE(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %49, ptr noalias nocapture noundef nonnull align 8 dereferenceable(112) %4) call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %4) - %55 = icmp eq ptr %54, null - br i1 %55, label %56, label %58 + %56 = icmp eq ptr %55, null + br i1 %56, label %57, label %59 -56: ; preds = %52 - %57 = tail call noundef ptr @_ZN8mini_lsm11lsm_storage15LsmStorageInner8sync_dir17hc4862dc2ee0474b3E(ptr noundef nonnull align 8 %0) - br label %58 +57: ; preds = %53 + %58 = tail call noundef ptr @_ZN8mini_lsm11lsm_storage15LsmStorageInner8sync_dir17hc4862dc2ee0474b3E(ptr noundef nonnull align 8 %0) + br label %59 -58: ; preds = %56, %52, %31, %46 - %.0 = phi ptr [ %30, %46 ], [ %33, %31 ], [ %54, %52 ], [ %57, %56 ] +59: ; preds = %57, %53, %32, %47 + %.0 = phi ptr [ %31, %47 ], [ %34, %32 ], [ %55, %53 ], [ %58, %57 ] ret ptr %.0 } diff --git a/bench/ockam-rs/optimized/274k60s1efyiyv8u.ll b/bench/ockam-rs/optimized/274k60s1efyiyv8u.ll index 658161a6212..9afb075f877 100644 --- a/bench/ockam-rs/optimized/274k60s1efyiyv8u.ll +++ b/bench/ockam-rs/optimized/274k60s1efyiyv8u.ll @@ -6074,6 +6074,8 @@ _ZN5alloc3fmt6format17h31a4ee338d1d039bE.exit: %5 = alloca { ptr, i64 }, align 8 %6 = alloca { ptr, i64 }, align 8 %7 = alloca [3 x { ptr, ptr }], align 8 + %.sroa.0 = alloca { { ptr, i64 }, i64 }, align 8 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.0) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) store ptr @anon.d111e1a6102e671d34fb0a8a42694992.104, ptr %6, align 8 @@ -6117,14 +6119,15 @@ _ZN5alloc3fmt6format17h31a4ee338d1d039bE.exit: store i64 3, ptr %.sroa.8.0..sroa_idx, align 8, !noalias !1846 %.sroa.10.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 32 store ptr null, ptr %.sroa.10.0..sroa_idx, align 8, !noalias !1846 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) - call void @_ZN5alloc3fmt6format12format_inner17h0da8c103517a5142E(ptr noalias nocapture noundef nonnull sret({ { { ptr, i64 }, i64 } }) align 8 dereferenceable(24) %2, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %1) + call void @_ZN5alloc3fmt6format12format_inner17h0da8c103517a5142E(ptr noalias nocapture noundef nonnull sret({ { { ptr, i64 }, i64 } }) align 8 dereferenceable(24) %.sroa.0, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %1) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %1), !noalias !1835 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0, i64 24, i1 false) %17 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !1847 %18 = call noundef align 8 dereferenceable_or_null(24) ptr @__rust_alloc(i64 noundef 24, i64 noundef 8) #28, !noalias !1847 %19 = icmp eq ptr %18, null @@ -6155,6 +6158,7 @@ _ZN5alloc3fmt6format17h31a4ee338d1d039bE.exit: "_ZN5alloc5boxed12Box$LT$T$GT$3new17h7213b6c7de0cff87E.llvm.4054924361102640483.exit": ; preds = %_ZN5alloc3fmt6format17h31a4ee338d1d039bE.exit call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.0) %26 = insertvalue { ptr, ptr } poison, ptr %18, 0 %27 = insertvalue { ptr, ptr } %26, ptr @anon.d111e1a6102e671d34fb0a8a42694992.40.llvm.4054924361102640483, 1 ret { ptr, ptr } %27 @@ -6170,6 +6174,8 @@ _ZN5alloc3fmt6format17h31a4ee338d1d039bE.exit: %5 = alloca { ptr, i64 }, align 8 %6 = alloca { ptr, i64 }, align 8 %7 = alloca [3 x { ptr, ptr }], align 8 + %.sroa.0 = alloca { { ptr, i64 }, i64 }, align 8 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.0) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) store ptr @anon.d111e1a6102e671d34fb0a8a42694992.0.llvm.4054924361102640483, ptr %6, align 8 @@ -6213,14 +6219,15 @@ _ZN5alloc3fmt6format17h31a4ee338d1d039bE.exit: store i64 3, ptr %.sroa.8.0..sroa_idx, align 8, !noalias !1861 %.sroa.10.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 32 store ptr null, ptr %.sroa.10.0..sroa_idx, align 8, !noalias !1861 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) - call void @_ZN5alloc3fmt6format12format_inner17h0da8c103517a5142E(ptr noalias nocapture noundef nonnull sret({ { { ptr, i64 }, i64 } }) align 8 dereferenceable(24) %2, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %1) + call void @_ZN5alloc3fmt6format12format_inner17h0da8c103517a5142E(ptr noalias nocapture noundef nonnull sret({ { { ptr, i64 }, i64 } }) align 8 dereferenceable(24) %.sroa.0, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %1) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %1), !noalias !1850 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0, i64 24, i1 false) %17 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !1862 %18 = call noundef align 8 dereferenceable_or_null(24) ptr @__rust_alloc(i64 noundef 24, i64 noundef 8) #28, !noalias !1862 %19 = icmp eq ptr %18, null @@ -6251,6 +6258,7 @@ _ZN5alloc3fmt6format17h31a4ee338d1d039bE.exit: "_ZN5alloc5boxed12Box$LT$T$GT$3new17h7213b6c7de0cff87E.llvm.4054924361102640483.exit": ; preds = %_ZN5alloc3fmt6format17h31a4ee338d1d039bE.exit call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.0) %26 = insertvalue { ptr, ptr } poison, ptr %18, 0 %27 = insertvalue { ptr, ptr } %26, ptr @anon.d111e1a6102e671d34fb0a8a42694992.40.llvm.4054924361102640483, 1 ret { ptr, ptr } %27 diff --git a/bench/ockam-rs/optimized/3r84qnjy9p2hw0jg.ll b/bench/ockam-rs/optimized/3r84qnjy9p2hw0jg.ll index e101605f386..73389e464f3 100644 --- a/bench/ockam-rs/optimized/3r84qnjy9p2hw0jg.ll +++ b/bench/ockam-rs/optimized/3r84qnjy9p2hw0jg.ll @@ -24567,6 +24567,7 @@ define internal void @"_ZN190_$LT$ockam_identity..secure_channel..handshake..res %124 = alloca { { { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, {} } }, align 1 %125 = alloca ptr, align 8 %126 = alloca { i64, [5 x i64] }, align 8 + %.sroa.01.i.i.i.i.i = alloca { { { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, {} }, { { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, {} }, {} }, align 8 %.sroa.0.i.i.i.i.i = alloca { [8 x i32], i64 }, align 8 %127 = alloca { { { [8 x i32], i64 }, {} }, { { { { { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, {} }, { { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, {} }, {} } }, i8, {} }, [7 x i8] }, align 8 %128 = alloca { { { [8 x i32], i64 }, {} }, { { { { { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, {} }, { { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, {} }, {} } }, i8, {} }, [7 x i8] }, align 8 @@ -25379,14 +25380,17 @@ _ZN5alloc3fmt6format17h31a4ee338d1d039bE.exit: ; preds = %188 .noexc88.i.i: ; preds = %"_ZN4core3ptr96drop_in_place$LT$core..option..Option$LT$ockam_vault..types..secrets..SecretBufferHandle$GT$$GT$17hd3fa88a31b65142aE.exit.i.i" call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %126), !noalias !3536 - %419 = getelementptr inbounds i8, ptr %128, i64 40 - invoke void @"_ZN110_$LT$generic_array..GenericArray$LT$T$C$N$GT$$u20$as$u20$generic_array..sequence..GenericSequence$LT$T$GT$$GT$8generate17h94ca113d58fb9d4aE"(ptr noalias nocapture noundef nonnull sret({ { { { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, {} }, { { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, {} }, {} } }) align 1 dereferenceable(64) %419) + call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %.sroa.01.i.i.i.i.i), !noalias !3535 + invoke void @"_ZN110_$LT$generic_array..GenericArray$LT$T$C$N$GT$$u20$as$u20$generic_array..sequence..GenericSequence$LT$T$GT$$GT$8generate17h94ca113d58fb9d4aE"(ptr noalias nocapture noundef nonnull sret({ { { { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, {} }, { { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, { { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, { { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, { { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, { { [0 x i8], [0 x i8], i8 }, { [0 x i8], [0 x i8], i8 }, {} }, {} }, {} }, {} }, {} }, {} } }) align 1 dereferenceable(64) %.sroa.01.i.i.i.i.i) to label %.noexc89.i.i unwind label %421 .noexc89.i.i: ; preds = %.noexc88.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %128, ptr noundef nonnull align 8 dereferenceable(40) %.sroa.0.i.i.i.i.i, i64 40, i1 false), !noalias !3525 + %419 = getelementptr inbounds i8, ptr %128, i64 40 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %419, ptr noundef nonnull align 8 dereferenceable(64) %.sroa.01.i.i.i.i.i, i64 64, i1 false), !noalias !3525 %.sroa.4.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %128, i64 104 store i8 0, ptr %.sroa.4.0..sroa_idx.i.i.i.i.i, align 8, !alias.scope !3532, !noalias !3525 + call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %.sroa.01.i.i.i.i.i), !noalias !3535 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %.sroa.0.i.i.i.i.i), !noalias !3535 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %125), !noalias !3542 store ptr %128, ptr %125, align 8, !noalias !3542 diff --git a/bench/openjdk/optimized/xPhysicalMemoryBacking_linux.ll b/bench/openjdk/optimized/xPhysicalMemoryBacking_linux.ll index 177b4e9cf70..1382f03944d 100644 --- a/bench/openjdk/optimized/xPhysicalMemoryBacking_linux.ll +++ b/bench/openjdk/optimized/xPhysicalMemoryBacking_linux.ll @@ -1007,62 +1007,67 @@ declare noundef i32 @_ZN8XSyscall9fallocateEiimm(i32 noundef, i32 noundef, i64 n define hidden i32 @_ZNK22XPhysicalMemoryBacking19fallocate_fill_holeEmm(ptr nocapture noundef nonnull readonly align 8 dereferenceable(41) %0, i64 noundef %1, i64 noundef %2) local_unnamed_addr #0 align 2 { %4 = alloca %class.XErrno, align 4 %5 = alloca %class.XErrno, align 4 - %6 = alloca %class.GCLogPreciousHandle, align 8 + %6 = alloca %class.XErrno, align 4 + %7 = alloca %class.GCLogPreciousHandle, align 8 %.b = load i1, ptr @_ZL21z_fallocate_supported, align 1 - %7 = load i32, ptr @_ZN11XLargePages6_stateE, align 4 - %8 = icmp ne i32 %7, 0 - %or.cond = select i1 %.b, i1 true, i1 %8 - br i1 %or.cond, label %25, label %9 + %8 = load i32, ptr @_ZN11XLargePages6_stateE, align 4 + %9 = icmp ne i32 %8, 0 + %or.cond = select i1 %.b, i1 true, i1 %9 + br i1 %or.cond, label %27, label %10 -9: ; preds = %3 - %10 = load i32, ptr %0, align 8 - %11 = tail call noundef i32 @_ZN8XSyscall9fallocateEiimm(i32 noundef %10, i32 noundef 0, i64 noundef %1, i64 noundef %2) #12 - %12 = icmp eq i32 %11, -1 - br i1 %12, label %13, label %_ZNK22XPhysicalMemoryBacking27fallocate_fill_hole_syscallEmm.exit +10: ; preds = %3 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) + %11 = load i32, ptr %0, align 8 + %12 = tail call noundef i32 @_ZN8XSyscall9fallocateEiimm(i32 noundef %11, i32 noundef 0, i64 noundef %1, i64 noundef %2) #12 + %13 = icmp eq i32 %12, -1 + br i1 %13, label %14, label %_ZNK22XPhysicalMemoryBacking27fallocate_fill_hole_syscallEmm.exit -13: ; preds = %9 - %14 = tail call ptr @__errno_location() #13 - %15 = load i32, ptr %14, align 4 +14: ; preds = %10 + %15 = tail call ptr @__errno_location() #13 + %16 = load i32, ptr %15, align 4 br label %_ZNK22XPhysicalMemoryBacking27fallocate_fill_hole_syscallEmm.exit -_ZNK22XPhysicalMemoryBacking27fallocate_fill_hole_syscallEmm.exit: ; preds = %9, %13 - %.sink.i = phi i32 [ %15, %13 ], [ 0, %9 ] - call void @_ZN6XErrnoC1Ei(ptr noundef nonnull align 4 dereferenceable(4) %5, i32 noundef %.sink.i) #12 - %16 = call noundef zeroext i1 @_ZNK6XErrnocvbEv(ptr noundef nonnull align 4 dereferenceable(4) %5) #12 - br i1 %16, label %18, label %17 - -17: ; preds = %_ZNK22XPhysicalMemoryBacking27fallocate_fill_hole_syscallEmm.exit - call void @_ZN6XErrnoC1Ei(ptr noundef nonnull align 4 dereferenceable(4) %4, i32 noundef 0) #12 - %.pre = load i32, ptr %4, align 4 - br label %27 +_ZNK22XPhysicalMemoryBacking27fallocate_fill_hole_syscallEmm.exit: ; preds = %10, %14 + %.sink.i = phi i32 [ %16, %14 ], [ 0, %10 ] + call void @_ZN6XErrnoC1Ei(ptr noundef nonnull align 4 dereferenceable(4) %4, i32 noundef %.sink.i) #12 + %17 = load i32, ptr %4, align 4 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) + store i32 %17, ptr %6, align 4 + %18 = call noundef zeroext i1 @_ZNK6XErrnocvbEv(ptr noundef nonnull align 4 dereferenceable(4) %6) #12 + br i1 %18, label %20, label %19 -18: ; preds = %_ZNK22XPhysicalMemoryBacking27fallocate_fill_hole_syscallEmm.exit - %19 = call noundef zeroext i1 @_ZNK6XErrnoneEi(ptr noundef nonnull align 4 dereferenceable(4) %5, i32 noundef 38) #12 - br i1 %19, label %20, label %24 +19: ; preds = %_ZNK22XPhysicalMemoryBacking27fallocate_fill_hole_syscallEmm.exit + call void @_ZN6XErrnoC1Ei(ptr noundef nonnull align 4 dereferenceable(4) %5, i32 noundef 0) #12 + %.pre = load i32, ptr %5, align 4 + br label %29 -20: ; preds = %18 - %21 = call noundef zeroext i1 @_ZNK6XErrnoneEi(ptr noundef nonnull align 4 dereferenceable(4) %5, i32 noundef 95) #12 - br i1 %21, label %22, label %24 +20: ; preds = %_ZNK22XPhysicalMemoryBacking27fallocate_fill_hole_syscallEmm.exit + %21 = call noundef zeroext i1 @_ZNK6XErrnoneEi(ptr noundef nonnull align 4 dereferenceable(4) %6, i32 noundef 38) #12 + br i1 %21, label %22, label %26 22: ; preds = %20 - %23 = load i32, ptr %5, align 4 - br label %27 + %23 = call noundef zeroext i1 @_ZNK6XErrnoneEi(ptr noundef nonnull align 4 dereferenceable(4) %6, i32 noundef 95) #12 + br i1 %23, label %24, label %26 -24: ; preds = %20, %18 - store i32 2, ptr %6, align 8 - %.sroa.21.0..sroa_idx.i = getelementptr inbounds i8, ptr %6, i64 8 +24: ; preds = %22 + %25 = load i32, ptr %6, align 4 + br label %29 + +26: ; preds = %22, %20 + store i32 2, ptr %7, align 8 + %.sroa.21.0..sroa_idx.i = getelementptr inbounds i8, ptr %7, i64 8 store ptr @_ZN16LogTagSetMappingILN6LogTag4typeE49ELS1_0ELS1_0ELS1_0ELS1_0ELS1_0EE7_tagsetE, ptr %.sroa.21.0..sroa_idx.i, align 8 - call void (ptr, ptr, ...) @_ZN19GCLogPreciousHandle5writeEPKcz(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull @.str.50) + call void (ptr, ptr, ...) @_ZN19GCLogPreciousHandle5writeEPKcz(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull @.str.50) store i1 true, ptr @_ZL21z_fallocate_supported, align 1 - br label %25 - -25: ; preds = %24, %3 - %26 = call i32 @_ZNK22XPhysicalMemoryBacking26fallocate_fill_hole_compatEmm(ptr noundef nonnull align 8 dereferenceable(41) %0, i64 noundef %1, i64 noundef %2) br label %27 -27: ; preds = %25, %22, %17 - %28 = phi i32 [ %26, %25 ], [ %23, %22 ], [ %.pre, %17 ] - ret i32 %28 +27: ; preds = %26, %3 + %28 = call i32 @_ZNK22XPhysicalMemoryBacking26fallocate_fill_hole_compatEmm(ptr noundef nonnull align 8 dereferenceable(41) %0, i64 noundef %1, i64 noundef %2) + br label %29 + +29: ; preds = %27, %24, %19 + %30 = phi i32 [ %28, %27 ], [ %25, %24 ], [ %.pre, %19 ] + ret i32 %30 } declare noundef zeroext i1 @_ZNK6XErrnocvbEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 @@ -1072,55 +1077,60 @@ declare noundef zeroext i1 @_ZNK6XErrnoneEi(ptr noundef nonnull align 4 derefere ; Function Attrs: mustprogress nounwind uwtable define hidden i32 @_ZNK22XPhysicalMemoryBacking20fallocate_punch_holeEmm(ptr nocapture noundef nonnull readonly align 8 dereferenceable(41) %0, i64 noundef %1, i64 noundef %2) local_unnamed_addr #0 align 2 { %4 = alloca %class.XErrno, align 4 - %5 = load i32, ptr @_ZN11XLargePages6_stateE, align 4 - %6 = icmp eq i32 %5, 1 - br i1 %6, label %7, label %20 + %5 = alloca %class.XErrno, align 4 + %6 = load i32, ptr @_ZN11XLargePages6_stateE, align 4 + %7 = icmp eq i32 %6, 1 + br i1 %7, label %8, label %22 -7: ; preds = %3 - %8 = load i32, ptr %0, align 8 - %9 = tail call ptr @mmap64(ptr noundef null, i64 noundef %2, i32 noundef 3, i32 noundef 1, i32 noundef %8, i64 noundef %1) #12 - %10 = icmp eq ptr %9, inttoptr (i64 -1 to ptr) - br i1 %10, label %.sink.split.i, label %11 - -11: ; preds = %7 - %12 = getelementptr inbounds i8, ptr %9, i64 %2 - %13 = getelementptr inbounds i8, ptr %0, i64 24 - %14 = load i64, ptr %13, align 8 - tail call void @_ZN2os15pretouch_memoryEPvS0_m(ptr noundef %9, ptr noundef %12, i64 noundef %14) #12 - %15 = tail call i32 @munmap(ptr noundef %9, i64 noundef %2) #12 - %16 = icmp eq i32 %15, -1 - br i1 %16, label %.sink.split.i, label %_ZNK22XPhysicalMemoryBacking31fallocate_compat_mmap_hugetlbfsEmmb.exit +8: ; preds = %3 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) + %9 = load i32, ptr %0, align 8 + %10 = tail call ptr @mmap64(ptr noundef null, i64 noundef %2, i32 noundef 3, i32 noundef 1, i32 noundef %9, i64 noundef %1) #12 + %11 = icmp eq ptr %10, inttoptr (i64 -1 to ptr) + br i1 %11, label %.sink.split.i, label %12 -.sink.split.i: ; preds = %11, %7 - %17 = tail call ptr @__errno_location() #13 - %18 = load i32, ptr %17, align 4 +12: ; preds = %8 + %13 = getelementptr inbounds i8, ptr %10, i64 %2 + %14 = getelementptr inbounds i8, ptr %0, i64 24 + %15 = load i64, ptr %14, align 8 + tail call void @_ZN2os15pretouch_memoryEPvS0_m(ptr noundef %10, ptr noundef %13, i64 noundef %15) #12 + %16 = tail call i32 @munmap(ptr noundef %10, i64 noundef %2) #12 + %17 = icmp eq i32 %16, -1 + br i1 %17, label %.sink.split.i, label %_ZNK22XPhysicalMemoryBacking31fallocate_compat_mmap_hugetlbfsEmmb.exit + +.sink.split.i: ; preds = %12, %8 + %18 = tail call ptr @__errno_location() #13 + %19 = load i32, ptr %18, align 4 br label %_ZNK22XPhysicalMemoryBacking31fallocate_compat_mmap_hugetlbfsEmmb.exit -_ZNK22XPhysicalMemoryBacking31fallocate_compat_mmap_hugetlbfsEmmb.exit: ; preds = %11, %.sink.split.i - %.sink.i = phi i32 [ 0, %11 ], [ %18, %.sink.split.i ] +_ZNK22XPhysicalMemoryBacking31fallocate_compat_mmap_hugetlbfsEmmb.exit: ; preds = %12, %.sink.split.i + %.sink.i = phi i32 [ 0, %12 ], [ %19, %.sink.split.i ] call void @_ZN6XErrnoC1Ei(ptr noundef nonnull align 4 dereferenceable(4) %4, i32 noundef %.sink.i) #12 - %19 = call noundef zeroext i1 @_ZNK6XErrnocvbEv(ptr noundef nonnull align 4 dereferenceable(4) %4) #12 - br i1 %19, label %27, label %20 - -20: ; preds = %_ZNK22XPhysicalMemoryBacking31fallocate_compat_mmap_hugetlbfsEmmb.exit, %3 - %21 = load i32, ptr %0, align 8 - %22 = call noundef i32 @_ZN8XSyscall9fallocateEiimm(i32 noundef %21, i32 noundef 3, i64 noundef %1, i64 noundef %2) #12 - %23 = icmp eq i32 %22, -1 - br i1 %23, label %24, label %.sink.split - -24: ; preds = %20 - %25 = tail call ptr @__errno_location() #13 - %26 = load i32, ptr %25, align 4 + %20 = load i32, ptr %4, align 4 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) + store i32 %20, ptr %5, align 4 + %21 = call noundef zeroext i1 @_ZNK6XErrnocvbEv(ptr noundef nonnull align 4 dereferenceable(4) %5) #12 + br i1 %21, label %29, label %22 + +22: ; preds = %_ZNK22XPhysicalMemoryBacking31fallocate_compat_mmap_hugetlbfsEmmb.exit, %3 + %23 = load i32, ptr %0, align 8 + %24 = call noundef i32 @_ZN8XSyscall9fallocateEiimm(i32 noundef %23, i32 noundef 3, i64 noundef %1, i64 noundef %2) #12 + %25 = icmp eq i32 %24, -1 + br i1 %25, label %26, label %.sink.split + +26: ; preds = %22 + %27 = tail call ptr @__errno_location() #13 + %28 = load i32, ptr %27, align 4 br label %.sink.split -.sink.split: ; preds = %20, %24 - %.sink = phi i32 [ %26, %24 ], [ 0, %20 ] - call void @_ZN6XErrnoC1Ei(ptr noundef nonnull align 4 dereferenceable(4) %4, i32 noundef %.sink) #12 - br label %27 +.sink.split: ; preds = %22, %26 + %.sink = phi i32 [ %28, %26 ], [ 0, %22 ] + call void @_ZN6XErrnoC1Ei(ptr noundef nonnull align 4 dereferenceable(4) %5, i32 noundef %.sink) #12 + br label %29 -27: ; preds = %.sink.split, %_ZNK22XPhysicalMemoryBacking31fallocate_compat_mmap_hugetlbfsEmmb.exit - %28 = load i32, ptr %4, align 4 - ret i32 %28 +29: ; preds = %.sink.split, %_ZNK22XPhysicalMemoryBacking31fallocate_compat_mmap_hugetlbfsEmmb.exit + %30 = load i32, ptr %5, align 4 + ret i32 %30 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/openusd/optimized/rotation.cpp.ll b/bench/openusd/optimized/rotation.cpp.ll index 00efa0a71cd..28199ab790e 100644 --- a/bench/openusd/optimized/rotation.cpp.ll +++ b/bench/openusd/optimized/rotation.cpp.ll @@ -297,27 +297,30 @@ declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias ; Function Attrs: mustprogress uwtable define void @_ZNK32pxrInternal_v0_24__pxrReserved__10GfRotation7GetQuatEv(ptr dead_on_unwind noalias nonnull writable sret(%"class.pxrInternal_v0_24__pxrReserved__::GfQuatd") align 8 %0, ptr nocapture noundef nonnull readonly align 8 dereferenceable(32) %1) local_unnamed_addr #0 align 2 { %3 = alloca double, align 8 - %4 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %5 = load double, ptr %4, align 8 - %6 = fmul double %5, 0x3F91DF46A2529D39 - %7 = fmul double %6, 5.000000e-01 - %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 - call void @sincos(double noundef %7, ptr noundef nonnull %3, ptr noundef nonnull %.sroa.2.0..sroa_idx) #18 - %8 = load double, ptr %3, align 8 + %4 = alloca double, align 8 + %5 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %6 = load double, ptr %5, align 8 + %7 = fmul double %6, 0x3F91DF46A2529D39 + %8 = fmul double %7, 5.000000e-01 + call void @sincos(double noundef %8, ptr noundef nonnull %3, ptr noundef nonnull %4) #18 + %9 = load double, ptr %3, align 8 %.sroa.0.0.copyload.i = load double, ptr %1, align 8, !noalias !9 %.sroa.4.0..sroa_idx.i = getelementptr inbounds i8, ptr %1, i64 8 %.sroa.4.0.copyload.i = load double, ptr %.sroa.4.0..sroa_idx.i, align 8, !noalias !9 %.sroa.6.0..sroa_idx.i = getelementptr inbounds i8, ptr %1, i64 16 %.sroa.6.0.copyload.i = load double, ptr %.sroa.6.0..sroa_idx.i, align 8, !noalias !9 - %9 = fmul double %8, %.sroa.0.0.copyload.i - %10 = fmul double %8, %.sroa.4.0.copyload.i - %11 = fmul double %8, %.sroa.6.0.copyload.i - store double %9, ptr %0, align 8 + %10 = fmul double %9, %.sroa.0.0.copyload.i + %11 = fmul double %9, %.sroa.4.0.copyload.i + %12 = fmul double %9, %.sroa.6.0.copyload.i + %13 = load double, ptr %4, align 8 + store double %10, ptr %0, align 8 %.sroa.0.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store double %10, ptr %.sroa.0.sroa.2.0..sroa_idx, align 8 + store double %11, ptr %.sroa.0.sroa.2.0..sroa_idx, align 8 %.sroa.0.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store double %11, ptr %.sroa.0.sroa.3.0..sroa_idx, align 8 - %12 = tail call noundef double @_ZN32pxrInternal_v0_24__pxrReserved__7GfQuatd9NormalizeEd(ptr noundef nonnull align 8 dereferenceable(32) %0, double noundef 1.000000e-10) + store double %12, ptr %.sroa.0.sroa.3.0..sroa_idx, align 8 + %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 + store double %13, ptr %.sroa.2.0..sroa_idx, align 8 + %14 = tail call noundef double @_ZN32pxrInternal_v0_24__pxrReserved__7GfQuatd9NormalizeEd(ptr noundef nonnull align 8 dereferenceable(32) %0, double noundef 1.000000e-10) ret void } @@ -2164,110 +2167,120 @@ define void @_ZNK32pxrInternal_v0_24__pxrReserved__10GfRotation12TransformDirERK define noundef nonnull align 8 dereferenceable(32) ptr @_ZN32pxrInternal_v0_24__pxrReserved__10GfRotationmLERKS0_(ptr noundef nonnull returned align 8 dereferenceable(32) %0, ptr nocapture noundef nonnull readonly align 8 dereferenceable(32) %1) local_unnamed_addr #0 align 2 { %3 = alloca %"class.pxrInternal_v0_24__pxrReserved__::GfQuaternion", align 8 %4 = alloca double, align 8 - %5 = alloca %"class.pxrInternal_v0_24__pxrReserved__::GfQuatd", align 8 - %6 = alloca double, align 8 - %7 = alloca %"class.pxrInternal_v0_24__pxrReserved__::GfQuatd", align 8 - %8 = alloca %"class.pxrInternal_v0_24__pxrReserved__::GfQuaternion", align 8 - %9 = alloca %"class.pxrInternal_v0_24__pxrReserved__::GfQuaternion", align 8 - %.sroa.213 = alloca [3 x double], align 8 + %5 = alloca double, align 8 + %6 = alloca %"class.pxrInternal_v0_24__pxrReserved__::GfQuatd", align 8 + %7 = alloca double, align 8 + %8 = alloca double, align 8 + %9 = alloca %"class.pxrInternal_v0_24__pxrReserved__::GfQuatd", align 8 %10 = alloca %"class.pxrInternal_v0_24__pxrReserved__::GfQuaternion", align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) + %11 = alloca %"class.pxrInternal_v0_24__pxrReserved__::GfQuaternion", align 8 + %.sroa.213 = alloca [3 x double], align 8 + %12 = alloca %"class.pxrInternal_v0_24__pxrReserved__::GfQuaternion", align 8 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) tail call void @llvm.experimental.noalias.scope.decl(metadata !110) - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6), !noalias !113 - %11 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %12 = load double, ptr %11, align 8, !noalias !116 - %13 = fmul double %12, 0x3F91DF46A2529D39 - %14 = fmul double %13, 5.000000e-01 - %.sroa.2.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %7, i64 24 - call void @sincos(double noundef %14, ptr noundef nonnull %6, ptr noundef nonnull %.sroa.2.0..sroa_idx.i.i) #18, !noalias !113 - %15 = load double, ptr %6, align 8, !noalias !116 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7), !noalias !113 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8), !noalias !113 + %13 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %14 = load double, ptr %13, align 8, !noalias !116 + %15 = fmul double %14, 0x3F91DF46A2529D39 + %16 = fmul double %15, 5.000000e-01 + call void @sincos(double noundef %16, ptr noundef nonnull %7, ptr noundef nonnull %8) #18, !noalias !116 + %17 = load double, ptr %7, align 8, !noalias !116 %.sroa.0.0.copyload.i.i.i = load double, ptr %1, align 8, !noalias !117 %.sroa.4.0..sroa_idx.i.i.i = getelementptr inbounds i8, ptr %1, i64 8 %.sroa.4.0.copyload.i.i.i = load double, ptr %.sroa.4.0..sroa_idx.i.i.i, align 8, !noalias !117 %.sroa.6.0..sroa_idx.i.i.i = getelementptr inbounds i8, ptr %1, i64 16 %.sroa.6.0.copyload.i.i.i = load double, ptr %.sroa.6.0..sroa_idx.i.i.i, align 8, !noalias !117 - %16 = fmul double %15, %.sroa.0.0.copyload.i.i.i - %17 = fmul double %15, %.sroa.4.0.copyload.i.i.i - %18 = fmul double %15, %.sroa.6.0.copyload.i.i.i - store double %16, ptr %7, align 8, !alias.scope !110, !noalias !113 - %.sroa.0.sroa.2.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %7, i64 8 - store double %17, ptr %.sroa.0.sroa.2.0..sroa_idx.i.i, align 8, !alias.scope !110, !noalias !113 - %.sroa.0.sroa.3.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %7, i64 16 - store double %18, ptr %.sroa.0.sroa.3.0..sroa_idx.i.i, align 8, !alias.scope !110, !noalias !113 - %19 = call noundef double @_ZN32pxrInternal_v0_24__pxrReserved__7GfQuatd9NormalizeEd(ptr noundef nonnull align 8 dereferenceable(32) %7, double noundef 1.000000e-10), !noalias !113 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6), !noalias !113 - %20 = load double, ptr %.sroa.2.0..sroa_idx.i.i, align 8, !noalias !113 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.213, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) + %18 = fmul double %17, %.sroa.0.0.copyload.i.i.i + %19 = fmul double %17, %.sroa.4.0.copyload.i.i.i + %20 = fmul double %17, %.sroa.6.0.copyload.i.i.i + %21 = load double, ptr %8, align 8, !noalias !116 + store double %18, ptr %9, align 8, !alias.scope !110, !noalias !113 + %.sroa.0.sroa.2.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %9, i64 8 + store double %19, ptr %.sroa.0.sroa.2.0..sroa_idx.i.i, align 8, !alias.scope !110, !noalias !113 + %.sroa.0.sroa.3.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %9, i64 16 + store double %20, ptr %.sroa.0.sroa.3.0..sroa_idx.i.i, align 8, !alias.scope !110, !noalias !113 + %.sroa.2.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %9, i64 24 + store double %21, ptr %.sroa.2.0..sroa_idx.i.i, align 8, !alias.scope !110, !noalias !113 + %22 = call noundef double @_ZN32pxrInternal_v0_24__pxrReserved__7GfQuatd9NormalizeEd(ptr noundef nonnull align 8 dereferenceable(32) %9, double noundef 1.000000e-10), !noalias !113 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7), !noalias !113 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8), !noalias !113 + %23 = load double, ptr %.sroa.2.0..sroa_idx.i.i, align 8, !noalias !113 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.213, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) call void @llvm.experimental.noalias.scope.decl(metadata !120) - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) call void @llvm.experimental.noalias.scope.decl(metadata !123) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4), !noalias !120 - %21 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %22 = load double, ptr %21, align 8, !noalias !126 - %23 = fmul double %22, 0x3F91DF46A2529D39 - %24 = fmul double %23, 5.000000e-01 - %.sroa.2.0..sroa_idx.i.i4 = getelementptr inbounds i8, ptr %5, i64 24 - call void @sincos(double noundef %24, ptr noundef nonnull %4, ptr noundef nonnull %.sroa.2.0..sroa_idx.i.i4) #18, !noalias !120 - %25 = load double, ptr %4, align 8, !noalias !126 - %.sroa.0.0.copyload.i.i.i5 = load double, ptr %0, align 8, !noalias !127 - %.sroa.4.0..sroa_idx.i.i.i6 = getelementptr inbounds i8, ptr %0, i64 8 - %.sroa.4.0.copyload.i.i.i7 = load double, ptr %.sroa.4.0..sroa_idx.i.i.i6, align 8, !noalias !127 - %.sroa.6.0..sroa_idx.i.i.i8 = getelementptr inbounds i8, ptr %0, i64 16 - %.sroa.6.0.copyload.i.i.i9 = load double, ptr %.sroa.6.0..sroa_idx.i.i.i8, align 8, !noalias !127 - %26 = fmul double %25, %.sroa.0.0.copyload.i.i.i5 - %27 = fmul double %25, %.sroa.4.0.copyload.i.i.i7 - %28 = fmul double %25, %.sroa.6.0.copyload.i.i.i9 - store double %26, ptr %5, align 8, !alias.scope !123, !noalias !120 - %.sroa.0.sroa.2.0..sroa_idx.i.i10 = getelementptr inbounds i8, ptr %5, i64 8 - store double %27, ptr %.sroa.0.sroa.2.0..sroa_idx.i.i10, align 8, !alias.scope !123, !noalias !120 - %.sroa.0.sroa.3.0..sroa_idx.i.i11 = getelementptr inbounds i8, ptr %5, i64 16 - store double %28, ptr %.sroa.0.sroa.3.0..sroa_idx.i.i11, align 8, !alias.scope !123, !noalias !120 - %29 = call noundef double @_ZN32pxrInternal_v0_24__pxrReserved__7GfQuatd9NormalizeEd(ptr noundef nonnull align 8 dereferenceable(32) %5, double noundef 1.000000e-10), !noalias !120 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5), !noalias !120 + %24 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %25 = load double, ptr %24, align 8, !noalias !126 + %26 = fmul double %25, 0x3F91DF46A2529D39 + %27 = fmul double %26, 5.000000e-01 + call void @sincos(double noundef %27, ptr noundef nonnull %4, ptr noundef nonnull %5) #18, !noalias !126 + %28 = load double, ptr %4, align 8, !noalias !126 + %.sroa.0.0.copyload.i.i.i4 = load double, ptr %0, align 8, !noalias !127 + %.sroa.4.0..sroa_idx.i.i.i5 = getelementptr inbounds i8, ptr %0, i64 8 + %.sroa.4.0.copyload.i.i.i6 = load double, ptr %.sroa.4.0..sroa_idx.i.i.i5, align 8, !noalias !127 + %.sroa.6.0..sroa_idx.i.i.i7 = getelementptr inbounds i8, ptr %0, i64 16 + %.sroa.6.0.copyload.i.i.i8 = load double, ptr %.sroa.6.0..sroa_idx.i.i.i7, align 8, !noalias !127 + %29 = fmul double %28, %.sroa.0.0.copyload.i.i.i4 + %30 = fmul double %28, %.sroa.4.0.copyload.i.i.i6 + %31 = fmul double %28, %.sroa.6.0.copyload.i.i.i8 + %32 = load double, ptr %5, align 8, !noalias !126 + store double %29, ptr %6, align 8, !alias.scope !123, !noalias !120 + %.sroa.0.sroa.2.0..sroa_idx.i.i9 = getelementptr inbounds i8, ptr %6, i64 8 + store double %30, ptr %.sroa.0.sroa.2.0..sroa_idx.i.i9, align 8, !alias.scope !123, !noalias !120 + %.sroa.0.sroa.3.0..sroa_idx.i.i10 = getelementptr inbounds i8, ptr %6, i64 16 + store double %31, ptr %.sroa.0.sroa.3.0..sroa_idx.i.i10, align 8, !alias.scope !123, !noalias !120 + %.sroa.2.0..sroa_idx.i.i11 = getelementptr inbounds i8, ptr %6, i64 24 + store double %32, ptr %.sroa.2.0..sroa_idx.i.i11, align 8, !alias.scope !123, !noalias !120 + %33 = call noundef double @_ZN32pxrInternal_v0_24__pxrReserved__7GfQuatd9NormalizeEd(ptr noundef nonnull align 8 dereferenceable(32) %6, double noundef 1.000000e-10), !noalias !120 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4), !noalias !120 - %30 = load double, ptr %.sroa.2.0..sroa_idx.i.i4, align 8, !noalias !120 - store double %30, ptr %10, align 8, !alias.scope !120 - %31 = getelementptr inbounds nuw i8, ptr %10, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5), !noalias !120 + %34 = load double, ptr %.sroa.2.0..sroa_idx.i.i11, align 8, !noalias !120 + store double %34, ptr %12, align 8, !alias.scope !120 + %35 = getelementptr inbounds nuw i8, ptr %12, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %35, ptr noundef nonnull align 8 dereferenceable(24) %6, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) - store double %20, ptr %3, align 8, !noalias !130 + store double %23, ptr %3, align 8, !noalias !130 %.sroa.213.0..sroa_idx = getelementptr inbounds i8, ptr %3, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.213.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.213, i64 24, i1 false), !noalias !130 - %32 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN32pxrInternal_v0_24__pxrReserved__12GfQuaternionmLERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %10), !noalias !130 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %32, i64 32, i1 false) + %36 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN32pxrInternal_v0_24__pxrReserved__12GfQuaternionmLERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %12), !noalias !130 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %36, i64 32, i1 false) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) - call void @_ZNK32pxrInternal_v0_24__pxrReserved__12GfQuaternion13GetNormalizedEd(ptr dead_on_unwind nonnull writable sret(%"class.pxrInternal_v0_24__pxrReserved__::GfQuaternion") align 8 %8, ptr noundef nonnull align 8 dereferenceable(32) %9, double noundef 1.000000e-10) - %33 = getelementptr inbounds nuw i8, ptr %8, i64 8 - %34 = load double, ptr %33, align 8 - %35 = getelementptr inbounds i8, ptr %8, i64 16 - %36 = load double, ptr %35, align 8 - %37 = fmul double %36, %36 - %38 = call double @llvm.fmuladd.f64(double %34, double %34, double %37) - %39 = getelementptr inbounds i8, ptr %8, i64 24 + call void @_ZNK32pxrInternal_v0_24__pxrReserved__12GfQuaternion13GetNormalizedEd(ptr dead_on_unwind nonnull writable sret(%"class.pxrInternal_v0_24__pxrReserved__::GfQuaternion") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %11, double noundef 1.000000e-10) + %37 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %38 = load double, ptr %37, align 8 + %39 = getelementptr inbounds i8, ptr %10, i64 16 %40 = load double, ptr %39, align 8 - %41 = call noundef double @llvm.fmuladd.f64(double %40, double %40, double %38) - %sqrt.i = call noundef double @llvm.sqrt.f64(double %41) - %42 = fcmp ogt double %sqrt.i, 1.000000e-10 - br i1 %42, label %43, label %52 - -43: ; preds = %2 - %44 = fdiv double 1.000000e+00, %sqrt.i - %45 = fmul double %34, %44 - %46 = fmul double %36, %44 - %47 = fmul double %40, %44 - store double %45, ptr %0, align 8 - store double %46, ptr %.sroa.4.0..sroa_idx.i.i.i6, align 8 - store double %47, ptr %.sroa.6.0..sroa_idx.i.i.i8, align 8 - %48 = load double, ptr %8, align 8 - %49 = call double @acos(double noundef %48) #18 - %50 = fmul double %49, 0x404CA5DC1A63C1F8 - %51 = fmul double %50, 2.000000e+00 - br label %52 - -52: ; preds = %2, %43 - %storemerge = phi double [ %51, %43 ], [ 0.000000e+00, %2 ] - store double %storemerge, ptr %21, align 8 + %41 = fmul double %40, %40 + %42 = call double @llvm.fmuladd.f64(double %38, double %38, double %41) + %43 = getelementptr inbounds i8, ptr %10, i64 24 + %44 = load double, ptr %43, align 8 + %45 = call noundef double @llvm.fmuladd.f64(double %44, double %44, double %42) + %sqrt.i = call noundef double @llvm.sqrt.f64(double %45) + %46 = fcmp ogt double %sqrt.i, 1.000000e-10 + br i1 %46, label %47, label %56 + +47: ; preds = %2 + %48 = fdiv double 1.000000e+00, %sqrt.i + %49 = fmul double %38, %48 + %50 = fmul double %40, %48 + %51 = fmul double %44, %48 + store double %49, ptr %0, align 8 + store double %50, ptr %.sroa.4.0..sroa_idx.i.i.i5, align 8 + store double %51, ptr %.sroa.6.0..sroa_idx.i.i.i7, align 8 + %52 = load double, ptr %10, align 8 + %53 = call double @acos(double noundef %52) #18 + %54 = fmul double %53, 0x404CA5DC1A63C1F8 + %55 = fmul double %54, 2.000000e+00 + br label %56 + +56: ; preds = %2, %47 + %storemerge = phi double [ %55, %47 ], [ 0.000000e+00, %2 ] + store double %storemerge, ptr %24, align 8 ret ptr %0 } diff --git a/bench/openvdb/optimized/Maps.cc.ll b/bench/openvdb/optimized/Maps.cc.ll index 33f31f261ac..faebd77289d 100644 --- a/bench/openvdb/optimized/Maps.cc.ll +++ b/bench/openvdb/optimized/Maps.cc.ll @@ -14298,6 +14298,7 @@ _ZNSt10shared_ptrIN7openvdb5v11_04math7MapBaseEEC2INS2_10UnitaryMapEvEEPT_.exit: ; Function Attrs: mustprogress uwtable define linkonce_odr void @_ZNK7openvdb5v11_04math10UnitaryMap9preRotateEdNS1_4AxisE(ptr noalias sret(%"class.std::shared_ptr") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(384) %this, double noundef %radians, i32 noundef %axis) unnamed_addr #3 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %ref.tmp.i.i = alloca %"class.openvdb::v11_0::math::Mat4", align 8 %matrix.i = alloca %"class.openvdb::v11_0::math::Mat4", align 8 %ref.tmp.i = alloca %"class.openvdb::v11_0::math::AffineMap", align 8 %first = alloca %"class.openvdb::v11_0::math::UnitaryMap", align 8 @@ -14306,7 +14307,10 @@ entry: store ptr getelementptr inbounds (i8, ptr @_ZTVN7openvdb5v11_04math10UnitaryMapE, i64 16), ptr %first, align 8 %mAffineMap.i = getelementptr inbounds i8, ptr %first, i64 8 call void @_ZN7openvdb5v11_04math9AffineMapC2Ev(ptr noundef nonnull align 8 dereferenceable(376) %mAffineMap.i) - call void @_ZN7openvdb5v11_04math8rotationINS1_4Mat4IdEEEET_NS1_4AxisENS5_10value_typeE(ptr nonnull sret(%"class.openvdb::v11_0::math::Mat4") align 8 %matrix.i, i32 noundef %axis, double noundef %radians) + call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %ref.tmp.i.i) + call void @_ZN7openvdb5v11_04math8rotationINS1_4Mat4IdEEEET_NS1_4AxisENS5_10value_typeE(ptr nonnull sret(%"class.openvdb::v11_0::math::Mat4") align 8 %ref.tmp.i.i, i32 noundef %axis, double noundef %radians) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %matrix.i, ptr noundef nonnull align 8 dereferenceable(128) %ref.tmp.i.i, i64 128, i1 false) + call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %ref.tmp.i.i) call void @_ZN7openvdb5v11_04math9AffineMapC2ERKNS1_4Mat4IdEE(ptr noundef nonnull align 8 dereferenceable(376) %ref.tmp.i, ptr noundef nonnull align 8 dereferenceable(128) %matrix.i) %mMatrix.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 %mMatrix2.i.i = getelementptr inbounds i8, ptr %first, i64 16 @@ -15202,6 +15206,7 @@ ehcleanup: ; preds = %lpad2, %lpad ; Function Attrs: mustprogress uwtable define linkonce_odr void @_ZNK7openvdb5v11_04math10UnitaryMap10postRotateEdNS1_4AxisE(ptr noalias sret(%"class.std::shared_ptr") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(384) %this, double noundef %radians, i32 noundef %axis) unnamed_addr #3 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %ref.tmp.i.i = alloca %"class.openvdb::v11_0::math::Mat4", align 8 %matrix.i = alloca %"class.openvdb::v11_0::math::Mat4", align 8 %ref.tmp.i = alloca %"class.openvdb::v11_0::math::AffineMap", align 8 %second = alloca %"class.openvdb::v11_0::math::UnitaryMap", align 8 @@ -15210,7 +15215,10 @@ entry: store ptr getelementptr inbounds (i8, ptr @_ZTVN7openvdb5v11_04math10UnitaryMapE, i64 16), ptr %second, align 8 %mAffineMap.i = getelementptr inbounds i8, ptr %second, i64 8 call void @_ZN7openvdb5v11_04math9AffineMapC2Ev(ptr noundef nonnull align 8 dereferenceable(376) %mAffineMap.i) - call void @_ZN7openvdb5v11_04math8rotationINS1_4Mat4IdEEEET_NS1_4AxisENS5_10value_typeE(ptr nonnull sret(%"class.openvdb::v11_0::math::Mat4") align 8 %matrix.i, i32 noundef %axis, double noundef %radians) + call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %ref.tmp.i.i) + call void @_ZN7openvdb5v11_04math8rotationINS1_4Mat4IdEEEET_NS1_4AxisENS5_10value_typeE(ptr nonnull sret(%"class.openvdb::v11_0::math::Mat4") align 8 %ref.tmp.i.i, i32 noundef %axis, double noundef %radians) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %matrix.i, ptr noundef nonnull align 8 dereferenceable(128) %ref.tmp.i.i, i64 128, i1 false) + call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %ref.tmp.i.i) call void @_ZN7openvdb5v11_04math9AffineMapC2ERKNS1_4Mat4IdEE(ptr noundef nonnull align 8 dereferenceable(376) %ref.tmp.i, ptr noundef nonnull align 8 dereferenceable(128) %matrix.i) %mMatrix.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 %mMatrix2.i.i = getelementptr inbounds i8, ptr %second, i64 16 diff --git a/bench/pbrt-v4/optimized/scene.cpp.ll b/bench/pbrt-v4/optimized/scene.cpp.ll index 272cc620226..03eca9e2d2b 100644 --- a/bench/pbrt-v4/optimized/scene.cpp.ll +++ b/bench/pbrt-v4/optimized/scene.cpp.ll @@ -29716,9 +29716,11 @@ terminate.lpad.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i. ; Function Attrs: mustprogress uwtable define internal void @"_ZNSt17_Function_handlerIFN4pbrt6CameraEvESt5_BindIFZNS0_10BasicScene10SetOptionsENS0_11SceneEntityES5_NS0_17CameraSceneEntityES5_S5_S5_E3$_1vEEE9_M_invokeERKSt9_Any_data"(ptr noalias sret(%"class.pbrt::Camera") align 8 %agg.result, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %__functor) #4 align 2 { entry: + %cameraMedium.i.i.i.i.i.i.i = alloca %"class.pbrt::Medium", align 8 %agg.tmp.i.i.i.i.i.i.i = alloca %"class.pbrt::Medium", align 8 %agg.tmp3.i.i.i.i.i.i.i = alloca %"class.pbrt::Film", align 8 %__functor.val = load ptr, ptr %__functor, align 8 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %cameraMedium.i.i.i.i.i.i.i), !noalias !219 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %agg.tmp.i.i.i.i.i.i.i), !noalias !219 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %agg.tmp3.i.i.i.i.i.i.i), !noalias !219 %0 = getelementptr inbounds i8, ptr %__functor.val, i64 1000 @@ -29737,17 +29739,19 @@ land.end.i.i.i.i.i.i.i: ; preds = %land.rhs.i.i.i.i.i. %alloc.sroa.0.0.copyload.i.i.i.i.i.i.i = load ptr, ptr %call.i.i.i.i.i.i.i, align 8, !noalias !232 %medium.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__functor.val, i64 968 %loc.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__functor.val, i64 8 - call void @_ZN4pbrt10BasicScene9GetMediumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKNS_7FileLocE(ptr nonnull sret(%"class.pbrt::Medium") align 8 %agg.tmp.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(1520) %1, ptr noundef nonnull align 8 dereferenceable(32) %medium.i.i.i.i.i.i.i, ptr noundef nonnull %loc.i.i.i.i.i.i.i), !noalias !232 + call void @_ZN4pbrt10BasicScene9GetMediumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKNS_7FileLocE(ptr nonnull sret(%"class.pbrt::Medium") align 8 %cameraMedium.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(1520) %1, ptr noundef nonnull align 8 dereferenceable(32) %medium.i.i.i.i.i.i.i, ptr noundef nonnull %loc.i.i.i.i.i.i.i), !noalias !232 %3 = load ptr, ptr %__functor.val, align 8, !noalias !232 %parameters.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__functor.val, i64 32 + %4 = load i64, ptr %cameraMedium.i.i.i.i.i.i.i, align 8, !noalias !232 + store i64 %4, ptr %agg.tmp.i.i.i.i.i.i.i, align 8, !noalias !232 %cameraTransform.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__functor.val, i64 144 %film.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 544 - %4 = load i64, ptr %film.i.i.i.i.i.i.i, align 8, !noalias !232 - store i64 %4, ptr %agg.tmp3.i.i.i.i.i.i.i, align 8, !noalias !232 + %5 = load i64, ptr %film.i.i.i.i.i.i.i, align 8, !noalias !232 + store i64 %5, ptr %agg.tmp3.i.i.i.i.i.i.i, align 8, !noalias !232 %coerce.val.pi.i.i.i.i.i.i.i = ptrtoint ptr %alloc.sroa.0.0.copyload.i.i.i.i.i.i.i to i64 call void @_ZN4pbrt6Camera6CreateERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_19ParameterDictionaryENS_6MediumERKNS_15CameraTransformENS_4FilmEPKNS_7FileLocEN4pstd3pmr21polymorphic_allocatorISt4byteEE(ptr sret(%"class.pbrt::Camera") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(108) %parameters.i.i.i.i.i.i.i, ptr noundef nonnull %agg.tmp.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(824) %cameraTransform.i.i.i.i.i.i.i, ptr noundef nonnull %agg.tmp3.i.i.i.i.i.i.i, ptr noundef nonnull %loc.i.i.i.i.i.i.i, i64 %coerce.val.pi.i.i.i.i.i.i.i) - %5 = load i32, ptr @_ZN4pbrt7logging8logLevelE, align 4, !noalias !232 - %cmp6.i.i.i.i.i.i.i = icmp slt i32 %5, 1 + %6 = load i32, ptr @_ZN4pbrt7logging8logLevelE, align 4, !noalias !232 + %cmp6.i.i.i.i.i.i.i = icmp slt i32 %6, 1 br i1 %cmp6.i.i.i.i.i.i.i, label %land.rhs7.i.i.i.i.i.i.i, label %"_ZSt10__invoke_rIN4pbrt6CameraERSt5_BindIFZNS0_10BasicScene10SetOptionsENS0_11SceneEntityES4_NS0_17CameraSceneEntityES4_S4_S4_E3$_1vEEJEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESB_E4typeEOSC_DpOSD_.exit" land.rhs7.i.i.i.i.i.i.i: ; preds = %land.end.i.i.i.i.i.i.i @@ -29755,6 +29759,7 @@ land.rhs7.i.i.i.i.i.i.i: ; preds = %land.end.i.i.i.i.i. br label %"_ZSt10__invoke_rIN4pbrt6CameraERSt5_BindIFZNS0_10BasicScene10SetOptionsENS0_11SceneEntityES4_NS0_17CameraSceneEntityES4_S4_S4_E3$_1vEEJEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESB_E4typeEOSC_DpOSD_.exit" "_ZSt10__invoke_rIN4pbrt6CameraERSt5_BindIFZNS0_10BasicScene10SetOptionsENS0_11SceneEntityES4_NS0_17CameraSceneEntityES4_S4_S4_E3$_1vEEJEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESB_E4typeEOSC_DpOSD_.exit": ; preds = %land.end.i.i.i.i.i.i.i, %land.rhs7.i.i.i.i.i.i.i + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %cameraMedium.i.i.i.i.i.i.i), !noalias !219 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %agg.tmp.i.i.i.i.i.i.i), !noalias !219 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %agg.tmp3.i.i.i.i.i.i.i), !noalias !219 ret void diff --git a/bench/postgres/optimized/appendinfo.ll b/bench/postgres/optimized/appendinfo.ll index 4e47970991e..8452d6c577b 100644 --- a/bench/postgres/optimized/appendinfo.ll +++ b/bench/postgres/optimized/appendinfo.ll @@ -943,40 +943,43 @@ adjust_child_relids.exit240: ; preds = %327, %adjust_child_ ; Function Attrs: nounwind uwtable define dso_local ptr @adjust_appendrel_attrs_multilevel(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3) local_unnamed_addr #0 { %5 = alloca %struct.adjust_appendrel_attrs_context, align 8 - %6 = getelementptr inbounds i8, ptr %2, i64 344 - %7 = load ptr, ptr %6, align 8 - %.not = icmp eq ptr %7, %3 - br i1 %.not, label %14, label %8 + %6 = alloca i32, align 4 + %7 = getelementptr inbounds i8, ptr %2, i64 344 + %8 = load ptr, ptr %7, align 8 + %.not = icmp eq ptr %8, %3 + br i1 %.not, label %15, label %9 -8: ; preds = %4 - %.not16 = icmp eq ptr %7, null - br i1 %.not16, label %11, label %9 +9: ; preds = %4 + %.not16 = icmp eq ptr %8, null + br i1 %.not16, label %12, label %10 -9: ; preds = %8 - %10 = tail call ptr @adjust_appendrel_attrs_multilevel(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %7, ptr noundef %3) - br label %14 +10: ; preds = %9 + %11 = tail call ptr @adjust_appendrel_attrs_multilevel(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %8, ptr noundef %3) + br label %15 -11: ; preds = %8 - %12 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #10 - tail call void @llvm.assume(i1 %12) - %13 = tail call i32 (ptr, ...) @errmsg_internal(ptr noundef nonnull @.str) #8 +12: ; preds = %9 + %13 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #10 + tail call void @llvm.assume(i1 %13) + %14 = tail call i32 (ptr, ...) @errmsg_internal(ptr noundef nonnull @.str) #8 tail call void @errfinish(ptr noundef nonnull @.str.1, i32 noundef 536, ptr noundef nonnull @__func__.adjust_appendrel_attrs_multilevel) #8 unreachable -14: ; preds = %9, %4 - %.0 = phi ptr [ %10, %9 ], [ %1, %4 ] - %15 = getelementptr inbounds i8, ptr %2, i64 8 - %16 = load ptr, ptr %15, align 8 - %17 = getelementptr inbounds i8, ptr %5, i64 8 +15: ; preds = %10, %4 + %.0 = phi ptr [ %11, %10 ], [ %1, %4 ] + %16 = getelementptr inbounds i8, ptr %2, i64 8 + %17 = load ptr, ptr %16, align 8 + %18 = call ptr @find_appinfos_by_relids(ptr noundef %0, ptr noundef %17, ptr noundef nonnull %6) + %19 = load i32, ptr %6, align 4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) - %18 = call ptr @find_appinfos_by_relids(ptr noundef %0, ptr noundef %16, ptr noundef nonnull %17) store ptr %0, ptr %5, align 8 - %19 = getelementptr inbounds i8, ptr %5, i64 16 - store ptr %18, ptr %19, align 8 - %20 = call ptr @adjust_appendrel_attrs_mutator(ptr noundef %.0, ptr noundef nonnull %5) + %20 = getelementptr inbounds i8, ptr %5, i64 8 + store i32 %19, ptr %20, align 8 + %21 = getelementptr inbounds i8, ptr %5, i64 16 + store ptr %18, ptr %21, align 8 + %22 = call ptr @adjust_appendrel_attrs_mutator(ptr noundef %.0, ptr noundef nonnull %5) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) call void @pfree(ptr noundef %18) #8 - ret ptr %20 + ret ptr %22 } ; Function Attrs: cold diff --git a/bench/pyo3-rs/optimized/249pdmmr5286g8h9.ll b/bench/pyo3-rs/optimized/249pdmmr5286g8h9.ll index 9d145b98d62..97d64a469fa 100644 --- a/bench/pyo3-rs/optimized/249pdmmr5286g8h9.ll +++ b/bench/pyo3-rs/optimized/249pdmmr5286g8h9.ll @@ -1403,64 +1403,69 @@ define zeroext i1 @_ZN17pyo3_build_config5impl_7is_abi317h12e64a4b440b19c2E() un %5 = alloca [24 x i8], align 8 %6 = alloca [24 x i8], align 8 %7 = alloca [24 x i8], align 8 + %8 = alloca [24 x i8], align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) - call void @_ZN3std3env6var_os17h283fc6e61c60b10cE(ptr nonnull sret([24 x i8]) align 8 %5, ptr nonnull align 1 @anon.ca6e988e113f9f3b293ee61d3a823dd5.76, i64 18) - %8 = load i64, ptr %5, align 8 - %9 = icmp eq i64 %8, -9223372036854775808 - br i1 %9, label %_ZN17pyo3_build_config5impl_13cargo_env_var17hdb3cee141ccec1deE.exit.thread, label %_ZN17pyo3_build_config5impl_13cargo_env_var17hdb3cee141ccec1deE.exit + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) + call void @_ZN3std3env6var_os17h283fc6e61c60b10cE(ptr nonnull sret([24 x i8]) align 8 %6, ptr nonnull align 1 @anon.ca6e988e113f9f3b293ee61d3a823dd5.76, i64 18) + %9 = load i64, ptr %6, align 8 + %10 = icmp eq i64 %9, -9223372036854775808 + br i1 %10, label %_ZN17pyo3_build_config5impl_13cargo_env_var17hdb3cee141ccec1deE.exit.thread, label %_ZN17pyo3_build_config5impl_13cargo_env_var17hdb3cee141ccec1deE.exit _ZN17pyo3_build_config5impl_13cargo_env_var17hdb3cee141ccec1deE.exit.thread: ; preds = %0 - store i64 -9223372036854775808, ptr %7, align 8 + store i64 -9223372036854775808, ptr %8, align 8 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) - br label %11 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) + br label %12 _ZN17pyo3_build_config5impl_13cargo_env_var17hdb3cee141ccec1deE.exit: ; preds = %0 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) - call void @"_ZN17pyo3_build_config5impl_13cargo_env_var28_$u7b$$u7b$closure$u7d$$u7d$17hcd1b8b5d6440c278E"(ptr nonnull sret([24 x i8]) align 8 %7, ptr nonnull align 8 %4) - %.pr = load i64, ptr %7, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %6, i64 24, i1 false) + call void @"_ZN17pyo3_build_config5impl_13cargo_env_var28_$u7b$$u7b$closure$u7d$$u7d$17hcd1b8b5d6440c278E"(ptr nonnull sret([24 x i8]) align 8 %5, ptr nonnull align 8 %4) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) + %.pr = load i64, ptr %8, align 8 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) %.not = icmp eq i64 %.pr, -9223372036854775808 - br i1 %.not, label %11, label %10 + br i1 %.not, label %12, label %11 -10: ; preds = %_ZN17pyo3_build_config5impl_13cargo_env_var17hdb3cee141ccec1deE.exit - call void @"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$alloc..string..String$GT$$GT$17h2bab4e6e04e18b24E"(ptr nonnull align 8 %7) - br label %20 +11: ; preds = %_ZN17pyo3_build_config5impl_13cargo_env_var17hdb3cee141ccec1deE.exit + call void @"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$alloc..string..String$GT$$GT$17h2bab4e6e04e18b24E"(ptr nonnull align 8 %8) + br label %21 -11: ; preds = %_ZN17pyo3_build_config5impl_13cargo_env_var17hdb3cee141ccec1deE.exit.thread, %_ZN17pyo3_build_config5impl_13cargo_env_var17hdb3cee141ccec1deE.exit - call void @"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$alloc..string..String$GT$$GT$17h2bab4e6e04e18b24E"(ptr nonnull align 8 %7) +12: ; preds = %_ZN17pyo3_build_config5impl_13cargo_env_var17hdb3cee141ccec1deE.exit.thread, %_ZN17pyo3_build_config5impl_13cargo_env_var17hdb3cee141ccec1deE.exit + call void @"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$alloc..string..String$GT$$GT$17h2bab4e6e04e18b24E"(ptr nonnull align 8 %8) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %1) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %2) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) store ptr @anon.ca6e988e113f9f3b293ee61d3a823dd5.77, ptr %3, align 8 - %12 = getelementptr inbounds i8, ptr %3, i64 8 - store i64 35, ptr %12, align 8 + %13 = getelementptr inbounds i8, ptr %3, i64 8 + store i64 35, ptr %13, align 8 store ptr %3, ptr %1, align 8 %.sroa.22.0..sroa_idx.i = getelementptr inbounds i8, ptr %1, i64 8 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17hc457227902524b89E", ptr %.sroa.22.0..sroa_idx.i, align 8 store ptr @anon.ca6e988e113f9f3b293ee61d3a823dd5.5, ptr %2, align 8 - %13 = getelementptr inbounds i8, ptr %2, i64 8 - store i64 2, ptr %13, align 8 - %14 = getelementptr inbounds i8, ptr %2, i64 32 - store ptr null, ptr %14, align 8 - %15 = getelementptr inbounds i8, ptr %2, i64 16 - store ptr %1, ptr %15, align 8 - %16 = getelementptr inbounds i8, ptr %2, i64 24 - store i64 1, ptr %16, align 8 + %14 = getelementptr inbounds i8, ptr %2, i64 8 + store i64 2, ptr %14, align 8 + %15 = getelementptr inbounds i8, ptr %2, i64 32 + store ptr null, ptr %15, align 8 + %16 = getelementptr inbounds i8, ptr %2, i64 16 + store ptr %1, ptr %16, align 8 + %17 = getelementptr inbounds i8, ptr %2, i64 24 + store i64 1, ptr %17, align 8 call void @_ZN3std2io5stdio6_print17h8f9e07feda690a3dE(ptr nonnull align 8 %2) - %17 = load ptr, ptr %3, align 8 - %18 = load i64, ptr %12, align 8 - call void @_ZN3std3env6var_os17h283fc6e61c60b10cE(ptr nonnull sret([24 x i8]) align 8 %6, ptr align 1 %17, i64 %18) + %18 = load ptr, ptr %3, align 8 + %19 = load i64, ptr %13, align 8 + call void @_ZN3std3env6var_os17h283fc6e61c60b10cE(ptr nonnull sret([24 x i8]) align 8 %7, ptr align 1 %18, i64 %19) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %2) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) - %19 = call zeroext i1 @"_ZN4core6option15Option$LT$T$GT$6map_or17h666a0741ae2d298dE"(ptr nonnull align 8 %6, i1 zeroext false) - br label %20 + %20 = call zeroext i1 @"_ZN4core6option15Option$LT$T$GT$6map_or17h666a0741ae2d298dE"(ptr nonnull align 8 %7, i1 zeroext false) + br label %21 -20: ; preds = %11, %10 - %.sroa.0.0 = phi i1 [ true, %10 ], [ %19, %11 ] +21: ; preds = %12, %11 + %.sroa.0.0 = phi i1 [ true, %11 ], [ %20, %12 ] ret i1 %.sroa.0.0 } diff --git a/bench/quantlib/optimized/calendar.ll b/bench/quantlib/optimized/calendar.ll index ac120a78c4c..8a5791543c7 100644 --- a/bench/quantlib/optimized/calendar.ll +++ b/bench/quantlib/optimized/calendar.ll @@ -1331,8 +1331,11 @@ declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN8QuantLib4DatemmEv(pt ; Function Attrs: mustprogress uwtable define i64 @_ZNK8QuantLib8Calendar7advanceERKNS_4DateEiNS_8TimeUnitENS_21BusinessDayConventionEb(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %d, i32 noundef %n, i32 noundef %unit, i32 noundef %c, i1 noundef zeroext %endOfMonth) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 { entry: + %retval.i.i = alloca %"class.QuantLib::Date", align 8 %ref.tmp.i = alloca %"class.QuantLib::Date", align 8 + %retval.i.i.i = alloca %"class.QuantLib::Date", align 8 %ref.tmp.i.i = alloca %"class.QuantLib::Date", align 8 + %retval.i = alloca %"class.QuantLib::Date", align 8 %retval = alloca %"class.QuantLib::Date", align 8 %ref.tmp = alloca %"class.QuantLib::Date", align 8 %_ql_msg_stream = alloca %"class.std::__cxx11::basic_ostringstream", align 8 @@ -1597,50 +1600,61 @@ land.lhs.true: ; preds = %if.then67 br i1 %cmp.i46, label %if.then70, label %if.else73 if.then70: ; preds = %land.lhs.true + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %retval.i) %call.i47 = call noundef i32 @_ZNK8QuantLib4Date5monthEv(ptr noundef nonnull align 8 dereferenceable(8) %d162) %call1.i48 = call noundef i32 @_ZNK8QuantLib4Date4yearEv(ptr noundef nonnull align 8 dereferenceable(8) %d162) %call2.i49 = call noundef zeroext i1 @_ZN8QuantLib4Date6isLeapEi(i32 noundef %call1.i48) %call3.i50 = call noundef i32 @_ZN8QuantLib4Date11monthLengthENS_5MonthEb(i32 noundef %call.i47, i1 noundef zeroext %call2.i49) - call void @_ZN8QuantLib4DateC1EiNS_5MonthEi(ptr noundef nonnull align 8 dereferenceable(8) %retval, i32 noundef %call3.i50, i32 noundef %call.i47, i32 noundef %call1.i48) + call void @_ZN8QuantLib4DateC1EiNS_5MonthEi(ptr noundef nonnull align 8 dereferenceable(8) %retval.i, i32 noundef %call3.i50, i32 noundef %call.i47, i32 noundef %call1.i48) + %24 = load i64, ptr %retval.i, align 8 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %retval.i) br label %cleanup if.else73: ; preds = %land.lhs.true, %if.then67 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp.i.i) #22 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %retval.i.i.i) %call.i.i.i51 = call noundef i32 @_ZNK8QuantLib4Date5monthEv(ptr noundef nonnull align 8 dereferenceable(8) %d) %call1.i.i.i = call noundef i32 @_ZNK8QuantLib4Date4yearEv(ptr noundef nonnull align 8 dereferenceable(8) %d) %call2.i.i.i52 = call noundef zeroext i1 @_ZN8QuantLib4Date6isLeapEi(i32 noundef %call1.i.i.i) %call3.i.i.i = call noundef i32 @_ZN8QuantLib4Date11monthLengthENS_5MonthEb(i32 noundef %call.i.i.i51, i1 noundef zeroext %call2.i.i.i52) - call void @_ZN8QuantLib4DateC1EiNS_5MonthEi(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp.i.i, i32 noundef %call3.i.i.i, i32 noundef %call.i.i.i51, i32 noundef %call1.i.i.i) + call void @_ZN8QuantLib4DateC1EiNS_5MonthEi(ptr noundef nonnull align 8 dereferenceable(8) %retval.i.i.i, i32 noundef %call3.i.i.i, i32 noundef %call.i.i.i51, i32 noundef %call1.i.i.i) + %25 = load i64, ptr %retval.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %retval.i.i.i) + store i64 %25, ptr %ref.tmp.i.i, align 8 %call2.i.i53 = call i64 @_ZNK8QuantLib8Calendar6adjustERKNS_4DateENS_21BusinessDayConventionE(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp.i.i, i32 noundef 2) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp.i.i) #22 - %24 = load i64, ptr %d, align 8, !tbaa !20 - %cmp.i.i.not = icmp slt i64 %24, %call2.i.i53 + %26 = load i64, ptr %d, align 8, !tbaa !20 + %cmp.i.i.not = icmp slt i64 %26, %call2.i.i53 br i1 %cmp.i.i.not, label %if.end80, label %if.then75 if.then75: ; preds = %if.else73 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp.i) #22 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %retval.i.i) %call.i.i54 = call noundef i32 @_ZNK8QuantLib4Date5monthEv(ptr noundef nonnull align 8 dereferenceable(8) %d162) %call1.i.i = call noundef i32 @_ZNK8QuantLib4Date4yearEv(ptr noundef nonnull align 8 dereferenceable(8) %d162) %call2.i.i55 = call noundef zeroext i1 @_ZN8QuantLib4Date6isLeapEi(i32 noundef %call1.i.i) %call3.i.i56 = call noundef i32 @_ZN8QuantLib4Date11monthLengthENS_5MonthEb(i32 noundef %call.i.i54, i1 noundef zeroext %call2.i.i55) - call void @_ZN8QuantLib4DateC1EiNS_5MonthEi(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp.i, i32 noundef %call3.i.i56, i32 noundef %call.i.i54, i32 noundef %call1.i.i) + call void @_ZN8QuantLib4DateC1EiNS_5MonthEi(ptr noundef nonnull align 8 dereferenceable(8) %retval.i.i, i32 noundef %call3.i.i56, i32 noundef %call.i.i54, i32 noundef %call1.i.i) + %27 = load i64, ptr %retval.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %retval.i.i) + store i64 %27, ptr %ref.tmp.i, align 8 %call2.i57 = call i64 @_ZNK8QuantLib8Calendar6adjustERKNS_4DateENS_21BusinessDayConventionE(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp.i, i32 noundef 2) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp.i) #22 - store i64 %call2.i57, ptr %retval, align 8 br label %cleanup if.end80: ; preds = %if.else73, %if.else61 %call81 = call i64 @_ZNK8QuantLib8Calendar6adjustERKNS_4DateENS_21BusinessDayConventionE(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %d162, i32 noundef %c) - store i64 %call81, ptr %retval, align 8 br label %cleanup cleanup: ; preds = %if.end80, %if.then75, %if.then70 + %call81.sink = phi i64 [ %call81, %if.end80 ], [ %call2.i57, %if.then75 ], [ %24, %if.then70 ] + store i64 %call81.sink, ptr %retval, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %d162) #22 br label %return return: ; preds = %while.end49, %while.end, %cleanup, %if.then54, %if.then27 - %25 = load i64, ptr %retval, align 8 - ret i64 %25 + %28 = load i64, ptr %retval, align 8 + ret i64 %28 unreachable: ; preds = %invoke.cont15 unreachable diff --git a/bench/quantlib/optimized/interpolatedswaptionvolatilitycube.ll b/bench/quantlib/optimized/interpolatedswaptionvolatilitycube.ll index 3f5c228c27a..93d21494384 100644 --- a/bench/quantlib/optimized/interpolatedswaptionvolatilitycube.ll +++ b/bench/quantlib/optimized/interpolatedswaptionvolatilitycube.ll @@ -3684,6 +3684,7 @@ ehcleanup: ; preds = %lpad, %lpad.body.i, ; Function Attrs: mustprogress uwtable define void @_ZNK8QuantLib34InterpolatedSwaptionVolatilityCube16smileSectionImplEdd(ptr dead_on_unwind noalias writable sret(%"class.boost::shared_ptr.8") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(544) %this, double noundef %optionTime, double noundef %swapLength) unnamed_addr #8 align 2 personality ptr @__gxx_personality_v0 { entry: + %retval.i = alloca %"class.QuantLib::Date", align 8 %optionDate = alloca %"class.QuantLib::Date", align 8 %rounder = alloca %"class.QuantLib::Rounding", align 4 %swapTenor = alloca %"class.QuantLib::Period", align 4 @@ -3695,6 +3696,7 @@ entry: %0 = load ptr, ptr %vfn, align 8 tail call void %0(ptr noundef nonnull align 8 dereferenceable(12) %this) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %optionDate) #27 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %retval.i) %optionInterpolator_.i = getelementptr inbounds nuw i8, ptr %this, i64 168 tail call void @_ZNK8QuantLib13Interpolation10checkRangeEdb(ptr noundef nonnull align 8 dereferenceable(32) %optionInterpolator_.i, double noundef %optionTime, i1 noundef zeroext false) %impl_.i.i = getelementptr inbounds nuw i8, ptr %this, i64 184 @@ -3714,7 +3716,10 @@ _ZNK8QuantLib26SwaptionVolatilityDiscrete18optionDateFromTimeEd.exit: ; preds = %3 = load ptr, ptr %vfn.i.i, align 8 %call2.i.i = tail call noundef double %3(ptr noundef nonnull align 8 dereferenceable(8) %2, double noundef %optionTime) %conv.i = fptosi double %call2.i.i to i64 - call void @_ZN8QuantLib4DateC1El(ptr noundef nonnull align 8 dereferenceable(8) %optionDate, i64 noundef %conv.i) + call void @_ZN8QuantLib4DateC1El(ptr noundef nonnull align 8 dereferenceable(8) %retval.i, i64 noundef %conv.i) + %4 = load i64, ptr %retval.i, align 8 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %retval.i) + store i64 %4, ptr %optionDate, align 8 call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %rounder) #27 store i32 0, ptr %rounder, align 4, !tbaa !144 %type_.i = getelementptr inbounds nuw i8, ptr %rounder, i64 4 @@ -3730,8 +3735,8 @@ _ZNK8QuantLib26SwaptionVolatilityDiscrete18optionDateFromTimeEd.exit: ; preds = store i32 2, ptr %units_.i, align 4, !tbaa !152 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp3) #27 %shortSwapIndexBase_ = getelementptr inbounds nuw i8, ptr %this, i64 472 - %4 = load ptr, ptr %shortSwapIndexBase_, align 8, !tbaa !69 - %cmp.not.i = icmp eq ptr %4, null + %5 = load ptr, ptr %shortSwapIndexBase_, align 8, !tbaa !69 + %cmp.not.i = icmp eq ptr %5, null br i1 %cmp.not.i, label %cond.false.i, label %_ZNK5boost10shared_ptrIN8QuantLib9SwapIndexEEptEv.exit, !prof !58 cond.false.i: ; preds = %_ZNK8QuantLib26SwaptionVolatilityDiscrete18optionDateFromTimeEd.exit @@ -3740,8 +3745,8 @@ cond.false.i: ; preds = %_ZNK8QuantLib26Swap br label %_ZNK5boost10shared_ptrIN8QuantLib9SwapIndexEEptEv.exit _ZNK5boost10shared_ptrIN8QuantLib9SwapIndexEEptEv.exit: ; preds = %_ZNK8QuantLib26SwaptionVolatilityDiscrete18optionDateFromTimeEd.exit, %cond.false.i - %5 = phi ptr [ %4, %_ZNK8QuantLib26SwaptionVolatilityDiscrete18optionDateFromTimeEd.exit ], [ %.pre.i, %cond.false.i ] - %tenor_.i = getelementptr inbounds nuw i8, ptr %5, i64 144 + %6 = phi ptr [ %5, %_ZNK8QuantLib26SwaptionVolatilityDiscrete18optionDateFromTimeEd.exit ], [ %.pre.i, %cond.false.i ] + %tenor_.i = getelementptr inbounds nuw i8, ptr %6, i64 144 %retval.sroa.0.0.copyload.i = load i64, ptr %tenor_.i, align 8 store i64 %retval.sroa.0.0.copyload.i, ptr %ref.tmp3, align 8 %call.i = call noundef zeroext i1 @_ZN8QuantLibltERKNS_6PeriodES2_(ptr noundef nonnull align 4 dereferenceable(8) %ref.tmp3, ptr noundef nonnull align 4 dereferenceable(8) %swapTenor) @@ -3750,8 +3755,8 @@ _ZNK5boost10shared_ptrIN8QuantLib9SwapIndexEEptEv.exit: ; preds = %_ZNK8QuantLib cond.true: ; preds = %_ZNK5boost10shared_ptrIN8QuantLib9SwapIndexEEptEv.exit call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp7) #27 %swapIndexBase_ = getelementptr inbounds nuw i8, ptr %this, i64 456 - %6 = load ptr, ptr %swapIndexBase_, align 8, !tbaa !69 - %cmp.not.i4 = icmp eq ptr %6, null + %7 = load ptr, ptr %swapIndexBase_, align 8, !tbaa !69 + %cmp.not.i4 = icmp eq ptr %7, null br i1 %cmp.not.i4, label %cond.false.i5, label %_ZNK5boost10shared_ptrIN8QuantLib9SwapIndexEEptEv.exit7, !prof !58 cond.false.i5: ; preds = %cond.true @@ -3760,18 +3765,18 @@ cond.false.i5: ; preds = %cond.true br label %_ZNK5boost10shared_ptrIN8QuantLib9SwapIndexEEptEv.exit7 _ZNK5boost10shared_ptrIN8QuantLib9SwapIndexEEptEv.exit7: ; preds = %cond.true, %cond.false.i5 - %7 = phi ptr [ %6, %cond.true ], [ %.pre.i6, %cond.false.i5 ] - %vtable9 = load ptr, ptr %7, align 8, !tbaa !42 + %8 = phi ptr [ %7, %cond.true ], [ %.pre.i6, %cond.false.i5 ] + %vtable9 = load ptr, ptr %8, align 8, !tbaa !42 %vfn10 = getelementptr inbounds i8, ptr %vtable9, i64 24 - %8 = load ptr, ptr %vfn10, align 8 - call void %8(ptr dead_on_unwind nonnull writable sret(%"class.QuantLib::Calendar") align 8 %ref.tmp7, ptr noundef nonnull align 8 dereferenceable(240) %7) + %9 = load ptr, ptr %vfn10, align 8 + call void %9(ptr dead_on_unwind nonnull writable sret(%"class.QuantLib::Calendar") align 8 %ref.tmp7, ptr noundef nonnull align 8 dereferenceable(240) %8) %call12 = invoke i64 @_ZNK8QuantLib8Calendar6adjustERKNS_4DateENS_21BusinessDayConventionE(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp7, ptr noundef nonnull align 8 dereferenceable(8) %optionDate, i32 noundef 0) to label %cleanup.action45.critedge unwind label %cleanup.action42 cond.false: ; preds = %_ZNK5boost10shared_ptrIN8QuantLib9SwapIndexEEptEv.exit call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp14) #27 - %9 = load ptr, ptr %shortSwapIndexBase_, align 8, !tbaa !69 - %cmp.not.i8 = icmp eq ptr %9, null + %10 = load ptr, ptr %shortSwapIndexBase_, align 8, !tbaa !69 + %cmp.not.i8 = icmp eq ptr %10, null br i1 %cmp.not.i8, label %cond.false.i9, label %invoke.cont18, !prof !58 cond.false.i9: ; preds = %cond.false @@ -3783,11 +3788,11 @@ cond.false.i9: ; preds = %cond.false br label %invoke.cont18 invoke.cont18: ; preds = %.noexc, %cond.false - %10 = phi ptr [ %9, %cond.false ], [ %.pre.i10, %.noexc ] - %vtable20 = load ptr, ptr %10, align 8, !tbaa !42 + %11 = phi ptr [ %10, %cond.false ], [ %.pre.i10, %.noexc ] + %vtable20 = load ptr, ptr %11, align 8, !tbaa !42 %vfn21 = getelementptr inbounds i8, ptr %vtable20, i64 24 - %11 = load ptr, ptr %vfn21, align 8 - invoke void %11(ptr dead_on_unwind nonnull writable sret(%"class.QuantLib::Calendar") align 8 %ref.tmp14, ptr noundef nonnull align 8 dereferenceable(240) %10) + %12 = load ptr, ptr %vfn21, align 8 + invoke void %12(ptr dead_on_unwind nonnull writable sret(%"class.QuantLib::Calendar") align 8 %ref.tmp14, ptr noundef nonnull align 8 dereferenceable(240) %11) to label %invoke.cont22 unwind label %lpad17 invoke.cont22: ; preds = %invoke.cont18 @@ -3797,41 +3802,41 @@ invoke.cont22: ; preds = %invoke.cont18 cleanup.action: ; preds = %invoke.cont22 store i64 %call26, ptr %optionDate, align 8, !tbaa !51 %pn.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp14, i64 8 - %12 = load ptr, ptr %pn.i.i, align 8, !tbaa !31 - %cmp.not.i.i.i12 = icmp eq ptr %12, null + %13 = load ptr, ptr %pn.i.i, align 8, !tbaa !31 + %cmp.not.i.i.i12 = icmp eq ptr %13, null br i1 %cmp.not.i.i.i12, label %_ZN8QuantLib8CalendarD2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %cleanup.action - %use_count_.i.i.i.i = getelementptr inbounds nuw i8, ptr %12, i64 8 - %13 = atomicrmw sub ptr %use_count_.i.i.i.i, i32 1 acq_rel, align 4 - %cmp.i.i.i.i = icmp eq i32 %13, 1 + %use_count_.i.i.i.i = getelementptr inbounds nuw i8, ptr %13, i64 8 + %14 = atomicrmw sub ptr %use_count_.i.i.i.i, i32 1 acq_rel, align 4 + %cmp.i.i.i.i = icmp eq i32 %14, 1 br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %_ZN8QuantLib8CalendarD2Ev.exit if.then.i.i.i.i: ; preds = %if.then.i.i.i - %vtable.i.i.i.i = load ptr, ptr %12, align 8, !tbaa !42 + %vtable.i.i.i.i = load ptr, ptr %13, align 8, !tbaa !42 %vfn.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i, i64 16 - %14 = load ptr, ptr %vfn.i.i.i.i, align 8 - invoke void %14(ptr noundef nonnull align 8 dereferenceable(16) %12) + %15 = load ptr, ptr %vfn.i.i.i.i, align 8 + invoke void %15(ptr noundef nonnull align 8 dereferenceable(16) %13) to label %.noexc.i.i.i unwind label %terminate.lpad.i.i.i .noexc.i.i.i: ; preds = %if.then.i.i.i.i - %weak_count_.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %12, i64 12 - %15 = atomicrmw sub ptr %weak_count_.i.i.i.i.i, i32 1 acq_rel, align 4 - %cmp.i.i.i.i.i = icmp eq i32 %15, 1 + %weak_count_.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %13, i64 12 + %16 = atomicrmw sub ptr %weak_count_.i.i.i.i.i, i32 1 acq_rel, align 4 + %cmp.i.i.i.i.i = icmp eq i32 %16, 1 br i1 %cmp.i.i.i.i.i, label %if.then.i.i.i.i.i, label %_ZN8QuantLib8CalendarD2Ev.exit if.then.i.i.i.i.i: ; preds = %.noexc.i.i.i - %vtable.i.i.i.i.i = load ptr, ptr %12, align 8, !tbaa !42 + %vtable.i.i.i.i.i = load ptr, ptr %13, align 8, !tbaa !42 %vfn.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i, i64 24 - %16 = load ptr, ptr %vfn.i.i.i.i.i, align 8 - invoke void %16(ptr noundef nonnull align 8 dereferenceable(16) %12) + %17 = load ptr, ptr %vfn.i.i.i.i.i, align 8 + invoke void %17(ptr noundef nonnull align 8 dereferenceable(16) %13) to label %_ZN8QuantLib8CalendarD2Ev.exit unwind label %terminate.lpad.i.i.i terminate.lpad.i.i.i: ; preds = %if.then.i.i.i.i.i, %if.then.i.i.i.i - %17 = landingpad { ptr, i32 } + %18 = landingpad { ptr, i32 } catch ptr null - %18 = extractvalue { ptr, i32 } %17, 0 - call void @__clang_call_terminate(ptr %18) #28 + %19 = extractvalue { ptr, i32 } %18, 0 + call void @__clang_call_terminate(ptr %19) #28 unreachable _ZN8QuantLib8CalendarD2Ev.exit: ; preds = %cleanup.action, %if.then.i.i.i, %.noexc.i.i.i, %if.then.i.i.i.i.i @@ -3841,41 +3846,41 @@ _ZN8QuantLib8CalendarD2Ev.exit: ; preds = %cleanup.action, %if cleanup.action45.critedge: ; preds = %_ZNK5boost10shared_ptrIN8QuantLib9SwapIndexEEptEv.exit7 store i64 %call12, ptr %optionDate, align 8, !tbaa !51 %pn.i.i13 = getelementptr inbounds nuw i8, ptr %ref.tmp7, i64 8 - %19 = load ptr, ptr %pn.i.i13, align 8, !tbaa !31 - %cmp.not.i.i.i14 = icmp eq ptr %19, null + %20 = load ptr, ptr %pn.i.i13, align 8, !tbaa !31 + %cmp.not.i.i.i14 = icmp eq ptr %20, null br i1 %cmp.not.i.i.i14, label %_ZN8QuantLib8CalendarD2Ev.exit28, label %if.then.i.i.i15 if.then.i.i.i15: ; preds = %cleanup.action45.critedge - %use_count_.i.i.i.i16 = getelementptr inbounds nuw i8, ptr %19, i64 8 - %20 = atomicrmw sub ptr %use_count_.i.i.i.i16, i32 1 acq_rel, align 4 - %cmp.i.i.i.i17 = icmp eq i32 %20, 1 + %use_count_.i.i.i.i16 = getelementptr inbounds nuw i8, ptr %20, i64 8 + %21 = atomicrmw sub ptr %use_count_.i.i.i.i16, i32 1 acq_rel, align 4 + %cmp.i.i.i.i17 = icmp eq i32 %21, 1 br i1 %cmp.i.i.i.i17, label %if.then.i.i.i.i18, label %_ZN8QuantLib8CalendarD2Ev.exit28 if.then.i.i.i.i18: ; preds = %if.then.i.i.i15 - %vtable.i.i.i.i19 = load ptr, ptr %19, align 8, !tbaa !42 + %vtable.i.i.i.i19 = load ptr, ptr %20, align 8, !tbaa !42 %vfn.i.i.i.i20 = getelementptr inbounds i8, ptr %vtable.i.i.i.i19, i64 16 - %21 = load ptr, ptr %vfn.i.i.i.i20, align 8 - invoke void %21(ptr noundef nonnull align 8 dereferenceable(16) %19) + %22 = load ptr, ptr %vfn.i.i.i.i20, align 8 + invoke void %22(ptr noundef nonnull align 8 dereferenceable(16) %20) to label %.noexc.i.i.i22 unwind label %terminate.lpad.i.i.i21 .noexc.i.i.i22: ; preds = %if.then.i.i.i.i18 - %weak_count_.i.i.i.i.i23 = getelementptr inbounds nuw i8, ptr %19, i64 12 - %22 = atomicrmw sub ptr %weak_count_.i.i.i.i.i23, i32 1 acq_rel, align 4 - %cmp.i.i.i.i.i24 = icmp eq i32 %22, 1 + %weak_count_.i.i.i.i.i23 = getelementptr inbounds nuw i8, ptr %20, i64 12 + %23 = atomicrmw sub ptr %weak_count_.i.i.i.i.i23, i32 1 acq_rel, align 4 + %cmp.i.i.i.i.i24 = icmp eq i32 %23, 1 br i1 %cmp.i.i.i.i.i24, label %if.then.i.i.i.i.i25, label %_ZN8QuantLib8CalendarD2Ev.exit28 if.then.i.i.i.i.i25: ; preds = %.noexc.i.i.i22 - %vtable.i.i.i.i.i26 = load ptr, ptr %19, align 8, !tbaa !42 + %vtable.i.i.i.i.i26 = load ptr, ptr %20, align 8, !tbaa !42 %vfn.i.i.i.i.i27 = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i26, i64 24 - %23 = load ptr, ptr %vfn.i.i.i.i.i27, align 8 - invoke void %23(ptr noundef nonnull align 8 dereferenceable(16) %19) + %24 = load ptr, ptr %vfn.i.i.i.i.i27, align 8 + invoke void %24(ptr noundef nonnull align 8 dereferenceable(16) %20) to label %_ZN8QuantLib8CalendarD2Ev.exit28 unwind label %terminate.lpad.i.i.i21 terminate.lpad.i.i.i21: ; preds = %if.then.i.i.i.i.i25, %if.then.i.i.i.i18 - %24 = landingpad { ptr, i32 } + %25 = landingpad { ptr, i32 } catch ptr null - %25 = extractvalue { ptr, i32 } %24, 0 - call void @__clang_call_terminate(ptr %25) #28 + %26 = extractvalue { ptr, i32 } %25, 0 + call void @__clang_call_terminate(ptr %26) #28 unreachable _ZN8QuantLib8CalendarD2Ev.exit28: ; preds = %cleanup.action45.critedge, %if.then.i.i.i15, %.noexc.i.i.i22, %if.then.i.i.i.i.i25 @@ -3886,38 +3891,38 @@ cleanup.done46: ; preds = %_ZN8QuantLib8Calend call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp3) #27 %vtable53 = load ptr, ptr %this, align 8, !tbaa !42 %vfn54 = getelementptr inbounds i8, ptr %vtable53, i64 152 - %26 = load ptr, ptr %vfn54, align 8 - call void %26(ptr dead_on_unwind writable sret(%"class.boost::shared_ptr.8") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(544) %this, ptr noundef nonnull align 8 dereferenceable(8) %optionDate, ptr noundef nonnull align 4 dereferenceable(8) %swapTenor) + %27 = load ptr, ptr %vfn54, align 8 + call void %27(ptr dead_on_unwind writable sret(%"class.boost::shared_ptr.8") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(544) %this, ptr noundef nonnull align 8 dereferenceable(8) %optionDate, ptr noundef nonnull align 4 dereferenceable(8) %swapTenor) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %swapTenor) #27 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %rounder) #27 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %optionDate) #27 ret void lpad17: ; preds = %cond.false.i9, %invoke.cont18 - %27 = landingpad { ptr, i32 } + %28 = landingpad { ptr, i32 } cleanup br label %ehcleanup40 lpad24: ; preds = %invoke.cont22 - %28 = landingpad { ptr, i32 } + %29 = landingpad { ptr, i32 } cleanup call void @_ZN8QuantLib8CalendarD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp14) #27 br label %ehcleanup40 ehcleanup40: ; preds = %lpad24, %lpad17 - %.pn = phi { ptr, i32 } [ %28, %lpad24 ], [ %27, %lpad17 ] + %.pn = phi { ptr, i32 } [ %29, %lpad24 ], [ %28, %lpad17 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp14) #27 br label %cleanup.done50 cleanup.action42: ; preds = %_ZNK5boost10shared_ptrIN8QuantLib9SwapIndexEEptEv.exit7 - %29 = landingpad { ptr, i32 } + %30 = landingpad { ptr, i32 } cleanup call void @_ZN8QuantLib8CalendarD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp7) #27 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp7) #27 br label %cleanup.done50 cleanup.done50: ; preds = %ehcleanup40, %cleanup.action42 - %.pn231 = phi { ptr, i32 } [ %.pn, %ehcleanup40 ], [ %29, %cleanup.action42 ] + %.pn231 = phi { ptr, i32 } [ %.pn, %ehcleanup40 ], [ %30, %cleanup.action42 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp3) #27 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %swapTenor) #27 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %rounder) #27 diff --git a/bench/rayon-rs/optimized/4xa8jns6944z4boh.ll b/bench/rayon-rs/optimized/4xa8jns6944z4boh.ll index 90f22c00226..4bf723a8d39 100644 --- a/bench/rayon-rs/optimized/4xa8jns6944z4boh.ll +++ b/bench/rayon-rs/optimized/4xa8jns6944z4boh.ll @@ -1762,11 +1762,13 @@ _ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit: %8 = alloca [1 x { { i64, i64 }, { i64, i64 }, i64, i32, i32, i8, [7 x i8] }], align 8 %9 = alloca [1 x { ptr, ptr }], align 8 %10 = alloca { { { i64, ptr }, i64 } }, align 8 + %11 = alloca { { { i64, ptr }, i64 } }, align 8 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) store ptr %0, ptr %9, align 8 - %11 = getelementptr inbounds i8, ptr %9, i64 8 - store ptr @"_ZN4core3fmt3num55_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$usize$GT$3fmt17h2a402146377b71d4E", ptr %11, align 8 + %12 = getelementptr inbounds i8, ptr %9, i64 8 + store ptr @"_ZN4core3fmt3num55_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$usize$GT$3fmt17h2a402146377b71d4E", ptr %12, align 8 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %8) store i64 2, ptr %8, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %8, i64 16 @@ -1793,84 +1795,86 @@ _ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit: store ptr %8, ptr %.sroa.10.0..sroa_idx13, align 8, !noalias !599 %.sroa.1114.0..sroa_idx = getelementptr inbounds i8, ptr %3, i64 40 store i64 1, ptr %.sroa.1114.0..sroa_idx, align 8, !noalias !599 - call void @_ZN5alloc3fmt6format12format_inner17h4f5d4c1ba302c88bE(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 dereferenceable(24) %10, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %3) + call void @_ZN5alloc3fmt6format12format_inner17h4f5d4c1ba302c88bE(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 dereferenceable(24) %10, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %3), !noalias !600 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3), !noalias !588 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %10, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) invoke void @_ZN4core3fmt9Formatter12debug_struct17h182b2d36b73186b9E(ptr noalias nocapture noundef nonnull sret({ ptr, i8, i8, [6 x i8] }) align 8 dereferenceable(16) %7, ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias noundef nonnull readonly align 1 @anon.7daa6609f1138c295e9369f81f844227.5, i64 noundef 8) - to label %14 unwind label %12 + to label %15 unwind label %13 -12: ; preds = %27, %24, %20, %16, %14, %_ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit - %13 = landingpad { ptr, i32 } +13: ; preds = %28, %25, %21, %17, %15, %_ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit + %14 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %10) #25 - to label %39 unwind label %37 + invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %11) #25 + to label %40 unwind label %38 -14: ; preds = %_ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit - %15 = invoke noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h0ae9bd404677e494E(ptr noalias noundef nonnull align 8 dereferenceable(16) %7, ptr noalias noundef nonnull readonly align 1 @anon.7daa6609f1138c295e9369f81f844227.6, i64 noundef 4, ptr noundef nonnull align 1 %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7daa6609f1138c295e9369f81f844227.7) - to label %16 unwind label %12 +15: ; preds = %_ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit + %16 = invoke noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h0ae9bd404677e494E(ptr noalias noundef nonnull align 8 dereferenceable(16) %7, ptr noalias noundef nonnull readonly align 1 @anon.7daa6609f1138c295e9369f81f844227.6, i64 noundef 4, ptr noundef nonnull align 1 %11, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7daa6609f1138c295e9369f81f844227.7) + to label %17 unwind label %13 -16: ; preds = %14 +17: ; preds = %15 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) - %17 = load i64, ptr %0, align 8, !noundef !4 - %18 = lshr i64 %17, 32 - store i64 %18, ptr %6, align 8 - %19 = invoke noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h0ae9bd404677e494E(ptr noalias noundef nonnull align 8 dereferenceable(16) %15, ptr noalias noundef nonnull readonly align 1 @anon.7daa6609f1138c295e9369f81f844227.8, i64 noundef 4, ptr noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7daa6609f1138c295e9369f81f844227.9) - to label %20 unwind label %12 + %18 = load i64, ptr %0, align 8, !noundef !4 + %19 = lshr i64 %18, 32 + store i64 %19, ptr %6, align 8 + %20 = invoke noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h0ae9bd404677e494E(ptr noalias noundef nonnull align 8 dereferenceable(16) %16, ptr noalias noundef nonnull readonly align 1 @anon.7daa6609f1138c295e9369f81f844227.8, i64 noundef 4, ptr noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7daa6609f1138c295e9369f81f844227.9) + to label %21 unwind label %13 -20: ; preds = %16 +21: ; preds = %17 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) - %21 = lshr i64 %17, 16 - %22 = and i64 %21, 65535 - store i64 %22, ptr %5, align 8 - %23 = invoke noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h0ae9bd404677e494E(ptr noalias noundef nonnull align 8 dereferenceable(16) %19, ptr noalias noundef nonnull readonly align 1 @anon.7daa6609f1138c295e9369f81f844227.10, i64 noundef 8, ptr noundef nonnull align 1 %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7daa6609f1138c295e9369f81f844227.9) - to label %24 unwind label %12 + %22 = lshr i64 %18, 16 + %23 = and i64 %22, 65535 + store i64 %23, ptr %5, align 8 + %24 = invoke noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h0ae9bd404677e494E(ptr noalias noundef nonnull align 8 dereferenceable(16) %20, ptr noalias noundef nonnull readonly align 1 @anon.7daa6609f1138c295e9369f81f844227.10, i64 noundef 8, ptr noundef nonnull align 1 %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7daa6609f1138c295e9369f81f844227.9) + to label %25 unwind label %13 -24: ; preds = %20 +25: ; preds = %21 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) - %25 = and i64 %17, 65535 - store i64 %25, ptr %4, align 8 - %26 = invoke noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h0ae9bd404677e494E(ptr noalias noundef nonnull align 8 dereferenceable(16) %23, ptr noalias noundef nonnull readonly align 1 @anon.7daa6609f1138c295e9369f81f844227.11, i64 noundef 8, ptr noundef nonnull align 1 %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7daa6609f1138c295e9369f81f844227.9) - to label %27 unwind label %12 - -27: ; preds = %24 - %28 = invoke noundef zeroext i1 @_ZN4core3fmt8builders11DebugStruct6finish17h27bac3b01d1dda5cE(ptr noalias noundef nonnull align 8 dereferenceable(16) %26) - to label %29 unwind label %12 - -29: ; preds = %27 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2), !noalias !600 - call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h3dc25cc0e3e701f7E.llvm.4661854399685404667"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %10) - %30 = getelementptr inbounds i8, ptr %2, i64 8 - %31 = load i64, ptr %30, align 8, !range !609, !noalias !600, !noundef !4 - %.not.i.i.i.i = icmp eq i64 %31, 0 - br i1 %.not.i.i.i.i, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E.exit", label %32 - -32: ; preds = %29 - %33 = load ptr, ptr %2, align 8, !noalias !600, !nonnull !4, !noundef !4 - %34 = getelementptr inbounds i8, ptr %2, i64 16 - %35 = load i64, ptr %34, align 8, !noalias !600, !noundef !4 - %36 = getelementptr inbounds i8, ptr %10, i64 16 - call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.4661854399685404667"(ptr noalias noundef nonnull readonly align 1 %36, ptr noundef nonnull %33, i64 noundef %31, i64 noundef %35) + %26 = and i64 %18, 65535 + store i64 %26, ptr %4, align 8 + %27 = invoke noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h0ae9bd404677e494E(ptr noalias noundef nonnull align 8 dereferenceable(16) %24, ptr noalias noundef nonnull readonly align 1 @anon.7daa6609f1138c295e9369f81f844227.11, i64 noundef 8, ptr noundef nonnull align 1 %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7daa6609f1138c295e9369f81f844227.9) + to label %28 unwind label %13 + +28: ; preds = %25 + %29 = invoke noundef zeroext i1 @_ZN4core3fmt8builders11DebugStruct6finish17h27bac3b01d1dda5cE(ptr noalias noundef nonnull align 8 dereferenceable(16) %27) + to label %30 unwind label %13 + +30: ; preds = %28 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2), !noalias !601 + call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h3dc25cc0e3e701f7E.llvm.4661854399685404667"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %11) + %31 = getelementptr inbounds i8, ptr %2, i64 8 + %32 = load i64, ptr %31, align 8, !range !610, !noalias !601, !noundef !4 + %.not.i.i.i.i = icmp eq i64 %32, 0 + br i1 %.not.i.i.i.i, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E.exit", label %33 + +33: ; preds = %30 + %34 = load ptr, ptr %2, align 8, !noalias !601, !nonnull !4, !noundef !4 + %35 = getelementptr inbounds i8, ptr %2, i64 16 + %36 = load i64, ptr %35, align 8, !noalias !601, !noundef !4 + %37 = getelementptr inbounds i8, ptr %11, i64 16 + call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.4661854399685404667"(ptr noalias noundef nonnull readonly align 1 %37, ptr noundef nonnull %34, i64 noundef %32, i64 noundef %36) br label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E.exit" -"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E.exit": ; preds = %29, %32 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2), !noalias !600 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) +"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E.exit": ; preds = %30, %33 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2), !noalias !601 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) - ret i1 %28 + ret i1 %29 -37: ; preds = %12 - %38 = landingpad { ptr, i32 } +38: ; preds = %13 + %39 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #24 unreachable -39: ; preds = %12 - resume { ptr, i32 } %13 +40: ; preds = %13 + resume { ptr, i32 } %14 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable @@ -2617,13 +2621,14 @@ attributes #25 = { cold } !597 = distinct !{!597, !"_ZN5alloc3fmt6format17h55b1a8bf61a7c713E"} !598 = distinct !{!598, !597, !"_ZN5alloc3fmt6format17h55b1a8bf61a7c713E: argument 1"} !599 = !{!589, !592, !594, !596} -!600 = !{!601, !603, !605, !607} -!601 = distinct !{!601, !602, !"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17haac7e1b7f2e475a1E.llvm.4661854399685404667: argument 0"} -!602 = distinct !{!602, !"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17haac7e1b7f2e475a1E.llvm.4661854399685404667"} -!603 = distinct !{!603, !604, !"_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h4b27d895d2e94571E.llvm.4661854399685404667: argument 0"} -!604 = distinct !{!604, !"_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h4b27d895d2e94571E.llvm.4661854399685404667"} -!605 = distinct !{!605, !606, !"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h136d76e111b8a9f2E: argument 0"} -!606 = distinct !{!606, !"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h136d76e111b8a9f2E"} -!607 = distinct !{!607, !608, !"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E: argument 0"} -!608 = distinct !{!608, !"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E"} -!609 = !{i64 0, i64 -9223372036854775807} +!600 = !{!591, !595, !598} +!601 = !{!602, !604, !606, !608} +!602 = distinct !{!602, !603, !"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17haac7e1b7f2e475a1E.llvm.4661854399685404667: argument 0"} +!603 = distinct !{!603, !"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17haac7e1b7f2e475a1E.llvm.4661854399685404667"} +!604 = distinct !{!604, !605, !"_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h4b27d895d2e94571E.llvm.4661854399685404667: argument 0"} +!605 = distinct !{!605, !"_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h4b27d895d2e94571E.llvm.4661854399685404667"} +!606 = distinct !{!606, !607, !"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h136d76e111b8a9f2E: argument 0"} +!607 = distinct !{!607, !"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h136d76e111b8a9f2E"} +!608 = distinct !{!608, !609, !"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E: argument 0"} +!609 = distinct !{!609, !"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E"} +!610 = !{i64 0, i64 -9223372036854775807} diff --git a/bench/regex-rs/optimized/2unh2gb6w3rkxv13.ll b/bench/regex-rs/optimized/2unh2gb6w3rkxv13.ll index 9bc75be6a1f..dba414cacaf 100644 --- a/bench/regex-rs/optimized/2unh2gb6w3rkxv13.ll +++ b/bench/regex-rs/optimized/2unh2gb6w3rkxv13.ll @@ -158,53 +158,57 @@ define void @"_ZN67_$LT$regex..builders..Builder$u20$as$u20$core..default..Defau %4 = alloca { { i64, ptr }, i64 }, align 8 %5 = alloca { { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { [16 x i8], i8, [7 x i8] }, { i8, i8 }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }, align 8 %6 = alloca { { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { [16 x i8], i8, [7 x i8] }, { i8, i8 }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }, align 8 + %7 = alloca { { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { [16 x i8], i8, [7 x i8] }, { i8, i8 }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }, align 8 + call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %7) call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %6) call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %5) call void @_ZN14regex_automata4meta5regex6Config3new17hfe0add3b3f7a6a4eE(ptr noalias nocapture noundef nonnull sret({ { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { [16 x i8], i8, [7 x i8] }, { i8, i8 }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }) align 8 dereferenceable(120) %5) call void @_ZN14regex_automata4meta5regex6Config14nfa_size_limit17h69490e69b4c36d47E(ptr noalias nocapture noundef nonnull sret({ { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { [16 x i8], i8, [7 x i8] }, { i8, i8 }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }) align 8 dereferenceable(120) %6, ptr noalias nocapture noundef nonnull align 8 dereferenceable(120) %5, i64 noundef 1, i64 10485760) call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %5) - call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %3) - call void @_ZN14regex_automata4meta5regex6Config21hybrid_cache_capacity17h668a504200d5ed40E(ptr noalias nocapture noundef nonnull sret({ { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { [16 x i8], i8, [7 x i8] }, { i8, i8 }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }) align 8 dereferenceable(120) %3, ptr noalias nocapture noundef nonnull align 8 dereferenceable(120) %6, i64 noundef 2097152) + call void @_ZN14regex_automata4meta5regex6Config21hybrid_cache_capacity17h668a504200d5ed40E(ptr noalias nocapture noundef nonnull sret({ { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { [16 x i8], i8, [7 x i8] }, { i8, i8 }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }) align 8 dereferenceable(120) %7, ptr noalias nocapture noundef nonnull align 8 dereferenceable(120) %6, i64 noundef 2097152) call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %6) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) store i64 0, ptr %4, align 8 - %7 = getelementptr inbounds i8, ptr %4, i64 8 - store ptr inttoptr (i64 8 to ptr), ptr %7, align 8 - %8 = getelementptr inbounds i8, ptr %4, i64 16 - store i64 0, ptr %8, align 8 + %8 = getelementptr inbounds i8, ptr %4, i64 8 + store ptr inttoptr (i64 8 to ptr), ptr %8, align 8 + %9 = getelementptr inbounds i8, ptr %4, i64 16 + store i64 0, ptr %9, align 8 + call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %3) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %3, ptr noundef nonnull align 8 dereferenceable(120) %7, i64 120, i1 false) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) invoke void @"_ZN79_$LT$regex_automata..util..syntax..Config$u20$as$u20$core..default..Default$GT$7default17hf7a60c1e4dfed725E"(ptr noalias nocapture noundef nonnull sret({ i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [2 x i8] }) align 4 dereferenceable(16) %2) - to label %11 unwind label %9 + to label %12 unwind label %10 -9: ; preds = %1 - %10 = landingpad { ptr, i32 } +10: ; preds = %1 + %11 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr56drop_in_place$LT$regex_automata..meta..regex..Config$GT$17hf45e85b22bded6d3E"(ptr noalias noundef nonnull align 8 dereferenceable(120) %3) #10 - to label %16 unwind label %14 + to label %17 unwind label %15 -11: ; preds = %1 - %12 = getelementptr inbounds i8, ptr %0, i64 120 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) +12: ; preds = %1 + %13 = getelementptr inbounds i8, ptr %0, i64 120 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(120) %3, i64 120, i1 false) - %13 = getelementptr inbounds i8, ptr %0, i64 144 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 4 dereferenceable(16) %2, i64 16, i1 false) + %14 = getelementptr inbounds i8, ptr %0, i64 144 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 4 dereferenceable(16) %2, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) + call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %7) ret void -14: ; preds = %16, %9 - %15 = landingpad { ptr, i32 } +15: ; preds = %17, %10 + %16 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #11 unreachable -16: ; preds = %9 +17: ; preds = %10 invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc..vec..Vec$LT$alloc..string..String$GT$$GT$17he6d212a72cb4b4beE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) #10 - to label %17 unwind label %14 + to label %18 unwind label %15 -17: ; preds = %16 - resume { ptr, i32 } %10 +18: ; preds = %17 + resume { ptr, i32 } %11 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll b/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll index 04dd7495299..56e6e841288 100644 --- a/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll +++ b/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll @@ -2492,143 +2492,147 @@ _ZN14regex_automata3nfa8thompson3nfa3NFA8patterns17h040d108c81c2c8eeE.exit: ; pr define internal fastcc void @_ZN14regex_automata3dfa7onepass15InternalBuilder14shuffle_states17h3392e810fbe89a70E(ptr noalias noundef nonnull align 8 dereferenceable(800) %0) unnamed_addr #1 personality ptr @rust_eh_personality { %2 = alloca i64, align 8 %3 = alloca { ptr, { i64, i64 } }, align 8 - %4 = alloca i64, align 8 - %5 = alloca { { { i64, ptr }, i64 }, i64 }, align 8 + %4 = alloca { { i64, ptr }, i64 }, align 8 + %5 = alloca i64, align 8 %6 = alloca { { { i64, ptr }, i64 }, i64 }, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) + %7 = alloca { { { i64, ptr }, i64 }, i64 }, align 8 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) tail call void @llvm.experimental.noalias.scope.decl(metadata !297) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4), !noalias !300 - store i64 0, ptr %4, align 8, !noalias !300 - %7 = getelementptr inbounds i8, ptr %0, i64 40 - %8 = load i64, ptr %7, align 8, !noundef !4 - %9 = getelementptr inbounds i8, ptr %0, i64 344 - %10 = load i64, ptr %9, align 8, !noundef !4 - %11 = and i64 %10, 63 - %12 = lshr i64 %8, %11 - %13 = getelementptr inbounds i8, ptr %3, i64 8 - store i64 0, ptr %13, align 8, !noalias !300 - %14 = getelementptr inbounds i8, ptr %3, i64 16 - store i64 %12, ptr %14, align 8, !noalias !300 - store ptr %4, ptr %3, align 8, !noalias !300 - call void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h4c63e01a7efe75f6E.llvm.3371294817895845771"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr }, i64 }) align 8 dereferenceable(24) %6, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %3), !noalias !302 - %15 = load i64, ptr %4, align 8, !noalias !300, !noundef !4 - %16 = getelementptr inbounds i8, ptr %6, i64 24 - store i64 %15, ptr %16, align 8, !alias.scope !297, !noalias !302 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4), !noalias !300 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5), !noalias !300 + store i64 0, ptr %5, align 8, !noalias !300 + %8 = getelementptr inbounds i8, ptr %0, i64 40 + %9 = load i64, ptr %8, align 8, !noundef !4 + %10 = getelementptr inbounds i8, ptr %0, i64 344 + %11 = load i64, ptr %10, align 8, !noundef !4 + %12 = and i64 %11, 63 + %13 = lshr i64 %9, %12 + %14 = getelementptr inbounds i8, ptr %3, i64 8 + store i64 0, ptr %14, align 8, !noalias !300 + %15 = getelementptr inbounds i8, ptr %3, i64 16 + store i64 %13, ptr %15, align 8, !noalias !300 + store ptr %5, ptr %3, align 8, !noalias !300 + call void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h4c63e01a7efe75f6E.llvm.3371294817895845771"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr }, i64 }) align 8 dereferenceable(24) %4, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %3), !noalias !300 + %16 = load i64, ptr %5, align 8, !noalias !300, !noundef !4 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false), !noalias !302 + %17 = getelementptr inbounds i8, ptr %7, i64 24 + store i64 %16, ptr %17, align 8, !alias.scope !297, !noalias !302 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5), !noalias !300 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) - %.not.i = icmp eq i64 %12, 0 - br i1 %.not.i, label %17, label %18 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) + %.not.i = icmp eq i64 %13, 0 + br i1 %.not.i, label %18, label %19 -17: ; preds = %1 +18: ; preds = %1 invoke void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.451e762c733db03501c72f969938ebf7.24, i64 noundef 43, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.451e762c733db03501c72f969938ebf7.65) #26 to label %.noexc unwind label %.loopexit.split-lp -.noexc: ; preds = %17 +.noexc: ; preds = %18 unreachable -18: ; preds = %1 - %19 = trunc i64 %12 to i32 - %20 = getelementptr inbounds i8, ptr %0, i64 352 - %21 = getelementptr inbounds i8, ptr %0, i64 32 - %22 = getelementptr inbounds i8, ptr %0, i64 368 +19: ; preds = %1 + %20 = trunc i64 %13 to i32 + %21 = getelementptr inbounds i8, ptr %0, i64 352 + %22 = getelementptr inbounds i8, ptr %0, i64 32 + %23 = getelementptr inbounds i8, ptr %0, i64 368 br label %.outer -.outer: ; preds = %42, %18 - %.sroa.4.0.ph = phi i64 [ %30, %42 ], [ %12, %18 ] - %.017.ph.in = phi i32 [ %.017.ph, %42 ], [ %19, %18 ] +.outer: ; preds = %43, %19 + %.sroa.4.0.ph = phi i64 [ %31, %43 ], [ %13, %19 ] + %.017.ph.in = phi i32 [ %.017.ph, %43 ], [ %20, %19 ] %.017.ph = add i32 %.017.ph.in, -1 - %23 = load i64, ptr %9, align 8 - %24 = and i64 %23, 63 - %25 = load i64, ptr %20, align 8 - %.val2.i = load i64, ptr %7, align 8 - %.val.i = load ptr, ptr %21, align 8, !nonnull !4 - %26 = add i64 %.sroa.4.0.ph, -2147483648 - %.first_iter = icmp ult i64 %26, -2147483647 - br label %27 - -27: ; preds = %.outer, %37 - %.sroa.4.0 = phi i64 [ %30, %37 ], [ %.sroa.4.0.ph, %.outer ] + %24 = load i64, ptr %10, align 8 + %25 = and i64 %24, 63 + %26 = load i64, ptr %21, align 8 + %.val2.i = load i64, ptr %8, align 8 + %.val.i = load ptr, ptr %22, align 8, !nonnull !4 + %27 = add i64 %.sroa.4.0.ph, -2147483648 + %.first_iter = icmp ult i64 %27, -2147483647 + br label %28 + +28: ; preds = %.outer, %38 + %.sroa.4.0 = phi i64 [ %31, %38 ], [ %.sroa.4.0.ph, %.outer ] %.not = icmp eq i64 %.sroa.4.0, 0 - br i1 %.not, label %28, label %29 + br i1 %.not, label %29, label %30 -28: ; preds = %27 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %6, i64 32, i1 false) - call void @_ZN14regex_automata3dfa8remapper8Remapper5remap17hfc7c57eb38a827abE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %5, ptr noalias noundef nonnull align 8 dereferenceable(376) %0) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) +29: ; preds = %28 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %7, i64 32, i1 false) + call void @_ZN14regex_automata3dfa8remapper8Remapper5remap17hfc7c57eb38a827abE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %6, ptr noalias noundef nonnull align 8 dereferenceable(376) %0) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) ret void -29: ; preds = %27 - %30 = add i64 %.sroa.4.0, -1 - br i1 %.first_iter, label %31, label %32 +30: ; preds = %28 + %31 = add i64 %.sroa.4.0, -1 + br i1 %.first_iter, label %32, label %33 -31: ; preds = %29 +32: ; preds = %30 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2), !noalias !303 - store i64 %30, ptr %2, align 8, !noalias !303 + store i64 %31, ptr %2, align 8, !noalias !303 invoke void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.451e762c733db03501c72f969938ebf7.227, i64 noundef 21, ptr noundef nonnull align 1 %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.451e762c733db03501c72f969938ebf7.12, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.451e762c733db03501c72f969938ebf7.229) #26 to label %.noexc21 unwind label %.loopexit.split-lp -.noexc21: ; preds = %31 +.noexc21: ; preds = %32 unreachable -32: ; preds = %29 - %33 = shl i64 %30, %24 - %34 = add i64 %33, %25 - %35 = icmp ult i64 %34, %.val2.i - br i1 %35, label %37, label %36, !prof !29 +33: ; preds = %30 + %34 = shl i64 %31, %25 + %35 = add i64 %34, %26 + %36 = icmp ult i64 %35, %.val2.i + br i1 %36, label %38, label %37, !prof !29 -36: ; preds = %32 - invoke void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %34, i64 noundef %.val2.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.451e762c733db03501c72f969938ebf7.62) #26 +37: ; preds = %33 + invoke void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %35, i64 noundef %.val2.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.451e762c733db03501c72f969938ebf7.62) #26 to label %.noexc22 unwind label %.loopexit.split-lp -.noexc22: ; preds = %36 +.noexc22: ; preds = %37 unreachable -37: ; preds = %32 - %38 = getelementptr inbounds [0 x i64], ptr %.val.i, i64 0, i64 %34 - %39 = load i64, ptr %38, align 8, !noalias !306, !noundef !4 - %.not32 = icmp ugt i64 %39, -4398046511105 - br i1 %.not32, label %27, label %40 - -40: ; preds = %37 - %41 = trunc nuw nsw i64 %30 to i32 - invoke void @_ZN14regex_automata3dfa8remapper8Remapper4swap17h8229df11722a2df5E(ptr noalias noundef nonnull align 8 dereferenceable(32) %6, ptr noalias noundef nonnull align 8 dereferenceable(376) %0, i32 noundef %.017.ph, i32 noundef %41) - to label %42 unwind label %.loopexit - -42: ; preds = %40 - store i32 %.017.ph, ptr %22, align 8 +38: ; preds = %33 + %39 = getelementptr inbounds [0 x i64], ptr %.val.i, i64 0, i64 %35 + %40 = load i64, ptr %39, align 8, !noalias !306, !noundef !4 + %.not32 = icmp ugt i64 %40, -4398046511105 + br i1 %.not32, label %28, label %41 + +41: ; preds = %38 + %42 = trunc nuw nsw i64 %31 to i32 + invoke void @_ZN14regex_automata3dfa8remapper8Remapper4swap17h8229df11722a2df5E(ptr noalias noundef nonnull align 8 dereferenceable(32) %7, ptr noalias noundef nonnull align 8 dereferenceable(376) %0, i32 noundef %.017.ph, i32 noundef %42) + to label %43 unwind label %.loopexit + +43: ; preds = %41 + store i32 %.017.ph, ptr %23, align 8 %.not33 = icmp eq i32 %.017.ph, 0 - br i1 %.not33, label %43, label %.outer + br i1 %.not33, label %44, label %.outer -43: ; preds = %42 +44: ; preds = %43 invoke void @_ZN4core6option13expect_failed17hc85eb6037a3050f7E(ptr noalias noundef nonnull readonly align 1 @anon.451e762c733db03501c72f969938ebf7.34, i64 noundef 52, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.451e762c733db03501c72f969938ebf7.35) #26 - to label %44 unwind label %.loopexit.split-lp + to label %45 unwind label %.loopexit.split-lp -44: ; preds = %43 +45: ; preds = %44 unreachable -45: ; preds = %46 +46: ; preds = %47 resume { ptr, i32 } %lpad.phi -.loopexit: ; preds = %40 +.loopexit: ; preds = %41 %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %46 + br label %47 -.loopexit.split-lp: ; preds = %36, %31, %17, %43 +.loopexit.split-lp: ; preds = %37, %32, %18, %44 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %46 + br label %47 -46: ; preds = %.loopexit.split-lp, %.loopexit +47: ; preds = %.loopexit.split-lp, %.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] - invoke void @"_ZN4core3ptr60drop_in_place$LT$regex_automata..dfa..remapper..Remapper$GT$17hf3147d6b3781bf5cE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %6) #27 - to label %45 unwind label %47 + invoke void @"_ZN4core3ptr60drop_in_place$LT$regex_automata..dfa..remapper..Remapper$GT$17hf3147d6b3781bf5cE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %7) #27 + to label %46 unwind label %48 -47: ; preds = %46 - %48 = landingpad { ptr, i32 } +48: ; preds = %47 + %49 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #28 unreachable @@ -2638,6 +2642,7 @@ define internal fastcc void @_ZN14regex_automata3dfa7onepass15InternalBuilder14s define internal fastcc void @_ZN14regex_automata3dfa7onepass15InternalBuilder18compile_transition17hd622584587f845d6E(ptr noalias nocapture noundef nonnull writeonly align 8 dereferenceable(128) %0, ptr noalias noundef nonnull align 8 dereferenceable(800) %1, i32 noundef %2, ptr noalias nocapture noundef nonnull readonly align 4 dereferenceable(8) %3, i64 noundef %4) unnamed_addr #1 personality ptr @rust_eh_personality { %.sroa.318 = alloca [116 x i8], align 4 %6 = alloca { { { i64, i64 }, ptr, i64, { i8, i8 }, [6 x i8] }, {} }, align 8 + %.sroa.06 = alloca { { i64, i64 }, ptr, i64, { i8, i8 }, [6 x i8] }, align 8 %7 = alloca { i64, [15 x i64] }, align 8 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %7) %8 = load i32, ptr %3, align 4, !noundef !4 @@ -2655,8 +2660,9 @@ define internal fastcc void @_ZN14regex_automata3dfa7onepass15InternalBuilder18c %16 = load i16, ptr %15, align 4 %17 = zext i16 %16 to i24 %18 = shl nuw i24 %17, 8 + call void @_ZN14regex_automata4util8alphabet11ByteClasses15representatives17h8a09b651f5f94716E(ptr noalias nocapture noundef nonnull sret({ { i64, i64 }, ptr, i64, { i8, i8 }, [6 x i8] }) align 8 dereferenceable(40) %.sroa.06, ptr noalias noundef nonnull readonly align 1 dereferenceable(256) %14, i24 %18) call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) - call void @_ZN14regex_automata4util8alphabet11ByteClasses15representatives17h8a09b651f5f94716E(ptr noalias nocapture noundef nonnull sret({ { i64, i64 }, ptr, i64, { i8, i8 }, [6 x i8] }) align 8 dereferenceable(40) %6, ptr noalias noundef nonnull readonly align 1 dereferenceable(256) %14, i24 %18) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %6, ptr noundef nonnull align 8 dereferenceable(40) %.sroa.06, i64 40, i1 false) %19 = zext i32 %2 to i64 %20 = getelementptr inbounds i8, ptr %1, i64 344 %21 = getelementptr inbounds i8, ptr %1, i64 80 diff --git a/bench/rust-analyzer-rs/optimized/42n1lucpcixci439.ll b/bench/rust-analyzer-rs/optimized/42n1lucpcixci439.ll index e84f3b75475..147ed522d92 100644 --- a/bench/rust-analyzer-rs/optimized/42n1lucpcixci439.ll +++ b/bench/rust-analyzer-rs/optimized/42n1lucpcixci439.ll @@ -185,8 +185,7 @@ _ZN9toolchain6invoke17h765ea20265727ca8E.exit: ; preds = %7, %12 ; Function Attrs: nonlazybind uwtable define void @_ZN9toolchain4Tool7path_in17hba3025b6addcf4e3E(ptr noalias nocapture noundef writeonly sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %0, i8 noundef %1, ptr noalias noundef nonnull readonly align 1 %2, i64 noundef %3) unnamed_addr #0 personality ptr @rust_eh_personality { switch.lookup: - %4 = alloca { { { { { { i64, ptr, {} }, i64 } } } } }, align 8 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) + %4 = alloca { { { { { i64, ptr, {} }, i64 } } } }, align 8 %5 = sext i8 %1 to i64 %switch.gep = getelementptr inbounds [4 x ptr], ptr @switch.table._ZN9toolchain4Tool4name17ha6d4fd0230798ce3E, i64 0, i64 %5 %switch.load = load ptr, ptr %switch.gep, align 8 @@ -198,7 +197,6 @@ switch.lookup: %9 = extractvalue { ptr, i64 } %7, 1 call void @_ZN3std4path4Path5_join17h9500bce508c32853E(ptr noalias nocapture noundef nonnull sret({ { { { { i64, ptr, {} }, i64 } } } }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 1 %2, i64 noundef %3, ptr noalias noundef nonnull readonly align 1 %8, i64 noundef %9) call void @_ZN9toolchain16probe_for_binary17hc98d17f9f9714b64E(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %0, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %4) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) ret void } diff --git a/bench/rust-analyzer-rs/optimized/53ntv1pfq7fnns7g.ll b/bench/rust-analyzer-rs/optimized/53ntv1pfq7fnns7g.ll index 72b9dfa6c73..c52f106d9a7 100644 --- a/bench/rust-analyzer-rs/optimized/53ntv1pfq7fnns7g.ll +++ b/bench/rust-analyzer-rs/optimized/53ntv1pfq7fnns7g.ll @@ -22897,9 +22897,11 @@ define hidden void @_ZN9itertools11kmerge_impl9kmerge_by17h9c0d05447e82d06cE(ptr %2 = alloca {}, align 1 %3 = alloca { { { ptr, [1 x i64] } }, { ptr, [4 x i64] }, { ptr, [4 x i64] } }, align 8 %4 = alloca { { { { { ptr, [1 x i64] } }, { ptr, [4 x i64] }, { ptr, [4 x i64] } } }, {} }, align 8 + %.sroa.0.i.i6.i = alloca { { { ptr, [1 x i64] } }, { ptr, [4 x i64] }, { ptr, [4 x i64] } }, align 8 %5 = alloca { { { { { ptr, [1 x i64] } }, { ptr, [4 x i64] }, { ptr, [4 x i64] } } }, {} }, align 8 %6 = alloca { { { ptr, [1 x i64] } }, { ptr, [4 x i64] }, { ptr, [4 x i64] } }, align 8 %7 = alloca { { { { { ptr, [1 x i64] } }, { ptr, [4 x i64] }, { ptr, [4 x i64] } } }, {} }, align 8 + %.sroa.0.i.i5.i = alloca { { { ptr, [1 x i64] } }, { ptr, [4 x i64] }, { ptr, [4 x i64] } }, align 8 %8 = alloca { { { { { ptr, [1 x i64] } }, { ptr, [4 x i64] }, { ptr, [4 x i64] } } }, {} }, align 8 %.sroa.0.i40.i.i = alloca [18 x i64], align 8 %.sroa.0.i.i.i = alloca [18 x i64], align 8 @@ -22917,7 +22919,7 @@ define hidden void @_ZN9itertools11kmerge_impl9kmerge_by17h9c0d05447e82d06cE(ptr %.pn21 = phi { ptr, i32 } [ %72, %71 ], [ %eh.lpad-body, %.body ] resume { ptr, i32 } %.pn21 -.loopexit: ; preds = %38, %"_ZN70_$LT$F$u20$as$u20$itertools..kmerge_impl..KMergePredicate$LT$T$GT$$GT$11kmerge_pred17h03d70990c34cc62fE.exit7.i", %.noexc9, %.noexc10, %53, %"_ZN70_$LT$F$u20$as$u20$itertools..kmerge_impl..KMergePredicate$LT$T$GT$$GT$11kmerge_pred17h03d70990c34cc62fE.exit.i", %.noexc15, %.noexc16 +.loopexit: ; preds = %38, %"_ZN70_$LT$F$u20$as$u20$itertools..kmerge_impl..KMergePredicate$LT$T$GT$$GT$11kmerge_pred17h03d70990c34cc62fE.exit9.i", %.noexc9, %.noexc10, %53, %"_ZN70_$LT$F$u20$as$u20$itertools..kmerge_impl..KMergePredicate$LT$T$GT$$GT$11kmerge_pred17h03d70990c34cc62fE.exit.i", %.noexc15, %.noexc16 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.body @@ -22933,7 +22935,7 @@ define hidden void @_ZN9itertools11kmerge_impl9kmerge_by17h9c0d05447e82d06cE(ptr br label %.body .body: ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %41, %58 - %eh.lpad-body = phi { ptr, i32 } [ %lpad.thr_comm.split-lp.i.i5.i, %41 ], [ %lpad.thr_comm.split-lp.i.i.i, %58 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit23, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp24, %.loopexit.split-lp.loopexit.split-lp ] + %eh.lpad-body = phi { ptr, i32 } [ %lpad.thr_comm.split-lp.i.i7.i, %41 ], [ %lpad.thr_comm.split-lp.i.i.i, %58 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit23, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp24, %.loopexit.split-lp.loopexit.split-lp ] invoke void @"_ZN4core3ptr347drop_in_place$LT$alloc..vec..Vec$LT$itertools..kmerge_impl..HeadTail$LT$core..iter..adapters..map..Map$LT$smallvec..IntoIter$LT$$u5b$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$u3b$$u20$1$u5d$$GT$$C$hir..semantics..SemanticsImpl..descend_node_at_offset..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$$GT$17hde74b5db32aed88cE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %10) #36 to label %13 unwind label %69 @@ -22953,16 +22955,16 @@ define hidden void @_ZN9itertools11kmerge_impl9kmerge_by17h9c0d05447e82d06cE(ptr %19 = load ptr, ptr %17, align 8, !nonnull !7, !noundef !7 %20 = load i64, ptr %18, align 8, !noundef !7 call void @llvm.experimental.noalias.scope.decl(metadata !6311) - %.not31.i = icmp ult i64 %20, 2 - br i1 %.not31.i, label %_ZN9itertools11kmerge_impl7heapify17haea7ce9a1705b75bE.exit, label %.lr.ph.preheader.i + %.not33.i = icmp ult i64 %20, 2 + br i1 %.not33.i, label %_ZN9itertools11kmerge_impl7heapify17haea7ce9a1705b75bE.exit, label %.lr.ph.preheader.i .lr.ph.preheader.i: ; preds = %"_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$T$C$I$GT$$GT$11spec_extend17hb172270a6bbfa9d1E.exit" %21 = lshr i64 %20, 1 br label %.lr.ph.i .lr.ph.i: ; preds = %_ZN9itertools11kmerge_impl9sift_down17hfcc8b06ef78ef1ddE.exit.i, %.lr.ph.preheader.i - %.sroa.4.032.i = phi i64 [ %22, %_ZN9itertools11kmerge_impl9sift_down17hfcc8b06ef78ef1ddE.exit.i ], [ %21, %.lr.ph.preheader.i ] - %22 = add nsw i64 %.sroa.4.032.i, -1 + %.sroa.4.034.i = phi i64 [ %22, %_ZN9itertools11kmerge_impl9sift_down17hfcc8b06ef78ef1ddE.exit.i ], [ %21, %.lr.ph.preheader.i ] + %22 = add nsw i64 %.sroa.4.034.i, -1 %.031.in57.i.i = shl i64 %22, 1 %.03158.i.i = or disjoint i64 %.031.in57.i.i, 1 %23 = add i64 %.031.in57.i.i, 2 @@ -23013,18 +23015,21 @@ define hidden void @_ZN9itertools11kmerge_impl9kmerge_by17h9c0d05447e82d06cE(ptr 38: ; preds = %.lr.ph.i.i %39 = getelementptr inbounds [0 x { { ptr, { { { [2 x i64] }, i64 }, i64, i64 } }, { { { { ptr, [1 x i64] } }, { ptr, [4 x i64] }, { ptr, [4 x i64] } } } }], ptr %19, i64 0, i64 %36, i32 1 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %5), !noalias !6323 - invoke void @"_ZN96_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hf6053025496c5222E.llvm.11762030844908852975"(ptr noalias nocapture noundef nonnull sret({ { { ptr, [1 x i64] } }, { ptr, [4 x i64] }, { ptr, [4 x i64] } }) align 8 dereferenceable(96) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(96) %39) + call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %.sroa.0.i.i6.i), !noalias !6323 + invoke void @"_ZN96_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hf6053025496c5222E.llvm.11762030844908852975"(ptr noalias nocapture noundef nonnull sret({ { { ptr, [1 x i64] } }, { ptr, [4 x i64] }, { ptr, [4 x i64] } }) align 8 dereferenceable(96) %.sroa.0.i.i6.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(96) %39) to label %.noexc8 unwind label %.loopexit .noexc8: ; preds = %38 %40 = getelementptr inbounds [0 x { { ptr, { { { [2 x i64] }, i64 }, i64, i64 } }, { { { { ptr, [1 x i64] } }, { ptr, [4 x i64] }, { ptr, [4 x i64] } } } }], ptr %19, i64 0, i64 %.03160.i.i, i32 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %5, ptr noundef nonnull align 8 dereferenceable(96) %.sroa.0.i.i6.i, i64 96, i1 false), !noalias !6323 + call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %.sroa.0.i.i6.i), !noalias !6323 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %4), !noalias !6323 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %3), !noalias !6323 invoke void @"_ZN96_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hf6053025496c5222E.llvm.11762030844908852975"(ptr noalias nocapture noundef nonnull sret({ { { ptr, [1 x i64] } }, { ptr, [4 x i64] }, { ptr, [4 x i64] } }) align 8 dereferenceable(96) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(96) %40) - to label %"_ZN70_$LT$F$u20$as$u20$itertools..kmerge_impl..KMergePredicate$LT$T$GT$$GT$11kmerge_pred17h03d70990c34cc62fE.exit7.i" unwind label %41, !noalias !6330 + to label %"_ZN70_$LT$F$u20$as$u20$itertools..kmerge_impl..KMergePredicate$LT$T$GT$$GT$11kmerge_pred17h03d70990c34cc62fE.exit9.i" unwind label %41, !noalias !6330 41: ; preds = %.noexc8 - %lpad.thr_comm.split-lp.i.i5.i = landingpad { ptr, i32 } + %lpad.thr_comm.split-lp.i.i7.i = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr675drop_in_place$LT$core..iter..adapters..flatten..FlattenCompat$LT$core..iter..adapters..map..Map$LT$core..option..IntoIter$LT$rowan..api..SyntaxNode$LT$syntax..syntax_node..RustLanguage$GT$$GT$$C$hir..semantics..SemanticsImpl..token_ancestors_with_macros..$u7b$$u7b$closure$u7d$$u7d$$GT$$C$core..iter..adapters..map..Map$LT$core..iter..sources..successors..Successors$LT$hir_expand..files..InFileWrapper$LT$span..HirFileId$C$rowan..api..SyntaxNode$LT$syntax..syntax_node..RustLanguage$GT$$GT$$C$hir..semantics..SemanticsImpl..ancestors_with_macros..$u7b$$u7b$closure$u7d$$u7d$$GT$$C$hir..semantics..SemanticsImpl..ancestors_with_macros..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h74ec5a8afe3c03f3E.llvm.15963164601899926706"(ptr noalias noundef nonnull align 8 dereferenceable(96) %5) to label %.body unwind label %42, !noalias !6330 @@ -23035,13 +23040,13 @@ define hidden void @_ZN9itertools11kmerge_impl9kmerge_by17h9c0d05447e82d06cE(ptr call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #35, !noalias !6330 unreachable -"_ZN70_$LT$F$u20$as$u20$itertools..kmerge_impl..KMergePredicate$LT$T$GT$$GT$11kmerge_pred17h03d70990c34cc62fE.exit7.i": ; preds = %.noexc8 +"_ZN70_$LT$F$u20$as$u20$itertools..kmerge_impl..KMergePredicate$LT$T$GT$$GT$11kmerge_pred17h03d70990c34cc62fE.exit9.i": ; preds = %.noexc8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %4, ptr noundef nonnull align 8 dereferenceable(96) %3, i64 96, i1 false), !noalias !6323 call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %3), !noalias !6323 %44 = invoke noundef i8 @_ZN4core4iter6traits8iterator8Iterator14partial_cmp_by17h8890053e56d0fe3fE.llvm.836043833466553463(ptr noalias nocapture noundef nonnull align 8 dereferenceable(96) %5, ptr noalias nocapture noundef nonnull align 8 dereferenceable(96) %4) to label %.noexc9 unwind label %.loopexit -.noexc9: ; preds = %"_ZN70_$LT$F$u20$as$u20$itertools..kmerge_impl..KMergePredicate$LT$T$GT$$GT$11kmerge_pred17h03d70990c34cc62fE.exit7.i" +.noexc9: ; preds = %"_ZN70_$LT$F$u20$as$u20$itertools..kmerge_impl..KMergePredicate$LT$T$GT$$GT$11kmerge_pred17h03d70990c34cc62fE.exit9.i" %45 = invoke noundef i8 @"_ZN4core6option15Option$LT$T$GT$6map_or17he8b5051196e40646E.llvm.836043833466553463"(i8 noundef %44, i8 noundef 2) to label %.noexc10 unwind label %.loopexit @@ -23067,11 +23072,14 @@ define hidden void @_ZN9itertools11kmerge_impl9kmerge_by17h9c0d05447e82d06cE(ptr %55 = getelementptr inbounds [0 x { { ptr, { { { [2 x i64] }, i64 }, i64, i64 } }, { { { { ptr, [1 x i64] } }, { ptr, [4 x i64] }, { ptr, [4 x i64] } } } }], ptr %19, i64 0, i64 %.059.i.i %56 = getelementptr inbounds i8, ptr %54, i64 48 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %8), !noalias !6331 - invoke void @"_ZN96_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hf6053025496c5222E.llvm.11762030844908852975"(ptr noalias nocapture noundef nonnull sret({ { { ptr, [1 x i64] } }, { ptr, [4 x i64] }, { ptr, [4 x i64] } }) align 8 dereferenceable(96) %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(96) %56) + call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %.sroa.0.i.i5.i), !noalias !6331 + invoke void @"_ZN96_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hf6053025496c5222E.llvm.11762030844908852975"(ptr noalias nocapture noundef nonnull sret({ { { ptr, [1 x i64] } }, { ptr, [4 x i64] }, { ptr, [4 x i64] } }) align 8 dereferenceable(96) %.sroa.0.i.i5.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(96) %56) to label %.noexc14 unwind label %.loopexit .noexc14: ; preds = %53 %57 = getelementptr inbounds i8, ptr %55, i64 48 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %8, ptr noundef nonnull align 8 dereferenceable(96) %.sroa.0.i.i5.i, i64 96, i1 false), !noalias !6331 + call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %.sroa.0.i.i5.i), !noalias !6331 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %7), !noalias !6331 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %6), !noalias !6331 invoke void @"_ZN96_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hf6053025496c5222E.llvm.11762030844908852975"(ptr noalias nocapture noundef nonnull sret({ { { ptr, [1 x i64] } }, { ptr, [4 x i64] }, { ptr, [4 x i64] } }) align 8 dereferenceable(96) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(96) %57) diff --git a/bench/rust-analyzer-rs/optimized/573qgtnkdp36rz9h.ll b/bench/rust-analyzer-rs/optimized/573qgtnkdp36rz9h.ll index 35247aabcb0..2c588847a21 100644 --- a/bench/rust-analyzer-rs/optimized/573qgtnkdp36rz9h.ll +++ b/bench/rust-analyzer-rs/optimized/573qgtnkdp36rz9h.ll @@ -479,11 +479,10 @@ define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hf837ad467ca3c ; Function Attrs: nonlazybind uwtable define hidden void @_ZN5paths7AbsPath4join17h5848497ad340fb88E(ptr noalias nocapture noundef writeonly sret({ { { { { { { i64, ptr, {} }, i64 } } } } } }) align 8 dereferenceable(24) %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2, ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %3) unnamed_addr #1 personality ptr @rust_eh_personality { - %5 = alloca { { { { { { i64, ptr, {} }, i64 } } } } }, align 8 + %5 = alloca { { { { { i64, ptr, {} }, i64 } } } }, align 8 %6 = alloca { { { { { { i64, ptr, {} }, i64 } } } } }, align 8 %7 = alloca { i64, [3 x i64] }, align 8 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) %8 = tail call { ptr, i64 } @"_ZN79_$LT$paths..AbsPath$u20$as$u20$core..convert..AsRef$LT$camino..Utf8Path$GT$$GT$6as_ref17h1c4c0cf73ff9631aE"(ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) %9 = extractvalue { ptr, i64 } %8, 0 %10 = extractvalue { ptr, i64 } %8, 1 @@ -495,9 +494,8 @@ define hidden void @_ZN5paths7AbsPath4join17h5848497ad340fb88E(ptr noalias nocap %14 = tail call { ptr, i64 } @"_ZN6camino78_$LT$impl$u20$core..convert..AsRef$LT$camino..Utf8Path$GT$$u20$for$u20$str$GT$6as_ref17h02821cf3bf4b2a93E"(ptr noalias noundef nonnull readonly align 1 %11, i64 noundef %13), !noalias !139 %15 = extractvalue { ptr, i64 } %14, 0 %16 = extractvalue { ptr, i64 } %14, 1 - call void @_ZN3std4path4Path5_join17h9500bce508c32853E(ptr noalias nocapture noundef nonnull sret({ { { { { i64, ptr, {} }, i64 } } } }) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 1 %9, i64 noundef %10, ptr noalias noundef nonnull readonly align 1 %15, i64 noundef %16) - call void @"_ZN87_$LT$paths..AbsPathBuf$u20$as$u20$core..convert..TryFrom$LT$camino..Utf8PathBuf$GT$$GT$8try_from17h324f0f150bbade8fE"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %7, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %6) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) + call void @_ZN3std4path4Path5_join17h9500bce508c32853E(ptr noalias nocapture noundef nonnull sret({ { { { { i64, ptr, {} }, i64 } } } }) align 8 dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 1 %9, i64 noundef %10, ptr noalias noundef nonnull readonly align 1 %15, i64 noundef %16) + call void @"_ZN87_$LT$paths..AbsPathBuf$u20$as$u20$core..convert..TryFrom$LT$camino..Utf8PathBuf$GT$$GT$8try_from17h324f0f150bbade8fE"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %7, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %5) tail call void @llvm.experimental.noalias.scope.decl(metadata !140) tail call void @llvm.experimental.noalias.scope.decl(metadata !143) %17 = load i64, ptr %7, align 8, !range !126, !alias.scope !143, !noalias !145, !noundef !20 @@ -505,16 +503,16 @@ define hidden void @_ZN5paths7AbsPath4join17h5848497ad340fb88E(ptr noalias nocap br i1 %trunc.i, label %18, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hf837ad467ca3c705E.llvm.12041220681261970885.exit" 18: ; preds = %4 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !147 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !147 %19 = getelementptr inbounds i8, ptr %7, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %19, i64 24, i1 false), !noalias !145 - invoke void @_ZN4core6result13unwrap_failed17ha188096f98826595E(ptr noalias noundef nonnull readonly align 1 @anon.7855ef78f73ea6488ff6900a1ea4815f.21.llvm.12041220681261970885, i64 noundef 43, ptr noundef nonnull align 1 %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7855ef78f73ea6488ff6900a1ea4815f.22.llvm.12041220681261970885, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7855ef78f73ea6488ff6900a1ea4815f.26.llvm.12041220681261970885) #23 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %19, i64 24, i1 false), !noalias !145 + invoke void @_ZN4core6result13unwrap_failed17ha188096f98826595E(ptr noalias noundef nonnull readonly align 1 @anon.7855ef78f73ea6488ff6900a1ea4815f.21.llvm.12041220681261970885, i64 noundef 43, ptr noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7855ef78f73ea6488ff6900a1ea4815f.22.llvm.12041220681261970885, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7855ef78f73ea6488ff6900a1ea4815f.26.llvm.12041220681261970885) #23 to label %22 unwind label %20, !noalias !148 20: ; preds = %18 %21 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr40drop_in_place$LT$camino..Utf8PathBuf$GT$17h9e6b0602bad73b39E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) #21 + invoke void @"_ZN4core3ptr40drop_in_place$LT$camino..Utf8PathBuf$GT$17h9e6b0602bad73b39E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #21 to label %25 unwind label %23, !noalias !148 22: ; preds = %18 @@ -538,20 +536,18 @@ define hidden void @_ZN5paths7AbsPath4join17h5848497ad340fb88E(ptr noalias nocap ; Function Attrs: nonlazybind uwtable define hidden void @_ZN5paths7AbsPath4join17hd45d6a45b59778ddE(ptr noalias nocapture noundef writeonly sret({ { { { { { { i64, ptr, {} }, i64 } } } } } }) align 8 dereferenceable(24) %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2, ptr noalias noundef nonnull readonly align 1 %3, i64 noundef %4) unnamed_addr #1 personality ptr @rust_eh_personality { - %6 = alloca { { { { { { i64, ptr, {} }, i64 } } } } }, align 8 + %6 = alloca { { { { { i64, ptr, {} }, i64 } } } }, align 8 %7 = alloca { { { { { { i64, ptr, {} }, i64 } } } } }, align 8 %8 = alloca { i64, [3 x i64] }, align 8 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) %9 = tail call { ptr, i64 } @"_ZN79_$LT$paths..AbsPath$u20$as$u20$core..convert..AsRef$LT$camino..Utf8Path$GT$$GT$6as_ref17h1c4c0cf73ff9631aE"(ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) %10 = extractvalue { ptr, i64 } %9, 0 %11 = extractvalue { ptr, i64 } %9, 1 %12 = tail call { ptr, i64 } @"_ZN6camino78_$LT$impl$u20$core..convert..AsRef$LT$camino..Utf8Path$GT$$u20$for$u20$str$GT$6as_ref17h02821cf3bf4b2a93E"(ptr noalias noundef nonnull readonly align 1 %3, i64 noundef %4), !noalias !150 %13 = extractvalue { ptr, i64 } %12, 0 %14 = extractvalue { ptr, i64 } %12, 1 - call void @_ZN3std4path4Path5_join17h9500bce508c32853E(ptr noalias nocapture noundef nonnull sret({ { { { { i64, ptr, {} }, i64 } } } }) align 8 dereferenceable(24) %7, ptr noalias noundef nonnull readonly align 1 %10, i64 noundef %11, ptr noalias noundef nonnull readonly align 1 %13, i64 noundef %14) - call void @"_ZN87_$LT$paths..AbsPathBuf$u20$as$u20$core..convert..TryFrom$LT$camino..Utf8PathBuf$GT$$GT$8try_from17h324f0f150bbade8fE"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %8, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %7) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) + call void @_ZN3std4path4Path5_join17h9500bce508c32853E(ptr noalias nocapture noundef nonnull sret({ { { { { i64, ptr, {} }, i64 } } } }) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 1 %10, i64 noundef %11, ptr noalias noundef nonnull readonly align 1 %13, i64 noundef %14) + call void @"_ZN87_$LT$paths..AbsPathBuf$u20$as$u20$core..convert..TryFrom$LT$camino..Utf8PathBuf$GT$$GT$8try_from17h324f0f150bbade8fE"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %8, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %6) tail call void @llvm.experimental.noalias.scope.decl(metadata !156) tail call void @llvm.experimental.noalias.scope.decl(metadata !159) %15 = load i64, ptr %8, align 8, !range !126, !alias.scope !159, !noalias !161, !noundef !20 @@ -559,16 +555,16 @@ define hidden void @_ZN5paths7AbsPath4join17hd45d6a45b59778ddE(ptr noalias nocap br i1 %trunc.i, label %16, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hf837ad467ca3c705E.llvm.12041220681261970885.exit" 16: ; preds = %5 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !163 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !163 %17 = getelementptr inbounds i8, ptr %8, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %17, i64 24, i1 false), !noalias !161 - invoke void @_ZN4core6result13unwrap_failed17ha188096f98826595E(ptr noalias noundef nonnull readonly align 1 @anon.7855ef78f73ea6488ff6900a1ea4815f.21.llvm.12041220681261970885, i64 noundef 43, ptr noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7855ef78f73ea6488ff6900a1ea4815f.22.llvm.12041220681261970885, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7855ef78f73ea6488ff6900a1ea4815f.26.llvm.12041220681261970885) #23 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %17, i64 24, i1 false), !noalias !161 + invoke void @_ZN4core6result13unwrap_failed17ha188096f98826595E(ptr noalias noundef nonnull readonly align 1 @anon.7855ef78f73ea6488ff6900a1ea4815f.21.llvm.12041220681261970885, i64 noundef 43, ptr noundef nonnull align 1 %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7855ef78f73ea6488ff6900a1ea4815f.22.llvm.12041220681261970885, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7855ef78f73ea6488ff6900a1ea4815f.26.llvm.12041220681261970885) #23 to label %20 unwind label %18, !noalias !164 18: ; preds = %16 %19 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr40drop_in_place$LT$camino..Utf8PathBuf$GT$17h9e6b0602bad73b39E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #21 + invoke void @"_ZN4core3ptr40drop_in_place$LT$camino..Utf8PathBuf$GT$17h9e6b0602bad73b39E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #21 to label %23 unwind label %21, !noalias !164 20: ; preds = %16 diff --git a/bench/rust-analyzer-rs/optimized/hknx1qr3lu9291s.ll b/bench/rust-analyzer-rs/optimized/hknx1qr3lu9291s.ll index 472cc0debde..4d5e1179cff 100644 --- a/bench/rust-analyzer-rs/optimized/hknx1qr3lu9291s.ll +++ b/bench/rust-analyzer-rs/optimized/hknx1qr3lu9291s.ll @@ -29760,14 +29760,14 @@ define void @_ZN6ide_db13documentation18docs_with_rangemap17h6ad81e1f43ad6698E(p %20 = alloca { { i64, i64, { { ptr, i64 }, i64, i64, i64, [4 x i8], i32 }, i8, i8, [6 x i8] } }, align 8 %21 = alloca { i64, [2 x i64] }, align 8 %22 = alloca { { { ptr, ptr, {} }, { { ptr, i64 } } }, {} }, align 8 + %.sroa.0 = alloca { { ptr, ptr, {} }, { { ptr, i64 } } }, align 8 %23 = alloca { { i64, ptr, {} }, i64 }, align 8 %24 = alloca { { { i64, ptr, {} }, i64 } }, align 8 %25 = alloca { ptr, { ptr, i64 } }, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) %26 = tail call noundef align 8 dereferenceable(8) ptr @"_ZN73_$LT$hir_def..attr..AttrsWithOwner$u20$as$u20$core..ops..deref..Deref$GT$5deref17hca5e7b2ba734592cE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3) call void @_ZN7hir_def4attr5Attrs6by_key17h22accb8a4caf9a1cE(ptr noalias nocapture noundef nonnull sret({ ptr, { ptr, i64 } }) align 8 dereferenceable(24) %25, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %26, ptr noalias noundef nonnull readonly align 1 @anon.9255a45982e6bf6104fc6675f0826231.234, i64 noundef 3) - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) - call void @_ZN7hir_def4attr9AttrQuery5attrs17hf03bc5d9de18ada3E(ptr noalias nocapture noundef nonnull sret({ { ptr, ptr, {} }, { { ptr, i64 } } }) align 8 dereferenceable(32) %22, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %25) + call void @_ZN7hir_def4attr9AttrQuery5attrs17hf03bc5d9de18ada3E(ptr noalias nocapture noundef nonnull sret({ { ptr, ptr, {} }, { { ptr, i64 } } }) align 8 dereferenceable(32) %.sroa.0, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %25) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) %27 = tail call noundef align 8 dereferenceable(8) ptr @"_ZN73_$LT$hir_def..attr..AttrsWithOwner$u20$as$u20$core..ops..deref..Deref$GT$5deref17hca5e7b2ba734592cE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3) %28 = tail call fastcc noundef i64 @_ZN6ide_db13documentation10doc_indent17h7b75d7e96fcdea67E(ptr noalias noundef readonly align 8 dereferenceable(8) %27) @@ -29783,6 +29783,8 @@ define void @_ZN6ide_db13documentation18docs_with_rangemap17h6ad81e1f43ad6698E(p store ptr inttoptr (i64 4 to ptr), ptr %29, align 8 %30 = getelementptr inbounds i8, ptr %23, i64 16 store i64 0, ptr %30, align 8 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0, i64 32, i1 false) %31 = getelementptr inbounds i8, ptr %22, i64 16 %32 = getelementptr inbounds i8, ptr %22, i64 8 %33 = load ptr, ptr %32, align 8, !alias.scope !8880, !noalias !8889, !nonnull !4, !noundef !4 @@ -30685,13 +30687,13 @@ define void @_ZN6ide_db13documentation15docs_from_attrs17hacab2a0f501dc5b0E(ptr %10 = alloca { { i8, [23 x i8] } }, align 8 %11 = alloca { i64, [2 x i64] }, align 8 %12 = alloca { { { ptr, ptr, {} }, { { ptr, i64 } } }, {} }, align 8 + %.sroa.0 = alloca { { ptr, ptr, {} }, { { ptr, i64 } } }, align 8 %13 = alloca { { { i64, ptr, {} }, i64 } }, align 8 %14 = alloca i64, align 8 %15 = alloca { ptr, { ptr, i64 } }, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) call void @_ZN7hir_def4attr5Attrs6by_key17h22accb8a4caf9a1cE(ptr noalias nocapture noundef nonnull sret({ ptr, { ptr, i64 } }) align 8 dereferenceable(24) %15, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %1, ptr noalias noundef nonnull readonly align 1 @anon.9255a45982e6bf6104fc6675f0826231.234, i64 noundef 3) - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) - call void @_ZN7hir_def4attr9AttrQuery5attrs17hf03bc5d9de18ada3E(ptr noalias nocapture noundef nonnull sret({ { ptr, ptr, {} }, { { ptr, i64 } } }) align 8 dereferenceable(32) %12, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %15) + call void @_ZN7hir_def4attr9AttrQuery5attrs17hf03bc5d9de18ada3E(ptr noalias nocapture noundef nonnull sret({ { ptr, ptr, {} }, { { ptr, i64 } } }) align 8 dereferenceable(32) %.sroa.0, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %15) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) %16 = tail call fastcc noundef i64 @_ZN6ide_db13documentation10doc_indent17h7b75d7e96fcdea67E(ptr noalias noundef readonly align 8 dereferenceable(8) %1) @@ -30702,6 +30704,8 @@ define void @_ZN6ide_db13documentation15docs_from_attrs17hacab2a0f501dc5b0E(ptr store ptr inttoptr (i64 1 to ptr), ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %13, i64 16 store i64 0, ptr %.sroa.5.0..sroa_idx, align 8 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0, i64 32, i1 false) %17 = getelementptr inbounds i8, ptr %12, i64 16 %18 = getelementptr inbounds i8, ptr %12, i64 8 %19 = load ptr, ptr %18, align 8, !alias.scope !9066, !noalias !9075, !nonnull !4, !noundef !4 diff --git a/bench/syn/optimized/19z3k5eqgbxjiezn.ll b/bench/syn/optimized/19z3k5eqgbxjiezn.ll index 2cf020a6656..bee5cd23a29 100644 --- a/bench/syn/optimized/19z3k5eqgbxjiezn.ll +++ b/bench/syn/optimized/19z3k5eqgbxjiezn.ll @@ -3192,7 +3192,7 @@ define hidden void @"_ZN3syn3lit7parsing61_$LT$impl$u20$syn..parse..Parse$u20$fo %.sroa.01.i.i26 = alloca { { i64, ptr }, i64 }, align 8 %.sroa.8.i = alloca [7 x i8], align 1 %.sroa.01.i.i = alloca { { i64, ptr }, i64 }, align 8 - %.sroa.59.i = alloca [2 x i64], align 8 + %.sroa.0.i.i = alloca { i32, i32, i32, { i8, i8 }, [2 x i8] }, align 8 %5 = alloca { { { i64, ptr }, i64 } }, align 8 %6 = alloca { i32, i32, i8, [3 x i8] }, align 4 %7 = alloca { i64, [4 x i64] }, align 8 @@ -3248,7 +3248,7 @@ _ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624. 30: ; preds = %26 %31 = getelementptr inbounds i8, ptr %.sroa.03.1.i, i64 16 - call void @"_ZN87_$LT$proc_macro..bridge..Literal$LT$Span$C$Symbol$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h4ce0ee6be613852fE.llvm.1271834235494842624"(ptr noalias nocapture noundef nonnull sret({ i32, i32, i32, { i8, i8 }, [2 x i8] }) align 4 dereferenceable(16) %.sroa.59.i, ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %31) + call void @"_ZN87_$LT$proc_macro..bridge..Literal$LT$Span$C$Symbol$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h4ce0ee6be613852fE.llvm.1271834235494842624"(ptr noalias nocapture noundef nonnull sret({ i32, i32, i32, { i8, i8 }, [2 x i8] }) align 4 dereferenceable(16) %.sroa.0.i.i, ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %31) br label %"_ZN64_$LT$proc_macro2..imp..Literal$u20$as$u20$core..clone..Clone$GT$5clone17he46c9d8993ac83a1E.llvm.1271834235494842624.exit.i" 32: ; preds = %26 @@ -3256,7 +3256,7 @@ _ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624. call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hebbb1fc2363025c1E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 dereferenceable(24) %.sroa.01.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %27), !noalias !475 %.sroa.07.0.copyload8.i = load i64, ptr %.sroa.01.i.i, align 8, !noalias !478 %.sroa.59.0..sroa.01.i.sroa_idx.i = getelementptr inbounds i8, ptr %.sroa.01.i.i, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.0..sroa.01.i.sroa_idx.i, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.0..sroa.01.i.sroa_idx.i, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.01.i.i), !noalias !477 br label %"_ZN64_$LT$proc_macro2..imp..Literal$u20$as$u20$core..clone..Clone$GT$5clone17he46c9d8993ac83a1E.llvm.1271834235494842624.exit.i" @@ -3280,7 +3280,7 @@ _ZN3syn6buffer6Cursor7literal17h56201320c761e7bfE.exit: ; preds = %33 37: ; preds = %_ZN3syn6buffer6Cursor7literal17h56201320c761e7bfE.exit store i64 %.sroa.07.0.i, ptr %11, align 8 %.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %11, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.7.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.i, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.7.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i, i64 16, i1 false) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.0) call void @"_ZN3syn3lit5value31_$LT$impl$u20$syn..lit..Lit$GT$3new17h6bfda8b68c1f667cE"(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %.sroa.0, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %11) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0, i64 24, i1 false) @@ -5626,7 +5626,7 @@ define hidden void @_ZN3syn5parse11ParseBuffer4step17hb941b6aeea17b97dE(ptr noal ; Function Attrs: nonlazybind uwtable define hidden void @_ZN3syn5parse11ParseBuffer4step17hc12c539cc564aa43E(ptr noalias nocapture noundef writeonly sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %0, ptr nocapture noundef nonnull align 8 %1) unnamed_addr #0 personality ptr @rust_eh_personality { %.sroa.01.i.i.i = alloca { { i64, ptr }, i64 }, align 8 - %.sroa.59.i.i = alloca [2 x i64], align 8 + %.sroa.0.i.i.i = alloca { i32, i32, i32, { i8, i8 }, [2 x i8] }, align 8 %3 = alloca { { { i64, ptr }, i64 } }, align 8 %.sroa.5 = alloca [2 x i64], align 8 %.sroa.7 = alloca [2 x i64], align 8 @@ -5636,7 +5636,7 @@ define hidden void @_ZN3syn5parse11ParseBuffer4step17hc12c539cc564aa43E(ptr noal %6 = load ptr, ptr %1, align 8, !noundef !4 %7 = getelementptr inbounds i8, ptr %1, i64 8 %8 = load ptr, ptr %7, align 8, !noundef !4 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %.sroa.59.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %.sroa.0.i.i.i) %9 = load i32, ptr %6, align 8, !range !104, !noalias !802, !noundef !4 %10 = icmp eq i32 %9, 0 br i1 %10, label %.lr.ph.i.i.i, label %_ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624.exit.i.i @@ -5680,7 +5680,7 @@ _ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624. 24: ; preds = %20 %25 = getelementptr inbounds i8, ptr %.sroa.03.1.i.i, i64 16 - call void @"_ZN87_$LT$proc_macro..bridge..Literal$LT$Span$C$Symbol$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h4ce0ee6be613852fE.llvm.1271834235494842624"(ptr noalias nocapture noundef nonnull sret({ i32, i32, i32, { i8, i8 }, [2 x i8] }) align 4 dereferenceable(16) %.sroa.59.i.i, ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %25), !noalias !816 + call void @"_ZN87_$LT$proc_macro..bridge..Literal$LT$Span$C$Symbol$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h4ce0ee6be613852fE.llvm.1271834235494842624"(ptr noalias nocapture noundef nonnull sret({ i32, i32, i32, { i8, i8 }, [2 x i8] }) align 4 dereferenceable(16) %.sroa.0.i.i.i, ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %25), !noalias !816 br label %"_ZN64_$LT$proc_macro2..imp..Literal$u20$as$u20$core..clone..Clone$GT$5clone17he46c9d8993ac83a1E.llvm.1271834235494842624.exit.i.i" 26: ; preds = %20 @@ -5688,7 +5688,7 @@ _ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624. call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hebbb1fc2363025c1E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 dereferenceable(24) %.sroa.01.i.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %21), !noalias !814 %.sroa.07.0.copyload8.i.i = load i64, ptr %.sroa.01.i.i.i, align 8, !noalias !818 %.sroa.59.0..sroa.01.i.sroa_idx.i.i = getelementptr inbounds i8, ptr %.sroa.01.i.i.i, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.0..sroa.01.i.sroa_idx.i.i, i64 16, i1 false), !noalias !816 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.0..sroa.01.i.sroa_idx.i.i, i64 16, i1 false), !noalias !816 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.01.i.i.i), !noalias !817 br label %"_ZN64_$LT$proc_macro2..imp..Literal$u20$as$u20$core..clone..Clone$GT$5clone17he46c9d8993ac83a1E.llvm.1271834235494842624.exit.i.i" @@ -5710,8 +5710,8 @@ _ZN3syn6buffer6Cursor7literal17h56201320c761e7bfE.exit.i: ; preds = %27 br i1 %31, label %34, label %32 32: ; preds = %_ZN3syn6buffer6Cursor7literal17h56201320c761e7bfE.exit.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.5, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.i.i, i64 16, i1 false), !noalias !819 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.59.i.i) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.5, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i, i64 16, i1 false), !noalias !819 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.0.i.i.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.7, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.5, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.5) store ptr %.0.i.i.i.i, ptr %1, align 8 @@ -5729,7 +5729,7 @@ _ZN3syn6buffer6Cursor7literal17h56201320c761e7bfE.exit.i: ; preds = %27 %.sroa.9.8..sroa_idx = getelementptr inbounds i8, ptr %3, i64 16 %.sroa.9.8.copyload = load ptr, ptr %.sroa.9.8..sroa_idx, align 8, !noalias !819 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3), !noalias !816 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.59.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.0.i.i.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.7, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.5, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.5) %35 = getelementptr inbounds i8, ptr %0, i64 8 @@ -6472,7 +6472,7 @@ _ZN3syn6buffer6Cursor5punct17h6386474329364b2bE.exit: ; preds = %27 ; Function Attrs: inlinehint nonlazybind uwtable define hidden void @"_ZN58_$LT$proc_macro2..Literal$u20$as$u20$syn..parse..Parse$GT$5parse28_$u7b$$u7b$closure$u7d$$u7d$17hb66a257290f3f8efE.llvm.858133952616893155"(ptr noalias nocapture noundef writeonly sret({ i64, [4 x i64] }) align 8 dereferenceable(40) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %1) unnamed_addr #4 personality ptr @rust_eh_personality { %.sroa.01.i.i = alloca { { i64, ptr }, i64 }, align 8 - %.sroa.59.i = alloca [2 x i64], align 8 + %.sroa.0.i.i = alloca { i32, i32, i32, { i8, i8 }, [2 x i8] }, align 8 %3 = alloca { { { i64, ptr }, i64 } }, align 8 %4 = load ptr, ptr %1, align 8, !noundef !4 %5 = getelementptr inbounds i8, ptr %1, i64 8 @@ -6520,7 +6520,7 @@ _ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624. 22: ; preds = %18 %23 = getelementptr inbounds i8, ptr %.sroa.03.1.i, i64 16 - call void @"_ZN87_$LT$proc_macro..bridge..Literal$LT$Span$C$Symbol$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h4ce0ee6be613852fE.llvm.1271834235494842624"(ptr noalias nocapture noundef nonnull sret({ i32, i32, i32, { i8, i8 }, [2 x i8] }) align 4 dereferenceable(16) %.sroa.59.i, ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %23) + call void @"_ZN87_$LT$proc_macro..bridge..Literal$LT$Span$C$Symbol$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h4ce0ee6be613852fE.llvm.1271834235494842624"(ptr noalias nocapture noundef nonnull sret({ i32, i32, i32, { i8, i8 }, [2 x i8] }) align 4 dereferenceable(16) %.sroa.0.i.i, ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %23) br label %"_ZN64_$LT$proc_macro2..imp..Literal$u20$as$u20$core..clone..Clone$GT$5clone17he46c9d8993ac83a1E.llvm.1271834235494842624.exit.i" 24: ; preds = %18 @@ -6528,7 +6528,7 @@ _ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624. call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hebbb1fc2363025c1E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 dereferenceable(24) %.sroa.01.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %19), !noalias !900 %.sroa.07.0.copyload8.i = load i64, ptr %.sroa.01.i.i, align 8, !noalias !903 %.sroa.59.0..sroa.01.i.sroa_idx.i = getelementptr inbounds i8, ptr %.sroa.01.i.i, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.0..sroa.01.i.sroa_idx.i, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.0..sroa.01.i.sroa_idx.i, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.01.i.i), !noalias !902 br label %"_ZN64_$LT$proc_macro2..imp..Literal$u20$as$u20$core..clone..Clone$GT$5clone17he46c9d8993ac83a1E.llvm.1271834235494842624.exit.i" @@ -6563,7 +6563,7 @@ _ZN3syn6buffer6Cursor7literal17h56201320c761e7bfE.exit.thread: ; preds = %_ZN3sy 33: ; preds = %_ZN3syn6buffer6Cursor7literal17h56201320c761e7bfE.exit store i64 %.sroa.07.0.i, ptr %0, align 8 %.sroa.01.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.01.sroa.4.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.i, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.01.sroa.4.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i, i64 16, i1 false) %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 store ptr %.0.i.i.i, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 32 diff --git a/bench/syn/optimized/htkku13lyansd5u.ll b/bench/syn/optimized/htkku13lyansd5u.ll index f0a55e4a2e0..665e755df26 100644 --- a/bench/syn/optimized/htkku13lyansd5u.ll +++ b/bench/syn/optimized/htkku13lyansd5u.ll @@ -4425,7 +4425,7 @@ define hidden void @_ZN3syn3lit7parsing18parse_negative_lit17h927962d7cef998b1E( %13 = alloca { { i64, i64 }, { i64, i64 }, { ptr, ptr }, i32, i32, i8, [7 x i8] }, align 8 %14 = alloca { { { i64, ptr }, i64 } }, align 8 %.sroa.01.i.i = alloca { { i64, ptr }, i64 }, align 8 - %.sroa.59.i = alloca [2 x i64], align 8 + %.sroa.0.i.i = alloca { i32, i32, i32, { i8, i8 }, [2 x i8] }, align 8 %15 = alloca { { { i64, [2 x i64] }, { {} } }, { ptr, i64 }, { ptr, i64 } }, align 8 %16 = alloca { i64, [2 x i64] }, align 8 %17 = alloca { { i64, [2 x i64] }, { {} } }, align 8 @@ -4439,7 +4439,7 @@ define hidden void @_ZN3syn3lit7parsing18parse_negative_lit17h927962d7cef998b1E( %.sroa.5 = alloca [2 x i64], align 8 %25 = alloca { { i64, [2 x i64] }, { {} } }, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %.sroa.5) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %.sroa.59.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %.sroa.0.i.i) %26 = load i32, ptr %2, align 8, !range !84, !noalias !880, !noundef !4 %27 = icmp eq i32 %26, 0 br i1 %27, label %.lr.ph.i.i, label %_ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624.exit.i @@ -4475,7 +4475,7 @@ _ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624. br i1 %36, label %37, label %_ZN3syn6buffer6Cursor7literal17h56201320c761e7bfE.exit.thread _ZN3syn6buffer6Cursor7literal17h56201320c761e7bfE.exit.thread: ; preds = %_ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624.exit.i - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.59.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.0.i.i) br label %56 37: ; preds = %_ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624.exit.i @@ -4487,7 +4487,7 @@ _ZN3syn6buffer6Cursor7literal17h56201320c761e7bfE.exit.thread: ; preds = %_ZN3sy 41: ; preds = %37 %42 = getelementptr inbounds i8, ptr %.sroa.03.1.i, i64 16 - call void @"_ZN87_$LT$proc_macro..bridge..Literal$LT$Span$C$Symbol$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h4ce0ee6be613852fE.llvm.1271834235494842624"(ptr noalias nocapture noundef nonnull sret({ i32, i32, i32, { i8, i8 }, [2 x i8] }) align 4 dereferenceable(16) %.sroa.59.i, ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %42), !noalias !880 + call void @"_ZN87_$LT$proc_macro..bridge..Literal$LT$Span$C$Symbol$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h4ce0ee6be613852fE.llvm.1271834235494842624"(ptr noalias nocapture noundef nonnull sret({ i32, i32, i32, { i8, i8 }, [2 x i8] }) align 4 dereferenceable(16) %.sroa.0.i.i, ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %42), !noalias !880 br label %"_ZN64_$LT$proc_macro2..imp..Literal$u20$as$u20$core..clone..Clone$GT$5clone17he46c9d8993ac83a1E.llvm.1271834235494842624.exit.i" 43: ; preds = %37 @@ -4495,7 +4495,7 @@ _ZN3syn6buffer6Cursor7literal17h56201320c761e7bfE.exit.thread: ; preds = %_ZN3sy call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hebbb1fc2363025c1E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 dereferenceable(24) %.sroa.01.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %38), !noalias !889 %.sroa.07.0.copyload8.i = load i64, ptr %.sroa.01.i.i, align 8, !noalias !892 %.sroa.59.0..sroa.01.i.sroa_idx.i = getelementptr inbounds i8, ptr %.sroa.01.i.i, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.0..sroa.01.i.sroa_idx.i, i64 16, i1 false), !noalias !880 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.0..sroa.01.i.sroa_idx.i, i64 16, i1 false), !noalias !880 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.01.i.i), !noalias !891 br label %"_ZN64_$LT$proc_macro2..imp..Literal$u20$as$u20$core..clone..Clone$GT$5clone17he46c9d8993ac83a1E.llvm.1271834235494842624.exit.i" @@ -4513,8 +4513,8 @@ _ZN3syn6buffer6Cursor7literal17h56201320c761e7bfE.exit.thread: ; preds = %_ZN3sy br i1 %or.cond.i.i.i, label %_ZN3syn6buffer6Cursor7literal17h56201320c761e7bfE.exit, label %44 _ZN3syn6buffer6Cursor7literal17h56201320c761e7bfE.exit: ; preds = %44 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.5, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.i, i64 16, i1 false) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.59.i) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.5, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i, i64 16, i1 false) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.0.i.i) %48 = icmp eq i64 %.sroa.07.0.i, -9223372036854775807 br i1 %48, label %56, label %49 @@ -7569,11 +7569,11 @@ define { ptr, i64 } @"_ZN56_$LT$proc_macro2..Punct$u20$as$u20$syn..token..Token$ define noundef zeroext i1 @"_ZN58_$LT$proc_macro2..Literal$u20$as$u20$syn..token..Token$GT$4peek17h5eb2cbc4ecc65bf4E"(ptr noundef %0, ptr noundef %1) unnamed_addr #3 personality ptr @rust_eh_personality { %3 = alloca { [1 x i64], i64, [1 x i64] }, align 8 %.sroa.01.i.i = alloca { { i64, ptr }, i64 }, align 8 - %.sroa.59.i = alloca [2 x i64], align 8 + %.sroa.0.i.i = alloca { i32, i32, i32, { i8, i8 }, [2 x i8] }, align 8 %4 = alloca { i64, [4 x i64] }, align 8 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) tail call void @llvm.experimental.noalias.scope.decl(metadata !1253) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %.sroa.59.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %.sroa.0.i.i) %5 = load i32, ptr %0, align 8, !range !84, !noalias !1253, !noundef !4 %6 = icmp eq i32 %5, 0 br i1 %6, label %.lr.ph.i.i, label %_ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624.exit.i @@ -7617,7 +7617,7 @@ _ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624. 20: ; preds = %16 %21 = getelementptr inbounds i8, ptr %.sroa.03.1.i, i64 16 - call void @"_ZN87_$LT$proc_macro..bridge..Literal$LT$Span$C$Symbol$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h4ce0ee6be613852fE.llvm.1271834235494842624"(ptr noalias nocapture noundef nonnull sret({ i32, i32, i32, { i8, i8 }, [2 x i8] }) align 4 dereferenceable(16) %.sroa.59.i, ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %21), !noalias !1253 + call void @"_ZN87_$LT$proc_macro..bridge..Literal$LT$Span$C$Symbol$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h4ce0ee6be613852fE.llvm.1271834235494842624"(ptr noalias nocapture noundef nonnull sret({ i32, i32, i32, { i8, i8 }, [2 x i8] }) align 4 dereferenceable(16) %.sroa.0.i.i, ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %21), !noalias !1253 br label %"_ZN64_$LT$proc_macro2..imp..Literal$u20$as$u20$core..clone..Clone$GT$5clone17he46c9d8993ac83a1E.llvm.1271834235494842624.exit.i" 22: ; preds = %16 @@ -7625,7 +7625,7 @@ _ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624. call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hebbb1fc2363025c1E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 dereferenceable(24) %.sroa.01.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %17), !noalias !1262 %.sroa.07.0.copyload8.i = load i64, ptr %.sroa.01.i.i, align 8, !noalias !1265 %.sroa.59.0..sroa.01.i.sroa_idx.i = getelementptr inbounds i8, ptr %.sroa.01.i.i, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.0..sroa.01.i.sroa_idx.i, i64 16, i1 false), !noalias !1253 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.0..sroa.01.i.sroa_idx.i, i64 16, i1 false), !noalias !1253 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.01.i.i), !noalias !1264 br label %"_ZN64_$LT$proc_macro2..imp..Literal$u20$as$u20$core..clone..Clone$GT$5clone17he46c9d8993ac83a1E.llvm.1271834235494842624.exit.i" @@ -7643,18 +7643,18 @@ _ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624. br i1 %or.cond.i.i.i, label %_ZN3syn6buffer6Cursor7literal17h56201320c761e7bfE.exit, label %23 _ZN3syn6buffer6Cursor7literal17h56201320c761e7bfE.exit.thread: ; preds = %_ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624.exit.i - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.59.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.0.i.i) br label %"_ZN4core3ptr99drop_in_place$LT$core..option..Option$LT$$LP$proc_macro2..Literal$C$syn..buffer..Cursor$RP$$GT$$GT$17h79435a7d4318f0beE.exit" _ZN3syn6buffer6Cursor7literal17h56201320c761e7bfE.exit: ; preds = %23 store i64 %.sroa.07.0.i, ptr %4, align 8, !alias.scope !1253 %.sroa.0.sroa.4.0..sroa_idx.i = getelementptr inbounds i8, ptr %4, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.sroa.4.0..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.59.i, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.sroa.4.0..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i, i64 16, i1 false) %.sroa.4.0..sroa_idx.i = getelementptr inbounds i8, ptr %4, i64 24 store ptr %.0.i.i.i, ptr %.sroa.4.0..sroa_idx.i, align 8, !alias.scope !1253 %.sroa.5.0..sroa_idx.i = getelementptr inbounds i8, ptr %4, i64 32 store ptr %1, ptr %.sroa.5.0..sroa_idx.i, align 8, !alias.scope !1253 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.59.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.0.i.i) %27 = icmp ne i64 %.sroa.07.0.i, -9223372036854775807 %switch.i = icmp slt i64 %.sroa.07.0.i, -9223372036854775806 br i1 %switch.i, label %"_ZN4core3ptr99drop_in_place$LT$core..option..Option$LT$$LP$proc_macro2..Literal$C$syn..buffer..Cursor$RP$$GT$$GT$17h79435a7d4318f0beE.exit", label %28 diff --git a/bench/tls-rs/optimized/526n7g8rwc65lc9b.ll b/bench/tls-rs/optimized/526n7g8rwc65lc9b.ll index fa09a7a7ac0..6ae3f42b5ce 100644 --- a/bench/tls-rs/optimized/526n7g8rwc65lc9b.ll +++ b/bench/tls-rs/optimized/526n7g8rwc65lc9b.ll @@ -6603,71 +6603,75 @@ define { ptr, ptr } @"_ZN90_$LT$rustls..crypto..aws_lc_rs..tls13..RingHkdf$u20$a ; Function Attrs: nonlazybind uwtable define { ptr, ptr } @"_ZN90_$LT$rustls..crypto..aws_lc_rs..tls13..RingHkdf$u20$as$u20$rustls..crypto..tls13..Hkdf$GT$16expander_for_okm17h55ae425a0e9e8540E"(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0, ptr noalias noundef readonly align 8 dereferenceable(72) %1) unnamed_addr #5 personality ptr @rust_eh_personality { - %3 = alloca { ptr, { ptr, { ptr, [11 x i64] } } }, align 8 - call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %3) - %4 = load ptr, ptr %0, align 8, !nonnull !4, !align !35, !noundef !4 + %3 = alloca { ptr, { ptr, [11 x i64] } }, align 8 + %4 = alloca { ptr, { ptr, { ptr, [11 x i64] } } }, align 8 + call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %4) + %5 = load ptr, ptr %0, align 8, !nonnull !4, !align !35, !noundef !4 + call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %3) tail call void @llvm.experimental.noalias.scope.decl(metadata !1343) - %5 = getelementptr inbounds i8, ptr %1, i64 64 - %6 = load i64, ptr %5, align 8, !alias.scope !1343, !noundef !4 - %7 = icmp ugt i64 %6, 64 - br i1 %7, label %8, label %"_ZN92_$LT$rustls..crypto..tls13..OkmBlock$u20$as$u20$core..convert..AsRef$LT$$u5b$u8$u5d$$GT$$GT$6as_ref17haed0c274cddec310E.exit" + %6 = getelementptr inbounds i8, ptr %1, i64 64 + %7 = load i64, ptr %6, align 8, !alias.scope !1343, !noundef !4 + %8 = icmp ugt i64 %7, 64 + br i1 %8, label %9, label %"_ZN92_$LT$rustls..crypto..tls13..OkmBlock$u20$as$u20$core..convert..AsRef$LT$$u5b$u8$u5d$$GT$$GT$6as_ref17haed0c274cddec310E.exit" -8: ; preds = %2 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %6, i64 noundef 64, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.15daca1494ab48175fa7b5da83d8f4c5.184.llvm.15737726635708573862) #37, !noalias !1346 +9: ; preds = %2 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %7, i64 noundef 64, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.15daca1494ab48175fa7b5da83d8f4c5.184.llvm.15737726635708573862) #37, !noalias !1346 unreachable "_ZN92_$LT$rustls..crypto..tls13..OkmBlock$u20$as$u20$core..convert..AsRef$LT$$u5b$u8$u5d$$GT$$GT$6as_ref17haed0c274cddec310E.exit": ; preds = %2 - %9 = getelementptr inbounds i8, ptr %3, i64 8 - call void @_ZN9aws_lc_rs4hkdf3Prk13new_less_safe17h075d8b18ce12d7caE(ptr noalias nocapture noundef nonnull sret({ ptr, { ptr, [11 x i64] } }) align 8 dereferenceable(104) %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %4, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %6) - store ptr %4, ptr %3, align 8 - %10 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !1349 - %11 = tail call noundef align 8 dereferenceable_or_null(112) ptr @__rust_alloc(i64 noundef 112, i64 noundef 8) #38, !noalias !1349 - %12 = icmp eq ptr %11, null - br i1 %12, label %13, label %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h649904c594895b68E.llvm.12014582817787848890.exit" - -13: ; preds = %"_ZN92_$LT$rustls..crypto..tls13..OkmBlock$u20$as$u20$core..convert..AsRef$LT$$u5b$u8$u5d$$GT$$GT$6as_ref17haed0c274cddec310E.exit" + call void @_ZN9aws_lc_rs4hkdf3Prk13new_less_safe17h075d8b18ce12d7caE(ptr noalias nocapture noundef nonnull sret({ ptr, { ptr, [11 x i64] } }) align 8 dereferenceable(104) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %5, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %7) + store ptr %5, ptr %4, align 8 + %10 = getelementptr inbounds i8, ptr %4, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(104) %10, ptr noundef nonnull align 8 dereferenceable(104) %3, i64 104, i1 false) + call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %3) + %11 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !1349 + %12 = tail call noundef align 8 dereferenceable_or_null(112) ptr @__rust_alloc(i64 noundef 112, i64 noundef 8) #38, !noalias !1349 + %13 = icmp eq ptr %12, null + br i1 %13, label %14, label %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h649904c594895b68E.llvm.12014582817787848890.exit" + +14: ; preds = %"_ZN92_$LT$rustls..crypto..tls13..OkmBlock$u20$as$u20$core..convert..AsRef$LT$$u5b$u8$u5d$$GT$$GT$6as_ref17haed0c274cddec310E.exit" invoke void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef 8, i64 noundef 112) #37 - to label %.noexc unwind label %14 + to label %.noexc unwind label %15 -.noexc: ; preds = %13 +.noexc: ; preds = %14 unreachable -14: ; preds = %13 - %15 = landingpad { ptr, i32 } +15: ; preds = %14 + %16 = landingpad { ptr, i32 } cleanup tail call void @llvm.experimental.noalias.scope.decl(metadata !1352) tail call void @llvm.experimental.noalias.scope.decl(metadata !1355) - %16 = getelementptr inbounds i8, ptr %3, i64 16 + %17 = getelementptr inbounds i8, ptr %4, i64 16 tail call void @llvm.experimental.noalias.scope.decl(metadata !1358) - %17 = load ptr, ptr %16, align 8, !alias.scope !1361, !noundef !4 - %18 = icmp eq ptr %17, null - br i1 %18, label %"_ZN4core3ptr71drop_in_place$LT$rustls..crypto..aws_lc_rs..tls13..RingHkdfExpander$GT$17h3aa260b27b96d634E.exit", label %19 + %18 = load ptr, ptr %17, align 8, !alias.scope !1361, !noundef !4 + %19 = icmp eq ptr %18, null + br i1 %19, label %"_ZN4core3ptr71drop_in_place$LT$rustls..crypto..aws_lc_rs..tls13..RingHkdfExpander$GT$17h3aa260b27b96d634E.exit", label %20 -19: ; preds = %14 - %20 = atomicrmw sub ptr %17, i64 1 release, align 8, !noalias !1362 - %21 = icmp eq i64 %20, 1 - br i1 %21, label %22, label %"_ZN4core3ptr71drop_in_place$LT$rustls..crypto..aws_lc_rs..tls13..RingHkdfExpander$GT$17h3aa260b27b96d634E.exit" +20: ; preds = %15 + %21 = atomicrmw sub ptr %18, i64 1 release, align 8, !noalias !1362 + %22 = icmp eq i64 %21, 1 + br i1 %22, label %23, label %"_ZN4core3ptr71drop_in_place$LT$rustls..crypto..aws_lc_rs..tls13..RingHkdfExpander$GT$17h3aa260b27b96d634E.exit" -22: ; preds = %19 +23: ; preds = %20 fence acquire - invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17he44ff60b095f43a9E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %16) - to label %"_ZN4core3ptr71drop_in_place$LT$rustls..crypto..aws_lc_rs..tls13..RingHkdfExpander$GT$17h3aa260b27b96d634E.exit" unwind label %23 + invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17he44ff60b095f43a9E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %17) + to label %"_ZN4core3ptr71drop_in_place$LT$rustls..crypto..aws_lc_rs..tls13..RingHkdfExpander$GT$17h3aa260b27b96d634E.exit" unwind label %24 -23: ; preds = %22 - %24 = landingpad { ptr, i32 } +24: ; preds = %23 + %25 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #40 unreachable -"_ZN4core3ptr71drop_in_place$LT$rustls..crypto..aws_lc_rs..tls13..RingHkdfExpander$GT$17h3aa260b27b96d634E.exit": ; preds = %19, %14, %22 - resume { ptr, i32 } %15 +"_ZN4core3ptr71drop_in_place$LT$rustls..crypto..aws_lc_rs..tls13..RingHkdfExpander$GT$17h3aa260b27b96d634E.exit": ; preds = %20, %15, %23 + resume { ptr, i32 } %16 "_ZN5alloc5boxed12Box$LT$T$GT$3new17h649904c594895b68E.llvm.12014582817787848890.exit": ; preds = %"_ZN92_$LT$rustls..crypto..tls13..OkmBlock$u20$as$u20$core..convert..AsRef$LT$$u5b$u8$u5d$$GT$$GT$6as_ref17haed0c274cddec310E.exit" - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %11, ptr noundef nonnull align 8 dereferenceable(112) %3, i64 112, i1 false) - call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %3) - %25 = insertvalue { ptr, ptr } poison, ptr %11, 0 - %26 = insertvalue { ptr, ptr } %25, ptr @anon.8a3f58b3f357eb979b8c01c644d44d42.127.llvm.12014582817787848890, 1 - ret { ptr, ptr } %26 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %12, ptr noundef nonnull align 8 dereferenceable(112) %4, i64 112, i1 false) + call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %4) + %26 = insertvalue { ptr, ptr } poison, ptr %12, 0 + %27 = insertvalue { ptr, ptr } %26, ptr @anon.8a3f58b3f357eb979b8c01c644d44d42.127.llvm.12014582817787848890, 1 + ret { ptr, ptr } %27 } ; Function Attrs: nonlazybind uwtable @@ -6677,6 +6681,7 @@ define void @"_ZN90_$LT$rustls..crypto..aws_lc_rs..tls13..RingHkdf$u20$as$u20$ru %8 = alloca i32, align 4 %9 = alloca [64 x i8], align 1 %.sroa.47.i = alloca [8 x i64], align 8 + %.sroa.4.i = alloca { ptr, ptr, { [27 x i64] }, { [27 x i64] }, { [27 x i64] }, i8, [7 x i8] }, align 8 %10 = alloca { { ptr, { { ptr, ptr, { [27 x i64] }, { [27 x i64] }, { [27 x i64] }, i8, [7 x i8] } } } }, align 8 %11 = alloca { { ptr, { { ptr, ptr, { [27 x i64] }, { [27 x i64] }, { [27 x i64] }, i8, [7 x i8] } } } }, align 8 %12 = alloca { ptr, [84 x i64] }, align 8 @@ -6717,14 +6722,17 @@ define void @"_ZN90_$LT$rustls..crypto..aws_lc_rs..tls13..RingHkdf$u20$as$u20$ru tail call void @llvm.experimental.noalias.scope.decl(metadata !1379) tail call void @llvm.experimental.noalias.scope.decl(metadata !1382) call void @llvm.lifetime.start.p0(i64 680, ptr nonnull %11), !noalias !1384 + call void @llvm.lifetime.start.p0(i64 672, ptr nonnull %.sroa.4.i), !noalias !1384 %24 = load ptr, ptr %13, align 8, !alias.scope !1382, !noalias !1386, !nonnull !4, !align !35, !noundef !4 %25 = getelementptr inbounds i8, ptr %13, i64 8 - %.sroa.4.0..sroa_idx.i = getelementptr inbounds i8, ptr %11, i64 8 - invoke void @"_ZN65_$LT$aws_lc_rs..hmac..LcHmacCtx$u20$as$u20$core..clone..Clone$GT$5clone17h2b1e24ecb1944d84E"(ptr noalias nocapture noundef nonnull sret({ { ptr, ptr, { [27 x i64] }, { [27 x i64] }, { [27 x i64] }, i8, [7 x i8] } }) align 8 dereferenceable(672) %.sroa.4.0..sroa_idx.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(672) %25) + invoke void @"_ZN65_$LT$aws_lc_rs..hmac..LcHmacCtx$u20$as$u20$core..clone..Clone$GT$5clone17h2b1e24ecb1944d84E"(ptr noalias nocapture noundef nonnull sret({ { ptr, ptr, { [27 x i64] }, { [27 x i64] }, { [27 x i64] }, i8, [7 x i8] } }) align 8 dereferenceable(672) %.sroa.4.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(672) %25) to label %.noexc unwind label %42 .noexc: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17hb996785ab5838db4E.exit" store ptr %24, ptr %11, align 8, !noalias !1384 + %.sroa.4.0..sroa_idx.i = getelementptr inbounds i8, ptr %11, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(672) %.sroa.4.0..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(672) %.sroa.4.i, i64 672, i1 false), !noalias !1384 + call void @llvm.lifetime.end.p0(i64 672, ptr nonnull %.sroa.4.i), !noalias !1384 %26 = invoke noundef i32 @"\01aws_lc_0_13_2_HMAC_Update"(ptr noundef nonnull %.sroa.4.0..sroa_idx.i, ptr noundef nonnull readonly %3, i64 noundef %4) to label %.noexc.i unwind label %39, !noalias !1379 @@ -8627,6 +8635,7 @@ define internal fastcc { ptr, ptr } @_ZN6rustls6client2hs27emit_client_hello_for %27 = alloca { [1 x i64], i64, [1 x i64] }, align 8 %28 = alloca { ptr, ptr }, align 8 %29 = alloca { i16, i16 }, align 2 + %.sroa.4.i = alloca [3 x i64], align 8 %30 = alloca { { i64, [3 x i64] }, { i8, i8 }, [6 x i8] }, align 8 %31 = alloca i16, align 2 %32 = alloca { ptr, ptr }, align 8 @@ -9125,14 +9134,17 @@ _ZN5alloc5alloc15exchange_malloc17hbe31f2048284b3faE.llvm.12014582817787848890.e %232 = getelementptr inbounds i8, ptr %7, i64 192 call void @llvm.experimental.noalias.scope.decl(metadata !1812) call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %30), !noalias !1815 - %.sroa.4.0..sroa_idx.i246 = getelementptr inbounds i8, ptr %30, i64 8 - invoke void @_ZN6rustls4msgs9handshake34trim_hostname_trailing_dot_for_sni17h7e4040a26687ea48E.llvm.15934541666227088301(ptr noalias nocapture noundef nonnull sret({ { i64, [2 x i64] } }) align 8 dereferenceable(24) %.sroa.4.0..sroa_idx.i246, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %232) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.4.i), !noalias !1815 + invoke void @_ZN6rustls4msgs9handshake34trim_hostname_trailing_dot_for_sni17h7e4040a26687ea48E.llvm.15934541666227088301(ptr noalias nocapture noundef nonnull sret({ { i64, [2 x i64] } }) align 8 dereferenceable(24) %.sroa.4.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %232) to label %.noexc247 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp .noexc247: ; preds = %231 %233 = getelementptr inbounds i8, ptr %30, i64 32 store i8 0, ptr %233, align 8, !noalias !1815 store i64 0, ptr %30, align 8, !noalias !1815 + %.sroa.4.0..sroa_idx.i246 = getelementptr inbounds i8, ptr %30, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.4.0..sroa_idx.i246, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.4.i, i64 24, i1 false), !noalias !1815 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.4.i), !noalias !1815 %234 = invoke { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.15934541666227088301(ptr noalias noundef nonnull readonly align 1 @anon.b829d69e4dfa1ad4f2781c144a746ff0.2.llvm.15934541666227088301, i64 noundef 8, i64 noundef 40, i1 noundef zeroext false) to label %.noexc.i unwind label %237, !noalias !1812 diff --git a/bench/tls-rs/optimized/59h61akxu6z29dlt.ll b/bench/tls-rs/optimized/59h61akxu6z29dlt.ll index 7057a7f7fd4..f697ee52a67 100644 --- a/bench/tls-rs/optimized/59h61akxu6z29dlt.ll +++ b/bench/tls-rs/optimized/59h61akxu6z29dlt.ll @@ -2763,44 +2763,48 @@ define hidden noundef ptr @"_ZN9once_cell4sync17OnceCell$LT$T$GT$3set17hfccae3fd ; Function Attrs: nonlazybind uwtable define { ptr, ptr } @"_ZN84_$LT$rustls..crypto..aws_lc_rs..hash..Hash$u20$as$u20$rustls..crypto..hash..Hash$GT$5start17h318c414f572c482aE"(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0) unnamed_addr #1 personality ptr @rust_eh_personality { - %2 = alloca { { ptr, { { ptr, ptr, ptr, ptr, ptr, i64 } }, i64, i8, [7 x i8] } }, align 8 + %2 = alloca { ptr, { { ptr, ptr, ptr, ptr, ptr, i64 } }, i64, i8, [7 x i8] }, align 8 + %3 = alloca { { ptr, { { ptr, ptr, ptr, ptr, ptr, i64 } }, i64, i8, [7 x i8] } }, align 8 + call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %3) call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %2) - %3 = load ptr, ptr %0, align 8, !nonnull !4, !align !5, !noundef !4 - call void @_ZN9aws_lc_rs6digest7Context3new17h4608fda91ba8dafaE(ptr noalias nocapture noundef nonnull sret({ ptr, { { ptr, ptr, ptr, ptr, ptr, i64 } }, i64, i8, [7 x i8] }) align 8 dereferenceable(72) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %3) - %4 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !408 - %5 = tail call noundef align 8 dereferenceable_or_null(72) ptr @__rust_alloc(i64 noundef 72, i64 noundef 8) #38, !noalias !408 - %6 = icmp eq ptr %5, null - br i1 %6, label %7, label %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h59467a499621924dE.exit" + %4 = load ptr, ptr %0, align 8, !nonnull !4, !align !5, !noundef !4 + call void @_ZN9aws_lc_rs6digest7Context3new17h4608fda91ba8dafaE(ptr noalias nocapture noundef nonnull sret({ ptr, { { ptr, ptr, ptr, ptr, ptr, i64 } }, i64, i8, [7 x i8] }) align 8 dereferenceable(72) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %4) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %3, ptr noundef nonnull align 8 dereferenceable(72) %2, i64 72, i1 false) + call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %2) + %5 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !408 + %6 = tail call noundef align 8 dereferenceable_or_null(72) ptr @__rust_alloc(i64 noundef 72, i64 noundef 8) #38, !noalias !408 + %7 = icmp eq ptr %6, null + br i1 %7, label %8, label %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h59467a499621924dE.exit" -7: ; preds = %1 +8: ; preds = %1 invoke void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef 8, i64 noundef 72) #37 - to label %.noexc unwind label %8 + to label %.noexc unwind label %9 -.noexc: ; preds = %7 +.noexc: ; preds = %8 unreachable -8: ; preds = %7 - %9 = landingpad { ptr, i32 } +9: ; preds = %8 + %10 = landingpad { ptr, i32 } cleanup - %10 = getelementptr inbounds i8, ptr %2, i64 8 - invoke void @"_ZN86_$LT$aws_lc_rs..digest..digest_ctx..DigestContext$u20$as$u20$core..ops..drop..Drop$GT$4drop17hedb7f522e6d0f7ffE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %10) - to label %"_ZN4core3ptr61drop_in_place$LT$rustls..crypto..aws_lc_rs..hash..Context$GT$17heb04b8ffb3a9b823E.exit" unwind label %11 + %11 = getelementptr inbounds i8, ptr %3, i64 8 + invoke void @"_ZN86_$LT$aws_lc_rs..digest..digest_ctx..DigestContext$u20$as$u20$core..ops..drop..Drop$GT$4drop17hedb7f522e6d0f7ffE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %11) + to label %"_ZN4core3ptr61drop_in_place$LT$rustls..crypto..aws_lc_rs..hash..Context$GT$17heb04b8ffb3a9b823E.exit" unwind label %12 -11: ; preds = %8 - %12 = landingpad { ptr, i32 } +12: ; preds = %9 + %13 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #40 unreachable -"_ZN4core3ptr61drop_in_place$LT$rustls..crypto..aws_lc_rs..hash..Context$GT$17heb04b8ffb3a9b823E.exit": ; preds = %8 - resume { ptr, i32 } %9 +"_ZN4core3ptr61drop_in_place$LT$rustls..crypto..aws_lc_rs..hash..Context$GT$17heb04b8ffb3a9b823E.exit": ; preds = %9 + resume { ptr, i32 } %10 "_ZN5alloc5boxed12Box$LT$T$GT$3new17h59467a499621924dE.exit": ; preds = %1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %5, ptr noundef nonnull align 8 dereferenceable(72) %2, i64 72, i1 false) - call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %2) - %13 = insertvalue { ptr, ptr } poison, ptr %5, 0 - %14 = insertvalue { ptr, ptr } %13, ptr @anon.c12b500a9dbc3a7785a3e66a12bc69a1.27, 1 - ret { ptr, ptr } %14 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %6, ptr noundef nonnull align 8 dereferenceable(72) %3, i64 72, i1 false) + call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %3) + %14 = insertvalue { ptr, ptr } poison, ptr %6, 0 + %15 = insertvalue { ptr, ptr } %14, ptr @anon.c12b500a9dbc3a7785a3e66a12bc69a1.27, 1 + ret { ptr, ptr } %15 } ; Function Attrs: nonlazybind uwtable @@ -2976,85 +2980,89 @@ define void @"_ZN90_$LT$rustls..crypto..aws_lc_rs..hash..Context$u20$as$u20$rust %4 = alloca { [64 x i8], i64 }, align 8 %5 = alloca i32, align 4 %6 = alloca [64 x i8], align 1 - %7 = alloca { ptr, { { ptr, ptr, ptr, ptr, ptr, i64 } }, i64, i8, [7 x i8] }, align 8 + %7 = alloca { { ptr, ptr, ptr, ptr, ptr, i64 } }, align 8 + %8 = alloca { ptr, { { ptr, ptr, ptr, ptr, ptr, i64 } }, i64, i8, [7 x i8] }, align 8 %.sroa.3 = alloca { [64 x i8], i64 }, align 8 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %.sroa.3) - call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %7) - %8 = load ptr, ptr %1, align 8, !nonnull !4, !align !5, !noundef !4 - %9 = getelementptr inbounds i8, ptr %1, i64 8 - %10 = getelementptr inbounds i8, ptr %7, i64 8 - call void @"_ZN83_$LT$aws_lc_rs..digest..digest_ctx..DigestContext$u20$as$u20$core..clone..Clone$GT$5clone17hb91d654456bef6ecE"(ptr noalias nocapture noundef nonnull sret({ { ptr, ptr, ptr, ptr, ptr, i64 } }) align 8 dereferenceable(48) %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %9) + call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %8) + %9 = load ptr, ptr %1, align 8, !nonnull !4, !align !5, !noundef !4 + call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7) + %10 = getelementptr inbounds i8, ptr %1, i64 8 + call void @"_ZN83_$LT$aws_lc_rs..digest..digest_ctx..DigestContext$u20$as$u20$core..clone..Clone$GT$5clone17hb91d654456bef6ecE"(ptr noalias nocapture noundef nonnull sret({ { ptr, ptr, ptr, ptr, ptr, i64 } }) align 8 dereferenceable(48) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %10) %11 = getelementptr inbounds i8, ptr %1, i64 56 %12 = load i64, ptr %11, align 8, !noundef !4 %13 = getelementptr inbounds i8, ptr %1, i64 64 %14 = load i8, ptr %13, align 8, !range !334, !noundef !4 - store ptr %8, ptr %7, align 8 - %15 = getelementptr inbounds i8, ptr %7, i64 56 - store i64 %12, ptr %15, align 8 - %16 = getelementptr inbounds i8, ptr %7, i64 64 - store i8 %14, ptr %16, align 8 + store ptr %9, ptr %8, align 8 + %15 = getelementptr inbounds i8, ptr %8, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %15, ptr noundef nonnull align 8 dereferenceable(48) %7, i64 48, i1 false) + %16 = getelementptr inbounds i8, ptr %8, i64 56 + store i64 %12, ptr %16, align 8 + %17 = getelementptr inbounds i8, ptr %8, i64 64 + store i8 %14, ptr %17, align 8 + call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) tail call void @llvm.experimental.noalias.scope.decl(metadata !442) call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6), !noalias !445 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %6, i8 0, i64 64, i1 false), !noalias !445 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5), !noalias !445 - %17 = invoke noundef i32 @"\01aws_lc_0_13_2_EVP_DigestFinal"(ptr noundef nonnull %10, ptr noundef nonnull %6, ptr noundef nonnull %5) - to label %20 unwind label %18, !noalias !447 + %18 = invoke noundef i32 @"\01aws_lc_0_13_2_EVP_DigestFinal"(ptr noundef nonnull %15, ptr noundef nonnull %6, ptr noundef nonnull %5) + to label %21 unwind label %19, !noalias !447 -18: ; preds = %2 - %19 = landingpad { ptr, i32 } +19: ; preds = %2 + %20 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN86_$LT$aws_lc_rs..digest..digest_ctx..DigestContext$u20$as$u20$core..ops..drop..Drop$GT$4drop17hedb7f522e6d0f7ffE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %10) - to label %"_ZN4core3ptr47drop_in_place$LT$aws_lc_rs..digest..Context$GT$17h932482f0ad60aa0fE.exit.i" unwind label %22, !noalias !447 + invoke void @"_ZN86_$LT$aws_lc_rs..digest..digest_ctx..DigestContext$u20$as$u20$core..ops..drop..Drop$GT$4drop17hedb7f522e6d0f7ffE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %15) + to label %"_ZN4core3ptr47drop_in_place$LT$aws_lc_rs..digest..Context$GT$17h932482f0ad60aa0fE.exit.i" unwind label %23, !noalias !447 -20: ; preds = %2 - %21 = icmp eq i32 %17, 1 - br i1 %21, label %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17heec6207efeea3fa8E.exit", label %24 +21: ; preds = %2 + %22 = icmp eq i32 %18, 1 + br i1 %22, label %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17heec6207efeea3fa8E.exit", label %25 -22: ; preds = %18 - %23 = landingpad { ptr, i32 } +23: ; preds = %19 + %24 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #40, !noalias !447 unreachable -"_ZN4core3ptr47drop_in_place$LT$aws_lc_rs..digest..Context$GT$17h932482f0ad60aa0fE.exit.i": ; preds = %18 - resume { ptr, i32 } %19 +"_ZN4core3ptr47drop_in_place$LT$aws_lc_rs..digest..Context$GT$17h932482f0ad60aa0fE.exit.i": ; preds = %19 + resume { ptr, i32 } %20 -24: ; preds = %20 +25: ; preds = %21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5), !noalias !445 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6), !noalias !445 - call void @"_ZN86_$LT$aws_lc_rs..digest..digest_ctx..DigestContext$u20$as$u20$core..ops..drop..Drop$GT$4drop17hedb7f522e6d0f7ffE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %10), !noalias !447 + call void @"_ZN86_$LT$aws_lc_rs..digest..digest_ctx..DigestContext$u20$as$u20$core..ops..drop..Drop$GT$4drop17hedb7f522e6d0f7ffE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %15), !noalias !447 call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %3) call void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.c12b500a9dbc3a7785a3e66a12bc69a1.31, i64 noundef 22, ptr noundef nonnull align 1 %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.c12b500a9dbc3a7785a3e66a12bc69a1.13, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.c12b500a9dbc3a7785a3e66a12bc69a1.32) #37, !noalias !448 unreachable -"_ZN4core6result19Result$LT$T$C$E$GT$6expect17heec6207efeea3fa8E.exit": ; preds = %20 - %25 = load ptr, ptr %7, align 8, !alias.scope !442, !noalias !447, !nonnull !4, !align !5, !noundef !4 - %26 = getelementptr inbounds i8, ptr %25, i64 8 - %27 = load i64, ptr %26, align 8, !noalias !447, !noundef !4 +"_ZN4core6result19Result$LT$T$C$E$GT$6expect17heec6207efeea3fa8E.exit": ; preds = %21 + %26 = load ptr, ptr %8, align 8, !alias.scope !442, !noalias !447, !nonnull !4, !align !5, !noundef !4 + %27 = getelementptr inbounds i8, ptr %26, i64 8 + %28 = load i64, ptr %27, align 8, !noalias !447, !noundef !4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.3, ptr noundef nonnull align 1 dereferenceable(64) %6, i64 64, i1 false) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5), !noalias !445 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6), !noalias !445 - call void @"_ZN86_$LT$aws_lc_rs..digest..digest_ctx..DigestContext$u20$as$u20$core..ops..drop..Drop$GT$4drop17hedb7f522e6d0f7ffE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %10), !noalias !447 + call void @"_ZN86_$LT$aws_lc_rs..digest..digest_ctx..DigestContext$u20$as$u20$core..ops..drop..Drop$GT$4drop17hedb7f522e6d0f7ffE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %15), !noalias !447 call void @llvm.experimental.noalias.scope.decl(metadata !452) call void @llvm.experimental.noalias.scope.decl(metadata !453) call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %3) %.sroa.3.64.sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %.sroa.3, i64 64 - store i64 %27, ptr %.sroa.3.64.sroa_idx.sroa_idx, align 8, !alias.scope !448 + store i64 %28, ptr %.sroa.3.64.sroa_idx.sroa_idx, align 8, !alias.scope !448 call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %3) - call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %7) - %28 = icmp ugt i64 %27, 64 - br i1 %28, label %29, label %_ZN6rustls6crypto9aws_lc_rs4hash7convert17hcfc6622631f02706E.exit + call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %8) + %29 = icmp ugt i64 %28, 64 + br i1 %29, label %30, label %_ZN6rustls6crypto9aws_lc_rs4hash7convert17hcfc6622631f02706E.exit -29: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17heec6207efeea3fa8E.exit" - call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %27, i64 noundef 64, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.c12b500a9dbc3a7785a3e66a12bc69a1.33) #37, !noalias !454 +30: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17heec6207efeea3fa8E.exit" + call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %28, i64 noundef 64, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.c12b500a9dbc3a7785a3e66a12bc69a1.33) #37, !noalias !454 unreachable _ZN6rustls6crypto9aws_lc_rs4hash7convert17hcfc6622631f02706E.exit: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17heec6207efeea3fa8E.exit" call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %4) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %4, i8 0, i64 64, i1 false), !noalias !460 %.64..64..64..64..64..64..sroa_idx = getelementptr inbounds i8, ptr %4, i64 64 - store i64 %27, ptr %.64..64..64..64..64..64..sroa_idx, align 8, !noalias !460 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %4, ptr nonnull readonly align 8 %.sroa.3, i64 %27, i1 false), !alias.scope !464, !noalias !468 + store i64 %28, ptr %.64..64..64..64..64..64..sroa_idx, align 8, !noalias !460 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %4, ptr nonnull readonly align 8 %.sroa.3, i64 %28, i1 false), !alias.scope !464, !noalias !468 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(72) %4, i64 72, i1 false), !noalias !470 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %.sroa.3) @@ -3063,21 +3071,25 @@ _ZN6rustls6crypto9aws_lc_rs4hash7convert17hcfc6622631f02706E.exit: ; preds = %"_ ; Function Attrs: nonlazybind uwtable define { ptr, ptr } @"_ZN90_$LT$rustls..crypto..aws_lc_rs..hash..Context$u20$as$u20$rustls..crypto..hash..Context$GT$4fork17hbce8eb8d6552c401E"(ptr noalias noundef readonly align 8 dereferenceable(72) %0) unnamed_addr #1 personality ptr @rust_eh_personality { + %.sroa.4 = alloca { ptr, ptr, ptr, ptr, ptr, i64 }, align 8 %2 = alloca { { ptr, { { ptr, ptr, ptr, ptr, ptr, i64 } }, i64, i8, [7 x i8] } }, align 8 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %2) + call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %.sroa.4) %3 = load ptr, ptr %0, align 8, !nonnull !4, !align !5, !noundef !4 %4 = getelementptr inbounds i8, ptr %0, i64 8 - %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %2, i64 8 - call void @"_ZN83_$LT$aws_lc_rs..digest..digest_ctx..DigestContext$u20$as$u20$core..clone..Clone$GT$5clone17hb91d654456bef6ecE"(ptr noalias nocapture noundef nonnull sret({ { ptr, ptr, ptr, ptr, ptr, i64 } }) align 8 dereferenceable(48) %.sroa.4.0..sroa_idx, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %4) + call void @"_ZN83_$LT$aws_lc_rs..digest..digest_ctx..DigestContext$u20$as$u20$core..clone..Clone$GT$5clone17hb91d654456bef6ecE"(ptr noalias nocapture noundef nonnull sret({ { ptr, ptr, ptr, ptr, ptr, i64 } }) align 8 dereferenceable(48) %.sroa.4, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %4) %5 = getelementptr inbounds i8, ptr %0, i64 56 %6 = load i64, ptr %5, align 8, !noundef !4 %7 = getelementptr inbounds i8, ptr %0, i64 64 %8 = load i8, ptr %7, align 8, !range !334, !noundef !4 store ptr %3, ptr %2, align 8 + %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %2, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %.sroa.4.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.4, i64 48, i1 false) %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %2, i64 56 store i64 %6, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %2, i64 64 store i8 %8, ptr %.sroa.6.0..sroa_idx, align 8 + call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %.sroa.4) %9 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !471 %10 = tail call noundef align 8 dereferenceable_or_null(72) ptr @__rust_alloc(i64 noundef 72, i64 noundef 8) #38, !noalias !471 %11 = icmp eq ptr %10, null diff --git a/bench/tokio-rs/optimized/3nmgzybx6iv04snk.ll b/bench/tokio-rs/optimized/3nmgzybx6iv04snk.ll index 6d33067be54..398cbb188bb 100644 --- a/bench/tokio-rs/optimized/3nmgzybx6iv04snk.ll +++ b/bench/tokio-rs/optimized/3nmgzybx6iv04snk.ll @@ -5272,111 +5272,115 @@ define void @_ZN5tokio2fs8read_dir7ReadDir15poll_next_entry17h0d537625bf908f9fE( ; Function Attrs: nonlazybind uwtable define noundef zeroext i1 @_ZN5tokio2fs8read_dir7ReadDir10next_chunk17h58ea15eb92a63695E(ptr noalias noundef align 8 dereferenceable(32) %0, ptr noalias noundef align 8 dereferenceable(16) %1) unnamed_addr #0 personality ptr @rust_eh_personality { %3 = alloca { { { ptr, { ptr, i64 }, { i64, i8 } } } }, align 8 + %4 = alloca { { i32, i32 }, ptr }, align 8 %.sroa.7 = alloca [3 x i64], align 8 - %4 = alloca { i32, [3 x i32] }, align 8 - %5 = alloca { i64, [5 x i64] }, align 8 - %6 = getelementptr inbounds i8, ptr %5, i64 8 - %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %5, i64 16 - %.sroa.4.sroa.4.0..sroa.4.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %5, i64 24 + %5 = alloca { i32, [3 x i32] }, align 8 + %6 = alloca { i64, [5 x i64] }, align 8 + %7 = getelementptr inbounds i8, ptr %6, i64 8 + %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %6, i64 16 + %.sroa.4.sroa.4.0..sroa.4.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %6, i64 24 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %3, i64 8 %.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %3, i64 16 - %7 = getelementptr inbounds i8, ptr %4, i64 8 - %8 = getelementptr inbounds i8, ptr %0, i64 24 - %9 = getelementptr inbounds i8, ptr %0, i64 16 - %10 = getelementptr inbounds i8, ptr %0, i64 8 - br label %11 + %8 = getelementptr inbounds i8, ptr %5, i64 8 + %9 = getelementptr inbounds i8, ptr %0, i64 24 + %10 = getelementptr inbounds i8, ptr %0, i64 16 + %11 = getelementptr inbounds i8, ptr %0, i64 8 + br label %12 -11: ; preds = %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9push_back17h4b0c7364f43c1cd0E.exit", %2 - %.sroa.0.013 = phi i64 [ 0, %2 ], [ %12, %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9push_back17h4b0c7364f43c1cd0E.exit" ] - %12 = add nuw nsw i64 %.sroa.0.013, 1 - call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5) - call void @"_ZN75_$LT$std..fs..ReadDir$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9f241b2ed3fe0106E"(ptr noalias nocapture noundef nonnull sret({ i64, [5 x i64] }) align 8 dereferenceable(48) %5, ptr noalias noundef nonnull align 8 dereferenceable(16) %1) - %13 = load i64, ptr %5, align 8, !range !208, !noundef !79 - %trunc = trunc nuw i64 %13 to i1 - br i1 %trunc, label %15, label %14 +12: ; preds = %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9push_back17h4b0c7364f43c1cd0E.exit", %2 + %.sroa.0.013 = phi i64 [ 0, %2 ], [ %13, %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9push_back17h4b0c7364f43c1cd0E.exit" ] + %13 = add nuw nsw i64 %.sroa.0.013, 1 + call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6) + call void @"_ZN75_$LT$std..fs..ReadDir$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9f241b2ed3fe0106E"(ptr noalias nocapture noundef nonnull sret({ i64, [5 x i64] }) align 8 dereferenceable(48) %6, ptr noalias noundef nonnull align 8 dereferenceable(16) %1) + %14 = load i64, ptr %6, align 8, !range !208, !noundef !79 + %trunc = trunc nuw i64 %14 to i1 + br i1 %trunc, label %16, label %15 -14: ; preds = %11 - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %5) +15: ; preds = %12 + call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) br label %.thread -15: ; preds = %11 - %.sroa.08.0.copyload = load ptr, ptr %6, align 8 +16: ; preds = %12 + %.sroa.08.0.copyload = load ptr, ptr %7, align 8 %.sroa.4.sroa.0.0.copyload = load ptr, ptr %.sroa.4.0..sroa_idx, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.7, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.4.sroa.4.0..sroa.4.0..sroa_idx.sroa_idx, i64 24, i1 false) - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %5) + call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) %.not = icmp eq ptr %.sroa.08.0.copyload, null - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) tail call void @llvm.experimental.noalias.scope.decl(metadata !1107) - br i1 %.not, label %17, label %16 + br i1 %.not, label %18, label %17 -16: ; preds = %15 +17: ; preds = %16 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4), !noalias !1110 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %3), !noalias !1110 store ptr %.sroa.08.0.copyload, ptr %3, align 8, !noalias !1107 store ptr %.sroa.4.sroa.0.0.copyload, ptr %.sroa.5.0..sroa_idx, align 8, !noalias !1107 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.7.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.7, i64 24, i1 false), !noalias !1107 - call void @"_ZN5tokio2fs8read_dir7ReadDir10next_chunk28_$u7b$$u7b$closure$u7d$$u7d$17h59d84866fc28f04cE.llvm.6895680396811105915"(ptr noalias nocapture noundef nonnull sret({ { i32, i32 }, ptr }) align 8 dereferenceable(16) %4, ptr noalias nocapture noundef nonnull align 8 dereferenceable(40) %3), !noalias !1112 + call void @"_ZN5tokio2fs8read_dir7ReadDir10next_chunk28_$u7b$$u7b$closure$u7d$$u7d$17h59d84866fc28f04cE.llvm.6895680396811105915"(ptr noalias nocapture noundef nonnull sret({ { i32, i32 }, ptr }) align 8 dereferenceable(16) %4, ptr noalias nocapture noundef nonnull align 8 dereferenceable(40) %3), !noalias !1110 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3), !noalias !1110 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %4, i64 16, i1 false), !noalias !1112 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4), !noalias !1110 br label %"_ZN4core6result19Result$LT$T$C$E$GT$3map17h7c84fbed916c9556E.llvm.6895680396811105915.exit" -17: ; preds = %15 - %18 = icmp ne ptr %.sroa.4.sroa.0.0.copyload, null - tail call void @llvm.assume(i1 %18) - store ptr %.sroa.4.sroa.0.0.copyload, ptr %7, align 8, !alias.scope !1107, !noalias !1112 - store i32 2, ptr %4, align 8, !alias.scope !1107, !noalias !1112 +18: ; preds = %16 + %19 = icmp ne ptr %.sroa.4.sroa.0.0.copyload, null + tail call void @llvm.assume(i1 %19) + store ptr %.sroa.4.sroa.0.0.copyload, ptr %8, align 8, !alias.scope !1107, !noalias !1112 + store i32 2, ptr %5, align 8, !alias.scope !1107, !noalias !1112 br label %"_ZN4core6result19Result$LT$T$C$E$GT$3map17h7c84fbed916c9556E.llvm.6895680396811105915.exit" -"_ZN4core6result19Result$LT$T$C$E$GT$3map17h7c84fbed916c9556E.llvm.6895680396811105915.exit": ; preds = %16, %17 +"_ZN4core6result19Result$LT$T$C$E$GT$3map17h7c84fbed916c9556E.llvm.6895680396811105915.exit": ; preds = %17, %18 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.7) - %19 = load i64, ptr %8, align 8, !alias.scope !1113, !noalias !1116, !noundef !79 - %20 = load i64, ptr %0, align 8, !alias.scope !1113, !noalias !1116, !noundef !79 - %21 = icmp eq i64 %19, %20 - br i1 %21, label %22, label %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9push_back17h4b0c7364f43c1cd0E.exit" + %20 = load i64, ptr %9, align 8, !alias.scope !1113, !noalias !1116, !noundef !79 + %21 = load i64, ptr %0, align 8, !alias.scope !1113, !noalias !1116, !noundef !79 + %22 = icmp eq i64 %20, %21 + br i1 %22, label %23, label %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9push_back17h4b0c7364f43c1cd0E.exit" -22: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$3map17h7c84fbed916c9556E.llvm.6895680396811105915.exit" +23: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$3map17h7c84fbed916c9556E.llvm.6895680396811105915.exit" invoke void @"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4grow17h15352c0435d43fe7E.llvm.11424388141523703806"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0) - to label %._crit_edge.i unwind label %23, !noalias !1116 + to label %._crit_edge.i unwind label %24, !noalias !1116 -._crit_edge.i: ; preds = %22 - %.pre.i = load i64, ptr %8, align 8, !alias.scope !1113, !noalias !1116 +._crit_edge.i: ; preds = %23 + %.pre.i = load i64, ptr %9, align 8, !alias.scope !1113, !noalias !1116 %.pre1.i = load i64, ptr %0, align 8, !alias.scope !1118, !noalias !1116 br label %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9push_back17h4b0c7364f43c1cd0E.exit" -23: ; preds = %22 - %24 = landingpad { ptr, i32 } +24: ; preds = %23 + %25 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr102drop_in_place$LT$core..result..Result$LT$tokio..fs..read_dir..DirEntry$C$std..io..error..Error$GT$$GT$17h4e07ec67fb161938E.llvm.11424388141523703806"(ptr noalias noundef nonnull align 8 dereferenceable(16) %4) #37 - to label %25 unwind label %26 + invoke void @"_ZN4core3ptr102drop_in_place$LT$core..result..Result$LT$tokio..fs..read_dir..DirEntry$C$std..io..error..Error$GT$$GT$17h4e07ec67fb161938E.llvm.11424388141523703806"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5) #37 + to label %26 unwind label %27 -25: ; preds = %23 - resume { ptr, i32 } %24 +26: ; preds = %24 + resume { ptr, i32 } %25 -26: ; preds = %23 - %27 = landingpad { ptr, i32 } +27: ; preds = %24 + %28 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #38 unreachable "_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9push_back17h4b0c7364f43c1cd0E.exit": ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$3map17h7c84fbed916c9556E.llvm.6895680396811105915.exit", %._crit_edge.i - %28 = phi i64 [ %.pre1.i, %._crit_edge.i ], [ %20, %"_ZN4core6result19Result$LT$T$C$E$GT$3map17h7c84fbed916c9556E.llvm.6895680396811105915.exit" ] - %29 = phi i64 [ %.pre.i, %._crit_edge.i ], [ %19, %"_ZN4core6result19Result$LT$T$C$E$GT$3map17h7c84fbed916c9556E.llvm.6895680396811105915.exit" ] - %30 = load i64, ptr %9, align 8, !alias.scope !1118, !noalias !1116, !noundef !79 - %31 = add i64 %30, %29 - %.not.i.i = icmp ult i64 %31, %28 - %32 = select i1 %.not.i.i, i64 0, i64 %28 - %.0.i.i = sub nuw i64 %31, %32 - %33 = load ptr, ptr %10, align 8, !alias.scope !1113, !noalias !1116, !nonnull !79, !noundef !79 - %34 = getelementptr inbounds { i32, [3 x i32] }, ptr %33, i64 %.0.i.i - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(16) %4, i64 16, i1 false) - %35 = load i64, ptr %8, align 8, !alias.scope !1113, !noalias !1116, !noundef !79 - %36 = add i64 %35, 1 - store i64 %36, ptr %8, align 8, !alias.scope !1113, !noalias !1116 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) - %exitcond.not = icmp eq i64 %12, 32 + %29 = phi i64 [ %.pre1.i, %._crit_edge.i ], [ %21, %"_ZN4core6result19Result$LT$T$C$E$GT$3map17h7c84fbed916c9556E.llvm.6895680396811105915.exit" ] + %30 = phi i64 [ %.pre.i, %._crit_edge.i ], [ %20, %"_ZN4core6result19Result$LT$T$C$E$GT$3map17h7c84fbed916c9556E.llvm.6895680396811105915.exit" ] + %31 = load i64, ptr %10, align 8, !alias.scope !1118, !noalias !1116, !noundef !79 + %32 = add i64 %31, %30 + %.not.i.i = icmp ult i64 %32, %29 + %33 = select i1 %.not.i.i, i64 0, i64 %29 + %.0.i.i = sub nuw i64 %32, %33 + %34 = load ptr, ptr %11, align 8, !alias.scope !1113, !noalias !1116, !nonnull !79, !noundef !79 + %35 = getelementptr inbounds { i32, [3 x i32] }, ptr %34, i64 %.0.i.i + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 8 dereferenceable(16) %5, i64 16, i1 false) + %36 = load i64, ptr %9, align 8, !alias.scope !1113, !noalias !1116, !noundef !79 + %37 = add i64 %36, 1 + store i64 %37, ptr %9, align 8, !alias.scope !1113, !noalias !1116 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) + %exitcond.not = icmp eq i64 %13, 32 %or.cond = select i1 %.not, i1 true, i1 %exitcond.not - br i1 %or.cond, label %.thread, label %11 + br i1 %or.cond, label %.thread, label %12 -.thread: ; preds = %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9push_back17h4b0c7364f43c1cd0E.exit", %14 +.thread: ; preds = %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9push_back17h4b0c7364f43c1cd0E.exit", %15 ret i1 %trunc } diff --git a/bench/tree-sitter-rs/optimized/3pra6a7meoswj3tu.ll b/bench/tree-sitter-rs/optimized/3pra6a7meoswj3tu.ll index 568ba13e4e5..6008f3d05f6 100644 --- a/bench/tree-sitter-rs/optimized/3pra6a7meoswj3tu.ll +++ b/bench/tree-sitter-rs/optimized/3pra6a7meoswj3tu.ll @@ -18922,6 +18922,7 @@ define noundef ptr @_ZN15tree_sitter_cli9highlight4html17h7047ec7caef3ae9fE(ptr %37 = alloca i32, align 4 %38 = alloca { [1 x i64], i64, [1 x i64] }, align 8 %39 = alloca { { { ptr, ptr }, { ptr, ptr }, { { [16 x i8], i8, [7 x i8] } } } }, align 8 + %.sroa.0.sroa.5.i.i = alloca { [16 x i8], i8, [7 x i8] }, align 8 %40 = alloca { [1 x i64], i64, [1 x i64] }, align 8 %41 = alloca { [1 x i64], i64, [1 x i64] }, align 8 %42 = alloca { { { i64, [6 x i64] }, { { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, ptr, { ptr, i64 }, ptr, {} } }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, ptr, ptr, ptr, i64 }, align 8 @@ -19272,8 +19273,8 @@ _ZN5alloc5alloc15exchange_malloc17hbe31f2048284b3faE.llvm.10932140880789976298.e %198 = getelementptr inbounds i8, ptr %86, i64 16 %199 = getelementptr inbounds i8, ptr %86, i64 32 %200 = getelementptr inbounds i8, ptr %86, i64 24 - %.sroa.0.sroa.5.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %39, i64 32 %.sroa.0.sroa.3.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %39, i64 16 + %.sroa.0.sroa.5.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %39, i64 32 %201 = getelementptr inbounds i8, ptr %39, i64 8 %202 = getelementptr inbounds i8, ptr %39, i64 48 %203 = getelementptr inbounds i8, ptr %39, i64 24 @@ -21338,13 +21339,15 @@ default.unreachable.i: ; preds = %755 %824 = load i64, ptr %157, align 8, !noalias !2411, !noundef !4 call void @llvm.experimental.noalias.scope.decl(metadata !2645) call void @llvm.experimental.noalias.scope.decl(metadata !2648) - call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %39), !noalias !2650 - invoke void @_ZN11tree_sitter9LossyUtf83new17hac56428bbc277a9dE(ptr noalias nocapture noundef nonnull sret({ { ptr, i64 }, i8, [7 x i8] }) align 8 dereferenceable(24) %.sroa.0.sroa.5.0..sroa_idx.i.i, ptr noalias noundef nonnull readonly align 1 %822, i64 noundef %821) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.0.sroa.5.i.i), !noalias !2411 + invoke void @_ZN11tree_sitter9LossyUtf83new17hac56428bbc277a9dE(ptr noalias nocapture noundef nonnull sret({ { ptr, i64 }, i8, [7 x i8] }) align 8 dereferenceable(24) %.sroa.0.sroa.5.i.i, ptr noalias noundef nonnull readonly align 1 %822, i64 noundef %821) to label %.noexc116.i unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i, !noalias !2430 .noexc116.i: ; preds = %820 + call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %39), !noalias !2650 store ptr null, ptr %39, align 8, !noalias !2650 store ptr null, ptr %.sroa.0.sroa.3.0..sroa_idx.i.i, align 8, !noalias !2650 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0.sroa.5.0..sroa_idx.i.i, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0.sroa.5.i.i, i64 24, i1 false), !noalias !2650 %825 = getelementptr inbounds i64, ptr %823, i64 %824 %826 = icmp eq i64 %824, 0 br label %827 @@ -21832,6 +21835,7 @@ _ZN21tree_sitter_highlight12HtmlRenderer15start_highlight17h21bf379fd49501a5E.ex _ZN21tree_sitter_highlight12HtmlRenderer8add_text17hfaab44736c05ad85E.exit.i: ; preds = %.loopexit.i.i113.i call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %39), !noalias !2650 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.0.sroa.5.i.i), !noalias !2411 br label %.backedge 1001: ; preds = %.noexc103.i, %808 diff --git a/bench/tree-sitter-rs/optimized/43qizak8uz8ar6lc.ll b/bench/tree-sitter-rs/optimized/43qizak8uz8ar6lc.ll index c320c6a4498..f2f436713a8 100644 --- a/bench/tree-sitter-rs/optimized/43qizak8uz8ar6lc.ll +++ b/bench/tree-sitter-rs/optimized/43qizak8uz8ar6lc.ll @@ -29456,131 +29456,135 @@ define hidden void @"_ZN89_$LT$tree_sitter_cli..generate..grammars..PrecedenceEn define hidden void @"_ZN90_$LT$tree_sitter_cli..generate..grammars..ProductionStep$u20$as$u20$core..clone..Clone$GT$5clone17h3be39cb48f433ab8E.llvm.10393017446704266758"(ptr noalias nocapture noundef writeonly sret({ { i64, [3 x i64] }, { i64, [2 x i64] }, { i64, [2 x i64] }, { i64, i8 }, i8, [7 x i8] }) align 8 dereferenceable(104) %0, ptr noalias noundef readonly align 8 dereferenceable(104) %1) unnamed_addr #4 personality ptr @rust_eh_personality { %3 = alloca { { { i64, ptr }, i64 } }, align 8 %4 = alloca { { { i64, ptr }, i64 } }, align 8 + %5 = alloca { { { i64, ptr }, i64 } }, align 8 %.sroa.5 = alloca [2 x i64], align 8 - %5 = alloca { i64, [3 x i64] }, align 8 - %6 = alloca { i64, [2 x i64] }, align 8 - %7 = getelementptr inbounds i8, ptr %1, i64 80 - %8 = load i64, ptr %7, align 8, !noundef !9 - %9 = getelementptr inbounds i8, ptr %1, i64 88 - %10 = load i8, ptr %9, align 8, !range !803, !noundef !9 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) - %11 = getelementptr inbounds i8, ptr %1, i64 56 - %12 = load i64, ptr %11, align 8, !range !1077, !noundef !9 - %13 = xor i64 %12, -9223372036854775808 - %14 = tail call i64 @llvm.umin.i64(i64 %13, i64 2) - switch i64 %14, label %default.unreachable [ - i64 0, label %15 - i64 1, label %16 - i64 2, label %20 + %6 = alloca { i64, [3 x i64] }, align 8 + %7 = alloca { i64, [2 x i64] }, align 8 + %8 = getelementptr inbounds i8, ptr %1, i64 80 + %9 = load i64, ptr %8, align 8, !noundef !9 + %10 = getelementptr inbounds i8, ptr %1, i64 88 + %11 = load i8, ptr %10, align 8, !range !803, !noundef !9 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) + %12 = getelementptr inbounds i8, ptr %1, i64 56 + %13 = load i64, ptr %12, align 8, !range !1077, !noundef !9 + %14 = xor i64 %13, -9223372036854775808 + %15 = tail call i64 @llvm.umin.i64(i64 %14, i64 2) + switch i64 %15, label %default.unreachable [ + i64 0, label %16 + i64 1, label %17 + i64 2, label %21 ] default.unreachable: ; preds = %2 unreachable -15: ; preds = %2 - store i64 -9223372036854775808, ptr %6, align 8 - br label %21 - 16: ; preds = %2 - %17 = getelementptr inbounds i8, ptr %1, i64 64 - %18 = load i32, ptr %17, align 8, !noundef !9 - %19 = getelementptr inbounds i8, ptr %6, i64 8 - store i32 %18, ptr %19, align 8 - store i64 -9223372036854775807, ptr %6, align 8 - br label %21 + store i64 -9223372036854775808, ptr %7, align 8 + br label %22 -20: ; preds = %2 - call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hebbb1fc2363025c1E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %11) - br label %21 +17: ; preds = %2 + %18 = getelementptr inbounds i8, ptr %1, i64 64 + %19 = load i32, ptr %18, align 8, !noundef !9 + %20 = getelementptr inbounds i8, ptr %7, i64 8 + store i32 %19, ptr %20, align 8 + store i64 -9223372036854775807, ptr %7, align 8 + br label %22 -21: ; preds = %20, %16, %15 - %22 = getelementptr inbounds i8, ptr %1, i64 96 - %23 = load i8, ptr %22, align 8, !range !1025, !noundef !9 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) - %24 = load i64, ptr %1, align 8, !range !40, !noundef !9 - %25 = icmp eq i64 %24, -9223372036854775808 - br i1 %25, label %26, label %27 +21: ; preds = %2 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) + call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hebbb1fc2363025c1E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %12) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) + br label %22 -26: ; preds = %21 - store i64 -9223372036854775808, ptr %5, align 8 - br label %28 +22: ; preds = %21, %17, %16 + %23 = getelementptr inbounds i8, ptr %1, i64 96 + %24 = load i8, ptr %23, align 8, !range !1025, !noundef !9 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) + %25 = load i64, ptr %1, align 8, !range !40, !noundef !9 + %26 = icmp eq i64 %25, -9223372036854775808 + br i1 %26, label %27, label %28 -27: ; preds = %21 +27: ; preds = %22 + store i64 -9223372036854775808, ptr %6, align 8 + br label %29 + +28: ; preds = %22 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) invoke void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hebbb1fc2363025c1E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1) - to label %35 unwind label %33 + to label %36 unwind label %34 -28: ; preds = %35, %26 +29: ; preds = %36, %27 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %.sroa.5) - %29 = getelementptr inbounds i8, ptr %1, i64 32 - %30 = load i64, ptr %29, align 8, !range !40, !noundef !9 - %31 = icmp eq i64 %30, -9223372036854775808 - br i1 %31, label %39, label %38 + %30 = getelementptr inbounds i8, ptr %1, i64 32 + %31 = load i64, ptr %30, align 8, !range !40, !noundef !9 + %32 = icmp eq i64 %31, -9223372036854775808 + br i1 %32, label %40, label %39 -32: ; preds = %45, %33 - %.pn = phi { ptr, i32 } [ %46, %45 ], [ %34, %33 ] - invoke void @"_ZN4core3ptr65drop_in_place$LT$tree_sitter_cli..generate..rules..Precedence$GT$17he25aa4704d81d7b1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #63 - to label %50 unwind label %48 +33: ; preds = %46, %34 + %.pn = phi { ptr, i32 } [ %47, %46 ], [ %35, %34 ] + invoke void @"_ZN4core3ptr65drop_in_place$LT$tree_sitter_cli..generate..rules..Precedence$GT$17he25aa4704d81d7b1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #63 + to label %51 unwind label %49 -33: ; preds = %27 - %34 = landingpad { ptr, i32 } +34: ; preds = %28 + %35 = landingpad { ptr, i32 } cleanup - br label %32 + br label %33 -35: ; preds = %27 - %36 = getelementptr inbounds i8, ptr %1, i64 24 - %37 = load i8, ptr %36, align 8, !range !47, !noundef !9 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) +36: ; preds = %28 + %37 = getelementptr inbounds i8, ptr %1, i64 24 + %38 = load i8, ptr %37, align 8, !range !47, !noundef !9 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) - %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %5, i64 24 - store i8 %37, ptr %.sroa.4.0..sroa_idx, align 8 - br label %28 + %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %6, i64 24 + store i8 %38, ptr %.sroa.4.0..sroa_idx, align 8 + br label %29 -38: ; preds = %28 +39: ; preds = %29 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) - invoke void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hebbb1fc2363025c1E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 dereferenceable(24) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %29) - to label %47 unwind label %45 - -39: ; preds = %28, %47 - %.sroa.0.0 = phi i64 [ %.sroa.0.0.copyload1, %47 ], [ -9223372036854775808, %28 ] - %40 = getelementptr inbounds i8, ptr %0, i64 80 - store i64 %8, ptr %40, align 8 - %41 = getelementptr inbounds i8, ptr %0, i64 88 - store i8 %10, ptr %41, align 8 - %42 = getelementptr inbounds i8, ptr %0, i64 56 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(24) %6, i64 24, i1 false) - %43 = getelementptr inbounds i8, ptr %0, i64 96 - store i8 %23, ptr %43, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %5, i64 32, i1 false) - %44 = getelementptr inbounds i8, ptr %0, i64 32 - store i64 %.sroa.0.0, ptr %44, align 8 + invoke void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hebbb1fc2363025c1E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 dereferenceable(24) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %30) + to label %48 unwind label %46 + +40: ; preds = %29, %48 + %.sroa.0.0 = phi i64 [ %.sroa.0.0.copyload1, %48 ], [ -9223372036854775808, %29 ] + %41 = getelementptr inbounds i8, ptr %0, i64 80 + store i64 %9, ptr %41, align 8 + %42 = getelementptr inbounds i8, ptr %0, i64 88 + store i8 %11, ptr %42, align 8 + %43 = getelementptr inbounds i8, ptr %0, i64 56 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %43, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false) + %44 = getelementptr inbounds i8, ptr %0, i64 96 + store i8 %24, ptr %44, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %6, i64 32, i1 false) + %45 = getelementptr inbounds i8, ptr %0, i64 32 + store i64 %.sroa.0.0, ptr %45, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 40 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.5.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.5, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.5) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) ret void -45: ; preds = %38 - %46 = landingpad { ptr, i32 } +46: ; preds = %39 + %47 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr88drop_in_place$LT$core..option..Option$LT$tree_sitter_cli..generate..rules..Alias$GT$$GT$17hc8a497799ab12abcE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) #63 - to label %32 unwind label %48 + invoke void @"_ZN4core3ptr88drop_in_place$LT$core..option..Option$LT$tree_sitter_cli..generate..rules..Alias$GT$$GT$17hc8a497799ab12abcE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %6) #63 + to label %33 unwind label %49 -47: ; preds = %38 +48: ; preds = %39 %.sroa.0.0.copyload1 = load i64, ptr %3, align 8 %.sroa.5.0..sroa_idx2 = getelementptr inbounds i8, ptr %3, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.5, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.5.0..sroa_idx2, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) - br label %39 + br label %40 -48: ; preds = %45, %32 - %49 = landingpad { ptr, i32 } +49: ; preds = %46, %33 + %50 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #64 unreachable -50: ; preds = %32 +51: ; preds = %33 resume { ptr, i32 } %.pn } diff --git a/bench/typst-rs/optimized/57e1zo682pgyyw8m.ll b/bench/typst-rs/optimized/57e1zo682pgyyw8m.ll index 1c1f9569b2d..22ebb1b3de7 100644 --- a/bench/typst-rs/optimized/57e1zo682pgyyw8m.ll +++ b/bench/typst-rs/optimized/57e1zo682pgyyw8m.ll @@ -3428,96 +3428,100 @@ define noundef nonnull align 8 dereferenceable(24) ptr @_ZN12typst_syntax4file6F ; Function Attrs: nonlazybind uwtable define noundef i16 @_ZN12typst_syntax4file6FileId4join17h8efddc37c2712bf1E(i16 noundef %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) unnamed_addr #1 personality ptr @rust_eh_personality { %4 = alloca { { [2 x i64] } }, align 8 - %5 = alloca { { { [2 x i64] } } }, align 8 - %6 = alloca { { { { [2 x i64] } } }, { { { [2 x i64] } } }, { i32, i32, i32 }, [1 x i32] }, align 8 - %7 = alloca { { { { { { i64, ptr, {} }, i64 } } } } }, align 8 - %8 = alloca { i64, [6 x i64] }, align 8 - %9 = alloca i16, align 2 - store i16 %0, ptr %9, align 2 - call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %8) - %10 = call noundef align 8 dereferenceable(80) ptr @_ZN12typst_syntax4file6FileId4pair17h4c8074549e85414dE.llvm.2808647571845796349(ptr noalias noundef nonnull readonly align 2 dereferenceable(2) %9) - %11 = load i64, ptr %10, align 8, !range !11, !noalias !719, !noundef !12 - %trunc.i = trunc nuw i64 %11 to i1 + %5 = alloca { { [2 x i64] } }, align 8 + %6 = alloca { { { [2 x i64] } } }, align 8 + %7 = alloca { { { { [2 x i64] } } }, { { { [2 x i64] } } }, { i32, i32, i32 }, [1 x i32] }, align 8 + %8 = alloca { { { { { { i64, ptr, {} }, i64 } } } } }, align 8 + %9 = alloca { i64, [6 x i64] }, align 8 + %10 = alloca i16, align 2 + store i16 %0, ptr %10, align 2 + call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %9) + %11 = call noundef align 8 dereferenceable(80) ptr @_ZN12typst_syntax4file6FileId4pair17h4c8074549e85414dE.llvm.2808647571845796349(ptr noalias noundef nonnull readonly align 2 dereferenceable(2) %10) + %12 = load i64, ptr %11, align 8, !range !11, !noalias !719, !noundef !12 + %trunc.i = trunc nuw i64 %12 to i1 tail call void @llvm.experimental.noalias.scope.decl(metadata !722) - br i1 %trunc.i, label %13, label %12 + br i1 %trunc.i, label %14, label %13 -12: ; preds = %3 - store i64 0, ptr %8, align 8, !alias.scope !722, !noalias !725 +13: ; preds = %3 + store i64 0, ptr %9, align 8, !alias.scope !722, !noalias !725 br label %"_ZN4core6option19Option$LT$$RF$T$GT$6cloned17h392087f13c7af031E.exit" -13: ; preds = %3 - %14 = getelementptr inbounds i8, ptr %10, i64 8 - call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6) +14: ; preds = %3 + %15 = getelementptr inbounds i8, ptr %11, i64 8 + call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7) tail call void @llvm.experimental.noalias.scope.decl(metadata !727) tail call void @llvm.experimental.noalias.scope.decl(metadata !730) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6), !noalias !732 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5), !noalias !732 - call void @"_ZN64_$LT$ecow..dynamic..DynamicVec$u20$as$u20$core..clone..Clone$GT$5clone17hc750ecdfb2556fa4E.llvm.10859166595437567863"(ptr noalias nocapture noundef nonnull sret({ { [2 x i64] } }) align 8 dereferenceable(16) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %14), !noalias !733 + call void @"_ZN64_$LT$ecow..dynamic..DynamicVec$u20$as$u20$core..clone..Clone$GT$5clone17hc750ecdfb2556fa4E.llvm.10859166595437567863"(ptr noalias nocapture noundef nonnull sret({ { [2 x i64] } }) align 8 dereferenceable(16) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %15), !noalias !733 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %5, i64 16, i1 false), !noalias !732 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5), !noalias !732 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4), !noalias !732 - %15 = getelementptr inbounds i8, ptr %10, i64 24 - invoke void @"_ZN64_$LT$ecow..dynamic..DynamicVec$u20$as$u20$core..clone..Clone$GT$5clone17hc750ecdfb2556fa4E.llvm.10859166595437567863"(ptr noalias nocapture noundef nonnull sret({ { [2 x i64] } }) align 8 dereferenceable(16) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %15) - to label %"_ZN73_$LT$typst_syntax..package..PackageSpec$u20$as$u20$core..clone..Clone$GT$5clone17hcb46d6512919995eE.llvm.10859166595437567863.exit.i" unwind label %16, !noalias !733 + %16 = getelementptr inbounds i8, ptr %11, i64 24 + invoke void @"_ZN64_$LT$ecow..dynamic..DynamicVec$u20$as$u20$core..clone..Clone$GT$5clone17hc750ecdfb2556fa4E.llvm.10859166595437567863"(ptr noalias nocapture noundef nonnull sret({ { [2 x i64] } }) align 8 dereferenceable(16) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %16) + to label %"_ZN73_$LT$typst_syntax..package..PackageSpec$u20$as$u20$core..clone..Clone$GT$5clone17hcb46d6512919995eE.llvm.10859166595437567863.exit.i" unwind label %17, !noalias !733 -16: ; preds = %13 - %17 = landingpad { ptr, i32 } +17: ; preds = %14 + %18 = landingpad { ptr, i32 } cleanup - %18 = getelementptr inbounds i8, ptr %5, i64 15 - %19 = load i8, ptr %18, align 1, !alias.scope !734, !noalias !732, !noundef !12 - %20 = icmp sgt i8 %19, -1 - br i1 %20, label %21, label %common.resume + %19 = getelementptr inbounds i8, ptr %6, i64 15 + %20 = load i8, ptr %19, align 1, !alias.scope !734, !noalias !732, !noundef !12 + %21 = icmp sgt i8 %20, -1 + br i1 %21, label %22, label %common.resume -21: ; preds = %16 - invoke void @"_ZN68_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hed4cfa91d131b3feE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5) - to label %common.resume unwind label %22, !noalias !733 +22: ; preds = %17 + invoke void @"_ZN68_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hed4cfa91d131b3feE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %6) + to label %common.resume unwind label %23, !noalias !733 -22: ; preds = %21 - %23 = landingpad { ptr, i32 } +23: ; preds = %22 + %24 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #25, !noalias !733 unreachable -common.resume: ; preds = %33, %16, %21 - %common.resume.op = phi { ptr, i32 } [ %17, %21 ], [ %17, %16 ], [ %lpad.thr_comm, %33 ] +common.resume: ; preds = %34, %17, %22 + %common.resume.op = phi { ptr, i32 } [ %18, %22 ], [ %18, %17 ], [ %lpad.thr_comm, %34 ] resume { ptr, i32 } %common.resume.op -"_ZN73_$LT$typst_syntax..package..PackageSpec$u20$as$u20$core..clone..Clone$GT$5clone17hcb46d6512919995eE.llvm.10859166595437567863.exit.i": ; preds = %13 - %24 = getelementptr inbounds i8, ptr %6, i64 16 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(16) %4, i64 16, i1 false), !noalias !741 +"_ZN73_$LT$typst_syntax..package..PackageSpec$u20$as$u20$core..clone..Clone$GT$5clone17hcb46d6512919995eE.llvm.10859166595437567863.exit.i": ; preds = %14 + %25 = getelementptr inbounds i8, ptr %7, i64 16 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %4, i64 16, i1 false), !noalias !741 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4), !noalias !732 - %25 = getelementptr inbounds i8, ptr %10, i64 40 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %5, i64 16, i1 false), !noalias !741 - %26 = getelementptr inbounds i8, ptr %6, i64 32 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %26, ptr noundef nonnull readonly align 8 dereferenceable(12) %25, i64 12, i1 false), !alias.scope !742, !noalias !722 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5), !noalias !732 - %27 = getelementptr inbounds i8, ptr %8, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %27, ptr noundef nonnull align 8 dereferenceable(48) %6, i64 48, i1 false), !noalias !725 - store i64 1, ptr %8, align 8, !alias.scope !722, !noalias !725 - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) + %26 = getelementptr inbounds i8, ptr %11, i64 40 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %6, i64 16, i1 false), !noalias !741 + %27 = getelementptr inbounds i8, ptr %7, i64 32 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %27, ptr noundef nonnull readonly align 8 dereferenceable(12) %26, i64 12, i1 false), !alias.scope !742, !noalias !722 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6), !noalias !732 + %28 = getelementptr inbounds i8, ptr %9, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %28, ptr noundef nonnull align 8 dereferenceable(48) %7, i64 48, i1 false), !noalias !725 + store i64 1, ptr %9, align 8, !alias.scope !722, !noalias !725 + call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) br label %"_ZN4core6option19Option$LT$$RF$T$GT$6cloned17h392087f13c7af031E.exit" -"_ZN4core6option19Option$LT$$RF$T$GT$6cloned17h392087f13c7af031E.exit": ; preds = %12, %"_ZN73_$LT$typst_syntax..package..PackageSpec$u20$as$u20$core..clone..Clone$GT$5clone17hcb46d6512919995eE.llvm.10859166595437567863.exit.i" - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) - %28 = invoke noundef align 8 dereferenceable(80) ptr @_ZN12typst_syntax4file6FileId4pair17h4c8074549e85414dE.llvm.2808647571845796349(ptr noalias noundef nonnull readonly align 2 dereferenceable(2) %9) - to label %29 unwind label %33 +"_ZN4core6option19Option$LT$$RF$T$GT$6cloned17h392087f13c7af031E.exit": ; preds = %13, %"_ZN73_$LT$typst_syntax..package..PackageSpec$u20$as$u20$core..clone..Clone$GT$5clone17hcb46d6512919995eE.llvm.10859166595437567863.exit.i" + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) + %29 = invoke noundef align 8 dereferenceable(80) ptr @_ZN12typst_syntax4file6FileId4pair17h4c8074549e85414dE.llvm.2808647571845796349(ptr noalias noundef nonnull readonly align 2 dereferenceable(2) %10) + to label %30 unwind label %34 -29: ; preds = %"_ZN4core6option19Option$LT$$RF$T$GT$6cloned17h392087f13c7af031E.exit" - %30 = getelementptr inbounds i8, ptr %28, i64 56 - invoke void @_ZN12typst_syntax4path11VirtualPath4join17hbe09636aafcd07e1E(ptr noalias nocapture noundef nonnull sret({ { { { { { i64, ptr, {} }, i64 } } } } }) align 8 dereferenceable(24) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %30, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) - to label %31 unwind label %33 +30: ; preds = %"_ZN4core6option19Option$LT$$RF$T$GT$6cloned17h392087f13c7af031E.exit" + %31 = getelementptr inbounds i8, ptr %29, i64 56 + invoke void @_ZN12typst_syntax4path11VirtualPath4join17hbe09636aafcd07e1E(ptr noalias nocapture noundef nonnull sret({ { { { { { i64, ptr, {} }, i64 } } } } }) align 8 dereferenceable(24) %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %31, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) + to label %32 unwind label %34 -31: ; preds = %29 - %32 = call noundef i16 @_ZN12typst_syntax4file6FileId3new17hb74d00273cc69142E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(56) %8, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.60930daf61e4c888d844e235b7f0a1d4.53.llvm.2808647571845796349) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) - call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8) - ret i16 %32 +32: ; preds = %30 + %33 = call noundef i16 @_ZN12typst_syntax4file6FileId3new17hb74d00273cc69142E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(56) %9, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.60930daf61e4c888d844e235b7f0a1d4.53.llvm.2808647571845796349) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) + call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %9) + ret i16 %33 -33: ; preds = %29, %"_ZN4core6option19Option$LT$$RF$T$GT$6cloned17h392087f13c7af031E.exit" +34: ; preds = %30, %"_ZN4core6option19Option$LT$$RF$T$GT$6cloned17h392087f13c7af031E.exit" %lpad.thr_comm = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr83drop_in_place$LT$core..option..Option$LT$typst_syntax..package..PackageSpec$GT$$GT$17h0f9605a63c6d7350E.llvm.2808647571845796349"(ptr noalias noundef nonnull align 8 dereferenceable(56) %8) #28 - to label %common.resume unwind label %34 + invoke void @"_ZN4core3ptr83drop_in_place$LT$core..option..Option$LT$typst_syntax..package..PackageSpec$GT$$GT$17h0f9605a63c6d7350E.llvm.2808647571845796349"(ptr noalias noundef nonnull align 8 dereferenceable(56) %9) #28 + to label %common.resume unwind label %35 -34: ; preds = %33 - %35 = landingpad { ptr, i32 } +35: ; preds = %34 + %36 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #25 unreachable diff --git a/bench/typst-rs/optimized/7qbo95uqhhgrojq.ll b/bench/typst-rs/optimized/7qbo95uqhhgrojq.ll index b850389042e..8955dd17bc8 100644 --- a/bench/typst-rs/optimized/7qbo95uqhhgrojq.ll +++ b/bench/typst-rs/optimized/7qbo95uqhhgrojq.ll @@ -659,20 +659,21 @@ define hidden noundef nonnull align 16 dereferenceable(32) ptr @"_ZN3std11collec ; Function Attrs: inlinehint nonlazybind uwtable define hidden noundef nonnull align 16 dereferenceable(32) ptr @"_ZN3std11collections4hash3map18Entry$LT$K$C$V$GT$14or_insert_with17h8143283e3ca31719E.llvm.13846770185197118408"(ptr noalias nocapture noundef readonly align 16 dereferenceable(48) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %1) unnamed_addr #1 personality ptr @rust_eh_personality { - %3 = alloca { i128, { { { [2 x i64] } } } }, align 16 - %4 = load i128, ptr %0, align 16, !range !5, !noundef !4 - %5 = icmp eq i128 %4, 2 - br i1 %5, label %8, label %6 + %3 = alloca { { { [2 x i64] } } }, align 8 + %4 = alloca { i128, { { { [2 x i64] } } } }, align 16 + %5 = load i128, ptr %0, align 16, !range !5, !noundef !4 + %6 = icmp eq i128 %5, 2 + br i1 %6, label %9, label %7 -6: ; preds = %2 +7: ; preds = %2 %.sroa.0.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 32 %.sroa.0.sroa.2.0.copyload = load ptr, ptr %.sroa.0.sroa.2.0..sroa_idx, align 16, !nonnull !4, !noundef !4 - %7 = getelementptr inbounds i8, ptr %.sroa.0.sroa.2.0.copyload, i64 -32 - br label %61 + %8 = getelementptr inbounds i8, ptr %.sroa.0.sroa.2.0.copyload, i64 -32 + br label %62 -8: ; preds = %2 - %9 = getelementptr inbounds i8, ptr %0, i64 16 - %.sroa.01.sroa.0.0.copyload = load i128, ptr %9, align 16 +9: ; preds = %2 + %10 = getelementptr inbounds i8, ptr %0, i64 16 + %.sroa.01.sroa.0.0.copyload = load i128, ptr %10, align 16 %.sroa.01.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 32 %.sroa.01.sroa.4.0.copyload = load i64, ptr %.sroa.01.sroa.4.0..sroa_idx, align 16 %.sroa.01.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 40 @@ -684,105 +685,108 @@ define hidden noundef nonnull align 16 dereferenceable(32) ptr @"_ZN3std11collec %.sroa.58.0.copyload = load ptr, ptr %.sroa.58.0..sroa_idx, align 8, !nonnull !4, !noundef !4 %.sroa.69.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 24 %.sroa.69.0.copyload = load ptr, ptr %.sroa.69.0..sroa_idx, align 8, !nonnull !4, !noundef !4 - %10 = getelementptr inbounds i8, ptr %.sroa.47.0.copyload, i64 16 - %11 = load i64, ptr %10, align 8, !noalias !114, !noundef !4 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3), !noalias !114 - %12 = load i128, ptr %.sroa.58.0.copyload, align 16, !noalias !114, !noundef !4 - %13 = getelementptr inbounds i8, ptr %3, i64 16 - call void @_ZN9typst_svg12convert_path17he8e0b3f1bc65b4e4E(ptr noalias nocapture noundef nonnull sret({ { { [2 x i64] } } }) align 8 dereferenceable(16) %13, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.69.0.copyload), !noalias !114 - store i128 %12, ptr %3, align 16, !noalias !114 + %11 = getelementptr inbounds i8, ptr %.sroa.47.0.copyload, i64 16 + %12 = load i64, ptr %11, align 8, !noalias !114, !noundef !4 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4), !noalias !114 + %13 = load i128, ptr %.sroa.58.0.copyload, align 16, !noalias !114, !noundef !4 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3), !noalias !114 + call void @_ZN9typst_svg12convert_path17he8e0b3f1bc65b4e4E(ptr noalias nocapture noundef nonnull sret({ { { [2 x i64] } } }) align 8 dereferenceable(16) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.69.0.copyload), !noalias !114 + store i128 %13, ptr %4, align 16, !noalias !114 + %14 = getelementptr inbounds i8, ptr %4, i64 16 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %3, i64 16, i1 false), !noalias !114 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !114 tail call void @llvm.experimental.noalias.scope.decl(metadata !118) tail call void @llvm.experimental.noalias.scope.decl(metadata !121) - %14 = load i64, ptr %10, align 8, !alias.scope !118, !noalias !123, !noundef !4 - %15 = load i64, ptr %.sroa.47.0.copyload, align 8, !alias.scope !118, !noalias !123, !noundef !4 - %16 = icmp eq i64 %14, %15 - br i1 %16, label %17, label %"_ZN9typst_svg21Deduplicator$LT$T$GT$11insert_with28_$u7b$$u7b$closure$u7d$$u7d$17hb93b26295bf980e6E.exit" + %15 = load i64, ptr %11, align 8, !alias.scope !118, !noalias !123, !noundef !4 + %16 = load i64, ptr %.sroa.47.0.copyload, align 8, !alias.scope !118, !noalias !123, !noundef !4 + %17 = icmp eq i64 %15, %16 + br i1 %17, label %18, label %"_ZN9typst_svg21Deduplicator$LT$T$GT$11insert_with28_$u7b$$u7b$closure$u7d$$u7d$17hb93b26295bf980e6E.exit" -17: ; preds = %8 - invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17hbed2bb3932252399E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %.sroa.47.0.copyload, i64 noundef %14) - to label %._crit_edge.i.i unwind label %18, !noalias !123 +18: ; preds = %9 + invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17hbed2bb3932252399E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %.sroa.47.0.copyload, i64 noundef %15) + to label %._crit_edge.i.i unwind label %19, !noalias !123 -._crit_edge.i.i: ; preds = %17 - %.pre.i.i = load i64, ptr %10, align 8, !alias.scope !118, !noalias !123 +._crit_edge.i.i: ; preds = %18 + %.pre.i.i = load i64, ptr %11, align 8, !alias.scope !118, !noalias !123 br label %"_ZN9typst_svg21Deduplicator$LT$T$GT$11insert_with28_$u7b$$u7b$closure$u7d$$u7d$17hb93b26295bf980e6E.exit" -18: ; preds = %17 - %19 = landingpad { ptr, i32 } +19: ; preds = %18 + %20 = landingpad { ptr, i32 } cleanup - %20 = getelementptr inbounds i8, ptr %3, i64 31 - %21 = load i8, ptr %20, align 1, !alias.scope !124, !noalias !133, !noundef !4 - %22 = icmp sgt i8 %21, -1 - br i1 %22, label %23, label %"_ZN4core3ptr59drop_in_place$LT$$LP$u128$C$ecow..string..EcoString$RP$$GT$17hb53258cd30f4ff5bE.exit.i.i" + %21 = getelementptr inbounds i8, ptr %4, i64 31 + %22 = load i8, ptr %21, align 1, !alias.scope !124, !noalias !133, !noundef !4 + %23 = icmp sgt i8 %22, -1 + br i1 %23, label %24, label %"_ZN4core3ptr59drop_in_place$LT$$LP$u128$C$ecow..string..EcoString$RP$$GT$17hb53258cd30f4ff5bE.exit.i.i" -23: ; preds = %18 - invoke void @"_ZN68_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h038c2f2f19feb061E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %13) - to label %"_ZN4core3ptr59drop_in_place$LT$$LP$u128$C$ecow..string..EcoString$RP$$GT$17hb53258cd30f4ff5bE.exit.i.i" unwind label %24, !noalias !114 +24: ; preds = %19 + invoke void @"_ZN68_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h038c2f2f19feb061E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %14) + to label %"_ZN4core3ptr59drop_in_place$LT$$LP$u128$C$ecow..string..EcoString$RP$$GT$17hb53258cd30f4ff5bE.exit.i.i" unwind label %25, !noalias !114 -24: ; preds = %23 - %25 = landingpad { ptr, i32 } +25: ; preds = %24 + %26 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #18, !noalias !114 unreachable -"_ZN4core3ptr59drop_in_place$LT$$LP$u128$C$ecow..string..EcoString$RP$$GT$17hb53258cd30f4ff5bE.exit.i.i": ; preds = %23, %18 - resume { ptr, i32 } %19 +"_ZN4core3ptr59drop_in_place$LT$$LP$u128$C$ecow..string..EcoString$RP$$GT$17hb53258cd30f4ff5bE.exit.i.i": ; preds = %24, %19 + resume { ptr, i32 } %20 -"_ZN9typst_svg21Deduplicator$LT$T$GT$11insert_with28_$u7b$$u7b$closure$u7d$$u7d$17hb93b26295bf980e6E.exit": ; preds = %8, %._crit_edge.i.i - %26 = phi i64 [ %.pre.i.i, %._crit_edge.i.i ], [ %14, %8 ] - %27 = getelementptr inbounds i8, ptr %.sroa.47.0.copyload, i64 8 - %28 = load ptr, ptr %27, align 8, !alias.scope !118, !noalias !123, !nonnull !4, !noundef !4 - %29 = getelementptr inbounds { i128, { { { [2 x i64] } } } }, ptr %28, i64 %26 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %29, ptr noundef nonnull align 16 dereferenceable(32) %3, i64 32, i1 false), !noalias !114 - %30 = load i64, ptr %10, align 8, !alias.scope !118, !noalias !123, !noundef !4 - %31 = add i64 %30, 1 - store i64 %31, ptr %10, align 8, !alias.scope !118, !noalias !123 - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3), !noalias !114 - %32 = icmp ne ptr %.sroa.06.0.copyload, null - tail call void @llvm.assume(i1 %32) - %33 = load i32, ptr %.sroa.06.0.copyload, align 4, !range !19, !noalias !114, !noundef !4 - %34 = load i128, ptr %.sroa.58.0.copyload, align 16, !noalias !114, !noundef !4 - %35 = icmp ne ptr %.sroa.01.sroa.5.0.copyload, null - tail call void @llvm.assume(i1 %35) - %36 = tail call noundef i64 @_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h0d15703798b524f2E.llvm.6382671939590809801(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %.sroa.01.sroa.5.0.copyload, i64 noundef %.sroa.01.sroa.4.0.copyload), !noalias !134 - %37 = load ptr, ptr %.sroa.01.sroa.5.0.copyload, align 8, !alias.scope !140, !noalias !134, !nonnull !4, !noundef !4 - %38 = getelementptr inbounds i8, ptr %37, i64 %36 - %39 = load i8, ptr %38, align 1, !noalias !134, !noundef !4 - %40 = lshr i64 %.sroa.01.sroa.4.0.copyload, 57 - %41 = trunc nuw nsw i64 %40 to i8 - %42 = add i64 %36, -16 - %43 = getelementptr inbounds i8, ptr %.sroa.01.sroa.5.0.copyload, i64 8 - %44 = load i64, ptr %43, align 8, !alias.scope !140, !noalias !134, !noundef !4 - %45 = and i64 %44, %42 - store i8 %41, ptr %38, align 1, !noalias !134 - %46 = load ptr, ptr %.sroa.01.sroa.5.0.copyload, align 8, !alias.scope !140, !noalias !134, !nonnull !4, !noundef !4 - %47 = getelementptr i8, ptr %46, i64 %45 - %48 = getelementptr i8, ptr %47, i64 16 - store i8 %41, ptr %48, align 1, !noalias !134 - %49 = load ptr, ptr %.sroa.01.sroa.5.0.copyload, align 8, !alias.scope !144, !noalias !134, !nonnull !4, !noundef !4 - %50 = sub nsw i64 0, %36 - %51 = getelementptr inbounds { i128, { i128, i64, i32, [1 x i32] } }, ptr %49, i64 %50 - %52 = and i8 %39, 1 - %53 = zext nneg i8 %52 to i64 - %54 = getelementptr inbounds i8, ptr %.sroa.01.sroa.5.0.copyload, i64 16 - %55 = load i64, ptr %54, align 8, !alias.scope !144, !noalias !134, !noundef !4 - %56 = sub i64 %55, %53 - store i64 %56, ptr %54, align 8, !alias.scope !144, !noalias !134 - %57 = getelementptr inbounds i8, ptr %51, i64 -48 - store i128 %.sroa.01.sroa.0.0.copyload, ptr %57, align 16, !noalias !145 - %.sroa.4.0..sroa_idx.i = getelementptr inbounds i8, ptr %51, i64 -32 - store i128 %34, ptr %.sroa.4.0..sroa_idx.i, align 16, !noalias !146 - %.sroa.4.0..sroa.4.0..sroa_idx.i.sroa_idx = getelementptr inbounds i8, ptr %51, i64 -16 - store i64 %11, ptr %.sroa.4.0..sroa.4.0..sroa_idx.i.sroa_idx, align 16, !noalias !146 - %.sroa.5.0..sroa.4.0..sroa_idx.i.sroa_idx = getelementptr inbounds i8, ptr %51, i64 -8 - store i32 %33, ptr %.sroa.5.0..sroa.4.0..sroa_idx.i.sroa_idx, align 8, !noalias !146 - %58 = getelementptr inbounds i8, ptr %.sroa.01.sroa.5.0.copyload, i64 24 - %59 = load i64, ptr %58, align 8, !alias.scope !144, !noalias !134, !noundef !4 - %60 = add i64 %59, 1 - store i64 %60, ptr %58, align 8, !alias.scope !144, !noalias !134 - br label %61 - -61: ; preds = %"_ZN9typst_svg21Deduplicator$LT$T$GT$11insert_with28_$u7b$$u7b$closure$u7d$$u7d$17hb93b26295bf980e6E.exit", %6 - %.0 = phi ptr [ %.sroa.4.0..sroa_idx.i, %"_ZN9typst_svg21Deduplicator$LT$T$GT$11insert_with28_$u7b$$u7b$closure$u7d$$u7d$17hb93b26295bf980e6E.exit" ], [ %7, %6 ] +"_ZN9typst_svg21Deduplicator$LT$T$GT$11insert_with28_$u7b$$u7b$closure$u7d$$u7d$17hb93b26295bf980e6E.exit": ; preds = %9, %._crit_edge.i.i + %27 = phi i64 [ %.pre.i.i, %._crit_edge.i.i ], [ %15, %9 ] + %28 = getelementptr inbounds i8, ptr %.sroa.47.0.copyload, i64 8 + %29 = load ptr, ptr %28, align 8, !alias.scope !118, !noalias !123, !nonnull !4, !noundef !4 + %30 = getelementptr inbounds { i128, { { { [2 x i64] } } } }, ptr %29, i64 %27 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %30, ptr noundef nonnull align 16 dereferenceable(32) %4, i64 32, i1 false), !noalias !114 + %31 = load i64, ptr %11, align 8, !alias.scope !118, !noalias !123, !noundef !4 + %32 = add i64 %31, 1 + store i64 %32, ptr %11, align 8, !alias.scope !118, !noalias !123 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4), !noalias !114 + %33 = icmp ne ptr %.sroa.06.0.copyload, null + tail call void @llvm.assume(i1 %33) + %34 = load i32, ptr %.sroa.06.0.copyload, align 4, !range !19, !noalias !114, !noundef !4 + %35 = load i128, ptr %.sroa.58.0.copyload, align 16, !noalias !114, !noundef !4 + %36 = icmp ne ptr %.sroa.01.sroa.5.0.copyload, null + tail call void @llvm.assume(i1 %36) + %37 = tail call noundef i64 @_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h0d15703798b524f2E.llvm.6382671939590809801(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %.sroa.01.sroa.5.0.copyload, i64 noundef %.sroa.01.sroa.4.0.copyload), !noalias !134 + %38 = load ptr, ptr %.sroa.01.sroa.5.0.copyload, align 8, !alias.scope !140, !noalias !134, !nonnull !4, !noundef !4 + %39 = getelementptr inbounds i8, ptr %38, i64 %37 + %40 = load i8, ptr %39, align 1, !noalias !134, !noundef !4 + %41 = lshr i64 %.sroa.01.sroa.4.0.copyload, 57 + %42 = trunc nuw nsw i64 %41 to i8 + %43 = add i64 %37, -16 + %44 = getelementptr inbounds i8, ptr %.sroa.01.sroa.5.0.copyload, i64 8 + %45 = load i64, ptr %44, align 8, !alias.scope !140, !noalias !134, !noundef !4 + %46 = and i64 %45, %43 + store i8 %42, ptr %39, align 1, !noalias !134 + %47 = load ptr, ptr %.sroa.01.sroa.5.0.copyload, align 8, !alias.scope !140, !noalias !134, !nonnull !4, !noundef !4 + %48 = getelementptr i8, ptr %47, i64 %46 + %49 = getelementptr i8, ptr %48, i64 16 + store i8 %42, ptr %49, align 1, !noalias !134 + %50 = load ptr, ptr %.sroa.01.sroa.5.0.copyload, align 8, !alias.scope !144, !noalias !134, !nonnull !4, !noundef !4 + %51 = sub nsw i64 0, %37 + %52 = getelementptr inbounds { i128, { i128, i64, i32, [1 x i32] } }, ptr %50, i64 %51 + %53 = and i8 %40, 1 + %54 = zext nneg i8 %53 to i64 + %55 = getelementptr inbounds i8, ptr %.sroa.01.sroa.5.0.copyload, i64 16 + %56 = load i64, ptr %55, align 8, !alias.scope !144, !noalias !134, !noundef !4 + %57 = sub i64 %56, %54 + store i64 %57, ptr %55, align 8, !alias.scope !144, !noalias !134 + %58 = getelementptr inbounds i8, ptr %52, i64 -48 + store i128 %.sroa.01.sroa.0.0.copyload, ptr %58, align 16, !noalias !145 + %.sroa.4.0..sroa_idx.i = getelementptr inbounds i8, ptr %52, i64 -32 + store i128 %35, ptr %.sroa.4.0..sroa_idx.i, align 16, !noalias !146 + %.sroa.4.0..sroa.4.0..sroa_idx.i.sroa_idx = getelementptr inbounds i8, ptr %52, i64 -16 + store i64 %12, ptr %.sroa.4.0..sroa.4.0..sroa_idx.i.sroa_idx, align 16, !noalias !146 + %.sroa.5.0..sroa.4.0..sroa_idx.i.sroa_idx = getelementptr inbounds i8, ptr %52, i64 -8 + store i32 %34, ptr %.sroa.5.0..sroa.4.0..sroa_idx.i.sroa_idx, align 8, !noalias !146 + %59 = getelementptr inbounds i8, ptr %.sroa.01.sroa.5.0.copyload, i64 24 + %60 = load i64, ptr %59, align 8, !alias.scope !144, !noalias !134, !noundef !4 + %61 = add i64 %60, 1 + store i64 %61, ptr %59, align 8, !alias.scope !144, !noalias !134 + br label %62 + +62: ; preds = %"_ZN9typst_svg21Deduplicator$LT$T$GT$11insert_with28_$u7b$$u7b$closure$u7d$$u7d$17hb93b26295bf980e6E.exit", %7 + %.0 = phi ptr [ %.sroa.4.0..sroa_idx.i, %"_ZN9typst_svg21Deduplicator$LT$T$GT$11insert_with28_$u7b$$u7b$closure$u7d$$u7d$17hb93b26295bf980e6E.exit" ], [ %8, %7 ] ret ptr %.0 } diff --git a/bench/wasmtime-rs/optimized/24jxjxhx40nukvhl.ll b/bench/wasmtime-rs/optimized/24jxjxhx40nukvhl.ll index 2ef248badd9..0183ebc116b 100644 --- a/bench/wasmtime-rs/optimized/24jxjxhx40nukvhl.ll +++ b/bench/wasmtime-rs/optimized/24jxjxhx40nukvhl.ll @@ -930,62 +930,66 @@ define hidden noundef range(i64 1, 0) i64 @"_ZN113_$LT$tracing_subscriber..fmt.. ; Function Attrs: inlinehint nonlazybind uwtable define hidden noundef zeroext i1 @"_ZN113_$LT$tracing_subscriber..fmt..Subscriber$LT$N$C$E$C$F$C$W$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$9try_close17hba625597033c73fbE.llvm.14686358490642834259"(ptr noundef nonnull align 8 %0, i64 noundef %1) unnamed_addr #0 personality ptr @rust_eh_personality { - %3 = alloca { [16 x i8], i8, [7 x i8] }, align 8 - %4 = getelementptr inbounds i8, ptr %0, i64 736 + %3 = alloca { i64, ptr, i8, [7 x i8] }, align 8 + %4 = alloca { [16 x i8], i8, [7 x i8] }, align 8 + %5 = getelementptr inbounds i8, ptr %0, i64 736 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) + %.0.sroa.gep.i = getelementptr inbounds i8, ptr %4, i64 16 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) - %.0.sroa.gep.i = getelementptr inbounds i8, ptr %3, i64 16 - call void @_ZN18tracing_subscriber8registry7sharded8Registry11start_close17ha4936b329813de2cE(ptr noalias nocapture noundef nonnull sret({ i64, ptr, i8, [7 x i8] }) align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 %4, i64 noundef %1) - %5 = invoke noundef zeroext i1 @"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$9try_close17hb7e35f3d34d46896E"(ptr noundef nonnull align 8 %4, i64 noundef %1) - to label %11 unwind label %6 + call void @_ZN18tracing_subscriber8registry7sharded8Registry11start_close17ha4936b329813de2cE(ptr noalias nocapture noundef nonnull sret({ i64, ptr, i8, [7 x i8] }) align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 %5, i64 noundef %1) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) + %6 = invoke noundef zeroext i1 @"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$9try_close17hb7e35f3d34d46896E"(ptr noundef nonnull align 8 %5, i64 noundef %1) + to label %12 unwind label %7 -6: ; preds = %18, %2 - %7 = landingpad { ptr, i32 } +7: ; preds = %19, %2 + %8 = landingpad { ptr, i32 } cleanup - %8 = load i8, ptr %.0.sroa.gep.i, align 8, !range !216, !alias.scope !249, !noundef !4 - %9 = icmp eq i8 %8, 2 - br i1 %9, label %"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17hcd416ec304847a9cE.exit.i", label %10 + %9 = load i8, ptr %.0.sroa.gep.i, align 8, !range !216, !alias.scope !249, !noundef !4 + %10 = icmp eq i8 %9, 2 + br i1 %10, label %"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17hcd416ec304847a9cE.exit.i", label %11 -10: ; preds = %6 - invoke void @"_ZN91_$LT$tracing_subscriber..registry..sharded..CloseGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h59c42e01bdc8d368E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %3) - to label %"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17hcd416ec304847a9cE.exit.i" unwind label %19 +11: ; preds = %7 + invoke void @"_ZN91_$LT$tracing_subscriber..registry..sharded..CloseGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h59c42e01bdc8d368E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) + to label %"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17hcd416ec304847a9cE.exit.i" unwind label %20 -11: ; preds = %2 - br i1 %5, label %12, label %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$8on_close17ha7c342906869d1d0E.exit.i" +12: ; preds = %2 + br i1 %6, label %13, label %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$8on_close17ha7c342906869d1d0E.exit.i" -12: ; preds = %11 - %13 = load i8, ptr %.0.sroa.gep.i, align 8, !range !216, !noundef !4 - %.not.i = icmp eq i8 %13, 2 - br i1 %.not.i, label %18, label %17 +13: ; preds = %12 + %14 = load i8, ptr %.0.sroa.gep.i, align 8, !range !216, !noundef !4 + %.not.i = icmp eq i8 %14, 2 + br i1 %.not.i, label %19, label %18 -"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$8on_close17ha7c342906869d1d0E.exit.i": ; preds = %18, %11 - %14 = load i8, ptr %.0.sroa.gep.i, align 8, !range !216, !alias.scope !252, !noundef !4 - %15 = icmp eq i8 %14, 2 - br i1 %15, label %"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$9try_close17ha347787540309b71E.exit", label %16 +"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$8on_close17ha7c342906869d1d0E.exit.i": ; preds = %19, %12 + %15 = load i8, ptr %.0.sroa.gep.i, align 8, !range !216, !alias.scope !252, !noundef !4 + %16 = icmp eq i8 %15, 2 + br i1 %16, label %"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$9try_close17ha347787540309b71E.exit", label %17 -16: ; preds = %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$8on_close17ha7c342906869d1d0E.exit.i" - call void @"_ZN91_$LT$tracing_subscriber..registry..sharded..CloseGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h59c42e01bdc8d368E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %3) +17: ; preds = %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$8on_close17ha7c342906869d1d0E.exit.i" + call void @"_ZN91_$LT$tracing_subscriber..registry..sharded..CloseGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h59c42e01bdc8d368E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) br label %"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$9try_close17ha347787540309b71E.exit" -17: ; preds = %12 +18: ; preds = %13 store i8 1, ptr %.0.sroa.gep.i, align 8 - br label %18 + br label %19 -18: ; preds = %17, %12 - invoke void @_ZN18tracing_subscriber6filter3env9EnvFilter8on_close17h93bc82d38378cfbdE(ptr noundef nonnull align 8 %0, i64 noundef %1, ptr noundef nonnull align 8 %4, i64 noundef 0) - to label %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$8on_close17ha7c342906869d1d0E.exit.i" unwind label %6 +19: ; preds = %18, %13 + invoke void @_ZN18tracing_subscriber6filter3env9EnvFilter8on_close17h93bc82d38378cfbdE(ptr noundef nonnull align 8 %0, i64 noundef %1, ptr noundef nonnull align 8 %5, i64 noundef 0) + to label %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$8on_close17ha7c342906869d1d0E.exit.i" unwind label %7 -19: ; preds = %10 - %20 = landingpad { ptr, i32 } +20: ; preds = %11 + %21 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #42 unreachable -"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17hcd416ec304847a9cE.exit.i": ; preds = %10, %6 - resume { ptr, i32 } %7 +"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17hcd416ec304847a9cE.exit.i": ; preds = %11, %7 + resume { ptr, i32 } %8 -"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$9try_close17ha347787540309b71E.exit": ; preds = %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$8on_close17ha7c342906869d1d0E.exit.i", %16 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) - ret i1 %5 +"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$9try_close17ha347787540309b71E.exit": ; preds = %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$8on_close17ha7c342906869d1d0E.exit.i", %17 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) + ret i1 %6 } ; Function Attrs: nonlazybind uwtable @@ -1271,62 +1275,66 @@ define hidden noundef range(i64 1, 0) i64 @"_ZN113_$LT$tracing_subscriber..layer ; Function Attrs: nonlazybind uwtable define hidden noundef zeroext i1 @"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$9try_close17hb7e35f3d34d46896E"(ptr noundef nonnull align 8 %0, i64 noundef %1) unnamed_addr #4 personality ptr @rust_eh_personality { - %3 = alloca { [16 x i8], i8, [7 x i8] }, align 8 + %3 = alloca { i64, ptr, i8, [7 x i8] }, align 8 + %4 = alloca { [16 x i8], i8, [7 x i8] }, align 8 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) + %.0.sroa.gep = getelementptr inbounds i8, ptr %4, i64 16 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) - %.0.sroa.gep = getelementptr inbounds i8, ptr %3, i64 16 call void @_ZN18tracing_subscriber8registry7sharded8Registry11start_close17ha4936b329813de2cE(ptr noalias nocapture noundef nonnull sret({ i64, ptr, i8, [7 x i8] }) align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 %0, i64 noundef %1) - %4 = invoke noundef zeroext i1 @"_ZN104_$LT$tracing_subscriber..registry..sharded..Registry$u20$as$u20$tracing_core..subscriber..Subscriber$GT$9try_close17hf0c29c8820973674E"(ptr noundef nonnull align 8 %0, i64 noundef %1) - to label %10 unwind label %5 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) + %5 = invoke noundef zeroext i1 @"_ZN104_$LT$tracing_subscriber..registry..sharded..Registry$u20$as$u20$tracing_core..subscriber..Subscriber$GT$9try_close17hf0c29c8820973674E"(ptr noundef nonnull align 8 %0, i64 noundef %1) + to label %11 unwind label %6 -5: ; preds = %18, %2 - %6 = landingpad { ptr, i32 } +6: ; preds = %19, %2 + %7 = landingpad { ptr, i32 } cleanup - %7 = load i8, ptr %.0.sroa.gep, align 8, !range !216, !alias.scope !263, !noundef !4 - %8 = icmp eq i8 %7, 2 - br i1 %8, label %"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17hcd416ec304847a9cE.exit", label %9 + %8 = load i8, ptr %.0.sroa.gep, align 8, !range !216, !alias.scope !263, !noundef !4 + %9 = icmp eq i8 %8, 2 + br i1 %9, label %"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17hcd416ec304847a9cE.exit", label %10 -9: ; preds = %5 - invoke void @"_ZN91_$LT$tracing_subscriber..registry..sharded..CloseGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h59c42e01bdc8d368E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %3) - to label %"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17hcd416ec304847a9cE.exit" unwind label %20 +10: ; preds = %6 + invoke void @"_ZN91_$LT$tracing_subscriber..registry..sharded..CloseGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h59c42e01bdc8d368E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) + to label %"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17hcd416ec304847a9cE.exit" unwind label %21 -10: ; preds = %2 - br i1 %4, label %11, label %13 +11: ; preds = %2 + br i1 %5, label %12, label %14 -11: ; preds = %10 - %12 = load i8, ptr %.0.sroa.gep, align 8, !range !216, !noundef !4 - %.not = icmp eq i8 %12, 2 - br i1 %.not, label %18, label %17 +12: ; preds = %11 + %13 = load i8, ptr %.0.sroa.gep, align 8, !range !216, !noundef !4 + %.not = icmp eq i8 %13, 2 + br i1 %.not, label %19, label %18 -13: ; preds = %18, %10 - %14 = load i8, ptr %.0.sroa.gep, align 8, !range !216, !alias.scope !266, !noundef !4 - %15 = icmp eq i8 %14, 2 - br i1 %15, label %"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17hcd416ec304847a9cE.exit15", label %16 +14: ; preds = %19, %11 + %15 = load i8, ptr %.0.sroa.gep, align 8, !range !216, !alias.scope !266, !noundef !4 + %16 = icmp eq i8 %15, 2 + br i1 %16, label %"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17hcd416ec304847a9cE.exit15", label %17 -16: ; preds = %13 - call void @"_ZN91_$LT$tracing_subscriber..registry..sharded..CloseGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h59c42e01bdc8d368E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %3) +17: ; preds = %14 + call void @"_ZN91_$LT$tracing_subscriber..registry..sharded..CloseGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h59c42e01bdc8d368E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) br label %"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17hcd416ec304847a9cE.exit15" -"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17hcd416ec304847a9cE.exit15": ; preds = %13, %16 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) - ret i1 %4 +"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17hcd416ec304847a9cE.exit15": ; preds = %14, %17 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) + ret i1 %5 -17: ; preds = %11 +18: ; preds = %12 store i8 1, ptr %.0.sroa.gep, align 8 - br label %18 + br label %19 -18: ; preds = %17, %11 - %19 = getelementptr inbounds i8, ptr %0, i64 568 - invoke void @"_ZN124_$LT$tracing_subscriber..fmt..fmt_layer..Layer$LT$S$C$N$C$E$C$W$GT$$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$8on_close17h599c39ab6b5ce2c0E"(ptr noalias noundef nonnull readonly align 1 dereferenceable(12) %19, i64 noundef %1, ptr noundef nonnull align 8 %0, i64 noundef 0) - to label %13 unwind label %5 +19: ; preds = %18, %12 + %20 = getelementptr inbounds i8, ptr %0, i64 568 + invoke void @"_ZN124_$LT$tracing_subscriber..fmt..fmt_layer..Layer$LT$S$C$N$C$E$C$W$GT$$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$8on_close17h599c39ab6b5ce2c0E"(ptr noalias noundef nonnull readonly align 1 dereferenceable(12) %20, i64 noundef %1, ptr noundef nonnull align 8 %0, i64 noundef 0) + to label %14 unwind label %6 -20: ; preds = %9 - %21 = landingpad { ptr, i32 } +21: ; preds = %10 + %22 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #42 unreachable -"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17hcd416ec304847a9cE.exit": ; preds = %5, %9 - resume { ptr, i32 } %6 +"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17hcd416ec304847a9cE.exit": ; preds = %6, %10 + resume { ptr, i32 } %7 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable diff --git a/bench/wasmtime-rs/optimized/2mkio291uuli263d.ll b/bench/wasmtime-rs/optimized/2mkio291uuli263d.ll index a7de64a8e86..ffefae9dbf0 100644 --- a/bench/wasmtime-rs/optimized/2mkio291uuli263d.ll +++ b/bench/wasmtime-rs/optimized/2mkio291uuli263d.ll @@ -281,17 +281,18 @@ define hidden { ptr, i64 } @"_ZN3std4path95_$LT$impl$u20$core..convert..AsRef$LT define hidden void @_ZN3std4sync4mpmc12sync_channel17haf3901600b461070E(ptr noalias nocapture noundef writeonly sret({ { { i64, [1 x i64] } }, { { i64, [1 x i64] } } }) align 8 dereferenceable(32) %0, i64 noundef %1) unnamed_addr #3 personality ptr @rust_eh_personality { %3 = alloca { { { { i64 }, [15 x i64] }, { { i64 }, [15 x i64] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 } } } }, { i8 }, [7 x i8] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 } } } }, { i8 }, [7 x i8] }, i64, i64, i64, { { { { ptr, i64 } }, {} }, {} }, [11 x i64] }, { i64 }, { i64 }, { i8 }, [111 x i8] }, align 128 %4 = alloca { { { { { i32 } }, { { i8 } }, [3 x i8], { { { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 } }, { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 } }, i8, [7 x i8] } } }, {} }, { i64 }, { i64 }, { i8 }, [7 x i8] }, align 8 - %5 = icmp eq i64 %1, 0 - br i1 %5, label %6, label %18 + %5 = alloca { { { i64 }, [15 x i64] }, { { i64 }, [15 x i64] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 } } } }, { i8 }, [7 x i8] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 } } } }, { i8 }, [7 x i8] }, i64, i64, i64, { { { { ptr, i64 } }, {} }, {} }, [11 x i64] }, align 128 + %6 = icmp eq i64 %1, 0 + br i1 %6, label %7, label %19 -6: ; preds = %2 +7: ; preds = %2 call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %4), !noalias !42 - %7 = getelementptr inbounds i8, ptr %4, i64 112 - store i64 1, ptr %7, align 8, !noalias !42 - %8 = getelementptr inbounds i8, ptr %4, i64 120 + %8 = getelementptr inbounds i8, ptr %4, i64 112 store i64 1, ptr %8, align 8, !noalias !42 - %9 = getelementptr inbounds i8, ptr %4, i64 128 - store i8 0, ptr %9, align 8, !noalias !42 + %9 = getelementptr inbounds i8, ptr %4, i64 120 + store i64 1, ptr %9, align 8, !noalias !42 + %10 = getelementptr inbounds i8, ptr %4, i64 128 + store i8 0, ptr %10, align 8, !noalias !42 store i32 0, ptr %4, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 4 store i8 0, ptr %.sroa.4.0..sroa_idx, align 4 @@ -315,93 +316,96 @@ define hidden void @_ZN3std4sync4mpmc12sync_channel17haf3901600b461070E(ptr noal store i64 0, ptr %.sroa.17.0..sroa_idx, align 8 %.sroa.18.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 104 store i8 0, ptr %.sroa.18.0..sroa_idx, align 8 - %10 = invoke { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17hb4f01ccf52c1821cE.llvm.12646480017171244602(ptr noalias noundef nonnull readonly align 1 @anon.20743d27dff1ab677f85e911d9ad6f4c.16.llvm.12646480017171244602, i64 noundef 8, i64 noundef 136, i1 noundef zeroext false) - to label %.noexc.i unwind label %14, !noalias !42 + %11 = invoke { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17hb4f01ccf52c1821cE.llvm.12646480017171244602(ptr noalias noundef nonnull readonly align 1 @anon.20743d27dff1ab677f85e911d9ad6f4c.16.llvm.12646480017171244602, i64 noundef 8, i64 noundef 136, i1 noundef zeroext false) + to label %.noexc.i unwind label %15, !noalias !42 -.noexc.i: ; preds = %6 - %11 = extractvalue { ptr, i64 } %10, 0 - %12 = icmp eq ptr %11, null - br i1 %12, label %13, label %_ZN3std4sync4mpmc7counter3new17h12915be357100bbdE.exit +.noexc.i: ; preds = %7 + %12 = extractvalue { ptr, i64 } %11, 0 + %13 = icmp eq ptr %12, null + br i1 %13, label %14, label %_ZN3std4sync4mpmc7counter3new17h12915be357100bbdE.exit -13: ; preds = %.noexc.i +14: ; preds = %.noexc.i invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 136) #34 - to label %.noexc7.i unwind label %14, !noalias !42 + to label %.noexc7.i unwind label %15, !noalias !42 -.noexc7.i: ; preds = %13 +.noexc7.i: ; preds = %14 unreachable -14: ; preds = %13, %6 - %15 = landingpad { ptr, i32 } +15: ; preds = %14, %7 + %16 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr49drop_in_place$LT$std..sync..mpmc..zero..Inner$GT$17hee5f556e0dc294e7E.llvm.1979644106479486265"(ptr noalias noundef nonnull align 8 dereferenceable(104) %.sroa.649.0..sroa_idx) - to label %common.resume unwind label %16, !noalias !42 + to label %common.resume unwind label %17, !noalias !42 -16: ; preds = %14 - %17 = landingpad { ptr, i32 } +17: ; preds = %15 + %18 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #36, !noalias !42 unreachable -common.resume: ; preds = %26, %14 - %common.resume.op = phi { ptr, i32 } [ %15, %14 ], [ %27, %26 ] +common.resume: ; preds = %27, %15 + %common.resume.op = phi { ptr, i32 } [ %16, %15 ], [ %28, %27 ] resume { ptr, i32 } %common.resume.op _ZN3std4sync4mpmc7counter3new17h12915be357100bbdE.exit: ; preds = %.noexc.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %11, ptr noundef nonnull align 8 dereferenceable(136) %4, i64 136, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %12, ptr noundef nonnull align 8 dereferenceable(136) %4, i64 136, i1 false) call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %4), !noalias !42 - br label %30 + br label %31 -18: ; preds = %2 +19: ; preds = %2 + call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %5) + call void @"_ZN3std4sync4mpmc5array16Channel$LT$T$GT$13with_capacity17hfd5fc82f4be1e809E"(ptr noalias nocapture noundef nonnull sret({ { { i64 }, [15 x i64] }, { { i64 }, [15 x i64] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 } } } }, { i8 }, [7 x i8] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 } } } }, { i8 }, [7 x i8] }, i64, i64, i64, { { { { ptr, i64 } }, {} }, {} }, [11 x i64] }) align 128 dereferenceable(512) %5, i64 noundef %1) call void @llvm.lifetime.start.p0(i64 640, ptr nonnull %3), !noalias !45 - call void @"_ZN3std4sync4mpmc5array16Channel$LT$T$GT$13with_capacity17hfd5fc82f4be1e809E"(ptr noalias nocapture noundef nonnull sret({ { { i64 }, [15 x i64] }, { { i64 }, [15 x i64] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 } } } }, { i8 }, [7 x i8] }, { { { { i32 } }, { { i8 } }, [3 x i8], { { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 } } } }, { i8 }, [7 x i8] }, i64, i64, i64, { { { { ptr, i64 } }, {} }, {} }, [11 x i64] }) align 128 dereferenceable(512) %3, i64 noundef %1) - %19 = getelementptr inbounds i8, ptr %3, i64 512 - store i64 1, ptr %19, align 128, !noalias !45 - %20 = getelementptr inbounds i8, ptr %3, i64 520 - store i64 1, ptr %20, align 8, !noalias !45 - %21 = getelementptr inbounds i8, ptr %3, i64 528 - store i8 0, ptr %21, align 16, !noalias !45 - %22 = invoke { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17hb4f01ccf52c1821cE.llvm.12646480017171244602(ptr noalias noundef nonnull readonly align 1 @anon.20743d27dff1ab677f85e911d9ad6f4c.16.llvm.12646480017171244602, i64 noundef 128, i64 noundef 640, i1 noundef zeroext false) - to label %.noexc.i47 unwind label %26, !noalias !45 - -.noexc.i47: ; preds = %18 - %23 = extractvalue { ptr, i64 } %22, 0 - %24 = icmp eq ptr %23, null - br i1 %24, label %25, label %_ZN3std4sync4mpmc7counter3new17ha4e8a9b186736aabE.exit - -25: ; preds = %.noexc.i47 + %20 = getelementptr inbounds i8, ptr %3, i64 512 + store i64 1, ptr %20, align 128, !noalias !45 + %21 = getelementptr inbounds i8, ptr %3, i64 520 + store i64 1, ptr %21, align 8, !noalias !45 + %22 = getelementptr inbounds i8, ptr %3, i64 528 + store i8 0, ptr %22, align 16, !noalias !45 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 128 dereferenceable(512) %3, ptr noundef nonnull align 128 dereferenceable(512) %5, i64 512, i1 false) + %23 = invoke { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17hb4f01ccf52c1821cE.llvm.12646480017171244602(ptr noalias noundef nonnull readonly align 1 @anon.20743d27dff1ab677f85e911d9ad6f4c.16.llvm.12646480017171244602, i64 noundef 128, i64 noundef 640, i1 noundef zeroext false) + to label %.noexc.i47 unwind label %27, !noalias !45 + +.noexc.i47: ; preds = %19 + %24 = extractvalue { ptr, i64 } %23, 0 + %25 = icmp eq ptr %24, null + br i1 %25, label %26, label %_ZN3std4sync4mpmc7counter3new17ha4e8a9b186736aabE.exit + +26: ; preds = %.noexc.i47 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 128, i64 noundef 640) #34 - to label %.noexc7.i48 unwind label %26, !noalias !45 + to label %.noexc7.i48 unwind label %27, !noalias !45 -.noexc7.i48: ; preds = %25 +.noexc7.i48: ; preds = %26 unreachable -26: ; preds = %25, %18 - %27 = landingpad { ptr, i32 } +27: ; preds = %26, %19 + %28 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr94drop_in_place$LT$std..sync..mpmc..array..Channel$LT$wasmtime_cache..worker..CacheEvent$GT$$GT$17h20584ff9525d645cE.llvm.1979644106479486265"(ptr noalias noundef nonnull align 128 dereferenceable(512) %3) - to label %common.resume unwind label %28, !noalias !45 + to label %common.resume unwind label %29, !noalias !45 -28: ; preds = %26 - %29 = landingpad { ptr, i32 } +29: ; preds = %27 + %30 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #36, !noalias !45 unreachable _ZN3std4sync4mpmc7counter3new17ha4e8a9b186736aabE.exit: ; preds = %.noexc.i47 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 128 dereferenceable(640) %23, ptr noundef nonnull align 128 dereferenceable(640) %3, i64 640, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 128 dereferenceable(640) %24, ptr noundef nonnull align 128 dereferenceable(640) %3, i64 640, i1 false) call void @llvm.lifetime.end.p0(i64 640, ptr nonnull %3), !noalias !45 - br label %30 + call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %5) + br label %31 -30: ; preds = %_ZN3std4sync4mpmc7counter3new17ha4e8a9b186736aabE.exit, %_ZN3std4sync4mpmc7counter3new17h12915be357100bbdE.exit +31: ; preds = %_ZN3std4sync4mpmc7counter3new17ha4e8a9b186736aabE.exit, %_ZN3std4sync4mpmc7counter3new17h12915be357100bbdE.exit %.sink56 = phi i64 [ 0, %_ZN3std4sync4mpmc7counter3new17ha4e8a9b186736aabE.exit ], [ 2, %_ZN3std4sync4mpmc7counter3new17h12915be357100bbdE.exit ] - %.sink54 = phi ptr [ %23, %_ZN3std4sync4mpmc7counter3new17ha4e8a9b186736aabE.exit ], [ %11, %_ZN3std4sync4mpmc7counter3new17h12915be357100bbdE.exit ] + %.sink54 = phi ptr [ %24, %_ZN3std4sync4mpmc7counter3new17ha4e8a9b186736aabE.exit ], [ %12, %_ZN3std4sync4mpmc7counter3new17h12915be357100bbdE.exit ] store i64 %.sink56, ptr %0, align 8 - %31 = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %.sink54, ptr %31, align 8 - %32 = getelementptr inbounds i8, ptr %0, i64 16 - store i64 %.sink56, ptr %32, align 8 - %33 = getelementptr inbounds i8, ptr %0, i64 24 - store ptr %.sink54, ptr %33, align 8 + %32 = getelementptr inbounds i8, ptr %0, i64 8 + store ptr %.sink54, ptr %32, align 8 + %33 = getelementptr inbounds i8, ptr %0, i64 16 + store i64 %.sink56, ptr %33, align 8 + %34 = getelementptr inbounds i8, ptr %0, i64 24 + store ptr %.sink54, ptr %34, align 8 ret void } diff --git a/bench/wasmtime-rs/optimized/526qiozl2mm0d4p0.ll b/bench/wasmtime-rs/optimized/526qiozl2mm0d4p0.ll index 1c29d0b5e84..490aa8bc0ab 100644 --- a/bench/wasmtime-rs/optimized/526qiozl2mm0d4p0.ll +++ b/bench/wasmtime-rs/optimized/526qiozl2mm0d4p0.ll @@ -12256,98 +12256,100 @@ define hidden void @_ZN16wasmtime_environ4fact5traps11TrapSection6append17h0b156 %4 = alloca { [1 x i64], i64, [1 x i64] }, align 8 %5 = alloca { i32, [1 x i32], { { i64, ptr, {} }, i64 } }, align 8 %6 = alloca { { ptr, ptr, i64, ptr, {}, { {} } }, { ptr, ptr } }, align 8 - %7 = getelementptr inbounds i8, ptr %2, i64 16 - %8 = load i64, ptr %7, align 8, !noundef !49 - %9 = icmp eq i64 %8, 0 - br i1 %9, label %10, label %19 + %7 = alloca { { i64, ptr, {} }, i64 }, align 8 + %8 = getelementptr inbounds i8, ptr %2, i64 16 + %9 = load i64, ptr %8, align 8, !noundef !49 + %10 = icmp eq i64 %9, 0 + br i1 %10, label %11, label %20 -10: ; preds = %3 +11: ; preds = %3 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !3295 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h9e56c4040f628397E.llvm.11357125133562502446"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %2) - %11 = getelementptr inbounds i8, ptr %4, i64 8 - %12 = load i64, ptr %11, align 8, !range !796, !noalias !3295, !noundef !49 - %.not.i.i.i = icmp eq i64 %12, 0 - br i1 %.not.i.i.i, label %"_ZN4core3ptr95drop_in_place$LT$alloc..vec..Vec$LT$$LP$usize$C$wasmtime_environ..fact..traps..Trap$RP$$GT$$GT$17hf34ddab187e6d4bdE.exit", label %13 + %12 = getelementptr inbounds i8, ptr %4, i64 8 + %13 = load i64, ptr %12, align 8, !range !796, !noalias !3295, !noundef !49 + %.not.i.i.i = icmp eq i64 %13, 0 + br i1 %.not.i.i.i, label %"_ZN4core3ptr95drop_in_place$LT$alloc..vec..Vec$LT$$LP$usize$C$wasmtime_environ..fact..traps..Trap$RP$$GT$$GT$17hf34ddab187e6d4bdE.exit", label %14 -13: ; preds = %10 - %14 = getelementptr inbounds i8, ptr %4, i64 16 - %15 = load i64, ptr %14, align 8, !noalias !3295, !noundef !49 - %16 = icmp eq i64 %15, 0 - br i1 %16, label %"_ZN4core3ptr95drop_in_place$LT$alloc..vec..Vec$LT$$LP$usize$C$wasmtime_environ..fact..traps..Trap$RP$$GT$$GT$17hf34ddab187e6d4bdE.exit", label %17 +14: ; preds = %11 + %15 = getelementptr inbounds i8, ptr %4, i64 16 + %16 = load i64, ptr %15, align 8, !noalias !3295, !noundef !49 + %17 = icmp eq i64 %16, 0 + br i1 %17, label %"_ZN4core3ptr95drop_in_place$LT$alloc..vec..Vec$LT$$LP$usize$C$wasmtime_environ..fact..traps..Trap$RP$$GT$$GT$17hf34ddab187e6d4bdE.exit", label %18 -17: ; preds = %13 - %18 = load ptr, ptr %4, align 8, !noalias !3295, !nonnull !49, !noundef !49 - tail call void @__rust_dealloc(ptr noundef nonnull %18, i64 noundef %15, i64 noundef %12) #45 +18: ; preds = %14 + %19 = load ptr, ptr %4, align 8, !noalias !3295, !nonnull !49, !noundef !49 + tail call void @__rust_dealloc(ptr noundef nonnull %19, i64 noundef %16, i64 noundef %13) #45 br label %"_ZN4core3ptr95drop_in_place$LT$alloc..vec..Vec$LT$$LP$usize$C$wasmtime_environ..fact..traps..Trap$RP$$GT$$GT$17hf34ddab187e6d4bdE.exit" -"_ZN4core3ptr95drop_in_place$LT$alloc..vec..Vec$LT$$LP$usize$C$wasmtime_environ..fact..traps..Trap$RP$$GT$$GT$17hf34ddab187e6d4bdE.exit": ; preds = %10, %13, %17 +"_ZN4core3ptr95drop_in_place$LT$alloc..vec..Vec$LT$$LP$usize$C$wasmtime_environ..fact..traps..Trap$RP$$GT$$GT$17hf34ddab187e6d4bdE.exit": ; preds = %11, %14, %18 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !3295 - br label %42 + br label %43 -19: ; preds = %3 +20: ; preds = %3 %.sroa.01.0.copyload = load i64, ptr %2, align 8 %.sroa.42.0..sroa_idx = getelementptr inbounds i8, ptr %2, i64 8 %.sroa.42.0.copyload = load ptr, ptr %.sroa.42.0..sroa_idx, align 8, !nonnull !49, !noundef !49 - %20 = getelementptr inbounds { i64, { i64, [2 x i64] } }, ptr %.sroa.42.0.copyload, i64 %8 - %21 = getelementptr inbounds i8, ptr %0, i64 48 + %21 = getelementptr inbounds { i64, { i64, [2 x i64] } }, ptr %.sroa.42.0.copyload, i64 %9 + %22 = getelementptr inbounds i8, ptr %0, i64 48 store ptr %.sroa.42.0.copyload, ptr %6, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %6, i64 8 store ptr %.sroa.42.0.copyload, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %6, i64 16 store i64 %.sroa.01.0.copyload, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %6, i64 24 - store ptr %20, ptr %.sroa.6.0..sroa_idx, align 8 - %22 = getelementptr inbounds i8, ptr %6, i64 32 - store ptr %21, ptr %22, align 8 - %23 = getelementptr inbounds i8, ptr %6, i64 40 - store ptr %0, ptr %23, align 8 - %24 = getelementptr inbounds i8, ptr %5, i64 8 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) - call void @"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9from_iter17hccad53bd9cdcb3abE"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr, {} }, i64 }) align 8 dereferenceable(24) %24, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %6) + store ptr %21, ptr %.sroa.6.0..sroa_idx, align 8 + %23 = getelementptr inbounds i8, ptr %6, i64 32 + store ptr %22, ptr %23, align 8 + %24 = getelementptr inbounds i8, ptr %6, i64 40 + store ptr %0, ptr %24, align 8 + call void @"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9from_iter17hccad53bd9cdcb3abE"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr, {} }, i64 }) align 8 dereferenceable(24) %7, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %6) %25 = getelementptr inbounds i8, ptr %0, i64 24 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) store i32 %1, ptr %5, align 8 - %26 = getelementptr inbounds i8, ptr %0, i64 40 - %27 = load i64, ptr %26, align 8, !alias.scope !3302, !noalias !3305, !noundef !49 - %28 = load i64, ptr %25, align 8, !alias.scope !3302, !noalias !3305, !noundef !49 - %29 = icmp eq i64 %27, %28 - br i1 %29, label %30, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h69289a98363b61f7E.llvm.8972240245584090867.exit" - -30: ; preds = %19 - invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17hc77390676f472466E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %25, i64 noundef %27) - to label %._crit_edge.i unwind label %31, !noalias !3305 - -._crit_edge.i: ; preds = %30 - %.pre.i = load i64, ptr %26, align 8, !alias.scope !3302, !noalias !3305 + %26 = getelementptr inbounds i8, ptr %5, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false) + %27 = getelementptr inbounds i8, ptr %0, i64 40 + %28 = load i64, ptr %27, align 8, !alias.scope !3302, !noalias !3305, !noundef !49 + %29 = load i64, ptr %25, align 8, !alias.scope !3302, !noalias !3305, !noundef !49 + %30 = icmp eq i64 %28, %29 + br i1 %30, label %31, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h69289a98363b61f7E.llvm.8972240245584090867.exit" + +31: ; preds = %20 + invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17hc77390676f472466E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %25, i64 noundef %28) + to label %._crit_edge.i unwind label %32, !noalias !3305 + +._crit_edge.i: ; preds = %31 + %.pre.i = load i64, ptr %27, align 8, !alias.scope !3302, !noalias !3305 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h69289a98363b61f7E.llvm.8972240245584090867.exit" -31: ; preds = %30 - %32 = landingpad { ptr, i32 } +32: ; preds = %31 + %33 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr79drop_in_place$LT$$LP$u32$C$alloc..vec..Vec$LT$$LP$usize$C$usize$RP$$GT$$RP$$GT$17h1d466bf4d6eb23bbE.llvm.8972240245584090867"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) #42 - to label %35 unwind label %33 + to label %36 unwind label %34 -33: ; preds = %31 - %34 = landingpad { ptr, i32 } +34: ; preds = %32 + %35 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #44 unreachable -35: ; preds = %31 - resume { ptr, i32 } %32 +36: ; preds = %32 + resume { ptr, i32 } %33 -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h69289a98363b61f7E.llvm.8972240245584090867.exit": ; preds = %19, %._crit_edge.i - %36 = phi i64 [ %.pre.i, %._crit_edge.i ], [ %27, %19 ] - %37 = getelementptr inbounds i8, ptr %0, i64 32 - %38 = load ptr, ptr %37, align 8, !alias.scope !3302, !noalias !3305, !nonnull !49, !noundef !49 - %39 = getelementptr inbounds { i32, [1 x i32], { { i64, ptr, {} }, i64 } }, ptr %38, i64 %36 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(32) %5, i64 32, i1 false) - %40 = load i64, ptr %26, align 8, !alias.scope !3302, !noalias !3305, !noundef !49 - %41 = add i64 %40, 1 - store i64 %41, ptr %26, align 8, !alias.scope !3302, !noalias !3305 +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h69289a98363b61f7E.llvm.8972240245584090867.exit": ; preds = %20, %._crit_edge.i + %37 = phi i64 [ %.pre.i, %._crit_edge.i ], [ %28, %20 ] + %38 = getelementptr inbounds i8, ptr %0, i64 32 + %39 = load ptr, ptr %38, align 8, !alias.scope !3302, !noalias !3305, !nonnull !49, !noundef !49 + %40 = getelementptr inbounds { i32, [1 x i32], { { i64, ptr, {} }, i64 } }, ptr %39, i64 %37 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(32) %5, i64 32, i1 false) + %41 = load i64, ptr %27, align 8, !alias.scope !3302, !noalias !3305, !noundef !49 + %42 = add i64 %41, 1 + store i64 %42, ptr %27, align 8, !alias.scope !3302, !noalias !3305 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) - br label %42 + br label %43 -42: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h69289a98363b61f7E.llvm.8972240245584090867.exit", %"_ZN4core3ptr95drop_in_place$LT$alloc..vec..Vec$LT$$LP$usize$C$wasmtime_environ..fact..traps..Trap$RP$$GT$$GT$17hf34ddab187e6d4bdE.exit" +43: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h69289a98363b61f7E.llvm.8972240245584090867.exit", %"_ZN4core3ptr95drop_in_place$LT$alloc..vec..Vec$LT$$LP$usize$C$wasmtime_environ..fact..traps..Trap$RP$$GT$$GT$17hf34ddab187e6d4bdE.exit" ret void } diff --git a/bench/wasmtime-rs/optimized/rpltamrj260p6v4.ll b/bench/wasmtime-rs/optimized/rpltamrj260p6v4.ll index caa79e64925..e773407b44e 100644 --- a/bench/wasmtime-rs/optimized/rpltamrj260p6v4.ll +++ b/bench/wasmtime-rs/optimized/rpltamrj260p6v4.ll @@ -4189,74 +4189,78 @@ define internal fastcc noundef i32 @"_ZN17cranelift_codegen3isa3x645lower4isle25 ; Function Attrs: inlinehint nonlazybind uwtable define internal fastcc void @"_ZN17cranelift_codegen3isa3x645lower4isle255_$LT$impl$u20$cranelift_codegen..isa..x64..lower..isle..generated_code..Context$u20$for$u20$cranelift_codegen..machinst..isle..IsleContext$LT$cranelift_codegen..isa..x64..lower..isle..generated_code..MInst$C$cranelift_codegen..isa..x64..X64Backend$GT$$GT$25perm_from_mask_with_zeros17ha09be5dbeae81333E"(ptr noalias nocapture noundef nonnull writeonly align 4 dereferenceable(12) %0, ptr %.0.val, ptr %.8.val, i64 %.16.val) unnamed_addr #1 personality ptr @rust_eh_personality { %2 = alloca { i64, [3 x i64] }, align 8 - %3 = alloca { i64, [3 x i64] }, align 8 - %4 = alloca { { { i64, ptr, {} }, i64 } }, align 8 - %5 = icmp ne ptr %.8.val, null - tail call void @llvm.assume(i1 %5) - %6 = getelementptr inbounds i8, ptr %.8.val, i64 %.16.val - br label %7 + %3 = alloca { { i64, ptr, {} }, i64 }, align 8 + %4 = alloca { i64, [3 x i64] }, align 8 + %5 = alloca { { { i64, ptr, {} }, i64 } }, align 8 + %6 = icmp ne ptr %.8.val, null + tail call void @llvm.assume(i1 %6) + %7 = getelementptr inbounds i8, ptr %.8.val, i64 %.16.val + br label %8 -7: ; preds = %9, %1 - %8 = phi ptr [ %10, %9 ], [ %.8.val, %1 ] - %.not.not.not.i.not = icmp eq ptr %8, %6 - br i1 %.not.not.not.i.not, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h6f7b9bc39581ac1dE.exit", label %9 +8: ; preds = %10, %1 + %9 = phi ptr [ %11, %10 ], [ %.8.val, %1 ] + %.not.not.not.i.not = icmp eq ptr %9, %7 + br i1 %.not.not.not.i.not, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h6f7b9bc39581ac1dE.exit", label %10 -9: ; preds = %7 - %10 = getelementptr inbounds i8, ptr %8, i64 1 - %.val.i = load i8, ptr %8, align 1, !noalias !504, !noundef !4 - %11 = icmp ugt i8 %.val.i, 31 - br i1 %11, label %12, label %7 +10: ; preds = %8 + %11 = getelementptr inbounds i8, ptr %9, i64 1 + %.val.i = load i8, ptr %9, align 1, !noalias !504, !noundef !4 + %12 = icmp ugt i8 %.val.i, 31 + br i1 %12, label %13, label %8 -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h6f7b9bc39581ac1dE.exit": ; preds = %7 +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h6f7b9bc39581ac1dE.exit": ; preds = %8 store i32 0, ptr %0, align 4 - br label %17 + br label %18 -12: ; preds = %9 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) - call void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h96c04076ad3da3a3E.llvm.14502953478370073462"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr, {} }, i64 }) align 8 dereferenceable(24) %4, ptr noundef nonnull %.8.val, ptr noundef nonnull %6) - %13 = getelementptr inbounds i8, ptr %2, i64 8 +13: ; preds = %10 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) + call void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h96c04076ad3da3a3E.llvm.14502953478370073462"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr, {} }, i64 }) align 8 dereferenceable(24) %3, ptr noundef nonnull %.8.val, ptr noundef nonnull %7) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) + %14 = getelementptr inbounds i8, ptr %2, i64 8 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) - invoke void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h45a0e1de43329eb1E.llvm.14502953478370073462"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr, {} }, i64 }) align 8 dereferenceable(24) %13, ptr noundef nonnull %.8.val, ptr noundef nonnull %6) - to label %.noexc unwind label %24 + invoke void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h45a0e1de43329eb1E.llvm.14502953478370073462"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr, {} }, i64 }) align 8 dereferenceable(24) %14, ptr noundef nonnull %.8.val, ptr noundef nonnull %7) + to label %.noexc unwind label %25 -.noexc: ; preds = %12 - %14 = icmp ne ptr %.0.val, null - tail call void @llvm.assume(i1 %14) +.noexc: ; preds = %13 + %15 = icmp ne ptr %.0.val, null + tail call void @llvm.assume(i1 %15) store i64 -9223372036854775807, ptr %2, align 8 - %15 = getelementptr inbounds i8, ptr %.0.val, i64 1008 - %16 = invoke noundef i32 @_ZN17cranelift_codegen8machinst5vcode14VCodeConstants6insert17hfa770df5e24ea1cfE(ptr noalias noundef nonnull align 8 dereferenceable(168) %15, ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %2) - to label %18 unwind label %24 + %16 = getelementptr inbounds i8, ptr %.0.val, i64 1008 + %17 = invoke noundef i32 @_ZN17cranelift_codegen8machinst5vcode14VCodeConstants6insert17hfa770df5e24ea1cfE(ptr noalias noundef nonnull align 8 dereferenceable(168) %16, ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %2) + to label %19 unwind label %25 -17: ; preds = %18, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h6f7b9bc39581ac1dE.exit" +18: ; preds = %19, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h6f7b9bc39581ac1dE.exit" ret void -18: ; preds = %.noexc +19: ; preds = %.noexc call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) - %19 = getelementptr inbounds i8, ptr %3, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) - store i64 -9223372036854775807, ptr %3, align 8 - %20 = call noundef i32 @_ZN17cranelift_codegen8machinst5vcode14VCodeConstants6insert17hfa770df5e24ea1cfE(ptr noalias noundef nonnull align 8 dereferenceable(168) %15, ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %3) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) - %21 = getelementptr inbounds i8, ptr %0, i64 4 - store i32 %16, ptr %21, align 4 - %22 = getelementptr inbounds i8, ptr %0, i64 8 - store i32 %20, ptr %22, align 4 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) + %20 = getelementptr inbounds i8, ptr %4, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) + store i64 -9223372036854775807, ptr %4, align 8 + %21 = call noundef i32 @_ZN17cranelift_codegen8machinst5vcode14VCodeConstants6insert17hfa770df5e24ea1cfE(ptr noalias noundef nonnull align 8 dereferenceable(168) %16, ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %4) + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) + %22 = getelementptr inbounds i8, ptr %0, i64 4 + store i32 %17, ptr %22, align 4 + %23 = getelementptr inbounds i8, ptr %0, i64 8 + store i32 %21, ptr %23, align 4 store i32 1, ptr %0, align 4 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) - br label %17 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) + br label %18 -23: ; preds = %24 +24: ; preds = %25 resume { ptr, i32 } %lpad.thr_comm -24: ; preds = %12, %.noexc +25: ; preds = %13, %.noexc %lpad.thr_comm = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr66drop_in_place$LT$cranelift_codegen..ir..constant..ConstantData$GT$17h9c267228870c31e7E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) #22 - to label %23 unwind label %25 + invoke void @"_ZN4core3ptr66drop_in_place$LT$cranelift_codegen..ir..constant..ConstantData$GT$17h9c267228870c31e7E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) #22 + to label %24 unwind label %26 -25: ; preds = %24 - %26 = landingpad { ptr, i32 } +26: ; preds = %25 + %27 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #23 unreachable diff --git a/bench/yosys/optimized/ezsat.ll b/bench/yosys/optimized/ezsat.ll index b279499db83..2539c85cd54 100644 --- a/bench/yosys/optimized/ezsat.ll +++ b/bench/yosys/optimized/ezsat.ll @@ -10357,53 +10357,56 @@ define noundef i32 @_ZN5ezSAT15vec_le_unsignedERKSt6vectorIiSaIiEES4_(ptr nounde %4 = alloca i32, align 4 %5 = alloca i32, align 4 %6 = alloca i32, align 4 - %7 = alloca %"struct.ezSAT::_V", align 8 + %7 = alloca i32, align 4 %8 = alloca %"struct.ezSAT::_V", align 8 %9 = alloca %"struct.ezSAT::_V", align 8 %10 = alloca %"struct.ezSAT::_V", align 8 %11 = alloca %"struct.ezSAT::_V", align 8 %12 = alloca %"struct.ezSAT::_V", align 8 - call void @_ZN5ezSAT7vec_cmpERKSt6vectorIiSaIiEES4_RiS5_S5_S5_(ptr noundef nonnull align 8 dereferenceable(284) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %6) - %13 = getelementptr inbounds i8, ptr %7, i64 8 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #28 - %14 = load i32, ptr %6, align 4 + %13 = alloca %"struct.ezSAT::_V", align 8 + call void @_ZN5ezSAT7vec_cmpERKSt6vectorIiSaIiEES4_RiS5_S5_S5_(ptr noundef nonnull align 8 dereferenceable(284) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %7) + %14 = load i32, ptr %4, align 4 store i32 %14, ptr %8, align 8 %15 = getelementptr inbounds i8, ptr %8, i64 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #28 - store i32 0, ptr %9, align 8 - %16 = getelementptr inbounds i8, ptr %9, i64 8 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #28 - store i32 0, ptr %10, align 8 - %17 = getelementptr inbounds i8, ptr %10, i64 8 + %16 = load i32, ptr %7, align 4 + store i32 %16, ptr %9, align 8 + %17 = getelementptr inbounds i8, ptr %9, i64 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #28 - store i32 0, ptr %11, align 8 - %18 = getelementptr inbounds i8, ptr %11, i64 8 + store i32 0, ptr %10, align 8 + %18 = getelementptr inbounds i8, ptr %10, i64 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #28 - store i32 0, ptr %12, align 8 - %19 = getelementptr inbounds i8, ptr %12, i64 8 + store i32 0, ptr %11, align 8 + %19 = getelementptr inbounds i8, ptr %11, i64 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #28 - %20 = invoke noundef i32 @_ZN5ezSAT2ORENS_2_VES0_S0_S0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(284) %0, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12) - to label %21 unwind label %22 + store i32 0, ptr %12, align 8 + %20 = getelementptr inbounds i8, ptr %12, i64 8 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #28 + store i32 0, ptr %13, align 8 + %21 = getelementptr inbounds i8, ptr %13, i64 8 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #28 + %22 = invoke noundef i32 @_ZN5ezSAT2ORENS_2_VES0_S0_S0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(284) %0, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13) + to label %23 unwind label %24 -21: ; preds = %3 +23: ; preds = %3 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #28 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #28 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #28 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #28 - ret i32 %20 + ret i32 %22 -22: ; preds = %3 - %23 = landingpad { ptr, i32 } +24: ; preds = %3 + %25 = landingpad { ptr, i32 } cleanup + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #28 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #28 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #28 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #28 - resume { ptr, i32 } %23 + resume { ptr, i32 } %25 } ; Function Attrs: mustprogress uwtable @@ -10411,22 +10414,25 @@ define noundef i32 @_ZN5ezSAT15vec_ge_unsignedERKSt6vectorIiSaIiEES4_(ptr nounde %4 = alloca i32, align 4 %5 = alloca i32, align 4 %6 = alloca i32, align 4 - %7 = alloca %"struct.ezSAT::_V", align 8 - call void @_ZN5ezSAT7vec_cmpERKSt6vectorIiSaIiEES4_RiS5_S5_S5_(ptr noundef nonnull align 8 dereferenceable(284) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %6) - %8 = getelementptr inbounds i8, ptr %7, i64 8 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #28 - %9 = invoke noundef i32 @_ZN5ezSAT3NOTENS_2_VE(ptr noundef nonnull align 8 dereferenceable(284) %0, ptr noundef nonnull %7) - to label %10 unwind label %11 + %7 = alloca i32, align 4 + %8 = alloca %"struct.ezSAT::_V", align 8 + call void @_ZN5ezSAT7vec_cmpERKSt6vectorIiSaIiEES4_RiS5_S5_S5_(ptr noundef nonnull align 8 dereferenceable(284) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %7) + %9 = load i32, ptr %4, align 4 + store i32 %9, ptr %8, align 8 + %10 = getelementptr inbounds i8, ptr %8, i64 8 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #28 + %11 = invoke noundef i32 @_ZN5ezSAT3NOTENS_2_VE(ptr noundef nonnull align 8 dereferenceable(284) %0, ptr noundef nonnull %8) + to label %12 unwind label %13 -10: ; preds = %3 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #28 - ret i32 %9 +12: ; preds = %3 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #28 + ret i32 %11 -11: ; preds = %3 - %12 = landingpad { ptr, i32 } +13: ; preds = %3 + %14 = landingpad { ptr, i32 } cleanup - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #28 - resume { ptr, i32 } %12 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #28 + resume { ptr, i32 } %14 } ; Function Attrs: mustprogress uwtable @@ -10434,7 +10440,7 @@ define noundef i32 @_ZN5ezSAT15vec_gt_unsignedERKSt6vectorIiSaIiEES4_(ptr nounde %4 = alloca i32, align 4 %5 = alloca i32, align 4 %6 = alloca i32, align 4 - %7 = alloca %"struct.ezSAT::_V", align 8 + %7 = alloca i32, align 4 %8 = alloca %"struct.ezSAT::_V", align 8 %9 = alloca %"struct.ezSAT::_V", align 8 %10 = alloca %"struct.ezSAT::_V", align 8 @@ -10442,82 +10448,85 @@ define noundef i32 @_ZN5ezSAT15vec_gt_unsignedERKSt6vectorIiSaIiEES4_(ptr nounde %12 = alloca %"struct.ezSAT::_V", align 8 %13 = alloca %"struct.ezSAT::_V", align 8 %14 = alloca %"struct.ezSAT::_V", align 8 - call void @_ZN5ezSAT7vec_cmpERKSt6vectorIiSaIiEES4_RiS5_S5_S5_(ptr noundef nonnull align 8 dereferenceable(284) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %6) - %15 = getelementptr inbounds i8, ptr %8, i64 8 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #28 - %16 = invoke noundef i32 @_ZN5ezSAT3NOTENS_2_VE(ptr noundef nonnull align 8 dereferenceable(284) %0, ptr noundef nonnull %8) - to label %17 unwind label %30 + %15 = alloca %"struct.ezSAT::_V", align 8 + call void @_ZN5ezSAT7vec_cmpERKSt6vectorIiSaIiEES4_RiS5_S5_S5_(ptr noundef nonnull align 8 dereferenceable(284) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %7) + %16 = load i32, ptr %4, align 4 + store i32 %16, ptr %9, align 8 + %17 = getelementptr inbounds i8, ptr %9, i64 8 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #28 + %18 = invoke noundef i32 @_ZN5ezSAT3NOTENS_2_VE(ptr noundef nonnull align 8 dereferenceable(284) %0, ptr noundef nonnull %9) + to label %19 unwind label %32 -17: ; preds = %3 - store i32 %16, ptr %7, align 8 - %18 = getelementptr inbounds i8, ptr %7, i64 8 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #28 - %19 = load i32, ptr %6, align 4 - store i32 %19, ptr %10, align 8 - %20 = getelementptr inbounds i8, ptr %10, i64 8 +19: ; preds = %3 + store i32 %18, ptr %8, align 8 + %20 = getelementptr inbounds i8, ptr %8, i64 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #28 - %21 = invoke noundef i32 @_ZN5ezSAT3NOTENS_2_VE(ptr noundef nonnull align 8 dereferenceable(284) %0, ptr noundef nonnull %10) - to label %22 unwind label %32 - -22: ; preds = %17 - store i32 %21, ptr %9, align 8 - %23 = getelementptr inbounds i8, ptr %9, i64 8 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #28 - store i32 0, ptr %11, align 8 - %24 = getelementptr inbounds i8, ptr %11, i64 8 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #28 - store i32 0, ptr %12, align 8 - %25 = getelementptr inbounds i8, ptr %12, i64 8 + %21 = load i32, ptr %7, align 4 + store i32 %21, ptr %11, align 8 + %22 = getelementptr inbounds i8, ptr %11, i64 8 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #28 + %23 = invoke noundef i32 @_ZN5ezSAT3NOTENS_2_VE(ptr noundef nonnull align 8 dereferenceable(284) %0, ptr noundef nonnull %11) + to label %24 unwind label %34 + +24: ; preds = %19 + store i32 %23, ptr %10, align 8 + %25 = getelementptr inbounds i8, ptr %10, i64 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #28 - store i32 0, ptr %13, align 8 - %26 = getelementptr inbounds i8, ptr %13, i64 8 + store i32 0, ptr %12, align 8 + %26 = getelementptr inbounds i8, ptr %12, i64 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #28 - store i32 0, ptr %14, align 8 - %27 = getelementptr inbounds i8, ptr %14, i64 8 + store i32 0, ptr %13, align 8 + %27 = getelementptr inbounds i8, ptr %13, i64 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #28 - %28 = invoke noundef i32 @_ZN5ezSAT3ANDENS_2_VES0_S0_S0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(284) %0, ptr noundef nonnull %7, ptr noundef nonnull %9, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %14) - to label %29 unwind label %34 + store i32 0, ptr %14, align 8 + %28 = getelementptr inbounds i8, ptr %14, i64 8 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #28 + store i32 0, ptr %15, align 8 + %29 = getelementptr inbounds i8, ptr %15, i64 8 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #28 + %30 = invoke noundef i32 @_ZN5ezSAT3ANDENS_2_VES0_S0_S0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(284) %0, ptr noundef nonnull %8, ptr noundef nonnull %10, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) + to label %31 unwind label %36 -29: ; preds = %22 +31: ; preds = %24 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #28 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #28 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #28 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #28 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #28 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #28 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #28 - ret i32 %28 - -30: ; preds = %3 - %31 = landingpad { ptr, i32 } - cleanup - br label %37 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #28 + ret i32 %30 -32: ; preds = %17 +32: ; preds = %3 %33 = landingpad { ptr, i32 } cleanup - br label %36 + br label %39 -34: ; preds = %22 +34: ; preds = %19 %35 = landingpad { ptr, i32 } cleanup + br label %38 + +36: ; preds = %24 + %37 = landingpad { ptr, i32 } + cleanup + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #28 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #28 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #28 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #28 - br label %36 + br label %38 -36: ; preds = %34, %32 - %.pn = phi { ptr, i32 } [ %35, %34 ], [ %33, %32 ] +38: ; preds = %36, %34 + %.pn = phi { ptr, i32 } [ %37, %36 ], [ %35, %34 ] + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #28 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #28 - br label %37 + br label %39 -37: ; preds = %36, %30 - %.pn.pn = phi { ptr, i32 } [ %.pn, %36 ], [ %31, %30 ] - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #28 +39: ; preds = %38, %32 + %.pn.pn = phi { ptr, i32 } [ %.pn, %38 ], [ %33, %32 ] + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #28 resume { ptr, i32 } %.pn.pn } diff --git a/bench/z3/optimized/user_solver.cpp.ll b/bench/z3/optimized/user_solver.cpp.ll index 71c24a3d84f..ae3b8eec577 100644 --- a/bench/z3/optimized/user_solver.cpp.ll +++ b/bench/z3/optimized/user_solver.cpp.ll @@ -279,16 +279,26 @@ declare i32 @__cxa_atexit(ptr, ptr, ptr) local_unnamed_addr #2 ; Function Attrs: mustprogress uwtable define hidden void @_ZN11user_solver6solverC2ERN3euf6solverE(ptr noundef nonnull align 8 dereferenceable(492) %this, ptr noundef nonnull align 8 dereferenceable(9136) %ctx) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { invoke.cont17: + %retval.i2 = alloca %class.symbol, align 8 + %retval.i = alloca %class.symbol, align 8 %ref.tmp = alloca %class.symbol, align 8 %ref.tmp3 = alloca %class.symbol, align 8 - call void @_ZN6symbolC1EPKc(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull @.str.12) + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %retval.i) + call void @_ZN6symbolC1EPKc(ptr noundef nonnull align 8 dereferenceable(8) %retval.i, ptr noundef nonnull @.str.12) + %0 = load ptr, ptr %retval.i, align 8 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %retval.i) + store ptr %0, ptr %ref.tmp, align 8 %m.i = getelementptr inbounds i8, ptr %ctx, i64 136 - %0 = load ptr, ptr %m.i, align 8 - call void @_ZN6symbolC1EPKc(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp3, ptr noundef nonnull @.str.12) - %m_family_manager.i = getelementptr inbounds i8, ptr %0, i64 560 + %1 = load ptr, ptr %m.i, align 8 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %retval.i2) + call void @_ZN6symbolC1EPKc(ptr noundef nonnull align 8 dereferenceable(8) %retval.i2, ptr noundef nonnull @.str.12) + %2 = load ptr, ptr %retval.i2, align 8 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %retval.i2) + store ptr %2, ptr %ref.tmp3, align 8 + %m_family_manager.i = getelementptr inbounds i8, ptr %1, i64 560 %call.i = call noundef i32 @_ZN14family_manager12mk_family_idERK6symbol(ptr noundef nonnull align 8 dereferenceable(56) %m_family_manager.i, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp3) call void @_ZN3euf13th_euf_solverC2ERNS_6solverERK6symboli(ptr noundef nonnull align 8 dereferenceable(108) %this, ptr noundef nonnull align 8 dereferenceable(9136) %ctx, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, i32 noundef %call.i) - %1 = getelementptr inbounds i8, ptr %this, i64 112 + %3 = getelementptr inbounds i8, ptr %this, i64 112 store ptr getelementptr inbounds (i8, ptr @_ZTVN11user_solver6solverE, i64 16), ptr %this, align 8 %add.ptr = getelementptr inbounds i8, ptr %this, i64 32 store ptr getelementptr inbounds (i8, ptr @_ZTVN11user_solver6solverE, i64 616), ptr %add.ptr, align 8 @@ -296,7 +306,7 @@ invoke.cont17: store ptr getelementptr inbounds (i8, ptr @_ZTVN11user_solver6solverE, i64 696), ptr %add.ptr7, align 8 %add.ptr8 = getelementptr inbounds i8, ptr %this, i64 48 store ptr getelementptr inbounds (i8, ptr @_ZTVN11user_solver6solverE, i64 736), ptr %add.ptr8, align 8 - store ptr getelementptr inbounds (i8, ptr @_ZTVN11user_solver6solverE, i64 824), ptr %1, align 8 + store ptr getelementptr inbounds (i8, ptr @_ZTVN11user_solver6solverE, i64 824), ptr %3, align 8 %m_push_eh = getelementptr inbounds i8, ptr %this, i64 128 %m_prop = getelementptr inbounds i8, ptr %this, i64 432 %m_next_split_var = getelementptr inbounds i8, ptr %this, i64 484 @@ -3984,19 +3994,29 @@ entry: ; Function Attrs: mustprogress uwtable define hidden noundef ptr @_ZN11user_solver6solver5cloneERN3euf6solverE(ptr nocapture noundef nonnull readonly align 8 dereferenceable(492) %this, ptr noundef nonnull align 8 dereferenceable(9136) %dst_ctx) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { entry: + %retval.i2.i = alloca %class.symbol, align 8 + %retval.i.i = alloca %class.symbol, align 8 %ref.tmp.i = alloca %class.symbol, align 8 %ref.tmp3.i = alloca %class.symbol, align 8 %call = tail call noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef 496) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp.i) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp3.i) - call void @_ZN6symbolC1EPKc(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp.i, ptr noundef nonnull @.str.12) + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %retval.i.i) + call void @_ZN6symbolC1EPKc(ptr noundef nonnull align 8 dereferenceable(8) %retval.i.i, ptr noundef nonnull @.str.12) + %0 = load ptr, ptr %retval.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %retval.i.i) + store ptr %0, ptr %ref.tmp.i, align 8 %m.i.i = getelementptr inbounds i8, ptr %dst_ctx, i64 136 - %0 = load ptr, ptr %m.i.i, align 8 - call void @_ZN6symbolC1EPKc(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp3.i, ptr noundef nonnull @.str.12) - %m_family_manager.i.i = getelementptr inbounds i8, ptr %0, i64 560 + %1 = load ptr, ptr %m.i.i, align 8 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %retval.i2.i) + call void @_ZN6symbolC1EPKc(ptr noundef nonnull align 8 dereferenceable(8) %retval.i2.i, ptr noundef nonnull @.str.12) + %2 = load ptr, ptr %retval.i2.i, align 8 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %retval.i2.i) + store ptr %2, ptr %ref.tmp3.i, align 8 + %m_family_manager.i.i = getelementptr inbounds i8, ptr %1, i64 560 %call.i.i = call noundef i32 @_ZN14family_manager12mk_family_idERK6symbol(ptr noundef nonnull align 8 dereferenceable(56) %m_family_manager.i.i, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp3.i) call void @_ZN3euf13th_euf_solverC2ERNS_6solverERK6symboli(ptr noundef nonnull align 8 dereferenceable(108) %call, ptr noundef nonnull align 8 dereferenceable(9136) %dst_ctx, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp.i, i32 noundef %call.i.i) - %1 = getelementptr inbounds i8, ptr %call, i64 112 + %3 = getelementptr inbounds i8, ptr %call, i64 112 store ptr getelementptr inbounds (i8, ptr @_ZTVN11user_solver6solverE, i64 16), ptr %call, align 8 %add.ptr.i = getelementptr inbounds i8, ptr %call, i64 32 store ptr getelementptr inbounds (i8, ptr @_ZTVN11user_solver6solverE, i64 616), ptr %add.ptr.i, align 8 @@ -4004,7 +4024,7 @@ entry: store ptr getelementptr inbounds (i8, ptr @_ZTVN11user_solver6solverE, i64 696), ptr %add.ptr7.i, align 8 %add.ptr8.i = getelementptr inbounds i8, ptr %call, i64 48 store ptr getelementptr inbounds (i8, ptr @_ZTVN11user_solver6solverE, i64 736), ptr %add.ptr8.i, align 8 - store ptr getelementptr inbounds (i8, ptr @_ZTVN11user_solver6solverE, i64 824), ptr %1, align 8 + store ptr getelementptr inbounds (i8, ptr @_ZTVN11user_solver6solverE, i64 824), ptr %3, align 8 %m_push_eh.i = getelementptr inbounds i8, ptr %call, i64 128 %m_prop.i = getelementptr inbounds i8, ptr %call, i64 432 %m_next_split_var.i = getelementptr inbounds i8, ptr %call, i64 484 @@ -4021,28 +4041,28 @@ entry: for.cond: ; preds = %for.body, %entry %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %entry ] - %2 = load ptr, ptr %m_var2enode.i, align 8 - %cmp.i.i = icmp eq ptr %2, null + %4 = load ptr, ptr %m_var2enode.i, align 8 + %cmp.i.i = icmp eq ptr %4, null br i1 %cmp.i.i, label %_ZNK3euf13th_euf_solver12get_num_varsEv.exit, label %if.end.i.i if.end.i.i: ; preds = %for.cond - %arrayidx.i.i = getelementptr inbounds i8, ptr %2, i64 -4 - %3 = load i32, ptr %arrayidx.i.i, align 4 - %4 = zext i32 %3 to i64 + %arrayidx.i.i = getelementptr inbounds i8, ptr %4, i64 -4 + %5 = load i32, ptr %arrayidx.i.i, align 4 + %6 = zext i32 %5 to i64 br label %_ZNK3euf13th_euf_solver12get_num_varsEv.exit _ZNK3euf13th_euf_solver12get_num_varsEv.exit: ; preds = %for.cond, %if.end.i.i - %retval.0.i.i = phi i64 [ %4, %if.end.i.i ], [ 0, %for.cond ] + %retval.0.i.i = phi i64 [ %6, %if.end.i.i ], [ 0, %for.cond ] %cmp = icmp ult i64 %indvars.iv, %retval.0.i.i br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %_ZNK3euf13th_euf_solver12get_num_varsEv.exit - %5 = load ptr, ptr %ctx, align 8 - %arrayidx.i.i6 = getelementptr inbounds ptr, ptr %2, i64 %indvars.iv - %6 = load ptr, ptr %arrayidx.i.i6, align 8 - %call4 = call noundef ptr @_ZN3euf6solver4copyERS0_PNS_5enodeE(ptr noundef nonnull align 8 dereferenceable(9136) %5, ptr noundef nonnull align 8 dereferenceable(9136) %dst_ctx, ptr noundef %6) - %7 = load ptr, ptr %call4, align 8 - call void @_ZN11user_solver6solver8add_exprEP4expr(ptr noundef nonnull align 8 dereferenceable(492) %call, ptr noundef %7) + %7 = load ptr, ptr %ctx, align 8 + %arrayidx.i.i6 = getelementptr inbounds ptr, ptr %4, i64 %indvars.iv + %8 = load ptr, ptr %arrayidx.i.i6, align 8 + %call4 = call noundef ptr @_ZN3euf6solver4copyERS0_PNS_5enodeE(ptr noundef nonnull align 8 dereferenceable(9136) %7, ptr noundef nonnull align 8 dereferenceable(9136) %dst_ctx, ptr noundef %8) + %9 = load ptr, ptr %call4, align 8 + call void @_ZN11user_solver6solver8add_exprEP4expr(ptr noundef nonnull align 8 dereferenceable(492) %call, ptr noundef %9) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 br label %for.cond, !llvm.loop !29 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index 820278fb20a..7499debf8dc 100755 --- a/scripts/setup_pre_commit_patch.sh +++ b/scripts/setup_pre_commit_patch.sh @@ -2,7 +2,7 @@ set -euo pipefail shopt -s inherit_errexit -export GITHUB_PATCH_ID="/llvm-project/commit/" +export GITHUB_PATCH_ID=llvm/llvm-project/pull/110484 # Please rebase manually # git fetch origin