diff --git a/bench/abc/optimized/inflate.c.ll b/bench/abc/optimized/inflate.c.ll index 595b2190af2..686b21911db 100644 --- a/bench/abc/optimized/inflate.c.ll +++ b/bench/abc/optimized/inflate.c.ll @@ -2906,11 +2906,11 @@ default.unreachable2892: ; preds = %444 br i1 %.not1162, label %999, label %997 997: ; preds = %992 - %998 = call i64 @crc32(i64 noundef %994, ptr noundef %996, i32 noundef %986) #9 + %998 = call i64 @crc32(i64 noundef %994, ptr noundef nonnull %996, i32 noundef %986) #9 br label %1001 999: ; preds = %992 - %1000 = call i64 @adler32(i64 noundef %994, ptr noundef %996, i32 noundef %986) #9 + %1000 = call i64 @adler32(i64 noundef %994, ptr noundef nonnull %996, i32 noundef %986) #9 br label %1001 1001: ; preds = %999, %997 @@ -3356,7 +3356,7 @@ define internal fastcc range(i32 0, 2) i32 @updatewindow(ptr nocapture noundef n %59 = zext i32 %56 to i64 %60 = sub nsw i64 0, %59 %61 = getelementptr inbounds i8, ptr %58, i64 %60 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %57, ptr align 1 %61, i64 %59, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %57, ptr nonnull align 1 %61, i64 %59, i1 false) store i32 %56, ptr %44, align 4 %62 = load i32, ptr %20, align 4 %63 = getelementptr inbounds i8, ptr %4, i64 56 diff --git a/bench/abseil-cpp/optimized/bind.cc.ll b/bench/abseil-cpp/optimized/bind.cc.ll index 925c61340f9..442a3f87127 100644 --- a/bench/abseil-cpp/optimized/bind.cc.ll +++ b/bench/abseil-cpp/optimized/bind.cc.ll @@ -338,7 +338,7 @@ if.else.i: ; preds = %entry store i32 0, ptr %next_arg.i.i, align 4 %add.ptr.i8.i = getelementptr inbounds i8, ptr %format.coerce0, i64 %format.coerce1 %cmp.not74.i.i = icmp eq i64 %format.coerce1, 0 - br i1 %cmp.not74.i.i, label %invoke.cont7.thread, label %while.body.lr.ph.i.i + br i1 %cmp.not74.i.i, label %invoke.cont7, label %while.body.lr.ph.i.i while.body.lr.ph.i.i: ; preds = %if.else.i %sub.ptr.lhs.cast.i9.i = ptrtoint ptr %add.ptr.i8.i to i64 @@ -364,46 +364,42 @@ while.body.i.i: ; preds = %while.cond.backedge if.then.i14.i: ; preds = %while.body.i.i %consumer.val.i15.i = load ptr, ptr %agg.tmp86.i, align 8 - %cmp.i.i.i.i16.i = icmp eq ptr %add.ptr.i8.i, %p.075.i.i - br i1 %cmp.i.i.i.i16.i, label %invoke.cont7.thread, label %if.end.i.i.i.i17.i - -if.end.i.i.i.i17.i: ; preds = %if.then.i14.i - %size_.i.i.i.i18.i = getelementptr inbounds i8, ptr %consumer.val.i15.i, i64 16 - %13 = load i64, ptr %size_.i.i.i.i18.i, align 8 - %add.i.i.i.i19.i = add i64 %13, %sub.ptr.sub.i11.i - store i64 %add.i.i.i.i19.i, ptr %size_.i.i.i.i18.i, align 8 - %add.ptr.i.i.i.i.i20.i = getelementptr inbounds i8, ptr %consumer.val.i15.i, i64 1056 - %pos_.i.i.i.i.i21.i = getelementptr inbounds i8, ptr %consumer.val.i15.i, i64 24 - %14 = load ptr, ptr %pos_.i.i.i.i.i21.i, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i22.i = ptrtoint ptr %add.ptr.i.i.i.i.i20.i to i64 - %sub.ptr.rhs.cast.i.i.i.i.i23.i = ptrtoint ptr %14 to i64 - %sub.ptr.sub.i.i.i.i.i24.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i22.i, %sub.ptr.rhs.cast.i.i.i.i.i23.i - %cmp3.not.i.i.i.i25.i = icmp ult i64 %sub.ptr.sub.i11.i, %sub.ptr.sub.i.i.i.i.i24.i - br i1 %cmp3.not.i.i.i.i25.i, label %if.end5.i.i.i.i31.i, label %if.then4.i.i.i.i26.i - -if.then4.i.i.i.i26.i: ; preds = %if.end.i.i.i.i17.i - %buf_.i.i.i.i.i27.i = getelementptr inbounds i8, ptr %consumer.val.i15.i, i64 32 - %sub.ptr.rhs.cast.i7.i.i.i.i28.i = ptrtoint ptr %buf_.i.i.i.i.i27.i to i64 - %sub.ptr.sub.i8.i.i.i.i29.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i23.i, %sub.ptr.rhs.cast.i7.i.i.i.i28.i - %write_.i.i.i.i.i.i30.i = getelementptr inbounds i8, ptr %consumer.val.i15.i, i64 8 - %15 = load ptr, ptr %write_.i.i.i.i.i.i30.i, align 8 + %size_.i.i.i.i16.i = getelementptr inbounds i8, ptr %consumer.val.i15.i, i64 16 + %13 = load i64, ptr %size_.i.i.i.i16.i, align 8 + %add.i.i.i.i17.i = add i64 %13, %sub.ptr.sub.i11.i + store i64 %add.i.i.i.i17.i, ptr %size_.i.i.i.i16.i, align 8 + %add.ptr.i.i.i.i.i18.i = getelementptr inbounds i8, ptr %consumer.val.i15.i, i64 1056 + %pos_.i.i.i.i.i19.i = getelementptr inbounds i8, ptr %consumer.val.i15.i, i64 24 + %14 = load ptr, ptr %pos_.i.i.i.i.i19.i, align 8 + %sub.ptr.lhs.cast.i.i.i.i.i20.i = ptrtoint ptr %add.ptr.i.i.i.i.i18.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i21.i = ptrtoint ptr %14 to i64 + %sub.ptr.sub.i.i.i.i.i22.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i20.i, %sub.ptr.rhs.cast.i.i.i.i.i21.i + %cmp3.not.i.i.i.i23.i = icmp ult i64 %sub.ptr.sub.i11.i, %sub.ptr.sub.i.i.i.i.i22.i + br i1 %cmp3.not.i.i.i.i23.i, label %if.end5.i.i.i.i29.i, label %if.then4.i.i.i.i24.i + +if.then4.i.i.i.i24.i: ; preds = %if.then.i14.i + %buf_.i.i.i.i.i25.i = getelementptr inbounds i8, ptr %consumer.val.i15.i, i64 32 + %sub.ptr.rhs.cast.i7.i.i.i.i26.i = ptrtoint ptr %buf_.i.i.i.i.i25.i to i64 + %sub.ptr.sub.i8.i.i.i.i27.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i21.i, %sub.ptr.rhs.cast.i7.i.i.i.i26.i + %write_.i.i.i.i.i.i28.i = getelementptr inbounds i8, ptr %consumer.val.i15.i, i64 8 + %15 = load ptr, ptr %write_.i.i.i.i.i.i28.i, align 8 %16 = load ptr, ptr %consumer.val.i15.i, align 8 - invoke void %15(ptr noundef %16, i64 %sub.ptr.sub.i8.i.i.i.i29.i, ptr nonnull %buf_.i.i.i.i.i27.i) + invoke void %15(ptr noundef %16, i64 %sub.ptr.sub.i8.i.i.i.i27.i, ptr nonnull %buf_.i.i.i.i.i25.i) to label %.noexc4 unwind label %lpad5.loopexit.split-lp.loopexit.split-lp -.noexc4: ; preds = %if.then4.i.i.i.i26.i - store ptr %buf_.i.i.i.i.i27.i, ptr %pos_.i.i.i.i.i21.i, align 8 - %17 = load ptr, ptr %write_.i.i.i.i.i.i30.i, align 8 +.noexc4: ; preds = %if.then4.i.i.i.i24.i + store ptr %buf_.i.i.i.i.i25.i, ptr %pos_.i.i.i.i.i19.i, align 8 + %17 = load ptr, ptr %write_.i.i.i.i.i.i28.i, align 8 %18 = load ptr, ptr %consumer.val.i15.i, align 8 invoke void %17(ptr noundef %18, i64 %sub.ptr.sub.i11.i, ptr %p.075.i.i) - to label %invoke.cont7.thread unwind label %lpad5.loopexit.split-lp.loopexit.split-lp + to label %invoke.cont7 unwind label %lpad5.loopexit.split-lp.loopexit.split-lp -if.end5.i.i.i.i31.i: ; preds = %if.end.i.i.i.i17.i +if.end5.i.i.i.i29.i: ; preds = %if.then.i14.i call void @llvm.memcpy.p0.p0.i64(ptr align 1 %14, ptr align 1 %p.075.i.i, i64 %sub.ptr.sub.i11.i, i1 false) - %19 = load ptr, ptr %pos_.i.i.i.i.i21.i, align 8 - %add.ptr.i.i.i.i32.i = getelementptr inbounds i8, ptr %19, i64 %sub.ptr.sub.i11.i - store ptr %add.ptr.i.i.i.i32.i, ptr %pos_.i.i.i.i.i21.i, align 8 - br label %invoke.cont7.thread + %19 = load ptr, ptr %pos_.i.i.i.i.i19.i, align 8 + %add.ptr.i.i.i.i30.i = getelementptr inbounds i8, ptr %19, i64 %sub.ptr.sub.i11.i + store ptr %add.ptr.i.i.i.i30.i, ptr %pos_.i.i.i.i.i19.i, align 8 + br label %invoke.cont7 if.end.i.i: ; preds = %while.body.i.i %sub.ptr.lhs.cast8.i.i = ptrtoint ptr %call2.i.i to i64 @@ -453,7 +449,7 @@ if.end5.i.i.i43.i.i: ; preds = %if.end.i.i.i29.i.i _ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_20SummarizingConverterEE6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit45.i.i: ; preds = %.noexc6, %if.end5.i.i.i43.i.i, %if.end.i.i %add.ptr14.i.i = getelementptr inbounds i8, ptr %call2.i.i, i64 1 %cmp15.not.i.i = icmp ult ptr %add.ptr14.i.i, %add.ptr.i8.i - br i1 %cmp15.not.i.i, label %if.end17.i.i, label %invoke.cont7 + br i1 %cmp15.not.i.i, label %if.end17.i.i, label %invoke.cont7.thread if.end17.i.i: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_20SummarizingConverterEE6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit45.i.i %27 = load i8, ptr %add.ptr14.i.i, align 1 @@ -466,7 +462,7 @@ if.end17.i.i: ; preds = %_ZN4absl19str_forma if.then20.i.i: ; preds = %if.end17.i.i %28 = load i32, ptr %next_arg.i.i, align 4 %cmp21.i.i = icmp slt i32 %28, 0 - br i1 %cmp21.i.i, label %invoke.cont7, label %if.end23.i.i + br i1 %cmp21.i.i, label %invoke.cont7.thread, label %if.end23.i.i if.end23.i.i: ; preds = %if.then20.i.i store i32 -1, ptr %width.i.i.i, align 4 @@ -482,7 +478,7 @@ if.end23.i.i: ; preds = %if.then20.i.i call29.i.i.noexc: ; preds = %if.end23.i.i %add.ptr24.i.i = getelementptr inbounds i8, ptr %call2.i.i, i64 2 - br i1 %call29.i.i8, label %while.cond.backedge.i.i, label %invoke.cont7 + br i1 %call29.i.i8, label %while.cond.backedge.i.i, label %invoke.cont7.thread if.else.i13.i: ; preds = %if.end17.i.i %cmp36.not.i.i = icmp eq i8 %27, 37 @@ -499,14 +495,14 @@ if.then37.i.i: ; preds = %if.else.i13.i call40.i.i.noexc: ; preds = %if.then37.i.i %cmp41.i.i = icmp eq ptr %call40.i.i9, null - br i1 %cmp41.i.i, label %invoke.cont7, label %if.end44.i.i + br i1 %cmp41.i.i, label %invoke.cont7.thread, label %if.end44.i.i if.end44.i.i: ; preds = %call40.i.i.noexc %call51.i.i10 = invoke fastcc noundef zeroext i1 @_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_20SummarizingConverterEE10ConvertOneERKNS0_17UnboundConversionESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull readonly align 8 dereferenceable(24) %agg.tmp86.i, ptr noundef nonnull align 4 dereferenceable(15) %conv38.i.i) to label %call51.i.i.noexc unwind label %lpad5.loopexit.split-lp.loopexit call51.i.i.noexc: ; preds = %if.end44.i.i - br i1 %call51.i.i10, label %while.cond.backedge.i.i, label %invoke.cont7 + br i1 %call51.i.i10, label %while.cond.backedge.i.i, label %invoke.cont7.thread if.else56.i.i: ; preds = %if.else.i13.i %consumer.val25.i.i = load ptr, ptr %agg.tmp86.i, align 8 @@ -554,23 +550,23 @@ _ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_20Summarizing while.cond.backedge.i.i: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_20SummarizingConverterEE6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit71.i.i, %call51.i.i.noexc, %call29.i.i.noexc %p.0.be.i.i = phi ptr [ %add.ptr63.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_20SummarizingConverterEE6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit71.i.i ], [ %add.ptr24.i.i, %call29.i.i.noexc ], [ %call40.i.i9, %call51.i.i.noexc ] %cmp.not.i.i = icmp eq ptr %p.0.be.i.i, %add.ptr.i8.i - br i1 %cmp.not.i.i, label %invoke.cont7.thread, label %while.body.i.i, !llvm.loop !5 + br i1 %cmp.not.i.i, label %invoke.cont7, label %while.body.i.i, !llvm.loop !5 -invoke.cont7.thread: ; preds = %while.cond.backedge.i.i, %if.then.i14.i, %if.end5.i.i.i.i31.i, %if.else.i, %.noexc4 +invoke.cont7.thread: ; preds = %call51.i.i.noexc, %call40.i.i.noexc, %call29.i.i.noexc, %if.then20.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_20SummarizingConverterEE6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit45.i.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %agg.tmp86.i) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %next_arg.i.i) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %conv.i7.i) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %conv38.i.i) - br label %cleanup.cont.critedge + br label %if.then -invoke.cont7: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_20SummarizingConverterEE6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit45.i.i, %if.then20.i.i, %call29.i.i.noexc, %call40.i.i.noexc, %call51.i.i.noexc +invoke.cont7: ; preds = %while.cond.backedge.i.i, %if.else.i, %if.end5.i.i.i.i29.i, %.noexc4 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %agg.tmp86.i) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %next_arg.i.i) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %conv.i7.i) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %conv38.i.i) - br label %if.then + br label %cleanup.cont.critedge -if.then: ; preds = %_ZNK4absl19str_format_internal16ParsedFormatBase13ProcessFormatINS0_12_GLOBAL__N_117ConverterConsumerINS3_20SummarizingConverterEEEEEbT_.exit.i.thread, %invoke.cont7, %_ZNK4absl19str_format_internal16ParsedFormatBase13ProcessFormatINS0_12_GLOBAL__N_117ConverterConsumerINS3_20SummarizingConverterEEEEEbT_.exit.i +if.then: ; preds = %_ZNK4absl19str_format_internal16ParsedFormatBase13ProcessFormatINS0_12_GLOBAL__N_117ConverterConsumerINS3_20SummarizingConverterEEEEEbT_.exit.i.thread, %invoke.cont7.thread, %_ZNK4absl19str_format_internal16ParsedFormatBase13ProcessFormatINS0_12_GLOBAL__N_117ConverterConsumerINS3_20SummarizingConverterEEEEEbT_.exit.i call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp) #11 %call.i13 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %agg.result) to label %call.i.noexc unwind label %lpad8 @@ -621,7 +617,7 @@ lpad5.loopexit.split-lp.loopexit: ; preds = %if.end23.i.i, %if.e cleanup br label %ehcleanup -lpad5.loopexit.split-lp.loopexit.split-lp: ; preds = %.noexc4, %if.then4.i.i.i.i26.i +lpad5.loopexit.split-lp.loopexit.split-lp: ; preds = %.noexc4, %if.then4.i.i.i.i24.i %lpad.loopexit.split-lp30 = landingpad { ptr, i32 } cleanup br label %ehcleanup @@ -636,7 +632,7 @@ lpad8.body: ; preds = %lpad.i, %lpad8 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp) #11 br label %ehcleanup -cleanup.cont.critedge: ; preds = %invoke.cont7.thread, %_ZNK4absl19str_format_internal16ParsedFormatBase13ProcessFormatINS0_12_GLOBAL__N_117ConverterConsumerINS3_20SummarizingConverterEEEEEbT_.exit.i +cleanup.cont.critedge: ; preds = %invoke.cont7, %_ZNK4absl19str_format_internal16ParsedFormatBase13ProcessFormatINS0_12_GLOBAL__N_117ConverterConsumerINS3_20SummarizingConverterEEEEEbT_.exit.i %43 = load ptr, ptr %pos_.i, align 8 %sub.ptr.lhs.cast.i.i20 = ptrtoint ptr %43 to i64 %sub.ptr.rhs.cast.i.i21 = ptrtoint ptr %buf_.i to i64 @@ -773,23 +769,23 @@ if.then.i.i: ; preds = %for.body.i.i call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %precision.i.i) %5 = load i32, ptr %conv.i.i, align 4 %sub.i.i = add nsw i32 %5, -1 - %conv.i38.i = sext i32 %sub.i.i to i64 - %cmp.not.i39.i = icmp ugt i64 %args.coerce1, %conv.i38.i - br i1 %cmp.not.i39.i, label %if.end.i41.i, label %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE10ConvertOneERKNS0_17UnboundConversionESt17basic_string_viewIcSt11char_traitsIcEE.exit.thread.i.i + %conv.i36.i = sext i32 %sub.i.i to i64 + %cmp.not.i37.i = icmp ugt i64 %args.coerce1, %conv.i36.i + br i1 %cmp.not.i37.i, label %if.end.i39.i, label %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE10ConvertOneERKNS0_17UnboundConversionESt17basic_string_viewIcSt11char_traitsIcEE.exit.thread.i.i -if.end.i41.i: ; preds = %if.then.i.i - %arrayidx.i.i42.i = getelementptr inbounds %"class.absl::str_format_internal::FormatArgImpl", ptr %args.coerce0, i64 %conv.i38.i +if.end.i39.i: ; preds = %if.then.i.i + %arrayidx.i.i40.i = getelementptr inbounds %"class.absl::str_format_internal::FormatArgImpl", ptr %args.coerce0, i64 %conv.i36.i %flags.i.i = getelementptr inbounds i8, ptr %__begin3.sroa.0.014.i.i, i64 28 %6 = load i8, ptr %flags.i.i, align 4 %cmp7.not.i.i = icmp eq i8 %6, 0 br i1 %cmp7.not.i.i, label %if.else46.i.i, label %if.then8.i.i -if.then8.i.i: ; preds = %if.end.i41.i +if.then8.i.i: ; preds = %if.end.i39.i %width9.i.i = getelementptr inbounds i8, ptr %__begin3.sroa.0.014.i.i, i64 20 %7 = load i32, ptr %width9.i.i, align 4 store i32 %7, ptr %width.i.i, align 4 - %cmp.i.i43.i = icmp slt i32 %7, -1 - br i1 %cmp.i.i43.i, label %if.then13.i.i, label %if.end27.i.i + %cmp.i.i41.i = icmp slt i32 %7, -1 + br i1 %cmp.i.i41.i, label %if.then13.i.i, label %if.end27.i.i if.then13.i.i: ; preds = %if.then8.i.i %sub2.i.i.i = xor i32 %7, -1 @@ -799,8 +795,8 @@ if.then13.i.i: ; preds = %if.then8.i.i _ZN4absl19str_format_internal12_GLOBAL__N_116BindFromPositionEiPiNS_4SpanIKNS0_13FormatArgImplEEE.exit.i.i: ; preds = %if.then13.i.i %8 = getelementptr %"class.absl::str_format_internal::FormatArgImpl", ptr %args.coerce0, i64 %conv.i.i.i - %arrayidx.i.i.i44.i = getelementptr i8, ptr %8, i64 -16 - %agg.tmp.sroa.0.0.copyload.i.i.i = load ptr, ptr %arrayidx.i.i.i44.i, align 8 + %arrayidx.i.i.i42.i = getelementptr i8, ptr %8, i64 -16 + %agg.tmp.sroa.0.0.copyload.i.i.i = load ptr, ptr %arrayidx.i.i.i42.i, align 8 %agg.tmp.sroa.2.0.call2.sroa_idx.i.i.i = getelementptr i8, ptr %8, i64 -8 %agg.tmp.sroa.2.0.copyload.i.i.i = load ptr, ptr %agg.tmp.sroa.2.0.call2.sroa_idx.i.i.i, align 8 %call.i.i.i.i1 = invoke noundef zeroext i1 %agg.tmp.sroa.2.0.copyload.i.i.i(ptr %agg.tmp.sroa.0.0.copyload.i.i.i, i64 589843, i32 0, ptr noundef nonnull %width.i.i) @@ -868,12 +864,12 @@ if.end40.i.i: ; preds = %_ZN4absl19str_forma %16 = load i8, ptr %length_mod.i.i, align 1 %bound.i.i.sroa.0.2.insert.ext.i = zext i8 %16 to i64 %bound.i.i.sroa.0.2.insert.shift.i = shl nuw nsw i64 %bound.i.i.sroa.0.2.insert.ext.i, 16 - %bound.i.i.sroa.0.2.insert.insert56.i = or disjoint i64 %bound.i.i.sroa.0.1.insert.insert.i, %bound.i.i.sroa.0.2.insert.shift.i + %bound.i.i.sroa.0.2.insert.insert54.i = or disjoint i64 %bound.i.i.sroa.0.1.insert.insert.i, %bound.i.i.sroa.0.2.insert.shift.i br label %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE10ConvertOneERKNS0_17UnboundConversionESt17basic_string_viewIcSt11char_traitsIcEE.exit.i.i -if.else46.i.i: ; preds = %if.end.i41.i - %bound.i.i.sroa.0.4.insert.mask58.i = and i64 %bound.i.i.sroa.0.2.insert.insert.i, 4278779923 - %bound.i.i.sroa.0.4.insert.insert59.i = or disjoint i64 %bound.i.i.sroa.0.4.insert.mask58.i, -4294967296 +if.else46.i.i: ; preds = %if.end.i39.i + %bound.i.i.sroa.0.4.insert.mask56.i = and i64 %bound.i.i.sroa.0.2.insert.insert.i, 4278779923 + %bound.i.i.sroa.0.4.insert.insert57.i = or disjoint i64 %bound.i.i.sroa.0.4.insert.mask56.i, -4294967296 br label %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE10ConvertOneERKNS0_17UnboundConversionESt17basic_string_viewIcSt11char_traitsIcEE.exit.i.i _ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE10ConvertOneERKNS0_17UnboundConversionESt17basic_string_viewIcSt11char_traitsIcEE.exit.thread.i.i: ; preds = %call.i.i34.i.i.noexc, %if.then32.i.i, %call.i.i.i.i.noexc, %if.then13.i.i, %if.then.i.i @@ -882,19 +878,19 @@ _ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConv br label %invoke.cont4 _ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE10ConvertOneERKNS0_17UnboundConversionESt17basic_string_viewIcSt11char_traitsIcEE.exit.i.i: ; preds = %if.else46.i.i, %if.end40.i.i - %bound.i.i.sroa.0.2.i = phi i64 [ %bound.i.i.sroa.0.4.insert.insert59.i, %if.else46.i.i ], [ %bound.i.i.sroa.0.2.insert.insert56.i, %if.end40.i.i ] + %bound.i.i.sroa.0.2.i = phi i64 [ %bound.i.i.sroa.0.4.insert.insert57.i, %if.else46.i.i ], [ %bound.i.i.sroa.0.2.insert.insert54.i, %if.end40.i.i ] %bound.i.i.sroa.12.2.i = phi i32 [ -1, %if.else46.i.i ], [ %13, %if.end40.i.i ] %conv49.i.i = getelementptr inbounds i8, ptr %__begin3.sroa.0.014.i.i, i64 30 %17 = load i8, ptr %conv49.i.i, align 2 %bound.i.i.sroa.0.0.insert.ext.i = zext i8 %17 to i64 - %bound.i.i.sroa.0.0.insert.mask49.i = and i64 %bound.i.i.sroa.0.2.i, -256 - %bound.i.i.sroa.0.0.insert.insert50.i = or disjoint i64 %bound.i.i.sroa.0.0.insert.mask49.i, %bound.i.i.sroa.0.0.insert.ext.i + %bound.i.i.sroa.0.0.insert.mask47.i = and i64 %bound.i.i.sroa.0.2.i, -256 + %bound.i.i.sroa.0.0.insert.insert48.i = or disjoint i64 %bound.i.i.sroa.0.0.insert.mask47.i, %bound.i.i.sroa.0.0.insert.ext.i call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %width.i.i) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %precision.i.i) - %agg.tmp.sroa.0.0.copyload.i.i.i.i = load ptr, ptr %arrayidx.i.i42.i, align 8 - %agg.tmp.sroa.2.0.call.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %arrayidx.i.i42.i, i64 8 + %agg.tmp.sroa.0.0.copyload.i.i.i.i = load ptr, ptr %arrayidx.i.i40.i, align 8 + %agg.tmp.sroa.2.0.call.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %arrayidx.i.i40.i, i64 8 %agg.tmp.sroa.2.0.copyload.i.i.i.i = load ptr, ptr %agg.tmp.sroa.2.0.call.sroa_idx.i.i.i.i, align 8 - %call.i.i.i.i.i3 = invoke noundef zeroext i1 %agg.tmp.sroa.2.0.copyload.i.i.i.i(ptr %agg.tmp.sroa.0.0.copyload.i.i.i.i, i64 %bound.i.i.sroa.0.0.insert.insert50.i, i32 %bound.i.i.sroa.12.2.i, ptr noundef nonnull %sink) + %call.i.i.i.i.i3 = invoke noundef zeroext i1 %agg.tmp.sroa.2.0.copyload.i.i.i.i(ptr %agg.tmp.sroa.0.0.copyload.i.i.i.i, i64 %bound.i.i.sroa.0.0.insert.insert48.i, i32 %bound.i.i.sroa.12.2.i, ptr noundef nonnull %sink) to label %call.i.i.i.i.i.noexc unwind label %lpad.loopexit call.i.i.i.i.i.noexc: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE10ConvertOneERKNS0_17UnboundConversionESt17basic_string_viewIcSt11char_traitsIcEE.exit.i.i @@ -936,7 +932,7 @@ if.end5.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i br label %for.inc.i.i for.inc.i.i: ; preds = %.noexc, %if.end5.i.i.i.i.i, %if.else.i.i, %call.i.i.i.i.i.noexc - %bound.i.i.sroa.0.1.i = phi i64 [ %bound.i.i.sroa.0.0.insert.insert50.i, %call.i.i.i.i.i.noexc ], [ %bound.i.i.sroa.0.0.i, %if.else.i.i ], [ %bound.i.i.sroa.0.0.i, %if.end5.i.i.i.i.i ], [ %bound.i.i.sroa.0.0.i, %.noexc ] + %bound.i.i.sroa.0.1.i = phi i64 [ %bound.i.i.sroa.0.0.insert.insert48.i, %call.i.i.i.i.i.noexc ], [ %bound.i.i.sroa.0.0.i, %if.else.i.i ], [ %bound.i.i.sroa.0.0.i, %if.end5.i.i.i.i.i ], [ %bound.i.i.sroa.0.0.i, %.noexc ] %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__begin3.sroa.0.014.i.i, i64 32 %cmp.i.not.i.i = icmp eq ptr %incdec.ptr.i.i.i, %2 br i1 %cmp.i.not.i.i, label %for.end.i.i, label %for.body.i.i @@ -982,38 +978,34 @@ while.body.i.i: ; preds = %_ZN4absl19str_forma br i1 %tobool.not.i.i, label %if.then.i19.i, label %if.end.i.i if.then.i19.i: ; preds = %while.body.i.i - %cmp.i.i.i.i21.i = icmp eq ptr %add.ptr.i7.i, %p.0224.i.i - br i1 %cmp.i.i.i.i21.i, label %_ZN4absl19str_format_internal17ParseFormatStringINS0_12_GLOBAL__N_117ConverterConsumerINS2_16DefaultConverterEEEEEbSt17basic_string_viewIcSt11char_traitsIcEET_.exit.i, label %if.end.i.i.i.i22.i - -if.end.i.i.i.i22.i: ; preds = %if.then.i19.i %26 = load i64, ptr %size_.i, align 8 - %add.i.i.i.i24.i = add i64 %26, %sub.ptr.sub.i10.i - store i64 %add.i.i.i.i24.i, ptr %size_.i, align 8 + %add.i.i.i.i22.i = add i64 %26, %sub.ptr.sub.i10.i + store i64 %add.i.i.i.i22.i, ptr %size_.i, align 8 %27 = load ptr, ptr %pos_.i, align 8 - %sub.ptr.rhs.cast.i.i.i.i.i28.i = ptrtoint ptr %27 to i64 - %sub.ptr.sub.i.i.i.i.i29.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i34.i.i, %sub.ptr.rhs.cast.i.i.i.i.i28.i - %cmp3.not.i.i.i.i30.i = icmp ult i64 %sub.ptr.sub.i10.i, %sub.ptr.sub.i.i.i.i.i29.i - br i1 %cmp3.not.i.i.i.i30.i, label %if.end5.i.i.i.i36.i, label %if.then4.i.i.i.i31.i + %sub.ptr.rhs.cast.i.i.i.i.i26.i = ptrtoint ptr %27 to i64 + %sub.ptr.sub.i.i.i.i.i27.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i34.i.i, %sub.ptr.rhs.cast.i.i.i.i.i26.i + %cmp3.not.i.i.i.i28.i = icmp ult i64 %sub.ptr.sub.i10.i, %sub.ptr.sub.i.i.i.i.i27.i + br i1 %cmp3.not.i.i.i.i28.i, label %if.end5.i.i.i.i34.i, label %if.then4.i.i.i.i29.i -if.then4.i.i.i.i31.i: ; preds = %if.end.i.i.i.i22.i - %sub.ptr.sub.i8.i.i.i.i34.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i28.i, %sub.ptr.rhs.cast.i7.i.i.i40.i.i +if.then4.i.i.i.i29.i: ; preds = %if.then.i19.i + %sub.ptr.sub.i8.i.i.i.i32.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i26.i, %sub.ptr.rhs.cast.i7.i.i.i40.i.i %28 = load ptr, ptr %raw.sroa.2.0.raw_.sroa_idx.i, align 8 %29 = load ptr, ptr %sink, align 8 - invoke void %28(ptr noundef %29, i64 %sub.ptr.sub.i8.i.i.i.i34.i, ptr nonnull %buf_.i) + invoke void %28(ptr noundef %29, i64 %sub.ptr.sub.i8.i.i.i.i32.i, ptr nonnull %buf_.i) to label %.noexc5 unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp -.noexc5: ; preds = %if.then4.i.i.i.i31.i +.noexc5: ; preds = %if.then4.i.i.i.i29.i store ptr %buf_.i, ptr %pos_.i, align 8 %30 = load ptr, ptr %raw.sroa.2.0.raw_.sroa_idx.i, align 8 %31 = load ptr, ptr %sink, align 8 invoke void %30(ptr noundef %31, i64 %sub.ptr.sub.i10.i, ptr %p.0224.i.i) to label %_ZN4absl19str_format_internal17ParseFormatStringINS0_12_GLOBAL__N_117ConverterConsumerINS2_16DefaultConverterEEEEEbSt17basic_string_viewIcSt11char_traitsIcEET_.exit.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp -if.end5.i.i.i.i36.i: ; preds = %if.end.i.i.i.i22.i +if.end5.i.i.i.i34.i: ; preds = %if.then.i19.i call void @llvm.memcpy.p0.p0.i64(ptr align 1 %27, ptr align 1 %p.0224.i.i, i64 %sub.ptr.sub.i10.i, i1 false) %32 = load ptr, ptr %pos_.i, align 8 - %add.ptr.i.i.i.i37.i = getelementptr inbounds i8, ptr %32, i64 %sub.ptr.sub.i10.i - store ptr %add.ptr.i.i.i.i37.i, ptr %pos_.i, align 8 + %add.ptr.i.i.i.i35.i = getelementptr inbounds i8, ptr %32, i64 %sub.ptr.sub.i10.i + store ptr %add.ptr.i.i.i.i35.i, ptr %pos_.i, align 8 br label %_ZN4absl19str_format_internal17ParseFormatStringINS0_12_GLOBAL__N_117ConverterConsumerINS2_16DefaultConverterEEEEEbSt17basic_string_viewIcSt11char_traitsIcEET_.exit.i if.end.i.i: ; preds = %while.body.i.i @@ -1282,8 +1274,8 @@ if.end65.i.i: ; preds = %call.i.i.i67.i.i.no %cmp.not223.i.i = icmp eq ptr %p.1.i.i, %add.ptr.i7.i br i1 %cmp.not223.i.i, label %_ZN4absl19str_format_internal17ParseFormatStringINS0_12_GLOBAL__N_117ConverterConsumerINS2_16DefaultConverterEEEEEbSt17basic_string_viewIcSt11char_traitsIcEET_.exit.i, label %while.body.lr.ph.i.i, !llvm.loop !7 -_ZN4absl19str_format_internal17ParseFormatStringINS0_12_GLOBAL__N_117ConverterConsumerINS2_16DefaultConverterEEEEEbSt17basic_string_viewIcSt11char_traitsIcEET_.exit.i: ; preds = %if.end65.i.i, %call.i.i.i67.i.i.noexc, %call40.i.i.noexc, %call.i.i.i.i18.i.noexc, %if.end23.i.i, %if.then20.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit87.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit45.i.i, %.noexc5, %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE10ConvertOneERKNS0_17UnboundConversionESt17basic_string_viewIcSt11char_traitsIcEE.exit68.thread.i.i, %if.end5.i.i.i.i36.i, %if.then.i19.i, %if.else.i - %retval.0.i11.i = phi i1 [ true, %if.then.i19.i ], [ true, %if.end5.i.i.i.i36.i ], [ false, %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE10ConvertOneERKNS0_17UnboundConversionESt17basic_string_viewIcSt11char_traitsIcEE.exit68.thread.i.i ], [ true, %if.else.i ], [ true, %.noexc5 ], [ %cmp15.not.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit45.i.i ], [ %cmp15.not.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit87.i.i ], [ true, %if.end65.i.i ], [ false, %if.end23.i.i ], [ false, %call.i.i.i67.i.i.noexc ], [ false, %call40.i.i.noexc ], [ false, %call.i.i.i.i18.i.noexc ], [ false, %if.then20.i.i ] +_ZN4absl19str_format_internal17ParseFormatStringINS0_12_GLOBAL__N_117ConverterConsumerINS2_16DefaultConverterEEEEEbSt17basic_string_viewIcSt11char_traitsIcEET_.exit.i: ; preds = %if.end65.i.i, %call.i.i.i67.i.i.noexc, %call40.i.i.noexc, %call.i.i.i.i18.i.noexc, %if.end23.i.i, %if.then20.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit87.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit45.i.i, %.noexc5, %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE10ConvertOneERKNS0_17UnboundConversionESt17basic_string_viewIcSt11char_traitsIcEE.exit68.thread.i.i, %if.end5.i.i.i.i34.i, %if.else.i + %retval.0.i11.i = phi i1 [ true, %if.end5.i.i.i.i34.i ], [ false, %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE10ConvertOneERKNS0_17UnboundConversionESt17basic_string_viewIcSt11char_traitsIcEE.exit68.thread.i.i ], [ true, %if.else.i ], [ true, %.noexc5 ], [ %cmp15.not.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit45.i.i ], [ %cmp15.not.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit87.i.i ], [ true, %if.end65.i.i ], [ false, %if.end23.i.i ], [ false, %call.i.i.i67.i.i.noexc ], [ false, %call40.i.i.noexc ], [ false, %call.i.i.i.i18.i.noexc ], [ false, %if.then20.i.i ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %next_arg.i.i) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %conv38.i.i) br label %invoke.cont4 @@ -1324,7 +1316,7 @@ lpad.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %_ZN4absl19str_form cleanup br label %lpad -lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %if.then4.i.i.i.i31.i, %.noexc5 +lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %if.then4.i.i.i.i29.i, %.noexc5 %lpad.loopexit.split-lp25 = landingpad { ptr, i32 } cleanup br label %lpad diff --git a/bench/abseil-cpp/optimized/container_test.cc.ll b/bench/abseil-cpp/optimized/container_test.cc.ll index 62e8e1c17e5..a42028080ab 100644 --- a/bench/abseil-cpp/optimized/container_test.cc.ll +++ b/bench/abseil-cpp/optimized/container_test.cc.ll @@ -20775,16 +20775,12 @@ if.then3.i.i.i.i.i.i: ; preds = %cond.true.i.i.i.i _ZNSt6vectorIiSaIiEEC2ERKS1_.exit: ; preds = %cond.true.i.i.i.i %call5.i.i.i.i2.i6.i = call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i.i) #32 call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %call5.i.i.i.i2.i6.i, ptr align 4 %14, i64 %sub.ptr.sub.i.i, i1 false) - %cmp6.i.i.i21.not = icmp eq ptr %13, %14 - br i1 %cmp6.i.i.i21.not, label %_ZSt13__lower_boundIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiNS0_5__ops14_Iter_less_valEET_SA_SA_RKT0_T1_.exit.i.i22, label %while.body.i.i.i28.preheader - -while.body.i.i.i28.preheader: ; preds = %_ZNSt6vectorIiSaIiEEC2ERKS1_.exit %sub.ptr.div.i.i.i.i.i.i20 = lshr exact i64 %sub.ptr.sub.i.i, 2 br label %while.body.i.i.i28 -while.body.i.i.i28: ; preds = %while.body.i.i.i28.preheader, %while.body.i.i.i28 - %__len.08.i.i.i29 = phi i64 [ %__len.1.i.i.i41, %while.body.i.i.i28 ], [ %sub.ptr.div.i.i.i.i.i.i20, %while.body.i.i.i28.preheader ] - %__first.sroa.0.07.i.i.i30 = phi ptr [ %__first.sroa.0.1.i.i.i40, %while.body.i.i.i28 ], [ %call5.i.i.i.i2.i6.i, %while.body.i.i.i28.preheader ] +while.body.i.i.i28: ; preds = %_ZNSt6vectorIiSaIiEEC2ERKS1_.exit, %while.body.i.i.i28 + %__len.08.i.i.i29 = phi i64 [ %__len.1.i.i.i41, %while.body.i.i.i28 ], [ %sub.ptr.div.i.i.i.i.i.i20, %_ZNSt6vectorIiSaIiEEC2ERKS1_.exit ] + %__first.sroa.0.07.i.i.i30 = phi ptr [ %__first.sroa.0.1.i.i.i40, %while.body.i.i.i28 ], [ %call5.i.i.i.i2.i6.i, %_ZNSt6vectorIiSaIiEEC2ERKS1_.exit ] %shr.i.i.i31 = lshr i64 %__len.08.i.i.i29, 1 %add.ptr.i.i.i.i.i.i34 = getelementptr inbounds i32, ptr %__first.sroa.0.07.i.i.i30, i64 %shr.i.i.i31 %15 = load i32, ptr %add.ptr.i.i.i.i.i.i34, align 4 @@ -20797,9 +20793,9 @@ while.body.i.i.i28: ; preds = %while.body.i.i.i28. %cmp.i.i.i42 = icmp sgt i64 %__len.1.i.i.i41, 0 br i1 %cmp.i.i.i42, label %while.body.i.i.i28, label %_ZSt13__lower_boundIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiNS0_5__ops14_Iter_less_valEET_SA_SA_RKT0_T1_.exit.i.i22, !llvm.loop !361 -_ZSt13__lower_boundIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiNS0_5__ops14_Iter_less_valEET_SA_SA_RKT0_T1_.exit.i.i22: ; preds = %while.body.i.i.i28, %_ZN7testing15AssertionResultD2Ev.exit, %_ZNSt6vectorIiSaIiEEC2ERKS1_.exit - %cond.i.i.i.i8085 = phi ptr [ %call5.i.i.i.i2.i6.i, %_ZNSt6vectorIiSaIiEEC2ERKS1_.exit ], [ null, %_ZN7testing15AssertionResultD2Ev.exit ], [ %call5.i.i.i.i2.i6.i, %while.body.i.i.i28 ] - %__first.sroa.0.0.lcssa.i.i.i23 = phi ptr [ %call5.i.i.i.i2.i6.i, %_ZNSt6vectorIiSaIiEEC2ERKS1_.exit ], [ null, %_ZN7testing15AssertionResultD2Ev.exit ], [ %__first.sroa.0.1.i.i.i40, %while.body.i.i.i28 ] +_ZSt13__lower_boundIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiNS0_5__ops14_Iter_less_valEET_SA_SA_RKT0_T1_.exit.i.i22: ; preds = %while.body.i.i.i28, %_ZN7testing15AssertionResultD2Ev.exit + %cond.i.i.i.i8085 = phi ptr [ null, %_ZN7testing15AssertionResultD2Ev.exit ], [ %call5.i.i.i.i2.i6.i, %while.body.i.i.i28 ] + %__first.sroa.0.0.lcssa.i.i.i23 = phi ptr [ null, %_ZN7testing15AssertionResultD2Ev.exit ], [ %__first.sroa.0.1.i.i.i40, %while.body.i.i.i28 ] %add.ptr.i.i.i.i.i.i.i.i.i86 = getelementptr inbounds i8, ptr %cond.i.i.i.i8085, i64 %sub.ptr.sub.i.i %cmp.i2.not.i.i24 = icmp eq ptr %__first.sroa.0.0.lcssa.i.i.i23, %add.ptr.i.i.i.i.i.i.i.i.i86 br i1 %cmp.i2.not.i.i24, label %invoke.cont22, label %land.rhs.i.i25 diff --git a/bench/abseil-cpp/optimized/sequence_lock_test.cc.ll b/bench/abseil-cpp/optimized/sequence_lock_test.cc.ll index e25118db226..de2e6e39981 100644 --- a/bench/abseil-cpp/optimized/sequence_lock_test.cc.ll +++ b/bench/abseil-cpp/optimized/sequence_lock_test.cc.ll @@ -7562,17 +7562,13 @@ if.end10: ; preds = %if.then, %for.body %inc = add i64 %count.017, 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.016, i64 1 %cmp.i.not = icmp eq ptr %incdec.ptr.i, %1 - br i1 %cmp.i.not, label %for.end, label %for.body + br i1 %cmp.i.not, label %if.then14, label %for.body -for.end: ; preds = %if.end10 - %3 = icmp eq ptr %1, %0 - br i1 %3, label %if.end16, label %if.then14 - -if.then14: ; preds = %for.end.thread, %for.end +if.then14: ; preds = %if.end10, %for.end.thread %call15 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %os, i8 noundef signext 32) br label %if.end16 -if.end16: ; preds = %entry, %if.then14, %for.end +if.end16: ; preds = %entry, %if.then14 %call17 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %os, i8 noundef signext 125) ret void } diff --git a/bench/arrow/optimized/csf_converter.cc.ll b/bench/arrow/optimized/csf_converter.cc.ll index f004d645f89..e6caf117a40 100644 --- a/bench/arrow/optimized/csf_converter.cc.ll +++ b/bench/arrow/optimized/csf_converter.cc.ll @@ -3334,23 +3334,17 @@ if.then.i.i.i.i.i: ; preds = %_ZNSt6vectorIlSaIlE store i64 0, ptr %call5.i.i.i.i2.i.i3, align 8 %incdec.ptr.i.i.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i3, i64 8 %cmp.i.i.i.i.i.i.i = icmp eq i64 %sub.ptr.sub.i, 8 - br i1 %cmp.i.i.i.i.i.i.i, label %invoke.cont.thread12, label %invoke.cont - -invoke.cont.thread12: ; preds = %if.then.i.i.i.i.i - %_M_finish.i.i7.i14 = getelementptr inbounds i8, ptr %agg.result, i64 8 - store ptr %incdec.ptr.i.i.i.i.i, ptr %_M_finish.i.i7.i14, align 8 - br label %for.body.i.preheader + br i1 %cmp.i.i.i.i.i.i.i, label %for.body.i.preheader, label %invoke.cont invoke.cont: ; preds = %if.then.i.i.i.i.i %2 = add nsw i64 %sub.ptr.sub.i, -8 tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %2, i1 false) - %_M_finish.i.i7.i = getelementptr inbounds i8, ptr %agg.result, i64 8 - store ptr %add.ptr.i.i.i, ptr %_M_finish.i.i7.i, align 8 - %cmp.i.not4.i = icmp eq ptr %0, %1 - br i1 %cmp.i.not4.i, label %nrvo.skipdtor, label %for.body.i.preheader + br label %for.body.i.preheader -for.body.i.preheader: ; preds = %invoke.cont.thread12, %invoke.cont - %__first.addr.0.i.i.i.i.i16 = phi ptr [ %incdec.ptr.i.i.i.i.i, %invoke.cont.thread12 ], [ %add.ptr.i.i.i, %invoke.cont ] +for.body.i.preheader: ; preds = %if.then.i.i.i.i.i, %invoke.cont + %add.ptr.i.i.i.sink = phi ptr [ %add.ptr.i.i.i, %invoke.cont ], [ %incdec.ptr.i.i.i.i.i, %if.then.i.i.i.i.i ] + %_M_finish.i.i7.i = getelementptr inbounds i8, ptr %agg.result, i64 8 + store ptr %add.ptr.i.i.i.sink, ptr %_M_finish.i.i7.i, align 8 br label %for.body.i for.body.i: ; preds = %for.body.i.preheader, %for.body.i @@ -3359,25 +3353,25 @@ for.body.i: ; preds = %for.body.i.preheade store i64 %indvars.iv.i, ptr %__first.sroa.0.05.i, align 8 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.05.i, i64 8 - %cmp.i.not.i = icmp eq ptr %incdec.ptr.i.i, %__first.addr.0.i.i.i.i.i16 + %cmp.i.not.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i.sink br i1 %cmp.i.not.i, label %if.then.i.i6, label %for.body.i, !llvm.loop !121 if.then.i.i6: ; preds = %for.body.i - %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %__first.addr.0.i.i.i.i.i16 to i64 + %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %add.ptr.i.i.i.sink to i64 %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %call5.i.i.i.i2.i.i3 to i64 %sub.ptr.sub.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i %sub.ptr.div.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i, 3 %3 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %sub.ptr.div.i.i.i, i1 true) %sub.i.i.i = shl nuw nsw i64 %3, 1 %mul.i.i = xor i64 %sub.i.i.i, 126 - invoke void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEElNS0_5__ops15_Iter_comp_iterIZN5arrow8internal7ArgSortIlSt4lessIlEEES5_RKS3_IT_SaISE_EEOT0_EUlllE_EEEvSE_SE_SJ_T1_(ptr nonnull %call5.i.i.i.i2.i.i3, ptr %__first.addr.0.i.i.i.i.i16, i64 noundef %mul.i.i, ptr nonnull %cmp, ptr nonnull %values) + invoke void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEElNS0_5__ops15_Iter_comp_iterIZN5arrow8internal7ArgSortIlSt4lessIlEEES5_RKS3_IT_SaISE_EEOT0_EUlllE_EEEvSE_SE_SJ_T1_(ptr nonnull %call5.i.i.i.i2.i.i3, ptr %add.ptr.i.i.i.sink, i64 noundef %mul.i.i, ptr nonnull %cmp, ptr nonnull %values) to label %.noexc7 unwind label %eh.resume .noexc7: ; preds = %if.then.i.i6 - invoke void @_ZSt22__final_insertion_sortIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEENS0_5__ops15_Iter_comp_iterIZN5arrow8internal7ArgSortIlSt4lessIlEEES5_RKS3_IT_SaISE_EEOT0_EUlllE_EEEvSE_SE_SJ_(ptr nonnull %call5.i.i.i.i2.i.i3, ptr %__first.addr.0.i.i.i.i.i16, ptr nonnull %cmp, ptr nonnull %values) + invoke void @_ZSt22__final_insertion_sortIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEENS0_5__ops15_Iter_comp_iterIZN5arrow8internal7ArgSortIlSt4lessIlEEES5_RKS3_IT_SaISE_EEOT0_EUlllE_EEEvSE_SE_SJ_(ptr nonnull %call5.i.i.i.i2.i.i3, ptr %add.ptr.i.i.i.sink, ptr nonnull %cmp, ptr nonnull %values) to label %nrvo.skipdtor unwind label %eh.resume -nrvo.skipdtor: ; preds = %invoke.cont.thread, %invoke.cont, %.noexc7 +nrvo.skipdtor: ; preds = %invoke.cont.thread, %.noexc7 ret void eh.resume: ; preds = %.noexc7, %if.then.i.i6 diff --git a/bench/arrow/optimized/tensor.cc.ll b/bench/arrow/optimized/tensor.cc.ll index 16b924caeae..89350de8f31 100644 --- a/bench/arrow/optimized/tensor.cc.ll +++ b/bench/arrow/optimized/tensor.cc.ll @@ -1109,7 +1109,7 @@ if.end.i59: ; preds = %do.body10 %size_.i.i = getelementptr inbounds i8, ptr %14, i64 24 %15 = load i64, ptr %size_.i.i, align 8, !noalias !30 %cmp4.i = icmp eq i64 %15, 0 - br i1 %cmp4.i, label %land.rhs.i, label %if.end19.i60 + br i1 %cmp4.i, label %land.rhs.i, label %for.body.preheader.i land.rhs.i: ; preds = %if.end.i59 %shr.i.i.i.i = ashr i64 %sub.ptr.sub.i.i, 5 @@ -1161,7 +1161,7 @@ for.end.i.i.i.i: ; preds = %for.end.loopexit.i. %sub.ptr.sub.i20.pre-phi.i.i.i.i = phi i64 [ %.pre65.i.i.i.i, %for.end.loopexit.i.i.i.i ], [ %sub.ptr.sub.i.i, %land.rhs.i ] %__first.sroa.0.0.lcssa.i.i.i.i = phi ptr [ %scevgep.i.i.i.i, %for.end.loopexit.i.i.i.i ], [ %shape.val14, %land.rhs.i ] %sub.ptr.div.i21.i.i.i.i = ashr exact i64 %sub.ptr.sub.i20.pre-phi.i.i.i.i, 3 - switch i64 %sub.ptr.div.i21.i.i.i.i, label %if.end19.i60 [ + switch i64 %sub.ptr.div.i21.i.i.i.i, label %for.body.preheader.i [ i64 3, label %sw.bb.i.i.i.i i64 2, label %sw.bb31.i.i.i.i i64 1, label %sw.bb38.i.i.i.i @@ -1208,13 +1208,9 @@ _ZSt4findIN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEEiET_S8_S8_RKT0_.e _ZSt4findIN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEEiET_S8_S8_RKT0_.exit.i: ; preds = %for.body.i.i.i.i, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEEiET_S8_S8_RKT0_.exit.i.loopexit.split.loop.exit, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEEiET_S8_S8_RKT0_.exit.i.loopexit.split.loop.exit269, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEEiET_S8_S8_RKT0_.exit.i.loopexit.split.loop.exit271, %sw.bb38.i.i.i.i, %sw.bb31.i.i.i.i, %sw.bb.i.i.i.i %retval.sroa.0.0.in.sroa.speculated.i.i.i.i = phi ptr [ %__first.sroa.0.0.lcssa.i.i.i.i, %sw.bb.i.i.i.i ], [ %__first.sroa.0.1.i.i.i.i, %sw.bb31.i.i.i.i ], [ %spec.select.i.i.i.i, %sw.bb38.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.le, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEEiET_S8_S8_RKT0_.exit.i.loopexit.split.loop.exit ], [ %incdec.ptr.i11.i.i.i.i.le, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEEiET_S8_S8_RKT0_.exit.i.loopexit.split.loop.exit269 ], [ %incdec.ptr.i14.i.i.i.i.le, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEEiET_S8_S8_RKT0_.exit.i.loopexit.split.loop.exit271 ], [ %__first.sroa.0.057.i.i.i.i, %for.body.i.i.i.i ] %cmp.i.not.i63 = icmp eq ptr %retval.sroa.0.0.in.sroa.speculated.i.i.i.i, %shape.val15 - br i1 %cmp.i.not.i63, label %if.end19.i60, label %nrvo.skipdtor29.thread + br i1 %cmp.i.not.i63, label %for.body.preheader.i, label %nrvo.skipdtor29.thread -if.end19.i60: ; preds = %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEEiET_S8_S8_RKT0_.exit.i, %for.end.i.i.i.i, %if.end.i59 - %cmp2117.not.i = icmp eq i64 %sub.ptr.sub.i.i, 0 - br i1 %cmp2117.not.i, label %for.end.i, label %for.body.preheader.i - -for.body.preheader.i: ; preds = %if.end19.i60 +for.body.preheader.i: ; preds = %if.end.i59, %for.end.i.i.i.i, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEEiET_S8_S8_RKT0_.exit.i %umax.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i19.i, i64 1) br label %for.body.i @@ -1259,8 +1255,7 @@ for.inc.i: ; preds = %if.then33.i, %for.b %exitcond.not.i = icmp eq i64 %inc.i, %umax.i br i1 %exitcond.not.i, label %for.end.i, label %for.body.i, !llvm.loop !34 -for.end.i: ; preds = %for.inc.i, %if.end19.i60 - %largest_offset.0.lcssa.i = phi i64 [ 0, %if.end19.i60 ], [ %largest_offset.1.i, %for.inc.i ] +for.end.i: ; preds = %for.inc.i %vtable.i61 = load ptr, ptr %type.val17, align 8, !noalias !30 %vfn.i62 = getelementptr inbounds i8, ptr %vtable.i61, i64 64 %32 = load ptr, ptr %vfn.i62, align 8, !noalias !30 @@ -1270,7 +1265,7 @@ for.end.i: ; preds = %for.inc.i, %if.end1 %34 = load i64, ptr %size_.i30.i, align 8, !noalias !30 %conv.i = sext i32 %call39.i to i64 %sub42.i = sub nsw i64 %34, %conv.i - %cmp43.i = icmp sgt i64 %largest_offset.0.lcssa.i, %sub42.i + %cmp43.i = icmp sgt i64 %largest_offset.1.i, %sub42.i br i1 %cmp43.i, label %if.then44.i, label %nrvo.skipdtor29.thread if.then44.i: ; preds = %for.end.i diff --git a/bench/assimp/optimized/IFCOpenings.cpp.ll b/bench/assimp/optimized/IFCOpenings.cpp.ll index de8eadbee92..32c22119243 100644 --- a/bench/assimp/optimized/IFCOpenings.cpp.ll +++ b/bench/assimp/optimized/IFCOpenings.cpp.ll @@ -1403,7 +1403,7 @@ for.body.lr.ph: ; preds = %entry br label %for.body for.body: ; preds = %for.body.lr.ph, %for.inc230 - %4 = phi ptr [ %2, %for.body.lr.ph ], [ %105, %for.inc230 ] + %4 = phi ptr [ %2, %for.body.lr.ph ], [ %106, %for.inc230 ] %i.0389 = phi i64 [ 0, %for.body.lr.ph ], [ %inc231, %for.inc230 ] %add.ptr.i = getelementptr inbounds %"struct.Assimp::IFC::ProjectedWindowContour", ptr %4, i64 %i.0389 %bb2 = getelementptr inbounds i8, ptr %add.ptr.i, i64 24 @@ -1768,8 +1768,9 @@ if.end58: ; preds = %if.end58.lr.ph, %fo %e.0380 = phi i64 [ 0, %if.end58.lr.ph ], [ %inc228, %for.inc225 ] %edge.sroa.0.2379 = phi double [ 0.000000e+00, %if.end58.lr.ph ], [ %edge.sroa.0.3, %for.inc225 ] %edge.sroa.6.2378 = phi double [ 0.000000e+00, %if.end58.lr.ph ], [ %edge.sroa.6.4, %for.inc225 ] + %n53.0381.fr = freeze i64 %n53.0381 %54 = load ptr, ptr %add.ptr.i, align 8 - %add.ptr.i205 = getelementptr inbounds %class.aiVector2t, ptr %54, i64 %n53.0381 + %add.ptr.i205 = getelementptr inbounds %class.aiVector2t, ptr %54, i64 %n53.0381.fr %55 = load double, ptr %add.ptr.i205, align 8 %56 = load double, ptr %bb2, align 8 %sub = fsub double %55, %56 @@ -1819,8 +1820,8 @@ if.then102: ; preds = %if.then100 %sub.ptr.rhs.cast.i208 = ptrtoint ptr %66 to i64 %sub.ptr.sub.i209 = sub i64 %sub.ptr.lhs.cast.i207, %sub.ptr.rhs.cast.i208 %sub.ptr.div.i210 = sdiv exact i64 %sub.ptr.sub.i209, 24 - %cmp104 = icmp ugt i64 %last_hit.0383, %n53.0381 - %sub105.neg = sub i64 %n53.0381, %last_hit.0383 + %cmp104 = icmp ugt i64 %last_hit.0383, %n53.0381.fr + %sub105.neg = sub i64 %n53.0381.fr, %last_hit.0383 %sub106 = select i1 %cmp104, i64 %sub.ptr.div.i204, i64 0 %cond = add i64 %sub106, %sub105.neg br label %for.body110 @@ -2181,25 +2182,26 @@ while.body.i.i: ; preds = %_ZNSt6vectorIjSaIjE br i1 %cmp.i.i3.i.i, label %while.body.i.i, label %if.end218, !llvm.loop !58 if.end218: ; preds = %while.body.i.i, %_ZNSt6vectorIjSaIjEE9push_backEOj.exit, %if.end206 - %cmp219 = icmp eq i64 %n53.0381, %very_first_hit.0382 + %cmp219 = icmp eq i64 %n53.0381.fr, %very_first_hit.0382 br i1 %cmp219, label %for.inc230, label %for.inc225 for.inc225: ; preds = %if.else88, %if.end218, %if.then100 %edge.sroa.6.4 = phi double [ %edge.sroa.6.3, %if.then100 ], [ %edge.sroa.6.3, %if.end218 ], [ %edge.sroa.6.2378, %if.else88 ] - %very_first_hit.2 = phi i64 [ %n53.0381, %if.then100 ], [ %very_first_hit.0382, %if.end218 ], [ %very_first_hit.0382, %if.else88 ] - %last_hit.1 = phi i64 [ %n53.0381, %if.then100 ], [ %n53.0381, %if.end218 ], [ %last_hit.0383, %if.else88 ] - %add226 = add i64 %n53.0381, 1 - %rem227 = urem i64 %add226, %sub.ptr.div.i204 + %very_first_hit.2 = phi i64 [ %n53.0381.fr, %if.then100 ], [ %very_first_hit.0382, %if.end218 ], [ %very_first_hit.0382, %if.else88 ] + %last_hit.1 = phi i64 [ %n53.0381.fr, %if.then100 ], [ %n53.0381.fr, %if.end218 ], [ %last_hit.0383, %if.else88 ] + %add226 = add i64 %n53.0381.fr, 1 + %104 = icmp eq i64 %add226, %sub.ptr.div.i204 + %rem227 = select i1 %104, i64 0, i64 %add226 %inc228 = add i64 %e.0380, 1 %cmp56 = icmp eq i64 %inc228, %mul br i1 %cmp56, label %if.then57, label %if.end58, !llvm.loop !59 for.inc230: ; preds = %if.end218, %_ZNSt3setI10aiVector2tIdEN6Assimp3IFC8XYSorterESaIS1_EED2Ev.exit, %_ZN6Assimp12LogFunctionsINS_11IFCImporterEE8LogErrorIJRA64_KcEEEvDpOT_.exit, %for.body %inc231 = add nuw i64 %i.0389, 1 - %104 = load ptr, ptr %_M_finish.i, align 8 - %105 = load ptr, ptr %contours, align 8 - %sub.ptr.lhs.cast.i = ptrtoint ptr %104 to i64 - %sub.ptr.rhs.cast.i = ptrtoint ptr %105 to i64 + %105 = load ptr, ptr %_M_finish.i, align 8 + %106 = load ptr, ptr %contours, align 8 + %sub.ptr.lhs.cast.i = ptrtoint ptr %105 to i64 + %sub.ptr.rhs.cast.i = ptrtoint ptr %106 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 104 %cmp = icmp ult i64 %inc231, %sub.ptr.div.i @@ -18121,19 +18123,19 @@ if.then9: ; preds = %if.then %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 %cmp15 = icmp ugt i64 %sub.ptr.div.i, %sub.ptr.div.i.i.i - br i1 %cmp15, label %_ZSt22__uninitialized_move_aIPPN6Assimp3IFC11TempOpeningES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPPN6Assimp3IFC11TempOpeningESt6vectorIS5_SaIS5_EEEEmEvRT_T0_.exit + br i1 %cmp15, label %if.then16, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPPN6Assimp3IFC11TempOpeningESt6vectorIS5_SaIS5_EEEEmEvRT_T0_.exit -_ZSt22__uninitialized_move_aIPPN6Assimp3IFC11TempOpeningES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %if.then9 +if.then16: ; preds = %if.then9 %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i %add.ptr = getelementptr inbounds ptr, ptr %1, i64 %idx.neg tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) - %.pre78 = load ptr, ptr %_M_finish, align 8 - %add.ptr27 = getelementptr inbounds i8, ptr %.pre78, i64 %sub.ptr.sub.i.i.i + %2 = load ptr, ptr %_M_finish, align 8 + %add.ptr27 = getelementptr inbounds i8, ptr %2, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %if.then.i.i.i.i.i30, label %if.then.i.i.i.i.i -if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPPN6Assimp3IFC11TempOpeningES4_SaIS3_EET0_T_S7_S6_RT1_.exit +if.then.i.i.i.i.i: ; preds = %if.then16 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 @@ -18142,7 +18144,7 @@ if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitializ tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i, ptr align 8 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %if.then.i.i.i.i.i30 -if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPPN6Assimp3IFC11TempOpeningES4_SaIS3_EET0_T_S7_S6_RT1_.exit +if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, %if.then16 tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %__position.coerce, ptr align 8 %__first.coerce, i64 %sub.ptr.sub.i.i.i, i1 false) br label %if.end109 @@ -18159,9 +18161,9 @@ if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIN9__gn br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN6Assimp3IFC11TempOpeningESt6vectorIS5_SaIS5_EEEES6_S5_ET0_T_SC_SB_RSaIT1_E.exit _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN6Assimp3IFC11TempOpeningESt6vectorIS5_SaIS5_EEEES6_S5_ET0_T_SC_SB_RSaIT1_E.exit: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPPN6Assimp3IFC11TempOpeningESt6vectorIS5_SaIS5_EEEEmEvRT_T0_.exit, %if.then.i.i.i.i.i.i.i.i - %2 = phi ptr [ %1, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPPN6Assimp3IFC11TempOpeningESt6vectorIS5_SaIS5_EEEEmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] + %3 = phi ptr [ %1, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPPN6Assimp3IFC11TempOpeningESt6vectorIS5_SaIS5_EEEEmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] %sub = sub nuw nsw i64 %sub.ptr.div.i.i.i, %sub.ptr.div.i - %add.ptr50 = getelementptr inbounds ptr, ptr %2, i64 %sub + %add.ptr50 = getelementptr inbounds ptr, ptr %3, i64 %sub store ptr %add.ptr50, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i.i.i.i.i35 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i.i.i.i.i35, label %_ZSt22__uninitialized_move_aIPPN6Assimp3IFC11TempOpeningES4_SaIS3_EET0_T_S7_S6_RT1_.exit38, label %if.then.i.i.i.i.i.i.i.i.i36 @@ -18172,8 +18174,8 @@ if.then.i.i.i.i.i.i.i.i.i36: ; preds = %_ZSt22__uninitializ br label %_ZSt22__uninitialized_move_aIPPN6Assimp3IFC11TempOpeningES4_SaIS3_EET0_T_S7_S6_RT1_.exit38 _ZSt22__uninitialized_move_aIPPN6Assimp3IFC11TempOpeningES4_SaIS3_EET0_T_S7_S6_RT1_.exit38: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN6Assimp3IFC11TempOpeningESt6vectorIS5_SaIS5_EEEES6_S5_ET0_T_SC_SB_RSaIT1_E.exit, %if.then.i.i.i.i.i.i.i.i.i36 - %3 = phi ptr [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN6Assimp3IFC11TempOpeningESt6vectorIS5_SaIS5_EEEES6_S5_ET0_T_SC_SB_RSaIT1_E.exit ], [ %.pre77, %if.then.i.i.i.i.i.i.i.i.i36 ] - %add.ptr58 = getelementptr inbounds i8, ptr %3, i64 %sub.ptr.sub.i + %4 = phi ptr [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN6Assimp3IFC11TempOpeningESt6vectorIS5_SaIS5_EEEES6_S5_ET0_T_SC_SB_RSaIT1_E.exit ], [ %.pre77, %if.then.i.i.i.i.i.i.i.i.i36 ] + %add.ptr58 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr58, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i42 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i42, label %if.end109, label %if.then.i.i.i.i.i43 @@ -18183,8 +18185,8 @@ if.then.i.i.i.i.i43: ; preds = %_ZSt22__uninitializ br label %if.end109 if.else68: ; preds = %if.then - %4 = load ptr, ptr %this, align 8 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %4 to i64 + %5 = load ptr, ptr %this, align 8 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %5 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i.i %sub.ptr.div.i.i = ashr exact i64 %sub.ptr.sub.i.i, 3 %sub.i = sub nsw i64 1152921504606846975, %sub.ptr.div.i.i @@ -18199,8 +18201,8 @@ _ZNKSt6vectorIPN6Assimp3IFC11TempOpeningESaIS3_EE12_M_check_lenEmPKc.exit: ; pre %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i, i64 %sub.ptr.div.i.i.i) %add.i = add nsw i64 %.sroa.speculated.i, %sub.ptr.div.i.i %cmp7.i = icmp ult i64 %add.i, %sub.ptr.div.i.i - %5 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 1152921504606846975) - %cond.i = select i1 %cmp7.i, i64 1152921504606846975, i64 %5 + %6 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 1152921504606846975) + %cond.i = select i1 %cmp7.i, i64 1152921504606846975, i64 %6 %cmp.not.i = icmp eq i64 %cond.i, 0 br i1 %cmp.not.i, label %_ZNSt12_Vector_baseIPN6Assimp3IFC11TempOpeningESaIS3_EE11_M_allocateEm.exit, label %cond.true.i @@ -18213,11 +18215,11 @@ _ZNSt12_Vector_baseIPN6Assimp3IFC11TempOpeningESaIS3_EE11_M_allocateEm.exit: ; p %cond.i47 = phi ptr [ %call5.i.i.i, %cond.true.i ], [ null, %_ZNKSt6vectorIPN6Assimp3IFC11TempOpeningESaIS3_EE12_M_check_lenEmPKc.exit ] %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i48 = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i50 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i48, %sub.ptr.rhs.cast.i.i - %tobool.not.i.i.i.i.i.i.i.i.i51 = icmp eq ptr %__position.coerce, %4 + %tobool.not.i.i.i.i.i.i.i.i.i51 = icmp eq ptr %__position.coerce, %5 br i1 %tobool.not.i.i.i.i.i.i.i.i.i51, label %invoke.cont83, label %if.then.i.i.i.i.i.i.i.i.i52 if.then.i.i.i.i.i.i.i.i.i52: ; preds = %_ZNSt12_Vector_baseIPN6Assimp3IFC11TempOpeningESaIS3_EE11_M_allocateEm.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %cond.i47, ptr align 8 %4, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i50, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %cond.i47, ptr align 8 %5, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i50, i1 false) br label %invoke.cont83 invoke.cont83: ; preds = %if.then.i.i.i.i.i.i.i.i.i52, %_ZNSt12_Vector_baseIPN6Assimp3IFC11TempOpeningESaIS3_EE11_M_allocateEm.exit @@ -18234,11 +18236,11 @@ if.then.i.i.i.i.i.i.i.i.i65: ; preds = %invoke.cont83 invoke.cont87: ; preds = %if.then.i.i.i.i.i.i.i.i.i65, %invoke.cont83 %add.ptr.i.i.i.i.i.i.i.i.i66 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i59, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i63 - %tobool.not.i = icmp eq ptr %4, null + %tobool.not.i = icmp eq ptr %5, null br i1 %tobool.not.i, label %_ZNSt12_Vector_baseIPN6Assimp3IFC11TempOpeningESaIS3_EE13_M_deallocateEPS3_m.exit, label %if.then.i68 if.then.i68: ; preds = %invoke.cont87 - tail call void @_ZdlPv(ptr noundef nonnull %4) #26 + tail call void @_ZdlPv(ptr noundef nonnull %5) #26 br label %_ZNSt12_Vector_baseIPN6Assimp3IFC11TempOpeningESaIS3_EE13_M_deallocateEPS3_m.exit _ZNSt12_Vector_baseIPN6Assimp3IFC11TempOpeningESaIS3_EE13_M_deallocateEPS3_m.exit: ; preds = %invoke.cont87, %if.then.i68 @@ -19121,7 +19123,7 @@ lpad: ; preds = %_ZNSt16allocator_tr if.then: ; preds = %lpad2.i.i.i.i.i %22 = extractvalue { ptr, i32 } %9, 0 %23 = tail call ptr @__cxa_begin_catch(ptr %22) #27 - tail call void @_ZNSt16allocator_traitsISaIN6Assimp3IFC22ProjectedWindowContourEEE7destroyIS2_EEvRS3_PT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %add.ptr) #27 + tail call void @_ZNSt16allocator_traitsISaIN6Assimp3IFC22ProjectedWindowContourEEE7destroyIS2_EEvRS3_PT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull %add.ptr) #27 br label %if.end if.else: ; preds = %lpad, %lpad2.i.i.i.i.i26 @@ -21937,16 +21939,16 @@ if.then9: ; preds = %if.then %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 24 %cmp15 = icmp ugt i64 %sub.ptr.div.i, %sub.ptr.div.i.i.i - br i1 %cmp15, label %for.body.i.i.i.i.i.preheader, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIP10aiVector3tIdESt6vectorIS3_SaIS3_EEEEmEvRT_T0_.exit + br i1 %cmp15, label %if.then16, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIP10aiVector3tIdESt6vectorIS3_SaIS3_EEEEmEvRT_T0_.exit -for.body.i.i.i.i.i.preheader: ; preds = %if.then9 +if.then16: ; preds = %if.then9 %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i %add.ptr = getelementptr inbounds %class.aiVector3t, ptr %1, i64 %idx.neg br label %for.body.i.i.i.i.i -for.body.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.preheader, %for.body.i.i.i.i.i - %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %1, %for.body.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %add.ptr, %for.body.i.i.i.i.i.preheader ] +for.body.i.i.i.i.i: ; preds = %if.then16, %for.body.i.i.i.i.i + %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %1, %if.then16 ] + %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %add.ptr, %if.then16 ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %__cur.09.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %__first.sroa.0.08.i.i.i.i.i, i64 24, i1 false) %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 24 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 24 @@ -21954,8 +21956,8 @@ for.body.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIP10aiVector3tIdES2_SaIS1_EET0_T_S5_S4_RT1_.exit, label %for.body.i.i.i.i.i, !llvm.loop !425 _ZSt22__uninitialized_move_aIP10aiVector3tIdES2_SaIS1_EET0_T_S5_S4_RT1_.exit: ; preds = %for.body.i.i.i.i.i - %.pre87 = load ptr, ptr %_M_finish, align 8 - %add.ptr27 = getelementptr inbounds i8, ptr %.pre87, i64 %sub.ptr.sub.i.i.i + %2 = load ptr, ptr %_M_finish, align 8 + %add.ptr27 = getelementptr inbounds i8, ptr %2, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %if.then.i.i.i.i.i30, label %if.then.i.i.i.i.i @@ -21965,7 +21967,7 @@ if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitializ %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.neg.i.i.i.i.i = sdiv exact i64 %sub.ptr.sub.i.i.i.i.i, -24 %add.ptr.i.i.i.i.i = getelementptr inbounds %class.aiVector3t, ptr %1, i64 %sub.ptr.div.neg.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i, ptr align 8 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %add.ptr.i.i.i.i.i, ptr align 8 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %if.then.i.i.i.i.i30 if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, %_ZSt22__uninitialized_move_aIP10aiVector3tIdES2_SaIS1_EET0_T_S5_S4_RT1_.exit @@ -21991,9 +21993,9 @@ _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP10aiVector3tIdESt6v br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP10aiVector3tIdESt6vectorIS3_SaIS3_EEEES4_S3_ET0_T_SA_S9_RSaIT1_E.exit _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP10aiVector3tIdESt6vectorIS3_SaIS3_EEEES4_S3_ET0_T_SA_S9_RSaIT1_E.exit: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP10aiVector3tIdESt6vectorIS3_SaIS3_EEEES4_S3_ET0_T_SA_S9_RSaIT1_E.exit.loopexit, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIP10aiVector3tIdESt6vectorIS3_SaIS3_EEEEmEvRT_T0_.exit - %2 = phi ptr [ %.pre, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP10aiVector3tIdESt6vectorIS3_SaIS3_EEEES4_S3_ET0_T_SA_S9_RSaIT1_E.exit.loopexit ], [ %1, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIP10aiVector3tIdESt6vectorIS3_SaIS3_EEEEmEvRT_T0_.exit ] + %3 = phi ptr [ %.pre, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP10aiVector3tIdESt6vectorIS3_SaIS3_EEEES4_S3_ET0_T_SA_S9_RSaIT1_E.exit.loopexit ], [ %1, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIP10aiVector3tIdESt6vectorIS3_SaIS3_EEEEmEvRT_T0_.exit ] %sub = sub nuw nsw i64 %sub.ptr.div.i.i.i, %sub.ptr.div.i - %add.ptr50 = getelementptr inbounds %class.aiVector3t, ptr %2, i64 %sub + %add.ptr50 = getelementptr inbounds %class.aiVector3t, ptr %3, i64 %sub store ptr %add.ptr50, ptr %_M_finish, align 8 %cmp.i.i.not7.i.i.i.i.i33 = icmp eq ptr %__position.coerce, %1 br i1 %cmp.i.i.not7.i.i.i.i.i33, label %_ZSt22__uninitialized_move_aIP10aiVector3tIdES2_SaIS1_EET0_T_S5_S4_RT1_.exit41, label %for.body.i.i.i.i.i34 @@ -22012,8 +22014,8 @@ _ZSt22__uninitialized_move_aIP10aiVector3tIdES2_SaIS1_EET0_T_S5_S4_RT1_.exit41.l br label %_ZSt22__uninitialized_move_aIP10aiVector3tIdES2_SaIS1_EET0_T_S5_S4_RT1_.exit41 _ZSt22__uninitialized_move_aIP10aiVector3tIdES2_SaIS1_EET0_T_S5_S4_RT1_.exit41: ; preds = %_ZSt22__uninitialized_move_aIP10aiVector3tIdES2_SaIS1_EET0_T_S5_S4_RT1_.exit41.loopexit, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP10aiVector3tIdESt6vectorIS3_SaIS3_EEEES4_S3_ET0_T_SA_S9_RSaIT1_E.exit - %3 = phi ptr [ %.pre86, %_ZSt22__uninitialized_move_aIP10aiVector3tIdES2_SaIS1_EET0_T_S5_S4_RT1_.exit41.loopexit ], [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP10aiVector3tIdESt6vectorIS3_SaIS3_EEEES4_S3_ET0_T_SA_S9_RSaIT1_E.exit ] - %add.ptr58 = getelementptr inbounds i8, ptr %3, i64 %sub.ptr.sub.i + %4 = phi ptr [ %.pre86, %_ZSt22__uninitialized_move_aIP10aiVector3tIdES2_SaIS1_EET0_T_S5_S4_RT1_.exit41.loopexit ], [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP10aiVector3tIdESt6vectorIS3_SaIS3_EEEES4_S3_ET0_T_SA_S9_RSaIT1_E.exit ] + %add.ptr58 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr58, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i45 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i45, label %if.end109, label %if.then.i.i.i.i.i46 @@ -22023,8 +22025,8 @@ if.then.i.i.i.i.i46: ; preds = %_ZSt22__uninitializ br label %if.end109 if.else68: ; preds = %if.then - %4 = load ptr, ptr %this, align 8 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %4 to i64 + %5 = load ptr, ptr %this, align 8 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %5 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i.i %sub.ptr.div.i.i = sdiv exact i64 %sub.ptr.sub.i.i, 24 %sub.i = sub nsw i64 384307168202282325, %sub.ptr.div.i.i @@ -22039,8 +22041,8 @@ _ZNKSt6vectorI10aiVector3tIdESaIS1_EE12_M_check_lenEmPKc.exit: ; preds = %if.els %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i, i64 %sub.ptr.div.i.i.i) %add.i = add nsw i64 %.sroa.speculated.i, %sub.ptr.div.i.i %cmp7.i = icmp ult i64 %add.i, %sub.ptr.div.i.i - %5 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 384307168202282325) - %cond.i = select i1 %cmp7.i, i64 384307168202282325, i64 %5 + %6 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 384307168202282325) + %cond.i = select i1 %cmp7.i, i64 384307168202282325, i64 %6 %cmp.not.i = icmp eq i64 %cond.i, 0 br i1 %cmp.not.i, label %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit, label %cond.true.i @@ -22051,12 +22053,12 @@ cond.true.i: ; preds = %_ZNKSt6vectorI10aiV _ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorI10aiVector3tIdESaIS1_EE12_M_check_lenEmPKc.exit, %cond.true.i %cond.i50 = phi ptr [ %call5.i.i.i, %cond.true.i ], [ null, %_ZNKSt6vectorI10aiVector3tIdESaIS1_EE12_M_check_lenEmPKc.exit ] - %cmp.i.i.not7.i.i.i.i.i51 = icmp eq ptr %4, %__position.coerce + %cmp.i.i.not7.i.i.i.i.i51 = icmp eq ptr %5, %__position.coerce br i1 %cmp.i.i.not7.i.i.i.i.i51, label %for.body.i.i.i.i60.preheader, label %for.body.i.i.i.i.i52 for.body.i.i.i.i.i52: ; preds = %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit, %for.body.i.i.i.i.i52 %__cur.09.i.i.i.i.i53 = phi ptr [ %incdec.ptr.i.i.i.i.i56, %for.body.i.i.i.i.i52 ], [ %cond.i50, %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit ] - %__first.sroa.0.08.i.i.i.i.i54 = phi ptr [ %incdec.ptr.i.i.i.i.i.i55, %for.body.i.i.i.i.i52 ], [ %4, %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit ] + %__first.sroa.0.08.i.i.i.i.i54 = phi ptr [ %incdec.ptr.i.i.i.i.i.i55, %for.body.i.i.i.i.i52 ], [ %5, %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %__cur.09.i.i.i.i.i53, ptr noundef nonnull align 8 dereferenceable(24) %__first.sroa.0.08.i.i.i.i.i54, i64 24, i1 false) %incdec.ptr.i.i.i.i.i.i55 = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i54, i64 24 %incdec.ptr.i.i.i.i.i56 = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i53, i64 24 @@ -22091,11 +22093,11 @@ for.body.i.i.i.i.i69: ; preds = %invoke.cont83, %for invoke.cont87: ; preds = %for.body.i.i.i.i.i69, %invoke.cont83 %__cur.0.lcssa.i.i.i.i.i75 = phi ptr [ %incdec.ptr.i.i.i.i64, %invoke.cont83 ], [ %incdec.ptr.i.i.i.i.i73, %for.body.i.i.i.i.i69 ] - %tobool.not.i = icmp eq ptr %4, null + %tobool.not.i = icmp eq ptr %5, null br i1 %tobool.not.i, label %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE13_M_deallocateEPS1_m.exit, label %if.then.i77 if.then.i77: ; preds = %invoke.cont87 - tail call void @_ZdlPv(ptr noundef nonnull %4) #26 + tail call void @_ZdlPv(ptr noundef nonnull %5) #26 br label %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE13_M_deallocateEPS1_m.exit _ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE13_M_deallocateEPS1_m.exit: ; preds = %invoke.cont87, %if.then.i77 @@ -22135,19 +22137,19 @@ if.then9: ; preds = %if.then %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 2 %cmp15 = icmp ugt i64 %sub.ptr.div.i, %sub.ptr.div.i.i.i - br i1 %cmp15, label %_ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEmEvRT_T0_.exit + br i1 %cmp15, label %if.then16, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEmEvRT_T0_.exit -_ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit: ; preds = %if.then9 +if.then16: ; preds = %if.then9 %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i %add.ptr = getelementptr inbounds i32, ptr %1, i64 %idx.neg tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %add.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) - %.pre78 = load ptr, ptr %_M_finish, align 8 - %add.ptr27 = getelementptr inbounds i8, ptr %.pre78, i64 %sub.ptr.sub.i.i.i + %2 = load ptr, ptr %_M_finish, align 8 + %add.ptr27 = getelementptr inbounds i8, ptr %2, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %if.then.i.i.i.i.i30, label %if.then.i.i.i.i.i -if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i: ; preds = %if.then16 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 2 @@ -22156,7 +22158,7 @@ if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitializ tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %add.ptr.i.i.i.i.i, ptr align 4 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %if.then.i.i.i.i.i30 -if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, %if.then16 tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %__position.coerce, ptr align 4 %__first.coerce, i64 %sub.ptr.sub.i.i.i, i1 false) br label %if.end109 @@ -22173,9 +22175,9 @@ if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIN9__gn br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEES2_jET0_T_S8_S7_RSaIT1_E.exit _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEES2_jET0_T_S8_S7_RSaIT1_E.exit: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEmEvRT_T0_.exit, %if.then.i.i.i.i.i.i.i.i - %2 = phi ptr [ %1, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] + %3 = phi ptr [ %1, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] %sub = sub nuw nsw i64 %sub.ptr.div.i.i.i, %sub.ptr.div.i - %add.ptr50 = getelementptr inbounds i32, ptr %2, i64 %sub + %add.ptr50 = getelementptr inbounds i32, ptr %3, i64 %sub store ptr %add.ptr50, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i.i.i.i.i35 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i.i.i.i.i35, label %_ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit38, label %if.then.i.i.i.i.i.i.i.i.i36 @@ -22186,8 +22188,8 @@ if.then.i.i.i.i.i.i.i.i.i36: ; preds = %_ZSt22__uninitializ br label %_ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit38 _ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit38: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEES2_jET0_T_S8_S7_RSaIT1_E.exit, %if.then.i.i.i.i.i.i.i.i.i36 - %3 = phi ptr [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEES2_jET0_T_S8_S7_RSaIT1_E.exit ], [ %.pre77, %if.then.i.i.i.i.i.i.i.i.i36 ] - %add.ptr58 = getelementptr inbounds i8, ptr %3, i64 %sub.ptr.sub.i + %4 = phi ptr [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEES2_jET0_T_S8_S7_RSaIT1_E.exit ], [ %.pre77, %if.then.i.i.i.i.i.i.i.i.i36 ] + %add.ptr58 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr58, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i42 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i42, label %if.end109, label %if.then.i.i.i.i.i43 @@ -22197,8 +22199,8 @@ if.then.i.i.i.i.i43: ; preds = %_ZSt22__uninitializ br label %if.end109 if.else68: ; preds = %if.then - %4 = load ptr, ptr %this, align 8 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %4 to i64 + %5 = load ptr, ptr %this, align 8 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %5 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i.i %sub.ptr.div.i.i = ashr exact i64 %sub.ptr.sub.i.i, 2 %sub.i = sub nsw i64 2305843009213693951, %sub.ptr.div.i.i @@ -22213,8 +22215,8 @@ _ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit: ; preds = %if.else68 %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i, i64 %sub.ptr.div.i.i.i) %add.i = add nsw i64 %.sroa.speculated.i, %sub.ptr.div.i.i %cmp7.i = icmp ult i64 %add.i, %sub.ptr.div.i.i - %5 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 2305843009213693951) - %cond.i = select i1 %cmp7.i, i64 2305843009213693951, i64 %5 + %6 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 2305843009213693951) + %cond.i = select i1 %cmp7.i, i64 2305843009213693951, i64 %6 %cmp.not.i = icmp eq i64 %cond.i, 0 br i1 %cmp.not.i, label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit, label %cond.true.i @@ -22227,11 +22229,11 @@ _ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorIjSaIj %cond.i47 = phi ptr [ %call5.i.i.i, %cond.true.i ], [ null, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit ] %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i48 = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i50 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i48, %sub.ptr.rhs.cast.i.i - %tobool.not.i.i.i.i.i.i.i.i.i51 = icmp eq ptr %__position.coerce, %4 + %tobool.not.i.i.i.i.i.i.i.i.i51 = icmp eq ptr %__position.coerce, %5 br i1 %tobool.not.i.i.i.i.i.i.i.i.i51, label %invoke.cont83, label %if.then.i.i.i.i.i.i.i.i.i52 if.then.i.i.i.i.i.i.i.i.i52: ; preds = %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %cond.i47, ptr align 4 %4, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i50, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %cond.i47, ptr align 4 %5, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i50, i1 false) br label %invoke.cont83 invoke.cont83: ; preds = %if.then.i.i.i.i.i.i.i.i.i52, %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit @@ -22248,11 +22250,11 @@ if.then.i.i.i.i.i.i.i.i.i65: ; preds = %invoke.cont83 invoke.cont87: ; preds = %if.then.i.i.i.i.i.i.i.i.i65, %invoke.cont83 %add.ptr.i.i.i.i.i.i.i.i.i66 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i59, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i63 - %tobool.not.i = icmp eq ptr %4, null + %tobool.not.i = icmp eq ptr %5, null br i1 %tobool.not.i, label %_ZNSt12_Vector_baseIjSaIjEE13_M_deallocateEPjm.exit, label %if.then.i68 if.then.i68: ; preds = %invoke.cont87 - tail call void @_ZdlPv(ptr noundef nonnull %4) #26 + tail call void @_ZdlPv(ptr noundef nonnull %5) #26 br label %_ZNSt12_Vector_baseIjSaIjEE13_M_deallocateEPjm.exit _ZNSt12_Vector_baseIjSaIjEE13_M_deallocateEPjm.exit: ; preds = %invoke.cont87, %if.then.i68 diff --git a/bench/assimp/optimized/PlyParser.cpp.ll b/bench/assimp/optimized/PlyParser.cpp.ll index 91490004512..3f7d38d1da5 100644 --- a/bench/assimp/optimized/PlyParser.cpp.ll +++ b/bench/assimp/optimized/PlyParser.cpp.ll @@ -295,7 +295,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i: ; preds = %land.lhs.true.i.i, _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i, %3 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr align 1 %add.ptr.i6.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr nonnull align 1 %add.ptr.i6.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre.i.i.i = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i = ptrtoint ptr %.pre.i.i.i to i64 br label %if.end.i.i.i @@ -343,7 +343,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i28: ; preds = %land.lhs.true.i.i26 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i35: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i28 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i36 = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i37 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i36, %7 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr align 1 %add.ptr.i6.i33, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i37, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr nonnull align 1 %add.ptr.i6.i33, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i37, i1 false) %.pre.i.i.i38 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i39 = ptrtoint ptr %.pre.i.i.i38 to i64 br label %if.end.i.i.i40 @@ -391,7 +391,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i57: ; preds = %land.lhs.true.i.i55 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i64: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i57 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i65 = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i66 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i65, %11 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr align 1 %add.ptr.i6.i62, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i66, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr nonnull align 1 %add.ptr.i6.i62, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i66, i1 false) %.pre.i.i.i67 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i68 = ptrtoint ptr %.pre.i.i.i67 to i64 br label %if.end.i.i.i69 @@ -439,7 +439,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i86: ; preds = %land.lhs.true.i.i84 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i93: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i86 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i94 = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i95 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i94, %15 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr align 1 %add.ptr.i6.i91, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i95, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr nonnull align 1 %add.ptr.i6.i91, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i95, i1 false) %.pre.i.i.i96 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i97 = ptrtoint ptr %.pre.i.i.i96 to i64 br label %if.end.i.i.i98 @@ -487,7 +487,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i115: ; preds = %land.lhs.true.i.i11 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i122: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i115 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i123 = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i124 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i123, %19 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr align 1 %add.ptr.i6.i120, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i124, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr nonnull align 1 %add.ptr.i6.i120, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i124, i1 false) %.pre.i.i.i125 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i126 = ptrtoint ptr %.pre.i.i.i125 to i64 br label %if.end.i.i.i127 @@ -535,7 +535,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i144: ; preds = %land.lhs.true.i.i14 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i151: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i144 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i152 = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i153 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i152, %23 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr align 1 %add.ptr.i6.i149, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i153, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr nonnull align 1 %add.ptr.i6.i149, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i153, i1 false) %.pre.i.i.i154 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i155 = ptrtoint ptr %.pre.i.i.i154 to i64 br label %if.end.i.i.i156 @@ -655,7 +655,7 @@ if.then.i.i: ; preds = %_ZN6Assimp10TokenMa _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i: ; preds = %if.then.i.i %sub.ptr.lhs.cast.i.i.i.i.i.i.i = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i, %3 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr align 1 %add.ptr.i6, i64 %sub.ptr.sub.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr nonnull align 1 %add.ptr.i6, i64 %sub.ptr.sub.i.i.i.i.i.i.i, i1 false) %.pre.i.i = load ptr, ptr %_M_finish.i.i, align 8 %.pre9.i.i = ptrtoint ptr %.pre.i.i to i64 br label %if.end.i.i @@ -793,7 +793,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i50: ; preds = %land.lhs.true.i.i48 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i57: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i50 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i58 = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i59 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i58, %19 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr align 1 %add.ptr.i6.i55, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i59, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr nonnull align 1 %add.ptr.i6.i55, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i59, i1 false) %.pre.i.i.i60 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i61 = ptrtoint ptr %.pre.i.i.i60 to i64 br label %if.end.i.i.i62 @@ -841,7 +841,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i79: ; preds = %land.lhs.true.i.i77 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i86: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i79 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i87 = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i88 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i87, %23 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr align 1 %add.ptr.i6.i84, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i88, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr nonnull align 1 %add.ptr.i6.i84, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i88, i1 false) %.pre.i.i.i89 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i90 = ptrtoint ptr %.pre.i.i.i89 to i64 br label %if.end.i.i.i91 @@ -889,7 +889,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i108: ; preds = %land.lhs.true.i.i10 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i115: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i108 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i116 = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i117 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i116, %27 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr align 1 %add.ptr.i6.i113, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i117, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr nonnull align 1 %add.ptr.i6.i113, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i117, i1 false) %.pre.i.i.i118 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i119 = ptrtoint ptr %.pre.i.i.i118 to i64 br label %if.end.i.i.i120 @@ -937,7 +937,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i137: ; preds = %land.lhs.true.i.i13 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i144: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i137 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i145 = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i146 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i145, %31 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr align 1 %add.ptr.i6.i142, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i146, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr nonnull align 1 %add.ptr.i6.i142, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i146, i1 false) %.pre.i.i.i147 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i148 = ptrtoint ptr %.pre.i.i.i147 to i64 br label %if.end.i.i.i149 @@ -985,7 +985,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i166: ; preds = %land.lhs.true.i.i16 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i173: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i166 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i174 = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i175 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i174, %35 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr align 1 %add.ptr.i6.i171, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i175, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr nonnull align 1 %add.ptr.i6.i171, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i175, i1 false) %.pre.i.i.i176 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i177 = ptrtoint ptr %.pre.i.i.i176 to i64 br label %if.end.i.i.i178 @@ -1201,7 +1201,7 @@ if.then.i.i: ; preds = %_ZN6Assimp8SkipLine _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i: ; preds = %if.then.i.i %sub.ptr.lhs.cast.i.i.i.i.i.i.i = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i, %4 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %0, ptr align 1 %add.ptr.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %0, ptr nonnull align 1 %add.ptr.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i, i1 false) %.pre.i.i = load ptr, ptr %_M_finish.i.i, align 8 %.pre9.i.i = ptrtoint ptr %.pre.i.i to i64 br label %if.end.i.i @@ -1271,7 +1271,7 @@ if.then.i.i.i: ; preds = %_ZN6Assimp10SkipSpa _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i: ; preds = %if.then.i.i.i %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i, %3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %0, ptr align 1 %add.ptr.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %0, ptr nonnull align 1 %add.ptr.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre.i.i.i = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i = ptrtoint ptr %.pre.i.i.i to i64 br label %if.end.i.i.i @@ -1332,7 +1332,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i: ; preds = %land.lhs.true.i.i, _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i32: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i33 = ptrtoint ptr %8 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i34 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i33, %11 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %9, ptr align 1 %add.ptr.i6.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i34, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %9, ptr nonnull align 1 %add.ptr.i6.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i34, i1 false) %.pre.i.i.i35 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i36 = ptrtoint ptr %.pre.i.i.i35 to i64 br label %if.end.i.i.i37 @@ -1393,7 +1393,7 @@ if.then.i.i.i55: ; preds = %_ZN6Assimp10SkipSpa _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i57: ; preds = %if.then.i.i.i55 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i58 = ptrtoint ptr %15 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i59 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i58, %18 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %16, ptr align 1 %add.ptr.i.i53, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i59, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %16, ptr nonnull align 1 %add.ptr.i.i53, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i59, i1 false) %.pre.i.i.i60 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i61 = ptrtoint ptr %.pre.i.i.i60 to i64 br label %if.end.i.i.i62 @@ -1454,7 +1454,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i82: ; preds = %land.lhs.true.i.i80 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i91: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i82 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i92 = ptrtoint ptr %23 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i93 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i92, %26 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %24, ptr align 1 %add.ptr.i6.i87, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i93, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %24, ptr nonnull align 1 %add.ptr.i6.i87, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i93, i1 false) %.pre.i.i.i94 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i95 = ptrtoint ptr %.pre.i.i.i94 to i64 br label %if.end.i.i.i96 @@ -1532,7 +1532,7 @@ if.then.i.i.i112: ; preds = %_ZN6Assimp8SkipLine _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i114: ; preds = %if.then.i.i.i112 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i115 = ptrtoint ptr %30 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i116 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i115, %33 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %29, ptr align 1 %add.ptr.i.i110, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i116, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %29, ptr nonnull align 1 %add.ptr.i.i110, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i116, i1 false) %.pre.i.i.i117 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i118 = ptrtoint ptr %.pre.i.i.i117 to i64 br label %if.end.i.i.i119 @@ -1587,7 +1587,7 @@ if.then.i.i.i140: ; preds = %_ZN6Assimp10SkipSpa _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i142: ; preds = %if.then.i.i.i140 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i143 = ptrtoint ptr %30 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i144 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i143, %37 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %29, ptr align 1 %add.ptr.i.i138, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i144, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %29, ptr nonnull align 1 %add.ptr.i.i138, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i144, i1 false) %.pre.i.i.i145 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i146 = ptrtoint ptr %.pre.i.i.i145 to i64 br label %if.end.i.i.i147 @@ -1675,7 +1675,7 @@ if.then.i.i.i174: ; preds = %_ZN6Assimp8SkipLine _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i176: ; preds = %if.then.i.i.i174 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i177 = ptrtoint ptr %41 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i178 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i177, %44 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %40, ptr align 1 %add.ptr.i.i172, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i178, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %40, ptr nonnull align 1 %add.ptr.i.i172, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i178, i1 false) %.pre.i.i.i179 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i180 = ptrtoint ptr %.pre.i.i.i179 to i64 br label %if.end.i.i.i181 @@ -1735,7 +1735,7 @@ if.then.i.i.i203: ; preds = %_ZN6Assimp10SkipSpa _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i205: ; preds = %if.then.i.i.i203 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i206 = ptrtoint ptr %48 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i207 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i206, %50 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %47, ptr align 1 %add.ptr.i.i201, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i207, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %47, ptr nonnull align 1 %add.ptr.i.i201, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i207, i1 false) %.pre.i.i.i208 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i209 = ptrtoint ptr %.pre.i.i.i208 to i64 br label %if.end.i.i.i210 @@ -1838,7 +1838,7 @@ if.then.i.i: ; preds = %_ZN6Assimp10SkipSpa _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i: ; preds = %if.then.i.i %sub.ptr.lhs.cast.i.i.i.i.i.i.i = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i, %3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %0, ptr align 1 %add.ptr.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %0, ptr nonnull align 1 %add.ptr.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i, i1 false) %.pre.i.i = load ptr, ptr %_M_finish.i.i, align 8 %.pre9.i.i = ptrtoint ptr %.pre.i.i to i64 br label %if.end.i.i @@ -1935,7 +1935,7 @@ if.then.i.i: ; preds = %_ZN6Assimp20SkipSpa _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i: ; preds = %if.then.i.i %sub.ptr.lhs.cast.i.i.i.i.i.i.i = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i, %3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %0, ptr align 1 %add.ptr.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %0, ptr nonnull align 1 %add.ptr.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i, i1 false) %.pre.i.i = load ptr, ptr %_M_finish.i.i, align 8 %.pre9.i.i = ptrtoint ptr %.pre.i.i to i64 br label %if.end.i.i @@ -1999,7 +1999,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i: ; preds = %land.lhs.true.i.i, _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i, %3 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr align 1 %add.ptr.i6.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr nonnull align 1 %add.ptr.i6.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre.i.i.i = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i = ptrtoint ptr %.pre.i.i.i to i64 br label %if.end.i.i.i @@ -2043,7 +2043,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i16: ; preds = %land.lhs.true.i.i14 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i23: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i16 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i24 = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i25 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i24, %7 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr align 1 %add.ptr.i6.i21, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i25, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr nonnull align 1 %add.ptr.i6.i21, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i25, i1 false) %.pre.i.i.i26 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i27 = ptrtoint ptr %.pre.i.i.i26 to i64 br label %if.end.i.i.i28 @@ -2087,7 +2087,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i45: ; preds = %land.lhs.true.i.i43 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i52: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i45 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i53 = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i54 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i53, %11 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr align 1 %add.ptr.i6.i50, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i54, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr nonnull align 1 %add.ptr.i6.i50, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i54, i1 false) %.pre.i.i.i55 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i56 = ptrtoint ptr %.pre.i.i.i55 to i64 br label %if.end.i.i.i57 @@ -2131,7 +2131,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i74: ; preds = %land.lhs.true.i.i72 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i81: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i74 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i82 = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i83 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i82, %15 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr align 1 %add.ptr.i6.i79, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i83, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr nonnull align 1 %add.ptr.i6.i79, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i83, i1 false) %.pre.i.i.i84 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i85 = ptrtoint ptr %.pre.i.i.i84 to i64 br label %if.end.i.i.i86 @@ -2175,7 +2175,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i103: ; preds = %land.lhs.true.i.i10 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i110: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i103 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i111 = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i112 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i111, %19 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr align 1 %add.ptr.i6.i108, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i112, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr nonnull align 1 %add.ptr.i6.i108, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i112, i1 false) %.pre.i.i.i113 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i114 = ptrtoint ptr %.pre.i.i.i113 to i64 br label %if.end.i.i.i115 @@ -2219,7 +2219,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i132: ; preds = %land.lhs.true.i.i13 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i139: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i132 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i140 = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i141 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i140, %23 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr align 1 %add.ptr.i6.i137, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i141, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %0, ptr nonnull align 1 %add.ptr.i6.i137, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i141, i1 false) %.pre.i.i.i142 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i143 = ptrtoint ptr %.pre.i.i.i142 to i64 br label %if.end.i.i.i144 @@ -2295,7 +2295,7 @@ if.then.i.i.i: ; preds = %_ZN6Assimp10SkipSpa _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i: ; preds = %if.then.i.i.i %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i, %3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %0, ptr align 1 %add.ptr.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %0, ptr nonnull align 1 %add.ptr.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre.i.i.i = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i = ptrtoint ptr %.pre.i.i.i to i64 br label %if.end.i.i.i @@ -2356,7 +2356,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i: ; preds = %land.lhs.true.i.i, _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i36: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i37 = ptrtoint ptr %8 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i38 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i37, %11 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %9, ptr align 1 %add.ptr.i6.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i38, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %9, ptr nonnull align 1 %add.ptr.i6.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i38, i1 false) %.pre.i.i.i39 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i40 = ptrtoint ptr %.pre.i.i.i39 to i64 br label %if.end.i.i.i41 @@ -2401,7 +2401,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i57: ; preds = %land.lhs.true.i.i55 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i66: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i57 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i67 = ptrtoint ptr %8 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i68 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i67, %16 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %9, ptr align 1 %add.ptr.i6.i62, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i68, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %9, ptr nonnull align 1 %add.ptr.i6.i62, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i68, i1 false) %.pre.i.i.i69 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i70 = ptrtoint ptr %.pre.i.i.i69 to i64 br label %if.end.i.i.i71 @@ -2463,7 +2463,7 @@ if.then.i.i.i90: ; preds = %_ZN6Assimp10SkipSpa _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i92: ; preds = %if.then.i.i.i90 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i93 = ptrtoint ptr %20 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i94 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i93, %23 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %21, ptr align 1 %add.ptr.i.i88, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i94, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %21, ptr nonnull align 1 %add.ptr.i.i88, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i94, i1 false) %.pre.i.i.i95 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i96 = ptrtoint ptr %.pre.i.i.i95 to i64 br label %if.end.i.i.i97 @@ -2574,7 +2574,7 @@ if.then.i.i.i120: ; preds = %_ZN6Assimp10SkipSpa _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i122: ; preds = %if.then.i.i.i120 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i123 = ptrtoint ptr %30 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i124 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i123, %32 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %29, ptr align 1 %add.ptr.i.i118, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i124, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 1 %29, ptr nonnull align 1 %add.ptr.i.i118, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i124, i1 false) %.pre.i.i.i125 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i126 = ptrtoint ptr %.pre.i.i.i125 to i64 br label %if.end.i.i.i127 @@ -2665,7 +2665,7 @@ if.then.i.i.i155: ; preds = %_ZN6Assimp20SkipSpa _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i157: ; preds = %if.then.i.i.i155 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i158 = ptrtoint ptr %40 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i159 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i158, %42 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %39, ptr align 1 %add.ptr.i.i153, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i159, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 1 %39, ptr nonnull align 1 %add.ptr.i.i153, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i159, i1 false) %.pre.i.i.i160 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i161 = ptrtoint ptr %.pre.i.i.i160 to i64 br label %if.end.i.i.i162 @@ -2752,7 +2752,7 @@ if.then.i.i.i185: ; preds = %_ZN6Assimp20SkipSpa _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i187: ; preds = %if.then.i.i.i185 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i188 = ptrtoint ptr %52 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i189 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i188, %54 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %51, ptr align 1 %add.ptr.i.i183, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i189, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 1 %51, ptr nonnull align 1 %add.ptr.i.i183, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i189, i1 false) %.pre.i.i.i190 = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i191 = ptrtoint ptr %.pre.i.i.i190 to i64 br label %if.end.i.i.i192 @@ -3172,7 +3172,7 @@ if.then.i.i.i: ; preds = %_ZN6Assimp10SkipSpa _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i: ; preds = %if.then.i.i.i %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i, %4 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %0, ptr align 1 %add.ptr.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 1 %0, ptr nonnull align 1 %add.ptr.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre.i.i.i = load ptr, ptr %_M_finish.i.i.i.i, align 8 %.pre9.i.i.i = ptrtoint ptr %.pre.i.i.i to i64 br label %if.end.i.i.i @@ -3239,7 +3239,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i: ; preds = %land.lhs.true.i.i, _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i11: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i12 = ptrtoint ptr %10 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i13 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i12, %13 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %11, ptr align 1 %add.ptr.i6.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i13, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %11, ptr nonnull align 1 %add.ptr.i6.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i13, i1 false) %.pre.i.i.i14 = load ptr, ptr %_M_finish.i.i.i.i, align 8 %.pre9.i.i.i15 = ptrtoint ptr %.pre.i.i.i14 to i64 br label %if.end.i.i.i16 @@ -3300,7 +3300,7 @@ if.then.i.i.i34: ; preds = %_ZN6Assimp10SkipSpa _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i36: ; preds = %if.then.i.i.i34 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i37 = ptrtoint ptr %17 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i38 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i37, %20 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %18, ptr align 1 %add.ptr.i.i32, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i38, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 1 %18, ptr nonnull align 1 %add.ptr.i.i32, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i38, i1 false) %.pre.i.i.i39 = load ptr, ptr %_M_finish.i.i.i.i, align 8 %.pre9.i.i.i40 = ptrtoint ptr %.pre.i.i.i39 to i64 br label %if.end.i.i.i41 @@ -3374,7 +3374,7 @@ if.then.i.i.i60: ; preds = %_ZN6Assimp8SkipLine _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i62: ; preds = %if.then.i.i.i60 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i63 = ptrtoint ptr %25 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i64 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i63, %29 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %26, ptr align 1 %add.ptr.i.i58, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i64, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 1 %26, ptr nonnull align 1 %add.ptr.i.i58, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i64, i1 false) %.pre.i.i.i65 = load ptr, ptr %_M_finish.i.i.i.i, align 8 %.pre9.i.i.i66 = ptrtoint ptr %.pre.i.i.i65 to i64 br label %if.end.i.i.i67 @@ -3434,7 +3434,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i86: ; preds = %land.lhs.true.i.i84 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i95: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i86 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i96 = ptrtoint ptr %33 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i97 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i96, %36 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %34, ptr align 1 %add.ptr.i6.i91, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i97, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %34, ptr nonnull align 1 %add.ptr.i6.i91, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i97, i1 false) %.pre.i.i.i98 = load ptr, ptr %_M_finish.i.i.i.i, align 8 %.pre9.i.i.i99 = ptrtoint ptr %.pre.i.i.i98 to i64 br label %if.end.i.i.i100 @@ -3495,7 +3495,7 @@ if.then.i.i.i124: ; preds = %_ZN6Assimp8SkipLine _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i126: ; preds = %if.then.i.i.i124 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i127 = ptrtoint ptr %33 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i128 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i127, %41 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %34, ptr align 1 %add.ptr.i.i122, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i128, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 1 %34, ptr nonnull align 1 %add.ptr.i.i122, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i128, i1 false) %.pre.i.i.i129 = load ptr, ptr %_M_finish.i.i.i.i, align 8 %.pre9.i.i.i130 = ptrtoint ptr %.pre.i.i.i129 to i64 br label %if.end.i.i.i131 @@ -3869,7 +3869,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i: ; preds = %land.lhs.true.i.i, _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.i %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %12 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i, %14 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %11, ptr align 1 %add.ptr.i6.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %11, ptr nonnull align 1 %add.ptr.i6.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre.i.i.i = load ptr, ptr %_M_finish.i.i, align 8 %.pre9.i.i.i = ptrtoint ptr %.pre.i.i.i to i64 br label %if.end.i.i.i @@ -3972,7 +3972,7 @@ if.then.i.i.i20: ; preds = %_ZN6Assimp20SkipSpa _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i22: ; preds = %if.then.i.i.i20 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i23 = ptrtoint ptr %21 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i24 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i23, %23 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %20, ptr align 1 %add.ptr.i.i19, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i24, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 1 %20, ptr nonnull align 1 %add.ptr.i.i19, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i24, i1 false) %.pre.i.i.i25 = load ptr, ptr %_M_finish.i.i, align 8 %.pre9.i.i.i26 = ptrtoint ptr %.pre.i.i.i25 to i64 br label %if.end.i.i.i27 @@ -4367,7 +4367,7 @@ if.then.i.i.i29: ; preds = %_ZN6Assimp8SkipLine _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i: ; preds = %if.then.i.i.i29 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %6 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i, %9 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %5, ptr align 1 %add.ptr.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 1 %5, ptr nonnull align 1 %add.ptr.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre.i.i.i = load ptr, ptr %_M_finish.i.i.i, align 8 %.pre9.i.i.i = ptrtoint ptr %.pre.i.i.i to i64 br label %if.end.i.i.i @@ -4679,8 +4679,7 @@ _ZNSt6vectorIN6Assimp3PLY16PropertyInstanceESaIS2_EE6resizeEm.exit.i35.us: ; pre %add.ptr37.i.us = getelementptr inbounds %"class.Assimp::PLY::PropertyInstance", ptr %call5.i.i.i.i71.us, i64 %sub.ptr.div.i.i26.us store ptr %add.ptr37.i.us, ptr %_M_finish.i.i.i27, align 8 store ptr %add.ptr37.i.us, ptr %_M_end_of_storage.i, align 8 - %cmp.i5.not10.i36.us = icmp eq ptr %1, %2 - br i1 %cmp.i5.not10.i36.us, label %invoke.cont.us, label %for.body.i38.us + br label %for.body.i38.us for.body.i38.us: ; preds = %_ZNSt6vectorIN6Assimp3PLY16PropertyInstanceESaIS2_EE6resizeEm.exit.i35.us, %call13.i41.noexc.us %i.sroa.0.012.i39.us = phi ptr [ %incdec.ptr.i.i42.us, %call13.i41.noexc.us ], [ %call5.i.i.i.i71.us, %_ZNSt6vectorIN6Assimp3PLY16PropertyInstanceESaIS2_EE6resizeEm.exit.i35.us ] @@ -4695,7 +4694,7 @@ call13.i41.noexc.us: ; preds = %for.body.i38.us %cmp.i5.not.i44.us = icmp eq ptr %incdec.ptr.i.i42.us, %3 br i1 %cmp.i5.not.i44.us, label %invoke.cont.us, label %for.body.i38.us, !llvm.loop !23 -invoke.cont.us: ; preds = %call13.i41.noexc.us, %for.body.us, %_ZNSt6vectorIN6Assimp3PLY16PropertyInstanceESaIS2_EE6resizeEm.exit.i35.us +invoke.cont.us: ; preds = %call13.i41.noexc.us, %for.body.us %4 = load i32, ptr %eSemantic, align 8 switch i32 %4, label %if.end19.us [ i32 0, label %if.then6.us @@ -9214,27 +9213,27 @@ if.then9: ; preds = %if.then %sub.ptr.rhs.cast.i = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %cmp15 = icmp ugt i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i.i - br i1 %cmp15, label %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEmEvRT_T0_.exit + br i1 %cmp15, label %if.then16, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEmEvRT_T0_.exit -_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit: ; preds = %if.then9 +if.then16: ; preds = %if.then9 %idx.neg = sub i64 0, %sub.ptr.sub.i.i.i %add.ptr = getelementptr inbounds i8, ptr %1, i64 %idx.neg - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr align 1 %add.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) - %.pre78 = load ptr, ptr %_M_finish, align 8 - %add.ptr27 = getelementptr inbounds i8, ptr %.pre78, i64 %sub.ptr.sub.i.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr nonnull align 1 %add.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) + %2 = load ptr, ptr %_M_finish, align 8 + %add.ptr27 = getelementptr inbounds i8, ptr %2, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %if.then.i.i.i.i.i30, label %if.then.i.i.i.i.i -if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i: ; preds = %if.then16 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %idx.neg.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 %idx.neg.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %if.then.i.i.i.i.i30 -if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, %if.then16 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %__position.coerce, ptr align 1 %__first.coerce, i64 %sub.ptr.sub.i.i.i, i1 false) br label %if.end108 @@ -9251,9 +9250,9 @@ if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIN9__gn br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES2_cET0_T_S8_S7_RSaIT1_E.exit _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES2_cET0_T_S8_S7_RSaIT1_E.exit: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEmEvRT_T0_.exit, %if.then.i.i.i.i.i.i.i.i - %2 = phi ptr [ %1, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] + %3 = phi ptr [ %1, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] %sub = sub nuw i64 %sub.ptr.sub.i.i.i, %sub.ptr.sub.i - %add.ptr50 = getelementptr inbounds i8, ptr %2, i64 %sub + %add.ptr50 = getelementptr inbounds i8, ptr %3, i64 %sub store ptr %add.ptr50, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i.i.i.i.i35 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i.i.i.i.i35, label %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit38, label %if.then.i.i.i.i.i.i.i.i.i36 @@ -9264,8 +9263,8 @@ if.then.i.i.i.i.i.i.i.i.i36: ; preds = %_ZSt22__uninitializ br label %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit38 _ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit38: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES2_cET0_T_S8_S7_RSaIT1_E.exit, %if.then.i.i.i.i.i.i.i.i.i36 - %3 = phi ptr [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES2_cET0_T_S8_S7_RSaIT1_E.exit ], [ %.pre77, %if.then.i.i.i.i.i.i.i.i.i36 ] - %add.ptr58 = getelementptr inbounds i8, ptr %3, i64 %sub.ptr.sub.i + %4 = phi ptr [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES2_cET0_T_S8_S7_RSaIT1_E.exit ], [ %.pre77, %if.then.i.i.i.i.i.i.i.i.i36 ] + %add.ptr58 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr58, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i42 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i42, label %if.end108, label %if.then.i.i.i.i.i43 @@ -9275,8 +9274,8 @@ if.then.i.i.i.i.i43: ; preds = %_ZSt22__uninitializ br label %if.end108 if.else68: ; preds = %if.then - %4 = load ptr, ptr %this, align 8 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %4 to i64 + %5 = load ptr, ptr %this, align 8 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %5 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i.i %sub.i = sub i64 9223372036854775807, %sub.ptr.sub.i.i %cmp.i46 = icmp ult i64 %sub.i, %sub.ptr.sub.i.i.i @@ -9290,8 +9289,8 @@ _ZNKSt6vectorIcSaIcEE12_M_check_lenEmPKc.exit: ; preds = %if.else68 %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i.i, i64 %sub.ptr.sub.i.i.i) %add.i = add i64 %.sroa.speculated.i, %sub.ptr.sub.i.i %cmp7.i = icmp ult i64 %add.i, %sub.ptr.sub.i.i - %5 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 9223372036854775807) - %cond.i = select i1 %cmp7.i, i64 9223372036854775807, i64 %5 + %6 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 9223372036854775807) + %cond.i = select i1 %cmp7.i, i64 9223372036854775807, i64 %6 %cmp.not.i = icmp eq i64 %cond.i, 0 br i1 %cmp.not.i, label %_ZNSt12_Vector_baseIcSaIcEE11_M_allocateEm.exit, label %cond.true.i @@ -9303,11 +9302,11 @@ _ZNSt12_Vector_baseIcSaIcEE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorIcSaIc %cond.i47 = phi ptr [ %call5.i.i.i, %cond.true.i ], [ null, %_ZNKSt6vectorIcSaIcEE12_M_check_lenEmPKc.exit ] %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i48 = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i50 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i48, %sub.ptr.rhs.cast.i.i - %tobool.not.i.i.i.i.i.i.i.i.i51 = icmp eq ptr %__position.coerce, %4 + %tobool.not.i.i.i.i.i.i.i.i.i51 = icmp eq ptr %__position.coerce, %5 br i1 %tobool.not.i.i.i.i.i.i.i.i.i51, label %invoke.cont83, label %if.then.i.i.i.i.i.i.i.i.i52 if.then.i.i.i.i.i.i.i.i.i52: ; preds = %_ZNSt12_Vector_baseIcSaIcEE11_M_allocateEm.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %cond.i47, ptr align 1 %4, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i50, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %cond.i47, ptr align 1 %5, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i50, i1 false) br label %invoke.cont83 invoke.cont83: ; preds = %if.then.i.i.i.i.i.i.i.i.i52, %_ZNSt12_Vector_baseIcSaIcEE11_M_allocateEm.exit @@ -9324,11 +9323,11 @@ if.then.i.i.i.i.i.i.i.i.i65: ; preds = %invoke.cont83 invoke.cont87: ; preds = %if.then.i.i.i.i.i.i.i.i.i65, %invoke.cont83 %add.ptr.i.i.i.i.i.i.i.i.i66 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i59, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i63 - %tobool.not.i = icmp eq ptr %4, null + %tobool.not.i = icmp eq ptr %5, null br i1 %tobool.not.i, label %_ZNSt12_Vector_baseIcSaIcEE13_M_deallocateEPcm.exit, label %if.then.i68 if.then.i68: ; preds = %invoke.cont87 - tail call void @_ZdlPv(ptr noundef nonnull %4) #24 + tail call void @_ZdlPv(ptr noundef nonnull %5) #24 br label %_ZNSt12_Vector_baseIcSaIcEE13_M_deallocateEPcm.exit _ZNSt12_Vector_baseIcSaIcEE13_M_deallocateEPcm.exit: ; preds = %invoke.cont87, %if.then.i68 diff --git a/bench/boost/optimized/junit_log_formatter.ll b/bench/boost/optimized/junit_log_formatter.ll index 8e7333fc91e..59640b93eea 100644 --- a/bench/boost/optimized/junit_log_formatter.ll +++ b/bench/boost/optimized/junit_log_formatter.ll @@ -11577,21 +11577,17 @@ define linkonce_odr hidden void @_ZN5boost9unit_test5utils19print_escaped_cdataE %27 = sub i64 0, %18 %28 = getelementptr inbounds i8, ptr %20, i64 %27 %29 = getelementptr inbounds i8, ptr %28, i64 1 - %.not14.i = icmp eq ptr %21, %29 - br i1 %.not14.i, label %_ZNK5boost9unit_test13basic_cstringIKcE4findES3_.exit.thread, label %.lr.ph.i + %.not11.i = icmp eq ptr %21, %29 + br i1 %.not11.i, label %_ZNK5boost9unit_test13basic_cstringIKcE4findES3_.exit.thread, label %.lr.ph.i.preheader.i -.lr.ph.i: ; preds = %26 - %.not12.i.i = icmp eq i64 %18, 0 - br i1 %.not12.i.i, label %_ZNK5boost9unit_test13basic_cstringIKcE4findES3_.exit, label %.lr.ph.i.preheader.i - -.lr.ph.i.preheader.i: ; preds = %.lr.ph.i, %_ZN5boost9unit_test9ut_detail20bcs_char_traits_implIKcE7compareEPS3_S5_m.exit.i - %.0715.i = phi ptr [ %37, %_ZN5boost9unit_test9ut_detail20bcs_char_traits_implIKcE7compareEPS3_S5_m.exit.i ], [ %21, %.lr.ph.i ] +.lr.ph.i.preheader.i: ; preds = %26, %_ZN5boost9unit_test9ut_detail20bcs_char_traits_implIKcE7compareEPS3_S5_m.exit.i + %.0712.i = phi ptr [ %37, %_ZN5boost9unit_test9ut_detail20bcs_char_traits_implIKcE7compareEPS3_S5_m.exit.i ], [ %21, %26 ] br label %.lr.ph.i.i .lr.ph.i.i: ; preds = %33, %.lr.ph.i.preheader.i %.015.i.i = phi i64 [ %36, %33 ], [ %18, %.lr.ph.i.preheader.i ] %.0814.i.i = phi ptr [ %35, %33 ], [ %12, %.lr.ph.i.preheader.i ] - %.0913.i.i = phi ptr [ %34, %33 ], [ %.0715.i, %.lr.ph.i.preheader.i ] + %.0913.i.i = phi ptr [ %34, %33 ], [ %.0712.i, %.lr.ph.i.preheader.i ] %30 = load i8, ptr %.0913.i.i, align 1, !tbaa !9 %31 = load i8, ptr %.0814.i.i, align 1, !tbaa !9 %32 = icmp eq i8 %30, %31 @@ -11602,67 +11598,63 @@ define linkonce_odr hidden void @_ZN5boost9unit_test5utils19print_escaped_cdataE %35 = getelementptr inbounds nuw i8, ptr %.0814.i.i, i64 1 %36 = add i64 %.015.i.i, -1 %.not.i.i = icmp eq i64 %36, 0 - br i1 %.not.i.i, label %_ZN5boost9unit_test9ut_detail20bcs_char_traits_implIKcE7compareEPS3_S5_m.exit.thread.loopexit.i, label %.lr.ph.i.i, !llvm.loop !303 - -_ZN5boost9unit_test9ut_detail20bcs_char_traits_implIKcE7compareEPS3_S5_m.exit.thread.loopexit.i: ; preds = %33 - %.pre.i = ptrtoint ptr %.0715.i to i64 - br label %_ZNK5boost9unit_test13basic_cstringIKcE4findES3_.exit + br i1 %.not.i.i, label %_ZNK5boost9unit_test13basic_cstringIKcE4findES3_.exit, label %.lr.ph.i.i, !llvm.loop !303 _ZN5boost9unit_test9ut_detail20bcs_char_traits_implIKcE7compareEPS3_S5_m.exit.i: ; preds = %.lr.ph.i.i - %37 = getelementptr inbounds nuw i8, ptr %.0715.i, i64 1 - %.not.i = icmp eq ptr %.0715.i, %28 + %37 = getelementptr inbounds nuw i8, ptr %.0712.i, i64 1 + %.not.i = icmp eq ptr %.0712.i, %28 br i1 %.not.i, label %_ZNK5boost9unit_test13basic_cstringIKcE4findES3_.exit.thread, label %.lr.ph.i.preheader.i, !llvm.loop !304 -_ZNK5boost9unit_test13basic_cstringIKcE4findES3_.exit: ; preds = %.lr.ph.i, %_ZN5boost9unit_test9ut_detail20bcs_char_traits_implIKcE7compareEPS3_S5_m.exit.thread.loopexit.i - %.pre-phi.i = phi i64 [ %.pre.i, %_ZN5boost9unit_test9ut_detail20bcs_char_traits_implIKcE7compareEPS3_S5_m.exit.thread.loopexit.i ], [ %23, %.lr.ph.i ] - %38 = sub i64 %.pre-phi.i, %23 - %39 = icmp eq i64 %38, -1 - br i1 %39, label %_ZNK5boost9unit_test13basic_cstringIKcE4findES3_.exit.thread, label %41 +_ZNK5boost9unit_test13basic_cstringIKcE4findES3_.exit: ; preds = %33 + %38 = ptrtoint ptr %.0712.i to i64 + %39 = sub i64 %38, %23 + %40 = icmp eq i64 %39, -1 + br i1 %40, label %_ZNK5boost9unit_test13basic_cstringIKcE4findES3_.exit.thread, label %42 _ZNK5boost9unit_test13basic_cstringIKcE4findES3_.exit.thread: ; preds = %_ZN5boost9unit_test9ut_detail20bcs_char_traits_implIKcE7compareEPS3_S5_m.exit.i, %26, %11, %15, %_ZNK5boost9unit_test13basic_cstringIKcE4findES3_.exit - %40 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boost9unit_testlsIcSt11char_traitsIcEKcEERSt13basic_ostreamIT_T0_ES9_RKNS0_13basic_cstringIT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(16) %1) - br label %60 + %41 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boost9unit_testlsIcSt11char_traitsIcEKcEERSt13basic_ostreamIT_T0_ES9_RKNS0_13basic_cstringIT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(16) %1) + br label %61 -41: ; preds = %_ZNK5boost9unit_test13basic_cstringIKcE4findES3_.exit +42: ; preds = %_ZNK5boost9unit_test13basic_cstringIKcE4findES3_.exit call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #28 - %42 = add i64 %38, 2 - %43 = icmp ugt i64 %42, %24 - %44 = getelementptr inbounds nuw i8, ptr %21, i64 %42 - %spec.select.i = select i1 %43, ptr %20, ptr %44 + %43 = add i64 %39, 2 + %44 = icmp ugt i64 %43, %24 + %45 = getelementptr inbounds nuw i8, ptr %21, i64 %43 + %spec.select.i = select i1 %44, ptr %20, ptr %45 store ptr %21, ptr %3, align 8, !tbaa !3, !alias.scope !305 - %45 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store ptr %spec.select.i, ptr %45, align 8, !tbaa !8, !alias.scope !305 - %46 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boost9unit_testlsIcSt11char_traitsIcEKcEERSt13basic_ostreamIT_T0_ES9_RKNS0_13basic_cstringIT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(16) %3) - %47 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boost9unit_testlsIcSt11char_traitsIcEKcEERSt13basic_ostreamIT_T0_ES9_RKNS0_13basic_cstringIT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(16) @_ZZN5boost9unit_test5utils19print_escaped_cdataERSoNS0_13basic_cstringIKcEEE9cdata_end) + %46 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store ptr %spec.select.i, ptr %46, align 8, !tbaa !8, !alias.scope !305 + %47 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boost9unit_testlsIcSt11char_traitsIcEKcEERSt13basic_ostreamIT_T0_ES9_RKNS0_13basic_cstringIT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(16) %3) + %48 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boost9unit_testlsIcSt11char_traitsIcEKcEERSt13basic_ostreamIT_T0_ES9_RKNS0_13basic_cstringIT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(16) @_ZZN5boost9unit_test5utils19print_escaped_cdataERSoNS0_13basic_cstringIKcEEE9cdata_end) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #28 store ptr @.str.78, ptr %4, align 8, !tbaa !3 - %48 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store ptr getelementptr inbounds nuw (i8, ptr @.str.78, i64 9), ptr %48, align 8, !tbaa !8 - %49 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boost9unit_testlsIcSt11char_traitsIcEKcEERSt13basic_ostreamIT_T0_ES9_RKNS0_13basic_cstringIT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(16) %4) + %49 = getelementptr inbounds nuw i8, ptr %4, i64 8 + store ptr getelementptr inbounds nuw (i8, ptr @.str.78, i64 9), ptr %49, align 8, !tbaa !8 + %50 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boost9unit_testlsIcSt11char_traitsIcEKcEERSt13basic_ostreamIT_T0_ES9_RKNS0_13basic_cstringIT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(16) %4) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #28 call void @llvm.experimental.noalias.scope.decl(metadata !308) - %50 = load ptr, ptr %19, align 8, !tbaa !8, !noalias !308 - %51 = load ptr, ptr %1, align 8, !tbaa !3, !noalias !308 - %52 = ptrtoint ptr %50 to i64 + %51 = load ptr, ptr %19, align 8, !tbaa !8, !noalias !308 + %52 = load ptr, ptr %1, align 8, !tbaa !3, !noalias !308 %53 = ptrtoint ptr %51 to i64 - %54 = sub i64 %52, %53 - %55 = icmp ugt i64 %42, %54 - %.not8 = icmp eq i64 %54, -1 - %56 = getelementptr inbounds nuw i8, ptr %51, i64 %42 - %57 = getelementptr inbounds nuw i8, ptr %51, i64 -1 - %spec.select.i6 = select i1 %.not8, ptr %57, ptr %50 - %.sink7.i = select i1 %55, ptr @_ZN5boost9unit_test13basic_cstringIKcE4nullE, ptr %56 - %.sink.i = select i1 %55, ptr @_ZN5boost9unit_test13basic_cstringIKcE4nullE, ptr %spec.select.i6 + %54 = ptrtoint ptr %52 to i64 + %55 = sub i64 %53, %54 + %56 = icmp ugt i64 %43, %55 + %.not8 = icmp eq i64 %55, -1 + %57 = getelementptr inbounds nuw i8, ptr %52, i64 %43 + %58 = getelementptr inbounds nuw i8, ptr %52, i64 -1 + %spec.select.i6 = select i1 %.not8, ptr %58, ptr %51 + %.sink7.i = select i1 %56, ptr @_ZN5boost9unit_test13basic_cstringIKcE4nullE, ptr %57 + %.sink.i = select i1 %56, ptr @_ZN5boost9unit_test13basic_cstringIKcE4nullE, ptr %spec.select.i6 store ptr %.sink7.i, ptr %5, align 8, !tbaa !3, !alias.scope !308 - %58 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store ptr %.sink.i, ptr %58, align 8, !tbaa !8, !alias.scope !308 - %59 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boost9unit_testlsIcSt11char_traitsIcEKcEERSt13basic_ostreamIT_T0_ES9_RKNS0_13basic_cstringIT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(16) %5) + %59 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store ptr %.sink.i, ptr %59, align 8, !tbaa !8, !alias.scope !308 + %60 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boost9unit_testlsIcSt11char_traitsIcEKcEERSt13basic_ostreamIT_T0_ES9_RKNS0_13basic_cstringIT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(16) %5) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #28 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #28 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #28 - br label %60 + br label %61 -60: ; preds = %41, %_ZNK5boost9unit_test13basic_cstringIKcE4findES3_.exit.thread +61: ; preds = %42, %_ZNK5boost9unit_test13basic_cstringIKcE4findES3_.exit.thread ret void } diff --git a/bench/c3c/optimized/sema_expr.c.ll b/bench/c3c/optimized/sema_expr.c.ll index 210802578b1..ee70e794d6b 100644 --- a/bench/c3c/optimized/sema_expr.c.ll +++ b/bench/c3c/optimized/sema_expr.c.ll @@ -5043,7 +5043,7 @@ define dso_local ptr @sema_expand_vasplat_exprs(ptr noundef %0, ptr noundef %1) br label %10 10: ; preds = %.lr.ph, %49 - %indvars.iv137 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next138, %49 ] + %indvars.iv136 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next137, %49 ] %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %49 ] %11 = getelementptr inbounds ptr, ptr %.079121, i64 %indvars.iv %12 = load ptr, ptr %11, align 8 @@ -5075,7 +5075,7 @@ define dso_local ptr @sema_expand_vasplat_exprs(ptr noundef %0, ptr noundef %1) .lr.ph115.preheader: ; preds = %25 %29 = sub i32 %27, %20 %invariant.op = add nuw i64 %indvars.iv, 1 - %wide.trip.count135 = zext i32 %29 to i64 + %wide.trip.count134 = zext i32 %29 to i64 br label %.lr.ph115 .preheader: ; preds = %25 @@ -5084,26 +5084,26 @@ define dso_local ptr @sema_expand_vasplat_exprs(ptr noundef %0, ptr noundef %1) br i1 %30, label %.lr.ph119, label %._crit_edge120 .lr.ph119: ; preds = %.preheader, %.lr.ph119 - %indvars.iv140 = phi i64 [ %indvars.iv.next141, %.lr.ph119 ], [ %indvars.iv137, %.preheader ] - %.086.in117 = phi i64 [ %indvars.iv140, %.lr.ph119 ], [ %indvars.iv, %.preheader ] - %31 = getelementptr inbounds ptr, ptr %24, i64 %indvars.iv140 + %indvars.iv139 = phi i64 [ %indvars.iv.next140, %.lr.ph119 ], [ %indvars.iv136, %.preheader ] + %.086.in117 = phi i64 [ %indvars.iv139, %.lr.ph119 ], [ %indvars.iv, %.preheader ] + %31 = getelementptr inbounds ptr, ptr %24, i64 %indvars.iv139 %32 = load ptr, ptr %31, align 8 %33 = and i64 %.086.in117, 4294967295 %34 = getelementptr inbounds ptr, ptr %24, i64 %33 store ptr %32, ptr %34, align 8 - %indvars.iv.next141 = add nuw nsw i64 %indvars.iv140, 1 - %lftr.wideiv = trunc i64 %indvars.iv.next141 to i32 - %exitcond143.not = icmp eq i32 %20, %lftr.wideiv - br i1 %exitcond143.not, label %._crit_edge120, label %.lr.ph119, !llvm.loop !28 + %indvars.iv.next140 = add nuw nsw i64 %indvars.iv139, 1 + %lftr.wideiv = trunc i64 %indvars.iv.next140 to i32 + %exitcond142.not = icmp eq i32 %20, %lftr.wideiv + br i1 %exitcond142.not, label %._crit_edge120, label %.lr.ph119, !llvm.loop !28 ._crit_edge120: ; preds = %.lr.ph119, %.preheader store i32 %21, ptr %26, align 4 br label %.thread .lr.ph115: ; preds = %.lr.ph115.preheader, %.lr.ph115 - %indvars.iv132 = phi i64 [ 0, %.lr.ph115.preheader ], [ %indvars.iv.next133, %.lr.ph115 ] - %35 = trunc nuw i64 %indvars.iv132 to i32 - %36 = add nuw i64 %indvars.iv132, %indvars.iv + %indvars.iv131 = phi i64 [ 0, %.lr.ph115.preheader ], [ %indvars.iv.next132, %.lr.ph115 ] + %35 = trunc nuw i64 %indvars.iv131 to i32 + %36 = add nuw i64 %indvars.iv131, %indvars.iv %37 = add i32 %20, %35 %38 = zext i32 %37 to i64 %39 = getelementptr inbounds ptr, ptr %24, i64 %38 @@ -5111,14 +5111,14 @@ define dso_local ptr @sema_expand_vasplat_exprs(ptr noundef %0, ptr noundef %1) %41 = and i64 %36, 4294967295 %42 = getelementptr inbounds ptr, ptr %24, i64 %41 store ptr %40, ptr %42, align 8 - %.reass = add i64 %invariant.op, %indvars.iv132 + %.reass = add i64 %invariant.op, %indvars.iv131 %43 = and i64 %.reass, 4294967295 %44 = getelementptr inbounds ptr, ptr %24, i64 %43 %45 = load ptr, ptr %44, align 8 store ptr %45, ptr %39, align 8 - %indvars.iv.next133 = add nuw nsw i64 %indvars.iv132, 1 - %exitcond136.not = icmp eq i64 %indvars.iv.next133, %wide.trip.count135 - br i1 %exitcond136.not, label %._crit_edge, label %.lr.ph115, !llvm.loop !29 + %indvars.iv.next132 = add nuw nsw i64 %indvars.iv131, 1 + %exitcond135.not = icmp eq i64 %indvars.iv.next132, %wide.trip.count134 + br i1 %exitcond135.not, label %._crit_edge, label %.lr.ph115, !llvm.loop !29 ._crit_edge: ; preds = %.lr.ph115 %46 = add i32 %27, -1 @@ -5139,14 +5139,14 @@ define dso_local ptr @sema_expand_vasplat_exprs(ptr noundef %0, ptr noundef %1) 49: ; preds = %10 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - %indvars.iv.next138 = add nuw nsw i64 %indvars.iv137, 1 + %indvars.iv.next137 = add nuw nsw i64 %indvars.iv136, 1 br i1 %exitcond.not, label %.thread104, label %10, !llvm.loop !30 .thread: ; preds = %..thread_crit_edge, %._crit_edge, %._crit_edge120 %50 = phi i32 [ %.pre, %..thread_crit_edge ], [ %21, %._crit_edge120 ], [ %46, %._crit_edge ] %.084100 = phi ptr [ %48, %..thread_crit_edge ], [ %24, %._crit_edge120 ], [ %24, %._crit_edge ] - %.not126 = icmp eq i32 %50, 0 - br i1 %.not126, label %.thread104, label %.lr.ph, !llvm.loop !31 + %.not125 = icmp eq i32 %50, 0 + br i1 %.not125, label %.thread104, label %.lr.ph, !llvm.loop !31 .thread104: ; preds = %23, %47, %.thread, %49, %6, %7, %2, %3 %.082 = phi ptr [ %1, %3 ], [ %1, %2 ], [ %1, %7 ], [ null, %6 ], [ %.079121, %49 ], [ %.084100, %.thread ], [ null, %47 ], [ null, %23 ] diff --git a/bench/casadi/optimized/fmu2.cpp.ll b/bench/casadi/optimized/fmu2.cpp.ll index c449ffc9114..c6234562917 100644 --- a/bench/casadi/optimized/fmu2.cpp.ll +++ b/bench/casadi/optimized/fmu2.cpp.ll @@ -12850,20 +12850,16 @@ _ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %151 store double 0.000000e+00, ptr %162, align 8 %164 = getelementptr i8, ptr %162, i64 8 %165 = icmp eq i64 %158, 8 - br i1 %165, label %.thread138, label %166 - -.thread138: ; preds = %.noexc61 - store ptr %164, ptr %134, align 8 - br label %.lr.ph111.preheader + br i1 %165, label %.lr.ph111.preheader, label %166 166: ; preds = %.noexc61 %167 = add nsw i64 %158, -8 call void @llvm.memset.p0.i64(ptr align 8 %164, i8 0, i64 %167, i1 false) - store ptr %163, ptr %134, align 8 - %.not120 = icmp eq ptr %154, %155 - br i1 %.not120, label %._crit_edge112, label %.lr.ph111.preheader + br label %.lr.ph111.preheader -.lr.ph111.preheader: ; preds = %.thread138, %166 +.lr.ph111.preheader: ; preds = %.noexc61, %166 + %storemerge = phi ptr [ %163, %166 ], [ %164, %.noexc61 ] + store ptr %storemerge, ptr %134, align 8 br label %.lr.ph111 .lr.ph111: ; preds = %.lr.ph111.preheader, %179 @@ -12940,7 +12936,7 @@ _ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %151 cleanup br label %205 -._crit_edge112: ; preds = %179, %.thread, %166 +._crit_edge112: ; preds = %179, %.thread invoke void @_ZN6casadi11GenericTypeC1ERKSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(24) %14) to label %195 unwind label %.loopexit68 @@ -14088,15 +14084,15 @@ _ZNSt6vectorIdSaIdEE6resizeEm.exit447: ; preds = %197, %199, %201, %2 br label %_ZNSt6vectorIbSaIbEE6resizeEmb.exit450 _ZNSt6vectorIbSaIbEE6resizeEmb.exit450: ; preds = %217, %224 - %.not694 = icmp eq ptr %70, %71 - br i1 %.not694, label %.loopexit604, label %.lr.ph655 + %.not693 = icmp eq ptr %70, %71 + br i1 %.not693, label %.loopexit604, label %.lr.ph655 .lr.ph655: ; preds = %_ZNSt6vectorIbSaIbEE6resizeEmb.exit450 %226 = getelementptr inbounds i8, ptr %1, i64 608 %227 = getelementptr inbounds i8, ptr %1, i64 656 %228 = getelementptr inbounds i8, ptr %0, i64 328 %229 = getelementptr inbounds i8, ptr %0, i64 376 - %umax754 = tail call i64 @llvm.umax.i64(i64 %75, i64 1) + %umax752 = tail call i64 @llvm.umax.i64(i64 %75, i64 1) br label %230 230: ; preds = %.lr.ph655, %382 @@ -14500,8 +14496,8 @@ _ZNSt6vectorIbSaIbEE6resizeEmb.exit450: ; preds = %217, %224 382: ; preds = %371, %253 %.1319 = phi i64 [ %.0318654, %253 ], [ %spec.select, %371 ] %383 = add nuw i64 %.0321653, 1 - %exitcond755.not = icmp eq i64 %383, %umax754 - br i1 %exitcond755.not, label %._crit_edge656, label %230, !llvm.loop !121 + %exitcond753.not = icmp eq i64 %383, %umax752 + br i1 %exitcond753.not, label %._crit_edge656, label %230, !llvm.loop !121 ._crit_edge656: ; preds = %382 %.not374 = icmp eq i64 %.1319, -1 @@ -14513,7 +14509,7 @@ _ZNSt6vectorIbSaIbEE6resizeEmb.exit450: ; preds = %217, %224 %385 = getelementptr inbounds i8, ptr %1, i64 656 %386 = getelementptr inbounds i8, ptr %0, i64 328 %387 = getelementptr inbounds i8, ptr %0, i64 376 - %umax756 = tail call i64 @llvm.umax.i64(i64 %75, i64 1) + %umax754 = tail call i64 @llvm.umax.i64(i64 %75, i64 1) br label %388 388: ; preds = %.lr.ph658, %473 @@ -14731,8 +14727,8 @@ _ZNSt6vectorIbSaIbEE6resizeEmb.exit450: ; preds = %217, %224 473: ; preds = %388, %471 %474 = add nuw i64 %.0344657, 1 - %exitcond757.not = icmp eq i64 %474, %umax756 - br i1 %exitcond757.not, label %.loopexit604, label %388, !llvm.loop !125 + %exitcond755.not = icmp eq i64 %474, %umax754 + br i1 %exitcond755.not, label %.loopexit604, label %388, !llvm.loop !125 .loopexit604: ; preds = %473, %_ZNSt6vectorIbSaIbEE6resizeEmb.exit450, %._crit_edge656 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(40) %39, i8 0, i64 40, i1 false) @@ -14751,8 +14747,8 @@ _ZNSt6vectorIbSaIbEE6resizeEmb.exit450: ; preds = %217, %224 %484 = getelementptr inbounds i8, ptr %1, i64 416 %485 = getelementptr inbounds i8, ptr %0, i64 304 %486 = icmp sgt i64 %83, 0 - %umax758 = tail call i64 @llvm.umax.i64(i64 %75, i64 1) - %umax762 = tail call i64 @llvm.umax.i64(i64 %83, i64 1) + %umax756 = tail call i64 @llvm.umax.i64(i64 %75, i64 1) + %umax760 = tail call i64 @llvm.umax.i64(i64 %83, i64 1) br label %487 487: ; preds = %.lr.ph673, %_ZN6casadi11casadi_copyIdEEvPKT_xPS1_.exit @@ -14760,8 +14756,8 @@ _ZNSt6vectorIbSaIbEE6resizeEmb.exit450: ; preds = %217, %224 %488 = mul i64 %.0355671, %83 %489 = load ptr, ptr %149, align 8 %490 = getelementptr inbounds double, ptr %489, i64 %488 - %exitcond764.not = icmp eq i64 %.0355671, 5 - br i1 %exitcond764.not, label %491, label %525 + %exitcond762.not = icmp eq i64 %.0355671, 5 + br i1 %exitcond762.not, label %491, label %525 491: ; preds = %487 %492 = tail call ptr @__cxa_allocate_exception(i64 40) #26 @@ -14939,7 +14935,7 @@ _ZNSt6vectorIbSaIbEE6resizeEmb.exit450: ; preds = %217, %224 %541 = getelementptr inbounds i8, ptr %540, i64 1488 %542 = load double, ptr %541, align 8 %543 = fmul double %542, %539 - br i1 %.not694, label %._crit_edge662, label %.lr.ph661 + br i1 %.not693, label %._crit_edge662, label %.lr.ph661 .lr.ph661: ; preds = %537 %544 = fneg double %543 @@ -15027,8 +15023,8 @@ _ZNSt14_Bit_referenceaSEb.exit: ; preds = %579, %582 %597 = getelementptr inbounds double, ptr %596, i64 %.0356659 store double %595, ptr %597, align 8 %598 = add nuw i64 %.0356659, 1 - %exitcond759.not = icmp eq i64 %598, %umax758 - br i1 %exitcond759.not, label %._crit_edge662, label %545, !llvm.loop !130 + %exitcond757.not = icmp eq i64 %598, %umax756 + br i1 %exitcond757.not, label %._crit_edge662, label %545, !llvm.loop !130 ._crit_edge662: ; preds = %594, %537 %599 = load ptr, ptr %480, align 8 @@ -15245,7 +15241,7 @@ _ZN6casadi9trim_pathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit _ZNSt6vectorImSaImEE2atEm.exit: ; preds = %.lr.ph670 %677 = getelementptr inbounds i64, ptr %671, i64 %669 %678 = load i64, ptr %677, align 8 - br i1 %.not694, label %._crit_edge665, label %.lr.ph664 + br i1 %.not693, label %._crit_edge665, label %.lr.ph664 .lr.ph664: ; preds = %_ZNSt6vectorImSaImEE2atEm.exit %679 = load ptr, ptr %68, align 8 @@ -15260,11 +15256,11 @@ _ZNSt6vectorImSaImEE2atEm.exit: ; preds = %.lr.ph670 684: ; preds = %680 %685 = add nuw i64 %.0322663, 1 - %exitcond761.not = icmp eq i64 %685, %umax758 - br i1 %exitcond761.not, label %._crit_edge665, label %680, !llvm.loop !131 + %exitcond759.not = icmp eq i64 %685, %umax756 + br i1 %exitcond759.not, label %._crit_edge665, label %680, !llvm.loop !131 ._crit_edge665: ; preds = %684, %680, %_ZNSt6vectorImSaImEE2atEm.exit - %.0322.lcssa = phi i64 [ 0, %_ZNSt6vectorImSaImEE2atEm.exit ], [ %.0322663, %680 ], [ %umax758, %684 ] + %.0322.lcssa = phi i64 [ 0, %_ZNSt6vectorImSaImEE2atEm.exit ], [ %.0322663, %680 ], [ %umax756, %684 ] %686 = load ptr, ptr %167, align 8 %687 = load i32, ptr %169, align 8 %688 = load ptr, ptr %166, align 8 @@ -15312,13 +15308,13 @@ _ZNSt6vectorIbSaIbEE2atEm.exit: ; preds = %._crit_edge665 713: ; preds = %704, %711 %714 = add nuw i64 %.0343669, 1 - %exitcond763.not = icmp eq i64 %714, %umax762 - br i1 %exitcond763.not, label %_ZN6casadi11casadi_copyIdEEvPKT_xPS1_.exit, label %.lr.ph670, !llvm.loop !132 + %exitcond761.not = icmp eq i64 %714, %umax760 + br i1 %exitcond761.not, label %_ZN6casadi11casadi_copyIdEEvPKT_xPS1_.exit, label %.lr.ph670, !llvm.loop !132 _ZN6casadi11casadi_copyIdEEvPKT_xPS1_.exit: ; preds = %713, %.lr.ph.i, %.lr.ph23.preheader.i, %.preheader.i, %.preheader16.i, %528 %715 = add nuw nsw i64 %.0355671, 1 - %exitcond765.not = icmp eq i64 %715, %144 - br i1 %exitcond765.not, label %._crit_edge674, label %487, !llvm.loop !133 + %exitcond763.not = icmp eq i64 %715, %144 + br i1 %exitcond763.not, label %._crit_edge674, label %487, !llvm.loop !133 ._crit_edge674: ; preds = %_ZN6casadi11casadi_copyIdEEvPKT_xPS1_.exit, %.loopexit604 %716 = getelementptr inbounds i8, ptr %0, i64 1176 @@ -15439,8 +15435,8 @@ _ZN6casadi9trim_pathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit call void @_ZN6casadi11finite_diffIdEEvNS_6FdModeEPPKT_PS2_S2_xS2_(i32 noundef %761, ptr noundef nonnull %39, ptr noundef %spec.select.i534, double noundef %759, i64 noundef %83, double noundef 0x3CB0000000000000) %767 = load ptr, ptr %77, align 8 %768 = load ptr, ptr %76, align 8 - %.not699 = icmp eq ptr %767, %768 - br i1 %.not699, label %.loopexit598, label %.lr.ph692 + %.not697 = icmp eq ptr %767, %768 + br i1 %.not697, label %.loopexit598, label %.lr.ph692 .lr.ph692: ; preds = %756 %769 = getelementptr inbounds i8, ptr %1, i64 408 @@ -15454,7 +15450,7 @@ _ZN6casadi9trim_pathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit %777 = getelementptr inbounds i8, ptr %1, i64 232 %778 = getelementptr inbounds i8, ptr %0, i64 328 %779 = getelementptr inbounds i8, ptr %0, i64 376 - %umax766 = call i64 @llvm.umax.i64(i64 %75, i64 1) + %umax764 = call i64 @llvm.umax.i64(i64 %75, i64 1) br label %780 780: ; preds = %.lr.ph692, %1055 @@ -15465,7 +15461,7 @@ _ZN6casadi9trim_pathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit %784 = load ptr, ptr %769, align 8 %785 = getelementptr inbounds i64, ptr %784, i64 %783 %786 = load i64, ptr %785, align 8 - br i1 %.not694, label %._crit_edge678, label %.lr.ph677 + br i1 %.not693, label %._crit_edge678, label %.lr.ph677 .lr.ph677: ; preds = %780 %787 = load ptr, ptr %68, align 8 @@ -15480,11 +15476,11 @@ _ZN6casadi9trim_pathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit 792: ; preds = %788 %793 = add nuw i64 %.0316675, 1 - %exitcond767.not = icmp eq i64 %793, %umax766 - br i1 %exitcond767.not, label %._crit_edge678, label %788, !llvm.loop !134 + %exitcond765.not = icmp eq i64 %793, %umax764 + br i1 %exitcond765.not, label %._crit_edge678, label %788, !llvm.loop !134 ._crit_edge678: ; preds = %792, %788, %780 - %.0316.lcssa = phi i64 [ 0, %780 ], [ %.0316675, %788 ], [ %umax766, %792 ] + %.0316.lcssa = phi i64 [ 0, %780 ], [ %.0316675, %788 ], [ %umax764, %792 ] %794 = load ptr, ptr %770, align 8 %795 = getelementptr inbounds double, ptr %794, i64 %783 %796 = load double, ptr %795, align 8 @@ -15731,8 +15727,8 @@ _ZNSt6vectorIdSaIdEE2atEm.exit: ; preds = %840 921: ; preds = %915 %922 = add nuw nsw i64 %.0262685, 1 - %exitcond769.not = icmp eq i64 %922, %144 - br i1 %exitcond769.not, label %._crit_edge687, label %.lr.ph686, !llvm.loop !135 + %exitcond767.not = icmp eq i64 %922, %144 + br i1 %exitcond767.not, label %._crit_edge687, label %.lr.ph686, !llvm.loop !135 ._crit_edge687: ; preds = %921, %.preheader %923 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %774, ptr noundef nonnull @.str.121) @@ -15992,8 +15988,8 @@ _ZN6casadi9trim_pathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit 1035: ; preds = %1029 %1036 = add nuw nsw i64 %.0682, 1 - %exitcond768.not = icmp eq i64 %1036, %144 - br i1 %exitcond768.not, label %._crit_edge684, label %.lr.ph683, !llvm.loop !136 + %exitcond766.not = icmp eq i64 %1036, %144 + br i1 %exitcond766.not, label %._crit_edge684, label %.lr.ph683, !llvm.loop !136 ._crit_edge684: ; preds = %1035, %.preheader594 %1037 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %774, ptr noundef nonnull @.str.121) @@ -16067,11 +16063,11 @@ _ZN6casadi9trim_pathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit br i1 %1063, label %780, label %.loopexit598, !llvm.loop !137 .loopexit598.sink.split: ; preds = %748, %659, %626, %120 - %.sink828 = phi ptr [ %4, %120 ], [ %50, %626 ], [ %53, %659 ], [ %56, %748 ] - %.sink827 = phi ptr [ %5, %120 ], [ %51, %626 ], [ %54, %659 ], [ %57, %748 ] + %.sink826 = phi ptr [ %4, %120 ], [ %50, %626 ], [ %53, %659 ], [ %56, %748 ] + %.sink825 = phi ptr [ %5, %120 ], [ %51, %626 ], [ %54, %659 ], [ %57, %748 ] %.sink = phi ptr [ %6, %120 ], [ %52, %626 ], [ %55, %659 ], [ %58, %748 ] - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink828) #26 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink827) #26 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink826) #26 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink825) #26 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %.sink) #26 br label %.loopexit598 diff --git a/bench/casadi/optimized/sparsity_internal.cpp.ll b/bench/casadi/optimized/sparsity_internal.cpp.ll index 5bf3b5ec653..f4555910513 100644 --- a/bench/casadi/optimized/sparsity_internal.cpp.ll +++ b/bench/casadi/optimized/sparsity_internal.cpp.ll @@ -22285,13 +22285,9 @@ _ZNSt6vectorIxSaIxEEC2ERKS1_.exit: ; preds = %_ZN6casadi12has_neg tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %166, ptr nonnull align 8 %35, i64 %.pre190, i1 false) %170 = getelementptr inbounds i8, ptr %166, i64 %.pre190 store ptr %170, ptr %167, align 8 - %.not166178 = icmp eq ptr %37, %35 - br i1 %.not166178, label %._crit_edge181, label %.lr.ph180 - -.lr.ph180: ; preds = %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit br i1 %4, label %.lr.ph180.split.us.preheader, label %thread-pre-split -.lr.ph180.split.us.preheader: ; preds = %.lr.ph180 +.lr.ph180.split.us.preheader: ; preds = %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit %invariant.op = add i64 %2, -1 br label %.lr.ph180.split.us @@ -22306,8 +22302,8 @@ _ZNSt6vectorIxSaIxEEC2ERKS1_.exit: ; preds = %_ZN6casadi12has_neg %.not166.us = icmp eq ptr %173, %170 br i1 %.not166.us, label %._crit_edge181, label %.lr.ph180.split.us, !llvm.loop !328 -thread-pre-split: ; preds = %.lr.ph180, %177 - %.sroa.0147.0179 = phi ptr [ %178, %177 ], [ %166, %.lr.ph180 ] +thread-pre-split: ; preds = %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit, %177 + %.sroa.0147.0179 = phi ptr [ %178, %177 ], [ %166, %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit ] %.pr = load i64, ptr %.sroa.0147.0179, align 8 %174 = icmp slt i64 %.pr, 0 br i1 %174, label %175, label %177 @@ -22322,8 +22318,8 @@ thread-pre-split: ; preds = %.lr.ph180, %177 %.not166 = icmp eq ptr %178, %170 br i1 %.not166, label %._crit_edge181, label %thread-pre-split, !llvm.loop !328 -._crit_edge181: ; preds = %177, %.lr.ph180.split.us, %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit.thread, %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit - %179 = phi ptr [ null, %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit.thread ], [ %166, %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit ], [ %166, %.lr.ph180.split.us ], [ %166, %177 ] +._crit_edge181: ; preds = %177, %.lr.ph180.split.us, %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit.thread + %179 = phi ptr [ null, %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit.thread ], [ %166, %.lr.ph180.split.us ], [ %166, %177 ] invoke void @_ZNK6casadi16SparsityInternal15_enlargeColumnsExRKSt6vectorIxSaIxEEb(ptr dead_on_unwind writable sret(%"class.casadi::Sparsity") align 8 %0, ptr noundef nonnull align 8 dereferenceable(56) %1, i64 noundef %2, ptr noundef nonnull align 8 dereferenceable(24) %28, i1 noundef zeroext false) to label %180 unwind label %182 @@ -23090,13 +23086,9 @@ _ZNSt6vectorIxSaIxEEC2ERKS1_.exit: ; preds = %_ZN6casadi12has_neg tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %175, ptr nonnull align 8 %44, i64 %.pre199, i1 false) %179 = getelementptr inbounds i8, ptr %175, i64 %.pre199 store ptr %179, ptr %176, align 8 - %.not178182 = icmp eq ptr %46, %44 - br i1 %.not178182, label %._crit_edge185, label %.lr.ph184 - -.lr.ph184: ; preds = %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit br i1 %4, label %.lr.ph184.split.us.preheader, label %thread-pre-split -.lr.ph184.split.us.preheader: ; preds = %.lr.ph184 +.lr.ph184.split.us.preheader: ; preds = %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit %invariant.op = add i64 %2, -1 br label %.lr.ph184.split.us @@ -23111,8 +23103,8 @@ _ZNSt6vectorIxSaIxEEC2ERKS1_.exit: ; preds = %_ZN6casadi12has_neg %.not178.us = icmp eq ptr %182, %179 br i1 %.not178.us, label %._crit_edge185, label %.lr.ph184.split.us, !llvm.loop !341 -thread-pre-split: ; preds = %.lr.ph184, %186 - %.sroa.0155.0183 = phi ptr [ %187, %186 ], [ %175, %.lr.ph184 ] +thread-pre-split: ; preds = %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit, %186 + %.sroa.0155.0183 = phi ptr [ %187, %186 ], [ %175, %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit ] %.pr = load i64, ptr %.sroa.0155.0183, align 8 %183 = icmp slt i64 %.pr, 0 br i1 %183, label %184, label %186 @@ -23127,8 +23119,8 @@ thread-pre-split: ; preds = %.lr.ph184, %186 %.not178 = icmp eq ptr %187, %179 br i1 %.not178, label %._crit_edge185, label %thread-pre-split, !llvm.loop !341 -._crit_edge185: ; preds = %186, %.lr.ph184.split.us, %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit.thread, %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit - %188 = phi ptr [ null, %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit.thread ], [ %175, %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit ], [ %175, %.lr.ph184.split.us ], [ %175, %186 ] +._crit_edge185: ; preds = %186, %.lr.ph184.split.us, %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit.thread + %188 = phi ptr [ null, %_ZNSt6vectorIxSaIxEEC2ERKS1_.exit.thread ], [ %175, %.lr.ph184.split.us ], [ %175, %186 ] invoke void @_ZNK6casadi16SparsityInternal12_enlargeRowsExRKSt6vectorIxSaIxEEb(ptr dead_on_unwind writable sret(%"class.casadi::Sparsity") align 8 %0, ptr noundef nonnull align 8 dereferenceable(56) %1, i64 noundef %2, ptr noundef nonnull align 8 dereferenceable(24) %28, i1 noundef zeroext false) to label %189 unwind label %191 @@ -26292,8 +26284,7 @@ _ZNSt6vectorIxSaIxEE6resizeEm.exit: ; preds = %.noexc98, %_ZSt6fil %140 = getelementptr inbounds i8, ptr %136, i64 %117 store ptr %140, ptr %131, align 8 store ptr %140, ptr %133, align 8 - %.not197 = icmp eq i64 %.0.i.i.i.i.i.i.i, %116 - br i1 %.not197, label %._crit_edge189, label %.lr.ph188 + br label %.lr.ph188 .lr.ph188: ; preds = %_ZNSt6vectorIxSaIxEE6resizeEm.exit, %.lr.ph188 %141 = phi ptr [ %150, %.lr.ph188 ], [ %136, %_ZNSt6vectorIxSaIxEE6resizeEm.exit ] @@ -26341,8 +26332,8 @@ _ZNSt6vectorIxSaIxEED2Ev.exit: ; preds = %156, %159 %.pre206 = load ptr, ptr %.phi.trans.insert, align 8 br label %._crit_edge189 -._crit_edge189: ; preds = %._crit_edge186, %._crit_edge189.loopexit, %_ZNSt6vectorIxSaIxEE6resizeEm.exit - %162 = phi ptr [ %.pre206, %._crit_edge189.loopexit ], [ %.0.i.i.i.i.i.i.i75, %_ZNSt6vectorIxSaIxEE6resizeEm.exit ], [ %.0.i.i.i.i.i.i.i75, %._crit_edge186 ] +._crit_edge189: ; preds = %._crit_edge186, %._crit_edge189.loopexit + %162 = phi ptr [ %.pre206, %._crit_edge189.loopexit ], [ %.0.i.i.i.i.i.i.i75, %._crit_edge186 ] %163 = ptrtoint ptr %162 to i64 %164 = ptrtoint ptr %114 to i64 %165 = sub i64 %163, %164 @@ -40406,7 +40397,7 @@ define linkonce_odr void @_ZNSt6vectorIxSaIxEE15_M_range_insertIPKxEEvN9__gnu_cx %15 = ptrtoint ptr %13 to i64 %16 = sub i64 %14, %15 %.not54 = icmp ult i64 %16, %8 - br i1 %.not54, label %42, label %17 + br i1 %.not54, label %43, label %17 17: ; preds = %5 %18 = ptrtoint ptr %1 to i64 @@ -40419,128 +40410,128 @@ _ZSt22__uninitialized_move_aIPxS0_SaIxEET0_T_S3_S2_RT1_.exit: ; preds = %17 %22 = sub nsw i64 0, %9 %23 = getelementptr inbounds i64, ptr %13, i64 %22 tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %13, ptr align 8 %23, i64 %8, i1 false) - %.pre77 = load ptr, ptr %12, align 8 - %24 = getelementptr inbounds i8, ptr %.pre77, i64 %8 - store ptr %24, ptr %12, align 8 + %24 = load ptr, ptr %12, align 8 + %25 = getelementptr inbounds i8, ptr %24, i64 %8 + store ptr %25, ptr %12, align 8 %.not.i.i.i.i.i = icmp eq ptr %23, %1 - br i1 %.not.i.i.i.i.i, label %_ZSt4copyIPKxN9__gnu_cxx17__normal_iteratorIPxSt6vectorIxSaIxEEEEET0_T_SA_S9_.exit, label %25 - -25: ; preds = %_ZSt22__uninitialized_move_aIPxS0_SaIxEET0_T_S3_S2_RT1_.exit - %26 = ptrtoint ptr %23 to i64 - %27 = sub i64 %26, %18 - %28 = ashr exact i64 %27, 3 - %29 = sub nsw i64 0, %28 - %30 = getelementptr inbounds i64, ptr %13, i64 %29 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %30, ptr align 8 %1, i64 %27, i1 false) + br i1 %.not.i.i.i.i.i, label %_ZSt4copyIPKxN9__gnu_cxx17__normal_iteratorIPxSt6vectorIxSaIxEEEEET0_T_SA_S9_.exit, label %26 + +26: ; preds = %_ZSt22__uninitialized_move_aIPxS0_SaIxEET0_T_S3_S2_RT1_.exit + %27 = ptrtoint ptr %23 to i64 + %28 = sub i64 %27, %18 + %29 = ashr exact i64 %28, 3 + %30 = sub nsw i64 0, %29 + %31 = getelementptr inbounds i64, ptr %13, i64 %30 + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %31, ptr align 8 %1, i64 %28, i1 false) br label %_ZSt4copyIPKxN9__gnu_cxx17__normal_iteratorIPxSt6vectorIxSaIxEEEEET0_T_SA_S9_.exit -_ZSt4copyIPKxN9__gnu_cxx17__normal_iteratorIPxSt6vectorIxSaIxEEEEET0_T_SA_S9_.exit: ; preds = %_ZSt22__uninitialized_move_aIPxS0_SaIxEET0_T_S3_S2_RT1_.exit, %25 +_ZSt4copyIPKxN9__gnu_cxx17__normal_iteratorIPxSt6vectorIxSaIxEEEEET0_T_SA_S9_.exit: ; preds = %_ZSt22__uninitialized_move_aIPxS0_SaIxEET0_T_S3_S2_RT1_.exit, %26 tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %2, i64 %8, i1 false) br label %_ZSt4copyIPKxN9__gnu_cxx17__normal_iteratorIPxSt6vectorIxSaIxEEEEET0_T_SA_S9_.exit59 _ZSt7advanceIPKxmEvRT_T0_.exit: ; preds = %17 - %31 = getelementptr inbounds i8, ptr %2, i64 %19 - %.not.i.i.i.i.i.i.i.i = icmp eq ptr %3, %31 - br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPKxPxxET0_T_S4_S3_RSaIT1_E.exit, label %32 + %32 = getelementptr inbounds i8, ptr %2, i64 %19 + %.not.i.i.i.i.i.i.i.i = icmp eq ptr %3, %32 + br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPKxPxxET0_T_S4_S3_RSaIT1_E.exit, label %33 -32: ; preds = %_ZSt7advanceIPKxmEvRT_T0_.exit - %33 = ptrtoint ptr %31 to i64 - %34 = sub i64 %6, %33 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %13, ptr align 8 %31, i64 %34, i1 false) +33: ; preds = %_ZSt7advanceIPKxmEvRT_T0_.exit + %34 = ptrtoint ptr %32 to i64 + %35 = sub i64 %6, %34 + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %13, ptr align 8 %32, i64 %35, i1 false) %.pre = load ptr, ptr %12, align 8 br label %_ZSt22__uninitialized_copy_aIPKxPxxET0_T_S4_S3_RSaIT1_E.exit -_ZSt22__uninitialized_copy_aIPKxPxxET0_T_S4_S3_RSaIT1_E.exit: ; preds = %_ZSt7advanceIPKxmEvRT_T0_.exit, %32 - %35 = phi ptr [ %13, %_ZSt7advanceIPKxmEvRT_T0_.exit ], [ %.pre, %32 ] - %36 = sub nuw nsw i64 %9, %20 - %37 = getelementptr inbounds i64, ptr %35, i64 %36 - store ptr %37, ptr %12, align 8 +_ZSt22__uninitialized_copy_aIPKxPxxET0_T_S4_S3_RSaIT1_E.exit: ; preds = %_ZSt7advanceIPKxmEvRT_T0_.exit, %33 + %36 = phi ptr [ %13, %_ZSt7advanceIPKxmEvRT_T0_.exit ], [ %.pre, %33 ] + %37 = sub nuw nsw i64 %9, %20 + %38 = getelementptr inbounds i64, ptr %36, i64 %37 + store ptr %38, ptr %12, align 8 %.not.i.i.i.i.i.i.i.i.i56 = icmp eq ptr %13, %1 - br i1 %.not.i.i.i.i.i.i.i.i.i56, label %_ZSt22__uninitialized_move_aIPxS0_SaIxEET0_T_S3_S2_RT1_.exit57, label %38 + br i1 %.not.i.i.i.i.i.i.i.i.i56, label %_ZSt22__uninitialized_move_aIPxS0_SaIxEET0_T_S3_S2_RT1_.exit57, label %39 -38: ; preds = %_ZSt22__uninitialized_copy_aIPKxPxxET0_T_S4_S3_RSaIT1_E.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %37, ptr align 8 %1, i64 %19, i1 false) +39: ; preds = %_ZSt22__uninitialized_copy_aIPKxPxxET0_T_S4_S3_RSaIT1_E.exit + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %38, ptr align 8 %1, i64 %19, i1 false) %.pre76 = load ptr, ptr %12, align 8 br label %_ZSt22__uninitialized_move_aIPxS0_SaIxEET0_T_S3_S2_RT1_.exit57 -_ZSt22__uninitialized_move_aIPxS0_SaIxEET0_T_S3_S2_RT1_.exit57: ; preds = %_ZSt22__uninitialized_copy_aIPKxPxxET0_T_S4_S3_RSaIT1_E.exit, %38 - %39 = phi ptr [ %37, %_ZSt22__uninitialized_copy_aIPKxPxxET0_T_S4_S3_RSaIT1_E.exit ], [ %.pre76, %38 ] - %40 = getelementptr inbounds i8, ptr %39, i64 %19 - store ptr %40, ptr %12, align 8 +_ZSt22__uninitialized_move_aIPxS0_SaIxEET0_T_S3_S2_RT1_.exit57: ; preds = %_ZSt22__uninitialized_copy_aIPKxPxxET0_T_S4_S3_RSaIT1_E.exit, %39 + %40 = phi ptr [ %38, %_ZSt22__uninitialized_copy_aIPKxPxxET0_T_S4_S3_RSaIT1_E.exit ], [ %.pre76, %39 ] + %41 = getelementptr inbounds i8, ptr %40, i64 %19 + store ptr %41, ptr %12, align 8 %.not.i.i.i.i.i58 = icmp eq ptr %13, %1 - br i1 %.not.i.i.i.i.i58, label %_ZSt4copyIPKxN9__gnu_cxx17__normal_iteratorIPxSt6vectorIxSaIxEEEEET0_T_SA_S9_.exit59, label %41 + br i1 %.not.i.i.i.i.i58, label %_ZSt4copyIPKxN9__gnu_cxx17__normal_iteratorIPxSt6vectorIxSaIxEEEEET0_T_SA_S9_.exit59, label %42 -41: ; preds = %_ZSt22__uninitialized_move_aIPxS0_SaIxEET0_T_S3_S2_RT1_.exit57 +42: ; preds = %_ZSt22__uninitialized_move_aIPxS0_SaIxEET0_T_S3_S2_RT1_.exit57 tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %2, i64 %19, i1 false) br label %_ZSt4copyIPKxN9__gnu_cxx17__normal_iteratorIPxSt6vectorIxSaIxEEEEET0_T_SA_S9_.exit59 -42: ; preds = %5 - %43 = load ptr, ptr %0, align 8 - %44 = ptrtoint ptr %43 to i64 - %45 = sub i64 %15, %44 - %46 = ashr exact i64 %45, 3 - %47 = sub nsw i64 1152921504606846975, %46 - %48 = icmp ult i64 %47, %9 - br i1 %48, label %49, label %_ZNKSt6vectorIxSaIxEE12_M_check_lenEmPKc.exit +43: ; preds = %5 + %44 = load ptr, ptr %0, align 8 + %45 = ptrtoint ptr %44 to i64 + %46 = sub i64 %15, %45 + %47 = ashr exact i64 %46, 3 + %48 = sub nsw i64 1152921504606846975, %47 + %49 = icmp ult i64 %48, %9 + br i1 %49, label %50, label %_ZNKSt6vectorIxSaIxEE12_M_check_lenEmPKc.exit -49: ; preds = %42 +50: ; preds = %43 tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.151) #28 unreachable -_ZNKSt6vectorIxSaIxEE12_M_check_lenEmPKc.exit: ; preds = %42 - %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %46, i64 %9) - %50 = add nsw i64 %.sroa.speculated.i, %46 - %51 = icmp ult i64 %50, %46 - %52 = tail call i64 @llvm.umin.i64(i64 %50, i64 1152921504606846975) - %53 = select i1 %51, i64 1152921504606846975, i64 %52 - %.not.i = icmp eq i64 %53, 0 - br i1 %.not.i, label %_ZNSt12_Vector_baseIxSaIxEE11_M_allocateEm.exit, label %54 - -54: ; preds = %_ZNKSt6vectorIxSaIxEE12_M_check_lenEmPKc.exit - %55 = shl nuw nsw i64 %53, 3 - %56 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %55) #29 +_ZNKSt6vectorIxSaIxEE12_M_check_lenEmPKc.exit: ; preds = %43 + %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %47, i64 %9) + %51 = add nsw i64 %.sroa.speculated.i, %47 + %52 = icmp ult i64 %51, %47 + %53 = tail call i64 @llvm.umin.i64(i64 %51, i64 1152921504606846975) + %54 = select i1 %52, i64 1152921504606846975, i64 %53 + %.not.i = icmp eq i64 %54, 0 + br i1 %.not.i, label %_ZNSt12_Vector_baseIxSaIxEE11_M_allocateEm.exit, label %55 + +55: ; preds = %_ZNKSt6vectorIxSaIxEE12_M_check_lenEmPKc.exit + %56 = shl nuw nsw i64 %54, 3 + %57 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %56) #29 br label %_ZNSt12_Vector_baseIxSaIxEE11_M_allocateEm.exit -_ZNSt12_Vector_baseIxSaIxEE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorIxSaIxEE12_M_check_lenEmPKc.exit, %54 - %57 = phi ptr [ %56, %54 ], [ null, %_ZNKSt6vectorIxSaIxEE12_M_check_lenEmPKc.exit ] - %58 = ptrtoint ptr %1 to i64 - %59 = sub i64 %58, %44 - %.not.i.i.i.i.i.i.i.i.i60 = icmp eq ptr %1, %43 - br i1 %.not.i.i.i.i.i.i.i.i.i60, label %61, label %60 +_ZNSt12_Vector_baseIxSaIxEE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorIxSaIxEE12_M_check_lenEmPKc.exit, %55 + %58 = phi ptr [ %57, %55 ], [ null, %_ZNKSt6vectorIxSaIxEE12_M_check_lenEmPKc.exit ] + %59 = ptrtoint ptr %1 to i64 + %60 = sub i64 %59, %45 + %.not.i.i.i.i.i.i.i.i.i60 = icmp eq ptr %1, %44 + br i1 %.not.i.i.i.i.i.i.i.i.i60, label %62, label %61 -60: ; preds = %_ZNSt12_Vector_baseIxSaIxEE11_M_allocateEm.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %57, ptr align 8 %43, i64 %59, i1 false) - br label %61 +61: ; preds = %_ZNSt12_Vector_baseIxSaIxEE11_M_allocateEm.exit + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %58, ptr align 8 %44, i64 %60, i1 false) + br label %62 -61: ; preds = %_ZNSt12_Vector_baseIxSaIxEE11_M_allocateEm.exit, %60 - %62 = getelementptr inbounds i8, ptr %57, i64 %59 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %62, ptr align 8 %2, i64 %8, i1 false) - %63 = getelementptr inbounds i8, ptr %62, i64 %8 - %64 = sub i64 %15, %58 +62: ; preds = %_ZNSt12_Vector_baseIxSaIxEE11_M_allocateEm.exit, %61 + %63 = getelementptr inbounds i8, ptr %58, i64 %60 + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %63, ptr align 8 %2, i64 %8, i1 false) + %64 = getelementptr inbounds i8, ptr %63, i64 %8 + %65 = sub i64 %15, %59 %.not.i.i.i.i.i.i.i.i.i63 = icmp eq ptr %13, %1 - br i1 %.not.i.i.i.i.i.i.i.i.i63, label %66, label %65 + br i1 %.not.i.i.i.i.i.i.i.i.i63, label %67, label %66 -65: ; preds = %61 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %63, ptr align 8 %1, i64 %64, i1 false) - br label %66 +66: ; preds = %62 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %64, ptr align 8 %1, i64 %65, i1 false) + br label %67 -66: ; preds = %65, %61 - %67 = getelementptr inbounds i8, ptr %63, i64 %64 - %.not.i65 = icmp eq ptr %43, null - br i1 %.not.i65, label %_ZNSt12_Vector_baseIxSaIxEE13_M_deallocateEPxm.exit, label %68 +67: ; preds = %66, %62 + %68 = getelementptr inbounds i8, ptr %64, i64 %65 + %.not.i65 = icmp eq ptr %44, null + br i1 %.not.i65, label %_ZNSt12_Vector_baseIxSaIxEE13_M_deallocateEPxm.exit, label %69 -68: ; preds = %66 - tail call void @_ZdlPv(ptr noundef nonnull %43) #31 +69: ; preds = %67 + tail call void @_ZdlPv(ptr noundef nonnull %44) #31 br label %_ZNSt12_Vector_baseIxSaIxEE13_M_deallocateEPxm.exit -_ZNSt12_Vector_baseIxSaIxEE13_M_deallocateEPxm.exit: ; preds = %66, %68 - store ptr %57, ptr %0, align 8 - store ptr %67, ptr %12, align 8 - %69 = getelementptr inbounds i64, ptr %57, i64 %53 - store ptr %69, ptr %10, align 8 +_ZNSt12_Vector_baseIxSaIxEE13_M_deallocateEPxm.exit: ; preds = %67, %69 + store ptr %58, ptr %0, align 8 + store ptr %68, ptr %12, align 8 + %70 = getelementptr inbounds i64, ptr %58, i64 %54 + store ptr %70, ptr %10, align 8 br label %_ZSt4copyIPKxN9__gnu_cxx17__normal_iteratorIPxSt6vectorIxSaIxEEEEET0_T_SA_S9_.exit59 -_ZSt4copyIPKxN9__gnu_cxx17__normal_iteratorIPxSt6vectorIxSaIxEEEEET0_T_SA_S9_.exit59: ; preds = %41, %_ZSt22__uninitialized_move_aIPxS0_SaIxEET0_T_S3_S2_RT1_.exit57, %_ZNSt12_Vector_baseIxSaIxEE13_M_deallocateEPxm.exit, %_ZSt4copyIPKxN9__gnu_cxx17__normal_iteratorIPxSt6vectorIxSaIxEEEEET0_T_SA_S9_.exit, %4 +_ZSt4copyIPKxN9__gnu_cxx17__normal_iteratorIPxSt6vectorIxSaIxEEEEET0_T_SA_S9_.exit59: ; preds = %42, %_ZSt22__uninitialized_move_aIPxS0_SaIxEET0_T_S3_S2_RT1_.exit57, %_ZNSt12_Vector_baseIxSaIxEE13_M_deallocateEPxm.exit, %_ZSt4copyIPKxN9__gnu_cxx17__normal_iteratorIPxSt6vectorIxSaIxEEEEET0_T_SA_S9_.exit, %4 ret void } diff --git a/bench/clamav/optimized/msxml.c.ll b/bench/clamav/optimized/msxml.c.ll index e67db700333..656d96879c2 100644 --- a/bench/clamav/optimized/msxml.c.ll +++ b/bench/clamav/optimized/msxml.c.ll @@ -114,7 +114,7 @@ msxml_read_cb_new_window.exit: ; preds = %22 store i64 %spec.select.i, ptr %16, align 8 br label %28 -28: ; preds = %msxml_read_cb_new_window.exit, %._crit_edge138 +28: ; preds = %._crit_edge138, %msxml_read_cb_new_window.exit %29 = phi i64 [ %.pre140, %._crit_edge138 ], [ 0, %msxml_read_cb_new_window.exit ] %30 = phi i64 [ %.pre, %._crit_edge138 ], [ %spec.select.i, %msxml_read_cb_new_window.exit ] %31 = getelementptr inbounds i8, ptr %0, i64 40 @@ -169,80 +169,78 @@ msxml_read_cb_new_window.exit: ; preds = %22 %53 = load ptr, ptr %52, align 8 %54 = tail call ptr %53(ptr noundef nonnull %40, i64 noundef %46, i64 noundef range(i64 1, 131073) %spec.select.i85, i32 noundef 0) #4 %.not31.i87 = icmp eq ptr %54, null - br i1 %.not31.i87, label %msxml_read_cb_new_window.exit89, label %56 + br i1 %.not31.i87, label %msxml_read_cb_new_window.exit89, label %55 msxml_read_cb_new_window.exit89: ; preds = %51 tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.5) #4 br label %msxml_read_cb_new_window.exit.thread -.thread: ; preds = %38, %48 - %55 = trunc i64 %.063124 to i32 - br label %msxml_read_cb_new_window.exit.thread - -56: ; preds = %51 +55: ; preds = %51 store ptr %54, ptr %5, align 8 store i64 0, ptr %32, align 8 store i64 %46, ptr %34, align 8 store i64 %spec.select.i85, ptr %31, align 8 br label %57 -57: ; preds = %._crit_edge141, %56 - %58 = phi i64 [ %.pre143, %._crit_edge141 ], [ 0, %56 ] - %59 = phi ptr [ %.pre142, %._crit_edge141 ], [ %54, %56 ] - %.167 = phi i64 [ %.066123, %._crit_edge141 ], [ %spec.select.i85, %56 ] - %60 = icmp ne i64 %.167, 0 - %61 = icmp ult i64 %.063124, %4 - %62 = and i1 %60, %61 - br i1 %62, label %.lr.ph.preheader, label %._crit_edge +.thread: ; preds = %38, %48 + %56 = trunc i64 %.063124 to i32 + br label %msxml_read_cb_new_window.exit.thread + +57: ; preds = %._crit_edge141, %55 + %58 = phi i64 [ %.pre143, %._crit_edge141 ], [ 0, %55 ] + %59 = phi ptr [ %.pre142, %._crit_edge141 ], [ %54, %55 ] + %.167 = phi i64 [ %.066123, %._crit_edge141 ], [ %spec.select.i85, %55 ] + %60 = icmp ult i64 %.063124, %4 + br i1 %60, label %.lr.ph.preheader, label %._crit_edge .lr.ph.preheader: ; preds = %57 - %63 = getelementptr inbounds i8, ptr %59, i64 %58 + %61 = getelementptr inbounds i8, ptr %59, i64 %58 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.thread96 - %.061118 = phi ptr [ %91, %.thread96 ], [ %37, %.lr.ph.preheader ] - %.062115 = phi ptr [ %89, %.thread96 ], [ %63, %.lr.ph.preheader ] - %.164114 = phi i64 [ %93, %.thread96 ], [ %.063124, %.lr.ph.preheader ] - %.268113 = phi i64 [ %92, %.thread96 ], [ %.167, %.lr.ph.preheader ] - %64 = load i32, ptr %0, align 4 - switch i32 %64, label %82 [ - i32 0, label %65 - i32 1, label %68 - i32 2, label %71 - i32 3, label %76 - i32 4, label %79 + %.061118 = phi ptr [ %89, %.thread96 ], [ %37, %.lr.ph.preheader ] + %.062115 = phi ptr [ %87, %.thread96 ], [ %61, %.lr.ph.preheader ] + %.164114 = phi i64 [ %91, %.thread96 ], [ %.063124, %.lr.ph.preheader ] + %.268113 = phi i64 [ %90, %.thread96 ], [ %.167, %.lr.ph.preheader ] + %62 = load i32, ptr %0, align 4 + switch i32 %62, label %80 [ + i32 0, label %63 + i32 1, label %66 + i32 2, label %69 + i32 3, label %74 + i32 4, label %77 ] -65: ; preds = %.lr.ph - %66 = load i8, ptr %.062115, align 1 - %67 = icmp eq i8 %66, 38 - br i1 %67, label %.thread96.sink.split, label %.thread96 +63: ; preds = %.lr.ph + %64 = load i8, ptr %.062115, align 1 + %65 = icmp eq i8 %64, 38 + br i1 %65, label %.thread96.sink.split, label %.thread96 -68: ; preds = %.lr.ph - %69 = load i8, ptr %.062115, align 1 - %70 = icmp eq i8 %69, 35 - %. = select i1 %70, i32 2, i32 0 +66: ; preds = %.lr.ph + %67 = load i8, ptr %.062115, align 1 + %68 = icmp eq i8 %67, 35 + %. = select i1 %68, i32 2, i32 0 br label %.thread96.sink.split -71: ; preds = %.lr.ph - %72 = load i8, ptr %.062115, align 1 - %73 = icmp eq i8 %72, 120 - br i1 %73, label %.thread96.sink.split, label %74 +69: ; preds = %.lr.ph + %70 = load i8, ptr %.062115, align 1 + %71 = icmp eq i8 %70, 120 + br i1 %71, label %.thread96.sink.split, label %72 -74: ; preds = %71 - %75 = add i8 %72, -48 - %or.cond = icmp ult i8 %75, 10 +72: ; preds = %69 + %73 = add i8 %70, -48 + %or.cond = icmp ult i8 %73, 10 %.154 = select i1 %or.cond, i32 4, i32 0 br label %.thread96.sink.split -76: ; preds = %.lr.ph - %77 = load i8, ptr %.062115, align 1 - %.fr131 = freeze i8 %77 - %78 = add i8 %.fr131, -48 - %or.cond81 = icmp ult i8 %78, 10 +74: ; preds = %.lr.ph + %75 = load i8, ptr %.062115, align 1 + %.fr131 = freeze i8 %75 + %76 = add i8 %.fr131, -48 + %or.cond81 = icmp ult i8 %76, 10 br i1 %or.cond81, label %.thread96, label %switch.early.test -switch.early.test: ; preds = %76 +switch.early.test: ; preds = %74 switch i8 %.fr131, label %.thread98.sink.split [ i8 102, label %.thread96 i8 101, label %.thread96 @@ -258,80 +256,80 @@ switch.early.test: ; preds = %76 i8 65, label %.thread96 ] -79: ; preds = %.lr.ph - %80 = load i8, ptr %.062115, align 1 - %81 = add i8 %80, -48 - %or.cond84 = icmp ult i8 %81, 10 +77: ; preds = %.lr.ph + %78 = load i8, ptr %.062115, align 1 + %79 = add i8 %78, -48 + %or.cond84 = icmp ult i8 %79, 10 br i1 %or.cond84, label %.thread96, label %.thread98.sink.split -82: ; preds = %.lr.ph - tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str, i32 noundef %64) #4 +80: ; preds = %.lr.ph + tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str, i32 noundef %62) #4 %.pr.pre = load i32, ptr %0, align 4 - %83 = icmp eq i32 %.pr.pre, 5 - br i1 %83, label %.thread98, label %.thread96 + %81 = icmp eq i32 %.pr.pre, 5 + br i1 %81, label %.thread98, label %.thread96 -.thread98.sink.split: ; preds = %79, %switch.early.test +.thread98.sink.split: ; preds = %77, %switch.early.test store i32 5, ptr %0, align 4 br label %.thread98 -.thread98: ; preds = %.thread98.sink.split, %82 - %84 = load i8, ptr %.062115, align 1 - %.not79 = icmp eq i8 %84, 59 - br i1 %.not79, label %88, label %85 +.thread98: ; preds = %.thread98.sink.split, %80 + %82 = load i8, ptr %.062115, align 1 + %.not79 = icmp eq i8 %82, 59 + br i1 %.not79, label %86, label %83 -85: ; preds = %.thread98 - %86 = getelementptr inbounds i8, ptr %.061118, i64 1 +83: ; preds = %.thread98 + %84 = getelementptr inbounds i8, ptr %.061118, i64 1 store i8 59, ptr %.061118, align 1 - %87 = add nuw i64 %.164114, 1 - br label %88 + %85 = add nuw i64 %.164114, 1 + br label %86 -88: ; preds = %85, %.thread98 - %.4 = phi i64 [ %87, %85 ], [ %.164114, %.thread98 ] - %.2 = phi ptr [ %86, %85 ], [ %.061118, %.thread98 ] +86: ; preds = %83, %.thread98 + %.4 = phi i64 [ %85, %83 ], [ %.164114, %.thread98 ] + %.2 = phi ptr [ %84, %83 ], [ %.061118, %.thread98 ] store i32 0, ptr %0, align 4 %.not80 = icmp ult i64 %.4, %4 br i1 %.not80, label %.thread96, label %._crit_edge -.thread96.sink.split: ; preds = %74, %71, %68, %65 - %.sink = phi i32 [ 1, %65 ], [ %., %68 ], [ 3, %71 ], [ %.154, %74 ] +.thread96.sink.split: ; preds = %72, %69, %66, %63 + %.sink = phi i32 [ 1, %63 ], [ %., %66 ], [ 3, %69 ], [ %.154, %72 ] store i32 %.sink, ptr %0, align 4 br label %.thread96 -.thread96: ; preds = %.thread96.sink.split, %79, %76, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %65, %88, %82 - %.3 = phi i64 [ %.4, %88 ], [ %.164114, %82 ], [ %.164114, %65 ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %76 ], [ %.164114, %79 ], [ %.164114, %.thread96.sink.split ] - %.1 = phi ptr [ %.2, %88 ], [ %.061118, %82 ], [ %.061118, %65 ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %76 ], [ %.061118, %79 ], [ %.061118, %.thread96.sink.split ] - %89 = getelementptr inbounds i8, ptr %.062115, i64 1 - %90 = load i8, ptr %.062115, align 1 - %91 = getelementptr inbounds i8, ptr %.1, i64 1 - store i8 %90, ptr %.1, align 1 - %92 = add i64 %.268113, -1 - %93 = add nuw i64 %.3, 1 - %94 = icmp ne i64 %92, 0 - %95 = icmp ult i64 %93, %4 - %96 = select i1 %94, i1 %95, i1 false - br i1 %96, label %.lr.ph, label %._crit_edge - -._crit_edge: ; preds = %.thread96, %88, %57 - %.268.lcssa = phi i64 [ %.167, %57 ], [ %.268113, %88 ], [ %92, %.thread96 ] - %.265 = phi i64 [ %.063124, %57 ], [ %.4, %88 ], [ %93, %.thread96 ] - %97 = icmp ult i64 %.265, %4 - br i1 %97, label %36, label %._crit_edge127.loopexit +.thread96: ; preds = %.thread96.sink.split, %77, %74, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %63, %86, %80 + %.3 = phi i64 [ %.4, %86 ], [ %.164114, %80 ], [ %.164114, %63 ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %switch.early.test ], [ %.164114, %74 ], [ %.164114, %77 ], [ %.164114, %.thread96.sink.split ] + %.1 = phi ptr [ %.2, %86 ], [ %.061118, %80 ], [ %.061118, %63 ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %switch.early.test ], [ %.061118, %74 ], [ %.061118, %77 ], [ %.061118, %.thread96.sink.split ] + %87 = getelementptr inbounds i8, ptr %.062115, i64 1 + %88 = load i8, ptr %.062115, align 1 + %89 = getelementptr inbounds i8, ptr %.1, i64 1 + store i8 %88, ptr %.1, align 1 + %90 = add i64 %.268113, -1 + %91 = add nuw i64 %.3, 1 + %92 = icmp ne i64 %90, 0 + %93 = icmp ult i64 %91, %4 + %94 = select i1 %92, i1 %93, i1 false + br i1 %94, label %.lr.ph, label %._crit_edge + +._crit_edge: ; preds = %.thread96, %86, %57 + %.268.lcssa = phi i64 [ %.167, %57 ], [ %.268113, %86 ], [ %90, %.thread96 ] + %.265 = phi i64 [ %.063124, %57 ], [ %.4, %86 ], [ %91, %.thread96 ] + %95 = icmp ult i64 %.265, %4 + br i1 %95, label %36, label %._crit_edge127.loopexit ._crit_edge127.loopexit: ; preds = %._crit_edge %.pre145 = load i64, ptr %31, align 8 - %98 = trunc i64 %.265 to i32 + %96 = trunc i64 %.265 to i32 br label %._crit_edge127 ._crit_edge127: ; preds = %._crit_edge127.loopexit, %28 - %99 = phi i64 [ %30, %28 ], [ %.pre145, %._crit_edge127.loopexit ] + %97 = phi i64 [ %30, %28 ], [ %.pre145, %._crit_edge127.loopexit ] %.066.lcssa = phi i64 [ %33, %28 ], [ %.268.lcssa, %._crit_edge127.loopexit ] - %.063.lcssa = phi i32 [ 0, %28 ], [ %98, %._crit_edge127.loopexit ] - %100 = sub i64 %99, %.066.lcssa - store i64 %100, ptr %32, align 8 + %.063.lcssa = phi i32 [ 0, %28 ], [ %96, %._crit_edge127.loopexit ] + %98 = sub i64 %97, %.066.lcssa + store i64 %98, ptr %32, align 8 br label %msxml_read_cb_new_window.exit.thread msxml_read_cb_new_window.exit.thread: ; preds = %26, %20, %7, %msxml_read_cb_new_window.exit89, %._crit_edge127, %.thread - %.0 = phi i32 [ %55, %.thread ], [ %.063.lcssa, %._crit_edge127 ], [ -1, %msxml_read_cb_new_window.exit89 ], [ 0, %7 ], [ 0, %20 ], [ -1, %26 ] + %.0 = phi i32 [ %56, %.thread ], [ %.063.lcssa, %._crit_edge127 ], [ -1, %msxml_read_cb_new_window.exit89 ], [ 0, %7 ], [ 0, %20 ], [ -1, %26 ] ret i32 %.0 } diff --git a/bench/cmake/optimized/cmList.cxx.ll b/bench/cmake/optimized/cmList.cxx.ll index 918e61e5ea9..f9d36ae8031 100644 --- a/bench/cmake/optimized/cmList.cxx.ll +++ b/bench/cmake/optimized/cmList.cxx.ll @@ -5996,7 +5996,6 @@ _ZNSt6vectorImSaImEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPmmmET_ %27 = xor i64 %26, 126 tail call fastcc void @"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEElNS0_5__ops15_Iter_comp_iterIZN6cmList11RemoveItemsEOS3_IlSaIlEEE3$_1EEEvT_SF_T0_T1_"(ptr nonnull %12, ptr %.0.i.i.i.i.i, i64 noundef %27) %28 = icmp sgt i64 %23, 128 - %scevgep.i.i.i = getelementptr i8, ptr %12, i64 8 br i1 %28, label %.lr.ph.i.i.i.i, label %46 .lr.ph.i.i.i.i: ; preds = %20, %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEENS0_5__ops14_Val_comp_iterIZN6cmList11RemoveItemsEOS3_IlSaIlEEE3$_1EEEvT_T0_.exit.i.i.i.i" @@ -6009,7 +6008,7 @@ _ZNSt6vectorImSaImEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPmmmET_ br i1 %31, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEES6_ET0_T_S8_S7_.exit.i.i.i.i, label %32 _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEES6_ET0_T_S8_S7_.exit.i.i.i.i: ; preds = %.lr.ph.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep.i.i.i, ptr noundef nonnull align 8 dereferenceable(1) %12, i64 %.sroa.0.019.i.idx.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %13, ptr noundef nonnull align 8 dereferenceable(1) %12, i64 %.sroa.0.019.i.idx.i.i.i, i1 false) br label %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEENS0_5__ops14_Val_comp_iterIZN6cmList11RemoveItemsEOS3_IlSaIlEEE3$_1EEEvT_T0_.exit.i.i.i.i" 32: ; preds = %.lr.ph.i.i.i.i @@ -6065,11 +6064,11 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEES6_ET0_T br i1 %.not.i14.i.i.i, label %.preheader.i.i.i.preheader, label %.lr.ph.i12.i.i.i, !llvm.loop !163 46: ; preds = %20 - %.not17.i21.i.i.i = icmp eq ptr %scevgep.i.i.i, %.0.i.i.i.i.i + %.not17.i21.i.i.i = icmp eq ptr %13, %.0.i.i.i.i.i br i1 %.not17.i21.i.i.i, label %.preheader.i.i.i.preheader, label %.lr.ph.i22.i.i.i .lr.ph.i22.i.i.i: ; preds = %46, %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEENS0_5__ops14_Val_comp_iterIZN6cmList11RemoveItemsEOS3_IlSaIlEEE3$_1EEEvT_T0_.exit.i25.i.i.i" - %.sroa.0.019.i23.i.i.i = phi ptr [ %.sroa.0.0.i27.i.i.i, %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEENS0_5__ops14_Val_comp_iterIZN6cmList11RemoveItemsEOS3_IlSaIlEEE3$_1EEEvT_T0_.exit.i25.i.i.i" ], [ %scevgep.i.i.i, %46 ] + %.sroa.0.019.i23.i.i.i = phi ptr [ %.sroa.0.0.i27.i.i.i, %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEENS0_5__ops14_Val_comp_iterIZN6cmList11RemoveItemsEOS3_IlSaIlEEE3$_1EEEvT_T0_.exit.i25.i.i.i" ], [ %13, %46 ] %.pn18.i24.i.i.i = phi ptr [ %.sroa.0.019.i23.i.i.i, %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEENS0_5__ops14_Val_comp_iterIZN6cmList11RemoveItemsEOS3_IlSaIlEEE3$_1EEEvT_T0_.exit.i25.i.i.i" ], [ %12, %46 ] %47 = load i64, ptr %.sroa.0.019.i23.i.i.i, align 8 %48 = load i64, ptr %12, align 8 diff --git a/bench/cmake/optimized/cmWindowsRegistry.cxx.ll b/bench/cmake/optimized/cmWindowsRegistry.cxx.ll index 787b7d86b91..76787d22b9f 100644 --- a/bench/cmake/optimized/cmWindowsRegistry.cxx.ll +++ b/bench/cmake/optimized/cmWindowsRegistry.cxx.ll @@ -549,8 +549,8 @@ define dso_local void @_ZN17cmWindowsRegistry16ExpandExpressionB5cxx11ESt17basic call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(656) %10) #19 br label %common.resume -common.resume: ; preds = %26, %28, %150 - %common.resume.op = phi { ptr, i32 } [ %.pn.pn, %150 ], [ %29, %28 ], [ %27, %26 ] +common.resume: ; preds = %26, %28, %148 + %common.resume.op = phi { ptr, i32 } [ %.pn.pn, %148 ], [ %29, %28 ], [ %27, %26 ] resume { ptr, i32 } %common.resume.op _ZN12_GLOBAL__N_116ExpressionParserC2ESt17basic_string_viewIcSt11char_traitsIcEE.exit: ; preds = %19 @@ -561,7 +561,7 @@ _ZN12_GLOBAL__N_116ExpressionParserC2ESt17basic_string_viewIcSt11char_traitsIcEE call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %30, i8 0, i64 48, i1 false) %33 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(656) %10) #19 %34 = invoke noundef zeroext i1 @_ZNK5cmsys17RegularExpression4findEPKcRNS_22RegularExpressionMatchE(ptr noundef nonnull align 8 dereferenceable(556) %21, ptr noundef %33, ptr noundef nonnull align 8 dereferenceable(556) %21) - to label %.noexc unwind label %120 + to label %.noexc unwind label %118 .noexc: ; preds = %_ZN12_GLOBAL__N_116ExpressionParserC2ESt17basic_string_viewIcSt11char_traitsIcEE.exit br i1 %34, label %35, label %_ZN12_GLOBAL__N_116ExpressionParser4FindEv.exit.thread @@ -684,7 +684,7 @@ _ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit.thread34.i: ; pred 100: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit.thread34.i invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.13, i64 noundef %98, i64 noundef %78) #21 - to label %.noexc12 unwind label %120 + to label %.noexc12 unwind label %118 .noexc12: ; preds = %100 unreachable @@ -696,7 +696,7 @@ _ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit20.i: ; preds = %_Z %.sroa.28.0..sroa_idx.i = getelementptr inbounds i8, ptr %10, i64 648 store ptr %102, ptr %.sroa.28.0..sroa_idx.i, align 8 %103 = icmp eq i64 %78, %98 - br i1 %103, label %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.thread47.i, label %.preheader.preheader.i.i + br i1 %103, label %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.thread39.i, label %.preheader.preheader.i.i .preheader.preheader.i.i: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit20.i %invariant.umin.i.i = call i64 @llvm.umin.i64(i64 %101, i64 9) @@ -713,33 +713,24 @@ _ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit20.i: ; preds = %_Z %110 = sext i8 %109 to i32 %111 = call i32 @tolower(i32 noundef %110) #22 %112 = icmp eq i32 %107, %111 - br i1 %112, label %113, label %.critedge17.i.i + br i1 %112, label %113, label %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.thread39.i 113: ; preds = %.preheader.i.i %114 = add nuw nsw i64 %.011.i.i, 1 %exitcond.not.i = icmp eq i64 %114, %invariant.umin.i.i - br i1 %exitcond.not.i, label %.critedge.i.i, label %.preheader.i.i, !llvm.loop !12 + br i1 %exitcond.not.i, label %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.i, label %.preheader.i.i, !llvm.loop !12 -.critedge.i.i: ; preds = %113 - %115 = trunc i64 %101 to i32 - %116 = add i32 %115, -9 - br label %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.i - -.critedge17.i.i: ; preds = %.preheader.i.i - %117 = sub nsw i32 %107, %111 - br label %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.i - -_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.i: ; preds = %.critedge17.i.i, %.critedge.i.i - %.012.i.i = phi i32 [ %116, %.critedge.i.i ], [ %117, %.critedge17.i.i ] - %118 = icmp eq i32 %.012.i.i, 0 - br i1 %118, label %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.thread.i, label %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.thread47.i +_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.i: ; preds = %113 + %115 = and i64 %101, 4294967295 + %116 = icmp eq i64 %115, 9 + br i1 %116, label %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.thread.i, label %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.thread39.i _ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.thread.i: ; preds = %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.i store i64 0, ptr %32, align 8 store ptr @.str.9, ptr %.sroa.28.0..sroa_idx.i, align 8 - br label %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.thread47.i + br label %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.thread39.i -_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.thread47.i: ; preds = %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.thread.i, %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.i, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit20.i +_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.thread39.i: ; preds = %.preheader.i.i, %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.thread.i, %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.i, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit20.i %.sroa.speculated.i21.i = call i64 @llvm.umin.i64(i64 %78, i64 %.020.i.i37.i) store i64 %.sroa.speculated.i21.i, ptr %31, align 8 store ptr %74, ptr %.sroa.225.0..sroa_idx.i, align 8 @@ -751,114 +742,114 @@ _ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit.thread.i: ; preds store ptr @.str.9, ptr %.sroa.2.0..sroa_idx.i11, align 8 br label %_ZN12_GLOBAL__N_116ExpressionParser4FindEv.exit -_ZN12_GLOBAL__N_116ExpressionParser4FindEv.exit: ; preds = %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.thread47.i, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit.thread.i - %119 = getelementptr inbounds i8, ptr %0, i64 24 - store i8 0, ptr %119, align 8 - br label %146 +_ZN12_GLOBAL__N_116ExpressionParser4FindEv.exit: ; preds = %_ZN12_GLOBAL__N_17StrucmpESt17basic_string_viewIcSt11char_traitsIcEES3_.exit.thread39.i, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit.thread.i + %117 = getelementptr inbounds i8, ptr %0, i64 24 + store i8 0, ptr %117, align 8 + br label %144 -120: ; preds = %100, %_ZN12_GLOBAL__N_116ExpressionParserC2ESt17basic_string_viewIcSt11char_traitsIcEE.exit - %121 = landingpad { ptr, i32 } +118: ; preds = %100, %_ZN12_GLOBAL__N_116ExpressionParserC2ESt17basic_string_viewIcSt11char_traitsIcEE.exit + %119 = landingpad { ptr, i32 } cleanup - br label %150 + br label %148 _ZN12_GLOBAL__N_116ExpressionParser4FindEv.exit.thread: ; preds = %.noexc call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #19 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) - %122 = call { i64, ptr } @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17_S_to_string_viewESt17basic_string_viewIcS2_E(i64 %2, ptr %3) #19 - %123 = extractvalue { i64, ptr } %122, 0 - %124 = extractvalue { i64, ptr } %122, 1 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 %123, ptr %124) #19 - %125 = load i64, ptr %7, align 8 - %126 = getelementptr inbounds i8, ptr %7, i64 8 - %127 = load ptr, ptr %126, align 8 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, i64 %125, ptr %127, ptr noundef nonnull align 1 dereferenceable(1) %12) - to label %128 unwind label %144 - -128: ; preds = %_ZN12_GLOBAL__N_116ExpressionParser4FindEv.exit.thread + %120 = call { i64, ptr } @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17_S_to_string_viewESt17basic_string_viewIcS2_E(i64 %2, ptr %3) #19 + %121 = extractvalue { i64, ptr } %120, 0 + %122 = extractvalue { i64, ptr } %120, 1 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 %121, ptr %122) #19 + %123 = load i64, ptr %7, align 8 + %124 = getelementptr inbounds i8, ptr %7, i64 8 + %125 = load ptr, ptr %124, align 8 + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, i64 %123, ptr %125, ptr noundef nonnull align 1 dereferenceable(1) %12) + to label %126 unwind label %142 + +126: ; preds = %_ZN12_GLOBAL__N_116ExpressionParser4FindEv.exit.thread call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) - %129 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #23 + %127 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #23 to label %.noexc18 unwind label %.body19.thread -.noexc18: ; preds = %128 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %129, ptr noundef nonnull align 8 dereferenceable(32) %11) +.noexc18: ; preds = %126 + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %127, ptr noundef nonnull align 8 dereferenceable(32) %11) to label %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJRKS5_EEvPT_DpOT0_.exit.i.i.i.i.i unwind label %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvT_S7_.exit.i.i.i.i.i _ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJRKS5_EEvPT_DpOT0_.exit.i.i.i.i.i: ; preds = %.noexc18 - %130 = getelementptr inbounds i8, ptr %129, i64 32 - store ptr %129, ptr %0, align 8 - %131 = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %130, ptr %131, align 8 - %132 = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %130, ptr %132, align 8 - %133 = getelementptr inbounds i8, ptr %0, i64 24 - store i8 1, ptr %133, align 8 + %128 = getelementptr inbounds i8, ptr %127, i64 32 + store ptr %127, ptr %0, align 8 + %129 = getelementptr inbounds i8, ptr %0, i64 8 + store ptr %128, ptr %129, align 8 + %130 = getelementptr inbounds i8, ptr %0, i64 16 + store ptr %128, ptr %130, align 8 + %131 = getelementptr inbounds i8, ptr %0, i64 24 + store i8 1, ptr %131, align 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #19 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #19 - br label %146 + br label %144 _ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvT_S7_.exit.i.i.i.i.i: ; preds = %.noexc18 - %134 = landingpad { ptr, i32 } + %132 = landingpad { ptr, i32 } catch ptr null - %135 = extractvalue { ptr, i32 } %134, 0 - %136 = call ptr @__cxa_begin_catch(ptr %135) #19 + %133 = extractvalue { ptr, i32 } %132, 0 + %134 = call ptr @__cxa_begin_catch(ptr %133) #19 invoke void @__cxa_rethrow() #21 - to label %142 unwind label %137 + to label %140 unwind label %135 -137: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvT_S7_.exit.i.i.i.i.i - %138 = landingpad { ptr, i32 } +135: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvT_S7_.exit.i.i.i.i.i + %136 = landingpad { ptr, i32 } cleanup invoke void @__cxa_end_catch() - to label %.body19 unwind label %139 + to label %.body19 unwind label %137 -139: ; preds = %137 - %140 = landingpad { ptr, i32 } +137: ; preds = %135 + %138 = landingpad { ptr, i32 } catch ptr null - %141 = extractvalue { ptr, i32 } %140, 0 - call void @__clang_call_terminate(ptr %141) #24 + %139 = extractvalue { ptr, i32 } %138, 0 + call void @__clang_call_terminate(ptr %139) #24 unreachable -142: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvT_S7_.exit.i.i.i.i.i +140: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvT_S7_.exit.i.i.i.i.i unreachable -.body19.thread: ; preds = %128 - %143 = landingpad { ptr, i32 } +.body19.thread: ; preds = %126 + %141 = landingpad { ptr, i32 } cleanup br label %.body -.body19: ; preds = %137 - call void @_ZdlPv(ptr noundef nonnull %129) #20 +.body19: ; preds = %135 + call void @_ZdlPv(ptr noundef nonnull %127) #20 br label %.body -144: ; preds = %_ZN12_GLOBAL__N_116ExpressionParser4FindEv.exit.thread - %145 = landingpad { ptr, i32 } +142: ; preds = %_ZN12_GLOBAL__N_116ExpressionParser4FindEv.exit.thread + %143 = landingpad { ptr, i32 } cleanup br label %.loopexit .body: ; preds = %.body19, %.body19.thread - %eh.lpad-body = phi { ptr, i32 } [ %143, %.body19.thread ], [ %138, %.body19 ] + %eh.lpad-body = phi { ptr, i32 } [ %141, %.body19.thread ], [ %136, %.body19 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #19 br label %.loopexit -.loopexit: ; preds = %.body, %144 - %.pn = phi { ptr, i32 } [ %145, %144 ], [ %eh.lpad-body, %.body ] +.loopexit: ; preds = %.body, %142 + %.pn = phi { ptr, i32 } [ %143, %142 ], [ %eh.lpad-body, %.body ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #19 - br label %150 + br label %148 -146: ; preds = %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJRKS5_EEvPT_DpOT0_.exit.i.i.i.i.i, %_ZN12_GLOBAL__N_116ExpressionParser4FindEv.exit - %147 = load ptr, ptr %23, align 8 - %148 = icmp eq ptr %147, null - br i1 %148, label %_ZN12_GLOBAL__N_116ExpressionParserD2Ev.exit, label %149 +144: ; preds = %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJRKS5_EEvPT_DpOT0_.exit.i.i.i.i.i, %_ZN12_GLOBAL__N_116ExpressionParser4FindEv.exit + %145 = load ptr, ptr %23, align 8 + %146 = icmp eq ptr %145, null + br i1 %146, label %_ZN12_GLOBAL__N_116ExpressionParserD2Ev.exit, label %147 -149: ; preds = %146 - call void @_ZdaPv(ptr noundef nonnull %147) #20 +147: ; preds = %144 + call void @_ZdaPv(ptr noundef nonnull %145) #20 br label %_ZN12_GLOBAL__N_116ExpressionParserD2Ev.exit -_ZN12_GLOBAL__N_116ExpressionParserD2Ev.exit: ; preds = %146, %149 +_ZN12_GLOBAL__N_116ExpressionParserD2Ev.exit: ; preds = %144, %147 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(656) %10) #19 ret void -150: ; preds = %.loopexit, %120 - %.pn.pn = phi { ptr, i32 } [ %.pn, %.loopexit ], [ %121, %120 ] +148: ; preds = %.loopexit, %118 + %.pn.pn = phi { ptr, i32 } [ %.pn, %.loopexit ], [ %119, %118 ] call fastcc void @_ZN12_GLOBAL__N_116ExpressionParserD2Ev(ptr noundef nonnull align 8 dereferenceable(656) %10) #19 br label %common.resume } diff --git a/bench/cmake/optimized/nghttp2_http.c.ll b/bench/cmake/optimized/nghttp2_http.c.ll index eec332830a3..b504bf885f2 100644 --- a/bench/cmake/optimized/nghttp2_http.c.ll +++ b/bench/cmake/optimized/nghttp2_http.c.ll @@ -1959,21 +1959,21 @@ define internal fastcc i64 @sf_parse_bare_item(ptr noundef writeonly %0, ptr nou br i1 %28, label %._crit_edge.thread.i, label %.loopexit.i ._crit_edge.thread.i: ; preds = %._crit_edge.i, %.preheader.i - %.049.lcssa119.i = phi i64 [ %.049.lcssa.ph.i, %._crit_edge.i ], [ 0, %.preheader.i ] - %.153.lcssa118.i = phi ptr [ %.153.lcssa.ph.i, %._crit_edge.i ], [ %2, %.preheader.i ] + %.049.lcssa120.i = phi i64 [ %.049.lcssa.ph.i, %._crit_edge.i ], [ 0, %.preheader.i ] + %.153.lcssa119.i = phi ptr [ %.153.lcssa.ph.i, %._crit_edge.i ], [ %2, %.preheader.i ] %.not64.i = icmp eq ptr %0, null br i1 %.not64.i, label %33, label %29 29: ; preds = %._crit_edge.thread.i store i8 1, ptr %0, align 8 %30 = sext i32 %.051.i to i64 - %31 = mul nsw i64 %.049.lcssa119.i, %30 + %31 = mul nsw i64 %.049.lcssa120.i, %30 %32 = getelementptr inbounds i8, ptr %0, i64 8 store i64 %31, ptr %32, align 8 br label %33 33: ; preds = %29, %._crit_edge.thread.i - %34 = ptrtoint ptr %.153.lcssa118.i to i64 + %34 = ptrtoint ptr %.153.lcssa119.i to i64 %35 = ptrtoint ptr %1 to i64 %36 = sub i64 %34, %35 br label %sf_parse_integer_or_decimal.exit @@ -1993,31 +1993,29 @@ define internal fastcc i64 @sf_parse_bare_item(ptr noundef writeonly %0, ptr nou 41: ; preds = %38 %.not62.i = icmp eq ptr %0, null - br i1 %.not62.i, label %51, label %42 + br i1 %.not62.i, label %51, label %.lr.ph101.i -42: ; preds = %41 +.lr.ph101.i: ; preds = %41 store i8 2, ptr %0, align 8 - %43 = sitofp i64 %.04978.i to double - %44 = getelementptr inbounds i8, ptr %0, i64 8 - %.not6398.i = icmp eq i64 %39, 0 - br i1 %.not6398.i, label %._crit_edge102.i, label %.lr.ph101.i - -.lr.ph101.i: ; preds = %42, %.lr.ph101.i - %45 = phi double [ %46, %.lr.ph101.i ], [ %43, %42 ] - %.099.i = phi i64 [ %47, %.lr.ph101.i ], [ %39, %42 ] - %46 = fdiv double %45, 1.000000e+01 - %47 = add nsw i64 %.099.i, -1 - %.not63.i = icmp eq i64 %47, 0 - br i1 %.not63.i, label %._crit_edge102.i, label %.lr.ph101.i, !llvm.loop !16 - -._crit_edge102.i: ; preds = %.lr.ph101.i, %42 - %48 = phi double [ %43, %42 ], [ %46, %.lr.ph101.i ] + %42 = sitofp i64 %.04978.i to double + br label %43 + +43: ; preds = %43, %.lr.ph101.i + %44 = phi double [ %42, %.lr.ph101.i ], [ %45, %43 ] + %.099.i = phi i64 [ %39, %.lr.ph101.i ], [ %46, %43 ] + %45 = fdiv double %44, 1.000000e+01 + %46 = add nsw i64 %.099.i, -1 + %.not63.i = icmp eq i64 %46, 0 + br i1 %.not63.i, label %47, label %43, !llvm.loop !16 + +47: ; preds = %43 + %48 = getelementptr inbounds i8, ptr %0, i64 8 %49 = sitofp i32 %.051.i to double - %50 = fmul double %48, %49 - store double %50, ptr %44, align 8 + %50 = fmul double %45, %49 + store double %50, ptr %48, align 8 br label %51 -51: ; preds = %._crit_edge102.i, %41 +51: ; preds = %47, %41 %52 = ptrtoint ptr %.15381.i to i64 %53 = ptrtoint ptr %1 to i64 %54 = sub i64 %52, %53 diff --git a/bench/curl/optimized/libcurl_la-dynbuf.ll b/bench/curl/optimized/libcurl_la-dynbuf.ll index 594901e6770..7f3b61c0499 100644 --- a/bench/curl/optimized/libcurl_la-dynbuf.ll +++ b/bench/curl/optimized/libcurl_la-dynbuf.ll @@ -78,7 +78,7 @@ if.else10: ; preds = %if.else8 %2 = load ptr, ptr %s, align 8 %sub = sub i64 %0, %trail %arrayidx13 = getelementptr inbounds i8, ptr %2, i64 %sub - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %2, ptr align 1 %arrayidx13, i64 %trail, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %2, ptr nonnull align 1 %arrayidx13, i64 %trail, i1 false) store i64 %trail, ptr %leng, align 8 %3 = load ptr, ptr %s, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %3, i64 %trail diff --git a/bench/cvc5/optimized/inst_strategy_e_matching.cpp.ll b/bench/cvc5/optimized/inst_strategy_e_matching.cpp.ll index 2fe3558cc63..883bd01b2ec 100644 --- a/bench/cvc5/optimized/inst_strategy_e_matching.cpp.ll +++ b/bench/cvc5/optimized/inst_strategy_e_matching.cpp.ll @@ -2697,13 +2697,17 @@ land.lhs.true: ; preds = %_ZNSt3mapIN4cvc58in br i1 %cmp.i.i235, label %if.end105, label %if.then46 if.then46: ; preds = %land.lhs.true + %sub.ptr.lhs.cast.i = ptrtoint ptr %27 to i64 + %sub.ptr.rhs.cast.i = ptrtoint ptr %26 to i64 + %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i + %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 %call48 = call noundef nonnull align 8 dereferenceable(392) ptr @_ZNK4cvc58internal6EnvObj7optionsEv(ptr noundef nonnull align 8 dereferenceable(16) %this) %quantifiers = getelementptr inbounds i8, ptr %call48, i64 328 %28 = load ptr, ptr %quantifiers, align 8 %relevantTriggers = getelementptr inbounds i8, ptr %28, i64 361 %29 = load i8, ptr %relevantTriggers, align 1 %tobool49 = trunc i8 %29 to i1 - br i1 %tobool49, label %if.then50, label %if.end72 + br i1 %tobool49, label %if.then50, label %for.body.lr.ph if.then50: ; preds = %if.then46 call void @_ZN4cvc58internal6theory11quantifiers27InstStrategyAutoGenTriggers23sortPatTermsByRelevanceERSt6vectorINS0_12NodeTemplateILb1EEESaIS6_EE(ptr noundef nonnull align 8 dereferenceable(760) %this, ptr noundef nonnull align 8 dereferenceable(24) %second.i) @@ -2815,20 +2819,13 @@ lpad61: ; preds = %land.rhs cleanup br label %eh.resume -if.end72: ; preds = %if.then46 - %sub.ptr.lhs.cast.i = ptrtoint ptr %27 to i64 - %sub.ptr.rhs.cast.i = ptrtoint ptr %26 to i64 - %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i - %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 - %cmp73564.not = icmp eq ptr %27, %26 - br i1 %cmp73564.not, label %for.end, label %for.body.lr.ph - -for.body.lr.ph: ; preds = %cleanup.done68, %while.body, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit247, %if.end72 - %numSingleTriggersToUse.0570 = phi i64 [ %sub.ptr.div.i, %if.end72 ], [ 1, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit247 ], [ %inc, %while.body ], [ %numSingleTriggersToUse.1562, %cleanup.done68 ] +for.body.lr.ph: ; preds = %while.body, %cleanup.done68, %if.then46, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit247 + %numSingleTriggersToUse.0 = phi i64 [ %sub.ptr.div.i, %if.then46 ], [ 1, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit247 ], [ %numSingleTriggersToUse.1562, %cleanup.done68 ], [ %inc, %while.body ] %d_td = getelementptr inbounds i8, ptr %this, i64 16 %d_num_trigger_vars = getelementptr inbounds i8, ptr %this, i64 512 %_M_parent.i.i.i.i.i296 = getelementptr inbounds i8, ptr %this, i64 528 %add.ptr.i.i.i.i297 = getelementptr inbounds i8, ptr %this, i64 520 + %umax = call i64 @llvm.umax.i64(i64 %numSingleTriggersToUse.0, i64 1) br label %for.body for.body: ; preds = %for.body.lr.ph, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit373 @@ -3062,7 +3059,7 @@ terminate.lpad.i372: ; preds = %if.then13.i.i371 _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit373: ; preds = %invoke.cont87, %if.then.i.i365, %if.then13.i.i371 %inc89 = add nuw i64 %i.0565, 1 - %exitcond.not = icmp eq i64 %inc89, %numSingleTriggersToUse.0570 + %exitcond.not = icmp eq i64 %inc89, %umax br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !29 lpad77: ; preds = %if.then13.i.i286 @@ -3081,7 +3078,7 @@ lpad86: ; preds = %_ZN4cvc58internal12 cleanup br label %eh.resume -for.end: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit373, %if.end72 +for.end: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit373 %call90 = call noundef nonnull align 8 dereferenceable(392) ptr @_ZNK4cvc58internal6EnvObj7optionsEv(ptr noundef nonnull align 8 dereferenceable(16) %this) %quantifiers91 = getelementptr inbounds i8, ptr %call90, i64 328 %76 = load ptr, ptr %quantifiers91, align 8 diff --git a/bench/double_conversion/optimized/strtod.cc.ll b/bench/double_conversion/optimized/strtod.cc.ll index 8eaa8cb6976..daa963f59ab 100644 --- a/bench/double_conversion/optimized/strtod.cc.ll +++ b/bench/double_conversion/optimized/strtod.cc.ll @@ -365,8 +365,7 @@ if.end.i15: ; preds = %_ZN17double_convers if.then4.i: ; preds = %if.end.i15 %sub5.i = sub nsw i32 %add124.i, %22 - %switch.tableidx = add i32 %sub5.i, -1 - %23 = icmp ult i32 %switch.tableidx, 7 + %23 = icmp ult i32 %sub5.i, 8 br i1 %23, label %switch.lookup, label %sw.default.i.i sw.default.i.i: ; preds = %if.then4.i @@ -374,10 +373,11 @@ sw.default.i.i: ; preds = %if.then4.i unreachable switch.lookup: ; preds = %if.then4.i - %24 = zext nneg i32 %switch.tableidx to i64 + %switch.tableidx = add nsw i32 %sub5.i, -1 + %24 = sext i32 %switch.tableidx to i64 %switch.gep = getelementptr inbounds [7 x i32], ptr @switch.table._ZN17double_conversionL12ComputeGuessENS_6VectorIKcEEiPd, i64 0, i64 %24 %switch.load = load i32, ptr %switch.gep, align 4 - %25 = zext nneg i32 %switch.tableidx to i64 + %25 = sext i32 %switch.tableidx to i64 %switch.gep29 = getelementptr inbounds [7 x i64], ptr @switch.table._ZN17double_conversionL12ComputeGuessENS_6VectorIKcEEiPd.1, i64 0, i64 %25 %switch.load30 = load i64, ptr %switch.gep29, align 8 %shr.i.i = lshr i64 %significand.1.lcssa.i.i, 32 diff --git a/bench/draco/optimized/symbol_encoding.cc.ll b/bench/draco/optimized/symbol_encoding.cc.ll index e42709a6650..a07426ce6b7 100644 --- a/bench/draco/optimized/symbol_encoding.cc.ll +++ b/bench/draco/optimized/symbol_encoding.cc.ll @@ -1851,184 +1851,176 @@ define linkonce_odr void @_ZNSt6vectorIcSaIcEE15_M_range_insertIPKhEEvN9__gnu_cx %14 = ptrtoint ptr %12 to i64 %15 = sub i64 %13, %14 %.not54 = icmp ult i64 %15, %8 - br i1 %.not54, label %58, label %16 + br i1 %.not54, label %56, label %16 16: ; preds = %5 %17 = ptrtoint ptr %1 to i64 %18 = sub i64 %14, %17 %19 = icmp ugt i64 %18, %8 - br i1 %19, label %20, label %_ZSt7advanceIPKhmEvRT_T0_.exit - -20: ; preds = %16 - %21 = sub i64 0, %8 - %22 = getelementptr inbounds i8, ptr %12, i64 %21 - %23 = ptrtoint ptr %22 to i64 - %.not.i.i.i.i.i.i.i.i.i = icmp eq i64 %8, 0 - br i1 %.not.i.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit, label %24 - -24: ; preds = %20 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %12, ptr nonnull align 1 %22, i64 %8, i1 false) - %.pre86 = load ptr, ptr %11, align 8 - br label %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit - -_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit: ; preds = %20, %24 - %25 = phi ptr [ %12, %20 ], [ %.pre86, %24 ] - %26 = getelementptr inbounds i8, ptr %25, i64 %8 - store ptr %26, ptr %11, align 8 - %.not.i.i.i.i.i = icmp eq ptr %22, %1 - br i1 %.not.i.i.i.i.i, label %_ZSt13move_backwardIPcS0_ET0_T_S2_S1_.exit, label %27 - -27: ; preds = %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit - %28 = sub i64 %23, %17 - %29 = sub i64 0, %28 - %30 = getelementptr inbounds i8, ptr %12, i64 %29 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %30, ptr align 1 %1, i64 %28, i1 false) + br i1 %19, label %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit, label %_ZSt7advanceIPKhmEvRT_T0_.exit + +_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit: ; preds = %16 + %20 = sub i64 0, %8 + %21 = getelementptr inbounds i8, ptr %12, i64 %20 + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %12, ptr nonnull align 1 %21, i64 %8, i1 false) + %22 = load ptr, ptr %11, align 8 + %23 = getelementptr inbounds i8, ptr %22, i64 %8 + store ptr %23, ptr %11, align 8 + %.not.i.i.i.i.i = icmp eq ptr %21, %1 + br i1 %.not.i.i.i.i.i, label %_ZSt13move_backwardIPcS0_ET0_T_S2_S1_.exit, label %24 + +24: ; preds = %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit + %25 = ptrtoint ptr %21 to i64 + %26 = sub i64 %25, %17 + %27 = sub i64 0, %26 + %28 = getelementptr inbounds i8, ptr %12, i64 %27 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %28, ptr align 1 %1, i64 %26, i1 false) br label %_ZSt13move_backwardIPcS0_ET0_T_S2_S1_.exit -_ZSt13move_backwardIPcS0_ET0_T_S2_S1_.exit: ; preds = %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit, %27 - %31 = icmp sgt i64 %8, 0 - br i1 %31, label %.lr.ph.i.i.i.i.i, label %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.exit +_ZSt13move_backwardIPcS0_ET0_T_S2_S1_.exit: ; preds = %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit, %24 + %29 = icmp sgt i64 %8, 0 + br i1 %29, label %.lr.ph.i.i.i.i.i, label %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.exit .lr.ph.i.i.i.i.i: ; preds = %_ZSt13move_backwardIPcS0_ET0_T_S2_S1_.exit, %.lr.ph.i.i.i.i.i - %.012.i.i.i.i.i = phi i64 [ %35, %.lr.ph.i.i.i.i.i ], [ %8, %_ZSt13move_backwardIPcS0_ET0_T_S2_S1_.exit ] - %.0811.i.i.i.i.i = phi ptr [ %34, %.lr.ph.i.i.i.i.i ], [ %1, %_ZSt13move_backwardIPcS0_ET0_T_S2_S1_.exit ] - %.0910.i.i.i.i.i = phi ptr [ %33, %.lr.ph.i.i.i.i.i ], [ %2, %_ZSt13move_backwardIPcS0_ET0_T_S2_S1_.exit ] - %32 = load i8, ptr %.0910.i.i.i.i.i, align 1 - store i8 %32, ptr %.0811.i.i.i.i.i, align 1 - %33 = getelementptr inbounds i8, ptr %.0910.i.i.i.i.i, i64 1 - %34 = getelementptr inbounds i8, ptr %.0811.i.i.i.i.i, i64 1 - %35 = add nsw i64 %.012.i.i.i.i.i, -1 - %36 = icmp samesign ugt i64 %.012.i.i.i.i.i, 1 - br i1 %36, label %.lr.ph.i.i.i.i.i, label %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.exit, !llvm.loop !15 + %.012.i.i.i.i.i = phi i64 [ %33, %.lr.ph.i.i.i.i.i ], [ %8, %_ZSt13move_backwardIPcS0_ET0_T_S2_S1_.exit ] + %.0811.i.i.i.i.i = phi ptr [ %32, %.lr.ph.i.i.i.i.i ], [ %1, %_ZSt13move_backwardIPcS0_ET0_T_S2_S1_.exit ] + %.0910.i.i.i.i.i = phi ptr [ %31, %.lr.ph.i.i.i.i.i ], [ %2, %_ZSt13move_backwardIPcS0_ET0_T_S2_S1_.exit ] + %30 = load i8, ptr %.0910.i.i.i.i.i, align 1 + store i8 %30, ptr %.0811.i.i.i.i.i, align 1 + %31 = getelementptr inbounds i8, ptr %.0910.i.i.i.i.i, i64 1 + %32 = getelementptr inbounds i8, ptr %.0811.i.i.i.i.i, i64 1 + %33 = add nsw i64 %.012.i.i.i.i.i, -1 + %34 = icmp samesign ugt i64 %.012.i.i.i.i.i, 1 + br i1 %34, label %.lr.ph.i.i.i.i.i, label %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.exit, !llvm.loop !15 _ZSt7advanceIPKhmEvRT_T0_.exit: ; preds = %16 - %37 = getelementptr inbounds i8, ptr %2, i64 %18 - %38 = ptrtoint ptr %37 to i64 - %39 = sub i64 %6, %38 - %40 = icmp sgt i64 %39, 0 - br i1 %40, label %.lr.ph.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit + %35 = getelementptr inbounds i8, ptr %2, i64 %18 + %36 = ptrtoint ptr %35 to i64 + %37 = sub i64 %6, %36 + %38 = icmp sgt i64 %37, 0 + br i1 %38, label %.lr.ph.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit .lr.ph.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIPKhmEvRT_T0_.exit, %.lr.ph.i.i.i.i.i.i.i.i - %.012.i.i.i.i.i.i.i.i = phi i64 [ %44, %.lr.ph.i.i.i.i.i.i.i.i ], [ %39, %_ZSt7advanceIPKhmEvRT_T0_.exit ] - %.0811.i.i.i.i.i.i.i.i = phi ptr [ %43, %.lr.ph.i.i.i.i.i.i.i.i ], [ %12, %_ZSt7advanceIPKhmEvRT_T0_.exit ] - %.0910.i.i.i.i.i.i.i.i = phi ptr [ %42, %.lr.ph.i.i.i.i.i.i.i.i ], [ %37, %_ZSt7advanceIPKhmEvRT_T0_.exit ] - %41 = load i8, ptr %.0910.i.i.i.i.i.i.i.i, align 1 - store i8 %41, ptr %.0811.i.i.i.i.i.i.i.i, align 1 - %42 = getelementptr inbounds i8, ptr %.0910.i.i.i.i.i.i.i.i, i64 1 - %43 = getelementptr inbounds i8, ptr %.0811.i.i.i.i.i.i.i.i, i64 1 - %44 = add nsw i64 %.012.i.i.i.i.i.i.i.i, -1 - %45 = icmp samesign ugt i64 %.012.i.i.i.i.i.i.i.i, 1 - br i1 %45, label %.lr.ph.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit.loopexit, !llvm.loop !15 + %.012.i.i.i.i.i.i.i.i = phi i64 [ %42, %.lr.ph.i.i.i.i.i.i.i.i ], [ %37, %_ZSt7advanceIPKhmEvRT_T0_.exit ] + %.0811.i.i.i.i.i.i.i.i = phi ptr [ %41, %.lr.ph.i.i.i.i.i.i.i.i ], [ %12, %_ZSt7advanceIPKhmEvRT_T0_.exit ] + %.0910.i.i.i.i.i.i.i.i = phi ptr [ %40, %.lr.ph.i.i.i.i.i.i.i.i ], [ %35, %_ZSt7advanceIPKhmEvRT_T0_.exit ] + %39 = load i8, ptr %.0910.i.i.i.i.i.i.i.i, align 1 + store i8 %39, ptr %.0811.i.i.i.i.i.i.i.i, align 1 + %40 = getelementptr inbounds i8, ptr %.0910.i.i.i.i.i.i.i.i, i64 1 + %41 = getelementptr inbounds i8, ptr %.0811.i.i.i.i.i.i.i.i, i64 1 + %42 = add nsw i64 %.012.i.i.i.i.i.i.i.i, -1 + %43 = icmp samesign ugt i64 %.012.i.i.i.i.i.i.i.i, 1 + br i1 %43, label %.lr.ph.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit.loopexit, !llvm.loop !15 _ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit.loopexit: ; preds = %.lr.ph.i.i.i.i.i.i.i.i %.pre = load ptr, ptr %11, align 8 br label %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit _ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit: ; preds = %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit.loopexit, %_ZSt7advanceIPKhmEvRT_T0_.exit - %46 = phi ptr [ %.pre, %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit.loopexit ], [ %12, %_ZSt7advanceIPKhmEvRT_T0_.exit ] - %47 = sub nuw i64 %8, %18 - %48 = getelementptr inbounds i8, ptr %46, i64 %47 - store ptr %48, ptr %11, align 8 + %44 = phi ptr [ %.pre, %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit.loopexit ], [ %12, %_ZSt7advanceIPKhmEvRT_T0_.exit ] + %45 = sub nuw i64 %8, %18 + %46 = getelementptr inbounds i8, ptr %44, i64 %45 + store ptr %46, ptr %11, align 8 %.not.i.i.i.i.i.i.i.i.i55 = icmp eq ptr %12, %1 - br i1 %.not.i.i.i.i.i.i.i.i.i55, label %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit56, label %49 + br i1 %.not.i.i.i.i.i.i.i.i.i55, label %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit56, label %47 -49: ; preds = %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %48, ptr align 1 %1, i64 %18, i1 false) +47: ; preds = %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %46, ptr align 1 %1, i64 %18, i1 false) %.pre85 = load ptr, ptr %11, align 8 br label %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit56 -_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit56: ; preds = %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit, %49 - %50 = phi ptr [ %48, %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit ], [ %.pre85, %49 ] - %51 = getelementptr inbounds i8, ptr %50, i64 %18 - store ptr %51, ptr %11, align 8 - %52 = icmp sgt i64 %18, 0 - br i1 %52, label %.lr.ph.i.i.i.i.i58, label %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.exit +_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit56: ; preds = %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit, %47 + %48 = phi ptr [ %46, %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit ], [ %.pre85, %47 ] + %49 = getelementptr inbounds i8, ptr %48, i64 %18 + store ptr %49, ptr %11, align 8 + %50 = icmp sgt i64 %18, 0 + br i1 %50, label %.lr.ph.i.i.i.i.i58, label %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.exit .lr.ph.i.i.i.i.i58: ; preds = %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit56, %.lr.ph.i.i.i.i.i58 - %.012.i.i.i.i.i59 = phi i64 [ %56, %.lr.ph.i.i.i.i.i58 ], [ %18, %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit56 ] - %.0811.i.i.i.i.i60 = phi ptr [ %55, %.lr.ph.i.i.i.i.i58 ], [ %1, %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit56 ] - %.0910.i.i.i.i.i61 = phi ptr [ %54, %.lr.ph.i.i.i.i.i58 ], [ %2, %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit56 ] - %53 = load i8, ptr %.0910.i.i.i.i.i61, align 1 - store i8 %53, ptr %.0811.i.i.i.i.i60, align 1 - %54 = getelementptr inbounds i8, ptr %.0910.i.i.i.i.i61, i64 1 - %55 = getelementptr inbounds i8, ptr %.0811.i.i.i.i.i60, i64 1 - %56 = add nsw i64 %.012.i.i.i.i.i59, -1 - %57 = icmp samesign ugt i64 %.012.i.i.i.i.i59, 1 - br i1 %57, label %.lr.ph.i.i.i.i.i58, label %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.exit, !llvm.loop !15 - -58: ; preds = %5 - %59 = load ptr, ptr %0, align 8 - %60 = ptrtoint ptr %59 to i64 - %61 = sub i64 %14, %60 - %62 = sub i64 9223372036854775807, %61 - %63 = icmp ult i64 %62, %8 - br i1 %63, label %64, label %_ZNKSt6vectorIcSaIcEE12_M_check_lenEmPKc.exit - -64: ; preds = %58 + %.012.i.i.i.i.i59 = phi i64 [ %54, %.lr.ph.i.i.i.i.i58 ], [ %18, %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit56 ] + %.0811.i.i.i.i.i60 = phi ptr [ %53, %.lr.ph.i.i.i.i.i58 ], [ %1, %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit56 ] + %.0910.i.i.i.i.i61 = phi ptr [ %52, %.lr.ph.i.i.i.i.i58 ], [ %2, %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit56 ] + %51 = load i8, ptr %.0910.i.i.i.i.i61, align 1 + store i8 %51, ptr %.0811.i.i.i.i.i60, align 1 + %52 = getelementptr inbounds i8, ptr %.0910.i.i.i.i.i61, i64 1 + %53 = getelementptr inbounds i8, ptr %.0811.i.i.i.i.i60, i64 1 + %54 = add nsw i64 %.012.i.i.i.i.i59, -1 + %55 = icmp samesign ugt i64 %.012.i.i.i.i.i59, 1 + br i1 %55, label %.lr.ph.i.i.i.i.i58, label %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.exit, !llvm.loop !15 + +56: ; preds = %5 + %57 = load ptr, ptr %0, align 8 + %58 = ptrtoint ptr %57 to i64 + %59 = sub i64 %14, %58 + %60 = sub i64 9223372036854775807, %59 + %61 = icmp ult i64 %60, %8 + br i1 %61, label %62, label %_ZNKSt6vectorIcSaIcEE12_M_check_lenEmPKc.exit + +62: ; preds = %56 tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.5) #21 unreachable -_ZNKSt6vectorIcSaIcEE12_M_check_lenEmPKc.exit: ; preds = %58 - %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %61, i64 %8) - %65 = add i64 %.sroa.speculated.i, %61 - %66 = icmp ult i64 %65, %61 - %67 = tail call i64 @llvm.umin.i64(i64 %65, i64 9223372036854775807) - %68 = select i1 %66, i64 9223372036854775807, i64 %67 - %.not.i = icmp eq i64 %68, 0 - br i1 %.not.i, label %_ZNSt12_Vector_baseIcSaIcEE11_M_allocateEm.exit, label %69 +_ZNKSt6vectorIcSaIcEE12_M_check_lenEmPKc.exit: ; preds = %56 + %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %59, i64 %8) + %63 = add i64 %.sroa.speculated.i, %59 + %64 = icmp ult i64 %63, %59 + %65 = tail call i64 @llvm.umin.i64(i64 %63, i64 9223372036854775807) + %66 = select i1 %64, i64 9223372036854775807, i64 %65 + %.not.i = icmp eq i64 %66, 0 + br i1 %.not.i, label %_ZNSt12_Vector_baseIcSaIcEE11_M_allocateEm.exit, label %67 -69: ; preds = %_ZNKSt6vectorIcSaIcEE12_M_check_lenEmPKc.exit - %70 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %68) #20 +67: ; preds = %_ZNKSt6vectorIcSaIcEE12_M_check_lenEmPKc.exit + %68 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %66) #20 br label %_ZNSt12_Vector_baseIcSaIcEE11_M_allocateEm.exit -_ZNSt12_Vector_baseIcSaIcEE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorIcSaIcEE12_M_check_lenEmPKc.exit, %69 - %71 = phi ptr [ %70, %69 ], [ null, %_ZNKSt6vectorIcSaIcEE12_M_check_lenEmPKc.exit ] - %72 = ptrtoint ptr %1 to i64 - %73 = sub i64 %72, %60 - %.not.i.i.i.i.i.i.i.i.i63 = icmp eq ptr %1, %59 - br i1 %.not.i.i.i.i.i.i.i.i.i63, label %75, label %74 - -74: ; preds = %_ZNSt12_Vector_baseIcSaIcEE11_M_allocateEm.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %71, ptr align 1 %59, i64 %73, i1 false) - br label %75 - -75: ; preds = %74, %_ZNSt12_Vector_baseIcSaIcEE11_M_allocateEm.exit - %76 = getelementptr i8, ptr %71, i64 %73 - %77 = icmp sgt i64 %8, 0 - br i1 %77, label %.lr.ph.i.i.i.i.i.i.i.i65.preheader, label %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit69 - -.lr.ph.i.i.i.i.i.i.i.i65.preheader: ; preds = %75 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %76, ptr align 1 %2, i64 %8, i1 false) - %78 = add i64 %6, %72 - %79 = add i64 %7, %60 - %80 = sub i64 %78, %79 - %scevgep = getelementptr i8, ptr %71, i64 %80 +_ZNSt12_Vector_baseIcSaIcEE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorIcSaIcEE12_M_check_lenEmPKc.exit, %67 + %69 = phi ptr [ %68, %67 ], [ null, %_ZNKSt6vectorIcSaIcEE12_M_check_lenEmPKc.exit ] + %70 = ptrtoint ptr %1 to i64 + %71 = sub i64 %70, %58 + %.not.i.i.i.i.i.i.i.i.i63 = icmp eq ptr %1, %57 + br i1 %.not.i.i.i.i.i.i.i.i.i63, label %73, label %72 + +72: ; preds = %_ZNSt12_Vector_baseIcSaIcEE11_M_allocateEm.exit + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %69, ptr align 1 %57, i64 %71, i1 false) + br label %73 + +73: ; preds = %72, %_ZNSt12_Vector_baseIcSaIcEE11_M_allocateEm.exit + %74 = getelementptr i8, ptr %69, i64 %71 + %75 = icmp sgt i64 %8, 0 + br i1 %75, label %.lr.ph.i.i.i.i.i.i.i.i65.preheader, label %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit69 + +.lr.ph.i.i.i.i.i.i.i.i65.preheader: ; preds = %73 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %74, ptr align 1 %2, i64 %8, i1 false) + %76 = add i64 %6, %70 + %77 = add i64 %7, %58 + %78 = sub i64 %76, %77 + %scevgep = getelementptr i8, ptr %69, i64 %78 br label %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit69 -_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit69: ; preds = %.lr.ph.i.i.i.i.i.i.i.i65.preheader, %75 - %.08.lcssa.i.i.i.i.i.i.i.i64 = phi ptr [ %76, %75 ], [ %scevgep, %.lr.ph.i.i.i.i.i.i.i.i65.preheader ] - %81 = sub i64 %14, %72 +_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit69: ; preds = %.lr.ph.i.i.i.i.i.i.i.i65.preheader, %73 + %.08.lcssa.i.i.i.i.i.i.i.i64 = phi ptr [ %74, %73 ], [ %scevgep, %.lr.ph.i.i.i.i.i.i.i.i65.preheader ] + %79 = sub i64 %14, %70 %.not.i.i.i.i.i.i.i.i.i70 = icmp eq ptr %12, %1 - br i1 %.not.i.i.i.i.i.i.i.i.i70, label %83, label %82 + br i1 %.not.i.i.i.i.i.i.i.i.i70, label %81, label %80 -82: ; preds = %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit69 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %.08.lcssa.i.i.i.i.i.i.i.i64, ptr align 1 %1, i64 %81, i1 false) - br label %83 +80: ; preds = %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit69 + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %.08.lcssa.i.i.i.i.i.i.i.i64, ptr align 1 %1, i64 %79, i1 false) + br label %81 -83: ; preds = %82, %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit69 - %84 = getelementptr inbounds i8, ptr %.08.lcssa.i.i.i.i.i.i.i.i64, i64 %81 - %.not.i72 = icmp eq ptr %59, null - br i1 %.not.i72, label %_ZNSt12_Vector_baseIcSaIcEE13_M_deallocateEPcm.exit, label %85 +81: ; preds = %80, %_ZSt22__uninitialized_copy_aIPKhPccET0_T_S4_S3_RSaIT1_E.exit69 + %82 = getelementptr inbounds i8, ptr %.08.lcssa.i.i.i.i.i.i.i.i64, i64 %79 + %.not.i72 = icmp eq ptr %57, null + br i1 %.not.i72, label %_ZNSt12_Vector_baseIcSaIcEE13_M_deallocateEPcm.exit, label %83 -85: ; preds = %83 - tail call void @_ZdlPv(ptr noundef nonnull %59) #22 +83: ; preds = %81 + tail call void @_ZdlPv(ptr noundef nonnull %57) #22 br label %_ZNSt12_Vector_baseIcSaIcEE13_M_deallocateEPcm.exit -_ZNSt12_Vector_baseIcSaIcEE13_M_deallocateEPcm.exit: ; preds = %83, %85 - store ptr %71, ptr %0, align 8 - store ptr %84, ptr %11, align 8 - %86 = getelementptr inbounds i8, ptr %71, i64 %68 - store ptr %86, ptr %9, align 8 +_ZNSt12_Vector_baseIcSaIcEE13_M_deallocateEPcm.exit: ; preds = %81, %83 + store ptr %69, ptr %0, align 8 + store ptr %82, ptr %11, align 8 + %84 = getelementptr inbounds i8, ptr %69, i64 %66 + store ptr %84, ptr %9, align 8 br label %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.exit _ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEET0_T_SA_S9_.exit: ; preds = %.lr.ph.i.i.i.i.i58, %.lr.ph.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPcS0_SaIcEET0_T_S3_S2_RT1_.exit56, %_ZSt13move_backwardIPcS0_ET0_T_S2_S1_.exit, %_ZNSt12_Vector_baseIcSaIcEE13_M_deallocateEPcm.exit, %4 diff --git a/bench/duckdb/optimized/ub_duckdb_common.cpp.ll b/bench/duckdb/optimized/ub_duckdb_common.cpp.ll index e614ebe5070..e04691f074e 100644 --- a/bench/duckdb/optimized/ub_duckdb_common.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_common.cpp.ll @@ -11019,7 +11019,7 @@ if.then210: ; preds = %if.else208 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp212) #52 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp213) #52 call void @llvm.experimental.noalias.scope.decl(metadata !196) - %cmp39.i.i930 = icmp ult i64 %dec, 10 + %cmp39.i.i930 = icmp ult i64 %sub.ptr.div.i768, 11 br i1 %cmp39.i.i930, label %_ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i943, label %if.end.i.i931 if.end.i.i931: ; preds = %if.then210, %if.end16.i.i939 @@ -171522,23 +171522,22 @@ _ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE %add.ptr.i.i.i.i = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %call5.i.i.i.i4.i.i.i24, i64 %sub.ptr.div.i %_M_end_of_storage.i.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 16 store ptr %add.ptr.i.i.i.i, ptr %_M_end_of_storage.i.i.i.i, align 8, !tbaa !171 - %2 = add nsw i64 %sub.ptr.div.i, -1 %xtraiter = and i64 %sub.ptr.div.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.i.i.i.i.i.prol.loopexit, label %for.body.i.i.i.i.i.i.prol.preheader for.body.i.i.i.i.i.i.prol.preheader: ; preds = %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2EmRKS6_.exit.i.i - %3 = and i64 %sub.ptr.div.i, 288230376151711740 + %2 = and i64 %sub.ptr.div.i, 288230376151711740 br label %for.body.i.i.i.i.i.i.prol for.body.i.i.i.i.i.i.prol: ; preds = %for.body.i.i.i.i.i.i.prol.preheader, %for.body.i.i.i.i.i.i.prol %__cur.011.i.i.i.i.i.i.prol = phi ptr [ %incdec.ptr.i.i.i.i.i.i.prol, %for.body.i.i.i.i.i.i.prol ], [ %call5.i.i.i.i4.i.i.i24, %for.body.i.i.i.i.i.i.prol.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.i.i.i.i.i.prol ], [ 0, %for.body.i.i.i.i.i.i.prol.preheader ] - %4 = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i.prol, i64 16 - store ptr %4, ptr %__cur.011.i.i.i.i.i.i.prol, align 8, !tbaa !56 + %3 = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i.prol, i64 16 + store ptr %3, ptr %__cur.011.i.i.i.i.i.i.prol, align 8, !tbaa !56 %_M_string_length.i.i.i.i.i.i.i.i.i.i.prol = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i.prol, i64 8 store i64 0, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.prol, align 8, !tbaa !15 - store i8 0, ptr %4, align 1, !tbaa !53 + store i8 0, ptr %3, align 1, !tbaa !53 %incdec.ptr.i.i.i.i.i.i.prol = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i.prol, i64 32 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -171547,36 +171546,36 @@ for.body.i.i.i.i.i.i.prol: ; preds = %for.body.i.i.i.i.i. for.body.i.i.i.i.i.i.prol.loopexit: ; preds = %for.body.i.i.i.i.i.i.prol, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2EmRKS6_.exit.i.i %incdec.ptr.i.i.i.i.i.i.lcssa.unr = phi ptr [ undef, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2EmRKS6_.exit.i.i ], [ %incdec.ptr.i.i.i.i.i.i.prol, %for.body.i.i.i.i.i.i.prol ] %__cur.011.i.i.i.i.i.i.unr = phi ptr [ %call5.i.i.i.i4.i.i.i24, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2EmRKS6_.exit.i.i ], [ %incdec.ptr.i.i.i.i.i.i.prol, %for.body.i.i.i.i.i.i.prol ] - %__n.addr.010.i.i.i.i.i.i.unr = phi i64 [ %sub.ptr.div.i, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2EmRKS6_.exit.i.i ], [ %3, %for.body.i.i.i.i.i.i.prol ] - %5 = icmp ult i64 %2, 3 - br i1 %5, label %invoke.cont, label %for.body.i.i.i.i.i.i + %__n.addr.010.i.i.i.i.i.i.unr = phi i64 [ %sub.ptr.div.i, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2EmRKS6_.exit.i.i ], [ %2, %for.body.i.i.i.i.i.i.prol ] + %4 = icmp ult i64 %sub.ptr.div.i, 4 + br i1 %4, label %invoke.cont, label %for.body.i.i.i.i.i.i for.body.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i.prol.loopexit, %for.body.i.i.i.i.i.i %__cur.011.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.3, %for.body.i.i.i.i.i.i ], [ %__cur.011.i.i.i.i.i.i.unr, %for.body.i.i.i.i.i.i.prol.loopexit ] %__n.addr.010.i.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i.i.3, %for.body.i.i.i.i.i.i ], [ %__n.addr.010.i.i.i.i.i.i.unr, %for.body.i.i.i.i.i.i.prol.loopexit ] - %6 = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i, i64 16 - store ptr %6, ptr %__cur.011.i.i.i.i.i.i, align 8, !tbaa !56 + %5 = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i, i64 16 + store ptr %5, ptr %__cur.011.i.i.i.i.i.i, align 8, !tbaa !56 %_M_string_length.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i, i64 8 store i64 0, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i, align 8, !tbaa !15 - store i8 0, ptr %6, align 1, !tbaa !53 + store i8 0, ptr %5, align 1, !tbaa !53 %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i, i64 32 - %7 = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i, i64 48 - store ptr %7, ptr %incdec.ptr.i.i.i.i.i.i, align 8, !tbaa !56 + %6 = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i, i64 48 + store ptr %6, ptr %incdec.ptr.i.i.i.i.i.i, align 8, !tbaa !56 %_M_string_length.i.i.i.i.i.i.i.i.i.i.1 = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i, i64 40 store i64 0, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.1, align 8, !tbaa !15 - store i8 0, ptr %7, align 1, !tbaa !53 + store i8 0, ptr %6, align 1, !tbaa !53 %incdec.ptr.i.i.i.i.i.i.1 = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i, i64 64 - %8 = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i, i64 80 - store ptr %8, ptr %incdec.ptr.i.i.i.i.i.i.1, align 8, !tbaa !56 + %7 = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i, i64 80 + store ptr %7, ptr %incdec.ptr.i.i.i.i.i.i.1, align 8, !tbaa !56 %_M_string_length.i.i.i.i.i.i.i.i.i.i.2 = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i, i64 72 store i64 0, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.2, align 8, !tbaa !15 - store i8 0, ptr %8, align 1, !tbaa !53 + store i8 0, ptr %7, align 1, !tbaa !53 %incdec.ptr.i.i.i.i.i.i.2 = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i, i64 96 - %9 = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i, i64 112 - store ptr %9, ptr %incdec.ptr.i.i.i.i.i.i.2, align 8, !tbaa !56 + %8 = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i, i64 112 + store ptr %8, ptr %incdec.ptr.i.i.i.i.i.i.2, align 8, !tbaa !56 %_M_string_length.i.i.i.i.i.i.i.i.i.i.3 = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i, i64 104 store i64 0, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.3, align 8, !tbaa !15 - store i8 0, ptr %9, align 1, !tbaa !53 + store i8 0, ptr %8, align 1, !tbaa !53 %dec.i.i.i.i.i.i.3 = add i64 %__n.addr.010.i.i.i.i.i.i, -4 %incdec.ptr.i.i.i.i.i.i.3 = getelementptr inbounds i8, ptr %__cur.011.i.i.i.i.i.i, i64 128 %cmp.not.i.i.i.i.i.i.3 = icmp eq i64 %dec.i.i.i.i.i.i.3, 0 @@ -171586,7 +171585,7 @@ invoke.cont: ; preds = %for.body.i.i.i.i.i. %incdec.ptr.i.i.i.i.i.i.lcssa = phi ptr [ %incdec.ptr.i.i.i.i.i.i.lcssa.unr, %for.body.i.i.i.i.i.i.prol.loopexit ], [ %incdec.ptr.i.i.i.i.i.i.3, %for.body.i.i.i.i.i.i ] %_M_finish.i.i9.i.i = getelementptr inbounds i8, ptr %agg.result, i64 8 store ptr %incdec.ptr.i.i.i.i.i.i.lcssa, ptr %_M_finish.i.i9.i.i, align 8, !tbaa !78 - %10 = getelementptr inbounds i8, ptr %ref.tmp4, i64 16 + %9 = getelementptr inbounds i8, ptr %ref.tmp4, i64 16 %_M_string_length.i71.i = getelementptr inbounds i8, ptr %ref.tmp4, i64 8 br label %for.body @@ -171597,8 +171596,8 @@ for.body: ; preds = %_ZNSt7__cxx1112basi to label %invoke.cont7 unwind label %lpad6 invoke.cont7: ; preds = %for.body - %11 = load ptr, ptr %call8, align 8, !tbaa !25 - %tobool.not.i = icmp eq ptr %11, null + %10 = load ptr, ptr %call8, align 8, !tbaa !25 + %tobool.not.i = icmp eq ptr %10, null br i1 %tobool.not.i, label %if.then.i.i, label %invoke.cont9, !prof !55 if.then.i.i: ; preds = %invoke.cont7 @@ -171617,7 +171616,7 @@ invoke.cont4.i.i: ; preds = %invoke.cont.i.i to label %unreachable.i.i unwind label %lpad3.i.i ehcleanup.thread.i.i: ; preds = %if.then.i.i - %12 = landingpad { ptr, i32 } + %11 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp2.i.i) #52 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i.i) #52 @@ -171625,30 +171624,30 @@ ehcleanup.thread.i.i: ; preds = %if.then.i.i lpad3.i.i: ; preds = %invoke.cont4.i.i, %invoke.cont.i.i %cleanup.isactive.0.i.i = phi i1 [ false, %invoke.cont4.i.i ], [ true, %invoke.cont.i.i ] - %13 = landingpad { ptr, i32 } + %12 = landingpad { ptr, i32 } cleanup - %14 = load ptr, ptr %ref.tmp.i.i, align 8, !tbaa !12 - %15 = getelementptr inbounds i8, ptr %ref.tmp.i.i, i64 16 - %cmp.i.i.i.i.i = icmp eq ptr %14, %15 + %13 = load ptr, ptr %ref.tmp.i.i, align 8, !tbaa !12 + %14 = getelementptr inbounds i8, ptr %ref.tmp.i.i, i64 16 + %cmp.i.i.i.i.i = icmp eq ptr %13, %14 br i1 %cmp.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i, label %ehcleanup.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i: ; preds = %lpad3.i.i %_M_string_length.i.i.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i.i, i64 8 - %16 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !15 - %cmp3.i.i.i.i.i = icmp ult i64 %16, 16 + %15 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !15 + %cmp3.i.i.i.i.i = icmp ult i64 %15, 16 call void @llvm.assume(i1 %cmp3.i.i.i.i.i) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp2.i.i) #52 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i.i) #52 br i1 %cleanup.isactive.0.i.i, label %cleanup.action.i.i, label %ehcleanup ehcleanup.i.i: ; preds = %lpad3.i.i - call void @_ZdlPv(ptr noundef %14) #54 + call void @_ZdlPv(ptr noundef %13) #54 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp2.i.i) #52 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i.i) #52 br i1 %cleanup.isactive.0.i.i, label %cleanup.action.i.i, label %ehcleanup cleanup.action.i.i: ; preds = %ehcleanup.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i, %ehcleanup.thread.i.i - %.pn13.i.i = phi { ptr, i32 } [ %12, %ehcleanup.thread.i.i ], [ %13, %ehcleanup.i.i ], [ %13, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i ] + %.pn13.i.i = phi { ptr, i32 } [ %11, %ehcleanup.thread.i.i ], [ %12, %ehcleanup.i.i ], [ %12, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i ] call void @__cxa_free_exception(ptr %exception.i.i) #52 br label %ehcleanup @@ -171656,10 +171655,10 @@ unreachable.i.i: ; preds = %invoke.cont4.i.i unreachable invoke.cont9: ; preds = %invoke.cont7 - %vtable = load ptr, ptr %11, align 8, !tbaa !27 + %vtable = load ptr, ptr %10, align 8, !tbaa !27 %vfn = getelementptr inbounds i8, ptr %vtable, i64 280 - %17 = load ptr, ptr %vfn, align 8 - invoke void %17(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp4, ptr noundef nonnull align 8 dereferenceable(8) %11) + %16 = load ptr, ptr %vfn, align 8 + invoke void %16(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp4, ptr noundef nonnull align 8 dereferenceable(8) %10) to label %invoke.cont11 unwind label %lpad6 invoke.cont11: ; preds = %invoke.cont9 @@ -171667,139 +171666,139 @@ invoke.cont11: ; preds = %invoke.cont9 to label %invoke.cont13 unwind label %lpad12 invoke.cont13: ; preds = %invoke.cont11 - %18 = load ptr, ptr %call14, align 8, !tbaa !12 - %19 = getelementptr inbounds i8, ptr %call14, i64 16 - %cmp.i.i = icmp eq ptr %18, %19 + %17 = load ptr, ptr %call14, align 8, !tbaa !12 + %18 = getelementptr inbounds i8, ptr %call14, i64 16 + %cmp.i.i = icmp eq ptr %17, %18 br i1 %cmp.i.i, label %invoke.cont12.i, label %invoke.cont12.thread.i invoke.cont12.i: ; preds = %invoke.cont13 %_M_string_length.i.i = getelementptr inbounds i8, ptr %call14, i64 8 - %20 = load i64, ptr %_M_string_length.i.i, align 8, !tbaa !15 - %cmp3.i.i = icmp ult i64 %20, 16 + %19 = load i64, ptr %_M_string_length.i.i, align 8, !tbaa !15 + %cmp3.i.i = icmp ult i64 %19, 16 call void @llvm.assume(i1 %cmp3.i.i) - %21 = load ptr, ptr %ref.tmp4, align 8, !tbaa !12 - %cmp.i56.i = icmp eq ptr %21, %10 + %20 = load ptr, ptr %ref.tmp4, align 8, !tbaa !12 + %cmp.i56.i = icmp eq ptr %20, %9 br i1 %cmp.i56.i, label %if.then15.i, label %if.end32.thread.i invoke.cont12.thread.i: ; preds = %invoke.cont13 - %22 = load ptr, ptr %ref.tmp4, align 8, !tbaa !12 - %cmp.i5678.i = icmp eq ptr %22, %10 + %21 = load ptr, ptr %ref.tmp4, align 8, !tbaa !12 + %cmp.i5678.i = icmp eq ptr %21, %9 br i1 %cmp.i5678.i, label %if.then15.i, label %if.end32.i if.then15.i: ; preds = %invoke.cont12.thread.i, %invoke.cont12.i - %23 = load i64, ptr %_M_string_length.i71.i, align 8, !tbaa !15 - %cmp3.i59.i = icmp ult i64 %23, 16 + %22 = load i64, ptr %_M_string_length.i71.i, align 8, !tbaa !15 + %cmp3.i59.i = icmp ult i64 %22, 16 call void @llvm.assume(i1 %cmp3.i59.i) %cmp.not.i = icmp eq ptr %ref.tmp4, %call14 br i1 %cmp.not.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.exit, label %if.then16.i, !prof !55 if.then16.i: ; preds = %if.then15.i - switch i64 %23, label %if.end.i.i.i [ + switch i64 %22, label %if.end.i.i.i [ i64 0, label %if.end24.i i64 1, label %if.then.i63.i ] if.then.i63.i: ; preds = %if.then16.i - %24 = load i8, ptr %10, align 8, !tbaa !53 - store i8 %24, ptr %18, align 1, !tbaa !53 + %23 = load i8, ptr %9, align 8, !tbaa !53 + store i8 %23, ptr %17, align 1, !tbaa !53 br label %if.end24.i if.end.i.i.i: ; preds = %if.then16.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %18, ptr nonnull align 8 %10, i64 %23, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %17, ptr nonnull align 8 %9, i64 %22, i1 false) br label %if.end24.i if.end24.i: ; preds = %if.end.i.i.i, %if.then.i63.i, %if.then16.i - %25 = load i64, ptr %_M_string_length.i71.i, align 8, !tbaa !15 + %24 = load i64, ptr %_M_string_length.i71.i, align 8, !tbaa !15 %_M_string_length.i.i65.i = getelementptr inbounds i8, ptr %call14, i64 8 - store i64 %25, ptr %_M_string_length.i.i65.i, align 8, !tbaa !15 - %26 = load ptr, ptr %call14, align 8, !tbaa !12 - %arrayidx.i.i = getelementptr inbounds i8, ptr %26, i64 %25 + store i64 %24, ptr %_M_string_length.i.i65.i, align 8, !tbaa !15 + %25 = load ptr, ptr %call14, align 8, !tbaa !12 + %arrayidx.i.i = getelementptr inbounds i8, ptr %25, i64 %24 store i8 0, ptr %arrayidx.i.i, align 1, !tbaa !53 %.pre.i = load ptr, ptr %ref.tmp4, align 8, !tbaa !12 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.exit if.end32.thread.i: ; preds = %invoke.cont12.i - store ptr %21, ptr %call14, align 8, !tbaa !12 - %27 = load i64, ptr %_M_string_length.i71.i, align 8, !tbaa !15 - store i64 %27, ptr %_M_string_length.i.i, align 8, !tbaa !15 - %28 = load i64, ptr %10, align 8, !tbaa !53 - store i64 %28, ptr %18, align 8, !tbaa !53 + store ptr %20, ptr %call14, align 8, !tbaa !12 + %26 = load i64, ptr %_M_string_length.i71.i, align 8, !tbaa !15 + store i64 %26, ptr %_M_string_length.i.i, align 8, !tbaa !15 + %27 = load i64, ptr %9, align 8, !tbaa !53 + store i64 %27, ptr %17, align 8, !tbaa !53 br label %if.else37.i if.end32.i: ; preds = %invoke.cont12.thread.i - %29 = load i64, ptr %19, align 8, !tbaa !53 - store ptr %22, ptr %call14, align 8, !tbaa !12 - %30 = load i64, ptr %_M_string_length.i71.i, align 8, !tbaa !15 + %28 = load i64, ptr %18, align 8, !tbaa !53 + store ptr %21, ptr %call14, align 8, !tbaa !12 + %29 = load i64, ptr %_M_string_length.i71.i, align 8, !tbaa !15 %_M_string_length.i72.i = getelementptr inbounds i8, ptr %call14, i64 8 - store i64 %30, ptr %_M_string_length.i72.i, align 8, !tbaa !15 - %31 = load i64, ptr %10, align 8, !tbaa !53 - store i64 %31, ptr %19, align 8, !tbaa !53 - %tobool35.not.i = icmp eq ptr %18, null + store i64 %29, ptr %_M_string_length.i72.i, align 8, !tbaa !15 + %30 = load i64, ptr %9, align 8, !tbaa !53 + store i64 %30, ptr %18, align 8, !tbaa !53 + %tobool35.not.i = icmp eq ptr %17, null br i1 %tobool35.not.i, label %if.else37.i, label %if.then36.i if.then36.i: ; preds = %if.end32.i - store ptr %18, ptr %ref.tmp4, align 8, !tbaa !12 - store i64 %29, ptr %10, align 8, !tbaa !53 + store ptr %17, ptr %ref.tmp4, align 8, !tbaa !12 + store i64 %28, ptr %9, align 8, !tbaa !53 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.exit if.else37.i: ; preds = %if.end32.i, %if.end32.thread.i - store ptr %10, ptr %ref.tmp4, align 8, !tbaa !12 + store ptr %9, ptr %ref.tmp4, align 8, !tbaa !12 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.exit: ; preds = %if.else37.i, %if.then36.i, %if.end24.i, %if.then15.i - %32 = phi ptr [ %.pre.i, %if.end24.i ], [ %18, %if.then36.i ], [ %10, %if.else37.i ], [ %10, %if.then15.i ] + %31 = phi ptr [ %.pre.i, %if.end24.i ], [ %17, %if.then36.i ], [ %9, %if.else37.i ], [ %9, %if.then15.i ] store i64 0, ptr %_M_string_length.i71.i, align 8, !tbaa !15 - store i8 0, ptr %32, align 1, !tbaa !53 - %33 = load ptr, ptr %ref.tmp4, align 8, !tbaa !12 - %cmp.i.i.i30 = icmp eq ptr %33, %10 + store i8 0, ptr %31, align 1, !tbaa !53 + %32 = load ptr, ptr %ref.tmp4, align 8, !tbaa !12 + %cmp.i.i.i30 = icmp eq ptr %32, %9 br i1 %cmp.i.i.i30, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %if.then.i.i31 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.exit - %34 = load i64, ptr %_M_string_length.i71.i, align 8, !tbaa !15 - %cmp3.i.i.i = icmp ult i64 %34, 16 + %33 = load i64, ptr %_M_string_length.i71.i, align 8, !tbaa !15 + %cmp3.i.i.i = icmp ult i64 %33, 16 call void @llvm.assume(i1 %cmp3.i.i.i) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit if.then.i.i31: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.exit - call void @_ZdlPv(ptr noundef %33) #54 + call void @_ZdlPv(ptr noundef %32) #54 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %if.then.i.i31, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp4) #52 %inc = add nuw i64 %i.043, 1 - %35 = load ptr, ptr %_M_finish.i, align 8, !tbaa !2577 - %36 = load ptr, ptr %sub_systems, align 8, !tbaa !2575 - %sub.ptr.lhs.cast.i26 = ptrtoint ptr %35 to i64 - %sub.ptr.rhs.cast.i27 = ptrtoint ptr %36 to i64 + %34 = load ptr, ptr %_M_finish.i, align 8, !tbaa !2577 + %35 = load ptr, ptr %sub_systems, align 8, !tbaa !2575 + %sub.ptr.lhs.cast.i26 = ptrtoint ptr %34 to i64 + %sub.ptr.rhs.cast.i27 = ptrtoint ptr %35 to i64 %sub.ptr.sub.i28 = sub i64 %sub.ptr.lhs.cast.i26, %sub.ptr.rhs.cast.i27 %sub.ptr.div.i29 = ashr exact i64 %sub.ptr.sub.i28, 3 %cmp = icmp ult i64 %inc, %sub.ptr.div.i29 br i1 %cmp, label %for.body, label %nrvo.skipdtor, !llvm.loop !2593 lpad6: ; preds = %invoke.cont9, %for.body - %37 = landingpad { ptr, i32 } + %36 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad12: ; preds = %invoke.cont11 - %38 = landingpad { ptr, i32 } + %37 = landingpad { ptr, i32 } cleanup - %39 = load ptr, ptr %ref.tmp4, align 8, !tbaa !12 - %cmp.i.i.i32 = icmp eq ptr %39, %10 + %38 = load ptr, ptr %ref.tmp4, align 8, !tbaa !12 + %cmp.i.i.i32 = icmp eq ptr %38, %9 br i1 %cmp.i.i.i32, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i34, label %if.then.i.i33 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i34: ; preds = %lpad12 - %40 = load i64, ptr %_M_string_length.i71.i, align 8, !tbaa !15 - %cmp3.i.i.i36 = icmp ult i64 %40, 16 + %39 = load i64, ptr %_M_string_length.i71.i, align 8, !tbaa !15 + %cmp3.i.i.i36 = icmp ult i64 %39, 16 call void @llvm.assume(i1 %cmp3.i.i.i36) br label %ehcleanup if.then.i.i33: ; preds = %lpad12 - call void @_ZdlPv(ptr noundef %39) #54 + call void @_ZdlPv(ptr noundef %38) #54 br label %ehcleanup ehcleanup: ; preds = %if.then.i.i33, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i34, %lpad6, %cleanup.action.i.i, %ehcleanup.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i - %.pn = phi { ptr, i32 } [ %37, %lpad6 ], [ %13, %ehcleanup.i.i ], [ %.pn13.i.i, %cleanup.action.i.i ], [ %13, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i ], [ %38, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i34 ], [ %38, %if.then.i.i33 ] + %.pn = phi { ptr, i32 } [ %36, %lpad6 ], [ %12, %ehcleanup.i.i ], [ %.pn13.i.i, %cleanup.action.i.i ], [ %12, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i ], [ %37, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i34 ], [ %37, %if.then.i.i33 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp4) #52 call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %agg.result) #52 resume { ptr, i32 } %.pn diff --git a/bench/duckdb/optimized/ub_duckdb_common_types_column.cpp.ll b/bench/duckdb/optimized/ub_duckdb_common_types_column.cpp.ll index 780123e0f92..6571ee7a70e 100644 --- a/bench/duckdb/optimized/ub_duckdb_common_types_column.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_common_types_column.cpp.ll @@ -21466,24 +21466,23 @@ for.body.lr.ph.i.i.i.i.i.split.us.i.i: ; preds = %for.body.lr.ph.i.i. %add.ptr.i.i.i.i = getelementptr inbounds %"class.std::shared_ptr.194", ptr %call5.i.i.i.i4.i.i.i19, i64 %sub.ptr.div.i %_M_end_of_storage.i.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 16 store ptr %add.ptr.i.i.i.i, ptr %_M_end_of_storage.i.i.i.i, align 8, !tbaa !726 - %2 = add nsw i64 %sub.ptr.div.i, -1 %xtraiter = and i64 %sub.ptr.div.i, 7 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.i.i.i.i.us.i.i.prol.loopexit, label %for.body.i.i.i.i.i.us.i.i.prol.preheader for.body.i.i.i.i.i.us.i.i.prol.preheader: ; preds = %for.body.lr.ph.i.i.i.i.i.split.us.i.i - %3 = shl nuw nsw i64 %xtraiter, 4 - tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %call5.i.i.i.i4.i.i.i19, i8 0, i64 %3, i1 false) - %4 = and i64 %sub.ptr.div.i, 576460752303423480 - %scevgep = getelementptr i8, ptr %call5.i.i.i.i4.i.i.i19, i64 %3 + %2 = shl nuw nsw i64 %xtraiter, 4 + tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %call5.i.i.i.i4.i.i.i19, i8 0, i64 %2, i1 false) + %3 = and i64 %sub.ptr.div.i, 576460752303423480 + %scevgep = getelementptr i8, ptr %call5.i.i.i.i4.i.i.i19, i64 %2 br label %for.body.i.i.i.i.i.us.i.i.prol.loopexit for.body.i.i.i.i.i.us.i.i.prol.loopexit: ; preds = %for.body.i.i.i.i.i.us.i.i.prol.preheader, %for.body.lr.ph.i.i.i.i.i.split.us.i.i %incdec.ptr.i.i.i.i.i.us.i.i.lcssa.unr = phi ptr [ undef, %for.body.lr.ph.i.i.i.i.i.split.us.i.i ], [ %scevgep, %for.body.i.i.i.i.i.us.i.i.prol.preheader ] %__cur.011.i.i.i.i.i.us.i.i.unr = phi ptr [ %call5.i.i.i.i4.i.i.i19, %for.body.lr.ph.i.i.i.i.i.split.us.i.i ], [ %scevgep, %for.body.i.i.i.i.i.us.i.i.prol.preheader ] - %__n.addr.010.i.i.i.i.i.us.i.i.unr = phi i64 [ %sub.ptr.div.i, %for.body.lr.ph.i.i.i.i.i.split.us.i.i ], [ %4, %for.body.i.i.i.i.i.us.i.i.prol.preheader ] - %5 = icmp ult i64 %2, 7 - br i1 %5, label %_ZNSt12__shared_ptrIN6duckdb10StringHeapELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit, label %for.body.i.i.i.i.i.us.i.i + %__n.addr.010.i.i.i.i.i.us.i.i.unr = phi i64 [ %sub.ptr.div.i, %for.body.lr.ph.i.i.i.i.i.split.us.i.i ], [ %3, %for.body.i.i.i.i.i.us.i.i.prol.preheader ] + %4 = icmp samesign ult i64 %sub.ptr.div.i, 8 + br i1 %4, label %_ZNSt12__shared_ptrIN6duckdb10StringHeapELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit, label %for.body.i.i.i.i.i.us.i.i for.body.i.i.i.i.i.us.i.i: ; preds = %for.body.i.i.i.i.i.us.i.i.prol.loopexit, %for.body.i.i.i.i.i.us.i.i %__cur.011.i.i.i.i.i.us.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.us.i.i.7, %for.body.i.i.i.i.i.us.i.i ], [ %__cur.011.i.i.i.i.i.us.i.i.unr, %for.body.i.i.i.i.i.us.i.i.prol.loopexit ] @@ -21501,7 +21500,7 @@ _ZNSt12__shared_ptrIN6duckdb10StringHeapELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit br label %for.body lpad: ; preds = %for.body.lr.ph.i.i.i.i.i.i.i, %if.then.i.i.i - %6 = landingpad { ptr, i32 } + %5 = landingpad { ptr, i32 } cleanup call void @_ZNSt12__shared_ptrIN6duckdb10StringHeapELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp) #26 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp) #26 @@ -21522,102 +21521,102 @@ invoke.cont9: ; preds = %invoke.cont7 invoke.cont11: ; preds = %invoke.cont9 %heap = getelementptr inbounds i8, ptr %call10, i64 120 - %7 = load ptr, ptr %heap, align 8, !tbaa !189 - store ptr %7, ptr %call12, align 8, !tbaa !189 + %6 = load ptr, ptr %heap, align 8, !tbaa !189 + store ptr %6, ptr %call12, align 8, !tbaa !189 %_M_refcount.i.i = getelementptr inbounds i8, ptr %call12, i64 8 %_M_refcount3.i.i = getelementptr inbounds i8, ptr %call10, i64 128 - %8 = load ptr, ptr %_M_refcount3.i.i, align 8, !tbaa !34 - %9 = load ptr, ptr %_M_refcount.i.i, align 8, !tbaa !34 - %cmp.not.i.i.i = icmp eq ptr %8, %9 + %7 = load ptr, ptr %_M_refcount3.i.i, align 8, !tbaa !34 + %8 = load ptr, ptr %_M_refcount.i.i, align 8, !tbaa !34 + %cmp.not.i.i.i = icmp eq ptr %7, %8 br i1 %cmp.not.i.i.i, label %_ZNSt10shared_ptrIN6duckdb10StringHeapEEaSERKS2_.exit, label %if.then.i.i.i27 if.then.i.i.i27: ; preds = %invoke.cont11 - %cmp3.not.i.i.i = icmp eq ptr %8, null + %cmp3.not.i.i.i = icmp eq ptr %7, null br i1 %cmp3.not.i.i.i, label %if.end.i.i.i28, label %if.then4.i.i.i if.then4.i.i.i: ; preds = %if.then.i.i.i27 - %_M_use_count.i.i.i.i = getelementptr inbounds i8, ptr %8, i64 8 - %10 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !22 - %tobool.i.not.i.i.i.i = icmp eq i8 %10, 0 + %_M_use_count.i.i.i.i = getelementptr inbounds i8, ptr %7, i64 8 + %9 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !22 + %tobool.i.not.i.i.i.i = icmp eq i8 %9, 0 br i1 %tobool.i.not.i.i.i.i, label %if.else.i.i.i.i.i, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then4.i.i.i - %11 = load i32, ptr %_M_use_count.i.i.i.i, align 4, !tbaa !42 - %add.i.i.i.i.i = add nsw i32 %11, 1 + %10 = load i32, ptr %_M_use_count.i.i.i.i, align 4, !tbaa !42 + %add.i.i.i.i.i = add nsw i32 %10, 1 store i32 %add.i.i.i.i.i, ptr %_M_use_count.i.i.i.i, align 4, !tbaa !42 br label %if.end.i.i.i28 if.else.i.i.i.i.i: ; preds = %if.then4.i.i.i - %12 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i, i32 1 acq_rel, align 4 + %11 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i, i32 1 acq_rel, align 4 %.pr.pre.i.i.i = load ptr, ptr %_M_refcount.i.i, align 8, !tbaa !34 br label %if.end.i.i.i28 if.end.i.i.i28: ; preds = %if.else.i.i.i.i.i, %if.then.i.i.i.i.i, %if.then.i.i.i27 - %13 = phi ptr [ %9, %if.then.i.i.i27 ], [ %9, %if.then.i.i.i.i.i ], [ %.pr.pre.i.i.i, %if.else.i.i.i.i.i ] - %cmp6.not.i.i.i = icmp eq ptr %13, null + %12 = phi ptr [ %8, %if.then.i.i.i27 ], [ %8, %if.then.i.i.i.i.i ], [ %.pr.pre.i.i.i, %if.else.i.i.i.i.i ] + %cmp6.not.i.i.i = icmp eq ptr %12, null br i1 %cmp6.not.i.i.i, label %if.end9.i.i.i, label %if.then7.i.i.i29 if.then7.i.i.i29: ; preds = %if.end.i.i.i28 - %_M_use_count.i16.i.i.i = getelementptr inbounds i8, ptr %13, i64 8 - %14 = load atomic i64, ptr %_M_use_count.i16.i.i.i acquire, align 8 - %cmp.i.i.i.i = icmp eq i64 %14, 4294967297 - %15 = trunc i64 %14 to i32 + %_M_use_count.i16.i.i.i = getelementptr inbounds i8, ptr %12, i64 8 + %13 = load atomic i64, ptr %_M_use_count.i16.i.i.i acquire, align 8 + %cmp.i.i.i.i = icmp eq i64 %13, 4294967297 + %14 = trunc i64 %13 to i32 br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i30, label %if.end.i.i.i.i if.then.i.i.i.i30: ; preds = %if.then7.i.i.i29 store i32 0, ptr %_M_use_count.i16.i.i.i, align 8, !tbaa !36 - %_M_weak_count.i.i.i.i = getelementptr inbounds i8, ptr %13, i64 12 + %_M_weak_count.i.i.i.i = getelementptr inbounds i8, ptr %12, i64 12 store i32 0, ptr %_M_weak_count.i.i.i.i, align 4, !tbaa !39 - %vtable.i.i.i.i = load ptr, ptr %13, align 8, !tbaa !40 + %vtable.i.i.i.i = load ptr, ptr %12, align 8, !tbaa !40 %vfn.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i, i64 16 - %16 = load ptr, ptr %vfn.i.i.i.i, align 8 - tail call void %16(ptr noundef nonnull align 8 dereferenceable(16) %13) #26 - %vtable3.i.i.i.i = load ptr, ptr %13, align 8, !tbaa !40 + %15 = load ptr, ptr %vfn.i.i.i.i, align 8 + tail call void %15(ptr noundef nonnull align 8 dereferenceable(16) %12) #26 + %vtable3.i.i.i.i = load ptr, ptr %12, align 8, !tbaa !40 %vfn4.i.i.i.i = getelementptr inbounds i8, ptr %vtable3.i.i.i.i, i64 24 - %17 = load ptr, ptr %vfn4.i.i.i.i, align 8 - tail call void %17(ptr noundef nonnull align 8 dereferenceable(16) %13) #26 + %16 = load ptr, ptr %vfn4.i.i.i.i, align 8 + tail call void %16(ptr noundef nonnull align 8 dereferenceable(16) %12) #26 br label %if.end9.i.i.i if.end.i.i.i.i: ; preds = %if.then7.i.i.i29 - %18 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !22 - %tobool.i.i.not.i.i.i.i = icmp eq i8 %18, 0 + %17 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !22 + %tobool.i.i.not.i.i.i.i = icmp eq i8 %17, 0 br i1 %tobool.i.i.not.i.i.i.i, label %if.else.i.i19.i.i.i, label %if.then.i.i17.i.i.i if.then.i.i17.i.i.i: ; preds = %if.end.i.i.i.i - %add.i.i18.i.i.i = add nsw i32 %15, -1 + %add.i.i18.i.i.i = add nsw i32 %14, -1 store i32 %add.i.i18.i.i.i, ptr %_M_use_count.i16.i.i.i, align 4, !tbaa !42 br label %invoke.cont.i.i.i.i if.else.i.i19.i.i.i: ; preds = %if.end.i.i.i.i - %19 = atomicrmw volatile add ptr %_M_use_count.i16.i.i.i, i32 -1 acq_rel, align 4 + %18 = atomicrmw volatile add ptr %_M_use_count.i16.i.i.i, i32 -1 acq_rel, align 4 br label %invoke.cont.i.i.i.i invoke.cont.i.i.i.i: ; preds = %if.else.i.i19.i.i.i, %if.then.i.i17.i.i.i - %retval.0.i.i.i.i.i = phi i32 [ %15, %if.then.i.i17.i.i.i ], [ %19, %if.else.i.i19.i.i.i ] + %retval.0.i.i.i.i.i = phi i32 [ %14, %if.then.i.i17.i.i.i ], [ %18, %if.else.i.i19.i.i.i ] %cmp6.i.i.i.i = icmp eq i32 %retval.0.i.i.i.i.i, 1 br i1 %cmp6.i.i.i.i, label %if.then7.i.i.i.i, label %if.end9.i.i.i, !prof !43 if.then7.i.i.i.i: ; preds = %invoke.cont.i.i.i.i - tail call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %13) #26 + tail call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %12) #26 br label %if.end9.i.i.i if.end9.i.i.i: ; preds = %if.then7.i.i.i.i, %invoke.cont.i.i.i.i, %if.then.i.i.i.i30, %if.end.i.i.i28 - store ptr %8, ptr %_M_refcount.i.i, align 8, !tbaa !34 + store ptr %7, ptr %_M_refcount.i.i, align 8, !tbaa !34 br label %_ZNSt10shared_ptrIN6duckdb10StringHeapEEaSERKS2_.exit _ZNSt10shared_ptrIN6duckdb10StringHeapEEaSERKS2_.exit: ; preds = %if.end9.i.i.i, %invoke.cont11 %inc = add nuw i64 %segment_idx.037, 1 - %20 = load ptr, ptr %_M_finish.i, align 8, !tbaa !130 - %21 = load ptr, ptr %segments, align 8, !tbaa !128 - %sub.ptr.lhs.cast.i23 = ptrtoint ptr %20 to i64 - %sub.ptr.rhs.cast.i24 = ptrtoint ptr %21 to i64 + %19 = load ptr, ptr %_M_finish.i, align 8, !tbaa !130 + %20 = load ptr, ptr %segments, align 8, !tbaa !128 + %sub.ptr.lhs.cast.i23 = ptrtoint ptr %19 to i64 + %sub.ptr.rhs.cast.i24 = ptrtoint ptr %20 to i64 %sub.ptr.sub.i25 = sub i64 %sub.ptr.lhs.cast.i23, %sub.ptr.rhs.cast.i24 %sub.ptr.div.i26 = ashr exact i64 %sub.ptr.sub.i25, 3 %cmp = icmp ult i64 %inc, %sub.ptr.div.i26 br i1 %cmp, label %for.body, label %nrvo.skipdtor, !llvm.loop !729 lpad6: ; preds = %invoke.cont9, %invoke.cont7, %for.body - %22 = landingpad { ptr, i32 } + %21 = landingpad { ptr, i32 } cleanup tail call void @_ZNSt6vectorISt10shared_ptrIN6duckdb10StringHeapEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %agg.result) #26 br label %eh.resume @@ -21626,7 +21625,7 @@ nrvo.skipdtor: ; preds = %_ZNSt10shared_ptrIN ret void eh.resume: ; preds = %lpad6, %lpad - %.pn = phi { ptr, i32 } [ %22, %lpad6 ], [ %6, %lpad ] + %.pn = phi { ptr, i32 } [ %21, %lpad6 ], [ %5, %lpad ] resume { ptr, i32 } %.pn } diff --git a/bench/duckdb/optimized/ub_duckdb_optimizer_join_order.cpp.ll b/bench/duckdb/optimized/ub_duckdb_optimizer_join_order.cpp.ll index 47da2212c49..f7ff6004358 100644 --- a/bench/duckdb/optimized/ub_duckdb_optimizer_join_order.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_optimizer_join_order.cpp.ll @@ -43271,59 +43271,58 @@ if.else: ; preds = %if.then13 br i1 %tobool.not1.i.i, label %_ZSt7advanceINSt8__detail14_Node_iteratorImLb1ELb0EEEmEvRT_T0_.exit, label %while.body.i.i149.preheader while.body.i.i149.preheader: ; preds = %if.else - %6 = add nsw i64 %sub.ptr.div.i, -1 %xtraiter = and i64 %sub.ptr.div.i, 7 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %while.body.i.i149.prol.loopexit, label %while.body.i.i149.prol.preheader while.body.i.i149.prol.preheader: ; preds = %while.body.i.i149.preheader - %7 = and i64 %sub.ptr.div.i, -8 + %6 = and i64 %sub.ptr.div.i, -8 br label %while.body.i.i149.prol while.body.i.i149.prol: ; preds = %while.body.i.i149.prol.preheader, %while.body.i.i149.prol - %8 = phi ptr [ %9, %while.body.i.i149.prol ], [ %__first.coerce, %while.body.i.i149.prol.preheader ] + %7 = phi ptr [ %8, %while.body.i.i149.prol ], [ %__first.coerce, %while.body.i.i149.prol.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %while.body.i.i149.prol ], [ 0, %while.body.i.i149.prol.preheader ] - %9 = load ptr, ptr %8, align 8, !tbaa !28 + %8 = load ptr, ptr %7, align 8, !tbaa !28 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter br i1 %prol.iter.cmp.not, label %while.body.i.i149.prol.loopexit, label %while.body.i.i149.prol, !llvm.loop !1027 while.body.i.i149.prol.loopexit: ; preds = %while.body.i.i149.prol, %while.body.i.i149.preheader - %.lcssa.unr = phi ptr [ undef, %while.body.i.i149.preheader ], [ %9, %while.body.i.i149.prol ] - %__n.addr.02.i.i.unr = phi i64 [ %sub.ptr.div.i, %while.body.i.i149.preheader ], [ %7, %while.body.i.i149.prol ] - %.unr = phi ptr [ %__first.coerce, %while.body.i.i149.preheader ], [ %9, %while.body.i.i149.prol ] - %10 = icmp ult i64 %6, 7 - br i1 %10, label %_ZSt7advanceINSt8__detail14_Node_iteratorImLb1ELb0EEEmEvRT_T0_.exit, label %while.body.i.i149 + %.lcssa.unr = phi ptr [ undef, %while.body.i.i149.preheader ], [ %8, %while.body.i.i149.prol ] + %__n.addr.02.i.i.unr = phi i64 [ %sub.ptr.div.i, %while.body.i.i149.preheader ], [ %6, %while.body.i.i149.prol ] + %.unr = phi ptr [ %__first.coerce, %while.body.i.i149.preheader ], [ %8, %while.body.i.i149.prol ] + %9 = icmp ult i64 %sub.ptr.div.i, 8 + br i1 %9, label %_ZSt7advanceINSt8__detail14_Node_iteratorImLb1ELb0EEEmEvRT_T0_.exit, label %while.body.i.i149 while.body.i.i149: ; preds = %while.body.i.i149.prol.loopexit, %while.body.i.i149 %__n.addr.02.i.i = phi i64 [ %dec.i.i.7, %while.body.i.i149 ], [ %__n.addr.02.i.i.unr, %while.body.i.i149.prol.loopexit ] - %11 = phi ptr [ %19, %while.body.i.i149 ], [ %.unr, %while.body.i.i149.prol.loopexit ] + %10 = phi ptr [ %18, %while.body.i.i149 ], [ %.unr, %while.body.i.i149.prol.loopexit ] + %11 = load ptr, ptr %10, align 8, !tbaa !28 %12 = load ptr, ptr %11, align 8, !tbaa !28 %13 = load ptr, ptr %12, align 8, !tbaa !28 %14 = load ptr, ptr %13, align 8, !tbaa !28 %15 = load ptr, ptr %14, align 8, !tbaa !28 %16 = load ptr, ptr %15, align 8, !tbaa !28 %17 = load ptr, ptr %16, align 8, !tbaa !28 - %18 = load ptr, ptr %17, align 8, !tbaa !28 %dec.i.i.7 = add nsw i64 %__n.addr.02.i.i, -8 - %19 = load ptr, ptr %18, align 8, !tbaa !28 + %18 = load ptr, ptr %17, align 8, !tbaa !28 %tobool.not.i.i.7 = icmp eq i64 %dec.i.i.7, 0 br i1 %tobool.not.i.i.7, label %_ZSt7advanceINSt8__detail14_Node_iteratorImLb1ELb0EEEmEvRT_T0_.exit, label %while.body.i.i149, !llvm.loop !1029 _ZSt7advanceINSt8__detail14_Node_iteratorImLb1ELb0EEEmEvRT_T0_.exit: ; preds = %while.body.i.i149, %while.body.i.i149.prol.loopexit, %if.else - %__mid.sroa.0.0 = phi ptr [ %__first.coerce, %if.else ], [ %.lcssa.unr, %while.body.i.i149.prol.loopexit ], [ %19, %while.body.i.i149 ] + %__mid.sroa.0.0 = phi ptr [ %__first.coerce, %if.else ], [ %.lcssa.unr, %while.body.i.i149.prol.loopexit ], [ %18, %while.body.i.i149 ] %cmp.i.not10.i.i.i.i.i.i.i.i = icmp eq ptr %__mid.sroa.0.0, %__last.coerce br i1 %cmp.i.not10.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aINSt8__detail14_Node_iteratorImLb1ELb0EEEPmmET0_T_S5_S4_RSaIT1_E.exit, label %for.body.i.i.i.i.i.i.i.i for.body.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceINSt8__detail14_Node_iteratorImLb1ELb0EEEmEvRT_T0_.exit, %for.body.i.i.i.i.i.i.i.i %__result.addr.012.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i ], [ %2, %_ZSt7advanceINSt8__detail14_Node_iteratorImLb1ELb0EEEmEvRT_T0_.exit ] - %__first.sroa.0.011.i.i.i.i.i.i.i.i = phi ptr [ %21, %for.body.i.i.i.i.i.i.i.i ], [ %__mid.sroa.0.0, %_ZSt7advanceINSt8__detail14_Node_iteratorImLb1ELb0EEEmEvRT_T0_.exit ] + %__first.sroa.0.011.i.i.i.i.i.i.i.i = phi ptr [ %20, %for.body.i.i.i.i.i.i.i.i ], [ %__mid.sroa.0.0, %_ZSt7advanceINSt8__detail14_Node_iteratorImLb1ELb0EEEmEvRT_T0_.exit ] %add.ptr.i.i.i.i.i.i.i.i.i150 = getelementptr inbounds i8, ptr %__first.sroa.0.011.i.i.i.i.i.i.i.i, i64 8 - %20 = load i64, ptr %add.ptr.i.i.i.i.i.i.i.i.i150, align 8, !tbaa !15 - store i64 %20, ptr %__result.addr.012.i.i.i.i.i.i.i.i, align 8, !tbaa !15 + %19 = load i64, ptr %add.ptr.i.i.i.i.i.i.i.i.i150, align 8, !tbaa !15 + store i64 %19, ptr %__result.addr.012.i.i.i.i.i.i.i.i, align 8, !tbaa !15 %incdec.ptr.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.012.i.i.i.i.i.i.i.i, i64 8 - %21 = load ptr, ptr %__first.sroa.0.011.i.i.i.i.i.i.i.i, align 8, !tbaa !28 - %cmp.i.not.i.i.i.i.i.i.i.i = icmp eq ptr %21, %__last.coerce + %20 = load ptr, ptr %__first.sroa.0.011.i.i.i.i.i.i.i.i, align 8, !tbaa !28 + %cmp.i.not.i.i.i.i.i.i.i.i = icmp eq ptr %20, %__last.coerce br i1 %cmp.i.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aINSt8__detail14_Node_iteratorImLb1ELb0EEEPmmET0_T_S5_S4_RSaIT1_E.exit, label %for.body.i.i.i.i.i.i.i.i, !llvm.loop !1026 _ZSt22__uninitialized_copy_aINSt8__detail14_Node_iteratorImLb1ELb0EEEPmmET0_T_S5_S4_RSaIT1_E.exit: ; preds = %for.body.i.i.i.i.i.i.i.i, %_ZSt7advanceINSt8__detail14_Node_iteratorImLb1ELb0EEEmEvRT_T0_.exit @@ -43338,26 +43337,26 @@ if.then.i.i.i.i.i.i.i.i.i155: ; preds = %_ZSt22__uninitializ br label %_ZSt22__uninitialized_move_aIPmS0_SaImEET0_T_S3_S2_RT1_.exit157 _ZSt22__uninitialized_move_aIPmS0_SaImEET0_T_S3_S2_RT1_.exit157: ; preds = %if.then.i.i.i.i.i.i.i.i.i155, %_ZSt22__uninitialized_copy_aINSt8__detail14_Node_iteratorImLb1ELb0EEEPmmET0_T_S5_S4_RSaIT1_E.exit - %22 = phi ptr [ %add.ptr58, %_ZSt22__uninitialized_copy_aINSt8__detail14_Node_iteratorImLb1ELb0EEEPmmET0_T_S5_S4_RSaIT1_E.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i.i155 ] - %add.ptr66 = getelementptr inbounds i8, ptr %22, i64 %sub.ptr.sub.i + %21 = phi ptr [ %add.ptr58, %_ZSt22__uninitialized_copy_aINSt8__detail14_Node_iteratorImLb1ELb0EEEPmmET0_T_S5_S4_RSaIT1_E.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i.i155 ] + %add.ptr66 = getelementptr inbounds i8, ptr %21, i64 %sub.ptr.sub.i store ptr %add.ptr66, ptr %_M_finish, align 8, !tbaa !14 %cmp.i.not10.i.i.i.i.i158 = icmp eq ptr %__mid.sroa.0.0, %__first.coerce br i1 %cmp.i.not10.i.i.i.i.i158, label %if.end121, label %for.body.i.i.i.i.i159 for.body.i.i.i.i.i159: ; preds = %_ZSt22__uninitialized_move_aIPmS0_SaImEET0_T_S3_S2_RT1_.exit157, %for.body.i.i.i.i.i159 %__result.addr.012.i.i.i.i.i160 = phi ptr [ %incdec.ptr.i.i.i.i.i163, %for.body.i.i.i.i.i159 ], [ %__position.coerce, %_ZSt22__uninitialized_move_aIPmS0_SaImEET0_T_S3_S2_RT1_.exit157 ] - %__first.sroa.0.011.i.i.i.i.i161 = phi ptr [ %24, %for.body.i.i.i.i.i159 ], [ %__first.coerce, %_ZSt22__uninitialized_move_aIPmS0_SaImEET0_T_S3_S2_RT1_.exit157 ] + %__first.sroa.0.011.i.i.i.i.i161 = phi ptr [ %23, %for.body.i.i.i.i.i159 ], [ %__first.coerce, %_ZSt22__uninitialized_move_aIPmS0_SaImEET0_T_S3_S2_RT1_.exit157 ] %add.ptr.i.i.i.i.i.i162 = getelementptr inbounds i8, ptr %__first.sroa.0.011.i.i.i.i.i161, i64 8 - %23 = load i64, ptr %add.ptr.i.i.i.i.i.i162, align 8, !tbaa !15 - store i64 %23, ptr %__result.addr.012.i.i.i.i.i160, align 8, !tbaa !15 + %22 = load i64, ptr %add.ptr.i.i.i.i.i.i162, align 8, !tbaa !15 + store i64 %22, ptr %__result.addr.012.i.i.i.i.i160, align 8, !tbaa !15 %incdec.ptr.i.i.i.i.i163 = getelementptr inbounds i8, ptr %__result.addr.012.i.i.i.i.i160, i64 8 - %24 = load ptr, ptr %__first.sroa.0.011.i.i.i.i.i161, align 8, !tbaa !28 - %cmp.i.not.i.i.i.i.i164 = icmp eq ptr %24, %__mid.sroa.0.0 + %23 = load ptr, ptr %__first.sroa.0.011.i.i.i.i.i161, align 8, !tbaa !28 + %cmp.i.not.i.i.i.i.i164 = icmp eq ptr %23, %__mid.sroa.0.0 br i1 %cmp.i.not.i.i.i.i.i164, label %if.end121, label %for.body.i.i.i.i.i159, !llvm.loop !1026 if.else78: ; preds = %_ZSt8distanceINSt8__detail14_Node_iteratorImLb1ELb0EEEENSt15iterator_traitsIT_E15difference_typeES4_S4_.exit - %25 = load ptr, ptr %this, align 8, !tbaa !3 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %25 to i64 + %24 = load ptr, ptr %this, align 8, !tbaa !3 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %24 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i.i %sub.ptr.div.i.i = ashr exact i64 %sub.ptr.sub.i.i, 3 %sub.i = sub nsw i64 1152921504606846975, %sub.ptr.div.i.i @@ -43372,8 +43371,8 @@ _ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit: ; preds = %if.else78 %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i, i64 %inc.i.i) %add.i = add nsw i64 %.sroa.speculated.i, %sub.ptr.div.i.i %cmp7.i = icmp ult i64 %add.i, %sub.ptr.div.i.i - %26 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 1152921504606846975) - %cond.i = select i1 %cmp7.i, i64 1152921504606846975, i64 %26 + %25 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 1152921504606846975) + %cond.i = select i1 %cmp7.i, i64 1152921504606846975, i64 %25 %cmp.not.i = icmp eq i64 %cond.i, 0 br i1 %cmp.not.i, label %_ZNSt12_Vector_baseImSaImEE11_M_allocateEm.exit, label %cond.true.i @@ -43386,11 +43385,11 @@ _ZNSt12_Vector_baseImSaImEE11_M_allocateEm.exit: ; preds = %cond.true.i, %_ZNKS %cond.i172 = phi ptr [ %call5.i.i.i, %cond.true.i ], [ null, %_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit ] %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i173 = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i175 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i173, %sub.ptr.rhs.cast.i.i - %tobool.not.i.i.i.i.i.i.i.i.i176 = icmp eq ptr %25, %__position.coerce + %tobool.not.i.i.i.i.i.i.i.i.i176 = icmp eq ptr %24, %__position.coerce br i1 %tobool.not.i.i.i.i.i.i.i.i.i176, label %for.body.i.i.i.i.i.i.i.i180.preheader, label %if.then.i.i.i.i.i.i.i.i.i177 if.then.i.i.i.i.i.i.i.i.i177: ; preds = %_ZNSt12_Vector_baseImSaImEE11_M_allocateEm.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %cond.i172, ptr align 8 %25, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i175, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %cond.i172, ptr align 8 %24, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i175, i1 false) br label %for.body.i.i.i.i.i.i.i.i180.preheader for.body.i.i.i.i.i.i.i.i180.preheader: ; preds = %if.then.i.i.i.i.i.i.i.i.i177, %_ZNSt12_Vector_baseImSaImEE11_M_allocateEm.exit @@ -43399,13 +43398,13 @@ for.body.i.i.i.i.i.i.i.i180.preheader: ; preds = %if.then.i.i.i.i.i.i for.body.i.i.i.i.i.i.i.i180: ; preds = %for.body.i.i.i.i.i.i.i.i180, %for.body.i.i.i.i.i.i.i.i180.preheader %__result.addr.012.i.i.i.i.i.i.i.i181 = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i184, %for.body.i.i.i.i.i.i.i.i180 ], [ %add.ptr.i.i.i.i.i.i.i.i.i178, %for.body.i.i.i.i.i.i.i.i180.preheader ] - %__first.sroa.0.011.i.i.i.i.i.i.i.i182 = phi ptr [ %28, %for.body.i.i.i.i.i.i.i.i180 ], [ %__first.coerce, %for.body.i.i.i.i.i.i.i.i180.preheader ] + %__first.sroa.0.011.i.i.i.i.i.i.i.i182 = phi ptr [ %27, %for.body.i.i.i.i.i.i.i.i180 ], [ %__first.coerce, %for.body.i.i.i.i.i.i.i.i180.preheader ] %add.ptr.i.i.i.i.i.i.i.i.i183 = getelementptr inbounds i8, ptr %__first.sroa.0.011.i.i.i.i.i.i.i.i182, i64 8 - %27 = load i64, ptr %add.ptr.i.i.i.i.i.i.i.i.i183, align 8, !tbaa !15 - store i64 %27, ptr %__result.addr.012.i.i.i.i.i.i.i.i181, align 8, !tbaa !15 + %26 = load i64, ptr %add.ptr.i.i.i.i.i.i.i.i.i183, align 8, !tbaa !15 + store i64 %26, ptr %__result.addr.012.i.i.i.i.i.i.i.i181, align 8, !tbaa !15 %incdec.ptr.i.i.i.i.i.i.i.i184 = getelementptr inbounds i8, ptr %__result.addr.012.i.i.i.i.i.i.i.i181, i64 8 - %28 = load ptr, ptr %__first.sroa.0.011.i.i.i.i.i.i.i.i182, align 8, !tbaa !28 - %cmp.i.not.i.i.i.i.i.i.i.i185 = icmp eq ptr %28, %__last.coerce + %27 = load ptr, ptr %__first.sroa.0.011.i.i.i.i.i.i.i.i182, align 8, !tbaa !28 + %cmp.i.not.i.i.i.i.i.i.i.i185 = icmp eq ptr %27, %__last.coerce br i1 %cmp.i.not.i.i.i.i.i.i.i.i185, label %invoke.cont95, label %for.body.i.i.i.i.i.i.i.i180, !llvm.loop !1026 invoke.cont95: ; preds = %for.body.i.i.i.i.i.i.i.i180 @@ -43419,11 +43418,11 @@ if.then.i.i.i.i.i.i.i.i.i192: ; preds = %invoke.cont95 invoke.cont99: ; preds = %if.then.i.i.i.i.i.i.i.i.i192, %invoke.cont95 %add.ptr.i.i.i.i.i.i.i.i.i193 = getelementptr inbounds i8, ptr %incdec.ptr.i.i.i.i.i.i.i.i184, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i190 - %tobool.not.i = icmp eq ptr %25, null + %tobool.not.i = icmp eq ptr %24, null br i1 %tobool.not.i, label %_ZNSt12_Vector_baseImSaImEE13_M_deallocateEPmm.exit, label %if.then.i195 if.then.i195: ; preds = %invoke.cont99 - tail call void @_ZdlPv(ptr noundef nonnull %25) #30 + tail call void @_ZdlPv(ptr noundef nonnull %24) #30 br label %_ZNSt12_Vector_baseImSaImEE13_M_deallocateEPmm.exit _ZNSt12_Vector_baseImSaImEE13_M_deallocateEPmm.exit: ; preds = %if.then.i195, %invoke.cont99 diff --git a/bench/duckdb/optimized/ub_duckdb_storage_compression.cpp.ll b/bench/duckdb/optimized/ub_duckdb_storage_compression.cpp.ll index ced80d44729..f82ac8acded 100644 --- a/bench/duckdb/optimized/ub_duckdb_storage_compression.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_storage_compression.cpp.ll @@ -4173,15 +4173,14 @@ invoke.cont22: ; preds = %invoke.cont20 cleanup: ; preds = %invoke.cont22 %add24 = add i64 %call5, %offset.055 %sub = sub i64 %count.addr.056, %call5 - %cmp.not = icmp eq i64 %sub, 0 - br i1 %cmp.not, label %cleanup25, label %while.body + br label %while.body lpad8: ; preds = %invoke.cont22, %invoke.cont20, %invoke.cont17, %invoke.cont12, %invoke.cont9, %if.end %5 = landingpad { ptr, i32 } cleanup br label %ehcleanup28 -cleanup25: ; preds = %cleanup, %invoke.cont4, %while.cond.preheader +cleanup25: ; preds = %invoke.cont4, %while.cond.preheader %_M_refcount.i.i.i = getelementptr inbounds i8, ptr %vdata, i64 64 %6 = load ptr, ptr %_M_refcount.i.i.i, align 8, !tbaa !110 %cmp.not.i.i.i.i = icmp eq ptr %6, null diff --git a/bench/entt/optimized/dispatcher.cpp.ll b/bench/entt/optimized/dispatcher.cpp.ll index 5577fd5adb4..d1e52d25bf3 100644 --- a/bench/entt/optimized/dispatcher.cpp.ll +++ b/bench/entt/optimized/dispatcher.cpp.ll @@ -1723,7 +1723,7 @@ if.then.i.i.i.i948: ; preds = %_ZNK4entt4sighIFvR1 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIP14one_more_eventSt6vectorIS2_SaIS2_EEEES7_ET0_T_S9_S8_.exit.i.i.i.i: ; preds = %if.then.i.i.i.i948 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %109 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.lhs.cast.i18.i.i.i - call void @llvm.memmove.p0.p0.i64(ptr align 1 %.pre.i.i949, ptr align 1 %add.ptr.i.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 1 %.pre.i.i949, ptr nonnull align 1 %add.ptr.i.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i, i1 false) %.pre.i.i.i.i = load ptr, ptr %_M_finish.i.i.i943, align 8, !tbaa !53 %.pre31.i.i.i.i = ptrtoint ptr %.pre.i.i.i.i to i64 br label %if.end.i.i.i.i @@ -4556,7 +4556,7 @@ if.then.i.i.i: ; preds = %for.body.lr.ph.i, % _ZSt4moveIN9__gnu_cxx17__normal_iteratorIP13another_eventSt6vectorIS2_SaIS2_EEEES7_ET0_T_S9_S8_.exit.i.i.i: ; preds = %if.then.i.i.i %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %5 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i, %sub.ptr.lhs.cast.i18.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %.pre.i, ptr align 1 %add.ptr.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %.pre.i, ptr nonnull align 1 %add.ptr.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre.i.i.i = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !53 %.pre31.i.i.i = ptrtoint ptr %.pre.i.i.i to i64 br label %if.end.i.i.i @@ -4706,7 +4706,7 @@ if.then.i.i.i: ; preds = %for.body.lr.ph.i, % _ZSt4moveIN9__gnu_cxx17__normal_iteratorIP8an_eventSt6vectorIS2_SaIS2_EEEES7_ET0_T_S9_S8_.exit.i.i.i: ; preds = %if.then.i.i.i %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %5 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i, %sub.ptr.lhs.cast.i18.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %.pre.i, ptr align 1 %add.ptr.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %.pre.i, ptr nonnull align 1 %add.ptr.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre.i.i.i = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !53 %.pre31.i.i.i = ptrtoint ptr %.pre.i.i.i to i64 br label %if.end.i.i.i @@ -9757,7 +9757,7 @@ if.then.i.i.i.i395: ; preds = %for.body.lr.ph.i.i, _ZSt4moveIN9__gnu_cxx17__normal_iteratorIP8an_eventSt6vectorIS2_SaIS2_EEEES7_ET0_T_S9_S8_.exit.i.i.i.i: ; preds = %if.then.i.i.i.i395 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %89 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.lhs.cast.i18.i.i.i - call void @llvm.memmove.p0.p0.i64(ptr align 1 %.pre.i.i, ptr align 1 %add.ptr.i.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 1 %.pre.i.i, ptr nonnull align 1 %add.ptr.i.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i, i1 false) %.pre.i.i.i.i = load ptr, ptr %_M_finish.i.i.i384, align 8, !tbaa !53 %.pre31.i.i.i.i = ptrtoint ptr %.pre.i.i.i.i to i64 br label %if.end.i.i.i.i @@ -10057,7 +10057,7 @@ if.then.i.i.i.i488: ; preds = %for.body.lr.ph.i.i4 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIP8an_eventSt6vectorIS2_SaIS2_EEEES7_ET0_T_S9_S8_.exit.i.i.i.i493: ; preds = %if.then.i.i.i.i488 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i494 = ptrtoint ptr %127 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i495 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i494, %sub.ptr.lhs.cast.i18.i.i.i491 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %.pre.i.i489, ptr align 1 %add.ptr.i.i.i490, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i495, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 1 %.pre.i.i489, ptr nonnull align 1 %add.ptr.i.i.i490, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i495, i1 false) %.pre.i.i.i.i496 = load ptr, ptr %_M_finish.i.i.i461, align 8, !tbaa !53 %.pre31.i.i.i.i497 = ptrtoint ptr %.pre.i.i.i.i496 to i64 br label %if.end.i.i.i.i498 @@ -10414,7 +10414,7 @@ if.then.i.i.i.i624: ; preds = %for.body.lr.ph.i.i6 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIP8an_eventSt6vectorIS2_SaIS2_EEEES7_ET0_T_S9_S8_.exit.i.i.i.i629: ; preds = %if.then.i.i.i.i624 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i630 = ptrtoint ptr %166 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i631 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i630, %sub.ptr.lhs.cast.i18.i.i.i627 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %.pre.i.i625, ptr align 1 %add.ptr.i.i.i626, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i631, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 1 %.pre.i.i625, ptr nonnull align 1 %add.ptr.i.i.i626, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i631, i1 false) %.pre.i.i.i.i632 = load ptr, ptr %_M_finish.i.i.i597, align 8, !tbaa !53 %.pre31.i.i.i.i633 = ptrtoint ptr %.pre.i.i.i.i632 to i64 br label %if.end.i.i.i.i634 @@ -12419,7 +12419,7 @@ for.cond.cleanup: ; preds = %for.body.lr.ph, %fo _ZSt4moveIN9__gnu_cxx17__normal_iteratorIP8an_eventSt6vectorIS2_SaIS2_EEEES7_ET0_T_S9_S8_.exit.i.i: ; preds = %for.cond.cleanup %sub.ptr.lhs.cast.i.i.i.i.i.i.i = ptrtoint ptr %5 to i64 %sub.ptr.sub.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i, %sub.ptr.lhs.cast.i18.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %.pre, ptr align 1 %add.ptr.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %.pre, ptr nonnull align 1 %add.ptr.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i, i1 false) %.pre.i.i = load ptr, ptr %_M_finish.i, align 8, !tbaa !53 %.pre31.i.i = ptrtoint ptr %.pre.i.i to i64 br label %if.end.i.i @@ -13349,7 +13349,7 @@ for.cond.cleanup: ; preds = %for.body.lr.ph, %fo _ZSt4moveIN9__gnu_cxx17__normal_iteratorIP14one_more_eventSt6vectorIS2_SaIS2_EEEES7_ET0_T_S9_S8_.exit.i.i: ; preds = %for.cond.cleanup %sub.ptr.lhs.cast.i.i.i.i.i.i.i = ptrtoint ptr %5 to i64 %sub.ptr.sub.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i, %sub.ptr.lhs.cast.i18.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %.pre, ptr align 1 %add.ptr.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %.pre, ptr nonnull align 1 %add.ptr.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i, i1 false) %.pre.i.i = load ptr, ptr %_M_finish.i, align 8, !tbaa !53 %.pre31.i.i = ptrtoint ptr %.pre.i.i to i64 br label %if.end.i.i @@ -14084,7 +14084,7 @@ for.cond.cleanup: ; preds = %for.body.lr.ph, %fo _ZSt4moveIN9__gnu_cxx17__normal_iteratorIP13another_eventSt6vectorIS2_SaIS2_EEEES7_ET0_T_S9_S8_.exit.i.i: ; preds = %for.cond.cleanup %sub.ptr.lhs.cast.i.i.i.i.i.i.i = ptrtoint ptr %5 to i64 %sub.ptr.sub.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i, %sub.ptr.lhs.cast.i18.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %.pre, ptr align 1 %add.ptr.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %.pre, ptr nonnull align 1 %add.ptr.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i, i1 false) %.pre.i.i = load ptr, ptr %_M_finish.i, align 8, !tbaa !53 %.pre31.i.i = ptrtoint ptr %.pre.i.i to i64 br label %if.end.i.i diff --git a/bench/entt/optimized/version.cpp.ll b/bench/entt/optimized/version.cpp.ll index 03a0d4ca713..5ad554ada11 100644 --- a/bench/entt/optimized/version.cpp.ll +++ b/bench/entt/optimized/version.cpp.ll @@ -28707,13 +28707,12 @@ _ZNSt12_Vector_baseISt4pairIPKciESaIS3_EEC2EmRKS4_.exit.i.i: ; preds = %_ZNSt6ve %add.ptr.i.i.i.i = getelementptr inbounds %"struct.std::pair.166", ptr %call5.i.i.i.i4.i.i19.i, i64 %sub.ptr.div.i.i %_M_end_of_storage.i.i.i.i = getelementptr inbounds i8, ptr %__executor19, i64 88 store ptr %add.ptr.i.i.i.i, ptr %_M_end_of_storage.i.i.i.i, align 8, !tbaa !589 - %17 = add nsw i64 %sub.ptr.div.i.i, -1 %xtraiter = and i64 %sub.ptr.div.i.i, 7 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.inc.i.i.i.i.i.i.prol.loopexit, label %for.inc.i.i.i.i.i.i.prol.preheader for.inc.i.i.i.i.i.i.prol.preheader: ; preds = %_ZNSt12_Vector_baseISt4pairIPKciESaIS3_EEC2EmRKS4_.exit.i.i - %18 = and i64 %sub.ptr.div.i.i, 576460752303423480 + %17 = and i64 %sub.ptr.div.i.i, 576460752303423480 br label %for.inc.i.i.i.i.i.i.prol for.inc.i.i.i.i.i.i.prol: ; preds = %for.inc.i.i.i.i.i.i.prol.preheader, %for.inc.i.i.i.i.i.i.prol @@ -28730,9 +28729,9 @@ for.inc.i.i.i.i.i.i.prol: ; preds = %for.inc.i.i.i.i.i.i for.inc.i.i.i.i.i.i.prol.loopexit: ; preds = %for.inc.i.i.i.i.i.i.prol, %_ZNSt12_Vector_baseISt4pairIPKciESaIS3_EEC2EmRKS4_.exit.i.i %incdec.ptr.i.i.i.i.i.i134.lcssa.unr = phi ptr [ undef, %_ZNSt12_Vector_baseISt4pairIPKciESaIS3_EEC2EmRKS4_.exit.i.i ], [ %incdec.ptr.i.i.i.i.i.i134.prol, %for.inc.i.i.i.i.i.i.prol ] %__cur.013.i.i.i.i.i.i.unr = phi ptr [ %call5.i.i.i.i4.i.i19.i, %_ZNSt12_Vector_baseISt4pairIPKciESaIS3_EEC2EmRKS4_.exit.i.i ], [ %incdec.ptr.i.i.i.i.i.i134.prol, %for.inc.i.i.i.i.i.i.prol ] - %__n.addr.012.i.i.i.i.i.i.unr = phi i64 [ %sub.ptr.div.i.i, %_ZNSt12_Vector_baseISt4pairIPKciESaIS3_EEC2EmRKS4_.exit.i.i ], [ %18, %for.inc.i.i.i.i.i.i.prol ] - %19 = icmp ult i64 %17, 7 - br i1 %19, label %invoke.cont.i, label %for.inc.i.i.i.i.i.i + %__n.addr.012.i.i.i.i.i.i.unr = phi i64 [ %sub.ptr.div.i.i, %_ZNSt12_Vector_baseISt4pairIPKciESaIS3_EEC2EmRKS4_.exit.i.i ], [ %17, %for.inc.i.i.i.i.i.i.prol ] + %18 = icmp ult i64 %sub.ptr.div.i.i, 8 + br i1 %18, label %invoke.cont.i, label %for.inc.i.i.i.i.i.i for.inc.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.prol.loopexit, %for.inc.i.i.i.i.i.i %__cur.013.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i134.7, %for.inc.i.i.i.i.i.i ], [ %__cur.013.i.i.i.i.i.i.unr, %for.inc.i.i.i.i.i.i.prol.loopexit ] @@ -28779,8 +28778,8 @@ invoke.cont.i: ; preds = %for.inc.i.i.i.i.i.i store ptr %__cur.0.lcssa.i.i.i.i.i.i, ptr %_M_finish.i.i9.i.i, align 8, !tbaa !596 %_M_states.i136 = getelementptr inbounds i8, ptr %__executor19, i64 96 %_M_start_state.i.i = getelementptr inbounds i8, ptr %.pre, i64 32 - %20 = load i64, ptr %_M_start_state.i.i, align 8, !tbaa !86 - store i64 %20, ptr %_M_states.i136, align 8, !tbaa !597 + %19 = load i64, ptr %_M_start_state.i.i, align 8, !tbaa !86 + store i64 %19, ptr %_M_states.i136, align 8, !tbaa !597 %_M_flags.i137 = getelementptr inbounds i8, ptr %__executor19, i64 112 %and.i.i138 = and i32 %__flags, 128 %tobool.not.i139 = icmp eq i32 %and.i.i138, 0 @@ -28790,7 +28789,7 @@ invoke.cont.i: ; preds = %for.inc.i.i.i.i.i.i br i1 %__match_mode, label %if.then21, label %if.else26 common.resume: ; preds = %lpad22, %lpad - %common.resume.op = phi { ptr, i32 } [ %lpad.phi, %lpad ], [ %23, %lpad22 ] + %common.resume.op = phi { ptr, i32 } [ %lpad.phi, %lpad ], [ %22, %lpad22 ] resume { ptr, i32 } %common.resume.op if.then21: ; preds = %invoke.cont.i @@ -28804,17 +28803,17 @@ if.then21: ; preds = %invoke.cont.i to label %call2.i.i.i.noexc unwind label %lpad22 call2.i.i.i.noexc: ; preds = %if.then21 - %21 = load i64, ptr %_M_states.i136, align 8, !tbaa !600 - invoke void @_ZNSt8__detail9_ExecutorIPKcSaINSt7__cxx119sub_matchIS2_EEENS3_12regex_traitsIcEELb1EE6_M_dfsENS9_11_Match_modeEl(ptr noundef nonnull align 8 dereferenceable(117) %__executor19, i8 noundef zeroext 0, i64 noundef %21) + %20 = load i64, ptr %_M_states.i136, align 8, !tbaa !600 + invoke void @_ZNSt8__detail9_ExecutorIPKcSaINSt7__cxx119sub_matchIS2_EEENS3_12regex_traitsIcEELb1EE6_M_dfsENS9_11_Match_modeEl(ptr noundef nonnull align 8 dereferenceable(117) %__executor19, i8 noundef zeroext 0, i64 noundef %20) to label %_ZNSt8__detail9_ExecutorIPKcSaINSt7__cxx119sub_matchIS2_EEENS3_12regex_traitsIcEELb1EE8_M_matchEv.exit unwind label %lpad22 _ZNSt8__detail9_ExecutorIPKcSaINSt7__cxx119sub_matchIS2_EEENS3_12regex_traitsIcEELb1EE8_M_matchEv.exit: ; preds = %call2.i.i.i.noexc - %22 = load i8, ptr %_M_has_sol.i.i.i, align 4, !tbaa !599, !range !26, !noundef !27 - %tobool.i.i.i = icmp ne i8 %22, 0 + %21 = load i8, ptr %_M_has_sol.i.i.i, align 4, !tbaa !599, !range !26, !noundef !27 + %tobool.i.i.i = icmp ne i8 %21, 0 br label %if.end30 lpad22: ; preds = %if.else26, %call2.i.i.i.noexc, %if.then21 - %23 = landingpad { ptr, i32 } + %22 = landingpad { ptr, i32 } cleanup call void @_ZNSt8__detail9_ExecutorIPKcSaINSt7__cxx119sub_matchIS2_EEENS3_12regex_traitsIcEELb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(117) %__executor19) #25 call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %__executor19) #25 @@ -28826,21 +28825,21 @@ if.else26: ; preds = %invoke.cont.i if.end30: ; preds = %if.else26, %_ZNSt8__detail9_ExecutorIPKcSaINSt7__cxx119sub_matchIS2_EEENS3_12regex_traitsIcEELb1EE8_M_matchEv.exit %__ret.1.in = phi i1 [ %tobool.i.i.i, %_ZNSt8__detail9_ExecutorIPKcSaINSt7__cxx119sub_matchIS2_EEENS3_12regex_traitsIcEELb1EE8_M_matchEv.exit ], [ %call28, %if.else26 ] - %24 = load ptr, ptr %_M_rep_count.i130, align 8, !tbaa !584 - %tobool.not.i.i.i.i145 = icmp eq ptr %24, null + %23 = load ptr, ptr %_M_rep_count.i130, align 8, !tbaa !584 + %tobool.not.i.i.i.i145 = icmp eq ptr %23, null br i1 %tobool.not.i.i.i.i145, label %_ZNSt6vectorISt4pairIPKciESaIS3_EED2Ev.exit.i147, label %if.then.i.i.i.i146 if.then.i.i.i.i146: ; preds = %if.end30 - call void @_ZdlPv(ptr noundef nonnull %24) #26 + call void @_ZdlPv(ptr noundef nonnull %23) #26 br label %_ZNSt6vectorISt4pairIPKciESaIS3_EED2Ev.exit.i147 _ZNSt6vectorISt4pairIPKciESaIS3_EED2Ev.exit.i147: ; preds = %if.then.i.i.i.i146, %if.end30 - %25 = load ptr, ptr %__executor19, align 8, !tbaa !33 - %tobool.not.i.i.i2.i148 = icmp eq ptr %25, null + %24 = load ptr, ptr %__executor19, align 8, !tbaa !33 + %tobool.not.i.i.i2.i148 = icmp eq ptr %24, null br i1 %tobool.not.i.i.i2.i148, label %if.end31, label %if.then.i.i.i3.i149 if.then.i.i.i3.i149: ; preds = %_ZNSt6vectorISt4pairIPKciESaIS3_EED2Ev.exit.i147 - call void @_ZdlPv(ptr noundef nonnull %25) #26 + call void @_ZdlPv(ptr noundef nonnull %24) #26 br label %if.end31 if.end31: ; preds = %if.then.i.i.i3.i149, %_ZNSt6vectorISt4pairIPKciESaIS3_EED2Ev.exit.i147 @@ -28848,26 +28847,26 @@ if.end31: ; preds = %if.then.i.i.i3.i149 br i1 %__ret.1.in, label %if.then33, label %if.else73 if.then33: ; preds = %if.end31, %_ZNSt8__detail9_ExecutorIPKcSaINSt7__cxx119sub_matchIS2_EEENS3_12regex_traitsIcEELb0EED2Ev.exit - %26 = load ptr, ptr %__m, align 8, !tbaa !28 + %25 = load ptr, ptr %__m, align 8, !tbaa !28 %_M_finish.i = getelementptr inbounds i8, ptr %__m, i64 8 - %27 = load ptr, ptr %_M_finish.i, align 8, !tbaa !28 - %cmp.i.not167 = icmp eq ptr %26, %27 + %26 = load ptr, ptr %_M_finish.i, align 8, !tbaa !28 + %cmp.i.not167 = icmp eq ptr %25, %26 br i1 %cmp.i.not167, label %for.cond.cleanup, label %for.body for.cond.cleanup: ; preds = %if.end41, %if.then33 - %sub.ptr.lhs.cast.i.i152 = ptrtoint ptr %27 to i64 - %sub.ptr.rhs.cast.i.i153 = ptrtoint ptr %26 to i64 + %sub.ptr.lhs.cast.i.i152 = ptrtoint ptr %26 to i64 + %sub.ptr.rhs.cast.i.i153 = ptrtoint ptr %25 to i64 %sub.ptr.sub.i.i154 = sub i64 %sub.ptr.lhs.cast.i.i152, %sub.ptr.rhs.cast.i.i153 - %28 = getelementptr i8, ptr %26, i64 %sub.ptr.sub.i.i154 - %add.ptr.i.i = getelementptr i8, ptr %28, i64 -48 - %add.ptr.i.i159 = getelementptr i8, ptr %28, i64 -24 + %27 = getelementptr i8, ptr %25, i64 %sub.ptr.sub.i.i154 + %add.ptr.i.i = getelementptr i8, ptr %27, i64 -48 + %add.ptr.i.i159 = getelementptr i8, ptr %27, i64 -24 br i1 %__match_mode, label %if.then46, label %if.else53 for.body: ; preds = %if.then33, %if.end41 - %__begin0.sroa.0.0168 = phi ptr [ %incdec.ptr.i160, %if.end41 ], [ %26, %if.then33 ] + %__begin0.sroa.0.0168 = phi ptr [ %incdec.ptr.i160, %if.end41 ], [ %25, %if.then33 ] %matched = getelementptr inbounds i8, ptr %__begin0.sroa.0.0168, i64 16 - %29 = load i8, ptr %matched, align 8, !tbaa !601, !range !26, !noundef !27 - %tobool39.not = icmp eq i8 %29, 0 + %28 = load i8, ptr %matched, align 8, !tbaa !601, !range !26, !noundef !27 + %tobool39.not = icmp eq i8 %28, 0 br i1 %tobool39.not, label %if.then40, label %if.end41 if.then40: ; preds = %for.body @@ -28878,46 +28877,46 @@ if.then40: ; preds = %for.body if.end41: ; preds = %if.then40, %for.body %incdec.ptr.i160 = getelementptr inbounds i8, ptr %__begin0.sroa.0.0168, i64 24 - %cmp.i.not = icmp eq ptr %incdec.ptr.i160, %27 + %cmp.i.not = icmp eq ptr %incdec.ptr.i160, %26 br i1 %cmp.i.not, label %for.cond.cleanup, label %for.body if.then46: ; preds = %for.cond.cleanup - %matched47 = getelementptr i8, ptr %28, i64 -32 + %matched47 = getelementptr i8, ptr %27, i64 -32 store i8 0, ptr %matched47, align 8, !tbaa !601 store ptr %__s, ptr %add.ptr.i.i, align 8, !tbaa !605 - %second49 = getelementptr i8, ptr %28, i64 -40 + %second49 = getelementptr i8, ptr %27, i64 -40 store ptr %__s, ptr %second49, align 8, !tbaa !604 - %matched50 = getelementptr i8, ptr %28, i64 -8 + %matched50 = getelementptr i8, ptr %27, i64 -8 store i8 0, ptr %matched50, align 8, !tbaa !601 store ptr %__e, ptr %add.ptr.i.i159, align 8, !tbaa !605 - %second52 = getelementptr i8, ptr %28, i64 -16 + %second52 = getelementptr i8, ptr %27, i64 -16 store ptr %__e, ptr %second52, align 8, !tbaa !604 br label %return if.else53: ; preds = %for.cond.cleanup store ptr %__s, ptr %add.ptr.i.i, align 8, !tbaa !605 - %30 = load ptr, ptr %26, align 8, !tbaa !605 - %second57 = getelementptr i8, ptr %28, i64 -40 - store ptr %30, ptr %second57, align 8, !tbaa !604 - %cmp60 = icmp ne ptr %30, %__s - %matched61 = getelementptr i8, ptr %28, i64 -32 + %29 = load ptr, ptr %25, align 8, !tbaa !605 + %second57 = getelementptr i8, ptr %27, i64 -40 + store ptr %29, ptr %second57, align 8, !tbaa !604 + %cmp60 = icmp ne ptr %29, %__s + %matched61 = getelementptr i8, ptr %27, i64 -32 %frombool62 = zext i1 %cmp60 to i8 store i8 %frombool62, ptr %matched61, align 8, !tbaa !601 - %second64 = getelementptr inbounds i8, ptr %26, i64 8 - %31 = load ptr, ptr %second64, align 8, !tbaa !604 - store ptr %31, ptr %add.ptr.i.i159, align 8, !tbaa !605 - %second66 = getelementptr i8, ptr %28, i64 -16 + %second64 = getelementptr inbounds i8, ptr %25, i64 8 + %30 = load ptr, ptr %second64, align 8, !tbaa !604 + store ptr %30, ptr %add.ptr.i.i159, align 8, !tbaa !605 + %second66 = getelementptr i8, ptr %27, i64 -16 store ptr %__e, ptr %second66, align 8, !tbaa !604 - %cmp69 = icmp ne ptr %31, %__e - %matched70 = getelementptr i8, ptr %28, i64 -8 + %cmp69 = icmp ne ptr %30, %__e + %matched70 = getelementptr i8, ptr %27, i64 -8 %frombool71 = zext i1 %cmp69 to i8 store i8 %frombool71, ptr %matched70, align 8, !tbaa !601 br label %return if.else73: ; preds = %if.end31, %_ZNSt8__detail9_ExecutorIPKcSaINSt7__cxx119sub_matchIS2_EEENS3_12regex_traitsIcEELb0EED2Ev.exit call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %__sm.i) #25 - %32 = getelementptr inbounds i8, ptr %__sm.i, i64 16 - store i8 0, ptr %32, align 8 + %31 = getelementptr inbounds i8, ptr %__sm.i, i64 16 + store i8 0, ptr %31, align 8 %second.i = getelementptr inbounds i8, ptr %__sm.i, i64 8 store ptr %__e, ptr %second.i, align 8, !tbaa !604 store ptr %__e, ptr %__sm.i, align 8, !tbaa !605 @@ -28980,13 +28979,12 @@ call5.i.i.i.i4.i.i.noexc: ; preds = %_ZNSt12_Vector_base %add.ptr.i.i.i = getelementptr inbounds %"struct.std::pair.166", ptr %call5.i.i.i.i4.i.i26, i64 %sub.ptr.div.i %_M_end_of_storage.i.i.i = getelementptr inbounds i8, ptr %this, i64 88 store ptr %add.ptr.i.i.i, ptr %_M_end_of_storage.i.i.i, align 8, !tbaa !589 - %3 = add nsw i64 %sub.ptr.div.i, -1 %xtraiter = and i64 %sub.ptr.div.i, 7 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.inc.i.i.i.i.i.prol.loopexit, label %for.inc.i.i.i.i.i.prol.preheader for.inc.i.i.i.i.i.prol.preheader: ; preds = %call5.i.i.i.i4.i.i.noexc - %4 = and i64 %sub.ptr.div.i, 576460752303423480 + %3 = and i64 %sub.ptr.div.i, 576460752303423480 br label %for.inc.i.i.i.i.i.prol for.inc.i.i.i.i.i.prol: ; preds = %for.inc.i.i.i.i.i.prol.preheader, %for.inc.i.i.i.i.i.prol @@ -29003,9 +29001,9 @@ for.inc.i.i.i.i.i.prol: ; preds = %for.inc.i.i.i.i.i.p for.inc.i.i.i.i.i.prol.loopexit: ; preds = %for.inc.i.i.i.i.i.prol, %call5.i.i.i.i4.i.i.noexc %incdec.ptr.i.i.i.i.i.lcssa.unr = phi ptr [ undef, %call5.i.i.i.i4.i.i.noexc ], [ %incdec.ptr.i.i.i.i.i.prol, %for.inc.i.i.i.i.i.prol ] %__cur.013.i.i.i.i.i.unr = phi ptr [ %call5.i.i.i.i4.i.i26, %call5.i.i.i.i4.i.i.noexc ], [ %incdec.ptr.i.i.i.i.i.prol, %for.inc.i.i.i.i.i.prol ] - %__n.addr.012.i.i.i.i.i.unr = phi i64 [ %sub.ptr.div.i, %call5.i.i.i.i4.i.i.noexc ], [ %4, %for.inc.i.i.i.i.i.prol ] - %5 = icmp ult i64 %3, 7 - br i1 %5, label %invoke.cont, label %for.inc.i.i.i.i.i + %__n.addr.012.i.i.i.i.i.unr = phi i64 [ %sub.ptr.div.i, %call5.i.i.i.i4.i.i.noexc ], [ %3, %for.inc.i.i.i.i.i.prol ] + %4 = icmp ult i64 %sub.ptr.div.i, 8 + br i1 %4, label %invoke.cont, label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.prol.loopexit, %for.inc.i.i.i.i.i %__cur.013.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.7, %for.inc.i.i.i.i.i ], [ %__cur.013.i.i.i.i.i.unr, %for.inc.i.i.i.i.i.prol.loopexit ] @@ -29052,11 +29050,11 @@ invoke.cont: ; preds = %for.inc.i.i.i.i.i, store ptr %__cur.0.lcssa.i.i.i.i.i, ptr %_M_finish.i.i9.i, align 8, !tbaa !596 %_M_states = getelementptr inbounds i8, ptr %this, i64 96 %_M_start_state.i = getelementptr inbounds i8, ptr %0, i64 32 - %6 = load i64, ptr %_M_start_state.i, align 8, !tbaa !86 - %7 = load ptr, ptr %_M_finish.i, align 8, !tbaa !140 - %8 = load ptr, ptr %add.ptr, align 8, !tbaa !87 - %sub.ptr.lhs.cast.i28 = ptrtoint ptr %7 to i64 - %sub.ptr.rhs.cast.i29 = ptrtoint ptr %8 to i64 + %5 = load i64, ptr %_M_start_state.i, align 8, !tbaa !86 + %6 = load ptr, ptr %_M_finish.i, align 8, !tbaa !140 + %7 = load ptr, ptr %add.ptr, align 8, !tbaa !87 + %sub.ptr.lhs.cast.i28 = ptrtoint ptr %6 to i64 + %sub.ptr.rhs.cast.i29 = ptrtoint ptr %7 to i64 %sub.ptr.sub.i30 = sub i64 %sub.ptr.lhs.cast.i28, %sub.ptr.rhs.cast.i29 %sub.ptr.div.i31 = sdiv exact i64 %sub.ptr.sub.i30, 48 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %_M_states, i8 0, i64 24, i1 false) @@ -29064,11 +29062,11 @@ invoke.cont: ; preds = %for.inc.i.i.i.i.i, to label %invoke.cont10 unwind label %lpad.i lpad.i: ; preds = %invoke.cont - %9 = landingpad { ptr, i32 } + %8 = landingpad { ptr, i32 } cleanup tail call void @_ZNSt6vectorISt4pairIlS_INSt7__cxx119sub_matchIPKcEESaIS5_EEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_states) #25 - %10 = load ptr, ptr %_M_rep_count, align 8, !tbaa !584 - %tobool.not.i.i.i = icmp eq ptr %10, null + %9 = load ptr, ptr %_M_rep_count, align 8, !tbaa !584 + %tobool.not.i.i.i = icmp eq ptr %9, null br i1 %tobool.not.i.i.i, label %ehcleanup21, label %if.then.i.i.i invoke.cont10: ; preds = %invoke.cont @@ -29076,7 +29074,7 @@ invoke.cont10: ; preds = %invoke.cont tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %call.i, i8 0, i64 %sub.ptr.div.i31, i1 false) store ptr %call.i, ptr %_M_visited_states.i, align 8, !tbaa !580 %_M_start.i = getelementptr inbounds i8, ptr %this, i64 128 - store i64 %6, ptr %_M_start.i, align 8, !tbaa !607 + store i64 %5, ptr %_M_start.i, align 8, !tbaa !607 %and.i = and i32 %__flags, 128 %tobool.not = icmp eq i32 %and.i, 0 %and.i.i = and i32 %__flags, -6 @@ -29086,22 +29084,22 @@ invoke.cont10: ; preds = %invoke.cont ret void lpad: ; preds = %_ZNSt12_Vector_baseISt4pairIPKciESaIS3_EEC2EmRKS4_.exit.i, %if.then.i.i - %11 = landingpad { ptr, i32 } + %10 = landingpad { ptr, i32 } cleanup br label %ehcleanup21 if.then.i.i.i: ; preds = %lpad.i - tail call void @_ZdlPv(ptr noundef nonnull %10) #26 + tail call void @_ZdlPv(ptr noundef nonnull %9) #26 br label %ehcleanup21 ehcleanup21: ; preds = %if.then.i.i.i, %lpad, %lpad.i - %.pn = phi { ptr, i32 } [ %11, %lpad ], [ %9, %lpad.i ], [ %9, %if.then.i.i.i ] - %12 = load ptr, ptr %this, align 8, !tbaa !33 - %tobool.not.i.i.i32 = icmp eq ptr %12, null + %.pn = phi { ptr, i32 } [ %10, %lpad ], [ %8, %lpad.i ], [ %8, %if.then.i.i.i ] + %11 = load ptr, ptr %this, align 8, !tbaa !33 + %tobool.not.i.i.i32 = icmp eq ptr %11, null br i1 %tobool.not.i.i.i32, label %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EED2Ev.exit, label %if.then.i.i.i33 if.then.i.i.i33: ; preds = %ehcleanup21 - tail call void @_ZdlPv(ptr noundef nonnull %12) #26 + tail call void @_ZdlPv(ptr noundef nonnull %11) #26 br label %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EED2Ev.exit _ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EED2Ev.exit: ; preds = %if.then.i.i.i33, %ehcleanup21 @@ -32125,13 +32123,12 @@ call5.i.i.i.i4.i.i.noexc.i: ; preds = %_ZNSt12_Vector_base %add.ptr.i.i.i.i = getelementptr inbounds %"struct.std::pair.166", ptr %call5.i.i.i.i4.i.i19.i, i64 %sub.ptr.div.i.i31 %_M_end_of_storage.i.i.i.i = getelementptr inbounds i8, ptr %__sub, i64 88 store ptr %add.ptr.i.i.i.i, ptr %_M_end_of_storage.i.i.i.i, align 8, !tbaa !589 - %9 = add nsw i64 %sub.ptr.div.i.i31, -1 %xtraiter = and i64 %sub.ptr.div.i.i31, 7 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.inc.i.i.i.i.i.i.prol.loopexit, label %for.inc.i.i.i.i.i.i.prol.preheader for.inc.i.i.i.i.i.i.prol.preheader: ; preds = %call5.i.i.i.i4.i.i.noexc.i - %10 = and i64 %sub.ptr.div.i.i31, 576460752303423480 + %9 = and i64 %sub.ptr.div.i.i31, 576460752303423480 br label %for.inc.i.i.i.i.i.i.prol for.inc.i.i.i.i.i.i.prol: ; preds = %for.inc.i.i.i.i.i.i.prol.preheader, %for.inc.i.i.i.i.i.i.prol @@ -32148,9 +32145,9 @@ for.inc.i.i.i.i.i.i.prol: ; preds = %for.inc.i.i.i.i.i.i for.inc.i.i.i.i.i.i.prol.loopexit: ; preds = %for.inc.i.i.i.i.i.i.prol, %call5.i.i.i.i4.i.i.noexc.i %incdec.ptr.i.i.i.i.i.i32.lcssa.unr = phi ptr [ undef, %call5.i.i.i.i4.i.i.noexc.i ], [ %incdec.ptr.i.i.i.i.i.i32.prol, %for.inc.i.i.i.i.i.i.prol ] %__cur.013.i.i.i.i.i.i.unr = phi ptr [ %call5.i.i.i.i4.i.i19.i, %call5.i.i.i.i4.i.i.noexc.i ], [ %incdec.ptr.i.i.i.i.i.i32.prol, %for.inc.i.i.i.i.i.i.prol ] - %__n.addr.012.i.i.i.i.i.i.unr = phi i64 [ %sub.ptr.div.i.i31, %call5.i.i.i.i4.i.i.noexc.i ], [ %10, %for.inc.i.i.i.i.i.i.prol ] - %11 = icmp ult i64 %9, 7 - br i1 %11, label %invoke.cont.i33, label %for.inc.i.i.i.i.i.i + %__n.addr.012.i.i.i.i.i.i.unr = phi i64 [ %sub.ptr.div.i.i31, %call5.i.i.i.i4.i.i.noexc.i ], [ %9, %for.inc.i.i.i.i.i.i.prol ] + %10 = icmp ult i64 %sub.ptr.div.i.i31, 8 + br i1 %10, label %invoke.cont.i33, label %for.inc.i.i.i.i.i.i for.inc.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.prol.loopexit, %for.inc.i.i.i.i.i.i %__cur.013.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i32.7, %for.inc.i.i.i.i.i.i ], [ %__cur.013.i.i.i.i.i.i.unr, %for.inc.i.i.i.i.i.i.prol.loopexit ] @@ -32213,75 +32210,75 @@ invoke.cont.i33: ; preds = %for.inc.i.i.i.i.i.i to label %call2.i.i.noexc unwind label %lpad2 lpad.i: ; preds = %_ZNSt12_Vector_baseISt4pairIPKciESaIS3_EEC2EmRKS4_.exit.i.i, %if.then.i.i.i - %12 = landingpad { ptr, i32 } + %11 = landingpad { ptr, i32 } cleanup br label %ehcleanup15 call2.i.i.noexc: ; preds = %invoke.cont.i33 - %13 = load i64, ptr %_M_states.i, align 8, !tbaa !600 - invoke void @_ZNSt8__detail9_ExecutorIPKcSaINSt7__cxx119sub_matchIS2_EEENS3_12regex_traitsIcEELb1EE6_M_dfsENS9_11_Match_modeEl(ptr noundef nonnull align 8 dereferenceable(117) %__sub, i8 noundef zeroext 1, i64 noundef %13) + %12 = load i64, ptr %_M_states.i, align 8, !tbaa !600 + invoke void @_ZNSt8__detail9_ExecutorIPKcSaINSt7__cxx119sub_matchIS2_EEENS3_12regex_traitsIcEELb1EE6_M_dfsENS9_11_Match_modeEl(ptr noundef nonnull align 8 dereferenceable(117) %__sub, i8 noundef zeroext 1, i64 noundef %12) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %call2.i.i.noexc - %14 = load i8, ptr %_M_has_sol.i.i, align 4, !tbaa !599, !range !26, !noundef !27 - %tobool.i.i = icmp ne i8 %14, 0 + %13 = load i8, ptr %_M_has_sol.i.i, align 4, !tbaa !599, !range !26, !noundef !27 + %tobool.i.i = icmp ne i8 %13, 0 br i1 %tobool.i.i, label %for.cond.preheader, label %cleanup for.cond.preheader: ; preds = %invoke.cont3 - %15 = load ptr, ptr %_M_finish.i.i.i54, align 8, !tbaa !613 - %16 = load ptr, ptr %__what, align 8, !tbaa !33 - %cmp55.not = icmp eq ptr %15, %16 + %14 = load ptr, ptr %_M_finish.i.i.i54, align 8, !tbaa !613 + %15 = load ptr, ptr %__what, align 8, !tbaa !33 + %cmp55.not = icmp eq ptr %14, %15 br i1 %cmp55.not, label %cleanup, label %for.body.lr.ph for.body.lr.ph: ; preds = %for.cond.preheader - %sub.ptr.lhs.cast.i = ptrtoint ptr %15 to i64 - %sub.ptr.rhs.cast.i = ptrtoint ptr %16 to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %14 to i64 + %sub.ptr.rhs.cast.i = ptrtoint ptr %15 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 24 - %17 = load ptr, ptr %this, align 8 + %16 = load ptr, ptr %this, align 8 %umax = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) %xtraiter57 = and i64 %umax, 1 - %18 = icmp ult i64 %sub.ptr.div.i, 2 - br i1 %18, label %cleanup.loopexit.unr-lcssa, label %for.body.lr.ph.new + %17 = icmp ult i64 %sub.ptr.div.i, 2 + br i1 %17, label %cleanup.loopexit.unr-lcssa, label %for.body.lr.ph.new for.body.lr.ph.new: ; preds = %for.body.lr.ph %unroll_iter = and i64 %umax, -2 br label %for.body lpad2: ; preds = %call2.i.i.noexc, %invoke.cont.i33 - %19 = landingpad { ptr, i32 } + %18 = landingpad { ptr, i32 } cleanup call void @_ZNSt8__detail9_ExecutorIPKcSaINSt7__cxx119sub_matchIS2_EEENS3_12regex_traitsIcEELb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(117) %__sub) #25 br label %ehcleanup15 for.body: ; preds = %for.inc.1, %for.body.lr.ph.new %__i.056 = phi i64 [ 0, %for.body.lr.ph.new ], [ %inc.1, %for.inc.1 ] - %add.ptr.i36 = getelementptr inbounds %"class.std::__cxx11::sub_match", ptr %16, i64 %__i.056 + %add.ptr.i36 = getelementptr inbounds %"class.std::__cxx11::sub_match", ptr %15, i64 %__i.056 %matched = getelementptr inbounds i8, ptr %add.ptr.i36, i64 16 - %20 = load i8, ptr %matched, align 8, !tbaa !601, !range !26, !noundef !27 - %tobool.not = icmp eq i8 %20, 0 + %19 = load i8, ptr %matched, align 8, !tbaa !601, !range !26, !noundef !27 + %tobool.not = icmp eq i8 %19, 0 br i1 %tobool.not, label %for.inc, label %if.then6 if.then6: ; preds = %for.body - %add.ptr.i38 = getelementptr inbounds %"class.std::__cxx11::sub_match", ptr %17, i64 %__i.056 - %21 = load <2 x ptr>, ptr %add.ptr.i36, align 8, !tbaa !28 - store <2 x ptr> %21, ptr %add.ptr.i38, align 8, !tbaa !28 + %add.ptr.i38 = getelementptr inbounds %"class.std::__cxx11::sub_match", ptr %16, i64 %__i.056 + %20 = load <2 x ptr>, ptr %add.ptr.i36, align 8, !tbaa !28 + store <2 x ptr> %20, ptr %add.ptr.i38, align 8, !tbaa !28 %matched2.i = getelementptr inbounds i8, ptr %add.ptr.i38, i64 16 store i8 1, ptr %matched2.i, align 8, !tbaa !601 br label %for.inc for.inc: ; preds = %if.then6, %for.body %inc = or disjoint i64 %__i.056, 1 - %add.ptr.i36.1 = getelementptr inbounds %"class.std::__cxx11::sub_match", ptr %16, i64 %inc + %add.ptr.i36.1 = getelementptr inbounds %"class.std::__cxx11::sub_match", ptr %15, i64 %inc %matched.1 = getelementptr inbounds i8, ptr %add.ptr.i36.1, i64 16 - %22 = load i8, ptr %matched.1, align 8, !tbaa !601, !range !26, !noundef !27 - %tobool.not.1 = icmp eq i8 %22, 0 + %21 = load i8, ptr %matched.1, align 8, !tbaa !601, !range !26, !noundef !27 + %tobool.not.1 = icmp eq i8 %21, 0 br i1 %tobool.not.1, label %for.inc.1, label %if.then6.1 if.then6.1: ; preds = %for.inc - %add.ptr.i38.1 = getelementptr inbounds %"class.std::__cxx11::sub_match", ptr %17, i64 %inc - %23 = load <2 x ptr>, ptr %add.ptr.i36.1, align 8, !tbaa !28 - store <2 x ptr> %23, ptr %add.ptr.i38.1, align 8, !tbaa !28 + %add.ptr.i38.1 = getelementptr inbounds %"class.std::__cxx11::sub_match", ptr %16, i64 %inc + %22 = load <2 x ptr>, ptr %add.ptr.i36.1, align 8, !tbaa !28 + store <2 x ptr> %22, ptr %add.ptr.i38.1, align 8, !tbaa !28 %matched2.i.1 = getelementptr inbounds i8, ptr %add.ptr.i38.1, i64 16 store i8 1, ptr %matched2.i.1, align 8, !tbaa !601 br label %for.inc.1 @@ -32297,46 +32294,46 @@ cleanup.loopexit.unr-lcssa: ; preds = %for.inc.1, %for.bod br i1 %lcmp.mod58.not, label %cleanup, label %for.body.epil for.body.epil: ; preds = %cleanup.loopexit.unr-lcssa - %add.ptr.i36.epil = getelementptr inbounds %"class.std::__cxx11::sub_match", ptr %16, i64 %__i.056.unr + %add.ptr.i36.epil = getelementptr inbounds %"class.std::__cxx11::sub_match", ptr %15, i64 %__i.056.unr %matched.epil = getelementptr inbounds i8, ptr %add.ptr.i36.epil, i64 16 - %24 = load i8, ptr %matched.epil, align 8, !tbaa !601, !range !26, !noundef !27 - %tobool.not.epil = icmp eq i8 %24, 0 + %23 = load i8, ptr %matched.epil, align 8, !tbaa !601, !range !26, !noundef !27 + %tobool.not.epil = icmp eq i8 %23, 0 br i1 %tobool.not.epil, label %cleanup, label %if.then6.epil if.then6.epil: ; preds = %for.body.epil - %add.ptr.i38.epil = getelementptr inbounds %"class.std::__cxx11::sub_match", ptr %17, i64 %__i.056.unr - %25 = load <2 x ptr>, ptr %add.ptr.i36.epil, align 8, !tbaa !28 - store <2 x ptr> %25, ptr %add.ptr.i38.epil, align 8, !tbaa !28 + %add.ptr.i38.epil = getelementptr inbounds %"class.std::__cxx11::sub_match", ptr %16, i64 %__i.056.unr + %24 = load <2 x ptr>, ptr %add.ptr.i36.epil, align 8, !tbaa !28 + store <2 x ptr> %24, ptr %add.ptr.i38.epil, align 8, !tbaa !28 %matched2.i.epil = getelementptr inbounds i8, ptr %add.ptr.i38.epil, i64 16 store i8 1, ptr %matched2.i.epil, align 8, !tbaa !601 br label %cleanup cleanup: ; preds = %if.then6.epil, %for.body.epil, %cleanup.loopexit.unr-lcssa, %for.cond.preheader, %invoke.cont3 - %26 = load ptr, ptr %_M_rep_count.i, align 8, !tbaa !584 - %tobool.not.i.i.i.i40 = icmp eq ptr %26, null + %25 = load ptr, ptr %_M_rep_count.i, align 8, !tbaa !584 + %tobool.not.i.i.i.i40 = icmp eq ptr %25, null br i1 %tobool.not.i.i.i.i40, label %_ZNSt6vectorISt4pairIPKciESaIS3_EED2Ev.exit.i, label %if.then.i.i.i.i41 if.then.i.i.i.i41: ; preds = %cleanup - call void @_ZdlPv(ptr noundef nonnull %26) #26 + call void @_ZdlPv(ptr noundef nonnull %25) #26 br label %_ZNSt6vectorISt4pairIPKciESaIS3_EED2Ev.exit.i _ZNSt6vectorISt4pairIPKciESaIS3_EED2Ev.exit.i: ; preds = %if.then.i.i.i.i41, %cleanup - %27 = load ptr, ptr %__sub, align 8, !tbaa !33 - %tobool.not.i.i.i2.i = icmp eq ptr %27, null + %26 = load ptr, ptr %__sub, align 8, !tbaa !33 + %tobool.not.i.i.i2.i = icmp eq ptr %26, null br i1 %tobool.not.i.i.i2.i, label %_ZNSt8__detail9_ExecutorIPKcSaINSt7__cxx119sub_matchIS2_EEENS3_12regex_traitsIcEELb1EED2Ev.exit, label %if.then.i.i.i3.i if.then.i.i.i3.i: ; preds = %_ZNSt6vectorISt4pairIPKciESaIS3_EED2Ev.exit.i - call void @_ZdlPv(ptr noundef nonnull %27) #26 + call void @_ZdlPv(ptr noundef nonnull %26) #26 br label %_ZNSt8__detail9_ExecutorIPKcSaINSt7__cxx119sub_matchIS2_EEENS3_12regex_traitsIcEELb1EED2Ev.exit _ZNSt8__detail9_ExecutorIPKcSaINSt7__cxx119sub_matchIS2_EEENS3_12regex_traitsIcEELb1EED2Ev.exit: ; preds = %if.then.i.i.i3.i, %_ZNSt6vectorISt4pairIPKciESaIS3_EED2Ev.exit.i call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %__sub) #25 - %28 = load ptr, ptr %__what, align 8, !tbaa !33 - %tobool.not.i.i.i = icmp eq ptr %28, null + %27 = load ptr, ptr %__what, align 8, !tbaa !33 + %tobool.not.i.i.i = icmp eq ptr %27, null br i1 %tobool.not.i.i.i, label %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EED2Ev.exit, label %if.then.i.i.i44 if.then.i.i.i44: ; preds = %_ZNSt8__detail9_ExecutorIPKcSaINSt7__cxx119sub_matchIS2_EEENS3_12regex_traitsIcEELb1EED2Ev.exit - call void @_ZdlPv(ptr noundef nonnull %28) #26 + call void @_ZdlPv(ptr noundef nonnull %27) #26 br label %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EED2Ev.exit _ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EED2Ev.exit: ; preds = %if.then.i.i.i44, %_ZNSt8__detail9_ExecutorIPKcSaINSt7__cxx119sub_matchIS2_EEENS3_12regex_traitsIcEELb1EED2Ev.exit @@ -32344,14 +32341,14 @@ _ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EED2Ev.exit: ; preds = %if.then.i. ret i1 %tobool.i.i ehcleanup15: ; preds = %lpad2, %lpad.i - %.pn.pn = phi { ptr, i32 } [ %19, %lpad2 ], [ %12, %lpad.i ] + %.pn.pn = phi { ptr, i32 } [ %18, %lpad2 ], [ %11, %lpad.i ] call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %__sub) #25 - %29 = load ptr, ptr %__what, align 8, !tbaa !33 - %tobool.not.i.i.i46 = icmp eq ptr %29, null + %28 = load ptr, ptr %__what, align 8, !tbaa !33 + %tobool.not.i.i.i46 = icmp eq ptr %28, null br i1 %tobool.not.i.i.i46, label %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EED2Ev.exit48, label %if.then.i.i.i47 if.then.i.i.i47: ; preds = %ehcleanup15 - call void @_ZdlPv(ptr noundef nonnull %29) #26 + call void @_ZdlPv(ptr noundef nonnull %28) #26 br label %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EED2Ev.exit48 _ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EED2Ev.exit48: ; preds = %if.then.i.i.i47, %ehcleanup15 diff --git a/bench/flac/optimized/bitreader.c.ll b/bench/flac/optimized/bitreader.c.ll index 364ec82e1b8..8e3b4eb2c45 100644 --- a/bench/flac/optimized/bitreader.c.ll +++ b/bench/flac/optimized/bitreader.c.ll @@ -481,20 +481,21 @@ if.end42: ; preds = %if.then23 if.then49: ; preds = %if.end42 %sub51 = sub i32 64, %sub45 %cmp52 = icmp ult i32 %sub45, 32 - br i1 %cmp52, label %cond.true54, label %cond.end56 + br i1 %cmp52, label %cond.end56.thread, label %cond.end56 -cond.true54: ; preds = %if.then49 +cond.end56.thread: ; preds = %if.then49 %10 = load i32, ptr %val, align 4 %shl = shl i32 %10, %sub45 - br label %cond.end56 + store i32 %shl, ptr %val, align 4 + br label %cond.true60 -cond.end56: ; preds = %if.then49, %cond.true54 - %cond57 = phi i32 [ %shl, %cond.true54 ], [ 0, %if.then49 ] - store i32 %cond57, ptr %val, align 4 - %cmp58 = icmp ult i32 %sub51, 64 +cond.end56: ; preds = %if.then49 + store i32 0, ptr %val, align 4 + %cmp58 = icmp ult i32 %sub45, 65 br i1 %cmp58, label %cond.true60, label %cond.end69 -cond.true60: ; preds = %cond.end56 +cond.true60: ; preds = %cond.end56.thread, %cond.end56 + %cond5777 = phi i32 [ %shl, %cond.end56.thread ], [ 0, %cond.end56 ] %11 = load ptr, ptr %br, align 8 %12 = load i32, ptr %consumed_words, align 4 %idxprom63 = zext i32 %12 to i64 @@ -503,70 +504,70 @@ cond.true60: ; preds = %cond.end56 %sh_prom65 = zext nneg i32 %sub51 to i64 %shr66 = lshr i64 %13, %sh_prom65 %conv67 = trunc i64 %shr66 to i32 + %14 = or i32 %cond5777, %conv67 br label %cond.end69 cond.end69: ; preds = %cond.end56, %cond.true60 - %cond70 = phi i32 [ %conv67, %cond.true60 ], [ 0, %cond.end56 ] - %or = or i32 %cond70, %cond57 + %or = phi i32 [ %14, %cond.true60 ], [ 0, %cond.end56 ] store i32 %or, ptr %val, align 4 store i32 %sub45, ptr %consumed_bits, align 8 br label %return if.else73: ; preds = %if.then20 - %14 = load ptr, ptr %br, align 8 + %15 = load ptr, ptr %br, align 8 %idxprom77 = zext i32 %3 to i64 - %arrayidx78 = getelementptr inbounds i64, ptr %14, i64 %idxprom77 - %15 = load i64, ptr %arrayidx78, align 8 + %arrayidx78 = getelementptr inbounds i64, ptr %15, i64 %idxprom77 + %16 = load i64, ptr %arrayidx78, align 8 %cmp79 = icmp ult i32 %bits, 64 br i1 %cmp79, label %if.then81, label %if.end87 if.then81: ; preds = %if.else73 %sub82 = sub nuw nsw i32 64, %bits %sh_prom83 = zext nneg i32 %sub82 to i64 - %shr84 = lshr i64 %15, %sh_prom83 + %shr84 = lshr i64 %16, %sh_prom83 %conv85 = trunc i64 %shr84 to i32 store i32 %conv85, ptr %val, align 4 store i32 %bits, ptr %consumed_bits, align 8 br label %return if.end87: ; preds = %if.else73 - %conv88 = trunc i64 %15 to i32 + %conv88 = trunc i64 %16 to i32 store i32 %conv88, ptr %val, align 4 - %16 = load i32, ptr %consumed_words, align 4 - %inc90 = add i32 %16, 1 + %17 = load i32, ptr %consumed_words, align 4 + %inc90 = add i32 %17, 1 store i32 %inc90, ptr %consumed_words, align 4 br label %return if.else91: ; preds = %while.end - %17 = load ptr, ptr %br, align 8 + %18 = load ptr, ptr %br, align 8 %idxprom114 = zext i32 %3 to i64 - %arrayidx115 = getelementptr inbounds i64, ptr %17, i64 %idxprom114 - %18 = load i64, ptr %arrayidx115, align 8 + %arrayidx115 = getelementptr inbounds i64, ptr %18, i64 %idxprom114 + %19 = load i64, ptr %arrayidx115, align 8 br i1 %tobool22.not, label %if.else111, label %if.then94 if.then94: ; preds = %if.else91 %sh_prom100 = zext nneg i32 %5 to i64 %shr101 = lshr i64 -1, %sh_prom100 - %and102 = and i64 %18, %shr101 - %19 = add i32 %bits, %5 - %sub105 = sub i32 64, %19 + %and102 = and i64 %19, %shr101 + %20 = add i32 %bits, %5 + %sub105 = sub i32 64, %20 %sh_prom106 = zext nneg i32 %sub105 to i64 %shr107 = lshr i64 %and102, %sh_prom106 %conv108 = trunc i64 %shr107 to i32 store i32 %conv108, ptr %val, align 4 - %20 = load i32, ptr %consumed_bits, align 8 - %add110 = add i32 %20, %bits + %21 = load i32, ptr %consumed_bits, align 8 + %add110 = add i32 %21, %bits store i32 %add110, ptr %consumed_bits, align 8 br label %return if.else111: ; preds = %if.else91 %sub116 = sub i32 64, %bits %sh_prom117 = zext nneg i32 %sub116 to i64 - %shr118 = lshr i64 %18, %sh_prom117 + %shr118 = lshr i64 %19, %sh_prom117 %conv119 = trunc i64 %shr118 to i32 store i32 %conv119, ptr %val, align 4 - %21 = load i32, ptr %consumed_bits, align 8 - %add121 = add i32 %21, %bits + %22 = load i32, ptr %consumed_bits, align 8 + %add121 = add i32 %22, %bits store i32 %add121, ptr %consumed_bits, align 8 br label %return diff --git a/bench/flatbuffers/optimized/reflection.cpp.ll b/bench/flatbuffers/optimized/reflection.cpp.ll index 245e5cafe74..c78268c7c71 100644 --- a/bench/flatbuffers/optimized/reflection.cpp.ll +++ b/bench/flatbuffers/optimized/reflection.cpp.ll @@ -7152,7 +7152,7 @@ if.then.i.i.i.i.i: ; preds = %if.then11 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %idx.neg.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 %idx.neg.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %if.then.i.i.i if.then.i.i.i: ; preds = %if.then11, %if.then.i.i.i.i.i @@ -9032,27 +9032,27 @@ if.then4: ; preds = %if.then %sub.ptr.rhs.cast.i = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %cmp10 = icmp ugt i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i - br i1 %cmp10, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, label %_ZSt7advanceIPKhmEvRT_T0_.exit + br i1 %cmp10, label %if.then11, label %_ZSt7advanceIPKhmEvRT_T0_.exit -_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit: ; preds = %if.then4 +if.then11: ; preds = %if.then4 %idx.neg = sub i64 0, %sub.ptr.sub.i.i %add.ptr = getelementptr inbounds i8, ptr %1, i64 %idx.neg - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr align 1 %add.ptr, i64 %sub.ptr.sub.i.i, i1 false) - %.pre91 = load ptr, ptr %_M_finish, align 8 - %add.ptr22 = getelementptr inbounds i8, ptr %.pre91, i64 %sub.ptr.sub.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr nonnull align 1 %add.ptr, i64 %sub.ptr.sub.i.i, i1 false) + %2 = load ptr, ptr %_M_finish, align 8 + %add.ptr22 = getelementptr inbounds i8, ptr %2, i64 %sub.ptr.sub.i.i store ptr %add.ptr22, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEET0_T_SA_S9_.exit, label %if.then.i.i.i.i.i -if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i: ; preds = %if.then11 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %idx.neg.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 %idx.neg.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEET0_T_SA_S9_.exit -_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEET0_T_SA_S9_.exit: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, %if.then.i.i.i.i.i +_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEET0_T_SA_S9_.exit: ; preds = %if.then11, %if.then.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %__position.coerce, ptr align 1 %__first, i64 %sub.ptr.sub.i.i, i1 false) br label %if.end86 @@ -9069,9 +9069,9 @@ if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIPKhmEv br label %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit _ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit: ; preds = %_ZSt7advanceIPKhmEvRT_T0_.exit, %if.then.i.i.i.i.i.i.i.i - %2 = phi ptr [ %1, %_ZSt7advanceIPKhmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] + %3 = phi ptr [ %1, %_ZSt7advanceIPKhmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] %sub = sub nuw i64 %sub.ptr.sub.i.i, %sub.ptr.sub.i - %add.ptr36 = getelementptr inbounds i8, ptr %2, i64 %sub + %add.ptr36 = getelementptr inbounds i8, ptr %3, i64 %sub store ptr %add.ptr36, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i.i.i.i.i44 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i.i.i.i.i44, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit47, label %if.then.i.i.i.i.i.i.i.i.i45 @@ -9082,8 +9082,8 @@ if.then.i.i.i.i.i.i.i.i.i45: ; preds = %_ZSt22__uninitializ br label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit47 _ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit47: ; preds = %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit, %if.then.i.i.i.i.i.i.i.i.i45 - %3 = phi ptr [ %add.ptr36, %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit ], [ %.pre90, %if.then.i.i.i.i.i.i.i.i.i45 ] - %add.ptr44 = getelementptr inbounds i8, ptr %3, i64 %sub.ptr.sub.i + %4 = phi ptr [ %add.ptr36, %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit ], [ %.pre90, %if.then.i.i.i.i.i.i.i.i.i45 ] + %add.ptr44 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr44, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i51 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i51, label %if.end86, label %if.then.i.i.i.i.i52 @@ -9093,8 +9093,8 @@ if.then.i.i.i.i.i52: ; preds = %_ZSt22__uninitializ br label %if.end86 if.else50: ; preds = %if.then - %4 = load ptr, ptr %this, align 8 - %sub.ptr.rhs.cast.i.i56 = ptrtoint ptr %4 to i64 + %5 = load ptr, ptr %this, align 8 + %sub.ptr.rhs.cast.i.i56 = ptrtoint ptr %5 to i64 %sub.ptr.sub.i.i57 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i.i56 %sub.i = sub i64 9223372036854775807, %sub.ptr.sub.i.i57 %cmp.i = icmp ult i64 %sub.i, %sub.ptr.sub.i.i @@ -9108,8 +9108,8 @@ _ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc.exit: ; preds = %if.else50 %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i.i57, i64 %sub.ptr.sub.i.i) %add.i = add i64 %.sroa.speculated.i, %sub.ptr.sub.i.i57 %cmp7.i = icmp ult i64 %add.i, %sub.ptr.sub.i.i57 - %5 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 9223372036854775807) - %cond.i = select i1 %cmp7.i, i64 9223372036854775807, i64 %5 + %6 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 9223372036854775807) + %cond.i = select i1 %cmp7.i, i64 9223372036854775807, i64 %6 %cmp.not.i = icmp eq i64 %cond.i, 0 br i1 %cmp.not.i, label %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit, label %cond.true.i @@ -9121,11 +9121,11 @@ _ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorIhSaIh %cond.i58 = phi ptr [ %call5.i.i.i, %cond.true.i ], [ null, %_ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc.exit ] %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i59 = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i61 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i59, %sub.ptr.rhs.cast.i.i56 - %tobool.not.i.i.i.i.i.i.i.i.i62 = icmp eq ptr %__position.coerce, %4 + %tobool.not.i.i.i.i.i.i.i.i.i62 = icmp eq ptr %__position.coerce, %5 br i1 %tobool.not.i.i.i.i.i.i.i.i.i62, label %invoke.cont61, label %if.then.i.i.i.i.i.i.i.i.i63 if.then.i.i.i.i.i.i.i.i.i63: ; preds = %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %cond.i58, ptr align 1 %4, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i61, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %cond.i58, ptr align 1 %5, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i61, i1 false) br label %invoke.cont61 invoke.cont61: ; preds = %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit, %if.then.i.i.i.i.i.i.i.i.i63 @@ -9142,11 +9142,11 @@ if.then.i.i.i.i.i.i.i.i.i76: ; preds = %invoke.cont61 invoke.cont65: ; preds = %if.then.i.i.i.i.i.i.i.i.i76, %invoke.cont61 %add.ptr.i.i.i.i.i.i.i.i.i77 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i70, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i74 - %tobool.not.i = icmp eq ptr %4, null + %tobool.not.i = icmp eq ptr %5, null br i1 %tobool.not.i, label %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit, label %if.then.i79 if.then.i79: ; preds = %invoke.cont65 - tail call void @_ZdlPv(ptr noundef nonnull %4) #23 + tail call void @_ZdlPv(ptr noundef nonnull %5) #23 br label %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit _ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit: ; preds = %invoke.cont65, %if.then.i79 diff --git a/bench/fmt/optimized/color-test.cc.ll b/bench/fmt/optimized/color-test.cc.ll index 6d97a9390ca..3c5f836d0d7 100644 --- a/bench/fmt/optimized/color-test.cc.ll +++ b/bench/fmt/optimized/color-test.cc.ll @@ -4042,7 +4042,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i: ; preds = %.noexc, % %4 = phi i64 [ %1, %while.body.i.i.i.i.i ], [ %.pre12.i.i.i.i.i, %.noexc ] %sub.i.i.i.i.i = sub i64 %4, %3 %spec.select.i.i.i.i.i = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i, i64 %sub.ptr.sub.i.i.i.i.i) - %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %spec.select.i.i.i.i.i, 0 + %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %4, %3 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i @@ -5286,7 +5286,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i: ; preds = %if.then.i.i11, %w %6 = phi i64 [ %3, %while.body.i ], [ %.pre12.i, %if.then.i.i11 ] %sub.i = sub i64 %6, %5 %spec.select.i = call i64 @llvm.umin.i64(i64 %sub.i, i64 %sub.ptr.sub.i) - %tobool.not.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %spec.select.i, 0 + %tobool.not.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %6, %5 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i, label %if.then.i.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i @@ -5349,7 +5349,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i27: ; preds = %if.then.i.i38, %14 = phi i64 [ %11, %while.body.i21 ], [ %.pre12.i40, %if.then.i.i38 ] %sub.i28 = sub i64 %14, %13 %spec.select.i29 = call i64 @llvm.umin.i64(i64 %sub.i28, i64 %sub.ptr.sub.i24) - %tobool.not.i.i.i.i.i.i.i.i.i.i30 = icmp eq i64 %spec.select.i29, 0 + %tobool.not.i.i.i.i.i.i.i.i.i.i30 = icmp eq i64 %14, %13 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i30, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i34, label %if.then.i.i.i.i.i.i.i.i.i.i31 if.then.i.i.i.i.i.i.i.i.i.i31: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i27 @@ -5414,7 +5414,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i60: ; preds = %if.then.i.i71, %22 = phi i64 [ %19, %while.body.i54 ], [ %.pre12.i73, %if.then.i.i71 ] %sub.i61 = sub i64 %22, %21 %spec.select.i62 = call i64 @llvm.umin.i64(i64 %sub.i61, i64 %sub.ptr.sub.i57) - %tobool.not.i.i.i.i.i.i.i.i.i.i63 = icmp eq i64 %spec.select.i62, 0 + %tobool.not.i.i.i.i.i.i.i.i.i.i63 = icmp eq i64 %22, %21 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i63, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i67, label %if.then.i.i.i.i.i.i.i.i.i.i64 if.then.i.i.i.i.i.i.i.i.i.i64: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i60 @@ -5470,7 +5470,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i: ; preds = %if.then.i.i.i, %29 = phi i64 [ %26, %while.body.i.i ], [ %.pre12.i.i, %if.then.i.i.i ] %sub.i.i = sub i64 %29, %28 %spec.select.i.i = call i64 @llvm.umin.i64(i64 %sub.i.i, i64 %gepdiff.i) - %tobool.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %spec.select.i.i, 0 + %tobool.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %29, %28 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i, label %if.then.i.i.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i @@ -9012,7 +9012,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i: ; preds = %if.then.i.i.i %14 = phi i64 [ %11, %while.body.i.i.i ], [ %.pre12.i.i.i, %if.then.i.i.i.i ] %sub.i.i.i = sub i64 %14, %13 %spec.select.i.i.i = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i, i64 %sub.ptr.sub.i.i.i) - %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %spec.select.i.i.i, 0 + %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %14, %13 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i @@ -9088,7 +9088,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i25: ; preds = %if.then.i.i %27 = phi i64 [ %24, %while.body.i.i.i19 ], [ %.pre12.i.i.i38, %if.then.i.i.i.i36 ] %sub.i.i.i26 = sub i64 %27, %26 %spec.select.i.i.i27 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i26, i64 %sub.ptr.sub.i.i.i22) - %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i28 = icmp eq i64 %spec.select.i.i.i27, 0 + %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i28 = icmp eq i64 %27, %26 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i28, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i32, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i29 if.then.i.i.i.i.i.i.i.i.i.i.i.i29: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i25 @@ -9192,7 +9192,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i64: ; preds = %if.then.i.i %41 = phi i64 [ %38, %while.body.i.i.i58 ], [ %.pre12.i.i.i80, %if.then.i.i.i.i78 ] %sub.i.i.i65 = sub i64 %41, %40 %spec.select.i.i.i66 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i65, i64 %sub.ptr.sub.i.i.i61) - %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i67 = icmp eq i64 %spec.select.i.i.i66, 0 + %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i67 = icmp eq i64 %41, %40 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i67, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i71, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i68 if.then.i.i.i.i.i.i.i.i.i.i.i.i68: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i64 @@ -10018,7 +10018,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i: ; preds = %if.then.i.i.i12 %46 = phi i64 [ %43, %while.body.i.i ], [ %.pre12.i.i, %if.then.i.i.i12 ] %sub.i.i = sub i64 %46, %45 %spec.select.i.i = call i64 @llvm.umin.i64(i64 %sub.i.i, i64 %sub.ptr.sub.i.i) - %tobool.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %spec.select.i.i, 0 + %tobool.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %46, %45 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i, label %if.then.i.i.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i @@ -10365,7 +10365,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i: ; preds = %if.then.i.i.i21 %15 = phi i64 [ %12, %while.body.i.i ], [ %.pre12.i.i, %if.then.i.i.i21 ] %sub.i.i = sub i64 %15, %14 %spec.select.i.i = tail call i64 @llvm.umin.i64(i64 %sub.i.i, i64 %gepdiff) - %tobool.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %spec.select.i.i, 0 + %tobool.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %15, %14 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i, label %if.then.i.i.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i @@ -10480,7 +10480,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i: ; preds = %if.then.i.i.i21 %15 = phi i64 [ %12, %while.body.i.i ], [ %.pre12.i.i, %if.then.i.i.i21 ] %sub.i.i = sub i64 %15, %14 %spec.select.i.i = tail call i64 @llvm.umin.i64(i64 %sub.i.i, i64 %gepdiff) - %tobool.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %spec.select.i.i, 0 + %tobool.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %15, %14 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i, label %if.then.i.i.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i @@ -10595,7 +10595,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i: ; preds = %if.then.i.i.i21 %15 = phi i64 [ %12, %while.body.i.i ], [ %.pre12.i.i, %if.then.i.i.i21 ] %sub.i.i = sub i64 %15, %14 %spec.select.i.i = tail call i64 @llvm.umin.i64(i64 %sub.i.i, i64 %gepdiff) - %tobool.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %spec.select.i.i, 0 + %tobool.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %15, %14 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i, label %if.then.i.i.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i diff --git a/bench/fmt/optimized/format-impl-test.cc.ll b/bench/fmt/optimized/format-impl-test.cc.ll index 4cc4b711456..e2950304226 100644 --- a/bench/fmt/optimized/format-impl-test.cc.ll +++ b/bench/fmt/optimized/format-impl-test.cc.ll @@ -20890,7 +20890,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit: ; preds = %_ZN3fmt3v106detail1 %5 = phi i64 [ %2, %_ZN3fmt3v106detail11to_unsignedIlEENSt13make_unsignedIT_E4typeES4_.exit ], [ %.pre, %if.then.i11 ] %sub = sub i64 %5, %4 %spec.select = tail call i64 @llvm.umin.i64(i64 %sub, i64 %sub.ptr.sub) - %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq i64 %spec.select, 0 + %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq i64 %5, %4 br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit, label %if.then.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit @@ -45483,7 +45483,7 @@ if.end8: ; preds = %for.cond, %entry if.then13: ; preds = %if.end8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %buf, i8 0, i64 7, i1 false) %cmp.i.i = icmp sgt i64 %sub.ptr.sub, -1 - br i1 %cmp.i.i, label %_ZN3fmt3v106detail8copy_strIcKccTnNSt9enable_ifIXaasr3std7is_sameINSt12remove_constIT0_E4typeET1_EE5valuesr7is_charIS9_EE5valueEiE4typeELi0EEEPS9_PS6_SD_SC_.exit, label %if.then.i.i + br i1 %cmp.i.i, label %if.then.i, label %if.then.i.i if.then.i.i: ; preds = %if.then13 %exception.i.i.i = call ptr @__cxa_allocate_exception(i64 16) #28 @@ -45500,14 +45500,14 @@ lpad.i.i.i: ; preds = %if.then.i.i call void @__cxa_free_exception(ptr %exception.i.i.i) #28 resume { ptr, i32 } %0 -_ZN3fmt3v106detail8copy_strIcKccTnNSt9enable_ifIXaasr3std7is_sameINSt12remove_constIT0_E4typeET1_EE5valuesr7is_charIS9_EE5valueEiE4typeELi0EEEPS9_PS6_SD_SC_.exit: ; preds = %if.then13 +if.then.i: ; preds = %if.then13 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %buf, ptr align 1 %p.0, i64 %sub.ptr.sub, i1 false) %sub.ptr.rhs.cast28 = ptrtoint ptr %buf to i64 br label %do.body -do.body: ; preds = %if.end21, %_ZN3fmt3v106detail8copy_strIcKccTnNSt9enable_ifIXaasr3std7is_sameINSt12remove_constIT0_E4typeET1_EE5valuesr7is_charIS9_EE5valueEiE4typeELi0EEEPS9_PS6_SD_SC_.exit - %buf_ptr.0 = phi ptr [ %buf, %_ZN3fmt3v106detail8copy_strIcKccTnNSt9enable_ifIXaasr3std7is_sameINSt12remove_constIT0_E4typeET1_EE5valuesr7is_charIS9_EE5valueEiE4typeELi0EEEPS9_PS6_SD_SC_.exit ], [ %call18, %if.end21 ] - %p.2 = phi ptr [ %p.0, %_ZN3fmt3v106detail8copy_strIcKccTnNSt9enable_ifIXaasr3std7is_sameINSt12remove_constIT0_E4typeET1_EE5valuesr7is_charIS9_EE5valueEiE4typeELi0EEEPS9_PS6_SD_SC_.exit ], [ %add.ptr25, %if.end21 ] +do.body: ; preds = %if.end21, %if.then.i + %buf_ptr.0 = phi ptr [ %buf, %if.then.i ], [ %call18, %if.end21 ] + %p.2 = phi ptr [ %p.0, %if.then.i ], [ %add.ptr25, %if.end21 ] %call18 = call noundef ptr @_ZZN3fmt3v106detail18for_each_codepointIZNS1_16code_point_indexENS0_17basic_string_viewIcEEmEUljS4_E_EEvS4_T_ENKUlPKcS8_E_clES8_S8_(ptr noundef nonnull align 8 dereferenceable(24) %decode, ptr noundef nonnull %buf_ptr.0, ptr noundef %p.2) %tobool19.not = icmp eq ptr %call18, null br i1 %tobool19.not, label %if.end31, label %if.end21 @@ -45865,7 +45865,7 @@ if.end8: ; preds = %for.cond, %entry if.then13: ; preds = %if.end8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %buf, i8 0, i64 7, i1 false) %cmp.i.i = icmp sgt i64 %sub.ptr.sub, -1 - br i1 %cmp.i.i, label %_ZN3fmt3v106detail8copy_strIcKccTnNSt9enable_ifIXaasr3std7is_sameINSt12remove_constIT0_E4typeET1_EE5valuesr7is_charIS9_EE5valueEiE4typeELi0EEEPS9_PS6_SD_SC_.exit, label %if.then.i.i + br i1 %cmp.i.i, label %if.then.i, label %if.then.i.i if.then.i.i: ; preds = %if.then13 %exception.i.i.i = call ptr @__cxa_allocate_exception(i64 16) #28 @@ -45882,14 +45882,14 @@ lpad.i.i.i: ; preds = %if.then.i.i call void @__cxa_free_exception(ptr %exception.i.i.i) #28 resume { ptr, i32 } %0 -_ZN3fmt3v106detail8copy_strIcKccTnNSt9enable_ifIXaasr3std7is_sameINSt12remove_constIT0_E4typeET1_EE5valuesr7is_charIS9_EE5valueEiE4typeELi0EEEPS9_PS6_SD_SC_.exit: ; preds = %if.then13 +if.then.i: ; preds = %if.then13 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %buf, ptr align 1 %p.0, i64 %sub.ptr.sub, i1 false) %sub.ptr.rhs.cast28 = ptrtoint ptr %buf to i64 br label %do.body -do.body: ; preds = %if.end21, %_ZN3fmt3v106detail8copy_strIcKccTnNSt9enable_ifIXaasr3std7is_sameINSt12remove_constIT0_E4typeET1_EE5valuesr7is_charIS9_EE5valueEiE4typeELi0EEEPS9_PS6_SD_SC_.exit - %buf_ptr.0 = phi ptr [ %buf, %_ZN3fmt3v106detail8copy_strIcKccTnNSt9enable_ifIXaasr3std7is_sameINSt12remove_constIT0_E4typeET1_EE5valuesr7is_charIS9_EE5valueEiE4typeELi0EEEPS9_PS6_SD_SC_.exit ], [ %call18, %if.end21 ] - %p.2 = phi ptr [ %p.0, %_ZN3fmt3v106detail8copy_strIcKccTnNSt9enable_ifIXaasr3std7is_sameINSt12remove_constIT0_E4typeET1_EE5valuesr7is_charIS9_EE5valueEiE4typeELi0EEEPS9_PS6_SD_SC_.exit ], [ %add.ptr25, %if.end21 ] +do.body: ; preds = %if.end21, %if.then.i + %buf_ptr.0 = phi ptr [ %buf, %if.then.i ], [ %call18, %if.end21 ] + %p.2 = phi ptr [ %p.0, %if.then.i ], [ %add.ptr25, %if.end21 ] %call18 = call noundef ptr @_ZZN3fmt3v106detail18for_each_codepointIZNS1_11find_escapeEPKcS4_EUljNS0_17basic_string_viewIcEEE_EEvS6_T_ENKUlS4_S4_E_clES4_S4_(ptr noundef nonnull align 8 dereferenceable(8) %decode, ptr noundef nonnull %buf_ptr.0, ptr noundef %p.2) %tobool19.not = icmp eq ptr %call18, null br i1 %tobool19.not, label %if.end31, label %if.end21 @@ -46067,7 +46067,7 @@ if.end8: ; preds = %for.cond, %entry if.then13: ; preds = %if.end8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %buf, i8 0, i64 7, i1 false) %cmp.i.i = icmp sgt i64 %sub.ptr.sub, -1 - br i1 %cmp.i.i, label %_ZN3fmt3v106detail8copy_strIcKccTnNSt9enable_ifIXaasr3std7is_sameINSt12remove_constIT0_E4typeET1_EE5valuesr7is_charIS9_EE5valueEiE4typeELi0EEEPS9_PS6_SD_SC_.exit, label %if.then.i.i + br i1 %cmp.i.i, label %if.then.i, label %if.then.i.i if.then.i.i: ; preds = %if.then13 %exception.i.i.i = call ptr @__cxa_allocate_exception(i64 16) #28 @@ -46084,14 +46084,14 @@ lpad.i.i.i: ; preds = %if.then.i.i call void @__cxa_free_exception(ptr %exception.i.i.i) #28 resume { ptr, i32 } %0 -_ZN3fmt3v106detail8copy_strIcKccTnNSt9enable_ifIXaasr3std7is_sameINSt12remove_constIT0_E4typeET1_EE5valuesr7is_charIS9_EE5valueEiE4typeELi0EEEPS9_PS6_SD_SC_.exit: ; preds = %if.then13 +if.then.i: ; preds = %if.then13 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %buf, ptr align 1 %p.0, i64 %sub.ptr.sub, i1 false) %sub.ptr.rhs.cast28 = ptrtoint ptr %buf to i64 br label %do.body -do.body: ; preds = %if.end21, %_ZN3fmt3v106detail8copy_strIcKccTnNSt9enable_ifIXaasr3std7is_sameINSt12remove_constIT0_E4typeET1_EE5valuesr7is_charIS9_EE5valueEiE4typeELi0EEEPS9_PS6_SD_SC_.exit - %buf_ptr.0 = phi ptr [ %buf, %_ZN3fmt3v106detail8copy_strIcKccTnNSt9enable_ifIXaasr3std7is_sameINSt12remove_constIT0_E4typeET1_EE5valuesr7is_charIS9_EE5valueEiE4typeELi0EEEPS9_PS6_SD_SC_.exit ], [ %call18, %if.end21 ] - %p.2 = phi ptr [ %p.0, %_ZN3fmt3v106detail8copy_strIcKccTnNSt9enable_ifIXaasr3std7is_sameINSt12remove_constIT0_E4typeET1_EE5valuesr7is_charIS9_EE5valueEiE4typeELi0EEEPS9_PS6_SD_SC_.exit ], [ %add.ptr25, %if.end21 ] +do.body: ; preds = %if.end21, %if.then.i + %buf_ptr.0 = phi ptr [ %buf, %if.then.i ], [ %call18, %if.end21 ] + %p.2 = phi ptr [ %p.0, %if.then.i ], [ %add.ptr25, %if.end21 ] %call18 = call noundef ptr @_ZZN3fmt3v106detail18for_each_codepointIZNS1_13compute_widthENS0_17basic_string_viewIcEEE17count_code_pointsEEvS4_T_ENKUlPKcS8_E_clES8_S8_(ptr noundef nonnull align 8 dereferenceable(8) %decode, ptr noundef nonnull %buf_ptr.0, ptr noundef %p.2) %tobool19.not = icmp eq ptr %call18, null br i1 %tobool19.not, label %if.end31, label %if.end21 diff --git a/bench/folly/optimized/SplitStringSimd.cpp.ll b/bench/folly/optimized/SplitStringSimd.cpp.ll index 950a1faf1a1..e2213be901b 100644 --- a/bench/folly/optimized/SplitStringSimd.cpp.ll +++ b/bench/folly/optimized/SplitStringSimd.cpp.ll @@ -23559,9 +23559,7 @@ if.then.i61: ; preds = %if.end.i5 %44 = getelementptr inbounds i8, ptr %42, i64 16 store ptr %44, ptr %42, align 8, !tbaa !372 %cmp.i.i.i62 = icmp eq ptr %prev.i.7, null - %45 = icmp ne ptr %what.coerce1, null - %or.cond.i.i.i64 = and i1 %45, %cmp.i.i.i62 - br i1 %or.cond.i.i.i64, label %if.then.i.i.i78, label %if.end.i.i.i65 + br i1 %cmp.i.i.i62, label %if.then.i.i.i78, label %if.end.i.i.i65 if.then.i.i.i78: ; preds = %if.then.i61 call void @_ZSt19__throw_logic_errorPKc(ptr noundef nonnull @.str.4) #23 @@ -23576,36 +23574,36 @@ if.end.i.i.i65: ; preds = %if.then.i61 if.then.i.i.i.i76: ; preds = %if.end.i.i.i65 %call2.i8.i5.i.i77 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 8 dereferenceable(8) %__dnew.i.i.i.i57, i64 noundef 0) store ptr %call2.i8.i5.i.i77, ptr %42, align 8, !tbaa !374 - %46 = load i64, ptr %__dnew.i.i.i.i57, align 8, !tbaa !70 - store i64 %46, ptr %44, align 8, !tbaa !7 + %45 = load i64, ptr %__dnew.i.i.i.i57, align 8, !tbaa !70 + store i64 %45, ptr %44, align 8, !tbaa !7 br label %if.end.i.i.i.i67 if.end.i.i.i.i67: ; preds = %if.then.i.i.i.i76, %if.end.i.i.i65 - %47 = phi ptr [ %call2.i8.i5.i.i77, %if.then.i.i.i.i76 ], [ %44, %if.end.i.i.i65 ] + %46 = phi ptr [ %call2.i8.i5.i.i77, %if.then.i.i.i.i76 ], [ %44, %if.end.i.i.i65 ] switch i64 %sub.ptr.sub.i8, label %if.end.i.i.i.i.i.i.i75 [ i64 1, label %if.then.i.i.i.i.i.i74 i64 0, label %_ZN5folly8fbvectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE11M_constructIS6_JRPKclEEEvPT_DpOT0_.exit.i68 ] if.then.i.i.i.i.i.i74: ; preds = %if.end.i.i.i.i67 - %48 = load i8, ptr %prev.i.7, align 1, !tbaa !7 - store i8 %48, ptr %47, align 1, !tbaa !7 + %47 = load i8, ptr %prev.i.7, align 1, !tbaa !7 + store i8 %47, ptr %46, align 1, !tbaa !7 br label %_ZN5folly8fbvectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE11M_constructIS6_JRPKclEEEvPT_DpOT0_.exit.i68 if.end.i.i.i.i.i.i.i75: ; preds = %if.end.i.i.i.i67 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %47, ptr align 1 %prev.i.7, i64 %sub.ptr.sub.i8, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %46, ptr nonnull align 1 %prev.i.7, i64 %sub.ptr.sub.i8, i1 false) br label %_ZN5folly8fbvectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE11M_constructIS6_JRPKclEEEvPT_DpOT0_.exit.i68 _ZN5folly8fbvectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE11M_constructIS6_JRPKclEEEvPT_DpOT0_.exit.i68: ; preds = %if.end.i.i.i.i.i.i.i75, %if.then.i.i.i.i.i.i74, %if.end.i.i.i.i67 - %49 = load i64, ptr %__dnew.i.i.i.i57, align 8, !tbaa !70 + %48 = load i64, ptr %__dnew.i.i.i.i57, align 8, !tbaa !70 %_M_string_length.i.i.i.i.i.i69 = getelementptr inbounds i8, ptr %42, i64 8 - store i64 %49, ptr %_M_string_length.i.i.i.i.i.i69, align 8, !tbaa !376 - %50 = load ptr, ptr %42, align 8, !tbaa !374 - %arrayidx.i.i.i.i.i70 = getelementptr inbounds i8, ptr %50, i64 %49 + store i64 %48, ptr %_M_string_length.i.i.i.i.i.i69, align 8, !tbaa !376 + %49 = load ptr, ptr %42, align 8, !tbaa !374 + %arrayidx.i.i.i.i.i70 = getelementptr inbounds i8, ptr %49, i64 %48 store i8 0, ptr %arrayidx.i.i.i.i.i70, align 1, !tbaa !7 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %__dnew.i.i.i.i57) #26 - %51 = load ptr, ptr %e_.i58, align 8, !tbaa !426 - %incdec.ptr.i71 = getelementptr inbounds i8, ptr %51, i64 32 + %50 = load ptr, ptr %e_.i58, align 8, !tbaa !426 + %incdec.ptr.i71 = getelementptr inbounds i8, ptr %50, i64 32 store ptr %incdec.ptr.i71, ptr %e_.i58, align 8, !tbaa !426 br label %_ZN5folly8fbvectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE12emplace_backIJRPKclEEERS6_DpOT_.exit81 diff --git a/bench/git/optimized/apply.ll b/bench/git/optimized/apply.ll index 0c20f01912d..5b415f3a853 100644 --- a/bench/git/optimized/apply.ll +++ b/bench/git/optimized/apply.ll @@ -9541,16 +9541,11 @@ if.end35.i: ; preds = %if.end29.i %94 = load i8, ptr %arrayidx36.i, align 1 switch i8 %94, label %if.then7 [ i8 9, label %diff_timestamp_len.exit - i8 32, label %if.end51.i + i8 32, label %while.cond.i89.i ] -if.end51.i: ; preds = %if.end35.i - %sub.ptr.sub54.i = sub i64 %sub.ptr.rhs.cast82.pre-phi.i.i, %sub.ptr.rhs.cast - %tobool.not.i84.i = icmp eq i64 %sub.ptr.sub54.i, 0 - br i1 %tobool.not.i84.i, label %trailing_spaces_len.exit.i, label %while.cond.i89.i - -while.cond.i89.i: ; preds = %if.end51.i, %while.body.i.i - %p.0.i90.i = phi ptr [ %incdec.ptr.i91.i, %while.body.i.i ], [ %add.ptr31.i, %if.end51.i ] +while.cond.i89.i: ; preds = %if.end35.i, %while.body.i.i + %p.0.i90.i = phi ptr [ %incdec.ptr.i91.i, %while.body.i.i ], [ %add.ptr31.i, %if.end35.i ] %cmp2.not.i.i = icmp eq ptr %p.0.i90.i, %line br i1 %cmp2.not.i.i, label %trailing_spaces_len.exit.i, label %while.body.i.i @@ -9562,13 +9557,12 @@ while.body.i.i: ; preds = %while.cond.i89.i if.then7.i.i: ; preds = %while.body.i.i %sub.ptr.rhs.cast.i94.i = ptrtoint ptr %p.0.i90.i to i64 - %sub.ptr.sub.i95.i = sub i64 %sub.ptr.rhs.cast82.pre-phi.i.i, %sub.ptr.rhs.cast.i94.i br label %trailing_spaces_len.exit.i -trailing_spaces_len.exit.i: ; preds = %while.cond.i89.i, %if.then7.i.i, %if.end51.i - %retval.0.i88.i = phi i64 [ %sub.ptr.sub.i95.i, %if.then7.i.i ], [ 0, %if.end51.i ], [ %sub.ptr.sub54.i, %while.cond.i89.i ] - %idx.neg56.i = sub i64 0, %retval.0.i88.i - %add.ptr57.i = getelementptr inbounds i8, ptr %add.ptr31.i, i64 %idx.neg56.i +trailing_spaces_len.exit.i: ; preds = %while.cond.i89.i, %if.then7.i.i + %sub.ptr.rhs.cast.i94.pn.i = phi i64 [ %sub.ptr.rhs.cast.i94.i, %if.then7.i.i ], [ %sub.ptr.rhs.cast, %while.cond.i89.i ] + %retval.0.i88.neg.i = sub i64 %sub.ptr.rhs.cast.i94.pn.i, %sub.ptr.rhs.cast82.pre-phi.i.i + %add.ptr57.i = getelementptr inbounds i8, ptr %add.ptr31.i, i64 %retval.0.i88.neg.i br label %diff_timestamp_len.exit diff_timestamp_len.exit: ; preds = %if.end35.i, %trailing_spaces_len.exit.i diff --git a/bench/graphviz/optimized/solve_VPSC.cpp.ll b/bench/graphviz/optimized/solve_VPSC.cpp.ll index 09ff954d6b4..6c85fb9b4f5 100644 --- a/bench/graphviz/optimized/solve_VPSC.cpp.ll +++ b/bench/graphviz/optimized/solve_VPSC.cpp.ll @@ -782,8 +782,8 @@ define void @_ZN7IncVPSC7satisfyEv(ptr noundef nonnull align 8 dereferenceable(1 %7 = getelementptr inbounds i8, ptr %0, i64 96 %8 = load ptr, ptr %7, align 8 %9 = load ptr, ptr %6, align 8 - %.not23.i33 = icmp eq ptr %9, %8 - br i1 %.not23.i33, label %_ZN7IncVPSC12mostViolatedERSt6vectorIP10ConstraintSaIS2_EERS2_.exit.thread, label %.lr.ph.i.preheader.lr.ph + %.not22.i33 = icmp eq ptr %9, %8 + br i1 %.not22.i33, label %_ZN7IncVPSC12mostViolatedERSt6vectorIP10ConstraintSaIS2_EERS2_.exit.thread, label %.lr.ph.i.preheader.lr.ph .lr.ph.i.preheader.lr.ph: ; preds = %1 %10 = getelementptr inbounds i8, ptr %0, i64 104 @@ -802,10 +802,10 @@ define void @_ZN7IncVPSC7satisfyEv(ptr noundef nonnull align 8 dereferenceable(1 .lr.ph.i: ; preds = %.lr.ph.i.preheader, %.lr.ph.i %.1 = phi ptr [ %.2, %.lr.ph.i ], [ %.02534, %.lr.ph.i.preheader ] - %.026.i = phi double [ %.1.i, %.lr.ph.i ], [ 0x7FEFFFFFFFFFFFFF, %.lr.ph.i.preheader ] - %.sroa.0.025.i = phi ptr [ %40, %.lr.ph.i ], [ %15, %.lr.ph.i.preheader ] - %.sroa.018.024.i = phi ptr [ %.sroa.018.1.i, %.lr.ph.i ], [ %16, %.lr.ph.i.preheader ] - %17 = load ptr, ptr %.sroa.0.025.i, align 8 + %.025.i = phi double [ %.1.i, %.lr.ph.i ], [ 0x7FEFFFFFFFFFFFFF, %.lr.ph.i.preheader ] + %.sroa.0.024.i = phi ptr [ %40, %.lr.ph.i ], [ %15, %.lr.ph.i.preheader ] + %.sroa.018.023.i = phi ptr [ %.sroa.018.1.i, %.lr.ph.i ], [ %16, %.lr.ph.i.preheader ] + %17 = load ptr, ptr %.sroa.0.024.i, align 8 %18 = getelementptr inbounds i8, ptr %17, i64 8 %19 = load ptr, ptr %18, align 8 %20 = getelementptr inbounds i8, ptr %19, i64 32 @@ -827,11 +827,11 @@ define void @_ZN7IncVPSC7satisfyEv(ptr noundef nonnull align 8 dereferenceable(1 %36 = load double, ptr %35, align 8 %37 = fadd double %34, %36 %38 = fsub double %29, %37 - %39 = fcmp olt double %38, %.026.i + %39 = fcmp olt double %38, %.025.i %.2 = select i1 %39, ptr %17, ptr %.1 - %.sroa.018.1.i = select i1 %39, ptr %.sroa.0.025.i, ptr %.sroa.018.024.i - %.1.i = select i1 %39, double %38, double %.026.i - %40 = getelementptr inbounds i8, ptr %.sroa.0.025.i, i64 8 + %.sroa.018.1.i = select i1 %39, ptr %.sroa.0.024.i, ptr %.sroa.018.023.i + %.1.i = select i1 %39, double %38, double %.025.i + %40 = getelementptr inbounds i8, ptr %.sroa.0.024.i, i64 8 %.not.i = icmp eq ptr %40, %16 br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !10 @@ -1044,8 +1044,8 @@ _ZNSt3setIP5BlockSt4lessIS1_ESaIS1_EE6insertERKS1_.exit: ; preds = %_ZNSt8_Rb_tr %.112 = phi i64 [ %.01135, %73 ], [ %79, %119 ], [ %79, %_ZNSt8_Rb_treeIP5BlockS1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i ] %132 = load ptr, ptr %7, align 8 %133 = load ptr, ptr %6, align 8 - %.not23.i = icmp eq ptr %133, %132 - br i1 %.not23.i, label %_ZN7IncVPSC12mostViolatedERSt6vectorIP10ConstraintSaIS2_EERS2_.exit.thread, label %.lr.ph.i.preheader, !llvm.loop !11 + %.not22.i = icmp eq ptr %133, %132 + br i1 %.not22.i, label %_ZN7IncVPSC12mostViolatedERSt6vectorIP10ConstraintSaIS2_EERS2_.exit.thread, label %.lr.ph.i.preheader, !llvm.loop !11 _ZN7IncVPSC12mostViolatedERSt6vectorIP10ConstraintSaIS2_EERS2_.exit.thread: ; preds = %_ZN7IncVPSC12mostViolatedERSt6vectorIP10ConstraintSaIS2_EERS2_.exit, %_ZNSt3setIP5BlockSt4lessIS1_ESaIS1_EE6insertERKS1_.exit, %1 %134 = getelementptr inbounds i8, ptr %0, i64 8 @@ -1148,14 +1148,14 @@ define noundef double @_ZN7IncVPSC12mostViolatedERSt6vectorIP10ConstraintSaIS2_E %4 = getelementptr inbounds i8, ptr %1, i64 8 %5 = load ptr, ptr %4, align 8 %6 = load ptr, ptr %1, align 8 - %.not23 = icmp eq ptr %6, %5 - br i1 %.not23, label %_ZNSt6vectorIP10ConstraintSaIS1_EE6resizeEm.exit, label %.lr.ph + %.not22 = icmp eq ptr %6, %5 + br i1 %.not22, label %_ZNSt6vectorIP10ConstraintSaIS1_EE6resizeEm.exit, label %.lr.ph .lr.ph: ; preds = %3, %31 - %.026 = phi double [ %.1, %31 ], [ 0x7FEFFFFFFFFFFFFF, %3 ] - %.sroa.0.025 = phi ptr [ %32, %31 ], [ %6, %3 ] - %.sroa.018.024 = phi ptr [ %.sroa.018.1, %31 ], [ %5, %3 ] - %7 = load ptr, ptr %.sroa.0.025, align 8 + %.025 = phi double [ %.1, %31 ], [ 0x7FEFFFFFFFFFFFFF, %3 ] + %.sroa.0.024 = phi ptr [ %32, %31 ], [ %6, %3 ] + %.sroa.018.023 = phi ptr [ %.sroa.018.1, %31 ], [ %5, %3 ] + %7 = load ptr, ptr %.sroa.0.024, align 8 %8 = getelementptr inbounds i8, ptr %7, i64 8 %9 = load ptr, ptr %8, align 8 %10 = getelementptr inbounds i8, ptr %9, i64 32 @@ -1177,7 +1177,7 @@ define noundef double @_ZN7IncVPSC12mostViolatedERSt6vectorIP10ConstraintSaIS2_E %26 = load double, ptr %25, align 8 %27 = fadd double %24, %26 %28 = fsub double %19, %27 - %29 = fcmp olt double %28, %.026 + %29 = fcmp olt double %28, %.025 br i1 %29, label %30, label %31 30: ; preds = %.lr.ph @@ -1185,9 +1185,9 @@ define noundef double @_ZN7IncVPSC12mostViolatedERSt6vectorIP10ConstraintSaIS2_E br label %31 31: ; preds = %.lr.ph, %30 - %.sroa.018.1 = phi ptr [ %.sroa.0.025, %30 ], [ %.sroa.018.024, %.lr.ph ] - %.1 = phi double [ %28, %30 ], [ %.026, %.lr.ph ] - %32 = getelementptr inbounds i8, ptr %.sroa.0.025, i64 8 + %.sroa.018.1 = phi ptr [ %.sroa.0.024, %30 ], [ %.sroa.018.023, %.lr.ph ] + %.1 = phi double [ %28, %30 ], [ %.025, %.lr.ph ] + %32 = getelementptr inbounds i8, ptr %.sroa.0.024, i64 8 %.not = icmp eq ptr %32, %5 br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !10 @@ -1230,8 +1230,8 @@ define noundef double @_ZN7IncVPSC12mostViolatedERSt6vectorIP10ConstraintSaIS2_E br label %_ZNSt6vectorIP10ConstraintSaIS1_EE6resizeEm.exit _ZNSt6vectorIP10ConstraintSaIS1_EE6resizeEm.exit: ; preds = %3, %54, %48, %47, %._crit_edge - %.0.lcssa31 = phi double [ %.1, %54 ], [ %.1, %48 ], [ %.1, %47 ], [ %.1, %._crit_edge ], [ 0x7FEFFFFFFFFFFFFF, %3 ] - ret double %.0.lcssa31 + %.0.lcssa30 = phi double [ %.1, %54 ], [ %.1, %48 ], [ %.1, %47 ], [ %.1, %._crit_edge ], [ 0x7FEFFFFFFFFFFFFF, %3 ] + ret double %.0.lcssa30 } declare void @_ZN5Block5mergeEPS_P10Constraint(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef, ptr noundef) local_unnamed_addr #0 diff --git a/bench/gromacs/optimized/huffman.c.ll b/bench/gromacs/optimized/huffman.c.ll index ea260c0751a..ba2fbaacca8 100644 --- a/bench/gromacs/optimized/huffman.c.ll +++ b/bench/gromacs/optimized/huffman.c.ll @@ -1104,86 +1104,79 @@ readbits.exit108: ; preds = %104, %87 %.not86167 = icmp eq i32 %.017.lcssa.i, %105 br i1 %.not86167, label %._crit_edge, label %.lr.ph173 -.lr.ph173: ; preds = %readbits.exit108, %128 - %indvars.iv193 = phi i64 [ %indvars.iv.next194, %128 ], [ 0, %readbits.exit108 ] - %.069172 = phi i32 [ %.170, %128 ], [ %88, %readbits.exit108 ] - %.071171 = phi i32 [ %.172, %128 ], [ %.017.lcssa.i, %readbits.exit108 ] - %.3139169 = phi i32 [ %.4140, %128 ], [ %.8, %readbits.exit108 ] - %.3144168 = phi ptr [ %.4145, %128 ], [ %.11, %readbits.exit108 ] +.lr.ph173: ; preds = %readbits.exit108, %127 + %indvars.iv193 = phi i64 [ %indvars.iv.next194, %127 ], [ 0, %readbits.exit108 ] + %.069172 = phi i32 [ %.170, %127 ], [ %88, %readbits.exit108 ] + %.071171 = phi i32 [ %.172, %127 ], [ %.017.lcssa.i, %readbits.exit108 ] + %.3139169 = phi i32 [ %.4140, %127 ], [ %.8, %readbits.exit108 ] + %.3144168 = phi ptr [ %.4145, %127 ], [ %.11, %readbits.exit108 ] %indvars.iv.next194 = add nuw nsw i64 %indvars.iv193, 1 %106 = getelementptr inbounds %struct.codelength, ptr %11, i64 %indvars.iv.next194, i32 1 %107 = load i32, ptr %106, align 4 %.not87 = icmp eq i32 %107, %.069172 - br i1 %.not87, label %128, label %108 + br i1 %.not87, label %127, label %.lr.ph.preheader.i110 -108: ; preds = %.lr.ph173 - %109 = sub nsw i32 %107, %.069172 - %110 = shl i32 %.071171, %109 - %.not21.i109 = icmp eq i32 %109, 0 - br i1 %.not21.i109, label %readbits.exit121, label %.lr.ph.preheader.i110 - -.lr.ph.preheader.i110: ; preds = %108 - %111 = load i8, ptr %.3144168, align 1 - %112 = lshr i32 128, %.3139169 +.lr.ph.preheader.i110: ; preds = %.lr.ph173 + %108 = sub nsw i32 %107, %.069172 + %109 = load i8, ptr %.3144168, align 1 + %110 = lshr i32 128, %.3139169 br label %.lr.ph.i111 -.lr.ph.i111: ; preds = %126, %.lr.ph.preheader.i110 - %.12 = phi ptr [ %.3144168, %.lr.ph.preheader.i110 ], [ %.13, %126 ] - %113 = phi i32 [ %.3139169, %.lr.ph.preheader.i110 ], [ %.9, %126 ] - %.in.i112 = phi i32 [ %109, %.lr.ph.preheader.i110 ], [ %114, %126 ] - %.024.i113 = phi i8 [ %111, %.lr.ph.preheader.i110 ], [ %.1.i118, %126 ] - %.01523.i114 = phi i32 [ %112, %.lr.ph.preheader.i110 ], [ %.116.i117, %126 ] - %.01722.i115 = phi i32 [ 0, %.lr.ph.preheader.i110 ], [ %120, %126 ] - %114 = add nsw i32 %.in.i112, -1 - %115 = shl i32 %.01722.i115, 1 - %116 = zext i8 %.024.i113 to i32 - %117 = and i32 %.01523.i114, %116 - %118 = icmp ne i32 %117, 0 - %119 = zext i1 %118 to i32 - %120 = or disjoint i32 %115, %119 - %121 = add nsw i32 %113, 1 - %122 = lshr i32 %.01523.i114, 1 +.lr.ph.i111: ; preds = %124, %.lr.ph.preheader.i110 + %.12 = phi ptr [ %.3144168, %.lr.ph.preheader.i110 ], [ %.13, %124 ] + %111 = phi i32 [ %.3139169, %.lr.ph.preheader.i110 ], [ %.9, %124 ] + %.in.i112 = phi i32 [ %108, %.lr.ph.preheader.i110 ], [ %112, %124 ] + %.024.i113 = phi i8 [ %109, %.lr.ph.preheader.i110 ], [ %.1.i118, %124 ] + %.01523.i114 = phi i32 [ %110, %.lr.ph.preheader.i110 ], [ %.116.i117, %124 ] + %.01722.i115 = phi i32 [ 0, %.lr.ph.preheader.i110 ], [ %118, %124 ] + %112 = add nsw i32 %.in.i112, -1 + %113 = shl i32 %.01722.i115, 1 + %114 = zext i8 %.024.i113 to i32 + %115 = and i32 %.01523.i114, %114 + %116 = icmp ne i32 %115, 0 + %117 = zext i1 %116 to i32 + %118 = or disjoint i32 %113, %117 + %119 = add nsw i32 %111, 1 + %120 = lshr i32 %.01523.i114, 1 %.not20.i116 = icmp ult i32 %.01523.i114, 2 - br i1 %.not20.i116, label %123, label %126 - -123: ; preds = %.lr.ph.i111 - %124 = getelementptr inbounds i8, ptr %.12, i64 1 - %125 = load i8, ptr %124, align 1 - br label %126 - -126: ; preds = %123, %.lr.ph.i111 - %.13 = phi ptr [ %124, %123 ], [ %.12, %.lr.ph.i111 ] - %.9 = phi i32 [ 0, %123 ], [ %121, %.lr.ph.i111 ] - %.116.i117 = phi i32 [ 128, %123 ], [ %122, %.lr.ph.i111 ] - %.1.i118 = phi i8 [ %125, %123 ], [ %.024.i113, %.lr.ph.i111 ] - %.not.i119 = icmp eq i32 %114, 0 + br i1 %.not20.i116, label %121, label %124 + +121: ; preds = %.lr.ph.i111 + %122 = getelementptr inbounds i8, ptr %.12, i64 1 + %123 = load i8, ptr %122, align 1 + br label %124 + +124: ; preds = %121, %.lr.ph.i111 + %.13 = phi ptr [ %122, %121 ], [ %.12, %.lr.ph.i111 ] + %.9 = phi i32 [ 0, %121 ], [ %119, %.lr.ph.i111 ] + %.116.i117 = phi i32 [ 128, %121 ], [ %120, %.lr.ph.i111 ] + %.1.i118 = phi i8 [ %123, %121 ], [ %.024.i113, %.lr.ph.i111 ] + %.not.i119 = icmp eq i32 %112, 0 br i1 %.not.i119, label %readbits.exit121, label %.lr.ph.i111, !llvm.loop !19 -readbits.exit121: ; preds = %126, %108 - %.14 = phi ptr [ %.3144168, %108 ], [ %.13, %126 ] - %.10 = phi i32 [ %.3139169, %108 ], [ %.9, %126 ] - %.017.lcssa.i120 = phi i32 [ 0, %108 ], [ %120, %126 ] - %127 = or i32 %.017.lcssa.i120, %110 - br label %128 - -128: ; preds = %readbits.exit121, %.lr.ph173 - %.4145 = phi ptr [ %.3144168, %.lr.ph173 ], [ %.14, %readbits.exit121 ] - %.4140 = phi i32 [ %.3139169, %.lr.ph173 ], [ %.10, %readbits.exit121 ] - %.172 = phi i32 [ %.071171, %.lr.ph173 ], [ %127, %readbits.exit121 ] +readbits.exit121: ; preds = %124 + %125 = shl i32 %.071171, %108 + %126 = or i32 %118, %125 + br label %127 + +127: ; preds = %readbits.exit121, %.lr.ph173 + %.4145 = phi ptr [ %.3144168, %.lr.ph173 ], [ %.13, %readbits.exit121 ] + %.4140 = phi i32 [ %.3139169, %.lr.ph173 ], [ %.9, %readbits.exit121 ] + %.172 = phi i32 [ %.071171, %.lr.ph173 ], [ %126, %readbits.exit121 ] %.170 = phi i32 [ %.069172, %.lr.ph173 ], [ %107, %readbits.exit121 ] - %129 = getelementptr inbounds %struct.codelength, ptr %11, i64 %indvars.iv.next194 - %130 = load i32, ptr %129, align 4 - %.not86 = icmp eq i32 %.172, %130 + %128 = getelementptr inbounds %struct.codelength, ptr %11, i64 %indvars.iv.next194 + %129 = load i32, ptr %128, align 4 + %.not86 = icmp eq i32 %.172, %129 br i1 %.not86, label %._crit_edge, label %.lr.ph173, !llvm.loop !22 -._crit_edge: ; preds = %128, %readbits.exit108 - %.3144.lcssa = phi ptr [ %.11, %readbits.exit108 ], [ %.4145, %128 ] - %.3139.lcssa = phi i32 [ %.8, %readbits.exit108 ], [ %.4140, %128 ] - %.lcssa154 = phi ptr [ %11, %readbits.exit108 ], [ %129, %128 ] - %131 = getelementptr inbounds i8, ptr %.lcssa154, i64 8 - %132 = load i32, ptr %131, align 4 - %133 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv196 - store i32 %132, ptr %133, align 4 +._crit_edge: ; preds = %127, %readbits.exit108 + %.3144.lcssa = phi ptr [ %.11, %readbits.exit108 ], [ %.4145, %127 ] + %.3139.lcssa = phi i32 [ %.8, %readbits.exit108 ], [ %.4140, %127 ] + %.lcssa154 = phi ptr [ %11, %readbits.exit108 ], [ %128, %127 ] + %130 = getelementptr inbounds i8, ptr %.lcssa154, i64 8 + %131 = load i32, ptr %130, align 4 + %132 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv196 + store i32 %131, ptr %132, align 4 %indvars.iv.next197 = add nuw nsw i64 %indvars.iv196, 1 %exitcond200.not = icmp eq i64 %indvars.iv.next197, %wide.trip.count199 br i1 %exitcond200.not, label %._crit_edge180, label %87, !llvm.loop !23 diff --git a/bench/gromacs/optimized/neldermead.cpp.ll b/bench/gromacs/optimized/neldermead.cpp.ll index 1861e42bba6..53c3632b415 100644 --- a/bench/gromacs/optimized/neldermead.cpp.ll +++ b/bench/gromacs/optimized/neldermead.cpp.ll @@ -58,14 +58,14 @@ _ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.i: ; preds = %4 _ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i.i.i: ; preds = %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.i %17 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %15) #17 - to label %_ZNSt16allocator_traitsISaIfEE8allocateERS0_m.exit.i.i.i.i unwind label %53 + to label %_ZN3gmx6copyOfIfEESt6vectorIT_SaIS2_EERKNS_8ArrayRefIKS2_EE.exit unwind label %53 -_ZNSt16allocator_traitsISaIfEE8allocateERS0_m.exit.i.i.i.i: ; preds = %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i.i.i +_ZN3gmx6copyOfIfEESt6vectorIT_SaIS2_EERKNS_8ArrayRefIKS2_EE.exit: ; preds = %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i.i.i tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %17, ptr align 4 %2, i64 %15, i1 false), !noalias !5 %18 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %15) #17 to label %19 unwind label %.loopexit.split-lp -19: ; preds = %_ZNSt16allocator_traitsISaIfEE8allocateERS0_m.exit.i.i.i.i +19: ; preds = %_ZN3gmx6copyOfIfEESt6vectorIT_SaIS2_EERKNS_8ArrayRefIKS2_EE.exit %20 = lshr exact i64 %15, 2 %21 = getelementptr i8, ptr %17, i64 %15 %22 = getelementptr inbounds i8, ptr %18, i64 %15 @@ -156,8 +156,8 @@ _ZNSt16allocator_traitsISaIfEE8allocateERS0_m.exit.i.i.i.i27: ; preds = %45 cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit -.loopexit.split-lp: ; preds = %129, %_ZNSt16allocator_traitsISaIfEE8allocateERS0_m.exit.i.i.i.i - %.sroa.078.0100.ph = phi ptr [ %.sroa.078.098109, %129 ], [ %17, %_ZNSt16allocator_traitsISaIfEE8allocateERS0_m.exit.i.i.i.i ] +.loopexit.split-lp: ; preds = %129, %_ZN3gmx6copyOfIfEESt6vectorIT_SaIS2_EERKNS_8ArrayRefIKS2_EE.exit + %.sroa.078.0100.ph = phi ptr [ %.sroa.078.098109, %129 ], [ %17, %_ZN3gmx6copyOfIfEESt6vectorIT_SaIS2_EERKNS_8ArrayRefIKS2_EE.exit ] %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit @@ -1985,16 +1985,12 @@ _ZNSt6vectorIfSaIfEEC2ERKS1_.exit.thread: ; preds = %10 .lr.ph.split.thread: ; preds = %_ZNSt6vectorIfSaIfEEC2ERKS1_.exit.thread %14 = icmp eq i64 %.fr62, 4 %15 = add nsw i64 %.fr62, -4 - br i1 %14, label %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.us55.preheader, label %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.preheader + br i1 %14, label %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.us55.preheader, label %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i _ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.us55.preheader: ; preds = %.lr.ph.split.thread %16 = load float, ptr %12, align 4, !noalias !47 br label %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.us55 -_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.preheader: ; preds = %.lr.ph.split.thread - %.not5.i = icmp eq i64 %.fr62, 0 - br label %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i - _ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.us55: ; preds = %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.us55.preheader, %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.us55 %.054.us56 = phi float [ %.sroa.speculated40.us, %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.us55 ], [ 0.000000e+00, %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.us55.preheader ] %.sroa.021.053.us57 = phi ptr [ %23, %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.us55 ], [ %2, %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.us55.preheader ] @@ -2009,9 +2005,9 @@ _ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.us55: ; preds = %_ZNSt6v %.not.us58 = icmp eq ptr %23, %0 br i1 %.not.us58, label %._crit_edge.thread70, label %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.us55 -_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i: ; preds = %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.preheader, %._crit_edge.loopexit.i - %.054 = phi float [ %.sroa.speculated40, %._crit_edge.loopexit.i ], [ 0.000000e+00, %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.preheader ] - %.sroa.021.053 = phi ptr [ %39, %._crit_edge.loopexit.i ], [ %2, %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i.preheader ] +_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i: ; preds = %.lr.ph.split.thread, %._crit_edge.loopexit.i + %.054 = phi float [ %.sroa.speculated40, %._crit_edge.loopexit.i ], [ 0.000000e+00, %.lr.ph.split.thread ] + %.sroa.021.053 = phi ptr [ %39, %._crit_edge.loopexit.i ], [ %2, %.lr.ph.split.thread ] %24 = getelementptr inbounds i8, ptr %.sroa.021.053, i64 16 %25 = load ptr, ptr %24, align 8 %26 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %.fr62) #17 @@ -2035,25 +2031,24 @@ _ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i.i: ; preds = %_ZNSt6vector %32 = getelementptr inbounds i8, ptr %.sroa.07.012.i.i, i64 4 %33 = getelementptr inbounds i8, ptr %.sroa.05.013.i.i, i64 4 %.not.i.i = icmp eq ptr %31, %13 - br i1 %.not.i.i, label %_ZN3gmx12_GLOBAL__N_117linearCombinationEfNS_8ArrayRefIKfEEfS3_.exit, label %.lr.ph.i.i, !llvm.loop !24 + br i1 %.not.i.i, label %.lr.ph.i.preheader, label %.lr.ph.i.i, !llvm.loop !24 -_ZN3gmx12_GLOBAL__N_117linearCombinationEfNS_8ArrayRefIKfEEfS3_.exit: ; preds = %.lr.ph.i.i +.lr.ph.i.preheader: ; preds = %.lr.ph.i.i %34 = getelementptr i8, ptr %26, i64 %.fr62 - br i1 %.not5.i, label %._crit_edge.loopexit.i, label %.lr.ph.i + br label %.lr.ph.i -.lr.ph.i: ; preds = %_ZN3gmx12_GLOBAL__N_117linearCombinationEfNS_8ArrayRefIKfEEfS3_.exit, %.lr.ph.i - %.07.i = phi float [ %36, %.lr.ph.i ], [ 0.000000e+00, %_ZN3gmx12_GLOBAL__N_117linearCombinationEfNS_8ArrayRefIKfEEfS3_.exit ] - %.sroa.02.06.i = phi ptr [ %37, %.lr.ph.i ], [ %26, %_ZN3gmx12_GLOBAL__N_117linearCombinationEfNS_8ArrayRefIKfEEfS3_.exit ] +.lr.ph.i: ; preds = %.lr.ph.i.preheader, %.lr.ph.i + %.07.i = phi float [ %36, %.lr.ph.i ], [ 0.000000e+00, %.lr.ph.i.preheader ] + %.sroa.02.06.i = phi ptr [ %37, %.lr.ph.i ], [ %26, %.lr.ph.i.preheader ] %35 = load float, ptr %.sroa.02.06.i, align 4 %36 = tail call noundef float @llvm.fmuladd.f32(float %35, float %35, float %.07.i) %37 = getelementptr inbounds i8, ptr %.sroa.02.06.i, i64 4 %.not.i = icmp eq ptr %37, %34 br i1 %.not.i, label %._crit_edge.loopexit.i, label %.lr.ph.i, !llvm.loop !50 -._crit_edge.loopexit.i: ; preds = %.lr.ph.i, %_ZN3gmx12_GLOBAL__N_117linearCombinationEfNS_8ArrayRefIKfEEfS3_.exit - %.0.lcssa.i.ph = phi float [ 0.000000e+00, %_ZN3gmx12_GLOBAL__N_117linearCombinationEfNS_8ArrayRefIKfEEfS3_.exit ], [ %36, %.lr.ph.i ] - %38 = fcmp olt float %.054, %.0.lcssa.i.ph - %.sroa.speculated40 = select i1 %38, float %.0.lcssa.i.ph, float %.054 +._crit_edge.loopexit.i: ; preds = %.lr.ph.i + %38 = fcmp olt float %.054, %36 + %.sroa.speculated40 = select i1 %38, float %36, float %.054 tail call void @_ZdlPv(ptr noundef nonnull %26) #19 %39 = load ptr, ptr %.sroa.021.053, align 8 %.not = icmp eq ptr %39, %0 diff --git a/bench/grpc/optimized/slice_buffer.cc.ll b/bench/grpc/optimized/slice_buffer.cc.ll index 8332fec0d43..33691bb1636 100644 --- a/bench/grpc/optimized/slice_buffer.cc.ll +++ b/bench/grpc/optimized/slice_buffer.cc.ll @@ -1848,119 +1848,118 @@ while.body.lr.ph: ; preds = %while.cond.preheade %bytes39 = getelementptr inbounds i8, ptr %slice, i64 9 %agg.tmp18.sroa.5.0.agg.tmp.sroa_idx = getelementptr inbounds i8, ptr %agg.tmp, i64 8 %agg.tmp18.sroa.6.0.agg.tmp.sroa_idx = getelementptr inbounds i8, ptr %agg.tmp, i64 16 - br label %while.body + %1 = load i64, ptr %count.i, align 8, !noalias !39 + %cmp.not.i57 = icmp eq i64 %1, 0 + br i1 %cmp.not.i57, label %if.then.i, label %grpc_slice_buffer_take_first.exit if.then: ; preds = %entry tail call void @gpr_assertion_failed(ptr noundef nonnull @.str, i32 noundef 380, ptr noundef nonnull @.str.2) #16 unreachable -while.body: ; preds = %while.body.lr.ph, %if.end45 - %n.addr.037 = phi i64 [ %n, %while.body.lr.ph ], [ %sub, %if.end45 ] - %dstp.036 = phi ptr [ %dst, %while.body.lr.ph ], [ %add.ptr, %if.end45 ] - %1 = load i64, ptr %count.i, align 8, !noalias !39 - %cmp.not.i = icmp eq i64 %1, 0 - br i1 %cmp.not.i, label %if.then.i, label %grpc_slice_buffer_take_first.exit - -if.then.i: ; preds = %while.body +if.then.i: ; preds = %if.end45, %while.body.lr.ph tail call void @gpr_assertion_failed(ptr noundef nonnull @.str, i32 noundef 459, ptr noundef nonnull @.str.4) #16, !noalias !39 unreachable -grpc_slice_buffer_take_first.exit: ; preds = %while.body - %2 = load ptr, ptr %slices.i, align 8, !noalias !39 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %slice, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 32, i1 false) - %incdec.ptr.i = getelementptr inbounds i8, ptr %2, i64 32 +grpc_slice_buffer_take_first.exit: ; preds = %while.body.lr.ph, %if.end45 + %2 = phi i64 [ %18, %if.end45 ], [ %1, %while.body.lr.ph ] + %dstp.03659 = phi ptr [ %add.ptr, %if.end45 ], [ %dst, %while.body.lr.ph ] + %n.addr.03758 = phi i64 [ %sub, %if.end45 ], [ %n, %while.body.lr.ph ] + %3 = load ptr, ptr %slices.i, align 8, !noalias !39 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %slice, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 32, i1 false) + %incdec.ptr.i = getelementptr inbounds i8, ptr %3, i64 32 store ptr %incdec.ptr.i, ptr %slices.i, align 8, !noalias !39 - %dec.i = add i64 %1, -1 + %dec.i = add i64 %2, -1 store i64 %dec.i, ptr %count.i, align 8, !noalias !39 - %3 = load ptr, ptr %slice, align 8 - %tobool.not.i = icmp eq ptr %3, null - %4 = load i64, ptr %data.i, align 8 - %conv.i = and i64 %4, 255 - %cond.i = select i1 %tobool.not.i, i64 %conv.i, i64 %4 - %5 = load i64, ptr %length, align 8, !noalias !39 - %sub.i = sub i64 %5, %cond.i + %4 = load ptr, ptr %slice, align 8 + %tobool.not.i = icmp eq ptr %4, null + %5 = load i64, ptr %data.i, align 8 + %conv.i = and i64 %5, 255 + %cond.i = select i1 %tobool.not.i, i64 %conv.i, i64 %5 + %6 = load i64, ptr %length, align 8, !noalias !39 + %sub.i = sub i64 %6, %cond.i store i64 %sub.i, ptr %length, align 8, !noalias !39 - %conv = and i64 %4, 255 - %cond = select i1 %tobool.not.i, i64 %conv, i64 %4 - %cmp5 = icmp ugt i64 %cond, %n.addr.037 + %conv = and i64 %5, 255 + %cond = select i1 %tobool.not.i, i64 %conv, i64 %5 + %cmp5 = icmp ugt i64 %cond, %n.addr.03758 br i1 %cmp5, label %if.then6, label %if.else if.then6: ; preds = %grpc_slice_buffer_take_first.exit - %6 = load ptr, ptr %bytes36, align 8 - %cond15 = select i1 %tobool.not.i, ptr %bytes39, ptr %6 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %dstp.036, ptr align 1 %cond15, i64 %n.addr.037, i1 false) - call void @grpc_slice_sub_no_ref(ptr nonnull sret(%struct.grpc_slice) align 8 %agg.tmp, ptr noundef nonnull byval(%struct.grpc_slice) align 8 %slice, i64 noundef %n.addr.037, i64 noundef %cond) + %7 = load ptr, ptr %bytes36, align 8 + %cond15 = select i1 %tobool.not.i, ptr %bytes39, ptr %7 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %dstp.03659, ptr align 1 %cond15, i64 %n.addr.03758, i1 false) + call void @grpc_slice_sub_no_ref(ptr nonnull sret(%struct.grpc_slice) align 8 %agg.tmp, ptr noundef nonnull byval(%struct.grpc_slice) align 8 %slice, i64 noundef %n.addr.03758, i64 noundef %cond) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %agg.tmp18.sroa.6) %agg.tmp18.sroa.0.0.copyload33 = load ptr, ptr %agg.tmp, align 8 %agg.tmp18.sroa.5.0.copyload34 = load i64, ptr %agg.tmp18.sroa.5.0.agg.tmp.sroa_idx, align 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp18.sroa.6, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp18.sroa.6.0.agg.tmp.sroa_idx, i64 16, i1 false) - %7 = load ptr, ptr %slices.i, align 8 - %incdec.ptr.i20 = getelementptr inbounds i8, ptr %7, i64 -32 + %8 = load ptr, ptr %slices.i, align 8 + %incdec.ptr.i20 = getelementptr inbounds i8, ptr %8, i64 -32 store ptr %incdec.ptr.i20, ptr %slices.i, align 8 store ptr %agg.tmp18.sroa.0.0.copyload33, ptr %incdec.ptr.i20, align 8 - %agg.tmp18.sroa.5.0.incdec.ptr.i20.sroa_idx = getelementptr inbounds i8, ptr %7, i64 -24 + %agg.tmp18.sroa.5.0.incdec.ptr.i20.sroa_idx = getelementptr inbounds i8, ptr %8, i64 -24 store i64 %agg.tmp18.sroa.5.0.copyload34, ptr %agg.tmp18.sroa.5.0.incdec.ptr.i20.sroa_idx, align 8 - %agg.tmp18.sroa.6.0.incdec.ptr.i20.sroa_idx = getelementptr inbounds i8, ptr %7, i64 -16 + %agg.tmp18.sroa.6.0.incdec.ptr.i20.sroa_idx = getelementptr inbounds i8, ptr %8, i64 -16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp18.sroa.6.0.incdec.ptr.i20.sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp18.sroa.6, i64 16, i1 false) - %8 = load i64, ptr %count.i, align 8 - %inc.i = add i64 %8, 1 + %9 = load i64, ptr %count.i, align 8 + %inc.i = add i64 %9, 1 store i64 %inc.i, ptr %count.i, align 8 %tobool.not.i22 = icmp eq ptr %agg.tmp18.sroa.0.0.copyload33, null %conv.i24 = and i64 %agg.tmp18.sroa.5.0.copyload34, 255 %cond.i25 = select i1 %tobool.not.i22, i64 %conv.i24, i64 %agg.tmp18.sroa.5.0.copyload34 - %9 = load i64, ptr %length, align 8 - %add.i = add i64 %9, %cond.i25 + %10 = load i64, ptr %length, align 8 + %add.i = add i64 %10, %cond.i25 store i64 %add.i, ptr %length, align 8 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %agg.tmp18.sroa.6) br label %while.end if.else: ; preds = %grpc_slice_buffer_take_first.exit - %cmp17 = icmp eq i64 %cond, %n.addr.037 - %10 = load ptr, ptr %bytes36, align 8 - %cond29 = select i1 %tobool.not.i, ptr %bytes39, ptr %10 + %cmp17 = icmp eq i64 %cond, %n.addr.03758 + %11 = load ptr, ptr %bytes36, align 8 + %cond29 = select i1 %tobool.not.i, ptr %bytes39, ptr %11 br i1 %cmp17, label %if.then18, label %if.else31 if.then18: ; preds = %if.else - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %dstp.036, ptr align 1 %cond29, i64 %n.addr.037, i1 false) - %11 = load ptr, ptr %slice, align 8 - %cmp.i = icmp ugt ptr %11, inttoptr (i64 1 to ptr) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %dstp.03659, ptr align 1 %cond29, i64 %n.addr.03758, i1 false) + %12 = load ptr, ptr %slice, align 8 + %cmp.i = icmp ugt ptr %12, inttoptr (i64 1 to ptr) br i1 %cmp.i, label %if.then.i26, label %while.end if.then.i26: ; preds = %if.then18 - %12 = atomicrmw sub ptr %11, i64 1 acq_rel, align 8 - %cmp.i.i = icmp eq i64 %12, 1 + %13 = atomicrmw sub ptr %12, i64 1 acq_rel, align 8 + %cmp.i.i = icmp eq i64 %13, 1 br i1 %cmp.i.i, label %if.then.i.i, label %while.end if.then.i.i: ; preds = %if.then.i26 - %destroyer_fn_.i.i = getelementptr inbounds i8, ptr %11, i64 8 - %13 = load ptr, ptr %destroyer_fn_.i.i, align 8 - tail call void %13(ptr noundef nonnull align 8 dereferenceable(16) %11) + %destroyer_fn_.i.i = getelementptr inbounds i8, ptr %12, i64 8 + %14 = load ptr, ptr %destroyer_fn_.i.i, align 8 + tail call void %14(ptr noundef nonnull align 8 dereferenceable(16) %12) br label %while.end if.else31: ; preds = %if.else - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %dstp.036, ptr align 1 %cond29, i64 %cond, i1 false) - %add.ptr = getelementptr inbounds i8, ptr %dstp.036, i64 %cond - %sub = sub i64 %n.addr.037, %cond - %14 = load ptr, ptr %slice, align 8 - %cmp.i27 = icmp ugt ptr %14, inttoptr (i64 1 to ptr) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %dstp.03659, ptr align 1 %cond29, i64 %cond, i1 false) + %add.ptr = getelementptr inbounds i8, ptr %dstp.03659, i64 %cond + %sub = sub i64 %n.addr.03758, %cond + %15 = load ptr, ptr %slice, align 8 + %cmp.i27 = icmp ugt ptr %15, inttoptr (i64 1 to ptr) br i1 %cmp.i27, label %if.then.i28, label %if.end45 if.then.i28: ; preds = %if.else31 - %15 = atomicrmw sub ptr %14, i64 1 acq_rel, align 8 - %cmp.i.i29 = icmp eq i64 %15, 1 + %16 = atomicrmw sub ptr %15, i64 1 acq_rel, align 8 + %cmp.i.i29 = icmp eq i64 %16, 1 br i1 %cmp.i.i29, label %if.then.i.i30, label %if.end45 if.then.i.i30: ; preds = %if.then.i28 - %destroyer_fn_.i.i31 = getelementptr inbounds i8, ptr %14, i64 8 - %16 = load ptr, ptr %destroyer_fn_.i.i31, align 8 - tail call void %16(ptr noundef nonnull align 8 dereferenceable(16) %14) + %destroyer_fn_.i.i31 = getelementptr inbounds i8, ptr %15, i64 8 + %17 = load ptr, ptr %destroyer_fn_.i.i31, align 8 + tail call void %17(ptr noundef nonnull align 8 dereferenceable(16) %15) br label %if.end45 if.end45: ; preds = %if.then.i.i30, %if.then.i28, %if.else31 - %cmp1.not = icmp eq i64 %sub, 0 - br i1 %cmp1.not, label %while.end, label %while.body, !llvm.loop !42 + %18 = load i64, ptr %count.i, align 8, !noalias !39 + %cmp.not.i = icmp eq i64 %18, 0 + br i1 %cmp.not.i, label %if.then.i, label %grpc_slice_buffer_take_first.exit, !llvm.loop !42 -while.end: ; preds = %if.end45, %if.then.i.i, %if.then.i26, %if.then18, %if.then6, %while.cond.preheader +while.end: ; preds = %if.then.i.i, %if.then.i26, %if.then18, %if.then6, %while.cond.preheader ret void } diff --git a/bench/grpc/optimized/tls_security_connector.cc.ll b/bench/grpc/optimized/tls_security_connector.cc.ll index 2d62f18ec26..7ecb59513ce 100644 --- a/bench/grpc/optimized/tls_security_connector.cc.ll +++ b/bench/grpc/optimized/tls_security_connector.cc.ll @@ -3387,15 +3387,14 @@ if.then128: ; preds = %if.end124 %21 = icmp ugt i64 %sub.ptr.div.i, 2305843009213693951 %22 = select i1 %21, i64 -1, i64 %sub.ptr.sub.i %call133 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %22) #19 - to label %invoke.cont132 unwind label %lpad.loopexit.split-lp + to label %for.body143.preheader unwind label %lpad.loopexit.split-lp -invoke.cont132: ; preds = %if.then128 +for.body143.preheader: ; preds = %if.then128 store ptr %call133, ptr %san_names, align 8 - %cmp142393.not = icmp eq ptr %uri_names.sroa.8.0.lcssa446462488496, %uri_names.sroa.0.0.lcssa448460490494 - br i1 %cmp142393.not, label %if.end156, label %for.body143 + br label %for.body143 -for.body143: ; preds = %invoke.cont132, %for.body143 - %i137.0394 = phi i64 [ %inc150, %for.body143 ], [ 0, %invoke.cont132 ] +for.body143: ; preds = %for.body143.preheader, %for.body143 + %i137.0394 = phi i64 [ %inc150, %for.body143 ], [ 0, %for.body143.preheader ] %add.ptr.i = getelementptr inbounds ptr, ptr %uri_names.sroa.0.0.lcssa448460490494, i64 %i137.0394 %23 = load ptr, ptr %add.ptr.i, align 8 %24 = load ptr, ptr %san_names, align 8 @@ -3410,7 +3409,7 @@ if.else152: ; preds = %if.end124 store ptr null, ptr %san_names, align 8 br label %if.end156 -if.end156: ; preds = %for.body143, %invoke.cont132, %if.else152 +if.end156: ; preds = %for.body143, %if.else152 %sub.ptr.lhs.cast.i223 = ptrtoint ptr %dns_names.sroa.8.0.lcssa434474476508 to i64 %sub.ptr.rhs.cast.i224 = ptrtoint ptr %dns_names.sroa.0.0.lcssa444464486498 to i64 %sub.ptr.sub.i225 = sub i64 %sub.ptr.lhs.cast.i223, %sub.ptr.rhs.cast.i224 @@ -3424,16 +3423,15 @@ if.then161: ; preds = %if.end156 %26 = icmp ugt i64 %sub.ptr.div.i226, 2305843009213693951 %27 = select i1 %26, i64 -1, i64 %sub.ptr.sub.i225 %call166 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %27) #19 - to label %invoke.cont165 unwind label %lpad.loopexit.split-lp + to label %for.body176.preheader unwind label %lpad.loopexit.split-lp -invoke.cont165: ; preds = %if.then161 +for.body176.preheader: ; preds = %if.then161 %dns_names169 = getelementptr inbounds i8, ptr %request, i64 32 store ptr %call166, ptr %dns_names169, align 8 - %cmp175395.not = icmp eq ptr %dns_names.sroa.8.0.lcssa434474476508, %dns_names.sroa.0.0.lcssa444464486498 - br i1 %cmp175395.not, label %if.end189, label %for.body176 + br label %for.body176 -for.body176: ; preds = %invoke.cont165, %for.body176 - %i170.0396 = phi i64 [ %inc183, %for.body176 ], [ 0, %invoke.cont165 ] +for.body176: ; preds = %for.body176.preheader, %for.body176 + %i170.0396 = phi i64 [ %inc183, %for.body176 ], [ 0, %for.body176.preheader ] %add.ptr.i229 = getelementptr inbounds ptr, ptr %dns_names.sroa.0.0.lcssa444464486498, i64 %i170.0396 %28 = load ptr, ptr %add.ptr.i229, align 8 %29 = load ptr, ptr %dns_names169, align 8 @@ -3449,7 +3447,7 @@ if.else185: ; preds = %if.end156 store ptr null, ptr %dns_names188, align 8 br label %if.end189 -if.end189: ; preds = %for.body176, %invoke.cont165, %if.else185 +if.end189: ; preds = %for.body176, %if.else185 %sub.ptr.lhs.cast.i231 = ptrtoint ptr %email_names.sroa.8.0.lcssa438470480504 to i64 %sub.ptr.rhs.cast.i232 = ptrtoint ptr %email_names.sroa.0.0.lcssa436472478506 to i64 %sub.ptr.sub.i233 = sub i64 %sub.ptr.lhs.cast.i231, %sub.ptr.rhs.cast.i232 @@ -3463,16 +3461,15 @@ if.then194: ; preds = %if.end189 %31 = icmp ugt i64 %sub.ptr.div.i234, 2305843009213693951 %32 = select i1 %31, i64 -1, i64 %sub.ptr.sub.i233 %call199 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %32) #19 - to label %invoke.cont198 unwind label %lpad.loopexit.split-lp + to label %for.body209.preheader unwind label %lpad.loopexit.split-lp -invoke.cont198: ; preds = %if.then194 +for.body209.preheader: ; preds = %if.then194 %email_names202 = getelementptr inbounds i8, ptr %request, i64 48 store ptr %call199, ptr %email_names202, align 8 - %cmp208397.not = icmp eq ptr %email_names.sroa.8.0.lcssa438470480504, %email_names.sroa.0.0.lcssa436472478506 - br i1 %cmp208397.not, label %if.end222, label %for.body209 + br label %for.body209 -for.body209: ; preds = %invoke.cont198, %for.body209 - %i203.0398 = phi i64 [ %inc216, %for.body209 ], [ 0, %invoke.cont198 ] +for.body209: ; preds = %for.body209.preheader, %for.body209 + %i203.0398 = phi i64 [ %inc216, %for.body209 ], [ 0, %for.body209.preheader ] %add.ptr.i237 = getelementptr inbounds ptr, ptr %email_names.sroa.0.0.lcssa436472478506, i64 %i203.0398 %33 = load ptr, ptr %add.ptr.i237, align 8 %34 = load ptr, ptr %email_names202, align 8 @@ -3488,7 +3485,7 @@ if.else218: ; preds = %if.end189 store ptr null, ptr %email_names221, align 8 br label %if.end222 -if.end222: ; preds = %for.body209, %invoke.cont198, %if.else218 +if.end222: ; preds = %for.body209, %if.else218 %sub.ptr.lhs.cast.i239 = ptrtoint ptr %ip_names.sroa.8.0.lcssa442466484500 to i64 %sub.ptr.rhs.cast.i240 = ptrtoint ptr %ip_names.sroa.0.0.lcssa440468482502 to i64 %sub.ptr.sub.i241 = sub i64 %sub.ptr.lhs.cast.i239, %sub.ptr.rhs.cast.i240 @@ -3496,22 +3493,21 @@ if.end222: ; preds = %for.body209, %invok %ip_names_size = getelementptr inbounds i8, ptr %request, i64 72 store i64 %sub.ptr.div.i242, ptr %ip_names_size, align 8 %cmp.i.i244 = icmp eq ptr %ip_names.sroa.0.0.lcssa440468482502, %ip_names.sroa.8.0.lcssa442466484500 - br i1 %cmp.i.i244, label %if.else251, label %if.then227 + br i1 %cmp.i.i244, label %if.end255, label %if.then227 if.then227: ; preds = %if.end222 %36 = icmp ugt i64 %sub.ptr.div.i242, 2305843009213693951 %37 = select i1 %36, i64 -1, i64 %sub.ptr.sub.i241 %call232 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %37) #19 - to label %invoke.cont231 unwind label %lpad.loopexit.split-lp + to label %for.body242.preheader unwind label %lpad.loopexit.split-lp -invoke.cont231: ; preds = %if.then227 +for.body242.preheader: ; preds = %if.then227 %ip_names235 = getelementptr inbounds i8, ptr %request, i64 64 store ptr %call232, ptr %ip_names235, align 8 - %cmp241399.not = icmp eq ptr %ip_names.sroa.8.0.lcssa442466484500, %ip_names.sroa.0.0.lcssa440468482502 - br i1 %cmp241399.not, label %if.end255, label %for.body242 + br label %for.body242 -for.body242: ; preds = %invoke.cont231, %for.body242 - %i236.0400 = phi i64 [ %inc249, %for.body242 ], [ 0, %invoke.cont231 ] +for.body242: ; preds = %for.body242.preheader, %for.body242 + %i236.0400 = phi i64 [ %inc249, %for.body242 ], [ 0, %for.body242.preheader ] %add.ptr.i245 = getelementptr inbounds ptr, ptr %ip_names.sroa.0.0.lcssa440468482502, i64 %i236.0400 %38 = load ptr, ptr %add.ptr.i245, align 8 %39 = load ptr, ptr %ip_names235, align 8 @@ -3522,12 +3518,9 @@ for.body242: ; preds = %invoke.cont231, %fo %cmp241 = icmp ult i64 %inc249, %40 br i1 %cmp241, label %for.body242, label %if.then.i.i.i247, !llvm.loop !23 -if.else251: ; preds = %if.end222 +if.end255: ; preds = %if.end222 %ip_names254 = getelementptr inbounds i8, ptr %request, i64 64 store ptr null, ptr %ip_names254, align 8 - br label %if.end255 - -if.end255: ; preds = %invoke.cont231, %if.else251 %tobool.not.i.i.i246 = icmp eq ptr %ip_names.sroa.0.0.lcssa440468482502, null br i1 %tobool.not.i.i.i246, label %_ZNSt6vectorIPcSaIS0_EED2Ev.exit248, label %if.then.i.i.i247 diff --git a/bench/hdf5/optimized/H5PB.c.ll b/bench/hdf5/optimized/H5PB.c.ll index 062ebe1f051..5f29b1cd1a7 100644 --- a/bench/hdf5/optimized/H5PB.c.ll +++ b/bench/hdf5/optimized/H5PB.c.ll @@ -995,7 +995,7 @@ define range(i32 -1, 1) i32 @H5PB_read(ptr noundef %0, i32 noundef %1, i64 nound %93 = getelementptr inbounds i8, ptr %92, i64 %91 %94 = load i64, ptr %12, align 8 %95 = sub i64 %94, %91 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %4, ptr align 1 %93, i64 %95, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %4, ptr nonnull align 1 %93, i64 %95, i1 false) %96 = load ptr, ptr %60, align 8 %97 = icmp eq ptr %96, %79 %98 = getelementptr inbounds i8, ptr %79, i64 24 @@ -1930,7 +1930,7 @@ define range(i32 -1, 1) i32 @H5PB_write(ptr noundef %0, i32 noundef %1, i64 noun %78 = getelementptr inbounds i8, ptr %77, i64 %.recomposed %79 = load i64, ptr %11, align 8 %80 = sub i64 %79, %.recomposed - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %78, ptr align 1 %4, i64 %80, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %78, ptr align 1 %4, i64 %80, i1 false) %81 = getelementptr inbounds i8, ptr %75, i64 20 store i8 1, ptr %81, align 4 %82 = load ptr, ptr %59, align 8 diff --git a/bench/hermes/optimized/DebugInfo.cpp.ll b/bench/hermes/optimized/DebugInfo.cpp.ll index c9429f312a9..7cf767995d8 100644 --- a/bench/hermes/optimized/DebugInfo.cpp.ll +++ b/bench/hermes/optimized/DebugInfo.cpp.ll @@ -4019,30 +4019,22 @@ if.then4: ; preds = %if.then if.then11: ; preds = %if.then4 %idx.neg = sub i64 0, %sub.ptr.sub.i.i %add.ptr = getelementptr inbounds i8, ptr %1, i64 %idx.neg - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 - %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq i64 %sub.ptr.sub.i.i, 0 - br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, label %if.then.i.i.i.i.i.i.i.i.i - -if.then.i.i.i.i.i.i.i.i.i: ; preds = %if.then11 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr nonnull align 1 %add.ptr, i64 %sub.ptr.sub.i.i, i1 false) - %.pre101 = load ptr, ptr %_M_finish, align 8 - br label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit - -_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit: ; preds = %if.then11, %if.then.i.i.i.i.i.i.i.i.i - %2 = phi ptr [ %1, %if.then11 ], [ %.pre101, %if.then.i.i.i.i.i.i.i.i.i ] + %2 = load ptr, ptr %_M_finish, align 8 %add.ptr22 = getelementptr inbounds i8, ptr %2, i64 %sub.ptr.sub.i.i store ptr %add.ptr22, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit, label %if.then.i.i.i.i.i -if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i: ; preds = %if.then11 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %idx.neg.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 %idx.neg.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit -_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, %if.then.i.i.i.i.i +_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit: ; preds = %if.then11, %if.then.i.i.i.i.i %cmp6.i.i.i.i.i = icmp sgt i64 %sub.ptr.sub.i.i, 0 br i1 %cmp6.i.i.i.i.i, label %for.body.i.i.i.i.i, label %if.end79 @@ -4219,27 +4211,27 @@ if.then9: ; preds = %if.then %sub.ptr.rhs.cast.i = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %cmp15 = icmp ugt i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i.i - br i1 %cmp15, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEmEvRT_T0_.exit + br i1 %cmp15, label %if.then16, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEmEvRT_T0_.exit -_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit: ; preds = %if.then9 +if.then16: ; preds = %if.then9 %idx.neg = sub i64 0, %sub.ptr.sub.i.i.i %add.ptr = getelementptr inbounds i8, ptr %1, i64 %idx.neg - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr align 1 %add.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) - %.pre71 = load ptr, ptr %_M_finish, align 8 - %add.ptr27 = getelementptr inbounds i8, ptr %.pre71, i64 %sub.ptr.sub.i.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr nonnull align 1 %add.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) + %2 = load ptr, ptr %_M_finish, align 8 + %add.ptr27 = getelementptr inbounds i8, ptr %2, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %if.then.i.i.i.i.i26, label %if.then.i.i.i.i.i -if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i: ; preds = %if.then16 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %idx.neg.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 %idx.neg.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %if.then.i.i.i.i.i26 -if.then.i.i.i.i.i26: ; preds = %if.then.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i26: ; preds = %if.then.i.i.i.i.i, %if.then16 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %__position.coerce, ptr align 1 %__first.coerce, i64 %sub.ptr.sub.i.i.i, i1 false) br label %if.end101 @@ -4256,9 +4248,9 @@ if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIN9__gn br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_hET0_T_S8_S7_RSaIT1_E.exit _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_hET0_T_S8_S7_RSaIT1_E.exit: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEmEvRT_T0_.exit, %if.then.i.i.i.i.i.i.i.i - %2 = phi ptr [ %1, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] + %3 = phi ptr [ %1, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] %sub = sub nuw i64 %sub.ptr.sub.i.i.i, %sub.ptr.sub.i - %add.ptr50 = getelementptr inbounds i8, ptr %2, i64 %sub + %add.ptr50 = getelementptr inbounds i8, ptr %3, i64 %sub store ptr %add.ptr50, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i.i.i.i.i31 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i.i.i.i.i31, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit34, label %if.then.i.i.i.i.i.i.i.i.i32 @@ -4269,8 +4261,8 @@ if.then.i.i.i.i.i.i.i.i.i32: ; preds = %_ZSt22__uninitializ br label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit34 _ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit34: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_hET0_T_S8_S7_RSaIT1_E.exit, %if.then.i.i.i.i.i.i.i.i.i32 - %3 = phi ptr [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_hET0_T_S8_S7_RSaIT1_E.exit ], [ %.pre70, %if.then.i.i.i.i.i.i.i.i.i32 ] - %add.ptr58 = getelementptr inbounds i8, ptr %3, i64 %sub.ptr.sub.i + %4 = phi ptr [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_hET0_T_S8_S7_RSaIT1_E.exit ], [ %.pre70, %if.then.i.i.i.i.i.i.i.i.i32 ] + %add.ptr58 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr58, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i38 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i38, label %if.end101, label %if.then.i.i.i.i.i39 @@ -4280,8 +4272,8 @@ if.then.i.i.i.i.i39: ; preds = %_ZSt22__uninitializ br label %if.end101 if.else68: ; preds = %if.then - %4 = load ptr, ptr %this, align 8 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %4 to i64 + %5 = load ptr, ptr %this, align 8 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %5 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i.i %sub.i = sub i64 9223372036854775807, %sub.ptr.sub.i.i %cmp.i42 = icmp ult i64 %sub.i, %sub.ptr.sub.i.i.i @@ -4295,8 +4287,8 @@ _ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc.exit: ; preds = %if.else68 %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i.i, i64 %sub.ptr.sub.i.i.i) %add.i = add i64 %.sroa.speculated.i, %sub.ptr.sub.i.i %cmp7.i = icmp ult i64 %add.i, %sub.ptr.sub.i.i - %5 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 9223372036854775807) - %cond.i = select i1 %cmp7.i, i64 9223372036854775807, i64 %5 + %6 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 9223372036854775807) + %cond.i = select i1 %cmp7.i, i64 9223372036854775807, i64 %6 %cmp.not.i = icmp eq i64 %cond.i, 0 br i1 %cmp.not.i, label %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit, label %cond.true.i @@ -4308,11 +4300,11 @@ _ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorIhSaIh %cond.i43 = phi ptr [ %call5.i.i.i, %cond.true.i ], [ null, %_ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc.exit ] %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i44 = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i46 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i44, %sub.ptr.rhs.cast.i.i - %tobool.not.i.i.i.i.i.i.i.i.i47 = icmp eq ptr %__position.coerce, %4 + %tobool.not.i.i.i.i.i.i.i.i.i47 = icmp eq ptr %__position.coerce, %5 br i1 %tobool.not.i.i.i.i.i.i.i.i.i47, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_hET0_T_S8_S7_RSaIT1_E.exit56, label %if.then.i.i.i.i.i.i.i.i.i48 if.then.i.i.i.i.i.i.i.i.i48: ; preds = %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %cond.i43, ptr align 1 %4, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i46, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %cond.i43, ptr align 1 %5, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i46, i1 false) br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_hET0_T_S8_S7_RSaIT1_E.exit56 _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_hET0_T_S8_S7_RSaIT1_E.exit56: ; preds = %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit, %if.then.i.i.i.i.i.i.i.i.i48 @@ -4329,11 +4321,11 @@ if.then.i.i.i.i.i.i.i.i.i61: ; preds = %_ZSt22__uninitializ _ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit63: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_hET0_T_S8_S7_RSaIT1_E.exit56, %if.then.i.i.i.i.i.i.i.i.i61 %add.ptr.i.i.i.i.i.i.i.i.i62 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i55, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i59 - %tobool.not.i = icmp eq ptr %4, null + %tobool.not.i = icmp eq ptr %5, null br i1 %tobool.not.i, label %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit, label %if.then.i64 if.then.i64: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit63 - tail call void @_ZdlPv(ptr noundef nonnull %4) #19 + tail call void @_ZdlPv(ptr noundef nonnull %5) #19 br label %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit _ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit63, %if.then.i64 diff --git a/bench/hwloc/optimized/distances.ll b/bench/hwloc/optimized/distances.ll index 88a64c61a80..7475b47f787 100644 --- a/bench/hwloc/optimized/distances.ll +++ b/bench/hwloc/optimized/distances.ll @@ -803,7 +803,7 @@ define range(i32 -1, 1) i32 @hwloc_backend_distances_add_values(ptr nocapture re 13: ; preds = %9, %6 %14 = tail call ptr @__errno_location() #28 store i32 22, ptr %14, align 4 - br label %106 + br label %105 15: ; preds = %9 %16 = icmp eq i64 %5, 0 @@ -822,7 +822,7 @@ define range(i32 -1, 1) i32 @hwloc_backend_distances_add_values(ptr nocapture re 20: ; preds = %15 %21 = tail call ptr @__errno_location() #28 store i32 22, ptr %21, align 4 - br label %106 + br label %105 .preheader107: ; preds = %.preheader107.preheader, %.preheader107 %indvars.iv = phi i64 [ 0, %.preheader107.preheader ], [ %indvars.iv.next, %.preheader107 ] @@ -847,7 +847,7 @@ define range(i32 -1, 1) i32 @hwloc_backend_distances_add_values(ptr nocapture re 28: ; preds = %26 %29 = tail call ptr @__errno_location() #28 store i32 2, ptr %29, align 4 - br label %106 + br label %105 .lr.ph.i: ; preds = %26 %30 = sub i32 %2, %spec.select @@ -935,7 +935,7 @@ hwloc_internal_distances_restrict.exit: ; preds = %37 %62 = shl nuw nsw i64 %.pre-phi, 3 %63 = tail call noalias ptr @malloc(i64 noundef %62) #27 %.not96 = icmp eq ptr %63, null - br i1 %.not96, label %106, label %64 + br i1 %.not96, label %105, label %64 64: ; preds = %61 %65 = load ptr, ptr %3, align 8 @@ -944,13 +944,13 @@ hwloc_internal_distances_restrict.exit: ; preds = %37 br i1 %67, label %.lr.ph, label %._crit_edge 68: ; preds = %.lr.ph - %indvars.iv.next124 = add nuw nsw i64 %indvars.iv123, 1 - %exitcond127.not = icmp eq i64 %indvars.iv.next124, %.pre-phi - br i1 %exitcond127.not, label %._crit_edge, label %.lr.ph, !llvm.loop !13 + %indvars.iv.next121 = add nuw nsw i64 %indvars.iv120, 1 + %exitcond124.not = icmp eq i64 %indvars.iv.next121, %.pre-phi + br i1 %exitcond124.not, label %._crit_edge, label %.lr.ph, !llvm.loop !13 .lr.ph: ; preds = %64, %68 - %indvars.iv123 = phi i64 [ %indvars.iv.next124, %68 ], [ 1, %64 ] - %69 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv123 + %indvars.iv120 = phi i64 [ %indvars.iv.next121, %68 ], [ 1, %64 ] + %69 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv120 %70 = load ptr, ptr %69, align 8 %71 = load i32, ptr %70, align 8 %.not97 = icmp eq i32 %71, %66 @@ -964,26 +964,27 @@ hwloc_internal_distances_restrict.exit: ; preds = %37 %73 = shl nuw nsw i64 %.pre-phi, 2 %74 = tail call noalias ptr @malloc(i64 noundef %73) #27 %.not98 = icmp eq ptr %74, null - br i1 %.not98, label %105, label %.preheader105 + br i1 %.not98, label %104, label %.lr.ph112.preheader -.preheader105: ; preds = %.thread - %.not118 = icmp eq i32 %.084, 0 - br i1 %.not118, label %.loopexit106, label %.lr.ph112 +.lr.ph112.preheader: ; preds = %.thread + %umax = tail call i32 @llvm.umax.i32(i32 %.084, i32 1) + %wide.trip.count128 = zext i32 %umax to i64 + br label %.lr.ph112 -.lr.ph112: ; preds = %.preheader105, %.lr.ph112 - %indvars.iv128 = phi i64 [ %indvars.iv.next129, %.lr.ph112 ], [ 0, %.preheader105 ] - %75 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv128 +.lr.ph112: ; preds = %.lr.ph112.preheader, %.lr.ph112 + %indvars.iv125 = phi i64 [ 0, %.lr.ph112.preheader ], [ %indvars.iv.next126, %.lr.ph112 ] + %75 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv125 %76 = load ptr, ptr %75, align 8 %77 = load i32, ptr %76, align 8 - %78 = getelementptr inbounds i32, ptr %74, i64 %indvars.iv128 + %78 = getelementptr inbounds i32, ptr %74, i64 %indvars.iv125 store i32 %77, ptr %78, align 4 - %indvars.iv.next129 = add nuw nsw i64 %indvars.iv128, 1 - %exitcond132.not = icmp eq i64 %indvars.iv.next129, %.pre-phi - br i1 %exitcond132.not, label %.loopexit106, label %.lr.ph112, !llvm.loop !14 + %indvars.iv.next126 = add nuw nsw i64 %indvars.iv125, 1 + %exitcond129.not = icmp eq i64 %indvars.iv.next126, %wide.trip.count128 + br i1 %exitcond129.not, label %.loopexit106, label %.lr.ph112, !llvm.loop !14 -.loopexit106: ; preds = %.lr.ph112, %.preheader105, %._crit_edge - %.082102 = phi i32 [ %66, %._crit_edge ], [ -1, %.preheader105 ], [ -1, %.lr.ph112 ] - %.081 = phi ptr [ null, %._crit_edge ], [ %74, %.preheader105 ], [ %74, %.lr.ph112 ] +.loopexit106: ; preds = %.lr.ph112, %._crit_edge + %.082102 = phi i32 [ %66, %._crit_edge ], [ -1, %.lr.ph112 ] + %.081 = phi ptr [ null, %._crit_edge ], [ %74, %.lr.ph112 ] store i32 %.084, ptr %7, align 8 %79 = getelementptr inbounds i8, ptr %1, i64 64 store ptr %3, ptr %79, align 8 @@ -1009,70 +1010,72 @@ hwloc_internal_distances_restrict.exit: ; preds = %37 br label %90 90: ; preds = %86, %.loopexit106 - switch i32 %.082102, label %.preheader [ - i32 3, label %91 - i32 13, label %91 + switch i32 %.082102, label %.lr.ph117.preheader [ + i32 3, label %.lr.ph115.preheader + i32 13, label %.lr.ph115.preheader ] -.preheader: ; preds = %90 - %.not120 = icmp eq i32 %.084, 0 - br i1 %.not120, label %.loopexit, label %.lr.ph117 - -91: ; preds = %90, %90 - %.not119 = icmp eq i32 %.084, 0 - br i1 %.not119, label %.loopexit, label %.lr.ph115 - -.lr.ph115: ; preds = %91, %.lr.ph115 - %indvars.iv133 = phi i64 [ %indvars.iv.next134, %.lr.ph115 ], [ 0, %91 ] - %92 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv133 - %93 = load ptr, ptr %92, align 8 - %94 = getelementptr inbounds i8, ptr %93, i64 16 - %95 = load i32, ptr %94, align 8 - %96 = zext i32 %95 to i64 - %97 = load ptr, ptr %82, align 8 - %98 = getelementptr inbounds i64, ptr %97, i64 %indvars.iv133 - store i64 %96, ptr %98, align 8 - %indvars.iv.next134 = add nuw nsw i64 %indvars.iv133, 1 - %exitcond137.not = icmp eq i64 %indvars.iv.next134, %.pre-phi - br i1 %exitcond137.not, label %.loopexit, label %.lr.ph115, !llvm.loop !15 - -.lr.ph117: ; preds = %.preheader, %.lr.ph117 - %indvars.iv138 = phi i64 [ %indvars.iv.next139, %.lr.ph117 ], [ 0, %.preheader ] - %99 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv138 - %100 = load ptr, ptr %99, align 8 - %101 = getelementptr inbounds i8, ptr %100, i64 240 - %102 = load i64, ptr %101, align 8 - %103 = load ptr, ptr %82, align 8 - %104 = getelementptr inbounds i64, ptr %103, i64 %indvars.iv138 - store i64 %102, ptr %104, align 8 - %indvars.iv.next139 = add nuw nsw i64 %indvars.iv138, 1 - %exitcond142.not = icmp eq i64 %indvars.iv.next139, %.pre-phi - br i1 %exitcond142.not, label %.loopexit, label %.lr.ph117, !llvm.loop !16 - -105: ; preds = %.thread +.lr.ph117.preheader: ; preds = %90 + %umax139 = tail call i32 @llvm.umax.i32(i32 %.084, i32 1) + %wide.trip.count140 = zext i32 %umax139 to i64 + br label %.lr.ph117 + +.lr.ph115.preheader: ; preds = %90, %90 + %umax133 = tail call i32 @llvm.umax.i32(i32 %.084, i32 1) + %wide.trip.count134 = zext i32 %umax133 to i64 + br label %.lr.ph115 + +.lr.ph115: ; preds = %.lr.ph115.preheader, %.lr.ph115 + %indvars.iv130 = phi i64 [ 0, %.lr.ph115.preheader ], [ %indvars.iv.next131, %.lr.ph115 ] + %91 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv130 + %92 = load ptr, ptr %91, align 8 + %93 = getelementptr inbounds i8, ptr %92, i64 16 + %94 = load i32, ptr %93, align 8 + %95 = zext i32 %94 to i64 + %96 = load ptr, ptr %82, align 8 + %97 = getelementptr inbounds i64, ptr %96, i64 %indvars.iv130 + store i64 %95, ptr %97, align 8 + %indvars.iv.next131 = add nuw nsw i64 %indvars.iv130, 1 + %exitcond135.not = icmp eq i64 %indvars.iv.next131, %wide.trip.count134 + br i1 %exitcond135.not, label %.loopexit, label %.lr.ph115, !llvm.loop !15 + +.lr.ph117: ; preds = %.lr.ph117.preheader, %.lr.ph117 + %indvars.iv136 = phi i64 [ 0, %.lr.ph117.preheader ], [ %indvars.iv.next137, %.lr.ph117 ] + %98 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv136 + %99 = load ptr, ptr %98, align 8 + %100 = getelementptr inbounds i8, ptr %99, i64 240 + %101 = load i64, ptr %100, align 8 + %102 = load ptr, ptr %82, align 8 + %103 = getelementptr inbounds i64, ptr %102, i64 %indvars.iv136 + store i64 %101, ptr %103, align 8 + %indvars.iv.next137 = add nuw nsw i64 %indvars.iv136, 1 + %exitcond141.not = icmp eq i64 %indvars.iv.next137, %wide.trip.count140 + br i1 %exitcond141.not, label %.loopexit, label %.lr.ph117, !llvm.loop !16 + +104: ; preds = %.thread tail call void @free(ptr noundef %63) #25 - br label %106 + br label %105 -106: ; preds = %61, %105, %28, %20, %13 - %107 = load ptr, ptr %1, align 8 - tail call void @free(ptr noundef %107) #25 - %108 = getelementptr inbounds i8, ptr %1, i64 32 - %109 = load ptr, ptr %108, align 8 - tail call void @free(ptr noundef %109) #25 - %110 = getelementptr inbounds i8, ptr %1, i64 64 - %111 = load ptr, ptr %110, align 8 - tail call void @free(ptr noundef %111) #25 - %112 = getelementptr inbounds i8, ptr %1, i64 16 - %113 = load ptr, ptr %112, align 8 - tail call void @free(ptr noundef %113) #25 - %114 = getelementptr inbounds i8, ptr %1, i64 40 - %115 = load ptr, ptr %114, align 8 - tail call void @free(ptr noundef %115) #25 +105: ; preds = %61, %104, %28, %20, %13 + %106 = load ptr, ptr %1, align 8 + tail call void @free(ptr noundef %106) #25 + %107 = getelementptr inbounds i8, ptr %1, i64 32 + %108 = load ptr, ptr %107, align 8 + tail call void @free(ptr noundef %108) #25 + %109 = getelementptr inbounds i8, ptr %1, i64 64 + %110 = load ptr, ptr %109, align 8 + tail call void @free(ptr noundef %110) #25 + %111 = getelementptr inbounds i8, ptr %1, i64 16 + %112 = load ptr, ptr %111, align 8 + tail call void @free(ptr noundef %112) #25 + %113 = getelementptr inbounds i8, ptr %1, i64 40 + %114 = load ptr, ptr %113, align 8 + tail call void @free(ptr noundef %114) #25 tail call void @free(ptr noundef %1) #25 br label %.loopexit -.loopexit: ; preds = %.lr.ph115, %.lr.ph117, %91, %.preheader, %106 - %.083 = phi i32 [ -1, %106 ], [ 0, %.preheader ], [ 0, %91 ], [ 0, %.lr.ph117 ], [ 0, %.lr.ph115 ] +.loopexit: ; preds = %.lr.ph115, %.lr.ph117, %105 + %.083 = phi i32 [ -1, %105 ], [ 0, %.lr.ph117 ], [ 0, %.lr.ph115 ] ret i32 %.083 } diff --git a/bench/hwloc/optimized/hwloc-distrib.ll b/bench/hwloc/optimized/hwloc-distrib.ll index d282c64635d..355dec62e35 100644 --- a/bench/hwloc/optimized/hwloc-distrib.ll +++ b/bench/hwloc/optimized/hwloc-distrib.ll @@ -1656,12 +1656,12 @@ define internal fastcc void @hwloc_distrib(ptr nocapture noundef readonly %0, i3 br label %.lr.ph9 .lr.ph9: ; preds = %.lr.ph9.preheader, %.lr.ph9 - %indvars.iv21 = phi i64 [ 0, %.lr.ph9.preheader ], [ %indvars.iv.next22, %.lr.ph9 ] + %indvars.iv20 = phi i64 [ 0, %.lr.ph9.preheader ], [ %indvars.iv.next21, %.lr.ph9 ] %48 = tail call noalias ptr @hwloc_bitmap_dup(ptr noundef %22) #18 - %49 = getelementptr inbounds ptr, ptr %.06212, i64 %indvars.iv21 + %49 = getelementptr inbounds ptr, ptr %.06212, i64 %indvars.iv20 store ptr %48, ptr %49, align 8 - %indvars.iv.next22 = add nuw nsw i64 %indvars.iv21, 1 - %50 = icmp samesign ult i64 %indvars.iv.next22, %47 + %indvars.iv.next21 = add nuw nsw i64 %indvars.iv20, 1 + %50 = icmp samesign ult i64 %indvars.iv.next21, %47 br i1 %50, label %.lr.ph9, label %.loopexit, !llvm.loop !15 51: ; preds = %46 @@ -1685,8 +1685,8 @@ define internal fastcc void @hwloc_distrib(ptr nocapture noundef readonly %0, i3 %.165 = phi i32 [ %31, %.loopexit ], [ %.06411, %._crit_edge ] %.163 = phi ptr [ %59, %.loopexit ], [ %.06212, %._crit_edge ] %61 = add nuw i32 %.113, 1 - %exitcond24.not = icmp eq i32 %61, %1 - br i1 %exitcond24.not, label %._crit_edge15, label %14, !llvm.loop !16 + %exitcond23.not = icmp eq i32 %61, %1 + br i1 %exitcond23.not, label %._crit_edge15, label %14, !llvm.loop !16 ._crit_edge15: ; preds = %60, %6 ret void diff --git a/bench/hyperscan/optimized/limex_compile.cpp.ll b/bench/hyperscan/optimized/limex_compile.cpp.ll index aecd3144f22..389141970ed 100644 --- a/bench/hyperscan/optimized/limex_compile.cpp.ll +++ b/bench/hyperscan/optimized/limex_compile.cpp.ll @@ -20338,21 +20338,17 @@ for.body.i828: ; preds = %for.body.i828, %for %conv14.i = add i32 %offset.026.i, %444 %indvars.iv.next.i832 = add nuw nsw i64 %indvars.iv.i829, 1 %exitcond.not.i833 = icmp eq i64 %indvars.iv.next.i832, %wide.trip.count.i827 - br i1 %exitcond.not.i833, label %for.end.i834, label %for.body.i828, !llvm.loop !308 + br i1 %exitcond.not.i833, label %if.end.i.i836, label %for.body.i828, !llvm.loop !308 -for.end.i834: ; preds = %for.body.i828 - %cmp.i.i.i.i835 = icmp eq ptr %437, %438 - br i1 %cmp.i.i.i.i835, label %invoke.cont117, label %if.end.i.i836 - -if.end.i.i836: ; preds = %for.end.i834 +if.end.i.i836: ; preds = %for.body.i828 %idx.ext15.i = zext i32 %conv82 to i64 %add.ptr16.i = getelementptr inbounds i8, ptr %add.ptr, i64 %idx.ext15.i %add.ptr37.i.idx = shl nuw nsw i64 %sub.ptr.div.i.i809, 2 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr16.i, ptr nonnull align 4 %call5.i.i.i.i1895, i64 %add.ptr37.i.idx, i1 false) br label %invoke.cont117 -invoke.cont117: ; preds = %_ZN3ue210verify_u32ImEEjT_.exit.i815, %if.end.i.i836, %for.end.i834 - %repeatOffsets.sroa.0.122672278 = phi ptr [ %call5.i.i.i.i1895, %if.end.i.i836 ], [ %call5.i.i.i.i1895, %for.end.i834 ], [ null, %_ZN3ue210verify_u32ImEEjT_.exit.i815 ] +invoke.cont117: ; preds = %_ZN3ue210verify_u32ImEEjT_.exit.i815, %if.end.i.i836 + %repeatOffsets.sroa.0.122672278 = phi ptr [ %call5.i.i.i.i1895, %if.end.i.i836 ], [ null, %_ZN3ue210verify_u32ImEEjT_.exit.i815 ] %repeatOffset18.i = getelementptr inbounds i8, ptr %163, i64 368 store i32 %conv82, ptr %repeatOffset18.i, align 16 %repeatCount.i = getelementptr inbounds i8, ptr %163, i64 364 @@ -33499,19 +33495,19 @@ if.then9: ; preds = %if.then %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 2 %cmp15 = icmp ugt i64 %sub.ptr.div.i, %sub.ptr.div.i.i.i - br i1 %cmp15, label %_ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEmEvRT_T0_.exit + br i1 %cmp15, label %if.then16, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEmEvRT_T0_.exit -_ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit: ; preds = %if.then9 +if.then16: ; preds = %if.then9 %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i %add.ptr = getelementptr inbounds i32, ptr %1, i64 %idx.neg tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %add.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) - %.pre78 = load ptr, ptr %_M_finish, align 8 - %add.ptr27 = getelementptr inbounds i8, ptr %.pre78, i64 %sub.ptr.sub.i.i.i + %2 = load ptr, ptr %_M_finish, align 8 + %add.ptr27 = getelementptr inbounds i8, ptr %2, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %if.then.i.i.i.i.i30, label %if.then.i.i.i.i.i -if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i: ; preds = %if.then16 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 2 @@ -33520,7 +33516,7 @@ if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitializ tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %add.ptr.i.i.i.i.i, ptr align 4 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %if.then.i.i.i.i.i30 -if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, %if.then16 tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %__position.coerce, ptr align 4 %__first.coerce, i64 %sub.ptr.sub.i.i.i, i1 false) br label %if.end109 @@ -33537,9 +33533,9 @@ if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIN9__gn br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEPjjET0_T_SA_S9_RSaIT1_E.exit _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEPjjET0_T_SA_S9_RSaIT1_E.exit: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEmEvRT_T0_.exit, %if.then.i.i.i.i.i.i.i.i - %2 = phi ptr [ %1, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] + %3 = phi ptr [ %1, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] %sub = sub nuw nsw i64 %sub.ptr.div.i.i.i, %sub.ptr.div.i - %add.ptr50 = getelementptr inbounds i32, ptr %2, i64 %sub + %add.ptr50 = getelementptr inbounds i32, ptr %3, i64 %sub store ptr %add.ptr50, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i.i.i.i.i35 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i.i.i.i.i35, label %_ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit38, label %if.then.i.i.i.i.i.i.i.i.i36 @@ -33550,8 +33546,8 @@ if.then.i.i.i.i.i.i.i.i.i36: ; preds = %_ZSt22__uninitializ br label %_ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit38 _ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit38: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEPjjET0_T_SA_S9_RSaIT1_E.exit, %if.then.i.i.i.i.i.i.i.i.i36 - %3 = phi ptr [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEPjjET0_T_SA_S9_RSaIT1_E.exit ], [ %.pre77, %if.then.i.i.i.i.i.i.i.i.i36 ] - %add.ptr58 = getelementptr inbounds i8, ptr %3, i64 %sub.ptr.sub.i + %4 = phi ptr [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEPjjET0_T_SA_S9_RSaIT1_E.exit ], [ %.pre77, %if.then.i.i.i.i.i.i.i.i.i36 ] + %add.ptr58 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr58, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i42 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i42, label %if.end109, label %if.then.i.i.i.i.i43 @@ -33561,8 +33557,8 @@ if.then.i.i.i.i.i43: ; preds = %_ZSt22__uninitializ br label %if.end109 if.else68: ; preds = %if.then - %4 = load ptr, ptr %this, align 8 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %4 to i64 + %5 = load ptr, ptr %this, align 8 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %5 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i.i %sub.ptr.div.i.i = ashr exact i64 %sub.ptr.sub.i.i, 2 %sub.i = sub nsw i64 2305843009213693951, %sub.ptr.div.i.i @@ -33577,8 +33573,8 @@ _ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit: ; preds = %if.else68 %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i, i64 %sub.ptr.div.i.i.i) %add.i = add nsw i64 %.sroa.speculated.i, %sub.ptr.div.i.i %cmp7.i = icmp ult i64 %add.i, %sub.ptr.div.i.i - %5 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 2305843009213693951) - %cond.i = select i1 %cmp7.i, i64 2305843009213693951, i64 %5 + %6 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 2305843009213693951) + %cond.i = select i1 %cmp7.i, i64 2305843009213693951, i64 %6 %cmp.not.i = icmp eq i64 %cond.i, 0 br i1 %cmp.not.i, label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit, label %cond.true.i @@ -33591,11 +33587,11 @@ _ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorIjSaIj %cond.i47 = phi ptr [ %call5.i.i.i, %cond.true.i ], [ null, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit ] %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i48 = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i50 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i48, %sub.ptr.rhs.cast.i.i - %tobool.not.i.i.i.i.i.i.i.i.i51 = icmp eq ptr %__position.coerce, %4 + %tobool.not.i.i.i.i.i.i.i.i.i51 = icmp eq ptr %__position.coerce, %5 br i1 %tobool.not.i.i.i.i.i.i.i.i.i51, label %invoke.cont83, label %if.then.i.i.i.i.i.i.i.i.i52 if.then.i.i.i.i.i.i.i.i.i52: ; preds = %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %cond.i47, ptr align 4 %4, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i50, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %cond.i47, ptr align 4 %5, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i50, i1 false) br label %invoke.cont83 invoke.cont83: ; preds = %if.then.i.i.i.i.i.i.i.i.i52, %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit @@ -33612,11 +33608,11 @@ if.then.i.i.i.i.i.i.i.i.i65: ; preds = %invoke.cont83 invoke.cont87: ; preds = %if.then.i.i.i.i.i.i.i.i.i65, %invoke.cont83 %add.ptr.i.i.i.i.i.i.i.i.i66 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i59, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i63 - %tobool.not.i = icmp eq ptr %4, null + %tobool.not.i = icmp eq ptr %5, null br i1 %tobool.not.i, label %_ZNSt12_Vector_baseIjSaIjEE13_M_deallocateEPjm.exit, label %if.then.i68 if.then.i68: ; preds = %invoke.cont87 - tail call void @_ZdlPv(ptr noundef nonnull %4) #28 + tail call void @_ZdlPv(ptr noundef nonnull %5) #28 br label %_ZNSt12_Vector_baseIjSaIjEE13_M_deallocateEPjm.exit _ZNSt12_Vector_baseIjSaIjEE13_M_deallocateEPjm.exit: ; preds = %invoke.cont87, %if.then.i68 @@ -47562,21 +47558,17 @@ for.body.i829: ; preds = %for.body.i829, %for %conv14.i = add i32 %offset.026.i, %444 %indvars.iv.next.i833 = add nuw nsw i64 %indvars.iv.i830, 1 %exitcond.not.i834 = icmp eq i64 %indvars.iv.next.i833, %wide.trip.count.i828 - br i1 %exitcond.not.i834, label %for.end.i835, label %for.body.i829, !llvm.loop !764 + br i1 %exitcond.not.i834, label %if.end.i.i837, label %for.body.i829, !llvm.loop !764 -for.end.i835: ; preds = %for.body.i829 - %cmp.i.i.i.i836 = icmp eq ptr %437, %438 - br i1 %cmp.i.i.i.i836, label %invoke.cont115, label %if.end.i.i837 - -if.end.i.i837: ; preds = %for.end.i835 +if.end.i.i837: ; preds = %for.body.i829 %idx.ext15.i = zext i32 %conv81 to i64 %add.ptr16.i = getelementptr inbounds i8, ptr %add.ptr, i64 %idx.ext15.i %add.ptr37.i.idx = shl nuw nsw i64 %sub.ptr.div.i.i810, 2 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr16.i, ptr nonnull align 4 %call5.i.i.i.i1893, i64 %add.ptr37.i.idx, i1 false) br label %invoke.cont115 -invoke.cont115: ; preds = %_ZN3ue210verify_u32ImEEjT_.exit.i816, %if.end.i.i837, %for.end.i835 - %repeatOffsets.sroa.0.122652276 = phi ptr [ %call5.i.i.i.i1893, %if.end.i.i837 ], [ %call5.i.i.i.i1893, %for.end.i835 ], [ null, %_ZN3ue210verify_u32ImEEjT_.exit.i816 ] +invoke.cont115: ; preds = %_ZN3ue210verify_u32ImEEjT_.exit.i816, %if.end.i.i837 + %repeatOffsets.sroa.0.122652276 = phi ptr [ %call5.i.i.i.i1893, %if.end.i.i837 ], [ null, %_ZN3ue210verify_u32ImEEjT_.exit.i816 ] %repeatOffset18.i = getelementptr inbounds i8, ptr %163, i64 368 store i32 %conv81, ptr %repeatOffset18.i, align 16 %repeatCount.i = getelementptr inbounds i8, ptr %163, i64 364 @@ -54170,21 +54162,17 @@ for.body.i842: ; preds = %for.body.i842, %for %conv14.i = add i32 %offset.026.i, %473 %indvars.iv.next.i846 = add nuw nsw i64 %indvars.iv.i843, 1 %exitcond.not.i847 = icmp eq i64 %indvars.iv.next.i846, %wide.trip.count.i841 - br i1 %exitcond.not.i847, label %for.end.i848, label %for.body.i842, !llvm.loop !827 - -for.end.i848: ; preds = %for.body.i842 - %cmp.i.i.i.i849 = icmp eq ptr %466, %467 - br i1 %cmp.i.i.i.i849, label %invoke.cont115, label %if.end.i.i850 + br i1 %exitcond.not.i847, label %if.end.i.i850, label %for.body.i842, !llvm.loop !827 -if.end.i.i850: ; preds = %for.end.i848 +if.end.i.i850: ; preds = %for.body.i842 %idx.ext15.i = zext i32 %conv81 to i64 %add.ptr16.i = getelementptr inbounds i8, ptr %add.ptr, i64 %idx.ext15.i %add.ptr37.i.idx = shl nuw nsw i64 %sub.ptr.div.i.i823, 2 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr16.i, ptr nonnull align 4 %call5.i.i.i.i2068, i64 %add.ptr37.i.idx, i1 false) br label %invoke.cont115 -invoke.cont115: ; preds = %_ZN3ue210verify_u32ImEEjT_.exit.i829, %if.end.i.i850, %for.end.i848 - %repeatOffsets.sroa.0.124702481 = phi ptr [ %call5.i.i.i.i2068, %if.end.i.i850 ], [ %call5.i.i.i.i2068, %for.end.i848 ], [ null, %_ZN3ue210verify_u32ImEEjT_.exit.i829 ] +invoke.cont115: ; preds = %_ZN3ue210verify_u32ImEEjT_.exit.i829, %if.end.i.i850 + %repeatOffsets.sroa.0.124702481 = phi ptr [ %call5.i.i.i.i2068, %if.end.i.i850 ], [ null, %_ZN3ue210verify_u32ImEEjT_.exit.i829 ] %repeatOffset18.i = getelementptr inbounds i8, ptr %163, i64 368 store i32 %conv81, ptr %repeatOffset18.i, align 16 %repeatCount.i = getelementptr inbounds i8, ptr %163, i64 364 @@ -60775,21 +60763,17 @@ for.body.i842: ; preds = %for.body.i842, %for %conv14.i = add i32 %offset.026.i, %476 %indvars.iv.next.i846 = add nuw nsw i64 %indvars.iv.i843, 1 %exitcond.not.i847 = icmp eq i64 %indvars.iv.next.i846, %wide.trip.count.i841 - br i1 %exitcond.not.i847, label %for.end.i848, label %for.body.i842, !llvm.loop !890 - -for.end.i848: ; preds = %for.body.i842 - %cmp.i.i.i.i849 = icmp eq ptr %469, %470 - br i1 %cmp.i.i.i.i849, label %invoke.cont115, label %if.end.i.i850 + br i1 %exitcond.not.i847, label %if.end.i.i850, label %for.body.i842, !llvm.loop !890 -if.end.i.i850: ; preds = %for.end.i848 +if.end.i.i850: ; preds = %for.body.i842 %idx.ext15.i = zext i32 %conv81 to i64 %add.ptr16.i = getelementptr inbounds i8, ptr %add.ptr, i64 %idx.ext15.i %add.ptr37.i.idx = shl nuw nsw i64 %sub.ptr.div.i.i823, 2 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr16.i, ptr nonnull align 4 %call5.i.i.i.i2068, i64 %add.ptr37.i.idx, i1 false) br label %invoke.cont115 -invoke.cont115: ; preds = %_ZN3ue210verify_u32ImEEjT_.exit.i829, %if.end.i.i850, %for.end.i848 - %repeatOffsets.sroa.0.124702481 = phi ptr [ %call5.i.i.i.i2068, %if.end.i.i850 ], [ %call5.i.i.i.i2068, %for.end.i848 ], [ null, %_ZN3ue210verify_u32ImEEjT_.exit.i829 ] +invoke.cont115: ; preds = %_ZN3ue210verify_u32ImEEjT_.exit.i829, %if.end.i.i850 + %repeatOffsets.sroa.0.124702481 = phi ptr [ %call5.i.i.i.i2068, %if.end.i.i850 ], [ null, %_ZN3ue210verify_u32ImEEjT_.exit.i829 ] %repeatOffset18.i = getelementptr inbounds i8, ptr %166, i64 368 store i32 %conv81, ptr %repeatOffset18.i, align 16 %repeatCount.i = getelementptr inbounds i8, ptr %166, i64 364 @@ -67382,21 +67366,17 @@ for.body.i842: ; preds = %for.body.i842, %for %conv14.i = add i32 %offset.026.i, %475 %indvars.iv.next.i846 = add nuw nsw i64 %indvars.iv.i843, 1 %exitcond.not.i847 = icmp eq i64 %indvars.iv.next.i846, %wide.trip.count.i841 - br i1 %exitcond.not.i847, label %for.end.i848, label %for.body.i842, !llvm.loop !953 + br i1 %exitcond.not.i847, label %if.end.i.i850, label %for.body.i842, !llvm.loop !953 -for.end.i848: ; preds = %for.body.i842 - %cmp.i.i.i.i849 = icmp eq ptr %468, %469 - br i1 %cmp.i.i.i.i849, label %invoke.cont115, label %if.end.i.i850 - -if.end.i.i850: ; preds = %for.end.i848 +if.end.i.i850: ; preds = %for.body.i842 %idx.ext15.i = zext i32 %conv81 to i64 %add.ptr16.i = getelementptr inbounds i8, ptr %add.ptr, i64 %idx.ext15.i %add.ptr37.i.idx = shl nuw nsw i64 %sub.ptr.div.i.i823, 2 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr16.i, ptr nonnull align 4 %call5.i.i.i.i2068, i64 %add.ptr37.i.idx, i1 false) br label %invoke.cont115 -invoke.cont115: ; preds = %_ZN3ue210verify_u32ImEEjT_.exit.i829, %if.end.i.i850, %for.end.i848 - %repeatOffsets.sroa.0.124702481 = phi ptr [ %call5.i.i.i.i2068, %if.end.i.i850 ], [ %call5.i.i.i.i2068, %for.end.i848 ], [ null, %_ZN3ue210verify_u32ImEEjT_.exit.i829 ] +invoke.cont115: ; preds = %_ZN3ue210verify_u32ImEEjT_.exit.i829, %if.end.i.i850 + %repeatOffsets.sroa.0.124702481 = phi ptr [ %call5.i.i.i.i2068, %if.end.i.i850 ], [ null, %_ZN3ue210verify_u32ImEEjT_.exit.i829 ] %repeatOffset18.i = getelementptr inbounds i8, ptr %165, i64 368 store i32 %conv81, ptr %repeatOffset18.i, align 16 %repeatCount.i = getelementptr inbounds i8, ptr %165, i64 364 @@ -73988,21 +73968,17 @@ for.body.i842: ; preds = %for.body.i842, %for %conv14.i = add i32 %offset.026.i, %477 %indvars.iv.next.i846 = add nuw nsw i64 %indvars.iv.i843, 1 %exitcond.not.i847 = icmp eq i64 %indvars.iv.next.i846, %wide.trip.count.i841 - br i1 %exitcond.not.i847, label %for.end.i848, label %for.body.i842, !llvm.loop !1016 - -for.end.i848: ; preds = %for.body.i842 - %cmp.i.i.i.i849 = icmp eq ptr %470, %471 - br i1 %cmp.i.i.i.i849, label %invoke.cont115, label %if.end.i.i850 + br i1 %exitcond.not.i847, label %if.end.i.i850, label %for.body.i842, !llvm.loop !1016 -if.end.i.i850: ; preds = %for.end.i848 +if.end.i.i850: ; preds = %for.body.i842 %idx.ext15.i = zext i32 %conv81 to i64 %add.ptr16.i = getelementptr inbounds i8, ptr %add.ptr, i64 %idx.ext15.i %add.ptr37.i.idx = shl nuw nsw i64 %sub.ptr.div.i.i823, 2 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr16.i, ptr nonnull align 4 %call5.i.i.i.i2068, i64 %add.ptr37.i.idx, i1 false) br label %invoke.cont115 -invoke.cont115: ; preds = %_ZN3ue210verify_u32ImEEjT_.exit.i829, %if.end.i.i850, %for.end.i848 - %repeatOffsets.sroa.0.124702481 = phi ptr [ %call5.i.i.i.i2068, %if.end.i.i850 ], [ %call5.i.i.i.i2068, %for.end.i848 ], [ null, %_ZN3ue210verify_u32ImEEjT_.exit.i829 ] +invoke.cont115: ; preds = %_ZN3ue210verify_u32ImEEjT_.exit.i829, %if.end.i.i850 + %repeatOffsets.sroa.0.124702481 = phi ptr [ %call5.i.i.i.i2068, %if.end.i.i850 ], [ null, %_ZN3ue210verify_u32ImEEjT_.exit.i829 ] %repeatOffset18.i = getelementptr inbounds i8, ptr %167, i64 368 store i32 %conv81, ptr %repeatOffset18.i, align 16 %repeatCount.i = getelementptr inbounds i8, ptr %167, i64 364 diff --git a/bench/hyperscan/optimized/rose_build_long_lit.cpp.ll b/bench/hyperscan/optimized/rose_build_long_lit.cpp.ll index a3f6e6150aa..d8ea5e37b40 100644 --- a/bench/hyperscan/optimized/rose_build_long_lit.cpp.ll +++ b/bench/hyperscan/optimized/rose_build_long_lit.cpp.ll @@ -2695,37 +2695,29 @@ if.then9: ; preds = %if.then if.then16: ; preds = %if.then9 %idx.neg = sub i64 0, %sub.ptr.sub.i.i.i %add.ptr = getelementptr inbounds i8, ptr %1, i64 %idx.neg - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 - %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq i64 %sub.ptr.sub.i.i.i, 0 - br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, label %if.then.i.i.i.i.i.i.i.i.i - -if.then.i.i.i.i.i.i.i.i.i: ; preds = %if.then16 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr nonnull align 1 %add.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) %.pre209 = load ptr, ptr %_M_finish, align 8 - br label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit - -_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit: ; preds = %if.then.i.i.i.i.i.i.i.i.i, %if.then16 - %2 = phi ptr [ %1, %if.then16 ], [ %.pre209, %if.then.i.i.i.i.i.i.i.i.i ] - %add.ptr27 = getelementptr inbounds i8, ptr %2, i64 %sub.ptr.sub.i.i.i + %add.ptr27 = getelementptr inbounds i8, ptr %.pre209, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit, label %if.then.i.i.i.i.i -if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i: ; preds = %if.then16 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %.pre.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 %.pre.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit -_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit: ; preds = %if.then.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit +_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit: ; preds = %if.then.i.i.i.i.i, %if.then16 %cmp7.i.i.i.i.i = icmp sgt i64 %sub.ptr.sub.i.i.i, 0 br i1 %cmp7.i.i.i.i.i, label %iter.check292, label %if.end108 iter.check292: ; preds = %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit %min.iters.check290 = icmp samesign ult i64 %sub.ptr.sub.i.i.i, 8 - %3 = sub i64 %sub.ptr.rhs.cast.i, %sub.ptr.rhs.cast.i.i.i - %diff.check287 = icmp ult i64 %3, 32 + %2 = sub i64 %sub.ptr.rhs.cast.i, %sub.ptr.rhs.cast.i.i.i + %diff.check287 = icmp ult i64 %2, 32 %or.cond = or i1 %diff.check287, %min.iters.check290 br i1 %or.cond, label %for.body.i.i.i.i.i.preheader, label %vector.main.loop.iter.check294 @@ -2742,14 +2734,14 @@ vector.body299: ; preds = %vector.body299, %ve %next.gep301 = getelementptr i8, ptr %__position.coerce, i64 %index300 %next.gep303 = getelementptr i8, ptr %__first.coerce, i64 %index300 %wide.load305 = load <16 x i8>, ptr %next.gep303, align 1 - %4 = getelementptr i8, ptr %next.gep303, i64 16 - %wide.load306 = load <16 x i8>, ptr %4, align 1 + %3 = getelementptr i8, ptr %next.gep303, i64 16 + %wide.load306 = load <16 x i8>, ptr %3, align 1 store <16 x i8> %wide.load305, ptr %next.gep301, align 1 - %5 = getelementptr i8, ptr %next.gep301, i64 16 - store <16 x i8> %wide.load306, ptr %5, align 1 + %4 = getelementptr i8, ptr %next.gep301, i64 16 + store <16 x i8> %wide.load306, ptr %4, align 1 %index.next307 = add nuw i64 %index300, 32 - %6 = icmp eq i64 %index.next307, %n.vec297 - br i1 %6, label %middle.block289, label %vector.body299, !llvm.loop !83 + %5 = icmp eq i64 %index.next307, %n.vec297 + br i1 %5, label %middle.block289, label %vector.body299, !llvm.loop !83 middle.block289: ; preds = %vector.body299 %cmp.n298 = icmp eq i64 %sub.ptr.sub.i.i.i, %n.vec297 @@ -2776,8 +2768,8 @@ vec.epilog.vector.body331: ; preds = %vec.epilog.vector.b %wide.load335 = load <8 x i8>, ptr %next.gep334, align 1 store <8 x i8> %wide.load335, ptr %next.gep333, align 1 %index.next336 = add nuw i64 %index332, 8 - %7 = icmp eq i64 %index.next336, %n.vec320 - br i1 %7, label %vec.epilog.middle.block312, label %vec.epilog.vector.body331, !llvm.loop !84 + %6 = icmp eq i64 %index.next336, %n.vec320 + br i1 %6, label %vec.epilog.middle.block312, label %vec.epilog.vector.body331, !llvm.loop !84 vec.epilog.middle.block312: ; preds = %vec.epilog.vector.body331 %ind.end321 = and i64 %sub.ptr.sub.i.i.i, 7 @@ -2795,8 +2787,8 @@ for.body.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %__n.010.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %__n.010.i.i.i.i.i.ph, %for.body.i.i.i.i.i.preheader ] %__result.addr.09.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %__result.addr.09.i.i.i.i.i.ph, %for.body.i.i.i.i.i.preheader ] %__first.addr.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %__first.addr.08.i.i.i.i.i.ph, %for.body.i.i.i.i.i.preheader ] - %8 = load i8, ptr %__first.addr.08.i.i.i.i.i, align 1 - store i8 %8, ptr %__result.addr.09.i.i.i.i.i, align 1 + %7 = load i8, ptr %__first.addr.08.i.i.i.i.i, align 1 + store i8 %7, ptr %__result.addr.09.i.i.i.i.i, align 1 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.08.i.i.i.i.i, i64 1 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.09.i.i.i.i.i, i64 1 %dec.i.i.i.i.i = add nsw i64 %__n.010.i.i.i.i.i, -1 @@ -2812,8 +2804,8 @@ _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11ch iter.check: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEmEvRT_T0_.exit %min.iters.check = icmp samesign ult i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, 8 - %9 = sub i64 %sub.ptr.rhs.cast.i, %sub.ptr.rhs.cast.i.i.i - %diff.check = icmp ult i64 %9, 32 + %8 = sub i64 %sub.ptr.rhs.cast.i, %sub.ptr.rhs.cast.i.i.i + %diff.check = icmp ult i64 %8, 32 %or.cond337 = or i1 %diff.check, %min.iters.check br i1 %or.cond337, label %for.body.i.i.i.i.i.i.i.i.preheader, label %vector.main.loop.iter.check @@ -2830,14 +2822,14 @@ vector.body: ; preds = %vector.body, %vecto %next.gep = getelementptr i8, ptr %1, i64 %index %next.gep214 = getelementptr i8, ptr %incdec.ptr.i.i.i, i64 %index %wide.load = load <16 x i8>, ptr %next.gep214, align 1 - %10 = getelementptr i8, ptr %next.gep214, i64 16 - %wide.load216 = load <16 x i8>, ptr %10, align 1 + %9 = getelementptr i8, ptr %next.gep214, i64 16 + %wide.load216 = load <16 x i8>, ptr %9, align 1 store <16 x i8> %wide.load, ptr %next.gep, align 1 - %11 = getelementptr i8, ptr %next.gep, i64 16 - store <16 x i8> %wide.load216, ptr %11, align 1 + %10 = getelementptr i8, ptr %next.gep, i64 16 + store <16 x i8> %wide.load216, ptr %10, align 1 %index.next = add nuw i64 %index, 32 - %12 = icmp eq i64 %index.next, %n.vec - br i1 %12, label %middle.block, label %vector.body, !llvm.loop !86 + %11 = icmp eq i64 %index.next, %n.vec + br i1 %11, label %middle.block, label %vector.body, !llvm.loop !86 middle.block: ; preds = %vector.body %cmp.n = icmp eq i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, %n.vec @@ -2864,8 +2856,8 @@ vec.epilog.vector.body: ; preds = %vec.epilog.vector.b %wide.load234 = load <8 x i8>, ptr %next.gep233, align 1 store <8 x i8> %wide.load234, ptr %next.gep232, align 1 %index.next235 = add nuw i64 %index231, 8 - %13 = icmp eq i64 %index.next235, %n.vec220 - br i1 %13, label %vec.epilog.middle.block, label %vec.epilog.vector.body, !llvm.loop !87 + %12 = icmp eq i64 %index.next235, %n.vec220 + br i1 %12, label %vec.epilog.middle.block, label %vec.epilog.vector.body, !llvm.loop !87 vec.epilog.middle.block: ; preds = %vec.epilog.vector.body %ind.end221 = and i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, 7 @@ -2883,8 +2875,8 @@ for.body.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %__n.010.i.i.i.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i ], [ %__n.010.i.i.i.i.i.i.i.i.ph, %for.body.i.i.i.i.i.i.i.i.preheader ] %__result.addr.09.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i ], [ %__result.addr.09.i.i.i.i.i.i.i.i.ph, %for.body.i.i.i.i.i.i.i.i.preheader ] %__first.addr.08.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i ], [ %__first.addr.08.i.i.i.i.i.i.i.i.ph, %for.body.i.i.i.i.i.i.i.i.preheader ] - %14 = load i8, ptr %__first.addr.08.i.i.i.i.i.i.i.i, align 1 - store i8 %14, ptr %__result.addr.09.i.i.i.i.i.i.i.i, align 1 + %13 = load i8, ptr %__first.addr.08.i.i.i.i.i.i.i.i, align 1 + store i8 %13, ptr %__result.addr.09.i.i.i.i.i.i.i.i, align 1 %incdec.ptr.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.08.i.i.i.i.i.i.i.i, i64 1 %incdec.ptr1.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.09.i.i.i.i.i.i.i.i, i64 1 %dec.i.i.i.i.i.i.i.i = add nsw i64 %__n.010.i.i.i.i.i.i.i.i, -1 @@ -2896,15 +2888,15 @@ _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basi br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPhhET0_T_SD_SC_RSaIT1_E.exit _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPhhET0_T_SD_SC_RSaIT1_E.exit: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPhhET0_T_SD_SC_RSaIT1_E.exit.loopexit, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEmEvRT_T0_.exit - %15 = phi ptr [ %.pre, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPhhET0_T_SD_SC_RSaIT1_E.exit.loopexit ], [ %1, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEmEvRT_T0_.exit ] + %14 = phi ptr [ %.pre, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPhhET0_T_SD_SC_RSaIT1_E.exit.loopexit ], [ %1, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEmEvRT_T0_.exit ] %sub = sub i64 %sub.ptr.sub.i.i.i, %sub.ptr.sub.i - %add.ptr50 = getelementptr inbounds i8, ptr %15, i64 %sub + %add.ptr50 = getelementptr inbounds i8, ptr %14, i64 %sub store ptr %add.ptr50, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i.i.i.i.i145 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i.i.i.i.i145, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit148.thread, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit148 _ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit148.thread: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPhhET0_T_SD_SC_RSaIT1_E.exit - %add.ptr581 = getelementptr inbounds i8, ptr %15, i64 %sub.ptr.sub.i.i.i + %add.ptr581 = getelementptr inbounds i8, ptr %14, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr581, ptr %_M_finish, align 8 br label %if.end108 @@ -2918,8 +2910,8 @@ _ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit148: ; preds = %_ZSt iter.check241: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit148 %min.iters.check239 = icmp samesign ult i64 %sub.ptr.sub.i, 8 - %16 = sub i64 %sub.ptr.rhs.cast.i, %sub.ptr.rhs.cast.i.i.i - %diff.check237 = icmp ult i64 %16, 32 + %15 = sub i64 %sub.ptr.rhs.cast.i, %sub.ptr.rhs.cast.i.i.i + %diff.check237 = icmp ult i64 %15, 32 %or.cond338 = or i1 %diff.check237, %min.iters.check239 br i1 %or.cond338, label %for.body.i.i.i.i.i158.preheader, label %vector.main.loop.iter.check243 @@ -2936,14 +2928,14 @@ vector.body248: ; preds = %vector.body248, %ve %next.gep250 = getelementptr i8, ptr %__position.coerce, i64 %index249 %next.gep252 = getelementptr i8, ptr %__first.coerce, i64 %index249 %wide.load254 = load <16 x i8>, ptr %next.gep252, align 1 - %17 = getelementptr i8, ptr %next.gep252, i64 16 - %wide.load255 = load <16 x i8>, ptr %17, align 1 + %16 = getelementptr i8, ptr %next.gep252, i64 16 + %wide.load255 = load <16 x i8>, ptr %16, align 1 store <16 x i8> %wide.load254, ptr %next.gep250, align 1 - %18 = getelementptr i8, ptr %next.gep250, i64 16 - store <16 x i8> %wide.load255, ptr %18, align 1 + %17 = getelementptr i8, ptr %next.gep250, i64 16 + store <16 x i8> %wide.load255, ptr %17, align 1 %index.next256 = add nuw i64 %index249, 32 - %19 = icmp eq i64 %index.next256, %n.vec246 - br i1 %19, label %middle.block238, label %vector.body248, !llvm.loop !89 + %18 = icmp eq i64 %index.next256, %n.vec246 + br i1 %18, label %middle.block238, label %vector.body248, !llvm.loop !89 middle.block238: ; preds = %vector.body248 %cmp.n247 = icmp eq i64 %sub.ptr.sub.i, %n.vec246 @@ -2970,8 +2962,8 @@ vec.epilog.vector.body280: ; preds = %vec.epilog.vector.b %wide.load284 = load <8 x i8>, ptr %next.gep283, align 1 store <8 x i8> %wide.load284, ptr %next.gep282, align 1 %index.next285 = add nuw i64 %index281, 8 - %20 = icmp eq i64 %index.next285, %n.vec269 - br i1 %20, label %vec.epilog.middle.block261, label %vec.epilog.vector.body280, !llvm.loop !90 + %19 = icmp eq i64 %index.next285, %n.vec269 + br i1 %19, label %vec.epilog.middle.block261, label %vec.epilog.vector.body280, !llvm.loop !90 vec.epilog.middle.block261: ; preds = %vec.epilog.vector.body280 %ind.end270 = and i64 %sub.ptr.sub.i, 7 @@ -2989,8 +2981,8 @@ for.body.i.i.i.i.i158: ; preds = %for.body.i.i.i.i.i1 %__n.010.i.i.i.i.i159 = phi i64 [ %dec.i.i.i.i.i164, %for.body.i.i.i.i.i158 ], [ %__n.010.i.i.i.i.i159.ph, %for.body.i.i.i.i.i158.preheader ] %__result.addr.09.i.i.i.i.i160 = phi ptr [ %incdec.ptr1.i.i.i.i.i163, %for.body.i.i.i.i.i158 ], [ %__result.addr.09.i.i.i.i.i160.ph, %for.body.i.i.i.i.i158.preheader ] %__first.addr.08.i.i.i.i.i161 = phi ptr [ %incdec.ptr.i.i.i.i.i162, %for.body.i.i.i.i.i158 ], [ %__first.addr.08.i.i.i.i.i161.ph, %for.body.i.i.i.i.i158.preheader ] - %21 = load i8, ptr %__first.addr.08.i.i.i.i.i161, align 1 - store i8 %21, ptr %__result.addr.09.i.i.i.i.i160, align 1 + %20 = load i8, ptr %__first.addr.08.i.i.i.i.i161, align 1 + store i8 %20, ptr %__result.addr.09.i.i.i.i.i160, align 1 %incdec.ptr.i.i.i.i.i162 = getelementptr inbounds i8, ptr %__first.addr.08.i.i.i.i.i161, i64 1 %incdec.ptr1.i.i.i.i.i163 = getelementptr inbounds i8, ptr %__result.addr.09.i.i.i.i.i160, i64 1 %dec.i.i.i.i.i164 = add nsw i64 %__n.010.i.i.i.i.i159, -1 @@ -2998,8 +2990,8 @@ for.body.i.i.i.i.i158: ; preds = %for.body.i.i.i.i.i1 br i1 %cmp.i.i.i.i.i165, label %for.body.i.i.i.i.i158, label %if.end108, !llvm.loop !91 if.else68: ; preds = %if.then - %22 = load ptr, ptr %this, align 8 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %22 to i64 + %21 = load ptr, ptr %this, align 8 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %21 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i.i %sub.i = sub i64 9223372036854775807, %sub.ptr.sub.i.i %cmp.i167 = icmp ult i64 %sub.i, %sub.ptr.sub.i.i.i @@ -3013,8 +3005,8 @@ _ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc.exit: ; preds = %if.else68 %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i.i, i64 %sub.ptr.sub.i.i.i) %add.i = add i64 %.sroa.speculated.i, %sub.ptr.sub.i.i %cmp7.i = icmp ult i64 %add.i, %sub.ptr.sub.i.i - %23 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 9223372036854775807) - %cond.i = select i1 %cmp7.i, i64 9223372036854775807, i64 %23 + %22 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 9223372036854775807) + %cond.i = select i1 %cmp7.i, i64 9223372036854775807, i64 %22 %cmp.not.i = icmp eq i64 %cond.i, 0 br i1 %cmp.not.i, label %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit, label %_ZNSt16allocator_traitsISaIhEE8allocateERS0_m.exit.i @@ -3026,11 +3018,11 @@ _ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit: ; preds = %_ZNSt16allocator_tr %cond.i168 = phi ptr [ %call5.i.i.i, %_ZNSt16allocator_traitsISaIhEE8allocateERS0_m.exit.i ], [ null, %_ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc.exit ] %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i169 = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i171 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i169, %sub.ptr.rhs.cast.i.i - %tobool.not.i.i.i.i.i.i.i.i.i172 = icmp eq ptr %22, %__position.coerce + %tobool.not.i.i.i.i.i.i.i.i.i172 = icmp eq ptr %21, %__position.coerce br i1 %tobool.not.i.i.i.i.i.i.i.i.i172, label %invoke.cont, label %if.then.i.i.i.i.i.i.i.i.i173 if.then.i.i.i.i.i.i.i.i.i173: ; preds = %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %cond.i168, ptr align 1 %22, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i171, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %cond.i168, ptr align 1 %21, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i171, i1 false) br label %invoke.cont invoke.cont: ; preds = %if.then.i.i.i.i.i.i.i.i.i173, %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit @@ -3040,10 +3032,10 @@ invoke.cont: ; preds = %if.then.i.i.i.i.i.i for.body.i.i.i.i.i.i.i.i180.preheader: ; preds = %invoke.cont tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i.i.i.i.i174, ptr align 1 %__first.coerce, i64 %sub.ptr.sub.i.i.i, i1 false) - %24 = add i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i169, %sub.ptr.lhs.cast.i.i.i - %25 = add i64 %sub.ptr.rhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i - %26 = sub i64 %24, %25 - %scevgep = getelementptr i8, ptr %cond.i168, i64 %26 + %23 = add i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i169, %sub.ptr.lhs.cast.i.i.i + %24 = add i64 %sub.ptr.rhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i + %25 = sub i64 %23, %24 + %scevgep = getelementptr i8, ptr %cond.i168, i64 %25 br label %invoke.cont83 invoke.cont83: ; preds = %for.body.i.i.i.i.i.i.i.i180.preheader, %invoke.cont @@ -3058,11 +3050,11 @@ if.then.i.i.i.i.i.i.i.i.i193: ; preds = %invoke.cont83 invoke.cont87: ; preds = %if.then.i.i.i.i.i.i.i.i.i193, %invoke.cont83 %add.ptr.i.i.i.i.i.i.i.i.i194 = getelementptr inbounds i8, ptr %__result.addr.0.lcssa.i.i.i.i.i.i.i.i179, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i191 - %tobool.not.i = icmp eq ptr %22, null + %tobool.not.i = icmp eq ptr %21, null br i1 %tobool.not.i, label %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit, label %if.then.i196 if.then.i196: ; preds = %invoke.cont87 - tail call void @_ZdlPv(ptr noundef nonnull %22) #28 + tail call void @_ZdlPv(ptr noundef nonnull %21) #28 br label %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit _ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit: ; preds = %if.then.i196, %invoke.cont87 diff --git a/bench/hyperscan/optimized/rose_build_matchers.cpp.ll b/bench/hyperscan/optimized/rose_build_matchers.cpp.ll index 6c48945c60d..75e14060657 100644 --- a/bench/hyperscan/optimized/rose_build_matchers.cpp.ll +++ b/bench/hyperscan/optimized/rose_build_matchers.cpp.ll @@ -6991,16 +6991,12 @@ while.end: ; preds = %while.end.loopexit, %54 = phi ptr [ %.pre150, %while.end.loopexit ], [ %47, %while.cond.preheader ] %55 = phi ptr [ %.pre, %while.end.loopexit ], [ %46, %while.cond.preheader ] %cmp.i.i115 = icmp eq ptr %55, %54 - br i1 %cmp.i.i115, label %if.end49, label %for.cond.preheader + br i1 %cmp.i.i115, label %if.end49, label %for.body.lr.ph -for.cond.preheader: ; preds = %while.end +for.body.lr.ph: ; preds = %while.end %sub.ptr.lhs.cast.i117141 = ptrtoint ptr %54 to i64 %sub.ptr.rhs.cast.i118142 = ptrtoint ptr %55 to i64 %sub.ptr.sub.i119143 = sub i64 %sub.ptr.lhs.cast.i117141, %sub.ptr.rhs.cast.i118142 - %cmp36144.not = icmp eq i64 %sub.ptr.sub.i119143, 0 - br i1 %cmp36144.not, label %if.end49, label %for.body.lr.ph - -for.body.lr.ph: ; preds = %for.cond.preheader %cmp46 = getelementptr inbounds i8, ptr %id, i64 88 br label %for.body @@ -7035,7 +7031,7 @@ for.body: ; preds = %for.body, %for.body %cmp36 = icmp ult i64 %inc, %sub.ptr.sub.i119 br i1 %cmp36, label %for.body, label %if.end49, !llvm.loop !188 -if.end49: ; preds = %for.body, %for.cond.preheader, %while.end +if.end49: ; preds = %for.body, %while.end %brmerge151.not = and i1 %cmp.i.i.i38.i.not, %cs.0.lcssa.i br i1 %brmerge151.not, label %for.body57.lr.ph, label %if.end72 @@ -16054,7 +16050,7 @@ if.then: ; preds = %_ZNKSt4lessIN3ue212 %m_capacity.i.i = getelementptr inbounds i8, ptr %this, i64 16 %10 = load i64, ptr %m_capacity.i.i, align 8, !noalias !436 %cmp.not.i = icmp eq i64 %10, %1 - br i1 %cmp.not.i, label %if.then.i, label %if.then7.i.i + br i1 %cmp.not.i, label %if.then.i, label %if.else.i if.then.thread: ; preds = %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail17vertex_descriptorINS3_9ue2_graphINS3_9RoseGraphENS3_15RoseVertexPropsENS3_13RoseEdgePropsEEEEELb0EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit store ptr %7, ptr %agg.tmp14, align 8 @@ -16076,7 +16072,7 @@ if.then.i: ; preds = %if.then.thread, %if %.pre = load ptr, ptr %agg.tmp12, align 8 br label %cleanup -if.then7.i.i: ; preds = %if.then +if.else.i: ; preds = %if.then %sub.ptr.lhs.cast.i = ptrtoint ptr %7 to i64 %sub.ptr.rhs.cast.i = ptrtoint ptr %0 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i @@ -16084,13 +16080,13 @@ if.then7.i.i: ; preds = %if.then %tobool.i.i.not.i.i = icmp eq ptr %0, null br i1 %tobool.i.i.not.i.i, label %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212graph_detail17vertex_descriptorINS3_9ue2_graphINS3_9RoseGraphENS3_15RoseVertexPropsENS3_13RoseEdgePropsEEEEESaIvEvEEPSB_SE_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SI_E4typeERT_SH_SH_SI_.exit.i.i, label %if.then.i.i.i.i, !prof !82 -if.then.i.i.i.i: ; preds = %if.then7.i.i +if.then.i.i.i.i: ; preds = %if.else.i tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %add.ptr.i, ptr noundef nonnull align 8 dereferenceable(16) %add.ptr.i.i, i64 16, i1 false), !noalias !436 %.pre.i.i = load i64, ptr %m_size.i, align 8, !noalias !436 br label %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212graph_detail17vertex_descriptorINS3_9ue2_graphINS3_9RoseGraphENS3_15RoseVertexPropsENS3_13RoseEdgePropsEEEEESaIvEvEEPSB_SE_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SI_E4typeERT_SH_SH_SI_.exit.i.i -_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212graph_detail17vertex_descriptorINS3_9ue2_graphINS3_9RoseGraphENS3_15RoseVertexPropsENS3_13RoseEdgePropsEEEEESaIvEvEEPSB_SE_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SI_E4typeERT_SH_SH_SI_.exit.i.i: ; preds = %if.then.i.i.i.i, %if.then7.i.i - %13 = phi i64 [ %1, %if.then7.i.i ], [ %.pre.i.i, %if.then.i.i.i.i ] +_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212graph_detail17vertex_descriptorINS3_9ue2_graphINS3_9RoseGraphENS3_15RoseVertexPropsENS3_13RoseEdgePropsEEEEESaIvEvEEPSB_SE_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SI_E4typeERT_SH_SH_SI_.exit.i.i: ; preds = %if.then.i.i.i.i, %if.else.i + %13 = phi i64 [ %1, %if.else.i ], [ %.pre.i.i, %if.then.i.i.i.i ] %add13.i.i = add i64 %13, 1 store i64 %add13.i.i, ptr %m_size.i, align 8, !noalias !436 %tobool.not.i.i.i = icmp eq ptr %add.ptr.i.i, %7 diff --git a/bench/image-rs/optimized/1njpscpjlgoe3i07.ll b/bench/image-rs/optimized/1njpscpjlgoe3i07.ll index 7b41aaefd7a..40f7938401a 100644 --- a/bench/image-rs/optimized/1njpscpjlgoe3i07.ll +++ b/bench/image-rs/optimized/1njpscpjlgoe3i07.ll @@ -1475,13 +1475,13 @@ define hidden noundef ptr @_ZN3std2io4Read14read_buf_exact17h63768ac15d1be8d0E(p %10 = load i64, ptr %9, align 8 %11 = load ptr, ptr %1, align 8, !nonnull !5, !align !32 %12 = getelementptr inbounds i8, ptr %1, i64 24 - %.promoted19 = load i64, ptr %7, align 8, !alias.scope !183, !noalias !186 - %.promoted20 = load i64, ptr %12, align 8, !alias.scope !188, !noalias !191 + %.promoted20 = load i64, ptr %7, align 8, !alias.scope !183, !noalias !186 + %.promoted21 = load i64, ptr %12, align 8, !alias.scope !188, !noalias !191 br label %13 13: ; preds = %19, %3 - %.0.sroa.speculated.i.i.i.i21 = phi i64 [ %.0.sroa.speculated.i.i.i.i, %19 ], [ %.promoted20, %3 ] - %14 = phi i64 [ %25, %19 ], [ %.promoted19, %3 ] + %.0.sroa.speculated.i.i.i.i22 = phi i64 [ %.0.sroa.speculated.i.i.i.i, %19 ], [ %.promoted21, %3 ] + %14 = phi i64 [ %25, %19 ], [ %.promoted20, %3 ] %15 = phi i64 [ %24, %19 ], [ %.promoted, %3 ] %.not = icmp eq i64 %5, %15 br i1 %.not, label %.loopexit, label %16 @@ -1497,8 +1497,8 @@ define hidden noundef ptr @_ZN3std2io4Read14read_buf_exact17h63768ac15d1be8d0E(p tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %15, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1fb7ff8ae5a2b866dafd4482df872917.46) #37, !noalias !196 unreachable -.loopexit: ; preds = %13, %27 - %.011 = phi ptr [ %28, %27 ], [ null, %13 ] +.loopexit: ; preds = %13, %26 + %.011 = phi ptr [ %27, %26 ], [ null, %13 ] ret ptr %.011 19: ; preds = %16 @@ -1510,16 +1510,16 @@ define hidden noundef ptr @_ZN3std2io4Read14read_buf_exact17h63768ac15d1be8d0E(p %23 = getelementptr inbounds i8, ptr %11, i64 %15 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %23, ptr nonnull readonly align 1 %20, i64 %.0.sroa.speculated.i.i20.i, i1 false), !alias.scope !199, !noalias !203 %24 = add i64 %.0.sroa.speculated.i.i20.i, %15 - %.0.sroa.speculated.i.i.i.i = tail call noundef i64 @llvm.umax.i64(i64 %.0.sroa.speculated.i.i.i.i21, i64 %24) + %.0.sroa.speculated.i.i.i.i = tail call noundef i64 @llvm.umax.i64(i64 %.0.sroa.speculated.i.i.i.i22, i64 %24) store i64 %.0.sroa.speculated.i.i.i.i, ptr %12, align 8, !alias.scope !188, !noalias !191 store i64 %24, ptr %6, align 8, !alias.scope !188, !noalias !191 %25 = add i64 %.0.sroa.speculated.i.i20.i, %14 store i64 %25, ptr %7, align 8, !alias.scope !183, !noalias !186 - %26 = icmp eq i64 %.0.sroa.speculated.i.i20.i, 0 - br i1 %26, label %27, label %13 + %.not14 = icmp ugt i64 %10, %14 + br i1 %.not14, label %13, label %26 -27: ; preds = %19 - %28 = tail call noundef nonnull ptr @_ZN3std2io5error5Error3new17h5e4fb20f1602c2aeE(i8 noundef 37, ptr noalias noundef nonnull readonly align 1 @anon.1fb7ff8ae5a2b866dafd4482df872917.11, i64 noundef 21) +26: ; preds = %19 + %27 = tail call noundef nonnull ptr @_ZN3std2io5error5Error3new17h5e4fb20f1602c2aeE(i8 noundef 37, ptr noalias noundef nonnull readonly align 1 @anon.1fb7ff8ae5a2b866dafd4482df872917.11, i64 noundef 21) br label %.loopexit } @@ -1536,13 +1536,13 @@ define hidden noundef ptr @_ZN3std2io4Read14read_buf_exact17he6d9f7ddd3fa9b7dE(p %11 = load i64, ptr %10, align 8 %12 = load ptr, ptr %1, align 8, !nonnull !5, !align !32 %13 = getelementptr inbounds i8, ptr %1, i64 24 - %.promoted19 = load i64, ptr %7, align 8, !alias.scope !205, !noalias !208 - %.promoted20 = load i64, ptr %13, align 8, !alias.scope !210, !noalias !213 + %.promoted20 = load i64, ptr %7, align 8, !alias.scope !205, !noalias !208 + %.promoted21 = load i64, ptr %13, align 8, !alias.scope !210, !noalias !213 br label %14 14: ; preds = %20, %3 - %.0.sroa.speculated.i.i.i.i21 = phi i64 [ %.0.sroa.speculated.i.i.i.i, %20 ], [ %.promoted20, %3 ] - %15 = phi i64 [ %26, %20 ], [ %.promoted19, %3 ] + %.0.sroa.speculated.i.i.i.i22 = phi i64 [ %.0.sroa.speculated.i.i.i.i, %20 ], [ %.promoted21, %3 ] + %15 = phi i64 [ %26, %20 ], [ %.promoted20, %3 ] %16 = phi i64 [ %25, %20 ], [ %.promoted, %3 ] %.not = icmp eq i64 %5, %16 br i1 %.not, label %.loopexit, label %17 @@ -1558,8 +1558,8 @@ define hidden noundef ptr @_ZN3std2io4Read14read_buf_exact17he6d9f7ddd3fa9b7dE(p tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %16, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1fb7ff8ae5a2b866dafd4482df872917.46) #37, !noalias !218 unreachable -.loopexit: ; preds = %14, %28 - %.011 = phi ptr [ %29, %28 ], [ null, %14 ] +.loopexit: ; preds = %14, %27 + %.011 = phi ptr [ %28, %27 ], [ null, %14 ] ret ptr %.011 20: ; preds = %17 @@ -1571,16 +1571,16 @@ define hidden noundef ptr @_ZN3std2io4Read14read_buf_exact17he6d9f7ddd3fa9b7dE(p %24 = getelementptr inbounds i8, ptr %12, i64 %16 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %24, ptr nonnull readonly align 1 %21, i64 %.0.sroa.speculated.i.i20.i, i1 false), !alias.scope !221, !noalias !225 %25 = add i64 %.0.sroa.speculated.i.i20.i, %16 - %.0.sroa.speculated.i.i.i.i = tail call noundef i64 @llvm.umax.i64(i64 %.0.sroa.speculated.i.i.i.i21, i64 %25) + %.0.sroa.speculated.i.i.i.i = tail call noundef i64 @llvm.umax.i64(i64 %.0.sroa.speculated.i.i.i.i22, i64 %25) store i64 %.0.sroa.speculated.i.i.i.i, ptr %13, align 8, !alias.scope !210, !noalias !213 store i64 %25, ptr %6, align 8, !alias.scope !210, !noalias !213 %26 = add i64 %.0.sroa.speculated.i.i20.i, %15 store i64 %26, ptr %7, align 8, !alias.scope !205, !noalias !208 - %27 = icmp eq i64 %.0.sroa.speculated.i.i20.i, 0 - br i1 %27, label %28, label %14 + %.not14 = icmp ugt i64 %11, %15 + br i1 %.not14, label %14, label %27 -28: ; preds = %20 - %29 = tail call noundef nonnull ptr @_ZN3std2io5error5Error3new17h5e4fb20f1602c2aeE(i8 noundef 37, ptr noalias noundef nonnull readonly align 1 @anon.1fb7ff8ae5a2b866dafd4482df872917.11, i64 noundef 21) +27: ; preds = %20 + %28 = tail call noundef nonnull ptr @_ZN3std2io5error5Error3new17h5e4fb20f1602c2aeE(i8 noundef 37, ptr noalias noundef nonnull readonly align 1 @anon.1fb7ff8ae5a2b866dafd4482df872917.11, i64 noundef 21) br label %.loopexit } diff --git a/bench/libquic/optimized/spdy_framer.cc.ll b/bench/libquic/optimized/spdy_framer.cc.ll index 4dd8d18cddc..ea0375c561f 100644 --- a/bench/libquic/optimized/spdy_framer.cc.ll +++ b/bench/libquic/optimized/spdy_framer.cc.ll @@ -1783,7 +1783,7 @@ sw.bb115: ; preds = %do.body if.then.i111: ; preds = %sw.bb115 %sub.i112 = sub i64 %41, %42 %.sroa.speculated.i113 = tail call i64 @llvm.umin.i64(i64 %len.addr.0, i64 %sub.i112) - %tobool.not.i114 = icmp eq i64 %.sroa.speculated.i113, 0 + %tobool.not.i114 = icmp eq i64 %len.addr.0, 0 br i1 %tobool.not.i114, label %if.end13.i, label %if.then8.i if.then8.i: ; preds = %if.then.i111 @@ -3489,12 +3489,12 @@ if.end: ; preds = %entry br i1 %cmp7, label %if.end46, label %if.then8 if.then8: ; preds = %if.end - %sub = sub i64 %add3.i, %2 - %.sroa.speculated.i = tail call i64 @llvm.umin.i64(i64 %sub, i64 %spec.select18) - %cmp.not.i = icmp eq i64 %.sroa.speculated.i, 0 + %cmp.not.i = icmp eq i64 %0, 0 br i1 %cmp.not.i, label %_ZN3net10SpdyFramer24UpdateCurrentFrameBufferEPPKcPmm.exit, label %if.then.i if.then.i: ; preds = %if.then8 + %sub = sub i64 %add3.i, %2 + %.sroa.speculated.i = tail call i64 @llvm.umin.i64(i64 %sub, i64 %spec.select18) %3 = load ptr, ptr %current_frame_buffer_, align 8 %add.ptr.i.i = getelementptr inbounds i8, ptr %3, i64 %2 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i.i, ptr readonly align 1 %data, i64 %.sroa.speculated.i, i1 false) @@ -3648,12 +3648,12 @@ if.end: ; preds = %entry br i1 %cmp7, label %if.end41, label %if.then8 if.then8: ; preds = %if.end - %sub = sub i64 %add.i, %2 - %.sroa.speculated.i = tail call i64 @llvm.umin.i64(i64 %sub, i64 %spec.select16) - %cmp.not.i = icmp eq i64 %.sroa.speculated.i, 0 + %cmp.not.i = icmp eq i64 %0, 0 br i1 %cmp.not.i, label %_ZN3net10SpdyFramer24UpdateCurrentFrameBufferEPPKcPmm.exit, label %if.then.i if.then.i: ; preds = %if.then8 + %sub = sub i64 %add.i, %2 + %.sroa.speculated.i = tail call i64 @llvm.umin.i64(i64 %sub, i64 %spec.select16) %3 = load ptr, ptr %current_frame_buffer_, align 8 %add.ptr.i.i = getelementptr inbounds i8, ptr %3, i64 %2 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i.i, ptr readonly align 1 %data, i64 %.sroa.speculated.i, i1 false) @@ -4444,7 +4444,7 @@ entry: if.then: ; preds = %entry %sub = sub i64 %0, %1 %.sroa.speculated = tail call i64 @llvm.umin.i64(i64 %len, i64 %sub) - %tobool.not = icmp eq i64 %.sroa.speculated, 0 + %tobool.not = icmp eq i64 %len, 0 %state_ = getelementptr inbounds i8, ptr %this, i64 8 %2 = load i32, ptr %state_, align 8 %cmp5.not = icmp eq i32 %2, 7 diff --git a/bench/libsodium/optimized/libaesni_la-aead_aes256gcm_aesni.ll b/bench/libsodium/optimized/libaesni_la-aead_aes256gcm_aesni.ll index 93ab4fe0b27..03829211c00 100644 --- a/bench/libsodium/optimized/libaesni_la-aead_aes256gcm_aesni.ll +++ b/bench/libsodium/optimized/libaesni_la-aead_aes256gcm_aesni.ll @@ -1408,7 +1408,8 @@ for.body273.preheader.i: ; preds = %encrypt_xor_block.e for.end286.i: ; preds = %for.body273.preheader.i, %encrypt_xor_block.exit576.i %243 = getelementptr i8, ptr %c, i64 %i.6.lcssa.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %243, ptr nonnull align 16 %last_blocks.i, i64 %sub253.i, i1 false) + %umax.i = tail call i64 @llvm.umax.i64(i64 %sub253.i, i64 1) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %243, ptr noundef nonnull align 16 dereferenceable(1) %last_blocks.i, i64 %umax.i, i1 false) br label %aes_gcm_encrypt_generic.exit if.else.i: ; preds = %encrypt.exit.i @@ -2465,7 +2466,8 @@ for.body206.lr.ph.i: ; preds = %for.body.i391.i %xor.i.i398.i = xor <2 x i64> %191, %190 store <2 x i64> %xor.i.i398.i, ptr %last_blocks.i, align 16 %192 = getelementptr i8, ptr %m, i64 %i.4.lcssa.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %192, ptr nonnull align 16 %last_blocks.i, i64 %sub178.i, i1 false) + %umax.i = tail call i64 @llvm.umax.i64(i64 %sub178.i, i64 1) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %192, ptr noundef nonnull align 16 dereferenceable(1) %last_blocks.i, i64 %umax.i, i1 false) br label %aes_gcm_decrypt_generic.exit if.else.i: ; preds = %encrypt.exit.i30 @@ -2918,6 +2920,9 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #11 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #11 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.umax.i64(i64, i64) #10 + attributes #0 = { nofree norecurse nosync nounwind ssp memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+aes,+avx,+cmov,+crc32,+cx8,+fxsr,+mmx,+pclmul,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #2 = { nofree norecurse nosync nounwind ssp memory(argmem: readwrite, inaccessiblemem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+aes,+avx,+cmov,+crc32,+cx8,+fxsr,+mmx,+pclmul,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } diff --git a/bench/lightgbm/optimized/metadata.cpp.ll b/bench/lightgbm/optimized/metadata.cpp.ll index b451fa134de..7f0f148de09 100644 --- a/bench/lightgbm/optimized/metadata.cpp.ll +++ b/bench/lightgbm/optimized/metadata.cpp.ll @@ -6083,10 +6083,8 @@ _ZNSt6vectorIdSaIdEE5clearEv.exit: ; preds = %11, %16 %33 = load ptr, ptr %32, align 8 %34 = getelementptr inbounds i8, ptr %0, i64 216 %35 = load ptr, ptr %34, align 8 - %36 = icmp ne ptr %33, %35 - %.not9 = icmp eq ptr %2, %1 - %or.cond = or i1 %36, %.not9 - br i1 %or.cond, label %_ZNSt6vectorIdSaIdEE6resizeEm.exit, label %37 + %36 = icmp eq ptr %33, %35 + br i1 %36, label %37, label %_ZNSt6vectorIdSaIdEE6resizeEm.exit 37: ; preds = %31 invoke void @_ZNSt6vectorIdSaIdEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %22) diff --git a/bench/linux/optimized/seq_memory.ll b/bench/linux/optimized/seq_memory.ll index ca6da7670c1..8131a7dea7f 100644 --- a/bench/linux/optimized/seq_memory.ll +++ b/bench/linux/optimized/seq_memory.ll @@ -147,7 +147,7 @@ define dso_local i32 @snd_seq_expand_var_event(ptr nocapture noundef readonly %0 %8 = load i8, ptr %7, align 1 %9 = and i8 %8, 12 %10 = icmp eq i8 %9, 4 - br i1 %10, label %11, label %.thread + br i1 %10, label %11, label %.critedge 11: ; preds = %5 %12 = getelementptr inbounds i8, ptr %0, i64 16 @@ -167,7 +167,7 @@ define dso_local i32 @snd_seq_expand_var_event(ptr nocapture noundef readonly %0 22: ; preds = %16, %11 %23 = phi i32 [ %21, %16 ], [ %14, %11 ] %24 = icmp sgt i32 %23, %1 - br i1 %24, label %.thread, label %25 + br i1 %24, label %.critedge, label %25 25: ; preds = %22 %26 = icmp eq i32 %3, 0 @@ -190,23 +190,23 @@ define dso_local i32 @snd_seq_expand_var_event(ptr nocapture noundef readonly %0 .thread4: ; preds = %28, %29 %.ph = phi i32 [ -14, %29 ], [ -22, %28 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) - br label %.thread + br label %.critedge 35: ; preds = %25 %36 = select i1 %26, ptr @seq_copy_in_user, ptr @seq_copy_in_kernel %37 = call fastcc i32 @dump_var_event(ptr noundef %0, ptr noundef nonnull %36, ptr noundef nonnull %6, i32 noundef %14) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) %38 = icmp slt i32 %37, 0 - br i1 %38, label %.thread, label %39 + br i1 %38, label %.critedge, label %39 39: ; preds = %35 %40 = icmp eq i32 %14, %23 - br i1 %40, label %67, label %45 + br i1 %40, label %65, label %45 .thread6: ; preds = %29 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) %41 = icmp eq i32 %14, %23 - br i1 %41, label %67, label %.thread7 + br i1 %41, label %65, label %.thread7 .thread7: ; preds = %.thread6 %42 = getelementptr i8, ptr %2, i64 %30 @@ -225,7 +225,7 @@ define dso_local i32 @snd_seq_expand_var_event(ptr nocapture noundef readonly %0 %51 = phi i64 [ %44, %.thread7 ], [ %49, %45 ] %52 = phi ptr [ %42, %.thread7 ], [ %47, %45 ] call void @llvm.memset.p0.i64(ptr align 1 %52, i8 0, i64 %51, i1 false) - br label %67 + br label %65 53: ; preds = %45 %54 = ptrtoint ptr %47 to i64 @@ -233,7 +233,7 @@ define dso_local i32 @snd_seq_expand_var_event(ptr nocapture noundef readonly %0 %56 = icmp sgt i64 %55, -1 %57 = icmp uge i64 %55, %54 %58 = and i1 %56, %57 - br i1 %58, label %59, label %64 + br i1 %58, label %59, label %.critedge 59: ; preds = %53 call void asm sideeffect "# ALT: oldnstr\0A661:\0A\09\0A662:\0A# ALT: padding\0A.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\0A663:\0A.pushsection .altinstructions,\22a\22\0A .long 661b - .\0A .long 6641f - .\0A .4byte ( 9*32+20)\0A .byte 663b-661b\0A .byte 6651f-6641f\0A.popsection\0A.pushsection .altinstr_replacement, \22ax\22\0A# ALT: replacement 1\0A6641:\0A\09.byte 0x0f,0x01,0xcb\0A6651:\0A.popsection\0A", "~{memory},~{dirflag},~{fpsr},~{flags}"() #12, !srcloc !11 @@ -243,19 +243,15 @@ define dso_local i32 @snd_seq_expand_var_event(ptr nocapture noundef readonly %0 %63 = extractvalue { i64, ptr, i64 } %61, 2 call void @llvm.write_register.i64(metadata !0, i64 %63) call void asm sideeffect "# ALT: oldnstr\0A661:\0A\09\0A662:\0A# ALT: padding\0A.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\0A663:\0A.pushsection .altinstructions,\22a\22\0A .long 661b - .\0A .long 6641f - .\0A .4byte ( 9*32+20)\0A .byte 663b-661b\0A .byte 6651f-6641f\0A.popsection\0A.pushsection .altinstr_replacement, \22ax\22\0A# ALT: replacement 1\0A6641:\0A\09.byte 0x0f,0x01,0xca\0A6651:\0A.popsection\0A", "~{memory},~{dirflag},~{fpsr},~{flags}"() #12, !srcloc !13 - br label %64 + %64 = icmp eq i64 %62, 0 + br i1 %64, label %65, label %.critedge -64: ; preds = %59, %53 - %65 = phi i64 [ %62, %59 ], [ %49, %53 ] - %66 = icmp eq i64 %65, 0 - br i1 %66, label %67, label %.thread - -67: ; preds = %.thread6, %64, %50, %39 - br label %.thread +65: ; preds = %.thread6, %59, %50, %39 + br label %.critedge -.thread: ; preds = %5, %.thread4, %67, %64, %35, %22 - %68 = phi i32 [ %23, %67 ], [ -11, %22 ], [ %37, %35 ], [ -14, %64 ], [ %.ph, %.thread4 ], [ -22, %5 ] - ret i32 %68 +.critedge: ; preds = %5, %.thread4, %53, %65, %59, %35, %22 + %66 = phi i32 [ %23, %65 ], [ -11, %22 ], [ %37, %35 ], [ -14, %59 ], [ -14, %53 ], [ %.ph, %.thread4 ], [ -22, %5 ] + ret i32 %66 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) diff --git a/bench/linux/optimized/x_tables.ll b/bench/linux/optimized/x_tables.ll index 7b88cc23452..d3e99b10f71 100644 --- a/bench/linux/optimized/x_tables.ll +++ b/bench/linux/optimized/x_tables.ll @@ -684,16 +684,16 @@ define dso_local noundef range(i32 -14, 1) i32 @xt_data_to_user(ptr noundef %0, tail call void asm sideeffect "42: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 42b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 42) #20, !srcloc !15 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.34, i32 249, i32 2307, i64 12) #20, !srcloc !16 tail call void asm sideeffect "43: nop\0A\09.pushsection .discard.instr_end\0A\09.long 43b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 43) #20, !srcloc !17 - br label %34 + br label %.critedge 11: ; preds = %5 %12 = tail call i64 @_copy_to_user(ptr noundef %0, ptr noundef %1, i64 noundef %8) #20 %13 = icmp eq i64 %12, 0 - br i1 %13, label %14, label %34 + br i1 %13, label %14, label %.critedge 14: ; preds = %11 %15 = icmp eq i32 %7, %4 - br i1 %15, label %33, label %16 + br i1 %15, label %31, label %16 16: ; preds = %14 %17 = getelementptr i8, ptr %0, i64 %8 @@ -704,7 +704,7 @@ define dso_local noundef range(i32 -14, 1) i32 @xt_data_to_user(ptr noundef %0, %22 = icmp sgt i64 %21, -1 %23 = icmp uge i64 %21, %20 %24 = and i1 %22, %23 - br i1 %24, label %25, label %30 + br i1 %24, label %25, label %.critedge 25: ; preds = %16 tail call void asm sideeffect "# ALT: oldnstr\0A661:\0A\09\0A662:\0A# ALT: padding\0A.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\0A663:\0A.pushsection .altinstructions,\22a\22\0A .long 661b - .\0A .long 6641f - .\0A .4byte ( 9*32+20)\0A .byte 663b-661b\0A .byte 6651f-6641f\0A.popsection\0A.pushsection .altinstr_replacement, \22ax\22\0A# ALT: replacement 1\0A6641:\0A\09.byte 0x0f,0x01,0xcb\0A6651:\0A.popsection\0A", "~{memory},~{dirflag},~{fpsr},~{flags}"() #20, !srcloc !18 @@ -714,19 +714,15 @@ define dso_local noundef range(i32 -14, 1) i32 @xt_data_to_user(ptr noundef %0, %29 = extractvalue { i64, ptr, i64 } %27, 2 tail call void @llvm.write_register.i64(metadata !0, i64 %29) tail call void asm sideeffect "# ALT: oldnstr\0A661:\0A\09\0A662:\0A# ALT: padding\0A.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\0A663:\0A.pushsection .altinstructions,\22a\22\0A .long 661b - .\0A .long 6641f - .\0A .4byte ( 9*32+20)\0A .byte 663b-661b\0A .byte 6651f-6641f\0A.popsection\0A.pushsection .altinstr_replacement, \22ax\22\0A# ALT: replacement 1\0A6641:\0A\09.byte 0x0f,0x01,0xca\0A6651:\0A.popsection\0A", "~{memory},~{dirflag},~{fpsr},~{flags}"() #20, !srcloc !20 - br label %30 - -30: ; preds = %25, %16 - %31 = phi i64 [ %28, %25 ], [ %19, %16 ] - %32 = icmp eq i64 %31, 0 - br i1 %32, label %33, label %34 + %30 = icmp eq i64 %28, 0 + br i1 %30, label %31, label %.critedge -33: ; preds = %30, %14 - br label %34 +31: ; preds = %25, %14 + br label %.critedge -34: ; preds = %33, %30, %11, %10 - %35 = phi i32 [ 0, %33 ], [ -14, %11 ], [ -14, %30 ], [ -14, %10 ] - ret i32 %35 +.critedge: ; preds = %16, %31, %25, %11, %10 + %32 = phi i32 [ 0, %31 ], [ -14, %11 ], [ -14, %25 ], [ -14, %10 ], [ -14, %16 ] + ret i32 %32 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid @@ -747,7 +743,7 @@ define dso_local noundef range(i32 0, 2) i32 @xt_match_to_user(ptr noundef %0, p tail call void @llvm.write_register.i64(metadata !0, i64 %14) %16 = and i64 %15, 4294967295 %17 = icmp eq i64 %16, 0 - br i1 %17, label %18, label %72 + br i1 %17, label %18, label %.critedge 18: ; preds = %2 %19 = tail call i64 @strlen(ptr noundef %7) #20 @@ -759,12 +755,12 @@ define dso_local noundef range(i32 0, 2) i32 @xt_match_to_user(ptr noundef %0, p tail call void asm sideeffect "42: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 42b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 42) #20, !srcloc !15 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.34, i32 249, i32 2307, i64 12) #20, !srcloc !16 tail call void asm sideeffect "43: nop\0A\09.pushsection .discard.instr_end\0A\09.long 43b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 43) #20, !srcloc !17 - br label %72 + br label %.critedge 23: ; preds = %18 %24 = tail call i64 @_copy_to_user(ptr noundef %4, ptr noundef %7, i64 noundef %20) #20 %25 = icmp eq i64 %24, 0 - br i1 %25, label %26, label %72 + br i1 %25, label %26, label %.critedge 26: ; preds = %23 %27 = tail call i64 @llvm.read_register.i64(metadata !0) @@ -775,7 +771,7 @@ define dso_local noundef range(i32 0, 2) i32 @xt_match_to_user(ptr noundef %0, p tail call void @llvm.write_register.i64(metadata !0, i64 %30) %32 = and i64 %31, 4294967295 %33 = icmp eq i64 %32, 0 - br i1 %33, label %34, label %72 + br i1 %33, label %34, label %.critedge 34: ; preds = %26 %35 = getelementptr inbounds i8, ptr %1, i64 32 @@ -796,17 +792,17 @@ define dso_local noundef range(i32 0, 2) i32 @xt_match_to_user(ptr noundef %0, p tail call void asm sideeffect "42: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 42b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 42) #20, !srcloc !15 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.34, i32 249, i32 2307, i64 12) #20, !srcloc !16 tail call void asm sideeffect "43: nop\0A\09.pushsection .discard.instr_end\0A\09.long 43b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 43) #20, !srcloc !17 - br label %72 + br label %.critedge 48: ; preds = %34 %49 = getelementptr inbounds i8, ptr %0, i64 32 %50 = tail call i64 @_copy_to_user(ptr noundef %35, ptr noundef %49, i64 noundef %45) #20 %51 = icmp eq i64 %50, 0 - br i1 %51, label %52, label %72 + br i1 %51, label %52, label %.critedge 52: ; preds = %48 %53 = icmp eq i32 %44, %42 - br i1 %53, label %71, label %54 + br i1 %53, label %69, label %54 54: ; preds = %52 %55 = getelementptr i8, ptr %35, i64 %45 @@ -817,7 +813,7 @@ define dso_local noundef range(i32 0, 2) i32 @xt_match_to_user(ptr noundef %0, p %60 = icmp sgt i64 %59, -1 %61 = icmp uge i64 %59, %58 %62 = and i1 %60, %61 - br i1 %62, label %63, label %68 + br i1 %62, label %63, label %.critedge 63: ; preds = %54 tail call void asm sideeffect "# ALT: oldnstr\0A661:\0A\09\0A662:\0A# ALT: padding\0A.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\0A663:\0A.pushsection .altinstructions,\22a\22\0A .long 661b - .\0A .long 6641f - .\0A .4byte ( 9*32+20)\0A .byte 663b-661b\0A .byte 6651f-6641f\0A.popsection\0A.pushsection .altinstr_replacement, \22ax\22\0A# ALT: replacement 1\0A6641:\0A\09.byte 0x0f,0x01,0xcb\0A6651:\0A.popsection\0A", "~{memory},~{dirflag},~{fpsr},~{flags}"() #20, !srcloc !18 @@ -827,19 +823,15 @@ define dso_local noundef range(i32 0, 2) i32 @xt_match_to_user(ptr noundef %0, p %67 = extractvalue { i64, ptr, i64 } %65, 2 tail call void @llvm.write_register.i64(metadata !0, i64 %67) tail call void asm sideeffect "# ALT: oldnstr\0A661:\0A\09\0A662:\0A# ALT: padding\0A.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\0A663:\0A.pushsection .altinstructions,\22a\22\0A .long 661b - .\0A .long 6641f - .\0A .4byte ( 9*32+20)\0A .byte 663b-661b\0A .byte 6651f-6641f\0A.popsection\0A.pushsection .altinstr_replacement, \22ax\22\0A# ALT: replacement 1\0A6641:\0A\09.byte 0x0f,0x01,0xca\0A6651:\0A.popsection\0A", "~{memory},~{dirflag},~{fpsr},~{flags}"() #20, !srcloc !20 - br label %68 + %68 = icmp eq i64 %66, 0 + br i1 %68, label %69, label %.critedge -68: ; preds = %63, %54 - %69 = phi i64 [ %66, %63 ], [ %57, %54 ] - %70 = icmp eq i64 %69, 0 - br i1 %70, label %71, label %72 +69: ; preds = %63, %52 + br label %.critedge -71: ; preds = %68, %52 - br label %72 - -72: ; preds = %71, %68, %48, %47, %26, %23, %22, %2 - %73 = phi i32 [ 1, %26 ], [ 0, %71 ], [ 1, %48 ], [ 1, %68 ], [ 1, %47 ], [ 1, %22 ], [ 1, %23 ], [ 1, %2 ] - ret i32 %73 +.critedge: ; preds = %54, %69, %63, %48, %47, %26, %23, %22, %2 + %70 = phi i32 [ 1, %26 ], [ 0, %69 ], [ 1, %48 ], [ 1, %63 ], [ 1, %47 ], [ 1, %22 ], [ 1, %23 ], [ 1, %2 ], [ 1, %54 ] + ret i32 %70 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid @@ -860,7 +852,7 @@ define dso_local noundef range(i32 0, 2) i32 @xt_target_to_user(ptr noundef %0, tail call void @llvm.write_register.i64(metadata !0, i64 %14) %16 = and i64 %15, 4294967295 %17 = icmp eq i64 %16, 0 - br i1 %17, label %18, label %72 + br i1 %17, label %18, label %.critedge 18: ; preds = %2 %19 = tail call i64 @strlen(ptr noundef %7) #20 @@ -872,12 +864,12 @@ define dso_local noundef range(i32 0, 2) i32 @xt_target_to_user(ptr noundef %0, tail call void asm sideeffect "42: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 42b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 42) #20, !srcloc !15 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.34, i32 249, i32 2307, i64 12) #20, !srcloc !16 tail call void asm sideeffect "43: nop\0A\09.pushsection .discard.instr_end\0A\09.long 43b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 43) #20, !srcloc !17 - br label %72 + br label %.critedge 23: ; preds = %18 %24 = tail call i64 @_copy_to_user(ptr noundef %4, ptr noundef %7, i64 noundef %20) #20 %25 = icmp eq i64 %24, 0 - br i1 %25, label %26, label %72 + br i1 %25, label %26, label %.critedge 26: ; preds = %23 %27 = tail call i64 @llvm.read_register.i64(metadata !0) @@ -888,7 +880,7 @@ define dso_local noundef range(i32 0, 2) i32 @xt_target_to_user(ptr noundef %0, tail call void @llvm.write_register.i64(metadata !0, i64 %30) %32 = and i64 %31, 4294967295 %33 = icmp eq i64 %32, 0 - br i1 %33, label %34, label %72 + br i1 %33, label %34, label %.critedge 34: ; preds = %26 %35 = getelementptr inbounds i8, ptr %1, i64 32 @@ -909,17 +901,17 @@ define dso_local noundef range(i32 0, 2) i32 @xt_target_to_user(ptr noundef %0, tail call void asm sideeffect "42: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 42b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 42) #20, !srcloc !15 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.34, i32 249, i32 2307, i64 12) #20, !srcloc !16 tail call void asm sideeffect "43: nop\0A\09.pushsection .discard.instr_end\0A\09.long 43b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 43) #20, !srcloc !17 - br label %72 + br label %.critedge 48: ; preds = %34 %49 = getelementptr inbounds i8, ptr %0, i64 32 %50 = tail call i64 @_copy_to_user(ptr noundef %35, ptr noundef %49, i64 noundef %45) #20 %51 = icmp eq i64 %50, 0 - br i1 %51, label %52, label %72 + br i1 %51, label %52, label %.critedge 52: ; preds = %48 %53 = icmp eq i32 %44, %42 - br i1 %53, label %71, label %54 + br i1 %53, label %69, label %54 54: ; preds = %52 %55 = getelementptr i8, ptr %35, i64 %45 @@ -930,7 +922,7 @@ define dso_local noundef range(i32 0, 2) i32 @xt_target_to_user(ptr noundef %0, %60 = icmp sgt i64 %59, -1 %61 = icmp uge i64 %59, %58 %62 = and i1 %60, %61 - br i1 %62, label %63, label %68 + br i1 %62, label %63, label %.critedge 63: ; preds = %54 tail call void asm sideeffect "# ALT: oldnstr\0A661:\0A\09\0A662:\0A# ALT: padding\0A.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\0A663:\0A.pushsection .altinstructions,\22a\22\0A .long 661b - .\0A .long 6641f - .\0A .4byte ( 9*32+20)\0A .byte 663b-661b\0A .byte 6651f-6641f\0A.popsection\0A.pushsection .altinstr_replacement, \22ax\22\0A# ALT: replacement 1\0A6641:\0A\09.byte 0x0f,0x01,0xcb\0A6651:\0A.popsection\0A", "~{memory},~{dirflag},~{fpsr},~{flags}"() #20, !srcloc !18 @@ -940,19 +932,15 @@ define dso_local noundef range(i32 0, 2) i32 @xt_target_to_user(ptr noundef %0, %67 = extractvalue { i64, ptr, i64 } %65, 2 tail call void @llvm.write_register.i64(metadata !0, i64 %67) tail call void asm sideeffect "# ALT: oldnstr\0A661:\0A\09\0A662:\0A# ALT: padding\0A.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\0A663:\0A.pushsection .altinstructions,\22a\22\0A .long 661b - .\0A .long 6641f - .\0A .4byte ( 9*32+20)\0A .byte 663b-661b\0A .byte 6651f-6641f\0A.popsection\0A.pushsection .altinstr_replacement, \22ax\22\0A# ALT: replacement 1\0A6641:\0A\09.byte 0x0f,0x01,0xca\0A6651:\0A.popsection\0A", "~{memory},~{dirflag},~{fpsr},~{flags}"() #20, !srcloc !20 - br label %68 - -68: ; preds = %63, %54 - %69 = phi i64 [ %66, %63 ], [ %57, %54 ] - %70 = icmp eq i64 %69, 0 - br i1 %70, label %71, label %72 + %68 = icmp eq i64 %66, 0 + br i1 %68, label %69, label %.critedge -71: ; preds = %68, %52 - br label %72 +69: ; preds = %63, %52 + br label %.critedge -72: ; preds = %71, %68, %48, %47, %26, %23, %22, %2 - %73 = phi i32 [ 1, %26 ], [ 0, %71 ], [ 1, %48 ], [ 1, %68 ], [ 1, %47 ], [ 1, %22 ], [ 1, %23 ], [ 1, %2 ] - ret i32 %73 +.critedge: ; preds = %54, %69, %63, %48, %47, %26, %23, %22, %2 + %70 = phi i32 [ 1, %26 ], [ 0, %69 ], [ 1, %48 ], [ 1, %63 ], [ 1, %47 ], [ 1, %22 ], [ 1, %23 ], [ 1, %2 ], [ 1, %54 ] + ret i32 %70 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/llama.cpp/optimized/grammar-parser.cpp.ll b/bench/llama.cpp/optimized/grammar-parser.cpp.ll index cf571707b8d..0db60276fb0 100644 --- a/bench/llama.cpp/optimized/grammar-parser.cpp.ll +++ b/bench/llama.cpp/optimized/grammar-parser.cpp.ll @@ -4712,19 +4712,19 @@ if.then9: ; preds = %if.then %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 %cmp15 = icmp ugt i64 %sub.ptr.div.i, %sub.ptr.div.i.i.i - br i1 %cmp15, label %_ZSt22__uninitialized_move_aIP21llama_grammar_elementS1_SaIS0_EET0_T_S4_S3_RT1_.exit, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIP21llama_grammar_elementSt6vectorIS2_SaIS2_EEEEmEvRT_T0_.exit + br i1 %cmp15, label %if.then16, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIP21llama_grammar_elementSt6vectorIS2_SaIS2_EEEEmEvRT_T0_.exit -_ZSt22__uninitialized_move_aIP21llama_grammar_elementS1_SaIS0_EET0_T_S4_S3_RT1_.exit: ; preds = %if.then9 +if.then16: ; preds = %if.then9 %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i %add.ptr = getelementptr inbounds %struct.llama_grammar_element, ptr %1, i64 %idx.neg tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %add.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) - %.pre78 = load ptr, ptr %_M_finish, align 8 - %add.ptr27 = getelementptr inbounds i8, ptr %.pre78, i64 %sub.ptr.sub.i.i.i + %2 = load ptr, ptr %_M_finish, align 8 + %add.ptr27 = getelementptr inbounds i8, ptr %2, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %if.then.i.i.i.i.i30, label %if.then.i.i.i.i.i -if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIP21llama_grammar_elementS1_SaIS0_EET0_T_S4_S3_RT1_.exit +if.then.i.i.i.i.i: ; preds = %if.then16 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 @@ -4733,7 +4733,7 @@ if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitializ tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %add.ptr.i.i.i.i.i, ptr align 4 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %if.then.i.i.i.i.i30 -if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, %_ZSt22__uninitialized_move_aIP21llama_grammar_elementS1_SaIS0_EET0_T_S4_S3_RT1_.exit +if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, %if.then16 tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %__position.coerce, ptr align 4 %__first.coerce, i64 %sub.ptr.sub.i.i.i, i1 false) br label %if.end109 @@ -4750,9 +4750,9 @@ if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIN9__gn br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP21llama_grammar_elementSt6vectorIS2_SaIS2_EEEES3_S2_ET0_T_S9_S8_RSaIT1_E.exit _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP21llama_grammar_elementSt6vectorIS2_SaIS2_EEEES3_S2_ET0_T_S9_S8_RSaIT1_E.exit: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIP21llama_grammar_elementSt6vectorIS2_SaIS2_EEEEmEvRT_T0_.exit, %if.then.i.i.i.i.i.i.i.i - %2 = phi ptr [ %1, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIP21llama_grammar_elementSt6vectorIS2_SaIS2_EEEEmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] + %3 = phi ptr [ %1, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIP21llama_grammar_elementSt6vectorIS2_SaIS2_EEEEmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] %sub = sub nuw nsw i64 %sub.ptr.div.i.i.i, %sub.ptr.div.i - %add.ptr50 = getelementptr inbounds %struct.llama_grammar_element, ptr %2, i64 %sub + %add.ptr50 = getelementptr inbounds %struct.llama_grammar_element, ptr %3, i64 %sub store ptr %add.ptr50, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i.i.i.i.i35 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i.i.i.i.i35, label %_ZSt22__uninitialized_move_aIP21llama_grammar_elementS1_SaIS0_EET0_T_S4_S3_RT1_.exit38, label %if.then.i.i.i.i.i.i.i.i.i36 @@ -4763,8 +4763,8 @@ if.then.i.i.i.i.i.i.i.i.i36: ; preds = %_ZSt22__uninitializ br label %_ZSt22__uninitialized_move_aIP21llama_grammar_elementS1_SaIS0_EET0_T_S4_S3_RT1_.exit38 _ZSt22__uninitialized_move_aIP21llama_grammar_elementS1_SaIS0_EET0_T_S4_S3_RT1_.exit38: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP21llama_grammar_elementSt6vectorIS2_SaIS2_EEEES3_S2_ET0_T_S9_S8_RSaIT1_E.exit, %if.then.i.i.i.i.i.i.i.i.i36 - %3 = phi ptr [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP21llama_grammar_elementSt6vectorIS2_SaIS2_EEEES3_S2_ET0_T_S9_S8_RSaIT1_E.exit ], [ %.pre77, %if.then.i.i.i.i.i.i.i.i.i36 ] - %add.ptr58 = getelementptr inbounds i8, ptr %3, i64 %sub.ptr.sub.i + %4 = phi ptr [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP21llama_grammar_elementSt6vectorIS2_SaIS2_EEEES3_S2_ET0_T_S9_S8_RSaIT1_E.exit ], [ %.pre77, %if.then.i.i.i.i.i.i.i.i.i36 ] + %add.ptr58 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr58, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i42 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i42, label %if.end109, label %if.then.i.i.i.i.i43 @@ -4774,8 +4774,8 @@ if.then.i.i.i.i.i43: ; preds = %_ZSt22__uninitializ br label %if.end109 if.else68: ; preds = %if.then - %4 = load ptr, ptr %this, align 8 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %4 to i64 + %5 = load ptr, ptr %this, align 8 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %5 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i.i %sub.ptr.div.i.i = ashr exact i64 %sub.ptr.sub.i.i, 3 %sub.i = sub nsw i64 1152921504606846975, %sub.ptr.div.i.i @@ -4790,8 +4790,8 @@ _ZNKSt6vectorI21llama_grammar_elementSaIS0_EE12_M_check_lenEmPKc.exit: ; preds = %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i, i64 %sub.ptr.div.i.i.i) %add.i = add nsw i64 %.sroa.speculated.i, %sub.ptr.div.i.i %cmp7.i = icmp ult i64 %add.i, %sub.ptr.div.i.i - %5 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 1152921504606846975) - %cond.i = select i1 %cmp7.i, i64 1152921504606846975, i64 %5 + %6 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 1152921504606846975) + %cond.i = select i1 %cmp7.i, i64 1152921504606846975, i64 %6 %cmp.not.i = icmp eq i64 %cond.i, 0 br i1 %cmp.not.i, label %_ZNSt12_Vector_baseI21llama_grammar_elementSaIS0_EE11_M_allocateEm.exit, label %cond.true.i @@ -4804,11 +4804,11 @@ _ZNSt12_Vector_baseI21llama_grammar_elementSaIS0_EE11_M_allocateEm.exit: ; preds %cond.i47 = phi ptr [ %call5.i.i.i, %cond.true.i ], [ null, %_ZNKSt6vectorI21llama_grammar_elementSaIS0_EE12_M_check_lenEmPKc.exit ] %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i48 = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i50 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i48, %sub.ptr.rhs.cast.i.i - %tobool.not.i.i.i.i.i.i.i.i.i51 = icmp eq ptr %__position.coerce, %4 + %tobool.not.i.i.i.i.i.i.i.i.i51 = icmp eq ptr %__position.coerce, %5 br i1 %tobool.not.i.i.i.i.i.i.i.i.i51, label %invoke.cont83, label %if.then.i.i.i.i.i.i.i.i.i52 if.then.i.i.i.i.i.i.i.i.i52: ; preds = %_ZNSt12_Vector_baseI21llama_grammar_elementSaIS0_EE11_M_allocateEm.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %cond.i47, ptr align 4 %4, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i50, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %cond.i47, ptr align 4 %5, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i50, i1 false) br label %invoke.cont83 invoke.cont83: ; preds = %if.then.i.i.i.i.i.i.i.i.i52, %_ZNSt12_Vector_baseI21llama_grammar_elementSaIS0_EE11_M_allocateEm.exit @@ -4825,11 +4825,11 @@ if.then.i.i.i.i.i.i.i.i.i65: ; preds = %invoke.cont83 invoke.cont87: ; preds = %if.then.i.i.i.i.i.i.i.i.i65, %invoke.cont83 %add.ptr.i.i.i.i.i.i.i.i.i66 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i59, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i63 - %tobool.not.i = icmp eq ptr %4, null + %tobool.not.i = icmp eq ptr %5, null br i1 %tobool.not.i, label %_ZNSt12_Vector_baseI21llama_grammar_elementSaIS0_EE13_M_deallocateEPS0_m.exit, label %if.then.i68 if.then.i68: ; preds = %invoke.cont87 - tail call void @_ZdlPv(ptr noundef nonnull %4) #22 + tail call void @_ZdlPv(ptr noundef nonnull %5) #22 br label %_ZNSt12_Vector_baseI21llama_grammar_elementSaIS0_EE13_M_deallocateEPS0_m.exit _ZNSt12_Vector_baseI21llama_grammar_elementSaIS0_EE13_M_deallocateEPS0_m.exit: ; preds = %invoke.cont87, %if.then.i68 diff --git a/bench/llvm/optimized/AccelTable.cpp.ll b/bench/llvm/optimized/AccelTable.cpp.ll index 51fe31f263d..6f7654e2c50 100644 --- a/bench/llvm/optimized/AccelTable.cpp.ll +++ b/bench/llvm/optimized/AccelTable.cpp.ll @@ -2043,7 +2043,7 @@ _ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EE9push_backEOS4_.exit45: ; p %.sroa.8.0.lcssa = phi i64 [ 0, %._crit_edge ], [ %193, %._crit_edge164.loopexit ] %.sroa.0100.0.lcssa = phi ptr [ null, %._crit_edge ], [ %.sroa.0100.1, %._crit_edge164.loopexit ] %195 = icmp eq ptr %.sroa.0112.0.lcssa, %.sroa.7.0.lcssa - br i1 %195, label %233, label %196 + br i1 %195, label %232, label %196 196: ; preds = %._crit_edge164 %197 = getelementptr inbounds nuw i8, ptr %0, i64 80 @@ -2060,110 +2060,109 @@ _ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EE9push_backEOS4_.exit45: ; p %206 = ptrtoint ptr %.sroa.0112.0.lcssa to i64 %207 = sub i64 %205, %206 %208 = ashr exact i64 %207, 4 - %209 = add nsw i64 %208, -1 - %210 = icmp ult i64 %209, 256 - br i1 %210, label %_ZN4llvm10DIEInteger8BestFormEbm.exit, label %211 + %209 = icmp ult i64 %208, 257 + br i1 %209, label %_ZN4llvm10DIEInteger8BestFormEbm.exit, label %210 -211: ; preds = %196 - %212 = icmp ult i64 %209, 65536 - br i1 %212, label %_ZN4llvm10DIEInteger8BestFormEbm.exit, label %213 +210: ; preds = %196 + %211 = icmp ult i64 %208, 65537 + br i1 %211, label %_ZN4llvm10DIEInteger8BestFormEbm.exit, label %212 -213: ; preds = %211 - %214 = icmp ult i64 %209, 4294967296 - %spec.select = select i1 %214, i16 6, i16 7 +212: ; preds = %210 + %213 = icmp ult i64 %208, 4294967297 + %spec.select = select i1 %213, i16 6, i16 7 br label %_ZN4llvm10DIEInteger8BestFormEbm.exit -_ZN4llvm10DIEInteger8BestFormEbm.exit: ; preds = %213, %196, %211 - %.0.i = phi i16 [ 11, %196 ], [ 5, %211 ], [ %spec.select, %213 ] +_ZN4llvm10DIEInteger8BestFormEbm.exit: ; preds = %212, %196, %210 + %.0.i = phi i16 [ 11, %196 ], [ 5, %210 ], [ %spec.select, %212 ] store i16 %.0.i, ptr %9, align 2 - %215 = ptrtoint ptr %.sroa.0100.0.lcssa to i64 - %216 = sub i64 %.sroa.8.0.lcssa, %215 - %217 = ashr exact i64 %216, 4 - %218 = add nsw i64 %217, -1 - %219 = icmp ult i64 %218, 256 - br i1 %219, label %_ZN4llvm10DIEInteger8BestFormEbm.exit63, label %220 - -220: ; preds = %_ZN4llvm10DIEInteger8BestFormEbm.exit - %221 = icmp ult i64 %218, 65536 - br i1 %221, label %_ZN4llvm10DIEInteger8BestFormEbm.exit63, label %222 - -222: ; preds = %220 - %223 = icmp ult i64 %218, 4294967296 - %spec.select124 = select i1 %223, i16 6, i16 7 + %214 = ptrtoint ptr %.sroa.0100.0.lcssa to i64 + %215 = sub i64 %.sroa.8.0.lcssa, %214 + %216 = ashr exact i64 %215, 4 + %217 = add nsw i64 %216, -1 + %218 = icmp ult i64 %217, 256 + br i1 %218, label %_ZN4llvm10DIEInteger8BestFormEbm.exit63, label %219 + +219: ; preds = %_ZN4llvm10DIEInteger8BestFormEbm.exit + %220 = icmp ult i64 %217, 65536 + br i1 %220, label %_ZN4llvm10DIEInteger8BestFormEbm.exit63, label %221 + +221: ; preds = %219 + %222 = icmp ult i64 %217, 4294967296 + %spec.select124 = select i1 %222, i16 6, i16 7 br label %_ZN4llvm10DIEInteger8BestFormEbm.exit63 -_ZN4llvm10DIEInteger8BestFormEbm.exit63: ; preds = %222, %_ZN4llvm10DIEInteger8BestFormEbm.exit, %220 - %.0.i62 = phi i16 [ 11, %_ZN4llvm10DIEInteger8BestFormEbm.exit ], [ 5, %220 ], [ %spec.select124, %222 ] +_ZN4llvm10DIEInteger8BestFormEbm.exit63: ; preds = %221, %_ZN4llvm10DIEInteger8BestFormEbm.exit, %219 + %.0.i62 = phi i16 [ 11, %_ZN4llvm10DIEInteger8BestFormEbm.exit ], [ 5, %219 ], [ %spec.select124, %221 ] store i16 %.0.i62, ptr %10, align 2 store ptr %.sroa.0100.0.lcssa, ptr %12, align 8 - %224 = getelementptr inbounds nuw i8, ptr %12, i64 8 - store i64 %217, ptr %224, align 8 + %223 = getelementptr inbounds nuw i8, ptr %12, i64 8 + store i64 %216, ptr %223, align 8 store ptr %8, ptr %14, align 8 - %225 = getelementptr inbounds nuw i8, ptr %14, i64 8 - store ptr %10, ptr %225, align 8 - %226 = getelementptr inbounds nuw i8, ptr %14, i64 16 - store ptr %7, ptr %226, align 8 - %227 = getelementptr inbounds nuw i8, ptr %14, i64 24 - store ptr %9, ptr %227, align 8 + %224 = getelementptr inbounds nuw i8, ptr %14, i64 8 + store ptr %10, ptr %224, align 8 + %225 = getelementptr inbounds nuw i8, ptr %14, i64 16 + store ptr %7, ptr %225, align 8 + %226 = getelementptr inbounds nuw i8, ptr %14, i64 24 + store ptr %9, ptr %226, align 8 store ptr @"_ZN4llvm12function_refIFSt8optionalINS_16DWARF5AccelTable20UnitIndexAndEncodingEERKNS_20DWARF5AccelTableDataEEE11callback_fnIZNS_20emitDWARF5AccelTableEPNS_10AsmPrinterERS2_RKNS_10DwarfDebugENS_8ArrayRefISt10unique_ptrINS_16DwarfCompileUnitESt14default_deleteISJ_EEEEE3$_0EES4_lS7_", ptr %13, align 8 - %228 = getelementptr inbounds nuw i8, ptr %13, i64 8 - %229 = ptrtoint ptr %14 to i64 - store i64 %229, ptr %228, align 8 - %230 = getelementptr inbounds nuw i8, ptr %2, i64 3473 - %231 = load i8, ptr %230, align 1 - %232 = trunc i8 %231 to i1 - call fastcc void @_ZN12_GLOBAL__N_122Dwarf5AccelTableWriterC2EPN4llvm10AsmPrinterERKNS1_14AccelTableBaseENS1_8ArrayRefISt7variantIJPNS1_8MCSymbolEmEEEESC_NS1_12function_refIFSt8optionalINS1_16DWARF5AccelTable20UnitIndexAndEncodingEERKNS1_20DWARF5AccelTableDataEEEEb(ptr noundef nonnull align 8 dereferenceable(344) %11, ptr noundef nonnull %0, ptr noundef nonnull align 8 dereferenceable(200) %1, ptr %.sroa.0112.0.lcssa, i64 %208, ptr noundef nonnull byval(%"class.llvm::ArrayRef.477") align 8 %12, ptr noundef nonnull byval(%"class.llvm::function_ref") align 8 %13, i1 noundef zeroext %232) + %227 = getelementptr inbounds nuw i8, ptr %13, i64 8 + %228 = ptrtoint ptr %14 to i64 + store i64 %228, ptr %227, align 8 + %229 = getelementptr inbounds nuw i8, ptr %2, i64 3473 + %230 = load i8, ptr %229, align 1 + %231 = trunc i8 %230 to i1 + call fastcc void @_ZN12_GLOBAL__N_122Dwarf5AccelTableWriterC2EPN4llvm10AsmPrinterERKNS1_14AccelTableBaseENS1_8ArrayRefISt7variantIJPNS1_8MCSymbolEmEEEESC_NS1_12function_refIFSt8optionalINS1_16DWARF5AccelTable20UnitIndexAndEncodingEERKNS1_20DWARF5AccelTableDataEEEEb(ptr noundef nonnull align 8 dereferenceable(344) %11, ptr noundef nonnull %0, ptr noundef nonnull align 8 dereferenceable(200) %1, ptr %.sroa.0112.0.lcssa, i64 %208, ptr noundef nonnull byval(%"class.llvm::ArrayRef.477") align 8 %12, ptr noundef nonnull byval(%"class.llvm::function_ref") align 8 %13, i1 noundef zeroext %231) call fastcc void @_ZN12_GLOBAL__N_122Dwarf5AccelTableWriter4emitEv(ptr noundef nonnull align 8 dereferenceable(344) %11) call fastcc void @_ZN12_GLOBAL__N_122Dwarf5AccelTableWriterD2Ev(ptr noundef nonnull align 8 dereferenceable(344) %11) #18 - br label %233 - -233: ; preds = %._crit_edge164, %_ZN4llvm10DIEInteger8BestFormEbm.exit63 - %234 = load ptr, ptr %8, align 8 - %235 = getelementptr inbounds nuw i8, ptr %8, i64 16 - %236 = load i32, ptr %235, align 8 - %237 = zext i32 %236 to i64 - %238 = shl nuw nsw i64 %237, 3 - call void @_ZN4llvm17deallocate_bufferEPvmm(ptr noundef %234, i64 noundef %238, i64 noundef 4) #18 - %239 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(20) %7) #18 - %240 = load ptr, ptr %7, align 8 - %241 = icmp eq ptr %240, %20 - br i1 %241, label %_ZN4llvm11SmallVectorIjLj1EED2Ev.exit, label %242 - -242: ; preds = %233 - call void @free(ptr noundef %240) #18 + br label %232 + +232: ; preds = %._crit_edge164, %_ZN4llvm10DIEInteger8BestFormEbm.exit63 + %233 = load ptr, ptr %8, align 8 + %234 = getelementptr inbounds nuw i8, ptr %8, i64 16 + %235 = load i32, ptr %234, align 8 + %236 = zext i32 %235 to i64 + %237 = shl nuw nsw i64 %236, 3 + call void @_ZN4llvm17deallocate_bufferEPvmm(ptr noundef %233, i64 noundef %237, i64 noundef 4) #18 + %238 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(20) %7) #18 + %239 = load ptr, ptr %7, align 8 + %240 = icmp eq ptr %239, %20 + br i1 %240, label %_ZN4llvm11SmallVectorIjLj1EED2Ev.exit, label %241 + +241: ; preds = %232 + call void @free(ptr noundef %239) #18 br label %_ZN4llvm11SmallVectorIjLj1EED2Ev.exit -_ZN4llvm11SmallVectorIjLj1EED2Ev.exit: ; preds = %233, %242 +_ZN4llvm11SmallVectorIjLj1EED2Ev.exit: ; preds = %232, %241 %.not.i.i.i64 = icmp eq ptr %.sroa.0100.0.lcssa, null - br i1 %.not.i.i.i64, label %_ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EED2Ev.exit, label %243 + br i1 %.not.i.i.i64, label %_ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EED2Ev.exit, label %242 -243: ; preds = %_ZN4llvm11SmallVectorIjLj1EED2Ev.exit - %244 = ptrtoint ptr %.sroa.0100.0.lcssa to i64 - %245 = sub i64 %.sroa.18.0.lcssa, %244 - call void @_ZdlPvm(ptr noundef nonnull %.sroa.0100.0.lcssa, i64 noundef %245) #20 +242: ; preds = %_ZN4llvm11SmallVectorIjLj1EED2Ev.exit + %243 = ptrtoint ptr %.sroa.0100.0.lcssa to i64 + %244 = sub i64 %.sroa.18.0.lcssa, %243 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.0100.0.lcssa, i64 noundef %244) #20 br label %_ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EED2Ev.exit -_ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EED2Ev.exit: ; preds = %_ZN4llvm11SmallVectorIjLj1EED2Ev.exit, %243 +_ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EED2Ev.exit: ; preds = %_ZN4llvm11SmallVectorIjLj1EED2Ev.exit, %242 %.not.i.i.i65 = icmp eq ptr %.sroa.0112.0.lcssa, null - br i1 %.not.i.i.i65, label %_ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EED2Ev.exit66, label %246 + br i1 %.not.i.i.i65, label %_ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EED2Ev.exit66, label %245 -246: ; preds = %_ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EED2Ev.exit - %247 = ptrtoint ptr %.sroa.0112.0.lcssa to i64 - %248 = sub i64 %.sroa.14.0.lcssa, %247 - call void @_ZdlPvm(ptr noundef nonnull %.sroa.0112.0.lcssa, i64 noundef %248) #20 +245: ; preds = %_ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EED2Ev.exit + %246 = ptrtoint ptr %.sroa.0112.0.lcssa to i64 + %247 = sub i64 %.sroa.14.0.lcssa, %246 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.0112.0.lcssa, i64 noundef %247) #20 br label %_ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EED2Ev.exit66 -_ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EED2Ev.exit66: ; preds = %_ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EED2Ev.exit, %246 - %249 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %6) #18 - %250 = load ptr, ptr %6, align 8 - %251 = icmp eq ptr %250, %16 - br i1 %251, label %_ZN4llvm11SmallVectorINS_16TypeUnitMetaInfoELj1EED2Ev.exit, label %252 +_ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EED2Ev.exit66: ; preds = %_ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EED2Ev.exit, %245 + %248 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %6) #18 + %249 = load ptr, ptr %6, align 8 + %250 = icmp eq ptr %249, %16 + br i1 %250, label %_ZN4llvm11SmallVectorINS_16TypeUnitMetaInfoELj1EED2Ev.exit, label %251 -252: ; preds = %_ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EED2Ev.exit66 - call void @free(ptr noundef %250) #18 +251: ; preds = %_ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EED2Ev.exit66 + call void @free(ptr noundef %249) #18 br label %_ZN4llvm11SmallVectorINS_16TypeUnitMetaInfoELj1EED2Ev.exit -_ZN4llvm11SmallVectorINS_16TypeUnitMetaInfoELj1EED2Ev.exit: ; preds = %_ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EED2Ev.exit66, %252 +_ZN4llvm11SmallVectorINS_16TypeUnitMetaInfoELj1EED2Ev.exit: ; preds = %_ZNSt6vectorISt7variantIJPN4llvm8MCSymbolEmEESaIS4_EED2Ev.exit66, %251 ret void } diff --git a/bench/llvm/optimized/CodeGenSchedule.cpp.ll b/bench/llvm/optimized/CodeGenSchedule.cpp.ll index 4d2ad9645a5..1145bf2471b 100644 --- a/bench/llvm/optimized/CodeGenSchedule.cpp.ll +++ b/bench/llvm/optimized/CodeGenSchedule.cpp.ll @@ -17114,7 +17114,7 @@ _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6v %100 = phi ptr [ %99, %97 ], [ null, %_ZNKSt6vectorIPN4llvm6RecordESaIS2_EE12_M_check_lenEmPKc.exit.i ] call void @llvm.memmove.p0.p0.i64(ptr align 8 %100, ptr align 8 %67, i64 %79, i1 false) %101 = getelementptr inbounds i8, ptr %100, i64 %79 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %101, ptr align 8 %65, i64 %82, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %101, ptr align 8 %65, i64 %82, i1 false) %102 = getelementptr inbounds i8, ptr %101, i64 %82 %.not.i53.i = icmp eq ptr %67, null br i1 %.not.i53.i, label %_ZNSt12_Vector_baseIPN4llvm6RecordESaIS2_EE13_M_deallocateEPS2_m.exit.i, label %103 @@ -23908,8 +23908,6 @@ _ZNKSt6vectorIN12_GLOBAL__N_112TransVariantESaIS1_EE12_M_check_lenEmPKc.exit.i.i %601 = icmp slt i64 %596, 0 %602 = call i64 @llvm.umin.i64(i64 %600, i64 384307168202282325) %603 = select i1 %601, i64 384307168202282325, i64 %602 - %.not.i.i.i134.i = icmp ne i64 %603, 0 - call void @llvm.assume(i1 %.not.i.i.i134.i) %604 = mul nuw nsw i64 %603, 24 %605 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %604) #21 %606 = getelementptr inbounds i8, ptr %605, i64 %596 @@ -32843,7 +32841,7 @@ define linkonce_odr void @_ZNSt6vectorIPN4llvm6RecordESaIS2_EE15_M_range_insertI %15 = ptrtoint ptr %13 to i64 %16 = sub i64 %14, %15 %.not = icmp ult i64 %16, %8 - br i1 %.not, label %42, label %17 + br i1 %.not, label %43, label %17 17: ; preds = %5 %18 = ptrtoint ptr %1 to i64 @@ -32856,129 +32854,129 @@ _ZSt22__uninitialized_move_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit: ; %22 = sub nsw i64 0, %9 %23 = getelementptr inbounds ptr, ptr %13, i64 %22 tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %13, ptr align 8 %23, i64 %8, i1 false) - %.pre65 = load ptr, ptr %12, align 8 - %24 = getelementptr inbounds i8, ptr %.pre65, i64 %8 - store ptr %24, ptr %12, align 8 + %24 = load ptr, ptr %12, align 8 + %25 = getelementptr inbounds i8, ptr %24, i64 %8 + store ptr %25, ptr %12, align 8 %.not.i.i.i.i.i = icmp eq ptr %23, %1 - br i1 %.not.i.i.i.i.i, label %_ZSt13move_backwardIPPN4llvm6RecordES3_ET0_T_S5_S4_.exit, label %25 + br i1 %.not.i.i.i.i.i, label %_ZSt13move_backwardIPPN4llvm6RecordES3_ET0_T_S5_S4_.exit, label %26 -25: ; preds = %_ZSt22__uninitialized_move_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit - %26 = ptrtoint ptr %23 to i64 - %27 = sub i64 %26, %18 - %28 = ashr exact i64 %27, 3 - %29 = sub nsw i64 0, %28 - %30 = getelementptr inbounds ptr, ptr %13, i64 %29 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %30, ptr align 8 %1, i64 %27, i1 false) +26: ; preds = %_ZSt22__uninitialized_move_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit + %27 = ptrtoint ptr %23 to i64 + %28 = sub i64 %27, %18 + %29 = ashr exact i64 %28, 3 + %30 = sub nsw i64 0, %29 + %31 = getelementptr inbounds ptr, ptr %13, i64 %30 + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %31, ptr align 8 %1, i64 %28, i1 false) br label %_ZSt13move_backwardIPPN4llvm6RecordES3_ET0_T_S5_S4_.exit -_ZSt13move_backwardIPPN4llvm6RecordES3_ET0_T_S5_S4_.exit: ; preds = %25, %_ZSt22__uninitialized_move_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit +_ZSt13move_backwardIPPN4llvm6RecordES3_ET0_T_S5_S4_.exit: ; preds = %26, %_ZSt22__uninitialized_move_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %2, i64 %8, i1 false) br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEEmEvRT_T0_.exit: ; preds = %17 - %31 = getelementptr inbounds i8, ptr %2, i64 %19 - %.not.i.i.i.i.i.i.i.i = icmp eq ptr %3, %31 - br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit, label %32 + %32 = getelementptr inbounds i8, ptr %2, i64 %19 + %.not.i.i.i.i.i.i.i.i = icmp eq ptr %3, %32 + br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit, label %33 -32: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEEmEvRT_T0_.exit - %33 = ptrtoint ptr %31 to i64 - %34 = sub i64 %6, %33 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %13, ptr align 8 %31, i64 %34, i1 false) +33: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEEmEvRT_T0_.exit + %34 = ptrtoint ptr %32 to i64 + %35 = sub i64 %6, %34 + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %13, ptr align 8 %32, i64 %35, i1 false) %.pre = load ptr, ptr %12, align 8 br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit -_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEEmEvRT_T0_.exit, %32 - %35 = phi ptr [ %13, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEEmEvRT_T0_.exit ], [ %.pre, %32 ] - %36 = sub nuw nsw i64 %9, %20 - %37 = getelementptr inbounds ptr, ptr %35, i64 %36 - store ptr %37, ptr %12, align 8 +_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEEmEvRT_T0_.exit, %33 + %36 = phi ptr [ %13, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEEmEvRT_T0_.exit ], [ %.pre, %33 ] + %37 = sub nuw nsw i64 %9, %20 + %38 = getelementptr inbounds ptr, ptr %36, i64 %37 + store ptr %38, ptr %12, align 8 %.not.i.i.i.i.i.i.i.i.i44 = icmp eq ptr %13, %1 - br i1 %.not.i.i.i.i.i.i.i.i.i44, label %_ZSt22__uninitialized_move_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit45, label %38 + br i1 %.not.i.i.i.i.i.i.i.i.i44, label %_ZSt22__uninitialized_move_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit45, label %39 -38: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %37, ptr align 8 %1, i64 %19, i1 false) +39: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %38, ptr align 8 %1, i64 %19, i1 false) %.pre64 = load ptr, ptr %12, align 8 br label %_ZSt22__uninitialized_move_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit45 -_ZSt22__uninitialized_move_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit45: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit, %38 - %39 = phi ptr [ %37, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit ], [ %.pre64, %38 ] - %40 = getelementptr inbounds i8, ptr %39, i64 %19 - store ptr %40, ptr %12, align 8 +_ZSt22__uninitialized_move_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit45: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit, %39 + %40 = phi ptr [ %38, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit ], [ %.pre64, %39 ] + %41 = getelementptr inbounds i8, ptr %40, i64 %19 + store ptr %41, ptr %12, align 8 %.not.i.i.i.i.i46 = icmp eq ptr %13, %1 - br i1 %.not.i.i.i.i.i46, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit, label %41 + br i1 %.not.i.i.i.i.i46, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit, label %42 -41: ; preds = %_ZSt22__uninitialized_move_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit45 +42: ; preds = %_ZSt22__uninitialized_move_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit45 tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %2, i64 %19, i1 false) br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit -42: ; preds = %5 - %43 = load ptr, ptr %0, align 8 - %44 = ptrtoint ptr %43 to i64 - %45 = sub i64 %15, %44 - %46 = ashr exact i64 %45, 3 - %47 = sub nsw i64 1152921504606846975, %46 - %48 = icmp ult i64 %47, %9 - br i1 %48, label %49, label %_ZNKSt6vectorIPN4llvm6RecordESaIS2_EE12_M_check_lenEmPKc.exit +43: ; preds = %5 + %44 = load ptr, ptr %0, align 8 + %45 = ptrtoint ptr %44 to i64 + %46 = sub i64 %15, %45 + %47 = ashr exact i64 %46, 3 + %48 = sub nsw i64 1152921504606846975, %47 + %49 = icmp ult i64 %48, %9 + br i1 %49, label %50, label %_ZNKSt6vectorIPN4llvm6RecordESaIS2_EE12_M_check_lenEmPKc.exit -49: ; preds = %42 +50: ; preds = %43 tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.137) #23 unreachable -_ZNKSt6vectorIPN4llvm6RecordESaIS2_EE12_M_check_lenEmPKc.exit: ; preds = %42 - %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %46, i64 %9) - %50 = add nsw i64 %.sroa.speculated.i, %46 - %51 = icmp ult i64 %50, %46 - %52 = tail call i64 @llvm.umin.i64(i64 %50, i64 1152921504606846975) - %53 = select i1 %51, i64 1152921504606846975, i64 %52 - %.not.i = icmp eq i64 %53, 0 - br i1 %.not.i, label %_ZNSt12_Vector_baseIPN4llvm6RecordESaIS2_EE11_M_allocateEm.exit, label %54 - -54: ; preds = %_ZNKSt6vectorIPN4llvm6RecordESaIS2_EE12_M_check_lenEmPKc.exit - %55 = shl nuw nsw i64 %53, 3 - %56 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %55) #21 +_ZNKSt6vectorIPN4llvm6RecordESaIS2_EE12_M_check_lenEmPKc.exit: ; preds = %43 + %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %47, i64 %9) + %51 = add nsw i64 %.sroa.speculated.i, %47 + %52 = icmp ult i64 %51, %47 + %53 = tail call i64 @llvm.umin.i64(i64 %51, i64 1152921504606846975) + %54 = select i1 %52, i64 1152921504606846975, i64 %53 + %.not.i = icmp eq i64 %54, 0 + br i1 %.not.i, label %_ZNSt12_Vector_baseIPN4llvm6RecordESaIS2_EE11_M_allocateEm.exit, label %55 + +55: ; preds = %_ZNKSt6vectorIPN4llvm6RecordESaIS2_EE12_M_check_lenEmPKc.exit + %56 = shl nuw nsw i64 %54, 3 + %57 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %56) #21 br label %_ZNSt12_Vector_baseIPN4llvm6RecordESaIS2_EE11_M_allocateEm.exit -_ZNSt12_Vector_baseIPN4llvm6RecordESaIS2_EE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorIPN4llvm6RecordESaIS2_EE12_M_check_lenEmPKc.exit, %54 - %57 = phi ptr [ %56, %54 ], [ null, %_ZNKSt6vectorIPN4llvm6RecordESaIS2_EE12_M_check_lenEmPKc.exit ] - %58 = ptrtoint ptr %1 to i64 - %59 = sub i64 %58, %44 - %.not.i.i.i.i.i.i.i.i.i48 = icmp eq ptr %1, %43 - br i1 %.not.i.i.i.i.i.i.i.i.i48, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit50, label %60 +_ZNSt12_Vector_baseIPN4llvm6RecordESaIS2_EE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorIPN4llvm6RecordESaIS2_EE12_M_check_lenEmPKc.exit, %55 + %58 = phi ptr [ %57, %55 ], [ null, %_ZNKSt6vectorIPN4llvm6RecordESaIS2_EE12_M_check_lenEmPKc.exit ] + %59 = ptrtoint ptr %1 to i64 + %60 = sub i64 %59, %45 + %.not.i.i.i.i.i.i.i.i.i48 = icmp eq ptr %1, %44 + br i1 %.not.i.i.i.i.i.i.i.i.i48, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit50, label %61 -60: ; preds = %_ZNSt12_Vector_baseIPN4llvm6RecordESaIS2_EE11_M_allocateEm.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %57, ptr align 8 %43, i64 %59, i1 false) +61: ; preds = %_ZNSt12_Vector_baseIPN4llvm6RecordESaIS2_EE11_M_allocateEm.exit + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %58, ptr align 8 %44, i64 %60, i1 false) br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit50 -_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit50: ; preds = %_ZNSt12_Vector_baseIPN4llvm6RecordESaIS2_EE11_M_allocateEm.exit, %60 - %61 = getelementptr inbounds i8, ptr %57, i64 %59 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %61, ptr align 8 %2, i64 %8, i1 false) - %62 = getelementptr inbounds i8, ptr %61, i64 %8 - %63 = sub i64 %15, %58 +_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit50: ; preds = %_ZNSt12_Vector_baseIPN4llvm6RecordESaIS2_EE11_M_allocateEm.exit, %61 + %62 = getelementptr inbounds i8, ptr %58, i64 %60 + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %62, ptr align 8 %2, i64 %8, i1 false) + %63 = getelementptr inbounds i8, ptr %62, i64 %8 + %64 = sub i64 %15, %59 %.not.i.i.i.i.i.i.i.i.i51 = icmp eq ptr %13, %1 - br i1 %.not.i.i.i.i.i.i.i.i.i51, label %_ZSt34__uninitialized_move_if_noexcept_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit52, label %64 + br i1 %.not.i.i.i.i.i.i.i.i.i51, label %_ZSt34__uninitialized_move_if_noexcept_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit52, label %65 -64: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit50 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %62, ptr align 8 %1, i64 %63, i1 false) +65: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit50 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %63, ptr align 8 %1, i64 %64, i1 false) br label %_ZSt34__uninitialized_move_if_noexcept_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit52 -_ZSt34__uninitialized_move_if_noexcept_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit52: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit50, %64 - %65 = getelementptr inbounds i8, ptr %62, i64 %63 - %.not.i53 = icmp eq ptr %43, null - br i1 %.not.i53, label %_ZNSt12_Vector_baseIPN4llvm6RecordESaIS2_EE13_M_deallocateEPS2_m.exit, label %66 +_ZSt34__uninitialized_move_if_noexcept_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit52: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES5_S4_ET0_T_SB_SA_RSaIT1_E.exit50, %65 + %66 = getelementptr inbounds i8, ptr %63, i64 %64 + %.not.i53 = icmp eq ptr %44, null + br i1 %.not.i53, label %_ZNSt12_Vector_baseIPN4llvm6RecordESaIS2_EE13_M_deallocateEPS2_m.exit, label %67 -66: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit52 - %67 = sub i64 %14, %44 - tail call void @_ZdlPvm(ptr noundef nonnull %43, i64 noundef %67) #22 +67: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit52 + %68 = sub i64 %14, %45 + tail call void @_ZdlPvm(ptr noundef nonnull %44, i64 noundef %68) #22 br label %_ZNSt12_Vector_baseIPN4llvm6RecordESaIS2_EE13_M_deallocateEPS2_m.exit -_ZNSt12_Vector_baseIPN4llvm6RecordESaIS2_EE13_M_deallocateEPS2_m.exit: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit52, %66 - store ptr %57, ptr %0, align 8 - store ptr %65, ptr %12, align 8 - %68 = getelementptr inbounds ptr, ptr %57, i64 %53 - store ptr %68, ptr %10, align 8 +_ZNSt12_Vector_baseIPN4llvm6RecordESaIS2_EE13_M_deallocateEPS2_m.exit: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit52, %67 + store ptr %58, ptr %0, align 8 + store ptr %66, ptr %12, align 8 + %69 = getelementptr inbounds ptr, ptr %58, i64 %54 + store ptr %69, ptr %10, align 8 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit -_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit: ; preds = %41, %_ZSt22__uninitialized_move_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit45, %_ZSt13move_backwardIPPN4llvm6RecordES3_ET0_T_S5_S4_.exit, %_ZNSt12_Vector_baseIPN4llvm6RecordESaIS2_EE13_M_deallocateEPS2_m.exit, %4 +_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPPN4llvm6RecordESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit: ; preds = %42, %_ZSt22__uninitialized_move_aIPPN4llvm6RecordES3_SaIS2_EET0_T_S6_S5_RT1_.exit45, %_ZSt13move_backwardIPPN4llvm6RecordES3_ET0_T_S5_S4_.exit, %_ZNSt12_Vector_baseIPN4llvm6RecordESaIS2_EE13_M_deallocateEPS2_m.exit, %4 ret void } diff --git a/bench/llvm/optimized/MCAsmStreamer.cpp.ll b/bench/llvm/optimized/MCAsmStreamer.cpp.ll index b3d8fc6de28..7c6ef9bbc7e 100644 --- a/bench/llvm/optimized/MCAsmStreamer.cpp.ll +++ b/bench/llvm/optimized/MCAsmStreamer.cpp.ll @@ -6143,70 +6143,76 @@ switch.lookup: ; preds = %switch.hole_check unreachable 13: ; preds = %.thread - %.not2735 = icmp eq i32 %2, 0 - br i1 %.not2735, label %.loopexit, label %.lr.ph - -.lr.ph: ; preds = %13 %14 = getelementptr inbounds nuw i8, ptr %0, i64 304 %15 = load ptr, ptr %14, align 8 %16 = getelementptr inbounds nuw i8, ptr %15, i64 16 %17 = load i8, ptr %16, align 8 - %.fr37 = freeze i8 %17 - %18 = trunc i8 %.fr37 to i1 + %.fr41 = freeze i8 %17 + %18 = trunc i8 %.fr41 to i1 + %.not2735 = icmp eq i32 %2, 0 + br i1 %.not2735, label %.loopexit, label %.lr.ph + +.lr.ph: ; preds = %13 %19 = add i32 %2, -1 + %.not.i = icmp eq i32 %19, 0 %20 = getelementptr inbounds nuw i8, ptr %0, i64 8 - br i1 %18, label %.lr.ph.split.us, label %.lr.ph.split - -.lr.ph.split.us: ; preds = %.lr.ph, %.lr.ph.split.us - %.02436.us = phi i32 [ %36, %.lr.ph.split.us ], [ 0, %.lr.ph ] - %21 = sub i32 %2, %.02436.us - %.sroa.speculated.us = call i32 @llvm.umin.i32(i32 %19, i32 %21) - %.not.i.us = icmp eq i32 %.sroa.speculated.us, 0 - %22 = call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %.sroa.speculated.us, i1 true) - %23 = xor i32 %22, 31 - %24 = shl nuw i32 1, %23 - %.0.i.us = select i1 %.not.i.us, i32 0, i32 %24 - %25 = load i64, ptr %5, align 8 - %26 = shl i32 %.02436.us, 3 - %27 = zext nneg i32 %26 to i64 - %28 = ashr i64 %25, %27 - %29 = shl i32 %.0.i.us, 3 - %30 = sub i32 64, %29 - %31 = zext nneg i32 %30 to i64 - %32 = lshr i64 -1, %31 - %33 = and i64 %28, %32 - %34 = load ptr, ptr %20, align 8 - %35 = call noundef ptr @_ZN4llvm14MCConstantExpr6createElRNS_9MCContextEbj(i64 noundef %33, ptr noundef nonnull align 8 dereferenceable(2432) %34, i1 noundef zeroext false, i32 noundef 0) #21 - call void @_ZN4llvm10MCStreamer9emitValueEPKNS_6MCExprEjNS_5SMLocE(ptr noundef nonnull align 8 dereferenceable(744) %0, ptr noundef %35, i32 noundef %.0.i.us, ptr null) #21 - %36 = add i32 %.0.i.us, %.02436.us - %.not27.us = icmp eq i32 %36, %2 - br i1 %.not27.us, label %.loopexit, label %.lr.ph.split.us, !llvm.loop !33 - -.lr.ph.split: ; preds = %.lr.ph, %.lr.ph.split - %.02436 = phi i32 [ %53, %.lr.ph.split ], [ 0, %.lr.ph ] - %37 = sub i32 %2, %.02436 - %.sroa.speculated = call i32 @llvm.umin.i32(i32 %19, i32 %37) - %.not.i = icmp eq i32 %.sroa.speculated, 0 - %38 = call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %.sroa.speculated, i1 true) - %39 = xor i32 %38, 31 - %40 = shl nuw i32 1, %39 - %.0.i = select i1 %.not.i, i32 0, i32 %40 - %41 = sub i32 %37, %.0.i - %42 = load i64, ptr %5, align 8 - %43 = shl i32 %41, 3 - %44 = zext nneg i32 %43 to i64 - %45 = ashr i64 %42, %44 - %46 = shl i32 %.0.i, 3 - %47 = sub i32 64, %46 + br i1 %.not.i, label %.lr.ph.split.us.split, label %.lr.ph.split + +.lr.ph.split.us.split: ; preds = %.lr.ph, %.lr.ph.split.us.split + %21 = load ptr, ptr %20, align 8 + %22 = call noundef ptr @_ZN4llvm14MCConstantExpr6createElRNS_9MCContextEbj(i64 noundef poison, ptr noundef nonnull align 8 dereferenceable(2432) %21, i1 noundef zeroext false, i32 noundef 0) #21 + call void @_ZN4llvm10MCStreamer9emitValueEPKNS_6MCExprEjNS_5SMLocE(ptr noundef nonnull align 8 dereferenceable(744) %0, ptr noundef %22, i32 noundef 0, ptr null) #21 + br label %.lr.ph.split.us.split + +.lr.ph.split: ; preds = %.lr.ph + br i1 %18, label %.lr.ph.split.split.us, label %.lr.ph.split.split + +.lr.ph.split.split.us: ; preds = %.lr.ph.split, %.lr.ph.split.split.us + %.02436.us37 = phi i32 [ %37, %.lr.ph.split.split.us ], [ 0, %.lr.ph.split ] + %23 = sub i32 %2, %.02436.us37 + %.sroa.speculated.us38 = call i32 @llvm.umin.i32(i32 %19, i32 %23) + %24 = call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %.sroa.speculated.us38, i1 true) + %25 = xor i32 %24, 31 + %26 = shl nuw i32 1, %25 + %27 = load i64, ptr %5, align 8 + %28 = shl i32 %.02436.us37, 3 + %29 = zext nneg i32 %28 to i64 + %30 = ashr i64 %27, %29 + %.neg42 = shl i32 -8, %25 + %31 = add i32 %.neg42, 64 + %32 = zext nneg i32 %31 to i64 + %33 = lshr i64 -1, %32 + %34 = and i64 %30, %33 + %35 = load ptr, ptr %20, align 8 + %36 = call noundef ptr @_ZN4llvm14MCConstantExpr6createElRNS_9MCContextEbj(i64 noundef %34, ptr noundef nonnull align 8 dereferenceable(2432) %35, i1 noundef zeroext false, i32 noundef 0) #21 + call void @_ZN4llvm10MCStreamer9emitValueEPKNS_6MCExprEjNS_5SMLocE(ptr noundef nonnull align 8 dereferenceable(744) %0, ptr noundef %36, i32 noundef %26, ptr null) #21 + %37 = add i32 %26, %.02436.us37 + %.not27.us40 = icmp eq i32 %37, %2 + br i1 %.not27.us40, label %.loopexit, label %.lr.ph.split.split.us, !llvm.loop !33 + +.lr.ph.split.split: ; preds = %.lr.ph.split, %.lr.ph.split.split + %.02436 = phi i32 [ %53, %.lr.ph.split.split ], [ 0, %.lr.ph.split ] + %38 = sub i32 %2, %.02436 + %.sroa.speculated = call i32 @llvm.umin.i32(i32 %19, i32 %38) + %39 = call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %.sroa.speculated, i1 true) + %40 = xor i32 %39, 31 + %41 = shl nuw i32 1, %40 + %42 = sub i32 %38, %41 + %43 = load i64, ptr %5, align 8 + %44 = shl i32 %42, 3 + %45 = zext nneg i32 %44 to i64 + %46 = ashr i64 %43, %45 + %.neg = shl i32 -8, %40 + %47 = add i32 %.neg, 64 %48 = zext nneg i32 %47 to i64 %49 = lshr i64 -1, %48 - %50 = and i64 %45, %49 + %50 = and i64 %46, %49 %51 = load ptr, ptr %20, align 8 %52 = call noundef ptr @_ZN4llvm14MCConstantExpr6createElRNS_9MCContextEbj(i64 noundef %50, ptr noundef nonnull align 8 dereferenceable(2432) %51, i1 noundef zeroext false, i32 noundef 0) #21 - call void @_ZN4llvm10MCStreamer9emitValueEPKNS_6MCExprEjNS_5SMLocE(ptr noundef nonnull align 8 dereferenceable(744) %0, ptr noundef %52, i32 noundef %.0.i, ptr null) #21 - %53 = add i32 %.0.i, %.02436 + call void @_ZN4llvm10MCStreamer9emitValueEPKNS_6MCExprEjNS_5SMLocE(ptr noundef nonnull align 8 dereferenceable(744) %0, ptr noundef %52, i32 noundef %41, ptr null) #21 + %53 = add i32 %41, %.02436 %.not27 = icmp eq i32 %53, %2 - br i1 %.not27, label %.loopexit, label %.lr.ph.split, !llvm.loop !33 + br i1 %.not27, label %.loopexit, label %.lr.ph.split.split, !llvm.loop !33 _ZN4llvm9StringRefC2EPKc.exit.i: ; preds = %switch.lookup %54 = getelementptr inbounds nuw i8, ptr %0, i64 296 @@ -6258,7 +6264,7 @@ _ZN4llvm11raw_ostreamlsEPKc.exit: ; preds = %65, %67, %68 tail call fastcc void @_ZN12_GLOBAL__N_113MCAsmStreamer7EmitEOLEv(ptr noundef nonnull align 8 dereferenceable(744) %0) br label %.loopexit -.loopexit: ; preds = %.lr.ph.split, %.lr.ph.split.us, %13, %77, %73 +.loopexit: ; preds = %.lr.ph.split.split, %.lr.ph.split.split.us, %13, %77, %73 ret void } diff --git a/bench/llvm/optimized/StackColoring.cpp.ll b/bench/llvm/optimized/StackColoring.cpp.ll index 004728666fc..b481ac728ba 100644 --- a/bench/llvm/optimized/StackColoring.cpp.ll +++ b/bench/llvm/optimized/StackColoring.cpp.ll @@ -2827,7 +2827,11 @@ _ZN12_GLOBAL__N_113StackColoring14collectMarkersEj.exit: ; preds = %_ZN4llvm11Sm 1060: ; preds = %1057 %1061 = load ptr, ptr %1, align 8 %1062 = call noundef zeroext i1 @_ZNK4llvm12FunctionPass12skipFunctionERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(28) %0, ptr noundef nonnull align 8 dereferenceable(136) %1061) #20 - br i1 %1062, label %._crit_edge.thread, label %.lr.ph611 + br i1 %1062, label %._crit_edge.thread, label %.lr.ph611.preheader + +.lr.ph611.preheader: ; preds = %1060 + %umax = call i32 @llvm.umax.i32(i32 %180, i32 1) + br label %.lr.ph611 ._crit_edge.thread: ; preds = %_ZN12_GLOBAL__N_113StackColoring14collectMarkersEj.exit, %._crit_edge, %1057, %1060 %1063 = load ptr, ptr %146, align 8 @@ -2856,8 +2860,8 @@ _ZN12_GLOBAL__N_113StackColoring16removeAllMarkersEv.exit: ; preds = %._crit_edg store i32 0, ptr %148, align 8 br label %3747 -.lr.ph611: ; preds = %1060, %_ZNSt10unique_ptrIN4llvm12LiveIntervalESt14default_deleteIS1_EED2Ev.exit - %.078610 = phi i32 [ %1094, %_ZNSt10unique_ptrIN4llvm12LiveIntervalESt14default_deleteIS1_EED2Ev.exit ], [ 0, %1060 ] +.lr.ph611: ; preds = %.lr.ph611.preheader, %_ZNSt10unique_ptrIN4llvm12LiveIntervalESt14default_deleteIS1_EED2Ev.exit + %.078610 = phi i32 [ %1094, %_ZNSt10unique_ptrIN4llvm12LiveIntervalESt14default_deleteIS1_EED2Ev.exit ], [ 0, %.lr.ph611.preheader ] %1071 = call noalias noundef nonnull dereferenceable(120) ptr @_Znwm(i64 noundef 120) #22 %1072 = getelementptr inbounds i8, ptr %1071, i64 16 call void @_ZN4llvm15SmallVectorBaseIjEC2EPvm(ptr noundef nonnull align 8 dereferenceable(120) %1071, ptr noundef nonnull %1072, i64 noundef 2) #20 @@ -2908,8 +2912,8 @@ _ZNKSt14default_deleteIN4llvm12LiveIntervalEEclEPS1_.exit.i: ; preds = %_ZN4llvm _ZNSt10unique_ptrIN4llvm12LiveIntervalESt14default_deleteIS1_EED2Ev.exit: ; preds = %_ZN4llvm23SmallVectorTemplateBaseIiLb1EE9push_backEi.exit, %_ZNKSt14default_deleteIN4llvm12LiveIntervalEEclEPS1_.exit.i store ptr null, ptr %36, align 8 %1094 = add nuw i32 %.078610, 1 - %exitcond862.not = icmp eq i32 %1094, %180 - br i1 %exitcond862.not, label %._crit_edge612, label %.lr.ph611, !llvm.loop !34 + %exitcond859.not = icmp eq i32 %1094, %umax + br i1 %exitcond859.not, label %._crit_edge612, label %.lr.ph611, !llvm.loop !34 ._crit_edge612: ; preds = %_ZNSt10unique_ptrIN4llvm12LiveIntervalESt14default_deleteIS1_EED2Ev.exit call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %19) @@ -4623,12 +4627,14 @@ _ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit.i187: ; pr .lr.ph614.preheader: ; preds = %._crit_edge.i189, %_ZN12_GLOBAL__N_113StackColoring22calculateLiveIntervalsEj.exit, %1775 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %37, i8 0, i64 20, i1 false) + %umax863 = call i32 @llvm.umax.i32(i32 %180, i32 1) + %wide.trip.count864 = zext i32 %umax863 to i64 br label %.lr.ph614 .lr.ph614: ; preds = %.lr.ph614.preheader, %1935 - %indvars.iv863 = phi i64 [ 0, %.lr.ph614.preheader ], [ %indvars.iv.next864, %1935 ] + %indvars.iv860 = phi i64 [ 0, %.lr.ph614.preheader ], [ %indvars.iv.next861, %1935 ] %1924 = load ptr, ptr %35, align 8 - %1925 = getelementptr inbounds i32, ptr %1924, i64 %indvars.iv863 + %1925 = getelementptr inbounds i32, ptr %1924, i64 %indvars.iv860 %1926 = load i32, ptr %1925, align 4 %1927 = sext i32 %1926 to i64 %1928 = load ptr, ptr %149, align 8 @@ -4639,14 +4645,14 @@ _ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit.i187: ; pr 1932: ; preds = %.lr.ph614 %1933 = load ptr, ptr %35, align 8 - %1934 = getelementptr inbounds i32, ptr %1933, i64 %indvars.iv863 + %1934 = getelementptr inbounds i32, ptr %1933, i64 %indvars.iv860 store i32 -1, ptr %1934, align 4 br label %1935 1935: ; preds = %.lr.ph614, %1932 - %indvars.iv.next864 = add nuw nsw i64 %indvars.iv863, 1 - %exitcond867.not = icmp eq i64 %indvars.iv.next864, %183 - br i1 %exitcond867.not, label %._crit_edge615, label %.lr.ph614, !llvm.loop !48 + %indvars.iv.next861 = add nuw nsw i64 %indvars.iv860, 1 + %exitcond865.not = icmp eq i64 %indvars.iv.next861, %wide.trip.count864 + br i1 %exitcond865.not, label %._crit_edge615, label %.lr.ph614, !llvm.loop !48 ._crit_edge615: ; preds = %1935 %1936 = load ptr, ptr %35, align 8 @@ -4697,32 +4703,34 @@ _ZNSt17_Temporary_bufferIPiiEC2ES0_l.exit.i.i.i: ; preds = %.lr.ph.i.i.i.i.i228 %1948 = getelementptr inbounds nuw i8, ptr %37, i64 16 %1949 = getelementptr inbounds nuw i8, ptr %37, i64 8 %1950 = getelementptr inbounds nuw i8, ptr %37, i64 12 + %umax875 = call i32 @llvm.umax.i32(i32 %180, i32 1) + %wide.trip.count876 = zext i32 %umax875 to i64 br label %.preheader397.us .preheader397.us: ; preds = %.loopexit.us, %.preheader397.us.preheader - %indvars.iv875 = phi i64 [ %indvars.iv.next876.mux, %.loopexit.us ], [ 0, %.preheader397.us.preheader ] - %indvars.iv870 = phi i64 [ %indvars.iv.next871.mux, %.loopexit.us ], [ 1, %.preheader397.us.preheader ] + %indvars.iv873 = phi i64 [ %indvars.iv.next874.mux, %.loopexit.us ], [ 0, %.preheader397.us.preheader ] + %indvars.iv868 = phi i64 [ %indvars.iv.next869.mux, %.loopexit.us ], [ 1, %.preheader397.us.preheader ] %.191628.us = phi i1 [ %.292.us.mux, %.loopexit.us ], [ false, %.preheader397.us.preheader ] %1951 = load ptr, ptr %35, align 8 - %1952 = getelementptr inbounds i32, ptr %1951, i64 %indvars.iv875 + %1952 = getelementptr inbounds i32, ptr %1951, i64 %indvars.iv873 %1953 = load i32, ptr %1952, align 4 %1954 = icmp ne i32 %1953, -1 - %indvars.iv.next876 = add nuw nsw i64 %indvars.iv875, 1 - %1955 = icmp samesign ult i64 %indvars.iv.next876, %183 + %indvars.iv.next874 = add nuw nsw i64 %indvars.iv873, 1 + %1955 = icmp samesign ult i64 %indvars.iv.next874, %183 %or.cond638 = select i1 %1954, i1 %1955, i1 false br i1 %or.cond638, label %.lr.ph624.us, label %.loopexit.us .lr.ph624.us: ; preds = %.preheader397.us, %2161 - %indvars.iv872 = phi i64 [ %indvars.iv.next873, %2161 ], [ %indvars.iv870, %.preheader397.us ] + %indvars.iv870 = phi i64 [ %indvars.iv.next871, %2161 ], [ %indvars.iv868, %.preheader397.us ] %.393620.us = phi i1 [ %.494.us, %2161 ], [ %.191628.us, %.preheader397.us ] %1956 = load ptr, ptr %35, align 8 - %1957 = getelementptr inbounds i32, ptr %1956, i64 %indvars.iv872 + %1957 = getelementptr inbounds i32, ptr %1956, i64 %indvars.iv870 %1958 = load i32, ptr %1957, align 4 %1959 = icmp eq i32 %1958, -1 br i1 %1959, label %2161, label %1960 1960: ; preds = %.lr.ph624.us - %1961 = getelementptr inbounds i32, ptr %1956, i64 %indvars.iv875 + %1961 = getelementptr inbounds i32, ptr %1956, i64 %indvars.iv873 %1962 = load i32, ptr %1961, align 4 %1963 = load ptr, ptr %41, align 8 %1964 = getelementptr inbounds nuw i8, ptr %1963, i64 8 @@ -5061,7 +5069,7 @@ _ZN4llvm12DenseMapBaseINS_8DenseMapIiiNS_12DenseMapInfoIivEENS_6detail12DenseMap %2130 = getelementptr inbounds nuw i8, ptr %.0.i.i.us, i64 4 store i32 %1962, ptr %2130, align 4 %2131 = load ptr, ptr %35, align 8 - %2132 = getelementptr inbounds i32, ptr %2131, i64 %indvars.iv872 + %2132 = getelementptr inbounds i32, ptr %2131, i64 %indvars.iv870 store i32 -1, ptr %2132, align 4 %2133 = load ptr, ptr %41, align 8 %2134 = getelementptr inbounds nuw i8, ptr %2133, i64 8 @@ -5106,19 +5114,19 @@ _ZN4llvm16MachineFrameInfo18setObjectAlignmentEiNS_5AlignE.exit.us: ; preds = %2 2161: ; preds = %_ZN4llvm16MachineFrameInfo18setObjectAlignmentEiNS_5AlignE.exit.us, %1990, %1976, %1960, %.lr.ph624.us %.494.us = phi i1 [ %.393620.us, %.lr.ph624.us ], [ %.393620.us, %1960 ], [ %.393620.us, %1976 ], [ %.393620.us, %1990 ], [ true, %_ZN4llvm16MachineFrameInfo18setObjectAlignmentEiNS_5AlignE.exit.us ] - %indvars.iv.next873 = add nuw nsw i64 %indvars.iv872, 1 - %lftr.wideiv = trunc i64 %indvars.iv.next873 to i32 - %exitcond874.not = icmp eq i32 %180, %lftr.wideiv - br i1 %exitcond874.not, label %.loopexit.us, label %.lr.ph624.us, !llvm.loop !53 + %indvars.iv.next871 = add nuw nsw i64 %indvars.iv870, 1 + %lftr.wideiv = trunc i64 %indvars.iv.next871 to i32 + %exitcond872.not = icmp eq i32 %180, %lftr.wideiv + br i1 %exitcond872.not, label %.loopexit.us, label %.lr.ph624.us, !llvm.loop !53 .loopexit.us: ; preds = %2161, %.preheader397.us %.292.us = phi i1 [ %.191628.us, %.preheader397.us ], [ %.494.us, %2161 ] - %indvars.iv.next871 = add nuw nsw i64 %indvars.iv870, 1 - %exitcond878.not = icmp ne i64 %indvars.iv.next876, %183 - %brmerge = select i1 %exitcond878.not, i1 true, i1 %.292.us - %indvars.iv.next876.mux = select i1 %exitcond878.not, i64 %indvars.iv.next876, i64 0 - %indvars.iv.next871.mux = select i1 %exitcond878.not, i64 %indvars.iv.next871, i64 1 - %.292.us.mux = select i1 %exitcond878.not, i1 %.292.us, i1 false + %indvars.iv.next869 = add nuw nsw i64 %indvars.iv868, 1 + %exitcond877.not = icmp ne i64 %indvars.iv.next874, %wide.trip.count876 + %brmerge = select i1 %exitcond877.not, i1 true, i1 %.292.us + %indvars.iv.next874.mux = select i1 %exitcond877.not, i64 %indvars.iv.next874, i64 0 + %indvars.iv.next869.mux = select i1 %exitcond877.not, i64 %indvars.iv.next869, i64 1 + %.292.us.mux = select i1 %exitcond877.not, i1 %.292.us, i1 false br i1 %brmerge, label %.preheader397.us, label %.split.us, !llvm.loop !54 .lr.ph618: ; preds = %"_ZN4llvm11stable_sortIRNS_11SmallVectorIiLj8EEEZN12_GLOBAL__N_113StackColoring20runOnMachineFunctionERNS_15MachineFunctionEE3$_0EEvOT_T0_.exit", %_ZN4llvm4sortIRNS_11SmallVectorINS_9SlotIndexELj4EEEEEvOT_.exit diff --git a/bench/lodepng/optimized/lodepng.cpp.ll b/bench/lodepng/optimized/lodepng.cpp.ll index ad27fd1327d..402ad74561f 100644 --- a/bench/lodepng/optimized/lodepng.cpp.ll +++ b/bench/lodepng/optimized/lodepng.cpp.ll @@ -24078,27 +24078,27 @@ if.then4: ; preds = %if.then %sub.ptr.rhs.cast.i = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %cmp10 = icmp ugt i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i - br i1 %cmp10, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, label %_ZSt7advanceIPhmEvRT_T0_.exit + br i1 %cmp10, label %if.then11, label %_ZSt7advanceIPhmEvRT_T0_.exit -_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit: ; preds = %if.then4 +if.then11: ; preds = %if.then4 %idx.neg = sub i64 0, %sub.ptr.sub.i.i %add.ptr = getelementptr inbounds i8, ptr %1, i64 %idx.neg - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr align 1 %add.ptr, i64 %sub.ptr.sub.i.i, i1 false) - %.pre91 = load ptr, ptr %_M_finish, align 8 - %add.ptr22 = getelementptr inbounds i8, ptr %.pre91, i64 %sub.ptr.sub.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr nonnull align 1 %add.ptr, i64 %sub.ptr.sub.i.i, i1 false) + %2 = load ptr, ptr %_M_finish, align 8 + %add.ptr22 = getelementptr inbounds i8, ptr %2, i64 %sub.ptr.sub.i.i store ptr %add.ptr22, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt4copyIPhN9__gnu_cxx17__normal_iteratorIS0_St6vectorIhSaIhEEEEET0_T_S8_S7_.exit, label %if.then.i.i.i.i.i -if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i: ; preds = %if.then11 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %idx.neg.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 %idx.neg.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %_ZSt4copyIPhN9__gnu_cxx17__normal_iteratorIS0_St6vectorIhSaIhEEEEET0_T_S8_S7_.exit -_ZSt4copyIPhN9__gnu_cxx17__normal_iteratorIS0_St6vectorIhSaIhEEEEET0_T_S8_S7_.exit: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, %if.then.i.i.i.i.i +_ZSt4copyIPhN9__gnu_cxx17__normal_iteratorIS0_St6vectorIhSaIhEEEEET0_T_S8_S7_.exit: ; preds = %if.then11, %if.then.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %__position.coerce, ptr align 1 %__first, i64 %sub.ptr.sub.i.i, i1 false) br label %if.end86 @@ -24115,9 +24115,9 @@ if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIPhmEvR br label %_ZSt22__uninitialized_copy_aIPhS0_hET0_T_S2_S1_RSaIT1_E.exit _ZSt22__uninitialized_copy_aIPhS0_hET0_T_S2_S1_RSaIT1_E.exit: ; preds = %_ZSt7advanceIPhmEvRT_T0_.exit, %if.then.i.i.i.i.i.i.i.i - %2 = phi ptr [ %1, %_ZSt7advanceIPhmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] + %3 = phi ptr [ %1, %_ZSt7advanceIPhmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] %sub = sub nuw i64 %sub.ptr.sub.i.i, %sub.ptr.sub.i - %add.ptr36 = getelementptr inbounds i8, ptr %2, i64 %sub + %add.ptr36 = getelementptr inbounds i8, ptr %3, i64 %sub store ptr %add.ptr36, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i.i.i.i.i44 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i.i.i.i.i44, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit47, label %if.then.i.i.i.i.i.i.i.i.i45 @@ -24128,8 +24128,8 @@ if.then.i.i.i.i.i.i.i.i.i45: ; preds = %_ZSt22__uninitializ br label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit47 _ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit47: ; preds = %_ZSt22__uninitialized_copy_aIPhS0_hET0_T_S2_S1_RSaIT1_E.exit, %if.then.i.i.i.i.i.i.i.i.i45 - %3 = phi ptr [ %add.ptr36, %_ZSt22__uninitialized_copy_aIPhS0_hET0_T_S2_S1_RSaIT1_E.exit ], [ %.pre90, %if.then.i.i.i.i.i.i.i.i.i45 ] - %add.ptr44 = getelementptr inbounds i8, ptr %3, i64 %sub.ptr.sub.i + %4 = phi ptr [ %add.ptr36, %_ZSt22__uninitialized_copy_aIPhS0_hET0_T_S2_S1_RSaIT1_E.exit ], [ %.pre90, %if.then.i.i.i.i.i.i.i.i.i45 ] + %add.ptr44 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr44, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i51 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i51, label %if.end86, label %if.then.i.i.i.i.i52 @@ -24139,8 +24139,8 @@ if.then.i.i.i.i.i52: ; preds = %_ZSt22__uninitializ br label %if.end86 if.else50: ; preds = %if.then - %4 = load ptr, ptr %this, align 8 - %sub.ptr.rhs.cast.i.i56 = ptrtoint ptr %4 to i64 + %5 = load ptr, ptr %this, align 8 + %sub.ptr.rhs.cast.i.i56 = ptrtoint ptr %5 to i64 %sub.ptr.sub.i.i57 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i.i56 %sub.i = sub i64 9223372036854775807, %sub.ptr.sub.i.i57 %cmp.i = icmp ult i64 %sub.i, %sub.ptr.sub.i.i @@ -24154,8 +24154,8 @@ _ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc.exit: ; preds = %if.else50 %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i.i57, i64 %sub.ptr.sub.i.i) %add.i = add i64 %.sroa.speculated.i, %sub.ptr.sub.i.i57 %cmp7.i = icmp ult i64 %add.i, %sub.ptr.sub.i.i57 - %5 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 9223372036854775807) - %cond.i = select i1 %cmp7.i, i64 9223372036854775807, i64 %5 + %6 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 9223372036854775807) + %cond.i = select i1 %cmp7.i, i64 9223372036854775807, i64 %6 %cmp.not.i = icmp eq i64 %cond.i, 0 br i1 %cmp.not.i, label %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit, label %cond.true.i @@ -24167,11 +24167,11 @@ _ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorIhSaIh %cond.i58 = phi ptr [ %call5.i.i.i, %cond.true.i ], [ null, %_ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc.exit ] %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i59 = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i61 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i59, %sub.ptr.rhs.cast.i.i56 - %tobool.not.i.i.i.i.i.i.i.i.i62 = icmp eq ptr %__position.coerce, %4 + %tobool.not.i.i.i.i.i.i.i.i.i62 = icmp eq ptr %__position.coerce, %5 br i1 %tobool.not.i.i.i.i.i.i.i.i.i62, label %invoke.cont61, label %if.then.i.i.i.i.i.i.i.i.i63 if.then.i.i.i.i.i.i.i.i.i63: ; preds = %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %cond.i58, ptr align 1 %4, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i61, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %cond.i58, ptr align 1 %5, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i61, i1 false) br label %invoke.cont61 invoke.cont61: ; preds = %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit, %if.then.i.i.i.i.i.i.i.i.i63 @@ -24188,11 +24188,11 @@ if.then.i.i.i.i.i.i.i.i.i76: ; preds = %invoke.cont61 invoke.cont65: ; preds = %if.then.i.i.i.i.i.i.i.i.i76, %invoke.cont61 %add.ptr.i.i.i.i.i.i.i.i.i77 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i70, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i74 - %tobool.not.i = icmp eq ptr %4, null + %tobool.not.i = icmp eq ptr %5, null br i1 %tobool.not.i, label %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit, label %if.then.i79 if.then.i79: ; preds = %invoke.cont65 - tail call void @_ZdlPv(ptr noundef nonnull %4) #35 + tail call void @_ZdlPv(ptr noundef nonnull %5) #35 br label %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit _ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit: ; preds = %invoke.cont65, %if.then.i79 diff --git a/bench/luau/optimized/BytecodeBuilder.cpp.ll b/bench/luau/optimized/BytecodeBuilder.cpp.ll index 94d90d1c0b9..f03ae8994b5 100644 --- a/bench/luau/optimized/BytecodeBuilder.cpp.ll +++ b/bench/luau/optimized/BytecodeBuilder.cpp.ll @@ -8435,11 +8435,7 @@ _ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %.loopexit229 tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %273, i8 -1, i64 %277, i1 false) br label %.lr.ph274 -.preheader227: ; preds = %_ZN4LuauL13getJumpTargetEjj.exit.thread - %.not297 = icmp eq i64 %269, 0 - br i1 %.not297, label %._crit_edge, label %.lr.ph277.preheader - -.lr.ph277.preheader: ; preds = %.preheader227 +.lr.ph277.preheader: ; preds = %_ZN4LuauL13getJumpTargetEjj.exit.thread %278 = lshr exact i64 %269, 2 %umax = tail call i64 @llvm.umax.i64(i64 %278, i64 1) br label %.lr.ph277 @@ -8556,7 +8552,7 @@ _ZN4LuauL13getJumpTargetEjj.exit: ; preds = %295, %290, %287, %2 304: ; preds = %.thread, %.loopexit.split-lp %lpad.phi219 = phi { ptr, i32 } [ %lpad.thr_comm, %.thread ], [ %lpad.phi, %.loopexit.split-lp ] - call void @_ZdlPvm(ptr noundef nonnull %.sroa.0.0315322, i64 noundef %322) #32 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.0.0315322, i64 noundef %323) #32 br label %_ZNSt6vectorIiSaIiEED2Ev.exit _ZN4LuauL13getJumpTargetEjj.exit.thread: ; preds = %293, %299, %_ZN4LuauL13getJumpTargetEjj.exit @@ -8571,7 +8567,7 @@ _ZN4LuauL13getJumpTargetEjj.exit.thread: ; preds = %293, %299, %_ZN4Lua %312 = sub i64 %310, %311 %313 = ashr exact i64 %312, 2 %314 = icmp ult i64 %307, %313 - br i1 %314, label %.lr.ph274, label %.preheader227, !llvm.loop !62 + br i1 %314, label %.lr.ph274, label %.lr.ph277.preheader, !llvm.loop !62 .lr.ph277: ; preds = %.lr.ph277.preheader, %320 %.0132276 = phi i64 [ %321, %320 ], [ 0, %.lr.ph277.preheader ] @@ -8590,13 +8586,16 @@ _ZN4LuauL13getJumpTargetEjj.exit.thread: ; preds = %293, %299, %_ZN4Lua %.1134 = phi i32 [ %319, %318 ], [ %.0133275, %.lr.ph277 ] %321 = add nuw i64 %.0132276, 1 %exitcond.not = icmp eq i64 %321, %umax - br i1 %exitcond.not, label %._crit_edge, label %.lr.ph277, !llvm.loop !63 + br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph277, !llvm.loop !63 + +._crit_edge.loopexit: ; preds = %320 + %322 = add nsw i64 %313, 1 + br label %._crit_edge -._crit_edge: ; preds = %320, %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i, %.preheader227 - %322 = phi i64 [ 0, %.preheader227 ], [ 0, %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i ], [ %269, %320 ] - %.lcssa259323 = phi i64 [ %313, %.preheader227 ], [ 0, %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i ], [ %313, %320 ] - %.sroa.0.0315322 = phi ptr [ %273, %.preheader227 ], [ null, %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i ], [ %273, %320 ] - %323 = add nsw i64 %.lcssa259323, 1 +._crit_edge: ; preds = %._crit_edge.loopexit, %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i + %323 = phi i64 [ 0, %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i ], [ %269, %._crit_edge.loopexit ] + %.lcssa259323 = phi i64 [ 1, %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i ], [ %322, %._crit_edge.loopexit ] + %.sroa.0.0315322 = phi ptr [ null, %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i ], [ %273, %._crit_edge.loopexit ] store i32 -1, ptr %4, align 4 %324 = getelementptr inbounds i8, ptr %2, i64 8 %325 = load ptr, ptr %324, align 8 @@ -8605,20 +8604,20 @@ _ZN4LuauL13getJumpTargetEjj.exit.thread: ; preds = %293, %299, %_ZN4Lua %328 = ptrtoint ptr %326 to i64 %329 = sub i64 %327, %328 %330 = ashr exact i64 %329, 2 - %331 = icmp ugt i64 %323, %330 + %331 = icmp ugt i64 %.lcssa259323, %330 br i1 %331, label %332, label %334 332: ; preds = %._crit_edge - %333 = sub nuw nsw i64 %323, %330 + %333 = sub nuw nsw i64 %.lcssa259323, %330 invoke void @_ZNSt6vectorIiSaIiEE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPiS1_EEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr %325, i64 noundef %333, ptr noundef nonnull align 4 dereferenceable(4) %4) to label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit unwind label %.loopexit.split-lp.loopexit.split-lp 334: ; preds = %._crit_edge - %335 = icmp ult i64 %323, %330 + %335 = icmp ult i64 %.lcssa259323, %330 br i1 %335, label %336, label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit 336: ; preds = %334 - %337 = getelementptr inbounds i32, ptr %326, i64 %323 + %337 = getelementptr inbounds i32, ptr %326, i64 %.lcssa259323 %.not.i.i = icmp eq ptr %325, %337 br i1 %.not.i.i, label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit, label %338 @@ -8885,7 +8884,7 @@ _ZN4LuauL13getJumpTargetEjj.exit195.thread: ; preds = %435, %_ZN4LuauL13ge br i1 %.not.i.i.i196, label %_ZNSt6vectorIiSaIiEED2Ev.exit197, label %465 465: ; preds = %.outer._crit_edge - call void @_ZdlPvm(ptr noundef nonnull %.sroa.0.0315322, i64 noundef %322) #32 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.0.0315322, i64 noundef %323) #32 br label %_ZNSt6vectorIiSaIiEED2Ev.exit197 _ZNSt6vectorIiSaIiEED2Ev.exit: ; preds = %.loopexit230, %.loopexit.split-lp231.loopexit.split-lp.loopexit, %.loopexit.split-lp231.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp231.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp231.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp231.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp231.loopexit, %304, %.loopexit.split-lp, %302 diff --git a/bench/luau/optimized/Linter.cpp.ll b/bench/luau/optimized/Linter.cpp.ll index b86a4b85b8c..7d57efef793 100644 --- a/bench/luau/optimized/Linter.cpp.ll +++ b/bench/luau/optimized/Linter.cpp.ll @@ -427,8 +427,6 @@ $_ZNSt6vectorIN4Luau11LintWarningESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_ $_ZN4Luau15LintGlobalLocal14trackGlobalRefEPNS_13AstExprGlobalE = comdat any -$_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE17_M_default_appendEm = comdat any - $_ZNSt6vectorIN4Luau15LintGlobalLocal12FunctionInfoESaIS2_EE17_M_realloc_insertIJRPNS0_15AstExprFunctionEEEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_ = comdat any $_ZSt16__do_uninit_copyIPKN4Luau15LintGlobalLocal12FunctionInfoEPS2_ET0_T_S7_S6_ = comdat any @@ -998,7 +996,6 @@ $_ZN4Luau6FValueIbE4listE = comdat any @.str.56 = private unnamed_addr constant [68 x i8] c"Placeholder value '_' is read here; consider using a named variable\00", align 1 @.str.57 = private unnamed_addr constant [26 x i8] c"vector::_M_realloc_insert\00", align 1 @.str.58 = private unnamed_addr constant [16 x i8] c"vector::reserve\00", align 1 -@.str.59 = private unnamed_addr constant [26 x i8] c"vector::_M_default_append\00", align 1 @.str.60 = private unnamed_addr constant [86 x i8] c"Built-in global '%s' is overwritten here; consider using a local or changing the name\00", align 1 @.str.61 = private unnamed_addr constant [20 x i8] c"Unknown global '%s'\00", align 1 @.str.62 = private unnamed_addr constant [44 x i8] c"Global '%s' is deprecated, use '%s' instead\00", align 1 @@ -6935,14 +6932,14 @@ _ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE9push_backERKS2_.exit: ; preds = % %116 = getelementptr inbounds i8, ptr %5, i64 16 %117 = load ptr, ptr %116, align 8 %118 = load ptr, ptr %115, align 8 - %119 = ptrtoint ptr %117 to i64 - %120 = ptrtoint ptr %118 to i64 - %121 = sub i64 %119, %120 - %122 = ashr exact i64 %121, 3 %.not46 = icmp eq ptr %117, %118 br i1 %.not46, label %_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE6resizeEm.exit, label %.lr.ph .lr.ph: ; preds = %.preheader + %119 = ptrtoint ptr %117 to i64 + %120 = ptrtoint ptr %118 to i64 + %121 = sub i64 %119, %120 + %122 = ashr exact i64 %121, 3 %123 = getelementptr inbounds i8, ptr %0, i64 80 %124 = getelementptr inbounds i8, ptr %0, i64 88 %125 = load ptr, ptr %124, align 8 @@ -6970,133 +6967,25 @@ _ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE9push_backERKS2_.exit: ; preds = % 138: ; preds = %132 %139 = add nuw i64 %.041, 1 %exitcond48.not = icmp eq i64 %139, %umax - br i1 %exitcond48.not, label %.critedge.thread, label %131, !llvm.loop !39 + br i1 %exitcond48.not, label %_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE6resizeEm.exit, label %131, !llvm.loop !39 .critedge: ; preds = %131, %132 %.041.lcssa = phi i64 [ %130, %131 ], [ %.041, %132 ] %140 = getelementptr inbounds ptr, ptr %118, i64 %.041.lcssa %.not.i.i23 = icmp eq ptr %117, %140 - br i1 %.not.i.i23, label %_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE6resizeEm.exit, label %144 + br i1 %.not.i.i23, label %_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE6resizeEm.exit, label %141 -.critedge.thread: ; preds = %138 - %141 = icmp eq ptr %117, %118 - br i1 %141, label %142, label %_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE6resizeEm.exit - -142: ; preds = %.critedge.thread - %143 = sub nuw i64 %umax, %122 - tail call void @_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %143) - br label %_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE6resizeEm.exit - -144: ; preds = %.critedge +141: ; preds = %.critedge store ptr %140, ptr %116, align 8 br label %_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE6resizeEm.exit -_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE6resizeEm.exit: ; preds = %_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE9push_backERKS2_.exit, %.preheader, %_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE7reserveEm.exit, %.critedge.thread, %144, %.critedge, %142, %111, %38 +_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE6resizeEm.exit: ; preds = %138, %_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE9push_backERKS2_.exit, %.preheader, %_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE7reserveEm.exit, %141, %.critedge, %111, %38 ret void } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #2 -; Function Attrs: mustprogress uwtable -define linkonce_odr dso_local void @_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %1) local_unnamed_addr #1 comdat align 2 personality ptr @__gxx_personality_v0 { - %.not = icmp eq i64 %1, 0 - br i1 %.not, label %43, label %3 - -3: ; preds = %2 - %4 = getelementptr inbounds i8, ptr %0, i64 8 - %5 = load ptr, ptr %4, align 8 - %6 = load ptr, ptr %0, align 8 - %7 = ptrtoint ptr %5 to i64 - %8 = ptrtoint ptr %6 to i64 - %9 = sub i64 %7, %8 - %10 = ashr exact i64 %9, 3 - %11 = getelementptr inbounds i8, ptr %0, i64 16 - %12 = load ptr, ptr %11, align 8 - %13 = ptrtoint ptr %12 to i64 - %14 = sub i64 %13, %7 - %15 = ashr exact i64 %14, 3 - %16 = icmp ult i64 %10, 1152921504606846976 - tail call void @llvm.assume(i1 %16) - %17 = xor i64 %10, 1152921504606846975 - %18 = icmp ule i64 %15, %17 - tail call void @llvm.assume(i1 %18) - %.not28 = icmp ult i64 %15, %1 - br i1 %.not28, label %25, label %19 - -19: ; preds = %3 - store ptr null, ptr %5, align 8 - %20 = getelementptr i8, ptr %5, i64 8 - %21 = icmp eq i64 %1, 1 - br i1 %21, label %_ZSt27__uninitialized_default_n_aIPPN4Luau15AstExprFunctionEmS2_ET_S4_T0_RSaIT1_E.exit, label %_ZSt6fill_nIPPN4Luau15AstExprFunctionEmS2_ET_S4_T0_RKT1_.exit.loopexit.i.i.i - -_ZSt6fill_nIPPN4Luau15AstExprFunctionEmS2_ET_S4_T0_RKT1_.exit.loopexit.i.i.i: ; preds = %19 - %22 = shl i64 %1, 3 - %23 = add i64 %22, -8 - tail call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %23, i1 false) - %24 = getelementptr ptr, ptr %5, i64 %1 - br label %_ZSt27__uninitialized_default_n_aIPPN4Luau15AstExprFunctionEmS2_ET_S4_T0_RSaIT1_E.exit - -_ZSt27__uninitialized_default_n_aIPPN4Luau15AstExprFunctionEmS2_ET_S4_T0_RSaIT1_E.exit: ; preds = %19, %_ZSt6fill_nIPPN4Luau15AstExprFunctionEmS2_ET_S4_T0_RKT1_.exit.loopexit.i.i.i - %.0.i.i.i = phi ptr [ %20, %19 ], [ %24, %_ZSt6fill_nIPPN4Luau15AstExprFunctionEmS2_ET_S4_T0_RKT1_.exit.loopexit.i.i.i ] - store ptr %.0.i.i.i, ptr %4, align 8 - br label %43 - -25: ; preds = %3 - %26 = icmp ult i64 %17, %1 - br i1 %26, label %27, label %_ZNKSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE12_M_check_lenEmPKc.exit - -27: ; preds = %25 - tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.59) #23 - unreachable - -_ZNKSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE12_M_check_lenEmPKc.exit: ; preds = %25 - %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %10, i64 %1) - %28 = add nuw nsw i64 %.sroa.speculated.i, %10 - %29 = tail call i64 @llvm.umin.i64(i64 %28, i64 1152921504606846975) - %30 = shl nuw nsw i64 %29, 3 - %31 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %30) #24 - %32 = getelementptr inbounds i8, ptr %31, i64 %9 - store ptr null, ptr %32, align 8 - %33 = icmp eq i64 %1, 1 - br i1 %33, label %_ZSt27__uninitialized_default_n_aIPPN4Luau15AstExprFunctionEmS2_ET_S4_T0_RSaIT1_E.exit32, label %_ZSt6fill_nIPPN4Luau15AstExprFunctionEmS2_ET_S4_T0_RKT1_.exit.loopexit.i.i.i30 - -_ZSt6fill_nIPPN4Luau15AstExprFunctionEmS2_ET_S4_T0_RKT1_.exit.loopexit.i.i.i30: ; preds = %_ZNKSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE12_M_check_lenEmPKc.exit - %34 = getelementptr i8, ptr %32, i64 8 - %35 = shl nuw nsw i64 %1, 3 - %36 = add nsw i64 %35, -8 - tail call void @llvm.memset.p0.i64(ptr align 8 %34, i8 0, i64 %36, i1 false) - br label %_ZSt27__uninitialized_default_n_aIPPN4Luau15AstExprFunctionEmS2_ET_S4_T0_RSaIT1_E.exit32 - -_ZSt27__uninitialized_default_n_aIPPN4Luau15AstExprFunctionEmS2_ET_S4_T0_RSaIT1_E.exit32: ; preds = %_ZSt6fill_nIPPN4Luau15AstExprFunctionEmS2_ET_S4_T0_RKT1_.exit.loopexit.i.i.i30, %_ZNKSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE12_M_check_lenEmPKc.exit - %37 = icmp sgt i64 %9, 0 - br i1 %37, label %38, label %_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit - -38: ; preds = %_ZSt27__uninitialized_default_n_aIPPN4Luau15AstExprFunctionEmS2_ET_S4_T0_RSaIT1_E.exit32 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %31, ptr align 8 %6, i64 %9, i1 false) - br label %_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit - -_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit: ; preds = %_ZSt27__uninitialized_default_n_aIPPN4Luau15AstExprFunctionEmS2_ET_S4_T0_RSaIT1_E.exit32, %38 - %.not.i34 = icmp eq ptr %6, null - br i1 %.not.i34, label %_ZNSt12_Vector_baseIPN4Luau15AstExprFunctionESaIS2_EE13_M_deallocateEPS2_m.exit35, label %39 - -39: ; preds = %_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit - %40 = sub i64 %13, %8 - tail call void @_ZdlPvm(ptr noundef nonnull %6, i64 noundef %40) #22 - br label %_ZNSt12_Vector_baseIPN4Luau15AstExprFunctionESaIS2_EE13_M_deallocateEPS2_m.exit35 - -_ZNSt12_Vector_baseIPN4Luau15AstExprFunctionESaIS2_EE13_M_deallocateEPS2_m.exit35: ; preds = %_ZNSt6vectorIPN4Luau15AstExprFunctionESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit, %39 - store ptr %31, ptr %0, align 8 - %41 = getelementptr inbounds ptr, ptr %32, i64 %1 - store ptr %41, ptr %4, align 8 - %42 = getelementptr inbounds ptr, ptr %31, i64 %29 - store ptr %42, ptr %11, align 8 - br label %43 - -43: ; preds = %_ZSt27__uninitialized_default_n_aIPPN4Luau15AstExprFunctionEmS2_ET_S4_T0_RSaIT1_E.exit, %_ZNSt12_Vector_baseIPN4Luau15AstExprFunctionESaIS2_EE13_M_deallocateEPS2_m.exit35, %2 - ret void -} - ; Function Attrs: mustprogress uwtable define linkonce_odr dso_local void @_ZNSt6vectorIN4Luau15LintGlobalLocal12FunctionInfoESaIS2_EE17_M_realloc_insertIJRPNS0_15AstExprFunctionEEEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %1, ptr noundef nonnull align 8 dereferenceable(8) %2) local_unnamed_addr #1 comdat align 2 personality ptr @__gxx_personality_v0 { %4 = getelementptr inbounds i8, ptr %0, i64 8 diff --git a/bench/nghttp2/optimized/sfparse.c.ll b/bench/nghttp2/optimized/sfparse.c.ll index 236f84aa726..6cb825528cb 100644 --- a/bench/nghttp2/optimized/sfparse.c.ll +++ b/bench/nghttp2/optimized/sfparse.c.ll @@ -1625,23 +1625,19 @@ if.then78: ; preds = %if.end76 %7 = getelementptr inbounds i8, ptr %dest, i64 8 store i64 %mul82, ptr %7, align 8 %switch.tableidx = add nsw i64 %sub72, -1 - %8 = icmp ult i64 %switch.tableidx, 3 - br i1 %8, label %switch.lookup, label %return - -switch.lookup: ; preds = %if.then78 %switch.gep = getelementptr inbounds [3 x i64], ptr @switch.table.parser_number, i64 0, i64 %switch.tableidx %switch.load = load i64, ptr %switch.gep, align 8 br label %return.sink.split -return.sink.split: ; preds = %switch.lookup, %if.then34 - %.sink106 = phi i64 [ 8, %if.then34 ], [ 16, %switch.lookup ] - %.sink = phi i64 [ %mul36, %if.then34 ], [ %switch.load, %switch.lookup ] +return.sink.split: ; preds = %if.then78, %if.then34 + %.sink106 = phi i64 [ 8, %if.then34 ], [ 16, %if.then78 ] + %.sink = phi i64 [ %mul36, %if.then34 ], [ %switch.load, %if.then78 ] %denom88 = getelementptr inbounds i8, ptr %dest, i64 %.sink106 store i64 %.sink, ptr %denom88, align 8 br label %return -return: ; preds = %sw.bb, %sw.bb52, %if.then78, %return.sink.split, %if.end76, %for.end68, %lor.lhs.false71, %if.end38, %if.then32, %for.end, %if.then - %retval.0 = phi i32 [ -1, %if.then ], [ -1, %for.end ], [ 0, %if.then32 ], [ -1, %if.end38 ], [ -1, %lor.lhs.false71 ], [ -1, %for.end68 ], [ 0, %if.then78 ], [ 0, %if.end76 ], [ 0, %return.sink.split ], [ -1, %sw.bb52 ], [ -1, %sw.bb ] +return: ; preds = %sw.bb, %sw.bb52, %return.sink.split, %if.end76, %for.end68, %lor.lhs.false71, %if.end38, %if.then32, %for.end, %if.then + %retval.0 = phi i32 [ -1, %if.then ], [ -1, %for.end ], [ 0, %if.then32 ], [ -1, %if.end38 ], [ -1, %lor.lhs.false71 ], [ -1, %for.end68 ], [ 0, %if.end76 ], [ 0, %return.sink.split ], [ -1, %sw.bb52 ], [ -1, %sw.bb ] ret i32 %retval.0 } diff --git a/bench/nlohmann_json/optimized/unit-element_access2.cpp.ll b/bench/nlohmann_json/optimized/unit-element_access2.cpp.ll index 416e19cb9c8..24cc31d67b5 100644 --- a/bench/nlohmann_json/optimized/unit-element_access2.cpp.ll +++ b/bench/nlohmann_json/optimized/unit-element_access2.cpp.ll @@ -127677,20 +127677,16 @@ for.end: ; preds = %_ZSt4nextIN9__gnu_c %sub.ptr.rhs.cast.i = ptrtoint ptr %5 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 48 - %sub = sub nsw i64 %sub.ptr.div.i, %sub.ptr.div.i.i.i %cmp.i23 = icmp ugt i64 %sub.ptr.div.i.i.i, %sub.ptr.div.i - br i1 %cmp.i23, label %if.then.i, label %if.else.i + br i1 %cmp.i23, label %if.then.i, label %if.then5.i if.then.i: ; preds = %for.end %sub.i = sub nsw i64 0, %sub.ptr.div.i.i.i tail call void @_ZNSt6vectorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN8nlohmann16json_abi_v3_11_310basic_jsonINS9_11ordered_mapES_S6_blmdSaNS9_14adl_serializerES_IhSaIhEEvEEESaISG_EE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %sub.i) br label %_ZNSt6vectorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN8nlohmann16json_abi_v3_11_310basic_jsonINS9_11ordered_mapES_S6_blmdSaNS9_14adl_serializerES_IhSaIhEEvEEESaISG_EE6resizeEm.exit -if.else.i: ; preds = %for.end - %cmp4.i = icmp ult i64 %sub, %sub.ptr.div.i - br i1 %cmp4.i, label %if.then5.i, label %_ZNSt6vectorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN8nlohmann16json_abi_v3_11_310basic_jsonINS9_11ordered_mapES_S6_blmdSaNS9_14adl_serializerES_IhSaIhEEvEEESaISG_EE6resizeEm.exit - -if.then5.i: ; preds = %if.else.i +if.then5.i: ; preds = %for.end + %sub = sub nuw nsw i64 %sub.ptr.div.i, %sub.ptr.div.i.i.i %add.ptr.i = getelementptr inbounds %"struct.std::pair.255", ptr %5, i64 %sub %tobool.not.i.i = icmp eq ptr %add.ptr.i.i.i.i, %add.ptr.i br i1 %tobool.not.i.i, label %_ZNSt6vectorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN8nlohmann16json_abi_v3_11_310basic_jsonINS9_11ordered_mapES_S6_blmdSaNS9_14adl_serializerES_IhSaIhEEvEEESaISG_EE6resizeEm.exit, label %for.body.i.i.i.i @@ -127720,7 +127716,7 @@ invoke.cont.i.i: ; preds = %_ZN8nlohmann16json_ store ptr %add.ptr.i, ptr %_M_finish.i, align 8 br label %_ZNSt6vectorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN8nlohmann16json_abi_v3_11_310basic_jsonINS9_11ordered_mapES_S6_blmdSaNS9_14adl_serializerES_IhSaIhEEvEEESaISG_EE6resizeEm.exit -_ZNSt6vectorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN8nlohmann16json_abi_v3_11_310basic_jsonINS9_11ordered_mapES_S6_blmdSaNS9_14adl_serializerES_IhSaIhEEvEEESaISG_EE6resizeEm.exit: ; preds = %if.then.i, %if.else.i, %if.then5.i, %invoke.cont.i.i +_ZNSt6vectorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN8nlohmann16json_abi_v3_11_310basic_jsonINS9_11ordered_mapES_S6_blmdSaNS9_14adl_serializerES_IhSaIhEEvEEESaISG_EE6resizeEm.exit: ; preds = %if.then.i, %if.then5.i, %invoke.cont.i.i %9 = load ptr, ptr %this, align 8 %add.ptr.i25 = getelementptr inbounds i8, ptr %9, i64 %sub.ptr.sub.i.i.i5 br label %return diff --git a/bench/node/optimized/libnode.Protocol.ll b/bench/node/optimized/libnode.Protocol.ll index 10c77ac0c34..ae9920f3ca1 100644 --- a/bench/node/optimized/libnode.Protocol.ll +++ b/bench/node/optimized/libnode.Protocol.ll @@ -11638,27 +11638,27 @@ if.then9: ; preds = %if.then %sub.ptr.rhs.cast.i = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %cmp15 = icmp ugt i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i.i - br i1 %cmp15, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEmEvRT_T0_.exit + br i1 %cmp15, label %if.then16, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEmEvRT_T0_.exit -_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit: ; preds = %if.then9 +if.then16: ; preds = %if.then9 %idx.neg = sub i64 0, %sub.ptr.sub.i.i.i %add.ptr = getelementptr inbounds i8, ptr %1, i64 %idx.neg - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr align 1 %add.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) - %.pre71 = load ptr, ptr %_M_finish, align 8 - %add.ptr27 = getelementptr inbounds i8, ptr %.pre71, i64 %sub.ptr.sub.i.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr nonnull align 1 %add.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) + %2 = load ptr, ptr %_M_finish, align 8 + %add.ptr27 = getelementptr inbounds i8, ptr %2, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %if.then.i.i.i.i.i26, label %if.then.i.i.i.i.i -if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i: ; preds = %if.then16 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %idx.neg.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 %idx.neg.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %if.then.i.i.i.i.i26 -if.then.i.i.i.i.i26: ; preds = %if.then.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i26: ; preds = %if.then.i.i.i.i.i, %if.then16 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %__position.coerce, ptr align 1 %__first.coerce, i64 %sub.ptr.sub.i.i.i, i1 false) br label %if.end101 @@ -11675,9 +11675,9 @@ if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIN9__gn br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E.exit _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E.exit: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEmEvRT_T0_.exit, %if.then.i.i.i.i.i.i.i.i - %2 = phi ptr [ %1, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] + %3 = phi ptr [ %1, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] %sub = sub nuw i64 %sub.ptr.sub.i.i.i, %sub.ptr.sub.i - %add.ptr50 = getelementptr inbounds i8, ptr %2, i64 %sub + %add.ptr50 = getelementptr inbounds i8, ptr %3, i64 %sub store ptr %add.ptr50, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i.i.i.i.i31 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i.i.i.i.i31, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit34, label %if.then.i.i.i.i.i.i.i.i.i32 @@ -11688,8 +11688,8 @@ if.then.i.i.i.i.i.i.i.i.i32: ; preds = %_ZSt22__uninitializ br label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit34 _ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit34: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E.exit, %if.then.i.i.i.i.i.i.i.i.i32 - %3 = phi ptr [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E.exit ], [ %.pre70, %if.then.i.i.i.i.i.i.i.i.i32 ] - %add.ptr58 = getelementptr inbounds i8, ptr %3, i64 %sub.ptr.sub.i + %4 = phi ptr [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E.exit ], [ %.pre70, %if.then.i.i.i.i.i.i.i.i.i32 ] + %add.ptr58 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr58, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i38 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i38, label %if.end101, label %if.then.i.i.i.i.i39 @@ -11699,8 +11699,8 @@ if.then.i.i.i.i.i39: ; preds = %_ZSt22__uninitializ br label %if.end101 if.else68: ; preds = %if.then - %4 = load ptr, ptr %this, align 8 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %4 to i64 + %5 = load ptr, ptr %this, align 8 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %5 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i.i %sub.i = sub i64 9223372036854775807, %sub.ptr.sub.i.i %cmp.i42 = icmp ult i64 %sub.i, %sub.ptr.sub.i.i.i @@ -11714,8 +11714,8 @@ _ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc.exit: ; preds = %if.else68 %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i.i, i64 %sub.ptr.sub.i.i.i) %add.i = add i64 %.sroa.speculated.i, %sub.ptr.sub.i.i %cmp7.i = icmp ult i64 %add.i, %sub.ptr.sub.i.i - %5 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 9223372036854775807) - %cond.i = select i1 %cmp7.i, i64 9223372036854775807, i64 %5 + %6 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 9223372036854775807) + %cond.i = select i1 %cmp7.i, i64 9223372036854775807, i64 %6 %cmp.not.i = icmp eq i64 %cond.i, 0 br i1 %cmp.not.i, label %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit, label %cond.true.i @@ -11727,11 +11727,11 @@ _ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorIhSaIh %cond.i43 = phi ptr [ %call5.i.i.i, %cond.true.i ], [ null, %_ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc.exit ] %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i44 = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i46 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i44, %sub.ptr.rhs.cast.i.i - %tobool.not.i.i.i.i.i.i.i.i.i47 = icmp eq ptr %__position.coerce, %4 + %tobool.not.i.i.i.i.i.i.i.i.i47 = icmp eq ptr %__position.coerce, %5 br i1 %tobool.not.i.i.i.i.i.i.i.i.i47, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E.exit56, label %if.then.i.i.i.i.i.i.i.i.i48 if.then.i.i.i.i.i.i.i.i.i48: ; preds = %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %cond.i43, ptr align 1 %4, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i46, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %cond.i43, ptr align 1 %5, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i46, i1 false) br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E.exit56 _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E.exit56: ; preds = %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit, %if.then.i.i.i.i.i.i.i.i.i48 @@ -11748,11 +11748,11 @@ if.then.i.i.i.i.i.i.i.i.i61: ; preds = %_ZSt22__uninitializ _ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit63: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E.exit56, %if.then.i.i.i.i.i.i.i.i.i61 %add.ptr.i.i.i.i.i.i.i.i.i62 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i55, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i59 - %tobool.not.i = icmp eq ptr %4, null + %tobool.not.i = icmp eq ptr %5, null br i1 %tobool.not.i, label %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit, label %if.then.i64 if.then.i64: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit63 - tail call void @_ZdlPv(ptr noundef nonnull %4) #28 + tail call void @_ZdlPv(ptr noundef nonnull %5) #28 br label %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit _ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit63, %if.then.i64 @@ -16423,27 +16423,27 @@ if.then4: ; preds = %if.then %sub.ptr.rhs.cast.i = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %cmp10 = icmp ugt i64 %sub.ptr.sub.i, %sub.ptr.sub.i.i - br i1 %cmp10, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, label %_ZSt7advanceIPKhmEvRT_T0_.exit + br i1 %cmp10, label %if.then11, label %_ZSt7advanceIPKhmEvRT_T0_.exit -_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit: ; preds = %if.then4 +if.then11: ; preds = %if.then4 %idx.neg = sub i64 0, %sub.ptr.sub.i.i %add.ptr = getelementptr inbounds i8, ptr %1, i64 %idx.neg - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr align 1 %add.ptr, i64 %sub.ptr.sub.i.i, i1 false) - %.pre84 = load ptr, ptr %_M_finish, align 8 - %add.ptr22 = getelementptr inbounds i8, ptr %.pre84, i64 %sub.ptr.sub.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr nonnull align 1 %add.ptr, i64 %sub.ptr.sub.i.i, i1 false) + %2 = load ptr, ptr %_M_finish, align 8 + %add.ptr22 = getelementptr inbounds i8, ptr %2, i64 %sub.ptr.sub.i.i store ptr %add.ptr22, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEET0_T_SA_S9_.exit, label %if.then.i.i.i.i.i -if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i: ; preds = %if.then11 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %idx.neg.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 %idx.neg.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEET0_T_SA_S9_.exit -_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEET0_T_SA_S9_.exit: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, %if.then.i.i.i.i.i +_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEET0_T_SA_S9_.exit: ; preds = %if.then11, %if.then.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %__position.coerce, ptr align 1 %__first, i64 %sub.ptr.sub.i.i, i1 false) br label %if.end79 @@ -16460,9 +16460,9 @@ if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIPKhmEv br label %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit _ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit: ; preds = %_ZSt7advanceIPKhmEvRT_T0_.exit, %if.then.i.i.i.i.i.i.i.i - %2 = phi ptr [ %1, %_ZSt7advanceIPKhmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] + %3 = phi ptr [ %1, %_ZSt7advanceIPKhmEvRT_T0_.exit ], [ %.pre, %if.then.i.i.i.i.i.i.i.i ] %sub = sub nuw i64 %sub.ptr.sub.i.i, %sub.ptr.sub.i - %add.ptr36 = getelementptr inbounds i8, ptr %2, i64 %sub + %add.ptr36 = getelementptr inbounds i8, ptr %3, i64 %sub store ptr %add.ptr36, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i.i.i.i.i40 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i.i.i.i.i40, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit43, label %if.then.i.i.i.i.i.i.i.i.i41 @@ -16473,8 +16473,8 @@ if.then.i.i.i.i.i.i.i.i.i41: ; preds = %_ZSt22__uninitializ br label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit43 _ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit43: ; preds = %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit, %if.then.i.i.i.i.i.i.i.i.i41 - %3 = phi ptr [ %add.ptr36, %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit ], [ %.pre83, %if.then.i.i.i.i.i.i.i.i.i41 ] - %add.ptr44 = getelementptr inbounds i8, ptr %3, i64 %sub.ptr.sub.i + %4 = phi ptr [ %add.ptr36, %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit ], [ %.pre83, %if.then.i.i.i.i.i.i.i.i.i41 ] + %add.ptr44 = getelementptr inbounds i8, ptr %4, i64 %sub.ptr.sub.i store ptr %add.ptr44, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i47 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i47, label %if.end79, label %if.then.i.i.i.i.i48 @@ -16484,8 +16484,8 @@ if.then.i.i.i.i.i48: ; preds = %_ZSt22__uninitializ br label %if.end79 if.else50: ; preds = %if.then - %4 = load ptr, ptr %this, align 8 - %sub.ptr.rhs.cast.i.i52 = ptrtoint ptr %4 to i64 + %5 = load ptr, ptr %this, align 8 + %sub.ptr.rhs.cast.i.i52 = ptrtoint ptr %5 to i64 %sub.ptr.sub.i.i53 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i.i52 %sub.i = sub i64 9223372036854775807, %sub.ptr.sub.i.i53 %cmp.i = icmp ult i64 %sub.i, %sub.ptr.sub.i.i @@ -16499,8 +16499,8 @@ _ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc.exit: ; preds = %if.else50 %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i.i53, i64 %sub.ptr.sub.i.i) %add.i = add i64 %.sroa.speculated.i, %sub.ptr.sub.i.i53 %cmp7.i = icmp ult i64 %add.i, %sub.ptr.sub.i.i53 - %5 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 9223372036854775807) - %cond.i = select i1 %cmp7.i, i64 9223372036854775807, i64 %5 + %6 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 9223372036854775807) + %cond.i = select i1 %cmp7.i, i64 9223372036854775807, i64 %6 %cmp.not.i = icmp eq i64 %cond.i, 0 br i1 %cmp.not.i, label %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit, label %cond.true.i @@ -16512,11 +16512,11 @@ _ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorIhSaIh %cond.i54 = phi ptr [ %call5.i.i.i, %cond.true.i ], [ null, %_ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc.exit ] %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i55 = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i57 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i55, %sub.ptr.rhs.cast.i.i52 - %tobool.not.i.i.i.i.i.i.i.i.i58 = icmp eq ptr %__position.coerce, %4 + %tobool.not.i.i.i.i.i.i.i.i.i58 = icmp eq ptr %__position.coerce, %5 br i1 %tobool.not.i.i.i.i.i.i.i.i.i58, label %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit67, label %if.then.i.i.i.i.i.i.i.i.i59 if.then.i.i.i.i.i.i.i.i.i59: ; preds = %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %cond.i54, ptr align 1 %4, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i57, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %cond.i54, ptr align 1 %5, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i57, i1 false) br label %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit67 _ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit67: ; preds = %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit, %if.then.i.i.i.i.i.i.i.i.i59 @@ -16533,11 +16533,11 @@ if.then.i.i.i.i.i.i.i.i.i72: ; preds = %_ZSt22__uninitializ _ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit74: ; preds = %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit67, %if.then.i.i.i.i.i.i.i.i.i72 %add.ptr.i.i.i.i.i.i.i.i.i73 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i66, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i70 - %tobool.not.i = icmp eq ptr %4, null + %tobool.not.i = icmp eq ptr %5, null br i1 %tobool.not.i, label %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit, label %if.then.i75 if.then.i75: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit74 - tail call void @_ZdlPv(ptr noundef nonnull %4) #28 + tail call void @_ZdlPv(ptr noundef nonnull %5) #28 br label %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit _ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit74, %if.then.i75 @@ -16659,27 +16659,27 @@ if.then4: ; preds = %if.then %sub.ptr.rhs.cast.i = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %cmp10 = icmp ugt i64 %sub.ptr.sub.i, %sub.ptr.div.i.i - br i1 %cmp10, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, label %if.else5.i.i + br i1 %cmp10, label %if.then11, label %if.else5.i.i -_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit: ; preds = %if.then4 +if.then11: ; preds = %if.then4 %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i %add.ptr = getelementptr inbounds i8, ptr %1, i64 %idx.neg tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr align 1 %add.ptr, i64 %sub.ptr.div.i.i, i1 false) - %.pre105 = load ptr, ptr %_M_finish, align 8 - %add.ptr22 = getelementptr inbounds i8, ptr %.pre105, i64 %sub.ptr.div.i.i + %2 = load ptr, ptr %_M_finish, align 8 + %add.ptr22 = getelementptr inbounds i8, ptr %2, i64 %sub.ptr.div.i.i store ptr %add.ptr22, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit, label %if.then.i.i.i.i.i -if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i: ; preds = %if.then11 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %idx.neg.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 %idx.neg.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit -_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, %if.then.i.i.i.i.i +_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit: ; preds = %if.then11, %if.then.i.i.i.i.i %cmp6.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i, 0 br i1 %cmp6.i.i.i.i.i, label %for.body.i.i.i.i.i, label %if.end79 @@ -16687,8 +16687,8 @@ for.body.i.i.i.i.i: ; preds = %_ZSt13move_backward %__n.09.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %sub.ptr.div.i.i, %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit ] %__result.addr.08.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %__position.coerce, %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit ] %__first.addr.07.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %__first, %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit ] - %2 = load i16, ptr %__first.addr.07.i.i.i.i.i, align 2 - %conv.i.i.i.i.i = trunc i16 %2 to i8 + %3 = load i16, ptr %__first.addr.07.i.i.i.i.i, align 2 + %conv.i.i.i.i.i = trunc i16 %3 to i8 store i8 %conv.i.i.i.i.i, ptr %__result.addr.08.i.i.i.i.i, align 1 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.07.i.i.i.i.i, i64 2 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.08.i.i.i.i.i, i64 1 @@ -16708,8 +16708,8 @@ for.body.i.i.i.i.i.i.i.i: ; preds = %if.else5.i.i, %for. %__n.09.i.i.i.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i.i.i.i, %if.else5.i.i ] %__result.addr.08.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i ], [ %1, %if.else5.i.i ] %__first.addr.07.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i ], [ %add.ptr.i.i, %if.else5.i.i ] - %3 = load i16, ptr %__first.addr.07.i.i.i.i.i.i.i.i, align 2 - %conv.i.i.i.i.i.i.i.i = trunc i16 %3 to i8 + %4 = load i16, ptr %__first.addr.07.i.i.i.i.i.i.i.i, align 2 + %conv.i.i.i.i.i.i.i.i = trunc i16 %4 to i8 store i8 %conv.i.i.i.i.i.i.i.i, ptr %__result.addr.08.i.i.i.i.i.i.i.i, align 1 %incdec.ptr.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.07.i.i.i.i.i.i.i.i, i64 2 %incdec.ptr1.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.08.i.i.i.i.i.i.i.i, i64 1 @@ -16722,9 +16722,9 @@ _ZSt22__uninitialized_copy_aIPKtPhhET0_T_S4_S3_RSaIT1_E.exit.loopexit: ; preds = br label %_ZSt22__uninitialized_copy_aIPKtPhhET0_T_S4_S3_RSaIT1_E.exit _ZSt22__uninitialized_copy_aIPKtPhhET0_T_S4_S3_RSaIT1_E.exit: ; preds = %_ZSt22__uninitialized_copy_aIPKtPhhET0_T_S4_S3_RSaIT1_E.exit.loopexit, %if.else5.i.i - %4 = phi ptr [ %.pre, %_ZSt22__uninitialized_copy_aIPKtPhhET0_T_S4_S3_RSaIT1_E.exit.loopexit ], [ %1, %if.else5.i.i ] + %5 = phi ptr [ %.pre, %_ZSt22__uninitialized_copy_aIPKtPhhET0_T_S4_S3_RSaIT1_E.exit.loopexit ], [ %1, %if.else5.i.i ] %sub = sub nuw i64 %sub.ptr.div.i.i, %sub.ptr.sub.i - %add.ptr36 = getelementptr inbounds i8, ptr %4, i64 %sub + %add.ptr36 = getelementptr inbounds i8, ptr %5, i64 %sub store ptr %add.ptr36, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i.i.i.i.i37 = icmp eq ptr %1, %__position.coerce br i1 %tobool.not.i.i.i.i.i.i.i.i.i37, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit40, label %if.then.i.i.i.i.i.i.i.i.i38 @@ -16735,8 +16735,8 @@ if.then.i.i.i.i.i.i.i.i.i38: ; preds = %_ZSt22__uninitializ br label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit40 _ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit40: ; preds = %_ZSt22__uninitialized_copy_aIPKtPhhET0_T_S4_S3_RSaIT1_E.exit, %if.then.i.i.i.i.i.i.i.i.i38 - %5 = phi ptr [ %add.ptr36, %_ZSt22__uninitialized_copy_aIPKtPhhET0_T_S4_S3_RSaIT1_E.exit ], [ %.pre104, %if.then.i.i.i.i.i.i.i.i.i38 ] - %add.ptr44 = getelementptr inbounds i8, ptr %5, i64 %sub.ptr.sub.i + %6 = phi ptr [ %add.ptr36, %_ZSt22__uninitialized_copy_aIPKtPhhET0_T_S4_S3_RSaIT1_E.exit ], [ %.pre104, %if.then.i.i.i.i.i.i.i.i.i38 ] + %add.ptr44 = getelementptr inbounds i8, ptr %6, i64 %sub.ptr.sub.i store ptr %add.ptr44, ptr %_M_finish, align 8 %cmp6.i.i.i.i.i45 = icmp sgt i64 %sub.ptr.sub.i, 0 br i1 %cmp6.i.i.i.i.i45, label %for.body.i.i.i.i.i51, label %if.end79 @@ -16745,8 +16745,8 @@ for.body.i.i.i.i.i51: ; preds = %_ZSt22__uninitializ %__n.09.i.i.i.i.i52 = phi i64 [ %dec.i.i.i.i.i58, %for.body.i.i.i.i.i51 ], [ %sub.ptr.sub.i, %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit40 ] %__result.addr.08.i.i.i.i.i53 = phi ptr [ %incdec.ptr1.i.i.i.i.i57, %for.body.i.i.i.i.i51 ], [ %__position.coerce, %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit40 ] %__first.addr.07.i.i.i.i.i54 = phi ptr [ %incdec.ptr.i.i.i.i.i56, %for.body.i.i.i.i.i51 ], [ %__first, %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit40 ] - %6 = load i16, ptr %__first.addr.07.i.i.i.i.i54, align 2 - %conv.i.i.i.i.i55 = trunc i16 %6 to i8 + %7 = load i16, ptr %__first.addr.07.i.i.i.i.i54, align 2 + %conv.i.i.i.i.i55 = trunc i16 %7 to i8 store i8 %conv.i.i.i.i.i55, ptr %__result.addr.08.i.i.i.i.i53, align 1 %incdec.ptr.i.i.i.i.i56 = getelementptr inbounds i8, ptr %__first.addr.07.i.i.i.i.i54, i64 2 %incdec.ptr1.i.i.i.i.i57 = getelementptr inbounds i8, ptr %__result.addr.08.i.i.i.i.i53, i64 1 @@ -16755,8 +16755,8 @@ for.body.i.i.i.i.i51: ; preds = %_ZSt22__uninitializ br i1 %cmp.i.i.i.i.i59, label %for.body.i.i.i.i.i51, label %if.end79, !llvm.loop !342 if.else50: ; preds = %if.then - %7 = load ptr, ptr %this, align 8 - %sub.ptr.rhs.cast.i.i62 = ptrtoint ptr %7 to i64 + %8 = load ptr, ptr %this, align 8 + %sub.ptr.rhs.cast.i.i62 = ptrtoint ptr %8 to i64 %sub.ptr.sub.i.i63 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i.i62 %sub.i = sub i64 9223372036854775807, %sub.ptr.sub.i.i63 %cmp.i = icmp ult i64 %sub.i, %sub.ptr.div.i.i @@ -16770,8 +16770,8 @@ _ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc.exit: ; preds = %if.else50 %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i.i63, i64 %sub.ptr.div.i.i) %add.i = add i64 %.sroa.speculated.i, %sub.ptr.sub.i.i63 %cmp7.i = icmp ult i64 %add.i, %sub.ptr.sub.i.i63 - %8 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 9223372036854775807) - %cond.i = select i1 %cmp7.i, i64 9223372036854775807, i64 %8 + %9 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 9223372036854775807) + %cond.i = select i1 %cmp7.i, i64 9223372036854775807, i64 %9 %cmp.not.i = icmp eq i64 %cond.i, 0 br i1 %cmp.not.i, label %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit, label %cond.true.i @@ -16783,11 +16783,11 @@ _ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorIhSaIh %cond.i64 = phi ptr [ %call5.i.i.i, %cond.true.i ], [ null, %_ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc.exit ] %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i65 = ptrtoint ptr %__position.coerce to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i67 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i65, %sub.ptr.rhs.cast.i.i62 - %tobool.not.i.i.i.i.i.i.i.i.i68 = icmp eq ptr %__position.coerce, %7 + %tobool.not.i.i.i.i.i.i.i.i.i68 = icmp eq ptr %__position.coerce, %8 br i1 %tobool.not.i.i.i.i.i.i.i.i.i68, label %_ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, label %if.then.i.i.i.i.i.i.i.i.i69 if.then.i.i.i.i.i.i.i.i.i69: ; preds = %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %cond.i64, ptr align 1 %7, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i67, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %cond.i64, ptr align 1 %8, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i67, i1 false) br label %_ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit _ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit: ; preds = %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit, %if.then.i.i.i.i.i.i.i.i.i69 @@ -16799,8 +16799,8 @@ for.body.i.i.i.i.i.i.i.i77: ; preds = %_ZSt34__uninitializ %__n.09.i.i.i.i.i.i.i.i78 = phi i64 [ %dec.i.i.i.i.i.i.i.i84, %for.body.i.i.i.i.i.i.i.i77 ], [ %sub.ptr.div.i.i, %_ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit ] %__result.addr.08.i.i.i.i.i.i.i.i79 = phi ptr [ %incdec.ptr1.i.i.i.i.i.i.i.i83, %for.body.i.i.i.i.i.i.i.i77 ], [ %add.ptr.i.i.i.i.i.i.i.i.i70, %_ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit ] %__first.addr.07.i.i.i.i.i.i.i.i80 = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i82, %for.body.i.i.i.i.i.i.i.i77 ], [ %__first, %_ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit ] - %9 = load i16, ptr %__first.addr.07.i.i.i.i.i.i.i.i80, align 2 - %conv.i.i.i.i.i.i.i.i81 = trunc i16 %9 to i8 + %10 = load i16, ptr %__first.addr.07.i.i.i.i.i.i.i.i80, align 2 + %conv.i.i.i.i.i.i.i.i81 = trunc i16 %10 to i8 store i8 %conv.i.i.i.i.i.i.i.i81, ptr %__result.addr.08.i.i.i.i.i.i.i.i79, align 1 %incdec.ptr.i.i.i.i.i.i.i.i82 = getelementptr inbounds i8, ptr %__first.addr.07.i.i.i.i.i.i.i.i80, i64 2 %incdec.ptr1.i.i.i.i.i.i.i.i83 = getelementptr inbounds i8, ptr %__result.addr.08.i.i.i.i.i.i.i.i79, i64 1 @@ -16820,11 +16820,11 @@ if.then.i.i.i.i.i.i.i.i.i91: ; preds = %_ZSt22__uninitializ _ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit93: ; preds = %_ZSt22__uninitialized_copy_aIPKtPhhET0_T_S4_S3_RSaIT1_E.exit86, %if.then.i.i.i.i.i.i.i.i.i91 %add.ptr.i.i.i.i.i.i.i.i.i92 = getelementptr inbounds i8, ptr %__result.addr.0.lcssa.i.i.i.i.i.i.i.i76, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i89 - %tobool.not.i = icmp eq ptr %7, null + %tobool.not.i = icmp eq ptr %8, null br i1 %tobool.not.i, label %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit, label %if.then.i94 if.then.i94: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit93 - tail call void @_ZdlPv(ptr noundef nonnull %7) #28 + tail call void @_ZdlPv(ptr noundef nonnull %8) #28 br label %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit _ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit93, %if.then.i94 @@ -21686,30 +21686,22 @@ if.then4: ; preds = %if.then if.then11: ; preds = %if.then4 %idx.neg = sub i64 0, %sub.ptr.sub.i.i %add.ptr = getelementptr inbounds i8, ptr %1, i64 %idx.neg - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 - %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq i64 %sub.ptr.sub.i.i, 0 - br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, label %if.then.i.i.i.i.i.i.i.i.i - -if.then.i.i.i.i.i.i.i.i.i: ; preds = %if.then11 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr nonnull align 1 %add.ptr, i64 %sub.ptr.sub.i.i, i1 false) - %.pre101 = load ptr, ptr %_M_finish, align 8 - br label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit - -_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit: ; preds = %if.then11, %if.then.i.i.i.i.i.i.i.i.i - %2 = phi ptr [ %1, %if.then11 ], [ %.pre101, %if.then.i.i.i.i.i.i.i.i.i ] + %2 = load ptr, ptr %_M_finish, align 8 %add.ptr22 = getelementptr inbounds i8, ptr %2, i64 %sub.ptr.sub.i.i store ptr %add.ptr22, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit, label %if.then.i.i.i.i.i -if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i: ; preds = %if.then11 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %idx.neg.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 %idx.neg.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit -_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, %if.then.i.i.i.i.i +_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit: ; preds = %if.then11, %if.then.i.i.i.i.i %cmp6.i.i.i.i.i = icmp sgt i64 %sub.ptr.sub.i.i, 0 br i1 %cmp6.i.i.i.i.i, label %for.body.i.i.i.i.i, label %if.end79 @@ -21897,30 +21889,22 @@ if.then9: ; preds = %if.then if.then16: ; preds = %if.then9 %idx.neg = sub i64 0, %sub.ptr.sub.i.i.i %add.ptr = getelementptr inbounds i8, ptr %1, i64 %idx.neg - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 - %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq i64 %sub.ptr.sub.i.i.i, 0 - br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, label %if.then.i.i.i.i.i.i.i.i.i - -if.then.i.i.i.i.i.i.i.i.i: ; preds = %if.then16 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr nonnull align 1 %add.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) - %.pre91 = load ptr, ptr %_M_finish, align 8 - br label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit - -_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit: ; preds = %if.then16, %if.then.i.i.i.i.i.i.i.i.i - %2 = phi ptr [ %1, %if.then16 ], [ %.pre91, %if.then.i.i.i.i.i.i.i.i.i ] + %2 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %2, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit, label %if.then.i.i.i.i.i -if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i: ; preds = %if.then16 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %idx.neg.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 %idx.neg.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit -_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, %if.then.i.i.i.i.i +_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit: ; preds = %if.then16, %if.then.i.i.i.i.i %cmp6.i.i.i.i.i = icmp sgt i64 %sub.ptr.sub.i.i.i, 0 br i1 %cmp6.i.i.i.i.i, label %for.body.i.i.i.i.i, label %if.end101 diff --git a/bench/node/optimized/simdutf.ll b/bench/node/optimized/simdutf.ll index 443f7cd7f5b..4cc15e1429a 100644 --- a/bench/node/optimized/simdutf.ll +++ b/bench/node/optimized/simdutf.ll @@ -25939,8 +25939,7 @@ _ZN7simdutf7haswell12_GLOBAL__N_133avx2_validate_utf32le_with_errorsEPKDim.exit: if.then: ; preds = %_ZN7simdutf7haswell12_GLOBAL__N_133avx2_validate_utf32le_with_errorsEPKDim.exit %add.ptr = getelementptr inbounds i8, ptr %buf, i64 %sub.ptr.sub44.i %sub = sub i64 %len, %retval.sroa.4.0.i - %cmp8.not.i = icmp eq i64 %sub, 0 - br i1 %cmp8.not.i, label %_ZN7simdutf6scalar12_GLOBAL__N_15utf3220validate_with_errorsEPKDim.exit, label %for.body.i + br label %for.body.i for.body.i: ; preds = %if.then, %for.inc.i %pos.09.i = phi i64 [ %inc.i, %for.inc.i ], [ 0, %if.then ] @@ -25959,9 +25958,9 @@ for.inc.i: ; preds = %if.end.i8 %exitcond.not.i = icmp eq i64 %inc.i, %sub br i1 %exitcond.not.i, label %_ZN7simdutf6scalar12_GLOBAL__N_15utf3220validate_with_errorsEPKDim.exit, label %for.body.i, !llvm.loop !23 -_ZN7simdutf6scalar12_GLOBAL__N_15utf3220validate_with_errorsEPKDim.exit: ; preds = %for.body.i, %if.end.i8, %for.inc.i, %if.then - %pos.0.lcssa.i = phi i64 [ 0, %if.then ], [ %pos.09.i, %for.body.i ], [ %pos.09.i, %if.end.i8 ], [ %sub, %for.inc.i ] - %retval.sroa.0.0.i9 = phi i32 [ 0, %if.then ], [ 5, %for.body.i ], [ 6, %if.end.i8 ], [ 0, %for.inc.i ] +_ZN7simdutf6scalar12_GLOBAL__N_15utf3220validate_with_errorsEPKDim.exit: ; preds = %for.body.i, %if.end.i8, %for.inc.i + %pos.0.lcssa.i = phi i64 [ %sub, %for.inc.i ], [ %pos.09.i, %if.end.i8 ], [ %pos.09.i, %for.body.i ] + %retval.sroa.0.0.i9 = phi i32 [ 0, %for.inc.i ], [ 6, %if.end.i8 ], [ 5, %for.body.i ] %add = add i64 %pos.0.lcssa.i, %retval.sroa.4.0.i br label %return @@ -39128,8 +39127,7 @@ _ZN7simdutf8westmere12_GLOBAL__N_132sse_validate_utf32le_with_errorsEPKDim.exit: if.then: ; preds = %_ZN7simdutf8westmere12_GLOBAL__N_132sse_validate_utf32le_with_errorsEPKDim.exit %add.ptr = getelementptr inbounds i8, ptr %buf, i64 %sub.ptr.sub27.i %sub = sub i64 %len, %retval.sroa.4.0.i - %cmp8.not.i = icmp eq i64 %sub, 0 - br i1 %cmp8.not.i, label %_ZN7simdutf6scalar12_GLOBAL__N_15utf3220validate_with_errorsEPKDim.exit, label %for.body.i + br label %for.body.i for.body.i: ; preds = %if.then, %for.inc.i %pos.09.i = phi i64 [ %inc.i, %for.inc.i ], [ 0, %if.then ] @@ -39148,9 +39146,9 @@ for.inc.i: ; preds = %if.end.i8 %exitcond.not.i = icmp eq i64 %inc.i, %sub br i1 %exitcond.not.i, label %_ZN7simdutf6scalar12_GLOBAL__N_15utf3220validate_with_errorsEPKDim.exit, label %for.body.i, !llvm.loop !23 -_ZN7simdutf6scalar12_GLOBAL__N_15utf3220validate_with_errorsEPKDim.exit: ; preds = %for.body.i, %if.end.i8, %for.inc.i, %if.then - %pos.0.lcssa.i = phi i64 [ 0, %if.then ], [ %pos.09.i, %for.body.i ], [ %pos.09.i, %if.end.i8 ], [ %sub, %for.inc.i ] - %retval.sroa.0.0.i9 = phi i32 [ 0, %if.then ], [ 5, %for.body.i ], [ 6, %if.end.i8 ], [ 0, %for.inc.i ] +_ZN7simdutf6scalar12_GLOBAL__N_15utf3220validate_with_errorsEPKDim.exit: ; preds = %for.body.i, %if.end.i8, %for.inc.i + %pos.0.lcssa.i = phi i64 [ %sub, %for.inc.i ], [ %pos.09.i, %if.end.i8 ], [ %pos.09.i, %for.body.i ] + %retval.sroa.0.0.i9 = phi i32 [ 0, %for.inc.i ], [ 6, %if.end.i8 ], [ 5, %for.body.i ] %add = add i64 %pos.0.lcssa.i, %retval.sroa.4.0.i br label %return diff --git a/bench/ockam-rs/optimized/4df8gyzy0u3roc94.ll b/bench/ockam-rs/optimized/4df8gyzy0u3roc94.ll index d162ba854d2..af9a0f67206 100644 --- a/bench/ockam-rs/optimized/4df8gyzy0u3roc94.ll +++ b/bench/ockam-rs/optimized/4df8gyzy0u3roc94.ll @@ -63322,13 +63322,13 @@ define hidden noundef ptr @_ZN3std2io4Read14read_buf_exact17hbe26f64a02bc964fE(p %10 = load i64, ptr %9, align 8 %11 = load ptr, ptr %1, align 8, !nonnull !16, !align !86 %12 = getelementptr inbounds i8, ptr %1, i64 24 - %.promoted19 = load i64, ptr %7, align 8, !alias.scope !7446, !noalias !7449 - %.promoted20 = load i64, ptr %12, align 8, !alias.scope !7451, !noalias !7454 + %.promoted20 = load i64, ptr %7, align 8, !alias.scope !7446, !noalias !7449 + %.promoted21 = load i64, ptr %12, align 8, !alias.scope !7451, !noalias !7454 br label %13 13: ; preds = %19, %3 - %.0.sroa.speculated.i.i.i.i21 = phi i64 [ %.0.sroa.speculated.i.i.i.i, %19 ], [ %.promoted20, %3 ] - %14 = phi i64 [ %25, %19 ], [ %.promoted19, %3 ] + %.0.sroa.speculated.i.i.i.i22 = phi i64 [ %.0.sroa.speculated.i.i.i.i, %19 ], [ %.promoted21, %3 ] + %14 = phi i64 [ %25, %19 ], [ %.promoted20, %3 ] %15 = phi i64 [ %24, %19 ], [ %.promoted, %3 ] %.not = icmp eq i64 %5, %15 br i1 %.not, label %.loopexit, label %16 @@ -63344,8 +63344,8 @@ define hidden noundef ptr @_ZN3std2io4Read14read_buf_exact17hbe26f64a02bc964fE(p tail call void @_ZN4core5slice5index26slice_start_index_len_fail17hab06ee9584c35f57E(i64 noundef %15, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.bff94df153f2ea43afa491857fb97fba.592) #59, !noalias !7459 unreachable -.loopexit: ; preds = %13, %27 - %.011 = phi ptr [ %28, %27 ], [ null, %13 ] +.loopexit: ; preds = %13, %26 + %.011 = phi ptr [ %27, %26 ], [ null, %13 ] ret ptr %.011 19: ; preds = %16 @@ -63357,16 +63357,16 @@ define hidden noundef ptr @_ZN3std2io4Read14read_buf_exact17hbe26f64a02bc964fE(p %23 = getelementptr inbounds i8, ptr %11, i64 %15 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %23, ptr nonnull readonly align 1 %20, i64 %.0.sroa.speculated.i.i20.i, i1 false), !alias.scope !7462, !noalias !7466 %24 = add i64 %.0.sroa.speculated.i.i20.i, %15 - %.0.sroa.speculated.i.i.i.i = tail call noundef i64 @llvm.umax.i64(i64 %.0.sroa.speculated.i.i.i.i21, i64 %24) + %.0.sroa.speculated.i.i.i.i = tail call noundef i64 @llvm.umax.i64(i64 %.0.sroa.speculated.i.i.i.i22, i64 %24) store i64 %.0.sroa.speculated.i.i.i.i, ptr %12, align 8, !alias.scope !7451, !noalias !7454 store i64 %24, ptr %6, align 8, !alias.scope !7451, !noalias !7454 %25 = add i64 %.0.sroa.speculated.i.i20.i, %14 store i64 %25, ptr %7, align 8, !alias.scope !7446, !noalias !7449 - %26 = icmp eq i64 %.0.sroa.speculated.i.i20.i, 0 - br i1 %26, label %27, label %13 + %.not14 = icmp ugt i64 %10, %14 + br i1 %.not14, label %13, label %26 -27: ; preds = %19 - %28 = tail call noundef nonnull ptr @_ZN3std2io5error5Error3new17h25a94470ea26fb0dE(i8 noundef 37, ptr noalias noundef nonnull readonly align 1 @anon.bff94df153f2ea43afa491857fb97fba.563, i64 noundef 21) +26: ; preds = %19 + %27 = tail call noundef nonnull ptr @_ZN3std2io5error5Error3new17h25a94470ea26fb0dE(i8 noundef 37, ptr noalias noundef nonnull readonly align 1 @anon.bff94df153f2ea43afa491857fb97fba.563, i64 noundef 21) br label %.loopexit } diff --git a/bench/opencc/optimized/tail.cc.ll b/bench/opencc/optimized/tail.cc.ll index d2d3dc7a002..3da8a6cf25d 100644 --- a/bench/opencc/optimized/tail.cc.ll +++ b/bench/opencc/optimized/tail.cc.ll @@ -5177,119 +5177,109 @@ _ZN6marisa8grimoire9algorithm7details9get_labelINS0_4trie5EntryEEEiRKT_m.exit160 %.0.lcssa = phi ptr [ %0, %3 ], [ %.1, %228 ] %.lcssa166 = phi i64 [ %7, %3 ], [ %232, %228 ] %234 = icmp sgt i64 %.lcssa166, 1 - br i1 %234, label %235, label %280 + br i1 %234, label %235, label %272 235: ; preds = %._crit_edge196 %.01739.i = getelementptr inbounds i8, ptr %.0.lcssa, i64 16 %236 = icmp ult ptr %.01739.i, %.0127.lcssa br i1 %236, label %.preheader.i, label %_ZN6marisa8grimoire9algorithm7details14insertion_sortIPNS0_4trie5EntryEEEmT_S7_m.exit -.preheader.i: ; preds = %235, %276 - %.01741.i = phi ptr [ %.017.i, %276 ], [ %.01739.i, %235 ] - %.01840.i = phi i64 [ %277, %276 ], [ 1, %235 ] - %237 = icmp ugt ptr %.01741.i, %.0.lcssa - br i1 %237, label %.lr.ph.i, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i +.preheader.i: ; preds = %235, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i + %.01741.i = phi ptr [ %.017.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i ], [ %.01739.i, %235 ] + %.01840.i = phi i64 [ %269, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i ], [ 1, %235 ] + %.not.i = icmp ugt ptr %.01741.i, %.0.lcssa + br i1 %.not.i, label %.lr.ph.i, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i .lr.ph.i: ; preds = %.preheader.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i - %.037.i = phi ptr [ %238, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i ], [ %.01741.i, %.preheader.i ] - %238 = getelementptr inbounds i8, ptr %.037.i, i64 -16 - %239 = getelementptr inbounds i8, ptr %.037.i, i64 -8 - %240 = load i32, ptr %239, align 8 - %241 = zext i32 %240 to i64 - %242 = icmp ult i64 %.0129.lcssa, %241 - %243 = getelementptr inbounds i8, ptr %.037.i, i64 8 - %244 = load i32, ptr %243, align 8 - br i1 %242, label %.lr.ph.i.i, label %._crit_edge.i.i + %.037.i = phi ptr [ %237, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i ], [ %.01741.i, %.preheader.i ] + %237 = getelementptr inbounds i8, ptr %.037.i, i64 -16 + %238 = getelementptr inbounds i8, ptr %.037.i, i64 -8 + %239 = load i32, ptr %238, align 8 + %240 = zext i32 %239 to i64 + %241 = icmp ult i64 %.0129.lcssa, %240 + %242 = getelementptr inbounds i8, ptr %.037.i, i64 8 + %243 = load i32, ptr %242, align 8 + br i1 %241, label %.lr.ph.i.i, label %._crit_edge.i.i .lr.ph.i.i: ; preds = %.lr.ph.i - %245 = zext i32 %244 to i64 - %246 = load ptr, ptr %238, align 8 - %247 = load ptr, ptr %.037.i, align 8 - br label %250 - -248: ; preds = %252 - %249 = add i64 %.023.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %249, %241 - br i1 %exitcond.not.i.i, label %._crit_edge.i.i, label %250, !llvm.loop !32 - -250: ; preds = %248, %.lr.ph.i.i - %.023.i.i = phi i64 [ %.0129.lcssa, %.lr.ph.i.i ], [ %249, %248 ] - %251 = icmp eq i64 %.023.i.i, %245 - br i1 %251, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i, label %252 - -252: ; preds = %250 - %253 = sub nsw i64 0, %.023.i.i - %254 = getelementptr inbounds i8, ptr %246, i64 %253 - %255 = load i8, ptr %254, align 1 - %256 = getelementptr inbounds i8, ptr %247, i64 %253 - %257 = load i8, ptr %256, align 1 - %.not.i.i = icmp eq i8 %255, %257 - br i1 %.not.i.i, label %248, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i - -._crit_edge.i.i: ; preds = %248, %.lr.ph.i - %258 = icmp eq i32 %240, %244 - br i1 %258, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i, label %259 - -259: ; preds = %._crit_edge.i.i - %260 = icmp ult i32 %240, %244 - br i1 %260, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread30.i, label %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i - -._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i: ; preds = %259 - %.pre.i = load ptr, ptr %238, align 8 - %.pre47.i = load ptr, ptr %.037.i, align 8 + %244 = zext i32 %243 to i64 + %245 = load ptr, ptr %237, align 8 + %246 = load ptr, ptr %.037.i, align 8 + br label %249 + +247: ; preds = %251 + %248 = add i64 %.023.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %248, %240 + br i1 %exitcond.not.i.i, label %._crit_edge.i.i, label %249, !llvm.loop !32 + +249: ; preds = %247, %.lr.ph.i.i + %.023.i.i = phi i64 [ %.0129.lcssa, %.lr.ph.i.i ], [ %248, %247 ] + %250 = icmp eq i64 %.023.i.i, %244 + br i1 %250, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i, label %251 + +251: ; preds = %249 + %252 = sub nsw i64 0, %.023.i.i + %253 = getelementptr inbounds i8, ptr %245, i64 %252 + %254 = load i8, ptr %253, align 1 + %255 = getelementptr inbounds i8, ptr %246, i64 %252 + %256 = load i8, ptr %255, align 1 + %.not.i.i = icmp eq i8 %254, %256 + br i1 %.not.i.i, label %247, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i + +._crit_edge.i.i: ; preds = %247, %.lr.ph.i + %257 = icmp eq i32 %239, %243 + br i1 %257, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i, label %258 + +258: ; preds = %._crit_edge.i.i + %259 = icmp ult i32 %239, %243 + br i1 %259, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread30.i, label %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i + +._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i: ; preds = %258 + %.pre.i = load ptr, ptr %237, align 8 + %.pre46.i = load ptr, ptr %.037.i, align 8 br label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i -_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread30.i: ; preds = %259 - %261 = add i64 %.01840.i, 1 - br label %276 - -_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i: ; preds = %252 - %262 = zext i8 %255 to i32 - %263 = zext i8 %257 to i32 - %264 = sub nsw i32 %262, %263 - %265 = icmp slt i32 %264, 1 - br i1 %265, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i - -_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i: ; preds = %250, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i, %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i - %266 = phi ptr [ %247, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i ], [ %.pre47.i, %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i ], [ %247, %250 ] - %267 = phi ptr [ %246, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i ], [ %.pre.i, %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i ], [ %246, %250 ] - %.018.i26.i = phi i32 [ %264, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i ], [ 1, %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i ], [ 1, %250 ] - %268 = getelementptr inbounds i8, ptr %.037.i, i64 -4 - %269 = load i32, ptr %268, align 4 - store ptr %266, ptr %238, align 8 - store i32 %244, ptr %239, align 8 - %270 = getelementptr inbounds i8, ptr %.037.i, i64 12 - %271 = load i32, ptr %270, align 4 - store i32 %271, ptr %268, align 4 - store ptr %267, ptr %.037.i, align 8 - store i32 %240, ptr %243, align 8 - store i32 %269, ptr %270, align 4 - %272 = icmp ugt ptr %238, %.0.lcssa - br i1 %272, label %.lr.ph.i, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i, !llvm.loop !33 +_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread30.i: ; preds = %258 + %260 = add i64 %.01840.i, 1 + br label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i + +_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i: ; preds = %251 + %.not47.i = icmp ugt i8 %254, %256 + br i1 %.not47.i, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i + +_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i: ; preds = %249, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i, %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i + %261 = phi ptr [ %246, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i ], [ %.pre46.i, %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i ], [ %246, %249 ] + %262 = phi ptr [ %245, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i ], [ %.pre.i, %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i ], [ %245, %249 ] + %263 = getelementptr inbounds i8, ptr %.037.i, i64 -4 + %264 = load i32, ptr %263, align 4 + store ptr %261, ptr %237, align 8 + store i32 %243, ptr %238, align 8 + %265 = getelementptr inbounds i8, ptr %.037.i, i64 12 + %266 = load i32, ptr %265, align 4 + store i32 %266, ptr %263, align 4 + store ptr %262, ptr %.037.i, align 8 + store i32 %239, ptr %242, align 8 + store i32 %264, ptr %265, align 4 + %267 = icmp ugt ptr %237, %.0.lcssa + br i1 %267, label %.lr.ph.i, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i, !llvm.loop !33 _ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i: ; preds = %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i - %.1.ph.i = phi i32 [ %.018.i26.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i ], [ %264, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i ] - %273 = freeze i32 %.1.ph.i - %274 = icmp eq i32 %273, 0 - %275 = add i64 %.01840.i, 1 - br i1 %274, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i, label %276 + %268 = add i64 %.01840.i, 1 + br label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i -_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i: ; preds = %._crit_edge.i.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i, %.preheader.i - br label %276 - -276: ; preds = %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread30.i - %277 = phi i64 [ %.01840.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i ], [ %275, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i ], [ %261, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread30.i ] +_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i: ; preds = %._crit_edge.i.i, %.preheader.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread30.i + %269 = phi i64 [ %268, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i ], [ %260, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread30.i ], [ %.01840.i, %.preheader.i ], [ %.01840.i, %._crit_edge.i.i ] %.017.i = getelementptr inbounds i8, ptr %.01741.i, i64 16 - %278 = icmp ult ptr %.017.i, %.0127.lcssa - br i1 %278, label %.preheader.i, label %_ZN6marisa8grimoire9algorithm7details14insertion_sortIPNS0_4trie5EntryEEEmT_S7_m.exit, !llvm.loop !34 + %270 = icmp ult ptr %.017.i, %.0127.lcssa + br i1 %270, label %.preheader.i, label %_ZN6marisa8grimoire9algorithm7details14insertion_sortIPNS0_4trie5EntryEEEmT_S7_m.exit, !llvm.loop !34 -_ZN6marisa8grimoire9algorithm7details14insertion_sortIPNS0_4trie5EntryEEEmT_S7_m.exit: ; preds = %276, %235 - %.018.lcssa.i = phi i64 [ 1, %235 ], [ %277, %276 ] - %279 = add i64 %.018.lcssa.i, %.0144.lcssa - br label %280 +_ZN6marisa8grimoire9algorithm7details14insertion_sortIPNS0_4trie5EntryEEEmT_S7_m.exit: ; preds = %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i, %235 + %.018.lcssa.i = phi i64 [ 1, %235 ], [ %269, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i ] + %271 = add i64 %.018.lcssa.i, %.0144.lcssa + br label %272 -280: ; preds = %_ZN6marisa8grimoire9algorithm7details14insertion_sortIPNS0_4trie5EntryEEEmT_S7_m.exit, %._crit_edge196 - %.7 = phi i64 [ %279, %_ZN6marisa8grimoire9algorithm7details14insertion_sortIPNS0_4trie5EntryEEEmT_S7_m.exit ], [ %.0144.lcssa, %._crit_edge196 ] +272: ; preds = %_ZN6marisa8grimoire9algorithm7details14insertion_sortIPNS0_4trie5EntryEEEmT_S7_m.exit, %._crit_edge196 + %.7 = phi i64 [ %271, %_ZN6marisa8grimoire9algorithm7details14insertion_sortIPNS0_4trie5EntryEEEmT_S7_m.exit ], [ %.0144.lcssa, %._crit_edge196 ] ret i64 %.7 } diff --git a/bench/opencv/optimized/cuda_perf.cpp.ll b/bench/opencv/optimized/cuda_perf.cpp.ll index d8b71ab856b..47a577afe7b 100644 --- a/bench/opencv/optimized/cuda_perf.cpp.ll +++ b/bench/opencv/optimized/cuda_perf.cpp.ll @@ -282,8 +282,7 @@ _ZNSt6vectorImSaImEEC2EmRKS0_.exit: ; preds = %.noexc37 %26 = getelementptr i64, ptr %23, i64 %20 %27 = add nsw i64 %22, -8 tail call void @llvm.memset.p0.i64(ptr align 8 %24, i8 0, i64 %27, i1 false) - %.not = icmp eq ptr %15, %16 - br i1 %.not, label %._crit_edge, label %.lr.ph.preheader + br label %.lr.ph.preheader .lr.ph.preheader: ; preds = %.noexc37, %_ZNSt6vectorImSaImEEC2EmRKS0_.exit %28 = phi i64 [ %20, %_ZNSt6vectorImSaImEEC2EmRKS0_.exit ], [ 1, %.noexc37 ] @@ -299,11 +298,10 @@ _ZNSt6vectorImSaImEEC2EmRKS0_.exit: ; preds = %.noexc37 %exitcond.not = icmp eq i64 %30, %umax br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !6 -._crit_edge: ; preds = %.lr.ph, %_ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i, %_ZNSt6vectorImSaImEEC2EmRKS0_.exit - %.not80 = phi i1 [ true, %_ZNSt6vectorImSaImEEC2EmRKS0_.exit ], [ true, %_ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i ], [ false, %.lr.ph ] - %31 = phi i64 [ 0, %_ZNSt6vectorImSaImEEC2EmRKS0_.exit ], [ 0, %_ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i ], [ %28, %.lr.ph ] - %.0.i.i.i.i.i79 = phi ptr [ %26, %_ZNSt6vectorImSaImEEC2EmRKS0_.exit ], [ null, %_ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i ], [ %.0.i.i.i.i.i86, %.lr.ph ] - %.sroa.051.074 = phi ptr [ %23, %_ZNSt6vectorImSaImEEC2EmRKS0_.exit ], [ null, %_ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i ], [ %23, %.lr.ph ] +._crit_edge: ; preds = %.lr.ph, %_ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i + %31 = phi i64 [ 0, %_ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i ], [ %28, %.lr.ph ] + %.0.i.i.i.i.i79 = phi ptr [ null, %_ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i ], [ %.0.i.i.i.i.i86, %.lr.ph ] + %.sroa.051.074 = phi ptr [ null, %_ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i ], [ %23, %.lr.ph ] invoke void @_ZSt6__sortIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEENS0_5__ops15_Iter_comp_iterIN4perf18KeypointIdxCompareEEEEvT_SC_T0_(ptr %.sroa.051.074, ptr %.0.i.i.i.i.i79, ptr nonnull %0) to label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEEN4perf18KeypointIdxCompareEEvT_S9_T0_.exit unwind label %71 @@ -417,7 +415,7 @@ _ZNK2cv11_InputArray6getMatEi.exit: ; preds = %58, %61 br label %121 77: ; preds = %63, %54 - br i1 %.not80, label %._crit_edge67, label %.lr.ph66 + br i1 %.not.i.i.i.i, label %._crit_edge67, label %.lr.ph66 .lr.ph66: ; preds = %77 %78 = getelementptr inbounds i8, ptr %5, i64 4 diff --git a/bench/openexr/optimized/ImfCompositeDeepScanLine.cpp.ll b/bench/openexr/optimized/ImfCompositeDeepScanLine.cpp.ll index e9bc9443ea9..c74af656924 100644 --- a/bench/openexr/optimized/ImfCompositeDeepScanLine.cpp.ll +++ b/bench/openexr/optimized/ImfCompositeDeepScanLine.cpp.ll @@ -2666,23 +2666,17 @@ call5.i.i.i.i2.i.i.noexc302: ; preds = %if.then.i.i.i.i.i29 store ptr null, ptr %call5.i.i.i.i2.i.i303, align 8 %incdec.ptr.i.i.i.i.i295 = getelementptr i8, ptr %call5.i.i.i.i2.i.i303, i64 8 %cmp.i.i.i.i.i.i.i296 = icmp eq i64 %sub.ptr.sub.i287, 32 - br i1 %cmp.i.i.i.i.i.i.i296, label %invoke.cont229.thread549, label %invoke.cont229 - -invoke.cont229.thread549: ; preds = %call5.i.i.i.i2.i.i.noexc302 - %_M_finish.i.i7.i299551 = getelementptr inbounds i8, ptr %names, i64 8 - store ptr %incdec.ptr.i.i.i.i.i295, ptr %_M_finish.i.i7.i299551, align 8 - br label %for.body234.preheader + br i1 %cmp.i.i.i.i.i.i.i296, label %for.body234.preheader, label %invoke.cont229 invoke.cont229: ; preds = %call5.i.i.i.i2.i.i.noexc302 %127 = add nsw i64 %mul.i.i.i.i.i.i292, -8 tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i295, i8 0, i64 %127, i1 false) - %_M_finish.i.i7.i299 = getelementptr inbounds i8, ptr %names, i64 8 - store ptr %add.ptr.i.i.i293, ptr %_M_finish.i.i7.i299, align 8 - %cmp233514.not = icmp eq ptr %125, %126 - br i1 %cmp233514.not, label %for.end242, label %for.body234.preheader + br label %for.body234.preheader -for.body234.preheader: ; preds = %invoke.cont229.thread549, %invoke.cont229 - %_M_finish.i.i7.i299553 = phi ptr [ %_M_finish.i.i7.i299551, %invoke.cont229.thread549 ], [ %_M_finish.i.i7.i299, %invoke.cont229 ] +for.body234.preheader: ; preds = %call5.i.i.i.i2.i.i.noexc302, %invoke.cont229 + %add.ptr.i.i.i293.sink = phi ptr [ %add.ptr.i.i.i293, %invoke.cont229 ], [ %incdec.ptr.i.i.i.i.i295, %call5.i.i.i.i2.i.i.noexc302 ] + %_M_finish.i.i7.i299 = getelementptr inbounds i8, ptr %names, i64 8 + store ptr %add.ptr.i.i.i293.sink, ptr %_M_finish.i.i7.i299, align 8 br label %for.body234 for.body234: ; preds = %for.body234.preheader, %for.body234 @@ -2696,7 +2690,7 @@ for.body234: ; preds = %for.body234.prehead %add.ptr.i310 = getelementptr inbounds ptr, ptr %128, i64 %i230.0515 store ptr %call238, ptr %add.ptr.i310, align 8 %inc241 = add nuw i64 %i230.0515, 1 - %131 = load ptr, ptr %_M_finish.i.i7.i299553, align 8 + %131 = load ptr, ptr %_M_finish.i.i7.i299, align 8 %132 = load ptr, ptr %names, align 8 %sub.ptr.lhs.cast.i305 = ptrtoint ptr %131 to i64 %sub.ptr.rhs.cast.i306 = ptrtoint ptr %132 to i64 @@ -2714,9 +2708,9 @@ for.end242.loopexit: ; preds = %for.body234 %.pre535 = load ptr, ptr %_Data, align 8 br label %for.end242 -for.end242: ; preds = %invoke.cont229.thread, %for.end242.loopexit, %invoke.cont229 - %134 = phi ptr [ %.lcssa423, %invoke.cont229 ], [ %.pre535, %for.end242.loopexit ], [ %.lcssa423, %invoke.cont229.thread ] - %.lcssa = phi ptr [ %call5.i.i.i.i2.i.i303, %invoke.cont229 ], [ %132, %for.end242.loopexit ], [ null, %invoke.cont229.thread ] +for.end242: ; preds = %invoke.cont229.thread, %for.end242.loopexit + %134 = phi ptr [ %.pre535, %for.end242.loopexit ], [ %.lcssa423, %invoke.cont229.thread ] + %.lcssa = phi ptr [ %132, %for.end242.loopexit ], [ null, %invoke.cont229.thread ] %_zback244 = getelementptr inbounds i8, ptr %134, i64 96 %135 = load i8, ptr %_zback244, align 8 %tobool245 = trunc i8 %135 to i1 diff --git a/bench/postgres/optimized/path.ll b/bench/postgres/optimized/path.ll index ebc326e75ad..5624f2a6cc1 100644 --- a/bench/postgres/optimized/path.ll +++ b/bench/postgres/optimized/path.ll @@ -785,17 +785,17 @@ define dso_local void @get_share_path(ptr noundef %0, ptr noundef %1) local_unna ; Function Attrs: nounwind uwtable define internal fastcc void @make_relative_path(ptr noundef %0, ptr noundef %1, ptr noundef %2) unnamed_addr #2 { %4 = load i8, ptr %1, align 1 - %.not8 = icmp eq i8 %4, 0 - br i1 %.not8, label %dir_strcmp.exit.thread, label %.lr.ph + %.not2 = icmp eq i8 %4, 0 + br i1 %.not2, label %dir_strcmp.exit.thread, label %.lr.ph .lr.ph: ; preds = %3, %15 %5 = phi i8 [ %18, %15 ], [ %4, %3 ] %6 = phi i64 [ %16, %15 ], [ 0, %3 ] - %.010 = phi i32 [ %.pre-phi, %15 ], [ 0, %3 ] - %.0409 = phi i32 [ %.1, %15 ], [ 0, %3 ] + %.04 = phi i32 [ %.pre-phi, %15 ], [ 0, %3 ] + %.0403 = phi i32 [ %.1, %15 ], [ 0, %3 ] %7 = getelementptr i8, ptr @.str.10, i64 %6 %8 = load i8, ptr %7, align 1 - %exitcond = icmp eq i32 %.010, 20 + %exitcond = icmp eq i32 %.04, 20 br i1 %exitcond, label %.critedge, label %9 9: ; preds = %.lr.ph @@ -805,7 +805,7 @@ define internal fastcc void @make_relative_path(ptr noundef %0, ptr noundef %1, br i1 %or.cond, label %12, label %14 12: ; preds = %9 - %13 = add nuw nsw i32 %.010, 1 + %13 = add nuw nsw i32 %.04, 1 br label %15 14: ; preds = %9 @@ -813,12 +813,12 @@ define internal fastcc void @make_relative_path(ptr noundef %0, ptr noundef %1, br i1 %.not45, label %._crit_edge, label %.critedge ._crit_edge: ; preds = %14 - %.pre = add nuw nsw i32 %.010, 1 + %.pre = add nuw nsw i32 %.04, 1 br label %15 15: ; preds = %._crit_edge, %12 %.pre-phi = phi i32 [ %.pre, %._crit_edge ], [ %13, %12 ] - %.1 = phi i32 [ %.0409, %._crit_edge ], [ %13, %12 ] + %.1 = phi i32 [ %.0403, %._crit_edge ], [ %13, %12 ] %16 = sext i32 %.pre-phi to i64 %17 = getelementptr i8, ptr %1, i64 %16 %18 = load i8, ptr %17, align 1 @@ -826,7 +826,7 @@ define internal fastcc void @make_relative_path(ptr noundef %0, ptr noundef %1, br i1 %.not, label %.critedge, label %.lr.ph, !llvm.loop !17 .critedge: ; preds = %.lr.ph, %14, %15 - %.040.lcssa = phi i32 [ %.0409, %.lr.ph ], [ %.0409, %14 ], [ %.1, %15 ] + %.040.lcssa = phi i32 [ %.0403, %.lr.ph ], [ %.0403, %14 ], [ %.1, %15 ] %19 = icmp eq i32 %.040.lcssa, 0 br i1 %19, label %dir_strcmp.exit.thread, label %20 @@ -903,92 +903,80 @@ trim_directory.exit: ; preds = %20, %.critedge.i %.not26.i = icmp eq i8 %57, 0 br i1 %.not26.i, label %._crit_edge.i, label %.lr.ph.i -.lr.ph.i: ; preds = %55, %68 - %58 = phi i8 [ %71, %68 ], [ %57, %55 ] - %.028.i = phi ptr [ %70, %68 ], [ %56, %55 ] - %.01227.i = phi ptr [ %69, %68 ], [ %51, %55 ] +.lr.ph.i: ; preds = %55, %64 + %58 = phi i8 [ %67, %64 ], [ %57, %55 ] + %.028.i = phi ptr [ %66, %64 ], [ %56, %55 ] + %.01227.i = phi ptr [ %65, %64 ], [ %51, %55 ] %59 = load i8, ptr %.028.i, align 1 %.not16.i = icmp eq i8 %59, 0 br i1 %.not16.i, label %dir_strcmp.exit.thread, label %60 60: ; preds = %.lr.ph.i %.not19.i = icmp eq i8 %58, %59 - br i1 %.not19.i, label %68, label %61 + br i1 %.not19.i, label %64, label %61 61: ; preds = %60 %62 = icmp eq i8 %58, 47 %63 = icmp eq i8 %59, 47 %or.cond.i = and i1 %62, %63 - br i1 %or.cond.i, label %68, label %64 - -64: ; preds = %61 - %65 = sext i8 %58 to i32 - %66 = sext i8 %59 to i32 - %67 = sub nsw i32 %65, %66 - br label %dir_strcmp.exit - -68: ; preds = %61, %60 - %69 = getelementptr i8, ptr %.01227.i, i64 1 - %70 = getelementptr i8, ptr %.028.i, i64 1 - %71 = load i8, ptr %69, align 1 - %.not.i = icmp eq i8 %71, 0 - br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !18 + br i1 %or.cond.i, label %64, label %dir_strcmp.exit.thread -._crit_edge.i: ; preds = %68, %55 - %.0.lcssa.i = phi ptr [ %56, %55 ], [ %70, %68 ] - %72 = load i8, ptr %.0.lcssa.i, align 1 - %.not18.i = icmp ne i8 %72, 0 - %..i = sext i1 %.not18.i to i32 - br label %dir_strcmp.exit +64: ; preds = %61, %60 + %65 = getelementptr i8, ptr %.01227.i, i64 1 + %66 = getelementptr i8, ptr %.028.i, i64 1 + %67 = load i8, ptr %65, align 1 + %.not.i = icmp eq i8 %67, 0 + br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !18 -dir_strcmp.exit: ; preds = %64, %._crit_edge.i - %.013.i = phi i32 [ %67, %64 ], [ %..i, %._crit_edge.i ] - %73 = icmp eq i32 %.013.i, 0 - br i1 %73, label %74, label %dir_strcmp.exit.thread +._crit_edge.i: ; preds = %64, %55 + %.0.lcssa.i = phi ptr [ %56, %55 ], [ %66, %64 ] + %68 = load i8, ptr %.0.lcssa.i, align 1 + %.not18.i.not = icmp eq i8 %68, 0 + br i1 %.not18.i.not, label %69, label %dir_strcmp.exit.thread -74: ; preds = %dir_strcmp.exit +69: ; preds = %._crit_edge.i store i8 0, ptr %51, align 1 - %75 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #19 - %76 = getelementptr i8, ptr %0, i64 %75 - %77 = icmp ugt ptr %76, %0 - %.013.i47 = getelementptr i8, ptr %76, i64 -1 - %78 = icmp ugt ptr %.013.i47, %0 - %or.cond.i48 = and i1 %77, %78 + %70 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #19 + %71 = getelementptr i8, ptr %0, i64 %70 + %72 = icmp ugt ptr %71, %0 + %.013.i47 = getelementptr i8, ptr %71, i64 -1 + %73 = icmp ugt ptr %.013.i47, %0 + %or.cond.i48 = and i1 %72, %73 br i1 %or.cond.i48, label %.lr.ph.i50, label %trim_trailing_separator.exit -.lr.ph.i50: ; preds = %74, %81 - %.014.i = phi ptr [ %.0.i51, %81 ], [ %.013.i47, %74 ] - %79 = load i8, ptr %.014.i, align 1 - %80 = icmp eq i8 %79, 47 - br i1 %80, label %81, label %trim_trailing_separator.exit +.lr.ph.i50: ; preds = %69, %76 + %.014.i = phi ptr [ %.0.i51, %76 ], [ %.013.i47, %69 ] + %74 = load i8, ptr %.014.i, align 1 + %75 = icmp eq i8 %74, 47 + br i1 %75, label %76, label %trim_trailing_separator.exit -81: ; preds = %.lr.ph.i50 +76: ; preds = %.lr.ph.i50 store i8 0, ptr %.014.i, align 1 %.0.i51 = getelementptr i8, ptr %.014.i, i64 -1 - %82 = icmp ugt ptr %.0.i51, %0 - br i1 %82, label %.lr.ph.i50, label %trim_trailing_separator.exit, !llvm.loop !9 - -trim_trailing_separator.exit: ; preds = %.lr.ph.i50, %81, %74 - %83 = getelementptr i8, ptr %1, i64 %21 - %84 = load i8, ptr %83, align 1 - %.not11.i = icmp eq i8 %84, 0 - br i1 %.not11.i, label %join_path_components.exit, label %85 - -85: ; preds = %trim_trailing_separator.exit - %86 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #19 - %87 = getelementptr i8, ptr %0, i64 %86 - %88 = sub i64 1024, %86 - %89 = load i8, ptr %0, align 1 - %.not12.i = icmp eq i8 %89, 0 - %90 = select i1 %.not12.i, ptr @.str.2, ptr @.str.1 - %91 = tail call i32 (ptr, i64, ptr, ...) @pg_snprintf(ptr noundef %87, i64 noundef %88, ptr noundef nonnull @.str, ptr noundef nonnull %90, ptr noundef nonnull %83) #18 + %77 = icmp ugt ptr %.0.i51, %0 + br i1 %77, label %.lr.ph.i50, label %trim_trailing_separator.exit, !llvm.loop !9 + +trim_trailing_separator.exit: ; preds = %.lr.ph.i50, %76, %69 + %78 = getelementptr i8, ptr %1, i64 %21 + %79 = load i8, ptr %78, align 1 + %.not11.i = icmp eq i8 %79, 0 + br i1 %.not11.i, label %join_path_components.exit, label %80 + +80: ; preds = %trim_trailing_separator.exit + %81 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #19 + %82 = getelementptr i8, ptr %0, i64 %81 + %83 = sub i64 1024, %81 + %84 = load i8, ptr %0, align 1 + %.not12.i = icmp eq i8 %84, 0 + %85 = select i1 %.not12.i, ptr @.str.2, ptr @.str.1 + %86 = tail call i32 (ptr, i64, ptr, ...) @pg_snprintf(ptr noundef %82, i64 noundef %83, ptr noundef nonnull @.str, ptr noundef nonnull %85, ptr noundef nonnull %78) #18 br label %join_path_components.exit -dir_strcmp.exit.thread: ; preds = %.lr.ph.i, %3, %trim_directory.exit, %49, %dir_strcmp.exit, %.critedge - %92 = tail call i64 @strlcpy(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) %1, i64 noundef 1024) #18 +dir_strcmp.exit.thread: ; preds = %61, %.lr.ph.i, %3, %trim_directory.exit, %49, %._crit_edge.i, %.critedge + %87 = tail call i64 @strlcpy(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) %1, i64 noundef 1024) #18 br label %join_path_components.exit -join_path_components.exit: ; preds = %85, %trim_trailing_separator.exit, %dir_strcmp.exit.thread +join_path_components.exit: ; preds = %80, %trim_trailing_separator.exit, %dir_strcmp.exit.thread tail call void @canonicalize_path(ptr noundef %0) ret void } diff --git a/bench/postgres/optimized/zic.ll b/bench/postgres/optimized/zic.ll index 73f7448e3aa..445146af615 100644 --- a/bench/postgres/optimized/zic.ll +++ b/bench/postgres/optimized/zic.ll @@ -8137,50 +8137,49 @@ define internal fastcc noundef zeroext i1 @componentcheck(ptr noundef %0, ptr no 18: ; preds = %3 %19 = icmp sgt i64 %6, 0 - %20 = add i64 %6, -1 - %or.cond = icmp ult i64 %20, 2 - br i1 %or.cond, label %21, label %30 + %or.cond = icmp ult i64 %6, 3 + br i1 %or.cond, label %20, label %29 -21: ; preds = %18 - %22 = load i8, ptr %1, align 1 - %23 = icmp eq i8 %22, 46 - br i1 %23, label %24, label %30 +20: ; preds = %18 + %21 = load i8, ptr %1, align 1 + %22 = icmp eq i8 %21, 46 + br i1 %22, label %23, label %29 -24: ; preds = %21 - %25 = getelementptr i8, ptr %2, i64 -1 - %26 = load i8, ptr %25, align 1 - %27 = icmp eq i8 %26, 46 - br i1 %27, label %28, label %30 +23: ; preds = %20 + %24 = getelementptr i8, ptr %2, i64 -1 + %25 = load i8, ptr %24, align 1 + %26 = icmp eq i8 %25, 46 + br i1 %26, label %27, label %29 -28: ; preds = %24 - %29 = trunc nuw nsw i64 %6 to i32 - tail call void (ptr, ...) @error(ptr noundef nonnull @.str.83, ptr noundef %0, i32 noundef %29, ptr noundef nonnull %1) +27: ; preds = %23 + %28 = trunc nuw nsw i64 %6 to i32 + tail call void (ptr, ...) @error(ptr noundef nonnull @.str.83, ptr noundef %0, i32 noundef %28, ptr noundef nonnull %1) br label %.thread -30: ; preds = %24, %21, %18 +29: ; preds = %23, %20, %18 %.b24 = load i1, ptr @noise, align 1 %brmerge.not = and i1 %19, %.b24 - br i1 %brmerge.not, label %31, label %.thread + br i1 %brmerge.not, label %30, label %.thread -31: ; preds = %30 - %32 = load i8, ptr %1, align 1 - %33 = icmp eq i8 %32, 45 - br i1 %33, label %34, label %35 +30: ; preds = %29 + %31 = load i8, ptr %1, align 1 + %32 = icmp eq i8 %31, 45 + br i1 %32, label %33, label %34 -34: ; preds = %31 +33: ; preds = %30 tail call void (ptr, ...) @warning(ptr noundef nonnull @.str.84, ptr noundef %0) - br label %35 + br label %34 -35: ; preds = %34, %31 - %36 = icmp samesign ugt i64 %6, 14 - br i1 %36, label %37, label %.thread +34: ; preds = %33, %30 + %35 = icmp samesign ugt i64 %6, 14 + br i1 %35, label %36, label %.thread -37: ; preds = %35 +36: ; preds = %34 tail call void (ptr, ...) @warning(ptr noundef nonnull @.str.85, ptr noundef %0, i32 noundef 14, ptr noundef nonnull %1) br label %.thread -.thread: ; preds = %30, %37, %35, %10, %16, %28 - %.0 = phi i1 [ false, %28 ], [ false, %16 ], [ false, %10 ], [ true, %35 ], [ true, %37 ], [ true, %30 ] +.thread: ; preds = %29, %36, %34, %10, %16, %27 + %.0 = phi i1 [ false, %27 ], [ false, %16 ], [ false, %10 ], [ true, %34 ], [ true, %36 ], [ true, %29 ] ret i1 %.0 } diff --git a/bench/protobuf/optimized/generated_message_tctable_gen.cc.ll b/bench/protobuf/optimized/generated_message_tctable_gen.cc.ll index 2ce02a3ec9e..db12ec4d437 100644 --- a/bench/protobuf/optimized/generated_message_tctable_gen.cc.ll +++ b/bench/protobuf/optimized/generated_message_tctable_gen.cc.ll @@ -6511,30 +6511,22 @@ if.then9: ; preds = %if.then if.then16: ; preds = %if.then9 %idx.neg = sub i64 0, %sub.ptr.sub.i.i.i %add.ptr = getelementptr inbounds i8, ptr %1, i64 %idx.neg - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 - %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq i64 %sub.ptr.sub.i.i.i, 0 - br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, label %if.then.i.i.i.i.i.i.i.i.i - -if.then.i.i.i.i.i.i.i.i.i: ; preds = %if.then16 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr nonnull align 1 %add.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) - %.pre98 = load ptr, ptr %_M_finish, align 8 - br label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit - -_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit: ; preds = %if.then16, %if.then.i.i.i.i.i.i.i.i.i - %2 = phi ptr [ %1, %if.then16 ], [ %.pre98, %if.then.i.i.i.i.i.i.i.i.i ] + %2 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %2, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit, label %if.then.i.i.i.i.i -if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i: ; preds = %if.then16 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %idx.neg.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 %idx.neg.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit -_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, %if.then.i.i.i.i.i +_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit: ; preds = %if.then16, %if.then.i.i.i.i.i %cmp6.i.i.i.i.i = icmp sgt i64 %sub.ptr.sub.i.i.i, 0 br i1 %cmp6.i.i.i.i.i, label %for.body.i.i.i.i.i, label %if.end108 @@ -6713,30 +6705,22 @@ if.then4: ; preds = %if.then if.then11: ; preds = %if.then4 %idx.neg = sub i64 0, %sub.ptr.sub.i.i %add.ptr = getelementptr inbounds i8, ptr %1, i64 %idx.neg - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 - %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq i64 %sub.ptr.sub.i.i, 0 - br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, label %if.then.i.i.i.i.i.i.i.i.i - -if.then.i.i.i.i.i.i.i.i.i: ; preds = %if.then11 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr nonnull align 1 %add.ptr, i64 %sub.ptr.sub.i.i, i1 false) - %.pre108 = load ptr, ptr %_M_finish, align 8 - br label %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit - -_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit: ; preds = %if.then11, %if.then.i.i.i.i.i.i.i.i.i - %2 = phi ptr [ %1, %if.then11 ], [ %.pre108, %if.then.i.i.i.i.i.i.i.i.i ] + %2 = load ptr, ptr %_M_finish, align 8 %add.ptr22 = getelementptr inbounds i8, ptr %2, i64 %sub.ptr.sub.i.i store ptr %add.ptr22, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit, label %if.then.i.i.i.i.i -if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i: ; preds = %if.then11 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %idx.neg.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 %idx.neg.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit -_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit, %if.then.i.i.i.i.i +_ZSt13move_backwardIPhS0_ET0_T_S2_S1_.exit: ; preds = %if.then11, %if.then.i.i.i.i.i %cmp6.i.i.i.i.i = icmp sgt i64 %sub.ptr.sub.i.i, 0 br i1 %cmp6.i.i.i.i.i, label %for.body.i.i.i.i.i, label %if.end86 diff --git a/bench/proxygen/optimized/RendezvousHash.cpp.ll b/bench/proxygen/optimized/RendezvousHash.cpp.ll index 057107e18b2..3d677277445 100644 --- a/bench/proxygen/optimized/RendezvousHash.cpp.ll +++ b/bench/proxygen/optimized/RendezvousHash.cpp.ll @@ -794,29 +794,20 @@ if.then.i.i.i.i.i: ; preds = %_ZNSt6vectorImSaImE store i64 0, ptr %call5.i.i.i.i2.i.i8, align 8 %incdec.ptr.i.i.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i8, i64 8 %cmp.i.i.i.i.i.i.i = icmp eq i64 %sub.ptr.sub.i, 16 - br i1 %cmp.i.i.i.i.i.i.i, label %_ZNSt6vectorImSaImEED2Ev.exit.thread25, label %_ZNSt6vectorImSaImEED2Ev.exit - -_ZNSt6vectorImSaImEED2Ev.exit.thread25: ; preds = %if.then.i.i.i.i.i - %_M_finish.i.i.i.i27 = getelementptr inbounds i8, ptr %agg.result, i64 8 - %_M_end_of_storage.i.i.i.i28 = getelementptr inbounds i8, ptr %agg.result, i64 16 - store ptr %call5.i.i.i.i2.i.i8, ptr %agg.result, align 8 - store ptr %incdec.ptr.i.i.i.i.i, ptr %_M_finish.i.i.i.i27, align 8 - store ptr %add.ptr.i.i.i, ptr %_M_end_of_storage.i.i.i.i28, align 8 - br label %for.body.i.preheader + br i1 %cmp.i.i.i.i.i.i.i, label %for.body.i.preheader, label %_ZNSt6vectorImSaImEED2Ev.exit _ZNSt6vectorImSaImEED2Ev.exit: ; preds = %if.then.i.i.i.i.i %2 = add nsw i64 %mul.i.i.i.i.i.i, -8 tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %2, i1 false) + br label %for.body.i.preheader + +for.body.i.preheader: ; preds = %if.then.i.i.i.i.i, %_ZNSt6vectorImSaImEED2Ev.exit + %add.ptr.i.i.i.sink = phi ptr [ %add.ptr.i.i.i, %_ZNSt6vectorImSaImEED2Ev.exit ], [ %incdec.ptr.i.i.i.i.i, %if.then.i.i.i.i.i ] %_M_finish.i.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 8 %_M_end_of_storage.i.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 16 store ptr %call5.i.i.i.i2.i.i8, ptr %agg.result, align 8 - store ptr %add.ptr.i.i.i, ptr %_M_finish.i.i.i.i, align 8 + store ptr %add.ptr.i.i.i.sink, ptr %_M_finish.i.i.i.i, align 8 store ptr %add.ptr.i.i.i, ptr %_M_end_of_storage.i.i.i.i, align 8 - %cmp.i.not3.i = icmp eq ptr %0, %1 - br i1 %cmp.i.not3.i, label %nrvo.skipdtor, label %for.body.i.preheader - -for.body.i.preheader: ; preds = %_ZNSt6vectorImSaImEED2Ev.exit.thread25, %_ZNSt6vectorImSaImEED2Ev.exit - %3 = phi ptr [ %incdec.ptr.i.i.i.i.i, %_ZNSt6vectorImSaImEED2Ev.exit.thread25 ], [ %add.ptr.i.i.i, %_ZNSt6vectorImSaImEED2Ev.exit ] br label %for.body.i for.body.i: ; preds = %for.body.i.preheader, %for.body.i @@ -825,18 +816,18 @@ for.body.i: ; preds = %for.body.i.preheade %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 store i64 %indvars.iv.i, ptr %__first.sroa.0.04.i, align 8 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.04.i, i64 8 - %cmp.i.not.i = icmp eq ptr %incdec.ptr.i.i, %3 + %cmp.i.not.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i.sink br i1 %cmp.i.not.i, label %nrvo.skipdtor, label %for.body.i, !llvm.loop !19 if.end: ; preds = %entry %call17 = invoke noundef i64 @_ZNK8proxygen14RendezvousHash20getNthByWeightedHashEmmPSt6vectorImSaImEE(ptr noundef nonnull align 8 dereferenceable(32) %this, i64 noundef %key, i64 noundef %rank, ptr noundef nonnull %agg.result) to label %nrvo.skipdtor unwind label %ehcleanup -nrvo.skipdtor: ; preds = %for.body.i, %_ZNSt6vectorImSaImEED2Ev.exit.thread, %_ZNSt6vectorImSaImEED2Ev.exit, %if.end +nrvo.skipdtor: ; preds = %for.body.i, %_ZNSt6vectorImSaImEED2Ev.exit.thread, %if.end ret void ehcleanup: ; preds = %if.end - %4 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } cleanup %.pre = load ptr, ptr %agg.result, align 8 %tobool.not.i.i.i11 = icmp eq ptr %.pre, null @@ -847,7 +838,7 @@ if.then.i.i.i12: ; preds = %ehcleanup br label %_ZNSt6vectorImSaImEED2Ev.exit13 _ZNSt6vectorImSaImEED2Ev.exit13: ; preds = %ehcleanup, %if.then.i.i.i12 - resume { ptr, i32 } %4 + resume { ptr, i32 } %3 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable diff --git a/bench/quantlib/optimized/averagebmacoupon.ll b/bench/quantlib/optimized/averagebmacoupon.ll index 5c625bfe0a1..cc62e1bee4a 100644 --- a/bench/quantlib/optimized/averagebmacoupon.ll +++ b/bench/quantlib/optimized/averagebmacoupon.ll @@ -3377,25 +3377,19 @@ if.then.i.i.i.i.i: ; preds = %_ZNSt6vectorIdSaIdE store double 0.000000e+00, ptr %call5.i.i.i.i2.i.i5, align 8, !tbaa !129 %incdec.ptr.i.i.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i5, i64 8 %cmp.i.i.i.i.i.i.i = icmp eq i64 %sub.ptr.sub.i.i, 8 - br i1 %cmp.i.i.i.i.i.i.i, label %invoke.cont.thread30, label %invoke.cont - -invoke.cont.thread30: ; preds = %if.then.i.i.i.i.i - %_M_finish.i.i7.i32 = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 - store ptr %incdec.ptr.i.i.i.i.i, ptr %_M_finish.i.i7.i32, align 8, !tbaa !130 - br label %for.body.lr.ph + br i1 %cmp.i.i.i.i.i.i.i, label %for.body.lr.ph, label %invoke.cont invoke.cont: ; preds = %if.then.i.i.i.i.i %3 = add nsw i64 %sub.ptr.sub.i.i, -8 tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %3, i1 false), !tbaa !129 - %_M_finish.i.i7.i = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 - store ptr %add.ptr.i.i.i, ptr %_M_finish.i.i7.i, align 8, !tbaa !130 - %cmp21.not = icmp eq ptr %0, %1 - br i1 %cmp21.not, label %nrvo.skipdtor, label %for.body.lr.ph + br label %for.body.lr.ph -for.body.lr.ph: ; preds = %invoke.cont.thread30, %invoke.cont - %__first.addr.0.i.i.i.i.i35 = phi ptr [ %incdec.ptr.i.i.i.i.i, %invoke.cont.thread30 ], [ %add.ptr.i.i.i, %invoke.cont ] +for.body.lr.ph: ; preds = %if.then.i.i.i.i.i, %invoke.cont + %add.ptr.i.i.i.sink = phi ptr [ %add.ptr.i.i.i, %invoke.cont ], [ %incdec.ptr.i.i.i.i.i, %if.then.i.i.i.i.i ] + %_M_finish.i.i7.i = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 + store ptr %add.ptr.i.i.i.sink, ptr %_M_finish.i.i7.i, align 8, !tbaa !130 %sub.ptr.rhs.cast.i36 = ptrtoint ptr %call5.i.i.i.i2.i.i5 to i64 - %sub.ptr.lhs.cast.i = ptrtoint ptr %__first.addr.0.i.i.i.i.i35 to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i.i.i.sink to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i36 %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 %index_ = getelementptr inbounds nuw i8, ptr %this, i64 88 @@ -3459,7 +3453,7 @@ lpad3.loopexit.split-lp: ; preds = %if.then.i.i.i cleanup br label %eh.resume -nrvo.skipdtor: ; preds = %invoke.cont9, %invoke.cont.thread, %invoke.cont +nrvo.skipdtor: ; preds = %invoke.cont9, %invoke.cont.thread ret void eh.resume: ; preds = %lpad3.loopexit.split-lp, %lpad3.loopexit diff --git a/bench/quantlib/optimized/fdmmeshercomposite.ll b/bench/quantlib/optimized/fdmmeshercomposite.ll index fc90b2696ec..24d9afb0e60 100644 --- a/bench/quantlib/optimized/fdmmeshercomposite.ll +++ b/bench/quantlib/optimized/fdmmeshercomposite.ll @@ -426,39 +426,33 @@ if.then.i.i.i.i.i: ; preds = %_ZNSt6vectorImSaImE store i64 0, ptr %call5.i.i.i.i2.i.i7, align 8, !tbaa !21 %incdec.ptr.i.i.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i7, i64 8 %cmp.i.i.i.i.i.i.i = icmp eq i64 %sub.ptr.sub.i, 16 - br i1 %cmp.i.i.i.i.i.i.i, label %invoke.cont.thread33, label %invoke.cont - -invoke.cont.thread33: ; preds = %if.then.i.i.i.i.i - %_M_finish.i.i7.i34 = getelementptr inbounds nuw i8, ptr %dim, i64 8 - store ptr %incdec.ptr.i.i.i.i.i, ptr %_M_finish.i.i7.i34, align 8, !tbaa !23 - br label %for.body.preheader + br i1 %cmp.i.i.i.i.i.i.i, label %for.body.preheader, label %invoke.cont invoke.cont: ; preds = %if.then.i.i.i.i.i %3 = add nsw i64 %mul.i.i.i.i.i.i, -8 tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %3, i1 false), !tbaa !21 - %_M_finish.i.i7.i = getelementptr inbounds nuw i8, ptr %dim, i64 8 - store ptr %add.ptr.i.i.i, ptr %_M_finish.i.i7.i, align 8, !tbaa !23 - %cmp29.not = icmp eq ptr %0, %1 - br i1 %cmp29.not, label %for.cond.cleanup, label %for.body.preheader + br label %for.body.preheader -for.body.preheader: ; preds = %invoke.cont.thread33, %invoke.cont - %4 = phi ptr [ %incdec.ptr.i.i.i.i.i, %invoke.cont.thread33 ], [ %add.ptr.i.i.i, %invoke.cont ] - %sub.ptr.lhs.cast.i9 = ptrtoint ptr %4 to i64 +for.body.preheader: ; preds = %if.then.i.i.i.i.i, %invoke.cont + %add.ptr.i.i.i.sink = phi ptr [ %add.ptr.i.i.i, %invoke.cont ], [ %incdec.ptr.i.i.i.i.i, %if.then.i.i.i.i.i ] + %_M_finish.i.i7.i = getelementptr inbounds nuw i8, ptr %dim, i64 8 + store ptr %add.ptr.i.i.i.sink, ptr %_M_finish.i.i7.i, align 8, !tbaa !23 + %sub.ptr.lhs.cast.i9 = ptrtoint ptr %add.ptr.i.i.i.sink to i64 %sub.ptr.rhs.cast.i10 = ptrtoint ptr %call5.i.i.i.i2.i.i7 to i64 %sub.ptr.sub.i11 = sub i64 %sub.ptr.lhs.cast.i9, %sub.ptr.rhs.cast.i10 %sub.ptr.div.i12 = ashr exact i64 %sub.ptr.sub.i11, 3 br label %for.body -for.cond.cleanup: ; preds = %invoke.cont4, %invoke.cont.thread, %invoke.cont +for.cond.cleanup: ; preds = %invoke.cont4, %invoke.cont.thread invoke void @_ZN5boost11make_sharedIN8QuantLib17FdmLinearOpLayoutEJSt6vectorImSaImEEEEENS_6detail15sp_if_not_arrayIT_E4typeEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.boost::shared_ptr") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(24) %dim) to label %invoke.cont10 unwind label %ehcleanup for.body: ; preds = %for.body.preheader, %invoke.cont4 %i.030 = phi i64 [ %inc, %invoke.cont4 ], [ 0, %for.body.preheader ] - %5 = load ptr, ptr %meshers, align 8, !tbaa !10 - %add.ptr.i = getelementptr inbounds nuw %"class.boost::shared_ptr.0", ptr %5, i64 %i.030 - %6 = load ptr, ptr %add.ptr.i, align 8, !tbaa !3 - %cmp.not.i = icmp eq ptr %6, null + %4 = load ptr, ptr %meshers, align 8, !tbaa !10 + %add.ptr.i = getelementptr inbounds nuw %"class.boost::shared_ptr.0", ptr %4, i64 %i.030 + %5 = load ptr, ptr %add.ptr.i, align 8, !tbaa !3 + %cmp.not.i = icmp eq ptr %5, null br i1 %cmp.not.i, label %cond.false.i, label %invoke.cont4, !prof !24 cond.false.i: ; preds = %for.body @@ -470,13 +464,13 @@ cond.false.i: ; preds = %for.body br label %invoke.cont4 invoke.cont4: ; preds = %.noexc13, %for.body - %7 = phi ptr [ %6, %for.body ], [ %.pre.i, %.noexc13 ] - %locations_.i = getelementptr inbounds nuw i8, ptr %7, i64 8 - %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %7, i64 16 - %8 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !25 - %9 = load ptr, ptr %locations_.i, align 8, !tbaa !27 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %8 to i64 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %9 to i64 + %6 = phi ptr [ %5, %for.body ], [ %.pre.i, %.noexc13 ] + %locations_.i = getelementptr inbounds nuw i8, ptr %6, i64 8 + %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %6, i64 16 + %7 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !25 + %8 = load ptr, ptr %locations_.i, align 8, !tbaa !27 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %7 to i64 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %8 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i %sub.ptr.div.i.i = ashr exact i64 %sub.ptr.sub.i.i, 3 %add.ptr.i14 = getelementptr inbounds nuw i64, ptr %call5.i.i.i.i2.i.i7, i64 %i.030 @@ -486,22 +480,22 @@ invoke.cont4: ; preds = %.noexc13, %for.body br i1 %cmp, label %for.body, label %for.cond.cleanup, !llvm.loop !28 ehcleanup.thread: ; preds = %cond.false.i - %10 = landingpad { ptr, i32 } + %9 = landingpad { ptr, i32 } cleanup br label %if.then.i.i.i19 invoke.cont10: ; preds = %for.cond.cleanup - %11 = load ptr, ptr %dim, align 8, !tbaa !18 - %tobool.not.i.i.i = icmp eq ptr %11, null + %10 = load ptr, ptr %dim, align 8, !tbaa !18 + %tobool.not.i.i.i = icmp eq ptr %10, null br i1 %tobool.not.i.i.i, label %_ZNSt6vectorImSaImEED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %invoke.cont10 %_M_end_of_storage.i.i = getelementptr inbounds nuw i8, ptr %dim, i64 16 - %12 = load ptr, ptr %_M_end_of_storage.i.i, align 8, !tbaa !20 - %sub.ptr.lhs.cast.i.i15 = ptrtoint ptr %12 to i64 - %sub.ptr.rhs.cast.i.i16 = ptrtoint ptr %11 to i64 + %11 = load ptr, ptr %_M_end_of_storage.i.i, align 8, !tbaa !20 + %sub.ptr.lhs.cast.i.i15 = ptrtoint ptr %11 to i64 + %sub.ptr.rhs.cast.i.i16 = ptrtoint ptr %10 to i64 %sub.ptr.sub.i.i17 = sub i64 %sub.ptr.lhs.cast.i.i15, %sub.ptr.rhs.cast.i.i16 - call void @_ZdlPvm(ptr noundef nonnull %11, i64 noundef %sub.ptr.sub.i.i17) #23 + call void @_ZdlPvm(ptr noundef nonnull %10, i64 noundef %sub.ptr.sub.i.i17) #23 br label %_ZNSt6vectorImSaImEED2Ev.exit _ZNSt6vectorImSaImEED2Ev.exit: ; preds = %invoke.cont10, %if.then.i.i.i @@ -509,25 +503,25 @@ _ZNSt6vectorImSaImEED2Ev.exit: ; preds = %invoke.cont10, %if. ret void ehcleanup: ; preds = %for.cond.cleanup - %13 = landingpad { ptr, i32 } + %12 = landingpad { ptr, i32 } cleanup %.pre = load ptr, ptr %dim, align 8, !tbaa !18 %tobool.not.i.i.i18 = icmp eq ptr %.pre, null br i1 %tobool.not.i.i.i18, label %ehcleanup11, label %if.then.i.i.i19 if.then.i.i.i19: ; preds = %ehcleanup.thread, %ehcleanup - %.pn38 = phi { ptr, i32 } [ %10, %ehcleanup.thread ], [ %13, %ehcleanup ] - %14 = phi ptr [ %call5.i.i.i.i2.i.i7, %ehcleanup.thread ], [ %.pre, %ehcleanup ] + %.pn38 = phi { ptr, i32 } [ %9, %ehcleanup.thread ], [ %12, %ehcleanup ] + %13 = phi ptr [ %call5.i.i.i.i2.i.i7, %ehcleanup.thread ], [ %.pre, %ehcleanup ] %_M_end_of_storage.i.i20 = getelementptr inbounds nuw i8, ptr %dim, i64 16 - %15 = load ptr, ptr %_M_end_of_storage.i.i20, align 8, !tbaa !20 - %sub.ptr.lhs.cast.i.i21 = ptrtoint ptr %15 to i64 - %sub.ptr.rhs.cast.i.i22 = ptrtoint ptr %14 to i64 + %14 = load ptr, ptr %_M_end_of_storage.i.i20, align 8, !tbaa !20 + %sub.ptr.lhs.cast.i.i21 = ptrtoint ptr %14 to i64 + %sub.ptr.rhs.cast.i.i22 = ptrtoint ptr %13 to i64 %sub.ptr.sub.i.i23 = sub i64 %sub.ptr.lhs.cast.i.i21, %sub.ptr.rhs.cast.i.i22 - call void @_ZdlPvm(ptr noundef nonnull %14, i64 noundef %sub.ptr.sub.i.i23) #23 + call void @_ZdlPvm(ptr noundef nonnull %13, i64 noundef %sub.ptr.sub.i.i23) #23 br label %ehcleanup11 ehcleanup11: ; preds = %if.then.i.i.i19, %ehcleanup - %.pn39 = phi { ptr, i32 } [ %.pn38, %if.then.i.i.i19 ], [ %13, %ehcleanup ] + %.pn39 = phi { ptr, i32 } [ %.pn38, %if.then.i.i.i19 ], [ %12, %ehcleanup ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %dim) #20 resume { ptr, i32 } %.pn39 } diff --git a/bench/quantlib/optimized/g2.ll b/bench/quantlib/optimized/g2.ll index f129969b51b..a15d3178488 100644 --- a/bench/quantlib/optimized/g2.ll +++ b/bench/quantlib/optimized/g2.ll @@ -7378,25 +7378,19 @@ call5.i.i.i.i2.i.i.noexc: ; preds = %if.then.i.i.i.i.i store double 0.000000e+00, ptr %call5.i.i.i.i2.i.i50, align 8, !tbaa !90 %incdec.ptr.i.i.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i50, i64 8 %cmp.i.i.i.i.i.i.i = icmp eq i64 %sub.ptr.sub.i, 8 - br i1 %cmp.i.i.i.i.i.i.i, label %invoke.cont52.thread222, label %invoke.cont52 - -invoke.cont52.thread222: ; preds = %call5.i.i.i.i2.i.i.noexc - %sub.ptr.rhs.cast.i53227 = ptrtoint ptr %call5.i.i.i.i2.i.i50 to i64 - br label %for.body.preheader + br i1 %cmp.i.i.i.i.i.i.i, label %for.body.preheader, label %invoke.cont52 invoke.cont52: ; preds = %call5.i.i.i.i2.i.i.noexc %33 = add nsw i64 %sub.ptr.sub.i, -8 call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %33, i1 false), !tbaa !90 - %sub.ptr.rhs.cast.i53 = ptrtoint ptr %call5.i.i.i.i2.i.i50 to i64 %sub.ptr.div.i55 = lshr exact i64 %sub.ptr.sub.i, 3 - %cmp56197.not = icmp eq i64 %sub.ptr.sub.i, 0 - br i1 %cmp56197.not, label %for.cond.cleanup, label %for.body.preheader - -for.body.preheader: ; preds = %invoke.cont52.thread222, %invoke.cont52 - %sub.ptr.div.i55237 = phi i64 [ 1, %invoke.cont52.thread222 ], [ %sub.ptr.div.i55, %invoke.cont52 ] - %sub.ptr.sub.i54236 = phi i64 [ 8, %invoke.cont52.thread222 ], [ %sub.ptr.sub.i, %invoke.cont52 ] - %sub.ptr.rhs.cast.i53235 = phi i64 [ %sub.ptr.rhs.cast.i53227, %invoke.cont52.thread222 ], [ %sub.ptr.rhs.cast.i53, %invoke.cont52 ] - %__first.addr.0.i.i.i.i.i234 = phi ptr [ %incdec.ptr.i.i.i.i.i, %invoke.cont52.thread222 ], [ %add.ptr.i.i.i, %invoke.cont52 ] + br label %for.body.preheader + +for.body.preheader: ; preds = %call5.i.i.i.i2.i.i.noexc, %invoke.cont52 + %sub.ptr.div.i55237 = phi i64 [ %sub.ptr.div.i55, %invoke.cont52 ], [ 1, %call5.i.i.i.i2.i.i.noexc ] + %sub.ptr.sub.i54236 = phi i64 [ %sub.ptr.sub.i, %invoke.cont52 ], [ 8, %call5.i.i.i.i2.i.i.noexc ] + %__first.addr.0.i.i.i.i.i234 = phi ptr [ %add.ptr.i.i.i, %invoke.cont52 ], [ %incdec.ptr.i.i.i.i.i, %call5.i.i.i.i2.i.i.noexc ] + %sub.ptr.rhs.cast.i53235 = ptrtoint ptr %call5.i.i.i.i2.i.i50 to i64 %umax = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i55237, i64 1) br label %for.body @@ -7404,13 +7398,13 @@ for.cond.cleanup.loopexit: ; preds = %invoke.cont65 %34 = icmp samesign ugt i64 %sub.ptr.div.i55237, 1152921504606846975 br label %for.cond.cleanup -for.cond.cleanup: ; preds = %for.cond.cleanup.loopexit, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i, %invoke.cont52 - %sub.ptr.div.i55221 = phi i1 [ false, %invoke.cont52 ], [ false, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ], [ %34, %for.cond.cleanup.loopexit ] - %sub.ptr.sub.i54220 = phi i64 [ 0, %invoke.cont52 ], [ 0, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ], [ %sub.ptr.sub.i54236, %for.cond.cleanup.loopexit ] - %sub.ptr.rhs.cast.i53215 = phi i64 [ %sub.ptr.rhs.cast.i53, %invoke.cont52 ], [ 0, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ], [ %sub.ptr.rhs.cast.i53235, %for.cond.cleanup.loopexit ] - %__first.addr.0.i.i.i.i.i214 = phi ptr [ %add.ptr.i.i.i, %invoke.cont52 ], [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ], [ %__first.addr.0.i.i.i.i.i234, %for.cond.cleanup.loopexit ] - %fixedPayTimes.sroa.0.0212 = phi ptr [ %call5.i.i.i.i2.i.i50, %invoke.cont52 ], [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ], [ %call5.i.i.i.i2.i.i50, %for.cond.cleanup.loopexit ] - %fixedPayTimes.sroa.16.0210 = phi ptr [ %add.ptr.i.i.i, %invoke.cont52 ], [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ], [ %add.ptr.i.i.i, %for.cond.cleanup.loopexit ] +for.cond.cleanup: ; preds = %for.cond.cleanup.loopexit, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i + %sub.ptr.div.i55221 = phi i1 [ false, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ], [ %34, %for.cond.cleanup.loopexit ] + %sub.ptr.sub.i54220 = phi i64 [ 0, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ], [ %sub.ptr.sub.i54236, %for.cond.cleanup.loopexit ] + %sub.ptr.rhs.cast.i53215 = phi i64 [ 0, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ], [ %sub.ptr.rhs.cast.i53235, %for.cond.cleanup.loopexit ] + %__first.addr.0.i.i.i.i.i214 = phi ptr [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ], [ %__first.addr.0.i.i.i.i.i234, %for.cond.cleanup.loopexit ] + %fixedPayTimes.sroa.0.0212 = phi ptr [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ], [ %call5.i.i.i.i2.i.i50, %for.cond.cleanup.loopexit ] + %fixedPayTimes.sroa.16.0210 = phi ptr [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ], [ %add.ptr.i.i.i, %for.cond.cleanup.loopexit ] call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %function) #27 %a_.i = getelementptr inbounds nuw i8, ptr %this, i64 112 %35 = load ptr, ptr %a_.i, align 8, !tbaa !45 diff --git a/bench/quantlib/optimized/proxygreekengine.ll b/bench/quantlib/optimized/proxygreekengine.ll index 023581f0100..f919e32f719 100644 --- a/bench/quantlib/optimized/proxygreekengine.ll +++ b/bench/quantlib/optimized/proxygreekengine.ll @@ -1599,19 +1599,14 @@ _ZNSt6vectorIS_IS_IdSaIdEESaIS1_EESaIS3_EE6resizeEm.exit: ; preds = %_ZNKSt6vect store ptr %add.ptr37.i, ptr %_M_finish.i.i, align 8, !tbaa !16 store ptr %add.ptr37.i, ptr %_M_end_of_storage.i, align 8, !tbaa !17 %sub.ptr.rhs.cast.i39 = ptrtoint ptr %call5.i.i.i.i236 to i64 - %cmp285.not = icmp eq ptr %3, %4 - br i1 %cmp285.not, label %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i43, label %for.body.preheader - -for.body.preheader: ; preds = %_ZNSt6vectorIS_IS_IdSaIdEESaIS1_EESaIS3_EE6resizeEm.exit %sub.ptr.div.i41 = sdiv exact i64 %sub.ptr.sub.i, 24 %umax = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i41, i64 1) br label %for.body -_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i43: ; preds = %for.cond.cleanup19, %invoke.cont, %_ZNSt6vectorIS_IS_IdSaIdEESaIS1_EESaIS3_EE6resizeEm.exit - %cmp285.not330 = phi i1 [ true, %_ZNSt6vectorIS_IS_IdSaIdEESaIS1_EESaIS3_EE6resizeEm.exit ], [ true, %invoke.cont ], [ false, %for.cond.cleanup19 ] - %sub.ptr.rhs.cast.i39329 = phi i64 [ %sub.ptr.rhs.cast.i39, %_ZNSt6vectorIS_IS_IdSaIdEESaIS1_EESaIS3_EE6resizeEm.exit ], [ 0, %invoke.cont ], [ %sub.ptr.rhs.cast.i39, %for.cond.cleanup19 ] - %5 = phi ptr [ %add.ptr37.i, %_ZNSt6vectorIS_IS_IdSaIdEESaIS1_EESaIS3_EE6resizeEm.exit ], [ null, %invoke.cont ], [ %add.ptr37.i, %for.cond.cleanup19 ] - %6 = phi ptr [ %call5.i.i.i.i236, %_ZNSt6vectorIS_IS_IdSaIdEESaIS1_EESaIS3_EE6resizeEm.exit ], [ null, %invoke.cont ], [ %call5.i.i.i.i236, %for.cond.cleanup19 ] +_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i43: ; preds = %for.cond.cleanup19, %invoke.cont + %sub.ptr.rhs.cast.i39329 = phi i64 [ 0, %invoke.cont ], [ %sub.ptr.rhs.cast.i39, %for.cond.cleanup19 ] + %5 = phi ptr [ null, %invoke.cont ], [ %add.ptr37.i, %for.cond.cleanup19 ] + %6 = phi ptr [ null, %invoke.cont ], [ %call5.i.i.i.i236, %for.cond.cleanup19 ] br i1 %cmp.not.i.i.i.i, label %invoke.cont29, label %if.then.i.i.i.i.i45 if.then.i.i.i.i.i45: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i43 @@ -1636,8 +1631,8 @@ lpad4: ; preds = %_ZNKSt6vectorIS_IS_ cleanup br label %ehcleanup99 -for.body: ; preds = %for.body.preheader, %for.cond.cleanup19 - %i.0286 = phi i64 [ %inc, %for.cond.cleanup19 ], [ 0, %for.body.preheader ] +for.body: ; preds = %_ZNSt6vectorIS_IS_IdSaIdEESaIS1_EESaIS3_EE6resizeEm.exit, %for.cond.cleanup19 + %i.0286 = phi i64 [ %inc, %for.cond.cleanup19 ], [ 0, %_ZNSt6vectorIS_IS_IdSaIdEESaIS1_EESaIS3_EE6resizeEm.exit ] %add.ptr.i60 = getelementptr inbounds nuw %"class.std::vector.43", ptr %call5.i.i.i.i236, i64 %i.0286 %9 = load ptr, ptr %constrainedEvolvers_, align 8, !tbaa !10 %add.ptr.i61 = getelementptr inbounds nuw %"class.std::vector.37", ptr %9, i64 %i.0286 @@ -1871,7 +1866,7 @@ if.then.i.i.i: ; preds = %for.cond.cleanup35 br label %_ZNSt6vectorIdSaIdEED2Ev.exit _ZNSt6vectorIdSaIdEED2Ev.exit: ; preds = %for.cond.cleanup35, %if.then.i.i.i - br i1 %cmp285.not330, label %invoke.cont.i, label %for.body.i.i.i.i + br i1 %cmp.i.not, label %invoke.cont.i, label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %_ZNSt6vectorIdSaIdEED2Ev.exit, %_ZSt8_DestroyISt6vectorIS0_IdSaIdEESaIS2_EEEvPT_.exit.i.i.i.i %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyISt6vectorIS0_IdSaIdEESaIS2_EEEvPT_.exit.i.i.i.i ], [ %6, %_ZNSt6vectorIdSaIdEED2Ev.exit ] diff --git a/bench/quantlib/optimized/sensitivityanalysis.ll b/bench/quantlib/optimized/sensitivityanalysis.ll index 376859cc2e8..6f734375fa9 100644 --- a/bench/quantlib/optimized/sensitivityanalysis.ll +++ b/bench/quantlib/optimized/sensitivityanalysis.ll @@ -1302,7 +1302,7 @@ for.body.preheader: ; preds = %for.body.i.i.i.i.i. br label %for.body for.body112.preheader: ; preds = %for.inc - %umax312 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) + %umax313 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) br label %for.body112 for.body: ; preds = %for.body.preheader, %for.inc @@ -1459,8 +1459,8 @@ lpad114: ; preds = %if.then.i, %cond.fa for.inc133: ; preds = %invoke.cont127, %if.then.i, %invoke.cont121 %inc134 = add nuw i64 %i108.0305, 1 - %exitcond313.not = icmp eq i64 %inc134, %umax312 - br i1 %exitcond313.not, label %for.cond.cleanup111, label %for.body112, !llvm.loop !56 + %exitcond314.not = icmp eq i64 %inc134, %umax313 + br i1 %exitcond314.not, label %for.cond.cleanup111, label %for.body112, !llvm.loop !56 invoke.cont138: ; preds = %for.cond.cleanup111 switch i32 %type, label %do.body188 [ @@ -1469,7 +1469,7 @@ invoke.cont138: ; preds = %for.cond.cleanup111 ] for.body150.preheader: ; preds = %invoke.cont138 - %umax314 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) + %umax315 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) br label %for.body150 lpad137: ; preds = %for.cond.cleanup111 @@ -1563,8 +1563,8 @@ lpad152: ; preds = %if.then.i155, %cond for.inc172: ; preds = %invoke.cont165, %if.then.i155, %invoke.cont159 %inc173 = add nuw i64 %i146.0307, 1 - %exitcond315.not = icmp eq i64 %inc173, %umax314 - br i1 %exitcond315.not, label %for.cond.cleanup149, label %for.body150, !llvm.loop !57 + %exitcond316.not = icmp eq i64 %inc173, %umax315 + br i1 %exitcond316.not, label %for.cond.cleanup149, label %for.body150, !llvm.loop !57 invoke.cont177: ; preds = %for.cond.cleanup149 %sub179 = fsub double %call139, %call178 @@ -1760,12 +1760,11 @@ ehcleanup229: ; preds = %ehcleanup228, %lpad for.body236.preheader: ; preds = %invoke.cont142, %invoke.cont177 %retval.sroa.0.1 = phi double [ %div180, %invoke.cont177 ], [ %div, %invoke.cont142 ] %retval.sroa.4.1 = phi double [ %div185, %invoke.cont177 ], [ 0x47EFFFFFE0000000, %invoke.cont142 ] - %umax316 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) + %umax317 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) br label %for.body236 if.then.i.i.i: ; preds = %for.inc257 - %add.ptr.i.i.i.idx = ashr exact i64 %sub.ptr.sub.i, 1 - tail call void @_ZdlPvm(ptr noundef nonnull %call5.i.i.i.i2.i.i115, i64 noundef %add.ptr.i.i.i.idx) #23 + tail call void @_ZdlPvm(ptr noundef nonnull %call5.i.i.i.i2.i.i115, i64 noundef %mul.i.i.i.i.i.i) #23 br label %cleanup for.body236: ; preds = %for.body236.preheader, %for.inc257 @@ -1844,14 +1843,14 @@ lpad238: ; preds = %if.then.i205, %cond for.inc257: ; preds = %invoke.cont251, %if.then.i205, %invoke.cont245 %inc258 = add nuw i64 %i232.0309, 1 - %exitcond317.not = icmp eq i64 %inc258, %umax316 - br i1 %exitcond317.not, label %if.then.i.i.i, label %for.body236, !llvm.loop !58 + %exitcond318.not = icmp eq i64 %inc258, %umax317 + br i1 %exitcond318.not, label %if.then.i.i.i, label %for.body236, !llvm.loop !58 invoke.cont270.preheader: ; preds = %lpad114, %lpad238, %ehcleanup229, %lpad176, %lpad152, %lpad137 %.pn58 = phi { ptr, i32 } [ %64, %lpad114 ], [ %.pn57.pn.pn.pn.pn, %ehcleanup229 ], [ %75, %lpad152 ], [ %109, %lpad238 ], [ %77, %lpad176 ], [ %65, %lpad137 ] %exn.slot.12 = extractvalue { ptr, i32 } %.pn58, 0 %110 = call ptr @__cxa_begin_catch(ptr %exn.slot.12) #20 - %umax318 = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) + %umax319 = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) br label %invoke.cont270 for.cond.cleanup265: ; preds = %for.inc285 @@ -1909,8 +1908,8 @@ lpad276: ; preds = %if.then.i223, %cond for.inc285: ; preds = %invoke.cont279, %if.then.i223, %invoke.cont270 %inc286 = add nuw i64 %i262.0311, 1 - %exitcond319.not = icmp eq i64 %inc286, %umax318 - br i1 %exitcond319.not, label %for.cond.cleanup265, label %invoke.cont270, !llvm.loop !59 + %exitcond320.not = icmp eq i64 %inc286, %umax319 + br i1 %exitcond320.not, label %for.cond.cleanup265, label %invoke.cont270, !llvm.loop !59 lpad289: ; preds = %for.cond.cleanup265 %118 = landingpad { ptr, i32 } @@ -1924,8 +1923,7 @@ ehcleanup290: ; preds = %lpad276, %lpad289 if.then.i.i.i231: ; preds = %lpad88, %ehcleanup290 %.pn62 = phi { ptr, i32 } [ %54, %lpad88 ], [ %.pn59.pn, %ehcleanup290 ] - %add.ptr.i.i.i.idx320 = ashr exact i64 %sub.ptr.sub.i, 1 - call void @_ZdlPvm(ptr noundef nonnull %call5.i.i.i.i2.i.i115, i64 noundef %add.ptr.i.i.i.idx320) #23 + call void @_ZdlPvm(ptr noundef nonnull %call5.i.i.i.i2.i.i115, i64 noundef %mul.i.i.i.i.i.i) #23 br label %eh.resume cleanup: ; preds = %if.then.i.i.i, %do.end64 @@ -3452,7 +3450,7 @@ if.then.i.i.i.i.i: ; preds = %invoke.cont138 br label %for.body149.preheader for.body149.preheader: ; preds = %invoke.cont138, %if.then.i.i.i.i.i - %umax482 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) + %umax483 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) br label %for.body149 for.body149: ; preds = %for.body149.preheader, %for.inc165 @@ -3503,8 +3501,8 @@ _ZNK5boost10shared_ptrIN8QuantLib5QuoteEEptEv.exit222: ; preds = %if.then156, %c for.inc165: ; preds = %_ZNK5boost10shared_ptrIN8QuantLib5QuoteEEptEv.exit, %_ZNK5boost10shared_ptrIN8QuantLib5QuoteEEptEv.exit222 %inc166 = add nuw i64 %j145.0475, 1 - %exitcond483.not = icmp eq i64 %inc166, %umax482 - br i1 %exitcond483.not, label %if.end168, label %for.body149, !llvm.loop !68 + %exitcond484.not = icmp eq i64 %inc166, %umax483 + br i1 %exitcond484.not, label %if.end168, label %for.body149, !llvm.loop !68 if.end168: ; preds = %for.inc165, %do.body84 switch i32 %type, label %do.body324 [ @@ -3548,8 +3546,8 @@ if.then.i231: ; preds = %invoke.cont172 to label %invoke.cont190.preheader unwind label %lpad169 invoke.cont190.preheader: ; preds = %invoke.cont172, %if.then.i231 - %umax488 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) - %.pre490 = load ptr, ptr %refVals, align 8, !tbaa !31 + %umax489 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) + %.pre491 = load ptr, ptr %refVals, align 8, !tbaa !31 br label %invoke.cont190 lpad169: ; preds = %if.then.i377, %cond.false.i370, %if.then.i253, %cond.false.i246, %if.then.i231, %cond.false.i225, %sw.epilog, %sw.bb219, %sw.bb @@ -3558,7 +3556,7 @@ lpad169: ; preds = %if.then.i377, %cond br label %catch invoke.cont190: ; preds = %invoke.cont190.preheader, %for.inc215 - %95 = phi ptr [ %105, %for.inc215 ], [ %.pre490, %invoke.cont190.preheader ] + %95 = phi ptr [ %105, %for.inc215 ], [ %.pre491, %invoke.cont190.preheader ] %j176.0481 = phi i64 [ %inc216, %for.inc215 ], [ 0, %invoke.cont190.preheader ] %96 = load ptr, ptr %gammaVector, align 8, !tbaa !31 %add.ptr.i234 = getelementptr inbounds nuw double, ptr %96, i64 %j176.0481 @@ -3615,8 +3613,8 @@ for.inc215: ; preds = %invoke.cont190, %in %add.ptr.i243 = getelementptr inbounds nuw double, ptr %106, i64 %j176.0481 store double %div.sink, ptr %add.ptr.i243, align 8, !tbaa !22 %inc216 = add nuw i64 %j176.0481, 1 - %exitcond489.not = icmp eq i64 %inc216, %umax488 - br i1 %exitcond489.not, label %sw.epilog, label %invoke.cont190, !llvm.loop !69 + %exitcond490.not = icmp eq i64 %inc216, %umax489 + br i1 %exitcond490.not, label %sw.epilog, label %invoke.cont190, !llvm.loop !69 sw.bb219: ; preds = %if.end168 %call221 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK8QuantLib6HandleINS_11SimpleQuoteEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %quote) @@ -3681,7 +3679,7 @@ if.end.i.i.i.i.i.i.i267: ; preds = %call5.i.i.i.i2.i.i. br label %invoke.cont240.preheader invoke.cont240.preheader: ; preds = %call5.i.i.i.i2.i.i.noexc272, %if.end.i.i.i.i.i.i.i267 - %umax484 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) + %umax485 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) br label %invoke.cont240 for.cond.cleanup235: ; preds = %for.inc257 @@ -3740,8 +3738,8 @@ lpad246: ; preds = %cond.false.i277, %i for.inc257: ; preds = %invoke.cont240, %invoke.cont253 %inc258 = add nuw i64 %j232.0477, 1 - %exitcond485.not = icmp eq i64 %inc258, %umax484 - br i1 %exitcond485.not, label %for.cond.cleanup235, label %invoke.cont240, !llvm.loop !70 + %exitcond486.not = icmp eq i64 %inc258, %umax485 + br i1 %exitcond486.not, label %for.cond.cleanup235, label %invoke.cont240, !llvm.loop !70 invoke.cont262: ; preds = %for.cond.cleanup235 %119 = load ptr, ptr %call263, align 8, !tbaa !50 @@ -3777,13 +3775,12 @@ if.then.i290: ; preds = %invoke.cont264 invoke.cont277.lr.ph: ; preds = %invoke.cont264, %if.then.i290 %mul = fmul double %shift, 2.000000e+00 %mul300 = fmul double %shift, %shift - %umax486 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) + %umax487 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) %.pre = load ptr, ptr %refVals, align 8, !tbaa !31 br label %invoke.cont277 if.then.i.i.i298: ; preds = %for.inc318 - %add.ptr.i.i.i265.idx491 = ashr exact i64 %sub.ptr.sub.i, 1 - tail call void @_ZdlPvm(ptr noundef nonnull %call5.i.i.i.i2.i.i273, i64 noundef %add.ptr.i.i.i265.idx491) #23 + tail call void @_ZdlPvm(ptr noundef nonnull %call5.i.i.i.i2.i.i273, i64 noundef %mul.i.i.i.i.i.i264) #23 br label %sw.epilog lpad261: ; preds = %if.then.i290, %cond.false.i283, %for.cond.cleanup235 @@ -3861,13 +3858,12 @@ for.inc318: ; preds = %invoke.cont290, %in %add.ptr.i315 = getelementptr inbounds nuw double, ptr %138, i64 %j269.0479 store double %div301.sink, ptr %add.ptr.i315, align 8, !tbaa !22 %inc319 = add nuw i64 %j269.0479, 1 - %exitcond487.not = icmp eq i64 %inc319, %umax486 - br i1 %exitcond487.not, label %if.then.i.i.i298, label %invoke.cont277, !llvm.loop !71 + %exitcond488.not = icmp eq i64 %inc319, %umax487 + br i1 %exitcond488.not, label %if.then.i.i.i298, label %invoke.cont277, !llvm.loop !71 if.then.i.i.i319: ; preds = %lpad261, %lpad246, %lpad283 %.pn92.pn = phi { ptr, i32 } [ %122, %lpad261 ], [ %118, %lpad246 ], [ %135, %lpad283 ] - %add.ptr.i.i.i265.idx = ashr exact i64 %sub.ptr.sub.i, 1 - tail call void @_ZdlPvm(ptr noundef nonnull %call5.i.i.i.i2.i.i273, i64 noundef %add.ptr.i.i.i265.idx) #23 + tail call void @_ZdlPvm(ptr noundef nonnull %call5.i.i.i.i2.i.i273, i64 noundef %mul.i.i.i.i.i.i264) #23 br label %catch do.body324: ; preds = %if.end168 @@ -4524,9 +4520,9 @@ if.end.i.i.i.i.i.i.i: ; preds = %do.end %24 = and i64 %23, -8 tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %call5.i.i.i.i2.i.i39, i8 0, i64 %24, i1 false), !tbaa !22 %call5.i.i.i.i2.i.i57 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i) #24 - to label %_ZNSt6vectorIdSaIdEED2Ev.exit65 unwind label %_ZNSt6vectorIdSaIdEED2Ev.exit74 + to label %call5.i.i.i.i2.i.i.noexc56 unwind label %_ZNSt6vectorIdSaIdEED2Ev.exit74 -_ZNSt6vectorIdSaIdEED2Ev.exit65: ; preds = %if.end.i.i.i.i.i.i.i +call5.i.i.i.i2.i.i.noexc56: ; preds = %if.end.i.i.i.i.i.i.i %add.ptr.i.i.i = getelementptr inbounds nuw double, ptr %call5.i.i.i.i2.i.i39, i64 %sub.ptr.div.i tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %call5.i.i.i.i2.i.i57, i8 0, i64 %24, i1 false), !tbaa !22 %add.ptr.i.i.i45 = getelementptr inbounds nuw double, ptr %call5.i.i.i.i2.i.i57, i64 %sub.ptr.div.i @@ -4553,7 +4549,7 @@ _ZNSt6vectorIdSaIdEED2Ev.exit74: ; preds = %if.end.i.i.i.i.i.i. tail call void @_ZdlPvm(ptr noundef nonnull %call5.i.i.i.i2.i.i39, i64 noundef %mul.i.i.i.i.i.i) #23 br label %eh.resume -if.end50: ; preds = %_ZNSt6vectorIdSaIdEED2Ev.exit65 +if.end50: ; preds = %call5.i.i.i.i2.i.i.noexc56 %call53 = invoke noundef double @_ZN8QuantLib12aggregateNPVERKSt6vectorIN5boost10shared_ptrINS_10InstrumentEEESaIS4_EERKS0_IdSaIdEE(ptr noundef nonnull align 8 dereferenceable(24) %instr, ptr noundef nonnull align 8 dereferenceable(24) %quant) to label %for.body.preheader unwind label %lpad51 @@ -4594,7 +4590,7 @@ ehcleanup69: ; preds = %lpad58, %lpad51 tail call void @_ZNSt4pairISt6vectorIdSaIdEES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %agg.result) #20 br label %eh.resume -nrvo.skipdtor: ; preds = %invoke.cont59, %_ZNSt6vectorIdSaIdEED2Ev.exit65 +nrvo.skipdtor: ; preds = %invoke.cont59, %call5.i.i.i.i2.i.i.noexc56 ret void eh.resume: ; preds = %_ZNSt6vectorIdSaIdEED2Ev.exit74, %ehcleanup69, %ehcleanup23 @@ -5461,7 +5457,7 @@ do.end: ; preds = %entry %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 24 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %first) #20 %cmp.i.i52 = icmp ugt i64 %sub.ptr.div.i, 384307168202282325 - br i1 %cmp.i.i52, label %if.then.i.i53, label %for.body.preheader.i.i.i.i.i + br i1 %cmp.i.i52, label %if.then.i.i53, label %_ZNSt6vectorIS_IdSaIdEESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i if.then.i.i53: ; preds = %do.end invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.22) #22 @@ -5470,11 +5466,11 @@ if.then.i.i53: ; preds = %do.end .noexc: ; preds = %if.then.i.i53 unreachable -for.body.preheader.i.i.i.i.i: ; preds = %do.end +_ZNSt6vectorIS_IdSaIdEESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i: ; preds = %do.end %call5.i.i.i.i2.i.i54 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i) #24 to label %for.body.preheader.i.i.i.i.i58 unwind label %lpad27 -for.body.preheader.i.i.i.i.i58: ; preds = %for.body.preheader.i.i.i.i.i +for.body.preheader.i.i.i.i.i58: ; preds = %_ZNSt6vectorIS_IdSaIdEESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i store ptr %call5.i.i.i.i2.i.i54, ptr %first, align 8, !tbaa !77 %add.ptr.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i54, i64 %sub.ptr.sub.i tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %call5.i.i.i.i2.i.i54, i8 0, i64 %sub.ptr.sub.i, i1 false) @@ -5488,8 +5484,8 @@ for.body.preheader.i.i.i.i.i58: ; preds = %for.body.preheader. for.body.lr.ph: ; preds = %for.body.preheader.i.i.i.i.i58 store ptr %call5.i.i.i.i2.i.i68, ptr %second, align 8, !tbaa !77 - tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %call5.i.i.i.i2.i.i68, i8 0, i64 %sub.ptr.sub.i, i1 false) %add.ptr.i.i.i59 = getelementptr i8, ptr %call5.i.i.i.i2.i.i68, i64 %sub.ptr.sub.i + tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %call5.i.i.i.i2.i.i68, i8 0, i64 %sub.ptr.sub.i, i1 false) %_M_finish.i.i7.i63 = getelementptr inbounds nuw i8, ptr %second, i64 8 %24 = getelementptr inbounds nuw i8, ptr %second, i64 16 store ptr %add.ptr.i.i.i59, ptr %24, align 8, !tbaa !82 @@ -5501,7 +5497,7 @@ for.cond.cleanup: ; preds = %_ZNSt6vectorIdSaIdE invoke void @_ZNSt4pairISt6vectorIS0_IdSaIdEESaIS2_EES4_EC2IRS4_S7_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS9_SA_EEEbE4typeELb1EEEOS9_OSA_(ptr noundef nonnull align 8 dereferenceable(48) %agg.result, ptr noundef nonnull align 8 dereferenceable(24) %first, ptr noundef nonnull align 8 dereferenceable(24) %second) to label %invoke.cont63 unwind label %lpad62 -lpad27: ; preds = %for.body.preheader.i.i.i.i.i, %if.then.i.i53 +lpad27: ; preds = %_ZNSt6vectorIS_IdSaIdEESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i, %if.then.i.i53 %25 = landingpad { ptr, i32 } cleanup br label %ehcleanup118 diff --git a/bench/rocksdb/optimized/range_tombstone_fragmenter.cc.ll b/bench/rocksdb/optimized/range_tombstone_fragmenter.cc.ll index ef6e81ed6a8..d90e679132d 100644 --- a/bench/rocksdb/optimized/range_tombstone_fragmenter.cc.ll +++ b/bench/rocksdb/optimized/range_tombstone_fragmenter.cc.ll @@ -7908,24 +7908,16 @@ if.then5: ; preds = %invoke.cont if.then12: ; preds = %if.then5 %idx.neg = sub i64 0, %sub.i.i.i %add.ptr = getelementptr inbounds i64, ptr %3, i64 %idx.neg - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 - %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq i64 %sub.i.i.i, 0 - br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPmS0_SaImEET0_T_S3_S2_RT1_.exit, label %if.then.i.i.i.i.i.i.i.i.i - -if.then.i.i.i.i.i.i.i.i.i: ; preds = %if.then12 %add.ptr.idx.neg = shl i64 %sub.i.i.i, 3 tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %3, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) - %.pre120 = load ptr, ptr %_M_finish, align 8 - br label %_ZSt22__uninitialized_move_aIPmS0_SaImEET0_T_S3_S2_RT1_.exit - -_ZSt22__uninitialized_move_aIPmS0_SaImEET0_T_S3_S2_RT1_.exit: ; preds = %if.then12, %if.then.i.i.i.i.i.i.i.i.i - %4 = phi ptr [ %3, %if.then12 ], [ %.pre120, %if.then.i.i.i.i.i.i.i.i.i ] + %4 = load ptr, ptr %_M_finish, align 8 %add.ptr23 = getelementptr inbounds i64, ptr %4, i64 %sub.i.i.i store ptr %add.ptr23, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt13move_backwardIPmS0_ET0_T_S2_S1_.exit, label %if.then.i.i.i.i.i -if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPmS0_SaImEET0_T_S3_S2_RT1_.exit +if.then.i.i.i.i.i: ; preds = %if.then12 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %idx.neg.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i @@ -7933,7 +7925,7 @@ if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitializ tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i, ptr align 8 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %_ZSt13move_backwardIPmS0_ET0_T_S2_S1_.exit -_ZSt13move_backwardIPmS0_ET0_T_S2_S1_.exit: ; preds = %_ZSt22__uninitialized_move_aIPmS0_SaImEET0_T_S3_S2_RT1_.exit, %if.then.i.i.i.i.i +_ZSt13move_backwardIPmS0_ET0_T_S2_S1_.exit: ; preds = %if.then12, %if.then.i.i.i.i.i %agg.tmp28.sroa.2.0.copyload = load i64, ptr %index_.i.i, align 8 %agg.tmp29.sroa.1.0.copyload = load i64, ptr %index_2.i.i, align 8 %sub.i.i.i.i.i.i = sub i64 %agg.tmp29.sroa.1.0.copyload, %agg.tmp28.sroa.2.0.copyload @@ -8090,9 +8082,9 @@ for.body.i.preheader.i.i.i.i.i.i.i82: ; preds = %_ZNSt12_Vector_base %agg.tmp79.sroa.0.0.copyload = load ptr, ptr %__first, align 8 %values_.i.i.i.i.i.i.i.i.i.i84 = getelementptr inbounds i8, ptr %agg.tmp79.sroa.0.0.copyload, i64 72 %vect_.i.i.i.i.i.i.i.i.i.i85 = getelementptr inbounds i8, ptr %agg.tmp79.sroa.0.0.copyload, i64 80 - %.pre121 = load ptr, ptr %values_.i.i.i.i.i.i.i.i.i.i84, align 8 - %.pre122 = load ptr, ptr %vect_.i.i.i.i.i.i.i.i.i.i85, align 8 - %invariant.gep = getelementptr i8, ptr %.pre122, i64 -64 + %.pre120 = load ptr, ptr %values_.i.i.i.i.i.i.i.i.i.i84, align 8 + %.pre121 = load ptr, ptr %vect_.i.i.i.i.i.i.i.i.i.i85, align 8 + %invariant.gep = getelementptr i8, ptr %.pre121, i64 -64 br label %for.body.i.i.i.i.i.i.i.i86 for.body.i.i.i.i.i.i.i.i86: ; preds = %for.body.i.i.i.i.i.i.i.i86, %for.body.i.preheader.i.i.i.i.i.i.i82 @@ -8100,7 +8092,7 @@ for.body.i.i.i.i.i.i.i.i86: ; preds = %for.body.i.i.i.i.i. %__n.08.i.i.i.i.i.i.i.i88 = phi i64 [ %dec.i.i.i.i.i.i.i.i96, %for.body.i.i.i.i.i.i.i.i86 ], [ %sub.i.i.i, %for.body.i.preheader.i.i.i.i.i.i.i82 ] %__result.addr.07.i.i.i.i.i.i.i.i89 = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i95, %for.body.i.i.i.i.i.i.i.i86 ], [ %add.ptr.i.i.i.i.i.i.i.i.i74, %for.body.i.preheader.i.i.i.i.i.i.i82 ] %cmp.i.i.i.i.i.i.i.i.i.i90 = icmp ult i64 %agg.tmp.sroa.2.0.i.i.i.i.i.i.i87, 8 - %retval.0.i.i.i.i.i.i.i.i.i.i93.v = select i1 %cmp.i.i.i.i.i.i.i.i.i.i90, ptr %.pre121, ptr %invariant.gep + %retval.0.i.i.i.i.i.i.i.i.i.i93.v = select i1 %cmp.i.i.i.i.i.i.i.i.i.i90, ptr %.pre120, ptr %invariant.gep %retval.0.i.i.i.i.i.i.i.i.i.i93 = getelementptr i64, ptr %retval.0.i.i.i.i.i.i.i.i.i.i93.v, i64 %agg.tmp.sroa.2.0.i.i.i.i.i.i.i87 %21 = load i64, ptr %retval.0.i.i.i.i.i.i.i.i.i.i93, align 8 store i64 %21, ptr %__result.addr.07.i.i.i.i.i.i.i.i89, align 8 @@ -8171,16 +8163,16 @@ if.then5: ; preds = %invoke.cont %sub.ptr.sub.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 4 %cmp11 = icmp ugt i64 %sub.ptr.div.i, %sub.i.i.i - br i1 %cmp11, label %for.body.i.i.i.i.i.preheader, label %if.else + br i1 %cmp11, label %if.then12, label %if.else -for.body.i.i.i.i.i.preheader: ; preds = %if.then5 +if.then12: ; preds = %if.then5 %idx.neg = sub i64 0, %sub.i.i.i %add.ptr = getelementptr inbounds %"class.rocksdb::Slice", ptr %3, i64 %idx.neg br label %for.body.i.i.i.i.i -for.body.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.preheader, %for.body.i.i.i.i.i - %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %3, %for.body.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %add.ptr, %for.body.i.i.i.i.i.preheader ] +for.body.i.i.i.i.i: ; preds = %if.then12, %for.body.i.i.i.i.i + %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %3, %if.then12 ] + %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %add.ptr, %if.then12 ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__cur.09.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %__first.sroa.0.08.i.i.i.i.i, i64 16, i1 false) %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 16 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 16 @@ -8188,8 +8180,8 @@ for.body.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN7rocksdb5SliceES2_SaIS1_EET0_T_S5_S4_RT1_.exit, label %for.body.i.i.i.i.i, !llvm.loop !151 _ZSt22__uninitialized_move_aIPN7rocksdb5SliceES2_SaIS1_EET0_T_S5_S4_RT1_.exit: ; preds = %for.body.i.i.i.i.i - %.pre125 = load ptr, ptr %_M_finish, align 8 - %add.ptr23 = getelementptr inbounds %"class.rocksdb::Slice", ptr %.pre125, i64 %sub.i.i.i + %4 = load ptr, ptr %_M_finish, align 8 + %add.ptr23 = getelementptr inbounds %"class.rocksdb::Slice", ptr %4, i64 %sub.i.i.i store ptr %add.ptr23, ptr %_M_finish, align 8 %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt13move_backwardIPN7rocksdb5SliceES2_ET0_T_S4_S3_.exit, label %if.then.i.i.i.i.i @@ -8221,11 +8213,11 @@ for.body.i.i.i.i.i30: ; preds = %for.body.i.i.i.i.i3 %__n.08.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %for.body.i.i.i.i.i30 ], [ %sub.i.i.i.i.i.i, %for.body.i.preheader.i.i.i.i ] %__result.addr.07.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i31, %for.body.i.i.i.i.i30 ], [ %__position.coerce, %for.body.i.preheader.i.i.i.i ] %cmp.i.i.i.i.i.i.i = icmp ult i64 %agg.tmp.sroa.2.0.i.i.i.i, 8 - %4 = load ptr, ptr %values_.i.i.i.i.i.i.i, align 8 - %arrayidx.i.i.i.i.i.i.i = getelementptr inbounds %"class.rocksdb::Slice", ptr %4, i64 %agg.tmp.sroa.2.0.i.i.i.i - %5 = load ptr, ptr %vect_.i.i.i.i.i.i.i, align 8 - %6 = getelementptr %"class.rocksdb::Slice", ptr %5, i64 %agg.tmp.sroa.2.0.i.i.i.i - %add.ptr.i.i.i.i.i.i.i.i = getelementptr i8, ptr %6, i64 -128 + %5 = load ptr, ptr %values_.i.i.i.i.i.i.i, align 8 + %arrayidx.i.i.i.i.i.i.i = getelementptr inbounds %"class.rocksdb::Slice", ptr %5, i64 %agg.tmp.sroa.2.0.i.i.i.i + %6 = load ptr, ptr %vect_.i.i.i.i.i.i.i, align 8 + %7 = getelementptr %"class.rocksdb::Slice", ptr %6, i64 %agg.tmp.sroa.2.0.i.i.i.i + %add.ptr.i.i.i.i.i.i.i.i = getelementptr i8, ptr %7, i64 -128 %retval.0.i.i.i.i.i.i.i = select i1 %cmp.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i.i.i.i.i, ptr %add.ptr.i.i.i.i.i.i.i.i tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__result.addr.07.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %retval.0.i.i.i.i.i.i.i, i64 16, i1 false) %inc.i.i.i.i.i.i = add i64 %agg.tmp.sroa.2.0.i.i.i.i, 1 @@ -8249,11 +8241,11 @@ invoke.cont1.i.i.i.i: ; preds = %invoke.cont1.i.i.i. %agg.tmp.sroa.2.0.i.i.i = phi i64 [ %inc.i.i.i.i.i, %invoke.cont1.i.i.i.i ], [ %add.i.i.i, %invoke.cont1.i.preheader.i.i.i ] %__cur.08.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %invoke.cont1.i.i.i.i ], [ %3, %invoke.cont1.i.preheader.i.i.i ] %cmp.i.i5.i.i.i.i = icmp ult i64 %agg.tmp.sroa.2.0.i.i.i, 8 - %7 = load ptr, ptr %values_.i.i.i.i.i.i, align 8 - %arrayidx.i.i.i.i.i.i = getelementptr inbounds %"class.rocksdb::Slice", ptr %7, i64 %agg.tmp.sroa.2.0.i.i.i - %8 = load ptr, ptr %vect_.i.i.i.i.i.i, align 8 - %9 = getelementptr %"class.rocksdb::Slice", ptr %8, i64 %agg.tmp.sroa.2.0.i.i.i - %add.ptr.i.i.i.i.i.i.i = getelementptr i8, ptr %9, i64 -128 + %8 = load ptr, ptr %values_.i.i.i.i.i.i, align 8 + %arrayidx.i.i.i.i.i.i = getelementptr inbounds %"class.rocksdb::Slice", ptr %8, i64 %agg.tmp.sroa.2.0.i.i.i + %9 = load ptr, ptr %vect_.i.i.i.i.i.i, align 8 + %10 = getelementptr %"class.rocksdb::Slice", ptr %9, i64 %agg.tmp.sroa.2.0.i.i.i + %add.ptr.i.i.i.i.i.i.i = getelementptr i8, ptr %10, i64 -128 %retval.0.i.i.i.i.i.i = select i1 %cmp.i.i5.i.i.i.i, ptr %arrayidx.i.i.i.i.i.i, ptr %add.ptr.i.i.i.i.i.i.i tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__cur.08.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %retval.0.i.i.i.i.i.i, i64 16, i1 false) %inc.i.i.i.i.i = add i64 %agg.tmp.sroa.2.0.i.i.i, 1 @@ -8266,9 +8258,9 @@ invoke.cont44.loopexit: ; preds = %invoke.cont1.i.i.i. br label %invoke.cont44 invoke.cont44: ; preds = %invoke.cont44.loopexit, %if.else - %10 = phi ptr [ %.pre, %invoke.cont44.loopexit ], [ %3, %if.else ] + %11 = phi ptr [ %.pre, %invoke.cont44.loopexit ], [ %3, %if.else ] %sub = sub i64 %sub.i.i.i, %sub.ptr.div.i - %add.ptr48 = getelementptr inbounds %"class.rocksdb::Slice", ptr %10, i64 %sub + %add.ptr48 = getelementptr inbounds %"class.rocksdb::Slice", ptr %11, i64 %sub store ptr %add.ptr48, ptr %_M_finish, align 8 %cmp.i.i.not7.i.i.i.i.i35 = icmp eq ptr %__position.coerce, %3 br i1 %cmp.i.i.not7.i.i.i.i.i35, label %invoke.cont53, label %for.body.i.i.i.i.i36 @@ -8287,8 +8279,8 @@ invoke.cont53.loopexit: ; preds = %for.body.i.i.i.i.i3 br label %invoke.cont53 invoke.cont53: ; preds = %invoke.cont53.loopexit, %invoke.cont44 - %11 = phi ptr [ %.pre124, %invoke.cont53.loopexit ], [ %add.ptr48, %invoke.cont44 ] - %add.ptr57 = getelementptr inbounds i8, ptr %11, i64 %sub.ptr.sub.i + %12 = phi ptr [ %.pre124, %invoke.cont53.loopexit ], [ %add.ptr48, %invoke.cont44 ] + %add.ptr57 = getelementptr inbounds i8, ptr %12, i64 %sub.ptr.sub.i store ptr %add.ptr57, ptr %_M_finish, align 8 %agg.tmp58.sroa.2.0.copyload = load i64, ptr %index_.i.i, align 8 %sub.i.i.i.i.i.i48 = sub i64 %add.i.i.i, %agg.tmp58.sroa.2.0.copyload @@ -8306,11 +8298,11 @@ for.body.i.i.i.i.i59: ; preds = %for.body.i.i.i.i.i5 %__n.08.i.i.i.i.i61 = phi i64 [ %dec.i.i.i.i.i69, %for.body.i.i.i.i.i59 ], [ %sub.i.i.i.i.i.i48, %for.body.i.preheader.i.i.i.i55 ] %__result.addr.07.i.i.i.i.i62 = phi ptr [ %incdec.ptr.i.i.i.i.i68, %for.body.i.i.i.i.i59 ], [ %__position.coerce, %for.body.i.preheader.i.i.i.i55 ] %cmp.i.i.i.i.i.i.i63 = icmp ult i64 %agg.tmp.sroa.2.0.i.i.i.i60, 8 - %12 = load ptr, ptr %values_.i.i.i.i.i.i.i57, align 8 - %arrayidx.i.i.i.i.i.i.i64 = getelementptr inbounds %"class.rocksdb::Slice", ptr %12, i64 %agg.tmp.sroa.2.0.i.i.i.i60 - %13 = load ptr, ptr %vect_.i.i.i.i.i.i.i58, align 8 - %14 = getelementptr %"class.rocksdb::Slice", ptr %13, i64 %agg.tmp.sroa.2.0.i.i.i.i60 - %add.ptr.i.i.i.i.i.i.i.i65 = getelementptr i8, ptr %14, i64 -128 + %13 = load ptr, ptr %values_.i.i.i.i.i.i.i57, align 8 + %arrayidx.i.i.i.i.i.i.i64 = getelementptr inbounds %"class.rocksdb::Slice", ptr %13, i64 %agg.tmp.sroa.2.0.i.i.i.i60 + %14 = load ptr, ptr %vect_.i.i.i.i.i.i.i58, align 8 + %15 = getelementptr %"class.rocksdb::Slice", ptr %14, i64 %agg.tmp.sroa.2.0.i.i.i.i60 + %add.ptr.i.i.i.i.i.i.i.i65 = getelementptr i8, ptr %15, i64 -128 %retval.0.i.i.i.i.i.i.i66 = select i1 %cmp.i.i.i.i.i.i.i63, ptr %arrayidx.i.i.i.i.i.i.i64, ptr %add.ptr.i.i.i.i.i.i.i.i65 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__result.addr.07.i.i.i.i.i62, ptr noundef nonnull align 8 dereferenceable(16) %retval.0.i.i.i.i.i.i.i66, i64 16, i1 false) %inc.i.i.i.i.i.i67 = add i64 %agg.tmp.sroa.2.0.i.i.i.i60, 1 @@ -8320,8 +8312,8 @@ for.body.i.i.i.i.i59: ; preds = %for.body.i.i.i.i.i5 br i1 %cmp.i.i.i.i.i70, label %for.body.i.i.i.i.i59, label %if.end112, !llvm.loop !152 if.else67: ; preds = %invoke.cont - %15 = load ptr, ptr %this, align 8 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %15 to i64 + %16 = load ptr, ptr %this, align 8 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %16 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i.i %sub.ptr.div.i.i = ashr exact i64 %sub.ptr.sub.i.i, 4 %sub.i = sub nsw i64 576460752303423487, %sub.ptr.div.i.i @@ -8336,8 +8328,8 @@ _ZNKSt6vectorIN7rocksdb5SliceESaIS1_EE12_M_check_lenEmPKc.exit: ; preds = %if.el %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i, i64 %sub.i.i.i) %add.i = add nsw i64 %.sroa.speculated.i, %sub.ptr.div.i.i %cmp7.i = icmp ult i64 %add.i, %sub.ptr.div.i.i - %16 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 576460752303423487) - %cond.i = select i1 %cmp7.i, i64 576460752303423487, i64 %16 + %17 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 576460752303423487) + %cond.i = select i1 %cmp7.i, i64 576460752303423487, i64 %17 %cmp.not.i = icmp eq i64 %cond.i, 0 br i1 %cmp.not.i, label %_ZNSt12_Vector_baseIN7rocksdb5SliceESaIS1_EE11_M_allocateEm.exit, label %cond.true.i @@ -8348,12 +8340,12 @@ cond.true.i: ; preds = %_ZNKSt6vectorIN7roc _ZNSt12_Vector_baseIN7rocksdb5SliceESaIS1_EE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorIN7rocksdb5SliceESaIS1_EE12_M_check_lenEmPKc.exit, %cond.true.i %cond.i72 = phi ptr [ %call5.i.i.i, %cond.true.i ], [ null, %_ZNKSt6vectorIN7rocksdb5SliceESaIS1_EE12_M_check_lenEmPKc.exit ] - %cmp.i.i.not7.i.i.i.i.i73 = icmp eq ptr %15, %__position.coerce + %cmp.i.i.not7.i.i.i.i.i73 = icmp eq ptr %16, %__position.coerce br i1 %cmp.i.i.not7.i.i.i.i.i73, label %invoke.cont1.i.preheader.i.i.i86, label %for.body.i.i.i.i.i74 for.body.i.i.i.i.i74: ; preds = %_ZNSt12_Vector_baseIN7rocksdb5SliceESaIS1_EE11_M_allocateEm.exit, %for.body.i.i.i.i.i74 %__cur.09.i.i.i.i.i75 = phi ptr [ %incdec.ptr.i.i.i.i.i78, %for.body.i.i.i.i.i74 ], [ %cond.i72, %_ZNSt12_Vector_baseIN7rocksdb5SliceESaIS1_EE11_M_allocateEm.exit ] - %__first.sroa.0.08.i.i.i.i.i76 = phi ptr [ %incdec.ptr.i.i.i.i.i.i77, %for.body.i.i.i.i.i74 ], [ %15, %_ZNSt12_Vector_baseIN7rocksdb5SliceESaIS1_EE11_M_allocateEm.exit ] + %__first.sroa.0.08.i.i.i.i.i76 = phi ptr [ %incdec.ptr.i.i.i.i.i.i77, %for.body.i.i.i.i.i74 ], [ %16, %_ZNSt12_Vector_baseIN7rocksdb5SliceESaIS1_EE11_M_allocateEm.exit ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__cur.09.i.i.i.i.i75, ptr noundef nonnull align 8 dereferenceable(16) %__first.sroa.0.08.i.i.i.i.i76, i64 16, i1 false) %incdec.ptr.i.i.i.i.i.i77 = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i76, i64 16 %incdec.ptr.i.i.i.i.i78 = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i75, i64 16 @@ -8371,11 +8363,11 @@ invoke.cont1.i.i.i.i90: ; preds = %invoke.cont1.i.i.i. %agg.tmp.sroa.2.0.i.i.i91 = phi i64 [ %inc.i.i.i.i.i97, %invoke.cont1.i.i.i.i90 ], [ %0, %invoke.cont1.i.preheader.i.i.i86 ] %__cur.08.i.i.i.i92 = phi ptr [ %incdec.ptr.i.i.i.i98, %invoke.cont1.i.i.i.i90 ], [ %__cur.0.lcssa.i.i.i.i.i80, %invoke.cont1.i.preheader.i.i.i86 ] %cmp.i.i5.i.i.i.i93 = icmp ult i64 %agg.tmp.sroa.2.0.i.i.i91, 8 - %17 = load ptr, ptr %values_.i.i.i.i.i.i88, align 8 - %arrayidx.i.i.i.i.i.i94 = getelementptr inbounds %"class.rocksdb::Slice", ptr %17, i64 %agg.tmp.sroa.2.0.i.i.i91 - %18 = load ptr, ptr %vect_.i.i.i.i.i.i89, align 8 - %19 = getelementptr %"class.rocksdb::Slice", ptr %18, i64 %agg.tmp.sroa.2.0.i.i.i91 - %add.ptr.i.i.i.i.i.i.i95 = getelementptr i8, ptr %19, i64 -128 + %18 = load ptr, ptr %values_.i.i.i.i.i.i88, align 8 + %arrayidx.i.i.i.i.i.i94 = getelementptr inbounds %"class.rocksdb::Slice", ptr %18, i64 %agg.tmp.sroa.2.0.i.i.i91 + %19 = load ptr, ptr %vect_.i.i.i.i.i.i89, align 8 + %20 = getelementptr %"class.rocksdb::Slice", ptr %19, i64 %agg.tmp.sroa.2.0.i.i.i91 + %add.ptr.i.i.i.i.i.i.i95 = getelementptr i8, ptr %20, i64 -128 %retval.0.i.i.i.i.i.i96 = select i1 %cmp.i.i5.i.i.i.i93, ptr %arrayidx.i.i.i.i.i.i94, ptr %add.ptr.i.i.i.i.i.i.i95 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__cur.08.i.i.i.i92, ptr noundef nonnull align 8 dereferenceable(16) %retval.0.i.i.i.i.i.i96, i64 16, i1 false) %inc.i.i.i.i.i97 = add i64 %agg.tmp.sroa.2.0.i.i.i91, 1 @@ -8398,11 +8390,11 @@ for.body.i.i.i.i.i103: ; preds = %invoke.cont83, %for invoke.cont89: ; preds = %for.body.i.i.i.i.i103, %invoke.cont83 %__cur.0.lcssa.i.i.i.i.i109 = phi ptr [ %incdec.ptr.i.i.i.i98, %invoke.cont83 ], [ %incdec.ptr.i.i.i.i.i107, %for.body.i.i.i.i.i103 ] - %tobool.not.i = icmp eq ptr %15, null + %tobool.not.i = icmp eq ptr %16, null br i1 %tobool.not.i, label %_ZNSt12_Vector_baseIN7rocksdb5SliceESaIS1_EE13_M_deallocateEPS1_m.exit, label %if.then.i111 if.then.i111: ; preds = %invoke.cont89 - tail call void @_ZdlPv(ptr noundef nonnull %15) #22 + tail call void @_ZdlPv(ptr noundef nonnull %16) #22 br label %_ZNSt12_Vector_baseIN7rocksdb5SliceESaIS1_EE13_M_deallocateEPS1_m.exit _ZNSt12_Vector_baseIN7rocksdb5SliceESaIS1_EE13_M_deallocateEPS1_m.exit: ; preds = %invoke.cont89, %if.then.i111 diff --git a/bench/ruby/optimized/array.ll b/bench/ruby/optimized/array.ll index 3a41bc11036..dd594df147c 100644 --- a/bench/ruby/optimized/array.ll +++ b/bench/ruby/optimized/array.ll @@ -4614,19 +4614,15 @@ ary_double_capa.exit: ; preds = %45, %rb_array_len.e 65: ; preds = %61 %66 = getelementptr inbounds i8, ptr %8, i64 16 - br label %rb_ary_ptr_use_start.exit.i + br label %.lr.ph.i.preheader.i 67: ; preds = %61 %68 = getelementptr inbounds i8, ptr %8, i64 32 %69 = load ptr, ptr %68, align 8 - br label %rb_ary_ptr_use_start.exit.i + br label %.lr.ph.i.preheader.i -rb_ary_ptr_use_start.exit.i: ; preds = %67, %65 +.lr.ph.i.preheader.i: ; preds = %65, %67 %.0.i.i.i = phi ptr [ %66, %65 ], [ %69, %67 ] - %.not2.i.i = icmp eq i64 %63, 0 - br i1 %.not2.i.i, label %ary_mem_clear.exit, label %.lr.ph.i.preheader.i - -.lr.ph.i.preheader.i: ; preds = %rb_ary_ptr_use_start.exit.i %70 = getelementptr i64, ptr %.0.i.i.i, i64 %.0.i br label %.lr.ph.i.i @@ -4637,14 +4633,10 @@ rb_ary_ptr_use_start.exit.i: ; preds = %67, %65 %72 = getelementptr i8, ptr %.013.i.i, i64 8 store i64 4, ptr %.013.i.i, align 8 %.not.i.i = icmp eq i64 %71, 0 - br i1 %.not.i.i, label %ary_mem_clear.exit.loopexit, label %.lr.ph.i.i, !llvm.loop !7 - -ary_mem_clear.exit.loopexit: ; preds = %.lr.ph.i.i - %.pre82 = load i64, ptr %8, align 8 - br label %ary_mem_clear.exit + br i1 %.not.i.i, label %ary_mem_clear.exit, label %.lr.ph.i.i, !llvm.loop !7 -ary_mem_clear.exit: ; preds = %ary_mem_clear.exit.loopexit, %rb_ary_ptr_use_start.exit.i - %73 = phi i64 [ %.pre82, %ary_mem_clear.exit.loopexit ], [ %62, %rb_ary_ptr_use_start.exit.i ] +ary_mem_clear.exit: ; preds = %.lr.ph.i.i + %73 = load i64, ptr %8, align 8 %74 = and i64 %73, 8192 %.not79 = icmp eq i64 %74, 0 br i1 %.not79, label %79, label %75 diff --git a/bench/rust-analyzer-rs/optimized/2rmfmj0e763aielg.ll b/bench/rust-analyzer-rs/optimized/2rmfmj0e763aielg.ll index b4ea6b96768..9ece0ef13df 100644 --- a/bench/rust-analyzer-rs/optimized/2rmfmj0e763aielg.ll +++ b/bench/rust-analyzer-rs/optimized/2rmfmj0e763aielg.ll @@ -1102,75 +1102,71 @@ define internal fastcc noundef i64 @_ZN10line_index27analyze_source_file_generic 45: ; preds = %40 %46 = icmp eq i64 %.032104, 0 - br i1 %46, label %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.thread.i.thread", label %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i" + br i1 %46, label %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.thread.i", label %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i" "_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i": ; preds = %45 %47 = icmp sgt i8 %26, -65 - br i1 %47, label %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.thread.i", label %48 + %48 = sub nuw i64 %1, %.032104 + br i1 %47, label %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.thread.i", label %49 -48: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i" +49: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i" call void @_ZN4core3str16slice_error_fail17he2ff12236fb0c056E(ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1, i64 noundef %.032104, i64 noundef %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.edb59cc71ceb91f03d7d1eaa33cee96c.43) #14 unreachable -"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.thread.i": ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i" - %49 = sub nuw i64 %1, %.032104 - %50 = icmp eq i64 %49, 0 - br i1 %50, label %.thread, label %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.thread.i.thread" - -"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.thread.i.thread": ; preds = %45, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.thread.i" - %.ph112 = phi i64 [ %49, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.thread.i" ], [ %1, %45 ] - %51 = icmp sgt i8 %26, -1 - br i1 %51, label %.thread70.thread, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h01f562d980bdc7a8E.exit13.i" - -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h01f562d980bdc7a8E.exit13.i": ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.thread.i.thread" - %52 = getelementptr inbounds i8, ptr %25, i64 1 - %53 = and i8 %26, 31 - %54 = zext nneg i8 %53 to i32 - %55 = icmp ne i64 %.ph112, 1 - call void @llvm.assume(i1 %55) - %56 = load i8, ptr %52, align 1, !noalias !222, !noundef !5 - %57 = shl nuw nsw i32 %54, 6 - %58 = and i8 %56, 63 - %59 = zext nneg i8 %58 to i32 - %60 = or disjoint i32 %57, %59 - %61 = icmp samesign ugt i8 %26, -33 - br i1 %61, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h01f562d980bdc7a8E.exit15.i", label %.thread70 +"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.thread.i": ; preds = %45, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i" + %.ph = phi i64 [ %1, %45 ], [ %48, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i" ] + %50 = icmp sgt i8 %26, -1 + br i1 %50, label %.thread70.thread, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h01f562d980bdc7a8E.exit13.i" + +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h01f562d980bdc7a8E.exit13.i": ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.thread.i" + %51 = getelementptr inbounds i8, ptr %25, i64 1 + %52 = and i8 %26, 31 + %53 = zext nneg i8 %52 to i32 + %54 = icmp ne i64 %.ph, 1 + call void @llvm.assume(i1 %54) + %55 = load i8, ptr %51, align 1, !noalias !222, !noundef !5 + %56 = shl nuw nsw i32 %53, 6 + %57 = and i8 %55, 63 + %58 = zext nneg i8 %57 to i32 + %59 = or disjoint i32 %56, %58 + %60 = icmp samesign ugt i8 %26, -33 + br i1 %60, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h01f562d980bdc7a8E.exit15.i", label %.thread70 "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h01f562d980bdc7a8E.exit15.i": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h01f562d980bdc7a8E.exit13.i" - %62 = getelementptr inbounds i8, ptr %25, i64 2 - %63 = icmp ne i64 %.ph112, 2 - call void @llvm.assume(i1 %63) - %64 = load i8, ptr %62, align 1, !noalias !222, !noundef !5 - %65 = shl nuw nsw i32 %59, 6 - %66 = and i8 %64, 63 - %67 = zext nneg i8 %66 to i32 - %68 = or disjoint i32 %65, %67 - %69 = shl nuw nsw i32 %54, 12 - %70 = or disjoint i32 %68, %69 - %71 = icmp samesign ugt i8 %26, -17 - br i1 %71, label %72, label %.thread70 - -72: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h01f562d980bdc7a8E.exit15.i" - %73 = getelementptr inbounds i8, ptr %25, i64 3 - %74 = icmp ne i64 %.ph112, 3 - call void @llvm.assume(i1 %74) - %75 = load i8, ptr %73, align 1, !noalias !222, !noundef !5 - %76 = shl nuw nsw i32 %54, 18 - %77 = and i32 %76, 1835008 - %78 = shl nuw nsw i32 %68, 6 - %79 = and i8 %75, 63 - %80 = zext nneg i8 %79 to i32 - %81 = or disjoint i32 %78, %80 - %82 = or disjoint i32 %81, %77 - %83 = icmp eq i32 %82, 1114112 - br i1 %83, label %.thread, label %.thread70 - -.thread: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.thread.i", %72 + %61 = getelementptr inbounds i8, ptr %25, i64 2 + %62 = icmp ne i64 %.ph, 2 + call void @llvm.assume(i1 %62) + %63 = load i8, ptr %61, align 1, !noalias !222, !noundef !5 + %64 = shl nuw nsw i32 %58, 6 + %65 = and i8 %63, 63 + %66 = zext nneg i8 %65 to i32 + %67 = or disjoint i32 %64, %66 + %68 = shl nuw nsw i32 %53, 12 + %69 = or disjoint i32 %67, %68 + %70 = icmp samesign ugt i8 %26, -17 + br i1 %70, label %71, label %.thread70 + +71: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h01f562d980bdc7a8E.exit15.i" + %72 = getelementptr inbounds i8, ptr %25, i64 3 + %73 = icmp ne i64 %.ph, 3 + call void @llvm.assume(i1 %73) + %74 = load i8, ptr %72, align 1, !noalias !222, !noundef !5 + %75 = shl nuw nsw i32 %53, 18 + %76 = and i32 %75, 1835008 + %77 = shl nuw nsw i32 %67, 6 + %78 = and i8 %74, 63 + %79 = zext nneg i8 %78 to i32 + %80 = or disjoint i32 %77, %79 + %81 = or disjoint i32 %80, %76 + %82 = icmp eq i32 %81, 1114112 + br i1 %82, label %83, label %.thread70 + +83: ; preds = %71 call void @_ZN4core6option13unwrap_failed17hcb3a256a9f1ca882E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.edb59cc71ceb91f03d7d1eaa33cee96c.44) #14 unreachable -.thread70: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h01f562d980bdc7a8E.exit15.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h01f562d980bdc7a8E.exit13.i", %72 - %.sroa.4.0.i.ph72 = phi i32 [ %82, %72 ], [ %70, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h01f562d980bdc7a8E.exit15.i" ], [ %60, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h01f562d980bdc7a8E.exit13.i" ] +.thread70: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h01f562d980bdc7a8E.exit15.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h01f562d980bdc7a8E.exit13.i", %71 + %.sroa.4.0.i.ph72 = phi i32 [ %81, %71 ], [ %69, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h01f562d980bdc7a8E.exit15.i" ], [ %59, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h01f562d980bdc7a8E.exit13.i" ] %84 = icmp samesign ult i32 %.sroa.4.0.i.ph72, 128 br i1 %84, label %.thread70.thread, label %85 @@ -1183,8 +1179,8 @@ define internal fastcc noundef i64 @_ZN10line_index27analyze_source_file_generic %. = select i1 %88, i64 3, i64 4 br label %.thread70.thread -.thread70.thread: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.thread.i.thread", %85, %87, %.thread70 - %.033 = phi i64 [ 1, %.thread70 ], [ %., %87 ], [ 2, %85 ], [ 1, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.thread.i.thread" ] +.thread70.thread: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.thread.i", %85, %87, %.thread70 + %.033 = phi i64 [ 1, %.thread70 ], [ %., %87 ], [ 2, %85 ], [ 1, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.thread.i" ] %89 = trunc i64 %.032104 to i32 %90 = add i32 %3, %89 %91 = load i64, ptr %12, align 8, !noundef !5 diff --git a/bench/rustfmt-rs/optimized/1mznjg1e09hdetpr.ll b/bench/rustfmt-rs/optimized/1mznjg1e09hdetpr.ll index 4a8f05ce0f3..7a9aebb06e9 100644 --- a/bench/rustfmt-rs/optimized/1mznjg1e09hdetpr.ll +++ b/bench/rustfmt-rs/optimized/1mznjg1e09hdetpr.ll @@ -27639,8 +27639,8 @@ _ZN15rustfmt_nightly7rewrite14RewriteContext16use_block_indent17h490227a595f2c57 .noexc: ; preds = %37 %44 = load i64, ptr %15, align 8, !range !379, !noalias !4771, !noundef !8 - %trunc.i.i.i.i.i7.i.i = trunc nuw i64 %44 to i1 - br i1 %trunc.i.i.i.i.i7.i.i, label %151, label %143 + %trunc.i.i.i.i.i6.i.i = trunc nuw i64 %44 to i1 + br i1 %trunc.i.i.i.i.i6.i.i, label %151, label %143 45: ; preds = %.noexc19 call void @llvm.experimental.noalias.scope.decl(metadata !4772) @@ -27856,22 +27856,22 @@ _ZN15rustfmt_nightly7rewrite14RewriteContext16use_block_indent17h490227a595f2c57 143: ; preds = %.noexc %144 = load i8, ptr %.sroa.0.sroa.13.0..sroa_idx.i, align 1, !range !13, !alias.scope !4816, !noalias !4750, !noundef !8 %145 = trunc nuw i8 %144 to i1 - br i1 %145, label %"_ZN99_$LT$core..str..iter..SplitInclusive$LT$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hddfe8b31815138d6E.exit.thread6.i.i.i12.i.i", label %146 + br i1 %145, label %"_ZN99_$LT$core..str..iter..SplitInclusive$LT$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hddfe8b31815138d6E.exit.thread6.i.i.i11.i.i", label %146 146: ; preds = %143 store i8 1, ptr %.sroa.0.sroa.13.0..sroa_idx.i, align 1, !alias.scope !4816, !noalias !4750 %147 = load i8, ptr %.sroa.0.sroa.12.0..sroa_idx.i, align 8, !range !13, !alias.scope !4816, !noalias !4750, !noundef !8 %148 = trunc nuw i8 %147 to i1 - %.pre.i.i.i.i.i.i8.i.i = load i64, ptr %42, align 8, !alias.scope !4816, !noalias !4750 - %.pre5.i.i.i.i.i.i9.i.i = load i64, ptr %.sroa.0.sroa.4.0..sroa_idx.i, align 8, !alias.scope !4816, !noalias !4750 - %.not.i.i.i.i.i.i10.i.i = icmp ne i64 %.pre5.i.i.i.i.i.i9.i.i, %.pre.i.i.i.i.i.i8.i.i - %or.cond.not.i.i.i.i.i.i11.i.i = select i1 %148, i1 true, i1 %.not.i.i.i.i.i.i10.i.i - br i1 %or.cond.not.i.i.i.i.i.i11.i.i, label %._crit_edge.i.i.i.i.i.i13.i.i, label %"_ZN99_$LT$core..str..iter..SplitInclusive$LT$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hddfe8b31815138d6E.exit.thread6.i.i.i12.i.i" + %.pre.i.i.i.i.i.i7.i.i = load i64, ptr %42, align 8, !alias.scope !4816, !noalias !4750 + %.pre5.i.i.i.i.i.i8.i.i = load i64, ptr %.sroa.0.sroa.4.0..sroa_idx.i, align 8, !alias.scope !4816, !noalias !4750 + %.not.i.i.i.i.i.i9.i.i = icmp ne i64 %.pre5.i.i.i.i.i.i8.i.i, %.pre.i.i.i.i.i.i7.i.i + %or.cond.not.i.i.i.i.i.i10.i.i = select i1 %148, i1 true, i1 %.not.i.i.i.i.i.i9.i.i + br i1 %or.cond.not.i.i.i.i.i.i10.i.i, label %._crit_edge.i.i.i.i.i.i12.i.i, label %"_ZN99_$LT$core..str..iter..SplitInclusive$LT$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hddfe8b31815138d6E.exit.thread6.i.i.i11.i.i" -._crit_edge.i.i.i.i.i.i13.i.i: ; preds = %146 +._crit_edge.i.i.i.i.i.i12.i.i: ; preds = %146 %.val.i.i.i.i.i4.i.i.i = load ptr, ptr %.sroa.0.sroa.5.0..sroa_idx.i, align 8, !alias.scope !4816, !noalias !4750, !nonnull !8, !align !451, !noundef !8 - %149 = getelementptr inbounds i8, ptr %.val.i.i.i.i.i4.i.i.i, i64 %.pre.i.i.i.i.i.i8.i.i - %150 = sub i64 %.pre5.i.i.i.i.i.i9.i.i, %.pre.i.i.i.i.i.i8.i.i + %149 = getelementptr inbounds i8, ptr %.val.i.i.i.i.i4.i.i.i, i64 %.pre.i.i.i.i.i.i7.i.i + %150 = sub i64 %.pre5.i.i.i.i.i.i8.i.i, %.pre.i.i.i.i.i.i7.i.i br label %_ZN4core4iter6traits8iterator8Iterator3nth17h9c07c25ced58ce09E.exit.i.i 151: ; preds = %.noexc @@ -27883,15 +27883,15 @@ _ZN15rustfmt_nightly7rewrite14RewriteContext16use_block_indent17h490227a595f2c57 store i64 %153, ptr %42, align 8, !alias.scope !4819, !noalias !4750 br label %_ZN4core4iter6traits8iterator8Iterator3nth17h9c07c25ced58ce09E.exit.i.i -"_ZN99_$LT$core..str..iter..SplitInclusive$LT$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hddfe8b31815138d6E.exit.thread6.i.i.i12.i.i": ; preds = %146, %143 +"_ZN99_$LT$core..str..iter..SplitInclusive$LT$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hddfe8b31815138d6E.exit.thread6.i.i.i11.i.i": ; preds = %146, %143 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15), !noalias !4771 br label %.loopexit -_ZN4core4iter6traits8iterator8Iterator3nth17h9c07c25ced58ce09E.exit.i.i: ; preds = %151, %._crit_edge.i.i.i.i.i.i13.i.i - %.sroa.4.1.i.i.i.i.i14.i.i = phi i64 [ %156, %151 ], [ %150, %._crit_edge.i.i.i.i.i.i13.i.i ] - %.sroa.0.1.i.i.i.i.i15.i.i = phi ptr [ %155, %151 ], [ %149, %._crit_edge.i.i.i.i.i.i13.i.i ] +_ZN4core4iter6traits8iterator8Iterator3nth17h9c07c25ced58ce09E.exit.i.i: ; preds = %151, %._crit_edge.i.i.i.i.i.i12.i.i + %.sroa.4.1.i.i.i.i.i13.i.i = phi i64 [ %156, %151 ], [ %150, %._crit_edge.i.i.i.i.i.i12.i.i ] + %.sroa.0.1.i.i.i.i.i14.i.i = phi ptr [ %155, %151 ], [ %149, %._crit_edge.i.i.i.i.i.i12.i.i ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15), !noalias !4771 - %157 = invoke { ptr, i64 } @"_ZN89_$LT$core..str..LinesMap$u20$as$u20$core..ops..function..Fn$LT$$LP$$RF$str$C$$RP$$GT$$GT$4call17h5778cb10e5aeb715E.llvm.5923418642108526555"(ptr noalias noundef nonnull readonly align 1 %43, ptr noalias noundef nonnull readonly align 1 %.sroa.0.1.i.i.i.i.i15.i.i, i64 noundef %.sroa.4.1.i.i.i.i.i14.i.i) + %157 = invoke { ptr, i64 } @"_ZN89_$LT$core..str..LinesMap$u20$as$u20$core..ops..function..Fn$LT$$LP$$RF$str$C$$RP$$GT$$GT$4call17h5778cb10e5aeb715E.llvm.5923418642108526555"(ptr noalias noundef nonnull readonly align 1 %43, ptr noalias noundef nonnull readonly align 1 %.sroa.0.1.i.i.i.i.i14.i.i, i64 noundef %.sroa.4.1.i.i.i.i.i13.i.i) to label %.noexc19 unwind label %.loopexit.split-lp .noexc19: ; preds = %_ZN4core4iter6traits8iterator8Iterator3nth17h9c07c25ced58ce09E.exit.i.i @@ -28460,7 +28460,7 @@ _ZN15rustfmt_nightly7rewrite14RewriteContext16use_block_indent17h490227a595f2c57 call void @_ZN4core9panicking16panic_in_cleanup17h7bbd4fcd6f160435E() #49, !noalias !4850 unreachable -.loopexit: ; preds = %48, %.noexc18, %"_ZN99_$LT$core..str..iter..SplitInclusive$LT$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hddfe8b31815138d6E.exit.thread6.i.i.i.i.i", %.noexc19, %"_ZN99_$LT$core..str..iter..SplitInclusive$LT$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hddfe8b31815138d6E.exit.thread6.i.i.i12.i.i" +.loopexit: ; preds = %48, %.noexc18, %"_ZN99_$LT$core..str..iter..SplitInclusive$LT$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hddfe8b31815138d6E.exit.thread6.i.i.i.i.i", %.noexc19, %"_ZN99_$LT$core..str..iter..SplitInclusive$LT$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hddfe8b31815138d6E.exit.thread6.i.i.i11.i.i" call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %17), !noalias !4750 br label %_ZN15rustfmt_nightly7rewrite14RewriteContext16use_block_indent17h490227a595f2c57aE.exit.thread diff --git a/bench/rustfmt-rs/optimized/2tgwtv970e5remme.ll b/bench/rustfmt-rs/optimized/2tgwtv970e5remme.ll index cd6e4b5db95..0510de81481 100644 --- a/bench/rustfmt-rs/optimized/2tgwtv970e5remme.ll +++ b/bench/rustfmt-rs/optimized/2tgwtv970e5remme.ll @@ -1553,7 +1553,7 @@ define hidden { ptr, i64 } @_ZN4core4iter6traits12double_ended19DoubleEndedItera br i1 %exitcond.not.i, label %_ZN4core4iter6traits12double_ended19DoubleEndedIterator15advance_back_by17h7ab8c71712a9d7ebE.llvm.11825479963814566850.exit.thread, label %7 7: ; preds = %4 - br i1 %6, label %"_ZN96_$LT$core..str..iter..Lines$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd609e957a80b689eE.llvm.11825479963814566850.exit", label %"_ZN96_$LT$core..str..iter..Lines$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd609e957a80b689eE.llvm.11825479963814566850.exit.i" + br i1 %6, label %_ZN4core4iter6traits12double_ended19DoubleEndedIterator15advance_back_by17h7ab8c71712a9d7ebE.llvm.11825479963814566850.exit, label %"_ZN96_$LT$core..str..iter..Lines$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd609e957a80b689eE.llvm.11825479963814566850.exit.i" "_ZN96_$LT$core..str..iter..Lines$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd609e957a80b689eE.llvm.11825479963814566850.exit.i": ; preds = %7 %8 = add i64 %.sroa.01.0.i, 1 @@ -1561,19 +1561,19 @@ define hidden { ptr, i64 } @_ZN4core4iter6traits12double_ended19DoubleEndedItera %9 = tail call { ptr, i64 } @"_ZN89_$LT$core..str..LinesMap$u20$as$u20$core..ops..function..Fn$LT$$LP$$RF$str$C$$RP$$GT$$GT$4call17h5778cb10e5aeb715E.llvm.5923418642108526555"(ptr noalias noundef nonnull readonly align 1 %3, ptr noalias noundef nonnull readonly align 1 %.fca.0.extract.i.i, i64 noundef %.fca.1.extract.i.i.i) %10 = extractvalue { ptr, i64 } %9, 0 %.not.i = icmp eq ptr %10, null - br i1 %.not.i, label %"_ZN96_$LT$core..str..iter..Lines$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd609e957a80b689eE.llvm.11825479963814566850.exit", label %4 + br i1 %.not.i, label %_ZN4core4iter6traits12double_ended19DoubleEndedIterator15advance_back_by17h7ab8c71712a9d7ebE.llvm.11825479963814566850.exit, label %4 _ZN4core4iter6traits12double_ended19DoubleEndedIterator15advance_back_by17h7ab8c71712a9d7ebE.llvm.11825479963814566850.exit.thread: ; preds = %4 - br i1 %6, label %"_ZN96_$LT$core..str..iter..Lines$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd609e957a80b689eE.llvm.11825479963814566850.exit", label %11 + br i1 %6, label %_ZN4core4iter6traits12double_ended19DoubleEndedIterator15advance_back_by17h7ab8c71712a9d7ebE.llvm.11825479963814566850.exit, label %11 11: ; preds = %_ZN4core4iter6traits12double_ended19DoubleEndedIterator15advance_back_by17h7ab8c71712a9d7ebE.llvm.11825479963814566850.exit.thread %.fca.1.extract.i.i = extractvalue { ptr, i64 } %5, 1 %12 = tail call { ptr, i64 } @"_ZN89_$LT$core..str..LinesMap$u20$as$u20$core..ops..function..Fn$LT$$LP$$RF$str$C$$RP$$GT$$GT$4call17h5778cb10e5aeb715E.llvm.5923418642108526555"(ptr noalias noundef nonnull readonly align 1 %3, ptr noalias noundef nonnull readonly align 1 %.fca.0.extract.i.i, i64 noundef %.fca.1.extract.i.i) %13 = extractvalue { ptr, i64 } %12, 0 %14 = extractvalue { ptr, i64 } %12, 1 - br label %"_ZN96_$LT$core..str..iter..Lines$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd609e957a80b689eE.llvm.11825479963814566850.exit" + br label %_ZN4core4iter6traits12double_ended19DoubleEndedIterator15advance_back_by17h7ab8c71712a9d7ebE.llvm.11825479963814566850.exit -"_ZN96_$LT$core..str..iter..Lines$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd609e957a80b689eE.llvm.11825479963814566850.exit": ; preds = %"_ZN96_$LT$core..str..iter..Lines$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd609e957a80b689eE.llvm.11825479963814566850.exit.i", %7, %11, %_ZN4core4iter6traits12double_ended19DoubleEndedIterator15advance_back_by17h7ab8c71712a9d7ebE.llvm.11825479963814566850.exit.thread +_ZN4core4iter6traits12double_ended19DoubleEndedIterator15advance_back_by17h7ab8c71712a9d7ebE.llvm.11825479963814566850.exit: ; preds = %"_ZN96_$LT$core..str..iter..Lines$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd609e957a80b689eE.llvm.11825479963814566850.exit.i", %7, %11, %_ZN4core4iter6traits12double_ended19DoubleEndedIterator15advance_back_by17h7ab8c71712a9d7ebE.llvm.11825479963814566850.exit.thread %.sroa.3.0 = phi i64 [ %14, %11 ], [ undef, %_ZN4core4iter6traits12double_ended19DoubleEndedIterator15advance_back_by17h7ab8c71712a9d7ebE.llvm.11825479963814566850.exit.thread ], [ undef, %7 ], [ undef, %"_ZN96_$LT$core..str..iter..Lines$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd609e957a80b689eE.llvm.11825479963814566850.exit.i" ] %.sroa.0.0 = phi ptr [ %13, %11 ], [ null, %_ZN4core4iter6traits12double_ended19DoubleEndedIterator15advance_back_by17h7ab8c71712a9d7ebE.llvm.11825479963814566850.exit.thread ], [ null, %7 ], [ null, %"_ZN96_$LT$core..str..iter..Lines$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd609e957a80b689eE.llvm.11825479963814566850.exit.i" ] %15 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0, 0 diff --git a/bench/sqlite/optimized/sqlite3.ll b/bench/sqlite/optimized/sqlite3.ll index 396fb2a1ec4..6e84679a4ff 100644 --- a/bench/sqlite/optimized/sqlite3.ll +++ b/bench/sqlite/optimized/sqlite3.ll @@ -133799,8 +133799,8 @@ define internal i32 @vdbeSorterCompareInt(ptr nocapture noundef readonly %0, ptr 18: ; preds = %6 %19 = zext i8 %8 to i64 %20 = add nsw i64 %19, -7 - %.not62 = icmp ult i64 %20, -6 - br i1 %.not62, label %.thread59, label %.lr.ph.preheader + %.not63 = icmp ult i64 %20, -6 + br i1 %.not63, label %.thread59, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %18 %21 = getelementptr inbounds [10 x i8], ptr @vdbeSorterCompareInt.aLen, i64 0, i64 %19 @@ -133831,7 +133831,7 @@ define internal i32 @vdbeSorterCompareInt(ptr nocapture noundef readonly %0, ptr %34 = load i8, ptr %16, align 1 %35 = xor i8 %34, %33 %.not51 = icmp sgt i8 %35, -1 - br i1 %.not51, label %select.unfold, label %36 + br i1 %.not51, label %.thread, label %36 36: ; preds = %32 %.not52 = icmp sgt i8 %33, -1 @@ -133845,7 +133845,7 @@ define internal i32 @vdbeSorterCompareInt(ptr nocapture noundef readonly %0, ptr %42 = icmp ugt i8 %10, 7 %or.cond = and i1 %41, %42 %43 = sub nsw i32 %40, %39 - br i1 %or.cond, label %select.unfold, label %44 + br i1 %or.cond, label %.thread, label %44 44: ; preds = %38 %spec.select56 = select i1 %41, i32 -1, i32 %43 @@ -133857,60 +133857,56 @@ define internal i32 @vdbeSorterCompareInt(ptr nocapture noundef readonly %0, ptr %47 = load i8, ptr %13, align 1 %.not49 = icmp sgt i8 %47, -1 %spec.select = select i1 %.not49, i32 %.2, i32 -1 - br label %select.unfold + br label %.thread 48: ; preds = %44 %49 = load i8, ptr %16, align 1 %.not = icmp sgt i8 %49, -1 - br i1 %.not, label %select.unfold, label %.thread - -select.unfold: ; preds = %38, %48, %46, %32 - %.1 = phi i32 [ %31, %32 ], [ %spec.select, %46 ], [ %spec.select56, %48 ], [ %43, %38 ] - %50 = icmp eq i32 %.1, 0 - br i1 %50, label %.thread59, label %.thread + %spec.select61 = select i1 %.not, i32 %spec.select56, i32 1 + br label %.thread -.thread59: ; preds = %24, %18, %select.unfold - %51 = getelementptr inbounds i8, ptr %0, i64 16 - %52 = load ptr, ptr %51, align 8 - %53 = getelementptr inbounds i8, ptr %52, i64 40 - %54 = load ptr, ptr %53, align 8 - %55 = getelementptr inbounds i8, ptr %54, i64 6 - %56 = load i16, ptr %55, align 2 - %57 = icmp ugt i16 %56, 1 - br i1 %57, label %58, label %73 +.thread59: ; preds = %24, %18 + %50 = getelementptr inbounds i8, ptr %0, i64 16 + %51 = load ptr, ptr %50, align 8 + %52 = getelementptr inbounds i8, ptr %51, i64 40 + %53 = load ptr, ptr %52, align 8 + %54 = getelementptr inbounds i8, ptr %53, i64 6 + %55 = load i16, ptr %54, align 2 + %56 = icmp ugt i16 %55, 1 + br i1 %56, label %57, label %72 -58: ; preds = %.thread59 - %59 = getelementptr inbounds i8, ptr %0, i64 24 - %60 = load ptr, ptr %59, align 8 - %61 = load i32, ptr %1, align 4 - %62 = icmp eq i32 %61, 0 - br i1 %62, label %63, label %vdbeSorterCompareTail.exit +57: ; preds = %.thread59 + %58 = getelementptr inbounds i8, ptr %0, i64 24 + %59 = load ptr, ptr %58, align 8 + %60 = load i32, ptr %1, align 4 + %61 = icmp eq i32 %60, 0 + br i1 %61, label %62, label %vdbeSorterCompareTail.exit -63: ; preds = %58 - tail call fastcc void @sqlite3VdbeRecordUnpack(ptr noundef nonnull %54, i32 noundef %5, ptr noundef nonnull %4, ptr noundef %60) +62: ; preds = %57 + tail call fastcc void @sqlite3VdbeRecordUnpack(ptr noundef nonnull %53, i32 noundef %5, ptr noundef nonnull %4, ptr noundef %59) store i32 1, ptr %1, align 4 br label %vdbeSorterCompareTail.exit -vdbeSorterCompareTail.exit: ; preds = %58, %63 - %64 = tail call fastcc i32 @sqlite3VdbeRecordCompareWithSkip(i32 noundef %3, ptr noundef nonnull %2, ptr noundef %60, i32 noundef 1) - br label %73 +vdbeSorterCompareTail.exit: ; preds = %57, %62 + %63 = tail call fastcc i32 @sqlite3VdbeRecordCompareWithSkip(i32 noundef %3, ptr noundef nonnull %2, ptr noundef %59, i32 noundef 1) + br label %72 -.thread: ; preds = %48, %36, %select.unfold - %.158 = phi i32 [ %.1, %select.unfold ], [ 1, %48 ], [ %37, %36 ] - %65 = getelementptr inbounds i8, ptr %0, i64 16 - %66 = load ptr, ptr %65, align 8 - %67 = getelementptr inbounds i8, ptr %66, i64 40 - %68 = load ptr, ptr %67, align 8 - %69 = getelementptr inbounds i8, ptr %68, i64 24 - %70 = load ptr, ptr %69, align 8 - %71 = load i8, ptr %70, align 1 - %.not53 = icmp eq i8 %71, 0 - %72 = sub nsw i32 0, %.158 - %spec.select55 = select i1 %.not53, i32 %.158, i32 %72 - br label %73 +.thread: ; preds = %38, %48, %32, %46, %36 + %.158 = phi i32 [ %37, %36 ], [ %31, %32 ], [ %spec.select, %46 ], [ %spec.select61, %48 ], [ %43, %38 ] + %64 = getelementptr inbounds i8, ptr %0, i64 16 + %65 = load ptr, ptr %64, align 8 + %66 = getelementptr inbounds i8, ptr %65, i64 40 + %67 = load ptr, ptr %66, align 8 + %68 = getelementptr inbounds i8, ptr %67, i64 24 + %69 = load ptr, ptr %68, align 8 + %70 = load i8, ptr %69, align 1 + %.not53 = icmp eq i8 %70, 0 + %71 = sub nsw i32 0, %.158 + %spec.select55 = select i1 %.not53, i32 %.158, i32 %71 + br label %72 -73: ; preds = %.thread, %.thread59, %vdbeSorterCompareTail.exit - %.3 = phi i32 [ %64, %vdbeSorterCompareTail.exit ], [ 0, %.thread59 ], [ %spec.select55, %.thread ] +72: ; preds = %.thread, %.thread59, %vdbeSorterCompareTail.exit + %.3 = phi i32 [ %63, %vdbeSorterCompareTail.exit ], [ 0, %.thread59 ], [ %spec.select55, %.thread ] ret i32 %.3 } diff --git a/bench/stockfish/optimized/tbprobe.ll b/bench/stockfish/optimized/tbprobe.ll index 31c7261878e..df8c2d5a81f 100644 --- a/bench/stockfish/optimized/tbprobe.ll +++ b/bench/stockfish/optimized/tbprobe.ll @@ -2034,33 +2034,31 @@ define internal fastcc noundef range(i32 -2, -2147483648) i32 @_ZN9Stockfish12_G br i1 %.not, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %28 - %30 = icmp ne i64 %.144, 0 - %31 = icmp eq i64 %.144, %10 - %32 = and i1 %30, %31 - br i1 %32, label %.thread, label %._crit_edge.thread + %30 = icmp eq i64 %.144, %10 + br i1 %30, label %.thread, label %._crit_edge.thread ._crit_edge.thread: ; preds = %2, %._crit_edge %.042.lcssa59 = phi i32 [ %.1, %._crit_edge ], [ -2, %2 ] - %33 = call fastcc noundef i32 @_ZN9Stockfish12_GLOBAL__N_111probe_tableILNS0_6TBTypeE0ENS_10Tablebases8WDLScoreEEET0_RKNS_8PositionEPNS3_10ProbeStateES4_(ptr noundef nonnull align 8 dereferenceable(865) %0, ptr noundef %1) - %34 = load i32, ptr %1, align 4 - %35 = icmp eq i32 %34, 0 - br i1 %35, label %.loopexit, label %36 + %31 = call fastcc noundef i32 @_ZN9Stockfish12_GLOBAL__N_111probe_tableILNS0_6TBTypeE0ENS_10Tablebases8WDLScoreEEET0_RKNS_8PositionEPNS3_10ProbeStateES4_(ptr noundef nonnull align 8 dereferenceable(865) %0, ptr noundef %1) + %32 = load i32, ptr %1, align 4 + %33 = icmp eq i32 %32, 0 + br i1 %33, label %.loopexit, label %34 -36: ; preds = %._crit_edge.thread - %.not47 = icmp slt i32 %.042.lcssa59, %33 +34: ; preds = %._crit_edge.thread + %.not47 = icmp slt i32 %.042.lcssa59, %31 br i1 %.not47, label %.loopexit.sink.split, label %.thread -.thread: ; preds = %._crit_edge, %36 - %.042.lcssa6064 = phi i32 [ %.042.lcssa59, %36 ], [ %.1, %._crit_edge ] - %37 = phi i1 [ false, %36 ], [ true, %._crit_edge ] - %38 = icmp sgt i32 %.042.lcssa6064, 0 - %39 = or i1 %38, %37 - %40 = select i1 %39, i32 2, i32 1 +.thread: ; preds = %._crit_edge, %34 + %.042.lcssa6064 = phi i32 [ %.042.lcssa59, %34 ], [ %.1, %._crit_edge ] + %35 = phi i1 [ false, %34 ], [ true, %._crit_edge ] + %36 = icmp sgt i32 %.042.lcssa6064, 0 + %37 = or i1 %36, %35 + %38 = select i1 %37, i32 2, i32 1 br label %.loopexit.sink.split -.loopexit.sink.split: ; preds = %26, %36, %.thread - %.sink = phi i32 [ %40, %.thread ], [ 1, %36 ], [ 2, %26 ] - %.0.ph = phi i32 [ %.042.lcssa6064, %.thread ], [ %33, %36 ], [ 2, %26 ] +.loopexit.sink.split: ; preds = %26, %34, %.thread + %.sink = phi i32 [ %38, %.thread ], [ 1, %34 ], [ 2, %26 ] + %.0.ph = phi i32 [ %.042.lcssa6064, %.thread ], [ %31, %34 ], [ 2, %26 ] store i32 %.sink, ptr %1, align 4 br label %.loopexit @@ -3864,33 +3862,31 @@ define internal fastcc noundef range(i32 -2147483647, 4094) i32 @_ZN9Stockfish12 br i1 %.not, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %35 - %37 = icmp ne i64 %.147, 0 - %38 = icmp eq i64 %.147, %10 - %39 = and i1 %37, %38 - br i1 %39, label %.thread, label %._crit_edge.thread + %37 = icmp eq i64 %.147, %10 + br i1 %37, label %.thread, label %._crit_edge.thread ._crit_edge.thread: ; preds = %2, %._crit_edge %.045.lcssa63 = phi i32 [ %.1, %._crit_edge ], [ -2, %2 ] - %40 = call fastcc noundef i32 @_ZN9Stockfish12_GLOBAL__N_111probe_tableILNS0_6TBTypeE0ENS_10Tablebases8WDLScoreEEET0_RKNS_8PositionEPNS3_10ProbeStateES4_(ptr noundef nonnull align 8 dereferenceable(865) %0, ptr noundef %1) - %41 = load i32, ptr %1, align 4 - %42 = icmp eq i32 %41, 0 - br i1 %42, label %.loopexit, label %43 + %38 = call fastcc noundef i32 @_ZN9Stockfish12_GLOBAL__N_111probe_tableILNS0_6TBTypeE0ENS_10Tablebases8WDLScoreEEET0_RKNS_8PositionEPNS3_10ProbeStateES4_(ptr noundef nonnull align 8 dereferenceable(865) %0, ptr noundef %1) + %39 = load i32, ptr %1, align 4 + %40 = icmp eq i32 %39, 0 + br i1 %40, label %.loopexit, label %41 -43: ; preds = %._crit_edge.thread - %.not50 = icmp slt i32 %.045.lcssa63, %40 +41: ; preds = %._crit_edge.thread + %.not50 = icmp slt i32 %.045.lcssa63, %38 br i1 %.not50, label %.loopexit.sink.split, label %.thread -.thread: ; preds = %._crit_edge, %43 - %.045.lcssa6468 = phi i32 [ %.045.lcssa63, %43 ], [ %.1, %._crit_edge ] - %44 = phi i1 [ false, %43 ], [ true, %._crit_edge ] - %45 = icmp sgt i32 %.045.lcssa6468, 0 - %46 = or i1 %45, %44 - %47 = select i1 %46, i32 2, i32 1 +.thread: ; preds = %._crit_edge, %41 + %.045.lcssa6468 = phi i32 [ %.045.lcssa63, %41 ], [ %.1, %._crit_edge ] + %42 = phi i1 [ false, %41 ], [ true, %._crit_edge ] + %43 = icmp sgt i32 %.045.lcssa6468, 0 + %44 = or i1 %43, %42 + %45 = select i1 %44, i32 2, i32 1 br label %.loopexit.sink.split -.loopexit.sink.split: ; preds = %33, %43, %.thread - %.sink = phi i32 [ %47, %.thread ], [ 1, %43 ], [ 2, %33 ] - %.0.ph = phi i32 [ %.045.lcssa6468, %.thread ], [ %40, %43 ], [ 2, %33 ] +.loopexit.sink.split: ; preds = %33, %41, %.thread + %.sink = phi i32 [ %45, %.thread ], [ 1, %41 ], [ 2, %33 ] + %.0.ph = phi i32 [ %.045.lcssa6468, %.thread ], [ %38, %41 ], [ 2, %33 ] store i32 %.sink, ptr %1, align 4 br label %.loopexit @@ -7093,8 +7089,8 @@ _ZNSt6vectorImSaImEE6resizeEm.exit: ; preds = %87, %89, %91, %93 %118 = getelementptr inbounds i64, ptr %105, i64 %indvars.iv store i64 %117, ptr %118, align 8 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %.not145 = icmp eq i64 %indvars.iv, 0 - br i1 %.not145, label %.preheader, label %103, !llvm.loop !156 + %.not146 = icmp eq i64 %indvars.iv, 0 + br i1 %.not146, label %.preheader, label %103, !llvm.loop !156 .lr.ph119: ; preds = %.lr.ph119.preheader, %.lr.ph119 %indvars.iv130 = phi i64 [ 0, %.lr.ph119.preheader ], [ %indvars.iv.next131, %.lr.ph119 ] @@ -7133,122 +7129,100 @@ _ZNSt6vectorImSaImEE6resizeEm.exit: ; preds = %87, %89, %91, %93 %135 = getelementptr inbounds i8, ptr %0, i64 112 %136 = load ptr, ptr %135, align 8 %137 = load ptr, ptr %130, align 8 - store ptr null, ptr %3, align 8 - %138 = getelementptr inbounds i8, ptr %3, i64 8 - store i32 0, ptr %138, align 8 - %139 = getelementptr inbounds i8, ptr %3, i64 16 - store ptr null, ptr %139, align 8 - %140 = getelementptr inbounds i8, ptr %3, i64 24 - store i32 0, ptr %140, align 8 - %141 = getelementptr inbounds i8, ptr %3, i64 32 - store ptr null, ptr %141, align 8 + %138 = getelementptr inbounds i8, ptr %3, i64 32 %.not.i.i.i = icmp eq ptr %136, %137 - br i1 %.not.i.i.i, label %._crit_edge._ZNSt6vectorIbSaIbEEC2EmRKS0_.exit_crit_edge, label %142 - -._crit_edge._ZNSt6vectorIbSaIbEEC2EmRKS0_.exit_crit_edge: ; preds = %._crit_edge - %.pre138 = ptrtoint ptr %136 to i64 - %.pre140 = ptrtoint ptr %137 to i64 - %.pre142 = sub i64 %.pre138, %.pre140 - br label %_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit - -142: ; preds = %._crit_edge - %143 = ptrtoint ptr %137 to i64 - %144 = ptrtoint ptr %136 to i64 - %145 = sub i64 %144, %143 - %146 = add i64 %145, 63 - %147 = lshr i64 %146, 3 - %148 = and i64 %147, 2305843009213693944 - %149 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %148) #26 - %150 = lshr i64 %146, 6 - %151 = getelementptr inbounds i64, ptr %149, i64 %150 - store ptr %151, ptr %141, align 8 - store ptr %149, ptr %3, align 8 - store i32 0, ptr %138, align 8 - %152 = sdiv i64 %145, 64 - %153 = getelementptr inbounds i64, ptr %149, i64 %152 - %154 = and i64 %145, -9223372036854775745 - %155 = icmp ugt i64 %154, -9223372036854775808 - %storemerge.idx.i.i.i.i.i.i = select i1 %155, i64 -8, i64 0 - %storemerge.i.i.i.i.i.i = getelementptr inbounds i8, ptr %153, i64 %storemerge.idx.i.i.i.i.i.i - %156 = trunc i64 %145 to i32 - %157 = and i32 %156, 63 - store ptr %storemerge.i.i.i.i.i.i, ptr %139, align 8 - store i32 %157, ptr %140, align 8 - %.idx.i.i = shl nuw nsw i64 %150, 3 - tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %149, i8 0, i64 %.idx.i.i, i1 false) - br label %_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit - -_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit: ; preds = %._crit_edge._ZNSt6vectorIbSaIbEEC2EmRKS0_.exit_crit_edge, %142 - %.pre-phi143 = phi i64 [ %.pre142, %._crit_edge._ZNSt6vectorIbSaIbEEC2EmRKS0_.exit_crit_edge ], [ %145, %142 ] - %158 = phi ptr [ null, %._crit_edge._ZNSt6vectorIbSaIbEEC2EmRKS0_.exit_crit_edge ], [ %149, %142 ] - %.not123 = icmp eq i64 %.pre-phi143, 0 - br i1 %.not123, label %._crit_edge122, label %.lr.ph121 - -.lr.ph121: ; preds = %_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit, %175 - %159 = phi ptr [ %176, %175 ], [ %137, %_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit ] - %160 = phi ptr [ %177, %175 ], [ %136, %_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit ] - %.0120 = phi i64 [ %178, %175 ], [ 0, %_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit ] - %161 = load ptr, ptr %3, align 8 - %162 = sdiv i64 %.0120, 64 - %163 = getelementptr inbounds i64, ptr %161, i64 %162 - %164 = and i64 %.0120, -9223372036854775745 - %165 = icmp ugt i64 %164, -9223372036854775808 - %storemerge.idx.i.i.i.i.i = select i1 %165, i64 -8, i64 0 - %storemerge.i.i.i.i.i = getelementptr inbounds i8, ptr %163, i64 %storemerge.idx.i.i.i.i.i - %166 = and i64 %.0120, 63 - %167 = shl nuw i64 1, %166 - %168 = load i64, ptr %storemerge.i.i.i.i.i, align 8 - %169 = and i64 %168, %167 - %.not106 = icmp eq i64 %169, 0 - br i1 %.not106, label %170, label %175 - -170: ; preds = %.lr.ph121 - %171 = trunc i64 %.0120 to i16 - %172 = call fastcc noundef zeroext i8 @_ZN9Stockfish12_GLOBAL__N_110set_symlenEPNS0_9PairsDataEtRSt6vectorIbSaIbEE(ptr noundef %0, i16 noundef zeroext %171, ptr noundef nonnull align 8 dereferenceable(40) %3) - %173 = load ptr, ptr %130, align 8 - %174 = getelementptr inbounds i8, ptr %173, i64 %.0120 - store i8 %172, ptr %174, align 1 + br i1 %.not.i.i.i, label %_ZNSt6vectorIbSaIbEED2Ev.exit, label %.lr.ph121.preheader + +.lr.ph121.preheader: ; preds = %._crit_edge + %139 = getelementptr inbounds i8, ptr %3, i64 24 + %140 = getelementptr inbounds i8, ptr %3, i64 16 + %141 = getelementptr inbounds i8, ptr %3, i64 8 + %142 = ptrtoint ptr %137 to i64 + %143 = ptrtoint ptr %136 to i64 + %144 = sub i64 %143, %142 + %145 = add i64 %144, 63 + %146 = lshr i64 %145, 3 + %147 = and i64 %146, 2305843009213693944 + %148 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %147) #26 + %149 = lshr i64 %145, 6 + %150 = getelementptr inbounds i64, ptr %148, i64 %149 + store ptr %150, ptr %138, align 8 + store ptr %148, ptr %3, align 8 + store i32 0, ptr %141, align 8 + %151 = sdiv i64 %144, 64 + %152 = getelementptr inbounds i64, ptr %148, i64 %151 + %153 = and i64 %144, -9223372036854775745 + %154 = icmp ugt i64 %153, -9223372036854775808 + %storemerge.idx.i.i.i.i.i.i = select i1 %154, i64 -8, i64 0 + %storemerge.i.i.i.i.i.i = getelementptr inbounds i8, ptr %152, i64 %storemerge.idx.i.i.i.i.i.i + %155 = trunc i64 %144 to i32 + %156 = and i32 %155, 63 + store ptr %storemerge.i.i.i.i.i.i, ptr %140, align 8 + store i32 %156, ptr %139, align 8 + %.idx.i.i = shl nuw nsw i64 %149, 3 + tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %148, i8 0, i64 %.idx.i.i, i1 false) + br label %.lr.ph121 + +.lr.ph121: ; preds = %.lr.ph121.preheader, %173 + %157 = phi ptr [ %174, %173 ], [ %137, %.lr.ph121.preheader ] + %158 = phi ptr [ %175, %173 ], [ %136, %.lr.ph121.preheader ] + %.0120 = phi i64 [ %176, %173 ], [ 0, %.lr.ph121.preheader ] + %159 = load ptr, ptr %3, align 8 + %160 = sdiv i64 %.0120, 64 + %161 = getelementptr inbounds i64, ptr %159, i64 %160 + %162 = and i64 %.0120, -9223372036854775745 + %163 = icmp ugt i64 %162, -9223372036854775808 + %storemerge.idx.i.i.i.i.i = select i1 %163, i64 -8, i64 0 + %storemerge.i.i.i.i.i = getelementptr inbounds i8, ptr %161, i64 %storemerge.idx.i.i.i.i.i + %164 = and i64 %.0120, 63 + %165 = shl nuw i64 1, %164 + %166 = load i64, ptr %storemerge.i.i.i.i.i, align 8 + %167 = and i64 %166, %165 + %.not106 = icmp eq i64 %167, 0 + br i1 %.not106, label %168, label %173 + +168: ; preds = %.lr.ph121 + %169 = trunc i64 %.0120 to i16 + %170 = call fastcc noundef zeroext i8 @_ZN9Stockfish12_GLOBAL__N_110set_symlenEPNS0_9PairsDataEtRSt6vectorIbSaIbEE(ptr noundef %0, i16 noundef zeroext %169, ptr noundef nonnull align 8 dereferenceable(40) %3) + %171 = load ptr, ptr %130, align 8 + %172 = getelementptr inbounds i8, ptr %171, i64 %.0120 + store i8 %170, ptr %172, align 1 %.pre134 = load ptr, ptr %135, align 8 %.pre135 = load ptr, ptr %130, align 8 - br label %175 - -175: ; preds = %.lr.ph121, %170 - %176 = phi ptr [ %159, %.lr.ph121 ], [ %.pre135, %170 ] - %177 = phi ptr [ %160, %.lr.ph121 ], [ %.pre134, %170 ] - %178 = add nuw i64 %.0120, 1 - %179 = ptrtoint ptr %177 to i64 - %180 = ptrtoint ptr %176 to i64 - %181 = sub i64 %179, %180 - %182 = icmp ult i64 %178, %181 - br i1 %182, label %.lr.ph121, label %._crit_edge122.loopexit, !llvm.loop !158 - -._crit_edge122.loopexit: ; preds = %175 + br label %173 + +173: ; preds = %.lr.ph121, %168 + %174 = phi ptr [ %157, %.lr.ph121 ], [ %.pre135, %168 ] + %175 = phi ptr [ %158, %.lr.ph121 ], [ %.pre134, %168 ] + %176 = add nuw i64 %.0120, 1 + %177 = ptrtoint ptr %175 to i64 + %178 = ptrtoint ptr %174 to i64 + %179 = sub i64 %177, %178 + %180 = icmp ult i64 %176, %179 + br i1 %180, label %.lr.ph121, label %._crit_edge122, !llvm.loop !158 + +._crit_edge122: ; preds = %173 %.pre136 = load ptr, ptr %3, align 8 - br label %._crit_edge122 - -._crit_edge122: ; preds = %._crit_edge122.loopexit, %_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit - %183 = phi ptr [ %158, %_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit ], [ %.pre136, %._crit_edge122.loopexit ] - %.lcssa = phi i64 [ 0, %_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit ], [ %181, %._crit_edge122.loopexit ] - %184 = mul i64 %.lcssa, 3 - %185 = getelementptr inbounds i8, ptr %133, i64 %184 - %186 = and i64 %.lcssa, 1 - %187 = getelementptr inbounds i8, ptr %185, i64 %186 - %.not.i.i.i102 = icmp eq ptr %183, null - br i1 %.not.i.i.i102, label %_ZNSt6vectorIbSaIbEED2Ev.exit, label %188 - -188: ; preds = %._crit_edge122 - %189 = load ptr, ptr %141, align 8 - %190 = ptrtoint ptr %189 to i64 - %191 = ptrtoint ptr %183 to i64 - %192 = sub i64 %190, %191 - %193 = ashr exact i64 %192, 3 - %194 = sub nsw i64 0, %193 - %195 = getelementptr inbounds i64, ptr %189, i64 %194 - call void @_ZdlPv(ptr noundef %195) #23 + %181 = mul i64 %179, 3 + %182 = getelementptr inbounds i8, ptr %133, i64 %181 + %183 = and i64 %179, 1 + %184 = getelementptr inbounds i8, ptr %182, i64 %183 + %.not.i.i.i102 = icmp eq ptr %.pre136, null + br i1 %.not.i.i.i102, label %_ZNSt6vectorIbSaIbEED2Ev.exit, label %185 + +185: ; preds = %._crit_edge122 + %186 = load ptr, ptr %138, align 8 + %187 = ptrtoint ptr %186 to i64 + %188 = ptrtoint ptr %.pre136 to i64 + %189 = sub i64 %187, %188 + %190 = ashr exact i64 %189, 3 + %191 = sub nsw i64 0, %190 + %192 = getelementptr inbounds i64, ptr %186, i64 %191 + call void @_ZdlPv(ptr noundef %192) #23 br label %_ZNSt6vectorIbSaIbEED2Ev.exit -_ZNSt6vectorIbSaIbEED2Ev.exit: ; preds = %188, %._crit_edge122, %6 - %.078 = phi ptr [ %11, %6 ], [ %187, %._crit_edge122 ], [ %187, %188 ] +_ZNSt6vectorIbSaIbEED2Ev.exit: ; preds = %._crit_edge, %185, %._crit_edge122, %6 + %.078 = phi ptr [ %11, %6 ], [ %184, %._crit_edge122 ], [ %184, %185 ], [ %133, %._crit_edge ] ret ptr %.078 } diff --git a/bench/typst-rs/optimized/3dimj4rf5dyrieyi.ll b/bench/typst-rs/optimized/3dimj4rf5dyrieyi.ll index 6faf21e77f7..2b4826ed426 100644 --- a/bench/typst-rs/optimized/3dimj4rf5dyrieyi.ll +++ b/bench/typst-rs/optimized/3dimj4rf5dyrieyi.ll @@ -2014,13 +2014,13 @@ define internal fastcc void @"_ZN100_$LT$core..iter..adapters..skip..Skip$LT$I$G to label %28 unwind label %35, !noalias !5 common.resume.sink.split.i.i.i.i: ; preds = %.body64.i.i.i.i, %.body45.i.i.i.i, %.body.i.i.i.i - %.sink.i.i.i.i = phi ptr [ %11, %.body.i.i.i.i ], [ %.sroa.7.0..sroa_idx13.i.i.i.i, %.body45.i.i.i.i ], [ %99, %.body64.i.i.i.i ] - %common.resume.op.ph.i.i.i.i = phi { ptr, i32 } [ %57, %.body.i.i.i.i ], [ %89, %.body45.i.i.i.i ], [ %145, %.body64.i.i.i.i ] + %.sink.i.i.i.i = phi ptr [ %11, %.body.i.i.i.i ], [ %.sroa.7.0..sroa_idx13.i.i.i.i, %.body45.i.i.i.i ], [ %.sroa.7.0..sroa_idx17.i.i.i.i, %.body64.i.i.i.i ] + %common.resume.op.ph.i.i.i.i = phi { ptr, i32 } [ %57, %.body.i.i.i.i ], [ %89, %.body45.i.i.i.i ], [ %143, %.body64.i.i.i.i ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sink.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(64) %.sroa.7.i.i.i.i, i64 64, i1 false), !noalias !5 br label %common.resume.i.i.i.i -common.resume.i.i.i.i: ; preds = %28, %116, %common.resume.sink.split.i.i.i.i - %common.resume.op.i.i.i.i = phi { ptr, i32 } [ %common.resume.op.ph.i.i.i.i, %common.resume.sink.split.i.i.i.i ], [ %119, %116 ], [ %31, %28 ] +common.resume.i.i.i.i: ; preds = %28, %115, %common.resume.sink.split.i.i.i.i + %common.resume.op.i.i.i.i = phi { ptr, i32 } [ %common.resume.op.ph.i.i.i.i, %common.resume.sink.split.i.i.i.i ], [ %118, %115 ], [ %31, %28 ] resume { ptr, i32 } %common.resume.op.i.i.i.i 35: ; preds = %32 @@ -2194,169 +2194,165 @@ _ZN4core3ops8function5FnMut8call_mut17hbf9d6b77650cef0aE.exit.i.i.i.i: ; preds = %96 = getelementptr inbounds i8, ptr %1, i64 72 %97 = load i64, ptr %96, align 8, !range !20, !alias.scope !21, !noalias !5, !noundef !4 %.not27.i.i.i.i = icmp eq i64 %97, 0 + %.sroa.7.0..sroa_idx17.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 80 br i1 %.not27.i.i.i.i, label %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.i", label %98 98: ; preds = %"_ZN4core3ptr130drop_in_place$LT$core..option..Option$LT$core..array..iter..IntoIter$LT$typst..foundations..content..Content$C$2_usize$GT$$GT$$GT$17h1b381cfcf98f74c3E.exit47.i.i.i.i" - %99 = getelementptr inbounds i8, ptr %1, i64 80 - %100 = getelementptr inbounds i8, ptr %1, i64 128 - %101 = getelementptr inbounds i8, ptr %1, i64 136 - %102 = load i64, ptr %101, align 8, !alias.scope !100, !noalias !5, !noundef !4 - %103 = load i64, ptr %100, align 8, !alias.scope !100, !noalias !5, !noundef !4 - %104 = sub nuw i64 %102, %103 - %.not.i.i.i48.i.i.i.i = icmp ugt i64 %95, %104 - %105 = add nuw i64 %103, %95 - %.0.i.i.i49.i.i.i.i = select i1 %.not.i.i.i48.i.i.i.i, i64 %102, i64 %105 - store i64 %.0.i.i.i49.i.i.i.i, ptr %100, align 8, !alias.scope !100, !noalias !5 - %106 = sub nuw i64 %.0.i.i.i49.i.i.i.i, %103 - %107 = getelementptr inbounds { [3 x i64] }, ptr %99, i64 %103 - %108 = icmp eq i64 %.0.i.i.i49.i.i.i.i, %103 - br i1 %108, label %_ZN4core3ops8function5FnMut8call_mut17hbf9d6b77650cef0aE.exit56.i.i.i.i, label %.lr.ph.i.i.i.i50.i.i.i.i + %99 = getelementptr inbounds i8, ptr %1, i64 128 + %100 = getelementptr inbounds i8, ptr %1, i64 136 + %101 = load i64, ptr %100, align 8, !alias.scope !100, !noalias !5, !noundef !4 + %102 = load i64, ptr %99, align 8, !alias.scope !100, !noalias !5, !noundef !4 + %103 = sub nuw i64 %101, %102 + %.not.i.i.i48.i.i.i.i = icmp ugt i64 %95, %103 + %104 = add nuw i64 %102, %95 + %.0.i.i.i49.i.i.i.i = select i1 %.not.i.i.i48.i.i.i.i, i64 %101, i64 %104 + store i64 %.0.i.i.i49.i.i.i.i, ptr %99, align 8, !alias.scope !100, !noalias !5 + %105 = sub nuw i64 %.0.i.i.i49.i.i.i.i, %102 + %106 = getelementptr inbounds { [3 x i64] }, ptr %.sroa.7.0..sroa_idx17.i.i.i.i, i64 %102 + %107 = icmp eq i64 %.0.i.i.i49.i.i.i.i, %102 + br i1 %107, label %_ZN4core3ops8function5FnMut8call_mut17hbf9d6b77650cef0aE.exit56.i.i.i.i, label %.lr.ph.i.i.i.i50.i.i.i.i .lr.ph.i.i.i.i50.i.i.i.i: ; preds = %98, %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i52.i.i.i.i" - %.08.i.i.i.i51.i.i.i.i = phi i64 [ %110, %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i52.i.i.i.i" ], [ 0, %98 ] - %109 = getelementptr inbounds [0 x { { { { ptr, ptr } }, {}, {} }, i64 }], ptr %107, i64 0, i64 %.08.i.i.i.i51.i.i.i.i - %110 = add nuw i64 %.08.i.i.i.i51.i.i.i.i, 1 + %.08.i.i.i.i51.i.i.i.i = phi i64 [ %109, %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i52.i.i.i.i" ], [ 0, %98 ] + %108 = getelementptr inbounds [0 x { { { { ptr, ptr } }, {}, {} }, i64 }], ptr %106, i64 0, i64 %.08.i.i.i.i51.i.i.i.i + %109 = add nuw i64 %.08.i.i.i.i51.i.i.i.i, 1 call void @llvm.experimental.noalias.scope.decl(metadata !107) call void @llvm.experimental.noalias.scope.decl(metadata !110) call void @llvm.experimental.noalias.scope.decl(metadata !113) - %111 = load ptr, ptr %109, align 8, !alias.scope !116, !noalias !5, !nonnull !4, !noundef !4 - %112 = atomicrmw sub ptr %111, i64 1 release, align 8, !noalias !119 - %113 = icmp eq i64 %112, 1 - br i1 %113, label %114, label %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i52.i.i.i.i" + %110 = load ptr, ptr %108, align 8, !alias.scope !116, !noalias !5, !nonnull !4, !noundef !4 + %111 = atomicrmw sub ptr %110, i64 1 release, align 8, !noalias !119 + %112 = icmp eq i64 %111, 1 + br i1 %112, label %113, label %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i52.i.i.i.i" -114: ; preds = %.lr.ph.i.i.i.i50.i.i.i.i +113: ; preds = %.lr.ph.i.i.i.i50.i.i.i.i invoke void @_ZN4core4sync6atomic5fence17h683d388ef8afd54bE.llvm.16845035774076767816(i8 noundef 2) - to label %.noexc.i.i.i.i55.i.i.i.i unwind label %118, !noalias !5 + to label %.noexc.i.i.i.i55.i.i.i.i unwind label %117, !noalias !5 -.noexc.i.i.i.i55.i.i.i.i: ; preds = %114 - invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h770d7b3d46ee205cE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %109) - to label %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i52.i.i.i.i" unwind label %118, !noalias !5 +.noexc.i.i.i.i55.i.i.i.i: ; preds = %113 + invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h770d7b3d46ee205cE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %108) + to label %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i52.i.i.i.i" unwind label %117, !noalias !5 "_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i52.i.i.i.i": ; preds = %.noexc.i.i.i.i55.i.i.i.i, %.lr.ph.i.i.i.i50.i.i.i.i - %115 = icmp eq i64 %110, %106 - br i1 %115, label %_ZN4core3ops8function5FnMut8call_mut17hbf9d6b77650cef0aE.exit56.i.i.i.i, label %.lr.ph.i.i.i.i50.i.i.i.i + %114 = icmp eq i64 %109, %105 + br i1 %114, label %_ZN4core3ops8function5FnMut8call_mut17hbf9d6b77650cef0aE.exit56.i.i.i.i, label %.lr.ph.i.i.i.i50.i.i.i.i -116: ; preds = %120, %118 - %.1.i.i.i.i54.i.i.i.i = phi i64 [ %110, %118 ], [ %122, %120 ] - %117 = icmp eq i64 %.1.i.i.i.i54.i.i.i.i, %106 - br i1 %117, label %common.resume.i.i.i.i, label %120 +115: ; preds = %119, %117 + %.1.i.i.i.i54.i.i.i.i = phi i64 [ %109, %117 ], [ %121, %119 ] + %116 = icmp eq i64 %.1.i.i.i.i54.i.i.i.i, %105 + br i1 %116, label %common.resume.i.i.i.i, label %119 -118: ; preds = %.noexc.i.i.i.i55.i.i.i.i, %114 - %119 = landingpad { ptr, i32 } +117: ; preds = %.noexc.i.i.i.i55.i.i.i.i, %113 + %118 = landingpad { ptr, i32 } cleanup - br label %116 + br label %115 -120: ; preds = %116 - %121 = getelementptr inbounds [0 x { { { { ptr, ptr } }, {}, {} }, i64 }], ptr %107, i64 0, i64 %.1.i.i.i.i54.i.i.i.i - %122 = add i64 %.1.i.i.i.i54.i.i.i.i, 1 - invoke void @"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %121) #55 - to label %116 unwind label %123, !noalias !5 +119: ; preds = %115 + %120 = getelementptr inbounds [0 x { { { { ptr, ptr } }, {}, {} }, i64 }], ptr %106, i64 0, i64 %.1.i.i.i.i54.i.i.i.i + %121 = add i64 %.1.i.i.i.i54.i.i.i.i, 1 + invoke void @"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %120) #55 + to label %115 unwind label %122, !noalias !5 -123: ; preds = %120 - %124 = landingpad { ptr, i32 } +122: ; preds = %119 + %123 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #56, !noalias !5 unreachable _ZN4core3ops8function5FnMut8call_mut17hbf9d6b77650cef0aE.exit56.i.i.i.i: ; preds = %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i52.i.i.i.i", %98 - %125 = sub i64 %95, %106 - %126 = icmp eq i64 %95, %106 - br i1 %126, label %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.thread.i", label %127 + %124 = icmp eq i64 %95, %105 + br i1 %124, label %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.thread.i", label %125 -127: ; preds = %_ZN4core3ops8function5FnMut8call_mut17hbf9d6b77650cef0aE.exit56.i.i.i.i +125: ; preds = %_ZN4core3ops8function5FnMut8call_mut17hbf9d6b77650cef0aE.exit56.i.i.i.i %.pr79.i.i.i.i = load i64, ptr %96, align 8, !alias.scope !120, !noalias !5 - %128 = icmp eq i64 %.pr79.i.i.i.i, 0 - br i1 %128, label %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.thread7.i", label %129 - -129: ; preds = %127 - %130 = load i64, ptr %100, align 8, !alias.scope !123, !noalias !5, !noundef !4 - %131 = load i64, ptr %101, align 8, !alias.scope !123, !noalias !5, !noundef !4 - %132 = getelementptr inbounds { [3 x i64] }, ptr %99, i64 %130 - %133 = sub nuw i64 %131, %130 - %134 = icmp eq i64 %131, %130 - br i1 %134, label %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.thread7.i", label %.lr.ph.i.i.i.i59.i.i.i.i - -.lr.ph.i.i.i.i59.i.i.i.i: ; preds = %129, %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i61.i.i.i.i" - %.08.i.i.i.i60.i.i.i.i = phi i64 [ %136, %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i61.i.i.i.i" ], [ 0, %129 ] - %135 = getelementptr inbounds [0 x { { { { ptr, ptr } }, {}, {} }, i64 }], ptr %132, i64 0, i64 %.08.i.i.i.i60.i.i.i.i - %136 = add nuw i64 %.08.i.i.i.i60.i.i.i.i, 1 + %126 = icmp eq i64 %.pr79.i.i.i.i, 0 + br i1 %126, label %.sink.split.i, label %127 + +127: ; preds = %125 + %128 = load i64, ptr %99, align 8, !alias.scope !123, !noalias !5, !noundef !4 + %129 = load i64, ptr %100, align 8, !alias.scope !123, !noalias !5, !noundef !4 + %130 = getelementptr inbounds { [3 x i64] }, ptr %.sroa.7.0..sroa_idx17.i.i.i.i, i64 %128 + %131 = sub nuw i64 %129, %128 + %132 = icmp eq i64 %129, %128 + br i1 %132, label %.sink.split.i, label %.lr.ph.i.i.i.i59.i.i.i.i + +.lr.ph.i.i.i.i59.i.i.i.i: ; preds = %127, %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i61.i.i.i.i" + %.08.i.i.i.i60.i.i.i.i = phi i64 [ %134, %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i61.i.i.i.i" ], [ 0, %127 ] + %133 = getelementptr inbounds [0 x { { { { ptr, ptr } }, {}, {} }, i64 }], ptr %130, i64 0, i64 %.08.i.i.i.i60.i.i.i.i + %134 = add nuw i64 %.08.i.i.i.i60.i.i.i.i, 1 call void @llvm.experimental.noalias.scope.decl(metadata !130) call void @llvm.experimental.noalias.scope.decl(metadata !133) call void @llvm.experimental.noalias.scope.decl(metadata !136) - %137 = load ptr, ptr %135, align 8, !alias.scope !139, !noalias !5, !nonnull !4, !noundef !4 - %138 = atomicrmw sub ptr %137, i64 1 release, align 8, !noalias !142 - %139 = icmp eq i64 %138, 1 - br i1 %139, label %140, label %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i61.i.i.i.i" + %135 = load ptr, ptr %133, align 8, !alias.scope !139, !noalias !5, !nonnull !4, !noundef !4 + %136 = atomicrmw sub ptr %135, i64 1 release, align 8, !noalias !142 + %137 = icmp eq i64 %136, 1 + br i1 %137, label %138, label %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i61.i.i.i.i" -140: ; preds = %.lr.ph.i.i.i.i59.i.i.i.i +138: ; preds = %.lr.ph.i.i.i.i59.i.i.i.i invoke void @_ZN4core4sync6atomic5fence17h683d388ef8afd54bE.llvm.16845035774076767816(i8 noundef 2) - to label %.noexc.i.i.i.i63.i.i.i.i unwind label %144, !noalias !5 + to label %.noexc.i.i.i.i63.i.i.i.i unwind label %142, !noalias !5 -.noexc.i.i.i.i63.i.i.i.i: ; preds = %140 - invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h770d7b3d46ee205cE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %135) - to label %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i61.i.i.i.i" unwind label %144, !noalias !5 +.noexc.i.i.i.i63.i.i.i.i: ; preds = %138 + invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h770d7b3d46ee205cE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %133) + to label %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i61.i.i.i.i" unwind label %142, !noalias !5 "_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i61.i.i.i.i": ; preds = %.noexc.i.i.i.i63.i.i.i.i, %.lr.ph.i.i.i.i59.i.i.i.i - %141 = icmp eq i64 %136, %133 - br i1 %141, label %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.i", label %.lr.ph.i.i.i.i59.i.i.i.i + %139 = icmp eq i64 %134, %131 + br i1 %139, label %.sink.split.i, label %.lr.ph.i.i.i.i59.i.i.i.i -142: ; preds = %146, %144 - %.1.i.i.i.i62.i.i.i.i = phi i64 [ %136, %144 ], [ %148, %146 ] - %143 = icmp eq i64 %.1.i.i.i.i62.i.i.i.i, %133 - br i1 %143, label %.body64.i.i.i.i, label %146 +140: ; preds = %144, %142 + %.1.i.i.i.i62.i.i.i.i = phi i64 [ %134, %142 ], [ %146, %144 ] + %141 = icmp eq i64 %.1.i.i.i.i62.i.i.i.i, %131 + br i1 %141, label %.body64.i.i.i.i, label %144 -144: ; preds = %.noexc.i.i.i.i63.i.i.i.i, %140 - %145 = landingpad { ptr, i32 } +142: ; preds = %.noexc.i.i.i.i63.i.i.i.i, %138 + %143 = landingpad { ptr, i32 } cleanup - br label %142 + br label %140 -146: ; preds = %142 - %147 = getelementptr inbounds [0 x { { { { ptr, ptr } }, {}, {} }, i64 }], ptr %132, i64 0, i64 %.1.i.i.i.i62.i.i.i.i - %148 = add i64 %.1.i.i.i.i62.i.i.i.i, 1 - invoke void @"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %147) #55 - to label %142 unwind label %149, !noalias !5 +144: ; preds = %140 + %145 = getelementptr inbounds [0 x { { { { ptr, ptr } }, {}, {} }, i64 }], ptr %130, i64 0, i64 %.1.i.i.i.i62.i.i.i.i + %146 = add i64 %.1.i.i.i.i62.i.i.i.i, 1 + invoke void @"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %145) #55 + to label %140 unwind label %147, !noalias !5 -149: ; preds = %146 - %150 = landingpad { ptr, i32 } +147: ; preds = %144 + %148 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #56, !noalias !5 unreachable -.body64.i.i.i.i: ; preds = %142 +.body64.i.i.i.i: ; preds = %140 store i64 0, ptr %96, align 8, !alias.scope !21, !noalias !5 br label %common.resume.sink.split.i.i.i.i "_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.thread.i": ; preds = %_ZN4core3ops8function5FnMut8call_mut17hbf9d6b77650cef0aE.exit56.i.i.i.i, %"_ZN107_$LT$core..iter..adapters..fuse..Fuse$LT$I$GT$$u20$as$u20$core..iter..adapters..fuse..FuseImpl$LT$I$GT$$GT$8try_fold17h9c040b437c66f098E.exit.i.i.i.i", %_ZN4core3ops8function5FnMut8call_mut17hbf9d6b77650cef0aE.exit.i.i.i.i call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %3), !noalias !19 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %.sroa.7.i.i.i.i) - br label %152 + br label %150 -"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.thread7.i": ; preds = %129, %127 - store i64 0, ptr %96, align 8, !alias.scope !21, !noalias !5 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %99, ptr noundef nonnull align 8 dereferenceable(64) %.sroa.7.i.i.i.i, i64 64, i1 false), !noalias !5 +"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.i": ; preds = %"_ZN4core3ptr130drop_in_place$LT$core..option..Option$LT$core..array..iter..IntoIter$LT$typst..foundations..content..Content$C$2_usize$GT$$GT$$GT$17h1b381cfcf98f74c3E.exit47.i.i.i.i" + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.7.0..sroa_idx17.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(64) %.sroa.7.i.i.i.i, i64 64, i1 false), !noalias !5 call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %3), !noalias !19 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %.sroa.7.i.i.i.i) - br label %153 + %149 = icmp eq i64 %95, 0 + br i1 %149, label %150, label %151 -"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.i": ; preds = %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i61.i.i.i.i", %"_ZN4core3ptr130drop_in_place$LT$core..option..Option$LT$core..array..iter..IntoIter$LT$typst..foundations..content..Content$C$2_usize$GT$$GT$$GT$17h1b381cfcf98f74c3E.exit47.i.i.i.i" - %.182.i.i.i.i = phi i64 [ %95, %"_ZN4core3ptr130drop_in_place$LT$core..option..Option$LT$core..array..iter..IntoIter$LT$typst..foundations..content..Content$C$2_usize$GT$$GT$$GT$17h1b381cfcf98f74c3E.exit47.i.i.i.i" ], [ %125, %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i61.i.i.i.i" ] +150: ; preds = %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.i", %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.thread.i" + call fastcc void @"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd9f0ab63c7c978d1E"(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %0, ptr noalias noundef nonnull align 8 dereferenceable(160) %1) + br label %_ZN4core4iter6traits8iterator8Iterator3nth17h888c86bdcdec48b5E.exit + +.sink.split.i: ; preds = %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i61.i.i.i.i", %125, %127 store i64 0, ptr %96, align 8, !alias.scope !21, !noalias !5 - %.sroa.7.0..sroa_idx17.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 80 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.7.0..sroa_idx17.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(64) %.sroa.7.i.i.i.i, i64 64, i1 false), !noalias !5 call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %3), !noalias !19 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %.sroa.7.i.i.i.i) - %151 = icmp eq i64 %.182.i.i.i.i, 0 - br i1 %151, label %152, label %153 - -152: ; preds = %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.i", %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.thread.i" - call fastcc void @"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd9f0ab63c7c978d1E"(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %0, ptr noalias noundef nonnull align 8 dereferenceable(160) %1) - br label %_ZN4core4iter6traits8iterator8Iterator3nth17h888c86bdcdec48b5E.exit + br label %151 -153: ; preds = %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.i", %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.thread7.i" +151: ; preds = %.sink.split.i, %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.i" store ptr null, ptr %0, align 8, !alias.scope !5, !noalias !8 br label %_ZN4core4iter6traits8iterator8Iterator3nth17h888c86bdcdec48b5E.exit -_ZN4core4iter6traits8iterator8Iterator3nth17h888c86bdcdec48b5E.exit: ; preds = %153, %152, %7 +_ZN4core4iter6traits8iterator8Iterator3nth17h888c86bdcdec48b5E.exit: ; preds = %151, %150, %7 ret void } diff --git a/bench/typst-rs/optimized/40w6rezair915kkd.ll b/bench/typst-rs/optimized/40w6rezair915kkd.ll index b198011f818..b0319e1c700 100644 --- a/bench/typst-rs/optimized/40w6rezair915kkd.ll +++ b/bench/typst-rs/optimized/40w6rezair915kkd.ll @@ -93732,17 +93732,17 @@ define void @_ZN5typst5model10numbering_16NumberingPattern9apply_kth17hcee67b0a5 %.not = icmp eq i64 %9, 0 br i1 %.not, label %24, label %15 -"_ZN4core3ptr44drop_in_place$LT$ecow..string..EcoString$GT$17h2cca40327d577ef0E.exit36": ; preds = %47, %50, %13 - %.pn = phi { ptr, i32 } [ %14, %13 ], [ %48, %50 ], [ %48, %47 ] +"_ZN4core3ptr44drop_in_place$LT$ecow..string..EcoString$GT$17h2cca40327d577ef0E.exit36": ; preds = %45, %48, %13 + %.pn = phi { ptr, i32 } [ %14, %13 ], [ %46, %48 ], [ %46, %45 ] %10 = load i8, ptr %.sroa.06.sroa.4.0..sroa_idx, align 1, !alias.scope !23763, !noundef !4 %11 = icmp sgt i8 %10, -1 br i1 %11, label %12, label %"_ZN4core3ptr44drop_in_place$LT$ecow..string..EcoString$GT$17h2cca40327d577ef0E.exit" 12: ; preds = %"_ZN4core3ptr44drop_in_place$LT$ecow..string..EcoString$GT$17h2cca40327d577ef0E.exit36" invoke void @"_ZN68_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3d104556f500dee7E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %6) - to label %"_ZN4core3ptr44drop_in_place$LT$ecow..string..EcoString$GT$17h2cca40327d577ef0E.exit" unwind label %63 + to label %"_ZN4core3ptr44drop_in_place$LT$ecow..string..EcoString$GT$17h2cca40327d577ef0E.exit" unwind label %61 -13: ; preds = %62, %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit.thread", %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit.thread41", %15 +13: ; preds = %60, %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit.thread", %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit.thread41", %15 %14 = landingpad { ptr, i32 } cleanup br label %"_ZN4core3ptr44drop_in_place$LT$ecow..string..EcoString$GT$17h2cca40327d577ef0E.exit36" @@ -93787,109 +93787,104 @@ define void @_ZN5typst5model10numbering_16NumberingPattern9apply_kth17hcee67b0a5 _ZN4core4iter6traits8iterator8Iterator10advance_by17hb696008257f8c6cbE.exit.i.i.i.cont: ; preds = %.lr.ph.i %32 = sub i64 %28, %.sroa.01.0.i.i.i25.i - %33 = icmp eq i64 %32, 0 - br i1 %33, label %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit", label %.preheader.i.i.i - -.preheader.i.i.i: ; preds = %_ZN4core4iter6traits8iterator8Iterator10advance_by17hb696008257f8c6cbE.exit.i.i.i.cont, %_ZN4core4iter6traits8iterator8Iterator10advance_by17hb696008257f8c6cbE.exit23.i.i.i - %.014.i.i.i = phi i64 [ %37, %_ZN4core4iter6traits8iterator8Iterator10advance_by17hb696008257f8c6cbE.exit23.i.i.i ], [ %32, %_ZN4core4iter6traits8iterator8Iterator10advance_by17hb696008257f8c6cbE.exit.i.i.i.cont ] - br label %34 - -34: ; preds = %35, %.preheader.i.i.i - %.not.i19.i.i.i = phi i1 [ %.not, %.preheader.i.i.i ], [ true, %35 ] - %.sroa.01.0.i20.i.i.i = phi i64 [ 0, %.preheader.i.i.i ], [ %36, %35 ] - %exitcond.not.i21.i.i.i = icmp eq i64 %.sroa.01.0.i20.i.i.i, %.014.i.i.i - br i1 %exitcond.not.i21.i.i.i, label %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit", label %35 - -35: ; preds = %34 - %36 = add i64 %.sroa.01.0.i20.i.i.i, 1 - br i1 %.not.i19.i.i.i, label %_ZN4core4iter6traits8iterator8Iterator10advance_by17hb696008257f8c6cbE.exit23.i.i.i, label %34 - -_ZN4core4iter6traits8iterator8Iterator10advance_by17hb696008257f8c6cbE.exit23.i.i.i: ; preds = %35 - %37 = sub i64 %.014.i.i.i, %.sroa.01.0.i20.i.i.i - %38 = icmp eq i64 %37, 0 - %39 = icmp eq i64 %.sroa.01.0.i20.i.i.i, 0 - %or.cond.i.i.i = or i1 %39, %38 - br i1 %or.cond.i.i.i, label %"_ZN102_$LT$core..iter..adapters..cycle..Cycle$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17h6124aec5e1214f81E.exit.i.i", label %.preheader.i.i.i - -"_ZN102_$LT$core..iter..adapters..cycle..Cycle$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17h6124aec5e1214f81E.exit.i.i": ; preds = %_ZN4core4iter6traits8iterator8Iterator10advance_by17hb696008257f8c6cbE.exit23.i.i.i - br i1 %38, label %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit", label %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit.thread" + br label %33 -"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit": ; preds = %30, %34, %_ZN4core4iter6traits8iterator8Iterator10advance_by17hb696008257f8c6cbE.exit.i.i.i.cont, %"_ZN102_$LT$core..iter..adapters..cycle..Cycle$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17h6124aec5e1214f81E.exit.i.i", %29 - %40 = phi ptr [ null, %_ZN4core4iter6traits8iterator8Iterator10advance_by17hb696008257f8c6cbE.exit.i.i.i.cont ], [ null, %"_ZN102_$LT$core..iter..adapters..cycle..Cycle$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17h6124aec5e1214f81E.exit.i.i" ], [ %.026, %29 ], [ null, %34 ], [ null, %30 ] - %41 = icmp eq ptr %40, null - %spec.select.i.i.i = select i1 %41, ptr %.026, ptr %40 - %.not29 = and i1 %.not, %41 +33: ; preds = %_ZN4core4iter6traits8iterator8Iterator10advance_by17hb696008257f8c6cbE.exit23.i.i.i, %_ZN4core4iter6traits8iterator8Iterator10advance_by17hb696008257f8c6cbE.exit.i.i.i.cont + %.014.i.i.i = phi i64 [ %32, %_ZN4core4iter6traits8iterator8Iterator10advance_by17hb696008257f8c6cbE.exit.i.i.i.cont ], [ %36, %_ZN4core4iter6traits8iterator8Iterator10advance_by17hb696008257f8c6cbE.exit23.i.i.i ] + %exitcond.not.i21.i11.i.i = icmp eq i64 %.014.i.i.i, 0 + br i1 %exitcond.not.i21.i11.i.i, label %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit", label %.lr.ph.i.i + +34: ; preds = %.lr.ph.i.i + %35 = add nuw i64 %.sroa.01.0.i20.i13.i.i, 1 + %exitcond.not.i21.i.i.i = icmp eq i64 %35, %.014.i.i.i + br i1 %exitcond.not.i21.i.i.i, label %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit", label %.lr.ph.i.i + +.lr.ph.i.i: ; preds = %33, %34 + %.sroa.01.0.i20.i13.i.i = phi i64 [ %35, %34 ], [ 0, %33 ] + %.not.i19.i12.i.i = phi i1 [ true, %34 ], [ %.not, %33 ] + br i1 %.not.i19.i12.i.i, label %_ZN4core4iter6traits8iterator8Iterator10advance_by17hb696008257f8c6cbE.exit23.i.i.i, label %34 + +_ZN4core4iter6traits8iterator8Iterator10advance_by17hb696008257f8c6cbE.exit23.i.i.i: ; preds = %.lr.ph.i.i + %36 = sub i64 %.014.i.i.i, %.sroa.01.0.i20.i13.i.i + %37 = icmp eq i64 %.sroa.01.0.i20.i13.i.i, 0 + br i1 %37, label %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit.thread", label %33 + +"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit": ; preds = %30, %33, %34, %29 + %38 = phi ptr [ %.026, %29 ], [ null, %34 ], [ %.026, %33 ], [ null, %30 ] + %39 = icmp eq ptr %38, null + %spec.select.i.i.i = select i1 %39, ptr %.026, ptr %38 + %.not29 = and i1 %.not, %39 br i1 %.not29, label %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit.thread", label %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit.thread41" "_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit.thread41": ; preds = %24, %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit" %.012.i44 = phi ptr [ %spec.select.i.i.i, %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit" ], [ %27, %24 ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) - %42 = getelementptr inbounds i8, ptr %.012.i44, i64 16 - %43 = load i8, ptr %42, align 8, !range !13491, !noundef !4 - %44 = getelementptr inbounds i8, ptr %.012.i44, i64 17 - %45 = load i8, ptr %44, align 1, !range !87, !noundef !4 - %46 = trunc nuw i8 %45 to i1 - invoke void @_ZN5typst5model10numbering_13NumberingKind5apply17h4600b9cecba4de7bE(ptr noalias nocapture noundef nonnull sret({ { { [2 x i64] } } }) align 8 dereferenceable(16) %5, i8 noundef %43, i64 noundef %3, i1 noundef zeroext %46) - to label %51 unwind label %13 - -47: ; preds = %51 - %48 = landingpad { ptr, i32 } + %40 = getelementptr inbounds i8, ptr %.012.i44, i64 16 + %41 = load i8, ptr %40, align 8, !range !13491, !noundef !4 + %42 = getelementptr inbounds i8, ptr %.012.i44, i64 17 + %43 = load i8, ptr %42, align 1, !range !87, !noundef !4 + %44 = trunc nuw i8 %43 to i1 + invoke void @_ZN5typst5model10numbering_13NumberingKind5apply17h4600b9cecba4de7bE(ptr noalias nocapture noundef nonnull sret({ { { [2 x i64] } } }) align 8 dereferenceable(16) %5, i8 noundef %41, i64 noundef %3, i1 noundef zeroext %44) + to label %49 unwind label %13 + +45: ; preds = %49 + %46 = landingpad { ptr, i32 } cleanup - %49 = icmp sgt i64 %57, -1 - br i1 %49, label %50, label %"_ZN4core3ptr44drop_in_place$LT$ecow..string..EcoString$GT$17h2cca40327d577ef0E.exit36" + %47 = icmp sgt i64 %55, -1 + br i1 %47, label %48, label %"_ZN4core3ptr44drop_in_place$LT$ecow..string..EcoString$GT$17h2cca40327d577ef0E.exit36" -50: ; preds = %47 +48: ; preds = %45 invoke void @"_ZN68_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3d104556f500dee7E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5) - to label %"_ZN4core3ptr44drop_in_place$LT$ecow..string..EcoString$GT$17h2cca40327d577ef0E.exit36" unwind label %63 + to label %"_ZN4core3ptr44drop_in_place$LT$ecow..string..EcoString$GT$17h2cca40327d577ef0E.exit36" unwind label %61 -51: ; preds = %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit.thread41" - %52 = getelementptr inbounds i8, ptr %5, i64 15 - %53 = load i8, ptr %52, align 1, !alias.scope !23773, !noundef !4 - %54 = icmp slt i8 %53, 0 - %55 = load ptr, ptr %5, align 8, !alias.scope !23773, !nonnull !4 - %56 = getelementptr inbounds i8, ptr %5, i64 8 - %57 = load i64, ptr %56, align 8 - %58 = and i8 %53, 127 - %59 = zext nneg i8 %58 to i64 - %.sroa.3.0.i33 = select i1 %54, i64 %59, i64 %57 - %.sroa.0.0.i34 = select i1 %54, ptr %5, ptr %55 +49: ; preds = %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit.thread41" + %50 = getelementptr inbounds i8, ptr %5, i64 15 + %51 = load i8, ptr %50, align 1, !alias.scope !23773, !noundef !4 + %52 = icmp slt i8 %51, 0 + %53 = load ptr, ptr %5, align 8, !alias.scope !23773, !nonnull !4 + %54 = getelementptr inbounds i8, ptr %5, i64 8 + %55 = load i64, ptr %54, align 8 + %56 = and i8 %51, 127 + %57 = zext nneg i8 %56 to i64 + %.sroa.3.0.i33 = select i1 %52, i64 %57, i64 %55 + %.sroa.0.0.i34 = select i1 %52, ptr %5, ptr %53 invoke void @_ZN4ecow6string9EcoString8push_str17h2542dc826b62bb60E(ptr noalias noundef nonnull align 8 dereferenceable(16) %6, ptr noalias noundef nonnull readonly align 1 %.sroa.0.0.i34, i64 noundef %.sroa.3.0.i33) - to label %60 unwind label %47 + to label %58 unwind label %45 -60: ; preds = %51 - %61 = icmp sgt i64 %57, -1 - br i1 %61, label %62, label %"_ZN4core3ptr44drop_in_place$LT$ecow..string..EcoString$GT$17h2cca40327d577ef0E.exit38" +58: ; preds = %49 + %59 = icmp sgt i64 %55, -1 + br i1 %59, label %60, label %"_ZN4core3ptr44drop_in_place$LT$ecow..string..EcoString$GT$17h2cca40327d577ef0E.exit38" -62: ; preds = %60 +60: ; preds = %58 invoke void @"_ZN68_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3d104556f500dee7E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5) to label %"_ZN4core3ptr44drop_in_place$LT$ecow..string..EcoString$GT$17h2cca40327d577ef0E.exit38" unwind label %13 -"_ZN4core3ptr44drop_in_place$LT$ecow..string..EcoString$GT$17h2cca40327d577ef0E.exit38": ; preds = %60, %62 +"_ZN4core3ptr44drop_in_place$LT$ecow..string..EcoString$GT$17h2cca40327d577ef0E.exit38": ; preds = %58, %60 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) br label %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit.thread" -63: ; preds = %50, %12 - %64 = landingpad { ptr, i32 } +61: ; preds = %48, %12 + %62 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #78 unreachable -"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit.thread": ; preds = %"_ZN102_$LT$core..iter..adapters..cycle..Cycle$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17h6124aec5e1214f81E.exit.i.i", %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit", %"_ZN4core3ptr44drop_in_place$LT$ecow..string..EcoString$GT$17h2cca40327d577ef0E.exit38" - %65 = getelementptr inbounds i8, ptr %1, i64 16 - %66 = getelementptr inbounds i8, ptr %1, i64 31 - %67 = load i8, ptr %66, align 1, !alias.scope !23776, !noundef !4 - %68 = icmp slt i8 %67, 0 - %69 = load ptr, ptr %65, align 8, !alias.scope !23776, !nonnull !4 - %70 = getelementptr inbounds i8, ptr %1, i64 24 - %71 = load i64, ptr %70, align 8, !alias.scope !23776 - %72 = and i8 %67, 127 - %73 = zext nneg i8 %72 to i64 - %.sroa.3.0.i31 = select i1 %68, i64 %73, i64 %71 - %.sroa.0.0.i32 = select i1 %68, ptr %65, ptr %69 +"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit.thread": ; preds = %_ZN4core4iter6traits8iterator8Iterator10advance_by17hb696008257f8c6cbE.exit23.i.i.i, %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit", %"_ZN4core3ptr44drop_in_place$LT$ecow..string..EcoString$GT$17h2cca40327d577ef0E.exit38" + %63 = getelementptr inbounds i8, ptr %1, i64 16 + %64 = getelementptr inbounds i8, ptr %1, i64 31 + %65 = load i8, ptr %64, align 1, !alias.scope !23776, !noundef !4 + %66 = icmp slt i8 %65, 0 + %67 = load ptr, ptr %63, align 8, !alias.scope !23776, !nonnull !4 + %68 = getelementptr inbounds i8, ptr %1, i64 24 + %69 = load i64, ptr %68, align 8, !alias.scope !23776 + %70 = and i8 %65, 127 + %71 = zext nneg i8 %70 to i64 + %.sroa.3.0.i31 = select i1 %66, i64 %71, i64 %69 + %.sroa.0.0.i32 = select i1 %66, ptr %63, ptr %67 invoke void @_ZN4ecow6string9EcoString8push_str17h2542dc826b62bb60E(ptr noalias noundef nonnull align 8 dereferenceable(16) %6, ptr noalias noundef nonnull readonly align 1 %.sroa.0.0.i32, i64 noundef %.sroa.3.0.i31) - to label %74 unwind label %13 + to label %72 unwind label %13 -74: ; preds = %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit.thread" +72: ; preds = %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3nth17h9e4d94b97974279eE.exit.thread" call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %6, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) ret void diff --git a/bench/vcpkg/optimized/archives.cpp.ll b/bench/vcpkg/optimized/archives.cpp.ll index 04318615a63..5eabf692ef7 100644 --- a/bench/vcpkg/optimized/archives.cpp.ll +++ b/bench/vcpkg/optimized/archives.cpp.ll @@ -3433,7 +3433,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i: ; preds = %53, %46 %57 = phi i64 [ %51, %46 ], [ %.pre19.i.i.i, %53 ] %58 = sub i64 %57, %56 %spec.select.i.i.i = tail call i64 @llvm.umin.i64(i64 %58, i64 %49) - %.not.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %spec.select.i.i.i, 0 + %.not.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %57, %56 br i1 %.not.i.i.i.i.i.i.i.i.i.i.i.i, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i, label %59 59: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i @@ -3509,7 +3509,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i34: ; preds = %88, %81 %92 = phi i64 [ %86, %81 ], [ %.pre19.i.i.i40, %88 ] %93 = sub i64 %92, %91 %spec.select.i.i.i35 = tail call i64 @llvm.umin.i64(i64 %93, i64 %84) - %.not.i.i.i.i.i.i.i.i.i.i.i.i36 = icmp eq i64 %spec.select.i.i.i35, 0 + %.not.i.i.i.i.i.i.i.i.i.i.i.i36 = icmp eq i64 %92, %91 br i1 %.not.i.i.i.i.i.i.i.i.i.i.i.i36, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i38, label %94 94: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i34 @@ -3613,7 +3613,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i52: ; preds = %132, %125 %136 = phi i64 [ %130, %125 ], [ %.pre19.i.i.i60, %132 ] %137 = sub i64 %136, %135 %spec.select.i.i.i53 = tail call i64 @llvm.umin.i64(i64 %137, i64 %128) - %.not.i.i.i.i.i.i.i.i.i.i.i.i54 = icmp eq i64 %spec.select.i.i.i53, 0 + %.not.i.i.i.i.i.i.i.i.i.i.i.i54 = icmp eq i64 %136, %135 br i1 %.not.i.i.i.i.i.i.i.i.i.i.i.i54, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i56, label %138 138: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i52 @@ -4228,7 +4228,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i: ; preds = %187, %180 %191 = phi i64 [ %185, %180 ], [ %.pre19.i.i, %187 ] %192 = sub i64 %191, %190 %spec.select.i.i = call i64 @llvm.umin.i64(i64 %192, i64 %183) - %.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %spec.select.i.i, 0 + %.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %191, %190 br i1 %.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i, label %193 193: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i @@ -4573,7 +4573,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i: ; preds = %41, %36 %45 = phi i64 [ %39, %36 ], [ %.pre19.i.i, %41 ] %46 = sub i64 %45, %44 %spec.select.i.i = tail call i64 @llvm.umin.i64(i64 %46, i64 %gepdiff) - %.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %spec.select.i.i, 0 + %.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %45, %44 br i1 %.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i, label %47 47: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i @@ -4687,7 +4687,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i: ; preds = %41, %36 %45 = phi i64 [ %39, %36 ], [ %.pre19.i.i, %41 ] %46 = sub i64 %45, %44 %spec.select.i.i = tail call i64 @llvm.umin.i64(i64 %46, i64 %gepdiff) - %.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %spec.select.i.i, 0 + %.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %45, %44 br i1 %.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i, label %47 47: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i @@ -4801,7 +4801,7 @@ _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i: ; preds = %41, %36 %45 = phi i64 [ %39, %36 ], [ %.pre19.i.i, %41 ] %46 = sub i64 %45, %44 %spec.select.i.i = tail call i64 @llvm.umin.i64(i64 %46, i64 %gepdiff) - %.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %spec.select.i.i, 0 + %.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %45, %44 br i1 %.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i, label %47 47: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i diff --git a/bench/wireshark/optimized/inet_cidr.c.ll b/bench/wireshark/optimized/inet_cidr.c.ll index 230b150a8cc..de1d242692d 100644 --- a/bench/wireshark/optimized/inet_cidr.c.ll +++ b/bench/wireshark/optimized/inet_cidr.c.ll @@ -54,61 +54,48 @@ define zeroext i1 @ws_ipv6_addr_and_prefix_contains(ptr nocapture noundef readon %7 = icmp ugt i32 %6, 7 br i1 %7, label %.lr.ph.i, label %._crit_edge.i -.lr.ph.i: ; preds = %2, %16 - %indvars.iv = phi i64 [ %indvars.iv.next, %16 ], [ 0, %2 ] - %.02842.i = phi i32 [ %17, %16 ], [ %..i, %2 ] +.lr.ph.i: ; preds = %2, %12 + %indvars.iv = phi i64 [ %indvars.iv.next, %12 ], [ 0, %2 ] + %.02842.i = phi i32 [ %13, %12 ], [ %..i, %2 ] %8 = getelementptr [16 x i8], ptr %0, i64 0, i64 %indvars.iv %9 = load i8, ptr %8, align 1 %10 = getelementptr [16 x i8], ptr %3, i64 0, i64 %indvars.iv %11 = load i8, ptr %10, align 1 %.not37.i = icmp eq i8 %9, %11 - br i1 %.not37.i, label %16, label %12 + br i1 %.not37.i, label %12, label %compare_ipv6.exit 12: ; preds = %.lr.ph.i - %13 = zext i8 %11 to i32 - %14 = zext i8 %9 to i32 - %15 = sub nsw i32 %14, %13 - br label %compare_ipv6.exit - -16: ; preds = %.lr.ph.i - %17 = add i32 %.02842.i, -8 + %13 = add i32 %.02842.i, -8 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %18 = icmp ugt i32 %17, 7 - br i1 %18, label %.lr.ph.i, label %._crit_edge.loopexit.i, !llvm.loop !4 + %14 = icmp ugt i32 %13, 7 + br i1 %14, label %.lr.ph.i, label %._crit_edge.loopexit.i, !llvm.loop !4 -._crit_edge.loopexit.i: ; preds = %16 - %19 = and i64 %indvars.iv.next, 4294967295 +._crit_edge.loopexit.i: ; preds = %12 + %15 = and i64 %indvars.iv.next, 4294967295 br label %._crit_edge.i ._crit_edge.i: ; preds = %._crit_edge.loopexit.i, %2 - %.029.lcssa.i = phi i64 [ 0, %2 ], [ %19, %._crit_edge.loopexit.i ] - %.028.lcssa.i = phi i32 [ %..i, %2 ], [ %17, %._crit_edge.loopexit.i ] + %.029.lcssa.i = phi i64 [ 0, %2 ], [ %15, %._crit_edge.loopexit.i ] + %.028.lcssa.i = phi i32 [ %..i, %2 ], [ %13, %._crit_edge.loopexit.i ] %.not.i = icmp eq i32 %.028.lcssa.i, 0 - br i1 %.not.i, label %compare_ipv6.exit, label %20 - -20: ; preds = %._crit_edge.i - %21 = getelementptr [16 x i8], ptr %0, i64 0, i64 %.029.lcssa.i - %22 = load i8, ptr %21, align 1 - %23 = zext nneg i32 %.028.lcssa.i to i64 - %24 = getelementptr [9 x i8], ptr @bitmasks, i64 0, i64 %23 - %25 = load i8, ptr %24, align 1 - %26 = and i8 %25, %22 - %27 = getelementptr [16 x i8], ptr %3, i64 0, i64 %.029.lcssa.i - %28 = load i8, ptr %27, align 1 - %29 = and i8 %28, %25 - %.not36.i = icmp eq i8 %26, %29 - br i1 %.not36.i, label %compare_ipv6.exit, label %30 - -30: ; preds = %20 - %31 = zext i8 %29 to i32 - %32 = zext i8 %26 to i32 - %33 = sub nsw i32 %32, %31 + br i1 %.not.i, label %compare_ipv6.exit, label %16 + +16: ; preds = %._crit_edge.i + %17 = getelementptr [16 x i8], ptr %0, i64 0, i64 %.029.lcssa.i + %18 = load i8, ptr %17, align 1 + %19 = zext nneg i32 %.028.lcssa.i to i64 + %20 = getelementptr [9 x i8], ptr @bitmasks, i64 0, i64 %19 + %21 = load i8, ptr %20, align 1 + %22 = getelementptr [16 x i8], ptr %3, i64 0, i64 %.029.lcssa.i + %23 = load i8, ptr %22, align 1 + %24 = xor i8 %23, %18 + %25 = and i8 %24, %21 + %.not36.i = icmp eq i8 %25, 0 br label %compare_ipv6.exit -compare_ipv6.exit: ; preds = %12, %._crit_edge.i, %20, %30 - %.0.i = phi i32 [ %15, %12 ], [ %33, %30 ], [ 0, %20 ], [ 0, %._crit_edge.i ] - %34 = icmp eq i32 %.0.i, 0 - ret i1 %34 +compare_ipv6.exit: ; preds = %.lr.ph.i, %16, %._crit_edge.i + %26 = phi i1 [ true, %._crit_edge.i ], [ %.not36.i, %16 ], [ false, %.lr.ph.i ] + ret i1 %26 } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) diff --git a/bench/wireshark/optimized/packet-smb.c.ll b/bench/wireshark/optimized/packet-smb.c.ll index 94fcd20922e..cb0fee2721b 100644 --- a/bench/wireshark/optimized/packet-smb.c.ll +++ b/bench/wireshark/optimized/packet-smb.c.ll @@ -27425,7 +27425,7 @@ define internal fastcc i32 @dissect_search_find_request(ptr noundef %0, ptr noca %32 = tail call ptr @proto_tree_add_uint(ptr noundef %2, i32 noundef %30, ptr noundef %0, i32 noundef %28, i32 noundef 2, i32 noundef %31) #15 %33 = add i32 %28, 2 %34 = icmp eq i16 %29, 0 - br i1 %34, label %92, label %35 + br i1 %34, label %91, label %35 35: ; preds = %27 %36 = load i32, ptr @hf_smb_buffer_format, align 4 @@ -27439,7 +27439,7 @@ define internal fastcc i32 @dissect_search_find_request(ptr noundef %0, ptr noca %42 = call fastcc ptr @get_unicode_or_ascii_string(ptr noundef %0, ptr noundef %7, i32 noundef %41, ptr noundef %8, i32 noundef 1, i32 noundef 0, ptr noundef nonnull %9) %43 = icmp eq ptr %42, null %.pre = load i32, ptr %7, align 4 - br i1 %43, label %92, label %44 + br i1 %43, label %91, label %44 44: ; preds = %35 %45 = load i32, ptr @hf_smb_file_name, align 4 @@ -27457,68 +27457,67 @@ define internal fastcc i32 @dissect_search_find_request(ptr noundef %0, ptr noca %57 = call ptr @format_text(ptr noundef %55, ptr noundef nonnull %42, i64 noundef %56) #15 call void (ptr, i32, ptr, ...) @col_append_fstr(ptr noundef %54, i32 noundef 25, ptr noundef nonnull @.str.27, ptr noundef %57) #15 %58 = icmp eq i16 %50, %51 - br i1 %58, label %92, label %59 + br i1 %58, label %91, label %59 59: ; preds = %44 %60 = load i32, ptr @hf_smb_buffer_format, align 4 %61 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %60, ptr noundef %0, i32 noundef %49, i32 noundef 1, i32 noundef -2147483648) #15 %62 = add i32 %49, 1 - %63 = add i16 %52, -1 - %64 = icmp ult i16 %63, 2 - br i1 %64, label %92, label %65 + %63 = icmp ult i16 %52, 3 + br i1 %63, label %91, label %64 -65: ; preds = %59 - %66 = call zeroext i16 @tvb_get_letohs(ptr noundef %0, i32 noundef %62) #15 - %67 = load i32, ptr @hf_smb_resume_key_len, align 4 - %68 = zext i16 %66 to i32 - %69 = call ptr @proto_tree_add_uint(ptr noundef %2, i32 noundef %67, ptr noundef %0, i32 noundef %62, i32 noundef 2, i32 noundef %68) #15 - %70 = add i32 %49, 3 - %71 = add i16 %52, -3 - store i16 %71, ptr %9, align 2 - %.not56 = icmp eq i16 %66, 0 - br i1 %.not56, label %78, label %72 - -72: ; preds = %65 - %73 = call fastcc i32 @dissect_search_resume_key(ptr noundef %0, ptr noundef %2, i32 noundef %70, ptr noundef %9, ptr noundef %10, i32 noundef %5) - %74 = load i32, ptr %10, align 4 - %75 = icmp eq i32 %74, 0 - %76 = load i16, ptr %9, align 2 - %77 = icmp ne i16 %76, 0 - %or.cond5 = select i1 %75, i1 %77, i1 false - br i1 %or.cond5, label %79, label %92 - -78: ; preds = %65 - %.old4.not = icmp eq i16 %71, 0 - br i1 %.old4.not, label %92, label %79 - -79: ; preds = %72, %78 - %80 = phi i16 [ %76, %72 ], [ %71, %78 ] - %81 = phi i32 [ %73, %72 ], [ %70, %78 ] - %82 = call i32 @tvb_reported_length_remaining(ptr noundef %0, i32 noundef %81) #15 - %83 = zext i16 %80 to i32 - %84 = icmp slt i32 %82, %83 - br i1 %84, label %85, label %.thread +64: ; preds = %59 + %65 = call zeroext i16 @tvb_get_letohs(ptr noundef %0, i32 noundef %62) #15 + %66 = load i32, ptr @hf_smb_resume_key_len, align 4 + %67 = zext i16 %65 to i32 + %68 = call ptr @proto_tree_add_uint(ptr noundef %2, i32 noundef %66, ptr noundef %0, i32 noundef %62, i32 noundef 2, i32 noundef %67) #15 + %69 = add i32 %49, 3 + %70 = add i16 %52, -3 + store i16 %70, ptr %9, align 2 + %.not56 = icmp eq i16 %65, 0 + br i1 %.not56, label %77, label %71 + +71: ; preds = %64 + %72 = call fastcc i32 @dissect_search_resume_key(ptr noundef %0, ptr noundef %2, i32 noundef %69, ptr noundef %9, ptr noundef %10, i32 noundef %5) + %73 = load i32, ptr %10, align 4 + %74 = icmp eq i32 %73, 0 + %75 = load i16, ptr %9, align 2 + %76 = icmp ne i16 %75, 0 + %or.cond5 = select i1 %74, i1 %76, i1 false + br i1 %or.cond5, label %78, label %91 -85: ; preds = %79 - %86 = trunc i32 %82 to i16 - %.not57 = icmp eq i16 %86, 0 +77: ; preds = %64 + %.old4.not = icmp eq i16 %70, 0 + br i1 %.old4.not, label %91, label %78 + +78: ; preds = %71, %77 + %79 = phi i16 [ %75, %71 ], [ %70, %77 ] + %80 = phi i32 [ %72, %71 ], [ %69, %77 ] + %81 = call i32 @tvb_reported_length_remaining(ptr noundef %0, i32 noundef %80) #15 + %82 = zext i16 %79 to i32 + %83 = icmp slt i32 %81, %82 + br i1 %83, label %84, label %.thread + +84: ; preds = %78 + %85 = trunc i32 %81 to i16 + %.not57 = icmp eq i16 %85, 0 br i1 %.not57, label %._crit_edge, label %.thread -.thread: ; preds = %79, %85 - %87 = phi i16 [ %86, %85 ], [ %80, %79 ] - %88 = load i32, ptr @hf_smb_extra_byte_parameters, align 4 - %89 = zext i16 %87 to i32 - %90 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %88, ptr noundef %0, i32 noundef %81, i32 noundef %89, i32 noundef 0) #15 +.thread: ; preds = %78, %84 + %86 = phi i16 [ %85, %84 ], [ %79, %78 ] + %87 = load i32, ptr @hf_smb_extra_byte_parameters, align 4 + %88 = zext i16 %86 to i32 + %89 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %87, ptr noundef %0, i32 noundef %80, i32 noundef %88, i32 noundef 0) #15 br label %._crit_edge -._crit_edge: ; preds = %85, %.thread - %.pre-phi = phi i32 [ %89, %.thread ], [ 0, %85 ] - %91 = add i32 %81, %.pre-phi - br label %92 +._crit_edge: ; preds = %84, %.thread + %.pre-phi = phi i32 [ %88, %.thread ], [ 0, %84 ] + %90 = add i32 %80, %.pre-phi + br label %91 -92: ; preds = %78, %._crit_edge, %72, %59, %44, %35, %27 - %93 = phi i32 [ %70, %78 ], [ %91, %._crit_edge ], [ %73, %72 ], [ %62, %59 ], [ %49, %44 ], [ %.pre, %35 ], [ %33, %27 ] - ret i32 %93 +91: ; preds = %77, %._crit_edge, %71, %59, %44, %35, %27 + %92 = phi i32 [ %69, %77 ], [ %90, %._crit_edge ], [ %72, %71 ], [ %62, %59 ], [ %49, %44 ], [ %.pre, %35 ], [ %33, %27 ] + ret i32 %92 } ; Function Attrs: nounwind uwtable diff --git a/bench/zed-rs/optimized/a4a22mj316v75h7ufva5j1joa.ll b/bench/zed-rs/optimized/a4a22mj316v75h7ufva5j1joa.ll index 195f25dc1f2..24b67ab7a78 100644 --- a/bench/zed-rs/optimized/a4a22mj316v75h7ufva5j1joa.ll +++ b/bench/zed-rs/optimized/a4a22mj316v75h7ufva5j1joa.ll @@ -51466,8 +51466,6 @@ define internal noundef i64 @_ZN4core4iter6traits8iterator8Iterator10advance_by1 22: ; preds = %5 %23 = sub i64 %1, %.sroa.01.0 - %24 = icmp ne i64 %23, 0 - tail call void @llvm.assume(i1 %24) br label %.loopexit } @@ -51482,7 +51480,7 @@ define internal noundef align 8 dereferenceable_or_null(96) ptr @_ZN4core4iter6t "_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1337c68b03ea24a7E.exit.i": ; preds = %17, %2 %.sroa.01.0.i = phi i64 [ 0, %2 ], [ %6, %17 ] %exitcond.not.i = icmp eq i64 %.sroa.01.0.i, %1 - br i1 %exitcond.not.i, label %22, label %5 + br i1 %exitcond.not.i, label %_ZN4core4iter6traits8iterator8Iterator10advance_by17hb3db7edf5fbd99e6E.exit.thread, label %5 5: ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1337c68b03ea24a7E.exit.i" %6 = add i64 %.sroa.01.0.i, 1 @@ -51511,34 +51509,34 @@ define internal noundef align 8 dereferenceable_or_null(96) ptr @_ZN4core4iter6t tail call void @_ZN4core6option13unwrap_failed17hba6b08832f9ce30bE(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ddacba7924b7e3cd30b4f96ec3edd7e4.243.llvm.15941559949715022903) #43, !noalias !15999 unreachable -22: ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1337c68b03ea24a7E.exit.i" - %23 = load ptr, ptr %4, align 8, !invariant.load !4, !noalias !16007, !nonnull !4 - %24 = tail call { ptr, ptr } %23(ptr noundef nonnull align 1 %.val.i.i), !noalias !16007 - %25 = extractvalue { ptr, ptr } %24, 0 - %26 = icmp eq ptr %25, null - br i1 %26, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1337c68b03ea24a7E.exit", label %27 +_ZN4core4iter6traits8iterator8Iterator10advance_by17hb3db7edf5fbd99e6E.exit.thread: ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1337c68b03ea24a7E.exit.i" + %22 = load ptr, ptr %4, align 8, !invariant.load !4, !noalias !16007, !nonnull !4 + %23 = tail call { ptr, ptr } %22(ptr noundef nonnull align 1 %.val.i.i), !noalias !16007 + %24 = extractvalue { ptr, ptr } %23, 0 + %25 = icmp eq ptr %24, null + br i1 %25, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1337c68b03ea24a7E.exit", label %26 -27: ; preds = %22 - %28 = extractvalue { ptr, ptr } %24, 1 - %29 = icmp ne ptr %28, null - tail call void @llvm.assume(i1 %29) - %30 = getelementptr inbounds i8, ptr %25, i64 40 - %31 = load i64, ptr %30, align 8, !noalias !16010, !noundef !4 - %32 = icmp eq i64 %31, 1804179699424012778 - br i1 %32, label %33, label %37 +26: ; preds = %_ZN4core4iter6traits8iterator8Iterator10advance_by17hb3db7edf5fbd99e6E.exit.thread + %27 = extractvalue { ptr, ptr } %23, 1 + %28 = icmp ne ptr %27, null + tail call void @llvm.assume(i1 %28) + %29 = getelementptr inbounds i8, ptr %24, i64 40 + %30 = load i64, ptr %29, align 8, !noalias !16010, !noundef !4 + %31 = icmp eq i64 %30, 1804179699424012778 + br i1 %31, label %32, label %36 -33: ; preds = %27 - %34 = getelementptr inbounds i8, ptr %25, i64 48 - %35 = load i64, ptr %34, align 8, !noalias !16010, !noundef !4 - %36 = icmp eq i64 %35, -1558820416752632709 - br i1 %36, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1337c68b03ea24a7E.exit", label %37 +32: ; preds = %26 + %33 = getelementptr inbounds i8, ptr %24, i64 48 + %34 = load i64, ptr %33, align 8, !noalias !16010, !noundef !4 + %35 = icmp eq i64 %34, -1558820416752632709 + br i1 %35, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1337c68b03ea24a7E.exit", label %36 -37: ; preds = %33, %27 +36: ; preds = %32, %26 tail call void @_ZN4core6option13unwrap_failed17hba6b08832f9ce30bE(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ddacba7924b7e3cd30b4f96ec3edd7e4.243.llvm.15941559949715022903) #43, !noalias !16007 unreachable -"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1337c68b03ea24a7E.exit": ; preds = %5, %33, %22 - %.sroa.0.0 = phi ptr [ null, %22 ], [ %28, %33 ], [ null, %5 ] +"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1337c68b03ea24a7E.exit": ; preds = %5, %32, %_ZN4core4iter6traits8iterator8Iterator10advance_by17hb3db7edf5fbd99e6E.exit.thread + %.sroa.0.0 = phi ptr [ null, %_ZN4core4iter6traits8iterator8Iterator10advance_by17hb3db7edf5fbd99e6E.exit.thread ], [ %27, %32 ], [ null, %5 ] ret ptr %.sroa.0.0 } diff --git a/bench/zed-rs/optimized/bijypxqg3gfu3lugp8zf7c61q.ll b/bench/zed-rs/optimized/bijypxqg3gfu3lugp8zf7c61q.ll index 896677a1af0..5cb6edb43ff 100644 --- a/bench/zed-rs/optimized/bijypxqg3gfu3lugp8zf7c61q.ll +++ b/bench/zed-rs/optimized/bijypxqg3gfu3lugp8zf7c61q.ll @@ -424,8 +424,6 @@ define internal noundef i64 @_ZN4core4iter6traits8iterator8Iterator10advance_by1 8: ; preds = %4 %9 = sub i64 %1, %.sroa.01.0 - %10 = icmp ne i64 %9, 0 - tail call void @llvm.assume(i1 %10) br label %.loopexit } @@ -436,27 +434,27 @@ define internal { i32, float } @_ZN4core4iter6traits8iterator8Iterator3nth17hbc2 3: ; preds = %4, %2 %.sroa.01.0.i = phi i64 [ 0, %2 ], [ %5, %4 ] %exitcond.not.i = icmp eq i64 %.sroa.01.0.i, %1 - br i1 %exitcond.not.i, label %8, label %4 + br i1 %exitcond.not.i, label %_ZN4core4iter6traits8iterator8Iterator10advance_by17h1c3dd5d0122da766E.exit.thread, label %4 4: ; preds = %3 %5 = add i64 %.sroa.01.0.i, 1 %6 = tail call { i32, float } @"_ZN117_$LT$rodio..source..uniform..UniformSourceIterator$LT$I$C$D$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he3a68353982a0216E"(ptr noalias noundef nonnull align 8 dereferenceable(184) %0) %7 = extractvalue { i32, float } %6, 0 %switch.i = icmp eq i32 %7, 1 - br i1 %switch.i, label %3, label %_ZN4core4iter6traits8iterator8Iterator10advance_by17h1c3dd5d0122da766E.exit.thread - -8: ; preds = %3 - %9 = tail call { i32, float } @"_ZN117_$LT$rodio..source..uniform..UniformSourceIterator$LT$I$C$D$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he3a68353982a0216E"(ptr noalias noundef nonnull align 8 dereferenceable(184) %0) - %10 = extractvalue { i32, float } %9, 0 - %11 = extractvalue { i32, float } %9, 1 - br label %_ZN4core4iter6traits8iterator8Iterator10advance_by17h1c3dd5d0122da766E.exit.thread - -_ZN4core4iter6traits8iterator8Iterator10advance_by17h1c3dd5d0122da766E.exit.thread: ; preds = %4, %8 - %.sroa.3.0 = phi float [ %11, %8 ], [ undef, %4 ] - %.sroa.0.0 = phi i32 [ %10, %8 ], [ 0, %4 ] - %12 = insertvalue { i32, float } poison, i32 %.sroa.0.0, 0 - %13 = insertvalue { i32, float } %12, float %.sroa.3.0, 1 - ret { i32, float } %13 + br i1 %switch.i, label %3, label %_ZN4core4iter6traits8iterator8Iterator10advance_by17h1c3dd5d0122da766E.exit + +_ZN4core4iter6traits8iterator8Iterator10advance_by17h1c3dd5d0122da766E.exit.thread: ; preds = %3 + %8 = tail call { i32, float } @"_ZN117_$LT$rodio..source..uniform..UniformSourceIterator$LT$I$C$D$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he3a68353982a0216E"(ptr noalias noundef nonnull align 8 dereferenceable(184) %0) + %9 = extractvalue { i32, float } %8, 0 + %10 = extractvalue { i32, float } %8, 1 + br label %_ZN4core4iter6traits8iterator8Iterator10advance_by17h1c3dd5d0122da766E.exit + +_ZN4core4iter6traits8iterator8Iterator10advance_by17h1c3dd5d0122da766E.exit: ; preds = %4, %_ZN4core4iter6traits8iterator8Iterator10advance_by17h1c3dd5d0122da766E.exit.thread + %.sroa.3.0 = phi float [ %10, %_ZN4core4iter6traits8iterator8Iterator10advance_by17h1c3dd5d0122da766E.exit.thread ], [ undef, %4 ] + %.sroa.0.0 = phi i32 [ %9, %_ZN4core4iter6traits8iterator8Iterator10advance_by17h1c3dd5d0122da766E.exit.thread ], [ 0, %4 ] + %11 = insertvalue { i32, float } poison, i32 %.sroa.0.0, 0 + %12 = insertvalue { i32, float } %11, float %.sroa.3.0, 1 + ret { i32, float } %12 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index 820278fb20a..935eea68b75 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/117442 # Please rebase manually # git fetch origin