diff --git a/bench/abc/optimized/abcAig.c.ll b/bench/abc/optimized/abcAig.c.ll index dfee2368ab6..d89e6c1a8b7 100644 --- a/bench/abc/optimized/abcAig.c.ll +++ b/bench/abc/optimized/abcAig.c.ll @@ -1325,7 +1325,7 @@ define i32 @Abc_AigLevel(ptr noundef %0) local_unnamed_addr #0 { %19 = getelementptr inbounds i8, ptr %18, i64 20 %20 = load i32, ptr %19, align 4 %21 = lshr i32 %20, 12 - %spec.select = tail call i32 @llvm.smax.i32(i32 %.019, i32 %21) + %spec.select = tail call i32 @llvm.umax.i32(i32 %.019, i32 %21) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.critedge, label %10, !llvm.loop !23 @@ -5038,9 +5038,6 @@ declare noundef i32 @putchar(i32 noundef) local_unnamed_addr #16 ; Function Attrs: nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #18 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #17 - ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #19 diff --git a/bench/abc/optimized/bmcBmc2.c.ll b/bench/abc/optimized/bmcBmc2.c.ll index b8f74355bc8..a8b26915b0c 100644 --- a/bench/abc/optimized/bmcBmc2.c.ll +++ b/bench/abc/optimized/bmcBmc2.c.ll @@ -57,7 +57,8 @@ define range(i32 1, 4) i32 @Abs_ManExtendOneEval_rec(ptr noundef %0, ptr noundef br i1 %.not68, label %34, label %47 common.ret.sink.split: ; preds = %58, %56, %47, %34 - %.043.sink = phi i32 [ %46, %34 ], [ %.043, %47 ], [ %.0.i, %58 ], [ 1, %56 ] + %.043.sink = phi i32 [ %46, %34 ], [ %.043, %47 ], [ 1, %56 ], [ 1, %58 ] + %common.ret.op.ph = phi i32 [ %46, %34 ], [ %.043, %47 ], [ 1, %56 ], [ %.0.i, %58 ] %.val55 = load ptr, ptr %5, align 8 %.val56 = load i32, ptr %6, align 4 %21 = getelementptr inbounds ptr, ptr %.val55, i64 %7 @@ -77,7 +78,7 @@ common.ret.sink.split: ; preds = %58, %56, %47, %34 br label %common.ret common.ret: ; preds = %common.ret.sink.split, %4 - %common.ret.op = phi i32 [ %17, %4 ], [ %.043.sink, %common.ret.sink.split ] + %common.ret.op = phi i32 [ %17, %4 ], [ %common.ret.op.ph, %common.ret.sink.split ] ret i32 %common.ret.op 34: ; preds = %18 diff --git a/bench/abc/optimized/retDelay.c.ll b/bench/abc/optimized/retDelay.c.ll index 1642fef981a..b22697433ef 100644 --- a/bench/abc/optimized/retDelay.c.ll +++ b/bench/abc/optimized/retDelay.c.ll @@ -517,7 +517,7 @@ Vec_IntFillExtra.exit: ; preds = %95, %._crit_edge.i %194 = getelementptr inbounds ptr, ptr %.val180.val.val.i, i64 %193 %195 = load ptr, ptr %194, align 8 %196 = tail call fastcc i32 @Abc_NtkRetimeTiming_rec(ptr noundef %195, i32 noundef 0) - %spec.select146.i = tail call i32 @llvm.smax.i32(i32 %.7306.i, i32 %196) + %spec.select146.i = tail call i32 @llvm.umax.i32(i32 %.7306.i, i32 %196) %indvars.iv.next345.i = add nuw nsw i64 %indvars.iv344.i, 1 %exitcond348.not.i = icmp eq i64 %indvars.iv.next345.i, %wide.trip.count347.i br i1 %exitcond348.not.i, label %.critedge10.preheader.i, label %187, !llvm.loop !12 @@ -1494,7 +1494,7 @@ define internal fastcc range(i32 0, 1048576) i32 @Abc_NtkRetimeTiming_rec(ptr no %33 = getelementptr inbounds ptr, ptr %.val40.val.val, i64 %32 %34 = load ptr, ptr %33, align 8 %35 = tail call fastcc i32 @Abc_NtkRetimeTiming_rec(ptr noundef %34, i32 noundef %1) - %spec.select = tail call i32 @llvm.smax.i32(i32 %.050, i32 %35) + %spec.select = tail call i32 @llvm.umax.i32(i32 %.050, i32 %35) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %.val39 = load i32, ptr %21, align 4 %36 = sext i32 %.val39 to i64 @@ -1516,7 +1516,7 @@ define internal fastcc range(i32 0, 1048576) i32 @Abc_NtkRetimeTiming_rec(ptr no %44 = getelementptr inbounds ptr, ptr %.val43.val.val, i64 %43 %45 = load ptr, ptr %44, align 8 %46 = tail call fastcc i32 @Abc_NtkRetimeTiming_rec(ptr noundef %45, i32 noundef 0) - %spec.select37 = tail call i32 @llvm.smax.i32(i32 %.353, i32 %46) + %spec.select37 = tail call i32 @llvm.umax.i32(i32 %.353, i32 %46) %indvars.iv.next59 = add nuw nsw i64 %indvars.iv58, 1 %.val42 = load i32, ptr %24, align 4 %47 = sext i32 %.val42 to i64 @@ -1644,6 +1644,9 @@ declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #5 ; Function Attrs: nofree nounwind declare noundef i32 @puts(ptr nocapture noundef readonly) local_unnamed_addr #6 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umax.i32(i32, i32) #7 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #7 diff --git a/bench/abseil-cpp/optimized/arg.cc.ll b/bench/abseil-cpp/optimized/arg.cc.ll index c616e683b35..f450904e5a2 100644 --- a/bench/abseil-cpp/optimized/arg.cc.ll +++ b/bench/abseil-cpp/optimized/arg.cc.ll @@ -688,11 +688,9 @@ if.end27: ; preds = %lor.lhs.false, %if. if.end45.thread: ; preds = %if.end27 %add44 = add i64 %cond34, %cond.i - %cond3937 = select i1 %cmp.i.i36.not, i64 0, i64 %cond.i.i33 br label %_ZN4absl19str_format_internal14FormatSinkImpl6AppendEmc.exit if.end45: ; preds = %if.end27 - %cond39 = select i1 %cmp.i.i36.not, i64 0, i64 %cond.i.i33 %cmp.i43 = icmp eq i64 %cond34, 0 br i1 %cmp.i43, label %_ZN4absl19str_format_internal14FormatSinkImpl6AppendEmc.exit, label %if.end.i44 @@ -752,7 +750,6 @@ while.end.i: ; preds = %if.end8.i, %if.end. br label %_ZN4absl19str_format_internal14FormatSinkImpl6AppendEmc.exit _ZN4absl19str_format_internal14FormatSinkImpl6AppendEmc.exit: ; preds = %if.end45.thread, %if.end45, %while.end.i - %cond3940 = phi i64 [ %cond3937, %if.end45.thread ], [ %cond39, %if.end45 ], [ %cond39, %while.end.i ] %num_zeroes.039 = phi i64 [ %add44, %if.end45.thread ], [ %cond.i, %if.end45 ], [ %cond.i, %while.end.i ] %cmp.i46 = icmp eq i64 %retval.sroa.0.0.i, 0 br i1 %cmp.i46, label %_ZN4absl19str_format_internal14FormatSinkImpl6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit, label %if.end.i47 @@ -891,7 +888,7 @@ while.end.i84: ; preds = %if.end8.i100, %if.e _ZN4absl19str_format_internal14FormatSinkImpl6AppendEmc.exit104: ; preds = %_ZN4absl19str_format_internal14FormatSinkImpl6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit73, %while.end.i84 %cmp.i105 = icmp eq i64 %as_digits.8.val, %conv2.i - br i1 %cmp.i105, label %_ZN4absl19str_format_internal14FormatSinkImpl6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit122, label %if.end.i106 + br i1 %cmp.i105, label %_ZN4absl19str_format_internal14FormatSinkImpl6AppendEmc.exit153, label %if.end.i106 if.end.i106: ; preds = %_ZN4absl19str_format_internal14FormatSinkImpl6AppendEmc.exit104 %size_.i107 = getelementptr inbounds i8, ptr %sink, i64 16 @@ -919,75 +916,16 @@ if.then4.i115: ; preds = %if.end.i106 %37 = load ptr, ptr %write_.i.i.i119, align 8 %38 = load ptr, ptr %sink, align 8 tail call void %37(ptr noundef %38, i64 %sub.i, ptr nonnull %add.ptr.i) - br label %_ZN4absl19str_format_internal14FormatSinkImpl6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit122 + br label %_ZN4absl19str_format_internal14FormatSinkImpl6AppendEmc.exit153 if.end5.i120: ; preds = %if.end.i106 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %34, ptr nonnull align 1 %add.ptr.i, i64 %sub.i, i1 false) %39 = load ptr, ptr %pos_.i.i110, align 8 %add.ptr.i121 = getelementptr inbounds i8, ptr %39, i64 %sub.i store ptr %add.ptr.i121, ptr %pos_.i.i110, align 8 - br label %_ZN4absl19str_format_internal14FormatSinkImpl6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit122 - -_ZN4absl19str_format_internal14FormatSinkImpl6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit122: ; preds = %_ZN4absl19str_format_internal14FormatSinkImpl6AppendEmc.exit104, %if.then4.i115, %if.end5.i120 - %cmp.i123 = icmp eq i64 %cond3940, 0 - br i1 %cmp.i123, label %_ZN4absl19str_format_internal14FormatSinkImpl6AppendEmc.exit153, label %if.end.i124 - -if.end.i124: ; preds = %_ZN4absl19str_format_internal14FormatSinkImpl6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit122 - %size_.i125 = getelementptr inbounds i8, ptr %sink, i64 16 - %40 = load i64, ptr %size_.i125, align 8 - %add.i126 = add i64 %40, %cond3940 - store i64 %add.i126, ptr %size_.i125, align 8 - %add.ptr.i.i127 = getelementptr inbounds i8, ptr %sink, i64 1056 - %pos_.i.i128 = getelementptr inbounds i8, ptr %sink, i64 24 - %sub.ptr.lhs.cast.i.i129 = ptrtoint ptr %add.ptr.i.i127 to i64 - %41 = load ptr, ptr %pos_.i.i128, align 8 - %sub.ptr.rhs.cast.i31.i130 = ptrtoint ptr %41 to i64 - %sub.ptr.sub.i32.i131 = sub i64 %sub.ptr.lhs.cast.i.i129, %sub.ptr.rhs.cast.i31.i130 - %cmp233.i132 = icmp ugt i64 %cond3940, %sub.ptr.sub.i32.i131 - br i1 %cmp233.i132, label %while.body.lr.ph.i137, label %while.end.i133 - -while.body.lr.ph.i137: ; preds = %if.end.i124 - %buf_.i.i138 = getelementptr inbounds i8, ptr %sink, i64 32 - %sub.ptr.rhs.cast.i24.i139 = ptrtoint ptr %buf_.i.i138 to i64 - %write_.i.i.i140 = getelementptr inbounds i8, ptr %sink, i64 8 - br label %while.body.i141 - -while.body.i141: ; preds = %if.end8.i149, %while.body.lr.ph.i137 - %sub.ptr.sub.i35.i142 = phi i64 [ %sub.ptr.sub.i32.i131, %while.body.lr.ph.i137 ], [ 1024, %if.end8.i149 ] - %42 = phi ptr [ %41, %while.body.lr.ph.i137 ], [ %buf_.i.i138, %if.end8.i149 ] - %n.addr.034.i143 = phi i64 [ %cond3940, %while.body.lr.ph.i137 ], [ %sub.i144, %if.end8.i149 ] - %sub.i144 = sub nuw i64 %n.addr.034.i143, %sub.ptr.sub.i35.i142 - %cmp5.not.i145 = icmp eq ptr %add.ptr.i.i127, %42 - br i1 %cmp5.not.i145, label %if.end8.i149, label %if.then6.i146 - -if.then6.i146: ; preds = %while.body.i141 - tail call void @llvm.memset.p0.i64(ptr align 1 %42, i8 32, i64 %sub.ptr.sub.i35.i142, i1 false) - %43 = load ptr, ptr %pos_.i.i128, align 8 - %add.ptr.i21.i147 = getelementptr inbounds i8, ptr %43, i64 %sub.ptr.sub.i35.i142 - store ptr %add.ptr.i21.i147, ptr %pos_.i.i128, align 8 - %.pre.i148 = ptrtoint ptr %add.ptr.i21.i147 to i64 - br label %if.end8.i149 - -if.end8.i149: ; preds = %if.then6.i146, %while.body.i141 - %sub.ptr.lhs.cast.i23.pre-phi.i150 = phi i64 [ %.pre.i148, %if.then6.i146 ], [ %sub.ptr.lhs.cast.i.i129, %while.body.i141 ] - %sub.ptr.sub.i25.i151 = sub i64 %sub.ptr.lhs.cast.i23.pre-phi.i150, %sub.ptr.rhs.cast.i24.i139 - %44 = load ptr, ptr %write_.i.i.i140, align 8 - %45 = load ptr, ptr %sink, align 8 - tail call void %44(ptr noundef %45, i64 %sub.ptr.sub.i25.i151, ptr nonnull %buf_.i.i138) - store ptr %buf_.i.i138, ptr %pos_.i.i128, align 8 - %cmp2.i152 = icmp ugt i64 %sub.i144, 1024 - br i1 %cmp2.i152, label %while.body.i141, label %while.end.i133, !llvm.loop !8 - -while.end.i133: ; preds = %if.end8.i149, %if.end.i124 - %n.addr.0.lcssa.i134 = phi i64 [ %cond3940, %if.end.i124 ], [ %sub.i144, %if.end8.i149 ] - %.lcssa.i135 = phi ptr [ %41, %if.end.i124 ], [ %buf_.i.i138, %if.end8.i149 ] - tail call void @llvm.memset.p0.i64(ptr align 1 %.lcssa.i135, i8 32, i64 %n.addr.0.lcssa.i134, i1 false) - %46 = load ptr, ptr %pos_.i.i128, align 8 - %add.ptr.i27.i136 = getelementptr inbounds i8, ptr %46, i64 %n.addr.0.lcssa.i134 - store ptr %add.ptr.i27.i136, ptr %pos_.i.i128, align 8 br label %_ZN4absl19str_format_internal14FormatSinkImpl6AppendEmc.exit153 -_ZN4absl19str_format_internal14FormatSinkImpl6AppendEmc.exit153: ; preds = %_ZN4absl19str_format_internal14FormatSinkImpl6AppendESt17basic_string_viewIcSt11char_traitsIcEE.exit122, %while.end.i133 +_ZN4absl19str_format_internal14FormatSinkImpl6AppendEmc.exit153: ; preds = %if.end5.i120, %if.then4.i115, %_ZN4absl19str_format_internal14FormatSinkImpl6AppendEmc.exit104 ret void } diff --git a/bench/abseil-cpp/optimized/time_zone_info.cc.ll b/bench/abseil-cpp/optimized/time_zone_info.cc.ll index dc08045a232..6230fcc8bb0 100644 --- a/bench/abseil-cpp/optimized/time_zone_info.cc.ll +++ b/bench/abseil-cpp/optimized/time_zone_info.cc.ll @@ -2027,8 +2027,8 @@ invoke.cont235: ; preds = %if.then234 %cmp.i131 = icmp eq i64 %call.i133, 1 %46 = load i8, ptr %ch.i, align 1 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ch.i) - %cmp237.not168 = icmp eq i8 %46, 10 - %cmp237.not = select i1 %cmp.i131, i1 %cmp237.not168, i1 false + %cmp237.not169 = icmp eq i8 %46, 10 + %cmp237.not = select i1 %cmp.i131, i1 %cmp237.not169, i1 false br i1 %cmp237.not, label %if.end239, label %cleanup if.end239: ; preds = %invoke.cont235 @@ -2044,18 +2044,13 @@ if.end239: ; preds = %invoke.cont235 %48 = load i8, ptr %ch.i134, align 1 %conv.i138 = zext i8 %48 to i32 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ch.i134) - %spec.select234 = select i1 %cmp.i137, i32 %conv.i138, i32 -1 - br label %for.cond242 - -for.cond242: ; preds = %"_ZZN4absl13time_internal4cctz12TimeZoneInfo4LoadEPNS1_14ZoneInfoSourceEENK3$_0clES4_.exit149", %"_ZZN4absl13time_internal4cctz12TimeZoneInfo4LoadEPNS1_14ZoneInfoSourceEENK3$_0clES4_.exit141" - %c.0 = phi i32 [ %spec.select234, %"_ZZN4absl13time_internal4cctz12TimeZoneInfo4LoadEPNS1_14ZoneInfoSourceEENK3$_0clES4_.exit141" ], [ %c.0.be, %"_ZZN4absl13time_internal4cctz12TimeZoneInfo4LoadEPNS1_14ZoneInfoSourceEENK3$_0clES4_.exit149" ] - switch i32 %c.0, label %if.end247 [ - i32 10, label %if.end255 - i32 -1, label %cleanup - ] + %spec.select166 = select i1 %cmp.i137, i32 %conv.i138, i32 -1 + %cond168197 = icmp eq i32 %spec.select166, 10 + br i1 %cond168197, label %if.end255, label %if.end247 -if.end247: ; preds = %for.cond242 - %conv249 = trunc nuw i32 %c.0 to i8 +if.end247: ; preds = %"_ZZN4absl13time_internal4cctz12TimeZoneInfo4LoadEPNS1_14ZoneInfoSourceEENK3$_0clES4_.exit141", %"_ZZN4absl13time_internal4cctz12TimeZoneInfo4LoadEPNS1_14ZoneInfoSourceEENK3$_0clES4_.exit149" + %c.0198 = phi i32 [ %spec.select167, %"_ZZN4absl13time_internal4cctz12TimeZoneInfo4LoadEPNS1_14ZoneInfoSourceEENK3$_0clES4_.exit149" ], [ %spec.select166, %"_ZZN4absl13time_internal4cctz12TimeZoneInfo4LoadEPNS1_14ZoneInfoSourceEENK3$_0clES4_.exit141" ] + %conv249 = trunc nuw i32 %c.0198 to i8 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %future_spec_, i8 noundef signext %conv249) to label %for.inc251 unwind label %lpad63.loopexit @@ -2072,10 +2067,11 @@ for.inc251: ; preds = %if.end247 %50 = load i8, ptr %ch.i142, align 1 %conv.i146 = zext i8 %50 to i32 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ch.i142) - %c.0.be = select i1 %cmp.i145, i32 %conv.i146, i32 -1 - br label %for.cond242 + %spec.select167 = select i1 %cmp.i145, i32 %conv.i146, i32 -1 + %cond168 = icmp eq i32 %spec.select167, 10 + br i1 %cond168, label %if.end255, label %if.end247 -if.end255: ; preds = %for.cond242, %invoke.cont217 +if.end255: ; preds = %"_ZZN4absl13time_internal4cctz12TimeZoneInfo4LoadEPNS1_14ZoneInfoSourceEENK3$_0clES4_.exit149", %"_ZZN4absl13time_internal4cctz12TimeZoneInfo4LoadEPNS1_14ZoneInfoSourceEENK3$_0clES4_.exit141", %invoke.cont217 %version_ = getelementptr inbounds i8, ptr %this, i64 96 %call256 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %version_) #23 br i1 %call256, label %if.then257, label %if.end264 @@ -2094,8 +2090,8 @@ invoke.cont261: ; preds = %if.then257 if.end264: ; preds = %invoke.cont261, %if.end255 %.pr = load i64, ptr %hdr, align 8 - %cmp267198 = icmp ugt i64 %.pr, 1 - br i1 %cmp267198, label %while.body268.lr.ph, label %while.end284 + %cmp267200 = icmp ugt i64 %.pr, 1 + br i1 %cmp267200, label %while.body268.lr.ph, label %while.end284 while.body268.lr.ph: ; preds = %if.end264 %52 = load ptr, ptr %transitions_, align 8 @@ -2107,17 +2103,17 @@ while.cond265: ; preds = %while.body268 br i1 %cmp267, label %while.body268, label %while.end284, !llvm.loop !37 while.body268: ; preds = %while.body268.lr.ph, %while.cond265 - %sub271197199 = phi i64 [ %.pr, %while.body268.lr.ph ], [ %sub271, %while.cond265 ] - %sub271 = add i64 %sub271197199, -1 + %sub271199201 = phi i64 [ %.pr, %while.body268.lr.ph ], [ %sub271, %while.cond265 ] + %sub271 = add i64 %sub271199201, -1 %type_index273 = getelementptr inbounds %"struct.absl::time_internal::cctz::Transition", ptr %52, i64 %sub271, i32 1 %53 = load i8, ptr %type_index273, align 8 - %gep = getelementptr %"struct.absl::time_internal::cctz::Transition", ptr %invariant.gep, i64 %sub271197199 + %gep = getelementptr %"struct.absl::time_internal::cctz::Transition", ptr %invariant.gep, i64 %sub271199201 %54 = load i8, ptr %gep, align 8 %call279 = call noundef zeroext i1 @_ZNK4absl13time_internal4cctz12TimeZoneInfo16EquivTransitionsEhh(ptr noundef nonnull align 8 dereferenceable(192) %this, i8 noundef zeroext %53, i8 noundef zeroext %54) br i1 %call279, label %while.cond265, label %while.end284 while.end284: ; preds = %while.cond265, %while.body268, %if.end264 - %.lcssa = phi i64 [ %.pr, %if.end264 ], [ %sub271197199, %while.body268 ], [ 1, %while.cond265 ] + %.lcssa = phi i64 [ %.pr, %if.end264 ], [ %sub271199201, %while.body268 ], [ 1, %while.cond265 ] store i64 %.lcssa, ptr %hdr, align 8 invoke void @_ZNSt6vectorIN4absl13time_internal4cctz10TransitionESaIS3_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %transitions_, i64 noundef %.lcssa) to label %invoke.cont287 unwind label %lpad63.loopexit.split-lp @@ -2169,14 +2165,14 @@ invoke.cont330: ; preds = %if.then318 store i64 2147483647, ptr %call331, align 8 %type_index335 = getelementptr inbounds i8, ptr %call331, i64 8 store i8 %61, ptr %type_index335, align 8 - %.pre220 = load ptr, ptr %_M_finish.i.i, align 8 + %.pre221 = load ptr, ptr %_M_finish.i.i, align 8 br label %if.end336 if.end336: ; preds = %invoke.cont330, %if.end313 - %62 = phi ptr [ %.pre220, %invoke.cont330 ], [ %59, %if.end313 ] + %62 = phi ptr [ %.pre221, %invoke.cont330 ], [ %59, %if.end313 ] %63 = load ptr, ptr %transitions_, align 8 - %cmp345.not208 = icmp eq ptr %62, %63 - br i1 %cmp345.not208, label %for.end379, label %for.body346.lr.ph + %cmp345.not210 = icmp eq ptr %62, %63 + br i1 %cmp345.not210, label %for.end379, label %for.body346.lr.ph for.body346.lr.ph: ; preds = %if.end336 %64 = load ptr, ptr %transition_types_, align 8 @@ -2188,11 +2184,11 @@ for.body346.lr.ph: ; preds = %if.end336 for.body346: ; preds = %for.body346.lr.ph, %for.inc377 %66 = phi ptr [ %63, %for.body346.lr.ph ], [ %76, %for.inc377 ] - %i341.0210 = phi i64 [ 0, %for.body346.lr.ph ], [ %inc378, %for.inc377 ] - %ttp.0209 = phi ptr [ %add.ptr.i153, %for.body346.lr.ph ], [ %add.ptr.i156, %for.inc377 ] - %add.ptr.i155 = getelementptr inbounds %"struct.absl::time_internal::cctz::Transition", ptr %66, i64 %i341.0210 + %i341.0212 = phi i64 [ 0, %for.body346.lr.ph ], [ %inc378, %for.inc377 ] + %ttp.0211 = phi ptr [ %add.ptr.i153, %for.body346.lr.ph ], [ %add.ptr.i156, %for.inc377 ] + %add.ptr.i155 = getelementptr inbounds %"struct.absl::time_internal::cctz::Transition", ptr %66, i64 %i341.0212 %67 = load i64, ptr %add.ptr.i155, align 8 - call void @_ZNK4absl13time_internal4cctz12TimeZoneInfo9LocalTimeElRKNS1_14TransitionTypeE(ptr nonnull sret(%"struct.absl::time_internal::cctz::time_zone::absolute_lookup") align 8 %ref.tmp352, ptr noundef nonnull align 8 dereferenceable(192) %this, i64 noundef %67, ptr noundef nonnull align 8 dereferenceable(42) %ttp.0209) + call void @_ZNK4absl13time_internal4cctz12TimeZoneInfo9LocalTimeElRKNS1_14TransitionTypeE(ptr nonnull sret(%"struct.absl::time_internal::cctz::time_zone::absolute_lookup") align 8 %ref.tmp352, ptr noundef nonnull align 8 dereferenceable(192) %this, i64 noundef %67, ptr noundef nonnull align 8 dereferenceable(42) %ttp.0211) %agg.tmp351.sroa.0.0.copyload = load i64, ptr %ref.tmp352, align 8 %agg.tmp351.sroa.2.0.copyload = load i64, ptr %agg.tmp351.sroa.2.0.cs.sroa_idx, align 8 %call355 = call { i64, i64 } @_ZN4absl13time_internal4cctz6detailmiENS2_10civil_timeINS2_10second_tagEEEl(i64 %agg.tmp351.sroa.0.0.copyload, i64 %agg.tmp351.sroa.2.0.copyload, i64 noundef 1) #23 @@ -2211,18 +2207,18 @@ for.body346: ; preds = %for.body346.lr.ph, call void @_ZNK4absl13time_internal4cctz12TimeZoneInfo9LocalTimeElRKNS1_14TransitionTypeE(ptr nonnull sret(%"struct.absl::time_internal::cctz::time_zone::absolute_lookup") align 8 %ref.tmp361, ptr noundef nonnull align 8 dereferenceable(192) %this, i64 noundef %72, ptr noundef nonnull align 8 dereferenceable(42) %add.ptr.i156) %civil_sec = getelementptr inbounds i8, ptr %add.ptr.i155, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %civil_sec, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp361, i64 16, i1 false) - %cmp365.not = icmp eq i64 %i341.0210, 0 + %cmp365.not = icmp eq i64 %i341.0212, 0 br i1 %cmp365.not, label %for.inc377, label %if.then366 if.then366: ; preds = %for.body346 %73 = load ptr, ptr %transitions_, align 8 - %74 = getelementptr %"struct.absl::time_internal::cctz::Transition", ptr %73, i64 %i341.0210 + %74 = getelementptr %"struct.absl::time_internal::cctz::Transition", ptr %73, i64 %i341.0212 %add.ptr.i157 = getelementptr i8, ptr %74, i64 -48 %call372 = call noundef zeroext i1 @_ZNK4absl13time_internal4cctz10Transition11ByCivilTimeclERKS2_S5_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp367, ptr noundef nonnull align 8 dereferenceable(48) %add.ptr.i157, ptr noundef nonnull align 8 dereferenceable(48) %add.ptr.i155) br i1 %call372, label %for.inc377, label %cleanup for.inc377: ; preds = %for.body346, %if.then366 - %inc378 = add i64 %i341.0210, 1 + %inc378 = add i64 %i341.0212, 1 %75 = load ptr, ptr %_M_finish.i.i, align 8 %76 = load ptr, ptr %transitions_, align 8 %sub.ptr.lhs.cast.i = ptrtoint ptr %75 to i64 @@ -2237,27 +2233,27 @@ for.end379: ; preds = %for.inc377, %if.end %78 = load ptr, ptr %transition_types_, align 8 %_M_finish.i158 = getelementptr inbounds i8, ptr %this, i64 40 %79 = load ptr, ptr %_M_finish.i158, align 8 - %cmp.i159.not211 = icmp eq ptr %78, %79 - br i1 %cmp.i159.not211, label %for.end407, label %for.body387 + %cmp.i159.not213 = icmp eq ptr %78, %79 + br i1 %cmp.i159.not213, label %for.end407, label %for.body387 for.body387: ; preds = %for.end379, %for.body387 - %__begin2.sroa.0.0212 = phi ptr [ %incdec.ptr.i160, %for.body387 ], [ %78, %for.end379 ] - call void @_ZNK4absl13time_internal4cctz12TimeZoneInfo9LocalTimeElRKNS1_14TransitionTypeE(ptr nonnull sret(%"struct.absl::time_internal::cctz::time_zone::absolute_lookup") align 8 %ref.tmp389, ptr noundef nonnull align 8 dereferenceable(192) %this, i64 noundef 9223372036854775807, ptr noundef nonnull align 8 dereferenceable(42) %__begin2.sroa.0.0212) - %civil_max = getelementptr inbounds i8, ptr %__begin2.sroa.0.0212, i64 8 + %__begin2.sroa.0.0214 = phi ptr [ %incdec.ptr.i160, %for.body387 ], [ %78, %for.end379 ] + call void @_ZNK4absl13time_internal4cctz12TimeZoneInfo9LocalTimeElRKNS1_14TransitionTypeE(ptr nonnull sret(%"struct.absl::time_internal::cctz::time_zone::absolute_lookup") align 8 %ref.tmp389, ptr noundef nonnull align 8 dereferenceable(192) %this, i64 noundef 9223372036854775807, ptr noundef nonnull align 8 dereferenceable(42) %__begin2.sroa.0.0214) + %civil_max = getelementptr inbounds i8, ptr %__begin2.sroa.0.0214, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %civil_max, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp389, i64 16, i1 false) - call void @_ZNK4absl13time_internal4cctz12TimeZoneInfo9LocalTimeElRKNS1_14TransitionTypeE(ptr nonnull sret(%"struct.absl::time_internal::cctz::time_zone::absolute_lookup") align 8 %ref.tmp397, ptr noundef nonnull align 8 dereferenceable(192) %this, i64 noundef -9223372036854775808, ptr noundef nonnull align 8 dereferenceable(42) %__begin2.sroa.0.0212) - %civil_min = getelementptr inbounds i8, ptr %__begin2.sroa.0.0212, i64 24 + call void @_ZNK4absl13time_internal4cctz12TimeZoneInfo9LocalTimeElRKNS1_14TransitionTypeE(ptr nonnull sret(%"struct.absl::time_internal::cctz::time_zone::absolute_lookup") align 8 %ref.tmp397, ptr noundef nonnull align 8 dereferenceable(192) %this, i64 noundef -9223372036854775808, ptr noundef nonnull align 8 dereferenceable(42) %__begin2.sroa.0.0214) + %civil_min = getelementptr inbounds i8, ptr %__begin2.sroa.0.0214, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %civil_min, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp397, i64 16, i1 false) - %incdec.ptr.i160 = getelementptr inbounds i8, ptr %__begin2.sroa.0.0212, i64 48 + %incdec.ptr.i160 = getelementptr inbounds i8, ptr %__begin2.sroa.0.0214, i64 48 %cmp.i159.not = icmp eq ptr %incdec.ptr.i160, %79 br i1 %cmp.i159.not, label %for.end407.loopexit, label %for.body387 for.end407.loopexit: ; preds = %for.body387 - %.pre221 = load ptr, ptr %_M_finish.i.i, align 8 + %.pre222 = load ptr, ptr %_M_finish.i.i, align 8 br label %for.end407 for.end407: ; preds = %for.end407.loopexit, %for.end379 - %80 = phi ptr [ %.pre221, %for.end407.loopexit ], [ %77, %for.end379 ] + %80 = phi ptr [ %.pre222, %for.end407.loopexit ], [ %77, %for.end379 ] %_M_end_of_storage.i.i.i = getelementptr inbounds i8, ptr %this, i64 24 %81 = load ptr, ptr %_M_end_of_storage.i.i.i, align 8 %cmp.i.i161 = icmp eq ptr %81, %80 @@ -2267,8 +2263,8 @@ if.end.i.i: ; preds = %for.end407 %call3.i.i = call noundef zeroext i1 @_ZNSt19__shrink_to_fit_auxISt6vectorIN4absl13time_internal4cctz10TransitionESaIS4_EELb1EE8_S_do_itERS6_(ptr noundef nonnull align 8 dereferenceable(24) %transitions_) #23 br label %cleanup -cleanup: ; preds = %if.then84, %for.body99, %if.end147, %invoke.cont133, %for.cond242, %if.then366, %if.end.i.i, %for.end407, %invoke.cont310, %invoke.cont235, %invoke.cont64 - %retval.1 = phi i1 [ false, %invoke.cont64 ], [ false, %invoke.cont235 ], [ false, %invoke.cont310 ], [ true, %for.end407 ], [ true, %if.end.i.i ], [ false, %if.then366 ], [ false, %for.cond242 ], [ false, %invoke.cont133 ], [ false, %if.end147 ], [ false, %for.body99 ], [ false, %if.then84 ] +cleanup: ; preds = %if.then84, %for.body99, %if.end147, %invoke.cont133, %if.then366, %if.end.i.i, %for.end407, %invoke.cont310, %invoke.cont235, %invoke.cont64 + %retval.1 = phi i1 [ false, %invoke.cont64 ], [ false, %invoke.cont235 ], [ false, %invoke.cont310 ], [ true, %for.end407 ], [ true, %if.end.i.i ], [ false, %if.then366 ], [ false, %invoke.cont133 ], [ false, %if.end147 ], [ false, %for.body99 ], [ false, %if.then84 ] call void @_ZNSt6vectorIcSaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %tbuf) #23 br label %return @@ -5403,16 +5399,16 @@ lor.rhs.i: ; preds = %for.cond40 %sub.i = add nsw i32 %yi.2, -1 %rem.i66 = srem i32 %sub.i, 100 %cmp2.i = icmp slt i32 %rem.i66, 96 - %4 = select i1 %cmp2.i, i64 1461, i64 1460 + %.neg = select i1 %cmp2.i, i64 -1461, i64 -1460 br label %_ZN4absl13time_internal4cctz6detail4impl15days_per_4yearsEi.exit _ZN4absl13time_internal4cctz6detail4impl15days_per_4yearsEi.exit: ; preds = %for.cond40, %lor.rhs.i - %conv.i = phi i64 [ 1461, %for.cond40 ], [ %4, %lor.rhs.i ] - %cmp44.not = icmp ugt i64 %d.addr.3, %conv.i + %conv.i.neg = phi i64 [ -1461, %for.cond40 ], [ %.neg, %lor.rhs.i ] + %cmp44.not = icmp ugt i64 %d.addr.3, 1461 br i1 %cmp44.not, label %if.end46, label %for.cond56 if.end46: ; preds = %_ZN4absl13time_internal4cctz6detail4impl15days_per_4yearsEi.exit - %sub48 = sub nuw nsw i64 %d.addr.3, %conv.i + %sub48 = add i64 %conv.i.neg, %d.addr.3 %add49 = add nsw i64 %ey.4, 4 %cmp51 = icmp sgt i32 %yi.2, 395 %spec.select55.v = select i1 %cmp51, i32 -396, i32 4 @@ -5423,8 +5419,8 @@ for.cond56: ; preds = %_ZN4absl13time_inte %ey.5 = phi i64 [ %inc, %if.end62 ], [ %ey.4, %_ZN4absl13time_internal4cctz6detail4impl15days_per_4yearsEi.exit ] %d.addr.4 = phi i64 [ %sub64, %if.end62 ], [ %d.addr.3, %_ZN4absl13time_internal4cctz6detail4impl15days_per_4yearsEi.exit ] %add.i69 = add i64 %ey.5, %conv1.i59 - %5 = and i64 %add.i69, 3 - %cmp.i.i70 = icmp eq i64 %5, 0 + %4 = and i64 %add.i69, 3 + %cmp.i.i70 = icmp eq i64 %4, 0 br i1 %cmp.i.i70, label %land.rhs.i.i71, label %_ZN4absl13time_internal4cctz6detail4impl13days_per_yearEla.exit78 land.rhs.i.i71: ; preds = %for.cond56 @@ -5433,11 +5429,11 @@ land.rhs.i.i71: ; preds = %for.cond56 %rem3.i.i74 = srem i64 %add.i69, 400 %cmp4.i.i75 = icmp eq i64 %rem3.i.i74, 0 %or.cond.i76 = or i1 %cmp2.not.i.i73, %cmp4.i.i75 - %6 = select i1 %or.cond.i76, i64 366, i64 365 + %5 = select i1 %or.cond.i76, i64 366, i64 365 br label %_ZN4absl13time_internal4cctz6detail4impl13days_per_yearEla.exit78 _ZN4absl13time_internal4cctz6detail4impl13days_per_yearEla.exit78: ; preds = %for.cond56, %land.rhs.i.i71 - %conv59 = phi i64 [ 365, %for.cond56 ], [ %6, %land.rhs.i.i71 ] + %conv59 = phi i64 [ 365, %for.cond56 ], [ %5, %land.rhs.i.i71 ] %cmp60.not = icmp ugt i64 %d.addr.4, %conv59 br i1 %cmp60.not, label %if.end62, label %if.end66 @@ -5458,10 +5454,10 @@ for.cond69: ; preds = %if.end66, %if.end75 %m.addr.1 = phi i8 [ %spec.select57, %if.end75 ], [ %m, %if.end66 ] %idxprom.i = sext i8 %m.addr.1 to i64 %arrayidx.i = getelementptr inbounds [13 x i32], ptr @__const._ZN4absl13time_internal4cctz6detail4impl14days_per_monthEla.k_days_per_month, i64 0, i64 %idxprom.i - %7 = load i32, ptr %arrayidx.i, align 4 + %6 = load i32, ptr %arrayidx.i, align 4 %cmp.i79 = icmp eq i8 %m.addr.1, 2 - %8 = and i64 %ey.7, 3 - %cmp.i.i80 = icmp eq i64 %8, 0 + %7 = and i64 %ey.7, 3 + %cmp.i.i80 = icmp eq i64 %7, 0 %or.cond.i81 = and i1 %cmp.i.i80, %cmp.i79 br i1 %or.cond.i81, label %land.rhs.i.i84, label %_ZN4absl13time_internal4cctz6detail4impl14days_per_monthEla.exit @@ -5473,12 +5469,12 @@ land.rhs.i.i84: ; preds = %for.cond69 lor.rhs.i.i: ; preds = %land.rhs.i.i84 %rem3.i.i87 = srem i64 %ey.7, 400 %cmp4.i.i88 = icmp eq i64 %rem3.i.i87, 0 - %9 = zext i1 %cmp4.i.i88 to i32 + %8 = zext i1 %cmp4.i.i88 to i32 br label %_ZN4absl13time_internal4cctz6detail4impl14days_per_monthEla.exit _ZN4absl13time_internal4cctz6detail4impl14days_per_monthEla.exit: ; preds = %for.cond69, %land.rhs.i.i84, %lor.rhs.i.i - %conv1.i82 = phi i32 [ 0, %for.cond69 ], [ 1, %land.rhs.i.i84 ], [ %9, %lor.rhs.i.i ] - %add.i83 = add nsw i32 %conv1.i82, %7 + %conv1.i82 = phi i32 [ 0, %for.cond69 ], [ 1, %land.rhs.i.i84 ], [ %8, %lor.rhs.i.i ] + %add.i83 = add nsw i32 %conv1.i82, %6 %conv72 = sext i32 %add.i83 to i64 %cmp73.not = icmp sgt i64 %d.addr.6, %conv72 br i1 %cmp73.not, label %if.end75, label %if.end85 diff --git a/bench/actix-rs/optimized/1a89q5mj3jl9opyq.ll b/bench/actix-rs/optimized/1a89q5mj3jl9opyq.ll index 39738010402..8c99a1091b8 100644 --- a/bench/actix-rs/optimized/1a89q5mj3jl9opyq.ll +++ b/bench/actix-rs/optimized/1a89q5mj3jl9opyq.ll @@ -2027,12 +2027,12 @@ define hidden void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core. } ; Function Attrs: inlinehint nonlazybind uwtable -define internal fastcc noundef align 8 ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h9cce884935274b9bE"(ptr noalias nocapture noundef nonnull readonly align 8 dereferenceable(64) %0, ptr noundef nonnull align 8 %1) unnamed_addr #2 personality ptr @rust_eh_personality { +define internal fastcc noalias noundef align 8 ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h9cce884935274b9bE"(ptr noalias nocapture noundef nonnull readonly align 8 dereferenceable(64) %0, ptr noundef nonnull align 8 %1) unnamed_addr #2 personality ptr @rust_eh_personality { %3 = alloca { [2 x i64], i64, i64 }, align 16 %4 = getelementptr inbounds i8, ptr %0, i64 24 %5 = load i64, ptr %4, align 8, !noundef !7 %6 = icmp eq i64 %5, 0 - br i1 %6, label %72, label %7 + br i1 %6, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hb470d048622776cfE.exit", label %7 7: ; preds = %2 %8 = getelementptr inbounds i8, ptr %0, i64 32 @@ -2135,30 +2135,15 @@ _ZN4core4hash11BuildHasher8hash_one17h3cd19baf41154f68E.exit: ; preds = %26, %36 %63 = sub nsw i64 0, %62 %gep.i.i = getelementptr { { { ptr, [3 x i64] } }, { { { i64, [20 x i64] }, i64 } } }, ptr %invariant.gep.i.i, i64 %63 %64 = call noundef zeroext i1 @"_ZN74_$LT$http..header..name..Repr$LT$T$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h1ce5c251be72188bE.llvm.18274090894404857403"(ptr noundef nonnull align 8 %1, ptr noundef nonnull align 8 %gep.i.i), !noalias !517 - br i1 %64, label %68, label %"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h30a062793616a2b2E.exit.i.i" + br i1 %64, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hb470d048622776cfE.exit", label %"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h30a062793616a2b2E.exit.i.i" 65: ; preds = %53 %66 = add i64 %.sroa.9.0.i.i.i, 16 %67 = add i64 %.sroa.01.0.i.i.i, %66 br label %49 -68: ; preds = %56 - %69 = getelementptr inbounds { { { ptr, [3 x i64] } }, { { { i64, [20 x i64] }, i64 } } }, ptr %.val, i64 %63 - br label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hb470d048622776cfE.exit" - -"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hb470d048622776cfE.exit": ; preds = %53, %68 - %.0.i.i = phi ptr [ %69, %68 ], [ null, %53 ] - %70 = icmp eq ptr %.0.i.i, null - %71 = getelementptr inbounds i8, ptr %.0.i.i, i64 -208 - %.0.i = select i1 %70, ptr null, ptr %71 - br label %72 - -72: ; preds = %2, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hb470d048622776cfE.exit" - %.04 = phi ptr [ %.0.i, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hb470d048622776cfE.exit" ], [ null, %2 ] - %73 = icmp eq ptr %.04, null - %74 = getelementptr inbounds i8, ptr %.04, i64 32 - %.0 = select i1 %73, ptr null, ptr %74 - ret ptr %.0 +"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hb470d048622776cfE.exit": ; preds = %53, %56, %2 + ret ptr null } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/actix-rs/optimized/1heyflno2zbhb99l.ll b/bench/actix-rs/optimized/1heyflno2zbhb99l.ll index 6477f480791..4f81221b697 100644 --- a/bench/actix-rs/optimized/1heyflno2zbhb99l.ll +++ b/bench/actix-rs/optimized/1heyflno2zbhb99l.ll @@ -6741,7 +6741,7 @@ define hidden void @_ZN6brotli3enc9metablock34BrotliBuildMetaBlockGreedyInternal 58: ; preds = %58, %54 %.1.i = phi i64 [ %spec.select.i, %54 ], [ %59, %58 ] - %.not21.i = icmp ugt i64 %.1.i, %.032.lcssa + %.not21.i = icmp samesign ugt i64 %.1.i, %.032.lcssa %59 = shl nuw nsw i64 %.1.i, 1 br i1 %.not21.i, label %.noexc.i, label %58 @@ -6865,7 +6865,7 @@ common.resume: ; preds = %310, %339, %"_ZN63_ 94: ; preds = %94, %73 %.113.i = phi i64 [ %spec.select19.i, %73 ], [ %95, %94 ] - %.not23.i = icmp ugt i64 %.113.i, %.032.lcssa + %.not23.i = icmp samesign ugt i64 %.113.i, %.032.lcssa %95 = shl nuw nsw i64 %.113.i, 1 br i1 %.not23.i, label %96, label %94 @@ -6989,7 +6989,7 @@ _ZN6brotli3enc9metablock17InitBlockSplitter17h19674f15767ad67bE.exit: ; preds = 134: ; preds = %134, %130 %.1.i57 = phi i64 [ %spec.select.i56, %130 ], [ %135, %134 ] - %.not26.i = icmp ugt i64 %.1.i57, %.032.lcssa + %.not26.i = icmp samesign ugt i64 %.1.i57, %.032.lcssa %135 = shl nuw nsw i64 %.1.i57, 1 br i1 %.not26.i, label %136, label %134 @@ -7108,7 +7108,7 @@ _ZN6brotli3enc9metablock17InitBlockSplitter17h19674f15767ad67bE.exit: ; preds = 172: ; preds = %172, %150 %.118.i = phi i64 [ %spec.select9.i, %150 ], [ %173, %172 ] - %.not28.i = icmp ugt i64 %.118.i, %.032.lcssa + %.not28.i = icmp samesign ugt i64 %.118.i, %.032.lcssa %173 = shl nuw nsw i64 %.118.i, 1 br i1 %.not28.i, label %174, label %172 @@ -7290,7 +7290,7 @@ _ZN6brotli3enc9metablock24InitContextBlockSplitter17hb2d66d2627967bceE.exit: ; p 218: ; preds = %218, %214 %.1.i77 = phi i64 [ %spec.select.i76, %214 ], [ %219, %218 ] - %.not21.i78 = icmp ugt i64 %.1.i77, %211 + %.not21.i78 = icmp samesign ugt i64 %.1.i77, %211 %219 = shl nuw nsw i64 %.1.i77, 1 br i1 %.not21.i78, label %.noexc.i79, label %218 @@ -7410,7 +7410,7 @@ _ZN6brotli3enc9metablock24InitContextBlockSplitter17hb2d66d2627967bceE.exit: ; p 254: ; preds = %254, %233 %.113.i89 = phi i64 [ %spec.select19.i88, %233 ], [ %255, %254 ] - %.not23.i90 = icmp ugt i64 %.113.i89, %211 + %.not23.i90 = icmp samesign ugt i64 %.113.i89, %211 %255 = shl nuw nsw i64 %.113.i89, 1 br i1 %.not23.i90, label %256, label %254 @@ -7524,7 +7524,7 @@ _ZN6brotli3enc9metablock17InitBlockSplitter17h4b5063fd3a1c0956E.exit: ; preds = 287: ; preds = %287, %283 %.1.i110 = phi i64 [ %spec.select.i109, %283 ], [ %288, %287 ] - %.not21.i111 = icmp ugt i64 %.1.i110, %280 + %.not21.i111 = icmp samesign ugt i64 %.1.i110, %280 %288 = shl nuw nsw i64 %.1.i110, 1 br i1 %.not21.i111, label %.noexc.i112, label %287 @@ -7644,7 +7644,7 @@ _ZN6brotli3enc9metablock17InitBlockSplitter17h4b5063fd3a1c0956E.exit: ; preds = 323: ; preds = %323, %302 %.113.i122 = phi i64 [ %spec.select19.i121, %302 ], [ %324, %323 ] - %.not23.i123 = icmp ugt i64 %.113.i122, %280 + %.not23.i123 = icmp samesign ugt i64 %.113.i122, %280 %324 = shl nuw nsw i64 %.113.i122, 1 br i1 %.not23.i123, label %325, label %323 @@ -9389,15 +9389,9 @@ define { i64, i32 } @"_ZN129_$LT$actix_http..keep_alive..KeepAlive$u20$as$u20$co %or.cond4.i.i = and i1 %4, %5 %6 = select i1 %3, i1 true, i1 %or.cond4.i.i %.sroa.5.0 = select i1 %6, i32 1000000001, i32 %1 - %7 = and i32 %.sroa.5.0, -2 - %8 = icmp ne i32 %7, 1000000000 - %or.cond.i = select i1 %8, i1 %4, i1 false - %9 = icmp eq i32 %.sroa.5.0, 0 - %or.cond4.i = and i1 %9, %or.cond.i - %..i = select i1 %or.cond4.i, i32 1000000001, i32 %.sroa.5.0 - %10 = insertvalue { i64, i32 } poison, i64 %0, 0 - %11 = insertvalue { i64, i32 } %10, i32 %..i, 1 - ret { i64, i32 } %11 + %7 = insertvalue { i64, i32 } poison, i64 %0, 0 + %8 = insertvalue { i64, i32 } %7, i32 %.sroa.5.0, 1 + ret { i64, i32 } %8 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/actix-rs/optimized/2lnack56lfnd1s8n.ll b/bench/actix-rs/optimized/2lnack56lfnd1s8n.ll index 17aa9b2b9af..e6b8eb02696 100644 --- a/bench/actix-rs/optimized/2lnack56lfnd1s8n.ll +++ b/bench/actix-rs/optimized/2lnack56lfnd1s8n.ll @@ -83,7 +83,7 @@ _ZN4core4hash11BuildHasher8hash_one17h569881dcf9df09a6E.exit.i: ; preds = %36, % ; Function Attrs: nonlazybind uwtable define hidden noundef align 8 ptr @_ZN10actix_http6header3map9HeaderMap3get17h5b67b31985bbda53E(ptr noalias nocapture noundef readonly align 8 dereferenceable(64) %0, ptr noundef nonnull align 8 %1) unnamed_addr #0 personality ptr @rust_eh_personality { - %3 = tail call fastcc noundef align 8 ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h1c1ae2b654c417a5E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %0, ptr noundef nonnull align 8 %1) + %3 = tail call fastcc noalias noundef align 8 ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h1c1ae2b654c417a5E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %0, ptr noundef nonnull align 8 %1) %4 = icmp eq ptr %3, null br i1 %4, label %7, label %5 @@ -97,7 +97,7 @@ define hidden noundef align 8 ptr @_ZN10actix_http6header3map9HeaderMap3get17h5b } ; Function Attrs: nonlazybind uwtable -define hidden noundef align 8 ptr @_ZN10actix_http6header3map9HeaderMap9get_value17hdf9851661affa7fbE.llvm.9685123688785817458(ptr noalias nocapture noundef readonly align 8 dereferenceable(64) %0, ptr noundef nonnull align 8 %1) unnamed_addr #0 personality ptr @rust_eh_personality { +define hidden noalias noundef align 8 ptr @_ZN10actix_http6header3map9HeaderMap9get_value17hdf9851661affa7fbE.llvm.9685123688785817458(ptr noalias nocapture noundef readonly align 8 dereferenceable(64) %0, ptr noundef nonnull align 8 %1) unnamed_addr #0 personality ptr @rust_eh_personality { %3 = tail call fastcc noundef align 8 ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h1c1ae2b654c417a5E"(ptr noalias noundef readonly align 8 dereferenceable(64) %0, ptr noundef nonnull align 8 %1) ret ptr %3 } @@ -118,12 +118,12 @@ define hidden void @"_ZN90_$LT$$RF$http..header..name..HeaderName$u20$as$u20$act } ; Function Attrs: inlinehint nonlazybind uwtable -define internal fastcc noundef align 8 ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h1c1ae2b654c417a5E"(ptr noalias nocapture noundef nonnull readonly align 8 dereferenceable(64) %0, ptr noundef nonnull align 8 %1) unnamed_addr #1 personality ptr @rust_eh_personality { +define internal fastcc noalias noundef align 8 ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h1c1ae2b654c417a5E"(ptr noalias nocapture noundef nonnull readonly align 8 dereferenceable(64) %0, ptr noundef nonnull align 8 %1) unnamed_addr #1 personality ptr @rust_eh_personality { %3 = alloca { [2 x i64], i64, i64 }, align 16 %4 = getelementptr inbounds i8, ptr %0, i64 24 %5 = load i64, ptr %4, align 8, !noundef !7 %6 = icmp eq i64 %5, 0 - br i1 %6, label %72, label %7 + br i1 %6, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h70031f13b85daba8E.exit", label %7 7: ; preds = %2 %8 = getelementptr inbounds i8, ptr %0, i64 32 @@ -226,30 +226,15 @@ _ZN4core4hash11BuildHasher8hash_one17h569881dcf9df09a6E.exit: ; preds = %26, %36 %63 = sub nsw i64 0, %62 %gep.i.i = getelementptr { { { ptr, [3 x i64] } }, { { { i64, [20 x i64] }, i64 } } }, ptr %invariant.gep.i.i, i64 %63 %64 = call noundef zeroext i1 @"_ZN74_$LT$http..header..name..Repr$LT$T$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h8be7f8af3713d029E.llvm.14508081899341677224"(ptr noundef nonnull align 8 %1, ptr noundef nonnull align 8 %gep.i.i), !noalias !82 - br i1 %64, label %68, label %"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h30a062793616a2b2E.exit.i.i" + br i1 %64, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h70031f13b85daba8E.exit", label %"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h30a062793616a2b2E.exit.i.i" 65: ; preds = %53 %66 = add i64 %.sroa.9.0.i.i.i, 16 %67 = add i64 %.sroa.01.0.i.i.i, %66 br label %49 -68: ; preds = %56 - %69 = getelementptr inbounds { { { ptr, [3 x i64] } }, { { { i64, [20 x i64] }, i64 } } }, ptr %.val, i64 %63 - br label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h70031f13b85daba8E.exit" - -"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h70031f13b85daba8E.exit": ; preds = %53, %68 - %.0.i.i = phi ptr [ %69, %68 ], [ null, %53 ] - %70 = icmp eq ptr %.0.i.i, null - %71 = getelementptr inbounds i8, ptr %.0.i.i, i64 -208 - %.0.i = select i1 %70, ptr null, ptr %71 - br label %72 - -72: ; preds = %2, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h70031f13b85daba8E.exit" - %.04 = phi ptr [ %.0.i, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h70031f13b85daba8E.exit" ], [ null, %2 ] - %73 = icmp eq ptr %.04, null - %74 = getelementptr inbounds i8, ptr %.04, i64 32 - %.0 = select i1 %73, ptr null, ptr %74 - ret ptr %.0 +"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h70031f13b85daba8E.exit": ; preds = %53, %56, %2 + ret ptr null } ; Function Attrs: nonlazybind uwtable diff --git a/bench/arrow/optimized/UriRecompose.c.ll b/bench/arrow/optimized/UriRecompose.c.ll index f36ce6ec223..966e9bc3f25 100644 --- a/bench/arrow/optimized/UriRecompose.c.ll +++ b/bench/arrow/optimized/UriRecompose.c.ll @@ -1355,8 +1355,7 @@ if.end192: ; preds = %if.then178, %if.els store i32 0, ptr %arrayidx194, align 4 %idx.ext195 = sext i32 %written.5476587 to i64 %add.ptr196 = getelementptr inbounds i32, ptr %dest, i64 %idx.ext195 - %mul198 = shl nuw nsw i64 %idxprom193, 2 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %add.ptr196, ptr noundef nonnull align 16 dereferenceable(1) %text, i64 %mul198, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %add.ptr196, ptr noundef nonnull align 16 dereferenceable(12) %text, i64 12, i1 false) %cmp207.not = icmp eq i64 %indvars.iv586, 3 br i1 %cmp207.not, label %if.end464, label %if.then209 diff --git a/bench/arrow/optimized/scalar_cast_temporal.cc.ll b/bench/arrow/optimized/scalar_cast_temporal.cc.ll index 14893d6237c..81650ecee5b 100644 --- a/bench/arrow/optimized/scalar_cast_temporal.cc.ll +++ b/bench/arrow/optimized/scalar_cast_temporal.cc.ll @@ -49991,7 +49991,6 @@ sw.bb15: ; preds = %entry sw.epilog: ; preds = %sw.bb15, %sw.bb5, %sw.bb %.pn = phi i64 [ 3, %sw.bb ], [ 6, %sw.bb5 ], [ 9, %sw.bb15 ] - %omitted.0 = sub nuw nsw i64 %.pn, %length %cmp25 = icmp eq i64 %.pn, %length br i1 %cmp25, label %if.then28, label %if.else @@ -50002,70 +50001,10 @@ if.then28: ; preds = %sw.epilog if.else: ; preds = %sw.epilog store i32 0, ptr %subseconds, align 4 %call29 = call noundef zeroext i1 @_ZN5arrow8internal13ParseUnsignedEPKcmPj(ptr noundef %s, i64 noundef %length, ptr noundef nonnull %subseconds) - br i1 %call29, label %if.then32, label %return - -if.then32: ; preds = %if.else - switch i64 %omitted.0, label %return [ - i64 1, label %sw.bb33 - i64 2, label %sw.bb34 - i64 3, label %sw.bb36 - i64 4, label %sw.bb38 - i64 5, label %sw.bb40 - i64 6, label %sw.bb42 - i64 7, label %sw.bb44 - i64 8, label %sw.bb46 - ] - -sw.bb33: ; preds = %if.then32 - %0 = load i32, ptr %subseconds, align 4 - %mul = mul i32 %0, 10 - store i32 %mul, ptr %out, align 4 - br label %return - -sw.bb34: ; preds = %if.then32 - %1 = load i32, ptr %subseconds, align 4 - %mul35 = mul i32 %1, 100 - store i32 %mul35, ptr %out, align 4 - br label %return - -sw.bb36: ; preds = %if.then32 - %2 = load i32, ptr %subseconds, align 4 - %mul37 = mul i32 %2, 1000 - store i32 %mul37, ptr %out, align 4 - br label %return - -sw.bb38: ; preds = %if.then32 - %3 = load i32, ptr %subseconds, align 4 - %mul39 = mul i32 %3, 10000 - store i32 %mul39, ptr %out, align 4 - br label %return - -sw.bb40: ; preds = %if.then32 - %4 = load i32, ptr %subseconds, align 4 - %mul41 = mul i32 %4, 100000 - store i32 %mul41, ptr %out, align 4 - br label %return - -sw.bb42: ; preds = %if.then32 - %5 = load i32, ptr %subseconds, align 4 - %mul43 = mul i32 %5, 1000000 - store i32 %mul43, ptr %out, align 4 - br label %return - -sw.bb44: ; preds = %if.then32 - %6 = load i32, ptr %subseconds, align 4 - %mul45 = mul i32 %6, 10000000 - store i32 %mul45, ptr %out, align 4 - br label %return - -sw.bb46: ; preds = %if.then32 - %7 = load i32, ptr %subseconds, align 4 - %mul47 = mul i32 %7, 100000000 - store i32 %mul47, ptr %out, align 4 br label %return -return: ; preds = %if.else, %sw.bb33, %sw.bb34, %sw.bb36, %sw.bb38, %sw.bb40, %sw.bb42, %sw.bb44, %sw.bb46, %if.then32, %entry, %sw.bb15, %sw.bb5, %sw.bb, %if.then28 - %retval.0 = phi i1 [ %call, %if.then28 ], [ false, %sw.bb ], [ false, %sw.bb5 ], [ false, %sw.bb15 ], [ false, %entry ], [ true, %if.then32 ], [ true, %sw.bb46 ], [ true, %sw.bb44 ], [ true, %sw.bb42 ], [ true, %sw.bb40 ], [ true, %sw.bb38 ], [ true, %sw.bb36 ], [ true, %sw.bb34 ], [ true, %sw.bb33 ], [ false, %if.else ] +return: ; preds = %if.else, %entry, %sw.bb15, %sw.bb5, %sw.bb, %if.then28 + %retval.0 = phi i1 [ %call, %if.then28 ], [ false, %sw.bb ], [ false, %sw.bb5 ], [ false, %sw.bb15 ], [ false, %entry ], [ %call29, %if.else ] ret i1 %retval.0 } diff --git a/bench/assimp/optimized/IFCBoolean.cpp.ll b/bench/assimp/optimized/IFCBoolean.cpp.ll index b6903b60b36..e62d2f6bbf5 100644 --- a/bench/assimp/optimized/IFCBoolean.cpp.ll +++ b/bench/assimp/optimized/IFCBoolean.cpp.ll @@ -3540,13 +3540,14 @@ for.body146.preheader: ; preds = %invoke.cont137 %sub.ptr.rhs.cast.i3421531 = ptrtoint ptr %140 to i64 %sub.ptr.sub.i3431532 = sub i64 %sub.ptr.lhs.cast.i3411530, %sub.ptr.rhs.cast.i3421531 %sub.ptr.div.i3441533 = sdiv exact i64 %sub.ptr.sub.i3431532, 24 + %frombool139 = zext i1 %call138 to i8 br label %for.body146 for.body146: ; preds = %for.body146.preheader, %for.end206 %141 = phi ptr [ %226, %for.end206 ], [ null, %for.body146.preheader ] %sub.ptr.div.i3441540 = phi i64 [ %sub.ptr.div.i344, %for.end206 ], [ %sub.ptr.div.i3441533, %for.body146.preheader ] %142 = phi ptr [ %228, %for.end206 ], [ %140, %for.body146.preheader ] - %isCurrentlyInside.01539 = phi i1 [ %isCurrentlyInside.1, %for.end206 ], [ %call138, %for.body146.preheader ] + %isCurrentlyInside.01539 = phi i8 [ %isCurrentlyInside.1, %for.end206 ], [ %frombool139, %for.body146.preheader ] %storemerge1538 = phi i64 [ %add152, %for.end206 ], [ 0, %for.body146.preheader ] %intersections.sroa.0.21537 = phi ptr [ %intersections.sroa.0.6.lcssa, %for.end206 ], [ null, %for.body146.preheader ] %intersections.sroa.36.21536 = phi ptr [ %intersections.sroa.36.3.lcssa, %for.end206 ], [ null, %for.body146.preheader ] @@ -3611,7 +3612,8 @@ for.body146: ; preds = %for.body146.prehead %add13.i392 = fadd double %163, %173 store double %add13.i392, ptr %z14.i393, align 8, !alias.scope !132 store ptr %141, ptr %_M_finish.i.i394, align 8 - %call161 = invoke noundef zeroext i1 @_ZN6Assimp3IFC25IntersectsBoundaryProfileERK10aiVector3tIdES4_RKSt6vectorIS2_SaIS2_EEbRS5_ISt4pairImS2_ESaISB_EEb(ptr noundef nonnull align 8 dereferenceable(24) %e0147, ptr noundef nonnull align 8 dereferenceable(24) %e1151, ptr noundef nonnull align 8 dereferenceable(24) %_M_impl.i.i.i.i.i.i, i1 noundef zeroext %isCurrentlyInside.01539, ptr noundef nonnull align 8 dereferenceable(24) %intersected_boundary, i1 noundef zeroext false) + %tobool159 = trunc i8 %isCurrentlyInside.01539 to i1 + %call161 = invoke noundef zeroext i1 @_ZN6Assimp3IFC25IntersectsBoundaryProfileERK10aiVector3tIdES4_RKSt6vectorIS2_SaIS2_EEbRS5_ISt4pairImS2_ESaISB_EEb(ptr noundef nonnull align 8 dereferenceable(24) %e0147, ptr noundef nonnull align 8 dereferenceable(24) %e1151, ptr noundef nonnull align 8 dereferenceable(24) %_M_impl.i.i.i.i.i.i, i1 noundef zeroext %tobool159, ptr noundef nonnull align 8 dereferenceable(24) %intersected_boundary, i1 noundef zeroext false) to label %invoke.cont160 unwind label %lpad149.loopexit.split-lp.loopexit invoke.cont160: ; preds = %for.body146 @@ -3866,8 +3868,8 @@ for.inc204: ; preds = %.noexc469, %if.then br i1 %cmp195, label %for.body196, label %for.end206.loopexit, !llvm.loop !153 for.end206.loopexit: ; preds = %for.inc204 - %224 = and i64 %sub.ptr.sub.i437, 32 - %225 = icmp ne i64 %224, 0 + %224 = trunc i64 %sub.ptr.sub.i437 to i8 + %225 = lshr i8 %224, 5 br label %for.end206 for.end206: ; preds = %for.end206.loopexit, %if.end191 @@ -3875,8 +3877,8 @@ for.end206: ; preds = %for.end206.loopexit %intersections.sroa.68.3.lcssa = phi ptr [ %intersections.sroa.68.21535, %if.end191 ], [ %intersections.sroa.68.4, %for.end206.loopexit ] %intersections.sroa.36.3.lcssa = phi ptr [ %intersections.sroa.36.21536, %if.end191 ], [ %intersections.sroa.36.10, %for.end206.loopexit ] %intersections.sroa.0.6.lcssa = phi ptr [ %intersections.sroa.0.21537, %if.end191 ], [ %intersections.sroa.0.7, %for.end206.loopexit ] - %sub.ptr.sub.i437.lcssa = phi i1 [ false, %if.end191 ], [ %225, %for.end206.loopexit ] - %isCurrentlyInside.1 = xor i1 %isCurrentlyInside.01539, %sub.ptr.sub.i437.lcssa + %sub.ptr.sub.i437.lcssa = phi i8 [ 0, %if.end191 ], [ %225, %for.end206.loopexit ] + %isCurrentlyInside.1 = xor i8 %sub.ptr.sub.i437.lcssa, %isCurrentlyInside.01539 %227 = load ptr, ptr %blackside.sroa.gep1401, align 8 %228 = load ptr, ptr %blackside, align 8 %sub.ptr.lhs.cast.i341 = ptrtoint ptr %227 to i64 diff --git a/bench/assimp/optimized/SMDLoader.cpp.ll b/bench/assimp/optimized/SMDLoader.cpp.ll index f38ab51c05e..953e5cd19f7 100644 --- a/bench/assimp/optimized/SMDLoader.cpp.ll +++ b/bench/assimp/optimized/SMDLoader.cpp.ll @@ -5074,15 +5074,10 @@ entry: %_M_finish.i = getelementptr inbounds i8, ptr %this, i64 152 %_M_end_of_storage.i = getelementptr inbounds i8, ptr %this, i64 160 %asTriangles = getelementptr inbounds i8, ptr %this, i64 144 - br label %for.cond.outer - -for.cond.outer: ; preds = %if.end14, %entry - %.ph102 = phi ptr [ %.pre.pre, %if.end14 ], [ %szCurrent, %entry ] - %iCurIndex.0.ph = phi i32 [ %spec.store.select, %if.end14 ], [ 0, %entry ] br label %for.cond -for.cond: ; preds = %for.cond.outer, %_ZN6Assimp11SMDImporter8SkipLineEPKcPS2_.exit - %0 = phi ptr [ %in.addr.1.i.i, %_ZN6Assimp11SMDImporter8SkipLineEPKcPS2_.exit ], [ %.ph102, %for.cond.outer ] +for.cond: ; preds = %for.cond.backedge, %entry + %0 = phi ptr [ %szCurrent, %entry ], [ %.be, %for.cond.backedge ] %1 = load i32, ptr %iLineNumber.i, align 4 %inc.i = add i32 %1, 1 store i32 %inc.i, ptr %iLineNumber.i, align 4 @@ -5105,7 +5100,7 @@ while.body.i.i: ; preds = %while.cond.i.i, %wh _ZN6Assimp11SMDImporter20SkipSpacesAndLineEndEPKcPS2_.exit: ; preds = %while.cond.i.i store ptr %2, ptr %szCurrent.addr, align 8 %cmp9.i.i.not = icmp eq i8 %3, 0 - br i1 %cmp9.i.i.not, label %for.end, label %sub_0 + br i1 %cmp9.i.i.not, label %land.lhs.true, label %sub_0 sub_0: ; preds = %_ZN6Assimp11SMDImporter20SkipSpacesAndLineEndEPKcPS2_.exit %4 = zext i8 %3 to i32 @@ -5150,7 +5145,7 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit: ; preds = %land.lhs.true.i, %l %storemerge.i.v = select i1 %cmp.not.i, i64 3, i64 4 %storemerge.i = getelementptr inbounds i8, ptr %2, i64 %storemerge.i.v store ptr %storemerge.i, ptr %szCurrent.addr, align 8 - br label %for.end + br label %land.lhs.true if.end4: ; preds = %if.end.tail, %land.lhs.true.i %call.i4 = call i32 @strncmp(ptr noundef nonnull dereferenceable(5) @.str.36, ptr noundef nonnull dereferenceable(1) %2, i64 noundef 4) #30 @@ -5182,10 +5177,10 @@ while.cond.i.i.i: ; preds = %while.body.i.i.i, % switch i8 %17, label %if.end.i [ i8 32, label %while.body.i.i.i i8 9, label %while.body.i.i.i - i8 13, label %for.end - i8 10, label %for.end - i8 0, label %for.end - i8 12, label %for.end + i8 13, label %land.lhs.true + i8 10, label %land.lhs.true + i8 0, label %land.lhs.true + i8 12, label %land.lhs.true ] while.body.i.i.i: ; preds = %while.cond.i.i.i, %while.cond.i.i.i @@ -5257,7 +5252,7 @@ lor.lhs.false: ; preds = %for.end.i.i.i, %if. call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %in.addr.i.i) %26 = load i32, ptr %configFrameID, align 8 %cmp.not = icmp eq i32 %26, %value.0.i.i - br i1 %cmp.not, label %while.cond.i.i15, label %for.end + br i1 %cmp.not, label %while.cond.i.i15, label %land.lhs.true while.cond.i.i15: ; preds = %lor.lhs.false, %while.body.i.i20 %in.addr.0.i.i16 = phi ptr [ %incdec.ptr.i.i21, %while.body.i.i20 ], [ %25, %lor.lhs.false ] @@ -5293,19 +5288,15 @@ _ZN6Assimp11SMDImporter8SkipLineEPKcPS2_.exit: ; preds = %while.cond5.i.i %29 = load i32, ptr %iLineNumber.i, align 4 %inc.i19 = add i32 %29, 1 store i32 %inc.i19, ptr %iLineNumber.i, align 4 - br label %for.cond, !llvm.loop !47 + br label %for.cond.backedge if.else: ; preds = %if.end4, %land.lhs.true.i7 - %cmp11 = icmp eq i32 %iCurIndex.0.ph, 0 %.pre75 = load ptr, ptr %_M_finish.i, align 8 - br i1 %cmp11, label %if.then12, label %if.end14 - -if.then12: ; preds = %if.else %30 = load ptr, ptr %_M_end_of_storage.i, align 8 %cmp.not.i22 = icmp eq ptr %.pre75, %30 br i1 %cmp.not.i22, label %if.else.i, label %if.then.i23 -if.then.i23: ; preds = %if.then12 +if.then.i23: ; preds = %if.else store i32 0, ptr %.pre75, align 8 br label %arrayctor.loop.i.i.i.i @@ -5327,29 +5318,24 @@ _ZNSt16allocator_traitsISaIN6Assimp3SMD4FaceEEE9constructIS2_JEEEvRS3_PT_DpOT0_. store ptr %incdec.ptr.i, ptr %_M_finish.i, align 8 br label %if.end14 -if.else.i: ; preds = %if.then12 +if.else.i: ; preds = %if.else call void @_ZNSt6vectorIN6Assimp3SMD4FaceESaIS2_EE17_M_realloc_insertIJEEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %asTriangles, ptr %.pre75) %.pre74 = load ptr, ptr %_M_finish.i, align 8 br label %if.end14 -if.end14: ; preds = %if.else.i, %_ZNSt16allocator_traitsISaIN6Assimp3SMD4FaceEEE9constructIS2_JEEEvRS3_PT_DpOT0_.exit.i, %if.else - %32 = phi ptr [ %.pre74, %if.else.i ], [ %incdec.ptr.i, %_ZNSt16allocator_traitsISaIN6Assimp3SMD4FaceEEE9constructIS2_JEEEvRS3_PT_DpOT0_.exit.i ], [ %.pre75, %if.else ] - %inc = add i32 %iCurIndex.0.ph, 1 - %cmp15 = icmp eq i32 %inc, 3 - %spec.store.select = select i1 %cmp15, i32 0, i32 %inc - %avVertices = getelementptr inbounds i8, ptr %32, i64 -192 - %idxprom = zext i32 %spec.store.select to i64 - %arrayidx = getelementptr inbounds [3 x %"struct.Assimp::SMD::Vertex"], ptr %avVertices, i64 0, i64 %idxprom +if.end14: ; preds = %if.else.i, %_ZNSt16allocator_traitsISaIN6Assimp3SMD4FaceEEE9constructIS2_JEEEvRS3_PT_DpOT0_.exit.i + %32 = phi ptr [ %.pre74, %if.else.i ], [ %incdec.ptr.i, %_ZNSt16allocator_traitsISaIN6Assimp3SMD4FaceEEE9constructIS2_JEEEvRS3_PT_DpOT0_.exit.i ] + %arrayidx = getelementptr inbounds i8, ptr %32, i64 -128 call void @_ZN6Assimp11SMDImporter11ParseVertexEPKcPS2_RNS_3SMD6VertexEb(ptr noundef nonnull align 8 dereferenceable(218) %this, ptr noundef nonnull %2, ptr noundef nonnull %szCurrent.addr, ptr noundef nonnull align 8 dereferenceable(64) %arrayidx, i1 noundef zeroext true) %.pre.pre = load ptr, ptr %szCurrent.addr, align 8 - br label %for.cond.outer, !llvm.loop !47 + br label %for.cond.backedge -for.end: ; preds = %lor.lhs.false, %_ZN6Assimp11SMDImporter20SkipSpacesAndLineEndEPKcPS2_.exit, %while.cond.i.i.i, %while.cond.i.i.i, %while.cond.i.i.i, %while.cond.i.i.i, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit - %33 = phi ptr [ %storemerge.i, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit ], [ %storemerge.i12, %while.cond.i.i.i ], [ %storemerge.i12, %while.cond.i.i.i ], [ %storemerge.i12, %while.cond.i.i.i ], [ %storemerge.i12, %while.cond.i.i.i ], [ %25, %lor.lhs.false ], [ %2, %_ZN6Assimp11SMDImporter20SkipSpacesAndLineEndEPKcPS2_.exit ] - %cmp21.not = icmp eq i32 %iCurIndex.0.ph, 2 - br i1 %cmp21.not, label %if.end26, label %land.lhs.true +for.cond.backedge: ; preds = %if.end14, %_ZN6Assimp11SMDImporter8SkipLineEPKcPS2_.exit + %.be = phi ptr [ %in.addr.1.i.i, %_ZN6Assimp11SMDImporter8SkipLineEPKcPS2_.exit ], [ %.pre.pre, %if.end14 ] + br label %for.cond, !llvm.loop !47 -land.lhs.true: ; preds = %for.end +land.lhs.true: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit, %while.cond.i.i.i, %while.cond.i.i.i, %while.cond.i.i.i, %while.cond.i.i.i, %_ZN6Assimp11SMDImporter20SkipSpacesAndLineEndEPKcPS2_.exit, %lor.lhs.false + %33 = phi ptr [ %storemerge.i, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit ], [ %storemerge.i12, %while.cond.i.i.i ], [ %storemerge.i12, %while.cond.i.i.i ], [ %storemerge.i12, %while.cond.i.i.i ], [ %storemerge.i12, %while.cond.i.i.i ], [ %25, %lor.lhs.false ], [ %2, %_ZN6Assimp11SMDImporter20SkipSpacesAndLineEndEPKcPS2_.exit ] %34 = load ptr, ptr %asTriangles, align 8 %35 = load ptr, ptr %_M_finish.i, align 8 %cmp.i.i26 = icmp eq ptr %34, %35 @@ -5377,7 +5363,7 @@ _ZN6Assimp3SMD6VertexD2Ev.exit.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i %arraydestroy.done.i.i.i.i = icmp eq i64 %arraydestroy.elementPast.add.i.i.i.i, 8 br i1 %arraydestroy.done.i.i.i.i, label %if.end26, label %arraydestroy.body.i.i.i.i -if.end26: ; preds = %_ZN6Assimp3SMD6VertexD2Ev.exit.i.i.i.i, %land.lhs.true, %for.end +if.end26: ; preds = %_ZN6Assimp3SMD6VertexD2Ev.exit.i.i.i.i, %land.lhs.true %37 = load i32, ptr %iLineNumber.i, align 4 %inc.i30 = add i32 %37, 1 store i32 %inc.i30, ptr %iLineNumber.i, align 4 diff --git a/bench/assimp/optimized/zip.c.ll b/bench/assimp/optimized/zip.c.ll index 9f939deee0b..b8015bf89d3 100644 --- a/bench/assimp/optimized/zip.c.ll +++ b/bench/assimp/optimized/zip.c.ll @@ -4798,8 +4798,9 @@ if.end: ; preds = %cond.end if.end7: ; preds = %if.end %add = add i64 %1, %src_buf_ofs.0 - %mul = shl i64 %out_buf_capacity.0, 1 - %spec.store.select = call i64 @llvm.umax.i64(i64 %mul, i64 128) + %mul = shl nuw nsw i64 %out_buf_capacity.0, 1 + %cmp8 = icmp eq i64 %out_buf_capacity.0, 0 + %spec.store.select = select i1 %cmp8, i64 128, i64 %mul %call11 = call ptr @realloc(ptr noundef %pBuf.0, i64 noundef %spec.store.select) #32 %tobool12.not = icmp eq ptr %call11, null br i1 %tobool12.not, label %return.sink.split, label %for.cond @@ -13183,8 +13184,8 @@ if.end9.i: ; preds = %while.cond.i if.end16: ; preds = %while.cond.i %call17 = call i32 @stat(ptr noundef nonnull %pZip_filename, ptr noundef nonnull %file_stat) #30 - %cmp18.not = icmp ne i32 %call17, 0 - br i1 %cmp18.not, label %if.then20, label %if.else + %cmp18.not.not = icmp eq i32 %call17, 0 + br i1 %cmp18.not.not, label %if.else, label %if.then20 if.then20: ; preds = %if.end16 %call21 = call i32 @mz_zip_writer_init_file(ptr noundef nonnull %zip_archive, ptr noundef nonnull %pZip_filename, i64 noundef 0) @@ -13290,9 +13291,7 @@ mz_zip_writer_end.exit: ; preds = %if.end15.i, %land.l 22: ; preds = %if.end34, %lor.lhs.false4.i, %lor.lhs.false6.i, %mz_zip_writer_end.exit %23 = phi i32 [ %spec.select, %mz_zip_writer_end.exit ], [ 0, %lor.lhs.false6.i ], [ 0, %lor.lhs.false4.i ], [ 0, %if.end34 ] - %tobool44 = icmp eq i32 %23, 0 - %or.cond3 = and i1 %cmp18.not, %tobool44 - br i1 %or.cond3, label %if.then47, label %return + br i1 %cmp18.not.not, label %return, label %if.then47 if.then47: ; preds = %22 %call48 = call i32 @remove(ptr noundef nonnull %pZip_filename) #30 diff --git a/bench/boost/optimized/ext.ll b/bench/boost/optimized/ext.ll index 3e91fb39ee8..7d0ed5b4f1d 100644 --- a/bench/boost/optimized/ext.ll +++ b/bench/boost/optimized/ext.ll @@ -19209,7 +19209,7 @@ define linkonce_odr hidden void @_ZN5boost4asio6detail12posix_threadC2INS1_9sche _ZN5boost6system10error_codeC2EiRKNS0_14error_categoryE.exit.thread.i: ; preds = %11 %17 = getelementptr inbounds nuw i8, ptr %5, i64 16 - br label %23 + br label %_ZNK5boost6system10error_codecvbEv.exit.thread.i.i _ZN5boost6system10error_codeC2EiRKNS0_14error_categoryE.exit.i: ; preds = %11 %18 = load ptr, ptr @_ZN5boost6system6detail17system_cat_holderIvE8instanceE, align 8, !tbaa !18 @@ -19218,49 +19218,39 @@ _ZN5boost6system10error_codeC2EiRKNS0_14error_categoryE.exit.i: ; preds = %11 %21 = tail call noundef zeroext i1 %20(ptr noundef nonnull align 8 dereferenceable(52) @_ZN5boost6system6detail17system_cat_holderIvE8instanceE, i32 noundef %10) #35 %22 = getelementptr inbounds nuw i8, ptr %5, i64 16 %spec.select.i = select i1 %21, i64 3, i64 2 - br label %23 + br label %_ZNK5boost6system10error_codecvbEv.exit.thread.i.i -23: ; preds = %_ZN5boost6system10error_codeC2EiRKNS0_14error_categoryE.exit.i, %_ZN5boost6system10error_codeC2EiRKNS0_14error_categoryE.exit.thread.i - %24 = phi ptr [ %17, %_ZN5boost6system10error_codeC2EiRKNS0_14error_categoryE.exit.thread.i ], [ %22, %_ZN5boost6system10error_codeC2EiRKNS0_14error_categoryE.exit.i ] - %25 = phi i64 [ 3, %_ZN5boost6system10error_codeC2EiRKNS0_14error_categoryE.exit.thread.i ], [ %spec.select.i, %_ZN5boost6system10error_codeC2EiRKNS0_14error_categoryE.exit.i ] - store i64 %25, ptr %24, align 8, !tbaa !417 +_ZNK5boost6system10error_codecvbEv.exit.thread.i.i: ; preds = %_ZN5boost6system10error_codeC2EiRKNS0_14error_categoryE.exit.i, %_ZN5boost6system10error_codeC2EiRKNS0_14error_categoryE.exit.thread.i + %23 = phi ptr [ %17, %_ZN5boost6system10error_codeC2EiRKNS0_14error_categoryE.exit.thread.i ], [ %22, %_ZN5boost6system10error_codeC2EiRKNS0_14error_categoryE.exit.i ] + %24 = phi i64 [ 3, %_ZN5boost6system10error_codeC2EiRKNS0_14error_categoryE.exit.thread.i ], [ %spec.select.i, %_ZN5boost6system10error_codeC2EiRKNS0_14error_categoryE.exit.i ] + store i64 %24, ptr %23, align 8, !tbaa !417 store i32 %10, ptr %5, align 8, !tbaa !15 - %26 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store ptr @_ZN5boost6system6detail17system_cat_holderIvE8instanceE, ptr %26, align 8, !tbaa !15 + %25 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store ptr @_ZN5boost6system6detail17system_cat_holderIvE8instanceE, ptr %25, align 8, !tbaa !15 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #35 store ptr @.str.116, ptr %6, align 8, !tbaa !439 - %27 = getelementptr inbounds nuw i8, ptr %6, i64 8 - store ptr @.str.117, ptr %27, align 8, !tbaa !441 - %28 = getelementptr inbounds nuw i8, ptr %6, i64 16 - store i32 66, ptr %28, align 8, !tbaa !442 - %29 = getelementptr inbounds nuw i8, ptr %6, i64 20 - store i32 5, ptr %29, align 4, !tbaa !443 - %30 = and i64 %25, 1 - %.not.i.i.i.i = icmp eq i64 %30, 0 - br i1 %.not.i.i.i.i, label %_ZN5boost4asio6detail11throw_errorERKNS_6system10error_codeEPKcRKNS_15source_locationE.exit.i, label %_ZNK5boost6system10error_codecvbEv.exit.thread.i.i - -_ZNK5boost6system10error_codecvbEv.exit.thread.i.i: ; preds = %23 + %26 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store ptr @.str.117, ptr %26, align 8, !tbaa !441 + %27 = getelementptr inbounds nuw i8, ptr %6, i64 16 + store i32 66, ptr %27, align 8, !tbaa !442 + %28 = getelementptr inbounds nuw i8, ptr %6, i64 20 + store i32 5, ptr %28, align 4, !tbaa !443 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) #35 call void @_ZN5boost6system12system_errorC2ERKNS0_10error_codeEPKc(ptr noundef nonnull align 8 dereferenceable(40) %4, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull @.str.115) invoke void @_ZN5boost15throw_exceptionINS_6system12system_errorEEEvRKT_RKNS_15source_locationE(ptr noundef nonnull align 8 dereferenceable(40) %4, ptr noundef nonnull align 8 dereferenceable(24) %6) #39 - to label %31 unwind label %.body + to label %29 unwind label %.body -31: ; preds = %_ZNK5boost6system10error_codecvbEv.exit.thread.i.i +29: ; preds = %_ZNK5boost6system10error_codecvbEv.exit.thread.i.i unreachable .body: ; preds = %_ZNK5boost6system10error_codecvbEv.exit.thread.i.i - %32 = landingpad { ptr, i32 } + %30 = landingpad { ptr, i32 } cleanup call void @_ZNSt13runtime_errorD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %4) #35 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #35 - resume { ptr, i32 } %32 - -_ZN5boost4asio6detail11throw_errorERKNS_6system10error_codeEPKcRKNS_15source_locationE.exit.i: ; preds = %23 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #35 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #35 - br label %_ZN5boost4asio6detail12posix_thread12start_threadEPNS2_9func_baseE.exit + resume { ptr, i32 } %30 -_ZN5boost4asio6detail12posix_thread12start_threadEPNS2_9func_baseE.exit: ; preds = %_ZN5boost4asio6detail11throw_errorERKNS_6system10error_codeEPKcRKNS_15source_locationE.exit.i, %3 +_ZN5boost4asio6detail12posix_thread12start_threadEPNS2_9func_baseE.exit: ; preds = %3 ret void } diff --git a/bench/boost/optimized/main.ll b/bench/boost/optimized/main.ll index a151cae745e..227d133ea2e 100644 --- a/bench/boost/optimized/main.ll +++ b/bench/boost/optimized/main.ll @@ -8091,32 +8091,22 @@ _ZN5boost15source_locationC2ERKSt15source_location.exit.i: ; preds = %_ZN5boost6 store i32 66, ptr %27, align 8 %28 = getelementptr inbounds nuw i8, ptr %6, i64 20 store i32 5, ptr %28, align 4, !tbaa !91 - %29 = and i64 %24, 1 - %.not.i.i.i.i = icmp eq i64 %29, 0 - br i1 %.not.i.i.i.i, label %_ZN5boost4asio6detail11throw_errorERKNS_6system10error_codeEPKcRKNS_15source_locationE.exit.i, label %_ZNK5boost6system10error_codecvbEv.exit.thread.i.i - -_ZNK5boost6system10error_codecvbEv.exit.thread.i.i: ; preds = %_ZN5boost15source_locationC2ERKSt15source_location.exit.i call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) #32 call void @_ZN5boost6system12system_errorC2ERKNS0_10error_codeEPKc(ptr noundef nonnull align 8 dereferenceable(40) %4, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull @.str.64) invoke void @_ZN5boost15throw_exceptionINS_6system12system_errorEEEvRKT_RKNS_15source_locationE(ptr noundef nonnull align 8 dereferenceable(40) %4, ptr noundef nonnull align 8 dereferenceable(24) %6) #35 - to label %30 unwind label %.body + to label %29 unwind label %.body -30: ; preds = %_ZNK5boost6system10error_codecvbEv.exit.thread.i.i +29: ; preds = %_ZN5boost15source_locationC2ERKSt15source_location.exit.i unreachable -.body: ; preds = %_ZNK5boost6system10error_codecvbEv.exit.thread.i.i - %31 = landingpad { ptr, i32 } +.body: ; preds = %_ZN5boost15source_locationC2ERKSt15source_location.exit.i + %30 = landingpad { ptr, i32 } cleanup call void @_ZNSt13runtime_errorD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %4) #32 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #32 - resume { ptr, i32 } %31 - -_ZN5boost4asio6detail11throw_errorERKNS_6system10error_codeEPKcRKNS_15source_locationE.exit.i: ; preds = %_ZN5boost15source_locationC2ERKSt15source_location.exit.i - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #32 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #32 - br label %_ZN5boost4asio6detail12posix_thread12start_threadEPNS2_9func_baseE.exit + resume { ptr, i32 } %30 -_ZN5boost4asio6detail12posix_thread12start_threadEPNS2_9func_baseE.exit: ; preds = %_ZN5boost4asio6detail11throw_errorERKNS_6system10error_codeEPKcRKNS_15source_locationE.exit.i, %3 +_ZN5boost4asio6detail12posix_thread12start_threadEPNS2_9func_baseE.exit: ; preds = %3 ret void } diff --git a/bench/bullet3/optimized/b3CpuNarrowPhase.ll b/bench/bullet3/optimized/b3CpuNarrowPhase.ll index 362792d5e82..18f5abf017a 100644 --- a/bench/bullet3/optimized/b3CpuNarrowPhase.ll +++ b/bench/bullet3/optimized/b3CpuNarrowPhase.ll @@ -3596,52 +3596,43 @@ if.else: ; preds = %entry %cond59 = select i1 %cmp58, i32 2, i32 0 %cond60 = select i1 %cmp44, i32 %cond, i32 %cond59 %cond60.fr = freeze i32 %cond60 - %add61 = add nuw nsw i32 %cond60.fr, 1 - %9 = icmp eq i32 %add61, 3 - %rem = select i1 %9, i32 0, i32 %add61 - %add62 = add nuw nsw i32 %cond60.fr, 2 - %rem63 = urem i32 %add62, 3 + %rem63.urem = add nsw i32 %cond60.fr, -1 + %rem63.cmp = icmp eq i32 %cond60.fr, 0 + %rem63 = select i1 %rem63.cmp, i32 2, i32 %rem63.urem %idxprom = zext nneg i32 %cond60.fr to i64 %arrayidx66 = getelementptr inbounds [3 x %class.b3Vector3], ptr %this, i64 0, i64 %idxprom %arrayidx69 = getelementptr inbounds float, ptr %arrayidx66, i64 %idxprom - %10 = load float, ptr %arrayidx69, align 4 - %idxprom71 = sext i32 %rem to i64 - %arrayidx72 = getelementptr inbounds [3 x %class.b3Vector3], ptr %this, i64 0, i64 %idxprom71 - %arrayidx75 = getelementptr inbounds float, ptr %arrayidx72, i64 %idxprom71 - %11 = load float, ptr %arrayidx75, align 4 - %sub76 = fsub float %10, %11 + %9 = load float, ptr %arrayidx69, align 4 + %sub76 = fsub float %9, %0 %idxprom78 = zext nneg i32 %rem63 to i64 %arrayidx79 = getelementptr inbounds [3 x %class.b3Vector3], ptr %this, i64 0, i64 %idxprom78 %arrayidx82 = getelementptr inbounds float, ptr %arrayidx79, i64 %idxprom78 - %12 = load float, ptr %arrayidx82, align 4 - %sub83 = fsub float %sub76, %12 + %10 = load float, ptr %arrayidx82, align 4 + %sub83 = fsub float %sub76, %10 %add84 = fadd float %sub83, 1.000000e+00 %call.i39 = tail call noundef float @sqrtf(float noundef %add84) #17 %mul86 = fmul float %call.i39, 5.000000e-01 %arrayidx88 = getelementptr inbounds [4 x float], ptr %temp, i64 0, i64 %idxprom store float %mul86, ptr %arrayidx88, align 4 %div89 = fdiv float 5.000000e-01, %call.i39 - %arrayidx95 = getelementptr inbounds float, ptr %arrayidx79, i64 %idxprom71 - %13 = load float, ptr %arrayidx95, align 4 - %arrayidx101 = getelementptr inbounds float, ptr %arrayidx72, i64 %idxprom78 - %14 = load float, ptr %arrayidx101, align 4 - %sub102 = fsub float %13, %14 + %11 = load float, ptr %arrayidx79, align 16 + %arrayidx101 = getelementptr inbounds float, ptr %this, i64 %idxprom78 + %12 = load float, ptr %arrayidx101, align 4 + %sub102 = fsub float %11, %12 %mul103 = fmul float %div89, %sub102 %arrayidx104 = getelementptr inbounds i8, ptr %temp, i64 12 store float %mul103, ptr %arrayidx104, align 4 - %arrayidx110 = getelementptr inbounds float, ptr %arrayidx72, i64 %idxprom - %15 = load float, ptr %arrayidx110, align 4 - %arrayidx116 = getelementptr inbounds float, ptr %arrayidx66, i64 %idxprom71 - %16 = load float, ptr %arrayidx116, align 4 - %add117 = fadd float %15, %16 + %arrayidx110 = getelementptr inbounds float, ptr %this, i64 %idxprom + %13 = load float, ptr %arrayidx110, align 4 + %14 = load float, ptr %arrayidx66, align 16 + %add117 = fadd float %13, %14 %mul118 = fmul float %div89, %add117 - %arrayidx120 = getelementptr inbounds [4 x float], ptr %temp, i64 0, i64 %idxprom71 - store float %mul118, ptr %arrayidx120, align 4 + store float %mul118, ptr %temp, align 16 %arrayidx126 = getelementptr inbounds float, ptr %arrayidx79, i64 %idxprom - %17 = load float, ptr %arrayidx126, align 4 + %15 = load float, ptr %arrayidx126, align 4 %arrayidx132 = getelementptr inbounds float, ptr %arrayidx66, i64 %idxprom78 - %18 = load float, ptr %arrayidx132, align 4 - %add133 = fadd float %17, %18 + %16 = load float, ptr %arrayidx132, align 4 + %add133 = fadd float %15, %16 %mul134 = fmul float %div89, %add133 %arrayidx136 = getelementptr inbounds [4 x float], ptr %temp, i64 0, i64 %idxprom78 store float %mul134, ptr %arrayidx136, align 4 @@ -3654,17 +3645,17 @@ if.else: ; preds = %entry br label %if.end if.end: ; preds = %if.else, %if.then - %19 = phi float [ %.pre42, %if.else ], [ %mul, %if.then ] - %20 = phi float [ %.pre41, %if.else ], [ %mul36, %if.then ] - %21 = phi float [ %.pre40, %if.else ], [ %mul27, %if.then ] - %22 = phi float [ %.pre, %if.else ], [ %mul18, %if.then ] - store float %22, ptr %q, align 16 + %17 = phi float [ %.pre42, %if.else ], [ %mul, %if.then ] + %18 = phi float [ %.pre41, %if.else ], [ %mul36, %if.then ] + %19 = phi float [ %.pre40, %if.else ], [ %mul27, %if.then ] + %20 = phi float [ %.pre, %if.else ], [ %mul18, %if.then ] + store float %20, ptr %q, align 16 %arrayidx2.i = getelementptr inbounds i8, ptr %q, i64 4 - store float %21, ptr %arrayidx2.i, align 4 + store float %19, ptr %arrayidx2.i, align 4 %arrayidx3.i = getelementptr inbounds i8, ptr %q, i64 8 - store float %20, ptr %arrayidx3.i, align 8 + store float %18, ptr %arrayidx3.i, align 8 %arrayidx4.i = getelementptr inbounds i8, ptr %q, i64 12 - store float %19, ptr %arrayidx4.i, align 4 + store float %17, ptr %arrayidx4.i, align 4 ret void } diff --git a/bench/bullet3/optimized/btConvexConcaveCollisionAlgorithm.ll b/bench/bullet3/optimized/btConvexConcaveCollisionAlgorithm.ll index 90f2b3b2dad..f13b9038179 100644 --- a/bench/bullet3/optimized/btConvexConcaveCollisionAlgorithm.ll +++ b/bench/bullet3/optimized/btConvexConcaveCollisionAlgorithm.ll @@ -1203,9 +1203,7 @@ if.then.i.i.i61: ; preds = %if.end.thread, %if. %15 = phi i32 [ %8, %if.then.i.i59 ], [ 0, %if.end.thread ] %16 = phi ptr [ %7, %if.then.i.i59 ], [ null, %if.end.thread ] %17 = phi i32 [ %spec.select, %if.then.i.i59 ], [ 1, %if.end.thread ] - %conv.i.i.i.i62 = sext i32 %17 to i64 - %mul.i.i.i.i63 = shl nsw i64 %conv.i.i.i.i62, 4 - %call.i.i.i.i88 = invoke noundef ptr @_Z22btAlignedAllocInternalmi(i64 noundef %mul.i.i.i.i63, i32 noundef 16) + %call.i.i.i.i88 = invoke noundef ptr @_Z22btAlignedAllocInternalmi(i64 noundef 16, i32 noundef 16) to label %_ZN20btAlignedObjectArrayI9btVector3E8allocateEi.exit.i.i65 unwind label %lpad25.loopexit.split-lp.loopexit.split-lp _ZN20btAlignedObjectArrayI9btVector3E8allocateEi.exit.i.i65: ; preds = %if.then.i.i.i61, %if.then.i.i59 diff --git a/bench/c3c/optimized/project_creation.c.ll b/bench/c3c/optimized/project_creation.c.ll index 2115baa8d96..3284b3a1d63 100644 --- a/bench/c3c/optimized/project_creation.c.ll +++ b/bench/c3c/optimized/project_creation.c.ll @@ -383,17 +383,13 @@ define internal fastcc ptr @module_name(ptr nocapture noundef readonly %0) unnam %exitcond.not = icmp eq i64 %17, %4 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !9 -._crit_edge: ; preds = %16 - %18 = trunc nuw i8 %.1 to i1 - br i1 %18, label %19, label %._crit_edge.thread - -._crit_edge.thread: ; preds = %1, %._crit_edge +._crit_edge.thread: ; preds = %1 tail call void @scratch_buffer_append(ptr noundef nonnull @.str.47) #9 - br label %19 + br label %._crit_edge -19: ; preds = %._crit_edge.thread, %._crit_edge - %20 = tail call ptr @scratch_buffer_to_string() #9 - ret ptr %20 +._crit_edge: ; preds = %16, %._crit_edge.thread + %18 = tail call ptr @scratch_buffer_to_string() #9 + ret ptr %18 } declare ptr @scratch_buffer_to_string() local_unnamed_addr #3 diff --git a/bench/casadi/optimized/function.cpp.ll b/bench/casadi/optimized/function.cpp.ll index 5f475fe0bb9..578aeb36ca8 100644 --- a/bench/casadi/optimized/function.cpp.ll +++ b/bench/casadi/optimized/function.cpp.ll @@ -31421,7 +31421,7 @@ define linkonce_odr hidden void @_ZNSt6vectorIbSaIbEEC2ERKS1_(ptr noundef nonnul %20 = lshr i64 %19, 3 %21 = and i64 %20, 2305843009213693944 %22 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %21) #29 - to label %.noexc unwind label %57 + to label %.noexc unwind label %43 .noexc: ; preds = %18 %23 = lshr i64 %19, 6 @@ -31442,13 +31442,13 @@ define linkonce_odr hidden void @_ZNSt6vectorIbSaIbEEC2ERKS1_(ptr noundef nonnul %.pre = load ptr, ptr %1, align 8 %.pre15 = load ptr, ptr %7, align 8 %.pre16 = load i32, ptr %9, align 8 - %.pre17 = ptrtoint ptr %.pre15 to i64 - %.pre18 = ptrtoint ptr %.pre to i64 - %.pre20 = sub i64 %.pre17, %.pre18 + %.pre18 = ptrtoint ptr %.pre15 to i64 + %.pre19 = ptrtoint ptr %.pre to i64 + %.pre21 = sub i64 %.pre18, %.pre19 br label %_ZNSt6vectorIbSaIbEE13_M_initializeEm.exit _ZNSt6vectorIbSaIbEE13_M_initializeEm.exit: ; preds = %.noexc, %2 - %.pre-phi21 = phi i64 [ %.pre20, %.noexc ], [ %14, %2 ] + %.pre-phi22 = phi i64 [ %.pre21, %.noexc ], [ %14, %2 ] %31 = phi ptr [ %22, %.noexc ], [ null, %2 ] %32 = phi i32 [ %.pre16, %.noexc ], [ %10, %2 ] %33 = phi ptr [ %.pre15, %.noexc ], [ %8, %2 ] @@ -31457,69 +31457,38 @@ _ZNSt6vectorIbSaIbEE13_M_initializeEm.exit: ; preds = %.noexc, %2 br i1 %.not.i.i.i.i.i.i, label %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i, label %35 35: ; preds = %_ZNSt6vectorIbSaIbEE13_M_initializeEm.exit - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %31, ptr align 8 %34, i64 %.pre-phi21, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %31, ptr align 8 %34, i64 %.pre-phi22, i1 false) br label %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i _ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i: ; preds = %35, %_ZNSt6vectorIbSaIbEE13_M_initializeEm.exit + %36 = getelementptr inbounds i8, ptr %31, i64 %.pre-phi22 %.not.i13 = icmp eq i32 %32, 0 br i1 %.not.i13, label %.loopexit, label %.lr.ph.i.i.i.i.i.preheader.i .lr.ph.i.i.i.i.i.preheader.i: ; preds = %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i - %36 = getelementptr inbounds i8, ptr %31, i64 %.pre-phi21 %37 = zext i32 %32 to i64 + %.pre17 = load i64, ptr %36, align 8 + %38 = and i64 %.pre17, -2 br label %.lr.ph.i.i.i.i.i.i -.lr.ph.i.i.i.i.i.i: ; preds = %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.preheader.i - %.019.i.i.i.i.i.i = phi i64 [ %55, %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i ], [ %37, %.lr.ph.i.i.i.i.i.preheader.i ] - %.sroa.511.018.i.i.i.i.i.i = phi i32 [ %spec.select14.i.i.i.i.i.i, %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i ], [ 0, %.lr.ph.i.i.i.i.i.preheader.i ] - %.sroa.08.017.i.i.i.i.i.i = phi ptr [ %spec.select.i.i.i.i.i.i, %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i ], [ %33, %.lr.ph.i.i.i.i.i.preheader.i ] - %.sroa.03.016.i.i.i.i.i.i = phi ptr [ %.sroa.03.1.i.i.i.i.i.i, %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i ], [ %36, %.lr.ph.i.i.i.i.i.preheader.i ] - %.sroa.5.015.i.i.i.i.i.i = phi i32 [ %.sroa.5.1.i.i.i.i.i.i, %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i ], [ 0, %.lr.ph.i.i.i.i.i.preheader.i ] - %38 = zext nneg i32 %.sroa.511.018.i.i.i.i.i.i to i64 - %39 = shl nuw i64 1, %38 - %40 = load i64, ptr %.sroa.08.017.i.i.i.i.i.i, align 8 - %41 = and i64 %40, %39 - %.not.i.i.i.i.i7.i = icmp eq i64 %41, 0 - %42 = zext nneg i32 %.sroa.5.015.i.i.i.i.i.i to i64 - %43 = shl nuw i64 1, %42 - br i1 %.not.i.i.i.i.i7.i, label %47, label %44 - -44: ; preds = %.lr.ph.i.i.i.i.i.i - %45 = load i64, ptr %.sroa.03.016.i.i.i.i.i.i, align 8 - %46 = or i64 %45, %43 - br label %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i - -47: ; preds = %.lr.ph.i.i.i.i.i.i - %48 = xor i64 %43, -1 - %49 = load i64, ptr %.sroa.03.016.i.i.i.i.i.i, align 8 - %50 = and i64 %49, %48 - br label %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i - -_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i: ; preds = %47, %44 - %storemerge.i.i.i.i.i.i = phi i64 [ %50, %47 ], [ %46, %44 ] - store i64 %storemerge.i.i.i.i.i.i, ptr %.sroa.03.016.i.i.i.i.i.i, align 8 - %51 = add i32 %.sroa.511.018.i.i.i.i.i.i, 1 - %52 = icmp eq i32 %.sroa.511.018.i.i.i.i.i.i, 63 - %spec.select.idx.i.i.i.i.i.i = select i1 %52, i64 8, i64 0 - %spec.select.i.i.i.i.i.i = getelementptr inbounds i8, ptr %.sroa.08.017.i.i.i.i.i.i, i64 %spec.select.idx.i.i.i.i.i.i - %spec.select14.i.i.i.i.i.i = select i1 %52, i32 0, i32 %51 - %53 = add i32 %.sroa.5.015.i.i.i.i.i.i, 1 - %54 = icmp eq i32 %.sroa.5.015.i.i.i.i.i.i, 63 - %.sroa.5.1.i.i.i.i.i.i = select i1 %54, i32 0, i32 %53 - %.sroa.03.1.idx.i.i.i.i.i.i = select i1 %54, i64 8, i64 0 - %.sroa.03.1.i.i.i.i.i.i = getelementptr inbounds i8, ptr %.sroa.03.016.i.i.i.i.i.i, i64 %.sroa.03.1.idx.i.i.i.i.i.i - %55 = add nsw i64 %.019.i.i.i.i.i.i, -1 - %56 = icmp sgt i64 %.019.i.i.i.i.i.i, 1 - br i1 %56, label %.lr.ph.i.i.i.i.i.i, label %.loopexit, !llvm.loop !277 - -.loopexit: ; preds = %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i +.lr.ph.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.preheader.i + %.019.i.i.i.i.i.i = phi i64 [ %41, %.lr.ph.i.i.i.i.i.i ], [ %37, %.lr.ph.i.i.i.i.i.preheader.i ] + %39 = load i64, ptr %33, align 8 + %40 = and i64 %39, 1 + %storemerge.i.i.i.i.i.i = or disjoint i64 %38, %40 + store i64 %storemerge.i.i.i.i.i.i, ptr %36, align 8 + %41 = add nsw i64 %.019.i.i.i.i.i.i, -1 + %42 = icmp ugt i64 %.019.i.i.i.i.i.i, 1 + br i1 %42, label %.lr.ph.i.i.i.i.i.i, label %.loopexit, !llvm.loop !277 + +.loopexit: ; preds = %.lr.ph.i.i.i.i.i.i, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i ret void -57: ; preds = %18 - %58 = landingpad { ptr, i32 } +43: ; preds = %18 + %44 = landingpad { ptr, i32 } cleanup tail call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %0) #27 - resume { ptr, i32 } %58 + resume { ptr, i32 } %44 } ; Function Attrs: mustprogress uwtable diff --git a/bench/ceres/optimized/schur_eliminator_2_3_3.cc.ll b/bench/ceres/optimized/schur_eliminator_2_3_3.cc.ll index 7ca98efa8cb..a65bfcc9694 100644 --- a/bench/ceres/optimized/schur_eliminator_2_3_3.cc.ll +++ b/bench/ceres/optimized/schur_eliminator_2_3_3.cc.ll @@ -8097,7 +8097,7 @@ _ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi1ELi0ELi3ELi1EEELin1ELi1ELb0EE br i1 %.not67, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi1ELin1ELin1EEELin1ELi1ELb0EEEE4swapIS4_EEvRKNS0_IT_EE.exit, label %457 457: ; preds = %456 - %458 = add nsw i64 %.sroa.0.1.i.i, %.060208 + %458 = add nuw nsw i64 %.sroa.0.1.i.i, %.060208 %459 = getelementptr inbounds double, ptr %411, i64 %.060208 %460 = getelementptr inbounds double, ptr %411, i64 %458 %461 = load double, ptr %459, align 8 @@ -10291,7 +10291,7 @@ _ZNK5Eigen10MatrixBaseINS_5BlockINS_6MatrixIdLin1ELi3ELi1ELin1ELi3EEELin1ELi1ELb _ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi1ELi3ELi1ELi1ELi3EEELi1ELin1ELb0EEEE8maxCoeffIlEEdPT_.exit: ; preds = %.preheader.i.i.i.i, %64 %.sroa.5.2.i.i = phi double [ %67, %64 ], [ %.sroa.5.1.i.i, %.preheader.i.i.i.i ] %.sroa.3.2.i.i = phi i64 [ 0, %64 ], [ %.sroa.3.1.i.i, %.preheader.i.i.i.i ] - %75 = add nsw i64 %.sroa.3.2.i.i, %.083188 + %75 = add nuw nsw i64 %.sroa.3.2.i.i, %.083188 %76 = load i64, ptr %51, align 8 %77 = icmp eq i64 %76, %.sroa.speculated.i br i1 %77, label %78, label %85 @@ -10333,9 +10333,16 @@ _ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi1ELi3ELi1ELi1ELi3EEELi1ELin1ELb0EEE store double %93, ptr %92, align 8 %95 = add nuw nsw i64 %.05.i.i.i.i.i.i, 1 %exitcond.not.i.i.i.i.i.i = icmp eq i64 %95, %.pre206 - br i1 %exitcond.not.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi3ELi1ELin1ELi3EEELin1ELi1ELb0EEEE4swapIS4_EEvRKNS0_IT_EE.exit, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !251 + br i1 %exitcond.not.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi3ELi1ELin1ELi3EEELin1ELi1ELb0EEEE4swapIS4_EEvRKNS0_IT_EE.exit.loopexit, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !251 -_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi3ELi1ELin1ELi3EEELin1ELi1ELb0EEEE4swapIS4_EEvRKNS0_IT_EE.exit: ; preds = %.lr.ph.i.i.i.i.i.i, %87 +_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi3ELi1ELin1ELi3EEELin1ELi1ELb0EEEE4swapIS4_EEvRKNS0_IT_EE.exit.loopexit: ; preds = %.lr.ph.i.i.i.i.i.i + %.pre.pre = load ptr, ptr %0, align 8, !noalias !252 + %.pre205.pre = load i64, ptr %4, align 8, !noalias !252 + br label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi3ELi1ELin1ELi3EEELin1ELi1ELb0EEEE4swapIS4_EEvRKNS0_IT_EE.exit + +_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi3ELi1ELin1ELi3EEELin1ELi1ELb0EEEE4swapIS4_EEvRKNS0_IT_EE.exit: ; preds = %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi3ELi1ELin1ELi3EEELin1ELi1ELb0EEEE4swapIS4_EEvRKNS0_IT_EE.exit.loopexit, %87 + %.pre205 = phi i64 [ %.pre205.pre, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi3ELi1ELin1ELi3EEELin1ELi1ELb0EEEE4swapIS4_EEvRKNS0_IT_EE.exit.loopexit ], [ %.pre206, %87 ] + %.pre = phi ptr [ %.pre.pre, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi3ELi1ELin1ELi3EEELin1ELi1ELb0EEEE4swapIS4_EEvRKNS0_IT_EE.exit.loopexit ], [ %.pre204, %87 ] %96 = getelementptr inbounds double, ptr %10, i64 %75 %97 = load double, ptr %66, align 8 %98 = load double, ptr %96, align 8 @@ -10348,8 +10355,6 @@ _ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi3ELi1ELin1ELi3EEELin1ELi1ELb0EE store double %102, ptr %99, align 8 store double %101, ptr %100, align 8 %103 = add nsw i64 %.080189, 1 - %.pre = load ptr, ptr %0, align 8, !noalias !252 - %.pre205 = load i64, ptr %4, align 8, !noalias !252 br label %104 104: ; preds = %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi3ELi1ELin1ELi3EEELin1ELi1ELb0EEEE4swapIS4_EEvRKNS0_IT_EE.exit, %85 @@ -10568,8 +10573,8 @@ _ZNK5Eigen10MatrixBaseINS_5BlockINS1_INS_6MatrixIdLin1ELi3ELi1ELin1ELi3EEELin1EL br label %.sink.split .sink.split: ; preds = %_ZNK5Eigen10MatrixBaseINS_5BlockINS1_INS_6MatrixIdLin1ELi3ELi1ELin1ELi3EEELin1ELi1ELb0EEELin1ELi1ELb0EEEE4normEv.exit, %203 - %.sink211 = phi double [ %207, %203 ], [ %202, %_ZNK5Eigen10MatrixBaseINS_5BlockINS1_INS_6MatrixIdLin1ELi3ELi1ELin1ELi3EEELin1ELi1ELb0EEELin1ELi1ELb0EEEE4normEv.exit ] - store double %.sink211, ptr %170, align 8 + %.sink213 = phi double [ %207, %203 ], [ %202, %_ZNK5Eigen10MatrixBaseINS_5BlockINS1_INS_6MatrixIdLin1ELi3ELi1ELin1ELi3EEELin1ELi1ELb0EEELin1ELi1ELb0EEEE4normEv.exit ] + store double %.sink213, ptr %170, align 8 br label %208 208: ; preds = %.sink.split, %169 @@ -21340,7 +21345,7 @@ _ZNK5Eigen9DenseBaseINS_6MatrixIdLi1ELin1ELi1ELi1ELin1EEEE8maxCoeffEv.exit: ; pr _ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi1ELin1ELi1ELi1ELin1EEELi1ELin1ELb0EEEE8maxCoeffIlEEdPT_.exit: ; preds = %.preheader.i.i.i.i, %90 %.sroa.5.2.i.i = phi double [ %96, %90 ], [ %.sroa.5.1.i.i, %.preheader.i.i.i.i ] %.sroa.3.2.i.i = phi i64 [ 0, %90 ], [ %.sroa.3.1.i.i, %.preheader.i.i.i.i ] - %104 = add nsw i64 %.sroa.3.2.i.i, %.083165 + %104 = add nuw nsw i64 %.sroa.3.2.i.i, %.083165 %105 = load i64, ptr %78, align 8 %106 = icmp eq i64 %105, %.sroa.speculated.i br i1 %106, label %107, label %114 diff --git a/bench/cjson/optimized/cJSON.c.ll b/bench/cjson/optimized/cJSON.c.ll index b01973dfcda..611d4e1e6d7 100644 --- a/bench/cjson/optimized/cJSON.c.ll +++ b/bench/cjson/optimized/cJSON.c.ll @@ -5678,9 +5678,9 @@ define internal fastcc range(i32 0, 2) i32 @parse_string(ptr nocapture noundef n %33 = icmp sgt i64 %.058102.idx, 1 br i1 %33, label %.lr.ph109, label %._crit_edge -.lr.ph109: ; preds = %.preheader, %119 - %.161106 = phi ptr [ %.2, %119 ], [ %.ptr, %.preheader ] - %.083105 = phi ptr [ %.184, %119 ], [ %31, %.preheader ] +.lr.ph109: ; preds = %.preheader, %118 + %.161106 = phi ptr [ %.2, %118 ], [ %.ptr, %.preheader ] + %.083105 = phi ptr [ %.184, %118 ], [ %31, %.preheader ] %34 = load i8, ptr %.161106, align 1 %.not70 = icmp eq i8 %34, 92 br i1 %.not70, label %38, label %35 @@ -5689,7 +5689,7 @@ define internal fastcc range(i32 0, 2) i32 @parse_string(ptr nocapture noundef n %36 = getelementptr inbounds i8, ptr %.161106, i64 1 %37 = getelementptr inbounds i8, ptr %.083105, i64 1 store i8 %34, ptr %.083105, align 1 - br label %119 + br label %118 38: ; preds = %.lr.ph109 %39 = ptrtoint ptr %.161106 to i64 @@ -5715,32 +5715,32 @@ define internal fastcc range(i32 0, 2) i32 @parse_string(ptr nocapture noundef n 45: ; preds = %42 %46 = getelementptr inbounds i8, ptr %.083105, i64 1 store i8 8, ptr %.083105, align 1 - br label %117 + br label %116 47: ; preds = %42 %48 = getelementptr inbounds i8, ptr %.083105, i64 1 store i8 12, ptr %.083105, align 1 - br label %117 + br label %116 49: ; preds = %42 %50 = getelementptr inbounds i8, ptr %.083105, i64 1 store i8 10, ptr %.083105, align 1 - br label %117 + br label %116 51: ; preds = %42 %52 = getelementptr inbounds i8, ptr %.083105, i64 1 store i8 13, ptr %.083105, align 1 - br label %117 + br label %116 53: ; preds = %42 %54 = getelementptr inbounds i8, ptr %.083105, i64 1 store i8 9, ptr %.083105, align 1 - br label %117 + br label %116 55: ; preds = %42, %42, %42 %56 = getelementptr inbounds i8, ptr %.083105, i64 1 store i8 %44, ptr %.083105, align 1 - br label %117 + br label %116 57: ; preds = %42 %58 = icmp ult i64 %40, 6 @@ -5870,59 +5870,58 @@ parse_hex4.exit.i: ; preds = %70 .loopexit.i: ; preds = %68, %94 %.04865.shrunk.i = phi i32 [ %spec.select.i.i, %94 ], [ 0, %68 ] - %114 = trunc i32 %.04865.shrunk.i to i8 - %115 = and i8 %114, 127 + %114 = trunc nuw i32 %.04865.shrunk.i to i8 br label %utf16_literal_to_utf8.exit utf16_literal_to_utf8.exit: ; preds = %110, %.loopexit.i - %.sink.i = phi i8 [ %115, %.loopexit.i ], [ %112, %110 ] + %.sink.i = phi i8 [ %114, %.loopexit.i ], [ %112, %110 ] %.04563102116.i = phi i64 [ 6, %.loopexit.i ], [ %.04563.ph.i, %110 ] %.047104114.i = phi i64 [ 1, %.loopexit.i ], [ %113, %110 ] store i8 %.sink.i, ptr %.083105, align 1 - %116 = getelementptr inbounds i8, ptr %.083105, i64 %.047104114.i - br label %117 + %115 = getelementptr inbounds i8, ptr %.083105, i64 %.047104114.i + br label %116 -117: ; preds = %utf16_literal_to_utf8.exit, %55, %53, %51, %49, %47, %45 - %.285 = phi ptr [ %116, %utf16_literal_to_utf8.exit ], [ %56, %55 ], [ %54, %53 ], [ %52, %51 ], [ %50, %49 ], [ %48, %47 ], [ %46, %45 ] +116: ; preds = %utf16_literal_to_utf8.exit, %55, %53, %51, %49, %47, %45 + %.285 = phi ptr [ %115, %utf16_literal_to_utf8.exit ], [ %56, %55 ], [ %54, %53 ], [ %52, %51 ], [ %50, %49 ], [ %48, %47 ], [ %46, %45 ] %.0 = phi i64 [ %.04563102116.i, %utf16_literal_to_utf8.exit ], [ 2, %55 ], [ 2, %53 ], [ 2, %51 ], [ 2, %49 ], [ 2, %47 ], [ 2, %45 ] - %118 = getelementptr inbounds i8, ptr %.161106, i64 %.0 - br label %119 + %117 = getelementptr inbounds i8, ptr %.161106, i64 %.0 + br label %118 -119: ; preds = %117, %35 - %.184 = phi ptr [ %.285, %117 ], [ %37, %35 ] - %.2 = phi ptr [ %118, %117 ], [ %36, %35 ] - %120 = icmp ult ptr %.2, %.058102.ptr.le - br i1 %120, label %.lr.ph109, label %._crit_edge +118: ; preds = %116, %35 + %.184 = phi ptr [ %.285, %116 ], [ %37, %35 ] + %.2 = phi ptr [ %117, %116 ], [ %36, %35 ] + %119 = icmp ult ptr %.2, %.058102.ptr.le + br i1 %119, label %.lr.ph109, label %._crit_edge -._crit_edge: ; preds = %119, %.preheader - %.083.lcssa = phi ptr [ %31, %.preheader ], [ %.184, %119 ] +._crit_edge: ; preds = %118, %.preheader + %.083.lcssa = phi ptr [ %31, %.preheader ], [ %.184, %118 ] store i8 0, ptr %.083.lcssa, align 1 - %121 = getelementptr inbounds i8, ptr %0, i64 24 - store i32 16, ptr %121, align 8 - %122 = getelementptr inbounds i8, ptr %0, i64 32 - store ptr %31, ptr %122, align 8 - %123 = load ptr, ptr %1, align 8 - %124 = ptrtoint ptr %123 to i64 - %125 = add i64 %14, 1 - %126 = sub i64 %125, %124 - br label %133 + %120 = getelementptr inbounds i8, ptr %0, i64 24 + store i32 16, ptr %120, align 8 + %121 = getelementptr inbounds i8, ptr %0, i64 32 + store ptr %31, ptr %121, align 8 + %122 = load ptr, ptr %1, align 8 + %123 = ptrtoint ptr %122 to i64 + %124 = add i64 %14, 1 + %125 = sub i64 %124, %123 + br label %132 .critedge: ; preds = %38, %42, %100, %85, %80, %82, %75, %parse_hex4.exit.i, %57 - %127 = getelementptr inbounds i8, ptr %1, i64 40 - %128 = load ptr, ptr %127, align 8 - tail call void %128(ptr noundef nonnull %31) #31 + %126 = getelementptr inbounds i8, ptr %1, i64 40 + %127 = load ptr, ptr %126, align 8 + tail call void %127(ptr noundef nonnull %31) #31 br label %.critedge.thread88 .critedge.thread88: ; preds = %16, %21, %.preheader95, %25, %2, %.critedge %.06092 = phi ptr [ %.161106, %.critedge ], [ %.ptr, %2 ], [ %.ptr, %25 ], [ %.ptr, %.preheader95 ], [ %.ptr, %21 ], [ %.ptr, %16 ] - %129 = load ptr, ptr %1, align 8 - %130 = ptrtoint ptr %.06092 to i64 - %131 = ptrtoint ptr %129 to i64 - %132 = sub i64 %130, %131 - br label %133 - -133: ; preds = %.critedge.thread88, %._crit_edge - %storemerge = phi i64 [ %126, %._crit_edge ], [ %132, %.critedge.thread88 ] + %128 = load ptr, ptr %1, align 8 + %129 = ptrtoint ptr %.06092 to i64 + %130 = ptrtoint ptr %128 to i64 + %131 = sub i64 %129, %130 + br label %132 + +132: ; preds = %.critedge.thread88, %._crit_edge + %storemerge = phi i64 [ %125, %._crit_edge ], [ %131, %.critedge.thread88 ] %.062 = phi i32 [ 1, %._crit_edge ], [ 0, %.critedge.thread88 ] store i64 %storemerge, ptr %4, align 8 ret i32 %.062 diff --git a/bench/clamav/optimized/bzlib.c.ll b/bench/clamav/optimized/bzlib.c.ll index beb1d4355f7..cdf322b64d4 100644 --- a/bench/clamav/optimized/bzlib.c.ll +++ b/bench/clamav/optimized/bzlib.c.ll @@ -1994,7 +1994,7 @@ makeMaps_d.exit.i: ; preds = %881 br i1 %1118, label %.preheader1418.lr.ph.i, label %._crit_edge1557.i .preheader1418.lr.ph.i: ; preds = %.preheader1419.i - %1119 = icmp sgt i32 %.151017.i, 0 + %1119 = icmp slt i32 %.151017.i, 1 %wide.trip.count.i.i = zext i32 %.151017.i to i64 %wide.trip.count1751.i = zext nneg i32 %.141043.i to i64 br label %.preheader1418.i @@ -2341,7 +2341,7 @@ makeMaps_d.exit.i: ; preds = %881 %indvars.iv1747.i = phi i64 [ 0, %.preheader1418.lr.ph.i ], [ %indvars.iv.next1748.i, %CreateDecodeTables.exit.i ] %1342 = mul nuw nsw i64 %indvars.iv1747.i, 1032 %gep = getelementptr i8, ptr %invariant.gep, i64 %1342 - br i1 %1119, label %.lr.ph1552.i, label %.preheader68.i.thread.i + br i1 %1119, label %.preheader68.i.thread.i, label %.lr.ph1552.i .preheader68.i.thread.i: ; preds = %.preheader1418.i %1343 = getelementptr inbounds [6 x [258 x i32]], ptr %34, i64 0, i64 %indvars.iv1747.i @@ -2355,59 +2355,57 @@ makeMaps_d.exit.i: ; preds = %881 %1344 = getelementptr inbounds [6 x [258 x i8]], ptr %32, i64 0, i64 %indvars.iv1747.i, i64 %indvars.iv1741.i %1345 = load i8, ptr %1344, align 1 %1346 = zext i8 %1345 to i32 - %spec.select.i = tail call i32 @llvm.smax.i32(i32 %.09441550.i, i32 %1346) - %.1.i45 = tail call i32 @llvm.smin.i32(i32 %.09411551.i, i32 %1346) + %spec.select.i = tail call i32 @llvm.umax.i32(i32 %.09441550.i, i32 %1346) + %.1.i45 = tail call i32 @llvm.umin.i32(i32 %.09411551.i, i32 %1346) %indvars.iv.next1742.i = add nuw nsw i64 %indvars.iv1741.i, 1 %exitcond1746.not.i = icmp eq i64 %indvars.iv.next1742.i, %wide.trip.count.i.i - br i1 %exitcond1746.not.i, label %._crit_edge1553.i, label %.lr.ph1552.i - -._crit_edge1553.i: ; preds = %.lr.ph1552.i - %1347 = getelementptr inbounds [6 x [258 x i32]], ptr %34, i64 0, i64 %indvars.iv1747.i - %1348 = getelementptr inbounds [6 x [258 x i32]], ptr %35, i64 0, i64 %indvars.iv1747.i - %1349 = getelementptr inbounds [6 x [258 x i8]], ptr %32, i64 0, i64 %indvars.iv1747.i - %.not72.i.i = icmp samesign ugt i32 %.1.i45, %spec.select.i - br i1 %.not72.i.i, label %.preheader68.i.i, label %.preheader69.us.i.i - -.preheader69.us.i.i: ; preds = %._crit_edge1553.i, %._crit_edge.us.i.i - %.05774.us.i.i = phi i32 [ %1361, %._crit_edge.us.i.i ], [ %.1.i45, %._crit_edge1553.i ] - %.05873.us.i.i = phi i32 [ %.260.us.i.i, %._crit_edge.us.i.i ], [ 0, %._crit_edge1553.i ] - br label %1350 - -1350: ; preds = %1360, %.preheader69.us.i.i - %indvars.iv.i1381.i = phi i64 [ 0, %.preheader69.us.i.i ], [ %indvars.iv.next.i1382.i, %1360 ] - %.15970.us.i.i = phi i32 [ %.05873.us.i.i, %.preheader69.us.i.i ], [ %.260.us.i.i, %1360 ] - %1351 = getelementptr inbounds i8, ptr %1349, i64 %indvars.iv.i1381.i - %1352 = load i8, ptr %1351, align 1 - %1353 = zext i8 %1352 to i32 - %1354 = icmp eq i32 %.05774.us.i.i, %1353 - br i1 %1354, label %1355, label %1360 - -1355: ; preds = %1350 - %1356 = sext i32 %.15970.us.i.i to i64 - %1357 = getelementptr inbounds i32, ptr %1348, i64 %1356 - %1358 = trunc nuw nsw i64 %indvars.iv.i1381.i to i32 - store i32 %1358, ptr %1357, align 4 - %1359 = add nsw i32 %.15970.us.i.i, 1 - br label %1360 - -1360: ; preds = %1355, %1350 - %.260.us.i.i = phi i32 [ %1359, %1355 ], [ %.15970.us.i.i, %1350 ] + br i1 %exitcond1746.not.i, label %.preheader69.lr.ph.i.i, label %.lr.ph1552.i + +.preheader69.lr.ph.i.i: ; preds = %.lr.ph1552.i + %1347 = getelementptr inbounds [6 x [258 x i32]], ptr %35, i64 0, i64 %indvars.iv1747.i + %1348 = getelementptr inbounds [6 x [258 x i8]], ptr %32, i64 0, i64 %indvars.iv1747.i + br label %.preheader69.us.i.i + +.preheader69.us.i.i: ; preds = %._crit_edge.us.i.i, %.preheader69.lr.ph.i.i + %.05774.us.i.i = phi i32 [ %1360, %._crit_edge.us.i.i ], [ %.1.i45, %.preheader69.lr.ph.i.i ] + %.05873.us.i.i = phi i32 [ %.260.us.i.i, %._crit_edge.us.i.i ], [ 0, %.preheader69.lr.ph.i.i ] + br label %1349 + +1349: ; preds = %1359, %.preheader69.us.i.i + %indvars.iv.i1381.i = phi i64 [ 0, %.preheader69.us.i.i ], [ %indvars.iv.next.i1382.i, %1359 ] + %.15970.us.i.i = phi i32 [ %.05873.us.i.i, %.preheader69.us.i.i ], [ %.260.us.i.i, %1359 ] + %1350 = getelementptr inbounds i8, ptr %1348, i64 %indvars.iv.i1381.i + %1351 = load i8, ptr %1350, align 1 + %1352 = zext i8 %1351 to i32 + %1353 = icmp eq i32 %.05774.us.i.i, %1352 + br i1 %1353, label %1354, label %1359 + +1354: ; preds = %1349 + %1355 = sext i32 %.15970.us.i.i to i64 + %1356 = getelementptr inbounds i32, ptr %1347, i64 %1355 + %1357 = trunc nuw nsw i64 %indvars.iv.i1381.i to i32 + store i32 %1357, ptr %1356, align 4 + %1358 = add nsw i32 %.15970.us.i.i, 1 + br label %1359 + +1359: ; preds = %1354, %1349 + %.260.us.i.i = phi i32 [ %1358, %1354 ], [ %.15970.us.i.i, %1349 ] %indvars.iv.next.i1382.i = add nuw nsw i64 %indvars.iv.i1381.i, 1 %exitcond.not.i1383.i = icmp eq i64 %indvars.iv.next.i1382.i, %wide.trip.count.i.i - br i1 %exitcond.not.i1383.i, label %._crit_edge.us.i.i, label %1350 + br i1 %exitcond.not.i1383.i, label %._crit_edge.us.i.i, label %1349 -._crit_edge.us.i.i: ; preds = %1360 - %1361 = add nuw nsw i32 %.05774.us.i.i, 1 +._crit_edge.us.i.i: ; preds = %1359 + %1360 = add nuw nsw i32 %.05774.us.i.i, 1 %exitcond88.not.i.i = icmp eq i32 %.05774.us.i.i, %spec.select.i br i1 %exitcond88.not.i.i, label %.preheader68.i.i, label %.preheader69.us.i.i -.preheader68.i.i: ; preds = %._crit_edge.us.i.i, %._crit_edge1553.i - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(92) %1347, i8 0, i64 92, i1 false) - %invariant.gep.i.i = getelementptr inbounds i8, ptr %1347, i64 4 +.preheader68.i.i: ; preds = %._crit_edge.us.i.i + %1361 = getelementptr inbounds [6 x [258 x i32]], ptr %34, i64 0, i64 %indvars.iv1747.i + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(92) %1361, i8 0, i64 92, i1 false) + %invariant.gep.i.i = getelementptr inbounds i8, ptr %1361, i64 4 br label %.lr.ph.i.i .preheader66.i.i: ; preds = %.lr.ph.i.i, %.preheader68.i.thread.i - %.not72.i1930.i = phi i1 [ true, %.preheader68.i.thread.i ], [ %.not72.i.i, %.lr.ph.i.i ] %.0941.lcssa1928.i = phi i32 [ 32, %.preheader68.i.thread.i ], [ %.1.i45, %.lr.ph.i.i ] %.0944.lcssa1926.i = phi i32 [ 0, %.preheader68.i.thread.i ], [ %spec.select.i, %.lr.ph.i.i ] %1362 = getelementptr inbounds [6 x [258 x i32]], ptr %34, i64 0, i64 %indvars.iv1747.i @@ -2416,7 +2414,7 @@ makeMaps_d.exit.i: ; preds = %881 .lr.ph.i.i: ; preds = %.lr.ph.i.i, %.preheader68.i.i %indvars.iv92.i.i = phi i64 [ %indvars.iv.next93.i.i, %.lr.ph.i.i ], [ 0, %.preheader68.i.i ] - %1363 = getelementptr inbounds i8, ptr %1349, i64 %indvars.iv92.i.i + %1363 = getelementptr inbounds i8, ptr %1348, i64 %indvars.iv92.i.i %1364 = load i8, ptr %1363, align 1 %1365 = zext i8 %1364 to i64 %gep.i.i = getelementptr inbounds i32, ptr %invariant.gep.i.i, i64 %1365 @@ -2441,7 +2439,7 @@ makeMaps_d.exit.i: ; preds = %881 .preheader65.preheader.i.i: ; preds = %1368 %1372 = getelementptr inbounds [6 x [258 x i32]], ptr %33, i64 0, i64 %indvars.iv1747.i tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(92) %1372, i8 0, i64 92, i1 false) - br i1 %.not72.i1930.i, label %.preheader.i.i, label %.lr.ph82.preheader.i.i + br i1 %1119, label %.preheader.i.i, label %.lr.ph82.preheader.i.i .lr.ph82.preheader.i.i: ; preds = %.preheader65.preheader.i.i %1373 = zext nneg i32 %.0941.lcssa1928.i to i64 @@ -4145,10 +4143,13 @@ declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #3 declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #5 +declare i32 @llvm.umax.i32(i32, i32) #5 + +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umin.i32(i32, i32) #5 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smin.i32(i32, i32) #5 +declare i32 @llvm.smax.i32(i32, i32) #5 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #6 diff --git a/bench/clamav/optimized/pdf.c.ll b/bench/clamav/optimized/pdf.c.ll index 5c159d3ba29..6c99f972513 100644 --- a/bench/clamav/optimized/pdf.c.ll +++ b/bench/clamav/optimized/pdf.c.ll @@ -169,7 +169,6 @@ target triple = "x86_64-pc-linux-gnu" @.str.157 = private unnamed_addr constant [10 x i8] c"invalid U\00", align 1 @.str.158 = private unnamed_addr constant [11 x i8] c"too long U\00", align 1 @.str.159 = private unnamed_addr constant [49 x i8] c"pdf_handle_enc: Encrypt R: %d, P %x, length: %u\0A\00", align 1 -@.str.160 = private unnamed_addr constant [53 x i8] c"pdf_handle_enc: wrong key length, not multiple of 8\0A\00", align 1 @.str.161 = private unnamed_addr constant [57 x i8] c"pdf_find_and_parse_objs_in_objstm: Empty object stream.\0A\00", align 1 @.str.162 = private unnamed_addr constant [107 x i8] c"pdf_find_and_parse_objs_in_objstm: Invalid objstm values. Offset of first obj greater than stream length.\0A\00", align 1 @.str.163 = private unnamed_addr constant [64 x i8] c"Timeout reached in the PDF parser while parsing object stream.\0A\00", align 1 @@ -5055,7 +5054,7 @@ define void @pdf_handle_enc(ptr nocapture noundef %0) local_unnamed_addr #0 { %11 = getelementptr inbounds i8, ptr %0, i64 100 %12 = load i32, ptr %11, align 4 %13 = icmp eq i32 %12, -1 - br i1 %13, label %191, label %14 + br i1 %13, label %188, label %14 14: ; preds = %1 %15 = getelementptr inbounds i8, ptr %0, i64 104 @@ -5065,7 +5064,7 @@ define void @pdf_handle_enc(ptr nocapture noundef %0) local_unnamed_addr #0 { 17: ; preds = %14 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.128) #23 - br label %191 + br label %188 18: ; preds = %14 %19 = load ptr, ptr %0, align 8 @@ -5146,7 +5145,7 @@ define void @pdf_handle_enc(ptr nocapture noundef %0) local_unnamed_addr #0 { %45 = lshr i32 %12, 8 %46 = and i32 %12, 255 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.129, i32 noundef %45, i32 noundef %46) #23 - br label %191 + br label %188 find_obj.exit: ; preds = %32, %39 %.024.i = phi ptr [ %41, %39 ], [ %34, %32 ] @@ -5176,7 +5175,7 @@ find_obj.exit: ; preds = %32, %39 62: ; preds = %find_obj.exit tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.131) #23 - br label %190 + br label %187 63: ; preds = %find_obj.exit %64 = ptrtoint ptr %61 to i64 @@ -5281,7 +5280,7 @@ pdf_readint.exit203: ; preds = %91 97: ; preds = %pdf_readint.exit203.thread, %pdf_readint.exit203 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.134) #23 - br label %190 + br label %187 98: ; preds = %pdf_readint.exit203 %99 = add i32 %95, -7 @@ -5290,7 +5289,7 @@ pdf_readint.exit203: ; preds = %91 100: ; preds = %98 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.135) #23 - br label %190 + br label %187 101: ; preds = %98 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) @@ -5324,7 +5323,7 @@ pdf_readint.exit207: ; preds = %101, %104, %._crit_ 112: ; preds = %pdf_readint.exit207 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.137) #23 - br label %190 + br label %187 113: ; preds = %pdf_readint.exit207 %114 = icmp ult i32 %95, 5 @@ -5441,7 +5440,7 @@ pdf_readint.exit207: ; preds = %101, %104, %._crit_ call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.152, i32 noundef %158) #23 %162 = load i32, ptr %10, align 4 call fastcc void @dbg_printhex(ptr noundef nonnull @.str.153, ptr noundef nonnull %157, i32 noundef %162) - br label %190 + br label %187 163: ; preds = %159 %164 = icmp ugt i32 %158, %. @@ -5466,7 +5465,7 @@ pdf_readint.exit207: ; preds = %101, %104, %._crit_ 169: ; preds = %.preheader229 call fastcc void @dbg_printhex(ptr noundef nonnull @.str.154, ptr noundef nonnull %157, i32 noundef %158) - br label %190 + br label %187 .loopexit230: ; preds = %166, %163 store i32 0, ptr %10, align 4 @@ -5483,7 +5482,7 @@ pdf_readint.exit207: ; preds = %101, %104, %._crit_ call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.156, i32 noundef %171) #23 %175 = load i32, ptr %10, align 4 call fastcc void @dbg_printhex(ptr noundef nonnull @.str.157, ptr noundef nonnull %170, i32 noundef %175) - br label %190 + br label %187 176: ; preds = %172 %177 = icmp ugt i32 %171, %. @@ -5508,45 +5507,36 @@ pdf_readint.exit207: ; preds = %101, %104, %._crit_ 182: ; preds = %.preheader call fastcc void @dbg_printhex(ptr noundef nonnull @.str.158, ptr noundef nonnull %170, i32 noundef %171) - br label %190 + br label %187 .loopexit: ; preds = %179, %176 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.159, i32 noundef %95, i32 noundef %109, i32 noundef %156) #23 - %183 = and i32 %156, 7 - %.not189 = icmp eq i32 %183, 0 - br i1 %.not189, label %185, label %184 - -184: ; preds = %.loopexit - call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.160) #23 - br label %190 - -185: ; preds = %.loopexit call fastcc void @check_owner_password(ptr noundef nonnull %0, i32 noundef %95, ptr noundef %157, ptr noundef %170, ptr noundef %.1156220, i64 noundef %.0154221) - %186 = getelementptr inbounds i8, ptr %0, i64 120 - %187 = load ptr, ptr %186, align 8 - %188 = icmp eq ptr %187, null - br i1 %188, label %189, label %190 + %183 = getelementptr inbounds i8, ptr %0, i64 120 + %184 = load ptr, ptr %183, align 8 + %185 = icmp eq ptr %184, null + br i1 %185, label %186, label %187 -189: ; preds = %185 +186: ; preds = %.loopexit call fastcc void @check_user_password(ptr noundef nonnull %0, i32 noundef %95, ptr noundef %157, ptr noundef %170, i32 noundef %109, i32 noundef %.0143227, ptr noundef %.1152222, i64 noundef %.0150223, i32 noundef %156) - br label %190 + br label %187 .critedge: ; preds = %.thread call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.152, i32 noundef %158) #23 - br label %190 + br label %187 .critedge193: ; preds = %.loopexit230 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.156, i32 noundef %171) #23 - br label %190 - -190: ; preds = %.critedge193, %.critedge, %185, %189, %174, %161, %184, %182, %169, %112, %100, %97, %62 - %.0157 = phi ptr [ null, %97 ], [ null, %100 ], [ null, %112 ], [ %157, %161 ], [ %157, %169 ], [ %157, %174 ], [ %157, %182 ], [ %157, %184 ], [ %157, %189 ], [ %157, %185 ], [ null, %62 ], [ null, %.critedge ], [ %157, %.critedge193 ] - %.0155 = phi ptr [ null, %97 ], [ null, %100 ], [ null, %112 ], [ %.1156220, %161 ], [ %.1156220, %169 ], [ %.1156220, %174 ], [ %.1156220, %182 ], [ %.1156220, %184 ], [ %.1156220, %189 ], [ %.1156220, %185 ], [ null, %62 ], [ %.1156220, %.critedge ], [ %.1156220, %.critedge193 ] - %.0153 = phi ptr [ null, %97 ], [ null, %100 ], [ null, %112 ], [ null, %161 ], [ null, %169 ], [ %170, %174 ], [ %170, %182 ], [ %170, %184 ], [ %170, %189 ], [ %170, %185 ], [ null, %62 ], [ null, %.critedge ], [ null, %.critedge193 ] - %.0151 = phi ptr [ null, %97 ], [ null, %100 ], [ null, %112 ], [ %.1152222, %161 ], [ %.1152222, %169 ], [ %.1152222, %174 ], [ %.1152222, %182 ], [ %.1152222, %184 ], [ %.1152222, %189 ], [ %.1152222, %185 ], [ null, %62 ], [ %.1152222, %.critedge ], [ %.1152222, %.critedge193 ] - %.0148 = phi ptr [ null, %97 ], [ null, %100 ], [ null, %112 ], [ %.1149224, %161 ], [ %.1149224, %169 ], [ %.1149224, %174 ], [ %.1149224, %182 ], [ %.1149224, %184 ], [ %.1149224, %189 ], [ %.1149224, %185 ], [ null, %62 ], [ %.1149224, %.critedge ], [ %.1149224, %.critedge193 ] - %.0146 = phi ptr [ null, %97 ], [ null, %100 ], [ null, %112 ], [ %.1147225, %161 ], [ %.1147225, %169 ], [ %.1147225, %174 ], [ %.1147225, %182 ], [ %.1147225, %184 ], [ %.1147225, %189 ], [ %.1147225, %185 ], [ null, %62 ], [ %.1147225, %.critedge ], [ %.1147225, %.critedge193 ] - %.0144 = phi ptr [ null, %97 ], [ null, %100 ], [ null, %112 ], [ %.1145226, %161 ], [ %.1145226, %169 ], [ %.1145226, %174 ], [ %.1145226, %182 ], [ %.1145226, %184 ], [ %.1145226, %189 ], [ %.1145226, %185 ], [ null, %62 ], [ %.1145226, %.critedge ], [ %.1145226, %.critedge193 ] + br label %187 + +187: ; preds = %.critedge193, %.critedge, %.loopexit, %186, %174, %161, %182, %169, %112, %100, %97, %62 + %.0157 = phi ptr [ null, %97 ], [ null, %100 ], [ null, %112 ], [ %157, %161 ], [ %157, %169 ], [ %157, %174 ], [ %157, %182 ], [ %157, %186 ], [ %157, %.loopexit ], [ null, %62 ], [ null, %.critedge ], [ %157, %.critedge193 ] + %.0155 = phi ptr [ null, %97 ], [ null, %100 ], [ null, %112 ], [ %.1156220, %161 ], [ %.1156220, %169 ], [ %.1156220, %174 ], [ %.1156220, %182 ], [ %.1156220, %186 ], [ %.1156220, %.loopexit ], [ null, %62 ], [ %.1156220, %.critedge ], [ %.1156220, %.critedge193 ] + %.0153 = phi ptr [ null, %97 ], [ null, %100 ], [ null, %112 ], [ null, %161 ], [ null, %169 ], [ %170, %174 ], [ %170, %182 ], [ %170, %186 ], [ %170, %.loopexit ], [ null, %62 ], [ null, %.critedge ], [ null, %.critedge193 ] + %.0151 = phi ptr [ null, %97 ], [ null, %100 ], [ null, %112 ], [ %.1152222, %161 ], [ %.1152222, %169 ], [ %.1152222, %174 ], [ %.1152222, %182 ], [ %.1152222, %186 ], [ %.1152222, %.loopexit ], [ null, %62 ], [ %.1152222, %.critedge ], [ %.1152222, %.critedge193 ] + %.0148 = phi ptr [ null, %97 ], [ null, %100 ], [ null, %112 ], [ %.1149224, %161 ], [ %.1149224, %169 ], [ %.1149224, %174 ], [ %.1149224, %182 ], [ %.1149224, %186 ], [ %.1149224, %.loopexit ], [ null, %62 ], [ %.1149224, %.critedge ], [ %.1149224, %.critedge193 ] + %.0146 = phi ptr [ null, %97 ], [ null, %100 ], [ null, %112 ], [ %.1147225, %161 ], [ %.1147225, %169 ], [ %.1147225, %174 ], [ %.1147225, %182 ], [ %.1147225, %186 ], [ %.1147225, %.loopexit ], [ null, %62 ], [ %.1147225, %.critedge ], [ %.1147225, %.critedge193 ] + %.0144 = phi ptr [ null, %97 ], [ null, %100 ], [ null, %112 ], [ %.1145226, %161 ], [ %.1145226, %169 ], [ %.1145226, %174 ], [ %.1145226, %182 ], [ %.1145226, %186 ], [ %.1145226, %.loopexit ], [ null, %62 ], [ %.1145226, %.critedge ], [ %.1145226, %.critedge193 ] call void @free(ptr noundef %.0157) #23 call void @free(ptr noundef %.0155) #23 call void @free(ptr noundef %.0153) #23 @@ -5554,9 +5544,9 @@ pdf_readint.exit207: ; preds = %101, %104, %._crit_ call void @free(ptr noundef %.0148) #23 call void @free(ptr noundef %.0146) #23 call void @free(ptr noundef %.0144) #23 - br label %191 + br label %188 -191: ; preds = %1, %190, %.loopexit231, %17 +188: ; preds = %1, %187, %.loopexit231, %17 ret void } diff --git a/bench/clamav/optimized/textdet.c.ll b/bench/clamav/optimized/textdet.c.ll index 88ce7c98122..d01c9e63e34 100644 --- a/bench/clamav/optimized/textdet.c.ll +++ b/bench/clamav/optimized/textdet.c.ll @@ -6,7 +6,6 @@ target triple = "x86_64-pc-linux-gnu" @.str = private unnamed_addr constant [23 x i8] c"Recognized ASCII text\0A\00", align 1 @.str.1 = private unnamed_addr constant [33 x i8] c"Recognized UTF-8 character data\0A\00", align 1 @.str.2 = private unnamed_addr constant [30 x i8] c"Recognized %s character data\0A\00", align 1 -@.str.3 = private unnamed_addr constant [9 x i8] c"UTF-16LE\00", align 1 @.str.4 = private unnamed_addr constant [9 x i8] c"UTF-16BE\00", align 1 @.str.5 = private unnamed_addr constant [24 x i8] c"Recognized binary data\0A\00", align 1 @text_chars = internal unnamed_addr constant [256 x i8] c"\00\00\00\00\00\00\00\01\01\01\01\00\01\01\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\03\03\03\03\03\01\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02", align 16 @@ -37,7 +36,7 @@ define range(i32 500, 505) i32 @cli_texttype(ptr nocapture noundef readonly %0, .loopexit: ; preds = %3, %2 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str) #2 - br label %134 + br label %131 .lr.ph.i11: ; preds = %.lr.ph.i, %.loopexit.i %.03046.i = phi i32 [ %.1.i, %.loopexit.i ], [ 0, %.lr.ph.i ] @@ -122,7 +121,7 @@ td_isutf8.exit: ; preds = %.loopexit.i, %41 47: ; preds = %td_isutf8.exit tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.1) #2 - br label %134 + br label %131 td_isutf8.exit.thread: ; preds = %34, %19, %15, %td_isutf8.exit %48 = icmp eq i32 %1, 1 @@ -267,26 +266,21 @@ td_isutf8.exit.thread.thread23: ; preds = %42, %td_isutf8.exit br i1 %129, label %.lr.ph.split.split.i, label %td_isutf16.exit ._crit_edge.i: ; preds = %104, %81, %.thread62.i, %58 - %.03367.i = phi i32 [ 2, %58 ], [ 1, %.thread62.i ], [ 1, %81 ], [ 2, %104 ] %.028.lcssa.i = phi i32 [ 0, %58 ], [ 0, %.thread62.i ], [ %.129.us.us.i, %81 ], [ %.129.us51.i, %104 ] %130 = lshr i32 %1, 1 %.not37.i.not = icmp ult i32 %.028.lcssa.i, %130 br i1 %.not37.i.not, label %td_isutf16.exit, label %select.unfold td_isutf16.exit: ; preds = %126, %.thread, %._crit_edge.i - %.034.i16 = phi i32 [ %.03367.i, %._crit_edge.i ], [ 2, %.thread ], [ 2, %126 ] - %131 = icmp eq i32 %.034.i16, 1 - %132 = select i1 %131, ptr @.str.3, ptr @.str.4 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.2, ptr noundef nonnull %132) #2 - %133 = select i1 %131, i32 502, i32 503 - br label %134 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.4) #2 + br label %131 select.unfold: ; preds = %.lr.ph.split.split.us.i, %.lr.ph.split.us.split.us.i, %.lr.ph.split.split.i, %122, %._crit_edge.i, %td_isutf8.exit.thread tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.5) #2 - br label %134 + br label %131 -134: ; preds = %select.unfold, %td_isutf16.exit, %47, %.loopexit - %.0 = phi i32 [ 500, %.loopexit ], [ 501, %47 ], [ %133, %td_isutf16.exit ], [ 504, %select.unfold ] +131: ; preds = %select.unfold, %td_isutf16.exit, %47, %.loopexit + %.0 = phi i32 [ 500, %.loopexit ], [ 501, %47 ], [ 503, %td_isutf16.exit ], [ 504, %select.unfold ] ret i32 %.0 } diff --git a/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll b/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll index 493de28daa4..f055f8d6c5a 100644 --- a/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll +++ b/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll @@ -2014,7 +2014,7 @@ define hidden noundef range(i64 1, 0) i64 @_ZN12clap_builder6output13help_templa %19 = icmp ne i128 %18, 150386940411188751217043345048958912678 %20 = icmp eq ptr %14, null %21 = or i1 %20, %19 - br i1 %21, label %22, label %47 + br i1 %21, label %22, label %43 22: ; preds = %7 call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.a0f5fbf39a3a1cb96a1e7648a0e2d151.37.llvm.2531363454801242601, i64 noundef 43, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a0f5fbf39a3a1cb96a1e7648a0e2d151.39.llvm.2531363454801242601) #20, !noalias !350 @@ -2026,7 +2026,7 @@ define hidden noundef range(i64 1, 0) i64 @_ZN12clap_builder6output13help_templa store i128 89112216542684686001844060841048690714, ptr %2, align 16, !noalias !356 %24 = call noundef align 8 dereferenceable_or_null(16) ptr @"_ZN12clap_builder4util8flat_map20FlatMap$LT$K$C$V$GT$3get17h1e1e07fa67619203E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %2) %25 = icmp eq ptr %24, null - br i1 %25, label %44, label %26 + br i1 %25, label %42, label %26 26: ; preds = %23 call void @llvm.experimental.noalias.scope.decl(metadata !361) @@ -2053,29 +2053,21 @@ define hidden noundef range(i64 1, 0) i64 @_ZN12clap_builder6output13help_templa _ZN12clap_builder7builder7command7Command18get_max_term_width17h3039cb1bd41eb4f5E.exit: ; preds = %26 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2), !noalias !356 - %42 = load i64, ptr %33, align 8, !noundef !12 - %43 = icmp eq i64 %42, 0 - %spec.select = select i1 %43, i64 -1, i64 %42 - br label %45 + br label %46 -44: ; preds = %23 +42: ; preds = %23 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2), !noalias !356 - br label %45 + br label %46 -45: ; preds = %_ZN12clap_builder7builder7command7Command18get_max_term_width17h3039cb1bd41eb4f5E.exit, %44 - %46 = phi i64 [ -1, %44 ], [ %spec.select, %_ZN12clap_builder7builder7command7Command18get_max_term_width17h3039cb1bd41eb4f5E.exit ] - %.0.sroa.speculated.i = call noundef i64 @llvm.umin.i64(i64 %46, i64 range(i64 1, 0) 100) - br label %50 - -47: ; preds = %7 +43: ; preds = %7 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !345 - %48 = load i64, ptr %14, align 8, !noundef !12 - %49 = icmp eq i64 %48, 0 - %..fca.1.extract = select i1 %49, i64 -1, i64 %48 - br label %50 + %44 = load i64, ptr %14, align 8, !noundef !12 + %45 = icmp eq i64 %44, 0 + %..fca.1.extract = select i1 %45, i64 -1, i64 %44 + br label %46 -50: ; preds = %47, %45 - %.0 = phi i64 [ %.0.sroa.speculated.i, %45 ], [ %..fca.1.extract, %47 ] +46: ; preds = %42, %_ZN12clap_builder7builder7command7Command18get_max_term_width17h3039cb1bd41eb4f5E.exit, %43 + %.0 = phi i64 [ %..fca.1.extract, %43 ], [ 100, %_ZN12clap_builder7builder7command7Command18get_max_term_width17h3039cb1bd41eb4f5E.exit ], [ 100, %42 ] ret i64 %.0 } @@ -10613,9 +10605,6 @@ declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #15 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #16 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #17 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #17 diff --git a/bench/cmake/optimized/archive_options.c.ll b/bench/cmake/optimized/archive_options.c.ll index 79ab48f892e..f4ee3c34207 100644 --- a/bench/cmake/optimized/archive_options.c.ll +++ b/bench/cmake/optimized/archive_options.c.ll @@ -3,94 +3,20 @@ source_filename = "bench/cmake/original/archive_options.c.ll" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" target triple = "x86_64-pc-linux-gnu" -@.str = private unnamed_addr constant [13 x i8] c"Empty option\00", align 1 @.str.1 = private unnamed_addr constant [26 x i8] c"Unknown module name: `%s'\00", align 1 -@.str.2 = private unnamed_addr constant [33 x i8] c"Undefined option: `%s%s%s%s%s%s'\00", align 1 @.str.3 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@.str.4 = private unnamed_addr constant [2 x i8] c"!\00", align 1 @.str.5 = private unnamed_addr constant [2 x i8] c":\00", align 1 -@.str.6 = private unnamed_addr constant [2 x i8] c"=\00", align 1 @.str.7 = private unnamed_addr constant [34 x i8] c"Out of memory adding file to list\00", align 1 @.str.8 = private unnamed_addr constant [29 x i8] c"__ignore_wrong_module_name__\00", align 1 @.str.9 = private unnamed_addr constant [27 x i8] c"Undefined option: `%s%s%s'\00", align 1 @.str.10 = private unnamed_addr constant [2 x i8] c"1\00", align 1 ; Function Attrs: nounwind uwtable -define dso_local noundef i32 @_archive_set_option(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, ptr noundef %5, ptr nocapture noundef readonly %6) local_unnamed_addr #0 { +define dso_local range(i32 -30, 1) i32 @_archive_set_option(ptr noundef %0, ptr nocapture noundef readnone %1, ptr nocapture noundef readnone %2, ptr nocapture noundef readnone %3, i32 noundef %4, ptr noundef %5, ptr nocapture noundef readnone %6) local_unnamed_addr #0 { %8 = tail call i32 @__archive_check_magic(ptr noundef %0, i32 noundef %4, i32 noundef 1, ptr noundef %5) #6 %9 = icmp eq i32 %8, -30 - br i1 %9, label %36, label %10 - -10: ; preds = %7 - %.not = icmp eq ptr %1, null - br i1 %.not, label %13, label %11 - -11: ; preds = %10 - %12 = load i8, ptr %1, align 1 - %.not44 = icmp eq i8 %12, 0 - %spec.select = select i1 %.not44, ptr null, ptr %1 - br label %13 - -13: ; preds = %11, %10 - %14 = phi ptr [ null, %10 ], [ %spec.select, %11 ] - %.not45 = icmp eq ptr %2, null - br i1 %.not45, label %17, label %15 - -15: ; preds = %13 - %16 = load i8, ptr %2, align 1 - %.not46 = icmp eq i8 %16, 0 - %spec.select2 = select i1 %.not46, ptr null, ptr %2 - br label %17 - -17: ; preds = %15, %13 - %18 = phi ptr [ null, %13 ], [ %spec.select2, %15 ] - %.not47 = icmp eq ptr %3, null - br i1 %.not47, label %21, label %19 - -19: ; preds = %17 - %20 = load i8, ptr %3, align 1 - %.not48 = icmp eq i8 %20, 0 - %spec.select3 = select i1 %.not48, ptr null, ptr %3 - br label %21 - -21: ; preds = %19, %17 - %22 = phi ptr [ null, %17 ], [ %spec.select3, %19 ] - %23 = icmp eq ptr %18, null - %24 = icmp eq ptr %22, null - %or.cond = select i1 %23, i1 %24, i1 false - br i1 %or.cond, label %36, label %25 - -25: ; preds = %21 - br i1 %23, label %26, label %27 - -26: ; preds = %25 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %0, i32 noundef -1, ptr noundef nonnull @.str) #6 - br label %36 - -27: ; preds = %25 - %28 = tail call i32 %6(ptr noundef %0, ptr noundef %14, ptr noundef nonnull %18, ptr noundef %22) #6 - switch i32 %28, label %36 [ - i32 -21, label %29 - i32 -20, label %30 - ] - -29: ; preds = %27 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %0, i32 noundef -1, ptr noundef nonnull @.str.1, ptr noundef %14) #6 - br label %36 - -30: ; preds = %27 - %31 = select i1 %24, ptr @.str.4, ptr @.str.3 - %.not50 = icmp eq ptr %14, null - %32 = select i1 %.not50, ptr @.str.3, ptr %14 - %33 = select i1 %.not50, ptr @.str.3, ptr @.str.5 - %34 = select i1 %24, ptr @.str.3, ptr @.str.6 - %35 = select i1 %24, ptr @.str.3, ptr %22 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %0, i32 noundef -1, ptr noundef nonnull @.str.2, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull %18, ptr noundef nonnull %34, ptr noundef nonnull %35) #6 - br label %36 - -36: ; preds = %27, %21, %7, %30, %29, %26 - %.0 = phi i32 [ -25, %26 ], [ -25, %29 ], [ -25, %30 ], [ -30, %7 ], [ 0, %21 ], [ %28, %27 ] - ret i32 %.0 + %spec.select = select i1 %9, i32 -30, i32 0 + ret i32 %spec.select } declare i32 @__archive_check_magic(ptr noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #1 diff --git a/bench/cmake/optimized/block_util.c.ll b/bench/cmake/optimized/block_util.c.ll index dc0eef7a48d..fff0c9419b6 100644 --- a/bench/cmake/optimized/block_util.c.ll +++ b/bench/cmake/optimized/block_util.c.ll @@ -42,7 +42,7 @@ define dso_local range(i32 0, 12) i32 @lzma_block_compressed_size(ptr noundef %0 21: ; preds = %16 %22 = zext nneg i32 %9 to i64 %23 = add nuw i64 %14, %22 - %24 = tail call i32 @lzma_check_size(i32 noundef %19) #3 + %24 = tail call i32 @lzma_check_size(i32 noundef %19) #4 %25 = zext i32 %24 to i64 %26 = add nuw i64 %23, %25 %27 = icmp ugt i64 %26, 9223372036854775804 @@ -52,7 +52,7 @@ lzma_block_unpadded_size.exit: ; preds = %16 br i1 %20, label %lzma_block_unpadded_size.exit.thread, label %lzma_block_unpadded_size.exit.lzma_block_unpadded_size.exit.thread18_crit_edge lzma_block_unpadded_size.exit.lzma_block_unpadded_size.exit.thread18_crit_edge: ; preds = %lzma_block_unpadded_size.exit - %.pre = tail call i32 @lzma_check_size(i32 noundef %19) #3 + %.pre = tail call i32 @lzma_check_size(i32 noundef %19) #4 br label %lzma_block_unpadded_size.exit.thread18 lzma_block_unpadded_size.exit.thread18: ; preds = %lzma_block_unpadded_size.exit.lzma_block_unpadded_size.exit.thread18_crit_edge, %21 @@ -118,7 +118,7 @@ define dso_local range(i64 -1, 9223372036854775805) i64 @lzma_block_unpadded_siz 20: ; preds = %15 %21 = zext nneg i32 %8 to i64 %22 = add nuw i64 %13, %21 - %23 = tail call i32 @lzma_check_size(i32 noundef %18) #3 + %23 = tail call i32 @lzma_check_size(i32 noundef %18) #4 %24 = zext i32 %23 to i64 %25 = add nuw i64 %22, %24 %26 = icmp ugt i64 %25, 9223372036854775804 @@ -133,8 +133,8 @@ define dso_local range(i64 -1, 9223372036854775805) i64 @lzma_block_unpadded_siz ; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none) declare i32 @lzma_check_size(i32 noundef) local_unnamed_addr #2 -; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(argmem: read) uwtable -define dso_local range(i64 -1, 9223372036854775805) i64 @lzma_block_total_size(ptr noundef readonly %0) local_unnamed_addr #1 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable +define dso_local range(i64 -1, 1) i64 @lzma_block_total_size(ptr noundef readonly %0) local_unnamed_addr #3 { %2 = icmp eq ptr %0, null br i1 %2, label %lzma_block_unpadded_size.exit.thread, label %3 @@ -162,39 +162,26 @@ define dso_local range(i64 -1, 9223372036854775805) i64 @lzma_block_total_size(p br i1 %or.cond23.i, label %lzma_block_unpadded_size.exit.thread, label %15 15: ; preds = %11 - %16 = icmp eq i64 %13, -1 + %16 = icmp ne i64 %13, -1 %17 = getelementptr inbounds i8, ptr %0, i64 8 %18 = load i32, ptr %17, align 8 %19 = icmp ugt i32 %18, 15 - %brmerge.i = or i1 %16, %19 - br i1 %brmerge.i, label %lzma_block_unpadded_size.exit, label %20 - -20: ; preds = %15 - %21 = zext nneg i32 %8 to i64 - %22 = add nuw i64 %13, %21 - %23 = tail call i32 @lzma_check_size(i32 noundef %18) #3 - %24 = zext i32 %23 to i64 - %25 = add nuw i64 %22, %24 - %26 = icmp ugt i64 %25, 9223372036854775804 - %27 = add nuw nsw i64 %25, 3 - %28 = and i64 %27, 9223372036854775804 - %29 = select i1 %26, i64 0, i64 %28 - br label %lzma_block_unpadded_size.exit.thread + %brmerge = or i1 %19, %16 + br i1 %brmerge, label %lzma_block_unpadded_size.exit.thread, label %20 -lzma_block_unpadded_size.exit: ; preds = %15 - %not. = xor i1 %19, true - %spec.select = sext i1 %not. to i64 - br label %lzma_block_unpadded_size.exit.thread +lzma_block_unpadded_size.exit.thread: ; preds = %15, %1, %3, %6, %11 + br label %20 -lzma_block_unpadded_size.exit.thread: ; preds = %lzma_block_unpadded_size.exit, %11, %6, %3, %1, %20 - %.0 = phi i64 [ %29, %20 ], [ 0, %1 ], [ 0, %3 ], [ 0, %6 ], [ 0, %11 ], [ %spec.select, %lzma_block_unpadded_size.exit ] +20: ; preds = %15, %lzma_block_unpadded_size.exit.thread + %.0 = phi i64 [ 0, %lzma_block_unpadded_size.exit.thread ], [ -1, %15 ] ret i64 %.0 } attributes #0 = { mustprogress nofree nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nofree nosync nounwind willreturn memory(argmem: read) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nofree nosync nounwind willreturn memory(none) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind willreturn memory(none) } +attributes #3 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nounwind willreturn memory(none) } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/cmake/optimized/decompress.c.ll b/bench/cmake/optimized/decompress.c.ll index 82da1f32836..288bf3dc524 100644 --- a/bench/cmake/optimized/decompress.c.ll +++ b/bench/cmake/optimized/decompress.c.ll @@ -4062,8 +4062,8 @@ makeMaps_d.exit: ; preds = %2167 %2880 = getelementptr inbounds [6 x [258 x i8]], ptr %2520, i64 0, i64 %indvars.iv2524, i64 %indvars.iv2518 %2881 = load i8, ptr %2880, align 1 %2882 = zext i8 %2881 to i32 - %spec.select = tail call i32 @llvm.smax.i32(i32 %.014012236, i32 %2882) - %.1 = tail call i32 @llvm.smin.i32(i32 %.014002237, i32 %2882) + %spec.select = tail call i32 @llvm.umax.i32(i32 %.014012236, i32 %2882) + %.1 = tail call i32 @llvm.umin.i32(i32 %.014002237, i32 %2882) %indvars.iv.next2519 = add nuw nsw i64 %indvars.iv2518, 1 %exitcond2523.not = icmp eq i64 %indvars.iv.next2519, %wide.trip.count2522 br i1 %exitcond2523.not, label %._crit_edge2239, label %.lr.ph2238, !llvm.loop !16 @@ -7253,11 +7253,17 @@ declare i32 @llvm.smin.i32(i32, i32) #3 declare noundef i64 @fwrite(ptr nocapture noundef, i64 noundef, i64 noundef, ptr nocapture noundef) local_unnamed_addr #4 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #3 +declare i32 @llvm.umax.i32(i32, i32) #3 + +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umin.i32(i32, i32) #3 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.smax.i32(i32, i32) #3 + attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nofree nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/coreutils-rs/optimized/4l9vhhaykgv9gwpd.ll b/bench/coreutils-rs/optimized/4l9vhhaykgv9gwpd.ll index 1a7424bf75b..1a0696898dd 100644 --- a/bench/coreutils-rs/optimized/4l9vhhaykgv9gwpd.ll +++ b/bench/coreutils-rs/optimized/4l9vhhaykgv9gwpd.ll @@ -1142,7 +1142,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17h4ec7f269a9a62422E.exit150: %.sroa.380.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.380.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.380, i64 16, i1 false) store i64 -9223372036854775808, ptr %0, align 8 - br label %258 + br label %257 148: ; preds = %_ZN12clap_builder6parser5error12MatchesError6unwrap17h4ec7f269a9a62422E.exit %149 = getelementptr inbounds i8, ptr %23, i64 8 @@ -1165,7 +1165,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17h4ec7f269a9a62422E.exit150: %.sroa.367.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.367.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.367, i64 16, i1 false) store i64 -9223372036854775808, ptr %0, align 8 - br label %258 + br label %257 153: ; preds = %_ZN12clap_builder6parser5error12MatchesError6unwrap17h4ec7f269a9a62422E.exit150 %154 = getelementptr inbounds i8, ptr %21, i64 8 @@ -1188,7 +1188,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17h4ec7f269a9a62422E.exit150: %.sroa.393.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.393.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.393, i64 16, i1 false) store i64 -9223372036854775808, ptr %0, align 8 - br label %258 + br label %257 _ZN12clap_builder6parser5error12MatchesError6unwrap17h4ec7f269a9a62422E.exit150.thread: ; preds = %111, %_ZN12clap_builder6parser5error12MatchesError6unwrap17h4ec7f269a9a62422E.exit.thread, %153 %.not126217 = phi i1 [ true, %153 ], [ false, %_ZN12clap_builder6parser5error12MatchesError6unwrap17h4ec7f269a9a62422E.exit.thread ], [ false, %111 ] @@ -1207,7 +1207,7 @@ switch.lookup: ; preds = %_ZN12clap_builder6p %.0.i = load i64, ptr %161, align 8, !alias.scope !327, !noundef !14 %162 = add i64 %.0.i, %.2120 %163 = uitofp i64 %162 to double - %164 = sext i8 %.0 to i64 + %164 = zext nneg i8 %.0 to i64 %switch.gep251 = getelementptr inbounds [3 x double], ptr @switch.table._ZN8uu_split9filenames6Suffix4from17hdfe9b0fbe74a9db0E.9, i64 0, i64 %164 %switch.load252 = load double, ptr %switch.gep251, align 8 %165 = tail call noundef double @llvm.log.f64(double %163) @@ -1323,7 +1323,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17h4ec7f269a9a62422E.exit172: %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store i64 %169, ptr %.sroa.4.0..sroa_idx, align 8 store i64 -9223372036854775808, ptr %0, align 8 - br label %258 + br label %257 213: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i", %_ZN12clap_builder6parser5error12MatchesError6unwrap17h4ec7f269a9a62422E.exit172 %214 = phi ptr [ %252, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i" ], [ %207, %_ZN12clap_builder6parser5error12MatchesError6unwrap17h4ec7f269a9a62422E.exit172 ] @@ -1387,30 +1387,29 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17h4ec7f269a9a62422E.exit172: %252 = phi ptr [ %243, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i" ], [ %217, %230 ], [ %233, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h26c09d78045e5b82E.exit15.i.i.i" ], [ %223, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h26c09d78045e5b82E.exit13.i.i.i" ] %253 = phi i32 [ %251, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i" ], [ %231, %230 ], [ %240, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h26c09d78045e5b82E.exit15.i.i.i" ], [ %228, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h26c09d78045e5b82E.exit13.i.i.i" ] %.not.i173 = icmp eq i32 %253, 47 - br i1 %.not.i173, label %256, label %213 + br i1 %.not.i173, label %255, label %213 254: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i", %213 - %255 = and i8 %.4, 1 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %20, i64 24, i1 false) %.sroa.247.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 store i64 %spec.store.select6, ptr %.sroa.247.0..sroa_idx, align 8 %.sroa.348.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 32 store i64 %.2120, ptr %.sroa.348.0..sroa_idx, align 8 %.sroa.449.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 40 - store i8 %255, ptr %.sroa.449.0..sroa_idx, align 8 + store i8 %.4, ptr %.sroa.449.0..sroa_idx, align 8 %.sroa.550.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 41 store i8 %.0, ptr %.sroa.550.0..sroa_idx, align 1 - br label %258 + br label %257 -256: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i" - %257 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 1, ptr %257, align 8 +255: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i" + %256 = getelementptr inbounds i8, ptr %0, i64 8 + store i64 1, ptr %256, align 8 %.sroa.444.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.444.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %20, i64 24, i1 false) store i64 -9223372036854775808, ptr %0, align 8 - br label %258 + br label %257 -258: ; preds = %156, %211, %256, %151, %146, %254 +257: ; preds = %156, %211, %255, %151, %146, %254 ret void } diff --git a/bench/cpython/optimized/initconfig.ll b/bench/cpython/optimized/initconfig.ll index bcfdad933b5..62ea6f8f05c 100644 --- a/bench/cpython/optimized/initconfig.ll +++ b/bench/cpython/optimized/initconfig.ll @@ -6737,7 +6737,7 @@ if.end14.i: ; preds = %if.then10.i, %if.en if.then17.i121: ; preds = %if.end14.i %76 = load ptr, ptr %stdio_encoding.i, align 8, !noalias !201 %cmp19.i = icmp eq ptr %76, null - br i1 %cmp19.i, label %if.then20.i, label %if.end26.i + br i1 %cmp19.i, label %if.then20.i, label %if.end30.i if.then20.i: ; preds = %if.then17.i121 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %status.i.i113), !noalias !201 @@ -6777,7 +6777,7 @@ config_set_bytes_string.exit.i: ; preds = %if.then2.i.i154 store ptr %call.i43.i155, ptr %stdio_encoding.i, align 8, !noalias !204 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %status.i.i113), !noalias !201 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %len.i.i), !noalias !201 - br label %if.end26.i + br label %if.end30.i if.then24.i: ; preds = %if.then4.i.i157, %if.then.i.i141 %tmp.sroa.0.0.ph.i145 = phi i32 [ %77, %if.then.i.i141 ], [ 1, %if.then4.i.i157 ] @@ -6791,13 +6791,8 @@ if.then24.i: ; preds = %if.then4.i.i157, %i call void @PyMem_RawFree(ptr noundef nonnull %call3.i) #21, !noalias !201 br label %if.then55 -if.end26.i: ; preds = %config_set_bytes_string.exit.i, %if.then17.i121 - %tobool27.not.i = icmp eq ptr %errors.0.i, null - %spec.store.select1.i = select i1 %tobool27.not.i, ptr @.str.179, ptr %errors.0.i - br label %if.end30.i - -if.end30.i: ; preds = %if.end26.i, %if.end14.i - %errors.1.i = phi ptr [ %spec.store.select1.i, %if.end26.i ], [ %errors.0.i, %if.end14.i ] +if.end30.i: ; preds = %config_set_bytes_string.exit.i, %if.then17.i121, %if.end14.i + %errors.1.i = phi ptr [ %errors.0.i, %if.end14.i ], [ @.str.179, %config_set_bytes_string.exit.i ], [ @.str.179, %if.then17.i121 ] %stdio_errors31.i = getelementptr inbounds i8, ptr %config, i64 240 %80 = load ptr, ptr %stdio_errors31.i, align 8, !noalias !201 %cmp32.i = icmp eq ptr %80, null diff --git a/bench/csmith/optimized/PartialExpander.cpp.ll b/bench/csmith/optimized/PartialExpander.cpp.ll index 2adc6e6029d..401f2500622 100644 --- a/bench/csmith/optimized/PartialExpander.cpp.ll +++ b/bench/csmith/optimized/PartialExpander.cpp.ll @@ -319,60 +319,37 @@ _ZN15PartialExpander12copy_expandsERSt3mapI14eStatementTypebSt4lessIS1_ESaISt4pa define dso_local noundef zeroext i1 @_ZN15PartialExpander13parse_optionsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEc(ptr noundef nonnull align 8 dereferenceable(32) %0, i8 noundef signext %1) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 { %3 = alloca %"class.std::__cxx11::basic_string", align 8 %4 = alloca %"class.std::__cxx11::basic_string", align 8 - br label %5 - -5: ; preds = %10, %2 - %.015 = phi i64 [ 0, %2 ], [ %.1, %10 ] - %6 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEcm(ptr noundef nonnull align 8 dereferenceable(32) %0, i8 noundef signext %1, i64 noundef %.015) #16 - %7 = sub i64 %6, %.015 - call void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %3, ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %.015, i64 noundef %7) + %5 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEcm(ptr noundef nonnull align 8 dereferenceable(32) %0, i8 noundef signext %1, i64 noundef 0) #16 + call void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %3, ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef 0, i64 noundef %5) invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %3) - to label %8 unwind label %13 + to label %6 unwind label %10 -8: ; preds = %5 - %9 = invoke noundef zeroext i1 @_ZN15PartialExpander10set_expandENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull %4) - to label %10 unwind label %15 +6: ; preds = %2 + %7 = invoke noundef zeroext i1 @_ZN15PartialExpander10set_expandENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull %4) + to label %8 unwind label %12 -10: ; preds = %8 +8: ; preds = %6 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #16 - %11 = icmp eq i64 %6, -1 - %12 = add nuw i64 %6, 1 - %spec.select = select i1 %11, i64 -1, i64 %12 - %spec.select21 = select i1 %11, i32 3, i32 0 - %.1 = select i1 %9, i64 %spec.select, i64 %6 - %.0 = select i1 %9, i32 %spec.select21, i32 1 + %9 = icmp eq i64 %5, -1 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #16 - switch i32 %.0, label %18 [ - i32 0, label %5 - i32 1, label %.loopexit.loopexit - i32 3, label %.loopexit - ], !llvm.loop !9 - -13: ; preds = %5 - %14 = landingpad { ptr, i32 } + %switch = and i1 %9, %7 + ret i1 %switch + +10: ; preds = %2 + %11 = landingpad { ptr, i32 } cleanup - br label %17 + br label %14 -15: ; preds = %8 - %16 = landingpad { ptr, i32 } +12: ; preds = %6 + %13 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #16 - br label %17 + br label %14 -17: ; preds = %15, %13 - %.pn = phi { ptr, i32 } [ %16, %15 ], [ %14, %13 ] +14: ; preds = %12, %10 + %.pn = phi { ptr, i32 } [ %13, %12 ], [ %11, %10 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #16 resume { ptr, i32 } %.pn - -.loopexit.loopexit: ; preds = %10 - br label %.loopexit - -.loopexit: ; preds = %10, %.loopexit.loopexit - %.2 = phi i1 [ false, %.loopexit.loopexit ], [ true, %10 ] - ret i1 %.2 - -18: ; preds = %10 - unreachable } ; Function Attrs: mustprogress uwtable @@ -774,7 +751,7 @@ define linkonce_odr dso_local void @_ZNSt8_Rb_treeI14eStatementTypeSt4pairIKS0_b %6 = load ptr, ptr %5, align 8 tail call void @_ZdlPv(ptr noundef nonnull %.07) #17 %.not = icmp eq ptr %6, null - br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !10 + br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !9 ._crit_edge: ; preds = %.lr.ph, %2 ret void @@ -826,7 +803,7 @@ define linkonce_odr dso_local { ptr, ptr } @_ZNSt8_Rb_treeI14eStatementTypeSt4pa %.in.i = getelementptr inbounds i8, ptr %.02024.i, i64 %.in.v.i %.020.i = load ptr, ptr %.in.i, align 8 %.not.i = icmp eq ptr %.020.i, null - br i1 %.not.i, label %._crit_edge.i, label %19, !llvm.loop !11 + br i1 %.not.i, label %._crit_edge.i, label %19, !llvm.loop !10 ._crit_edge.i: ; preds = %19 br i1 %22, label %._crit_edge.thread.i, label %28 @@ -898,7 +875,7 @@ define linkonce_odr dso_local { ptr, ptr } @_ZNSt8_Rb_treeI14eStatementTypeSt4pa %.in.i15 = getelementptr inbounds i8, ptr %.02024.i13, i64 %.in.v.i14 %.020.i16 = load ptr, ptr %.in.i15, align 8 %.not.i17 = icmp eq ptr %.020.i16, null - br i1 %.not.i17, label %._crit_edge.i18, label %.lr.ph.i12, !llvm.loop !11 + br i1 %.not.i17, label %._crit_edge.i18, label %.lr.ph.i12, !llvm.loop !10 ._crit_edge.i18: ; preds = %.lr.ph.i12 br i1 %54, label %._crit_edge.thread.i27, label %58 @@ -963,7 +940,7 @@ define linkonce_odr dso_local { ptr, ptr } @_ZNSt8_Rb_treeI14eStatementTypeSt4pa %.in.i35 = getelementptr inbounds i8, ptr %.02024.i33, i64 %.in.v.i34 %.020.i36 = load ptr, ptr %.in.i35, align 8 %.not.i37 = icmp eq ptr %.020.i36, null - br i1 %.not.i37, label %._crit_edge.i38, label %.lr.ph.i32, !llvm.loop !11 + br i1 %.not.i37, label %._crit_edge.i38, label %.lr.ph.i32, !llvm.loop !10 ._crit_edge.i38: ; preds = %.lr.ph.i32 br i1 %80, label %._crit_edge.thread.i47, label %86 @@ -1067,4 +1044,3 @@ attributes #17 = { builtin nounwind } !8 = distinct !{!8, !6} !9 = distinct !{!9, !6} !10 = distinct !{!10, !6} -!11 = distinct !{!11, !6} diff --git a/bench/curl/optimized/libcurl_la-mime.ll b/bench/curl/optimized/libcurl_la-mime.ll index af7185d07d6..6757c866313 100644 --- a/bench/curl/optimized/libcurl_la-mime.ll +++ b/bench/curl/optimized/libcurl_la-mime.ll @@ -68,7 +68,6 @@ target triple = "x86_64-unknown-linux-gnu" @.str.47 = private unnamed_addr constant [5 x i8] c"\0D%0D\00", align 1 @.str.48 = private unnamed_addr constant [5 x i8] c"\0A%0A\00", align 1 @.str.49 = private unnamed_addr constant [21 x i8] c"Content-Type: %s%s%s\00", align 1 -@.str.50 = private unnamed_addr constant [12 x i8] c"; boundary=\00", align 1 ; Function Attrs: nounwind uwtable define hidden void @Curl_mime_cleanpart(ptr noundef %part) local_unnamed_addr #0 { @@ -2605,9 +2604,6 @@ if.end25: ; preds = %for.inc.i137, %Curl if.then28: ; preds = %if.end25 %arg = getelementptr inbounds i8, ptr %part, i64 56 %21 = load ptr, ptr %arg, align 8 - %tobool29.not = icmp eq ptr %21, null - %boundary31 = getelementptr inbounds i8, ptr %21, i64 24 - %spec.select92 = select i1 %tobool29.not, ptr null, ptr %boundary31 br label %if.end45 if.else: ; preds = %if.end25 @@ -2648,7 +2644,6 @@ if.then42: ; preds = %lor.lhs.false, %if. if.end45: ; preds = %if.then.i145, %land.lhs.true.i142, %if.then28, %if.else, %if.then42, %lor.lhs.false %contenttype.addr.3 = phi ptr [ %contenttype.addr.1, %if.else ], [ null, %if.then42 ], [ %contenttype.addr.1, %lor.lhs.false ], [ %contenttype.addr.1, %if.then28 ], [ %contenttype.addr.1, %land.lhs.true.i142 ], [ %contenttype.addr.1, %if.then.i145 ] %mime.0 = phi ptr [ null, %if.else ], [ null, %if.then42 ], [ null, %lor.lhs.false ], [ %21, %if.then28 ], [ null, %land.lhs.true.i142 ], [ null, %if.then.i145 ] - %boundary.0 = phi ptr [ null, %if.else ], [ null, %if.then42 ], [ null, %lor.lhs.false ], [ %spec.select92, %if.then28 ], [ null, %land.lhs.true.i142 ], [ null, %if.then.i145 ] %userheaders46 = getelementptr inbounds i8, ptr %part, i64 80 %24 = load ptr, ptr %userheaders46, align 8 %tobool14.not.i148 = icmp eq ptr %24, null @@ -2766,10 +2761,7 @@ if.end125: ; preds = %land.lhs.true.i.i15 br i1 %tobool126.not, label %if.end133, label %if.then127 if.then127: ; preds = %land.lhs.true58, %if.end125 - %tobool.not.i167 = icmp eq ptr %boundary.0, null - %cond.i = select i1 %tobool.not.i167, ptr @.str.26, ptr @.str.50 - %cond2.i = select i1 %tobool.not.i167, ptr @.str.26, ptr %boundary.0 - %call.i168 = tail call range(i32 0, 28) i32 (ptr, ptr, ...) @Curl_mime_add_header(ptr noundef nonnull %curlheaders, ptr noundef nonnull @.str.49, ptr noundef nonnull %contenttype.addr.3, ptr noundef nonnull %cond.i, ptr noundef nonnull %cond2.i) + %call.i168 = tail call range(i32 0, 28) i32 (ptr, ptr, ...) @Curl_mime_add_header(ptr noundef nonnull %curlheaders, ptr noundef nonnull @.str.49, ptr noundef nonnull %contenttype.addr.3, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.26) %tobool130.not = icmp eq i32 %call.i168, 0 br i1 %tobool130.not, label %if.end133, label %return diff --git a/bench/cvc5/optimized/monomial.cpp.ll b/bench/cvc5/optimized/monomial.cpp.ll index 00e3eea8fb5..e5a754abca7 100644 --- a/bench/cvc5/optimized/monomial.cpp.ll +++ b/bench/cvc5/optimized/monomial.cpp.ll @@ -1109,10 +1109,6 @@ _ZSt4findIN9__gnu_cxx17__normal_iteratorIPKN4cvc58internal12NodeTemplateILb1EEES %retval.sroa.0.0.in.sroa.speculated.i.i.i = phi ptr [ %__first.sroa.0.0.lcssa.i.i.i, %sw.bb.i.i.i ], [ %__first.sroa.0.1.i.i.i, %sw.bb31.i.i.i ], [ %.pre651, %for.end.i.i.i ], [ %spec.select.i.i.i, %sw.bb38.i.i.i ], [ %incdec.ptr.i.i.i.i.le, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit.loopexit.split.loop.exit ], [ %incdec.ptr.i10.i.i.i.le, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit.loopexit.split.loop.exit659 ], [ %incdec.ptr.i12.i.i.i.le, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit.loopexit.split.loop.exit661 ], [ %__first.sroa.0.051.i.i.i, %for.body.i.i.i ] %cmp.i65 = icmp eq ptr %retval.sroa.0.0.in.sroa.speculated.i.i.i, %.pre651 %cond47 = select i1 %cmp.i65, i32 %cond, i32 %cond45 - %cmp48.not = icmp eq i32 %cond47, -2 - br i1 %cmp48.not, label %for.inc, label %if.then49 - -if.then49: ; preds = %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit %second = getelementptr inbounds i8, ptr %it.sroa.0.0639, i64 40 %35 = load ptr, ptr %n, align 8 store ptr %35, ptr %agg.tmp51, align 8 @@ -1123,7 +1119,7 @@ if.then49: ; preds = %_ZSt4findIN9__gnu_c %cmp.i.i70 = icmp samesign ult i32 %bf.cast.i.i69, 1048574 br i1 %cmp.i.i70, label %if.then.i.i75, label %if.else.i.i71 -if.then.i.i75: ; preds = %if.then49 +if.then.i.i75: ; preds = %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit %bf.value.i.i76 = add i64 %bf.load.i.i67, 1099511627776 %bf.shl.i.i77 = and i64 %bf.value.i.i76, 1152920405095219200 %bf.clear7.i.i78 = and i64 %bf.load.i.i67, -1152920405095219201 @@ -1131,7 +1127,7 @@ if.then.i.i75: ; preds = %if.then49 store i64 %bf.set.i.i79, ptr %35, align 8 br label %_ZN4cvc58internal12NodeTemplateILb1EEC2ERKS2_.exit80 -if.else.i.i71: ; preds = %if.then49 +if.else.i.i71: ; preds = %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit %cmp12.i.i72 = icmp eq i32 %bf.cast.i.i69, 1048574 br i1 %cmp12.i.i72, label %if.then13.i.i73, label %_ZN4cvc58internal12NodeTemplateILb1EEC2ERKS2_.exit80 @@ -1177,7 +1173,7 @@ lpad52: ; preds = %_ZN4cvc58internal12 cleanup br label %eh.resume -for.inc: ; preds = %if.then13.i.i89, %if.then.i.i83, %invoke.cont53, %lor.lhs.false18, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit +for.inc: ; preds = %if.then13.i.i89, %if.then.i.i83, %invoke.cont53, %lor.lhs.false18 %call.i = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef %it.sroa.0.0639) #24 %cmp.i.not = icmp eq ptr %call.i, %add.ptr.i.i br i1 %cmp.i.not, label %for.cond57.preheader, label %for.body, !llvm.loop !12 diff --git a/bench/cvc5/optimized/sequences_rewriter.cpp.ll b/bench/cvc5/optimized/sequences_rewriter.cpp.ll index 957c3a3a9c1..ea4fc1da3f9 100644 --- a/bench/cvc5/optimized/sequences_rewriter.cpp.ll +++ b/bench/cvc5/optimized/sequences_rewriter.cpp.ll @@ -5047,13 +5047,18 @@ for.cond179.preheader.us.preheader: ; preds = %for.end164 %wide.trip.count = and i64 %.sroa.speculated, 4294967295 br label %for.cond179.preheader.us -for.cond179.preheader.us: ; preds = %for.cond179.preheader.us.preheader, %for.inc321.us - %cmp182.us = phi i1 [ false, %for.inc321.us ], [ true, %for.cond179.preheader.us.preheader ] - %cmp235.not.us = phi i1 [ true, %for.inc321.us ], [ false, %for.cond179.preheader.us.preheader ] +for.cond179.preheader.us: ; preds = %for.cond179.preheader.us.preheader, %for.cond179.for.inc321_crit_edge.us + %cmp182.us = phi i1 [ false, %for.cond179.for.inc321_crit_edge.us ], [ true, %for.cond179.preheader.us.preheader ] + %cmp235.not.us = phi i1 [ true, %for.cond179.for.inc321_crit_edge.us ], [ false, %for.cond179.preheader.us.preheader ] br label %for.body181.us -for.body181.us: ; preds = %for.cond179.preheader.us, %for.inc318.us - %indvars.iv3036 = phi i64 [ 0, %for.cond179.preheader.us ], [ %indvars.iv.next3037, %for.inc318.us ] +for.cond179.us: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit1129.us + %indvars.iv.next3037 = add nuw nsw i64 %indvars.iv3036, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next3037, %wide.trip.count + br i1 %exitcond.not, label %for.cond179.for.inc321_crit_edge.us, label %for.body181.us, !llvm.loop !78 + +for.body181.us: ; preds = %for.cond179.preheader.us, %for.cond179.us + %indvars.iv3036 = phi i64 [ 0, %for.cond179.preheader.us ], [ %indvars.iv.next3037, %for.cond179.us ] %.pre = load ptr, ptr %c, align 16 br i1 %cmp182.us, label %cond.end199.us, label %cond.false193.us @@ -5317,11 +5322,10 @@ if.end307.us: ; preds = %cleanup.done283.us, %198 = load ptr, ptr %s, align 8 %199 = load ptr, ptr %t, align 8 %cmp.i1107.not.us = icmp eq ptr %198, %199 - %..us = select i1 %cmp.i1107.not.us, i32 0, i32 14 br label %cleanup312.us cleanup312.us: ; preds = %if.end307.us, %if.then13.i.i1104.us, %if.then.i.i1098.us, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit1095.us - %cleanup.dest.slot.1.us = phi i32 [ %..us, %if.end307.us ], [ 1, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit1095.us ], [ 1, %if.then.i.i1098.us ], [ 1, %if.then13.i.i1104.us ] + %cleanup.dest.slot.1.us = phi i1 [ %cmp.i1107.not.us, %if.end307.us ], [ false, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit1095.us ], [ false, %if.then.i.i1098.us ], [ false, %if.then13.i.i1104.us ] %200 = load ptr, ptr %t, align 8 %bf.load.i.i1108.us = load i64, ptr %200, align 8 %201 = and i64 %bf.load.i.i1108.us, 1152920405095219200 @@ -5362,18 +5366,10 @@ if.then13.i.i1127.us: ; preds = %if.then.i.i1121.us to label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit1129.us unwind label %terminate.lpad.i1128.split.us _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit1129.us: ; preds = %if.then13.i.i1127.us, %if.then.i.i1121.us, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit1118.us - switch i32 %cleanup.dest.slot.1.us, label %arraydestroy.body2067.preheader [ - i32 0, label %for.inc318.us - i32 14, label %for.inc321.us - ] + br i1 %cleanup.dest.slot.1.us, label %for.cond179.us, label %arraydestroy.body2067.preheader -for.inc321.us: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit1129.us, %for.inc318.us - br i1 %cmp182.us, label %for.cond179.preheader.us, label %for.end323, !llvm.loop !78 - -for.inc318.us: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit1129.us - %indvars.iv.next3037 = add nuw nsw i64 %indvars.iv3036, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next3037, %wide.trip.count - br i1 %exitcond.not, label %for.inc321.us, label %for.body181.us, !llvm.loop !79 +for.cond179.for.inc321_crit_edge.us: ; preds = %for.cond179.us + br i1 %cmp182.us, label %for.cond179.preheader.us, label %for.end323, !llvm.loop !79 lpad157.loopexit.split.us: ; preds = %if.then13.i.i1019.us %lpad.loopexit2864.us = landingpad { ptr, i32 } @@ -5481,7 +5477,7 @@ ehcleanup317: ; preds = %ehcleanup313, %lpad call void @_ZN4cvc58internal12NodeTemplateILb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %s) #23 br label %ehcleanup2072 -for.end323: ; preds = %for.inc321.us, %for.end164 +for.end323: ; preds = %for.cond179.for.inc321_crit_edge.us, %for.end164 invoke void @_ZN4cvc58internal12NodeTemplateILb1EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %new_ret) to label %for.cond326.preheader unwind label %lpad157.loopexit.split-lp.loopexit.split-lp diff --git a/bench/cvc5/optimized/theory_sets_private.cpp.ll b/bench/cvc5/optimized/theory_sets_private.cpp.ll index df4e7c27851..e71a6c3f360 100644 --- a/bench/cvc5/optimized/theory_sets_private.cpp.ll +++ b/bench/cvc5/optimized/theory_sets_private.cpp.ll @@ -16731,12 +16731,10 @@ terminate.lpad.i330: ; preds = %if.then13.i.i329 unreachable _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit331: ; preds = %cleanup101, %if.then.i.i322, %if.then13.i.i329 - switch i32 %cleanup.dest.slot.0, label %cleanup104.loopexit [ - i32 0, label %for.inc - i32 5, label %for.inc - ] + %cond = icmp eq i32 %cleanup.dest.slot.0, 5 + br i1 %cond, label %for.inc, label %cleanup104.loopexit -for.inc: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit331, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit331 +for.inc: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit331 %call.i332 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %__begin4.sroa.0.0383) #27 %cmp.i.not = icmp eq ptr %call.i332, %add.ptr.i.i104 br i1 %cmp.i.not, label %cleanup104.loopexit, label %for.body31 diff --git a/bench/darktable/optimized/export_metadata.c.ll b/bench/darktable/optimized/export_metadata.c.ll index 7b30d1bf8ef..068048e805f 100644 --- a/bench/darktable/optimized/export_metadata.c.ll +++ b/bench/darktable/optimized/export_metadata.c.ll @@ -375,7 +375,7 @@ define hidden ptr @dt_lib_export_metadata_configuration_dialog(ptr noundef %0, i %207 = call ptr @g_type_check_instance_cast(ptr noundef %16, i64 noundef %17) #9 %208 = call i32 @gtk_dialog_run(ptr noundef %207) #9 %209 = icmp eq i32 %208, -3 - br i1 %209, label %210, label %284 + br i1 %209, label %210, label %280 210: ; preds = %194 %211 = call ptr @g_type_check_instance_cast(ptr noundef %42, i64 noundef %164) #9 @@ -425,60 +425,56 @@ define hidden ptr @dt_lib_export_metadata_configuration_dialog(ptr noundef %0, i %255 = icmp eq i32 %254, 0 %256 = select i1 %255, i32 0, i32 32 %257 = or i32 %252, %256 - br i1 %49, label %258, label %263 + br i1 %49, label %258, label %261 258: ; preds = %210 %259 = call ptr @g_type_check_instance_cast(ptr noundef %60, i64 noundef %164) #9 %260 = call i32 @gtk_toggle_button_get_active(ptr noundef %259) #9 - %261 = icmp eq i32 %260, 0 - %262 = select i1 %261, i32 0, i32 524288 - br label %263 - -263: ; preds = %258, %210 - %264 = phi i32 [ %262, %258 ], [ 0, %210 ] - %265 = or i32 %257, %264 - %266 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.38, i32 noundef %265) #9 + br label %261 + +261: ; preds = %258, %210 + %262 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.38, i32 noundef %257) #9 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #9 - %267 = load ptr, ptr %134, align 8, !tbaa !31 - %268 = call ptr @g_type_check_instance_cast(ptr noundef %267, i64 noundef %137) #9 - %269 = call i32 @gtk_tree_model_get_iter_first(ptr noundef %268, ptr noundef nonnull %4) #9 - %270 = icmp eq i32 %269, 0 - br i1 %270, label %.loopexit, label %.preheader - -.preheader: ; preds = %263, %.preheader - %271 = phi ptr [ %276, %.preheader ], [ %266, %263 ] + %263 = load ptr, ptr %134, align 8, !tbaa !31 + %264 = call ptr @g_type_check_instance_cast(ptr noundef %263, i64 noundef %137) #9 + %265 = call i32 @gtk_tree_model_get_iter_first(ptr noundef %264, ptr noundef nonnull %4) #9 + %266 = icmp eq i32 %265, 0 + br i1 %266, label %.loopexit, label %.preheader + +.preheader: ; preds = %261, %.preheader + %267 = phi ptr [ %272, %.preheader ], [ %262, %261 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #9 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #9 - %272 = load ptr, ptr %134, align 8, !tbaa !31 - %273 = call ptr @g_type_check_instance_cast(ptr noundef %272, i64 noundef %137) #9 - call void (ptr, ptr, ...) @gtk_tree_model_get(ptr noundef %273, ptr noundef nonnull %4, i32 noundef 0, ptr noundef nonnull %5, i32 noundef 2, ptr noundef nonnull %6, i32 noundef -1) #9 - %274 = load ptr, ptr %5, align 8, !tbaa !36 - %275 = load ptr, ptr %6, align 8, !tbaa !36 - %276 = call ptr (ptr, ptr, ...) @dt_util_dstrcat(ptr noundef %271, ptr noundef nonnull @.str.39, ptr noundef %274, ptr noundef %275) #9 - %277 = load ptr, ptr %5, align 8, !tbaa !36 - call void @g_free(ptr noundef %277) #9 - %278 = load ptr, ptr %6, align 8, !tbaa !36 - call void @g_free(ptr noundef %278) #9 - %279 = load ptr, ptr %134, align 8, !tbaa !31 - %280 = call ptr @g_type_check_instance_cast(ptr noundef %279, i64 noundef %137) #9 - %281 = call i32 @gtk_tree_model_iter_next(ptr noundef %280, ptr noundef nonnull %4) #9 + %268 = load ptr, ptr %134, align 8, !tbaa !31 + %269 = call ptr @g_type_check_instance_cast(ptr noundef %268, i64 noundef %137) #9 + call void (ptr, ptr, ...) @gtk_tree_model_get(ptr noundef %269, ptr noundef nonnull %4, i32 noundef 0, ptr noundef nonnull %5, i32 noundef 2, ptr noundef nonnull %6, i32 noundef -1) #9 + %270 = load ptr, ptr %5, align 8, !tbaa !36 + %271 = load ptr, ptr %6, align 8, !tbaa !36 + %272 = call ptr (ptr, ptr, ...) @dt_util_dstrcat(ptr noundef %267, ptr noundef nonnull @.str.39, ptr noundef %270, ptr noundef %271) #9 + %273 = load ptr, ptr %5, align 8, !tbaa !36 + call void @g_free(ptr noundef %273) #9 + %274 = load ptr, ptr %6, align 8, !tbaa !36 + call void @g_free(ptr noundef %274) #9 + %275 = load ptr, ptr %134, align 8, !tbaa !31 + %276 = call ptr @g_type_check_instance_cast(ptr noundef %275, i64 noundef %137) #9 + %277 = call i32 @gtk_tree_model_iter_next(ptr noundef %276, ptr noundef nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9 - %282 = icmp eq i32 %281, 0 - br i1 %282, label %.loopexit, label %.preheader + %278 = icmp eq i32 %277, 0 + br i1 %278, label %.loopexit, label %.preheader -.loopexit: ; preds = %.preheader, %263 - %283 = phi ptr [ %266, %263 ], [ %276, %.preheader ] +.loopexit: ; preds = %.preheader, %261 + %279 = phi ptr [ %262, %261 ], [ %272, %.preheader ] call void @g_free(ptr noundef %0) #9 - call void @dt_lib_export_metadata_set_conf(ptr noundef %283) #9 + call void @dt_lib_export_metadata_set_conf(ptr noundef %279) #9 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #9 - br label %284 + br label %280 -284: ; preds = %.loopexit, %194 - %285 = phi ptr [ %283, %.loopexit ], [ %0, %194 ] +280: ; preds = %.loopexit, %194 + %281 = phi ptr [ %279, %.loopexit ], [ %0, %194 ] call void @gtk_widget_destroy(ptr noundef %16) #9 call void @free(ptr noundef nonnull %7) #9 - ret ptr %285 + ret ptr %281 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) diff --git a/bench/delta-rs/optimized/yhu8pdn9ocvwhg1.ll b/bench/delta-rs/optimized/yhu8pdn9ocvwhg1.ll index eb5cda5ebec..5c9b0017ac2 100644 --- a/bench/delta-rs/optimized/yhu8pdn9ocvwhg1.ll +++ b/bench/delta-rs/optimized/yhu8pdn9ocvwhg1.ll @@ -31415,7 +31415,7 @@ define internal { ptr, i64 } @"_ZN223_$LT$$LT$alloc..boxed..Box$LT$dyn$u20$core. } ; Function Attrs: inlinehint nonlazybind uwtable -define internal fastcc noundef align 8 dereferenceable_or_null(24) ptr @"_ZN3std11collections4hash3map24HashMap$LT$K$C$V$C$S$GT$3get17hb839f00579ca0462E"(ptr noalias nocapture noundef nonnull readonly align 8 dereferenceable(48) %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) unnamed_addr #0 personality ptr @rust_eh_personality { +define internal fastcc noalias noundef align 8 dereferenceable_or_null(24) ptr @"_ZN3std11collections4hash3map24HashMap$LT$K$C$V$C$S$GT$3get17hb839f00579ca0462E"(ptr noalias nocapture noundef nonnull readonly align 8 dereferenceable(48) %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) unnamed_addr #0 personality ptr @rust_eh_personality { %4 = alloca { i64, i64, i64, i64 }, align 8 %5 = alloca [8 x i8], align 8 %6 = alloca { { { { i64, i64, i64, i64 }, i64, i64, i64, i64, i64, {} } } }, align 8 @@ -31517,7 +31517,7 @@ define internal fastcc noundef align 8 dereferenceable_or_null(24) ptr @"_ZN3std %49 = icmp eq <16 x i8> %.0.copyload.i25.i.i.i, %50 = bitcast <16 x i1> %49 to i16 %.not.i.i.i.i = icmp eq i16 %50, 0 - br i1 %.not.i.i.i.i, label %64, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hf258910119b77dfeE.exit.i" + br i1 %.not.i.i.i.i, label %64, label %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h5da542e5600089dbE.exit" .lr.ph.i.i.i: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17ha38e1170676f4c29E.exit.backedge.i.i.i", %.lr.ph.preheader.i.i.i %51 = phi i16 [ %63, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17ha38e1170676f4c29E.exit.backedge.i.i.i" ], [ %48, %.lr.ph.preheader.i.i.i ] @@ -31538,7 +31538,7 @@ define internal fastcc noundef align 8 dereferenceable_or_null(24) ptr @"_ZN3std %.val5.i.i.i.i = load ptr, ptr %60, align 8, !noalias !4250, !nonnull !5, !noundef !5 %bcmp.i.i.i.i.i.i.i.i = call i32 @bcmp(ptr nonnull readonly align 1 %1, ptr nonnull readonly align 1 %.val5.i.i.i.i, i64 %2), !alias.scope !4251, !noalias !4258 %61 = icmp eq i32 %bcmp.i.i.i.i.i.i.i.i, 0 - br i1 %61, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hf258910119b77dfeE.exit.i", label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17ha38e1170676f4c29E.exit.backedge.i.i.i" + br i1 %61, label %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h5da542e5600089dbE.exit", label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17ha38e1170676f4c29E.exit.backedge.i.i.i" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17ha38e1170676f4c29E.exit.backedge.i.i.i": ; preds = %59, %.lr.ph.i.i.i %.not.i4.not.i.i.i = icmp eq i16 %51, 0 @@ -31551,19 +31551,8 @@ define internal fastcc noundef align 8 dereferenceable_or_null(24) ptr @"_ZN3std %66 = add i64 %.sroa.01.0.i.i.i.i, %65 br label %43 -"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hf258910119b77dfeE.exit.i": ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17ha38e1170676f4c29E.exit._crit_edge.i.i.i", %59 - %.0.i.i.i = phi ptr [ %57, %59 ], [ null, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17ha38e1170676f4c29E.exit._crit_edge.i.i.i" ] - %67 = icmp eq ptr %.0.i.i.i, null - %68 = getelementptr inbounds i8, ptr %.0.i.i.i, i64 -48 - %.0.i.i = select i1 %67, ptr null, ptr %68 - br label %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h5da542e5600089dbE.exit" - -"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h5da542e5600089dbE.exit": ; preds = %3, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hf258910119b77dfeE.exit.i" - %.03.i = phi ptr [ %.0.i.i, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hf258910119b77dfeE.exit.i" ], [ null, %3 ] - %69 = icmp eq ptr %.03.i, null - %70 = getelementptr inbounds i8, ptr %.03.i, i64 24 - %.0.i = select i1 %69, ptr null, ptr %70 - ret ptr %.0.i +"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h5da542e5600089dbE.exit": ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17ha38e1170676f4c29E.exit._crit_edge.i.i.i", %59, %3 + ret ptr null } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/diesel-rs/optimized/2nqojkvzec127ieh.ll b/bench/diesel-rs/optimized/2nqojkvzec127ieh.ll index a77a46ba0d3..128b20a1de2 100644 --- a/bench/diesel-rs/optimized/2nqojkvzec127ieh.ll +++ b/bench/diesel-rs/optimized/2nqojkvzec127ieh.ll @@ -3236,27 +3236,20 @@ define hidden void @"_ZN9hashbrown11rustc_entry62_$LT$impl$u20$hashbrown..map..H } ; Function Attrs: inlinehint nonlazybind uwtable -define hidden noundef align 4 dereferenceable_or_null(8) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h9350e7833c18f860E.llvm.5435959977682051014"(ptr noalias noundef readonly align 8 dereferenceable(48) %0, ptr noalias noundef readonly align 8 dereferenceable(48) %1) unnamed_addr #2 { +define hidden noalias noundef align 4 dereferenceable_or_null(8) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h9350e7833c18f860E.llvm.5435959977682051014"(ptr noalias noundef readonly align 8 dereferenceable(48) %0, ptr noalias noundef readonly align 8 dereferenceable(48) %1) unnamed_addr #2 { %3 = getelementptr inbounds i8, ptr %0, i64 24 %4 = load i64, ptr %3, align 8, !noundef !16 %5 = icmp eq i64 %4, 0 - br i1 %5, label %12, label %6 + br i1 %5, label %10, label %6 6: ; preds = %2 %7 = getelementptr inbounds i8, ptr %0, i64 32 %8 = tail call noundef i64 @_ZN4core4hash11BuildHasher8hash_one17hec0addd9ed09a606E(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %1) %9 = tail call noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h9a990ad0ab165f75E.llvm.5435959977682051014"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %0, i64 noundef %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %1) - %10 = icmp eq ptr %9, null - %11 = getelementptr inbounds i8, ptr %9, i64 -56 - %.0.i = select i1 %10, ptr null, ptr %11 - br label %12 - -12: ; preds = %2, %6 - %.04 = phi ptr [ %.0.i, %6 ], [ null, %2 ] - %13 = icmp eq ptr %.04, null - %14 = getelementptr inbounds i8, ptr %.04, i64 48 - %.0 = select i1 %13, ptr null, ptr %14 - ret ptr %.0 + br label %10 + +10: ; preds = %2, %6 + ret ptr null } ; Function Attrs: nonlazybind uwtable @@ -7283,32 +7276,16 @@ define void @_ZN6diesel2pg15metadata_lookup15PgMetadataCache11lookup_type17h1fa5 %4 = getelementptr inbounds i8, ptr %1, i64 24 %5 = load i64, ptr %4, align 8, !alias.scope !1536, !noalias !1539, !noundef !16 %6 = icmp eq i64 %5, 0 - br i1 %6, label %select.unfold, label %7 + br i1 %6, label %11, label %7 7: ; preds = %3 %8 = getelementptr inbounds i8, ptr %1, i64 32 %9 = tail call noundef i64 @_ZN4core4hash11BuildHasher8hash_one17hec0addd9ed09a606E(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %2) %10 = tail call noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h9a990ad0ab165f75E.llvm.5435959977682051014"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %1, i64 noundef %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %2) - %11 = icmp eq ptr %10, null - br i1 %11, label %select.unfold, label %12 - -12: ; preds = %7 - %13 = getelementptr inbounds i8, ptr %10, i64 -8 - %14 = load i32, ptr %13, align 4, !noundef !16 - %15 = getelementptr inbounds i8, ptr %10, i64 -4 - %16 = load i32, ptr %15, align 4, !noundef !16 - store i32 0, ptr %0, align 8 - %.sroa.0.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4 - store i32 %14, ptr %.sroa.0.sroa.5.0..sroa_idx, align 4 - %.sroa.0.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store i32 %16, ptr %.sroa.0.sroa.6.0..sroa_idx, align 8 - br label %17 + br label %11 -select.unfold: ; preds = %7, %3 +11: ; preds = %3, %7 store i32 2, ptr %0, align 8 - br label %17 - -17: ; preds = %select.unfold, %12 ret void } diff --git a/bench/diesel-rs/optimized/6dg2gvwvziet763.ll b/bench/diesel-rs/optimized/6dg2gvwvziet763.ll index a68d5dd221b..d4d21def5b4 100644 --- a/bench/diesel-rs/optimized/6dg2gvwvziet763.ll +++ b/bench/diesel-rs/optimized/6dg2gvwvziet763.ll @@ -2716,14 +2716,14 @@ define hidden noundef zeroext i1 @_ZN8bitflags6traits5Flags8is_empty17h0d3bca470 } ; Function Attrs: inlinehint nonlazybind uwtable -define internal fastcc noundef align 8 dereferenceable_or_null(24) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17ha4aa98a269a592fcE"(ptr noalias nocapture noundef nonnull readonly align 8 dereferenceable(48) %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef range(i64 6, 12) %2) unnamed_addr #2 personality ptr @rust_eh_personality { +define internal fastcc noalias noundef align 8 dereferenceable_or_null(24) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17ha4aa98a269a592fcE"(ptr noalias nocapture noundef nonnull readonly align 8 dereferenceable(48) %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef range(i64 6, 12) %2) unnamed_addr #2 personality ptr @rust_eh_personality { %4 = alloca { i64, i64, i64, i64 }, align 8 %5 = alloca [1 x i8], align 1 %6 = alloca { { { { i64, i64, i64, i64 }, i64, i64, i64, i64, i64, {} } } }, align 8 %7 = getelementptr inbounds i8, ptr %0, i64 24 %8 = load i64, ptr %7, align 8, !noundef !4 %9 = icmp eq i64 %8, 0 - br i1 %9, label %66, label %10 + br i1 %9, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hf84246296d855e82E.exit", label %10 10: ; preds = %3 %11 = getelementptr inbounds i8, ptr %0, i64 32 @@ -2845,19 +2845,8 @@ define internal fastcc noundef align 8 dereferenceable_or_null(24) ptr @"_ZN9has %63 = add i64 %.sroa.01.0.i.i.i, %62 br label %43 -"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hf84246296d855e82E.exit": ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h68003b7214c6c87aE.exit._crit_edge.i.i", %58 - %.0.i.i = phi ptr [ %56, %58 ], [ null, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h68003b7214c6c87aE.exit._crit_edge.i.i" ] - %64 = icmp eq ptr %.0.i.i, null - %65 = getelementptr inbounds i8, ptr %.0.i.i, i64 -48 - %.0.i = select i1 %64, ptr null, ptr %65 - br label %66 - -66: ; preds = %3, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hf84246296d855e82E.exit" - %.03 = phi ptr [ %.0.i, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hf84246296d855e82E.exit" ], [ null, %3 ] - %67 = icmp eq ptr %.03, null - %68 = getelementptr inbounds i8, ptr %.03, i64 24 - %.0 = select i1 %67, ptr null, ptr %68 - ret ptr %.0 +"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hf84246296d855e82E.exit": ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h68003b7214c6c87aE.exit._crit_edge.i.i", %58, %3 + ret ptr null } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable diff --git a/bench/double_conversion/optimized/bignum-dtoa.cc.ll b/bench/double_conversion/optimized/bignum-dtoa.cc.ll index 6c990a722fa..a2805db98b8 100644 --- a/bench/double_conversion/optimized/bignum-dtoa.cc.ll +++ b/bench/double_conversion/optimized/bignum-dtoa.cc.ll @@ -56,25 +56,22 @@ if.end: ; preds = %if.else, %if.then %lower_boundary_is_closer.0.in = phi i1 [ %2, %if.then ], [ %6, %if.else ] %exponent.0 = phi i32 [ %retval.0.i29, %if.then ], [ %retval.0.i40, %if.else ] %significand.0 = phi i64 [ %conv1, %if.then ], [ %retval.0.i35, %if.else ] - %7 = icmp ult i32 %mode, 2 %and = and i64 %significand.0, 1 - %cmp16 = icmp eq i64 %and, 0 - %and3.i = and i64 %significand.0, 4503599627370496 - %cmp4.i = icmp eq i64 %and3.i, 0 - br i1 %cmp4.i, label %while.body.i, label %_ZN17double_conversionL18NormalizedExponentEmi.exit + br label %while.body.i while.body.i: ; preds = %if.end, %while.body.i %exponent.addr.06.i = phi i32 [ %sub.i44, %while.body.i ], [ %exponent.0, %if.end ] %significand.addr.05.i = phi i64 [ %shl.i, %while.body.i ], [ %significand.0, %if.end ] %shl.i = shl i64 %significand.addr.05.i, 1 %sub.i44 = add nsw i32 %exponent.addr.06.i, -1 - %8 = and i64 %significand.addr.05.i, 2251799813685248 - %cmp.i45 = icmp eq i64 %8, 0 + %7 = and i64 %significand.addr.05.i, 2251799813685248 + %cmp.i45 = icmp eq i64 %7, 0 br i1 %cmp.i45, label %while.body.i, label %_ZN17double_conversionL18NormalizedExponentEmi.exit, !llvm.loop !4 -_ZN17double_conversionL18NormalizedExponentEmi.exit: ; preds = %while.body.i, %if.end - %exponent.addr.0.lcssa.i = phi i32 [ %exponent.0, %if.end ], [ %sub.i44, %while.body.i ] - %sub.i46 = add nsw i32 %exponent.addr.0.lcssa.i, 52 +_ZN17double_conversionL18NormalizedExponentEmi.exit: ; preds = %while.body.i + %8 = icmp ult i32 %mode, 2 + %cmp16 = icmp eq i64 %and, 0 + %sub.i46 = add nsw i32 %exponent.addr.06.i, 51 %conv.i47 = sitofp i32 %sub.i46 to double %9 = tail call double @llvm.fmuladd.f64(double %conv.i47, double 0x3FD34413509F79FE, double -1.000000e-10) %10 = tail call double @llvm.ceil.f64(double %9) @@ -105,34 +102,15 @@ if.end26: ; preds = %_ZN17double_convers store i16 0, ptr %delta_plus, align 4 %exponent_.i50 = getelementptr inbounds i8, ptr %delta_plus, i64 2 store i16 0, ptr %exponent_.i50, align 2 - %cmp.i51 = icmp sgt i32 %exponent.0, -1 - br i1 %cmp.i51, label %if.then.i, label %if.else.i - -if.then.i: ; preds = %if.end26 - call void @_ZN17double_conversion6Bignum12AssignUInt64Em(ptr noundef nonnull align 4 dereferenceable(516) %numerator, i64 noundef %significand.0) - call void @_ZN17double_conversion6Bignum9ShiftLeftEi(ptr noundef nonnull align 4 dereferenceable(516) %numerator, i32 noundef range(i32 0, -2147483648) %exponent.0) - call void @_ZN17double_conversion6Bignum17AssignPowerUInt16Eti(ptr noundef nonnull align 4 dereferenceable(516) %denominator, i16 noundef zeroext 10, i32 noundef %conv1.i) - br i1 %7, label %if.then.i.i, label %_ZN17double_conversionL24InitialScaledStartValuesEmibibPNS_6BignumES1_S1_S1_.exit - -if.then.i.i: ; preds = %if.then.i - call void @_ZN17double_conversion6Bignum9ShiftLeftEi(ptr noundef nonnull align 4 dereferenceable(516) %denominator, i32 noundef 1) - call void @_ZN17double_conversion6Bignum9ShiftLeftEi(ptr noundef nonnull align 4 dereferenceable(516) %numerator, i32 noundef 1) - call void @_ZN17double_conversion6Bignum12AssignUInt16Et(ptr noundef nonnull align 4 dereferenceable(516) %delta_plus, i16 noundef zeroext 1) - call void @_ZN17double_conversion6Bignum9ShiftLeftEi(ptr noundef nonnull align 4 dereferenceable(516) %delta_plus, i32 noundef range(i32 0, -2147483648) %exponent.0) - call void @_ZN17double_conversion6Bignum12AssignUInt16Et(ptr noundef nonnull align 4 dereferenceable(516) %delta_minus, i16 noundef zeroext 1) - call void @_ZN17double_conversion6Bignum9ShiftLeftEi(ptr noundef nonnull align 4 dereferenceable(516) %delta_minus, i32 noundef range(i32 0, -2147483648) %exponent.0) - br label %if.end7.i - -if.else.i: ; preds = %if.end26 %cmp2.i = icmp sgt i32 %conv1.i, -1 br i1 %cmp2.i, label %if.then3.i, label %if.else5.i -if.then3.i: ; preds = %if.else.i +if.then3.i: ; preds = %if.end26 call void @_ZN17double_conversion6Bignum12AssignUInt64Em(ptr noundef nonnull align 4 dereferenceable(516) %numerator, i64 noundef %significand.0) call void @_ZN17double_conversion6Bignum17AssignPowerUInt16Eti(ptr noundef nonnull align 4 dereferenceable(516) %denominator, i16 noundef zeroext 10, i32 noundef range(i32 0, -2147483648) %conv1.i) %sub.i.i = sub nsw i32 0, %exponent.0 call void @_ZN17double_conversion6Bignum9ShiftLeftEi(ptr noundef nonnull align 4 dereferenceable(516) %denominator, i32 noundef %sub.i.i) - br i1 %7, label %if.then.i23.i, label %_ZN17double_conversionL24InitialScaledStartValuesEmibibPNS_6BignumES1_S1_S1_.exit + br i1 %8, label %if.then.i23.i, label %_ZN17double_conversionL24InitialScaledStartValuesEmibibPNS_6BignumES1_S1_S1_.exit if.then.i23.i: ; preds = %if.then3.i call void @_ZN17double_conversion6Bignum9ShiftLeftEi(ptr noundef nonnull align 4 dereferenceable(516) %denominator, i32 noundef 1) @@ -141,10 +119,10 @@ if.then.i23.i: ; preds = %if.then3.i call void @_ZN17double_conversion6Bignum12AssignUInt16Et(ptr noundef nonnull align 4 dereferenceable(516) %delta_minus, i16 noundef zeroext 1) br label %if.end7.i -if.else5.i: ; preds = %if.else.i +if.else5.i: ; preds = %if.end26 %sub.i24.i = sub nsw i32 0, %conv1.i call void @_ZN17double_conversion6Bignum17AssignPowerUInt16Eti(ptr noundef nonnull align 4 dereferenceable(516) %numerator, i16 noundef zeroext 10, i32 noundef %sub.i24.i) - br i1 %7, label %if.then.i25.i, label %if.end4.critedge.i.i + br i1 %8, label %if.then.i25.i, label %if.end4.critedge.i.i if.then.i25.i: ; preds = %if.else5.i call void @_ZN17double_conversion6Bignum12AssignBignumERKS0_(ptr noundef nonnull align 4 dereferenceable(516) %delta_plus, ptr noundef nonnull align 4 dereferenceable(516) %numerator) @@ -167,8 +145,8 @@ _ZN17double_conversionL53InitialScaledStartValuesNegativeExponentNegativePowerEm call void @_ZN17double_conversion6Bignum9ShiftLeftEi(ptr noundef nonnull align 4 dereferenceable(516) %denominator, i32 noundef %sub1.c.sink.i.i) br label %if.end7.i -if.end7.i: ; preds = %_ZN17double_conversionL53InitialScaledStartValuesNegativeExponentNegativePowerEmiibPNS_6BignumES1_S1_S1_.exit.i, %if.then.i23.i, %if.then.i.i - %brmerge.demorgan.i = and i1 %7, %lower_boundary_is_closer.0.in +if.end7.i: ; preds = %_ZN17double_conversionL53InitialScaledStartValuesNegativeExponentNegativePowerEmiibPNS_6BignumES1_S1_S1_.exit.i, %if.then.i23.i + %brmerge.demorgan.i = and i1 %8, %lower_boundary_is_closer.0.in br i1 %brmerge.demorgan.i, label %if.then10.i, label %_ZN17double_conversionL24InitialScaledStartValuesEmibibPNS_6BignumES1_S1_S1_.exit if.then10.i: ; preds = %if.end7.i @@ -177,7 +155,7 @@ if.then10.i: ; preds = %if.end7.i call void @_ZN17double_conversion6Bignum9ShiftLeftEi(ptr noundef nonnull align 4 dereferenceable(516) %delta_plus, i32 noundef 1) br label %_ZN17double_conversionL24InitialScaledStartValuesEmibibPNS_6BignumES1_S1_S1_.exit -_ZN17double_conversionL24InitialScaledStartValuesEmibibPNS_6BignumES1_S1_S1_.exit: ; preds = %if.then.i, %if.then3.i, %if.end7.i, %if.then10.i +_ZN17double_conversionL24InitialScaledStartValuesEmibibPNS_6BignumES1_S1_S1_.exit: ; preds = %if.then3.i, %if.end7.i, %if.then10.i %call.i = call noundef i32 @_ZN17double_conversion6Bignum11PlusCompareERKS0_S2_S2_(ptr noundef nonnull align 4 dereferenceable(516) %numerator, ptr noundef nonnull align 4 dereferenceable(516) %delta_plus, ptr noundef nonnull align 4 dereferenceable(516) %denominator) br i1 %cmp16, label %if.then.i55, label %if.end.i diff --git a/bench/duckdb/optimized/ub_duckdb_func_struct.cpp.ll b/bench/duckdb/optimized/ub_duckdb_func_struct.cpp.ll index 2f9e73b8f8d..7c878fcc65f 100644 --- a/bench/duckdb/optimized/ub_duckdb_func_struct.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_func_struct.cpp.ll @@ -5358,33 +5358,32 @@ entry: for.cond.cleanup.loopexit: ; preds = %for.body %2 = shl nuw nsw i8 %spec.select, 1 - %3 = and i8 %2, 2 br label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond.cleanup.loopexit, %entry - %all_const.0.lcssa = phi i8 [ 2, %entry ], [ %3, %for.cond.cleanup.loopexit ] + %all_const.0.lcssa = phi i8 [ 2, %entry ], [ %2, %for.cond.cleanup.loopexit ] tail call void @_ZN6duckdb6Vector13SetVectorTypeENS_10VectorTypeE(ptr noundef nonnull align 8 dereferenceable(104) %result, i8 noundef zeroext %all_const.0.lcssa) %count.i = getelementptr inbounds i8, ptr %args, i64 24 - %4 = load i64, ptr %count.i, align 8, !tbaa !55 - tail call void @_ZN6duckdb6Vector6VerifyEm(ptr noundef nonnull align 8 dereferenceable(104) %result, i64 noundef %4) + %3 = load i64, ptr %count.i, align 8, !tbaa !55 + tail call void @_ZN6duckdb6Vector6VerifyEm(ptr noundef nonnull align 8 dereferenceable(104) %result, i64 noundef %3) ret void for.body: ; preds = %entry, %for.body %i.025 = phi i64 [ %inc, %for.body ], [ 0, %entry ] %all_const.024 = phi i8 [ %spec.select, %for.body ], [ 1, %entry ] %call2 = tail call noundef nonnull align 8 dereferenceable(104) ptr @_ZN6duckdb6vectorINS_6VectorELb1EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %args, i64 noundef %i.025) - %5 = load i8, ptr %call2, align 8, !tbaa !170 - %cmp4.not = icmp eq i8 %5, 2 + %4 = load i8, ptr %call2, align 8, !tbaa !170 + %cmp4.not = icmp eq i8 %4, 2 %spec.select = select i1 %cmp4.not, i8 %all_const.024, i8 0 %call5 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6duckdb6vectorINS_10unique_ptrINS_6VectorESt14default_deleteIS2_ELb1EEELb1EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %call, i64 noundef %i.025) %call6 = tail call noundef ptr @_ZNK6duckdb10unique_ptrINS_6VectorESt14default_deleteIS1_ELb1EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %call5) %call8 = tail call noundef nonnull align 8 dereferenceable(104) ptr @_ZN6duckdb6vectorINS_6VectorELb1EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %args, i64 noundef %i.025) tail call void @_ZN6duckdb6Vector9ReferenceERKS0_(ptr noundef nonnull align 8 dereferenceable(104) %call6, ptr noundef nonnull align 8 dereferenceable(104) %call8) %inc = add nuw i64 %i.025, 1 - %6 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !70 - %7 = load ptr, ptr %args, align 8, !tbaa !71 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %6 to i64 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %7 to i64 + %5 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !70 + %6 = load ptr, ptr %args, align 8, !tbaa !71 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %5 to i64 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %6 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 = sdiv exact i64 %sub.ptr.sub.i.i, 104 %cmp = icmp ult i64 %inc, %sub.ptr.div.i.i diff --git a/bench/duckdb/optimized/ub_duckdb_planner_subquery.cpp.ll b/bench/duckdb/optimized/ub_duckdb_planner_subquery.cpp.ll index fef6cfbb656..3e865391ec0 100644 --- a/bench/duckdb/optimized/ub_duckdb_planner_subquery.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_planner_subquery.cpp.ll @@ -815,9 +815,8 @@ for.body: ; preds = %entry, %for.body invoke.cont23: ; preds = %for.cond.i.i.i.i, %cleanup.cont.i.i, %if.end.i.i.i.i %call7.pn.i.i = phi ptr [ %9, %if.end.i.i.i.i ], [ %call7.i.i, %cleanup.cont.i.i ], [ %11, %for.cond.i.i.i.i ] %retval.1.i.i = getelementptr inbounds i8, ptr %call7.pn.i.i, i64 16 - %16 = and i8 %has_correlation.0.lcssa, 1 - %tobool20 = icmp ne i8 %16, 0 - store i8 %16, ptr %retval.1.i.i, align 1, !tbaa !73 + %tobool20 = icmp ne i8 %has_correlation.0.lcssa, 0 + store i8 %has_correlation.0.lcssa, ptr %retval.1.i.i, align 1, !tbaa !73 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %visitor) #24 ret i1 %tobool20 } diff --git a/bench/eastl/optimized/EAMemory.cpp.ll b/bench/eastl/optimized/EAMemory.cpp.ll index 6f448fad103..22abcda76ec 100644 --- a/bench/eastl/optimized/EAMemory.cpp.ll +++ b/bench/eastl/optimized/EAMemory.cpp.ll @@ -1920,25 +1920,17 @@ while.cond.preheader.i: ; preds = %entry br i1 %cmp643.i, label %for.body.us.i, label %while.end.i for.body.us.i: ; preds = %for.body.us.i, %while.cond.preheader.i - %cmp7.us.i = phi i1 [ true, %while.cond.preheader.i ], [ %.not, %for.body.us.i ] - %i.140.us.i = phi i64 [ 4, %while.cond.preheader.i ], [ %.mux, %for.body.us.i ] - %s.sroa.0.039.us.i = phi ptr [ %c.addr, %while.cond.preheader.i ], [ %incdec.ptr.us.i.mux, %for.body.us.i ] + %i.140.us.i = phi i64 [ 4, %while.cond.preheader.i ], [ 8, %for.body.us.i ] + %s.sroa.0.039.us.i = phi ptr [ %c.addr, %while.cond.preheader.i ], [ %incdec.ptr.us.i, %for.body.us.i ] %d.sroa.0.138.us.i = phi ptr [ %pDestination, %while.cond.preheader.i ], [ %incdec.ptr9.us.i, %for.body.us.i ] %destByteCount.addr.137.us.i = phi i64 [ %byteCount, %while.cond.preheader.i ], [ %sub.us.i, %for.body.us.i ] - %cmp7.us.i.not = xor i1 %cmp7.us.i, true %incdec.ptr.us.i = getelementptr inbounds i8, ptr %s.sroa.0.039.us.i, i64 4 %5 = load i32, ptr %s.sroa.0.039.us.i, align 4 %incdec.ptr9.us.i = getelementptr inbounds i8, ptr %d.sroa.0.138.us.i, i64 4 store i32 %5, ptr %d.sroa.0.138.us.i, align 4 %sub.us.i = add i64 %destByteCount.addr.137.us.i, -4 %cmp8.us.i = icmp ult i64 %sub.us.i, 4 - %.not = select i1 %cmp7.us.i.not, i1 true, i1 %cmp8.us.i - %.not.not = xor i1 %.not, true - %cmp8.us.i.not = xor i1 %cmp8.us.i, true - %brmerge = select i1 %.not.not, i1 true, i1 %cmp8.us.i.not - %.mux = select i1 %.not.not, i64 8, i64 4 - %incdec.ptr.us.i.mux = select i1 %.not.not, ptr %incdec.ptr.us.i, ptr %c.addr - br i1 %brmerge, label %for.body.us.i, label %while.end.i, !llvm.loop !17 + br i1 %cmp8.us.i, label %while.end.i, label %for.body.us.i, !llvm.loop !17 while.end.i: ; preds = %for.body.us.i, %while.cond.preheader.i %destByteCount.addr.0.lcssa.i = phi i64 [ %byteCount, %while.cond.preheader.i ], [ %sub.us.i, %for.body.us.i ] diff --git a/bench/eastl/optimized/TestListMap.cpp.ll b/bench/eastl/optimized/TestListMap.cpp.ll index f6be4e28eb3..f02f62aea3f 100644 --- a/bench/eastl/optimized/TestListMap.cpp.ll +++ b/bench/eastl/optimized/TestListMap.cpp.ll @@ -1385,24 +1385,13 @@ for.end.i457: ; preds = %for.cond.i450 invoke.cont315: ; preds = %for.body.i454, %for.end.i457 %retval.0.i456 = phi i1 [ %cmp.i4.i458, %for.end.i457 ], [ false, %for.body.i454 ] %call319 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %retval.0.i456, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.1, i32 noundef 173, ptr noundef nonnull @.str.23) - to label %for.cond.i462 unwind label %lpad + to label %for.cond.i462.preheader unwind label %lpad -for.cond.i462: ; preds = %invoke.cont315, %for.body.i466 - %temp.sroa.0.0.in.i463 = phi ptr [ %temp.sroa.0.0.i464, %for.body.i466 ], [ %mNode2.i, %invoke.cont315 ] - %temp.sroa.0.0.i464 = load ptr, ptr %temp.sroa.0.0.in.i463, align 8 - %cmp.i.not.i465 = icmp eq ptr %temp.sroa.0.0.i464, %mNode2.i - br i1 %cmp.i.not.i465, label %invoke.cont323, label %for.body.i466 - -for.body.i466: ; preds = %for.cond.i462 - %cmp.i2.i467 = icmp eq ptr %temp.sroa.0.0.i464, %storemerge.i347 - br i1 %cmp.i2.i467, label %invoke.cont323, label %for.cond.i462, !llvm.loop !65 - -invoke.cont323: ; preds = %for.body.i466, %for.cond.i462 - %retval.0.i468 = phi i1 [ %cmp.i352, %for.cond.i462 ], [ false, %for.body.i466 ] - %call327 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %retval.0.i468, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.1, i32 noundef 174, ptr noundef nonnull @.str.24) +for.cond.i462.preheader: ; preds = %invoke.cont315 + %call327 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext false, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.1, i32 noundef 174, ptr noundef nonnull @.str.24) to label %invoke.cont326 unwind label %lpad -invoke.cont326: ; preds = %invoke.cont323 +invoke.cont326: ; preds = %for.cond.i462.preheader %call329 = invoke noundef zeroext i1 @_ZNK5eastl8list_mapIjmNS_4lessIjEENS_9allocatorEE8validateEv(ptr noundef nonnull align 8 dereferenceable(64) %testMap) to label %invoke.cont328 unwind label %lpad @@ -1860,21 +1849,21 @@ invoke.cont403: ; preds = %invoke.cont399 %cmp.i.not.i653 = icmp ne ptr %204, %testStringMap %mValue.i.i655 = getelementptr inbounds i8, ptr %204, i64 32 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %baseIter.i) - %cmp.i659848 = icmp ne ptr %mValue.i.i655, %mNode2.i644 - %cmp.i659 = select i1 %cmp.i.not.i653, i1 %cmp.i659848, i1 false + %cmp.i659849 = icmp ne ptr %mValue.i.i655, %mNode2.i644 + %cmp.i659 = select i1 %cmp.i.not.i653, i1 %cmp.i659849, i1 false %call408 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %cmp.i659, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.1, i32 noundef 203, ptr noundef nonnull @.str.31) to label %invoke.cont407 unwind label %lpad387.loopexit.split-lp.loopexit.split-lp invoke.cont407: ; preds = %invoke.cont403 - %mNode2.i644.sroa.gep801 = getelementptr inbounds i8, ptr %testStringMap, i64 87 - %mValue.i.i655.sroa.gep802 = getelementptr inbounds i8, ptr %204, i64 71 - %storemerge.i656.sroa.sel803 = select i1 %cmp.i.not.i653, ptr %mValue.i.i655.sroa.gep802, ptr %mNode2.i644.sroa.gep801 - %205 = load i8, ptr %storemerge.i656.sroa.sel803, align 1 + %mNode2.i644.sroa.gep802 = getelementptr inbounds i8, ptr %testStringMap, i64 87 + %mValue.i.i655.sroa.gep803 = getelementptr inbounds i8, ptr %204, i64 71 + %storemerge.i656.sroa.sel804 = select i1 %cmp.i.not.i653, ptr %mValue.i.i655.sroa.gep803, ptr %mNode2.i644.sroa.gep802 + %205 = load i8, ptr %storemerge.i656.sroa.sel804, align 1 %tobool.i.i.i.i = icmp slt i8 %205, 0 - %mNode2.i644.sroa.gep804 = getelementptr inbounds i8, ptr %testStringMap, i64 72 - %mValue.i.i655.sroa.gep805 = getelementptr inbounds i8, ptr %204, i64 56 - %storemerge.i656.sroa.sel806 = select i1 %cmp.i.not.i653, ptr %mValue.i.i655.sroa.gep805, ptr %mNode2.i644.sroa.gep804 - %206 = load i64, ptr %storemerge.i656.sroa.sel806, align 8 + %mNode2.i644.sroa.gep805 = getelementptr inbounds i8, ptr %testStringMap, i64 72 + %mValue.i.i655.sroa.gep806 = getelementptr inbounds i8, ptr %204, i64 56 + %storemerge.i656.sroa.sel807 = select i1 %cmp.i.not.i653, ptr %mValue.i.i655.sroa.gep806, ptr %mNode2.i644.sroa.gep805 + %206 = load i64, ptr %storemerge.i656.sroa.sel807, align 8 %conv.i.i.i.i = zext nneg i8 %205 to i64 %sub.i.i.i.i = sub nsw i64 23, %conv.i.i.i.i %cond.i.i.i = select i1 %tobool.i.i.i.i, i64 %206, i64 %sub.i.i.i.i @@ -1897,10 +1886,10 @@ _ZN5eastleqIcNS_9allocatorEEEbRKNS_12basic_stringIT_T0_EEPKNS5_10value_typeE.exi to label %invoke.cont414 unwind label %lpad387.loopexit.split-lp.loopexit.split-lp invoke.cont414: ; preds = %_ZN5eastleqIcNS_9allocatorEEEbRKNS_12basic_stringIT_T0_EEPKNS5_10value_typeE.exit - %mNode2.i644.sroa.gep807 = getelementptr inbounds i8, ptr %testStringMap, i64 88 - %mValue.i.i655.sroa.gep808 = getelementptr inbounds i8, ptr %204, i64 72 - %storemerge.i656.sroa.sel809 = select i1 %cmp.i.not.i653, ptr %mValue.i.i655.sroa.gep808, ptr %mNode2.i644.sroa.gep807 - %209 = load i32, ptr %storemerge.i656.sroa.sel809, align 8 + %mNode2.i644.sroa.gep808 = getelementptr inbounds i8, ptr %testStringMap, i64 88 + %mValue.i.i655.sroa.gep809 = getelementptr inbounds i8, ptr %204, i64 72 + %storemerge.i656.sroa.sel810 = select i1 %cmp.i.not.i653, ptr %mValue.i.i655.sroa.gep809, ptr %mNode2.i644.sroa.gep808 + %209 = load i32, ptr %storemerge.i656.sroa.sel810, align 8 %cmp418 = icmp eq i32 %209, 750 %call420 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %cmp418, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.1, i32 noundef 205, ptr noundef nonnull @.str.33) to label %invoke.cont419 unwind label %lpad387.loopexit.split-lp.loopexit.split-lp @@ -2015,7 +2004,7 @@ _ZN5eastl8list_mapINS_12basic_stringIcNS_9allocatorEEEjNS_4lessIS3_EES2_ED2Ev.ex %218 = load i32, ptr %nErrorCount, align 4 ret i32 %218 -lpad: ; preds = %if.then50.i.invoke, %if.then50.i237.invoke, %if.then35.i308.invoke, %if.then20.i389.invoke, %if.then20.i514.invoke, %call.i.i.i.i.i.noexc, %_ZN5eastl6rbtreeIjNS_13list_map_dataINS_4pairIKjmEEEENS_4lessIjEENS_9allocatorENS_15use_value_firstIS5_EELb1ELb1EE5eraseENS_15rbtree_iteratorIS5_PKS5_RSD_EE.exit.i.i.i, %if.then5.i624, %call.i.i.i.i.noexc618, %_ZN5eastl6rbtreeIjNS_13list_map_dataINS_4pairIKjmEEEENS_4lessIjEENS_9allocatorENS_15use_value_firstIS5_EELb1ELb1EE5eraseENS_15rbtree_iteratorIS5_PKS5_RSD_EE.exit.i.i612, %call.i.i.i.noexc499, %_ZN5eastl6rbtreeIjNS_13list_map_dataINS_4pairIKjmEEEENS_4lessIjEENS_9allocatorENS_15use_value_firstIS5_EELb1ELb1EE5eraseENS_15rbtree_iteratorIS5_PKS5_RSD_EE.exit.i492, %call.i.i.i.noexc, %_ZN5eastl6rbtreeIjNS_13list_map_dataINS_4pairIKjmEEEENS_4lessIjEENS_9allocatorENS_15use_value_firstIS5_EELb1ELb1EE5eraseENS_15rbtree_iteratorIS5_PKS5_RSD_EE.exit.i, %call.i.i.i.i.noexc287, %_ZN5eastl6rbtreeIjNS_13list_map_dataINS_4pairIKjmEEEENS_4lessIjEENS_9allocatorENS_15use_value_firstIS5_EELb1ELb1EE5eraseENS_15rbtree_iteratorIS5_PKS5_RSD_EE.exit.i.i281, %call.i.i.i.i.noexc, %_ZN5eastl6rbtreeIjNS_13list_map_dataINS_4pairIKjmEEEENS_4lessIjEENS_9allocatorENS_15use_value_firstIS5_EELb1ELb1EE5eraseENS_15rbtree_iteratorIS5_PKS5_RSD_EE.exit.i.i, %invoke.cont198, %invoke.cont190, %invoke.cont182, %invoke.cont170, %invoke.cont158, %invoke.cont144, %invoke.cont45, %invoke.cont33, %invoke.cont21, %invoke.cont9, %invoke.cont382, %invoke.cont380, %invoke.cont378, %invoke.cont370, %invoke.cont366, %invoke.cont365, %invoke.cont355, %invoke.cont353, %invoke.cont350, %invoke.cont344, %invoke.cont339, %invoke.cont335, %invoke.cont333, %invoke.cont328, %invoke.cont326, %invoke.cont323, %invoke.cont315, %invoke.cont304, %invoke.cont296, %invoke.cont292, %invoke.cont290, %invoke.cont283, %land.end278, %invoke.cont255, %invoke.cont251, %invoke.cont250, %land.end247, %invoke.cont217, %invoke.cont213, %invoke.cont212, %invoke.cont208, %invoke.cont206, %invoke.cont204, %invoke.cont202, %invoke.cont196, %invoke.cont194, %invoke.cont188, %invoke.cont186, %invoke.cont180, %invoke.cont178, %invoke.cont168, %invoke.cont166, %invoke.cont152, %invoke.cont150, %invoke.cont148, %invoke.cont146, %invoke.cont138, %invoke.cont132, %land.end131, %land.end, %invoke.cont81, %invoke.cont75, %invoke.cont67, %invoke.cont60, %invoke.cont57, %invoke.cont55, %invoke.cont53, %invoke.cont43, %invoke.cont41, %invoke.cont31, %invoke.cont29, %invoke.cont19, %invoke.cont17, %invoke.cont7, %invoke.cont5, %invoke.cont3 +lpad: ; preds = %if.then50.i.invoke, %if.then50.i237.invoke, %if.then35.i308.invoke, %if.then20.i389.invoke, %if.then20.i514.invoke, %call.i.i.i.i.i.noexc, %_ZN5eastl6rbtreeIjNS_13list_map_dataINS_4pairIKjmEEEENS_4lessIjEENS_9allocatorENS_15use_value_firstIS5_EELb1ELb1EE5eraseENS_15rbtree_iteratorIS5_PKS5_RSD_EE.exit.i.i.i, %if.then5.i624, %call.i.i.i.i.noexc618, %_ZN5eastl6rbtreeIjNS_13list_map_dataINS_4pairIKjmEEEENS_4lessIjEENS_9allocatorENS_15use_value_firstIS5_EELb1ELb1EE5eraseENS_15rbtree_iteratorIS5_PKS5_RSD_EE.exit.i.i612, %call.i.i.i.noexc499, %_ZN5eastl6rbtreeIjNS_13list_map_dataINS_4pairIKjmEEEENS_4lessIjEENS_9allocatorENS_15use_value_firstIS5_EELb1ELb1EE5eraseENS_15rbtree_iteratorIS5_PKS5_RSD_EE.exit.i492, %call.i.i.i.noexc, %_ZN5eastl6rbtreeIjNS_13list_map_dataINS_4pairIKjmEEEENS_4lessIjEENS_9allocatorENS_15use_value_firstIS5_EELb1ELb1EE5eraseENS_15rbtree_iteratorIS5_PKS5_RSD_EE.exit.i, %call.i.i.i.i.noexc287, %_ZN5eastl6rbtreeIjNS_13list_map_dataINS_4pairIKjmEEEENS_4lessIjEENS_9allocatorENS_15use_value_firstIS5_EELb1ELb1EE5eraseENS_15rbtree_iteratorIS5_PKS5_RSD_EE.exit.i.i281, %call.i.i.i.i.noexc, %_ZN5eastl6rbtreeIjNS_13list_map_dataINS_4pairIKjmEEEENS_4lessIjEENS_9allocatorENS_15use_value_firstIS5_EELb1ELb1EE5eraseENS_15rbtree_iteratorIS5_PKS5_RSD_EE.exit.i.i, %invoke.cont198, %invoke.cont190, %invoke.cont182, %invoke.cont170, %invoke.cont158, %invoke.cont144, %invoke.cont45, %invoke.cont33, %invoke.cont21, %invoke.cont9, %invoke.cont382, %invoke.cont380, %invoke.cont378, %invoke.cont370, %invoke.cont366, %invoke.cont365, %invoke.cont355, %invoke.cont353, %invoke.cont350, %invoke.cont344, %invoke.cont339, %invoke.cont335, %invoke.cont333, %invoke.cont328, %invoke.cont326, %for.cond.i462.preheader, %invoke.cont315, %invoke.cont304, %invoke.cont296, %invoke.cont292, %invoke.cont290, %invoke.cont283, %land.end278, %invoke.cont255, %invoke.cont251, %invoke.cont250, %land.end247, %invoke.cont217, %invoke.cont213, %invoke.cont212, %invoke.cont208, %invoke.cont206, %invoke.cont204, %invoke.cont202, %invoke.cont196, %invoke.cont194, %invoke.cont188, %invoke.cont186, %invoke.cont180, %invoke.cont178, %invoke.cont168, %invoke.cont166, %invoke.cont152, %invoke.cont150, %invoke.cont148, %invoke.cont146, %invoke.cont138, %invoke.cont132, %land.end131, %land.end, %invoke.cont81, %invoke.cont75, %invoke.cont67, %invoke.cont60, %invoke.cont57, %invoke.cont55, %invoke.cont53, %invoke.cont43, %invoke.cont41, %invoke.cont31, %invoke.cont29, %invoke.cont19, %invoke.cont17, %invoke.cont7, %invoke.cont5, %invoke.cont3 %219 = landingpad { ptr, i32 } cleanup call void @_ZN5eastl8list_mapIjmNS_4lessIjEENS_9allocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %testMap) #15 @@ -2027,12 +2016,12 @@ lpad387.loopexit: ; preds = %while.body19.i br label %ehcleanup lpad387.loopexit.split-lp.loopexit: ; preds = %while.body.i - %lpad.loopexit783 = landingpad { ptr, i32 } + %lpad.loopexit784 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad387.loopexit.split-lp.loopexit.split-lp: ; preds = %invoke.cont427, %invoke.cont419, %invoke.cont399, %invoke.cont429, %invoke.cont423, %invoke.cont414, %_ZN5eastleqIcNS_9allocatorEEEbRKNS_12basic_stringIT_T0_EEPKNS5_10value_typeE.exit, %invoke.cont403, %_ZN5eastl12basic_stringIcNS_9allocatorEED2Ev.exit - %lpad.loopexit.split-lp784 = landingpad { ptr, i32 } + %lpad.loopexit.split-lp785 = landingpad { ptr, i32 } cleanup br label %ehcleanup @@ -2053,7 +2042,7 @@ _ZN5eastl9allocator10deallocateEPvm.exit.i.i.i689: ; preds = %if.then.i.i687 br label %ehcleanup ehcleanup: ; preds = %lpad387.loopexit, %lpad387.loopexit.split-lp.loopexit.split-lp, %lpad387.loopexit.split-lp.loopexit, %_ZN5eastl9allocator10deallocateEPvm.exit.i.i.i689, %if.then.i.i687, %lpad394 - %.pn = phi { ptr, i32 } [ %220, %lpad394 ], [ %220, %if.then.i.i687 ], [ %220, %_ZN5eastl9allocator10deallocateEPvm.exit.i.i.i689 ], [ %lpad.loopexit, %lpad387.loopexit ], [ %lpad.loopexit783, %lpad387.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp784, %lpad387.loopexit.split-lp.loopexit.split-lp ] + %.pn = phi { ptr, i32 } [ %220, %lpad394 ], [ %220, %if.then.i.i687 ], [ %220, %_ZN5eastl9allocator10deallocateEPvm.exit.i.i.i689 ], [ %lpad.loopexit, %lpad387.loopexit ], [ %lpad.loopexit784, %lpad387.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp785, %lpad387.loopexit.split-lp.loopexit.split-lp ] call void @_ZN5eastl8list_mapINS_12basic_stringIcNS_9allocatorEEEjNS_4lessIS3_EES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %testStringMap) #15 br label %eh.resume diff --git a/bench/faiss/optimized/IVFlib.cpp.ll b/bench/faiss/optimized/IVFlib.cpp.ll index 70811c2433a..edefe79d4d2 100644 --- a/bench/faiss/optimized/IVFlib.cpp.ll +++ b/bench/faiss/optimized/IVFlib.cpp.ll @@ -2930,21 +2930,13 @@ _ZN5faiss6ivflibL10count_ndisEPKNS_8IndexIVFEmPKl.exit: ; preds = %99, %86 _ZNSt6vectorIfSaIfEED2Ev.exit: ; preds = %116, %117 %.not.i.i.i80 = icmp eq ptr %.sroa.095.0110, null - br i1 %.not.i.i.i80, label %_ZNSt6vectorIlSaIlEED2Ev.exit, label %118 + br i1 %.not.i.i.i80, label %_ZNSt10unique_ptrIA_KfSt14default_deleteIS1_EED2Ev.exit, label %118 118: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit tail call void @_ZdlPv(ptr noundef nonnull %.sroa.095.0110) #25 - br label %_ZNSt6vectorIlSaIlEED2Ev.exit - -_ZNSt6vectorIlSaIlEED2Ev.exit: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit, %118 - %.not.i81 = icmp eq ptr %.sroa.0104.2, null - br i1 %.not.i81, label %_ZNSt10unique_ptrIA_KfSt14default_deleteIS1_EED2Ev.exit, label %_ZNKSt14default_deleteIA_KfEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i - -_ZNKSt14default_deleteIA_KfEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit - tail call void @_ZdaPv(ptr noundef nonnull %.sroa.0104.2) #25 br label %_ZNSt10unique_ptrIA_KfSt14default_deleteIS1_EED2Ev.exit -_ZNSt10unique_ptrIA_KfSt14default_deleteIS1_EED2Ev.exit: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit, %_ZNKSt14default_deleteIA_KfEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i +_ZNSt10unique_ptrIA_KfSt14default_deleteIS1_EED2Ev.exit: ; preds = %118, %_ZNSt6vectorIfSaIfEED2Ev.exit ret void 119: ; preds = %.loopexit, %.loopexit.split-lp, %78 @@ -3279,21 +3271,13 @@ _ZN5faiss6ivflibL10count_ndisEPKNS_8IndexIVFEmPKl.exit: ; preds = %98, %85 _ZNSt6vectorIfSaIfEED2Ev.exit: ; preds = %115, %116 %.not.i.i.i79 = icmp eq ptr %.sroa.094.0109, null - br i1 %.not.i.i.i79, label %_ZNSt6vectorIlSaIlEED2Ev.exit, label %117 + br i1 %.not.i.i.i79, label %_ZNSt10unique_ptrIA_KfSt14default_deleteIS1_EED2Ev.exit, label %117 117: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit tail call void @_ZdlPv(ptr noundef nonnull %.sroa.094.0109) #25 - br label %_ZNSt6vectorIlSaIlEED2Ev.exit - -_ZNSt6vectorIlSaIlEED2Ev.exit: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit, %117 - %.not.i80 = icmp eq ptr %.sroa.0103.2, null - br i1 %.not.i80, label %_ZNSt10unique_ptrIA_KfSt14default_deleteIS1_EED2Ev.exit, label %_ZNKSt14default_deleteIA_KfEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i - -_ZNKSt14default_deleteIA_KfEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit - tail call void @_ZdaPv(ptr noundef nonnull %.sroa.0103.2) #25 br label %_ZNSt10unique_ptrIA_KfSt14default_deleteIS1_EED2Ev.exit -_ZNSt10unique_ptrIA_KfSt14default_deleteIS1_EED2Ev.exit: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit, %_ZNKSt14default_deleteIA_KfEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i +_ZNSt10unique_ptrIA_KfSt14default_deleteIS1_EED2Ev.exit: ; preds = %117, %_ZNSt6vectorIfSaIfEED2Ev.exit ret void 118: ; preds = %.loopexit, %.loopexit.split-lp, %77 diff --git a/bench/faiss/optimized/NSG.cpp.ll b/bench/faiss/optimized/NSG.cpp.ll index b1b812e032d..048c12c59d1 100644 --- a/bench/faiss/optimized/NSG.cpp.ll +++ b/bench/faiss/optimized/NSG.cpp.ll @@ -2168,39 +2168,39 @@ _ZN5faiss3nsg5GraphINS_4NodeEED2Ev.exit: ; preds = %_ZSt6fill_nIPiliET_ br label %.preheader.us .preheader.us: ; preds = %.critedge.us, %.preheader.lr.ph.split.us - %indvars.iv87 = phi i64 [ %indvars.iv.next88, %.critedge.us ], [ 0, %.preheader.lr.ph.split.us ] + %indvars.iv84 = phi i64 [ %indvars.iv.next85, %.critedge.us ], [ 0, %.preheader.lr.ph.split.us ] %.01872.us = phi double [ %150, %.critedge.us ], [ 0.000000e+00, %.preheader.lr.ph.split.us ] %.06371.us = phi i32 [ %.sroa.speculated.us, %.critedge.us ], [ 1000000, %.preheader.lr.ph.split.us ] %.06470.us = phi i32 [ %.sroa.speculated48.us, %.critedge.us ], [ 0, %.preheader.lr.ph.split.us ] - %142 = mul nsw i64 %indvars.iv87, %141 + %142 = mul nsw i64 %indvars.iv84, %141 %143 = getelementptr i32, ptr %139, i64 %142 br label %144 144: ; preds = %.preheader.us, %147 - %indvars.iv83 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next84, %147 ] - %145 = getelementptr i32, ptr %143, i64 %indvars.iv83 + %indvars.iv = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next, %147 ] + %145 = getelementptr i32, ptr %143, i64 %indvars.iv %146 = load i32, ptr %145, align 4 %.not.us = icmp eq i32 %146, -1 br i1 %.not.us, label %.critedge.us.split.loop.exit, label %147 147: ; preds = %144 - %indvars.iv.next84 = add nuw nsw i64 %indvars.iv83, 1 - %exitcond86.not = icmp eq i64 %indvars.iv.next84, %wide.trip.count - br i1 %exitcond86.not, label %.critedge.us, label %144, !llvm.loop !30 + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + br i1 %exitcond.not, label %.critedge.us, label %144, !llvm.loop !30 .critedge.us.split.loop.exit: ; preds = %144 - %148 = trunc nuw nsw i64 %indvars.iv83 to i32 + %148 = trunc nuw nsw i64 %indvars.iv to i32 br label %.critedge.us .critedge.us: ; preds = %147, %.critedge.us.split.loop.exit %storemerge.lcssa.us = phi i32 [ %148, %.critedge.us.split.loop.exit ], [ %135, %147 ] - %.sroa.speculated48.us = call i32 @llvm.smax.i32(i32 %storemerge.lcssa.us, i32 %.06470.us) - %.sroa.speculated.us = call i32 @llvm.smin.i32(i32 %.06371.us, i32 %storemerge.lcssa.us) + %.sroa.speculated48.us = call i32 @llvm.umax.i32(i32 %storemerge.lcssa.us, i32 %.06470.us) + %.sroa.speculated.us = call i32 @llvm.umin.i32(i32 %.06371.us, i32 %storemerge.lcssa.us) %149 = uitofp nneg i32 %storemerge.lcssa.us to double %150 = fadd double %.01872.us, %149 - %indvars.iv.next88 = add nuw nsw i64 %indvars.iv87, 1 - %exitcond90.not = icmp eq i64 %indvars.iv.next88, %133 - br i1 %exitcond90.not, label %._crit_edge, label %.preheader.us, !llvm.loop !31 + %indvars.iv.next85 = add nuw nsw i64 %indvars.iv84, 1 + %exitcond87.not = icmp eq i64 %indvars.iv.next85, %133 + br i1 %exitcond87.not, label %._crit_edge, label %.preheader.us, !llvm.loop !31 151: ; preds = %.loopexit, %_ZN5faiss3nsg5GraphINS_4NodeEED2Ev.exit %152 = landingpad { ptr, i32 } @@ -7858,6 +7858,12 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #20 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #19 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umax.i32(i32, i32) #19 + +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umin.i32(i32, i32) #19 + attributes #0 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/folly/optimized/StrandExecutor.cpp.ll b/bench/folly/optimized/StrandExecutor.cpp.ll index e04566aec4b..98443e747bc 100644 --- a/bench/folly/optimized/StrandExecutor.cpp.ll +++ b/bench/folly/optimized/StrandExecutor.cpp.ll @@ -9057,7 +9057,6 @@ _ZN5folly14UnboundedQueueINS_13StrandContext9QueueItemELb0ELb1ELb0ELm6ELm7ESt6at %61 = load i64, ptr %executor.i, align 16, !tbaa !21 %and.i222 = and i64 %61, -4 %cmp55.not = icmp eq i64 %and.i, %and.i222 - %not.cmp55.not = xor i1 %cmp55.not, true br label %cleanup cleanup: ; preds = %_ZN5folly14UnboundedQueueINS_13StrandContext9QueueItemELb0ELb1ELb0ELm6ELm7ESt6atomicE5Entry8peekItemEv.exit, %if.then.cleanup_crit_edge @@ -9065,7 +9064,6 @@ cleanup: ; preds = %_ZN5folly14Unbounde %62 = phi i64 [ %.pre, %if.then.cleanup_crit_edge ], [ %61, %_ZN5folly14UnboundedQueueINS_13StrandContext9QueueItemELb0ELb1ELb0ELm6ELm7ESt6atomicE5Entry8peekItemEv.exit ] %pendingCount.2 = phi i64 [ %queueSize.0271, %if.then.cleanup_crit_edge ], [ %pendingCount.1, %_ZN5folly14UnboundedQueueINS_13StrandContext9QueueItemELb0ELb1ELb0ELm6ELm7ESt6atomicE5Entry8peekItemEv.exit ] %cond153 = phi i1 [ false, %if.then.cleanup_crit_edge ], [ %cmp55.not, %_ZN5folly14UnboundedQueueINS_13StrandContext9QueueItemELb0ELb1ELb0ELm6ELm7ESt6atomicE5Entry8peekItemEv.exit ] - %cleanup.dest.slot.0 = phi i1 [ false, %if.then.cleanup_crit_edge ], [ %not.cmp55.not, %_ZN5folly14UnboundedQueueINS_13StrandContext9QueueItemELb0ELb1ELb0ELm6ELm7ESt6atomicE5Entry8peekItemEv.exit ] %queueSize.2 = phi i64 [ 0, %if.then.cleanup_crit_edge ], [ %queueSize.1, %_ZN5folly14UnboundedQueueINS_13StrandContext9QueueItemELb0ELb1ELb0ELm6ELm7ESt6atomicE5Entry8peekItemEv.exit ] %.pre-phi = inttoptr i64 %and.i.i.i.i224.pre-phi to ptr %tobool.not.i.i.i225 = icmp eq i64 %and.i.i.i.i224.pre-phi, 0 @@ -9095,12 +9093,9 @@ if.end.i.i.i232: ; preds = %_ZN5folly8Executor9 _ZN5folly13StrandContext9QueueItemD2Ev.exit237: ; preds = %if.end.i.i.i232, %_ZN5folly8Executor9KeepAliveIS0_ED2Ev.exit.i229 call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %item) #26 - br i1 %cond153, label %for.cond, label %cleanup60 + br i1 %cond153, label %for.cond, label %cleanup147 -cleanup60: ; preds = %_ZN5folly13StrandContext9QueueItemD2Ev.exit237 - br i1 %cleanup.dest.slot.0, label %while.end115, label %cleanup147 - -while.end115: ; preds = %for.cond, %cleanup60 +while.end115: ; preds = %for.cond %65 = load ptr, ptr %thisPtr, align 8, !tbaa !23 %scheduled_117 = getelementptr inbounds i8, ptr %65, i64 16 %66 = atomicrmw sub ptr %scheduled_117, i64 %pendingCount.2 monotonic, align 8 @@ -9159,7 +9154,7 @@ if.then7.i.i.i: ; preds = %invoke.cont.i.i.i call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %68) #26 br label %cleanup147 -cleanup147: ; preds = %if.then7.i.i.i, %invoke.cont.i.i.i, %if.then.i.i.i241, %while.end115, %cleanup60 +cleanup147: ; preds = %_ZN5folly13StrandContext9QueueItemD2Ev.exit237, %if.then7.i.i.i, %invoke.cont.i.i.i, %if.then.i.i.i241, %while.end115 ret void } diff --git a/bench/folly/optimized/TimeUtil.cpp.ll b/bench/folly/optimized/TimeUtil.cpp.ll index 584ca456c01..8ce7361ac34 100644 --- a/bench/folly/optimized/TimeUtil.cpp.ll +++ b/bench/folly/optimized/TimeUtil.cpp.ll @@ -1150,13 +1150,9 @@ if.end104: ; preds = %if.else95, %if.else %hz.1 = phi i64 [ 1000, %if.else ], [ 300, %if.else85 ], [ 250, %if.else90 ], [ %spec.select, %if.else95 ] %call65 = call ptr @fgets(ptr noundef nonnull %buf, i32 noundef 1024, ptr noundef nonnull %call46) %cmp66.not = icmp eq ptr %call65, null - br i1 %cmp66.not, label %while.end, label %while.body, !llvm.loop !70 + br i1 %cmp66.not, label %"_ZN5folly6detail14ScopeGuardImplIZNS_L23determineSchedstatUnitsEvE3$_0Lb1EED2Ev.exit", label %while.body, !llvm.loop !70 -while.end: ; preds = %if.end104 - %cmp105 = icmp eq i64 %hz.1, -1 - br i1 %cmp105, label %if.then106, label %"_ZN5folly6detail14ScopeGuardImplIZNS_L23determineSchedstatUnitsEvE3$_0Lb1EED2Ev.exit" - -if.then106: ; preds = %while.end, %if.end60 +if.then106: ; preds = %if.end60 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %ref.tmp107) #25 invoke void @_ZN6google10LogMessageC1EPKcii(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp107, ptr noundef nonnull @.str.6, i32 noundef 144, i32 noundef 2) to label %invoke.cont109 unwind label %lpad108 @@ -1195,8 +1191,8 @@ ehcleanup119: ; preds = %lpad110, %lpad108 call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %ref.tmp107) #25 br label %"_ZN5folly6detail14ScopeGuardImplIZNS_L23determineSchedstatUnitsEvE3$_0Lb1EED2Ev.exit226" -"_ZN5folly6detail14ScopeGuardImplIZNS_L23determineSchedstatUnitsEvE3$_0Lb1EED2Ev.exit": ; preds = %invoke.cont116, %while.end, %invoke.cont77 - %retval.0 = phi i64 [ -1, %invoke.cont77 ], [ -1, %invoke.cont116 ], [ %hz.1, %while.end ] +"_ZN5folly6detail14ScopeGuardImplIZNS_L23determineSchedstatUnitsEvE3$_0Lb1EED2Ev.exit": ; preds = %if.end104, %invoke.cont116, %invoke.cont77 + %retval.0 = phi i64 [ -1, %invoke.cont77 ], [ -1, %invoke.cont116 ], [ %hz.1, %if.end104 ] call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %buf) #25 %call.i.i.i220 = call i32 @fclose(ptr noundef nonnull %call46) br label %cleanup128 diff --git a/bench/freetype/optimized/autofit.c.ll b/bench/freetype/optimized/autofit.c.ll index 9efca78fcc8..8865d8a1755 100644 --- a/bench/freetype/optimized/autofit.c.ll +++ b/bench/freetype/optimized/autofit.c.ll @@ -9280,8 +9280,8 @@ define internal fastcc i64 @af_cjk_compute_stem_width(i32 %.5148.val, ptr nocapt %48 = load i64, ptr %47, align 8 %49 = sub nsw i64 %spec.select, %48 %spec.select.i = tail call i64 @llvm.abs.i64(i64 %49, i1 true) - %50 = icmp slt i64 %spec.select.i, %.02633.i - %.127.i = tail call i64 @llvm.smin.i64(i64 %spec.select.i, i64 %.02633.i) + %50 = icmp samesign ult i64 %spec.select.i, %.02633.i + %.127.i = tail call i64 @llvm.umin.i64(i64 %spec.select.i, i64 %.02633.i) %.1.i = select i1 %50, i64 %48, i64 %.02534.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i @@ -10996,7 +10996,7 @@ define internal fastcc i64 @af_latin_compute_stem_width(i32 %.5148.val, ptr noca br label %121 35: ; preds = %29 - %36 = icmp ult i64 %.2, 192 + %36 = icmp samesign ult i64 %.2, 192 br i1 %36, label %37, label %48 37: ; preds = %35 @@ -11087,8 +11087,8 @@ define internal fastcc i64 @af_latin_compute_stem_width(i32 %.5148.val, ptr noca %77 = load i64, ptr %76, align 8 %78 = sub nsw i64 %spec.select, %77 %spec.select.i = tail call i64 @llvm.abs.i64(i64 %78, i1 true) - %79 = icmp slt i64 %spec.select.i, %.02633.i - %.127.i = tail call i64 @llvm.smin.i64(i64 %spec.select.i, i64 %.02633.i) + %79 = icmp samesign ult i64 %spec.select.i, %.02633.i + %.127.i = tail call i64 @llvm.umin.i64(i64 %spec.select.i, i64 %.02633.i) %.1.i = select i1 %79, i64 %77, i64 %.02534.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i @@ -12546,6 +12546,9 @@ declare i16 @llvm.smax.i16(i16, i16) #18 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i16 @llvm.smin.i16(i16, i16) #18 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.umin.i64(i64, i64) #18 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #18 diff --git a/bench/freetype/optimized/pshinter.c.ll b/bench/freetype/optimized/pshinter.c.ll index e410ff3b945..31b486e82d1 100644 --- a/bench/freetype/optimized/pshinter.c.ll +++ b/bench/freetype/optimized/pshinter.c.ll @@ -5771,50 +5771,40 @@ ps_mask_ensure.exit.i: ; preds = %78 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) store i32 %3, ptr %.08.i.ph.i, align 8 %.not4150.i = icmp eq i32 %3, 0 - br i1 %.not4150.i, label %ps_mask_table_set_bits.exit, label %.lr.ph.preheader.i + br i1 %.not4150.i, label %ps_mask_table_set_bits.exit, label %.lr.ph.i -.lr.ph.preheader.i: ; preds = %89 +.lr.ph.i: ; preds = %89 %91 = and i32 %2, 7 %92 = lshr exact i32 128, %91 %93 = lshr i32 %2, 3 %94 = zext nneg i32 %93 to i64 %95 = getelementptr inbounds i8, ptr %1, i64 %94 - br label %.lr.ph.i - -.lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i - %.02655.i = phi i32 [ %.1.i, %.lr.ph.i ], [ 128, %.lr.ph.preheader.i ] - %.02754.i = phi ptr [ %.128.i, %.lr.ph.i ], [ %90, %.lr.ph.preheader.i ] - %.02953.i = phi i32 [ %.130.i, %.lr.ph.i ], [ %92, %.lr.ph.preheader.i ] - %.03152.i = phi ptr [ %.132.i, %.lr.ph.i ], [ %95, %.lr.ph.preheader.i ] - %.03451.i = phi i32 [ %109, %.lr.ph.i ], [ %3, %.lr.ph.preheader.i ] - %96 = load i8, ptr %.02754.i, align 1 - %97 = zext i8 %96 to i32 - %98 = xor i32 %.02655.i, -1 - %99 = and i32 %97, %98 - %100 = load i8, ptr %.03152.i, align 1 - %101 = zext i8 %100 to i32 - %102 = and i32 %.02953.i, %101 - %.not42.i = icmp eq i32 %102, 0 - %103 = or i32 %.02655.i, %97 - %spec.select.i = select i1 %.not42.i, i32 %99, i32 %103 - %104 = trunc i32 %spec.select.i to i8 - store i8 %104, ptr %.02754.i, align 1 - %105 = lshr i32 %.02953.i, 1 - %106 = icmp ult i32 %.02953.i, 2 - %.132.idx.i = zext i1 %106 to i64 + %.promoted.i = load i8, ptr %90, align 1 + %96 = and i8 %.promoted.i, 127 + br label %97 + +97: ; preds = %97, %.lr.ph.i + %.02953.i = phi i32 [ %92, %.lr.ph.i ], [ %.130.i, %97 ] + %.03152.i = phi ptr [ %95, %.lr.ph.i ], [ %.132.i, %97 ] + %.03451.i = phi i32 [ %3, %.lr.ph.i ], [ %103, %97 ] + %98 = load i8, ptr %.03152.i, align 1 + %99 = zext i8 %98 to i32 + %100 = and i32 %.02953.i, %99 + %.not42.i = icmp eq i32 %100, 0 + %masksel.i = select i1 %.not42.i, i8 0, i8 -128 + %spec.select.i = or disjoint i8 %masksel.i, %96 + store i8 %spec.select.i, ptr %90, align 1 + %101 = lshr i32 %.02953.i, 1 + %102 = icmp samesign ult i32 %.02953.i, 2 + %.132.idx.i = zext i1 %102 to i64 %.132.i = getelementptr inbounds i8, ptr %.03152.i, i64 %.132.idx.i - %.130.i = select i1 %106, i32 128, i32 %105 - %107 = ashr i32 %.02655.i, 1 - %108 = icmp ult i32 %.02655.i, 2 - %.128.idx.i = zext i1 %108 to i64 - %.128.i = getelementptr inbounds i8, ptr %.02754.i, i64 %.128.idx.i - %.1.i = select i1 %108, i32 128, i32 %107 - %109 = add i32 %.03451.i, -1 - %.not41.i = icmp eq i32 %109, 0 - br i1 %.not41.i, label %ps_mask_table_set_bits.exit, label %.lr.ph.i, !llvm.loop !89 - -ps_mask_table_set_bits.exit: ; preds = %.lr.ph.i, %89, %ps_mask_ensure.exit.i, %ps_mask_table_last.exit.i, %ps_dimension_reset_mask.exit - %.0 = phi i32 [ %31, %ps_dimension_reset_mask.exit ], [ %54, %ps_mask_table_last.exit.i ], [ %86, %ps_mask_ensure.exit.i ], [ 0, %89 ], [ 0, %.lr.ph.i ] + %.130.i = select i1 %102, i32 128, i32 %101 + %103 = add i32 %.03451.i, -1 + %.not41.i = icmp eq i32 %103, 0 + br i1 %.not41.i, label %ps_mask_table_set_bits.exit, label %97, !llvm.loop !89 + +ps_mask_table_set_bits.exit: ; preds = %97, %89, %ps_mask_ensure.exit.i, %ps_mask_table_last.exit.i, %ps_dimension_reset_mask.exit + %.0 = phi i32 [ %31, %ps_dimension_reset_mask.exit ], [ %54, %ps_mask_table_last.exit.i ], [ %86, %ps_mask_ensure.exit.i ], [ 0, %89 ], [ 0, %97 ] ret i32 %.0 } diff --git a/bench/git/optimized/combine-diff.ll b/bench/git/optimized/combine-diff.ll index b8040ce1a8d..3a56db400fb 100644 --- a/bench/git/optimized/combine-diff.ll +++ b/bench/git/optimized/combine-diff.ll @@ -2143,15 +2143,11 @@ if.end89.i: ; preds = %for.body81.i for.end101.i: ; preds = %if.end89.i, %for.body81.i, %for.body81.i %comment_end.0.lcssa.i = phi i32 [ %comment_end.0137.i, %for.body81.i ], [ %comment_end.0137.i, %for.body81.i ], [ %spec.select90.i, %if.end89.i ] %tobool102.not.i = icmp eq i32 %comment_end.0.lcssa.i, 0 - br i1 %tobool102.not.i, label %if.end117.i, label %if.end105.i + br i1 %tobool102.not.i, label %if.end117.i, label %for.body109.preheader.i -if.end105.i: ; preds = %for.end101.i +for.body109.preheader.i: ; preds = %for.end101.i %call104.i = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.42, ptr noundef %call7.i219, ptr noundef %call6.i, ptr noundef %call7.i219, ptr noundef %call3.i) - %cmp107139.i = icmp sgt i32 %comment_end.0.lcssa.i, 0 - br i1 %cmp107139.i, label %for.body109.preheader.i, label %if.end117.i - -for.body109.preheader.i: ; preds = %if.end105.i - %wide.trip.count168.i = zext nneg i32 %comment_end.0.lcssa.i to i64 + %wide.trip.count168.i = zext i32 %comment_end.0.lcssa.i to i64 br label %for.body109.i for.body109.i: ; preds = %for.body109.i, %for.body109.preheader.i @@ -2164,7 +2160,7 @@ for.body109.i: ; preds = %for.body109.i, %for %exitcond169.not.i = icmp eq i64 %indvars.iv.next166.i, %wide.trip.count168.i br i1 %exitcond169.not.i, label %if.end117.i, label %for.body109.i, !llvm.loop !57 -if.end117.i: ; preds = %for.body109.i, %if.end105.i, %for.end101.i, %for.end75.i +if.end117.i: ; preds = %for.body109.i, %for.end101.i, %for.end75.i %puts.i = call i32 @puts(ptr nonnull dereferenceable(1) %call7.i219) %cmp120148.i = icmp ult i64 %lno.1120.i, %hunk_end.0.lcssa.i br i1 %cmp120148.i, label %while.body122.i, label %while.end184.i @@ -2292,8 +2288,8 @@ for.body170.i: ; preds = %if.end166.i, %for.b %234 = load i64, ptr %flag126.i, align 8 %and172.i = and i64 %234, %p_mask.0147.i %tobool173.not.i = icmp eq i64 %and172.i, 0 - %.186.i = select i1 %tobool173.not.i, i32 32, i32 43 - %call177.i = call i32 @putchar(i32 noundef %.186.i) + %.185.i = select i1 %tobool173.not.i, i32 32, i32 43 + %call177.i = call i32 @putchar(i32 noundef %.185.i) %shl179.i = shl i64 %p_mask.0147.i, 1 %inc181.i = add nuw nsw i32 %j123.1146.i, 1 %exitcond175.not.i = icmp eq i32 %inc181.i, %num_parent diff --git a/bench/git/optimized/parse-options.ll b/bench/git/optimized/parse-options.ll index f1f57b5b9ed..6a3a4729ac8 100644 --- a/bench/git/optimized/parse-options.ll +++ b/bench/git/optimized/parse-options.ll @@ -3627,19 +3627,14 @@ if.end17: ; preds = %for.end if.then.i26: ; preds = %if.end17 %short_name.i = getelementptr inbounds i8, ptr %opt, i64 4 %94 = load i32, ptr %short_name.i, align 4 - %tobool1.not.i = icmp eq ptr %arg.1, null - %cond.i27 = select i1 %tobool1.not.i, ptr @.str.59, ptr %arg.1 - %call.i = tail call ptr (ptr, ...) @xstrfmt(ptr noundef nonnull @.str.58, i32 noundef %94, ptr noundef nonnull %cond.i27) #17 + %call.i = tail call ptr (ptr, ...) @xstrfmt(ptr noundef nonnull @.str.58, i32 noundef %94, ptr noundef nonnull @.str.59) #17 br label %optnamearg.exit if.end.i: ; preds = %if.end17 %cond4.i = select i1 %tobool.not.i, ptr @.str.59, ptr @.str.61 %long_name.i = getelementptr inbounds i8, ptr %opt, i64 8 %95 = load ptr, ptr %long_name.i, align 8 - %tobool5.not.i = icmp eq ptr %arg.1, null - %cond6.i = select i1 %tobool5.not.i, ptr @.str.59, ptr @.str.62 - %cond11.i = select i1 %tobool5.not.i, ptr @.str.59, ptr %arg.1 - %call12.i = tail call ptr (ptr, ...) @xstrfmt(ptr noundef nonnull @.str.60, ptr noundef nonnull %cond4.i, ptr noundef %95, ptr noundef nonnull %cond6.i, ptr noundef nonnull %cond11.i) #17 + %call12.i = tail call ptr (ptr, ...) @xstrfmt(ptr noundef nonnull @.str.60, ptr noundef nonnull %cond4.i, ptr noundef %95, ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.59) #17 br label %optnamearg.exit optnamearg.exit: ; preds = %if.then.i26, %if.end.i diff --git a/bench/glslang/optimized/Intermediate.cpp.ll b/bench/glslang/optimized/Intermediate.cpp.ll index 706cd83252a..e4d89a1c475 100644 --- a/bench/glslang/optimized/Intermediate.cpp.ll +++ b/bench/glslang/optimized/Intermediate.cpp.ll @@ -15976,7 +15976,7 @@ _ZNSt12_Vector_baseIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEC2EmRKS4_.exit %57 = trunc i64 %56 to i32 %58 = lshr i32 %57, 25 %59 = and i32 %58, 7 - %.sroa.speculated = tail call i32 @llvm.smax.i32(i32 %.02022, i32 %59) + %.sroa.speculated = tail call i32 @llvm.umax.i32(i32 %.02022, i32 %59) %60 = add i32 %.023, 1 %61 = zext i32 %60 to i64 %62 = icmp ugt i64 %43, %61 @@ -15992,30 +15992,29 @@ _ZNSt12_Vector_baseIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEC2EmRKS4_.exit %68 = getelementptr inbounds i8, ptr %67, i64 8 %69 = load i64, ptr %68, align 8 %70 = shl nuw nsw i32 %.020.lcssa, 25 - %71 = and i32 %70, 234881024 - %72 = zext nneg i32 %71 to i64 - %73 = and i64 %69, -234881025 - %74 = or disjoint i64 %73, %72 - store i64 %74, ptr %68, align 8 + %71 = zext nneg i32 %70 to i64 + %72 = and i64 %69, -234881025 + %73 = or disjoint i64 %72, %71 + store i64 %73, ptr %68, align 8 br i1 %.not8.i.i.i, label %.loopexit, label %.lr.ph27 .lr.ph27: ; preds = %._crit_edge, %.lr.ph27 - %75 = phi i64 [ %86, %.lr.ph27 ], [ 0, %._crit_edge ] - %.0825 = phi i32 [ %85, %.lr.ph27 ], [ 0, %._crit_edge ] - %76 = getelementptr inbounds ptr, ptr %34, i64 %75 + %74 = phi i64 [ %85, %.lr.ph27 ], [ 0, %._crit_edge ] + %.0825 = phi i32 [ %84, %.lr.ph27 ], [ 0, %._crit_edge ] + %75 = getelementptr inbounds ptr, ptr %34, i64 %74 + %76 = load ptr, ptr %75, align 8 %77 = load ptr, ptr %76, align 8 - %78 = load ptr, ptr %77, align 8 - %79 = getelementptr inbounds i8, ptr %78, i64 24 - %80 = load ptr, ptr %79, align 8 - %81 = tail call noundef ptr %80(ptr noundef nonnull align 8 dereferenceable(32) %77) #17 - %82 = load ptr, ptr %81, align 8 - %83 = getelementptr inbounds i8, ptr %82, i64 296 - %84 = load ptr, ptr %83, align 8 - tail call void %84(ptr noundef nonnull align 8 dereferenceable(184) %81, i32 noundef %.020.lcssa) #17 - %85 = add i32 %.0825, 1 - %86 = zext i32 %85 to i64 - %87 = icmp ugt i64 %63, %86 - br i1 %87, label %.lr.ph27, label %.loopexit, !llvm.loop !60 + %78 = getelementptr inbounds i8, ptr %77, i64 24 + %79 = load ptr, ptr %78, align 8 + %80 = tail call noundef ptr %79(ptr noundef nonnull align 8 dereferenceable(32) %76) #17 + %81 = load ptr, ptr %80, align 8 + %82 = getelementptr inbounds i8, ptr %81, i64 296 + %83 = load ptr, ptr %82, align 8 + tail call void %83(ptr noundef nonnull align 8 dereferenceable(184) %80, i32 noundef %.020.lcssa) #17 + %84 = add i32 %.0825, 1 + %85 = zext i32 %84 to i64 + %86 = icmp ugt i64 %63, %85 + br i1 %86, label %.lr.ph27, label %.loopexit, !llvm.loop !60 .loopexit: ; preds = %.lr.ph27, %._crit_edge, %13 ret void @@ -23585,6 +23584,9 @@ declare i64 @llvm.umin.i64(i64, i64) #15 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #15 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umax.i32(i32, i32) #15 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.smax.i64(i64, i64) #15 @@ -23594,9 +23596,6 @@ declare i64 @llvm.smin.i64(i64, i64) #15 ; Function Attrs: nofree nounwind willreturn memory(argmem: read) declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #16 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #15 - attributes #0 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/grpc/optimized/rbac_service_config_parser.cc.ll b/bench/grpc/optimized/rbac_service_config_parser.cc.ll index d7d5aeb5919..983d27607a6 100644 --- a/bench/grpc/optimized/rbac_service_config_parser.cc.ll +++ b/bench/grpc/optimized/rbac_service_config_parser.cc.ll @@ -6884,33 +6884,28 @@ invoke.cont10: ; preds = %invoke.cont6 invoke.cont12: ; preds = %invoke.cont10 %7 = load i64, ptr %_M_node_count.i.i.i, align 8 %cmp14.not = icmp ugt i64 %7, %5 - %8 = load i32, ptr %result, align 4 - %9 = zext i32 %8 to i64 - %10 = select i1 %cmp14.not, i64 0, i64 4294967296 - %11 = select i1 %cmp14.not, i64 0, i64 %9 + %8 = select i1 %cmp14.not, i64 0, i64 4294967296 br label %cleanup cleanup: ; preds = %invoke.cont12, %invoke.cont6 - %retval.sroa.2.0 = phi i64 [ 0, %invoke.cont6 ], [ %10, %invoke.cont12 ] - %retval.sroa.0.0 = phi i64 [ 0, %invoke.cont6 ], [ %11, %invoke.cont12 ] - %12 = load ptr, ptr %error_field, align 8 - %cmp.not.i = icmp eq ptr %12, null + %retval.sroa.2.0 = phi i64 [ 0, %invoke.cont6 ], [ %8, %invoke.cont12 ] + %9 = load ptr, ptr %error_field, align 8 + %cmp.not.i = icmp eq ptr %9, null br i1 %cmp.not.i, label %_ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit, label %if.then.i if.then.i: ; preds = %cleanup - invoke void @_ZN9grpc_core16ValidationErrors8PopFieldEv(ptr noundef nonnull align 8 dereferenceable(72) %12) + invoke void @_ZN9grpc_core16ValidationErrors8PopFieldEv(ptr noundef nonnull align 8 dereferenceable(72) %9) to label %_ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %if.then.i - %13 = landingpad { ptr, i32 } + %10 = landingpad { ptr, i32 } catch ptr null - %14 = extractvalue { ptr, i32 } %13, 0 - call void @__clang_call_terminate(ptr %14) #26 + %11 = extractvalue { ptr, i32 } %10, 0 + call void @__clang_call_terminate(ptr %11) #26 unreachable _ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit: ; preds = %cleanup, %if.then.i - %retval.sroa.0.0.insert.insert = or i64 %retval.sroa.0.0, %retval.sroa.2.0 - ret i64 %retval.sroa.0.0.insert.insert + ret i64 %retval.sroa.2.0 eh.resume: ; preds = %lpad5, %lpad %.pn = phi { ptr, i32 } [ %4, %lpad5 ], [ %3, %lpad ] @@ -6920,7 +6915,7 @@ eh.resume: ; preds = %lpad5, %lpad declare void @_ZN9grpc_core4Rbac10Permission22MakeDestPortPermissionEi(ptr sret(%"struct.grpc_core::Rbac::Permission") align 8, i32 noundef) local_unnamed_addr #0 ; Function Attrs: mustprogress uwtable -define internal fastcc range(i16 0, 512) i16 @_ZN9grpc_core19LoadJsonObjectFieldINS_12_GLOBAL__N_110RbacConfig10RbacPolicy5Rules6Policy8MetadataEEESt8optionalIT_ERKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_12experimental4JsonESt4lessISG_ESaISt4pairIKSG_SI_EEERKNS_8JsonArgsESt17basic_string_viewIcSE_EPNS_16ValidationErrorsEb(ptr noundef nonnull align 8 dereferenceable(48) %json, ptr noundef nonnull align 8 dereferenceable(8) %args, i64 %field.coerce0, ptr %field.coerce1, ptr noundef %errors) unnamed_addr #3 personality ptr @__gxx_personality_v0 { +define internal fastcc range(i16 0, 257) i16 @_ZN9grpc_core19LoadJsonObjectFieldINS_12_GLOBAL__N_110RbacConfig10RbacPolicy5Rules6Policy8MetadataEEESt8optionalIT_ERKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_12experimental4JsonESt4lessISG_ESaISt4pairIKSG_SI_EEERKNS_8JsonArgsESt17basic_string_viewIcSE_EPNS_16ValidationErrorsEb(ptr noundef nonnull align 8 dereferenceable(48) %json, ptr noundef nonnull align 8 dereferenceable(8) %args, i64 %field.coerce0, ptr %field.coerce1, ptr noundef %errors) unnamed_addr #3 personality ptr @__gxx_personality_v0 { entry: %error_field = alloca %"class.grpc_core::ValidationErrors::ScopedField", align 8 %ref.tmp = alloca %"class.std::__cxx11::basic_string", align 8 @@ -6974,33 +6969,28 @@ invoke.cont10: ; preds = %invoke.cont6 invoke.cont12: ; preds = %invoke.cont10 %7 = load i64, ptr %_M_node_count.i.i.i, align 8 %cmp14.not = icmp ugt i64 %7, %5 - %result.val = load i8, ptr %result, align 1 - %8 = zext i8 %result.val to i16 - %9 = select i1 %cmp14.not, i16 0, i16 256 - %10 = select i1 %cmp14.not, i16 0, i16 %8 + %8 = select i1 %cmp14.not, i16 0, i16 256 br label %cleanup cleanup: ; preds = %invoke.cont12, %invoke.cont6 - %retval.sroa.2.0 = phi i16 [ 0, %invoke.cont6 ], [ %9, %invoke.cont12 ] - %retval.sroa.0.0 = phi i16 [ 0, %invoke.cont6 ], [ %10, %invoke.cont12 ] - %11 = load ptr, ptr %error_field, align 8 - %cmp.not.i = icmp eq ptr %11, null + %retval.sroa.2.0 = phi i16 [ 0, %invoke.cont6 ], [ %8, %invoke.cont12 ] + %9 = load ptr, ptr %error_field, align 8 + %cmp.not.i = icmp eq ptr %9, null br i1 %cmp.not.i, label %_ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit, label %if.then.i if.then.i: ; preds = %cleanup - invoke void @_ZN9grpc_core16ValidationErrors8PopFieldEv(ptr noundef nonnull align 8 dereferenceable(72) %11) + invoke void @_ZN9grpc_core16ValidationErrors8PopFieldEv(ptr noundef nonnull align 8 dereferenceable(72) %9) to label %_ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %if.then.i - %12 = landingpad { ptr, i32 } + %10 = landingpad { ptr, i32 } catch ptr null - %13 = extractvalue { ptr, i32 } %12, 0 - call void @__clang_call_terminate(ptr %13) #26 + %11 = extractvalue { ptr, i32 } %10, 0 + call void @__clang_call_terminate(ptr %11) #26 unreachable _ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit: ; preds = %cleanup, %if.then.i - %retval.sroa.0.0.insert.insert = or i16 %retval.sroa.0.0, %retval.sroa.2.0 - ret i16 %retval.sroa.0.0.insert.insert + ret i16 %retval.sroa.2.0 eh.resume: ; preds = %lpad5, %lpad %.pn = phi { ptr, i32 } [ %4, %lpad5 ], [ %3, %lpad ] @@ -13400,33 +13390,28 @@ invoke.cont10: ; preds = %invoke.cont6 invoke.cont12: ; preds = %invoke.cont10 %7 = load i64, ptr %_M_node_count.i.i.i, align 8 %cmp14.not = icmp ugt i64 %7, %5 - %8 = load i32, ptr %result, align 4 - %9 = zext i32 %8 to i64 - %10 = select i1 %cmp14.not, i64 0, i64 4294967296 - %11 = select i1 %cmp14.not, i64 0, i64 %9 + %8 = select i1 %cmp14.not, i64 0, i64 4294967296 br label %cleanup cleanup: ; preds = %invoke.cont12, %invoke.cont6 - %retval.sroa.2.0 = phi i64 [ 0, %invoke.cont6 ], [ %10, %invoke.cont12 ] - %retval.sroa.0.0 = phi i64 [ 0, %invoke.cont6 ], [ %11, %invoke.cont12 ] - %12 = load ptr, ptr %error_field, align 8 - %cmp.not.i = icmp eq ptr %12, null + %retval.sroa.2.0 = phi i64 [ 0, %invoke.cont6 ], [ %8, %invoke.cont12 ] + %9 = load ptr, ptr %error_field, align 8 + %cmp.not.i = icmp eq ptr %9, null br i1 %cmp.not.i, label %_ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit, label %if.then.i if.then.i: ; preds = %cleanup - invoke void @_ZN9grpc_core16ValidationErrors8PopFieldEv(ptr noundef nonnull align 8 dereferenceable(72) %12) + invoke void @_ZN9grpc_core16ValidationErrors8PopFieldEv(ptr noundef nonnull align 8 dereferenceable(72) %9) to label %_ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %if.then.i - %13 = landingpad { ptr, i32 } + %10 = landingpad { ptr, i32 } catch ptr null - %14 = extractvalue { ptr, i32 } %13, 0 - call void @__clang_call_terminate(ptr %14) #26 + %11 = extractvalue { ptr, i32 } %10, 0 + call void @__clang_call_terminate(ptr %11) #26 unreachable _ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit: ; preds = %cleanup, %if.then.i - %retval.sroa.0.0.insert.insert = or i64 %retval.sroa.0.0, %retval.sroa.2.0 - ret i64 %retval.sroa.0.0.insert.insert + ret i64 %retval.sroa.2.0 eh.resume: ; preds = %lpad5, %lpad %.pn = phi { ptr, i32 } [ %4, %lpad5 ], [ %3, %lpad ] diff --git a/bench/grpc/optimized/retry_service_config.cc.ll b/bench/grpc/optimized/retry_service_config.cc.ll index fa743fe61dd..5554e58b713 100644 --- a/bench/grpc/optimized/retry_service_config.cc.ll +++ b/bench/grpc/optimized/retry_service_config.cc.ll @@ -941,33 +941,28 @@ invoke.cont11: ; preds = %invoke.cont6 invoke.cont13: ; preds = %invoke.cont11 %7 = load i64, ptr %_M_node_count.i.i.i, align 8 %cmp16.not = icmp ugt i64 %7, %5 - %8 = load i32, ptr %result, align 4 - %9 = zext i32 %8 to i64 - %10 = select i1 %cmp16.not, i64 0, i64 4294967296 - %11 = select i1 %cmp16.not, i64 0, i64 %9 + %8 = select i1 %cmp16.not, i64 0, i64 4294967296 br label %cleanup cleanup: ; preds = %invoke.cont13, %invoke.cont6 - %retval.sroa.2.0 = phi i64 [ 0, %invoke.cont6 ], [ %10, %invoke.cont13 ] - %retval.sroa.0.0 = phi i64 [ 0, %invoke.cont6 ], [ %11, %invoke.cont13 ] - %12 = load ptr, ptr %error_field, align 8 - %cmp.not.i = icmp eq ptr %12, null + %retval.sroa.2.0 = phi i64 [ 0, %invoke.cont6 ], [ %8, %invoke.cont13 ] + %9 = load ptr, ptr %error_field, align 8 + %cmp.not.i = icmp eq ptr %9, null br i1 %cmp.not.i, label %_ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit, label %if.then.i if.then.i: ; preds = %cleanup - invoke void @_ZN9grpc_core16ValidationErrors8PopFieldEv(ptr noundef nonnull align 8 dereferenceable(72) %12) + invoke void @_ZN9grpc_core16ValidationErrors8PopFieldEv(ptr noundef nonnull align 8 dereferenceable(72) %9) to label %_ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %if.then.i - %13 = landingpad { ptr, i32 } + %10 = landingpad { ptr, i32 } catch ptr null - %14 = extractvalue { ptr, i32 } %13, 0 - call void @__clang_call_terminate(ptr %14) #22 + %11 = extractvalue { ptr, i32 } %10, 0 + call void @__clang_call_terminate(ptr %11) #22 unreachable _ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit: ; preds = %cleanup, %if.then.i - %retval.sroa.0.0.insert.insert = or i64 %retval.sroa.0.0, %retval.sroa.2.0 - ret i64 %retval.sroa.0.0.insert.insert + ret i64 %retval.sroa.2.0 eh.resume: ; preds = %lpad5, %lpad %.pn = phi { ptr, i32 } [ %4, %lpad5 ], [ %3, %lpad ] diff --git a/bench/hdf5/optimized/H5Lint.c.ll b/bench/hdf5/optimized/H5Lint.c.ll index d726b8ab030..cab13f042ab 100644 --- a/bench/hdf5/optimized/H5Lint.c.ll +++ b/bench/hdf5/optimized/H5Lint.c.ll @@ -421,7 +421,7 @@ define internal fastcc range(i32 -1, 1) i32 @H5L__create_real(ptr noundef %0, pt %9 = alloca i32, align 4 %10 = tail call ptr @H5G_normalize(ptr noundef %1) #10 %11 = icmp eq ptr %10, null - br i1 %11, label %41, label %12 + br i1 %11, label %40, label %12 12: ; preds = %7 %.not = icmp eq i64 %6, 0 @@ -436,7 +436,7 @@ define internal fastcc range(i32 -1, 1) i32 @H5L__create_real(ptr noundef %0, pt %17 = load i64, ptr @H5E_ARGS_g, align 8 %18 = load i64, ptr @H5E_BADTYPE_g, align 8 %19 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5L__create_real, i32 noundef 699, i64 noundef %17, i64 noundef %18, ptr noundef nonnull @.str.15) #10 - br label %45 + br label %44 20: ; preds = %13 %21 = call i32 @H5CX_get_intermediate_group(ptr noundef nonnull %9) #10 @@ -447,7 +447,7 @@ define internal fastcc range(i32 -1, 1) i32 @H5L__create_real(ptr noundef %0, pt %24 = load i64, ptr @H5E_LINK_g, align 8 %25 = load i64, ptr @H5E_CANTGET_g, align 8 %26 = call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5L__create_real, i32 noundef 703, i64 noundef %24, i64 noundef %25, ptr noundef nonnull @.str.31) #10 - br label %45 + br label %44 27: ; preds = %20 %28 = load i32, ptr %9, align 4 @@ -459,40 +459,39 @@ define internal fastcc range(i32 -1, 1) i32 @H5L__create_real(ptr noundef %0, pt %.021 = phi i32 [ 0, %12 ], [ %spec.select, %27 ] %.020 = phi ptr [ null, %12 ], [ %14, %27 ] %.not26 = icmp eq ptr %5, null - %30 = or disjoint i32 %.021, 32 - %spec.select28 = select i1 %.not26, i32 %.021, i32 %30 + %spec.select28 = select i1 %.not26, i32 %.021, i32 32 store ptr %3, ptr %8, align 8 - %31 = getelementptr inbounds i8, ptr %8, i64 8 - store ptr %.020, ptr %31, align 8 - %32 = getelementptr inbounds i8, ptr %8, i64 16 - store ptr %2, ptr %32, align 8 - %33 = getelementptr inbounds i8, ptr %8, i64 24 - store ptr %5, ptr %33, align 8 - %34 = getelementptr inbounds i8, ptr %8, i64 32 - store ptr %4, ptr %34, align 8 - %35 = call i32 @H5G_traverse(ptr noundef %0, ptr noundef %1, i32 noundef %spec.select28, ptr noundef nonnull @H5L__link_cb, ptr noundef nonnull %8) #10 - %36 = icmp slt i32 %35, 0 - br i1 %36, label %37, label %45 - -37: ; preds = %29 - %38 = load i64, ptr @H5E_LINK_g, align 8 - %39 = load i64, ptr @H5E_CANTINSERT_g, align 8 - %40 = call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5L__create_real, i32 noundef 732, i64 noundef %38, i64 noundef %39, ptr noundef nonnull @.str.32) #10 - br label %45 - -41: ; preds = %7 - %42 = load i64, ptr @H5E_LINK_g, align 8 - %43 = load i64, ptr @H5E_BADVALUE_g, align 8 - %44 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5L__create_real, i32 noundef 691, i64 noundef %42, i64 noundef %43, ptr noundef nonnull @.str.6) #10 - br label %47 - -45: ; preds = %29, %37, %23, %16 - %.0.ph = phi i32 [ 0, %29 ], [ -1, %37 ], [ -1, %23 ], [ -1, %16 ] - %46 = call ptr @H5MM_xfree(ptr noundef nonnull %10) #10 - br label %47 - -47: ; preds = %41, %45 - %.031 = phi i32 [ %.0.ph, %45 ], [ -1, %41 ] + %30 = getelementptr inbounds i8, ptr %8, i64 8 + store ptr %.020, ptr %30, align 8 + %31 = getelementptr inbounds i8, ptr %8, i64 16 + store ptr %2, ptr %31, align 8 + %32 = getelementptr inbounds i8, ptr %8, i64 24 + store ptr %5, ptr %32, align 8 + %33 = getelementptr inbounds i8, ptr %8, i64 32 + store ptr %4, ptr %33, align 8 + %34 = call i32 @H5G_traverse(ptr noundef %0, ptr noundef %1, i32 noundef %spec.select28, ptr noundef nonnull @H5L__link_cb, ptr noundef nonnull %8) #10 + %35 = icmp slt i32 %34, 0 + br i1 %35, label %36, label %44 + +36: ; preds = %29 + %37 = load i64, ptr @H5E_LINK_g, align 8 + %38 = load i64, ptr @H5E_CANTINSERT_g, align 8 + %39 = call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5L__create_real, i32 noundef 732, i64 noundef %37, i64 noundef %38, ptr noundef nonnull @.str.32) #10 + br label %44 + +40: ; preds = %7 + %41 = load i64, ptr @H5E_LINK_g, align 8 + %42 = load i64, ptr @H5E_BADVALUE_g, align 8 + %43 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5L__create_real, i32 noundef 691, i64 noundef %41, i64 noundef %42, ptr noundef nonnull @.str.6) #10 + br label %46 + +44: ; preds = %29, %36, %23, %16 + %.0.ph = phi i32 [ 0, %29 ], [ -1, %36 ], [ -1, %23 ], [ -1, %16 ] + %45 = call ptr @H5MM_xfree(ptr noundef nonnull %10) #10 + br label %46 + +46: ; preds = %40, %44 + %.031 = phi i32 [ %.0.ph, %44 ], [ -1, %40 ] ret i32 %.031 } diff --git a/bench/hdf5/optimized/H5MFsection.c.ll b/bench/hdf5/optimized/H5MFsection.c.ll index 6b43db95476..3f3f41012e5 100644 --- a/bench/hdf5/optimized/H5MFsection.c.ll +++ b/bench/hdf5/optimized/H5MFsection.c.ll @@ -595,65 +595,43 @@ define internal range(i32 -1, 1) i32 @H5MF__sect_large_shrink(ptr nocapture noun %3 = load ptr, ptr %0, align 8 %4 = load i64, ptr %3, align 8 switch i64 %4, label %5 [ - i64 -1, label %16 - i64 0, label %16 + i64 -1, label %8 + i64 0, label %8 ] 5: ; preds = %2 %6 = load ptr, ptr %1, align 8 %7 = tail call i64 @H5F_get_base_addr(ptr noundef %6) #5 - %8 = add i64 %7, %4 - %9 = load ptr, ptr %1, align 8 - %10 = getelementptr inbounds i8, ptr %9, i64 16 - %11 = load ptr, ptr %10, align 8 - %12 = getelementptr inbounds i8, ptr %11, i64 1984 - %13 = load i64, ptr %12, align 8 - %14 = urem i64 %8, %13 - %.not26 = icmp eq i64 %14, 0 - %15 = sub i64 %13, %14 - %spec.select = select i1 %.not26, i64 0, i64 %15 %.pre = load ptr, ptr %0, align 8 %.pre28 = load i64, ptr %.pre, align 8 - br label %16 - -16: ; preds = %5, %2, %2 - %17 = phi i64 [ %4, %2 ], [ %4, %2 ], [ %.pre28, %5 ] - %18 = phi ptr [ %3, %2 ], [ %3, %2 ], [ %.pre, %5 ] - %.0 = phi i64 [ 0, %2 ], [ 0, %2 ], [ %spec.select, %5 ] - %19 = load ptr, ptr %1, align 8 - %20 = getelementptr inbounds i8, ptr %1, i64 8 - %21 = load i32, ptr %20, align 8 - %22 = add i64 %17, %.0 - %23 = getelementptr inbounds i8, ptr %18, i64 8 - %24 = load i64, ptr %23, align 8 - %25 = sub i64 %24, %.0 - %26 = tail call i32 @H5F__free(ptr noundef %19, i32 noundef %21, i64 noundef %22, i64 noundef %25) #5 - %27 = icmp slt i32 %26, 0 - br i1 %27, label %28, label %32 - -28: ; preds = %16 - %29 = load i64, ptr @H5E_RESOURCE_g, align 8 - %30 = load i64, ptr @H5E_CANTFREE_g, align 8 - %31 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5MF__sect_large_shrink, i32 noundef 909, i64 noundef %29, i64 noundef %30, ptr noundef nonnull @.str.7) #5 - br label %38 - -32: ; preds = %16 - %.not27 = icmp eq i64 %.0, 0 - %33 = load ptr, ptr %0, align 8 - br i1 %.not27, label %36, label %34 - -34: ; preds = %32 - %35 = getelementptr inbounds i8, ptr %33, i64 8 - store i64 %.0, ptr %35, align 8 - br label %38 - -36: ; preds = %32 - %37 = tail call ptr @H5FL_reg_free(ptr noundef nonnull @H5_H5MF_free_section_t_reg_free_list, ptr noundef %33) #5 + br label %8 + +8: ; preds = %5, %2, %2 + %9 = phi i64 [ %.pre28, %5 ], [ %4, %2 ], [ %4, %2 ] + %10 = phi ptr [ %.pre, %5 ], [ %3, %2 ], [ %3, %2 ] + %11 = load ptr, ptr %1, align 8 + %12 = getelementptr inbounds i8, ptr %1, i64 8 + %13 = load i32, ptr %12, align 8 + %14 = getelementptr inbounds i8, ptr %10, i64 8 + %15 = load i64, ptr %14, align 8 + %16 = tail call i32 @H5F__free(ptr noundef %11, i32 noundef %13, i64 noundef %9, i64 noundef %15) #5 + %17 = icmp slt i32 %16, 0 + br i1 %17, label %18, label %22 + +18: ; preds = %8 + %19 = load i64, ptr @H5E_RESOURCE_g, align 8 + %20 = load i64, ptr @H5E_CANTFREE_g, align 8 + %21 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5MF__sect_large_shrink, i32 noundef 909, i64 noundef %19, i64 noundef %20, ptr noundef nonnull @.str.7) #5 + br label %25 + +22: ; preds = %8 + %23 = load ptr, ptr %0, align 8 + %24 = tail call ptr @H5FL_reg_free(ptr noundef nonnull @H5_H5MF_free_section_t_reg_free_list, ptr noundef %23) #5 store ptr null, ptr %0, align 8 - br label %38 + br label %25 -38: ; preds = %34, %36, %28 - %.022 = phi i32 [ -1, %28 ], [ 0, %34 ], [ 0, %36 ] +25: ; preds = %22, %18 + %.022 = phi i32 [ -1, %18 ], [ 0, %22 ] ret i32 %.022 } diff --git a/bench/hermes/optimized/String.cpp.ll b/bench/hermes/optimized/String.cpp.ll index e009f52b5a8..a0aad97ddba 100644 --- a/bench/hermes/optimized/String.cpp.ll +++ b/bench/hermes/optimized/String.cpp.ll @@ -11990,38 +11990,23 @@ if.then20: ; preds = %if.end17 while.cond: ; preds = %if.end17, %if.end28 %__p.sroa.5.0 = phi ptr [ %__p.sroa.5.1, %if.end28 ], [ %__p1.sroa.5.0, %if.end17 ] %__p.sroa.0.0 = phi ptr [ %__p.sroa.0.1, %if.end28 ], [ %__p1.sroa.0.0, %if.end17 ] - %__current.sroa.0.0 = phi ptr [ %__current.sroa.0.2, %if.end28 ], [ %__current.sroa.0.1, %if.end17 ] - %__current.sroa.9.0 = phi ptr [ %__current.sroa.9.2, %if.end28 ], [ %__current.sroa.9.1, %if.end17 ] - %tobool.not.i.i.i = icmp eq ptr %__current.sroa.0.0, null - br i1 %tobool.not.i.i.i, label %cond.false.i.i.i, label %cond.true.i.i.i - -cond.true.i.i.i: ; preds = %while.cond - %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__current.sroa.0.0, i64 -1 - %0 = load i8, ptr %incdec.ptr.i.i.i, align 1 - %1 = sext i8 %0 to i16 - br label %_ZNKSt16reverse_iteratorIN6hermes2vm10StringView14const_iteratorEEdeEv.exit.i - -cond.false.i.i.i: ; preds = %while.cond + %__current.sroa.9.0 = phi ptr [ %incdec.ptr3.i.i.i, %if.end28 ], [ %__current.sroa.9.1, %if.end17 ] %incdec.ptr3.i.i.i = getelementptr inbounds i8, ptr %__current.sroa.9.0, i64 -2 - %2 = load i16, ptr %incdec.ptr3.i.i.i, align 2 - br label %_ZNKSt16reverse_iteratorIN6hermes2vm10StringView14const_iteratorEEdeEv.exit.i - -_ZNKSt16reverse_iteratorIN6hermes2vm10StringView14const_iteratorEEdeEv.exit.i: ; preds = %cond.false.i.i.i, %cond.true.i.i.i - %cond.i.i.i = phi i16 [ %1, %cond.true.i.i.i ], [ %2, %cond.false.i.i.i ] + %0 = load i16, ptr %incdec.ptr3.i.i.i, align 2 %tobool.not.i.i2.i = icmp eq ptr %__p.sroa.0.0, null br i1 %tobool.not.i.i2.i, label %_ZNK9__gnu_cxx5__ops19_Iter_equal_to_iterclISt16reverse_iteratorIN6hermes2vm10StringView14const_iteratorEES8_EEbT_T0_.exit, label %_ZNK9__gnu_cxx5__ops19_Iter_equal_to_iterclISt16reverse_iteratorIN6hermes2vm10StringView14const_iteratorEES8_EEbT_T0_.exit.thread -_ZNK9__gnu_cxx5__ops19_Iter_equal_to_iterclISt16reverse_iteratorIN6hermes2vm10StringView14const_iteratorEES8_EEbT_T0_.exit: ; preds = %_ZNKSt16reverse_iteratorIN6hermes2vm10StringView14const_iteratorEEdeEv.exit.i +_ZNK9__gnu_cxx5__ops19_Iter_equal_to_iterclISt16reverse_iteratorIN6hermes2vm10StringView14const_iteratorEES8_EEbT_T0_.exit: ; preds = %while.cond %incdec.ptr3.i.i9.i = getelementptr inbounds i8, ptr %__p.sroa.5.0, i64 -2 - %3 = load i16, ptr %incdec.ptr3.i.i9.i, align 2 - %cmp.i = icmp eq i16 %cond.i.i.i, %3 + %1 = load i16, ptr %incdec.ptr3.i.i9.i, align 2 + %cmp.i = icmp eq i16 %0, %1 br i1 %cmp.i, label %_ZNSt16reverse_iteratorIN6hermes2vm10StringView14const_iteratorEEppEv.exit58, label %while.end -_ZNK9__gnu_cxx5__ops19_Iter_equal_to_iterclISt16reverse_iteratorIN6hermes2vm10StringView14const_iteratorEES8_EEbT_T0_.exit.thread: ; preds = %_ZNKSt16reverse_iteratorIN6hermes2vm10StringView14const_iteratorEEdeEv.exit.i +_ZNK9__gnu_cxx5__ops19_Iter_equal_to_iterclISt16reverse_iteratorIN6hermes2vm10StringView14const_iteratorEES8_EEbT_T0_.exit.thread: ; preds = %while.cond %incdec.ptr.i.i4.i = getelementptr inbounds i8, ptr %__p.sroa.0.0, i64 -1 - %4 = load i8, ptr %incdec.ptr.i.i4.i, align 1 - %5 = sext i8 %4 to i16 - %cmp.i99 = icmp eq i16 %cond.i.i.i, %5 + %2 = load i8, ptr %incdec.ptr.i.i4.i, align 1 + %3 = sext i8 %2 to i16 + %cmp.i99 = icmp eq i16 %0, %3 br i1 %cmp.i99, label %_ZNSt16reverse_iteratorIN6hermes2vm10StringView14const_iteratorEEppEv.exit58, label %while.end _ZNSt16reverse_iteratorIN6hermes2vm10StringView14const_iteratorEEppEv.exit58: ; preds = %_ZNK9__gnu_cxx5__ops19_Iter_equal_to_iterclISt16reverse_iteratorIN6hermes2vm10StringView14const_iteratorEES8_EEbT_T0_.exit, %_ZNK9__gnu_cxx5__ops19_Iter_equal_to_iterclISt16reverse_iteratorIN6hermes2vm10StringView14const_iteratorEES8_EEbT_T0_.exit.thread @@ -12040,14 +12025,8 @@ if.then27: ; preds = %_ZNSt16reverse_iter br label %return if.end28: ; preds = %_ZNSt16reverse_iteratorIN6hermes2vm10StringView14const_iteratorEEppEv.exit58 - %incdec.ptr.i.i71 = getelementptr inbounds i8, ptr %__current.sroa.0.0, i64 -1 - %__current.sroa.0.2 = select i1 %tobool.not.i.i.i, ptr null, ptr %incdec.ptr.i.i71 - %__current.sroa.9.2.idx = select i1 %tobool.not.i.i.i, i64 -2, i64 0 - %__current.sroa.9.2 = getelementptr inbounds i8, ptr %__current.sroa.9.0, i64 %__current.sroa.9.2.idx - %cmp.i.i83 = icmp eq ptr %__current.sroa.0.2, %retval.sroa.0.0.copyload.i1.i28 - %cmp5.i.i84 = icmp eq ptr %__current.sroa.9.2, %retval.sroa.2.0.copyload.i3.i30 - %retval.0.i.i85 = select i1 %tobool.not.i.i.i, i1 %cmp5.i.i84, i1 %cmp.i.i83 - br i1 %retval.0.i.i85, label %if.then31, label %while.cond, !llvm.loop !161 + %cmp5.i.i84 = icmp eq ptr %incdec.ptr3.i.i.i, %retval.sroa.2.0.copyload.i3.i30 + br i1 %cmp5.i.i84, label %if.then31, label %while.cond, !llvm.loop !161 if.then31: ; preds = %if.end28 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %agg.result, ptr noundef nonnull align 8 dereferenceable(16) %__last1, i64 16, i1 false) diff --git a/bench/hermes/optimized/zip.c.ll b/bench/hermes/optimized/zip.c.ll index d0291bf6f32..c038cb4369f 100644 --- a/bench/hermes/optimized/zip.c.ll +++ b/bench/hermes/optimized/zip.c.ll @@ -4884,8 +4884,9 @@ if.end: ; preds = %cond.end if.end7: ; preds = %if.end %add = add i64 %1, %src_buf_ofs.0 - %mul = shl i64 %out_buf_capacity.0, 1 - %spec.store.select = call i64 @llvm.umax.i64(i64 %mul, i64 128) + %mul = shl nuw nsw i64 %out_buf_capacity.0, 1 + %cmp8 = icmp eq i64 %out_buf_capacity.0, 0 + %spec.store.select = select i1 %cmp8, i64 128, i64 %mul %call11 = call ptr @realloc(ptr noundef %pBuf.0, i64 noundef %spec.store.select) #32 %tobool12.not = icmp eq ptr %call11, null br i1 %tobool12.not, label %return.sink.split, label %for.cond @@ -13841,8 +13842,8 @@ if.end9.i: ; preds = %while.cond.i if.end16: ; preds = %while.cond.i %call17 = call i32 @stat(ptr noundef nonnull %pZip_filename, ptr noundef nonnull %file_stat) #30 - %cmp18.not = icmp ne i32 %call17, 0 - br i1 %cmp18.not, label %if.then20, label %if.else + %cmp18.not.not = icmp eq i32 %call17, 0 + br i1 %cmp18.not.not, label %if.else, label %if.then20 if.then20: ; preds = %if.end16 %call21 = call i32 @mz_zip_writer_init_file(ptr noundef nonnull %zip_archive, ptr noundef nonnull %pZip_filename, i64 noundef 0) @@ -13948,9 +13949,7 @@ mz_zip_writer_end.exit: ; preds = %if.end15.i, %land.l 22: ; preds = %if.end34, %lor.lhs.false4.i, %lor.lhs.false6.i, %mz_zip_writer_end.exit %23 = phi i32 [ %spec.select, %mz_zip_writer_end.exit ], [ 0, %lor.lhs.false6.i ], [ 0, %lor.lhs.false4.i ], [ 0, %if.end34 ] - %tobool44 = icmp eq i32 %23, 0 - %or.cond3 = and i1 %cmp18.not, %tobool44 - br i1 %or.cond3, label %if.then47, label %return + br i1 %cmp18.not.not, label %return, label %if.then47 if.then47: ; preds = %22 %call48 = call i32 @remove(ptr noundef nonnull %pZip_filename) #30 @@ -19811,10 +19810,10 @@ declare noundef i32 @mkdir(ptr nocapture noundef readonly, i32 noundef) local_un declare ptr @__errno_location() local_unnamed_addr #26 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #27 +declare i32 @llvm.umin.i32(i32, i32) #27 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #27 +declare i64 @llvm.umax.i64(i64, i64) #27 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #27 diff --git a/bench/hyperscan/optimized/rose_build_bytecode.cpp.ll b/bench/hyperscan/optimized/rose_build_bytecode.cpp.ll index e311cb2be7b..66d67b817af 100644 --- a/bench/hyperscan/optimized/rose_build_bytecode.cpp.ll +++ b/bench/hyperscan/optimized/rose_build_bytecode.cpp.ll @@ -5410,7 +5410,6 @@ if.then32.i.i.i.i.i: ; preds = %_ZNKSt4lessIN3ue29s %_M_right.i149.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i.i.i.i.i.i860, i64 24 %439 = load ptr, ptr %_M_right.i149.i.i.i.i.i, align 8 %cmp35.i.i.i.i.i = icmp eq ptr %439, null - %spec.select.i.i.i.i.i = select i1 %cmp35.i.i.i.i.i, ptr null, ptr %__y.addr.0.lcssa.i.i.i55.i.i.i %spec.select249.i.i.i.i.i = select i1 %cmp35.i.i.i.i.i, ptr %call.i.i.i.i.i.i860, ptr %__y.addr.0.lcssa.i.i.i55.i.i.i br label %if.then.i.i.i.i854 @@ -5474,7 +5473,6 @@ if.then64.i.i.i.i.i: ; preds = %_ZNKSt4lessIN3ue29s %_M_right.i212.i.i.i.i.i = getelementptr inbounds i8, ptr %__y.addr.0.lcssa.i.i.i55.i.i.i, i64 24 %446 = load ptr, ptr %_M_right.i212.i.i.i.i.i, align 8 %cmp67.i.i.i.i.i = icmp eq ptr %446, null - %spec.select250.i.i.i.i.i = select i1 %cmp67.i.i.i.i.i, ptr null, ptr %call.i183.i.i.i.i.i %spec.select251.i.i.i.i.i = select i1 %cmp67.i.i.i.i.i, ptr %__y.addr.0.lcssa.i.i.i55.i.i.i, ptr %call.i183.i.i.i.i.i br label %if.then.i.i.i.i854 @@ -5605,11 +5603,8 @@ _ZNKSt4lessIN3ue29suffix_idEEclERKS1_S4_.exit53.i.i.i.i: ; preds = %if.end36.i.i if.then.i.i.i.i854: ; preds = %_ZNKSt4lessIN3ue29suffix_idEEclERKS1_S4_.exit53.i.i.i.i, %do.body32.i.i42.i.i.i.i, %do.body20.i.i36.i.i.i.i, %do.body8.i.i30.i.i.i.i, %if.end12.i.i.i.i, %if.then.i48.i.i.i, %if.then64.i.i.i.i.i, %if.then50.i.i.i.i.i, %if.then32.i.i.i.i.i, %_ZNKSt4lessIN3ue29suffix_idEEclERKS1_S4_.exit.i.i.i.i.i, %do.body32.i.i.i.i.i.i.i, %do.body20.i.i.i.i.i.i.i, %do.body8.i.i.i.i.i.i.i, %land.lhs.true.i.i.i.i.i %retval.sroa.12.2.i30.i.i.i.i = phi ptr [ %spec.select251.i.i.i.i.i, %if.then64.i.i.i.i.i ], [ %spec.select249.i.i.i.i.i, %if.then32.i.i.i.i.i ], [ %422, %do.body32.i.i.i.i.i.i.i ], [ %422, %do.body20.i.i.i.i.i.i.i ], [ %422, %do.body8.i.i.i.i.i.i.i ], [ %422, %land.lhs.true.i.i.i.i.i ], [ %__y.addr.0.lcssa.i.i.i55.i.i.i, %if.then50.i.i.i.i.i ], [ %422, %_ZNKSt4lessIN3ue29suffix_idEEclERKS1_S4_.exit.i.i.i.i.i ], [ %__y.0.lcssa83.i.i.i.i, %do.body32.i.i42.i.i.i.i ], [ %__y.0.lcssa83.i.i.i.i, %do.body20.i.i36.i.i.i.i ], [ %__y.0.lcssa83.i.i.i.i, %do.body8.i.i30.i.i.i.i ], [ %__y.0.lcssa83.i.i.i.i, %if.end12.i.i.i.i ], [ %__y.0.lcssa83.i.i.i.i, %_ZNKSt4lessIN3ue29suffix_idEEclERKS1_S4_.exit53.i.i.i.i ], [ %__y.0.lcssa84.i.i.i.i, %if.then.i48.i.i.i ] - %retval.sroa.0.2.i29.i.i.i.i = phi ptr [ %spec.select250.i.i.i.i.i, %if.then64.i.i.i.i.i ], [ %spec.select.i.i.i.i.i, %if.then32.i.i.i.i.i ], [ null, %do.body32.i.i.i.i.i.i.i ], [ null, %do.body20.i.i.i.i.i.i.i ], [ null, %do.body8.i.i.i.i.i.i.i ], [ null, %land.lhs.true.i.i.i.i.i ], [ null, %if.then50.i.i.i.i.i ], [ null, %_ZNKSt4lessIN3ue29suffix_idEEclERKS1_S4_.exit.i.i.i.i.i ], [ null, %do.body32.i.i42.i.i.i.i ], [ null, %do.body20.i.i36.i.i.i.i ], [ null, %do.body8.i.i30.i.i.i.i ], [ null, %if.end12.i.i.i.i ], [ null, %_ZNKSt4lessIN3ue29suffix_idEEclERKS1_S4_.exit53.i.i.i.i ], [ null, %if.then.i48.i.i.i ] - %cmp.not.i.i.i20.i.i.i = icmp ne ptr %retval.sroa.0.2.i29.i.i.i.i, null %cmp2.i.i.i.i.i.i855 = icmp eq ptr %393, %retval.sroa.12.2.i30.i.i.i.i - %or.cond.i.i.i.i.i.i = select i1 %cmp.not.i.i.i20.i.i.i, i1 true, i1 %cmp2.i.i.i.i.i.i855 - br i1 %or.cond.i.i.i.i.i.i, label %cleanup.thread.i.i.i.i, label %lor.rhs.i.i.i.i.i.i + br i1 %cmp2.i.i.i.i.i.i855, label %cleanup.thread.i.i.i.i, label %lor.rhs.i.i.i.i.i.i lor.rhs.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i854 %_M_storage.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %retval.sroa.12.2.i30.i.i.i.i, i64 32 @@ -23355,7 +23350,6 @@ if.then32.i.i.i.i: ; preds = %_ZNKSt4lessIN3ue27l %_M_right.i137.i.i.i.i = getelementptr inbounds i8, ptr %call.i.i.i.i.i, i64 24 %32 = load ptr, ptr %_M_right.i137.i.i.i.i, align 8 %cmp35.i.i.i.i = icmp eq ptr %32, null - %spec.select.i.i.i.i = select i1 %cmp35.i.i.i.i, ptr null, ptr %__y.addr.0.lcssa.i.i.i49.i.i %spec.select225.i.i.i.i = select i1 %cmp35.i.i.i.i, ptr %call.i.i.i.i.i, ptr %__y.addr.0.lcssa.i.i.i49.i.i br label %if.then.i.i.i @@ -23409,7 +23403,6 @@ if.then64.i.i.i.i: ; preds = %_ZNKSt4lessIN3ue27l %_M_right.i188.i.i.i.i = getelementptr inbounds i8, ptr %__y.addr.0.lcssa.i.i.i49.i.i, i64 24 %38 = load ptr, ptr %_M_right.i188.i.i.i.i, align 8 %cmp67.i.i.i.i = icmp eq ptr %38, null - %spec.select226.i.i.i.i = select i1 %cmp67.i.i.i.i, ptr null, ptr %call.i165.i.i.i.i %spec.select227.i.i.i.i = select i1 %cmp67.i.i.i.i, ptr %__y.addr.0.lcssa.i.i.i49.i.i, ptr %call.i165.i.i.i.i br label %if.then.i.i.i @@ -23520,11 +23513,8 @@ _ZNKSt4lessIN3ue27left_idEEclERKS1_S4_.exit47.i.i.i: ; preds = %if.end24.i.i40.i if.then.i.i.i: ; preds = %_ZNKSt4lessIN3ue27left_idEEclERKS1_S4_.exit47.i.i.i, %do.body20.i.i36.i.i.i, %do.body8.i.i30.i.i.i, %if.end12.i.i.i, %if.then.i42.i.i, %if.then64.i.i.i.i, %if.then50.i.i.i.i, %if.then32.i.i.i.i, %_ZNKSt4lessIN3ue27left_idEEclERKS1_S4_.exit.i.i.i.i, %do.body20.i.i.i.i.i.i, %do.body8.i.i.i.i.i.i, %land.lhs.true.i.i.i.i %retval.sroa.12.2.i30.i.i.i = phi ptr [ %spec.select227.i.i.i.i, %if.then64.i.i.i.i ], [ %spec.select225.i.i.i.i, %if.then32.i.i.i.i ], [ %18, %do.body20.i.i.i.i.i.i ], [ %18, %do.body8.i.i.i.i.i.i ], [ %18, %land.lhs.true.i.i.i.i ], [ %__y.addr.0.lcssa.i.i.i49.i.i, %if.then50.i.i.i.i ], [ %18, %_ZNKSt4lessIN3ue27left_idEEclERKS1_S4_.exit.i.i.i.i ], [ %__y.0.lcssa77.i.i.i, %do.body20.i.i36.i.i.i ], [ %__y.0.lcssa77.i.i.i, %do.body8.i.i30.i.i.i ], [ %__y.0.lcssa77.i.i.i, %if.end12.i.i.i ], [ %__y.0.lcssa77.i.i.i, %_ZNKSt4lessIN3ue27left_idEEclERKS1_S4_.exit47.i.i.i ], [ %__y.0.lcssa78.i.i.i, %if.then.i42.i.i ] - %retval.sroa.0.2.i29.i.i.i = phi ptr [ %spec.select226.i.i.i.i, %if.then64.i.i.i.i ], [ %spec.select.i.i.i.i, %if.then32.i.i.i.i ], [ null, %do.body20.i.i.i.i.i.i ], [ null, %do.body8.i.i.i.i.i.i ], [ null, %land.lhs.true.i.i.i.i ], [ null, %if.then50.i.i.i.i ], [ null, %_ZNKSt4lessIN3ue27left_idEEclERKS1_S4_.exit.i.i.i.i ], [ null, %do.body20.i.i36.i.i.i ], [ null, %do.body8.i.i30.i.i.i ], [ null, %if.end12.i.i.i ], [ null, %_ZNKSt4lessIN3ue27left_idEEclERKS1_S4_.exit47.i.i.i ], [ null, %if.then.i42.i.i ] - %cmp.not.i.i.i20.i.i = icmp ne ptr %retval.sroa.0.2.i29.i.i.i, null %cmp2.i.i.i.i.i = icmp eq ptr %1, %retval.sroa.12.2.i30.i.i.i - %or.cond.i.i.i.i.i = select i1 %cmp.not.i.i.i20.i.i, i1 true, i1 %cmp2.i.i.i.i.i - br i1 %or.cond.i.i.i.i.i, label %cleanup.thread.i.i.i, label %lor.rhs.i.i.i.i.i + br i1 %cmp2.i.i.i.i.i, label %cleanup.thread.i.i.i, label %lor.rhs.i.i.i.i.i lor.rhs.i.i.i.i.i: ; preds = %if.then.i.i.i %_M_storage.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %retval.sroa.12.2.i30.i.i.i, i64 32 diff --git a/bench/icu/optimized/package.ll b/bench/icu/optimized/package.ll index f883af8552d..8e278988205 100644 --- a/bench/icu/optimized/package.ll +++ b/bench/icu/optimized/package.ll @@ -2499,7 +2499,7 @@ if.else24.i: ; preds = %while.body.i br i1 %cmp.i, label %while.body.i, label %if.then, !llvm.loop !13 if.then: ; preds = %if.else24.i, %entry - %not = phi i32 [ 0, %entry ], [ %start.1.i, %if.else24.i ] + %start.0.lcssa.i = phi i32 [ 0, %entry ], [ %start.1.i, %if.else24.i ] %itemMax.i = getelementptr inbounds i8, ptr %this, i64 1176 %3 = load i32, ptr %itemMax.i, align 8 %cmp.not.i = icmp slt i32 %0, %3 @@ -2545,29 +2545,29 @@ if.end15.i.i: ; preds = %do.body.i.i, %land. _ZN6icu_757Package18ensureItemCapacityEv.exit: ; preds = %if.then, %if.end15.i.i %7 = phi i32 [ %0, %if.then ], [ %.pre, %if.end15.i.i ] - %cmp2 = icmp sgt i32 %7, %not + %cmp2 = icmp sgt i32 %7, %start.0.lcssa.i br i1 %cmp2, label %if.then3, label %_ZN6icu_757Package18ensureItemCapacityEv.exit.if.end_crit_edge _ZN6icu_757Package18ensureItemCapacityEv.exit.if.end_crit_edge: ; preds = %_ZN6icu_757Package18ensureItemCapacityEv.exit - %.pre32 = zext nneg i32 %not to i64 + %.pre26 = zext nneg i32 %start.0.lcssa.i to i64 br label %if.end if.then3: ; preds = %_ZN6icu_757Package18ensureItemCapacityEv.exit %items = getelementptr inbounds i8, ptr %this, i64 1184 %8 = load ptr, ptr %items, align 8 - %idx.ext = zext nneg i32 %not to i64 + %idx.ext = zext nneg i32 %start.0.lcssa.i to i64 %add.ptr = getelementptr inbounds %"struct.icu_75::Item", ptr %8, i64 %idx.ext %add.ptr4 = getelementptr inbounds i8, ptr %add.ptr, i64 24 - %sub = sub nsw i32 %7, %not + %sub = sub nsw i32 %7, %start.0.lcssa.i %conv = sext i32 %sub to i64 %mul = mul nsw i64 %conv, 24 tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %add.ptr4, ptr align 8 %add.ptr, i64 %mul, i1 false) - %.pre30 = load i32, ptr %itemCount.i, align 4 + %.pre25 = load i32, ptr %itemCount.i, align 4 br label %if.end if.end: ; preds = %_ZN6icu_757Package18ensureItemCapacityEv.exit.if.end_crit_edge, %if.then3 - %idx.ext11.pre-phi = phi i64 [ %.pre32, %_ZN6icu_757Package18ensureItemCapacityEv.exit.if.end_crit_edge ], [ %idx.ext, %if.then3 ] - %9 = phi i32 [ %7, %_ZN6icu_757Package18ensureItemCapacityEv.exit.if.end_crit_edge ], [ %.pre30, %if.then3 ] + %idx.ext11.pre-phi = phi i64 [ %.pre26, %_ZN6icu_757Package18ensureItemCapacityEv.exit.if.end_crit_edge ], [ %idx.ext, %if.then3 ] + %9 = phi i32 [ %7, %_ZN6icu_757Package18ensureItemCapacityEv.exit.if.end_crit_edge ], [ %.pre25, %if.then3 ] %inc = add nsw i32 %9, 1 store i32 %inc, ptr %itemCount.i, align 4 %items10 = getelementptr inbounds i8, ptr %this, i64 1184 @@ -2604,14 +2604,13 @@ _ZN6icu_757Package11allocStringEai.exit: ; preds = %if.end br label %if.end33 if.else: ; preds = %while.body.i - %arrayidx25 = getelementptr inbounds %"struct.icu_75::Item", ptr %1, i64 %idxprom5.i - %isDataOwned26 = getelementptr inbounds i8, ptr %arrayidx25, i64 20 + %isDataOwned26 = getelementptr inbounds i8, ptr %arrayidx6.i, i64 20 %17 = load i8, ptr %isDataOwned26, align 4 %tobool.not = icmp eq i8 %17, 0 br i1 %tobool.not, label %if.end33, label %if.then27 if.then27: ; preds = %if.else - %data31 = getelementptr inbounds i8, ptr %arrayidx25, i64 8 + %data31 = getelementptr inbounds i8, ptr %arrayidx6.i, i64 8 %18 = load ptr, ptr %data31, align 8 tail call void @uprv_free_75(ptr noundef %18) br label %if.end33 diff --git a/bench/icu/optimized/utext.ll b/bench/icu/optimized/utext.ll index fb7ac1969dc..a7faf15e87f 100644 --- a/bench/icu/optimized/utext.ll +++ b/bench/icu/optimized/utext.ll @@ -5447,14 +5447,14 @@ if.end13: ; preds = %if.else, %if.then9 %cmp.i62.sink = icmp slt i64 %limit, 0 %4 = trunc nuw nsw i64 %spec.select71.sink to i32 %conv.i65 = select i1 %cmp.i62.sink, i32 0, i32 %4 - %cmp1476 = icmp slt i32 %2, %conv.i65 + %cmp1476 = icmp slt i32 %2, 0 br i1 %cmp1476, label %for.body.lr.ph, label %for.end for.body.lr.ph: ; preds = %if.end13 %cmp15 = icmp slt i32 %conv, 0 %5 = sext i32 %2 to i64 %6 = zext nneg i32 %destCapacity to i64 - %7 = sub i32 %conv.i65, %2 + %7 = sub i32 0, %2 %wide.trip.count124 = zext i32 %7 to i64 br i1 %cmp15, label %for.body.us, label %for.body.us84 @@ -5485,7 +5485,7 @@ for.body.us84: ; preds = %for.body.lr.ph, %if %indvars.iv110 = phi i64 [ %indvars.iv.next111, %if.then25.us89 ], [ 0, %for.body.lr.ph ] %indvars.iv = phi i64 [ %indvars.iv.next, %if.then25.us89 ], [ %5, %for.body.lr.ph ] %exitcond.not = icmp eq i64 %indvars.iv110, %6 - br i1 %exitcond.not, label %for.end, label %if.then25.us89 + br i1 %exitcond.not, label %if.then32, label %if.then25.us89 if.then25.us89: ; preds = %for.body.us84 %arrayidx27.us91 = getelementptr inbounds i16, ptr %1, i64 %indvars.iv @@ -5509,6 +5509,10 @@ if.then19: ; preds = %for.body.us store i32 %11, ptr %nativeIndexingLimit, align 4 br label %for.end +if.then32: ; preds = %for.body.us84 + %sub = sub nsw i32 %conv.i65, %2 + br label %for.end + for.end.loopexit: ; preds = %if.end34.us %12 = trunc nsw i64 %indvars.iv.next118 to i32 br label %for.end @@ -5517,10 +5521,10 @@ for.end.loopexit106: ; preds = %if.then25.us89 %13 = trunc nsw i64 %indvars.iv.next to i32 br label %for.end -for.end: ; preds = %for.body.us84, %for.end.loopexit106, %for.end.loopexit, %if.end13, %if.then19 - %di.1 = phi i32 [ %10, %if.then19 ], [ 0, %if.end13 ], [ %7, %for.end.loopexit ], [ %7, %for.end.loopexit106 ], [ %7, %for.body.us84 ] - %si.1 = phi i32 [ %11, %if.then19 ], [ %2, %if.end13 ], [ %12, %for.end.loopexit ], [ %13, %for.end.loopexit106 ], [ %conv.i65, %for.body.us84 ] - %strLength.0 = phi i32 [ %11, %if.then19 ], [ %conv, %if.end13 ], [ %conv, %for.end.loopexit ], [ %conv, %for.end.loopexit106 ], [ %conv, %for.body.us84 ] +for.end: ; preds = %for.end.loopexit106, %for.end.loopexit, %if.end13, %if.then32, %if.then19 + %di.1 = phi i32 [ %10, %if.then19 ], [ %sub, %if.then32 ], [ 0, %if.end13 ], [ %7, %for.end.loopexit ], [ %7, %for.end.loopexit106 ] + %si.1 = phi i32 [ %11, %if.then19 ], [ %conv.i65, %if.then32 ], [ %2, %if.end13 ], [ %12, %for.end.loopexit ], [ %13, %for.end.loopexit106 ] + %strLength.0 = phi i32 [ %11, %if.then19 ], [ %conv, %if.then32 ], [ %conv, %if.end13 ], [ %conv, %for.end.loopexit ], [ %conv, %for.end.loopexit106 ] %cmp36 = icmp sgt i32 %si.1, 0 br i1 %cmp36, label %land.lhs.true37, label %if.end63 @@ -5866,7 +5870,7 @@ land.lhs.true11: ; preds = %if.end6.thread.land %2 = phi i64 [ %.pre, %if.end6.thread.land.lhs.true11_crit_edge ], [ %1, %if.else9 ] %clippedIndex.06470 = phi i32 [ 0, %if.end6.thread.land.lhs.true11_crit_edge ], [ %spec.select, %if.else9 ] %cmp76768 = phi i1 [ false, %if.end6.thread.land.lhs.true11_crit_edge ], [ %cmp7, %if.else9 ] - %conv12 = sext i32 %clippedIndex.06470 to i64 + %conv12 = zext nneg i32 %clippedIndex.06470 to i64 %cmp14 = icmp eq i64 %2, %conv12 %or.cond1 = and i1 %cmp76768, %cmp14 %dec18 = sext i1 %or.cond1 to i32 diff --git a/bench/influxdb-rs/optimized/3jexax7r6nng0tve.ll b/bench/influxdb-rs/optimized/3jexax7r6nng0tve.ll index f8fed959d0b..a424b880a4c 100644 --- a/bench/influxdb-rs/optimized/3jexax7r6nng0tve.ll +++ b/bench/influxdb-rs/optimized/3jexax7r6nng0tve.ll @@ -8819,14 +8819,14 @@ define hidden noundef nonnull align 8 dereferenceable(24) ptr @"_ZN9hashbrown11r } ; Function Attrs: inlinehint nonlazybind uwtable -define internal fastcc noundef align 8 dereferenceable_or_null(8) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17hfb0536b1478825b6E"(ptr noalias nocapture noundef nonnull readonly align 8 dereferenceable(48) %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) unnamed_addr #3 personality ptr @rust_eh_personality { +define internal fastcc noalias noundef align 8 dereferenceable_or_null(8) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17hfb0536b1478825b6E"(ptr noalias nocapture noundef nonnull readonly align 8 dereferenceable(48) %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) unnamed_addr #3 personality ptr @rust_eh_personality { %4 = alloca { i64, i64, i64, i64 }, align 8 %5 = alloca [1 x i8], align 1 %6 = alloca { { { { i64, i64, i64, i64 }, i64, i64, i64, i64, i64, {} } } }, align 8 %7 = getelementptr inbounds i8, ptr %0, i64 24 %8 = load i64, ptr %7, align 8, !noundef !4 %9 = icmp eq i64 %8, 0 - br i1 %9, label %66, label %10 + br i1 %9, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h2a3ee33d9077dfdcE.exit", label %10 10: ; preds = %3 %11 = getelementptr inbounds i8, ptr %0, i64 32 @@ -8948,19 +8948,8 @@ define internal fastcc noundef align 8 dereferenceable_or_null(8) ptr @"_ZN9hash %63 = add i64 %.sroa.01.0.i.i.i, %62 br label %43 -"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h2a3ee33d9077dfdcE.exit": ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hc24d24fdeb32a2edE.exit._crit_edge.i.i", %58 - %.0.i.i = phi ptr [ %56, %58 ], [ null, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hc24d24fdeb32a2edE.exit._crit_edge.i.i" ] - %64 = icmp eq ptr %.0.i.i, null - %65 = getelementptr inbounds i8, ptr %.0.i.i, i64 -32 - %.0.i = select i1 %64, ptr null, ptr %65 - br label %66 - -66: ; preds = %3, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h2a3ee33d9077dfdcE.exit" - %.03 = phi ptr [ %.0.i, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h2a3ee33d9077dfdcE.exit" ], [ null, %3 ] - %67 = icmp eq ptr %.03, null - %68 = getelementptr inbounds i8, ptr %.03, i64 24 - %.0 = select i1 %67, ptr null, ptr %68 - ret ptr %.0 +"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h2a3ee33d9077dfdcE.exit": ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hc24d24fdeb32a2edE.exit._crit_edge.i.i", %58, %3 + ret ptr null } ; Function Attrs: nonlazybind uwtable @@ -11164,7 +11153,7 @@ define noundef i32 @_ZN15influxdb3_write7catalog12InnerCatalog15sequence_number1 } ; Function Attrs: nonlazybind uwtable -define noundef align 8 dereferenceable_or_null(8) ptr @_ZN15influxdb3_write7catalog14DatabaseSchema16get_table_schema17h3ec4986c414606e1E(ptr noalias nocapture noundef readonly align 8 dereferenceable(48) %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) unnamed_addr #5 { +define noalias noundef align 8 dereferenceable_or_null(8) ptr @_ZN15influxdb3_write7catalog14DatabaseSchema16get_table_schema17h3ec4986c414606e1E(ptr noalias nocapture noundef readonly align 8 dereferenceable(48) %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) unnamed_addr #5 { %4 = alloca { i64, [3 x i64] }, align 8 %5 = getelementptr inbounds i8, ptr %0, i64 24 tail call void @llvm.experimental.noalias.scope.decl(metadata !1389) @@ -11177,24 +11166,11 @@ define noundef align 8 dereferenceable_or_null(8) ptr @_ZN15influxdb3_write7cata %10 = load i64, ptr %9, align 8, !alias.scope !1389, !noalias !1392, !noundef !4 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4), !noalias !1394 call void @"_ZN5alloc11collections5btree6search142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$11search_tree17h0b6151103236a30dE"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %4, ptr noundef nonnull %6, i64 noundef %10, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2), !noalias !1389 - %11 = load i64, ptr %4, align 8, !range !259, !noalias !1394, !noundef !4 - %trunc.i = trunc nuw i64 %11 to i1 - %12 = getelementptr inbounds i8, ptr %4, i64 8 - %.sroa.0.0.copyload.i = load ptr, ptr %12, align 8, !noalias !1394, !nonnull !4 - %.sroa.28.0..sroa_idx.i = getelementptr inbounds i8, ptr %4, i64 24 - %.sroa.28.0.copyload.i = load i64, ptr %.sroa.28.0..sroa_idx.i, align 8, !noalias !1394 - %13 = getelementptr inbounds i8, ptr %.sroa.0.0.copyload.i, i64 272 - %14 = getelementptr inbounds { [7 x i64] }, ptr %13, i64 %.sroa.28.0.copyload.i - %.1.i = select i1 %trunc.i, ptr null, ptr %14 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4), !noalias !1394 br label %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$3get17hfda676cf0ccc7ca0E.exit" "_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$3get17hfda676cf0ccc7ca0E.exit": ; preds = %3, %8 - %.0.i = phi ptr [ %.1.i, %8 ], [ null, %3 ] - %15 = icmp eq ptr %.0.i, null - %16 = getelementptr inbounds i8, ptr %.0.i, i64 24 - %.0 = select i1 %15, ptr null, ptr %16 - ret ptr %.0 + ret ptr null } ; Function Attrs: nonlazybind uwtable @@ -11277,15 +11253,11 @@ define noundef zeroext i1 @_ZN15influxdb3_write7catalog14DatabaseSchema12table_e %10 = load i64, ptr %9, align 8, !alias.scope !1406, !noalias !1409, !noundef !4 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4), !noalias !1411 call void @"_ZN5alloc11collections5btree6search142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$11search_tree17h0b6151103236a30dE"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %4, ptr noundef nonnull %6, i64 noundef %10, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2), !noalias !1406 - %11 = load i64, ptr %4, align 8, !range !259, !noalias !1411, !noundef !4 - %trunc.i = trunc nuw i64 %11 to i1 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4), !noalias !1411 - %not.trunc.i = xor i1 %trunc.i, true br label %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$3get17hfda676cf0ccc7ca0E.exit" "_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$3get17hfda676cf0ccc7ca0E.exit": ; preds = %3, %8 - %.0.i = phi i1 [ %not.trunc.i, %8 ], [ false, %3 ] - ret i1 %.0.i + ret i1 false } ; Function Attrs: nonlazybind uwtable @@ -11308,15 +11280,11 @@ define hidden noundef zeroext i1 @_ZN15influxdb3_write7catalog15TableDefinition1 %10 = load i64, ptr %9, align 8, !alias.scope !1412, !noalias !1415, !noundef !4 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4), !noalias !1417 call void @"_ZN5alloc11collections5btree6search142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$11search_tree17h2ecf7d8f2e398478E"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %4, ptr noundef nonnull %6, i64 noundef %10, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2), !noalias !1412 - %11 = load i64, ptr %4, align 8, !range !259, !noalias !1417, !noundef !4 - %trunc.i = trunc nuw i64 %11 to i1 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4), !noalias !1417 - %not.trunc.i = xor i1 %trunc.i, true br label %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$3get17ha1c47440c58fe35dE.exit" "_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$3get17ha1c47440c58fe35dE.exit": ; preds = %3, %8 - %.0.i = phi i1 [ %not.trunc.i, %8 ], [ false, %3 ] - ret i1 %.0.i + ret i1 false } ; Function Attrs: nonlazybind uwtable diff --git a/bench/jemalloc/optimized/tcache.ll b/bench/jemalloc/optimized/tcache.ll index d6a58801bc6..10fa9fa28dc 100644 --- a/bench/jemalloc/optimized/tcache.ll +++ b/bench/jemalloc/optimized/tcache.ll @@ -1957,7 +1957,7 @@ if.then3.i: ; preds = %sz_sa2u.exit arena_get.exit: ; preds = %sz_sa2u.exit, %if.then3.i %ret.0.i = phi ptr [ %call4.i, %if.then3.i ], [ %11, %sz_sa2u.exit ] - %cmp.i50 = icmp ult i64 %retval.i.0, 14337 + %cmp.i50 = icmp samesign ult i64 %retval.i.0, 14337 %call12.i = call ptr @arena_palloc(ptr noundef %tsd, ptr noundef %ret.0.i, i64 noundef %retval.i.0, i64 noundef %2, i1 noundef zeroext true, i1 noundef zeroext %cmp.i50, ptr noundef null) #14 %magicptr = ptrtoint ptr %call12.i to i64 %cond = icmp eq ptr %call12.i, null @@ -2301,7 +2301,7 @@ if.then3.i.i: ; preds = %sz_sa2u.exit.i arena_get.exit.i: ; preds = %if.then3.i.i, %sz_sa2u.exit.i %ret.0.i.i = phi ptr [ %call4.i.i, %if.then3.i.i ], [ %11, %sz_sa2u.exit.i ] - %cmp.i75.i = icmp ult i64 %retval.i.0.i, 14337 + %cmp.i75.i = icmp samesign ult i64 %retval.i.0.i, 14337 %call12.i.i = call ptr @arena_palloc(ptr noundef nonnull %tsd, ptr noundef %ret.0.i.i, i64 noundef %retval.i.0.i, i64 noundef %2, i1 noundef zeroext true, i1 noundef zeroext %cmp.i75.i, ptr noundef null) #14 %cmp.i69.not.i = icmp eq ptr %call12.i.i, null br i1 %cmp.i69.not.i, label %tsd_tcache_data_init_impl.exit, label %if.end.thread98.i @@ -3359,20 +3359,11 @@ malloc_mutex_lock.exit: ; preds = %if.end.i, %if.then. %3 = load ptr, ptr @tcaches, align 8 %idxprom = zext i32 %ind to i64 %arrayidx = getelementptr inbounds %struct.tcaches_s, ptr %3, i64 %idxprom - %4 = load ptr, ptr %arrayidx, align 8 - %switch = icmp ult ptr %4, inttoptr (i64 2 to ptr) - %5 = load ptr, ptr @tcaches_avail, align 8 - store ptr %5, ptr %arrayidx, align 8 + %4 = load ptr, ptr @tcaches_avail, align 8 + store ptr %4, ptr %arrayidx, align 8 store ptr %arrayidx, ptr @tcaches_avail, align 8 store atomic i8 0, ptr getelementptr inbounds (i8, ptr @tcaches_mtx, i64 64) monotonic, align 8 %call1.i = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull getelementptr inbounds (i8, ptr @tcaches_mtx, i64 72)) #14 - br i1 %switch, label %if.end, label %if.then - -if.then: ; preds = %malloc_mutex_lock.exit - tail call fastcc void @tcache_destroy(ptr noundef %tsd, ptr noundef nonnull %4, i1 noundef zeroext false) - br label %if.end - -if.end: ; preds = %if.then, %malloc_mutex_lock.exit ret void } diff --git a/bench/jq/optimized/regexec.ll b/bench/jq/optimized/regexec.ll index 2bf6b209f98..eab88857ea1 100644 --- a/bench/jq/optimized/regexec.ll +++ b/bench/jq/optimized/regexec.ll @@ -10771,65 +10771,56 @@ onig_get_callout_data_by_callout_args.exit: ; preds = %67, %.onig_get_call 79: ; preds = %77, %77, %77 %80 = load i32, ptr %0, align 8 %81 = icmp eq i32 %80, 2 - br i1 %81, label %82, label %88 + br i1 %81, label %82, label %85 82: ; preds = %79 - switch i32 %.sroa.0.sroa.0.0.extract.trunc69, label %92 [ + switch i32 %.sroa.0.sroa.0.0.extract.trunc69, label %87 [ i32 60, label %83 - i32 88, label %86 + i32 88, label %84 ] 83: ; preds = %82 - %.not46 = icmp slt i64 %.not, %.032 - br i1 %.not46, label %84, label %onig_get_callout_data_by_callout_args_self.exit.thread + %.not46 = icmp sgt i64 %.032, 0 + br i1 %.not46, label %87, label %onig_get_callout_data_by_callout_args_self.exit.thread -84: ; preds = %83 - %85 = add nsw i64 %.not, 1 - br label %92 - -86: ; preds = %82 - %87 = add nsw i64 %.not, -1 - br label %92 - -88: ; preds = %79 - br i1 %.not101, label %92, label %89 - -89: ; preds = %88 - %.not45 = icmp slt i64 %.not, %.032 - br i1 %.not45, label %90, label %onig_get_callout_data_by_callout_args_self.exit.thread - -90: ; preds = %89 - %91 = add nsw i64 %.not, 1 - br label %92 +84: ; preds = %82 + br label %87 -92: ; preds = %82, %88, %90, %84, %86 - %.sroa.0.1 = phi i64 [ %.not, %82 ], [ %87, %86 ], [ %85, %84 ], [ %91, %90 ], [ %.not, %88 ] - %93 = load i32, ptr %7, align 8 - %94 = icmp slt i32 %93, 1 - br i1 %94, label %onig_get_callout_data_by_callout_args_self.exit.thread, label %95 +85: ; preds = %79 + br i1 %.not101, label %87, label %86 -95: ; preds = %92 - %96 = load ptr, ptr %3, align 8 - %97 = getelementptr inbounds i8, ptr %96, i64 72 - %98 = load ptr, ptr %97, align 8 - %99 = getelementptr inbounds i8, ptr %98, i64 56 - %100 = load ptr, ptr %99, align 8 - %101 = zext nneg i32 %93 to i64 - %102 = getelementptr %struct.CalloutData, ptr %100, i64 %101 - %103 = getelementptr i8, ptr %102, i64 -128 - %104 = getelementptr i8, ptr %102, i64 -120 - store i32 1, ptr %104, align 8 - %105 = getelementptr i8, ptr %102, i64 -112 - store i64 %.sroa.0.1, ptr %105, align 8 - %.sroa.9.0..sroa_idx82 = getelementptr i8, ptr %102, i64 -104 +86: ; preds = %85 + %.not45 = icmp sgt i64 %.032, 0 + br i1 %.not45, label %87, label %onig_get_callout_data_by_callout_args_self.exit.thread + +87: ; preds = %86, %83, %82, %85, %84 + %.sroa.0.1 = phi i64 [ %.not, %82 ], [ -1, %84 ], [ %.not, %85 ], [ 1, %83 ], [ 1, %86 ] + %88 = load i32, ptr %7, align 8 + %89 = icmp slt i32 %88, 1 + br i1 %89, label %onig_get_callout_data_by_callout_args_self.exit.thread, label %90 + +90: ; preds = %87 + %91 = load ptr, ptr %3, align 8 + %92 = getelementptr inbounds i8, ptr %91, i64 72 + %93 = load ptr, ptr %92, align 8 + %94 = getelementptr inbounds i8, ptr %93, i64 56 + %95 = load ptr, ptr %94, align 8 + %96 = zext nneg i32 %88 to i64 + %97 = getelementptr %struct.CalloutData, ptr %95, i64 %96 + %98 = getelementptr i8, ptr %97, i64 -128 + %99 = getelementptr i8, ptr %97, i64 -120 + store i32 1, ptr %99, align 8 + %100 = getelementptr i8, ptr %97, i64 -112 + store i64 %.sroa.0.1, ptr %100, align 8 + %.sroa.9.0..sroa_idx82 = getelementptr i8, ptr %97, i64 -104 store ptr %.sroa.9.0.copyload, ptr %.sroa.9.0..sroa_idx82, align 8 - %106 = getelementptr inbounds i8, ptr %98, i64 48 - %107 = load i32, ptr %106, align 8 - store i32 %107, ptr %103, align 8 + %101 = getelementptr inbounds i8, ptr %93, i64 48 + %102 = load i32, ptr %101, align 8 + store i32 %102, ptr %98, align 8 br label %onig_get_callout_data_by_callout_args_self.exit.thread -onig_get_callout_data_by_callout_args_self.exit.thread: ; preds = %95, %92, %73, %onig_get_callout_data_by_callout_args.exit, %51, %42, %onig_get_callout_data_by_callout_args_self.exit, %onig_check_callout_data_and_clear_old_values.exit, %89, %83, %77 - %.0 = phi i32 [ -232, %77 ], [ 1, %83 ], [ 1, %89 ], [ -30, %onig_check_callout_data_and_clear_old_values.exit ], [ -30, %onig_get_callout_data_by_callout_args_self.exit ], [ -30, %42 ], [ -30, %51 ], [ -30, %onig_get_callout_data_by_callout_args.exit ], [ -30, %73 ], [ 0, %95 ], [ -30, %92 ] +onig_get_callout_data_by_callout_args_self.exit.thread: ; preds = %90, %87, %73, %onig_get_callout_data_by_callout_args.exit, %51, %42, %onig_get_callout_data_by_callout_args_self.exit, %onig_check_callout_data_and_clear_old_values.exit, %86, %83, %77 + %.0 = phi i32 [ -232, %77 ], [ 1, %83 ], [ 1, %86 ], [ -30, %onig_check_callout_data_and_clear_old_values.exit ], [ -30, %onig_get_callout_data_by_callout_args_self.exit ], [ -30, %42 ], [ -30, %51 ], [ -30, %onig_get_callout_data_by_callout_args.exit ], [ -30, %73 ], [ 0, %90 ], [ -30, %87 ] ret i32 %.0 } diff --git a/bench/just-rs/optimized/15iymzte00kmcyqz.ll b/bench/just-rs/optimized/15iymzte00kmcyqz.ll index 1d9df691a5b..a1863bbf4b3 100644 --- a/bench/just-rs/optimized/15iymzte00kmcyqz.ll +++ b/bench/just-rs/optimized/15iymzte00kmcyqz.ll @@ -7325,7 +7325,7 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G } ; Function Attrs: inlinehint nonlazybind uwtable -define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h24d4d9ead3a662a0E.llvm.5593464411486612011"(ptr noalias nocapture noundef readonly align 8 dereferenceable(48) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %1) unnamed_addr #4 personality ptr @rust_eh_personality { +define hidden noalias noundef align 8 dereferenceable_or_null(16) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h24d4d9ead3a662a0E.llvm.5593464411486612011"(ptr noalias nocapture noundef readonly align 8 dereferenceable(48) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %1) unnamed_addr #4 personality ptr @rust_eh_personality { %3 = alloca { { ptr, i64 }, { i8, [39 x i8] }, i8, i8, i8, [5 x i8] }, align 8 %4 = alloca { { ptr, i64 }, { i8, [39 x i8] }, i8, i8, i8, [5 x i8] }, align 8 %5 = alloca { i64, i64, i64, i64 }, align 8 @@ -7333,7 +7333,7 @@ define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN9hashbrown3ma %7 = getelementptr inbounds i8, ptr %0, i64 24 %8 = load i64, ptr %7, align 8, !noundef !4 %9 = icmp eq i64 %8, 0 - br i1 %9, label %74, label %10 + br i1 %9, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h890795fd915c7ad7E.llvm.5593464411486612011.exit", label %10 10: ; preds = %2 %11 = getelementptr inbounds i8, ptr %0, i64 32 @@ -7460,23 +7460,12 @@ define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN9hashbrown3ma %71 = add i64 %.sroa.01.0.i.i.i, %70 br label %49 -"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h890795fd915c7ad7E.llvm.5593464411486612011.exit": ; preds = %53, %56 - %.0.i.i = phi ptr [ %64, %56 ], [ null, %53 ] - %72 = icmp eq ptr %.0.i.i, null - %73 = getelementptr inbounds i8, ptr %.0.i.i, i64 -40 - %.0.i = select i1 %72, ptr null, ptr %73 - br label %74 - -74: ; preds = %2, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h890795fd915c7ad7E.llvm.5593464411486612011.exit" - %.04 = phi ptr [ %.0.i, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h890795fd915c7ad7E.llvm.5593464411486612011.exit" ], [ null, %2 ] - %75 = icmp eq ptr %.04, null - %76 = getelementptr inbounds i8, ptr %.04, i64 24 - %.0 = select i1 %75, ptr null, ptr %76 - ret ptr %.0 +"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h890795fd915c7ad7E.llvm.5593464411486612011.exit": ; preds = %53, %56, %2 + ret ptr null } ; Function Attrs: inlinehint nonlazybind uwtable -define hidden noundef align 8 dereferenceable_or_null(48) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h3aa5e4efdc1403e8E.llvm.5593464411486612011"(ptr noalias nocapture noundef readonly align 8 dereferenceable(48) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %1) unnamed_addr #4 personality ptr @rust_eh_personality { +define hidden noalias noundef align 8 dereferenceable_or_null(48) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h3aa5e4efdc1403e8E.llvm.5593464411486612011"(ptr noalias nocapture noundef readonly align 8 dereferenceable(48) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %1) unnamed_addr #4 personality ptr @rust_eh_personality { %3 = alloca { { ptr, i64 }, { i8, [39 x i8] }, i8, i8, i8, [5 x i8] }, align 8 %4 = alloca { { ptr, i64 }, { i8, [39 x i8] }, i8, i8, i8, [5 x i8] }, align 8 %5 = alloca { i64, i64, i64, i64 }, align 8 @@ -7484,7 +7473,7 @@ define hidden noundef align 8 dereferenceable_or_null(48) ptr @"_ZN9hashbrown3ma %7 = getelementptr inbounds i8, ptr %0, i64 24 %8 = load i64, ptr %7, align 8, !noundef !4 %9 = icmp eq i64 %8, 0 - br i1 %9, label %74, label %10 + br i1 %9, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h1ea024fbc0851ef0E.llvm.5593464411486612011.exit", label %10 10: ; preds = %2 %11 = getelementptr inbounds i8, ptr %0, i64 32 @@ -7611,30 +7600,19 @@ define hidden noundef align 8 dereferenceable_or_null(48) ptr @"_ZN9hashbrown3ma %71 = add i64 %.sroa.01.0.i.i.i, %70 br label %49 -"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h1ea024fbc0851ef0E.llvm.5593464411486612011.exit": ; preds = %53, %56 - %.0.i.i = phi ptr [ %64, %56 ], [ null, %53 ] - %72 = icmp eq ptr %.0.i.i, null - %73 = getelementptr inbounds i8, ptr %.0.i.i, i64 -72 - %.0.i = select i1 %72, ptr null, ptr %73 - br label %74 - -74: ; preds = %2, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h1ea024fbc0851ef0E.llvm.5593464411486612011.exit" - %.04 = phi ptr [ %.0.i, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h1ea024fbc0851ef0E.llvm.5593464411486612011.exit" ], [ null, %2 ] - %75 = icmp eq ptr %.04, null - %76 = getelementptr inbounds i8, ptr %.04, i64 24 - %.0 = select i1 %75, ptr null, ptr %76 - ret ptr %.0 +"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h1ea024fbc0851ef0E.llvm.5593464411486612011.exit": ; preds = %53, %56, %2 + ret ptr null } ; Function Attrs: inlinehint nonlazybind uwtable -define hidden noundef align 8 dereferenceable_or_null(56) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h57ae9aac432f5122E.llvm.5593464411486612011"(ptr noalias nocapture noundef readonly align 8 dereferenceable(48) %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) unnamed_addr #4 personality ptr @rust_eh_personality { +define hidden noalias noundef align 8 dereferenceable_or_null(56) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h57ae9aac432f5122E.llvm.5593464411486612011"(ptr noalias nocapture noundef readonly align 8 dereferenceable(48) %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) unnamed_addr #4 personality ptr @rust_eh_personality { %4 = alloca { i64, i64, i64, i64 }, align 8 %5 = alloca [1 x i8], align 1 %6 = alloca { { { { i64, i64, i64, i64 }, i64, i64, i64, i64, i64, {} } } }, align 8 %7 = getelementptr inbounds i8, ptr %0, i64 24 %8 = load i64, ptr %7, align 8, !noundef !4 %9 = icmp eq i64 %8, 0 - br i1 %9, label %71, label %10 + br i1 %9, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h8084b3c06c61302bE.llvm.5593464411486612011.exit", label %10 10: ; preds = %3 %11 = getelementptr inbounds i8, ptr %0, i64 32 @@ -7765,19 +7743,8 @@ define hidden noundef align 8 dereferenceable_or_null(56) ptr @"_ZN9hashbrown3ma %68 = add i64 %.sroa.01.0.i.i.i, %67 br label %45 -"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h8084b3c06c61302bE.llvm.5593464411486612011.exit": ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hd276ce11003d0a9eE.exit._crit_edge.i.i", %61 - %.0.i.i = phi ptr [ %59, %61 ], [ null, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hd276ce11003d0a9eE.exit._crit_edge.i.i" ] - %69 = icmp eq ptr %.0.i.i, null - %70 = getelementptr inbounds i8, ptr %.0.i.i, i64 -72 - %.0.i = select i1 %69, ptr null, ptr %70 - br label %71 - -71: ; preds = %3, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h8084b3c06c61302bE.llvm.5593464411486612011.exit" - %.03 = phi ptr [ %.0.i, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h8084b3c06c61302bE.llvm.5593464411486612011.exit" ], [ null, %3 ] - %72 = icmp eq ptr %.03, null - %73 = getelementptr inbounds i8, ptr %.03, i64 16 - %.0 = select i1 %72, ptr null, ptr %73 - ret ptr %.0 +"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h8084b3c06c61302bE.llvm.5593464411486612011.exit": ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hd276ce11003d0a9eE.exit._crit_edge.i.i", %61, %3 + ret ptr null } ; Function Attrs: nonlazybind uwtable @@ -16445,7 +16412,7 @@ define hidden void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h8e91e8f0 } ; Function Attrs: nonlazybind uwtable -define hidden noundef nonnull align 8 dereferenceable(48) ptr @_ZN4just11compilation11Compilation8root_ast17h1cc9cf16f3298688E(ptr noalias nocapture noundef readonly align 8 dereferenceable(496) %0) unnamed_addr #1 { +define hidden noalias noundef nonnull align 8 dereferenceable(48) ptr @_ZN4just11compilation11Compilation8root_ast17h1cc9cf16f3298688E(ptr noalias nocapture noundef readonly align 8 dereferenceable(496) %0) unnamed_addr #1 { %2 = getelementptr inbounds i8, ptr %0, i64 376 %3 = getelementptr inbounds i8, ptr %0, i64 400 %4 = tail call noundef align 8 dereferenceable_or_null(48) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h3aa5e4efdc1403e8E.llvm.5593464411486612011"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) diff --git a/bench/libevent/optimized/event.c.ll b/bench/libevent/optimized/event.c.ll index 00b1bfa0f2e..cdb412b0e46 100644 --- a/bench/libevent/optimized/event.c.ll +++ b/bench/libevent/optimized/event.c.ll @@ -3249,8 +3249,8 @@ if.then41: ; preds = %if.end35 if.end42: ; preds = %if.then41, %if.end35 %12 = phi i16 [ %.pre, %if.then41 ], [ %10, %if.end35 ] - %conv4591 = zext i16 %12 to i32 - %and46 = and i32 %conv4591, 8 + %conv4589 = zext i16 %12 to i32 + %and46 = and i32 %conv4589, 8 %tobool47.not = icmp eq i32 %and46, 0 br i1 %tobool47.not, label %if.else, label %if.then48 @@ -3292,7 +3292,7 @@ if.else.i: ; preds = %if.then48 br label %if.end57.sink.split if.else: ; preds = %if.end42 - %and52 = and i32 %conv4591, 32 + %and52 = and i32 %conv4589, 32 %tobool53.not = icmp eq i32 %and52, 0 br i1 %tobool53.not, label %if.end57, label %if.then54 @@ -3329,9 +3329,9 @@ if.else.i67: ; preds = %if.then54 br label %if.end57.sink.split if.end57.sink.split: ; preds = %if.else.i67, %if.then11.i65, %if.else.i, %if.then11.i - %.sink93 = phi ptr [ %20, %if.then11.i ], [ %20, %if.else.i ], [ %30, %if.then11.i65 ], [ %30, %if.else.i67 ] + %.sink91 = phi ptr [ %20, %if.then11.i ], [ %20, %if.else.i ], [ %30, %if.then11.i65 ], [ %30, %if.else.i67 ] %31 = load ptr, ptr %ev, align 8 - store ptr %31, ptr %.sink93, align 8 + store ptr %31, ptr %.sink91, align 8 br label %if.end57 if.end57: ; preds = %if.end57.sink.split, %if.else @@ -3390,11 +3390,9 @@ land.lhs.true81: ; preds = %event_haveevents.ex if.end85: ; preds = %if.end74, %land.lhs.true81, %event_haveevents.exit %notify.0 = phi i1 [ %cmp75, %event_haveevents.exit ], [ %45, %land.lhs.true81 ], [ %cmp75, %if.end74 ] - %cmp86 = icmp ne i32 %spec.select, -1 - %or.cond1 = and i1 %cmp86, %notify.0 %46 = load ptr, ptr @evthread_id_fn_, align 8 %cmp91 = icmp ne ptr %46, null - %or.cond2 = select i1 %or.cond1, i1 %cmp91, i1 false + %or.cond2 = select i1 %notify.0, i1 %cmp91, i1 false br i1 %or.cond2, label %land.lhs.true93, label %if.end101 land.lhs.true93: ; preds = %if.end85 @@ -3428,7 +3426,7 @@ if.end9.i: ; preds = %if.end6.i br label %if.end101 if.end101: ; preds = %if.end57, %if.end9.i, %if.end6.i, %if.then99, %land.lhs.true95, %land.lhs.true93, %if.end85 - %res.088 = phi i32 [ %spec.select, %land.lhs.true95 ], [ %spec.select, %land.lhs.true93 ], [ %spec.select, %if.end85 ], [ %spec.select, %if.then99 ], [ %spec.select, %if.end6.i ], [ %spec.select, %if.end9.i ], [ 0, %if.end57 ] + %res.086 = phi i32 [ %spec.select, %land.lhs.true95 ], [ %spec.select, %land.lhs.true93 ], [ %spec.select, %if.end85 ], [ %spec.select, %if.then99 ], [ %spec.select, %if.end6.i ], [ %spec.select, %if.end9.i ], [ 0, %if.end57 ] %51 = load i32, ptr @event_debug_mode_on_, align 4 %tobool.not.i = icmp eq i32 %51, 0 br i1 %tobool.not.i, label %event_debug_note_del_.exit, label %if.end.i @@ -3543,7 +3541,7 @@ cond.true: ; preds = %if.then123 br label %return return: ; preds = %event_debug_note_del_.exit, %land.lhs.true104, %lor.lhs.false, %lor.lhs.false118, %if.then123, %cond.true, %if.then13, %do.end - %retval.0 = phi i32 [ -1, %do.end ], [ 0, %if.then13 ], [ %res.088, %cond.true ], [ %res.088, %if.then123 ], [ %res.088, %lor.lhs.false118 ], [ %res.088, %lor.lhs.false ], [ %res.088, %land.lhs.true104 ], [ %res.088, %event_debug_note_del_.exit ] + %retval.0 = phi i32 [ -1, %do.end ], [ 0, %if.then13 ], [ %res.086, %cond.true ], [ %res.086, %if.then123 ], [ %res.086, %lor.lhs.false118 ], [ %res.086, %lor.lhs.false ], [ %res.086, %land.lhs.true104 ], [ %res.086, %event_debug_note_del_.exit ] ret i32 %retval.0 } diff --git a/bench/libjpeg-turbo/optimized/jdmarker.c.ll b/bench/libjpeg-turbo/optimized/jdmarker.c.ll index 069c6c548f3..96f6b0ac740 100644 --- a/bench/libjpeg-turbo/optimized/jdmarker.c.ll +++ b/bench/libjpeg-turbo/optimized/jdmarker.c.ll @@ -36,83 +36,58 @@ define range(i32 0, 2) i32 @jpeg_resync_to_restart(ptr noundef %0, i32 noundef % %25 = or disjoint i32 %24, 208 br label %26 -26: ; preds = %64, %2 - %.031 = phi i32 [ %4, %2 ], [ %65, %64 ] +26: ; preds = %48, %2 + %.031 = phi i32 [ %4, %2 ], [ %49, %48 ] %27 = icmp slt i32 %.031, 192 - br i1 %27, label %select.unfold, label %28 + br i1 %27, label %36, label %28 28: ; preds = %26 %29 = add nsw i32 %.031, -216 %or.cond = icmp ult i32 %29, -8 %30 = icmp eq i32 %.031, %16 - %or.cond39 = select i1 %or.cond, i1 true, i1 %30 + %or.cond33 = select i1 %or.cond, i1 true, i1 %30 %31 = icmp eq i32 %.031, %19 - %or.cond40 = select i1 %or.cond39, i1 true, i1 %31 - br i1 %or.cond40, label %.thread35, label %32 + %or.cond34 = select i1 %or.cond33, i1 true, i1 %31 + br i1 %or.cond34, label %36, label %32 32: ; preds = %28 %33 = icmp eq i32 %.031, %22 - %34 = icmp eq i32 %.031, %25 - %or.cond41 = select i1 %33, i1 true, i1 %34 - br i1 %or.cond41, label %select.unfold, label %44 - -.thread35: ; preds = %28 - %35 = load ptr, ptr %0, align 8 - %36 = getelementptr inbounds i8, ptr %35, i64 40 - store i32 97, ptr %36, align 8 + br i1 %33, label %36, label %34 + +34: ; preds = %32 + %35 = icmp eq i32 %.031, %25 + %spec.select = select i1 %35, i32 2, i32 1 + br label %36 + +36: ; preds = %34, %32, %28, %26 + %.0 = phi i32 [ 2, %26 ], [ 3, %28 ], [ 2, %32 ], [ %spec.select, %34 ] %37 = load ptr, ptr %0, align 8 - %38 = getelementptr inbounds i8, ptr %37, i64 44 - store i32 %.031, ptr %38, align 4 + %38 = getelementptr inbounds i8, ptr %37, i64 40 + store i32 97, ptr %38, align 8 %39 = load ptr, ptr %0, align 8 - %40 = getelementptr inbounds i8, ptr %39, i64 48 - store i32 3, ptr %40, align 4 + %40 = getelementptr inbounds i8, ptr %39, i64 44 + store i32 %.031, ptr %40, align 4 %41 = load ptr, ptr %0, align 8 - %42 = getelementptr inbounds i8, ptr %41, i64 8 - %43 = load ptr, ptr %42, align 8 - tail call void %43(ptr noundef nonnull %0, i32 noundef 4) #7 - br label %.loopexit + %42 = getelementptr inbounds i8, ptr %41, i64 48 + store i32 %.0, ptr %42, align 4 + %43 = load ptr, ptr %0, align 8 + %44 = getelementptr inbounds i8, ptr %43, i64 8 + %45 = load ptr, ptr %44, align 8 + tail call void %45(ptr noundef nonnull %0, i32 noundef 4) #7 + %switch = icmp eq i32 %.0, 3 + br i1 %switch, label %50, label %46 -44: ; preds = %32 - %45 = load ptr, ptr %0, align 8 - %46 = getelementptr inbounds i8, ptr %45, i64 40 - store i32 97, ptr %46, align 8 - %47 = load ptr, ptr %0, align 8 - %48 = getelementptr inbounds i8, ptr %47, i64 44 - store i32 %.031, ptr %48, align 4 - %49 = load ptr, ptr %0, align 8 - %50 = getelementptr inbounds i8, ptr %49, i64 48 - store i32 1, ptr %50, align 4 - %51 = load ptr, ptr %0, align 8 - %52 = getelementptr inbounds i8, ptr %51, i64 8 - %53 = load ptr, ptr %52, align 8 - tail call void %53(ptr noundef nonnull %0, i32 noundef 4) #7 - store i32 0, ptr %3, align 4 - br label %.loopexit +46: ; preds = %36 + %47 = tail call fastcc i32 @next_marker(ptr noundef nonnull %0) + %.not = icmp eq i32 %47, 0 + br i1 %.not, label %50, label %48 -select.unfold: ; preds = %26, %32 - %54 = load ptr, ptr %0, align 8 - %55 = getelementptr inbounds i8, ptr %54, i64 40 - store i32 97, ptr %55, align 8 - %56 = load ptr, ptr %0, align 8 - %57 = getelementptr inbounds i8, ptr %56, i64 44 - store i32 %.031, ptr %57, align 4 - %58 = load ptr, ptr %0, align 8 - %59 = getelementptr inbounds i8, ptr %58, i64 48 - store i32 2, ptr %59, align 4 - %60 = load ptr, ptr %0, align 8 - %61 = getelementptr inbounds i8, ptr %60, i64 8 - %62 = load ptr, ptr %61, align 8 - tail call void %62(ptr noundef nonnull %0, i32 noundef 4) #7 - %63 = tail call fastcc i32 @next_marker(ptr noundef nonnull %0) - %.not = icmp eq i32 %63, 0 - br i1 %.not, label %.loopexit, label %64 - -64: ; preds = %select.unfold - %65 = load i32, ptr %3, align 4 +48: ; preds = %46 + %49 = load i32, ptr %3, align 4 br label %26 -.loopexit: ; preds = %select.unfold, %.thread35, %44 - %.032 = phi i32 [ 1, %44 ], [ 1, %.thread35 ], [ 0, %select.unfold ] +50: ; preds = %36, %46 + %.032 = phi i32 [ 0, %46 ], [ 1, %36 ] ret i32 %.032 } diff --git a/bench/libpng/optimized/pngwrite.c.ll b/bench/libpng/optimized/pngwrite.c.ll index 139af3546ae..ef1d8eba0c2 100644 --- a/bench/libpng/optimized/pngwrite.c.ll +++ b/bench/libpng/optimized/pngwrite.c.ll @@ -1738,7 +1738,7 @@ declare void @png_destroy_png_struct(ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable define void @png_set_filter(ptr noalias noundef %0, i32 noundef %1, i32 noundef %2) local_unnamed_addr #0 { %4 = icmp eq ptr %0, null - br i1 %4, label %87, label %5 + br i1 %4, label %83, label %5 5: ; preds = %3 %6 = getelementptr inbounds i8, ptr %0, i64 992 @@ -1749,7 +1749,7 @@ define void @png_set_filter(ptr noalias noundef %0, i32 noundef %1, i32 noundef %or.cond = and i1 %10, %9 %11 = icmp eq i32 %1, 0 %12 = or i1 %11, %or.cond - br i1 %12, label %13, label %86 + br i1 %12, label %13, label %82 13: ; preds = %5 %trunc = trunc i32 %2 to i8 @@ -1790,7 +1790,7 @@ define void @png_set_filter(ptr noalias noundef %0, i32 noundef %1, i32 noundef %22 = getelementptr inbounds i8, ptr %0, i64 552 %23 = load ptr, ptr %22, align 8 %.not = icmp eq ptr %23, null - br i1 %.not, label %83, label %24 + br i1 %.not, label %79, label %24 24: ; preds = %20 %25 = getelementptr inbounds i8, ptr %0, i64 508 @@ -1825,77 +1825,71 @@ define void @png_set_filter(ptr noalias noundef %0, i32 noundef %1, i32 noundef %42 = lshr i32 %.353, 5 %43 = and i32 %42, 1 %.1 = add nuw nsw i32 %.lobit, %43 - %44 = lshr i32 %.353, 6 - %45 = and i32 %44, 1 - %.2 = add nuw nsw i32 %.1, %45 - %46 = lshr i32 %.353, 7 - %47 = and i32 %46, 1 - %.3 = add nuw nsw i32 %.2, %47 - %48 = getelementptr inbounds i8, ptr %0, i64 620 - %49 = load i8, ptr %48, align 4 - %50 = zext i8 %49 to i32 - %51 = getelementptr inbounds i8, ptr %0, i64 617 - %52 = load i8, ptr %51, align 1 - %53 = zext i8 %52 to i32 - %54 = mul nuw nsw i32 %53, %50 - %55 = icmp samesign ugt i32 %54, 7 - %56 = load i32, ptr %29, align 8 - %57 = zext i32 %56 to i64 - br i1 %55, label %58, label %62 + %44 = getelementptr inbounds i8, ptr %0, i64 620 + %45 = load i8, ptr %44, align 4 + %46 = zext i8 %45 to i32 + %47 = getelementptr inbounds i8, ptr %0, i64 617 + %48 = load i8, ptr %47, align 1 + %49 = zext i8 %48 to i32 + %50 = mul nuw nsw i32 %49, %46 + %51 = icmp samesign ugt i32 %50, 7 + %52 = load i32, ptr %29, align 8 + %53 = zext i32 %52 to i64 + br i1 %51, label %54, label %58 + +54: ; preds = %40 + %55 = lshr i32 %50, 3 + %56 = zext nneg i32 %55 to i64 + %57 = mul nuw nsw i64 %53, %56 + br label %63 58: ; preds = %40 - %59 = lshr i32 %54, 3 - %60 = zext nneg i32 %59 to i64 - %61 = mul nuw nsw i64 %57, %60 - br label %67 - -62: ; preds = %40 - %63 = zext nneg i32 %54 to i64 - %64 = mul nuw nsw i64 %57, %63 - %65 = add nuw nsw i64 %64, 7 - %66 = lshr i64 %65, 3 - br label %67 - -67: ; preds = %62, %58 - %68 = phi i64 [ %61, %58 ], [ %66, %62 ] - %69 = add nuw nsw i64 %68, 1 - %70 = getelementptr inbounds i8, ptr %0, i64 560 - %71 = load ptr, ptr %70, align 8 - %72 = icmp eq ptr %71, null - br i1 %72, label %73, label %75 - -73: ; preds = %67 - %74 = tail call noalias ptr @png_malloc(ptr noundef nonnull %0, i64 noundef %69) #15 - store ptr %74, ptr %70, align 8 - br label %75 - -75: ; preds = %73, %67 - %76 = icmp samesign ugt i32 %.3, 1 - br i1 %76, label %77, label %83 - -77: ; preds = %75 - %78 = getelementptr inbounds i8, ptr %0, i64 568 - %79 = load ptr, ptr %78, align 8 - %80 = icmp eq ptr %79, null - br i1 %80, label %81, label %83 - -81: ; preds = %77 - %82 = tail call noalias ptr @png_malloc(ptr noundef nonnull %0, i64 noundef %69) #15 - store ptr %82, ptr %78, align 8 + %59 = zext nneg i32 %50 to i64 + %60 = mul nuw nsw i64 %53, %59 + %61 = add nuw nsw i64 %60, 7 + %62 = lshr i64 %61, 3 + br label %63 + +63: ; preds = %58, %54 + %64 = phi i64 [ %57, %54 ], [ %62, %58 ] + %65 = add nuw nsw i64 %64, 1 + %66 = getelementptr inbounds i8, ptr %0, i64 560 + %67 = load ptr, ptr %66, align 8 + %68 = icmp eq ptr %67, null + br i1 %68, label %69, label %71 + +69: ; preds = %63 + %70 = tail call noalias ptr @png_malloc(ptr noundef nonnull %0, i64 noundef %65) #15 + store ptr %70, ptr %66, align 8 + br label %71 + +71: ; preds = %69, %63 + %72 = icmp samesign ugt i32 %.1, 1 + br i1 %72, label %73, label %79 + +73: ; preds = %71 + %74 = getelementptr inbounds i8, ptr %0, i64 568 + %75 = load ptr, ptr %74, align 8 + %76 = icmp eq ptr %75, null + br i1 %76, label %77, label %79 + +77: ; preds = %73 + %78 = tail call noalias ptr @png_malloc(ptr noundef nonnull %0, i64 noundef %65) #15 + store ptr %78, ptr %74, align 8 + br label %79 + +79: ; preds = %71, %77, %73, %20 + %.050 = phi i32 [ %.353, %77 ], [ %.353, %73 ], [ %.353, %71 ], [ %2, %20 ] + %80 = trunc i32 %.050 to i8 + %81 = getelementptr inbounds i8, ptr %0, i64 614 + store i8 %80, ptr %81, align 2 br label %83 -83: ; preds = %75, %81, %77, %20 - %.050 = phi i32 [ %.353, %81 ], [ %.353, %77 ], [ %.353, %75 ], [ %2, %20 ] - %84 = trunc i32 %.050 to i8 - %85 = getelementptr inbounds i8, ptr %0, i64 614 - store i8 %84, ptr %85, align 2 - br label %87 - -86: ; preds = %5 +82: ; preds = %5 tail call void @png_error(ptr noundef nonnull %0, ptr noundef nonnull @.str.9) #16 unreachable -87: ; preds = %3, %83 +83: ; preds = %3, %79 ret void } diff --git a/bench/libquic/optimized/a_mbstr.c.ll b/bench/libquic/optimized/a_mbstr.c.ll index 48d5f31895d..67e1922b912 100644 --- a/bench/libquic/optimized/a_mbstr.c.ll +++ b/bench/libquic/optimized/a_mbstr.c.ll @@ -230,11 +230,11 @@ if.then89: ; preds = %if.then86 br label %return if.end91: ; preds = %if.end83 - switch i32 %outform.0, label %sw.epilog98 [ + switch i32 %outform.0, label %if.end91.unreachabledefault [ i32 4097, label %sw.bb92 i32 4098, label %sw.bb93 - i32 4100, label %sw.bb94 i32 4096, label %sw.bb96 + i32 4099, label %sw.epilog98 ] sw.bb92: ; preds = %if.end91 @@ -246,20 +246,18 @@ sw.bb93: ; preds = %if.end91 store i32 %shl, ptr %outlen, align 4 br label %sw.epilog98 -sw.bb94: ; preds = %if.end91 - %shl95 = shl i32 %nchar.0, 2 - store i32 %shl95, ptr %outlen, align 4 - br label %sw.epilog98 - sw.bb96: ; preds = %if.end91 store i32 0, ptr %outlen, align 4 %call97 = call fastcc i32 @traverse_string(ptr noundef %in, i32 noundef %len.addr.0, i32 noundef %inform, ptr noundef nonnull @out_utf8, ptr noundef %outlen) %.pre = load i32, ptr %outlen, align 4 br label %sw.epilog98 -sw.epilog98: ; preds = %sw.bb96, %sw.bb94, %sw.bb93, %sw.bb92, %if.end91 - %3 = phi i32 [ 0, %if.end91 ], [ %.pre, %sw.bb96 ], [ %shl95, %sw.bb94 ], [ %shl, %sw.bb93 ], [ %nchar.0, %sw.bb92 ] - %cpyfunc.0 = phi ptr [ null, %if.end91 ], [ @cpy_utf8, %sw.bb96 ], [ @cpy_univ, %sw.bb94 ], [ @cpy_bmp, %sw.bb93 ], [ @cpy_asc, %sw.bb92 ] +if.end91.unreachabledefault: ; preds = %if.end91 + unreachable + +sw.epilog98: ; preds = %if.end91, %sw.bb96, %sw.bb93, %sw.bb92 + %3 = phi i32 [ 0, %if.end91 ], [ %.pre, %sw.bb96 ], [ %shl, %sw.bb93 ], [ %nchar.0, %sw.bb92 ] + %cpyfunc.0 = phi ptr [ null, %if.end91 ], [ @cpy_utf8, %sw.bb96 ], [ @cpy_bmp, %sw.bb93 ], [ @cpy_asc, %sw.bb92 ] %add = add nsw i32 %3, 1 %conv99 = sext i32 %add to i64 %call100 = call noalias ptr @malloc(i64 noundef %conv99) #10 @@ -529,30 +527,6 @@ entry: ret i32 1 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) uwtable -define internal noundef i32 @cpy_univ(i64 noundef %value, ptr nocapture noundef %arg) #5 { -entry: - %0 = load ptr, ptr %arg, align 8 - %shr = lshr i64 %value, 24 - %conv = trunc i64 %shr to i8 - %incdec.ptr = getelementptr inbounds i8, ptr %0, i64 1 - store i8 %conv, ptr %0, align 1 - %shr1 = lshr i64 %value, 16 - %conv3 = trunc i64 %shr1 to i8 - %incdec.ptr4 = getelementptr inbounds i8, ptr %0, i64 2 - store i8 %conv3, ptr %incdec.ptr, align 1 - %shr5 = lshr i64 %value, 8 - %conv7 = trunc i64 %shr5 to i8 - %incdec.ptr8 = getelementptr inbounds i8, ptr %0, i64 3 - store i8 %conv7, ptr %incdec.ptr4, align 1 - %conv10 = trunc i64 %value to i8 - store i8 %conv10, ptr %incdec.ptr8, align 1 - %1 = load ptr, ptr %arg, align 8 - %add.ptr = getelementptr inbounds i8, ptr %1, i64 4 - store ptr %add.ptr, ptr %arg, align 8 - ret i32 1 -} - ; Function Attrs: nounwind uwtable define internal noundef i32 @out_utf8(i64 noundef %value, ptr nocapture noundef %arg) #0 { entry: diff --git a/bench/libquic/optimized/pickle.cc.ll b/bench/libquic/optimized/pickle.cc.ll index 49de8d3a3b0..cd26276dcb3 100644 --- a/bench/libquic/optimized/pickle.cc.ll +++ b/bench/libquic/optimized/pickle.cc.ll @@ -1096,38 +1096,17 @@ entry: %write_offset_ = getelementptr inbounds i8, ptr %this, i64 32 store i64 0, ptr %write_offset_, align 8 %cmp = icmp sgt i32 %data_len, 3 - br i1 %cmp, label %if.end, label %if.end9 + br i1 %cmp, label %if.end, label %if.then17 if.end: ; preds = %entry %0 = load i32, ptr %data, align 4 - %sub = sub i32 %data_len, %0 - %conv = zext i32 %sub to i64 - %cmp6 = icmp ugt i32 %0, %data_len - %spec.store.select = select i1 %cmp6, i64 0, i64 %conv + %narrow = tail call i32 @llvm.usub.sat.i32(i32 %data_len, i32 %0) + %spec.store.select = zext nneg i32 %narrow to i64 store i64 %spec.store.select, ptr %header_size_, align 8 - %spec.select = select i1 %cmp6, i64 0, i64 %conv - br label %if.end9 - -if.end9: ; preds = %if.end, %entry - %1 = phi i64 [ 0, %entry ], [ %spec.select, %if.end ] - %sub.i = add nuw nsw i64 %1, 3 - %and.i = and i64 %sub.i, -4 - %cmp12.not = icmp eq i64 %1, %and.i - br i1 %cmp12.not, label %if.end15, label %if.end15.thread - -if.end15.thread: ; preds = %if.end9 - store i64 0, ptr %header_size_, align 8 br label %if.then17 -if.end15: ; preds = %if.end9 - %tobool.not = icmp eq i64 %1, 0 - br i1 %tobool.not, label %if.then17, label %if.end19 - -if.then17: ; preds = %if.end15.thread, %if.end15 +if.then17: ; preds = %if.end, %entry store ptr null, ptr %header_, align 8 - br label %if.end19 - -if.end19: ; preds = %if.then17, %if.end15 ret void } @@ -1731,6 +1710,9 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #16 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #16 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.usub.sat.i32(i32, i32) #15 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.uadd.sat.i64(i64, i64) #15 diff --git a/bench/libquic/optimized/statistics_recorder.cc.ll b/bench/libquic/optimized/statistics_recorder.cc.ll index bc6314ae656..88f84e92549 100644 --- a/bench/libquic/optimized/statistics_recorder.cc.ll +++ b/bench/libquic/optimized/statistics_recorder.cc.ll @@ -866,15 +866,12 @@ if.else28: ; preds = %invoke.cont24 if.else32: ; preds = %invoke.cont4 %second34 = getelementptr inbounds i8, ptr %retval.sroa.0.0.i.i, i64 48 %13 = load ptr, ptr %second34, align 8 - %cmp35 = icmp eq ptr %histogram, %13 - %spec.select = select i1 %cmp35, ptr null, ptr %histogram br label %if.end57 if.end57: ; preds = %if.else32, %invoke.cont15, %if.else28, %if.then26, %if.end - %histogram_to_delete.0 = phi ptr [ null, %if.end ], [ null, %if.then26 ], [ null, %if.else28 ], [ null, %invoke.cont15 ], [ %spec.select, %if.else32 ] %histogram_to_return.0 = phi ptr [ %histogram, %if.end ], [ %histogram, %if.then26 ], [ %histogram, %if.else28 ], [ %histogram, %invoke.cont15 ], [ %13, %if.else32 ] invoke void @_ZN4base8internal8LockImpl6UnlockEv(ptr noundef nonnull align 8 dereferenceable(40) %0) - to label %_ZN4base8AutoLockD2Ev.exit unwind label %terminate.lpad.i + to label %return unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %if.end57 %14 = landingpad { ptr, i32 } @@ -883,17 +880,6 @@ terminate.lpad.i: ; preds = %if.end57 call void @__clang_call_terminate(ptr %15) #18 unreachable -_ZN4base8AutoLockD2Ev.exit: ; preds = %if.end57 - %isnull = icmp eq ptr %histogram_to_delete.0, null - br i1 %isnull, label %return, label %delete.notnull - -delete.notnull: ; preds = %_ZN4base8AutoLockD2Ev.exit - %vtable = load ptr, ptr %histogram_to_delete.0, align 8 - %vfn = getelementptr inbounds i8, ptr %vtable, i64 8 - %16 = load ptr, ptr %vfn, align 8 - call void %16(ptr noundef nonnull align 8 dereferenceable(44) %histogram_to_delete.0) #20 - br label %return - ehcleanup.loopexit: ; preds = %while.body.i.i.i.i %lpad.loopexit = landingpad { ptr, i32 } cleanup @@ -915,17 +901,17 @@ ehcleanup: ; preds = %ehcleanup.loopexit. to label %_ZN4base8AutoLockD2Ev.exit39 unwind label %terminate.lpad.i38 terminate.lpad.i38: ; preds = %ehcleanup - %17 = landingpad { ptr, i32 } + %16 = landingpad { ptr, i32 } catch ptr null - %18 = extractvalue { ptr, i32 } %17, 0 - call void @__clang_call_terminate(ptr %18) #18 + %17 = extractvalue { ptr, i32 } %16, 0 + call void @__clang_call_terminate(ptr %17) #18 unreachable _ZN4base8AutoLockD2Ev.exit39: ; preds = %ehcleanup resume { ptr, i32 } %lpad.phi -return: ; preds = %_ZN4base8AutoLockD2Ev.exit, %delete.notnull, %entry - %retval.0 = phi ptr [ %histogram, %entry ], [ %histogram_to_return.0, %delete.notnull ], [ %histogram_to_return.0, %_ZN4base8AutoLockD2Ev.exit ] +return: ; preds = %if.end57, %entry + %retval.0 = phi ptr [ %histogram, %entry ], [ %histogram_to_return.0, %if.end57 ] ret ptr %retval.0 } diff --git a/bench/libzmq/optimized/ws_listener.cpp.ll b/bench/libzmq/optimized/ws_listener.cpp.ll index 806191d3f93..25a312042ea 100644 --- a/bench/libzmq/optimized/ws_listener.cpp.ll +++ b/bench/libzmq/optimized/ws_listener.cpp.ll @@ -475,7 +475,7 @@ new.notnull: ; preds = %if.then cleanup.action: ; preds = %new.notnull %add.ptr = getelementptr inbounds i8, ptr %call, i64 16 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp5) #15 - br label %do.end + br label %if.then36 lpad: ; preds = %entry %3 = landingpad { ptr, i32 } @@ -502,7 +502,7 @@ lpad7: ; preds = %new.notnull if.else: ; preds = %invoke.cont4 %call17 = call noalias noundef dereferenceable_or_null(25696) ptr @_ZnwmRKSt9nothrow_t(i64 noundef 25696, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow) #19 %new.isnull18 = icmp eq ptr %call17, null - br i1 %new.isnull18, label %if.then36, label %new.notnull19 + br i1 %new.isnull18, label %new.cont30, label %new.notnull19 new.notnull19: ; preds = %if.else %options22 = getelementptr inbounds i8, ptr %this, i64 24 @@ -510,9 +510,10 @@ new.notnull19: ; preds = %if.else invoke void @_ZN3zmq11ws_engine_tC1EiRKNS_9options_tERKNS_19endpoint_uri_pair_tERKNS_12ws_address_tEb(ptr noundef nonnull align 8 dereferenceable(25696) %call17, i32 noundef %fd_, ptr noundef nonnull align 8 dereferenceable(1336) %options22, ptr noundef nonnull align 8 dereferenceable(68) %endpoint_pair, ptr noundef nonnull align 8 dereferenceable(96) %_address23, i1 noundef zeroext false) to label %new.cont30 unwind label %lpad24 -new.cont30: ; preds = %new.notnull19 +new.cont30: ; preds = %new.notnull19, %if.else %add.ptr32 = getelementptr inbounds i8, ptr %call17, i64 16 - br label %do.end + %spec.select1 = select i1 %new.isnull18, ptr null, ptr %add.ptr32 + br label %if.then36 lpad24: ; preds = %new.notnull19 %6 = landingpad { ptr, i32 } @@ -520,7 +521,8 @@ lpad24: ; preds = %new.notnull19 call void @_ZdlPvRKSt9nothrow_t(ptr noundef nonnull %call17, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow) #17 br label %ehcleanup81 -if.then36: ; preds = %if.else, %if.then +if.then36: ; preds = %if.then, %cleanup.action, %new.cont30 + %engine.0 = phi ptr [ %add.ptr, %cleanup.action ], [ %spec.select1, %new.cont30 ], [ null, %if.then ] %7 = load ptr, ptr @stderr, align 8 %call39 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, i32 noundef 295) #14 %8 = load ptr, ptr @stderr, align 8 @@ -533,8 +535,7 @@ lpad37: ; preds = %invoke.cont78, %inv cleanup br label %ehcleanup81 -do.end: ; preds = %new.cont30, %cleanup.action, %if.then36 - %engine.022 = phi ptr [ null, %if.then36 ], [ %add.ptr, %cleanup.action ], [ %add.ptr32, %new.cont30 ] +do.end: ; preds = %if.then36 %options44 = getelementptr inbounds i8, ptr %this, i64 24 %affinity = getelementptr inbounds i8, ptr %this, i64 32 %10 = load i64, ptr %affinity, align 8 @@ -583,7 +584,7 @@ invoke.cont76: ; preds = %do.end75 to label %invoke.cont77 unwind label %lpad37 invoke.cont77: ; preds = %invoke.cont76 - invoke void @_ZN3zmq8object_t11send_attachEPNS_14session_base_tEPNS_8i_engineEb(ptr noundef nonnull align 8 dereferenceable(20) %this, ptr noundef nonnull %call61, ptr noundef %engine.022, i1 noundef zeroext false) + invoke void @_ZN3zmq8object_t11send_attachEPNS_14session_base_tEPNS_8i_engineEb(ptr noundef nonnull align 8 dereferenceable(20) %this, ptr noundef nonnull %call61, ptr noundef %engine.0, i1 noundef zeroext false) to label %invoke.cont78 unwind label %lpad37 invoke.cont78: ; preds = %invoke.cont77 diff --git a/bench/lief/optimized/psa_crypto.c.ll b/bench/lief/optimized/psa_crypto.c.ll index 0b64e0020b9..d84993e724a 100644 --- a/bench/lief/optimized/psa_crypto.c.ll +++ b/bench/lief/optimized/psa_crypto.c.ll @@ -3974,7 +3974,7 @@ define hidden i32 @psa_aead_generate_nonce(ptr noundef %0, ptr nocapture noundef %34 = load i8, ptr @global_data, align 8 %35 = and i8 %34, 1 %36 = icmp eq i8 %35, 0 - br i1 %36, label %psa_generate_random.exit.thread38.thread, label %.preheader.i + br i1 %36, label %psa_generate_random.exit.thread38.thread, label %.lr.ph.i .thread32: ; preds = %23 %37 = load i8, ptr @global_data, align 8 @@ -3982,13 +3982,9 @@ define hidden i32 @psa_aead_generate_nonce(ptr noundef %0, ptr nocapture noundef %39 = icmp eq i8 %38, 0 br i1 %39, label %psa_generate_random.exit.thread38.thread, label %psa_generate_random.exit.thread.thread -.preheader.i: ; preds = %33 - %.not15.i = icmp eq i64 %31, 0 - br i1 %.not15.i, label %psa_generate_random.exit.thread.thread, label %.lr.ph.i - -.lr.ph.i: ; preds = %.preheader.i, %42 - %.01117.i = phi ptr [ %44, %42 ], [ %5, %.preheader.i ] - %.01216.i = phi i64 [ %43, %42 ], [ %31, %.preheader.i ] +.lr.ph.i: ; preds = %33, %42 + %.01117.i = phi ptr [ %44, %42 ], [ %5, %33 ] + %.01216.i = phi i64 [ %43, %42 ], [ %31, %33 ] %40 = call i64 @llvm.umin.i64(i64 %.01216.i, i64 1024) %41 = call i32 @mbedtls_ctr_drbg_random(ptr noundef nonnull getelementptr inbounds (i8, ptr @global_data, i64 1056), ptr noundef nonnull %.01117.i, i64 noundef %40) #15 %.not14.i = icmp eq i32 %41, 0 @@ -4015,8 +4011,8 @@ psa_generate_random.exit.thread: ; preds = %psa_generate_random %47 = icmp eq i32 %46, 0 br i1 %47, label %psa_aead_abort.exit, label %psa_generate_random.exit.thread.thread -psa_generate_random.exit.thread.thread: ; preds = %.thread32, %.preheader.i, %psa_generate_random.exit.thread - %48 = phi i64 [ %31, %psa_generate_random.exit.thread ], [ 0, %.preheader.i ], [ 0, %.thread32 ] +psa_generate_random.exit.thread.thread: ; preds = %.thread32, %psa_generate_random.exit.thread + %48 = phi i64 [ %31, %psa_generate_random.exit.thread ], [ 0, %.thread32 ] %49 = load i8, ptr %9, align 8 %50 = and i8 %49, 1 %.not.i30 = icmp eq i8 %50, 0 @@ -7710,7 +7706,7 @@ switch.lookup: ; preds = %switch.hole_check 94: ; preds = %92 %95 = and i32 %1, 32768 %.not101 = icmp ne i32 %95, 0 - %96 = icmp ule i32 %88, %85 + %96 = icmp samesign ule i32 %88, %85 %spec.select = select i1 %.not101, i1 %96, i1 false br label %psa_mac_key_can_do.exit @@ -8037,7 +8033,7 @@ switch.lookup224: ; preds = %switch.hole_check22 br i1 %.not151, label %121, label %119 119: ; preds = %118 - %.not155 = icmp ugt i32 %86, %108 + %.not155 = icmp samesign ugt i32 %86, %108 %120 = select i1 %.not155, i32 0, i32 %2 br label %psa_mac_key_can_do.exit @@ -8045,7 +8041,7 @@ switch.lookup224: ; preds = %switch.hole_check22 br i1 %.not152, label %124, label %122 122: ; preds = %121 - %.not154 = icmp ugt i32 %108, %86 + %.not154 = icmp samesign ugt i32 %108, %86 %123 = select i1 %.not154, i32 0, i32 %1 br label %psa_mac_key_can_do.exit @@ -8266,7 +8262,7 @@ select.unfold4: ; preds = %22, %17 %49 = phi i8 [ %34, %.thread10 ], [ %34, %37 ], [ %31, %40 ], [ %34, %.fold.split67 ], [ %34, %.fold.split68 ], [ %34, %.fold.split69 ], [ %34, %.fold.split70 ], [ %34, %.fold.split71 ], [ %34, %.fold.split72 ], [ %34, %.fold.split73 ], [ %34, %.fold.split74 ], [ %34, %.fold.split75 ], [ %34, %.fold.split76 ], [ %34, %.fold.split77 ] %50 = phi i32 [ %35, %.thread10 ], [ %35, %37 ], [ %30, %40 ], [ %35, %.fold.split67 ], [ %35, %.fold.split68 ], [ %35, %.fold.split69 ], [ %35, %.fold.split70 ], [ %35, %.fold.split71 ], [ %35, %.fold.split72 ], [ %35, %.fold.split73 ], [ %35, %.fold.split74 ], [ %35, %.fold.split75 ], [ %35, %.fold.split76 ], [ %35, %.fold.split77 ] %51 = phi i32 [ 16, %.thread10 ], [ %39, %37 ], [ %47, %40 ], [ 20, %.fold.split67 ], [ 20, %.fold.split68 ], [ 28, %.fold.split69 ], [ 32, %.fold.split70 ], [ 48, %.fold.split71 ], [ 64, %.fold.split72 ], [ 28, %.fold.split73 ], [ 32, %.fold.split74 ], [ 28, %.fold.split75 ], [ 32, %.fold.split76 ], [ 48, %.fold.split77 ] - %52 = icmp ugt i32 %50, %51 + %52 = icmp samesign ugt i32 %50, %51 br i1 %52, label %psa_mac_key_can_do.exit, label %53 53: ; preds = %48 diff --git a/bench/linux/optimized/drm_dp_helper.ll b/bench/linux/optimized/drm_dp_helper.ll index b61033d0b1b..c49433861dc 100644 --- a/bench/linux/optimized/drm_dp_helper.ll +++ b/bench/linux/optimized/drm_dp_helper.ll @@ -787,7 +787,7 @@ declare dso_local void @_dev_err(ptr noundef, ptr noundef, ...) local_unnamed_ad define dso_local void @drm_dp_link_train_clock_recovery_delay(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1) #3 align 16 { %3 = load i8, ptr %1, align 1 %4 = icmp ugt i8 %3, 19 - br i1 %4, label %25, label %5 + br i1 %4, label %26, label %5 5: ; preds = %2 %6 = getelementptr i8, ptr %1, i64 14 @@ -817,15 +817,13 @@ define dso_local void @drm_dp_link_train_clock_recovery_delay(ptr nocapture noun 21: ; preds = %18, %5 %22 = icmp eq i8 %8, 0 %23 = mul nuw nsw i32 %9, 4000 - %24 = select i1 %22, i32 100, i32 %23 - br label %25 + %24 = zext nneg i32 %23 to i64 + %25 = select i1 %22, i64 100, i64 %24 + br label %26 -25: ; preds = %21, %2 - %26 = phi i32 [ %24, %21 ], [ 100, %2 ] - %27 = zext nneg i32 %26 to i64 - %28 = shl nuw nsw i32 %26, 1 - %29 = zext nneg i32 %28 to i64 - tail call void @usleep_range_state(i64 noundef %27, i64 noundef %29, i32 noundef 2) #18 +26: ; preds = %21, %2 + %27 = phi i64 [ %25, %21 ], [ 100, %2 ] + tail call void @usleep_range_state(i64 noundef %27, i64 noundef 200, i32 noundef 2) #18 ret void } diff --git a/bench/linux/optimized/insn-eval.ll b/bench/linux/optimized/insn-eval.ll index e9ba4563a54..67474000216 100644 --- a/bench/linux/optimized/insn-eval.ll +++ b/bench/linux/optimized/insn-eval.ll @@ -1445,7 +1445,7 @@ define internal fastcc range(i32 -22, 1) i32 @get_seg_base_limit(ptr noundef non br i1 %97, label %resolve_default_seg.exit, label %98 98: ; preds = %96 - switch i32 %.ph, label %.thread20 [ + switch i32 %.ph, label %.unreachabledefault [ i32 0, label %.thread14 i32 2, label %99 i32 3, label %103 @@ -1453,6 +1453,7 @@ define internal fastcc range(i32 -22, 1) i32 @get_seg_base_limit(ptr noundef non i32 5, label %109 i32 6, label %111 i32 7, label %113 + i32 1, label %.thread20 ] 99: ; preds = %98 @@ -1584,11 +1585,14 @@ define internal fastcc range(i32 -22, 1) i32 @get_seg_base_limit(ptr noundef non %178 = or disjoint i64 %177, 4095 br i1 %176, label %179, label %.thread24 +.unreachabledefault: ; preds = %98 + unreachable + .thread20.sink.split: ; preds = %153, %.thread18 call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %6) #7 br label %.thread20 -.thread20: ; preds = %.thread20.sink.split, %115, %131, %98, %.thread14 +.thread20: ; preds = %.thread20.sink.split, %98, %115, %131, %.thread14 store i64 0, ptr %4, align 8 br label %181 diff --git a/bench/linux/optimized/intel_display_power_well.ll b/bench/linux/optimized/intel_display_power_well.ll index c853c0f036d..5a8692b959a 100644 --- a/bench/linux/optimized/intel_display_power_well.ll +++ b/bench/linux/optimized/intel_display_power_well.ll @@ -1964,11 +1964,11 @@ lookup_power_well.exit3: ; preds = %.preheader.i2, %67 %116 = phi i32 [ %99, %88 ], [ %114, %102 ] %117 = and i32 %96, 6144 %118 = icmp eq i32 %117, 6144 - %119 = or i32 %116, 256 + %119 = or disjoint i32 %116, 256 %120 = select i1 %118, i32 %119, i32 %116 %121 = and i32 %96, 24576 %122 = icmp eq i32 %121, 24576 - %123 = or i32 %120, 128 + %123 = or disjoint i32 %120, 128 %124 = select i1 %122, i32 %123, i32 %120 %125 = and i32 %96, 98304 %126 = icmp eq i32 %125, 98304 @@ -2130,7 +2130,7 @@ define dso_local void @chv_phy_powergate_lanes(ptr noundef %0, i1 noundef zeroex %54 = getelementptr [2 x i8], ptr %52, i64 0, i64 %53 %55 = load i8, ptr %54, align 1, !range !19, !noundef !20 %56 = icmp eq i8 %55, 0 - br i1 %56, label %95, label %57 + br i1 %56, label %92, label %57 57: ; preds = %49 %58 = icmp eq i32 %21, 0 @@ -2160,7 +2160,7 @@ define dso_local void @chv_phy_powergate_lanes(ptr noundef %0, i1 noundef zeroex %74 = lshr i32 %60, %73 %75 = and i32 %74, 3 %76 = icmp eq i32 %75, %72 - br i1 %76, label %95, label %77, !prof !21 + br i1 %76, label %92, label %77, !prof !21 77: ; preds = %71 tail call void asm sideeffect "993: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 993b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 993) #9, !srcloc !104 @@ -2182,17 +2182,14 @@ define dso_local void @chv_phy_powergate_lanes(ptr noundef %0, i1 noundef zeroex %89 = lshr i32 %74, 1 %90 = and i32 %89, 1 %91 = and i32 %74, 1 - %92 = icmp samesign ugt i32 %72, 1 - %93 = zext i1 %92 to i32 - %94 = and i32 %72, 1 - tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str.41, ptr noundef %80, ptr noundef %88, i32 noundef %90, i32 noundef %91, i32 noundef %93, i32 noundef %94, i32 noundef %59, i32 noundef %60) #9 + tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str.41, ptr noundef %80, ptr noundef %88, i32 noundef %90, i32 noundef %91, i32 noundef 0, i32 noundef %72, i32 noundef %59, i32 noundef %60) #9 tail call void asm sideeffect "994: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 994b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 994) #9, !srcloc !105 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.1, i32 1555, i32 2313, i64 12) #9, !srcloc !106 tail call void asm sideeffect "995: nop\0A\09.pushsection .discard.instr_end\0A\09.long 995b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 995) #9, !srcloc !107 tail call void asm sideeffect "996: nop\0A\09.pushsection .discard.instr_end\0A\09.long 996b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 996) #9, !srcloc !108 - br label %95 + br label %92 -95: ; preds = %87, %71, %49 +92: ; preds = %87, %71, %49 tail call void @mutex_unlock(ptr noundef %22) #9 ret void } diff --git a/bench/llama.cpp/optimized/ggml-quants.c.ll b/bench/llama.cpp/optimized/ggml-quants.c.ll index 8837c87cf2e..a451aa8a7a8 100644 --- a/bench/llama.cpp/optimized/ggml-quants.c.ll +++ b/bench/llama.cpp/optimized/ggml-quants.c.ll @@ -1833,17 +1833,17 @@ define void @quantize_row_q3_K_reference(ptr noalias nocapture noundef readonly entry: %L = alloca [256 x i8], align 16 %scales = alloca [16 x float], align 16 - %cmp108 = icmp sgt i32 %k, 255 - br i1 %cmp108, label %for.cond1.preheader.preheader, label %for.end284 + %cmp107 = icmp sgt i32 %k, 255 + br i1 %cmp107, label %for.cond1.preheader.preheader, label %for.end284 for.cond1.preheader.preheader: ; preds = %entry - %div151153 = lshr i32 %k, 8 - %wide.trip.count = zext nneg i32 %div151153 to i64 + %div152154 = lshr i32 %k, 8 + %wide.trip.count = zext nneg i32 %div152154 to i64 br label %for.cond1.preheader for.cond1.preheader: ; preds = %for.cond1.preheader.preheader, %for.end280 - %indvars.iv147 = phi i64 [ 0, %for.cond1.preheader.preheader ], [ %indvars.iv.next148, %for.end280 ] - %x.addr.0110 = phi ptr [ %x, %for.cond1.preheader.preheader ], [ %add.ptr281, %for.end280 ] + %indvars.iv148 = phi i64 [ 0, %for.cond1.preheader.preheader ], [ %indvars.iv.next149, %for.end280 ] + %x.addr.0109 = phi ptr [ %x, %for.cond1.preheader.preheader ], [ %add.ptr281, %for.end280 ] br label %for.body3 for.body3: ; preds = %for.cond1.preheader, %make_q3_quants.exit @@ -1851,7 +1851,7 @@ for.body3: ; preds = %for.cond1.preheader %max_scale.099 = phi float [ 0.000000e+00, %for.cond1.preheader ], [ %max_scale.1, %make_q3_quants.exit ] %amax.098 = phi float [ 0.000000e+00, %for.cond1.preheader ], [ %amax.1, %make_q3_quants.exit ] %0 = shl nuw nsw i64 %indvars.iv, 4 - %add.ptr = getelementptr inbounds float, ptr %x.addr.0110, i64 %0 + %add.ptr = getelementptr inbounds float, ptr %x.addr.0109, i64 %0 tail call void @llvm.experimental.noalias.scope.decl(metadata !88) tail call void @llvm.experimental.noalias.scope.decl(metadata !91) br label %for.body.i @@ -2013,7 +2013,7 @@ make_q3_quants.exit: ; preds = %for.body8.preheader br i1 %exitcond.not, label %for.end, label %for.body3, !llvm.loop !98 for.end: ; preds = %make_q3_quants.exit - %arrayidx13 = getelementptr inbounds %struct.block_q3_K, ptr %y, i64 %indvars.iv147 + %arrayidx13 = getelementptr inbounds %struct.block_q3_K, ptr %y, i64 %indvars.iv148 %scales14 = getelementptr inbounds i8, ptr %arrayidx13, i64 96 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(12) %scales14, i8 0, i64 12, i1 false) %tobool = fcmp une float %max_scale.1, 0.000000e+00 @@ -2024,8 +2024,8 @@ if.then16: ; preds = %for.end br label %for.body21 for.body21: ; preds = %if.then16, %if.end64 - %indvars.iv114 = phi i64 [ 0, %if.then16 ], [ %indvars.iv.next115, %if.end64 ] - %arrayidx23 = getelementptr inbounds [16 x float], ptr %scales, i64 0, i64 %indvars.iv114 + %indvars.iv113 = phi i64 [ 0, %if.then16 ], [ %indvars.iv.next114, %if.end64 ] + %arrayidx23 = getelementptr inbounds [16 x float], ptr %scales, i64 0, i64 %indvars.iv113 %23 = load float, ptr %arrayidx23, align 4 %mul24 = fmul float %div17, %23 %add.i91 = fadd float %mul24, 0x4168000000000000 @@ -2034,18 +2034,18 @@ for.body21: ; preds = %if.then16, %if.end6 %conv26 = ashr exact i32 %sext, 24 %cond = tail call i32 @llvm.smin.i32(i32 %conv26, i32 31) %cond43 = tail call i32 @llvm.smax.i32(i32 %cond, i32 -32) - %cmp45 = icmp samesign ult i64 %indvars.iv114, 8 + %cmp45 = icmp samesign ult i64 %indvars.iv113, 8 br i1 %cmp45, label %if.then47, label %if.else if.then47: ; preds = %for.body21 %25 = trunc nsw i32 %cond43 to i8 %conv49 = and i8 %25, 15 - %arrayidx54 = getelementptr inbounds [12 x i8], ptr %scales14, i64 0, i64 %indvars.iv114 + %arrayidx54 = getelementptr inbounds [12 x i8], ptr %scales14, i64 0, i64 %indvars.iv113 store i8 %conv49, ptr %arrayidx54, align 1 br label %if.end64 if.else: ; preds = %for.body21 - %26 = add nsw i64 %indvars.iv114, -8 + %26 = add nsw i64 %indvars.iv113, -8 %arrayidx61 = getelementptr inbounds [12 x i8], ptr %scales14, i64 0, i64 %26 %27 = load i8, ptr %arrayidx61, align 1 %cond43.tr = trunc nsw i32 %cond43 to i8 @@ -2058,20 +2058,20 @@ if.end64: ; preds = %if.else, %if.then47 %conv44 = shl nsw i32 %cond43, 20 %sext88 = add nsw i32 %conv44, 33554432 %conv67 = lshr i32 %sext88, 24 - %29 = trunc nuw nsw i64 %indvars.iv114 to i32 + %29 = trunc nuw nsw i64 %indvars.iv113 to i32 %30 = lshr i32 %29, 1 %mul69 = and i32 %30, 6 %shl70 = shl nuw nsw i32 %conv67, %mul69 - %rem = and i64 %indvars.iv114, 3 + %rem = and i64 %indvars.iv113, 3 %add74 = or disjoint i64 %rem, 8 %arrayidx76 = getelementptr inbounds [12 x i8], ptr %scales14, i64 0, i64 %add74 %31 = load i8, ptr %arrayidx76, align 1 %32 = trunc nuw i32 %shl70 to i8 %conv79 = or i8 %31, %32 store i8 %conv79, ptr %arrayidx76, align 1 - %indvars.iv.next115 = add nuw nsw i64 %indvars.iv114, 1 - %exitcond119.not = icmp eq i64 %indvars.iv.next115, 16 - br i1 %exitcond119.not, label %for.end82, label %for.body21, !llvm.loop !99 + %indvars.iv.next114 = add nuw nsw i64 %indvars.iv113, 1 + %exitcond117.not = icmp eq i64 %indvars.iv.next114, 16 + br i1 %exitcond117.not, label %for.end82, label %for.body21, !llvm.loop !99 for.end82: ; preds = %if.end64 %div83 = fdiv float 1.000000e+00, %div17 @@ -2094,18 +2094,18 @@ if.end96: ; preds = %if.else89, %for.end br label %for.body101 for.body101: ; preds = %if.end96, %for.inc190 - %indvars.iv125 = phi i64 [ 0, %if.end96 ], [ %indvars.iv.next126, %for.inc190 ] - %cmp102 = icmp samesign ult i64 %indvars.iv125, 8 + %indvars.iv123 = phi i64 [ 0, %if.end96 ], [ %indvars.iv.next124, %for.inc190 ] + %cmp102 = icmp samesign ult i64 %indvars.iv123, 8 br i1 %cmp102, label %cond.true104, label %cond.false112 cond.true104: ; preds = %for.body101 - %arrayidx109 = getelementptr inbounds [12 x i8], ptr %scales14, i64 0, i64 %indvars.iv125 + %arrayidx109 = getelementptr inbounds [12 x i8], ptr %scales14, i64 0, i64 %indvars.iv123 %36 = load i8, ptr %arrayidx109, align 1 %37 = and i8 %36, 15 br label %cond.end121 cond.false112: ; preds = %for.body101 - %38 = add nsw i64 %indvars.iv125, -8 + %38 = add nsw i64 %indvars.iv123, -8 %arrayidx118 = getelementptr inbounds [12 x i8], ptr %scales14, i64 0, i64 %38 %39 = load i8, ptr %arrayidx118, align 1 %40 = lshr i8 %39, 4 @@ -2113,8 +2113,8 @@ cond.false112: ; preds = %for.body101 cond.end121: ; preds = %cond.false112, %cond.true104 %cond122.in = phi i8 [ %37, %cond.true104 ], [ %40, %cond.false112 ] - %41 = trunc nuw nsw i64 %indvars.iv125 to i32 - %rem128 = and i64 %indvars.iv125, 3 + %41 = trunc nuw nsw i64 %indvars.iv123 to i32 + %rem128 = and i64 %indvars.iv123, 3 %add129 = or disjoint i64 %rem128, 8 %arrayidx131 = getelementptr inbounds [12 x i8], ptr %scales14, i64 0, i64 %add129 %42 = load i8, ptr %arrayidx131, align 1 @@ -2133,13 +2133,13 @@ cond.end121: ; preds = %cond.false112, %con br i1 %tobool149, label %for.cond152.preheader, label %for.inc190 for.cond152.preheader: ; preds = %cond.end121 - %47 = shl nuw nsw i64 %indvars.iv125, 4 + %47 = shl nuw nsw i64 %indvars.iv123, 4 br label %for.body155 for.body155: ; preds = %for.cond152.preheader, %for.body155 - %indvars.iv120 = phi i64 [ 0, %for.cond152.preheader ], [ %indvars.iv.next121, %for.body155 ] - %48 = add nuw nsw i64 %indvars.iv120, %47 - %arrayidx160 = getelementptr inbounds float, ptr %x.addr.0110, i64 %48 + %indvars.iv118 = phi i64 [ 0, %for.cond152.preheader ], [ %indvars.iv.next119, %for.body155 ] + %48 = add nuw nsw i64 %indvars.iv118, %47 + %arrayidx160 = getelementptr inbounds float, ptr %x.addr.0109, i64 %48 %49 = load float, ptr %arrayidx160, align 4 %div161 = fdiv float %49, %mul148 %add.i93 = fadd float %div161, 0x4168000000000000 @@ -2151,14 +2151,14 @@ for.body155: ; preds = %for.cond152.prehead %conv182 = add nsw i8 %53, 4 %arrayidx186 = getelementptr inbounds [256 x i8], ptr %L, i64 0, i64 %48 store i8 %conv182, ptr %arrayidx186, align 1 - %indvars.iv.next121 = add nuw nsw i64 %indvars.iv120, 1 - %exitcond124.not = icmp eq i64 %indvars.iv.next121, 16 - br i1 %exitcond124.not, label %for.inc190, label %for.body155, !llvm.loop !100 + %indvars.iv.next119 = add nuw nsw i64 %indvars.iv118, 1 + %exitcond122.not = icmp eq i64 %indvars.iv.next119, 16 + br i1 %exitcond122.not, label %for.inc190, label %for.body155, !llvm.loop !100 for.inc190: ; preds = %for.body155, %cond.end121 - %indvars.iv.next126 = add nuw nsw i64 %indvars.iv125, 1 - %exitcond130.not = icmp eq i64 %indvars.iv.next126, 16 - br i1 %exitcond130.not, label %for.end192, label %for.body101, !llvm.loop !101 + %indvars.iv.next124 = add nuw nsw i64 %indvars.iv123, 1 + %exitcond128.not = icmp eq i64 %indvars.iv.next124, 16 + br i1 %exitcond128.not, label %for.end192, label %for.body101, !llvm.loop !101 for.end192: ; preds = %for.inc190 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(32) %arrayidx13, i8 0, i64 32, i1 false) @@ -2169,43 +2169,35 @@ for.cond234.preheader: ; preds = %if.end221 br label %for.cond239.preheader for.body200: ; preds = %for.end192, %if.end221 - %indvars.iv131 = phi i64 [ 0, %for.end192 ], [ %indvars.iv.next132, %if.end221 ] - %hm.0104 = phi i8 [ 1, %for.end192 ], [ %spec.select90, %if.end221 ] - %m.0103 = phi i32 [ 0, %for.end192 ], [ %spec.select, %if.end221 ] - %arrayidx202 = getelementptr inbounds [256 x i8], ptr %L, i64 0, i64 %indvars.iv131 + %indvars.iv129 = phi i64 [ 0, %for.end192 ], [ %indvars.iv.next130, %if.end221 ] + %arrayidx202 = getelementptr inbounds [256 x i8], ptr %L, i64 0, i64 %indvars.iv129 %54 = load i8, ptr %arrayidx202, align 1 %cmp204 = icmp sgt i8 %54, 3 br i1 %cmp204, label %if.then206, label %if.end221 if.then206: ; preds = %for.body200 - %idxprom211 = sext i32 %m.0103 to i64 - %arrayidx212 = getelementptr inbounds [32 x i8], ptr %arrayidx13, i64 0, i64 %idxprom211 + %arrayidx212 = getelementptr inbounds [32 x i8], ptr %arrayidx13, i64 0, i64 %indvars.iv129 %55 = load i8, ptr %arrayidx212, align 1 - %or21486 = or i8 %55, %hm.0104 + %or21486 = or i8 %55, 1 store i8 %or21486, ptr %arrayidx212, align 1 %sub219 = add nsw i8 %54, -4 store i8 %sub219, ptr %arrayidx202, align 1 br label %if.end221 if.end221: ; preds = %if.then206, %for.body200 - %inc222 = add nsw i32 %m.0103, 1 - %cmp223 = icmp eq i32 %inc222, 32 - %spec.select = select i1 %cmp223, i32 0, i32 %inc222 - %shl227 = zext i1 %cmp223 to i8 - %spec.select90 = shl i8 %hm.0104, %shl227 - %indvars.iv.next132 = add nuw nsw i64 %indvars.iv131, 1 - %exitcond133.not = icmp eq i64 %indvars.iv.next132, 256 - br i1 %exitcond133.not, label %for.cond234.preheader, label %for.body200, !llvm.loop !102 + %indvars.iv.next130 = add nuw nsw i64 %indvars.iv129, 1 + %exitcond134.not = icmp eq i64 %indvars.iv.next130, 256 + br i1 %exitcond134.not, label %for.cond234.preheader, label %for.body200, !llvm.loop !102 for.cond239.preheader: ; preds = %for.cond234.preheader, %for.inc278 %cmp235 = phi i1 [ true, %for.cond234.preheader ], [ false, %for.inc278 ] - %indvars.iv143 = phi i64 [ 0, %for.cond234.preheader ], [ 128, %for.inc278 ] - %56 = lshr exact i64 %indvars.iv143, 2 + %indvars.iv144 = phi i64 [ 0, %for.cond234.preheader ], [ 128, %for.inc278 ] + %56 = lshr exact i64 %indvars.iv144, 2 br label %for.body242 for.body242: ; preds = %for.cond239.preheader, %for.body242 - %indvars.iv134 = phi i64 [ 0, %for.cond239.preheader ], [ %indvars.iv.next135, %for.body242 ] - %57 = or disjoint i64 %indvars.iv134, %indvars.iv143 + %indvars.iv135 = phi i64 [ 0, %for.cond239.preheader ], [ %indvars.iv.next136, %for.body242 ] + %57 = or disjoint i64 %indvars.iv135, %indvars.iv144 %arrayidx245 = getelementptr inbounds [256 x i8], ptr %L, i64 0, i64 %57 %58 = load i8, ptr %arrayidx245, align 1 %59 = or disjoint i64 %57, 32 @@ -2223,21 +2215,21 @@ for.body242: ; preds = %for.cond239.prehead %64 = load i8, ptr %arrayidx264, align 1 %shl266 = shl i8 %64, 6 %or267 = or i8 %or260, %shl266 - %65 = or disjoint i64 %indvars.iv134, %56 + %65 = or disjoint i64 %indvars.iv135, %56 %arrayidx274 = getelementptr inbounds [64 x i8], ptr %qs, i64 0, i64 %65 store i8 %or267, ptr %arrayidx274, align 1 - %indvars.iv.next135 = add nuw nsw i64 %indvars.iv134, 1 - %exitcond142.not = icmp eq i64 %indvars.iv.next135, 32 - br i1 %exitcond142.not, label %for.inc278, label %for.body242, !llvm.loop !103 + %indvars.iv.next136 = add nuw nsw i64 %indvars.iv135, 1 + %exitcond143.not = icmp eq i64 %indvars.iv.next136, 32 + br i1 %exitcond143.not, label %for.inc278, label %for.body242, !llvm.loop !103 for.inc278: ; preds = %for.body242 br i1 %cmp235, label %for.cond239.preheader, label %for.end280, !llvm.loop !104 for.end280: ; preds = %for.inc278 - %add.ptr281 = getelementptr inbounds i8, ptr %x.addr.0110, i64 1024 - %indvars.iv.next148 = add nuw nsw i64 %indvars.iv147, 1 - %exitcond150.not = icmp eq i64 %indvars.iv.next148, %wide.trip.count - br i1 %exitcond150.not, label %for.end284, label %for.cond1.preheader, !llvm.loop !105 + %add.ptr281 = getelementptr inbounds i8, ptr %x.addr.0109, i64 1024 + %indvars.iv.next149 = add nuw nsw i64 %indvars.iv148, 1 + %exitcond151.not = icmp eq i64 %indvars.iv.next149, %wide.trip.count + br i1 %exitcond151.not, label %for.end284, label %for.cond1.preheader, !llvm.loop !105 for.end284: ; preds = %for.end280, %entry ret void diff --git a/bench/llvm/optimized/MicrosoftCXXABI.cpp.ll b/bench/llvm/optimized/MicrosoftCXXABI.cpp.ll index de546a48d7a..479d55e2938 100644 --- a/bench/llvm/optimized/MicrosoftCXXABI.cpp.ll +++ b/bench/llvm/optimized/MicrosoftCXXABI.cpp.ll @@ -1048,16 +1048,12 @@ _ZL23getMSMemberPointerSlotsPKN5clang17MemberPointerTypeE.exit: ; preds = %89, % %112 = udiv i64 %111, %.sroa.5.0.shrunk %113 = add i64 %112, %110 %114 = mul i64 %113, %.sroa.5.0.shrunk - %.not13 = icmp eq i64 %114, %96 - %115 = select i1 %.not13, i64 0, i64 4294967296 br label %._crit_edge ._crit_edge: ; preds = %105, %108 %.sroa.0.0 = phi i64 [ %114, %108 ], [ %96, %105 ] - %.sroa.10.0 = phi i64 [ %115, %108 ], [ 0, %105 ] %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %.sroa.5.8.insert.insert = or disjoint i64 %.sroa.10.0, %.sroa.5.0.shrunk - %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %.sroa.5.8.insert.insert, 1 + %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %.sroa.5.0.shrunk, 1 ret { i64, i64 } %.fca.1.insert } diff --git a/bench/llvm/optimized/RISCVAsmParser.cpp.ll b/bench/llvm/optimized/RISCVAsmParser.cpp.ll index 3a1a041dec7..b176c0d6e0e 100644 --- a/bench/llvm/optimized/RISCVAsmParser.cpp.ll +++ b/bench/llvm/optimized/RISCVAsmParser.cpp.ll @@ -8915,9 +8915,10 @@ _ZL20MatchRegisterAltNameN4llvm9StringRefE.exit: ; preds = %switch.lookup17, %s %93 = load i64, ptr %92, align 8 %94 = and i64 %93, 70368744177664 %95 = icmp ne i64 %94, 0 - %96 = add nsw i32 %.sroa.06.0, -59 - %97 = icmp ult i32 %96, 16 - %or.cond10 = select i1 %95, i1 %97, i1 false + %96 = icmp samesign ugt i32 %.sroa.06.0, 58 + %or.cond = select i1 %95, i1 %96, i1 false + %97 = icmp samesign ult i32 %.sroa.06.0, 75 + %or.cond10 = select i1 %or.cond, i1 %97, i1 false %.sroa.06.1 = select i1 %or.cond10, i32 0, i32 %.sroa.06.0 ret i32 %.sroa.06.1 } diff --git a/bench/luajit/optimized/lj_opt_mem.ll b/bench/luajit/optimized/lj_opt_mem.ll index 72bf448f4da..e0c87f27752 100644 --- a/bench/luajit/optimized/lj_opt_mem.ll +++ b/bench/luajit/optimized/lj_opt_mem.ll @@ -2581,21 +2581,16 @@ if.else: ; preds = %if.then57 %and72 = and i32 %conv53, 31 %10 = and i32 %conv45, 29 %or.cond1 = icmp eq i32 %10, 16 - %spec.select65 = select i1 %or.cond1, i32 19, i32 %and63 %spec.select66 = select i1 %or.cond1, i32 %and63, i32 %and72 br label %if.end85 if.end85: ; preds = %if.else, %if.then77 - %dt.0 = phi i32 [ 19, %if.then77 ], [ %spec.select65, %if.else ] %st.0 = phi i32 [ %or, %if.then77 ], [ %spec.select66, %if.else ] - %11 = trunc nuw nsw i32 %dt.0 to i16 - %conv87 = or disjoint i16 %11, 23296 - store i16 %conv87, ptr %t, align 4 - %12 = load i16, ptr %op248, align 2 - store i16 %12, ptr %fold, align 8 - %shl = shl nuw nsw i32 %dt.0, 5 - %or94 = or i32 %shl, %st.0 - %conv95 = trunc nuw nsw i32 %or94 to i16 + store i16 23315, ptr %t, align 4 + %11 = load i16, ptr %op248, align 2 + store i16 %11, ptr %fold, align 8 + %12 = trunc nuw nsw i32 %st.0 to i16 + %conv95 = or i16 %12, 608 store i16 %conv95, ptr %op2, align 2 br label %return diff --git a/bench/lvgl/optimized/lv_bin_decoder.ll b/bench/lvgl/optimized/lv_bin_decoder.ll index 6280d40e0f0..6531be75bf0 100644 --- a/bench/lvgl/optimized/lv_bin_decoder.ll +++ b/bench/lvgl/optimized/lv_bin_decoder.ll @@ -1079,12 +1079,12 @@ define internal fastcc range(i32 0, 2) i32 @decode_alpha_only(ptr nocapture noun %8 = lshr i32 %7, 8 %9 = and i32 %8, 255 %10 = tail call zeroext i8 @lv_color_format_get_bpp(i32 noundef %9) #4 - %.fr12 = freeze i8 %10 + %.fr11 = freeze i8 %10 %11 = getelementptr inbounds nuw i8, ptr %0, i64 64 %12 = load i32, ptr %11, align 8 %13 = and i32 %12, 65535 %14 = shl nuw nsw i32 %13, 3 - %15 = zext i8 %.fr12 to i32 + %15 = zext i8 %.fr11 to i32 %16 = udiv i32 %14, %15 %17 = load i64, ptr %5, align 8 %18 = lshr i64 %17, 48 @@ -1096,7 +1096,7 @@ define internal fastcc range(i32 0, 2) i32 @decode_alpha_only(ptr nocapture noun %24 = and i32 %23, 65535 %25 = tail call ptr @lv_draw_buf_create_ex(ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @lv_global, i64 448), i32 noundef %24, i32 noundef %19, i32 noundef 14, i32 noundef %16) #4 %26 = icmp eq ptr %25, null - br i1 %26, label %88, label %27 + br i1 %26, label %79, label %27 27: ; preds = %1 %28 = getelementptr inbounds nuw i8, ptr %25, i64 16 @@ -1135,7 +1135,7 @@ fs_read_file_at.exit: ; preds = %37 fs_read_file_at.exit.thread: ; preds = %37, %fs_read_file_at.exit call void @lv_draw_buf_destroy(ptr noundef nonnull %25) #4 - br label %88 + br label %79 42: ; preds = %34 %43 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -1154,9 +1154,9 @@ fs_read_file_at.exit.thread: ; preds = %37, %fs_read_file_a %49 = load i64, ptr %5, align 8 %50 = and i64 %49, 65280 %.not63 = icmp eq i64 %50, 3584 - %.not11 = icmp eq i32 %20, 0 - %or.cond17 = or i1 %.not63, %.not11 - br i1 %or.cond17, label %.loopexit, label %.lr.ph + %.not10 = icmp eq i32 %20, 0 + %or.cond16 = or i1 %.not63, %.not10 + br i1 %or.cond16, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %48 %51 = zext i32 %20 to i64 @@ -1167,84 +1167,72 @@ fs_read_file_at.exit.thread: ; preds = %37, %fs_read_file_a %54 = getelementptr inbounds nuw i8, ptr %29, i64 %53 %55 = getelementptr inbounds i8, ptr %54, i64 -1 %56 = xor i32 %notmask, -1 - %57 = icmp ult i8 %.fr12, 8 - %58 = zext nneg i8 %.fr12 to i16 - br i1 %57, label %.lr.ph.split.us, label %.lr.ph.split + %57 = icmp ult i8 %.fr11, 8 + %58 = zext nneg i8 %.fr11 to i16 + %.not64 = icmp ugt i8 %.fr11, 7 + %spec.select.idx = sext i1 %.not64 to i64 + br i1 %57, label %.lr.ph.split.us, label %.lr.ph.split.preheader + +.lr.ph.split.preheader: ; preds = %.lr.ph + %59 = trunc i32 %56 to i8 + br label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph, %bit_extend.exit.us - %.0569.us = phi ptr [ %.056.us, %bit_extend.exit.us ], [ %.0565, %.lr.ph ] - %.0538.us = phi i32 [ %74, %bit_extend.exit.us ], [ 0, %.lr.ph ] - %.0547.us = phi i32 [ %spec.select65.us, %bit_extend.exit.us ], [ 0, %.lr.ph ] + %.0568.us = phi ptr [ %.056.us, %bit_extend.exit.us ], [ %.0565, %.lr.ph ] + %.0537.us = phi i32 [ %71, %bit_extend.exit.us ], [ 0, %.lr.ph ] %.0576.us = phi ptr [ %spec.select.us, %bit_extend.exit.us ], [ %55, %.lr.ph ] - %59 = load i8, ptr %.0576.us, align 1, !tbaa !27 - %60 = zext i8 %59 to i32 - %61 = and i32 %.0547.us, 255 - %62 = lshr i32 %60, %61 - %63 = and i32 %62, %56 - %64 = trunc nuw nsw i32 %63 to i16 - %65 = icmp eq i32 %63, 0 - br i1 %65, label %bit_extend.exit.us, label %.lr.ph.i.us.preheader + %60 = load i8, ptr %.0576.us, align 1, !tbaa !27 + %61 = zext i8 %60 to i32 + %62 = and i32 %61, %56 + %63 = trunc nuw nsw i32 %62 to i16 + %64 = icmp eq i32 %62, 0 + br i1 %64, label %bit_extend.exit.us, label %.lr.ph.i.us.preheader .lr.ph.i.us.preheader: ; preds = %.lr.ph.split.us - %66 = trunc nuw i32 %63 to i8 + %65 = trunc nuw i32 %62 to i8 br label %.lr.ph.i.us .lr.ph.i.us: ; preds = %.lr.ph.i.us.preheader, %.lr.ph.i.us %indvars.iv.i.us = phi i16 [ %indvars.iv.next.i.us, %.lr.ph.i.us ], [ %58, %.lr.ph.i.us.preheader ] - %.01115.i.us = phi i8 [ %70, %.lr.ph.i.us ], [ %66, %.lr.ph.i.us.preheader ] - %67 = sub nuw nsw i16 8, %indvars.iv.i.us - %68 = shl nuw i16 %64, %67 - %69 = trunc i16 %68 to i8 - %70 = or i8 %.01115.i.us, %69 + %.01115.i.us = phi i8 [ %69, %.lr.ph.i.us ], [ %65, %.lr.ph.i.us.preheader ] + %66 = sub nuw nsw i16 8, %indvars.iv.i.us + %67 = shl nuw i16 %63, %66 + %68 = trunc i16 %67 to i8 + %69 = or i8 %.01115.i.us, %68 %indvars.iv.next.i.us = add nuw nsw i16 %indvars.iv.i.us, %58 - %71 = icmp samesign ult i16 %indvars.iv.next.i.us, 8 - br i1 %71, label %.lr.ph.i.us, label %bit_extend.exit.us, !llvm.loop !54 + %70 = icmp samesign ult i16 %indvars.iv.next.i.us, 8 + br i1 %70, label %.lr.ph.i.us, label %bit_extend.exit.us, !llvm.loop !54 bit_extend.exit.us: ; preds = %.lr.ph.i.us, %.lr.ph.split.us - %.012.i.us = phi i8 [ 0, %.lr.ph.split.us ], [ %70, %.lr.ph.i.us ] - store i8 %.012.i.us, ptr %.0569.us, align 1, !tbaa !27 - %72 = add nuw nsw i32 %61, %15 - %73 = and i32 %72, 248 - %.not64.us = icmp ne i32 %73, 0 - %spec.select.idx.us = sext i1 %.not64.us to i64 - %spec.select.us = getelementptr inbounds i8, ptr %.0576.us, i64 %spec.select.idx.us - %spec.select65.us = select i1 %.not64.us, i32 0, i32 %72 - %74 = add nuw i32 %.0538.us, 1 - %.056.us = getelementptr inbounds i8, ptr %.0569.us, i64 -1 - %75 = icmp ult i32 %74, %20 - br i1 %75, label %.lr.ph.split.us, label %.loopexit, !llvm.loop !55 - -.lr.ph.split: ; preds = %.lr.ph, %.lr.ph.split - %.0569 = phi ptr [ %.056, %.lr.ph.split ], [ %.0565, %.lr.ph ] - %.0538 = phi i32 [ %84, %.lr.ph.split ], [ 0, %.lr.ph ] - %.0547 = phi i32 [ %spec.select65, %.lr.ph.split ], [ 0, %.lr.ph ] - %.0576 = phi ptr [ %spec.select, %.lr.ph.split ], [ %55, %.lr.ph ] - %76 = load i8, ptr %.0576, align 1, !tbaa !27 - %77 = zext i8 %76 to i32 - %78 = and i32 %.0547, 255 - %79 = lshr i32 %77, %78 - %80 = and i32 %79, %56 - %81 = trunc nuw i32 %80 to i8 - store i8 %81, ptr %.0569, align 1, !tbaa !27 - %82 = add nuw nsw i32 %78, %15 - %83 = and i32 %82, 248 - %.not64 = icmp ne i32 %83, 0 - %spec.select.idx = sext i1 %.not64 to i64 + %.012.i.us = phi i8 [ 0, %.lr.ph.split.us ], [ %69, %.lr.ph.i.us ] + store i8 %.012.i.us, ptr %.0568.us, align 1, !tbaa !27 + %spec.select.us = getelementptr inbounds i8, ptr %.0576.us, i64 %spec.select.idx + %71 = add nuw i32 %.0537.us, 1 + %.056.us = getelementptr inbounds i8, ptr %.0568.us, i64 -1 + %72 = icmp ult i32 %71, %20 + br i1 %72, label %.lr.ph.split.us, label %.loopexit, !llvm.loop !55 + +.lr.ph.split: ; preds = %.lr.ph.split.preheader, %.lr.ph.split + %.0568 = phi ptr [ %.056, %.lr.ph.split ], [ %.0565, %.lr.ph.split.preheader ] + %.0537 = phi i32 [ %75, %.lr.ph.split ], [ 0, %.lr.ph.split.preheader ] + %.0576 = phi ptr [ %spec.select, %.lr.ph.split ], [ %55, %.lr.ph.split.preheader ] + %73 = load i8, ptr %.0576, align 1, !tbaa !27 + %74 = and i8 %73, %59 + store i8 %74, ptr %.0568, align 1, !tbaa !27 %spec.select = getelementptr inbounds i8, ptr %.0576, i64 %spec.select.idx - %spec.select65 = select i1 %.not64, i32 0, i32 %82 - %84 = add nuw i32 %.0538, 1 - %.056 = getelementptr inbounds i8, ptr %.0569, i64 -1 - %85 = icmp ult i32 %84, %20 - br i1 %85, label %.lr.ph.split, label %.loopexit, !llvm.loop !55 + %75 = add nuw i32 %.0537, 1 + %.056 = getelementptr inbounds i8, ptr %.0568, i64 -1 + %76 = icmp ult i32 %75, %20 + br i1 %76, label %.lr.ph.split, label %.loopexit, !llvm.loop !55 .loopexit: ; preds = %.lr.ph.split, %bit_extend.exit.us, %48 - %86 = getelementptr inbounds nuw i8, ptr %4, i64 48 - store ptr %25, ptr %86, align 8, !tbaa !31 - %87 = getelementptr inbounds nuw i8, ptr %0, i64 72 - store ptr %25, ptr %87, align 8, !tbaa !30 - br label %88 + %77 = getelementptr inbounds nuw i8, ptr %4, i64 48 + store ptr %25, ptr %77, align 8, !tbaa !31 + %78 = getelementptr inbounds nuw i8, ptr %0, i64 72 + store ptr %25, ptr %78, align 8, !tbaa !30 + br label %79 -88: ; preds = %fs_read_file_at.exit.thread, %.loopexit, %1 +79: ; preds = %fs_read_file_at.exit.thread, %.loopexit, %1 %.0 = phi i32 [ 0, %1 ], [ 1, %.loopexit ], [ 0, %fs_read_file_at.exit.thread ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #4 ret i32 %.0 diff --git a/bench/memcached/optimized/memcached-extstore.ll b/bench/memcached/optimized/memcached-extstore.ll index 3a0d5951e27..15dc2924835 100644 --- a/bench/memcached/optimized/memcached-extstore.ll +++ b/bench/memcached/optimized/memcached-extstore.ll @@ -1763,9 +1763,9 @@ for.body.i: ; preds = %if.else.i, %for.bod if.else.i: ; preds = %for.body.i %conv.i = zext i32 %3 to i64 - %cmp6.i = icmp sgt i64 %low.016.i, %conv.i + %cmp6.i = icmp samesign ugt i64 %low.016.i, %conv.i %spec.select.i = select i1 %cmp6.i, i32 %4, i32 %tid.015.i - %spec.select13.i = tail call i64 @llvm.smin.i64(i64 %low.016.i, i64 %conv.i) + %spec.select13.i = tail call i64 @llvm.umin.i64(i64 %low.016.i, i64 %conv.i) %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond.not.i, label %for.end.loopexit.i, label %for.body.i, !llvm.loop !18 @@ -1991,9 +1991,6 @@ declare i64 @llvm.umin.i64(i64, i64) #10 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) declare void @llvm.assume(i1 noundef) #11 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.smin.i64(i64, i64) #10 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.usub.sat.i64(i64, i64) #10 diff --git a/bench/meshlab/optimized/filter_sketchfab.cpp.ll b/bench/meshlab/optimized/filter_sketchfab.cpp.ll index 5cb049e420b..8e5def0eb62 100644 --- a/bench/meshlab/optimized/filter_sketchfab.cpp.ll +++ b/bench/meshlab/optimized/filter_sketchfab.cpp.ll @@ -5574,7 +5574,7 @@ define noundef ptr @tinfl_decompress_mem_to_heap(ptr noundef %0, i64 noundef %1, 10: ; preds = %27, %4 %11 = phi i64 [ 0, %4 ], [ %25, %27 ] - %.032 = phi ptr [ null, %4 ], [ %30, %27 ] + %.032 = phi ptr [ null, %4 ], [ %31, %27 ] %.031 = phi i64 [ 0, %4 ], [ %28, %27 ] %.030 = phi i64 [ 0, %4 ], [ %spec.store.select, %27 ] %12 = sub i64 %1, %.031 @@ -5612,10 +5612,11 @@ define noundef ptr @tinfl_decompress_mem_to_heap(ptr noundef %0, i64 noundef %1, 27: ; preds = %21 %28 = add i64 %22, %.031 - %29 = shl i64 %.030, 1 - %spec.store.select = call i64 @llvm.umax.i64(i64 %29, i64 128) - %30 = call ptr @realloc(ptr noundef %.032, i64 noundef %spec.store.select) #49 - %.not35 = icmp eq ptr %30, null + %29 = shl nuw nsw i64 %.030, 1 + %30 = icmp eq i64 %.030, 0 + %spec.store.select = select i1 %30, i64 128, i64 %29 + %31 = call ptr @realloc(ptr noundef %.032, i64 noundef %spec.store.select) #49 + %.not35 = icmp eq ptr %31, null br i1 %.not35, label %.loopexit.sink.split, label %10, !llvm.loop !92 .loopexit.sink.split: ; preds = %27, %18 @@ -16599,8 +16600,8 @@ define range(i32 0, 2) i32 @mz_zip_add_mem_to_archive_file_in_place(ptr noundef _ZL35mz_zip_writer_validate_archive_namePKc.exit: ; preds = %.preheader.i %27 = call i32 @stat64(ptr noundef nonnull %0, ptr noundef nonnull %9) #43 - %.not35 = icmp ne i32 %27, 0 - br i1 %.not35, label %28, label %30 + %.not35.not = icmp eq i32 %27, 0 + br i1 %.not35.not, label %30, label %28 28: ; preds = %_ZL35mz_zip_writer_validate_archive_namePKc.exit %29 = call i32 @mz_zip_writer_init_file(ptr noundef nonnull %8, ptr noundef nonnull %0, i64 noundef 0) @@ -16706,16 +16707,14 @@ mz_zip_writer_end.exit: ; preds = %67, %71, %74 79: ; preds = %37, %44, %47, %mz_zip_writer_end.exit %80 = phi i32 [ %spec.select, %mz_zip_writer_end.exit ], [ 0, %47 ], [ 0, %44 ], [ 0, %37 ] - %81 = icmp eq i32 %80, 0 - %or.cond7 = and i1 %.not35, %81 - br i1 %or.cond7, label %82, label %_ZL35mz_zip_writer_validate_archive_namePKc.exit.thread + br i1 %.not35.not, label %_ZL35mz_zip_writer_validate_archive_namePKc.exit.thread, label %81 -82: ; preds = %79 - %83 = call i32 @remove(ptr noundef nonnull %0) #43 +81: ; preds = %79 + %82 = call i32 @remove(ptr noundef nonnull %0) #43 br label %_ZL35mz_zip_writer_validate_archive_namePKc.exit.thread -_ZL35mz_zip_writer_validate_archive_namePKc.exit.thread: ; preds = %.preheader.i, %.preheader.i, %21, %79, %82, %30, %28, %7, %13, %16, %35 - %.0 = phi i32 [ 0, %35 ], [ 0, %16 ], [ 0, %13 ], [ 0, %7 ], [ 0, %28 ], [ 0, %30 ], [ 0, %82 ], [ %80, %79 ], [ 0, %21 ], [ 0, %.preheader.i ], [ 0, %.preheader.i ] +_ZL35mz_zip_writer_validate_archive_namePKc.exit.thread: ; preds = %.preheader.i, %.preheader.i, %21, %79, %81, %30, %28, %7, %13, %16, %35 + %.0 = phi i32 [ 0, %35 ], [ 0, %16 ], [ 0, %13 ], [ 0, %7 ], [ 0, %28 ], [ 0, %30 ], [ 0, %81 ], [ %80, %79 ], [ 0, %21 ], [ 0, %.preheader.i ], [ 0, %.preheader.i ] ret i32 %.0 } @@ -32045,15 +32044,15 @@ __cxx_global_var_init.5.exit: ; preds = %_ZNSt4pairIKN3vcg8C ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) declare void @llvm.assume(i1 noundef) #37 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #38 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.umin.i32(i32, i32) #38 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #38 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.umax.i64(i64, i64) #38 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i16 @llvm.umin.i16(i16, i16) #38 diff --git a/bench/meshlab/optimized/miniz.c.ll b/bench/meshlab/optimized/miniz.c.ll index 286ca3296ce..61957b5a70d 100644 --- a/bench/meshlab/optimized/miniz.c.ll +++ b/bench/meshlab/optimized/miniz.c.ll @@ -7565,7 +7565,7 @@ define noundef ptr @tinfl_decompress_mem_to_heap(ptr noundef %0, i64 noundef %1, 10: ; preds = %27, %4 %11 = phi i64 [ 0, %4 ], [ %25, %27 ] - %.032 = phi ptr [ null, %4 ], [ %30, %27 ] + %.032 = phi ptr [ null, %4 ], [ %31, %27 ] %.031 = phi i64 [ 0, %4 ], [ %28, %27 ] %.030 = phi i64 [ 0, %4 ], [ %spec.store.select, %27 ] %12 = sub i64 %1, %.031 @@ -7603,10 +7603,11 @@ define noundef ptr @tinfl_decompress_mem_to_heap(ptr noundef %0, i64 noundef %1, 27: ; preds = %21 %28 = add i64 %22, %.031 - %29 = shl i64 %.030, 1 - %spec.store.select = call i64 @llvm.umax.i64(i64 %29, i64 128) - %30 = call ptr @realloc(ptr noundef %.032, i64 noundef %spec.store.select) #32 - %.not35 = icmp eq ptr %30, null + %29 = shl nuw nsw i64 %.030, 1 + %30 = icmp eq i64 %.030, 0 + %spec.store.select = select i1 %30, i64 128, i64 %29 + %31 = call ptr @realloc(ptr noundef %.032, i64 noundef %spec.store.select) #32 + %.not35 = icmp eq ptr %31, null br i1 %.not35, label %.loopexit.sink.split, label %10 .loopexit.sink.split: ; preds = %27, %18 @@ -18101,11 +18102,11 @@ define range(i32 0, 2) i32 @mz_zip_add_mem_to_archive_file_in_place_v2(ptr nound 22: ; preds = %17, %14, %8 %.not73 = icmp eq ptr %7, null - br i1 %.not73, label %171, label %23 + br i1 %.not73, label %170, label %23 23: ; preds = %22 store i32 24, ptr %7, align 4 - br label %171 + br label %170 24: ; preds = %17 %25 = load i8, ptr %1, align 1 @@ -18128,16 +18129,16 @@ define range(i32 0, 2) i32 @mz_zip_add_mem_to_archive_file_in_place_v2(ptr nound .loopexit.loopexit.i: ; preds = %.preheader.i, %.preheader.i, %24 %.not60 = icmp eq ptr %7, null - br i1 %.not60, label %171, label %30 + br i1 %.not60, label %170, label %30 30: ; preds = %.loopexit.loopexit.i store i32 25, ptr %7, align 4 - br label %171 + br label %170 mz_zip_writer_validate_archive_name.exit: ; preds = %.preheader.i %31 = call i32 @stat(ptr noundef nonnull %0, ptr noundef nonnull %10) #30 - %.not61 = icmp ne i32 %31, 0 - br i1 %.not61, label %32, label %91 + %.not61.not = icmp eq i32 %31, 0 + br i1 %.not61.not, label %91, label %32 32: ; preds = %mz_zip_writer_validate_archive_name.exit %33 = getelementptr inbounds i8, ptr %9, i64 80 @@ -18261,11 +18262,11 @@ mz_zip_writer_init_file_v2.exit: ; preds = %71 mz_zip_writer_init_v2.exit.thread: ; preds = %66, %49, %46, %38, %43, %85 %89 = phi i32 [ 17, %85 ], [ 24, %43 ], [ 24, %38 ], [ 24, %46 ], [ 24, %49 ], [ 16, %66 ] %.not67 = icmp eq ptr %7, null - br i1 %.not67, label %171, label %90 + br i1 %.not67, label %170, label %90 90: ; preds = %mz_zip_writer_init_v2.exit.thread store i32 %89, ptr %7, align 4 - br label %171 + br label %170 91: ; preds = %mz_zip_writer_validate_archive_name.exit %92 = or i32 %spec.store.select, 2048 @@ -18275,13 +18276,13 @@ mz_zip_writer_init_v2.exit.thread: ; preds = %66, %49, %46, %38, 94: ; preds = %91 %.not63 = icmp eq ptr %7, null - br i1 %.not63, label %171, label %95 + br i1 %.not63, label %170, label %95 95: ; preds = %94 %96 = getelementptr inbounds i8, ptr %9, i64 28 %97 = load i32, ptr %96, align 4 store i32 %97, ptr %7, align 4 - br label %171 + br label %170 98: ; preds = %91 %99 = call i32 @mz_zip_writer_init_from_reader_v2(ptr noundef nonnull %9, ptr noundef nonnull %0, i32 noundef %spec.store.select) @@ -18300,7 +18301,7 @@ mz_zip_writer_init_v2.exit.thread: ; preds = %66, %49, %46, %38, 104: ; preds = %101, %100 %105 = call fastcc i32 @mz_zip_reader_end_internal(ptr noundef nonnull %9, i32 noundef 0) - br label %171 + br label %170 106: ; preds = %mz_zip_writer_init_file_v2.exit, %98 %107 = call range(i32 0, 2) i32 @mz_zip_writer_add_mem_ex_v2(ptr noundef nonnull %9, ptr noundef nonnull %1, ptr noundef %2, i64 noundef %3, ptr noundef %4, i16 noundef zeroext %5, i32 noundef %spec.store.select, i64 noundef 0, i32 noundef 0, ptr noundef null, ptr noundef null, i32 noundef 0, ptr noundef null, i32 noundef 0) @@ -18427,24 +18428,22 @@ mz_zip_writer_end_internal.exit.thread: ; preds = %125, %124, %mz_zip_ %.not71100 = icmp eq i32 %.049, 0 %165 = select i1 %.051.i98, i1 %.not71100, i1 false %.2 = select i1 %165, i32 %163, i32 %.049 - %166 = icmp eq i32 %164, 0 - %or.cond7 = and i1 %.not61, %166 - br i1 %or.cond7, label %167, label %169 + br i1 %.not61.not, label %168, label %166 -167: ; preds = %mz_zip_writer_end_internal.exit.thread - %168 = call i32 @remove(ptr noundef nonnull %0) #30 - br label %169 +166: ; preds = %mz_zip_writer_end_internal.exit.thread + %167 = call i32 @remove(ptr noundef nonnull %0) #30 + br label %168 -169: ; preds = %167, %mz_zip_writer_end_internal.exit.thread +168: ; preds = %166, %mz_zip_writer_end_internal.exit.thread %.not72 = icmp eq ptr %7, null - br i1 %.not72, label %171, label %170 + br i1 %.not72, label %170, label %169 -170: ; preds = %169 +169: ; preds = %168 store i32 %.2, ptr %7, align 4 - br label %171 + br label %170 -171: ; preds = %169, %170, %94, %95, %mz_zip_writer_init_v2.exit.thread, %90, %.loopexit.loopexit.i, %30, %22, %23, %104 - %.0 = phi i32 [ 0, %104 ], [ 0, %23 ], [ 0, %22 ], [ 0, %30 ], [ 0, %.loopexit.loopexit.i ], [ 0, %90 ], [ 0, %mz_zip_writer_init_v2.exit.thread ], [ 0, %95 ], [ 0, %94 ], [ %164, %170 ], [ %164, %169 ] +170: ; preds = %168, %169, %94, %95, %mz_zip_writer_init_v2.exit.thread, %90, %.loopexit.loopexit.i, %30, %22, %23, %104 + %.0 = phi i32 [ 0, %104 ], [ 0, %23 ], [ 0, %22 ], [ 0, %30 ], [ 0, %.loopexit.loopexit.i ], [ 0, %90 ], [ 0, %mz_zip_writer_init_v2.exit.thread ], [ 0, %95 ], [ 0, %94 ], [ %164, %169 ], [ %164, %168 ] ret i32 %.0 } diff --git a/bench/meshoptimizer/optimized/vertexcodec.cpp.ll b/bench/meshoptimizer/optimized/vertexcodec.cpp.ll index 61c573fbdcd..714b62986c9 100644 --- a/bench/meshoptimizer/optimized/vertexcodec.cpp.ll +++ b/bench/meshoptimizer/optimized/vertexcodec.cpp.ll @@ -253,26 +253,18 @@ for.end.i.i: ; preds = %_ZN7meshoptL23encod %div2830.i.i = lshr i64 %i.044.i.i, 6 %arrayidx.i.i = getelementptr inbounds i8, ptr %data.addr.032.i, i64 %div2830.i.i %17 = load i8, ptr %arrayidx.i.i, align 1 - %18 = trunc nuw i32 %shl.i18.i to i8 + %18 = trunc nuw nsw i32 %shl.i18.i to i8 %conv29.i.i = or i8 %17, %18 store i8 %conv29.i.i, ptr %arrayidx.i.i, align 1 - switch i32 %spec.select31.i.i, label %if.end3.i33.i.i [ - i32 1, label %_ZN7meshoptL16encodeBytesGroupEPhPKhi.exit.i.i - i32 8, label %if.then2.i.i.i - ] - -if.then2.i.i.i: ; preds = %for.end.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %data.addr.045.i.i, ptr noundef nonnull readonly align 16 dereferenceable(16) %add.ptr9.i.i, i64 16, i1 false) - %add.ptr.i.i.i = getelementptr inbounds i8, ptr %data.addr.045.i.i, i64 16 - br label %_ZN7meshoptL16encodeBytesGroupEPhPKhi.exit.i.i + br i1 %cmp18.i.i, label %_ZN7meshoptL16encodeBytesGroupEPhPKhi.exit.i.i, label %if.end3.i33.i.i if.end3.i33.i.i: ; preds = %for.end.i.i - %div.i.i.i = sdiv i32 8, %spec.select31.i.i - %conv.i34.i.i = sext i32 %div.i.i.i to i64 + %div.i.i.i = udiv i32 8, %spec.select31.i.i + %conv.i34.i.i = zext nneg i32 %div.i.i.i to i64 %notmask.i35.i.i = shl nsw i32 -1, %spec.select31.i.i %19 = trunc i32 %notmask.i35.i.i to i8 %conv4.i36.i.i = xor i8 %19, -1 - %cmp728.not.i.i.i = icmp eq i32 %div.i.i.i, 0 + %cmp728.not.i.i.i = icmp samesign ugt i32 %spec.select31.i.i, 8 br i1 %cmp728.not.i.i.i, label %for.cond6.preheader.i.i.i, label %for.cond6.preheader.us.i.i.i for.cond6.preheader.us.i.i.i: ; preds = %if.end3.i33.i.i, %for.cond6.for.end_crit_edge.us.i.i.i @@ -288,18 +280,18 @@ for.body8.us.i.i.i: ; preds = %for.body8.us.i.i.i, %21 = load i8, ptr %arrayidx.us.i.i.i, align 1 %.conv4.us.i.i.i = tail call i8 @llvm.umin.i8(i8 %21, i8 %conv4.i36.i.i) %conv14.us.i.i.i = zext i8 %byte.029.us.i.i.i to i32 - %shl15.us.i.i.i = shl i32 %conv14.us.i.i.i, %spec.select31.i.i + %shl15.us.i.i.i = shl nuw nsw i32 %conv14.us.i.i.i, %spec.select31.i.i %22 = trunc i32 %shl15.us.i.i.i to i8 %conv19.us.i.i.i = or i8 %.conv4.us.i.i.i, %22 - %inc.us.i.i.i = add nuw i64 %k.030.us.i.i.i, 1 + %inc.us.i.i.i = add nuw nsw i64 %k.030.us.i.i.i, 1 %exitcond.not.i37.i.i = icmp eq i64 %inc.us.i.i.i, %conv.i34.i.i br i1 %exitcond.not.i37.i.i, label %for.cond6.for.end_crit_edge.us.i.i.i, label %for.body8.us.i.i.i, !llvm.loop !11 for.cond6.for.end_crit_edge.us.i.i.i: ; preds = %for.body8.us.i.i.i %incdec.ptr.us.i.i.i = getelementptr inbounds i8, ptr %data.addr.031.us.i.i.i, i64 1 store i8 %conv19.us.i.i.i, ptr %data.addr.031.us.i.i.i, align 1 - %add21.us.i.i.i = add nsw i64 %i.032.us.i.i.i, %conv.i34.i.i - %cmp5.us.i.i.i = icmp ult i64 %add21.us.i.i.i, 16 + %add21.us.i.i.i = add nuw nsw i64 %i.032.us.i.i.i, %conv.i34.i.i + %cmp5.us.i.i.i = icmp samesign ult i64 %add21.us.i.i.i, 16 br i1 %cmp5.us.i.i.i, label %for.cond6.preheader.us.i.i.i, label %for.body26.i.i.i, !llvm.loop !12 for.cond6.preheader.i.i.i: ; preds = %if.end3.i33.i.i, %for.cond6.preheader.i.i.i @@ -327,8 +319,8 @@ for.inc35.i.i.i: ; preds = %if.then31.i.i.i, %f %exitcond36.not.i.i.i = icmp eq i64 %inc36.i.i.i, 16 br i1 %exitcond36.not.i.i.i, label %_ZN7meshoptL16encodeBytesGroupEPhPKhi.exit.i.i, label %for.body26.i.i.i, !llvm.loop !13 -_ZN7meshoptL16encodeBytesGroupEPhPKhi.exit.i.i: ; preds = %for.inc35.i.i.i, %if.then2.i.i.i, %for.end.i.i - %retval.0.i32.i.i = phi ptr [ %add.ptr.i.i.i, %if.then2.i.i.i ], [ %data.addr.045.i.i, %for.end.i.i ], [ %data.addr.2.i.i.i, %for.inc35.i.i.i ] +_ZN7meshoptL16encodeBytesGroupEPhPKhi.exit.i.i: ; preds = %for.inc35.i.i.i, %for.end.i.i + %retval.0.i32.i.i = phi ptr [ %data.addr.045.i.i, %for.end.i.i ], [ %data.addr.2.i.i.i, %for.inc35.i.i.i ] %add33.i.i = add nuw i64 %i.044.i.i, 16 %cmp2.i.i = icmp ult i64 %add33.i.i, %and.i36 br i1 %cmp2.i.i, label %for.body.i.i, label %_ZN7meshoptL11encodeBytesEPhS0_PKhm.exit.loopexit.i, !llvm.loop !14 diff --git a/bench/mimalloc/optimized/segment.c.ll b/bench/mimalloc/optimized/segment.c.ll index b2dffea9870..1476d5f3220 100644 --- a/bench/mimalloc/optimized/segment.c.ll +++ b/bench/mimalloc/optimized/segment.c.ll @@ -3122,8 +3122,7 @@ if.end.i: ; preds = %land.end6, %mi_segm %alignment.0.i = phi i64 [ %page_alignment, %mi_segment_calculate_slices.exit.i ], [ 33554432, %land.end6 ] %align_offset.0.i = phi i64 [ %and1.i.i30, %mi_segment_calculate_slices.exit.i ], [ 0, %land.end6 ] %info_slices.0 = lshr i64 %info_slices.0.in, 16 - %mul4.i = shl nuw i64 %segment_slices.0, 16 - %call7.i = call ptr @_mi_arena_alloc_aligned(i64 noundef %mul4.i, i64 noundef %alignment.0.i, i64 noundef %align_offset.0.i, i1 noundef zeroext %5, i1 noundef zeroext %not.eager_delayed.i, i32 noundef %req_arena_id, ptr noundef nonnull %memid.i, ptr noundef %os_tld) #13 + %call7.i = call ptr @_mi_arena_alloc_aligned(i64 noundef 33554432, i64 noundef %alignment.0.i, i64 noundef %align_offset.0.i, i1 noundef zeroext %5, i1 noundef zeroext %not.eager_delayed.i, i32 noundef %req_arena_id, ptr noundef nonnull %memid.i, ptr noundef %os_tld) #13 %cmp8.i = icmp eq ptr %call7.i, null br i1 %cmp8.i, label %mi_segment_os_alloc.exit.thread, label %if.end10.i @@ -3179,7 +3178,7 @@ mi_commit_mask_create.exit.i: ; preds = %while.body.i.i, %if if.then17.i: ; preds = %mi_commit_mask_create.exit.i %11 = load ptr, ptr %stats.i, align 8 - call void @_mi_arena_free(ptr noundef nonnull %call7.i, i64 noundef %mul4.i, i64 noundef 0, ptr noundef nonnull byval(%struct.mi_memid_s) align 8 %memid.i, ptr noundef %11) #13 + call void @_mi_arena_free(ptr noundef nonnull %call7.i, i64 noundef 33554432, i64 noundef 0, ptr noundef nonnull byval(%struct.mi_memid_s) align 8 %memid.i, ptr noundef %11) #13 br label %mi_segment_os_alloc.exit.thread if.end20.i: ; preds = %mi_commit_mask_create.exit.i, %if.then12.i @@ -3204,45 +3203,33 @@ land.end29.i: ; preds = %land.rhs26.i, %if.e %allow_purge.i = getelementptr inbounds i8, ptr %call7.i, i64 25 store i8 %frombool30.i, ptr %allow_purge.i, align 1 %segment_size31.i = getelementptr inbounds i8, ptr %call7.i, i64 32 - store i64 %mul4.i, ptr %segment_size31.i, align 8 + store i64 33554432, ptr %segment_size31.i, align 8 %commit_mask32.i = getelementptr inbounds i8, ptr %call7.i, i64 112 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %commit_mask32.i, ptr noundef nonnull align 8 dereferenceable(64) %commit_mask.i, i64 64, i1 false) %purge_expire.i = getelementptr inbounds i8, ptr %call7.i, i64 40 %abandoned_next.i = getelementptr inbounds i8, ptr %call7.i, i64 176 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %purge_expire.i, i8 0, i64 72, i1 false) store atomic i64 0, ptr %abandoned_next.i release, align 8 - %cmp.i.i31 = icmp sgt i64 %mul4.i, -1 %stats.i.i = getelementptr inbounds i8, ptr %tld, i64 896 %14 = load ptr, ptr %stats.i.i, align 8 - br i1 %cmp.i.i31, label %if.then.i31.i, label %if.else.i.i32 - -if.then.i31.i: ; preds = %land.end29.i call void @_mi_stat_increase(ptr noundef %14, i64 noundef 1) #13 - br label %if.end.i.i - -if.else.i.i32: ; preds = %land.end29.i - call void @_mi_stat_decrease(ptr noundef %14, i64 noundef 1) #13 - br label %if.end.i.i - -if.end.i.i: ; preds = %if.else.i.i32, %if.then.i31.i - %cond.i29.i = phi i64 [ -1, %if.else.i.i32 ], [ 1, %if.then.i31.i ] %count.i.i = getelementptr inbounds i8, ptr %tld, i64 864 %15 = load i64, ptr %count.i.i, align 8 - %add.i30.i = add i64 %15, %cond.i29.i + %add.i30.i = add i64 %15, 1 store i64 %add.i30.i, ptr %count.i.i, align 8 %peak_count.i.i = getelementptr inbounds i8, ptr %tld, i64 872 %16 = load i64, ptr %peak_count.i.i, align 8 %cmp5.i.i = icmp ugt i64 %add.i30.i, %16 br i1 %cmp5.i.i, label %if.then7.i.i, label %if.end10.i.i -if.then7.i.i: ; preds = %if.end.i.i +if.then7.i.i: ; preds = %land.end29.i store i64 %add.i30.i, ptr %peak_count.i.i, align 8 br label %if.end10.i.i -if.end10.i.i: ; preds = %if.then7.i.i, %if.end.i.i +if.end10.i.i: ; preds = %if.then7.i.i, %land.end29.i %current_size.i.i = getelementptr inbounds i8, ptr %tld, i64 880 %17 = load i64, ptr %current_size.i.i, align 8 - %add11.i.i = add i64 %17, %mul4.i + %add11.i.i = add i64 %17, 33554432 store i64 %add11.i.i, ptr %current_size.i.i, align 8 %peak_size.i.i = getelementptr inbounds i8, ptr %tld, i64 888 %18 = load i64, ptr %peak_size.i.i, align 8 @@ -3268,14 +3255,11 @@ if.end: ; preds = %if.then15.i.i, %if. br i1 %tobool15, label %if.end18, label %if.then16 if.then16: ; preds = %if.end - %20 = mul nuw nsw i64 %segment_slices.0, 80 - %add17 = add nuw nsw i64 %20, 160 %add.ptr = getelementptr inbounds i8, ptr %call7.i, i64 184 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %add.ptr, i8 0, i64 %add17, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(41120) %add.ptr, i8 0, i64 41120, i1 false) br label %if.end18 if.end18: ; preds = %if.then16, %if.end - %cond = call i64 @llvm.umin.i64(i64 %segment_slices.0, i64 512) %segment_slices20 = getelementptr inbounds i8, ptr %call7.i, i64 224 store i64 %segment_slices.0, ptr %segment_slices20, align 8 %segment_info_slices = getelementptr inbounds i8, ptr %call7.i, i64 232 @@ -3283,18 +3267,18 @@ if.end18: ; preds = %if.then16, %if.end %call21 = call i64 @_mi_thread_id() #13 %thread_id = getelementptr inbounds i8, ptr %call7.i, i64 256 store atomic i64 %call21, ptr %thread_id seq_cst, align 8 - %21 = ptrtoint ptr %call7.i to i64 - %22 = load i64, ptr getelementptr inbounds (i8, ptr @_mi_heap_main, i64 2864), align 8 - %xor.i = xor i64 %22, %21 + %20 = ptrtoint ptr %call7.i to i64 + %21 = load i64, ptr getelementptr inbounds (i8, ptr @_mi_heap_main, i64 2864), align 8 + %xor.i = xor i64 %21, %20 %cookie = getelementptr inbounds i8, ptr %call7.i, i64 216 store i64 %xor.i, ptr %cookie, align 8 %slice_entries23 = getelementptr inbounds i8, ptr %call7.i, i64 248 - store i64 %cond, ptr %slice_entries23, align 8 + store i64 %segment_slices.0, ptr %slice_entries23, align 8 %cond25 = zext i1 %cmp9 to i32 %kind = getelementptr inbounds i8, ptr %call7.i, i64 240 store i32 %cond25, ptr %kind, align 8 - %23 = load ptr, ptr %stats.i.i, align 8 - %page_committed = getelementptr inbounds i8, ptr %23, i64 192 + %22 = load ptr, ptr %stats.i.i, align 8 + %page_committed = getelementptr inbounds i8, ptr %22, i64 192 %call13.val = load i64, ptr %segment_info_slices, align 8 %mul.i34 = shl i64 %call13.val, 16 call void @_mi_stat_increase(ptr noundef nonnull %page_committed, i64 noundef %mul.i34) #13 @@ -3306,13 +3290,13 @@ if.end18: ; preds = %if.then16, %if.end if.end30: ; preds = %if.end18 %used = getelementptr inbounds i8, ptr %call7.i, i64 208 store i64 0, ptr %used, align 8 - %24 = load i32, ptr %kind, align 8 - %cmp32 = icmp eq i32 %24, 0 + %23 = load i32, ptr %kind, align 8 + %cmp32 = icmp eq i32 %23, 0 br i1 %cmp32, label %lor.lhs.false.i, label %if.else lor.lhs.false.i: ; preds = %if.end30 - %25 = load i64, ptr %slice_entries23, align 8 - %sub35 = sub i64 %25, %info_slices.0 + %24 = load i64, ptr %slice_entries23, align 8 + %sub35 = sub i64 %24, %info_slices.0 %atomic-load.i.i = load atomic i64, ptr %thread_id seq_cst, align 8 %cmp.i.i35 = icmp eq i64 %atomic-load.i.i, 0 br i1 %cmp.i.i35, label %cond.end.i, label %cond.false.i @@ -3323,14 +3307,14 @@ cond.false.i: ; preds = %lor.lhs.false.i if.end.i.i.i.i: ; preds = %cond.false.i %dec.i.i.i.i = add i64 %sub35, -1 - %26 = call range(i64 0, 64) i64 @llvm.ctlz.i64(i64 range(i64 1, 0) %dec.i.i.i.i, i1 true) - %sub.i.i.i.i.i = xor i64 %26, 63 + %25 = call range(i64 0, 64) i64 @llvm.ctlz.i64(i64 range(i64 1, 0) %dec.i.i.i.i, i1 true) + %sub.i.i.i.i.i = xor i64 %25, 63 %cmp1.i.i.i.i = icmp samesign ult i64 %sub.i.i.i.i.i, 3 br i1 %cmp1.i.i.i.i, label %mi_span_queue_for.exit.i, label %if.end3.i.i.i.i if.end3.i.i.i.i: ; preds = %if.end.i.i.i.i %shl.i.i.i.i = shl nuw nsw i64 %sub.i.i.i.i.i, 2 - %sub.i.i.i.i = sub nsw i64 61, %26 + %sub.i.i.i.i = sub nsw i64 61, %25 %shr.i.i.i.i = lshr i64 %dec.i.i.i.i, %sub.i.i.i.i %and.i.i.i.i = and i64 %shr.i.i.i.i, 3 %or.i.i.i.i = add nsw i64 %shl.i.i.i.i, -4 @@ -3359,8 +3343,8 @@ if.then6.i: ; preds = %cond.end.i %sub.i40 = add i64 %add.i39, %spec.store.select.i %arrayidx8.i = getelementptr inbounds [513 x %struct.mi_page_s], ptr %slices.i, i64 0, i64 %sub.i40 store i32 0, ptr %arrayidx8.i, align 8 - %27 = mul i32 %conv.i, 80 - %conv11.i = add i32 %27, -80 + %26 = mul i32 %conv.i, 80 + %conv11.i = add i32 %26, -80 %slice_offset12.i = getelementptr inbounds i8, ptr %arrayidx8.i, i64 4 store i32 %conv11.i, ptr %slice_offset12.i, align 4 %xblock_size.i = getelementptr inbounds i8, ptr %arrayidx8.i, i64 28 @@ -3374,16 +3358,16 @@ if.end13.i: ; preds = %if.then6.i, %cond.e if.then20.i: ; preds = %if.end13.i %prev.i.i = getelementptr inbounds i8, ptr %arrayidx.i, i64 64 store ptr null, ptr %prev.i.i, align 8 - %28 = load ptr, ptr %cond.i37, align 8 + %27 = load ptr, ptr %cond.i37, align 8 %next.i.i = getelementptr inbounds i8, ptr %arrayidx.i, i64 56 - store ptr %28, ptr %next.i.i, align 8 + store ptr %27, ptr %next.i.i, align 8 store ptr %arrayidx.i, ptr %cond.i37, align 8 - %29 = load ptr, ptr %next.i.i, align 8 - %cmp.not.i.i = icmp eq ptr %29, null + %28 = load ptr, ptr %next.i.i, align 8 + %cmp.not.i.i = icmp eq ptr %28, null br i1 %cmp.not.i.i, label %if.else.i23.i, label %if.then.i.i38 if.then.i.i38: ; preds = %if.then20.i - %prev4.i.i = getelementptr inbounds i8, ptr %29, i64 64 + %prev4.i.i = getelementptr inbounds i8, ptr %28, i64 64 store ptr %arrayidx.i, ptr %prev4.i.i, align 8 br label %mi_segment_span_free.exit diff --git a/bench/minetest/optimized/COpenGLExtensionHandler.cpp.ll b/bench/minetest/optimized/COpenGLExtensionHandler.cpp.ll index 24c35d26d56..457fde4d9a3 100644 --- a/bench/minetest/optimized/COpenGLExtensionHandler.cpp.ll +++ b/bench/minetest/optimized/COpenGLExtensionHandler.cpp.ll @@ -7765,7 +7765,7 @@ if.then24: ; preds = %if.end18, %if.end18 br i1 %or.cond29.i.i, label %while.body.i.i, label %if.else13.i while.body.i.i: ; preds = %if.then24, %while.body.i.i - %23 = phi i8 [ %25, %while.body.i.i ], [ %21, %if.then24 ] + %23 = phi i8 [ %24, %while.body.i.i ], [ %21, %if.then24 ] %unsignedValue.032.i.i = phi i32 [ %unsignedValue.2.i.i, %while.body.i.i ], [ 0, %if.then24 ] %overflow.031.i.i = phi i8 [ %spec.select.i.i, %while.body.i.i ], [ 0, %if.then24 ] %in.addr.030.i.i = phi ptr [ %incdec.ptr.i.i, %while.body.i.i ], [ %in.addr.0.i, %if.then24 ] @@ -7776,13 +7776,12 @@ while.body.i.i: ; preds = %if.then24, %while.b %cmp7.i.i = icmp ult i32 %add.i.i, %unsignedValue.032.i.i %spec.select.i.i = select i1 %cmp7.i.i, i8 1, i8 %overflow.031.i.i %spec.select28.i.i = select i1 %cmp7.i.i, i32 -1, i32 %unsignedValue.032.i.i - %24 = and i8 %spec.select.i.i, 1 - %tobool10.not.i.i = icmp eq i8 %24, 0 + %tobool10.not.i.i = icmp eq i8 %spec.select.i.i, 0 %unsignedValue.2.i.i = select i1 %tobool10.not.i.i, i32 %add.i.i, i32 %spec.select28.i.i %incdec.ptr.i.i = getelementptr inbounds i8, ptr %in.addr.030.i.i, i64 1 - %25 = load i8, ptr %incdec.ptr.i.i, align 1, !tbaa !3 - %26 = add i8 %25, -48 - %or.cond.i.i = icmp ult i8 %26, 10 + %24 = load i8, ptr %incdec.ptr.i.i, align 1, !tbaa !3 + %25 = add i8 %24, -48 + %or.cond.i.i = icmp ult i8 %25, 10 br i1 %or.cond.i.i, label %while.body.i.i, label %while.end.i.i, !llvm.loop !214 while.end.i.i: ; preds = %while.body.i.i diff --git a/bench/minetest/optimized/test_utilities.cpp.ll b/bench/minetest/optimized/test_utilities.cpp.ll index f7a9888d481..8403976f5f4 100644 --- a/bench/minetest/optimized/test_utilities.cpp.ll +++ b/bench/minetest/optimized/test_utilities.cpp.ll @@ -3787,7 +3787,7 @@ while.end.i.i237: ; preds = %while.body.i.i234.2 while.cond3.i.i240: ; preds = %land.rhs5.i.i253, %while.end.i.i237 %back.0.i.i241 = phi i64 [ 14, %while.end.i.i237 ], [ %sub.i.i254, %land.rhs5.i.i253 ] %cmp4.i.i242 = icmp ugt i64 %back.0.i.i241, %front.0.lcssa.i.i238 - br i1 %cmp4.i.i242, label %land.rhs5.i.i253, label %_Z4trimPKc.exit259 + br i1 %cmp4.i.i242, label %land.rhs5.i.i253, label %land.rhs.i.i278.preheader land.rhs5.i.i253: ; preds = %while.cond3.i.i240 %sub.i.i254 = add nsw i64 %back.0.i.i241, -1 @@ -3796,22 +3796,14 @@ land.rhs5.i.i253: ; preds = %while.cond3.i.i240 %conv7.i.i256 = sext i8 %12 to i32 %call8.i.i257 = tail call i32 @isspace(i32 noundef %conv7.i.i256) #33 %tobool9.not.i.i258 = icmp eq i32 %call8.i.i257, 0 - br i1 %tobool9.not.i.i258, label %_Z4trimPKc.exit259, label %while.cond3.i.i240, !llvm.loop !43 + br i1 %tobool9.not.i.i258, label %if.then55, label %while.cond3.i.i240, !llvm.loop !43 -_Z4trimPKc.exit259: ; preds = %land.rhs5.i.i253, %while.cond3.i.i240 - %back.0.lcssa.i.i244 = phi i64 [ %front.0.lcssa.i.i238, %while.cond3.i.i240 ], [ %back.0.i.i241, %land.rhs5.i.i253 ] - %sub13.i.i246 = sub i64 %back.0.lcssa.i.i244, %front.0.lcssa.i.i238 - %sub.i.i.i247 = sub nuw nsw i64 14, %front.0.lcssa.i.i238 - %.sroa.speculated.i.i.i248 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i247, i64 %sub13.i.i246) - %cmp.i262 = icmp eq i64 %.sroa.speculated.i.i.i248, 0 - br i1 %cmp.i262, label %land.rhs.i.i278.preheader, label %if.then55 - -land.rhs.i.i278.preheader: ; preds = %_Z4trimPKc.exit259 +land.rhs.i.i278.preheader: ; preds = %while.cond3.i.i240 %call2.i.i282 = tail call i32 @isspace(i32 noundef 32) #33 %tobool.not.i.i283 = icmp eq i32 %call2.i.i282, 0 br i1 %tobool.not.i.i283, label %while.end.i.i287, label %while.body.i.i284.1 -if.then55: ; preds = %_Z4trimPKc.exit259 +if.then55: ; preds = %land.rhs5.i.i253 %exception56 = tail call ptr @__cxa_allocate_exception(i64 72) #30 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp58) #30 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp57, ptr noundef nonnull @.str.60, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp58) diff --git a/bench/mitsuba3/optimized/bitmap.cpp.ll b/bench/mitsuba3/optimized/bitmap.cpp.ll index 074202d3480..675c01884f6 100644 --- a/bench/mitsuba3/optimized/bitmap.cpp.ll +++ b/bench/mitsuba3/optimized/bitmap.cpp.ll @@ -37617,8 +37617,7 @@ _ZNSt3__116__constrain_hashB8ne190000Emm.exit33.us: ; preds = %.preheader.split. 88: ; preds = %_ZNSt3__116__constrain_hashB8ne190000Emm.exit33.us %89 = trunc nuw i8 %.0.us to i1 - %.mask.us = and i8 %.0.us, 1 - %90 = zext nneg i8 %.mask.us to i32 + %90 = zext nneg i8 %.0.us to i32 %91 = icmp eq i64 %85, %1 br i1 %91, label %92, label %_ZNKSt3__121__unordered_map_equalINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_17__hash_value_typeIS6_NS_4pairIS6_PKN7mitsuba6Struct5FieldEEEEENS_8equal_toIS6_EENS_4hashIS6_EELb1EEclB8ne190000ERKSF_SM_.exit.us @@ -37697,8 +37696,7 @@ _ZNSt3__116__constrain_hashB8ne190000Emm.exit33: ; preds = %114, %118 122: ; preds = %_ZNSt3__116__constrain_hashB8ne190000Emm.exit33 %123 = trunc nuw i8 %.0 to i1 - %.mask = and i8 %.0, 1 - %124 = zext nneg i8 %.mask to i32 + %124 = zext nneg i8 %.0 to i32 %125 = icmp eq i64 %116, %1 br i1 %125, label %126, label %_ZNKSt3__121__unordered_map_equalINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_17__hash_value_typeIS6_NS_4pairIS6_PKN7mitsuba6Struct5FieldEEEEENS_8equal_toIS6_EENS_4hashIS6_EELb1EEclB8ne190000ERKSF_SM_.exit diff --git a/bench/msdfgen/optimized/main.cpp.ll b/bench/msdfgen/optimized/main.cpp.ll index a665bed8c30..a7f42b467b3 100644 --- a/bench/msdfgen/optimized/main.cpp.ll +++ b/bench/msdfgen/optimized/main.cpp.ll @@ -5396,21 +5396,10 @@ sw.bb30: ; preds = %for.cond, %for.cond br i1 %cmp38, label %if.then39, label %for.inc if.then39: ; preds = %sw.bb30 - %12 = and i8 %1, -33 - %13 = icmp eq i8 %12, 67 - %conv44 = select i1 %13, i32 6, i32 0 - %14 = icmp eq i8 %12, 77 - %conv51 = select i1 %14, i32 5, i32 0 - %or = or i32 %conv44, %conv51 - %15 = icmp eq i8 %12, 89 - %conv59 = select i1 %15, i32 3, i32 0 - %or61 = or i32 %or, %conv59 - %16 = icmp eq i8 %12, 87 - %or70 = select i1 %16, i32 7, i32 %or61 %add.ptr.i46 = getelementptr inbounds %"class.msdfgen::EdgeHolder", ptr %11, i64 %conv35 %call74 = tail call noundef ptr @_ZN7msdfgen10EdgeHolderptEv(ptr noundef nonnull align 8 dereferenceable(8) %add.ptr.i46) %color75 = getelementptr inbounds i8, ptr %call74, i64 8 - store i32 %or70, ptr %color75, align 8 + store i32 7, ptr %color75, align 8 br label %for.inc for.inc: ; preds = %for.cond, %if.end25, %sw.bb29, %if.then39, %sw.bb30 diff --git a/bench/nghttp2/optimized/nghttp2_hd.c.ll b/bench/nghttp2/optimized/nghttp2_hd.c.ll index f70a899cd20..593a2837303 100644 --- a/bench/nghttp2/optimized/nghttp2_hd.c.ll +++ b/bench/nghttp2/optimized/nghttp2_hd.c.ll @@ -4453,9 +4453,8 @@ if.end.i: ; preds = %entry br i1 %cmp37.i, label %for.inc.i, label %if.end.i19.thread if.end.i19.thread: ; preds = %if.end.i - %conv8.i37 = select i1 %cmp.not, i8 -1, i8 127 - store i8 %conv8.i37, ptr %sb, align 16 - %buf.addr.020.i38 = getelementptr inbounds i8, ptr %sb, i64 1 + store i8 -1, ptr %sb, align 16 + %buf.addr.020.i36 = getelementptr inbounds i8, ptr %sb, i64 1 br label %for.end.i for.inc.i: ; preds = %if.end.i, %for.inc.i @@ -4472,8 +4471,7 @@ count_encoded_length.exit: ; preds = %for.inc.i if.end.i19: ; preds = %count_encoded_length.exit %1 = add nuw nsw i64 %len.09.i, 2 - %conv8.i = select i1 %cmp.not, i8 -1, i8 127 - store i8 %conv8.i, ptr %sb, align 16 + store i8 -1, ptr %sb, align 16 %buf.addr.020.i = getelementptr inbounds i8, ptr %sb, i64 1 br label %for.body.i @@ -4489,15 +4487,15 @@ for.body.i: ; preds = %if.end.i19, %for.bo br i1 %cmp10.i, label %for.body.i, label %for.end.i, !llvm.loop !9 for.end.i: ; preds = %for.body.i, %if.end.i19.thread - %retval.0.i243339 = phi i64 [ 2, %if.end.i19.thread ], [ %1, %for.body.i ] + %retval.0.i243337 = phi i64 [ 2, %if.end.i19.thread ], [ %1, %for.body.i ] %n.addr.0.lcssa.i = phi i64 [ %sub2.i, %if.end.i19.thread ], [ %shr.i21, %for.body.i ] - %buf.addr.0.lcssa.i = phi ptr [ %buf.addr.020.i38, %if.end.i19.thread ], [ %buf.addr.0.i, %for.body.i ] + %buf.addr.0.lcssa.i = phi ptr [ %buf.addr.020.i36, %if.end.i19.thread ], [ %buf.addr.0.i, %for.body.i ] %conv16.i = trunc nuw nsw i64 %n.addr.0.lcssa.i to i8 store i8 %conv16.i, ptr %buf.addr.0.lcssa.i, align 1 br label %encode_length.exit encode_length.exit: ; preds = %if.end4.thread, %for.end.i - %retval.0.i2427 = phi i64 [ 1, %if.end4.thread ], [ %retval.0.i243339, %for.end.i ] + %retval.0.i2427 = phi i64 [ 1, %if.end4.thread ], [ %retval.0.i243337, %for.end.i ] %call7 = call i32 @nghttp2_bufs_add(ptr noundef %bufs, ptr noundef nonnull %sb, i64 noundef %retval.0.i2427) #12 %cmp8.not = icmp eq i32 %call7, 0 br i1 %cmp8.not, label %if.end11, label %return diff --git a/bench/nghttp2/optimized/url_parser.c.ll b/bench/nghttp2/optimized/url_parser.c.ll index 075c1795550..a6da74db7c1 100644 --- a/bench/nghttp2/optimized/url_parser.c.ll +++ b/bench/nghttp2/optimized/url_parser.c.ll @@ -5,7 +5,6 @@ target triple = "x86_64-unknown-linux-gnu" %struct.anon = type { i16, i16 } -@.str = private unnamed_addr constant [20 x i8] c"!\22Unexpected state\22\00", align 1 @.str.1 = private unnamed_addr constant [129 x i8] c"generated/home/dtcxzyw/WorkSpace/Projects/compilers/llvm-opt-benchmark/bench/nghttp2/nghttp2/third-party/url-parser/url_parser.c\00", align 1 @__PRETTY_FUNCTION__.http_parser_parse_url = private unnamed_addr constant [79 x i8] c"int http_parser_parse_url(const char *, size_t, int, struct http_parser_url *)\00", align 1 @.str.3 = private unnamed_addr constant [46 x i8] c"off + len <= buflen && \22Port number overflow\22\00", align 1 @@ -166,7 +165,8 @@ if.end200.i: ; preds = %sw.bb194.i %switch.selectcmp.i = icmp eq i8 %1, 35 %switch.select.i = select i1 %switch.selectcmp.i, i32 30, i32 1 %switch.selectcmp83.i = icmp eq i8 %1, 63 - br i1 %switch.selectcmp83.i, label %for.inc, label %parse_url_char.exit + %spec.select = select i1 %switch.selectcmp83.i, i32 28, i32 %switch.select.i + br label %for.inc sw.bb204.i: ; preds = %if.end17.i, %if.end17.i %conv205.i = zext i8 %1 to i32 @@ -185,7 +185,7 @@ if.end216.i: ; preds = %sw.bb204.i %switch.selectcmp85.i = icmp eq i8 %1, 35 %switch.select86.i = select i1 %switch.selectcmp85.i, i32 30, i32 1 %switch.selectcmp87.i = icmp eq i8 %1, 63 - br i1 %switch.selectcmp87.i, label %sw.epilog, label %parse_url_char.exit + br i1 %switch.selectcmp87.i, label %sw.epilog, label %for.inc sw.bb221.i: ; preds = %if.end17.i %conv222.i = zext i8 %1 to i32 @@ -204,7 +204,7 @@ if.end233.i: ; preds = %sw.bb221.i %switch.selectcmp89.i = icmp eq i8 %1, 35 %switch.select90.i = select i1 %switch.selectcmp89.i, i32 30, i32 1 %switch.selectcmp91.i = icmp eq i8 %1, 63 - br i1 %switch.selectcmp91.i, label %sw.epilog, label %parse_url_char.exit + br i1 %switch.selectcmp91.i, label %sw.epilog, label %for.inc sw.bb238.i: ; preds = %if.end17.i %conv239.i = zext i8 %1 to i32 @@ -228,42 +228,10 @@ if.end250.i: ; preds = %sw.bb238.i parse_url_char.exit.thread57: ; preds = %sw.bb.i, %sw.bb.i, %sw.bb194.i, %sw.bb79.i, %sw.bb73.i br label %sw.epilog -parse_url_char.exit: ; preds = %if.end233.i, %if.end216.i, %if.end200.i - %retval.0.i = phi i32 [ %switch.select.i, %if.end200.i ], [ %switch.select86.i, %if.end216.i ], [ %switch.select90.i, %if.end233.i ] - switch i32 %retval.0.i, label %sw.default [ - i32 1, label %return - i32 22, label %for.inc - i32 23, label %for.inc - i32 24, label %for.inc - i32 28, label %for.inc - i32 30, label %for.inc - i32 21, label %sw.epilog - i32 26, label %sw.bb4 - i32 25, label %sw.bb5 - i32 27, label %sw.bb6 - i32 29, label %sw.bb7 - ] - -sw.bb4: ; preds = %parse_url_char.exit - br label %sw.epilog - -sw.bb5: ; preds = %parse_url_char.exit - br label %sw.epilog - -sw.bb6: ; preds = %parse_url_char.exit - br label %sw.epilog - -sw.bb7: ; preds = %parse_url_char.exit - br label %sw.epilog - -sw.default: ; preds = %parse_url_char.exit - tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 589, ptr noundef nonnull @__PRETTY_FUNCTION__.http_parser_parse_url) #4 - unreachable - -sw.epilog: ; preds = %if.end250.i, %if.end250.i, %if.end216.i, %sw.bb204.i, %if.end94.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %sw.bb40.i, %if.end26.i, %if.end233.i, %sw.bb238.i, %sw.bb221.i, %sw.bb79.i, %parse_url_char.exit.thread57, %sw.bb4, %parse_url_char.exit, %sw.bb7, %sw.bb6, %sw.bb5 - %retval.0.i55 = phi i32 [ %retval.0.i, %parse_url_char.exit ], [ %retval.0.i, %sw.bb4 ], [ %retval.0.i, %sw.bb5 ], [ 27, %parse_url_char.exit.thread57 ], [ %retval.0.i, %sw.bb6 ], [ %retval.0.i, %sw.bb7 ], [ 26, %sw.bb79.i ], [ 31, %sw.bb221.i ], [ 31, %sw.bb238.i ], [ 31, %if.end233.i ], [ 31, %if.end250.i ], [ 21, %if.end26.i ], [ 21, %sw.bb40.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %if.end94.i ], [ 29, %sw.bb204.i ], [ 29, %if.end216.i ], [ 31, %if.end250.i ] - %uf.0 = phi i32 [ 0, %parse_url_char.exit ], [ 1, %sw.bb4 ], [ 1, %sw.bb5 ], [ 3, %parse_url_char.exit.thread57 ], [ 3, %sw.bb6 ], [ 4, %sw.bb7 ], [ 1, %sw.bb79.i ], [ 5, %sw.bb221.i ], [ 5, %sw.bb238.i ], [ 5, %if.end233.i ], [ 5, %if.end250.i ], [ 0, %if.end26.i ], [ 0, %sw.bb40.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %if.end94.i ], [ 4, %sw.bb204.i ], [ 4, %if.end216.i ], [ 5, %if.end250.i ] - %found_at.3 = phi i32 [ %found_at.085, %parse_url_char.exit ], [ 1, %sw.bb4 ], [ %found_at.085, %sw.bb5 ], [ %found_at.085, %parse_url_char.exit.thread57 ], [ %found_at.085, %sw.bb6 ], [ %found_at.085, %sw.bb7 ], [ 1, %sw.bb79.i ], [ %found_at.085, %sw.bb221.i ], [ %found_at.085, %sw.bb238.i ], [ %found_at.085, %if.end233.i ], [ %found_at.085, %if.end250.i ], [ %found_at.085, %if.end26.i ], [ %found_at.085, %sw.bb40.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %if.end94.i ], [ %found_at.085, %sw.bb204.i ], [ %found_at.085, %if.end216.i ], [ %found_at.085, %if.end250.i ] +sw.epilog: ; preds = %if.end250.i, %if.end250.i, %if.end216.i, %sw.bb204.i, %if.end94.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %sw.bb40.i, %if.end26.i, %if.end233.i, %sw.bb238.i, %sw.bb221.i, %sw.bb79.i, %parse_url_char.exit.thread57 + %retval.0.i55 = phi i32 [ 27, %parse_url_char.exit.thread57 ], [ 26, %sw.bb79.i ], [ 31, %sw.bb221.i ], [ 31, %sw.bb238.i ], [ 31, %if.end233.i ], [ 31, %if.end250.i ], [ 21, %if.end26.i ], [ 21, %sw.bb40.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %switch.early.test.i ], [ 25, %if.end94.i ], [ 29, %sw.bb204.i ], [ 29, %if.end216.i ], [ 31, %if.end250.i ] + %uf.0 = phi i32 [ 3, %parse_url_char.exit.thread57 ], [ 1, %sw.bb79.i ], [ 5, %sw.bb221.i ], [ 5, %sw.bb238.i ], [ 5, %if.end233.i ], [ 5, %if.end250.i ], [ 0, %if.end26.i ], [ 0, %sw.bb40.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %if.end94.i ], [ 4, %sw.bb204.i ], [ 4, %if.end216.i ], [ 5, %if.end250.i ] + %found_at.3 = phi i32 [ %found_at.085, %parse_url_char.exit.thread57 ], [ 1, %sw.bb79.i ], [ %found_at.085, %sw.bb221.i ], [ %found_at.085, %sw.bb238.i ], [ %found_at.085, %if.end233.i ], [ %found_at.085, %if.end250.i ], [ %found_at.085, %if.end26.i ], [ %found_at.085, %sw.bb40.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %switch.early.test.i ], [ %found_at.085, %if.end94.i ], [ %found_at.085, %sw.bb204.i ], [ %found_at.085, %if.end216.i ], [ %found_at.085, %if.end250.i ] %cmp9 = icmp eq i32 %uf.0, %old_uf.083 br i1 %cmp9, label %if.then10, label %if.end11 @@ -292,11 +260,11 @@ if.end11: ; preds = %sw.epilog store i16 %conv21, ptr %u, align 2 br label %for.inc -for.inc: ; preds = %if.end200.i, %sw.bb73.i, %sw.bb79.i, %sw.bb67.i, %sw.bb61.i, %if.end55.i, %parse_url_char.exit, %parse_url_char.exit, %parse_url_char.exit, %parse_url_char.exit, %parse_url_char.exit, %if.end11, %if.then10 - %15 = phi i16 [ %0, %if.then10 ], [ %conv21, %if.end11 ], [ %0, %parse_url_char.exit ], [ %0, %parse_url_char.exit ], [ %0, %parse_url_char.exit ], [ %0, %parse_url_char.exit ], [ %0, %parse_url_char.exit ], [ %0, %sw.bb67.i ], [ %0, %sw.bb61.i ], [ %0, %if.end55.i ], [ %0, %sw.bb79.i ], [ %0, %sw.bb73.i ], [ %0, %if.end200.i ] - %retval.0.i47 = phi i32 [ %retval.0.i55, %if.then10 ], [ %retval.0.i55, %if.end11 ], [ %retval.0.i, %parse_url_char.exit ], [ %retval.0.i, %parse_url_char.exit ], [ %retval.0.i, %parse_url_char.exit ], [ %retval.0.i, %parse_url_char.exit ], [ %retval.0.i, %parse_url_char.exit ], [ 24, %sw.bb67.i ], [ 23, %sw.bb61.i ], [ 22, %if.end55.i ], [ 28, %sw.bb79.i ], [ 28, %sw.bb73.i ], [ 28, %if.end200.i ] - %old_uf.1 = phi i32 [ %old_uf.083, %if.then10 ], [ %uf.0, %if.end11 ], [ %old_uf.083, %parse_url_char.exit ], [ %old_uf.083, %parse_url_char.exit ], [ %old_uf.083, %parse_url_char.exit ], [ %old_uf.083, %parse_url_char.exit ], [ %old_uf.083, %parse_url_char.exit ], [ %old_uf.083, %sw.bb67.i ], [ %old_uf.083, %sw.bb61.i ], [ %old_uf.083, %if.end55.i ], [ %old_uf.083, %sw.bb79.i ], [ %old_uf.083, %sw.bb73.i ], [ %old_uf.083, %if.end200.i ] - %found_at.2 = phi i32 [ %found_at.3, %if.then10 ], [ %found_at.3, %if.end11 ], [ %found_at.085, %parse_url_char.exit ], [ %found_at.085, %parse_url_char.exit ], [ %found_at.085, %parse_url_char.exit ], [ %found_at.085, %parse_url_char.exit ], [ %found_at.085, %parse_url_char.exit ], [ %found_at.085, %sw.bb67.i ], [ %found_at.085, %sw.bb61.i ], [ %found_at.085, %if.end55.i ], [ %found_at.085, %sw.bb79.i ], [ %found_at.085, %sw.bb73.i ], [ %found_at.085, %if.end200.i ] +for.inc: ; preds = %if.end200.i, %if.end216.i, %if.end233.i, %sw.bb73.i, %sw.bb79.i, %sw.bb67.i, %sw.bb61.i, %if.end55.i, %if.end11, %if.then10 + %15 = phi i16 [ %0, %if.then10 ], [ %conv21, %if.end11 ], [ %0, %sw.bb67.i ], [ %0, %sw.bb61.i ], [ %0, %if.end55.i ], [ %0, %sw.bb79.i ], [ %0, %sw.bb73.i ], [ %0, %if.end216.i ], [ %0, %if.end233.i ], [ %0, %if.end200.i ] + %retval.0.i47 = phi i32 [ %retval.0.i55, %if.then10 ], [ %retval.0.i55, %if.end11 ], [ 24, %sw.bb67.i ], [ 23, %sw.bb61.i ], [ 22, %if.end55.i ], [ 28, %sw.bb79.i ], [ 28, %sw.bb73.i ], [ %switch.select86.i, %if.end216.i ], [ %switch.select90.i, %if.end233.i ], [ %spec.select, %if.end200.i ] + %old_uf.1 = phi i32 [ %old_uf.083, %if.then10 ], [ %uf.0, %if.end11 ], [ %old_uf.083, %sw.bb67.i ], [ %old_uf.083, %sw.bb61.i ], [ %old_uf.083, %if.end55.i ], [ %old_uf.083, %sw.bb79.i ], [ %old_uf.083, %sw.bb73.i ], [ %old_uf.083, %if.end216.i ], [ %old_uf.083, %if.end233.i ], [ %old_uf.083, %if.end200.i ] + %found_at.2 = phi i32 [ %found_at.3, %if.then10 ], [ %found_at.3, %if.end11 ], [ %found_at.085, %sw.bb67.i ], [ %found_at.085, %sw.bb61.i ], [ %found_at.085, %if.end55.i ], [ %found_at.085, %sw.bb79.i ], [ %found_at.085, %sw.bb73.i ], [ %found_at.085, %if.end216.i ], [ %found_at.085, %if.end233.i ], [ %found_at.085, %if.end200.i ] %incdec.ptr = getelementptr inbounds i8, ptr %p.086, i64 1 %cmp1 = icmp ult ptr %incdec.ptr, %add.ptr br i1 %cmp1, label %for.body, label %for.end, !llvm.loop !4 @@ -586,7 +554,7 @@ if.end42: ; preds = %switch.hole_check, br i1 %tobool.not, label %land.lhs.true44, label %if.end50 if.end42.thread: ; preds = %if.end - %spec.select = zext i1 %tobool.not to i32 + %spec.select108 = zext i1 %tobool.not to i32 br label %return land.lhs.true44: ; preds = %if.end42 @@ -653,8 +621,8 @@ switch.hole_check: ; preds = %for.end.i %switch.lobit = trunc i16 %switch.shifted to i1 br i1 %switch.lobit, label %return, label %if.end42 -return: ; preds = %if.end250.i, %if.end26.i, %if.end55.i, %sw.bb61.i, %sw.bb67.i, %switch.early.test.i, %sw.bb73.i, %for.body, %for.body, %for.body, %for.body, %for.body, %parse_url_char.exit, %sw.bb261.i.i, %switch.early.test104.i.i, %if.end202.i.i, %sw.bb159.i.i, %lor.lhs.false109.i.i, %switch.early.test.i.i, %for.body84, %switch.hole_check, %if.end42.thread, %if.end50, %for.end94, %land.lhs.true44, %for.end, %entry - %retval.0 = phi i32 [ 1, %entry ], [ 1, %for.end ], [ 1, %land.lhs.true44 ], [ 0, %for.end94 ], [ 0, %if.end50 ], [ %spec.select, %if.end42.thread ], [ 1, %switch.hole_check ], [ 1, %for.body84 ], [ 1, %switch.early.test.i.i ], [ 1, %lor.lhs.false109.i.i ], [ 1, %sw.bb159.i.i ], [ 1, %if.end202.i.i ], [ 1, %switch.early.test104.i.i ], [ 1, %sw.bb261.i.i ], [ 1, %if.end250.i ], [ 1, %if.end26.i ], [ 1, %if.end55.i ], [ 1, %sw.bb61.i ], [ 1, %sw.bb67.i ], [ 1, %switch.early.test.i ], [ 1, %sw.bb73.i ], [ 1, %for.body ], [ 1, %for.body ], [ 1, %for.body ], [ 1, %for.body ], [ 1, %for.body ], [ %retval.0.i, %parse_url_char.exit ] +return: ; preds = %if.end250.i, %if.end26.i, %if.end55.i, %sw.bb61.i, %sw.bb67.i, %switch.early.test.i, %sw.bb73.i, %for.body, %for.body, %for.body, %for.body, %for.body, %sw.bb261.i.i, %switch.early.test104.i.i, %if.end202.i.i, %sw.bb159.i.i, %lor.lhs.false109.i.i, %switch.early.test.i.i, %for.body84, %switch.hole_check, %if.end42.thread, %if.end50, %for.end94, %land.lhs.true44, %for.end, %entry + %retval.0 = phi i32 [ 1, %entry ], [ 1, %for.end ], [ 1, %land.lhs.true44 ], [ 0, %for.end94 ], [ 0, %if.end50 ], [ %spec.select108, %if.end42.thread ], [ 1, %switch.hole_check ], [ 1, %for.body84 ], [ 1, %switch.early.test.i.i ], [ 1, %lor.lhs.false109.i.i ], [ 1, %sw.bb159.i.i ], [ 1, %if.end202.i.i ], [ 1, %switch.early.test104.i.i ], [ 1, %sw.bb261.i.i ], [ 1, %for.body ], [ 1, %for.body ], [ 1, %for.body ], [ 1, %for.body ], [ 1, %for.body ], [ 1, %sw.bb73.i ], [ 1, %switch.early.test.i ], [ 1, %sw.bb67.i ], [ 1, %sw.bb61.i ], [ 1, %if.end55.i ], [ 1, %if.end26.i ], [ 1, %if.end250.i ] ret i32 %retval.0 } diff --git a/bench/nori/optimized/renderpass_gl.cpp.ll b/bench/nori/optimized/renderpass_gl.cpp.ll index 05f482b6618..baa0c531714 100644 --- a/bench/nori/optimized/renderpass_gl.cpp.ll +++ b/bench/nori/optimized/renderpass_gl.cpp.ll @@ -1612,7 +1612,7 @@ define hidden void @_ZN7nanogui10RenderPass7blit_toERKNS_5ArrayIiLm2EEES4_PNS_6O %47 = getelementptr inbounds i8, ptr %34, i64 8 %48 = load ptr, ptr %47, align 8 %.not40 = icmp eq ptr %48, null - br i1 %.not40, label %55, label %49 + br i1 %.not40, label %54, label %49 49: ; preds = %46 %50 = getelementptr inbounds i8, ptr %0, i64 16 @@ -1620,75 +1620,74 @@ define hidden void @_ZN7nanogui10RenderPass7blit_toERKNS_5ArrayIiLm2EEES4_PNS_6O %52 = getelementptr inbounds i8, ptr %51, i64 8 %53 = load ptr, ptr %52, align 8 %.not41 = icmp eq ptr %53, null - %54 = or disjoint i32 %.2, 1024 - %spec.select48 = select i1 %.not41, i32 %.2, i32 %54 - br label %55 + %spec.select48 = select i1 %.not41, i32 %.2, i32 1024 + br label %54 -55: ; preds = %49, %46 +54: ; preds = %49, %46 %.3 = phi i32 [ %.2, %46 ], [ %spec.select48, %49 ] %.not67 = icmp eq i64 %37, 16 - br i1 %.not67, label %.thread65, label %56 - -56: ; preds = %55 - %57 = getelementptr inbounds i8, ptr %34, i64 16 - %58 = load ptr, ptr %57, align 8 - %.not42 = icmp eq ptr %58, null - br i1 %.not42, label %.thread65, label %59 - -59: ; preds = %56 - %60 = getelementptr inbounds i8, ptr %0, i64 16 - %61 = load ptr, ptr %60, align 8 - %62 = getelementptr inbounds i8, ptr %61, i64 16 - %63 = load ptr, ptr %62, align 8 - %.not43 = icmp eq ptr %63, null - %64 = or i32 %.3, 16384 - %spec.select49 = select i1 %.not43, i32 %.3, i32 %64 + br i1 %.not67, label %.thread65, label %55 + +55: ; preds = %54 + %56 = getelementptr inbounds i8, ptr %34, i64 16 + %57 = load ptr, ptr %56, align 8 + %.not42 = icmp eq ptr %57, null + br i1 %.not42, label %.thread65, label %58 + +58: ; preds = %55 + %59 = getelementptr inbounds i8, ptr %0, i64 16 + %60 = load ptr, ptr %59, align 8 + %61 = getelementptr inbounds i8, ptr %60, i64 16 + %62 = load ptr, ptr %61, align 8 + %.not43 = icmp eq ptr %62, null + %63 = or i32 %.3, 16384 + %spec.select49 = select i1 %.not43, i32 %.3, i32 %63 br label %.thread65 .thread61: ; preds = %5, %27 - %65 = tail call ptr @__cxa_allocate_exception(i64 16) #20 - invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef nonnull @.str.12) - to label %66 unwind label %67 + %64 = tail call ptr @__cxa_allocate_exception(i64 16) #20 + invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull @.str.12) + to label %65 unwind label %66 -66: ; preds = %.thread61 - tail call void @__cxa_throw(ptr nonnull %65, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #18 +65: ; preds = %.thread61 + tail call void @__cxa_throw(ptr nonnull %64, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #18 unreachable -67: ; preds = %.thread61 - %68 = landingpad { ptr, i32 } +66: ; preds = %.thread61 + %67 = landingpad { ptr, i32 } cleanup - tail call void @__cxa_free_exception(ptr %65) #20 - resume { ptr, i32 } %68 - -.thread65: ; preds = %28, %44, %59, %22, %56, %55, %18 - %.1 = phi i32 [ %.031, %18 ], [ %.3, %56 ], [ %.3, %55 ], [ %spec.select46, %22 ], [ %spec.select49, %59 ], [ %.2, %44 ], [ 0, %28 ] - %.0 = phi i32 [ 0, %18 ], [ %30, %56 ], [ %30, %55 ], [ 0, %22 ], [ %30, %59 ], [ %30, %44 ], [ %30, %28 ] - %69 = getelementptr inbounds i8, ptr %0, i64 132 - %70 = load i32, ptr %69, align 4 - tail call void @glBindFramebuffer(i32 noundef 36008, i32 noundef %70) + tail call void @__cxa_free_exception(ptr %64) #20 + resume { ptr, i32 } %67 + +.thread65: ; preds = %28, %44, %58, %22, %55, %54, %18 + %.1 = phi i32 [ %.031, %18 ], [ %.3, %55 ], [ %.3, %54 ], [ %spec.select46, %22 ], [ %spec.select49, %58 ], [ %.2, %44 ], [ 0, %28 ] + %.0 = phi i32 [ 0, %18 ], [ %30, %55 ], [ %30, %54 ], [ 0, %22 ], [ %30, %58 ], [ %30, %44 ], [ %30, %28 ] + %68 = getelementptr inbounds i8, ptr %0, i64 132 + %69 = load i32, ptr %68, align 4 + tail call void @glBindFramebuffer(i32 noundef 36008, i32 noundef %69) tail call void @glBindFramebuffer(i32 noundef 36009, i32 noundef %.0) - %71 = icmp eq i32 %.0, 0 - br i1 %71, label %72, label %_ZN7nanoguiplERKNS_5ArrayIiLm2EEES3_.exit.critedge + %70 = icmp eq i32 %.0, 0 + br i1 %70, label %71, label %_ZN7nanoguiplERKNS_5ArrayIiLm2EEES3_.exit.critedge -72: ; preds = %.thread65 +71: ; preds = %.thread65 tail call void @glDrawBuffer(i32 noundef 1029) br label %_ZN7nanoguiplERKNS_5ArrayIiLm2EEES3_.exit.critedge -_ZN7nanoguiplERKNS_5ArrayIiLm2EEES3_.exit.critedge: ; preds = %72, %.thread65 - %73 = load i32, ptr %1, align 4 - %74 = load i32, ptr %2, align 4 - %75 = add nsw i32 %74, %73 - %76 = getelementptr inbounds i8, ptr %1, i64 4 - %77 = load i32, ptr %76, align 4 - %78 = getelementptr inbounds i8, ptr %2, i64 4 - %79 = load i32, ptr %78, align 4 - %80 = add nsw i32 %79, %77 - %81 = load i32, ptr %4, align 4 - %82 = add nsw i32 %74, %81 - %83 = getelementptr inbounds i8, ptr %4, i64 4 - %84 = load i32, ptr %83, align 4 - %85 = add nsw i32 %79, %84 - tail call void @glBlitFramebuffer(i32 noundef %73, i32 noundef %77, i32 noundef %75, i32 noundef %80, i32 noundef %81, i32 noundef %84, i32 noundef %82, i32 noundef %85, i32 noundef %.1, i32 noundef 9728) +_ZN7nanoguiplERKNS_5ArrayIiLm2EEES3_.exit.critedge: ; preds = %71, %.thread65 + %72 = load i32, ptr %1, align 4 + %73 = load i32, ptr %2, align 4 + %74 = add nsw i32 %73, %72 + %75 = getelementptr inbounds i8, ptr %1, i64 4 + %76 = load i32, ptr %75, align 4 + %77 = getelementptr inbounds i8, ptr %2, i64 4 + %78 = load i32, ptr %77, align 4 + %79 = add nsw i32 %78, %76 + %80 = load i32, ptr %4, align 4 + %81 = add nsw i32 %73, %80 + %82 = getelementptr inbounds i8, ptr %4, i64 4 + %83 = load i32, ptr %82, align 4 + %84 = add nsw i32 %78, %83 + tail call void @glBlitFramebuffer(i32 noundef %72, i32 noundef %76, i32 noundef %74, i32 noundef %79, i32 noundef %80, i32 noundef %83, i32 noundef %81, i32 noundef %84, i32 noundef %.1, i32 noundef 9728) tail call void @glBindFramebuffer(i32 noundef 36160, i32 noundef 0) ret void } diff --git a/bench/nuttx/optimized/lib_gmtimer.c.ll b/bench/nuttx/optimized/lib_gmtimer.c.ll index 2e216322e17..9d9ad006e1e 100644 --- a/bench/nuttx/optimized/lib_gmtimer.c.ll +++ b/bench/nuttx/optimized/lib_gmtimer.c.ll @@ -16,21 +16,24 @@ define noundef ptr @gmtime_r(ptr nocapture noundef readonly %0, ptr noundef retu %10 = add nsw i32 %9, 1970 %11 = tail call i32 @clock_isleapyear(i32 noundef %10) #3 %12 = icmp ne i32 %11, 0 + %.not44.i = icmp ult i64 %8, 366 + br i1 %.not44.i, label %._crit_edge.i, label %.lr.ph.preheader.i + +.lr.ph.preheader.i: ; preds = %2 %13 = select i1 %12, i64 366, i64 365 - %.not44.i = icmp ult i64 %8, %13 - br i1 %.not44.i, label %._crit_edge.i, label %.lr.ph.i + br label %.lr.ph.i -.lr.ph.i: ; preds = %2, %.lr.ph.i - %.03647.i = phi i64 [ %19, %.lr.ph.i ], [ %13, %2 ] - %.04046.i = phi i32 [ %14, %.lr.ph.i ], [ %9, %2 ] - %.04245.i = phi i64 [ %15, %.lr.ph.i ], [ %8, %2 ] +.lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i + %.03647.i = phi i64 [ %19, %.lr.ph.i ], [ %13, %.lr.ph.preheader.i ] + %.04046.i = phi i32 [ %14, %.lr.ph.i ], [ %9, %.lr.ph.preheader.i ] + %.04245.i = phi i64 [ %15, %.lr.ph.i ], [ %8, %.lr.ph.preheader.i ] %14 = add nsw i32 %.04046.i, 1 %15 = sub nuw i64 %.04245.i, %.03647.i %16 = add nsw i32 %.04046.i, 1971 %17 = tail call i32 @clock_isleapyear(i32 noundef %16) #3 %18 = icmp ne i32 %17, 0 %19 = select i1 %18, i64 366, i64 365 - %.not.i = icmp ult i64 %15, %19 + %.not.i = icmp ult i64 %15, 366 br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !6 ._crit_edge.i: ; preds = %.lr.ph.i, %2 @@ -87,8 +90,8 @@ clock_utc2calendar.exit: ; preds = %27, %._crit_edge52. %43 = trunc i64 %39 to i32 %44 = trunc i64 %36 to i32 %45 = tail call i32 @clock_daysbeforemonth(i32 noundef %.141.i, i1 noundef zeroext %.0.in.lcssa.i) #3 - %46 = trunc i64 %.042.lcssa.i to i32 - %47 = add i32 %46, 1 + %46 = trunc nuw i64 %.042.lcssa.i to i32 + %47 = add nuw nsw i32 %46, 1 %48 = sub i32 %47, %45 %49 = add nsw i32 %.pre-phi.i, -1900 %50 = getelementptr inbounds i8, ptr %1, i64 20 diff --git a/bench/nuttx/optimized/msgrcv.c.ll b/bench/nuttx/optimized/msgrcv.c.ll index 9549b7c8cbb..711c2d7b745 100644 --- a/bench/nuttx/optimized/msgrcv.c.ll +++ b/bench/nuttx/optimized/msgrcv.c.ll @@ -150,8 +150,8 @@ define range(i64 -1, 65536) i64 @msgrcv(i32 noundef %0, ptr noundef writeonly %1 .split.split.us.split.us.i: ; preds = %.split.split.us.i, %71 %.03952.us64.us.i = load ptr, ptr %21, align 8 %.not53.us65.us.i = icmp eq ptr %.03952.us64.us.i, %20 - %.not42.us67.us106.i = icmp eq ptr %.03952.us64.us.i, null - %.not42.us67.us.i = or i1 %.not53.us65.us.i, %.not42.us67.us106.i + %.not42.us67.us104.i = icmp eq ptr %.03952.us64.us.i, null + %.not42.us67.us.i = or i1 %.not53.us65.us.i, %.not42.us67.us104.i br i1 %.not42.us67.us.i, label %60, label %msgrcv_wait.exit.thread50 60: ; preds = %.split.split.us.split.us.i @@ -227,7 +227,7 @@ define range(i64 -1, 65536) i64 @msgrcv(i32 noundef %0, ptr noundef writeonly %1 %.03952.i = load ptr, ptr %21, align 8 %.not53.i = icmp eq ptr %.03952.i, %20 %brmerge.i = or i1 %23, %.not53.i - br i1 %brmerge.i, label %.lr.ph.split.split.us.i, label %.lr.ph.split.split.i + br i1 %brmerge.i, label %msgrcv_wait.exit.thread, label %.lr.ph.split.split.i .lr.ph.split.split.i: ; preds = %.split.split.i, %95 %.03955.i = phi ptr [ %.039.i, %95 ], [ %.03952.i, %.split.split.i ] @@ -243,13 +243,8 @@ define range(i64 -1, 65536) i64 @msgrcv(i32 noundef %0, ptr noundef writeonly %1 %.not.i = icmp eq ptr %.039.i, %20 br i1 %.not.i, label %msgrcv_wait.exit.thread, label %.lr.ph.split.split.i, !llvm.loop !8 -.lr.ph.split.split.us.i: ; preds = %.split.split.i - %.not42.i56 = icmp eq ptr %.03952.i, null - %.not42.i = or i1 %.not53.i, %.not42.i56 - br i1 %.not42.i, label %msgrcv_wait.exit.thread, label %msgrcv_wait.exit.thread50 - -msgrcv_wait.exit.thread50: ; preds = %.lr.ph.split.split.i, %.lr.ph.us69.i, %.split.split.us.split.us.i, %._crit_edge56.split.us.us.us.i, %._crit_edge56.split.us.us.i, %.lr.ph.split.split.us.i - %.247.i = phi ptr [ %.3.us.us.i, %._crit_edge56.split.us.us.i ], [ %.03952.i, %.lr.ph.split.split.us.i ], [ %.3.us.us.us.i, %._crit_edge56.split.us.us.us.i ], [ %.03952.us64.us.i, %.split.split.us.split.us.i ], [ %.03955.us.i, %.lr.ph.us69.i ], [ %.03955.i, %.lr.ph.split.split.i ] +msgrcv_wait.exit.thread50: ; preds = %.lr.ph.split.split.i, %.lr.ph.us69.i, %.split.split.us.split.us.i, %._crit_edge56.split.us.us.us.i, %._crit_edge56.split.us.us.i + %.247.i = phi ptr [ %.3.us.us.i, %._crit_edge56.split.us.us.i ], [ %.3.us.us.us.i, %._crit_edge56.split.us.us.us.i ], [ %.03952.us64.us.i, %.split.split.us.split.us.i ], [ %.03955.us.i, %.lr.ph.us69.i ], [ %.03955.i, %.lr.ph.split.split.i ] %97 = load ptr, ptr %.247.i, align 8 %98 = getelementptr inbounds i8, ptr %.247.i, i64 8 %99 = load ptr, ptr %98, align 8 @@ -319,8 +314,8 @@ msgrcv_wait.exit: ; preds = %89, %71, %38 call void @up_switch_context(ptr noundef nonnull %124, ptr noundef %122) #7 br label %msgrcv_wait.exit.thread -msgrcv_wait.exit.thread: ; preds = %95, %msgrcv_wait.exit, %.split.us.split.i, %._crit_edge56.split.us.us.i, %.lr.ph.split.split.us.i, %12, %8, %msgrcv_wait.exit.thread50, %135, %130 - %.1 = phi i32 [ %119, %msgrcv_wait.exit ], [ %108, %135 ], [ %108, %130 ], [ %108, %msgrcv_wait.exit.thread50 ], [ -22, %8 ], [ -90, %12 ], [ -11, %.lr.ph.split.split.us.i ], [ -11, %._crit_edge56.split.us.us.i ], [ -11, %.split.us.split.i ], [ -11, %95 ] +msgrcv_wait.exit.thread: ; preds = %95, %msgrcv_wait.exit, %.split.us.split.i, %.split.split.i, %._crit_edge56.split.us.us.i, %12, %8, %msgrcv_wait.exit.thread50, %135, %130 + %.1 = phi i32 [ %119, %msgrcv_wait.exit ], [ %108, %135 ], [ %108, %130 ], [ %108, %msgrcv_wait.exit.thread50 ], [ -22, %8 ], [ -90, %12 ], [ -11, %._crit_edge56.split.us.us.i ], [ -11, %.split.split.i ], [ -11, %.split.us.split.i ], [ -11, %95 ] %136 = and i64 %9, 512 %.not.i44 = icmp eq i64 %136, 0 br i1 %.not.i44, label %up_irq_restore.exit, label %137 diff --git a/bench/ocio/optimized/ColorSpaceTransform.cpp.ll b/bench/ocio/optimized/ColorSpaceTransform.cpp.ll index 9748a6166df..31fe0653d24 100644 --- a/bench/ocio/optimized/ColorSpaceTransform.cpp.ll +++ b/bench/ocio/optimized/ColorSpaceTransform.cpp.ll @@ -4843,7 +4843,6 @@ invoke.cont7: ; preds = %entry %2 = load ptr, ptr %m_impl.i.i, align 8 %m_src.i32 = getelementptr inbounds i8, ptr %2, i64 8 %call2.i33 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %m_src.i32) #22 - %call6 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %call2, ptr noundef nonnull dereferenceable(1) %call2.i33) #26 %3 = load ptr, ptr %m_impl.i.i, align 8 %m_dst.i = getelementptr inbounds i8, ptr %3, i64 40 %call2.i35 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %m_dst.i) #22 @@ -4853,15 +4852,11 @@ invoke.cont7: ; preds = %entry to label %invoke.cont15 unwind label %lpad11 invoke.cont15: ; preds = %invoke.cont7 - %cmp.not = icmp ne i32 %call6, 0 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp10) #22 %call13 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %dstName) #22 %4 = load ptr, ptr %m_impl.i.i, align 8 %m_dst.i37 = getelementptr inbounds i8, ptr %4, i64 40 %call2.i38 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %m_dst.i37) #22 - %call17 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %call13, ptr noundef nonnull dereferenceable(1) %call2.i38) #26 - %cmp18.not = icmp ne i32 %call17, 0 - %narrow = select i1 %cmp18.not, i1 true, i1 %cmp.not %call21 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %srcName) #22 invoke void @_ZNK19OpenColorIO_v2_4dev6Config13getColorSpaceEPKc(ptr nonnull sret(%"class.std::shared_ptr.4") align 8 %src, ptr noundef nonnull align 8 dereferenceable(8) %config, ptr noundef %call21) to label %invoke.cont22 unwind label %lpad14 @@ -4884,11 +4879,7 @@ invoke.cont22: ; preds = %invoke.cont15 if.then24: ; preds = %invoke.cont22 %call27 = invoke noundef zeroext i1 @_ZN19OpenColorIO_v2_4dev23CollectContextVariablesERKNS_6ConfigERKNS_7ContextERSt10shared_ptrIKNS_10ColorSpaceEERS6_IS3_E(ptr noundef nonnull align 8 dereferenceable(8) %config, ptr noundef nonnull align 8 dereferenceable(8) %context, ptr noundef nonnull align 8 dereferenceable(16) %src, ptr noundef nonnull align 8 dereferenceable(16) %usedContextVars) - to label %invoke.cont26 unwind label %lpad25 - -invoke.cont26: ; preds = %if.then24 - %spec.select27 = select i1 %call27, i1 true, i1 %narrow - br label %if.end36 + to label %if.end36 unwind label %lpad25 lpad25: ; preds = %if.end36, %if.then24 %8 = landingpad { ptr, i32 } @@ -4902,7 +4893,6 @@ if.else: ; preds = %invoke.cont22 to label %invoke.cont32 unwind label %lpad31 invoke.cont32: ; preds = %if.else - %spec.select28 = select i1 %call33, i1 true, i1 %narrow %_M_refcount.i.i = getelementptr inbounds i8, ptr %nt_src, i64 8 %9 = load ptr, ptr %_M_refcount.i.i, align 8 %cmp.not.i.i.i = icmp eq ptr %9, null @@ -4982,8 +4972,7 @@ lpad31: ; preds = %if.else call void @_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev14NamedTransformEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %nt_src) #22 br label %ehcleanup54 -if.end36: ; preds = %if.end8.sink.split.i.i.i.i, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i, %invoke.cont32, %invoke.cont26 - %foundContextVars.2 = phi i1 [ %spec.select27, %invoke.cont26 ], [ %spec.select28, %invoke.cont32 ], [ %spec.select28, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i ], [ %spec.select28, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i ], [ %spec.select28, %if.end8.sink.split.i.i.i.i ] +if.end36: ; preds = %if.then24, %if.end8.sink.split.i.i.i.i, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i, %invoke.cont32 %call37 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %dstName) #22 invoke void @_ZNK19OpenColorIO_v2_4dev6Config13getColorSpaceEPKc(ptr nonnull sret(%"class.std::shared_ptr.4") align 8 %dst, ptr noundef nonnull align 8 dereferenceable(8) %config, ptr noundef %call37) to label %invoke.cont38 unwind label %lpad25 @@ -4995,11 +4984,7 @@ invoke.cont38: ; preds = %if.end36 if.then40: ; preds = %invoke.cont38 %call43 = invoke noundef zeroext i1 @_ZN19OpenColorIO_v2_4dev23CollectContextVariablesERKNS_6ConfigERKNS_7ContextERSt10shared_ptrIKNS_10ColorSpaceEERS6_IS3_E(ptr noundef nonnull align 8 dereferenceable(8) %config, ptr noundef nonnull align 8 dereferenceable(8) %context, ptr noundef nonnull align 8 dereferenceable(16) %dst, ptr noundef nonnull align 8 dereferenceable(16) %usedContextVars) - to label %invoke.cont42 unwind label %lpad41 - -invoke.cont42: ; preds = %if.then40 - %spec.select29 = select i1 %call43, i1 true, i1 %foundContextVars.2 - br label %if.end53 + to label %if.end53 unwind label %lpad41 lpad41: ; preds = %if.then40 %22 = landingpad { ptr, i32 } @@ -5013,7 +4998,6 @@ if.else46: ; preds = %invoke.cont38 to label %invoke.cont49 unwind label %lpad48 invoke.cont49: ; preds = %if.else46 - %spec.select30 = select i1 %call50, i1 true, i1 %foundContextVars.2 %_M_refcount.i.i40 = getelementptr inbounds i8, ptr %nt_dst, i64 8 %23 = load ptr, ptr %_M_refcount.i.i40, align 8 %cmp.not.i.i.i41 = icmp eq ptr %23, null @@ -5093,8 +5077,7 @@ lpad48: ; preds = %if.else46 call void @_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev14NamedTransformEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %nt_dst) #22 br label %ehcleanup -if.end53: ; preds = %if.end8.sink.split.i.i.i.i62, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i59, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i49, %invoke.cont49, %invoke.cont42 - %foundContextVars.4 = phi i1 [ %spec.select29, %invoke.cont42 ], [ %spec.select30, %invoke.cont49 ], [ %spec.select30, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i49 ], [ %spec.select30, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i59 ], [ %spec.select30, %if.end8.sink.split.i.i.i.i62 ] +if.end53: ; preds = %if.then40, %if.end8.sink.split.i.i.i.i62, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i59, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i49, %invoke.cont49 %_M_refcount.i.i72 = getelementptr inbounds i8, ptr %dst, i64 8 %35 = load ptr, ptr %_M_refcount.i.i72, align 8 %cmp.not.i.i.i73 = icmp eq ptr %35, null @@ -5245,7 +5228,7 @@ if.end8.sink.split.i.i.i.i125: ; preds = %_ZN9__gnu_cxx27__ex _ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit134: ; preds = %_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i112, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i122, %if.end8.sink.split.i.i.i.i125 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %dstName) #22 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %srcName) #22 - ret i1 %foundContextVars.4 + ret i1 true ehcleanup: ; preds = %lpad48, %lpad41 %.pn = phi { ptr, i32 } [ %22, %lpad41 ], [ %34, %lpad48 ] @@ -5532,7 +5515,6 @@ attributes #22 = { nounwind } attributes #23 = { noreturn } attributes #24 = { noreturn nounwind } attributes #25 = { builtin nounwind } -attributes #26 = { nounwind willreturn memory(read) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/ocio/optimized/ConfigUtils.cpp.ll b/bench/ocio/optimized/ConfigUtils.cpp.ll index cea3ffde120..eb8ce425701 100644 --- a/bench/ocio/optimized/ConfigUtils.cpp.ll +++ b/bench/ocio/optimized/ConfigUtils.cpp.ll @@ -5266,11 +5266,11 @@ if.then.i.i.i.i.i.i52: ; preds = %if.then.i.i.i.i49 if.else.i.i.i.i.i.i56: ; preds = %if.then.i.i.i.i49 %33 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i50, i32 1 acq_rel, align 4 - %.pre195 = load ptr, ptr %builtinGuard, align 8 + %.pre197 = load ptr, ptr %builtinGuard, align 8 br label %_ZN19OpenColorIO_v2_4dev11ConfigUtils17SuspendCacheGuardC2ERKSt10shared_ptrIKNS_6ConfigEE.exit57 _ZN19OpenColorIO_v2_4dev11ConfigUtils17SuspendCacheGuardC2ERKSt10shared_ptrIKNS_6ConfigEE.exit57: ; preds = %_ZN19OpenColorIO_v2_4dev11ConfigUtils17SuspendCacheGuardC2ERKSt10shared_ptrIKNS_6ConfigEE.exit, %if.then.i.i.i.i.i.i52, %if.else.i.i.i.i.i.i56 - %34 = phi ptr [ %29, %_ZN19OpenColorIO_v2_4dev11ConfigUtils17SuspendCacheGuardC2ERKSt10shared_ptrIKNS_6ConfigEE.exit ], [ %29, %if.then.i.i.i.i.i.i52 ], [ %.pre195, %if.else.i.i.i.i.i.i56 ] + %34 = phi ptr [ %29, %_ZN19OpenColorIO_v2_4dev11ConfigUtils17SuspendCacheGuardC2ERKSt10shared_ptrIKNS_6ConfigEE.exit ], [ %29, %if.then.i.i.i.i.i.i52 ], [ %.pre197, %if.else.i.i.i.i.i.i56 ] %m_origCacheFlags.i54 = getelementptr inbounds i8, ptr %builtinGuard, i64 16 %35 = load ptr, ptr %builtinConfig, align 8 %call2.i55 = call noundef i32 @_ZNK19OpenColorIO_v2_4dev6Config22getProcessorCacheFlagsEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #19 @@ -5281,18 +5281,18 @@ _ZN19OpenColorIO_v2_4dev11ConfigUtils17SuspendCacheGuardC2ERKSt10shared_ptrIKNS_ to label %for.cond.preheader unwind label %lpad40.loopexit.split-lp.loopexit.split-lp for.cond.preheader: ; preds = %_ZN19OpenColorIO_v2_4dev11ConfigUtils17SuspendCacheGuardC2ERKSt10shared_ptrIKNS_6ConfigEE.exit57 - %cmp43185 = icmp sgt i32 %call42, 0 - br i1 %cmp43185, label %for.body.lr.ph, label %if.then65 + %cmp43189 = icmp sgt i32 %call42, 0 + br i1 %cmp43189, label %for.body.lr.ph, label %if.then65 for.body.lr.ph: ; preds = %for.cond.preheader %_M_refcount.i.i58 = getelementptr inbounds i8, ptr %cs, i64 8 br label %for.body -for.body: ; preds = %_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit89, %for.body.lr.ph - %i.0187 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit89 ] - %refColorSpacePrimsIndex.0186 = phi i32 [ -1, %for.body.lr.ph ], [ %refColorSpacePrimsIndex.3, %_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit89 ] +for.body: ; preds = %for.body.lr.ph, %for.inc + %i.0191 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %for.inc ] + %refColorSpacePrimsIndex.0190 = phi i32 [ -1, %for.body.lr.ph ], [ %refColorSpacePrimsIndex.3, %for.inc ] %37 = load ptr, ptr %srcConfig, align 8 - %call47 = invoke noundef ptr @_ZNK19OpenColorIO_v2_4dev6Config24getColorSpaceNameByIndexEi(ptr noundef nonnull align 8 dereferenceable(8) %37, i32 noundef %i.0187) + %call47 = invoke noundef ptr @_ZNK19OpenColorIO_v2_4dev6Config24getColorSpaceNameByIndexEi(ptr noundef nonnull align 8 dereferenceable(8) %37, i32 noundef %i.0191) to label %invoke.cont46 unwind label %lpad40.loopexit.split-lp.loopexit invoke.cont46: ; preds = %for.body @@ -5337,18 +5337,13 @@ lpad49: ; preds = %if.end56, %if.then5 if.end56: ; preds = %invoke.cont53 %39 = load ptr, ptr %srcInterchange, align 8 %call58 = invoke noundef i32 @_ZN19OpenColorIO_v2_4dev11ConfigUtils30getReferenceSpaceFromSRGBSpaceERKSt10shared_ptrIKNS_6ConfigEEPKcRKS1_IKNS_10ColorSpaceEES6_(ptr noundef nonnull align 8 dereferenceable(16) %srcConfig, ptr noundef %39, ptr noundef nonnull align 8 dereferenceable(16) %cs, ptr noundef nonnull align 8 dereferenceable(16) %builtinConfig) - to label %invoke.cont57 unwind label %lpad49 - -invoke.cont57: ; preds = %if.end56 - %cmp59.inv = icmp sgt i32 %call58, -1 - br label %cleanup + to label %cleanup unwind label %lpad49 -cleanup: ; preds = %invoke.cont57, %invoke.cont50, %invoke.cont53 - %refColorSpacePrimsIndex.3 = phi i32 [ %refColorSpacePrimsIndex.0186, %invoke.cont53 ], [ %refColorSpacePrimsIndex.0186, %invoke.cont50 ], [ %call58, %invoke.cont57 ] - %cleanup.dest.slot.0 = phi i1 [ false, %invoke.cont53 ], [ false, %invoke.cont50 ], [ %cmp59.inv, %invoke.cont57 ] +cleanup: ; preds = %if.end56, %invoke.cont50, %invoke.cont53 + %refColorSpacePrimsIndex.3 = phi i32 [ %refColorSpacePrimsIndex.0190, %invoke.cont53 ], [ %refColorSpacePrimsIndex.0190, %invoke.cont50 ], [ %call58, %if.end56 ] %40 = load ptr, ptr %_M_refcount.i.i58, align 8 %cmp.not.i.i.i59 = icmp eq ptr %40, null - br i1 %cmp.not.i.i.i59, label %_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit89, label %if.then.i.i.i60 + br i1 %cmp.not.i.i.i59, label %for.inc, label %if.then.i.i.i60 if.then.i.i.i60: ; preds = %cleanup %_M_use_count.i.i.i.i61 = getelementptr inbounds i8, ptr %40, i64 8 @@ -5384,7 +5379,7 @@ if.else.i.i.i.i.i84: ; preds = %if.end.i.i.i.i63 _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i67: ; preds = %if.else.i.i.i.i.i84, %if.then.i.i.i.i.i65 %retval.i.0.i.i.i.i68 = phi i32 [ %42, %if.then.i.i.i.i.i65 ], [ %45, %if.else.i.i.i.i.i84 ] %cmp6.i.i.i.i69 = icmp eq i32 %retval.i.0.i.i.i.i68, 1 - br i1 %cmp6.i.i.i.i69, label %if.then7.i.i.i.i70, label %_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit89 + br i1 %cmp6.i.i.i.i69, label %if.then7.i.i.i.i70, label %for.inc if.then7.i.i.i.i70: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i67 %vtable.i.i.i.i.i.i71 = load ptr, ptr %40, align 8 @@ -5409,44 +5404,43 @@ if.else.i.i.i.i.i.i.i83: ; preds = %if.then7.i.i.i.i70 _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i77: ; preds = %if.else.i.i.i.i.i.i.i83, %if.then.i.i.i.i.i.i.i75 %retval.i.0.i.i.i.i.i.i78 = phi i32 [ %48, %if.then.i.i.i.i.i.i.i75 ], [ %49, %if.else.i.i.i.i.i.i.i83 ] %cmp.i.i.i.i.i.i79 = icmp eq i32 %retval.i.0.i.i.i.i.i.i78, 1 - br i1 %cmp.i.i.i.i.i.i79, label %if.end8.sink.split.i.i.i.i80, label %_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit89 + br i1 %cmp.i.i.i.i.i.i79, label %if.end8.sink.split.i.i.i.i80, label %for.inc if.end8.sink.split.i.i.i.i80: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i77, %if.then.i.i.i.i85 %vtable2.i.i.i.i.i.i81 = load ptr, ptr %40, align 8 %vfn3.i.i.i.i.i.i82 = getelementptr inbounds i8, ptr %vtable2.i.i.i.i.i.i81, i64 24 %50 = load ptr, ptr %vfn3.i.i.i.i.i.i82, align 8 call void %50(ptr noundef nonnull align 8 dereferenceable(16) %40) #19 - br label %_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit89 + br label %for.inc -_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit89: ; preds = %cleanup, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i67, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i77, %if.end8.sink.split.i.i.i.i80 - %inc = add nuw nsw i32 %i.0187, 1 +for.inc: ; preds = %if.end8.sink.split.i.i.i.i80, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i77, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i67, %cleanup + %inc = add nuw nsw i32 %i.0191, 1 %exitcond.not = icmp eq i32 %inc, %call42 - %or.cond = select i1 %cleanup.dest.slot.0, i1 true, i1 %exitcond.not - br i1 %or.cond, label %for.end, label %for.body, !llvm.loop !46 + br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !46 -for.end: ; preds = %_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit89 +for.end: ; preds = %for.inc %cmp64 = icmp slt i32 %refColorSpacePrimsIndex.3, 0 br i1 %cmp64, label %if.then65, label %invoke.cont106 if.then65: ; preds = %for.cond.preheader, %for.end - %refColorSpacePrimsIndex.1198 = phi i32 [ %refColorSpacePrimsIndex.3, %for.end ], [ -1, %for.cond.preheader ] + %refColorSpacePrimsIndex.0.lcssa200 = phi i32 [ %refColorSpacePrimsIndex.3, %for.end ], [ -1, %for.cond.preheader ] %51 = load ptr, ptr %srcConfig, align 8 %call68 = invoke noundef i32 @_ZNK19OpenColorIO_v2_4dev6Config17getNumColorSpacesEv(ptr noundef nonnull align 8 dereferenceable(8) %51) to label %for.cond70.preheader unwind label %lpad40.loopexit.split-lp.loopexit.split-lp for.cond70.preheader: ; preds = %if.then65 - %cmp71189 = icmp sgt i32 %call68, 0 - br i1 %cmp71189, label %for.body72.lr.ph, label %if.else + %cmp71192 = icmp sgt i32 %call68, 0 + br i1 %cmp71192, label %for.body72.lr.ph, label %if.else for.body72.lr.ph: ; preds = %for.cond70.preheader %_M_refcount.i.i90 = getelementptr inbounds i8, ptr %cs73, i64 8 br label %for.body72 -for.body72: ; preds = %_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit121, %for.body72.lr.ph - %i69.0191 = phi i32 [ 0, %for.body72.lr.ph ], [ %inc101, %_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit121 ] - %refColorSpacePrimsIndex.5190 = phi i32 [ %refColorSpacePrimsIndex.1198, %for.body72.lr.ph ], [ %refColorSpacePrimsIndex.6, %_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit121 ] +for.body72: ; preds = %for.body72.lr.ph, %for.inc100 + %i69.0194 = phi i32 [ 0, %for.body72.lr.ph ], [ %inc101, %for.inc100 ] + %refColorSpacePrimsIndex.5193 = phi i32 [ %refColorSpacePrimsIndex.0.lcssa200, %for.body72.lr.ph ], [ %refColorSpacePrimsIndex.6, %for.inc100 ] %52 = load ptr, ptr %srcConfig, align 8 - %call77 = invoke noundef ptr @_ZNK19OpenColorIO_v2_4dev6Config24getColorSpaceNameByIndexEi(ptr noundef nonnull align 8 dereferenceable(8) %52, i32 noundef %i69.0191) + %call77 = invoke noundef ptr @_ZNK19OpenColorIO_v2_4dev6Config24getColorSpaceNameByIndexEi(ptr noundef nonnull align 8 dereferenceable(8) %52, i32 noundef %i69.0194) to label %invoke.cont76 unwind label %lpad40.loopexit invoke.cont76: ; preds = %for.body72 @@ -5479,18 +5473,13 @@ invoke.cont87: ; preds = %if.end83 if.then89: ; preds = %invoke.cont87 %56 = load ptr, ptr %srcInterchange, align 8 %call91 = invoke noundef i32 @_ZN19OpenColorIO_v2_4dev11ConfigUtils32getReferenceSpaceFromLinearSpaceERKSt10shared_ptrIKNS_6ConfigEEPKcRKS1_IKNS_10ColorSpaceEES6_(ptr noundef nonnull align 8 dereferenceable(16) %srcConfig, ptr noundef %56, ptr noundef nonnull align 8 dereferenceable(16) %cs73, ptr noundef nonnull align 8 dereferenceable(16) %builtinConfig) - to label %invoke.cont90 unwind label %lpad79 - -invoke.cont90: ; preds = %if.then89 - %cmp92.inv = icmp sgt i32 %call91, -1 - br label %cleanup96 + to label %cleanup96 unwind label %lpad79 -cleanup96: ; preds = %invoke.cont90, %invoke.cont87, %invoke.cont80 - %refColorSpacePrimsIndex.6 = phi i32 [ %refColorSpacePrimsIndex.5190, %invoke.cont80 ], [ %refColorSpacePrimsIndex.5190, %invoke.cont87 ], [ %call91, %invoke.cont90 ] - %cleanup.dest.slot.1 = phi i1 [ false, %invoke.cont80 ], [ false, %invoke.cont87 ], [ %cmp92.inv, %invoke.cont90 ] +cleanup96: ; preds = %if.then89, %invoke.cont87, %invoke.cont80 + %refColorSpacePrimsIndex.6 = phi i32 [ %refColorSpacePrimsIndex.5193, %invoke.cont80 ], [ %refColorSpacePrimsIndex.5193, %invoke.cont87 ], [ %call91, %if.then89 ] %57 = load ptr, ptr %_M_refcount.i.i90, align 8 %cmp.not.i.i.i91 = icmp eq ptr %57, null - br i1 %cmp.not.i.i.i91, label %_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit121, label %if.then.i.i.i92 + br i1 %cmp.not.i.i.i91, label %for.inc100, label %if.then.i.i.i92 if.then.i.i.i92: ; preds = %cleanup96 %_M_use_count.i.i.i.i93 = getelementptr inbounds i8, ptr %57, i64 8 @@ -5526,7 +5515,7 @@ if.else.i.i.i.i.i116: ; preds = %if.end.i.i.i.i95 _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i99: ; preds = %if.else.i.i.i.i.i116, %if.then.i.i.i.i.i97 %retval.i.0.i.i.i.i100 = phi i32 [ %59, %if.then.i.i.i.i.i97 ], [ %62, %if.else.i.i.i.i.i116 ] %cmp6.i.i.i.i101 = icmp eq i32 %retval.i.0.i.i.i.i100, 1 - br i1 %cmp6.i.i.i.i101, label %if.then7.i.i.i.i102, label %_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit121 + br i1 %cmp6.i.i.i.i101, label %if.then7.i.i.i.i102, label %for.inc100 if.then7.i.i.i.i102: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i99 %vtable.i.i.i.i.i.i103 = load ptr, ptr %57, align 8 @@ -5551,22 +5540,21 @@ if.else.i.i.i.i.i.i.i115: ; preds = %if.then7.i.i.i.i102 _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i109: ; preds = %if.else.i.i.i.i.i.i.i115, %if.then.i.i.i.i.i.i.i107 %retval.i.0.i.i.i.i.i.i110 = phi i32 [ %65, %if.then.i.i.i.i.i.i.i107 ], [ %66, %if.else.i.i.i.i.i.i.i115 ] %cmp.i.i.i.i.i.i111 = icmp eq i32 %retval.i.0.i.i.i.i.i.i110, 1 - br i1 %cmp.i.i.i.i.i.i111, label %if.end8.sink.split.i.i.i.i112, label %_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit121 + br i1 %cmp.i.i.i.i.i.i111, label %if.end8.sink.split.i.i.i.i112, label %for.inc100 if.end8.sink.split.i.i.i.i112: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i109, %if.then.i.i.i.i117 %vtable2.i.i.i.i.i.i113 = load ptr, ptr %57, align 8 %vfn3.i.i.i.i.i.i114 = getelementptr inbounds i8, ptr %vtable2.i.i.i.i.i.i113, i64 24 %67 = load ptr, ptr %vfn3.i.i.i.i.i.i114, align 8 call void %67(ptr noundef nonnull align 8 dereferenceable(16) %57) #19 - br label %_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit121 + br label %for.inc100 -_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit121: ; preds = %cleanup96, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i99, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i109, %if.end8.sink.split.i.i.i.i112 - %inc101 = add nuw nsw i32 %i69.0191, 1 - %exitcond194.not = icmp eq i32 %inc101, %call68 - %or.cond201 = select i1 %cleanup.dest.slot.1, i1 true, i1 %exitcond194.not - br i1 %or.cond201, label %if.end103, label %for.body72, !llvm.loop !47 +for.inc100: ; preds = %if.end8.sink.split.i.i.i.i112, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i109, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i99, %cleanup96 + %inc101 = add nuw nsw i32 %i69.0194, 1 + %exitcond196.not = icmp eq i32 %inc101, %call68 + br i1 %exitcond196.not, label %if.end103, label %for.body72, !llvm.loop !47 -if.end103: ; preds = %_ZNSt10shared_ptrIKN19OpenColorIO_v2_4dev10ColorSpaceEED2Ev.exit121 +if.end103: ; preds = %for.inc100 %cmp104 = icmp sgt i32 %refColorSpacePrimsIndex.6, -1 br i1 %cmp104, label %invoke.cont106, label %if.else diff --git a/bench/ockam-rs/optimized/189wgg1obirl4k4t.ll b/bench/ockam-rs/optimized/189wgg1obirl4k4t.ll index 823fbddd958..1c2db02af2f 100644 --- a/bench/ockam-rs/optimized/189wgg1obirl4k4t.ll +++ b/bench/ockam-rs/optimized/189wgg1obirl4k4t.ll @@ -2209,11 +2209,11 @@ define hidden { ptr, ptr } @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6rem } ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: readwrite) uwtable -define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$7get_mut17heae381a2d0f7e1a9E"(ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %1) unnamed_addr #11 personality ptr @rust_eh_personality { +define hidden noalias noundef align 8 dereferenceable_or_null(16) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$7get_mut17heae381a2d0f7e1a9E"(ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %1) unnamed_addr #11 personality ptr @rust_eh_personality { %3 = getelementptr inbounds i8, ptr %0, i64 24 %4 = load i64, ptr %3, align 8, !noundef !5 %5 = icmp eq i64 %4, 0 - br i1 %5, label %38, label %6 + br i1 %5, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7get_mut17hcf2dd34e8cc0ca79E.llvm.9046935466133531089.exit", label %6 6: ; preds = %2 %7 = load i128, ptr %1, align 8, !noalias !5, !noundef !5 @@ -2263,30 +2263,15 @@ define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN9hashbrown3ma %gep.i.i = getelementptr { i128, { ptr, ptr } }, ptr %invariant.gep.i.i, i64 %29 %.val3.i.i.i = load i128, ptr %gep.i.i, align 8, !alias.scope !470, !noalias !475, !noundef !5 %30 = icmp eq i128 %7, %.val3.i.i.i - br i1 %30, label %34, label %18 + br i1 %30, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7get_mut17hcf2dd34e8cc0ca79E.llvm.9046935466133531089.exit", label %18 31: ; preds = %19 %32 = add i64 %.sroa.9.0.i.i.i, 16 %33 = add i64 %.sroa.01.0.i.i.i, %32 br label %14 -34: ; preds = %22 - %35 = getelementptr inbounds { i128, { ptr, ptr } }, ptr %13, i64 %29 - br label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7get_mut17hcf2dd34e8cc0ca79E.llvm.9046935466133531089.exit" - -"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7get_mut17hcf2dd34e8cc0ca79E.llvm.9046935466133531089.exit": ; preds = %19, %34 - %.0.i.i = phi ptr [ %35, %34 ], [ null, %19 ] - %36 = icmp eq ptr %.0.i.i, null - %37 = getelementptr inbounds i8, ptr %.0.i.i, i64 -32 - %.0.i = select i1 %36, ptr null, ptr %37 - br label %38 - -38: ; preds = %2, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7get_mut17hcf2dd34e8cc0ca79E.llvm.9046935466133531089.exit" - %.04 = phi ptr [ %.0.i, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7get_mut17hcf2dd34e8cc0ca79E.llvm.9046935466133531089.exit" ], [ null, %2 ] - %39 = icmp eq ptr %.04, null - %40 = getelementptr inbounds i8, ptr %.04, i64 16 - %.0 = select i1 %39, ptr null, ptr %40 - ret ptr %.0 +"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7get_mut17hcf2dd34e8cc0ca79E.llvm.9046935466133531089.exit": ; preds = %19, %22, %2 + ret ptr null } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable @@ -4368,7 +4353,7 @@ define { ptr, i64 } @"_ZN123_$LT$ockam_core..routing..message..opentelemetry..Op %13 = getelementptr inbounds i8, ptr %0, i64 24 %14 = load i64, ptr %13, align 8, !alias.scope !783, !noundef !5 %15 = icmp eq i64 %14, 0 - br i1 %15, label %.thread, label %16 + br i1 %15, label %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17ha9218dfc7bb40625E.exit", label %16 16: ; preds = %3 %17 = getelementptr inbounds i8, ptr %0, i64 32 @@ -4469,7 +4454,7 @@ define { ptr, i64 } @"_ZN123_$LT$ockam_core..routing..message..opentelemetry..Op %53 = icmp eq <16 x i8> %.0.copyload.i15.i.i.i, %54 = bitcast <16 x i1> %53 to i16 %.not.i.i.i.i = icmp eq i16 %54, 0 - br i1 %.not.i.i.i.i, label %67, label %.thread + br i1 %.not.i.i.i.i, label %67, label %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17ha9218dfc7bb40625E.exit" .lr.ph.i.i.i: ; preds = %49, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hdc75daf81f24b723E.exit.backedge.i.i.i" %.0719.i.i.i = phi i16 [ %56, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hdc75daf81f24b723E.exit.backedge.i.i.i" ], [ %52, %49 ] @@ -4491,7 +4476,7 @@ define { ptr, i64 } @"_ZN123_$LT$ockam_core..routing..message..opentelemetry..Op %.val3.i.i.i.i = load ptr, ptr %65, align 8, !noalias !848, !nonnull !5, !noundef !5 %bcmp.i.i.i.i.i.i.i.i = call i32 @bcmp(ptr nonnull readonly align 1 %10, ptr nonnull readonly align 1 %.val3.i.i.i.i, i64 %2), !alias.scope !849, !noalias !853 %66 = icmp eq i32 %bcmp.i.i.i.i.i.i.i.i, 0 - br i1 %66, label %72, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hdc75daf81f24b723E.exit.backedge.i.i.i" + br i1 %66, label %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17ha9218dfc7bb40625E.exit", label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hdc75daf81f24b723E.exit.backedge.i.i.i" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hdc75daf81f24b723E.exit.backedge.i.i.i": ; preds = %64, %.lr.ph.i.i.i %.not.not.i.i.i.i = icmp eq i16 %56, 0 @@ -4506,50 +4491,39 @@ define { ptr, i64 } @"_ZN123_$LT$ockam_core..routing..message..opentelemetry..Op %71 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h00954e4bb2577eb1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %8) #32 - to label %89 unwind label %87 - -72: ; preds = %64 - %73 = getelementptr inbounds i8, ptr %62, i64 -24 - %74 = load ptr, ptr %73, align 8, !nonnull !5, !noundef !5 - %75 = getelementptr inbounds i8, ptr %62, i64 -8 - %76 = load i64, ptr %75, align 8, !noundef !5 - br label %.thread + to label %82 unwind label %80 -.thread: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hdc75daf81f24b723E.exit._crit_edge.i.i.i", %3, %72 - %.sroa.3.0 = phi i64 [ %76, %72 ], [ undef, %3 ], [ undef, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hdc75daf81f24b723E.exit._crit_edge.i.i.i" ] - %.sroa.0.0 = phi ptr [ %74, %72 ], [ null, %3 ], [ null, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hdc75daf81f24b723E.exit._crit_edge.i.i.i" ] +"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17ha9218dfc7bb40625E.exit": ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hdc75daf81f24b723E.exit._crit_edge.i.i.i", %64, %3 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !860 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h156fc235a5d05114E"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %8) - %77 = getelementptr inbounds i8, ptr %4, i64 8 - %78 = load i64, ptr %77, align 8, !range !436, !noalias !860, !noundef !5 - %.not.i.i.i.i11 = icmp eq i64 %78, 0 - br i1 %.not.i.i.i.i11, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h00954e4bb2577eb1E.exit", label %79 - -79: ; preds = %.thread - %80 = getelementptr inbounds i8, ptr %4, i64 16 - %81 = load i64, ptr %80, align 8, !noalias !860, !noundef !5 - %82 = icmp eq i64 %81, 0 - br i1 %82, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h00954e4bb2577eb1E.exit", label %83 - -83: ; preds = %79 - %84 = load ptr, ptr %4, align 8, !noalias !860, !nonnull !5, !noundef !5 - call void @__rust_dealloc(ptr noundef nonnull %84, i64 noundef %81, i64 noundef %78) #31 + %72 = getelementptr inbounds i8, ptr %4, i64 8 + %73 = load i64, ptr %72, align 8, !range !436, !noalias !860, !noundef !5 + %.not.i.i.i.i11 = icmp eq i64 %73, 0 + br i1 %.not.i.i.i.i11, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h00954e4bb2577eb1E.exit", label %74 + +74: ; preds = %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17ha9218dfc7bb40625E.exit" + %75 = getelementptr inbounds i8, ptr %4, i64 16 + %76 = load i64, ptr %75, align 8, !noalias !860, !noundef !5 + %77 = icmp eq i64 %76, 0 + br i1 %77, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h00954e4bb2577eb1E.exit", label %78 + +78: ; preds = %74 + %79 = load ptr, ptr %4, align 8, !noalias !860, !nonnull !5, !noundef !5 + call void @__rust_dealloc(ptr noundef nonnull %79, i64 noundef %76, i64 noundef %73) #31 br label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h00954e4bb2577eb1E.exit" -"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h00954e4bb2577eb1E.exit": ; preds = %.thread, %79, %83 +"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h00954e4bb2577eb1E.exit": ; preds = %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17ha9218dfc7bb40625E.exit", %74, %78 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !860 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) - %85 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0, 0 - %86 = insertvalue { ptr, i64 } %85, i64 %.sroa.3.0, 1 - ret { ptr, i64 } %86 + ret { ptr, i64 } { ptr null, i64 undef } -87: ; preds = %70 - %88 = landingpad { ptr, i32 } +80: ; preds = %70 + %81 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hceade526831b1e89E() #33 unreachable -89: ; preds = %70 +82: ; preds = %70 resume { ptr, i32 } %71 } diff --git a/bench/ockam-rs/optimized/3srf4j1tze6zn8ex.ll b/bench/ockam-rs/optimized/3srf4j1tze6zn8ex.ll index 549e2560a8a..6ac09025a20 100644 --- a/bench/ockam-rs/optimized/3srf4j1tze6zn8ex.ll +++ b/bench/ockam-rs/optimized/3srf4j1tze6zn8ex.ll @@ -3592,23 +3592,19 @@ define internal fastcc noundef zeroext i1 @_ZN10ockam_core12flow_control14access %12 = load i64, ptr %11, align 8, !alias.scope !366, !noalias !367, !noundef !8 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6), !noalias !370 invoke void @"_ZN5alloc11collections5btree6search142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$11search_tree17hca39e3fa9f4005fdE"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %6, ptr noundef nonnull %8, i64 noundef %12, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %1) - to label %.noexc unwind label %14 + to label %.noexc unwind label %13 .noexc: ; preds = %10 - %13 = load i64, ptr %6, align 8, !range !4, !noalias !370, !noundef !8 - %trunc.i.i = trunc nuw i64 %13 to i1 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6), !noalias !370 - %not.trunc.i.i = xor i1 %trunc.i.i, true br label %_ZN10ockam_core12flow_control13flow_controls14consumers_info13ConsumersInfo8contains17h80cf80ce52dbe7efE.exit -14: ; preds = %10 - %15 = landingpad { ptr, i32 } +13: ; preds = %10 + %14 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr91drop_in_place$LT$ockam_core..flow_control..flow_controls..consumers_info..ConsumersInfo$GT$17h9e0e5a1a542e242eE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #23 - to label %18 unwind label %16 + to label %17 unwind label %15 _ZN10ockam_core12flow_control13flow_controls14consumers_info13ConsumersInfo8contains17h80cf80ce52dbe7efE.exit: ; preds = %.noexc, %3 - %.0.i.i = phi i1 [ %not.trunc.i.i, %.noexc ], [ false, %3 ] call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %5), !noalias !371 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !371 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false) @@ -3617,16 +3613,16 @@ _ZN10ockam_core12flow_control13flow_controls14consumers_info13ConsumersInfo8cont call void @"_ZN99_$LT$alloc..collections..btree..map..IntoIter$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h611f3fd1899e8239E.llvm.6783306594713324768"(ptr noalias noundef nonnull align 8 dereferenceable(72) %5), !noalias !371 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %5), !noalias !371 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) - ret i1 %.0.i.i + ret i1 false -16: ; preds = %14 - %17 = landingpad { ptr, i32 } +15: ; preds = %13 + %16 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hceade526831b1e89E() #24 unreachable -18: ; preds = %14 - resume { ptr, i32 } %15 +17: ; preds = %13 + resume { ptr, i32 } %14 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable diff --git a/bench/opencc/optimized/CommandLine.cpp.ll b/bench/opencc/optimized/CommandLine.cpp.ll index 674a662b3a4..b989a48c7e1 100644 --- a/bench/opencc/optimized/CommandLine.cpp.ll +++ b/bench/opencc/optimized/CommandLine.cpp.ll @@ -7163,8 +7163,8 @@ define linkonce_odr dso_local void @_ZNK5TCLAP9StdOutput10spacePrintERSoRKNSt7__ %17 = and i64 %8, 2147483647 br label %.lr.ph106 -.loopexit: ; preds = %58 - %18 = trunc nsw i64 %59 to i32 +.loopexit: ; preds = %57 + %18 = trunc nsw i64 %58 to i32 %19 = icmp slt i32 %18, %9 br i1 %19, label %.lr.ph106, label %.loopexit88, !llvm.loop !86 @@ -7242,65 +7242,64 @@ define linkonce_odr dso_local void @_ZNK5TCLAP9StdOutput10spacePrintERSoRKNSt7__ %43 = load i8, ptr %42, align 1 %44 = icmp eq i8 %43, 10 %indvars.iv.next109 = add nuw nsw i64 %indvars.iv108, 1 - %45 = trunc nuw nsw i64 %indvars.iv.next109 to i32 + %45 = trunc nsw i64 %indvars.iv.next109 to i32 %spec.select76 = select i1 %44, i32 %45, i32 %.392 - %46 = sext i32 %spec.select76 to i64 - %47 = icmp slt i64 %indvars.iv.next109, %46 - br i1 %47, label %.lr.ph95, label %.preheader, !llvm.loop !87 + %46 = icmp samesign ugt i32 %spec.select76, %45 + br i1 %46, label %.lr.ph95, label %.preheader, !llvm.loop !87 .lr.ph97: ; preds = %.preheader, %.lr.ph97 - %.06596 = phi i32 [ %49, %.lr.ph97 ], [ 0, %.preheader ] - %48 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.43) - %49 = add nuw nsw i32 %.06596, 1 - %exitcond111.not = icmp eq i32 %49, %.062104 + %.06596 = phi i32 [ %48, %.lr.ph97 ], [ 0, %.preheader ] + %47 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.43) + %48 = add nuw nsw i32 %.06596, 1 + %exitcond111.not = icmp eq i32 %48, %.062104 br i1 %exitcond111.not, label %._crit_edge98, label %.lr.ph97, !llvm.loop !88 ._crit_edge98: ; preds = %.lr.ph97, %.preheader - %50 = icmp eq i32 %.063100, 0 - %51 = select i1 %50, i32 %5, i32 0 - %.184 = sub nsw i32 %.08399, %51 - %.1 = add nsw i32 %51, %.062104 - %52 = sext i32 %.063100 to i64 - %53 = sext i32 %.3.lcssa to i64 - call void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %52, i64 noundef %53) - %54 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %7) - to label %55 unwind label %65 - -55: ; preds = %._crit_edge98 - %56 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) - to label %57 unwind label %65 + %49 = icmp eq i32 %.063100, 0 + %50 = select i1 %49, i32 %5, i32 0 + %.184 = sub nsw i32 %.08399, %50 + %.1 = add nsw i32 %50, %.062104 + %51 = sext i32 %.063100 to i64 + %52 = sext i32 %.3.lcssa to i64 + call void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %51, i64 noundef %52) + %53 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %7) + to label %54 unwind label %64 + +54: ; preds = %._crit_edge98 + %55 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) + to label %56 unwind label %64 -57: ; preds = %55 +56: ; preds = %54 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #27 - br label %58 + br label %57 -58: ; preds = %58, %57 - %indvars.iv112 = phi i64 [ %indvars.iv.next113, %58 ], [ %52, %57 ] - %59 = add nsw i64 %indvars.iv112, %53 - %60 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %59) #27 - %61 = load i8, ptr %60, align 1 - %62 = icmp eq i8 %61, 32 - %63 = icmp slt i64 %indvars.iv112, %17 - %64 = and i1 %63, %62 +57: ; preds = %57, %56 + %indvars.iv112 = phi i64 [ %indvars.iv.next113, %57 ], [ %51, %56 ] + %58 = add nsw i64 %indvars.iv112, %52 + %59 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %58) #27 + %60 = load i8, ptr %59, align 1 + %61 = icmp eq i8 %60, 32 + %62 = icmp slt i64 %indvars.iv112, %17 + %63 = and i1 %62, %61 %indvars.iv.next113 = add nsw i64 %indvars.iv112, 1 - br i1 %64, label %58, label %.loopexit, !llvm.loop !89 + br i1 %63, label %57, label %.loopexit, !llvm.loop !89 -65: ; preds = %55, %._crit_edge98 - %66 = landingpad { ptr, i32 } +64: ; preds = %54, %._crit_edge98 + %65 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #27 - resume { ptr, i32 } %66 + resume { ptr, i32 } %65 .lr.ph: ; preds = %.preheader89, %.lr.ph - %.091 = phi i32 [ %68, %.lr.ph ], [ 0, %.preheader89 ] - %67 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.43) - %68 = add nuw nsw i32 %.091, 1 - %exitcond.not = icmp eq i32 %68, %4 + %.091 = phi i32 [ %67, %.lr.ph ], [ 0, %.preheader89 ] + %66 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.43) + %67 = add nuw nsw i32 %.091, 1 + %exitcond.not = icmp eq i32 %67, %4 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !90 ._crit_edge: ; preds = %.lr.ph, %.preheader89 - %69 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %2) - %70 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) + %68 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %2) + %69 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) br label %.loopexit88 .loopexit88: ; preds = %.loopexit, %14, %._crit_edge diff --git a/bench/opencv/optimized/mser.cpp.ll b/bench/opencv/optimized/mser.cpp.ll index c6081db92d2..95de3b40a17 100644 --- a/bench/opencv/optimized/mser.cpp.ll +++ b/bench/opencv/optimized/mser.cpp.ll @@ -1579,7 +1579,7 @@ _ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit.i: ; preds = %672, %_ZNSt6vectorI %683 = load i32, ptr %682, align 8 %684 = and i32 %683, 65535 %685 = ashr i32 %683, 16 - %.sroa.speculated218.i = call i32 @llvm.smin.i32(i32 %684, i32 %.0258313.i) + %.sroa.speculated218.i = call i32 @llvm.umin.i32(i32 %684, i32 %.0258313.i) %.sroa.speculated215.i = call i32 @llvm.smax.i32(i32 %.0260311.i, i32 %684) %.sroa.speculated212.i = call i32 @llvm.smin.i32(i32 %685, i32 %.0259312.i) %.sroa.speculated.i = call i32 @llvm.smax.i32(i32 %.0261310.i, i32 %685) @@ -6113,6 +6113,9 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #21 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #21 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umin.i32(i32, i32) #19 + attributes #0 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87" "tune-cpu"="generic" } attributes #2 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87" "tune-cpu"="generic" } diff --git a/bench/opencv/optimized/norm.cpp.ll b/bench/opencv/optimized/norm.cpp.ll index b7886949dd4..ad7e3df4f8d 100644 --- a/bench/opencv/optimized/norm.cpp.ll +++ b/bench/opencv/optimized/norm.cpp.ll @@ -3323,7 +3323,7 @@ define internal noundef i32 @_ZN2cvL10normInf_8uEPKhS1_Piii(ptr nocapture nounde %19 = getelementptr inbounds i8, ptr %0, i64 %indvars.iv.i.i %20 = load i8, ptr %19, align 1 %21 = zext i8 %20 to i32 - %.sroa.speculated.i.i = tail call i32 @llvm.smax.i32(i32 %.089.i.i, i32 %21) + %.sroa.speculated.i.i = tail call i32 @llvm.umax.i32(i32 %.089.i.i, i32 %21) %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, %wide.trip.count.i.i br i1 %exitcond.not.i.i, label %_ZN2cvL7normInfIhiEET0_PKT_i.exit.i, label %.lr.ph.i.i, !llvm.loop !60 @@ -3403,7 +3403,7 @@ define internal noundef i32 @_ZN2cvL10normInf_8sEPKaPKhPiii(ptr nocapture nounde %21 = load i8, ptr %20, align 1 %22 = tail call i8 @llvm.abs.i8(i8 %21, i1 false) %23 = zext i8 %22 to i32 - %.sroa.speculated.i.i = tail call i32 @llvm.smax.i32(i32 %.089.i.i, i32 %23) + %.sroa.speculated.i.i = tail call i32 @llvm.umax.i32(i32 %.089.i.i, i32 %23) %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, %wide.trip.count.i.i br i1 %exitcond.not.i.i, label %_ZN2cvL7normInfIaiEET0_PKT_i.exit.i, label %.lr.ph.i.i, !llvm.loop !63 @@ -3481,7 +3481,7 @@ define internal noundef i32 @_ZN2cvL11normInf_16uEPKtPKhPiii(ptr nocapture nound %19 = getelementptr inbounds i16, ptr %0, i64 %indvars.iv.i.i %20 = load i16, ptr %19, align 2 %21 = zext i16 %20 to i32 - %.sroa.speculated.i.i = tail call i32 @llvm.smax.i32(i32 %.089.i.i, i32 %21) + %.sroa.speculated.i.i = tail call i32 @llvm.umax.i32(i32 %.089.i.i, i32 %21) %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, %wide.trip.count.i.i br i1 %exitcond.not.i.i, label %_ZN2cvL7normInfItiEET0_PKT_i.exit.i, label %.lr.ph.i.i, !llvm.loop !66 @@ -3561,7 +3561,7 @@ define internal noundef i32 @_ZN2cvL11normInf_16sEPKsPKhPiii(ptr nocapture nound %21 = load i16, ptr %20, align 2 %22 = tail call i16 @llvm.abs.i16(i16 %21, i1 false) %23 = zext i16 %22 to i32 - %.sroa.speculated.i.i = tail call i32 @llvm.smax.i32(i32 %.089.i.i, i32 %23) + %.sroa.speculated.i.i = tail call i32 @llvm.umax.i32(i32 %.089.i.i, i32 %23) %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, %wide.trip.count.i.i br i1 %exitcond.not.i.i, label %_ZN2cvL7normInfIsiEET0_PKT_i.exit.i, label %.lr.ph.i.i, !llvm.loop !69 @@ -3639,7 +3639,7 @@ define internal noundef i32 @_ZN2cvL11normInf_32sEPKiPKhPiii(ptr nocapture nound %19 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.i.i %20 = load i32, ptr %19, align 4 %21 = tail call noundef i32 @llvm.abs.i32(i32 %20, i1 true) - %.sroa.speculated.i.i = tail call i32 @llvm.smax.i32(i32 %.089.i.i, i32 %21) + %.sroa.speculated.i.i = tail call i32 @llvm.umax.i32(i32 %.089.i.i, i32 %21) %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, %wide.trip.count.i.i br i1 %exitcond.not.i.i, label %_ZN2cvL7normInfIiiEET0_PKT_i.exit.i, label %.lr.ph.i.i, !llvm.loop !72 @@ -4771,7 +4771,7 @@ define internal noundef i32 @_ZN2cvL14normDiffInf_8uEPKhS1_S1_Piii(ptr nocapture %31 = zext i8 %30 to i32 %32 = sub nsw i32 %28, %31 %33 = tail call i32 @llvm.abs.i32(i32 %32, i1 true) - %.sroa.speculated.i.i = tail call i32 @llvm.smax.i32(i32 %.01112.i.i, i32 %33) + %.sroa.speculated.i.i = tail call i32 @llvm.umax.i32(i32 %.01112.i.i, i32 %33) %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, %wide.trip.count.i.i br i1 %exitcond.not.i.i, label %_ZN2cvL7normInfIhiEET0_PKT_S4_i.exit.i, label %.lr.ph.i.i, !llvm.loop !114 @@ -4861,7 +4861,7 @@ define internal noundef i32 @_ZN2cvL14normDiffInf_8sEPKaS1_PKhPiii(ptr nocapture %31 = sext i8 %30 to i32 %32 = sub nsw i32 %28, %31 %33 = tail call i32 @llvm.abs.i32(i32 %32, i1 true) - %.sroa.speculated.i.i = tail call i32 @llvm.smax.i32(i32 %.01112.i.i, i32 %33) + %.sroa.speculated.i.i = tail call i32 @llvm.umax.i32(i32 %.01112.i.i, i32 %33) %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, %wide.trip.count.i.i br i1 %exitcond.not.i.i, label %_ZN2cvL7normInfIaiEET0_PKT_S4_i.exit.i, label %.lr.ph.i.i, !llvm.loop !117 @@ -4951,7 +4951,7 @@ define internal noundef i32 @_ZN2cvL15normDiffInf_16uEPKtS1_PKhPiii(ptr nocaptur %31 = zext i16 %30 to i32 %32 = sub nsw i32 %28, %31 %33 = tail call i32 @llvm.abs.i32(i32 %32, i1 true) - %.sroa.speculated.i.i = tail call i32 @llvm.smax.i32(i32 %.01112.i.i, i32 %33) + %.sroa.speculated.i.i = tail call i32 @llvm.umax.i32(i32 %.01112.i.i, i32 %33) %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, %wide.trip.count.i.i br i1 %exitcond.not.i.i, label %_ZN2cvL7normInfItiEET0_PKT_S4_i.exit.i, label %.lr.ph.i.i, !llvm.loop !120 @@ -5041,7 +5041,7 @@ define internal noundef i32 @_ZN2cvL15normDiffInf_16sEPKsS1_PKhPiii(ptr nocaptur %31 = sext i16 %30 to i32 %32 = sub nsw i32 %28, %31 %33 = tail call i32 @llvm.abs.i32(i32 %32, i1 true) - %.sroa.speculated.i.i = tail call i32 @llvm.smax.i32(i32 %.01112.i.i, i32 %33) + %.sroa.speculated.i.i = tail call i32 @llvm.umax.i32(i32 %.01112.i.i, i32 %33) %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, %wide.trip.count.i.i br i1 %exitcond.not.i.i, label %_ZN2cvL7normInfIsiEET0_PKT_S4_i.exit.i, label %.lr.ph.i.i, !llvm.loop !123 @@ -5127,7 +5127,7 @@ define internal noundef i32 @_ZN2cvL15normDiffInf_32sEPKiS1_PKhPiii(ptr nocaptur %27 = load i32, ptr %26, align 4 %28 = sub nsw i32 %25, %27 %29 = tail call i32 @llvm.abs.i32(i32 %28, i1 true) - %.sroa.speculated.i.i = tail call i32 @llvm.smax.i32(i32 %.01112.i.i, i32 %29) + %.sroa.speculated.i.i = tail call i32 @llvm.umax.i32(i32 %.01112.i.i, i32 %29) %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, %wide.trip.count.i.i br i1 %exitcond.not.i.i, label %_ZN2cvL7normInfIiiEET0_PKT_S4_i.exit.i, label %.lr.ph.i.i, !llvm.loop !126 @@ -6308,6 +6308,9 @@ declare i8 @llvm.abs.i8(i8, i1 immarg) #14 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i16 @llvm.abs.i16(i16, i1 immarg) #14 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umax.i32(i32, i32) #14 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #14 diff --git a/bench/opencv/optimized/version.cpp.ll b/bench/opencv/optimized/version.cpp.ll index 9b059044169..7deb8e4549a 100644 --- a/bench/opencv/optimized/version.cpp.ll +++ b/bench/opencv/optimized/version.cpp.ll @@ -16269,9 +16269,9 @@ define hidden noundef ptr @_ZN5zxing6qrcode7Version24decodeVersionInformationEj( br i1 %41, label %42, label %._crit_edge.thread 42: ; preds = %._crit_edge - %43 = trunc i64 %.120 to i32 + %43 = trunc nuw i64 %.120 to i32 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %2) - %44 = icmp slt i32 %43, 1 + %44 = icmp eq i64 %.120, 0 %45 = load i32, ptr @_ZN5zxing6qrcodeL10N_VERSIONSE, align 4 %46 = icmp slt i32 %45, %43 %or.cond.i27 = select i1 %44, i1 true, i1 %46 @@ -16292,7 +16292,7 @@ define hidden noundef ptr @_ZN5zxing6qrcode7Version24decodeVersionInformationEj( store ptr getelementptr inbounds inrange(-16, 64) (i8, ptr @_ZTVN5zxing12ErrorHandlerE, i64 16), ptr %2, align 8 %51 = getelementptr inbounds i8, ptr %2, i64 16 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #18 - br label %61 + br label %60 52: ; preds = %.noexc29 %53 = landingpad { ptr, i32 } @@ -16304,26 +16304,25 @@ define hidden noundef ptr @_ZN5zxing6qrcode7Version24decodeVersionInformationEj( 55: ; preds = %42 %56 = load ptr, ptr @_ZN5zxing6qrcode7Version8VERSIONSE, align 8 - %57 = and i64 %.120, 2147483647 - %58 = getelementptr %"class.zxing::Ref", ptr %56, i64 %57 - %59 = getelementptr i8, ptr %58, i64 -8 - %60 = load ptr, ptr %59, align 8 - br label %61 - -61: ; preds = %55, %50 - %.0.i28 = phi ptr [ null, %50 ], [ %60, %55 ] + %57 = getelementptr %"class.zxing::Ref", ptr %56, i64 %.120 + %58 = getelementptr i8, ptr %57, i64 -8 + %59 = load ptr, ptr %58, align 8 + br label %60 + +60: ; preds = %55, %50 + %.0.i28 = phi ptr [ null, %50 ], [ %59, %55 ] call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %2) - %62 = getelementptr inbounds i8, ptr %4, i64 12 - %63 = load i32, ptr %62, align 4 - %.not = icmp eq i32 %63, 0 + %61 = getelementptr inbounds i8, ptr %4, i64 12 + %62 = load i32, ptr %61, align 4 + %.not = icmp eq i32 %62, 0 %.26 = select i1 %.not, ptr %.0.i28, ptr null br label %._crit_edge.thread -._crit_edge.thread: ; preds = %1, %._crit_edge, %61, %29 - %.0 = phi ptr [ %., %29 ], [ %.26, %61 ], [ null, %._crit_edge ], [ null, %1 ] +._crit_edge.thread: ; preds = %1, %._crit_edge, %60, %29 + %.0 = phi ptr [ %., %29 ], [ %.26, %60 ], [ null, %._crit_edge ], [ null, %1 ] store ptr getelementptr inbounds inrange(-16, 64) (i8, ptr @_ZTVN5zxing12ErrorHandlerE, i64 16), ptr %4, align 8 - %64 = getelementptr inbounds i8, ptr %4, i64 16 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #18 + %63 = getelementptr inbounds i8, ptr %4, i64 16 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #18 ret ptr %.0 } diff --git a/bench/openexr/optimized/parse_header.c.ll b/bench/openexr/optimized/parse_header.c.ll index 09708e59bd6..fe05f7ee768 100644 --- a/bench/openexr/optimized/parse_header.c.ll +++ b/bench/openexr/optimized/parse_header.c.ll @@ -261,8 +261,8 @@ while.body.i96: ; preds = %if.else, %while.bod br i1 %cmp.i99, label %while.body.i96, label %while.end.loopexit.i, !llvm.loop !6 while.end.loopexit.i: ; preds = %while.body.i96 - %17 = add nuw i32 %y.06.i, 2 - %18 = add i32 %17, %spec.select.i + %17 = add nuw nsw i32 %y.06.i, 2 + %18 = add nuw nsw i32 %17, %spec.select.i br label %sw.epilog sw.bb63: ; preds = %if.end41 @@ -318,8 +318,8 @@ while.body.i120: ; preds = %if.else75, %while.b br i1 %cmp.i129, label %while.body.i120, label %while.end.loopexit.i130, !llvm.loop !6 while.end.loopexit.i130: ; preds = %while.body.i120 - %21 = add nuw i32 %y.06.i122, 2 - %22 = add i32 %21, %spec.select.i126 + %21 = add nuw nsw i32 %y.06.i122, 2 + %22 = add nuw nsw i32 %21, %spec.select.i126 br label %ceil_log2.exit131 ceil_log2.exit131: ; preds = %if.else75, %while.end.loopexit.i130 @@ -340,8 +340,8 @@ while.body.i134: ; preds = %ceil_log2.exit131, br i1 %cmp.i143, label %while.body.i134, label %while.end.loopexit.i144, !llvm.loop !6 while.end.loopexit.i144: ; preds = %while.body.i134 - %23 = add nuw i32 %y.06.i136, 2 - %24 = add i32 %23, %spec.select.i140 + %23 = add nuw nsw i32 %y.06.i136, 2 + %24 = add nuw nsw i32 %23, %spec.select.i140 br label %sw.epilog sw.default: ; preds = %if.end41 @@ -364,7 +364,7 @@ sw.epilog: ; preds = %floor_log2.exit108, %mul86 = shl nsw i64 %conv85, 3 %call87 = tail call ptr %26(i64 noundef %mul86) #10 %cmp88 = icmp eq ptr %call87, null - br i1 %cmp88, label %if.then90, label %if.end93 + br i1 %cmp88, label %if.then90, label %for.body.preheader if.then90: ; preds = %sw.epilog %standard_error91 = getelementptr inbounds i8, ptr %ctxt, i64 56 @@ -372,25 +372,17 @@ if.then90: ; preds = %sw.epilog %call92 = tail call i32 %27(ptr noundef nonnull %ctxt, i32 noundef 1) #10 br label %return -if.end93: ; preds = %sw.epilog +for.body.preheader: ; preds = %sw.epilog %idx.ext = sext i32 %numX.0 to i64 %add.ptr = getelementptr inbounds i32, ptr %call87, i64 %idx.ext %add.ptr95 = getelementptr inbounds i32, ptr %add.ptr, i64 %idx.ext %idx.ext96 = sext i32 %numY.0 to i64 %add.ptr97 = getelementptr inbounds i32, ptr %add.ptr95, i64 %idx.ext96 - %cmp98169 = icmp sgt i32 %numX.0, 0 - br i1 %cmp98169, label %for.body.preheader, label %for.cond134.preheader - -for.body.preheader: ; preds = %if.end93 - %wide.trip.count = zext nneg i32 %numX.0 to i64 + %wide.trip.count = zext i32 %numX.0 to i64 br label %for.body -for.cond134.preheader: ; preds = %if.end122, %if.end93 - %cmp135171 = icmp sgt i32 %numY.0, 0 - br i1 %cmp135171, label %for.body137.preheader, label %for.end177 - -for.body137.preheader: ; preds = %for.cond134.preheader - %wide.trip.count181 = zext nneg i32 %numY.0 to i64 +for.body137.preheader: ; preds = %if.end122 + %wide.trip.count181 = zext i32 %numY.0 to i64 br label %for.body137 for.body: ; preds = %for.body.preheader, %if.end122 @@ -430,7 +422,7 @@ if.end122: ; preds = %for.body store i32 %conv130, ptr %arrayidx132, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %for.cond134.preheader, label %for.body, !llvm.loop !7 + br i1 %exitcond.not, label %for.body137.preheader, label %for.body, !llvm.loop !7 for.body137: ; preds = %for.body137.preheader, %if.end161 %indvars.iv178 = phi i64 [ 0, %for.body137.preheader ], [ %indvars.iv.next179, %if.end161 ] @@ -471,7 +463,7 @@ if.end161: ; preds = %for.body137 %exitcond182.not = icmp eq i64 %indvars.iv.next179, %wide.trip.count181 br i1 %exitcond182.not, label %for.end177, label %for.body137, !llvm.loop !8 -for.end177: ; preds = %if.end161, %for.cond134.preheader +for.end177: ; preds = %if.end161 store ptr %call87, ptr %tile_level_tile_count_x20187, align 8 %tile_level_tile_count_y = getelementptr inbounds i8, ptr %curpart, i64 208 store ptr %add.ptr95, ptr %tile_level_tile_count_y, align 8 diff --git a/bench/openjdk/optimized/cmscgats.ll b/bench/openjdk/optimized/cmscgats.ll index 379d2c46c04..ce36213932a 100644 --- a/bench/openjdk/optimized/cmscgats.ll +++ b/bench/openjdk/optimized/cmscgats.ll @@ -6334,7 +6334,7 @@ define hidden i32 @cmsIT8TableCount(ptr nocapture noundef readonly %0) local_unn } ; Function Attrs: nounwind uwtable -define hidden i32 @cmsIT8SetTableByLabel(ptr nocapture noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) local_unnamed_addr #0 { +define hidden i32 @cmsIT8SetTableByLabel(ptr nocapture noundef %0, ptr noundef %1, ptr noundef %2, ptr nocapture noundef readnone %3) local_unnamed_addr #0 { %5 = alloca [256 x i8], align 16 %6 = alloca [256 x i8], align 16 %7 = alloca i32, align 4 @@ -6361,50 +6361,36 @@ define hidden i32 @cmsIT8SetTableByLabel(ptr nocapture noundef %0, ptr noundef % br i1 %.not22, label %16, label %cmsIT8SetTable.exit 16: ; preds = %14 - %.not23 = icmp eq ptr %3, null - br i1 %.not23, label %.thread, label %17 - -17: ; preds = %16 - %18 = load i8, ptr %3, align 1 - %19 = icmp eq i8 %18, 0 - br i1 %19, label %.thread, label %20 - -20: ; preds = %17 - %21 = call i32 @cmsstrcasecmp(ptr noundef nonnull %5, ptr noundef nonnull %3) #17 - %.not25 = icmp eq i32 %21, 0 - br i1 %.not25, label %.thread, label %cmsIT8SetTable.exit + %17 = load i32, ptr %7, align 4 + %18 = load i32, ptr %0, align 8 + %.not.i = icmp ult i32 %17, %18 + br i1 %.not.i, label %27, label %19 -.thread: ; preds = %17, %16, %20 - %22 = load i32, ptr %7, align 4 - %23 = load i32, ptr %0, align 8 - %.not.i = icmp ult i32 %22, %23 - br i1 %.not.i, label %32, label %24 +19: ; preds = %16 + %20 = icmp eq i32 %17, %18 + br i1 %20, label %21, label %26 -24: ; preds = %.thread - %25 = icmp eq i32 %22, %23 - br i1 %25, label %26, label %31 - -26: ; preds = %24 - %27 = zext i32 %22 to i64 - %.idx.i.i = mul nuw nsw i64 %27, 1064 - %28 = getelementptr i8, ptr %0, i64 1056 - %29 = getelementptr i8, ptr %28, i64 %.idx.i.i - %30 = add i32 %22, 1 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %29, i8 0, i64 24, i1 false) - store i32 %30, ptr %0, align 8 - br label %32 +21: ; preds = %19 + %22 = zext i32 %17 to i64 + %.idx.i.i = mul nuw nsw i64 %22, 1064 + %23 = getelementptr i8, ptr %0, i64 1056 + %24 = getelementptr i8, ptr %23, i64 %.idx.i.i + %25 = add i32 %17, 1 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %24, i8 0, i64 24, i1 false) + store i32 %25, ptr %0, align 8 + br label %27 -31: ; preds = %24 - call void (ptr, ptr, ...) @SynError(ptr noundef nonnull %0, ptr noundef nonnull @.str, i32 noundef %22) +26: ; preds = %19 + call void (ptr, ptr, ...) @SynError(ptr noundef nonnull %0, ptr noundef nonnull @.str, i32 noundef %17) br label %cmsIT8SetTable.exit -32: ; preds = %26, %.thread - %33 = getelementptr inbounds i8, ptr %0, i64 4 - store i32 %22, ptr %33, align 4 +27: ; preds = %21, %16 + %28 = getelementptr inbounds i8, ptr %0, i64 4 + store i32 %17, ptr %28, align 4 br label %cmsIT8SetTable.exit -cmsIT8SetTable.exit: ; preds = %32, %31, %20, %14, %11 - %.0 = phi i32 [ -1, %11 ], [ -1, %14 ], [ -1, %20 ], [ %22, %32 ], [ -1, %31 ] +cmsIT8SetTable.exit: ; preds = %27, %26, %14, %11 + %.0 = phi i32 [ -1, %11 ], [ -1, %14 ], [ %17, %27 ], [ -1, %26 ] ret i32 %.0 } diff --git a/bench/openjdk/optimized/klass.ll b/bench/openjdk/optimized/klass.ll index eed264525e9..0d8a5ffc2ff 100644 --- a/bench/openjdk/optimized/klass.ll +++ b/bench/openjdk/optimized/klass.ll @@ -1625,12 +1625,12 @@ define hidden void @_ZNK5Klass25print_secondary_supers_onEP12outputStream(ptr no %3 = getelementptr inbounds i8, ptr %0, i64 40 %4 = load ptr, ptr %3, align 8 %.not = icmp eq ptr %4, null - br i1 %.not, label %75, label %5 + br i1 %.not, label %72, label %5 5: ; preds = %2 %6 = load i8, ptr @UseSecondarySupersTable, align 1 %7 = trunc i8 %6 to i1 - br i1 %7, label %8, label %76 + br i1 %7, label %8, label %73 8: ; preds = %5 tail call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef nonnull @.str.45) #21 @@ -1642,8 +1642,8 @@ define hidden void @_ZNK5Klass25print_secondary_supers_onEP12outputStream(ptr no tail call void (ptr, ptr, ...) @_ZN12outputStream8print_crEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef nonnull @.str.47, i64 noundef %12) #21 %13 = load i64, ptr %11, align 8 switch i64 %13, label %14 [ - i64 0, label %76 - i64 -1, label %76 + i64 0, label %73 + i64 -1, label %73 ] 14: ; preds = %8 @@ -1690,16 +1690,16 @@ _ZN5Klass17compute_home_slotEPS_m.exit.i: ; preds = %25, %20 %35 = add nuw nsw i32 %34, 1 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %36 = add i32 %35, %.sroa.12.030.i - %.not.i = icmp ugt i32 %.sroa.5.026.i, %34 + %.not.i = icmp samesign ugt i32 %.sroa.5.026.i, %34 %37 = icmp eq i32 %.sroa.5.026.i, %35 %38 = zext i1 %37 to i32 %spec.select.i = add i32 %.sroa.8.027.i, %38 %.sroa.5.1.i = select i1 %.not.i, i32 %.sroa.5.026.i, i32 %35 %.sroa.8.1.i = select i1 %.not.i, i32 %spec.select.i, i32 1 - %39 = icmp ugt i32 %.sroa.15.029.i, %35 + %39 = icmp samesign ugt i32 %.sroa.15.029.i, %35 %40 = icmp eq i32 %.sroa.15.029.i, %35 %41 = zext i1 %40 to i32 - %spec.select24.i = add i32 %.sroa.19.028.i, %41 + %spec.select24.i = add nuw nsw i32 %.sroa.19.028.i, %41 %.sroa.19.1.i = select i1 %39, i32 1, i32 %spec.select24.i %.sroa.15.1.i = tail call i32 @llvm.umin.i32(i32 %.sroa.15.029.i, i32 %35) %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i @@ -1707,8 +1707,8 @@ _ZN5Klass17compute_home_slotEPS_m.exit.i: ; preds = %25, %20 ._crit_edge.loopexit.i: ; preds = %_ZN5Klass17compute_home_slotEPS_m.exit.i %42 = uitofp i32 %36 to double - %43 = uitofp i32 %.sroa.8.1.i to double - %44 = fmul double %43, 1.000000e+02 + %43 = mul nuw i32 %.sroa.8.1.i, 100 + %44 = uitofp nneg i32 %43 to double br label %._crit_edge.i ._crit_edge.i: ; preds = %._crit_edge.loopexit.i, %14 @@ -1719,8 +1719,8 @@ _ZN5Klass17compute_home_slotEPS_m.exit.i: ; preds = %25, %20 %.sroa.15.0.lcssa.i = phi i32 [ 2147483647, %14 ], [ %.sroa.15.1.i, %._crit_edge.loopexit.i ] %.sroa.12.0.lcssa.i = phi double [ 0.000000e+00, %14 ], [ %42, %._crit_edge.loopexit.i ] tail call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef nonnull @.str.62) #21 - %45 = uitofp i32 %.sroa.19.0.lcssa.i to double - %46 = fmul double %45, 1.000000e+02 + %45 = mul nuw nsw i32 %.sroa.19.0.lcssa.i, 100 + %46 = uitofp nneg i32 %45 to double %47 = uitofp nneg i32 %.sroa.0.0.lcssa.i to double %48 = fdiv double %46, %47 tail call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef nonnull @.str.63, i32 noundef %.sroa.15.0.lcssa.i, double noundef %48) #21 @@ -1752,48 +1752,41 @@ _ZN11LookupStats6sampleEj.exit.i: ; preds = %_ZN11LookupStats6sa %56 = trunc nuw nsw i64 %55 to i32 %indvars.iv.next.i14 = add nuw nsw i64 %indvars.iv.i13, 1 %57 = add i32 %.sroa.12.024.i, %56 - %58 = icmp ult i32 %.sroa.5.020.i, %56 + %58 = icmp samesign ult i32 %.sroa.5.020.i, %56 %59 = icmp eq i32 %.sroa.5.020.i, %56 %60 = zext i1 %59 to i32 - %spec.select.i15 = add i32 %.sroa.8.021.i, %60 + %spec.select.i15 = add nuw nsw i32 %.sroa.8.021.i, %60 %.sroa.5.1.i16 = tail call i32 @llvm.umax.i32(i32 %.sroa.5.020.i, i32 %56) %.sroa.8.1.i17 = select i1 %58, i32 1, i32 %spec.select.i15 - %61 = icmp ugt i32 %.sroa.15.023.i, %56 + %61 = icmp samesign ugt i32 %.sroa.15.023.i, %56 %62 = icmp eq i32 %.sroa.15.023.i, %56 %63 = zext i1 %62 to i32 - %spec.select18.i = add i32 %.sroa.19.022.i, %63 + %spec.select18.i = add nuw nsw i32 %.sroa.19.022.i, %63 %.sroa.19.1.i18 = select i1 %61, i32 1, i32 %spec.select18.i %.sroa.15.1.i19 = tail call i32 @llvm.umin.i32(i32 %.sroa.15.023.i, i32 %56) %exitcond.not.i20 = icmp eq i64 %indvars.iv.next.i14, 64 - br i1 %exitcond.not.i20, label %64, label %_ZN11LookupStats6sampleEj.exit.i, !llvm.loop !17 + br i1 %exitcond.not.i20, label %_ZL27print_negative_lookup_statsmP12outputStream.exit, label %_ZN11LookupStats6sampleEj.exit.i, !llvm.loop !17 -64: ; preds = %_ZN11LookupStats6sampleEj.exit.i +_ZL27print_negative_lookup_statsmP12outputStream.exit: ; preds = %_ZN11LookupStats6sampleEj.exit.i tail call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef nonnull @.str.65) #21 - %65 = uitofp i32 %.sroa.19.1.i18 to double - %66 = fmul double %65, 1.000000e+02 - %67 = fmul double %66, 1.562500e-02 - tail call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef nonnull @.str.63, i32 noundef %.sroa.15.1.i19, double noundef %67) #21 - %68 = icmp ult i32 %.sroa.19.1.i18, 64 - br i1 %68, label %69, label %_ZL27print_negative_lookup_statsmP12outputStream.exit - -69: ; preds = %64 - %70 = uitofp i32 %57 to double + %64 = mul nuw nsw i32 %.sroa.19.1.i18, 100 + %65 = uitofp nneg i32 %64 to double + %66 = fmul double %65, 1.562500e-02 + tail call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef nonnull @.str.63, i32 noundef %.sroa.15.1.i19, double noundef %66) #21 + %67 = uitofp i32 %57 to double + %68 = fmul double %67, 1.562500e-02 + %69 = mul nuw nsw i32 %.sroa.8.1.i17, 100 + %70 = uitofp nneg i32 %69 to double %71 = fmul double %70, 1.562500e-02 - %72 = uitofp i32 %.sroa.8.1.i17 to double - %73 = fmul double %72, 1.000000e+02 - %74 = fmul double %73, 1.562500e-02 - tail call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef nonnull @.str.64, double noundef %71, i32 noundef %.sroa.5.1.i16, double noundef %74) #21 - br label %_ZL27print_negative_lookup_statsmP12outputStream.exit - -_ZL27print_negative_lookup_statsmP12outputStream.exit: ; preds = %64, %69 + tail call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef nonnull @.str.64, double noundef %68, i32 noundef %.sroa.5.1.i16, double noundef %71) #21 tail call void @_ZN12outputStream2crEv(ptr noundef nonnull align 8 dereferenceable(56) %1) #21 - br label %76 + br label %73 -75: ; preds = %2 +72: ; preds = %2 tail call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef nonnull @.str.48) #21 - br label %76 + br label %73 -76: ; preds = %8, %8, %5, %_ZL27print_negative_lookup_statsmP12outputStream.exit, %75 +73: ; preds = %8, %8, %5, %_ZL27print_negative_lookup_statsmP12outputStream.exit, %72 ret void } diff --git a/bench/openjdk/optimized/macroAssembler_x86.ll b/bench/openjdk/optimized/macroAssembler_x86.ll index d9333750d73..5b405653a78 100644 --- a/bench/openjdk/optimized/macroAssembler_x86.ll +++ b/bench/openjdk/optimized/macroAssembler_x86.ll @@ -13821,71 +13821,11 @@ declare void @_ZN9Assembler12vbroadcastssE11XMMRegister7Addressi(ptr noundef non ; Function Attrs: mustprogress nounwind uwtable define hidden void @_ZN14MacroAssembler9vblendvpsE11XMMRegisterS0_S0_S0_ibS0_(ptr noundef nonnull align 8 dereferenceable(40) %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 noundef %5, i1 noundef zeroext %6, i32 %7) local_unnamed_addr #0 align 2 { - %9 = load i8, ptr @EnableX86ECoreOpts, align 1 - %10 = trunc i8 %9 to i1 - %11 = load i32, ptr @UseAVX, align 4 - %12 = icmp slt i32 %11, 2 - %not. = xor i1 %10, true - %13 = select i1 %not., i1 true, i1 %12 - %.not89 = icmp eq i32 %7, -1 - %.not = icmp eq i32 %7, %2 - %or.cond = select i1 %.not89, i1 true, i1 %.not - br i1 %or.cond, label %16, label %14 - -14: ; preds = %8 - %.not90 = icmp eq i32 %7, %3 - %15 = icmp eq i32 %7, %1 - %spec.select.not = select i1 %.not90, i1 true, i1 %15 - br label %16 - -16: ; preds = %14, %8 - %.not63 = phi i1 [ true, %8 ], [ %spec.select.not, %14 ] - %.not91 = icmp eq i32 %1, %4 - br i1 %.not91, label %.thread, label %17 - -17: ; preds = %16 - %.not92 = icmp eq i32 %1, %2 - %18 = icmp eq i32 %1, %3 - %spec.select88.not = select i1 %.not92, i1 %18, i1 false - %brmerge = or i1 %13, %.not63 - %brmerge65 = or i1 %spec.select88.not, %brmerge - br i1 %brmerge65, label %.thread, label %19 - -19: ; preds = %17 - br i1 %6, label %20, label %21 - -20: ; preds = %19 - tail call void @_ZN9Assembler6vpsradE11XMMRegisterS0_ii(ptr noundef nonnull align 8 dereferenceable(40) %0, i32 %7, i32 %4, i32 noundef 32, i32 noundef %5) #18 - br label %21 - -21: ; preds = %20, %19 - %.sroa.039.0 = phi i32 [ %7, %20 ], [ %4, %19 ] - br i1 %.not92, label %22, label %23 - -22: ; preds = %21 - tail call void @_ZN9Assembler6vpandnE11XMMRegisterS0_S0_i(ptr noundef nonnull align 8 dereferenceable(40) %0, i32 %2, i32 %.sroa.039.0, i32 %2, i32 noundef %5) #18 - tail call void @_ZN9Assembler5vpandE11XMMRegisterS0_S0_i(ptr noundef nonnull align 8 dereferenceable(40) %0, i32 %7, i32 %.sroa.039.0, i32 %3, i32 noundef %5) #18 - br label %24 - -23: ; preds = %21 - tail call void @_ZN9Assembler5vpandE11XMMRegisterS0_S0_i(ptr noundef nonnull align 8 dereferenceable(40) %0, i32 %1, i32 %.sroa.039.0, i32 %3, i32 noundef %5) #18 - tail call void @_ZN9Assembler6vpandnE11XMMRegisterS0_S0_i(ptr noundef nonnull align 8 dereferenceable(40) %0, i32 %7, i32 %.sroa.039.0, i32 %2, i32 noundef %5) #18 - br label %24 - -24: ; preds = %23, %22 - tail call void @_ZN9Assembler4vporE11XMMRegisterS0_S0_i(ptr noundef nonnull align 8 dereferenceable(40) %0, i32 %1, i32 %1, i32 %7, i32 noundef %5) #18 - br label %25 - -.thread: ; preds = %16, %17 +.thread: tail call void @_ZN9Assembler9vblendvpsE11XMMRegisterS0_S0_S0_i(ptr noundef nonnull align 8 dereferenceable(40) %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 noundef %5) #18 - br label %25 - -25: ; preds = %.thread, %24 ret void } -declare void @_ZN9Assembler6vpsradE11XMMRegisterS0_ii(ptr noundef nonnull align 8 dereferenceable(40), i32, i32, i32 noundef, i32 noundef) local_unnamed_addr #1 - declare void @_ZN9Assembler6vpandnE11XMMRegisterS0_S0_i(ptr noundef nonnull align 8 dereferenceable(40), i32, i32, i32, i32 noundef) local_unnamed_addr #1 declare void @_ZN9Assembler4vporE11XMMRegisterS0_S0_i(ptr noundef nonnull align 8 dereferenceable(40), i32, i32, i32, i32 noundef) local_unnamed_addr #1 diff --git a/bench/openjdk/optimized/stringTable.ll b/bench/openjdk/optimized/stringTable.ll index 8e9674c1b7f..f5f80eb31ff 100644 --- a/bench/openjdk/optimized/stringTable.ll +++ b/bench/openjdk/optimized/stringTable.ll @@ -2923,7 +2923,7 @@ define hidden void @_ZN11StringTable22print_table_statisticsEP12outputStream(ptr ._crit_edge29.i: ; preds = %15, %11 %.0.i = phi i32 [ %21, %15 ], [ 1, %11 ] %22 = add nuw nsw i32 %.0.i, %.01925.i - %spec.select.i = call i32 @llvm.smax.i32(i32 %.02024.i, i32 %.0.i) + %spec.select.i = call i32 @llvm.umax.i32(i32 %.02024.i, i32 %.0.i) %exitcond.not.i = icmp eq i64 %.pre.i, %wide.trip.count.i br i1 %exitcond.not.i, label %_ZN16CompactHashtableIPKtP7oopDescXadL_ZN11StringTable34read_string_from_compact_hashtableEPhjEEXadL_ZN16java_lang_String6equalsES3_S1_iEEE22print_table_statisticsEP12outputStreamPKc.exit, label %11, !llvm.loop !27 @@ -11181,7 +11181,7 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #15 declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #15 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #14 +declare i32 @llvm.umax.i32(i32, i32) #14 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) declare void @llvm.assume(i1 noundef) #16 @@ -11189,6 +11189,9 @@ declare void @llvm.assume(i1 noundef) #16 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #14 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.smax.i32(i32, i32) #14 + attributes #0 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nofree norecurse nounwind willreturn memory(readwrite, argmem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/openmpi/optimized/comm.ll b/bench/openmpi/optimized/comm.ll index 24e570d99ea..3ab93183933 100644 --- a/bench/openmpi/optimized/comm.ll +++ b/bench/openmpi/optimized/comm.ll @@ -4577,7 +4577,7 @@ define range(i32 -5, 1) i32 @ompi_comm_compare(ptr noundef readonly %0, ptr noun %7 = getelementptr inbounds i8, ptr %1, i64 336 %8 = load ptr, ptr %7, align 8 %.not = icmp eq ptr %6, %8 - br i1 %.not, label %9, label %58 + br i1 %.not, label %9, label %56 9: ; preds = %3 %10 = getelementptr inbounds i8, ptr %0, i64 168 @@ -4659,27 +4659,15 @@ ompi_comm_remote_size.exit50: ; preds = %ompi_comm_remote_si %53 = load ptr, ptr %52, align 8 %54 = call i32 @ompi_group_compare(ptr noundef %51, ptr noundef %53, ptr noundef nonnull %4) #19 %55 = load i32, ptr %4, align 4 - switch i32 %55, label %58 [ - i32 0, label %.sink.split - i32 1, label %.sink.split - i32 2, label %56 - i32 3, label %57 - ] - -56: ; preds = %49 - %or.cond3 = icmp ult i32 %47, 3 - %.52 = select i1 %or.cond3, i32 2, i32 3 - br label %.sink.split + %switch = icmp ult i32 %55, 2 + br i1 %switch, label %.sink.split, label %56 -57: ; preds = %49 - br label %.sink.split - -.sink.split: ; preds = %56, %45, %49, %49, %ompi_comm_remote_size.exit50, %ompi_comm_compare_cids.exit.thread, %ompi_comm_compare_cids.exit, %57 - %..sink = phi i32 [ 3, %57 ], [ 0, %ompi_comm_compare_cids.exit ], [ 3, %ompi_comm_compare_cids.exit.thread ], [ 3, %ompi_comm_remote_size.exit50 ], [ %., %49 ], [ %., %49 ], [ %., %45 ], [ %.52, %56 ] +.sink.split: ; preds = %45, %49, %ompi_comm_remote_size.exit50, %ompi_comm_compare_cids.exit.thread, %ompi_comm_compare_cids.exit + %..sink = phi i32 [ 0, %ompi_comm_compare_cids.exit ], [ 3, %ompi_comm_compare_cids.exit.thread ], [ 3, %ompi_comm_remote_size.exit50 ], [ %., %49 ], [ %., %45 ] store i32 %..sink, ptr %2, align 4 - br label %58 + br label %56 -58: ; preds = %.sink.split, %49, %3 +56: ; preds = %.sink.split, %49, %3 %.038 = phi i32 [ -5, %3 ], [ 0, %49 ], [ 0, %.sink.split ] ret i32 %.038 } diff --git a/bench/openmpi/optimized/comm_init.ll b/bench/openmpi/optimized/comm_init.ll index 1658c77c621..ac4c9f335c2 100644 --- a/bench/openmpi/optimized/comm_init.ll +++ b/bench/openmpi/optimized/comm_init.ll @@ -108,31 +108,22 @@ define internal void @ompi_comm_construct(ptr noundef %0) #0 { store ptr null, ptr %13, align 8 %14 = load ptr, ptr @ompi_mpi_comm_world_addr, align 8 %15 = icmp eq ptr %0, %14 - br i1 %15, label %.thread, label %16 + br i1 %15, label %23, label %16 16: ; preds = %1 %17 = load ptr, ptr @ompi_mpi_comm_self_addr, align 8 %18 = icmp eq ptr %0, %17 - br i1 %18, label %.thread, label %19 - -19: ; preds = %16 - %20 = load ptr, ptr @ompi_mpi_comm_null_addr, align 8 - %.not37 = icmp eq ptr %0, %20 - br i1 %.not37, label %.thread, label %21 - -21: ; preds = %19 - %22 = tail call i32 @opal_pointer_array_add(ptr noundef nonnull @ompi_comm_f_to_c_table, ptr noundef nonnull %0) #12 - br label %25 - -.thread: ; preds = %16, %1, %19 - %23 = phi i32 [ 2, %19 ], [ 0, %1 ], [ 1, %16 ] - %24 = tail call i32 @opal_pointer_array_set_item(ptr noundef nonnull @ompi_comm_f_to_c_table, i32 noundef %23, ptr noundef nonnull %0) #12 - br label %25 - -25: ; preds = %.thread, %21 - %.sink = phi i32 [ %23, %.thread ], [ %22, %21 ] + %19 = load ptr, ptr @ompi_mpi_comm_null_addr, align 8 + %20 = icmp eq ptr %0, %19 + %21 = select i1 %20, i32 2, i32 -1 + %22 = select i1 %18, i32 1, i32 %21 + br label %23 + +23: ; preds = %16, %1 + %24 = phi i32 [ %22, %16 ], [ 0, %1 ] + %25 = tail call i32 @opal_pointer_array_set_item(ptr noundef nonnull @ompi_comm_f_to_c_table, i32 noundef %24, ptr noundef nonnull %0) #12 %26 = getelementptr inbounds i8, ptr %0, i64 244 - store i32 %.sink, ptr %26, align 4 + store i32 %24, ptr %26, align 4 %27 = getelementptr inbounds i8, ptr %0, i64 272 store ptr null, ptr %27, align 8 %28 = getelementptr inbounds i8, ptr %0, i64 304 @@ -145,11 +136,11 @@ define internal void @ompi_comm_construct(ptr noundef %0) #0 { %.not = icmp eq i32 %30, %31 br i1 %.not, label %33, label %32 -32: ; preds = %25 +32: ; preds = %23 tail call void @opal_class_initialize(ptr noundef nonnull @opal_mutex_t_class) #12 br label %33 -33: ; preds = %32, %25 +33: ; preds = %32, %23 %34 = getelementptr inbounds i8, ptr %0, i64 96 store ptr @opal_mutex_t_class, ptr %34, align 8 %35 = getelementptr inbounds i8, ptr %0, i64 104 @@ -1819,8 +1810,6 @@ declare i32 @pthread_mutex_lock(ptr noundef) local_unnamed_addr #9 ; Function Attrs: nounwind declare i32 @pthread_mutex_unlock(ptr noundef) local_unnamed_addr #9 -declare i32 @opal_pointer_array_add(ptr noundef, ptr noundef) local_unnamed_addr #1 - declare i32 @mca_coll_base_comm_unselect(ptr noundef) local_unnamed_addr #1 declare i32 @opal_hash_table_remove_value_ptr(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #1 diff --git a/bench/openspiel/optimized/Par.cpp.ll b/bench/openspiel/optimized/Par.cpp.ll index d57611c0aa2..4a7fad1641f 100644 --- a/bench/openspiel/optimized/Par.cpp.ll +++ b/bench/openspiel/optimized/Par.cpp.ll @@ -1081,14 +1081,12 @@ _Z13VulnerDefSideii.exit.us: ; preds = %318 _Z13VulnerDefSideii.exit.thread.us: ; preds = %_Z13VulnerDefSideii.exit.us, %318 %319 = icmp slt i32 %.reass653, 4 %.807 = select i1 %319, i32 200, i32 300 - %.808 = select i1 %319, i32 -100, i32 -400 br label %_Z8rawscoreiii.exit506.us _Z8rawscoreiii.exit506.us: ; preds = %_Z13VulnerDefSideii.exit.thread.us, %318, %_Z13VulnerDefSideii.exit.us %.sink800 = phi i32 [ 300, %_Z13VulnerDefSideii.exit.us ], [ 300, %318 ], [ %.807, %_Z13VulnerDefSideii.exit.thread.us ] - %.sink799 = phi i32 [ -100, %_Z13VulnerDefSideii.exit.us ], [ -100, %318 ], [ %.808, %_Z13VulnerDefSideii.exit.thread.us ] %.neg579.us = mul i32 %.reass653, %.sink800 - %.neg580.us = add i32 %.neg579.us, %.sink799 + %.neg580.us = add i32 %.neg579.us, -100 %320 = icmp slt i32 %262, %.neg580.us br i1 %320, label %.lr.ph656, label %321 @@ -1120,14 +1118,12 @@ _Z13VulnerDefSideii.exit510: ; preds = %324 _Z13VulnerDefSideii.exit510.thread: ; preds = %324, %_Z13VulnerDefSideii.exit510 %325 = icmp slt i32 %.reass, 3 %.809 = select i1 %325, i32 200, i32 300 - %.810 = select i1 %325, i32 -100, i32 -400 br label %_Z8rawscoreiii.exit506 _Z8rawscoreiii.exit506: ; preds = %_Z13VulnerDefSideii.exit510.thread, %_Z13VulnerDefSideii.exit510, %324 %.sink802 = phi i32 [ 300, %324 ], [ 300, %_Z13VulnerDefSideii.exit510 ], [ %.809, %_Z13VulnerDefSideii.exit510.thread ] - %.sink801 = phi i32 [ -100, %324 ], [ -100, %_Z13VulnerDefSideii.exit510 ], [ %.810, %_Z13VulnerDefSideii.exit510.thread ] %.neg587 = mul i32 %.reass651, %.sink802 - %.neg588 = add i32 %.neg587, %.sink801 + %.neg588 = add i32 %.neg587, -100 %326 = icmp slt i32 %262, %.neg588 br i1 %326, label %.lr.ph656, label %327 @@ -1162,14 +1158,12 @@ _Z13VulnerDefSideii.exit518: ; preds = %.lr.ph656.split _Z13VulnerDefSideii.exit518.thread: ; preds = %.lr.ph656.split, %_Z13VulnerDefSideii.exit518 %337 = icmp slt i32 %.reass661, 4 %.811 = select i1 %337, i32 200, i32 300 - %.812 = select i1 %337, i32 -100, i32 -400 br label %_Z8rawscoreiii.exit521 _Z8rawscoreiii.exit521: ; preds = %_Z13VulnerDefSideii.exit518.thread, %_Z13VulnerDefSideii.exit518, %.lr.ph656.split %.sink804 = phi i32 [ 300, %.lr.ph656.split ], [ 300, %_Z13VulnerDefSideii.exit518 ], [ %.811, %_Z13VulnerDefSideii.exit518.thread ] - %.sink803 = phi i32 [ -100, %.lr.ph656.split ], [ -100, %_Z13VulnerDefSideii.exit518 ], [ %.812, %_Z13VulnerDefSideii.exit518.thread ] %.neg590 = mul i32 %.reass661, %.sink804 - %.neg591 = add i32 %.neg590, %.sink803 + %.neg591 = add i32 %.neg590, -100 %338 = icmp sgt i32 %262, %.neg591 br i1 %338, label %339, label %_Z8rawscoreiii.exit521._crit_edge diff --git a/bench/openspiel/optimized/file.cc.ll b/bench/openspiel/optimized/file.cc.ll index 2f5b29a586a..51076305802 100644 --- a/bench/openspiel/optimized/file.cc.ll +++ b/bench/openspiel/optimized/file.cc.ll @@ -559,40 +559,36 @@ declare noundef i32 @mkdir(ptr nocapture noundef readonly, i32 noundef) local_un define noundef zeroext i1 @_ZN10open_spiel4file6MkdirsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(32) %0, i32 noundef %1) local_unnamed_addr #3 { %3 = alloca %struct.stat, align 8 %4 = alloca %"class.std::__cxx11::basic_string", align 8 - %5 = getelementptr inbounds nuw i8, ptr %3, i64 24 - br label %6 + br label %5 -6: ; preds = %2, %.backedge - %.0712 = phi i64 [ 0, %2 ], [ %8, %.backedge ] - %7 = add nuw i64 %.0712, 1 +5: ; preds = %12, %2 + %.07 = phi i64 [ 0, %2 ], [ %8, %12 ] + %.not = icmp eq i64 %.07, -1 + br i1 %.not, label %.loopexit, label %6 + +6: ; preds = %5 + %7 = add nuw i64 %.07, 1 %8 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.6, i64 noundef %7) #17 call void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef 0, i64 noundef %8) %9 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %4) #17 %10 = call i32 @stat(ptr noundef %9, ptr noundef nonnull %3) #17 %11 = icmp eq i32 %10, 0 - br i1 %11, label %12, label %15 + br i1 %11, label %.critedge, label %12 12: ; preds = %6 - %13 = load i32, ptr %5, align 8 - %14 = and i32 %13, 16384 - %.not9 = icmp eq i32 %14, 0 + %13 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %4) #17 + %14 = call i32 @mkdir(ptr noundef %13, i32 noundef %1) #17 + %.not11 = icmp eq i32 %14, 0 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #17 - br i1 %.not9, label %18, label %.backedge + br i1 %.not11, label %5, label %.loopexit -15: ; preds = %6 - %16 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %4) #17 - %17 = call i32 @mkdir(ptr noundef %16, i32 noundef %1) #17 - %.not11 = icmp eq i32 %17, 0 +.critedge: ; preds = %6 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #17 - br i1 %.not11, label %.backedge, label %18 - -.backedge: ; preds = %15, %12 - %.not = icmp eq i64 %8, -1 - br i1 %.not, label %18, label %6 + br label %.loopexit -18: ; preds = %12, %.backedge, %15 - %.not.lcssa = phi i1 [ false, %12 ], [ true, %.backedge ], [ false, %15 ] - ret i1 %.not.lcssa +.loopexit: ; preds = %5, %12, %.critedge + %.not19 = phi i1 [ false, %.critedge ], [ %.not, %12 ], [ %.not, %5 ] + ret i1 %.not19 } ; Function Attrs: nounwind diff --git a/bench/openspiel/optimized/tarok.cc.ll b/bench/openspiel/optimized/tarok.cc.ll index 3dd2d414be9..f99fbbcd7b8 100644 --- a/bench/openspiel/optimized/tarok.cc.ll +++ b/bench/openspiel/optimized/tarok.cc.ll @@ -5919,18 +5919,14 @@ _ZNK10open_spiel5tarok10TarokState12ActionToCardEl.exit7: ; preds = %.lr.ph %spec.select = select i1 %33, i8 1, i8 %.019 %34 = getelementptr inbounds i8, ptr %.sroa.010.018, i64 8 %.not = icmp eq ptr %34, %24 - br i1 %.not, label %._crit_edge.loopexit, label %.lr.ph - -._crit_edge.loopexit: ; preds = %32 - %35 = and i8 %spec.select, 1 - br label %._crit_edge + br i1 %.not, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %_ZNK10open_spiel5tarok10TarokState12ActionToCardEl.exit7, %_ZNKSt6vectorIS_IlSaIlEESaIS1_EE2atEm.exit, %._crit_edge.loopexit - %.0.lcssa.sink = phi i8 [ 0, %_ZNKSt6vectorIS_IlSaIlEESaIS1_EE2atEm.exit ], [ %35, %._crit_edge.loopexit ], [ 0, %_ZNK10open_spiel5tarok10TarokState12ActionToCardEl.exit7 ] - %.sink = phi i8 [ 0, %_ZNKSt6vectorIS_IlSaIlEESaIS1_EE2atEm.exit ], [ 0, %._crit_edge.loopexit ], [ 1, %_ZNK10open_spiel5tarok10TarokState12ActionToCardEl.exit7 ] +._crit_edge: ; preds = %32, %_ZNK10open_spiel5tarok10TarokState12ActionToCardEl.exit7, %_ZNKSt6vectorIS_IlSaIlEESaIS1_EE2atEm.exit + %.0.lcssa.sink = phi i8 [ 0, %_ZNKSt6vectorIS_IlSaIlEESaIS1_EE2atEm.exit ], [ 0, %_ZNK10open_spiel5tarok10TarokState12ActionToCardEl.exit7 ], [ %spec.select, %32 ] + %.sink = phi i8 [ 0, %_ZNKSt6vectorIS_IlSaIlEESaIS1_EE2atEm.exit ], [ 1, %_ZNK10open_spiel5tarok10TarokState12ActionToCardEl.exit7 ], [ 0, %32 ] store i8 %.0.lcssa.sink, ptr %0, align 1 - %36 = getelementptr inbounds i8, ptr %0, i64 1 - store i8 %.sink, ptr %36, align 1 + %35 = getelementptr inbounds i8, ptr %0, i64 1 + store i8 %.sink, ptr %35, align 1 ret void } @@ -13170,7 +13166,7 @@ _ZSt4findIN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEElET_S8_S8_RKT0_.e %124 = and i64 %123, 34359738360 %125 = icmp eq i64 %124, 24 %.0.lcssa.i52 = select i1 %.not10.i50, i1 %125, i1 false - %126 = add nsw i32 %.0, 10 + %126 = add nuw nsw i32 %.0, 10 %127 = add nsw i32 %.0, -10 %spec.select30 = select i1 %.0.lcssa.i52, i32 %127, i32 %.0 %.1 = select i1 %.0.lcssa.i, i32 %126, i32 %spec.select30 diff --git a/bench/openssl/optimized/libcrypto-lib-mac_lib.ll b/bench/openssl/optimized/libcrypto-lib-mac_lib.ll index d6ad0114b02..d7fd88feddd 100644 --- a/bench/openssl/optimized/libcrypto-lib-mac_lib.ll +++ b/bench/openssl/optimized/libcrypto-lib-mac_lib.ll @@ -390,7 +390,7 @@ EVP_MAC_CTX_get_mac_size.exit: ; preds = %if.end5, %if.then2. call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %params.i.i) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %tmp.i.i) %cmp6 = icmp eq ptr %out, null - br i1 %cmp6, label %if.then7, label %if.end11 + br i1 %cmp6, label %if.then7, label %if.end14 if.then7: ; preds = %EVP_MAC_CTX_get_mac_size.exit %cmp8 = icmp eq ptr %outl, null @@ -406,17 +406,7 @@ if.end10: ; preds = %if.then7 store i64 %retval.0.i.i, ptr %outl, align 8 br label %return -if.end11: ; preds = %EVP_MAC_CTX_get_mac_size.exit - %cmp12 = icmp ult i64 %outsize, %retval.0.i.i - br i1 %cmp12, label %if.then13, label %if.end14 - -if.then13: ; preds = %if.end11 - call void @ERR_new() #6 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 153, ptr noundef nonnull @__func__.evp_mac_final) #6 - call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 6, i32 noundef 155, ptr noundef null) #6 - br label %return - -if.end14: ; preds = %if.end11 +if.end14: ; preds = %EVP_MAC_CTX_get_mac_size.exit %tobool.not = icmp eq i32 %xof, 0 br i1 %tobool.not, label %if.end22, label %if.then15 @@ -458,8 +448,8 @@ if.then27: ; preds = %if.end22 store i64 %16, ptr %outl, align 8 br label %return -return: ; preds = %if.end22, %if.then27, %if.then20, %if.then13, %if.end10, %if.then9, %if.then4, %if.then - %retval.0 = phi i32 [ 0, %if.then ], [ 0, %if.then4 ], [ 0, %if.then9 ], [ 1, %if.end10 ], [ 0, %if.then13 ], [ 0, %if.then20 ], [ %call25, %if.then27 ], [ %call25, %if.end22 ] +return: ; preds = %if.end22, %if.then27, %if.then20, %if.end10, %if.then9, %if.then4, %if.then + %retval.0 = phi i32 [ 0, %if.then ], [ 0, %if.then4 ], [ 0, %if.then9 ], [ 1, %if.end10 ], [ 0, %if.then20 ], [ %call25, %if.then27 ], [ %call25, %if.end22 ] ret i32 %retval.0 } diff --git a/bench/openusd/optimized/cdef_block.c.ll b/bench/openusd/optimized/cdef_block.c.ll index 83e03be182b..a9521e0f823 100644 --- a/bench/openusd/optimized/cdef_block.c.ll +++ b/bench/openusd/optimized/cdef_block.c.ll @@ -236,14 +236,13 @@ define hidden i32 @cdef_find_dir_c(ptr nocapture noundef readonly %0, i32 nounde br i1 %exitcond148.not, label %147, label %.preheader, !llvm.loop !12 147: ; preds = %.preheader - %148 = and i32 %spec.select89, 7 - %149 = xor i32 %148, 4 - %150 = zext nneg i32 %149 to i64 - %151 = getelementptr inbounds [8 x i32], ptr %5, i64 0, i64 %150 - %152 = load i32, ptr %151, align 4 - %153 = sub nsw i32 %spec.select, %152 - %154 = ashr i32 %153, 10 - store i32 %154, ptr %2, align 4 + %148 = xor i32 %spec.select89, 4 + %149 = zext nneg i32 %148 to i64 + %150 = getelementptr inbounds [8 x i32], ptr %5, i64 0, i64 %149 + %151 = load i32, ptr %150, align 4 + %152 = sub nsw i32 %spec.select, %151 + %153 = ashr i32 %152, 10 + store i32 %153, ptr %2, align 4 ret i32 %spec.select89 } diff --git a/bench/openusd/optimized/changeTracker.cpp.ll b/bench/openusd/optimized/changeTracker.cpp.ll index 61cf19857e9..bfeb35c5507 100644 --- a/bench/openusd/optimized/changeTracker.cpp.ll +++ b/bench/openusd/optimized/changeTracker.cpp.ll @@ -10339,11 +10339,11 @@ _ZNK3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfP br label %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS7_St4lessIS7_ESaIS7_EEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit _ZNK3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE13search_bucketIS4_EEPNSI_4nodeERKT_PNS1_13hash_map_baseISH_NSC_13spin_rw_mutexEE6bucketE.exit.thread: ; preds = %44, %_ZNK3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE13search_bucketIS4_EEPNSI_4nodeERKT_PNS1_13hash_map_baseISH_NSC_13spin_rw_mutexEE6bucketE.exit - %.0.lcssa.i62 = phi ptr [ %.0.lcssa.i, %_ZNK3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE13search_bucketIS4_EEPNSI_4nodeERKT_PNS1_13hash_map_baseISH_NSC_13spin_rw_mutexEE6bucketE.exit ], [ %.06.i, %44 ] + %.0.lcssa.i61 = phi ptr [ %.0.lcssa.i, %_ZNK3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE13search_bucketIS4_EEPNSI_4nodeERKT_PNS1_13hash_map_baseISH_NSC_13spin_rw_mutexEE6bucketE.exit ], [ %.06.i, %44 ] br i1 %.not40, label %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS7_St4lessIS7_ESaIS7_EEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit, label %74 74: ; preds = %_ZNK3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE13search_bucketIS4_EEPNSI_4nodeERKT_PNS1_13hash_map_baseISH_NSC_13spin_rw_mutexEE6bucketE.exit.thread - %75 = getelementptr inbounds nuw i8, ptr %.0.lcssa.i62, i64 8 + %75 = getelementptr inbounds nuw i8, ptr %.0.lcssa.i61, i64 8 %76 = load atomic i64, ptr %75 monotonic, align 8 br i1 %4, label %77, label %79 @@ -10410,7 +10410,7 @@ _ZN3tbb6detail2d113spin_rw_mutex8try_lockEv.exit.i50.us: ; preds = %.split.us _ZN3tbb6detail2d0L13machine_pauseEi.exit.i.us: ; preds = %.lr.ph.i.i.us %96 = icmp slt i32 %.sroa.0.0.us, 16 - br i1 %96, label %_ZN3tbb6detail2d014atomic_backoff13bounded_pauseEv.exit.us, label %.split86.us + br i1 %96, label %_ZN3tbb6detail2d014atomic_backoff13bounded_pauseEv.exit.us, label %.split81.us _ZN3tbb6detail2d014atomic_backoff13bounded_pauseEv.exit.us: ; preds = %_ZN3tbb6detail2d0L13machine_pauseEi.exit.i.us, %92 %97 = shl nsw i32 %.sroa.0.0.us, 1 @@ -10451,24 +10451,24 @@ _ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE11try_acquireERS3_b.exit5 _ZN3tbb6detail2d0L13machine_pauseEi.exit.i: ; preds = %.lr.ph.i.i %109 = icmp slt i32 %.sroa.0.0, 16 - br i1 %109, label %_ZN3tbb6detail2d014atomic_backoff13bounded_pauseEv.exit, label %.split86.us + br i1 %109, label %_ZN3tbb6detail2d014atomic_backoff13bounded_pauseEv.exit, label %.split81.us _ZN3tbb6detail2d014atomic_backoff13bounded_pauseEv.exit: ; preds = %105, %_ZN3tbb6detail2d0L13machine_pauseEi.exit.i %110 = shl nsw i32 %.sroa.0.0, 1 br label %.split, !llvm.loop !40 -.split86.us: ; preds = %_ZN3tbb6detail2d0L13machine_pauseEi.exit.i, %_ZN3tbb6detail2d0L13machine_pauseEi.exit.i.us +.split81.us: ; preds = %_ZN3tbb6detail2d0L13machine_pauseEi.exit.i, %_ZN3tbb6detail2d0L13machine_pauseEi.exit.i.us %111 = load ptr, ptr %8, align 8 store ptr null, ptr %8, align 8 %112 = load i8, ptr %23, align 8 %113 = trunc i8 %112 to i1 br i1 %113, label %114, label %116 -114: ; preds = %.split86.us +114: ; preds = %.split81.us %115 = atomicrmw and ptr %111, i64 -4 seq_cst, align 8 br label %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE7releaseEv.exit -116: ; preds = %.split86.us +116: ; preds = %.split81.us %117 = atomicrmw sub ptr %111, i64 4 seq_cst, align 8 br label %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE7releaseEv.exit @@ -10478,8 +10478,8 @@ _ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE7releaseEv.exit: ; preds br label %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS7_St4lessIS7_ESaIS7_EEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit _ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS7_St4lessIS7_ESaIS7_EEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit: ; preds = %60, %52, %50, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE11try_acquireERS3_b.exit51, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE11try_acquireERS3_b.exit, %_ZNK3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE13search_bucketIS4_EEPNSI_4nodeERKT_PNS1_13hash_map_baseISH_NSC_13spin_rw_mutexEE6bucketE.exit.thread, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE7releaseEv.exit - %.not64 = phi i1 [ true, %_ZNK3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE13search_bucketIS4_EEPNSI_4nodeERKT_PNS1_13hash_map_baseISH_NSC_13spin_rw_mutexEE6bucketE.exit.thread ], [ true, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE11try_acquireERS3_b.exit ], [ true, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE11try_acquireERS3_b.exit51 ], [ true, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE7releaseEv.exit ], [ false, %50 ], [ false, %52 ], [ false, %60 ] - %.0.lcssa.i63 = phi ptr [ %.0.lcssa.i62, %_ZNK3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE13search_bucketIS4_EEPNSI_4nodeERKT_PNS1_13hash_map_baseISH_NSC_13spin_rw_mutexEE6bucketE.exit.thread ], [ %.0.lcssa.i62, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE11try_acquireERS3_b.exit ], [ %.0.lcssa.i62, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE11try_acquireERS3_b.exit51 ], [ %.0.lcssa.i62, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE7releaseEv.exit ], [ null, %50 ], [ null, %52 ], [ null, %60 ] + %.not63 = phi i1 [ true, %_ZNK3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE13search_bucketIS4_EEPNSI_4nodeERKT_PNS1_13hash_map_baseISH_NSC_13spin_rw_mutexEE6bucketE.exit.thread ], [ true, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE11try_acquireERS3_b.exit ], [ true, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE11try_acquireERS3_b.exit51 ], [ true, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE7releaseEv.exit ], [ false, %50 ], [ false, %52 ], [ false, %60 ] + %.0.lcssa.i62 = phi ptr [ %.0.lcssa.i61, %_ZNK3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE13search_bucketIS4_EEPNSI_4nodeERKT_PNS1_13hash_map_baseISH_NSC_13spin_rw_mutexEE6bucketE.exit.thread ], [ %.0.lcssa.i61, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE11try_acquireERS3_b.exit ], [ %.0.lcssa.i61, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE11try_acquireERS3_b.exit51 ], [ %.0.lcssa.i61, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE7releaseEv.exit ], [ null, %50 ], [ null, %52 ], [ null, %60 ] %.1 = phi i64 [ %.058, %_ZNK3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE13search_bucketIS4_EEPNSI_4nodeERKT_PNS1_13hash_map_baseISH_NSC_13spin_rw_mutexEE6bucketE.exit.thread ], [ %.058, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE11try_acquireERS3_b.exit ], [ %.058, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE11try_acquireERS3_b.exit51 ], [ %119, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE7releaseEv.exit ], [ %.058, %50 ], [ %51, %52 ], [ %51, %60 ] %.0 = phi i32 [ 4, %_ZNK3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE13search_bucketIS4_EEPNSI_4nodeERKT_PNS1_13hash_map_baseISH_NSC_13spin_rw_mutexEE6bucketE.exit.thread ], [ 0, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE11try_acquireERS3_b.exit ], [ 0, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE11try_acquireERS3_b.exit51 ], [ 2, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE7releaseEv.exit ], [ 1, %50 ], [ 1, %52 ], [ %spec.select, %60 ] %120 = load ptr, ptr %8, align 8 @@ -10501,25 +10501,24 @@ _ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKN32pxrInternal br label %_ZN3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE15bucket_accessorD2Ev.exit54 _ZN3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE15bucket_accessorD2Ev.exit54: ; preds = %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS7_St4lessIS7_ESaIS7_EEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit, %124, %126 - switch i32 %.0, label %157 [ + switch i32 %.0, label %158 [ i32 0, label %128 i32 2, label %28 - i32 1, label %.loopexit - i32 4, label %.loopexit70 + i32 4, label %.loopexit ] 128: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE15bucket_accessorD2Ev.exit54 %129 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store ptr %.0.lcssa.i63, ptr %129, align 8 + store ptr %.0.lcssa.i62, ptr %129, align 8 %130 = getelementptr inbounds nuw i8, ptr %3, i64 24 store i64 %20, ptr %130, align 8 - br label %.loopexit70 + br label %.loopexit -.loopexit70: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE15bucket_accessorD2Ev.exit54, %128 +.loopexit: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE15bucket_accessorD2Ev.exit54, %128 %.not41 = icmp eq ptr %6, null - br i1 %.not41, label %.loopexit, label %131 + br i1 %.not41, label %157, label %131 -131: ; preds = %.loopexit70 +131: ; preds = %.loopexit %132 = getelementptr inbounds nuw i8, ptr %6, i64 24 %133 = getelementptr inbounds i8, ptr %6, i64 40 %134 = load ptr, ptr %133, align 8 @@ -10567,13 +10566,12 @@ _ZNSt3setIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt4lessIS1_ESaIS1_EED2Ev.e _ZN3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE11delete_nodeEPNS1_18hash_map_node_baseINSC_13spin_rw_mutexEEE.exit: ; preds = %_ZNSt3setIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt4lessIS1_ESaIS1_EED2Ev.exit.i.i.i.i.i, %140, %153 call void @_ZN3tbb6detail2r117deallocate_memoryEPv(ptr noundef nonnull %6) - br label %.loopexit + br label %157 -.loopexit: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE15bucket_accessorD2Ev.exit54, %.loopexit70, %_ZN3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE11delete_nodeEPNS1_18hash_map_node_baseINSC_13spin_rw_mutexEEE.exit - %.2 = phi i1 [ %.not64, %_ZN3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE11delete_nodeEPNS1_18hash_map_node_baseINSC_13spin_rw_mutexEEE.exit ], [ %.not64, %.loopexit70 ], [ false, %_ZN3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE15bucket_accessorD2Ev.exit54 ] - ret i1 %.2 +157: ; preds = %.loopexit, %_ZN3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE11delete_nodeEPNS1_18hash_map_node_baseINSC_13spin_rw_mutexEEE.exit + ret i1 %.not63 -157: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE15bucket_accessorD2Ev.exit54 +158: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIN32pxrInternal_v0_24__pxrReserved__7SdfPathESt3setIS4_St4lessIS4_ESaIS4_EENS3_15HdChangeTracker16_PathHashCompareENS0_2d113tbb_allocatorISt4pairIKS4_S9_EEEE15bucket_accessorD2Ev.exit54 unreachable } diff --git a/bench/openusd/optimized/pred_common.c.ll b/bench/openusd/optimized/pred_common.c.ll index dbd1207bc19..166316809a4 100644 --- a/bench/openusd/optimized/pred_common.c.ll +++ b/bench/openusd/optimized/pred_common.c.ll @@ -359,7 +359,7 @@ define hidden range(i32 0, 4) i32 @av1_get_intra_inter_context(ptr nocapture nou %10 = load i8, ptr %9, align 1 %11 = trunc i8 %10 to i1 %or.cond = select i1 %8, i1 %11, i1 false - br i1 %or.cond, label %12, label %28 + br i1 %or.cond, label %12, label %is_inter_block.exit28 12: ; preds = %1 %13 = getelementptr i8, ptr %3, i64 175 @@ -396,27 +396,8 @@ is_inter_block.exit25: ; preds = %is_inter_block.exit %27 = select i1 %or.cond3, i32 3, i32 %26 br label %is_inter_block.exit28 -28: ; preds = %1 - %or.cond5 = select i1 %8, i1 true, i1 %11 - br i1 %or.cond5, label %29, label %is_inter_block.exit28 - -29: ; preds = %28 - %30 = select i1 %8, ptr %3, ptr %5 - %31 = getelementptr i8, ptr %30, i64 175 - %.val.i26 = load i16, ptr %31, align 1 - %32 = and i16 %.val.i26, 128 - %.not.i27 = icmp eq i16 %32, 0 - br i1 %.not.i27, label %33, label %is_inter_block.exit28 - -33: ; preds = %29 - %34 = getelementptr inbounds nuw i8, ptr %30, i64 16 - %35 = load i8, ptr %34, align 8 - %36 = icmp sgt i8 %35, 0 - %37 = select i1 %36, i32 0, i32 2 - br label %is_inter_block.exit28 - -is_inter_block.exit28: ; preds = %33, %29, %28, %is_inter_block.exit25 - %.0 = phi i32 [ %27, %is_inter_block.exit25 ], [ 0, %28 ], [ 0, %29 ], [ %37, %33 ] +is_inter_block.exit28: ; preds = %1, %is_inter_block.exit25 + %.0 = phi i32 [ %27, %is_inter_block.exit25 ], [ 0, %1 ] ret i32 %.0 } diff --git a/bench/openusd/optimized/testJsConverter.cpp.ll b/bench/openusd/optimized/testJsConverter.cpp.ll index c3d9db6e4fe..cfb089a5348 100644 --- a/bench/openusd/optimized/testJsConverter.cpp.ll +++ b/bench/openusd/optimized/testJsConverter.cpp.ll @@ -14209,52 +14209,32 @@ define linkonce_odr dso_local void @_ZNK32pxrInternal_v0_24__pxrReserved__7JsVal tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %19, i8 0, i64 %.idx.i.i, i1 false) br label %.lr.ph.i -.lr.ph.i: ; preds = %.lr.ph.i.preheader, %_ZNSt14_Bit_referenceaSEb.exit.i - %.sroa.07.014.i = phi ptr [ %40, %_ZNSt14_Bit_referenceaSEb.exit.i ], [ %6, %.lr.ph.i.preheader ] - %.sroa.5.013.i = phi i32 [ %spec.select10.i, %_ZNSt14_Bit_referenceaSEb.exit.i ], [ 0, %.lr.ph.i.preheader ] - %.sroa.02.012.i = phi ptr [ %spec.select.i, %_ZNSt14_Bit_referenceaSEb.exit.i ], [ %19, %.lr.ph.i.preheader ] +.lr.ph.i: ; preds = %.lr.ph.i.preheader, %.noexc + %.sroa.07.014.i = phi ptr [ %33, %.noexc ], [ %6, %.lr.ph.i.preheader ] %30 = invoke noundef zeroext i1 @_ZNK32pxrInternal_v0_24__pxrReserved__7JsValue7GetBoolEv(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.07.014.i) - to label %.noexc unwind label %43 + to label %.noexc unwind label %34 .noexc: ; preds = %.lr.ph.i - %31 = zext nneg i32 %.sroa.5.013.i to i64 - %32 = shl nuw i64 1, %31 - br i1 %30, label %33, label %36 - -33: ; preds = %.noexc - %34 = load i64, ptr %.sroa.02.012.i, align 8 - %35 = or i64 %34, %32 - br label %_ZNSt14_Bit_referenceaSEb.exit.i - -36: ; preds = %.noexc - %37 = xor i64 %32, -1 - %38 = load i64, ptr %.sroa.02.012.i, align 8 - %39 = and i64 %38, %37 - br label %_ZNSt14_Bit_referenceaSEb.exit.i - -_ZNSt14_Bit_referenceaSEb.exit.i: ; preds = %36, %33 - %storemerge.i = phi i64 [ %39, %36 ], [ %35, %33 ] - store i64 %storemerge.i, ptr %.sroa.02.012.i, align 8 - %40 = getelementptr inbounds i8, ptr %.sroa.07.014.i, i64 16 - %41 = add i32 %.sroa.5.013.i, 1 - %42 = icmp eq i32 %.sroa.5.013.i, 63 - %spec.select.idx.i = select i1 %42, i64 8, i64 0 - %spec.select.i = getelementptr inbounds i8, ptr %.sroa.02.012.i, i64 %spec.select.idx.i - %spec.select10.i = select i1 %42, i32 0, i32 %41 - %.not.i = icmp eq ptr %40, %5 + %31 = load i64, ptr %19, align 8 + %32 = and i64 %31, -2 + %masksel = zext i1 %30 to i64 + %storemerge.i = or disjoint i64 %32, %masksel + store i64 %storemerge.i, ptr %19, align 8 + %33 = getelementptr inbounds i8, ptr %.sroa.07.014.i, i64 16 + %.not.i = icmp eq ptr %33, %5 br i1 %.not.i, label %.loopexit, label %.lr.ph.i, !llvm.loop !130 -43: ; preds = %.lr.ph.i - %44 = landingpad { ptr, i32 } +34: ; preds = %.lr.ph.i + %35 = landingpad { ptr, i32 } cleanup tail call void @_ZNSt6vectorIbSaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %0) #23 br label %.body -.loopexit: ; preds = %_ZNSt14_Bit_referenceaSEb.exit.i, %2 +.loopexit: ; preds = %.noexc, %2 ret void -.body: ; preds = %20, %43 - %.pn = phi { ptr, i32 } [ %44, %43 ], [ %21, %20 ] +.body: ; preds = %20, %34 + %.pn = phi { ptr, i32 } [ %35, %34 ], [ %21, %20 ] resume { ptr, i32 } %.pn } diff --git a/bench/openvdb/optimized/Mask.cc.ll b/bench/openvdb/optimized/Mask.cc.ll index 039ee34135d..17b92ffc675 100644 --- a/bench/openvdb/optimized/Mask.cc.ll +++ b/bench/openvdb/optimized/Mask.cc.ll @@ -15328,15 +15328,15 @@ search: ; preds = %search.outer, %if.t %node_list = getelementptr inbounds i8, ptr %8, i64 8 %9 = load atomic i64, ptr %node_list monotonic, align 8 %atomic-temp.i.0.i = inttoptr i64 %9 to ptr - %cmp.i106 = icmp ugt i64 %9, 63 - br i1 %cmp.i106, label %invoke.cont8.lr.ph, label %while.end + %cmp.i102 = icmp ugt i64 %9, 63 + br i1 %cmp.i102, label %invoke.cont8.lr.ph, label %while.end invoke.cont8.lr.ph: ; preds = %search %10 = load ptr, ptr %key, align 8 %11 = getelementptr inbounds i8, ptr %atomic-temp.i.0.i, i64 16 %12 = load ptr, ptr %11, align 8 - %cmp.i.i144 = icmp eq ptr %10, %12 - br i1 %cmp.i.i144, label %if.else, label %while.body + %cmp.i.i133 = icmp eq ptr %10, %12 + br i1 %cmp.i.i133, label %if.else, label %while.body invoke.cont8: ; preds = %while.body %13 = getelementptr inbounds i8, ptr %15, i64 16 @@ -15345,14 +15345,14 @@ invoke.cont8: ; preds = %while.body br i1 %cmp.i.i, label %if.else, label %while.body, !llvm.loop !172 while.body: ; preds = %invoke.cont8.lr.ph, %invoke.cont8 - %erase_node.0107145 = phi ptr [ %15, %invoke.cont8 ], [ %atomic-temp.i.0.i, %invoke.cont8.lr.ph ] - %15 = load ptr, ptr %erase_node.0107145, align 8 + %erase_node.0103134 = phi ptr [ %15, %invoke.cont8 ], [ %atomic-temp.i.0.i, %invoke.cont8.lr.ph ] + %15 = load ptr, ptr %erase_node.0103134, align 8 %cmp.i = icmp ugt ptr %15, inttoptr (i64 63 to ptr) br i1 %cmp.i, label %invoke.cont8, label %while.end, !llvm.loop !172 while.end: ; preds = %while.body, %search %erase_node.0.lcssa = phi ptr [ %atomic-temp.i.0.i, %search ], [ %15, %while.body ] - %prev.0.lcssa = phi ptr [ null, %search ], [ %erase_node.0107145, %while.body ] + %prev.0.lcssa = phi ptr [ null, %search ], [ %erase_node.0103134, %while.body ] %cmp = icmp eq ptr %erase_node.0.lcssa, null br i1 %cmp, label %if.then, label %if.else @@ -15392,13 +15392,11 @@ for.end.i.i: ; preds = %for.cond.i.i %atomic-temp.i.0.i.i.i.i = inttoptr i64 %20 to ptr %node_list.i.i = getelementptr inbounds %"struct.tbb::detail::d2::hash_map_base, 4>, 5>>>, true> *const, bool>>, tbb::detail::d1::spin_rw_mutex>::bucket", ptr %atomic-temp.i.0.i.i.i.i, i64 %sub.i.i.i, i32 1 %21 = load atomic i64, ptr %node_list.i.i acquire, align 8 - %cmp.i.i.i = icmp eq i64 %21, 3 - %spec.select = select i1 %cmp.i.i.i, i32 1, i32 2 br label %cleanup if.else: ; preds = %invoke.cont8, %invoke.cont8.lr.ph, %while.end %erase_node.093 = phi ptr [ %erase_node.0.lcssa, %while.end ], [ %atomic-temp.i.0.i, %invoke.cont8.lr.ph ], [ %15, %invoke.cont8 ] - %prev.089 = phi ptr [ %prev.0.lcssa, %while.end ], [ null, %invoke.cont8.lr.ph ], [ %erase_node.0107145, %invoke.cont8 ] + %prev.089 = phi ptr [ %prev.0.lcssa, %while.end ], [ null, %invoke.cont8.lr.ph ], [ %erase_node.0103134, %invoke.cont8 ] %22 = load i8, ptr %m_is_writer.i.i, align 8 %tobool.i = trunc i8 %22 to i1 br i1 %tobool.i, label %if.end23, label %if.end.i @@ -15595,7 +15593,7 @@ if.end33: ; preds = %if.else30, %if.then cleanup: ; preds = %for.end.i.i37, %for.end.i.i, %if.then.i, %if.then, %if.end33 %erase_node.092 = phi ptr [ %erase_node.093, %if.end33 ], [ null, %if.then ], [ null, %if.then.i ], [ null, %for.end.i.i ], [ %erase_node.093, %for.end.i.i37 ] %mask.2 = phi i64 [ %mask.1.ph, %if.end33 ], [ %mask.1.ph, %if.then ], [ %16, %if.then.i ], [ %16, %for.end.i.i ], [ %37, %for.end.i.i37 ] - %cleanup.dest.slot.0 = phi i32 [ 0, %if.end33 ], [ 1, %if.then ], [ 1, %if.then.i ], [ %spec.select, %for.end.i.i ], [ 2, %for.end.i.i37 ] + %switch = phi i1 [ true, %if.end33 ], [ false, %if.then ], [ false, %if.then.i ], [ false, %for.end.i.i ], [ false, %for.end.i.i37 ] %48 = load ptr, ptr %b, align 8 %tobool.not.i.i54 = icmp eq ptr %48, null br i1 %tobool.not.i.i54, label %_ZN3tbb6detail2d219concurrent_hash_mapIPN7openvdb5v11_04tree17ValueAccessorBaseINS5_4TreeINS5_8RootNodeINS5_12InternalNodeINS9_INS5_8LeafNodeIbLj3EEELj4EEELj5EEEEEEELb1EEEbNS0_2d116tbb_hash_compareISH_EENSI_13tbb_allocatorISt4pairIKSH_bEEEE15bucket_accessorD2Ev.exit61, label %if.then.i.i55 @@ -15615,11 +15613,7 @@ if.else.i.i.i58: ; preds = %if.then.i.i55 br label %_ZN3tbb6detail2d219concurrent_hash_mapIPN7openvdb5v11_04tree17ValueAccessorBaseINS5_4TreeINS5_8RootNodeINS5_12InternalNodeINS9_INS5_8LeafNodeIbLj3EEELj4EEELj5EEEEEEELb1EEEbNS0_2d116tbb_hash_compareISH_EENSI_13tbb_allocatorISt4pairIKSH_bEEEE15bucket_accessorD2Ev.exit61 _ZN3tbb6detail2d219concurrent_hash_mapIPN7openvdb5v11_04tree17ValueAccessorBaseINS5_4TreeINS5_8RootNodeINS5_12InternalNodeINS9_INS5_8LeafNodeIbLj3EEELj4EEELj5EEEEEEELb1EEEbNS0_2d116tbb_hash_compareISH_EENSI_13tbb_allocatorISt4pairIKSH_bEEEE15bucket_accessorD2Ev.exit61: ; preds = %cleanup, %if.then.i.i.i60, %if.else.i.i.i58 - switch i32 %cleanup.dest.slot.0, label %default.unreachable121 [ - i32 0, label %cleanup.cont - i32 2, label %restart - i32 1, label %return - ] + br i1 %switch, label %cleanup.cont, label %restart cleanup.cont: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIPN7openvdb5v11_04tree17ValueAccessorBaseINS5_4TreeINS5_8RootNodeINS5_12InternalNodeINS9_INS5_8LeafNodeIbLj3EEELj4EEELj5EEEEEEELb1EEEbNS0_2d116tbb_hash_compareISH_EENSI_13tbb_allocatorISt4pairIKSH_bEEEE15bucket_accessorD2Ev.exit61 %mutex = getelementptr inbounds i8, ptr %erase_node.092, i64 8 @@ -15680,14 +15674,7 @@ if.else.i.i.i.i: ; preds = %for.inc.i.i.i _ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit: ; preds = %_ZNSt13__atomic_baseIlE23compare_exchange_strongERllSt12memory_orderS2_.exit.i.i.i %56 = atomicrmw and ptr %mutex, i64 -4 seq_cst, align 8 call void @_ZN3tbb6detail2r117deallocate_memoryEPv(ptr noundef nonnull %erase_node.092) - br label %return - -return: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIPN7openvdb5v11_04tree17ValueAccessorBaseINS5_4TreeINS5_8RootNodeINS5_12InternalNodeINS9_INS5_8LeafNodeIbLj3EEELj4EEELj5EEEEEEELb1EEEbNS0_2d116tbb_hash_compareISH_EENSI_13tbb_allocatorISt4pairIKSH_bEEEE15bucket_accessorD2Ev.exit61, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit - %retval.2 = phi i1 [ true, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit ], [ false, %_ZN3tbb6detail2d219concurrent_hash_mapIPN7openvdb5v11_04tree17ValueAccessorBaseINS5_4TreeINS5_8RootNodeINS5_12InternalNodeINS9_INS5_8LeafNodeIbLj3EEELj4EEELj5EEEEEEELb1EEEbNS0_2d116tbb_hash_compareISH_EENSI_13tbb_allocatorISt4pairIKSH_bEEEE15bucket_accessorD2Ev.exit61 ] - ret i1 %retval.2 - -default.unreachable121: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIPN7openvdb5v11_04tree17ValueAccessorBaseINS5_4TreeINS5_8RootNodeINS5_12InternalNodeINS9_INS5_8LeafNodeIbLj3EEELj4EEELj5EEEEEEELb1EEEbNS0_2d116tbb_hash_compareISH_EENSI_13tbb_allocatorISt4pairIKSH_bEEEE15bucket_accessorD2Ev.exit61 - unreachable + ret i1 true } ; Function Attrs: mustprogress uwtable diff --git a/bench/pbrt-v4/optimized/rgb2spec_opt.cpp.ll b/bench/pbrt-v4/optimized/rgb2spec_opt.cpp.ll index 4c108fddafa..4f86db52de0 100644 --- a/bench/pbrt-v4/optimized/rgb2spec_opt.cpp.ll +++ b/bench/pbrt-v4/optimized/rgb2spec_opt.cpp.ll @@ -250,14 +250,13 @@ if.end17: ; preds = %for.end14 if.then19: ; preds = %if.end17 %arrayidx21 = getelementptr inbounds i32, ptr %P, i64 %indvars.iv70 %9 = load i32, ptr %arrayidx21, align 4 - %idxprom22 = sext i32 %imax.1 to i64 - %arrayidx23 = getelementptr inbounds i32, ptr %P, i64 %idxprom22 + %arrayidx23 = getelementptr inbounds i32, ptr %P, i64 %8 %10 = load i32, ptr %arrayidx23, align 4 store i32 %10, ptr %arrayidx21, align 4 store i32 %9, ptr %arrayidx23, align 4 %arrayidx29 = getelementptr inbounds ptr, ptr %A, i64 %indvars.iv70 %11 = load ptr, ptr %arrayidx29, align 8 - %arrayidx31 = getelementptr inbounds ptr, ptr %A, i64 %idxprom22 + %arrayidx31 = getelementptr inbounds ptr, ptr %A, i64 %8 %12 = load ptr, ptr %arrayidx31, align 8 store ptr %12, ptr %arrayidx29, align 8 store ptr %11, ptr %arrayidx31, align 8 @@ -1170,14 +1169,13 @@ if.end17.i: ; preds = %for.end14.i if.then19.i: ; preds = %if.end17.i %arrayidx21.i = getelementptr inbounds i32, ptr %P, i64 %indvars.iv70.i %13 = load i32, ptr %arrayidx21.i, align 4 - %idxprom22.i = sext i32 %imax.1.i to i64 - %arrayidx23.i = getelementptr inbounds i32, ptr %P, i64 %idxprom22.i + %arrayidx23.i = getelementptr inbounds i32, ptr %P, i64 %12 %14 = load i32, ptr %arrayidx23.i, align 4 store i32 %14, ptr %arrayidx21.i, align 4 store i32 %13, ptr %arrayidx23.i, align 4 %arrayidx29.i29 = getelementptr inbounds ptr, ptr %J, i64 %indvars.iv70.i %15 = load ptr, ptr %arrayidx29.i29, align 8 - %arrayidx31.i30 = getelementptr inbounds ptr, ptr %J, i64 %idxprom22.i + %arrayidx31.i30 = getelementptr inbounds ptr, ptr %J, i64 %12 %16 = load ptr, ptr %arrayidx31.i30, align 8 store ptr %16, ptr %arrayidx29.i29, align 8 store ptr %15, ptr %arrayidx31.i30, align 8 diff --git a/bench/php/optimized/node.ll b/bench/php/optimized/node.ll index be43c6f88cb..ae6198de8c9 100644 --- a/bench/php/optimized/node.ll +++ b/bench/php/optimized/node.ll @@ -4722,7 +4722,7 @@ define hidden void @zim_DOMNode_compareDocumentPosition(ptr nocapture noundef re %10 = load ptr, ptr getelementptr inbounds (i8, ptr @executor_globals, i64 864), align 8 %11 = icmp ne ptr %10, null call void @llvm.assume(i1 %11) - br label %145 + br label %141 12: ; preds = %2 %13 = getelementptr inbounds i8, ptr %0, i64 32 @@ -4742,7 +4742,7 @@ define hidden void @zim_DOMNode_compareDocumentPosition(ptr nocapture noundef re %24 = load ptr, ptr getelementptr inbounds (i8, ptr @executor_globals, i64 864), align 8 %25 = icmp ne ptr %24, null call void @llvm.assume(i1 %25) - br label %145 + br label %141 26: ; preds = %12 %27 = load ptr, ptr %16, align 8 @@ -4763,7 +4763,7 @@ define hidden void @zim_DOMNode_compareDocumentPosition(ptr nocapture noundef re %39 = load ptr, ptr getelementptr inbounds (i8, ptr @executor_globals, i64 864), align 8 %40 = icmp ne ptr %39, null call void @llvm.assume(i1 %40) - br label %145 + br label %141 41: ; preds = %26 %42 = load ptr, ptr %31, align 8 @@ -4774,7 +4774,7 @@ define hidden void @zim_DOMNode_compareDocumentPosition(ptr nocapture noundef re store i64 0, ptr %1, align 8 %45 = getelementptr inbounds i8, ptr %1, i64 8 store i32 4, ptr %45, align 8 - br label %145 + br label %141 46: ; preds = %41 %47 = getelementptr inbounds i8, ptr %42, i64 8 @@ -4826,7 +4826,7 @@ define hidden void @zim_DOMNode_compareDocumentPosition(ptr nocapture noundef re store i64 34, ptr %1, align 8 %69 = getelementptr inbounds i8, ptr %1, i64 8 store i32 4, ptr %69, align 8 - br label %145 + br label %141 70: ; preds = %.lr.ph %71 = call fastcc zeroext i1 @php_dom_is_equal_attr(ptr noundef %.0139176, ptr noundef %27) @@ -4836,7 +4836,7 @@ define hidden void @zim_DOMNode_compareDocumentPosition(ptr nocapture noundef re store i64 36, ptr %1, align 8 %73 = getelementptr inbounds i8, ptr %1, i64 8 store i32 4, ptr %73, align 8 - br label %145 + br label %141 .loopexit172: ; preds = %65, %63, %57, %53 %.0138 = phi ptr [ %27, %57 ], [ null, %53 ], [ %27, %63 ], [ %27, %65 ] @@ -4907,7 +4907,7 @@ define hidden void @zim_DOMNode_compareDocumentPosition(ptr nocapture noundef re store i64 10, ptr %1, align 8 %96 = getelementptr inbounds i8, ptr %1, i64 8 store i32 4, ptr %96, align 8 - br label %145 + br label %141 97: ; preds = %92 %98 = icmp eq ptr %.0138, null @@ -4923,7 +4923,7 @@ define hidden void @zim_DOMNode_compareDocumentPosition(ptr nocapture noundef re store i64 20, ptr %1, align 8 %102 = getelementptr inbounds i8, ptr %1, i64 8 store i32 4, ptr %102, align 8 - br label %145 + br label %141 103: ; preds = %99 br i1 %.0147.lcssa, label %104, label %106 @@ -4933,7 +4933,7 @@ define hidden void @zim_DOMNode_compareDocumentPosition(ptr nocapture noundef re store i64 2, ptr %1, align 8 %105 = getelementptr inbounds i8, ptr %1, i64 8 store i32 4, ptr %105, align 8 - br label %145 + br label %141 106: ; preds = %103 br i1 %.0140.lcssa, label %107, label %109 @@ -4943,7 +4943,7 @@ define hidden void @zim_DOMNode_compareDocumentPosition(ptr nocapture noundef re store i64 4, ptr %1, align 8 %108 = getelementptr inbounds i8, ptr %1, i64 8 store i32 4, ptr %108, align 8 - br label %145 + br label %141 109: ; preds = %106 %110 = icmp ugt i64 %.0142.lcssa, %.0145.lcssa @@ -5002,7 +5002,7 @@ define hidden void @zim_DOMNode_compareDocumentPosition(ptr nocapture noundef re store i64 2, ptr %1, align 8 %132 = getelementptr inbounds i8, ptr %1, i64 8 store i32 4, ptr %132, align 8 - br label %145 + br label %141 133: ; preds = %127 %.not165 = icmp eq ptr %129, null @@ -5012,30 +5012,23 @@ define hidden void @zim_DOMNode_compareDocumentPosition(ptr nocapture noundef re store i64 4, ptr %1, align 8 %135 = getelementptr inbounds i8, ptr %1, i64 8 store i32 4, ptr %135, align 8 - br label %145 + br label %141 136: ; preds = %._crit_edge, %.loopexit172 %137 = icmp eq ptr %.0, %.0133 - br i1 %137, label %138, label %140 + br i1 %137, label %138, label %139 138: ; preds = %136 call void @llvm.assume(i1 %74) - %139 = icmp ult ptr %29, %14 - br label %142 - -140: ; preds = %136 - %141 = icmp ult ptr %.0, %.0133 - br label %142 - -142: ; preds = %140, %138 - %.sink = phi i1 [ %141, %140 ], [ %139, %138 ] - %143 = select i1 %.sink, i64 35, i64 37 - store i64 %143, ptr %1, align 8 - %144 = getelementptr inbounds i8, ptr %1, i64 8 - store i32 4, ptr %144, align 8 - br label %145 - -145: ; preds = %142, %134, %131, %107, %104, %101, %95, %72, %68, %44, %33, %18, %9 + br label %139 + +139: ; preds = %136, %138 + store i64 35, ptr %1, align 8 + %140 = getelementptr inbounds i8, ptr %1, i64 8 + store i32 4, ptr %140, align 8 + br label %141 + +141: ; preds = %139, %134, %131, %107, %104, %101, %95, %72, %68, %44, %33, %18, %9 ret void } diff --git a/bench/php/optimized/zend_ini.ll b/bench/php/optimized/zend_ini.ll index 2c231b92c6c..306a25417f9 100644 --- a/bench/php/optimized/zend_ini.ll +++ b/bench/php/optimized/zend_ini.ll @@ -1237,39 +1237,11 @@ define ptr @zend_ini_string_ex(ptr noundef %0, i64 noundef %1, i32 noundef %2, p ; Function Attrs: nounwind uwtable define ptr @zend_ini_string(ptr noundef %0, i64 noundef %1, i32 noundef %2) local_unnamed_addr #0 { - %4 = load ptr, ptr getelementptr inbounds (i8, ptr @executor_globals, i64 816), align 8 - %5 = tail call ptr @zend_hash_str_find(ptr noundef %4, ptr noundef %0, i64 noundef %1) #20 - %.not.i.not = icmp eq ptr %5, null - br i1 %.not.i.not, label %zend_ini_string_ex.exit, label %6 - -6: ; preds = %3 - %7 = load ptr, ptr %5, align 8, !nonnull !4, !noundef !4 - %.not28.i = icmp eq i32 %2, 0 - br i1 %.not28.i, label %11, label %8 - -8: ; preds = %6 - %9 = getelementptr inbounds i8, ptr %7, i64 70 - %10 = load i8, ptr %9, align 2 - %.not29.i = icmp eq i8 %10, 0 - br i1 %.not29.i, label %11, label %zend_ini_string_ex.exit.sink.split - -11: ; preds = %8, %6 - br label %zend_ini_string_ex.exit.sink.split - -zend_ini_string_ex.exit.sink.split: ; preds = %8, %11 - %.sink = phi i64 [ 40, %11 ], [ 48, %8 ] - %12 = getelementptr inbounds i8, ptr %7, i64 %.sink - %13 = load ptr, ptr %12, align 8 - %.not31.i = icmp eq ptr %13, null - %14 = getelementptr inbounds i8, ptr %13, i64 24 - %spec.select.i = select i1 %.not31.i, ptr null, ptr %14 - br label %zend_ini_string_ex.exit - -zend_ini_string_ex.exit: ; preds = %zend_ini_string_ex.exit.sink.split, %3 - %.020.i = phi ptr [ null, %3 ], [ %spec.select.i, %zend_ini_string_ex.exit.sink.split ] - %.not = icmp eq ptr %.020.i, null - %spec.store.select = select i1 %.not, ptr @.str, ptr %.020.i - %.0 = select i1 %.not.i.not, ptr null, ptr %spec.store.select +zend_ini_string_ex.exit: + %3 = load ptr, ptr getelementptr inbounds (i8, ptr @executor_globals, i64 816), align 8 + %4 = tail call ptr @zend_hash_str_find(ptr noundef %3, ptr noundef %0, i64 noundef %1) #20 + %.not.i.not = icmp eq ptr %4, null + %.0 = select i1 %.not.i.not, ptr null, ptr @.str ret ptr %.0 } diff --git a/bench/postgres/optimized/network_gist.ll b/bench/postgres/optimized/network_gist.ll index eac5926bd3b..4bbe576ab40 100644 --- a/bench/postgres/optimized/network_gist.ll +++ b/bench/postgres/optimized/network_gist.ll @@ -438,12 +438,12 @@ define dso_local i64 @inet_gist_union(ptr nocapture noundef readonly %0) local_u %24 = getelementptr inbounds i8, ptr %23, i64 1 %25 = load i8, ptr %24, align 1 %26 = zext i8 %25 to i32 - %spec.select.i = tail call i32 @llvm.smin.i32(i32 %.03757.i, i32 %26) - %.144.i = tail call i32 @llvm.smax.i32(i32 %.04354.i, i32 %26) + %spec.select.i = tail call i32 @llvm.umin.i32(i32 %.03757.i, i32 %26) + %.144.i = tail call i32 @llvm.umax.i32(i32 %.04354.i, i32 %26) %27 = getelementptr inbounds i8, ptr %23, i64 2 %28 = load i8, ptr %27, align 1 %29 = zext i8 %28 to i32 - %.141.i = tail call i32 @llvm.smin.i32(i32 %.04055.i, i32 %29) + %.141.i = tail call i32 @llvm.umin.i32(i32 %.04055.i, i32 %29) %30 = getelementptr inbounds i8, ptr %23, i64 3 %31 = load i8, ptr %30, align 1 %32 = zext i8 %31 to i32 @@ -773,8 +773,8 @@ define dso_local i64 @inet_gist_picksplit(ptr nocapture noundef readonly %0) loc %32 = getelementptr inbounds i8, ptr %31, i64 1 %33 = load i8, ptr %32, align 1 %34 = zext i8 %33 to i32 - %spec.select.i = tail call i32 @llvm.smin.i32(i32 %.03757.i, i32 %34) - %.144.i = tail call i32 @llvm.smax.i32(i32 %.04354.i, i32 %34) + %spec.select.i = tail call i32 @llvm.umin.i32(i32 %.03757.i, i32 %34) + %.144.i = tail call i32 @llvm.umax.i32(i32 %.04354.i, i32 %34) %35 = getelementptr inbounds i8, ptr %31, i64 3 %36 = load i8, ptr %35, align 1 %37 = zext i8 %36 to i32 @@ -991,12 +991,12 @@ calc_inet_union_params.exit.thread: ; preds = %1, %calc_inet_union %133 = getelementptr inbounds i8, ptr %132, i64 1 %134 = load i8, ptr %133, align 1 %135 = zext i8 %134 to i32 - %spec.select.i102 = tail call i32 @llvm.smin.i32(i32 %.03754.i, i32 %135) - %.144.i103 = tail call i32 @llvm.smax.i32(i32 %.04351.i, i32 %135) + %spec.select.i102 = tail call i32 @llvm.umin.i32(i32 %.03754.i, i32 %135) + %.144.i103 = tail call i32 @llvm.umax.i32(i32 %.04351.i, i32 %135) %136 = getelementptr inbounds i8, ptr %132, i64 2 %137 = load i8, ptr %136, align 1 %138 = zext i8 %137 to i32 - %.141.i104 = tail call i32 @llvm.smin.i32(i32 %.04052.i, i32 %138) + %.141.i104 = tail call i32 @llvm.umin.i32(i32 %.04052.i, i32 %138) %139 = getelementptr inbounds i8, ptr %132, i64 3 %140 = load i8, ptr %139, align 1 %141 = zext i8 %140 to i32 @@ -1117,12 +1117,12 @@ build_inet_union_key.exit: ; preds = %167, %170 %206 = getelementptr inbounds i8, ptr %205, i64 1 %207 = load i8, ptr %206, align 1 %208 = zext i8 %207 to i32 - %spec.select.i123 = tail call i32 @llvm.smin.i32(i32 %.03754.i119, i32 %208) - %.144.i124 = tail call i32 @llvm.smax.i32(i32 %.04351.i122, i32 %208) + %spec.select.i123 = tail call i32 @llvm.umin.i32(i32 %.03754.i119, i32 %208) + %.144.i124 = tail call i32 @llvm.umax.i32(i32 %.04351.i122, i32 %208) %209 = getelementptr inbounds i8, ptr %205, i64 2 %210 = load i8, ptr %209, align 1 %211 = zext i8 %210 to i32 - %.141.i125 = tail call i32 @llvm.smin.i32(i32 %.04052.i121, i32 %211) + %.141.i125 = tail call i32 @llvm.umin.i32(i32 %.04052.i121, i32 %211) %212 = getelementptr inbounds i8, ptr %205, i64 3 %213 = load i8, ptr %212, align 1 %214 = zext i8 %213 to i32 @@ -1270,10 +1270,13 @@ declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #6 declare i8 @llvm.umin.i8(i8, i8) #7 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smin.i32(i32, i32) #7 +declare i32 @llvm.umin.i32(i32, i32) #7 + +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umax.i32(i32, i32) #7 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #7 +declare i32 @llvm.smin.i32(i32, i32) #7 attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/postgres/optimized/streamutil.ll b/bench/postgres/optimized/streamutil.ll index 5e981e67144..ba8a64cffc4 100644 --- a/bench/postgres/optimized/streamutil.ll +++ b/bench/postgres/optimized/streamutil.ll @@ -39,7 +39,6 @@ target triple = "x86_64-pc-linux-gnu" @.str.22 = private unnamed_addr constant [37 x i8] c"WAL segment size could not be parsed\00", align 1 @.str.23 = private unnamed_addr constant [3 x i8] c"MB\00", align 1 @.str.24 = private unnamed_addr constant [3 x i8] c"GB\00", align 1 -@.str.25 = private unnamed_addr constant [58 x i8] c"remote server reported invalid WAL segment size (%d byte)\00", align 1 @.str.26 = private unnamed_addr constant [59 x i8] c"remote server reported invalid WAL segment size (%d bytes)\00", align 1 @.str.27 = private unnamed_addr constant [67 x i8] c"The WAL segment size must be a power of two between 1 MB and 1 GB.\00", align 1 @.str.28 = private unnamed_addr constant [16 x i8] c"IDENTIFY_SYSTEM\00", align 1 @@ -505,7 +504,7 @@ define dso_local noundef zeroext i1 @RetrieveWalSegSize(ptr noundef %0) local_un 6: ; preds = %1 store i32 16777216, ptr @WalSegSz, align 4 - br label %40 + br label %38 7: ; preds = %1 %8 = tail call ptr @PQexec(ptr noundef %0, ptr noundef nonnull @.str.18) #15 @@ -517,7 +516,7 @@ define dso_local noundef zeroext i1 @RetrieveWalSegSize(ptr noundef %0) local_un %11 = tail call ptr @PQerrorMessage(ptr noundef %0) #15 tail call void (i32, i32, ptr, ...) @pg_log_generic(i32 noundef 4, i32 noundef 0, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.18, ptr noundef %11) #15 tail call void @PQclear(ptr noundef %8) #15 - br label %40 + br label %38 12: ; preds = %7 %13 = tail call i32 @PQntuples(ptr noundef %8) #15 @@ -534,7 +533,7 @@ define dso_local noundef zeroext i1 @RetrieveWalSegSize(ptr noundef %0) local_un %19 = tail call i32 @PQnfields(ptr noundef %8) #15 tail call void (i32, i32, ptr, ...) @pg_log_generic(i32 noundef 4, i32 noundef 0, ptr noundef nonnull @.str.20, i32 noundef %18, i32 noundef %19, i32 noundef 1, i32 noundef 1) #15 tail call void @PQclear(ptr noundef %8) #15 - br label %40 + br label %38 20: ; preds = %14 %21 = tail call ptr @PQgetvalue(ptr noundef %8, i32 noundef 0, i32 noundef 0) #15 @@ -545,7 +544,7 @@ define dso_local noundef zeroext i1 @RetrieveWalSegSize(ptr noundef %0) local_un 23: ; preds = %20 call void (i32, i32, ptr, ...) @pg_log_generic(i32 noundef 4, i32 noundef 0, ptr noundef nonnull @.str.22) #15 call void @PQclear(ptr noundef %8) #15 - br label %40 + br label %38 24: ; preds = %20 call void @PQclear(ptr noundef %8) #15 @@ -568,21 +567,19 @@ define dso_local noundef zeroext i1 @RetrieveWalSegSize(ptr noundef %0) local_un br i1 %31, label %32, label %37 32: ; preds = %28 - %33 = call range(i32 1, 32) i32 @llvm.ctpop.i32(i32 %30) + %33 = call range(i32 1, 12) i32 @llvm.ctpop.i32(i32 %30) %34 = icmp samesign ult i32 %33, 2 %35 = add nsw i32 %30, -1048576 %36 = icmp ult i32 %35, 1072693249 %or.cond3 = and i1 %34, %36 - br i1 %or.cond3, label %40, label %37 + br i1 %or.cond3, label %38, label %37 37: ; preds = %32, %28 - %38 = icmp eq i32 %30, 1 - %39 = select i1 %38, ptr @.str.25, ptr @.str.26 - call void (i32, i32, ptr, ...) @pg_log_generic(i32 noundef 4, i32 noundef 0, ptr noundef nonnull %39, i32 noundef %30) #15 + call void (i32, i32, ptr, ...) @pg_log_generic(i32 noundef 4, i32 noundef 0, ptr noundef nonnull @.str.26, i32 noundef %30) #15 call void (i32, i32, ptr, ...) @pg_log_generic(i32 noundef 4, i32 noundef 1, ptr noundef nonnull @.str.27) #15 - br label %40 + br label %38 -40: ; preds = %32, %37, %23, %17, %10, %6 +38: ; preds = %32, %37, %23, %17, %10, %6 %.017 = phi i1 [ true, %6 ], [ false, %10 ], [ false, %17 ], [ false, %23 ], [ false, %37 ], [ true, %32 ] ret i1 %.017 } diff --git a/bench/proj/optimized/gie.cpp.ll b/bench/proj/optimized/gie.cpp.ll index 4dc0358f52e..c0fcbdaf71f 100644 --- a/bench/proj/optimized/gie.cpp.ll +++ b/bench/proj/optimized/gie.cpp.ll @@ -3904,38 +3904,37 @@ _ZL6at_tagP4ffio.exit.thread: ; preds = %12, %_ZL6at_tagP4ff %21 = load i64, ptr %20, align 8 %22 = add i64 %4, 2 %23 = add i64 %22, %7 - %24 = sub i64 %23, %.023 - %25 = icmp ult i64 %21, %24 - br i1 %25, label %26, label %33 - -26: ; preds = %_ZL6at_tagP4ffio.exit.thread - %27 = shl i64 %21, 1 - %28 = tail call ptr @realloc(ptr noundef %6, i64 noundef %27) #31 - %29 = icmp eq ptr %28, null - br i1 %29, label %43, label %30 - -30: ; preds = %26 - store ptr %28, ptr %5, align 8 - %31 = load i64, ptr %20, align 8 - %32 = shl i64 %31, 1 - store i64 %32, ptr %20, align 8 - br label %33 - -33: ; preds = %30, %_ZL6at_tagP4ffio.exit.thread - %34 = phi ptr [ %28, %30 ], [ %6, %_ZL6at_tagP4ffio.exit.thread ] - %35 = getelementptr inbounds i8, ptr %34, i64 %7 - store i8 32, ptr %35, align 1 - %36 = load ptr, ptr %5, align 8 - %37 = getelementptr inbounds i8, ptr %36, i64 %7 - %38 = getelementptr inbounds i8, ptr %37, i64 1 - %39 = load ptr, ptr %2, align 8 - %40 = getelementptr inbounds i8, ptr %39, i64 %.023 - %41 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %38, ptr noundef nonnull dereferenceable(1) %40) #25 - %42 = load ptr, ptr %2, align 8 - store i8 0, ptr %42, align 1 - br label %43 - -43: ; preds = %26, %33 + %24 = icmp ult i64 %21, %23 + br i1 %24, label %25, label %32 + +25: ; preds = %_ZL6at_tagP4ffio.exit.thread + %26 = shl i64 %21, 1 + %27 = tail call ptr @realloc(ptr noundef %6, i64 noundef %26) #31 + %28 = icmp eq ptr %27, null + br i1 %28, label %42, label %29 + +29: ; preds = %25 + store ptr %27, ptr %5, align 8 + %30 = load i64, ptr %20, align 8 + %31 = shl i64 %30, 1 + store i64 %31, ptr %20, align 8 + br label %32 + +32: ; preds = %29, %_ZL6at_tagP4ffio.exit.thread + %33 = phi ptr [ %27, %29 ], [ %6, %_ZL6at_tagP4ffio.exit.thread ] + %34 = getelementptr inbounds i8, ptr %33, i64 %7 + store i8 32, ptr %34, align 1 + %35 = load ptr, ptr %5, align 8 + %36 = getelementptr inbounds i8, ptr %35, i64 %7 + %37 = getelementptr inbounds i8, ptr %36, i64 1 + %38 = load ptr, ptr %2, align 8 + %39 = getelementptr inbounds i8, ptr %38, i64 %.023 + %40 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %37, ptr noundef nonnull dereferenceable(1) %39) #25 + %41 = load ptr, ptr %2, align 8 + store i8 0, ptr %41, align 1 + br label %42 + +42: ; preds = %25, %32 ret void } diff --git a/bench/proxygen/optimized/HeaderTable.cpp.ll b/bench/proxygen/optimized/HeaderTable.cpp.ll index 16911a07636..bf0a90e0177 100644 --- a/bench/proxygen/optimized/HeaderTable.cpp.ll +++ b/bench/proxygen/optimized/HeaderTable.cpp.ll @@ -1684,11 +1684,7 @@ entry.cond.end_crit_edge: ; preds = %entry %_M_finish.i.i.phi.trans.insert = getelementptr inbounds i8, ptr %this, i64 24 %.pre = load ptr, ptr %_M_finish.i.i.phi.trans.insert, align 8 %table_.i.phi.trans.insert = getelementptr inbounds i8, ptr %this, i64 16 - %.pre23 = load ptr, ptr %table_.i.phi.trans.insert, align 8 - %.pre24 = ptrtoint ptr %.pre to i64 - %.pre25 = ptrtoint ptr %.pre23 to i64 - %.pre26 = sub i64 %.pre24, %.pre25 - %.pre27 = ashr exact i64 %.pre26, 5 + %.pre19 = load ptr, ptr %table_.i.phi.trans.insert, align 8 br label %cond.end cond.true: ; preds = %entry @@ -1712,81 +1708,34 @@ cond.true: ; preds = %entry br label %cond.end cond.end: ; preds = %entry.cond.end_crit_edge, %cond.true - %sub.ptr.div.i.i.pre-phi = phi i64 [ %.pre27, %entry.cond.end_crit_edge ], [ %sub.ptr.div.i.i.i, %cond.true ] - %cond = phi i32 [ 0, %entry.cond.end_crit_edge ], [ %conv18.i, %cond.true ] - %table_.i = getelementptr inbounds i8, ptr %this, i64 16 - %_M_finish.i.i = getelementptr inbounds i8, ptr %this, i64 24 + %4 = phi ptr [ %3, %cond.true ], [ %.pre19, %entry.cond.end_crit_edge ] + %5 = phi ptr [ %2, %cond.true ], [ %.pre, %entry.cond.end_crit_edge ] + %cond = phi i32 [ %conv18.i, %cond.true ], [ 0, %entry.cond.end_crit_edge ] %vtable = load ptr, ptr %this, align 8 %vfn = getelementptr inbounds i8, ptr %vtable, i64 40 - %4 = load ptr, ptr %vfn, align 8 - tail call void %4(ptr noundef nonnull align 8 dereferenceable(80) %this, i32 noundef %newLength) - %5 = load i32, ptr %size_, align 8 - %cmp15.not = icmp ne i32 %5, 0 + %6 = load ptr, ptr %vfn, align 8 + tail call void %6(ptr noundef nonnull align 8 dereferenceable(80) %this, i32 noundef %newLength) + %7 = load i32, ptr %size_, align 8 + %cmp15.not = icmp ne i32 %7, 0 %head_ = getelementptr inbounds i8, ptr %this, i64 44 - %6 = load i32, ptr %head_, align 4 - %cmp16 = icmp ugt i32 %cond, %6 + %8 = load i32, ptr %head_, align 4 + %cmp16 = icmp ugt i32 %cond, %8 %or.cond = select i1 %cmp15.not, i1 %cmp16, i1 false br i1 %or.cond, label %if.then, label %if.end63 if.then: ; preds = %cond.end - %conv = trunc i64 %sub.ptr.div.i.i.pre-phi to i32 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %5 to i64 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %4 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 = lshr exact i64 %sub.ptr.sub.i.i, 5 + %conv = trunc i64 %sub.ptr.div.i.i to i32 %vtable17 = load ptr, ptr %this, align 8 %vfn18 = getelementptr inbounds i8, ptr %vtable17, i64 48 - %7 = load ptr, ptr %vfn18, align 8 - tail call void %7(ptr noundef nonnull align 8 dereferenceable(80) %this, i32 noundef %cond, i32 noundef %conv, i32 noundef %newLength) - %indexNames_ = getelementptr inbounds i8, ptr %this, i64 52 - %8 = load i8, ptr %indexNames_, align 4 - %tobool = trunc i8 %8 to i1 - br i1 %tobool, label %if.then19, label %if.end63 - -if.then19: ; preds = %if.then - %names_ = getelementptr inbounds i8, ptr %this, i64 56 - %sizeAndChunkShiftAndPackedBegin_.i.i.i = getelementptr inbounds i8, ptr %this, i64 72 - %9 = load i64, ptr %sizeAndChunkShiftAndPackedBegin_.i.i.i, align 8 - %cmp.not.i.i = icmp ugt i64 %9, 255 - %10 = load ptr, ptr %names_, align 8 - br i1 %cmp.not.i.i, label %for.body.preheader, label %if.end63 - -for.body.preheader: ; preds = %if.then19 - %shr.i.i.i.i.i = lshr i64 %9, 8 - %add.ptr.i.i = getelementptr inbounds %"struct.std::pair.8", ptr %10, i64 %shr.i.i.i.i.i - br label %for.body + %9 = load ptr, ptr %vfn18, align 8 + tail call void %9(ptr noundef nonnull align 8 dereferenceable(80) %this, i32 noundef %cond, i32 noundef %conv, i32 noundef %newLength) + br label %if.end63 -for.body: ; preds = %for.body.preheader, %for.inc59 - %__begin3.sroa.0.022.pn = phi ptr [ %__begin3.sroa.0.022, %for.inc59 ], [ %add.ptr.i.i, %for.body.preheader ] - %__begin3.sroa.0.022 = getelementptr inbounds i8, ptr %__begin3.sroa.0.022.pn, i64 -32 - %second = getelementptr inbounds i8, ptr %__begin3.sroa.0.022.pn, i64 -24 - %__begin4.sroa.0.019 = load ptr, ptr %second, align 8 - %cmp.i.not20 = icmp eq ptr %__begin4.sroa.0.019, %second - br i1 %cmp.i.not20, label %for.inc59, label %for.body29 - -for.body29: ; preds = %for.body, %while.end52 - %__begin4.sroa.0.021 = phi ptr [ %__begin4.sroa.0.0, %while.end52 ], [ %__begin4.sroa.0.019, %for.body ] - %_M_storage.i.i = getelementptr inbounds i8, ptr %__begin4.sroa.0.021, i64 16 - %11 = load i32, ptr %_M_storage.i.i, align 4 - %cmp31.not = icmp ult i32 %11, %cond - br i1 %cmp31.not, label %for.inc59, label %while.end52 - -while.end52: ; preds = %for.body29 - %12 = load ptr, ptr %_M_finish.i.i, align 8 - %13 = load ptr, ptr %table_.i, align 8 - %sub.ptr.lhs.cast.i.i10 = ptrtoint ptr %12 to i64 - %sub.ptr.rhs.cast.i.i11 = ptrtoint ptr %13 to i64 - %sub.ptr.sub.i.i12 = sub i64 %sub.ptr.lhs.cast.i.i10, %sub.ptr.rhs.cast.i.i11 - %sub.ptr.div.i.i13 = lshr exact i64 %sub.ptr.sub.i.i12, 5 - %sub54 = sub nsw i64 %sub.ptr.div.i.i13, %sub.ptr.div.i.i.pre-phi - %14 = trunc i64 %sub54 to i32 - %conv57 = add i32 %11, %14 - store i32 %conv57, ptr %_M_storage.i.i, align 4 - %__begin4.sroa.0.0 = load ptr, ptr %__begin4.sroa.0.021, align 8 - %cmp.i.not = icmp eq ptr %__begin4.sroa.0.0, %second - br i1 %cmp.i.not, label %for.inc59, label %for.body29 - -for.inc59: ; preds = %for.body29, %while.end52, %for.body - %cmp.i1428 = icmp eq ptr %10, %__begin3.sroa.0.022 - br i1 %cmp.i1428, label %if.end63, label %for.body - -if.end63: ; preds = %for.inc59, %if.then19, %if.then, %cond.end +if.end63: ; preds = %if.then, %cond.end ret void } diff --git a/bench/qemu/optimized/hw_nvme_ctrl.c.ll b/bench/qemu/optimized/hw_nvme_ctrl.c.ll index 21807ac1248..b6f70d860d3 100644 --- a/bench/qemu/optimized/hw_nvme_ctrl.c.ll +++ b/bench/qemu/optimized/hw_nvme_ctrl.c.ll @@ -17130,7 +17130,7 @@ nvme_parse_pid.exit.i: ; preds = %lor.lhs.false.i %spec.select.i = select i1 %cmp.i13.i.i, i16 %retval.0.i12.i.i, i16 0 %spec.select25.i = select i1 %cmp.i13.i.i, i16 %retval.0.i.i.i, i16 0 %71 = zext i16 %spec.select.i to i64 - %72 = zext i16 %spec.select25.i to i64 + %72 = zext nneg i16 %spec.select25.i to i64 br label %if.end.i130 if.end.i130: ; preds = %nvme_parse_pid.exit.i, %lor.lhs.false.i, %if.then148 @@ -18817,7 +18817,7 @@ while.body.us: ; preds = %while.body.lr.ph, % %cond16.us = load i64, ptr %iov_len.us, align 8 %conv17.us = zext i32 %count.046.us to i64 %cond22.us = tail call i64 @llvm.umin.i64(i64 %sg_len.044.us, i64 %conv17.us) - %sub.us = sub i64 %cond16.us, %offset.045.us + %sub.us = sub nuw nsw i64 %cond16.us, %offset.045.us %cond31.us = tail call i64 @llvm.umin.i64(i64 %cond22.us, i64 %sub.us) %conv32.us = trunc nuw i64 %cond31.us to i32 %tobool33.not.us = icmp eq ptr %dst.047.us, null @@ -18834,7 +18834,6 @@ if.then34.us: ; preds = %while.body.us if.end47.us: ; preds = %if.then34.us, %while.body.us %sub49.us = sub i64 %sg_len.044.us, %cond31.us %sub50.us = sub i32 %count.046.us, %conv32.us - %add52.us = add i64 %cond31.us, %offset.045.us %cmp53.us = icmp eq i32 %sub50.us, 0 br i1 %cmp53.us, label %if.then55.us, label %if.end71.us @@ -18861,10 +18860,10 @@ cond.end68.us: ; preds = %cond.true64.us, %co if.end71.us: ; preds = %cond.end68.us, %if.end47.us %count.1.us = phi i32 [ %conv70.us, %cond.end68.us ], [ %sub50.us, %if.end47.us ] %dst.1.us = phi ptr [ %cond61.us, %cond.end68.us ], [ %dst.047.us, %if.end47.us ] - %cmp72.us = icmp eq i64 %cond16.us, %add52.us + %cmp72.us = icmp eq i64 %cond16.us, %cond31.us %inc.us = zext i1 %cmp72.us to i32 %spec.select.us = add i32 %sg_idx.043.us, %inc.us - %spec.select41.us = select i1 %cmp72.us, i64 0, i64 %add52.us + %spec.select41.us = select i1 %cmp72.us, i64 0, i64 %cond31.us %tobool7.not.us = icmp eq i64 %sub49.us, 0 br i1 %tobool7.not.us, label %while.end, label %while.body.us, !llvm.loop !50 @@ -18884,7 +18883,7 @@ while.body: ; preds = %while.body.lr.ph, % %cond16 = load i64, ptr %len, align 8 %conv17 = zext i32 %count.046 to i64 %cond22 = tail call i64 @llvm.umin.i64(i64 %sg_len.044, i64 %conv17) - %sub = sub i64 %cond16, %offset.045 + %sub = sub nuw nsw i64 %cond16, %offset.045 %cond31 = tail call i64 @llvm.umin.i64(i64 %cond22, i64 %sub) %conv32 = trunc nuw i64 %cond31 to i32 %tobool33.not = icmp eq ptr %dst.047, null @@ -18894,14 +18893,12 @@ if.then34: ; preds = %while.body %9 = getelementptr inbounds i8, ptr %dst.047, i64 8 %arrayidx39 = getelementptr %struct.ScatterGatherEntry, ptr %8, i64 %idxprom %10 = load i64, ptr %arrayidx39, align 8 - %add = add i64 %10, %offset.045 - tail call void @qemu_sglist_add(ptr noundef nonnull %9, i64 noundef %add, i64 noundef %cond31) #19 + tail call void @qemu_sglist_add(ptr noundef nonnull %9, i64 noundef %10, i64 noundef %cond31) #19 br label %if.end47 if.end47: ; preds = %if.then34, %while.body %sub49 = sub i64 %sg_len.044, %cond31 %sub50 = sub i32 %count.046, %conv32 - %add52 = add i64 %cond31, %offset.045 %cmp53 = icmp eq i32 %sub50, 0 br i1 %cmp53, label %if.then55, label %if.end71 @@ -18928,10 +18925,10 @@ cond.end68: ; preds = %cond.false66, %cond if.end71: ; preds = %cond.end68, %if.end47 %count.1 = phi i32 [ %conv70, %cond.end68 ], [ %sub50, %if.end47 ] %dst.1 = phi ptr [ %cond61, %cond.end68 ], [ %dst.047, %if.end47 ] - %cmp72 = icmp eq i64 %cond16, %add52 + %cmp72 = icmp eq i64 %cond16, %cond31 %inc = zext i1 %cmp72 to i32 %spec.select = add i32 %sg_idx.043, %inc - %spec.select41 = select i1 %cmp72, i64 0, i64 %add52 + %spec.select41 = select i1 %cmp72, i64 0, i64 %cond31 %tobool7.not = icmp eq i64 %sub49, 0 br i1 %tobool7.not, label %while.end, label %while.body, !llvm.loop !50 diff --git a/bench/qemu/optimized/hw_pci_pcie.c.ll b/bench/qemu/optimized/hw_pci_pcie.c.ll index c6fe0466a44..ccce9e8257d 100644 --- a/bench/qemu/optimized/hw_pci_pcie.c.ll +++ b/bench/qemu/optimized/hw_pci_pcie.c.ll @@ -323,10 +323,7 @@ if.end3.i: ; preds = %if.end.i %4 = load ptr, ptr %cmask2.i.i, align 16 %add.ptr7.i.i = getelementptr i8, ptr %4, i64 %idx.ext.i.i %add.ptr8.i.i = getelementptr i8, ptr %add.ptr.i.i, i64 2 - %5 = shl nuw i8 %type.0, 4 - %6 = or disjoint i8 %5, 1 - %or.i.i = zext i8 %6 to i16 - store i16 %or.i.i, ptr %add.ptr8.i.i, align 1 + store i16 1, ptr %add.ptr8.i.i, align 1 %add.ptr12.i.i = getelementptr i8, ptr %add.ptr.i.i, i64 4 store i32 32768, ptr %add.ptr12.i.i, align 1 %add.ptr13.i.i = getelementptr i8, ptr %add.ptr.i.i, i64 12 @@ -347,8 +344,8 @@ if.else: ; preds = %if.end br i1 %cmp8, label %if.then10, label %return if.then10: ; preds = %if.else - %7 = load ptr, ptr %local_err, align 8 - call void @error_report_err(ptr noundef %7) #10 + %5 = load ptr, ptr %local_err, align 8 + call void @error_report_err(ptr noundef %5) #10 br label %return return: ; preds = %if.else, %if.then10, %pcie_cap_v1_init.exit diff --git a/bench/quantlib/optimized/lmdif.ll b/bench/quantlib/optimized/lmdif.ll index e3a7e10f2b0..90cdfca2720 100644 --- a/bench/quantlib/optimized/lmdif.ll +++ b/bench/quantlib/optimized/lmdif.ll @@ -532,7 +532,7 @@ for.body24: ; preds = %for.body18, %for.bo %kmax.0322 = phi i32 [ %kmax.1, %for.body24 ], [ %.pre419, %for.body18 ] %arrayidx26 = getelementptr inbounds double, ptr %rdiag, i64 %indvars.iv362 %17 = load double, ptr %arrayidx26, align 8, !tbaa !3 - %idxprom27 = sext i32 %kmax.0322 to i64 + %idxprom27 = zext nneg i32 %kmax.0322 to i64 %arrayidx28 = getelementptr inbounds double, ptr %rdiag, i64 %idxprom27 %18 = load double, ptr %arrayidx28, align 8, !tbaa !3 %cmp29 = fcmp ogt double %17, %18 @@ -571,16 +571,15 @@ for.body41: ; preds = %for.body41.preheade for.end54: ; preds = %for.body41 %arrayidx56 = getelementptr inbounds double, ptr %rdiag, i64 %indvars.iv360 %24 = load double, ptr %arrayidx56, align 8, !tbaa !3 - %idxprom57 = sext i32 %kmax.1 to i64 - %arrayidx58 = getelementptr inbounds double, ptr %rdiag, i64 %idxprom57 + %arrayidx58 = getelementptr inbounds double, ptr %rdiag, i64 %20 store double %24, ptr %arrayidx58, align 8, !tbaa !3 %arrayidx60 = getelementptr inbounds double, ptr %wa, i64 %indvars.iv360 %25 = load double, ptr %arrayidx60, align 8, !tbaa !3 - %arrayidx62 = getelementptr inbounds double, ptr %wa, i64 %idxprom57 + %arrayidx62 = getelementptr inbounds double, ptr %wa, i64 %20 store double %25, ptr %arrayidx62, align 8, !tbaa !3 %arrayidx64 = getelementptr inbounds i32, ptr %ipvt, i64 %indvars.iv360 %26 = load i32, ptr %arrayidx64, align 4, !tbaa !9 - %arrayidx66 = getelementptr inbounds i32, ptr %ipvt, i64 %idxprom57 + %arrayidx66 = getelementptr inbounds i32, ptr %ipvt, i64 %20 %27 = load i32, ptr %arrayidx66, align 4, !tbaa !9 store i32 %27, ptr %arrayidx64, align 4, !tbaa !9 store i32 %26, ptr %arrayidx66, align 4, !tbaa !9 diff --git a/bench/quest/optimized/mt19937ar.c.ll b/bench/quest/optimized/mt19937ar.c.ll index 19614eed9eb..dafe2e964fa 100644 --- a/bench/quest/optimized/mt19937ar.c.ll +++ b/bench/quest/optimized/mt19937ar.c.ll @@ -54,81 +54,78 @@ define void @init_by_array(ptr nocapture noundef readonly %0, i32 noundef %1) lo init_genrand.exit: ; preds = %3 store i32 624, ptr @mti, align 4 %11 = tail call i32 @llvm.smax.i32(i32 %1, i32 624) - br label %12 - -12: ; preds = %init_genrand.exit, %35 - %.035 = phi i32 [ %11, %init_genrand.exit ], [ %36, %35 ] - %.02634 = phi i32 [ 0, %init_genrand.exit ], [ %spec.store.select, %35 ] - %.02733 = phi i32 [ 1, %init_genrand.exit ], [ %.128, %35 ] - %13 = sext i32 %.02733 to i64 - %14 = getelementptr inbounds [624 x i64], ptr @mt, i64 0, i64 %13 - %15 = load i64, ptr %14, align 8 - %16 = add nsw i32 %.02733, -1 - %17 = sext i32 %16 to i64 - %18 = getelementptr inbounds [624 x i64], ptr @mt, i64 0, i64 %17 - %19 = load i64, ptr %18, align 8 - %20 = lshr i64 %19, 30 - %21 = xor i64 %20, %19 - %22 = mul i64 %21, 1664525 - %23 = xor i64 %22, %15 - %24 = sext i32 %.02634 to i64 - %25 = getelementptr inbounds i64, ptr %0, i64 %24 + %12 = icmp sgt i32 %1, 1 + %spec.store.select = zext i1 %12 to i64 + br label %13 + +13: ; preds = %init_genrand.exit, %33 + %.034 = phi i32 [ %11, %init_genrand.exit ], [ %34, %33 ] + %.02633 = phi i64 [ 0, %init_genrand.exit ], [ %spec.store.select, %33 ] + %.02732 = phi i32 [ 1, %init_genrand.exit ], [ %.128, %33 ] + %14 = sext i32 %.02732 to i64 + %15 = getelementptr inbounds [624 x i64], ptr @mt, i64 0, i64 %14 + %16 = load i64, ptr %15, align 8 + %17 = add nsw i32 %.02732, -1 + %18 = sext i32 %17 to i64 + %19 = getelementptr inbounds [624 x i64], ptr @mt, i64 0, i64 %18 + %20 = load i64, ptr %19, align 8 + %21 = lshr i64 %20, 30 + %22 = xor i64 %21, %20 + %23 = mul i64 %22, 1664525 + %24 = xor i64 %23, %16 + %25 = getelementptr inbounds i64, ptr %0, i64 %.02633 %26 = load i64, ptr %25, align 8 - %27 = add i64 %26, %24 - %28 = add i64 %27, %23 - %29 = and i64 %28, 4294967295 - store i64 %29, ptr %14, align 8 - %30 = add nsw i32 %.02733, 1 - %31 = add nsw i32 %.02634, 1 - %32 = icmp sgt i32 %.02733, 622 - br i1 %32, label %33, label %35 - -33: ; preds = %12 - %34 = load i64, ptr getelementptr inbounds (i8, ptr @mt, i64 4984), align 8 - store i64 %34, ptr @mt, align 16 - br label %35 - -35: ; preds = %33, %12 - %.128 = phi i32 [ 1, %33 ], [ %30, %12 ] - %.not32 = icmp slt i32 %31, %1 - %spec.store.select = select i1 %.not32, i32 %31, i32 0 - %36 = add nsw i32 %.035, -1 - %.not = icmp eq i32 %36, 0 - br i1 %.not, label %.preheader, label %12 - -.preheader: ; preds = %35, %54 - %.137 = phi i32 [ %55, %54 ], [ 623, %35 ] - %.236 = phi i32 [ %.3, %54 ], [ %.128, %35 ] - %37 = sext i32 %.236 to i64 - %38 = getelementptr inbounds [624 x i64], ptr @mt, i64 0, i64 %37 - %39 = load i64, ptr %38, align 8 - %40 = add nsw i32 %.236, -1 - %41 = sext i32 %40 to i64 - %42 = getelementptr inbounds [624 x i64], ptr @mt, i64 0, i64 %41 - %43 = load i64, ptr %42, align 8 - %44 = lshr i64 %43, 30 - %45 = xor i64 %44, %43 - %46 = mul i64 %45, 1566083941 - %47 = xor i64 %46, %39 - %48 = sub i64 %47, %37 - %49 = and i64 %48, 4294967295 - store i64 %49, ptr %38, align 8 - %50 = add nsw i32 %.236, 1 - %51 = icmp sgt i32 %.236, 622 - br i1 %51, label %52, label %54 - -52: ; preds = %.preheader - %53 = load i64, ptr getelementptr inbounds (i8, ptr @mt, i64 4984), align 8 - store i64 %53, ptr @mt, align 16 - br label %54 - -54: ; preds = %.preheader, %52 - %.3 = phi i32 [ 1, %52 ], [ %50, %.preheader ] - %55 = add nsw i32 %.137, -1 - %.not31 = icmp eq i32 %55, 0 - br i1 %.not31, label %56, label %.preheader - -56: ; preds = %54 + %27 = add i64 %24, %26 + %28 = and i64 %27, 4294967295 + store i64 %28, ptr %15, align 8 + %29 = add nsw i32 %.02732, 1 + %30 = icmp sgt i32 %.02732, 622 + br i1 %30, label %31, label %33 + +31: ; preds = %13 + %32 = load i64, ptr getelementptr inbounds (i8, ptr @mt, i64 4984), align 8 + store i64 %32, ptr @mt, align 16 + br label %33 + +33: ; preds = %31, %13 + %.128 = phi i32 [ 1, %31 ], [ %29, %13 ] + %34 = add nsw i32 %.034, -1 + %.not = icmp eq i32 %34, 0 + br i1 %.not, label %.preheader, label %13 + +.preheader: ; preds = %33, %52 + %.136 = phi i32 [ %53, %52 ], [ 623, %33 ] + %.235 = phi i32 [ %.3, %52 ], [ %.128, %33 ] + %35 = sext i32 %.235 to i64 + %36 = getelementptr inbounds [624 x i64], ptr @mt, i64 0, i64 %35 + %37 = load i64, ptr %36, align 8 + %38 = add nsw i32 %.235, -1 + %39 = sext i32 %38 to i64 + %40 = getelementptr inbounds [624 x i64], ptr @mt, i64 0, i64 %39 + %41 = load i64, ptr %40, align 8 + %42 = lshr i64 %41, 30 + %43 = xor i64 %42, %41 + %44 = mul i64 %43, 1566083941 + %45 = xor i64 %44, %37 + %46 = sub i64 %45, %35 + %47 = and i64 %46, 4294967295 + store i64 %47, ptr %36, align 8 + %48 = add nsw i32 %.235, 1 + %49 = icmp sgt i32 %.235, 622 + br i1 %49, label %50, label %52 + +50: ; preds = %.preheader + %51 = load i64, ptr getelementptr inbounds (i8, ptr @mt, i64 4984), align 8 + store i64 %51, ptr @mt, align 16 + br label %52 + +52: ; preds = %.preheader, %50 + %.3 = phi i32 [ 1, %50 ], [ %48, %.preheader ] + %53 = add nsw i32 %.136, -1 + %.not31 = icmp eq i32 %53, 0 + br i1 %.not31, label %54, label %.preheader + +54: ; preds = %52 store i64 2147483648, ptr @mt, align 16 ret void } diff --git a/bench/raylib/optimized/rcore.c.ll b/bench/raylib/optimized/rcore.c.ll index dab26ebfa60..8d78c1ad7f1 100644 --- a/bench/raylib/optimized/rcore.c.ll +++ b/bench/raylib/optimized/rcore.c.ll @@ -35578,7 +35578,7 @@ sdefl_fnd.exit152: ; preds = %124, %127, %92 %.087366372 = phi i32 [ %spec.select, %.preheader ], [ 1, %.thread360 ] %.086367371 = phi i32 [ %spec.select108, %.preheader ], [ 1, %.thread360 ] %197 = sext i32 %.189282 to i64 - %198 = sext i32 %.086367371 to i64 + %198 = zext nneg i32 %.086367371 to i64 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph @@ -44622,7 +44622,7 @@ define noundef nonnull ptr @GetDirectoryPath(ptr noundef readonly %0) local_unna strprbrk.exit: ; preds = %7 %.not28 = icmp eq ptr %.0.i, null - br i1 %.not28, label %35, label %10 + br i1 %.not28, label %27, label %10 10: ; preds = %strprbrk.exit %11 = icmp eq ptr %.0.i, %0 @@ -44632,7 +44632,7 @@ strprbrk.exit: ; preds = %7 %13 = load i8, ptr %0, align 1 store i8 %13, ptr @GetDirectoryPath.dirPath, align 16 store i8 0, ptr getelementptr inbounds (i8, ptr @GetDirectoryPath.dirPath, i64 1), align 1 - br label %35 + br label %27 14: ; preds = %10 %15 = load i8, ptr %2, align 1 @@ -44653,32 +44653,15 @@ strprbrk.exit: ; preds = %7 %21 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0.i) #55 %.neg35 = add i64 %20, 1 %22 = sub i64 %.neg35, %21 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %.0, ptr nonnull align 1 %0, i64 %22, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %.0, ptr nonnull align 1 %0, i64 %22, i1 false) %23 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #55 %24 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0.i) #55 %25 = sub i64 %23, %24 - %26 = load i8, ptr %2, align 1 - %.not32 = icmp eq i8 %26, 58 - br i1 %.not32, label %31, label %27 - -27: ; preds = %19 - %28 = load i8, ptr %0, align 1 - %.not33 = icmp eq i8 %28, 92 - br i1 %.not33, label %31, label %29 - -29: ; preds = %27 - %.not34 = icmp eq i8 %28, 47 - %30 = select i1 %.not34, i64 0, i64 2 - br label %31 - -31: ; preds = %29, %27, %19 - %32 = phi i64 [ 0, %27 ], [ 0, %19 ], [ %30, %29 ] - %33 = add i64 %25, %32 - %34 = getelementptr inbounds [4096 x i8], ptr @GetDirectoryPath.dirPath, i64 0, i64 %33 - store i8 0, ptr %34, align 1 - br label %35 + %26 = getelementptr inbounds [4096 x i8], ptr @GetDirectoryPath.dirPath, i64 0, i64 %25 + store i8 0, ptr %26, align 1 + br label %27 -35: ; preds = %12, %31, %strprbrk.exit +27: ; preds = %12, %19, %strprbrk.exit ret ptr @GetDirectoryPath.dirPath } diff --git a/bench/recastnavigation/optimized/DetourNavMeshQuery.cpp.ll b/bench/recastnavigation/optimized/DetourNavMeshQuery.cpp.ll index bfaf8ac26da..4fd5ab9c73e 100644 --- a/bench/recastnavigation/optimized/DetourNavMeshQuery.cpp.ll +++ b/bench/recastnavigation/optimized/DetourNavMeshQuery.cpp.ll @@ -30,7 +30,6 @@ $_ZGVZ8dtVequalPKfS0_E3thr = comdat any @.str.2 = private unnamed_addr constant [11 x i8] c"m_nodePool\00", align 1 @.str.3 = private unnamed_addr constant [11 x i8] c"m_openList\00", align 1 @.str.4 = private unnamed_addr constant [8 x i8] c"curNode\00", align 1 -@.str.5 = private unnamed_addr constant [9 x i8] c"!curNode\00", align 1 @.str.6 = private unnamed_addr constant [21 x i8] c"m_query.lastBestNode\00", align 1 @.str.7 = private unnamed_addr constant [15 x i8] c"m_tinyNodePool\00", align 1 @_ZTV11dtPolyQuery = unnamed_addr constant { [5 x ptr] } { [5 x ptr] [ptr null, ptr @_ZTI11dtPolyQuery, ptr @_ZN11dtPolyQueryD1Ev, ptr @_ZN11dtPolyQueryD0Ev, ptr @__cxa_pure_virtual] }, align 8 @@ -1711,15 +1710,15 @@ _Z11dtVisfinitePKf.exit: ; preds = %22 ._crit_edge53: ; preds = %.lr.ph52, %62 %.032.lcssa6466 = phi i32 [ 1, %62 ], [ %54, %.lr.ph52 ] %.034.lcssa = phi i32 [ 0, %62 ], [ %.1, %.lr.ph52 ] - %68 = mul nsw i32 %.034.lcssa, 3 - %69 = sext i32 %68 to i64 + %68 = mul nuw nsw i32 %.034.lcssa, 3 + %69 = zext nneg i32 %68 to i64 %70 = getelementptr inbounds [18 x float], ptr %7, i64 0, i64 %69 - %71 = add nsw i32 %.034.lcssa, 1 - %72 = srem i32 %71, %.032.lcssa6466 - %73 = mul nsw i32 %72, 3 - %74 = sext i32 %73 to i64 + %71 = add nuw nsw i32 %.034.lcssa, 1 + %72 = urem i32 %71, %.032.lcssa6466 + %73 = mul nuw nsw i32 %72, 3 + %74 = zext nneg i32 %73 to i64 %75 = getelementptr inbounds [18 x float], ptr %7, i64 0, i64 %74 - %76 = sext i32 %.034.lcssa to i64 + %76 = zext nneg i32 %.034.lcssa to i64 %77 = getelementptr inbounds [6 x float], ptr %9, i64 0, i64 %76 %78 = load float, ptr %77, align 4 %79 = load float, ptr %70, align 4 @@ -3348,20 +3347,9 @@ define noundef range(i32 1073741824, 1073741841) i32 @_ZNK14dtNavMeshQuery13getP br i1 %48, label %.lr.ph60, label %._crit_edge, !llvm.loop !31 ._crit_edge: ; preds = %36, %.preheader - %.2.lcssa = phi ptr [ %.0.i47, %.preheader ], [ %.0.i49, %36 ] %49 = tail call noundef ptr @_Z21dtAssertFailGetCustomv() - %50 = icmp ne ptr %49, null - %51 = icmp ne ptr %.2.lcssa, null - %or.cond5 = and i1 %51, %50 - br i1 %or.cond5, label %52, label %53 - -52: ; preds = %._crit_edge - tail call void %49(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.1, i32 noundef 1197) - br label %53 - -53: ; preds = %52, %._crit_edge - %54 = tail call noundef i32 @llvm.smin.i32(i32 %.us-phi53, i32 %4) - store i32 %54, ptr %3, align 4 + %50 = tail call noundef i32 @llvm.smin.i32(i32 %.us-phi53, i32 %4) + store i32 %50, ptr %3, align 4 %.not45 = icmp slt i32 %.us-phi, %4 %. = select i1 %.not45, i32 1073741824, i32 1073741840 ret i32 %. diff --git a/bench/redis/optimized/tcache.ll b/bench/redis/optimized/tcache.ll index 5da2e6ad05d..5c71bf3532d 100644 --- a/bench/redis/optimized/tcache.ll +++ b/bench/redis/optimized/tcache.ll @@ -2764,20 +2764,11 @@ malloc_mutex_lock.exit: ; preds = %if.end.i, %if.then. %3 = load ptr, ptr @tcaches, align 8 %idxprom = zext i32 %ind to i64 %arrayidx = getelementptr inbounds %struct.tcaches_s, ptr %3, i64 %idxprom - %4 = load ptr, ptr %arrayidx, align 8 - %switch = icmp ult ptr %4, inttoptr (i64 2 to ptr) - %5 = load ptr, ptr @tcaches_avail, align 8 - store ptr %5, ptr %arrayidx, align 8 + %4 = load ptr, ptr @tcaches_avail, align 8 + store ptr %4, ptr %arrayidx, align 8 store ptr %arrayidx, ptr @tcaches_avail, align 8 store atomic i8 0, ptr getelementptr inbounds (i8, ptr @tcaches_mtx, i64 104) monotonic, align 8 %call1.i = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull getelementptr inbounds (i8, ptr @tcaches_mtx, i64 64)) #13 - br i1 %switch, label %if.end, label %if.then - -if.then: ; preds = %malloc_mutex_lock.exit - tail call fastcc void @tcache_destroy(ptr noundef %tsd, ptr noundef nonnull %4) - br label %if.end - -if.end: ; preds = %if.then, %malloc_mutex_lock.exit ret void } diff --git a/bench/rocksdb/optimized/filter_policy.cc.ll b/bench/rocksdb/optimized/filter_policy.cc.ll index 8f10199292b..f76a865968c 100644 --- a/bench/rocksdb/optimized/filter_policy.cc.ll +++ b/bench/rocksdb/optimized/filter_policy.cc.ll @@ -10614,11 +10614,7 @@ if.end25: ; preds = %if.end18 %cmp.i13 = icmp eq i32 %div3.i, 128 %spec.select = select i1 %cmp.i13, i32 256, i32 %div3.i %cmp28.not35 = icmp eq i32 %spec.select, 0 - br i1 %cmp28.not35, label %for.end.thread, label %for.body - -for.end.thread: ; preds = %if.end36, %if.end25 - %call3930 = tail call noundef i32 @_ZN7rocksdb6ribbon6detail34BandingConfigHelper1MaybeSupportedILNS0_25ConstructionFailureChanceE1ELm128ELb0ELb0ELb1EE11GetNumToAddEj(i32 noundef 0) - br label %if.then41 + br i1 %cmp28.not35, label %if.then41, label %for.body for.body: ; preds = %if.end25, %if.end36 %i.037 = phi i32 [ %inc, %if.end36 ], [ 0, %if.end25 ] @@ -10644,12 +10640,12 @@ if.then3.i.i: ; preds = %if.then.i.i %sub7.i.i = fsub double %div.i, %ldexp14.i.i %sub8.i.i = fsub double %ldexp.i.i, %ldexp14.i.i %div.i.i = fdiv double %sub7.i.i, %sub8.i.i - %add13.i.i = add i32 %slots.036, -127 + %add13.i.i = add nsw i32 %slots.036, -127 %conv14.i.i = uitofp i32 %add13.i.i to double %6 = tail call double @llvm.fmuladd.f64(double %div.i.i, double %conv14.i.i, double 0x3DE0000000000000) %div15.i.i = fmul double %6, 7.812500e-03 %conv16.i.i = fptoui double %div15.i.i to i32 - %div1711.i.i = lshr i32 %slots.036, 7 + %div1711.i.i = lshr exact i32 %slots.036, 7 %mul15.i.i = sub nuw nsw i32 32, %5 %sub18.i.i = mul nuw nsw i32 %mul15.i.i, %div1711.i.i %add19.i.i = sub i32 %sub18.i.i, %conv16.i.i @@ -10658,8 +10654,8 @@ if.then3.i.i: ; preds = %if.then.i.i br label %_ZN7rocksdb6ribbon31SerializableInterleavedSolutionINS0_23StandardRehasherAdapterINS_12_GLOBAL__N_141Standard128RibbonRehasherTypesAndSettingsEEEE22GetBytesForOneInFpRateEjdj.exit if.else.i.i: ; preds = %if.then.i.i - %conv22.i.i = zext i32 %slots.036 to i64 - %mul23.i.i = shl nuw nsw i64 %conv22.i.i, 2 + %7 = shl nuw nsw i32 %slots.036, 2 + %mul23.i.i = zext nneg i32 %7 to i64 br label %_ZN7rocksdb6ribbon31SerializableInterleavedSolutionINS0_23StandardRehasherAdapterINS_12_GLOBAL__N_141Standard128RibbonRehasherTypesAndSettingsEEEE22GetBytesForOneInFpRateEjdj.exit _ZN7rocksdb6ribbon31SerializableInterleavedSolutionINS0_23StandardRehasherAdapterINS_12_GLOBAL__N_141Standard128RibbonRehasherTypesAndSettingsEEEE22GetBytesForOneInFpRateEjdj.exit: ; preds = %for.body, %if.then3.i.i, %if.else.i.i @@ -10667,22 +10663,18 @@ _ZN7rocksdb6ribbon31SerializableInterleavedSolutionINS0_23StandardRehasherAdapte %cmp31 = icmp ule i64 %retval.0.i.i, %sub %cmp34 = icmp samesign ugt i32 %i.037, 1 %or.cond = select i1 %cmp31, i1 true, i1 %cmp34 - br i1 %or.cond, label %for.end, label %if.end36 + br i1 %or.cond, label %if.then41, label %if.end36 if.end36: ; preds = %_ZN7rocksdb6ribbon31SerializableInterleavedSolutionINS0_23StandardRehasherAdapterINS_12_GLOBAL__N_141Standard128RibbonRehasherTypesAndSettingsEEEE22GetBytesForOneInFpRateEjdj.exit - %sub37 = add i32 %slots.036, -1 + %sub37 = add nsw i32 %slots.036, -1 %div2.i = and i32 %sub37, -128 + %cmp.i14 = icmp eq i32 %div2.i, 128 %inc = add nuw nsw i32 %i.037, 1 - %cmp28.not = icmp ult i32 %sub37, 256 - br i1 %cmp28.not, label %for.end.thread, label %for.body - -for.end: ; preds = %_ZN7rocksdb6ribbon31SerializableInterleavedSolutionINS0_23StandardRehasherAdapterINS_12_GLOBAL__N_141Standard128RibbonRehasherTypesAndSettingsEEEE22GetBytesForOneInFpRateEjdj.exit - %call39 = tail call noundef i32 @_ZN7rocksdb6ribbon6detail34BandingConfigHelper1MaybeSupportedILNS0_25ConstructionFailureChanceE1ELm128ELb0ELb0ELb1EE11GetNumToAddEj(i32 noundef %slots.036) - %cmp40 = icmp ult i32 %slots.036, 1024 - br i1 %cmp40, label %if.then41, label %if.else48 + br i1 %cmp.i14, label %if.then41, label %for.body -if.then41: ; preds = %for.end.thread, %for.end - %call3932 = phi i32 [ %call3930, %for.end.thread ], [ %call39, %for.end ] +if.then41: ; preds = %_ZN7rocksdb6ribbon31SerializableInterleavedSolutionINS0_23StandardRehasherAdapterINS_12_GLOBAL__N_141Standard128RibbonRehasherTypesAndSettingsEEEE22GetBytesForOneInFpRateEjdj.exit, %if.end36, %if.end25 + %slots.036.lcssa.sink = phi i32 [ 0, %if.end25 ], [ 0, %if.end36 ], [ %slots.036, %_ZN7rocksdb6ribbon31SerializableInterleavedSolutionINS0_23StandardRehasherAdapterINS_12_GLOBAL__N_141Standard128RibbonRehasherTypesAndSettingsEEEE22GetBytesForOneInFpRateEjdj.exit ] + %call39 = tail call noundef i32 @_ZN7rocksdb6ribbon6detail34BandingConfigHelper1MaybeSupportedILNS0_25ConstructionFailureChanceE1ELm128ELb0ELb0ELb1EE11GetNumToAddEj(i32 noundef %slots.036.lcssa.sink) %cmp.i15 = icmp ugt i64 %bytes, 4 br i1 %cmp.i15, label %cond.true.i, label %_ZN7rocksdb12_GLOBAL__N_125FastLocalBloomBitsBuilder21ApproximateNumEntriesEm.exit @@ -10690,29 +10682,24 @@ cond.true.i: ; preds = %if.then41 %bloom_fallback_ = getelementptr inbounds i8, ptr %this, i64 304 %vtable.i = load ptr, ptr %bloom_fallback_, align 8 %vfn.i = getelementptr inbounds i8, ptr %vtable.i, i64 80 - %7 = load ptr, ptr %vfn.i, align 8 - %call.i18 = tail call noundef i64 %7(ptr noundef nonnull align 8 dereferenceable(292) %bloom_fallback_, i64 noundef %bytes) - %8 = mul i64 %call.i18, 8000 - %9 = add i64 %8, -40000 + %8 = load ptr, ptr %vfn.i, align 8 + %call.i18 = tail call noundef i64 %8(ptr noundef nonnull align 8 dereferenceable(292) %bloom_fallback_, i64 noundef %bytes) + %9 = mul i64 %call.i18, 8000 + %10 = add i64 %9, -40000 br label %_ZN7rocksdb12_GLOBAL__N_125FastLocalBloomBitsBuilder21ApproximateNumEntriesEm.exit _ZN7rocksdb12_GLOBAL__N_125FastLocalBloomBitsBuilder21ApproximateNumEntriesEm.exit: ; preds = %if.then41, %cond.true.i - %cond.i = phi i64 [ %9, %cond.true.i ], [ 0, %if.then41 ] + %cond.i = phi i64 [ %10, %cond.true.i ], [ 0, %if.then41 ] %millibits_per_key_.i = getelementptr inbounds i8, ptr %this, i64 592 - %10 = load i32, ptr %millibits_per_key_.i, align 8 - %conv.i16 = sext i32 %10 to i64 + %11 = load i32, ptr %millibits_per_key_.i, align 8 + %conv.i16 = sext i32 %11 to i64 %div.i17 = udiv i64 %cond.i, %conv.i16 - %conv43 = zext i32 %call3932 to i64 + %conv43 = zext i32 %call39 to i64 %call42.conv43 = tail call i64 @llvm.umax.i64(i64 %div.i17, i64 %conv43) br label %return -if.else48: ; preds = %for.end - %.sroa.speculated = tail call i32 @llvm.umin.i32(i32 %call39, i32 950000000) - %conv50 = zext nneg i32 %.sroa.speculated to i64 - br label %return - -return: ; preds = %_ZN7rocksdb12_GLOBAL__N_125FastLocalBloomBitsBuilder21ApproximateNumEntriesEm.exit, %if.end18, %entry, %if.else48 - %retval.0 = phi i64 [ %conv50, %if.else48 ], [ 950000000, %entry ], [ 950000000, %if.end18 ], [ %call42.conv43, %_ZN7rocksdb12_GLOBAL__N_125FastLocalBloomBitsBuilder21ApproximateNumEntriesEm.exit ] +return: ; preds = %_ZN7rocksdb12_GLOBAL__N_125FastLocalBloomBitsBuilder21ApproximateNumEntriesEm.exit, %if.end18, %entry + %retval.0 = phi i64 [ 950000000, %entry ], [ 950000000, %if.end18 ], [ %call42.conv43, %_ZN7rocksdb12_GLOBAL__N_125FastLocalBloomBitsBuilder21ApproximateNumEntriesEm.exit ] ret i64 %retval.0 } diff --git a/bench/rocksdb/optimized/locktree.cc.ll b/bench/rocksdb/optimized/locktree.cc.ll index a15939a1349..c4efb37d236 100644 --- a/bench/rocksdb/optimized/locktree.cc.ll +++ b/bench/rocksdb/optimized/locktree.cc.ll @@ -2439,19 +2439,14 @@ if.end.i.i286: ; preds = %if.then7.i.i, %call if.else.i.i258: ; preds = %_ZNK4toku3omtIPNS_18txnid_range_bufferES2_Lb0EE4sizeEv.exit.thread23.i %add.i304 = add i32 %50, 1 - %cmp.i.i252305 = icmp ult i32 %add.i304, 3 - %mul.i.i253306 = shl i32 %add.i304, 1 - %cond.i.i254307 = select i1 %cmp.i.i252305, i32 4, i32 %mul.i.i253306 br label %_ZNK4toku3omtIPNS_18txnid_range_bufferES2_Lb0EE7nweightERKNS_12omt_internal17subtree_templatedILb0EEE.exit.i261 _ZNK4toku3omtIPNS_18txnid_range_bufferES2_Lb0EE7nweightERKNS_12omt_internal17subtree_templatedILb0EEE.exit.i261: ; preds = %_ZNK4toku3omtIPNS_18txnid_range_bufferES2_Lb0EE4sizeEv.exit.i, %if.else.i.i258 - %cond.i.i254307317 = phi i32 [ %cond.i.i254307, %if.else.i.i258 ], [ 4, %_ZNK4toku3omtIPNS_18txnid_range_bufferES2_Lb0EE4sizeEv.exit.i ] %add.i304316 = phi i32 [ %add.i304, %if.else.i.i258 ], [ 1, %_ZNK4toku3omtIPNS_18txnid_range_bufferES2_Lb0EE4sizeEv.exit.i ] %idxprom.i.i.i.i267 = phi i64 [ %idxprom.i.i.i, %if.else.i.i258 ], [ 4294967295, %_ZNK4toku3omtIPNS_18txnid_range_bufferES2_Lb0EE4sizeEv.exit.i ] %retval.0.i.i262 = phi i32 [ %50, %if.else.i.i258 ], [ 0, %_ZNK4toku3omtIPNS_18txnid_range_bufferES2_Lb0EE4sizeEv.exit.i ] %58 = load i32, ptr %capacity.i.i.i, align 4 - %div5.i = lshr i32 %58, 1 - %cmp2.not.i = icmp ult i32 %div5.i, %cond.i.i254307317 + %cmp2.not.i = icmp ult i32 %58, 8 br i1 %cmp2.not.i, label %lor.lhs.false.i, label %if.else.i.i.i264 lor.lhs.false.i: ; preds = %_ZNK4toku3omtIPNS_18txnid_range_bufferES2_Lb0EE7nweightERKNS_12omt_internal17subtree_templatedILb0EEE.exit.i261 diff --git a/bench/rocksdb/optimized/write_batch_with_index.cc.ll b/bench/rocksdb/optimized/write_batch_with_index.cc.ll index 65b0a05d281..f37d1f87bd8 100644 --- a/bench/rocksdb/optimized/write_batch_with_index.cc.ll +++ b/bench/rocksdb/optimized/write_batch_with_index.cc.ll @@ -641,7 +641,6 @@ if.end: ; preds = %if.end.i, %_ZN7rock ; Function Attrs: mustprogress uwtable define linkonce_odr void @_ZN7rocksdb16WBWIIteratorImpl10SeekToLastEv(ptr noundef nonnull align 8 dereferenceable(65) %this) unnamed_addr #2 comdat align 2 personality ptr @__gxx_personality_v0 { entry: - %ref.tmp.i = alloca %"struct.rocksdb::WriteEntry", align 8 %search_entry = alloca %"struct.rocksdb::WriteBatchIndexEntry", align 8 %iterate_upper_bound_ = getelementptr inbounds i8, ptr %this, i64 56 %0 = load ptr, ptr %iterate_upper_bound_, align 8 @@ -752,7 +751,7 @@ _ZN7rocksdb8SkipListIPNS_20WriteBatchIndexEntryERKNS_25WriteBatchEntryComparator %cmp.i22 = icmp eq ptr %x.0.i.i11, %17 %spec.store.select.i = select i1 %cmp.i22, ptr null, ptr %x.0.i.i11 store ptr %spec.store.select.i, ptr %node_.i, align 8 - br label %if.end + br label %if.end10 if.else: ; preds = %_ZN7rocksdb8SkipListIPNS_20WriteBatchIndexEntryERKNS_25WriteBatchEntryComparatorEE8Iterator4SeekERKS2_.exit.thread, %_ZN7rocksdb8SkipListIPNS_20WriteBatchIndexEntryERKNS_25WriteBatchEntryComparatorEE8Iterator4SeekERKS2_.exit %node_.i35 = phi ptr [ %node_.i33, %_ZN7rocksdb8SkipListIPNS_20WriteBatchIndexEntryERKNS_25WriteBatchEntryComparatorEE8Iterator4SeekERKS2_.exit.thread ], [ %node_.i, %_ZN7rocksdb8SkipListIPNS_20WriteBatchIndexEntryERKNS_25WriteBatchEntryComparatorEE8Iterator4SeekERKS2_.exit ] @@ -803,78 +802,9 @@ _ZN7rocksdb8SkipListIPNS_20WriteBatchIndexEntryERKNS_25WriteBatchEntryComparator %cmp.i28 = icmp eq ptr %x.0.us.i.i, %26 %spec.store.select.i29 = select i1 %cmp.i28, ptr null, ptr %x.0.us.i.i store ptr %spec.store.select.i29, ptr %node_.i35, align 8 - br label %if.end - -if.end: ; preds = %_ZN7rocksdb8SkipListIPNS_20WriteBatchIndexEntryERKNS_25WriteBatchEntryComparatorEE8Iterator4PrevEv.exit, %_ZN7rocksdb8SkipListIPNS_20WriteBatchIndexEntryERKNS_25WriteBatchEntryComparatorEE8Iterator10SeekToLastEv.exit - %27 = phi ptr [ %spec.store.select.i29, %_ZN7rocksdb8SkipListIPNS_20WriteBatchIndexEntryERKNS_25WriteBatchEntryComparatorEE8Iterator4PrevEv.exit ], [ %spec.store.select.i, %_ZN7rocksdb8SkipListIPNS_20WriteBatchIndexEntryERKNS_25WriteBatchEntryComparatorEE8Iterator10SeekToLastEv.exit ] - %cmp.i.not.i = icmp eq ptr %27, null - br i1 %cmp.i.not.i, label %if.end10, label %if.end.i - -if.end.i: ; preds = %if.end - %28 = load ptr, ptr %27, align 8 - %cmp.not.i = icmp eq ptr %28, null - br i1 %cmp.not.i, label %if.end10, label %_ZNK7rocksdb16WBWIIteratorImpl27ValidRegardlessOfBoundLimitEv.exit - -_ZNK7rocksdb16WBWIIteratorImpl27ValidRegardlessOfBoundLimitEv.exit: ; preds = %if.end.i - %column_family.i30 = getelementptr inbounds i8, ptr %28, i64 8 - %29 = load i32, ptr %column_family.i30, align 8 - %column_family_id_.i = getelementptr inbounds i8, ptr %this, i64 8 - %30 = load i32, ptr %column_family_id_.i, align 8 - %cmp4.i = icmp eq i32 %29, %30 - br i1 %cmp4.i, label %if.then8, label %if.end10 - -if.then8: ; preds = %_ZNK7rocksdb16WBWIIteratorImpl27ValidRegardlessOfBoundLimitEv.exit - call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %ref.tmp.i) - %vtable.i = load ptr, ptr %this, align 8 - %vfn.i = getelementptr inbounds i8, ptr %vtable.i, i64 72 - %31 = load ptr, ptr %vfn.i, align 8 - call void %31(ptr nonnull sret(%"struct.rocksdb::WriteEntry") align 8 %ref.tmp.i, ptr noundef nonnull align 8 dereferenceable(65) %this) - %key.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - %32 = load ptr, ptr %iterate_upper_bound_, align 8 - %cmp.i.i31 = icmp eq ptr %32, null - br i1 %cmp.i.i31, label %lor.rhs.i, label %_ZNK7rocksdb16WBWIIteratorImpl19AtOrAfterUpperBoundEPKNS_5SliceE.exit.i - -_ZNK7rocksdb16WBWIIteratorImpl19AtOrAfterUpperBoundEPKNS_5SliceE.exit.i: ; preds = %if.then8 - %comparator_.i.i = getelementptr inbounds i8, ptr %this, i64 40 - %33 = load ptr, ptr %comparator_.i.i, align 8 - %34 = load i32, ptr %column_family_id_.i, align 8 - %call.i.i = call noundef ptr @_ZNK7rocksdb25WriteBatchEntryComparator13GetComparatorEj(ptr noundef nonnull align 8 dereferenceable(40) %33, i32 noundef %34) - %35 = load ptr, ptr %iterate_upper_bound_, align 8 - %vtable.i.i = load ptr, ptr %call.i.i, align 8 - %vfn.i.i = getelementptr inbounds i8, ptr %vtable.i.i, i64 208 - %36 = load ptr, ptr %vfn.i.i, align 8 - %call3.i.i = call noundef i32 %36(ptr noundef nonnull align 8 dereferenceable(48) %call.i.i, ptr noundef nonnull align 8 dereferenceable(16) %key.i, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(16) %35, i1 noundef zeroext false) - %cmp4.i.i32 = icmp sgt i32 %call3.i.i, -1 - br i1 %cmp4.i.i32, label %_ZNK7rocksdb16WBWIIteratorImpl14TestOutOfBoundEv.exit, label %lor.rhs.i - -lor.rhs.i: ; preds = %_ZNK7rocksdb16WBWIIteratorImpl19AtOrAfterUpperBoundEPKNS_5SliceE.exit.i, %if.then8 - %iterate_lower_bound_.i.i = getelementptr inbounds i8, ptr %this, i64 48 - %37 = load ptr, ptr %iterate_lower_bound_.i.i, align 8 - %cmp.i2.i = icmp eq ptr %37, null - br i1 %cmp.i2.i, label %_ZNK7rocksdb16WBWIIteratorImpl14TestOutOfBoundEv.exit, label %if.end.i3.i - -if.end.i3.i: ; preds = %lor.rhs.i - %comparator_.i4.i = getelementptr inbounds i8, ptr %this, i64 40 - %38 = load ptr, ptr %comparator_.i4.i, align 8 - %39 = load i32, ptr %column_family_id_.i, align 8 - %call.i6.i = call noundef ptr @_ZNK7rocksdb25WriteBatchEntryComparator13GetComparatorEj(ptr noundef nonnull align 8 dereferenceable(40) %38, i32 noundef %39) - %40 = load ptr, ptr %iterate_lower_bound_.i.i, align 8 - %vtable.i7.i = load ptr, ptr %call.i6.i, align 8 - %vfn.i8.i = getelementptr inbounds i8, ptr %vtable.i7.i, i64 208 - %41 = load ptr, ptr %vfn.i8.i, align 8 - %call3.i9.i = call noundef i32 %41(ptr noundef nonnull align 8 dereferenceable(48) %call.i6.i, ptr noundef nonnull align 8 dereferenceable(16) %key.i, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(16) %40, i1 noundef zeroext false) - %call3.i9.i.lobit = lshr i32 %call3.i9.i, 31 - %42 = trunc nuw nsw i32 %call3.i9.i.lobit to i8 - br label %_ZNK7rocksdb16WBWIIteratorImpl14TestOutOfBoundEv.exit - -_ZNK7rocksdb16WBWIIteratorImpl14TestOutOfBoundEv.exit: ; preds = %_ZNK7rocksdb16WBWIIteratorImpl19AtOrAfterUpperBoundEPKNS_5SliceE.exit.i, %lor.rhs.i, %if.end.i3.i - %frombool = phi i8 [ 1, %_ZNK7rocksdb16WBWIIteratorImpl19AtOrAfterUpperBoundEPKNS_5SliceE.exit.i ], [ %42, %if.end.i3.i ], [ 0, %lor.rhs.i ] - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %ref.tmp.i) - %out_of_bound_ = getelementptr inbounds i8, ptr %this, i64 64 - store i8 %frombool, ptr %out_of_bound_, align 8 br label %if.end10 -if.end10: ; preds = %if.end.i, %if.end, %_ZNK7rocksdb16WBWIIteratorImpl14TestOutOfBoundEv.exit, %_ZNK7rocksdb16WBWIIteratorImpl27ValidRegardlessOfBoundLimitEv.exit +if.end10: ; preds = %_ZN7rocksdb8SkipListIPNS_20WriteBatchIndexEntryERKNS_25WriteBatchEntryComparatorEE8Iterator10SeekToLastEv.exit, %_ZN7rocksdb8SkipListIPNS_20WriteBatchIndexEntryERKNS_25WriteBatchEntryComparatorEE8Iterator4PrevEv.exit ret void } diff --git a/bench/ruby/optimized/node.ll b/bench/ruby/optimized/node.ll index 76aab18c109..c80447ad968 100644 --- a/bench/ruby/optimized/node.ll +++ b/bench/ruby/optimized/node.ll @@ -185,7 +185,7 @@ define dso_local ptr @rb_ast_newnode(ptr nocapture noundef readonly %0, i32 noun %16 = icmp eq i64 %14, 0 %17 = select i1 %16, i64 0, i64 %15 %18 = add i64 %11, %2 - %19 = add i64 %18, %17 + %19 = add i64 %17, %18 %20 = getelementptr inbounds i8, ptr %8, i64 16 %21 = load i64, ptr %20, align 8 %22 = icmp ugt i64 %19, %21 @@ -209,30 +209,27 @@ define dso_local ptr @rb_ast_newnode(ptr nocapture noundef readonly %0, i32 noun store ptr %33, ptr %25, align 8 store ptr %25, ptr %7, align 8 %.pre.i = load i64, ptr %27, align 8 - %.pre = add i64 %.pre.i, %2 + %.pre1.i = add i64 %.pre.i, %2 br label %ast_newnode_in_bucket.exit ast_newnode_in_bucket.exit: ; preds = %4, %23 - %.pre-phi = phi i64 [ %18, %4 ], [ %.pre, %23 ] - %34 = phi i64 [ %11, %4 ], [ %.pre.i, %23 ] - %35 = phi ptr [ %8, %4 ], [ %25, %23 ] - %.0.i = phi i64 [ %17, %4 ], [ 0, %23 ] + %.pre-phi.i = phi i64 [ %.pre1.i, %23 ], [ %18, %4 ] + %34 = phi i64 [ %.pre.i, %23 ], [ %11, %4 ] + %35 = phi ptr [ %25, %23 ], [ %8, %4 ] %36 = getelementptr inbounds i8, ptr %35, i64 40 %37 = getelementptr inbounds i8, ptr %35, i64 24 %38 = getelementptr i8, ptr %36, i64 %34 - %39 = getelementptr i8, ptr %38, i64 %.0.i - %40 = add i64 %.pre-phi, %.0.i - store i64 %40, ptr %37, align 8 - %41 = load ptr, ptr %7, align 8 - %42 = getelementptr inbounds i8, ptr %41, i64 32 - %43 = load ptr, ptr %42, align 8 - %44 = getelementptr inbounds i8, ptr %41, i64 8 - %45 = load i64, ptr %44, align 8 - %46 = add i64 %45, 1 - store i64 %46, ptr %44, align 8 - %47 = getelementptr ptr, ptr %43, i64 %45 - store ptr %39, ptr %47, align 8 - ret ptr %39 + store i64 %.pre-phi.i, ptr %37, align 8 + %39 = load ptr, ptr %7, align 8 + %40 = getelementptr inbounds i8, ptr %39, i64 32 + %41 = load ptr, ptr %40, align 8 + %42 = getelementptr inbounds i8, ptr %39, i64 8 + %43 = load i64, ptr %42, align 8 + %44 = add i64 %43, 1 + store i64 %44, ptr %42, align 8 + %45 = getelementptr ptr, ptr %41, i64 %43 + store ptr %38, ptr %45, align 8 + ret ptr %38 } ; Function Attrs: nounwind sspstrong uwtable diff --git a/bench/ruby/optimized/strftime.ll b/bench/ruby/optimized/strftime.ll index 971756d954d..42fa164ad1a 100644 --- a/bench/ruby/optimized/strftime.ll +++ b/bench/ruby/optimized/strftime.ll @@ -2219,7 +2219,7 @@ rbimpl_rstring_getmem.exit2523: ; preds = %buffer_size_check.e %997 = sub i64 %995, %996 %998 = load ptr, ptr %12, align 8 %.not2193 = icmp ult ptr %80, %998 - %999 = sext i32 %993 to i64 + %999 = zext nneg i32 %993 to i64 br i1 %.not2193, label %1000, label %._crit_edge3821 1000: ; preds = %986 @@ -2230,7 +2230,7 @@ rbimpl_rstring_getmem.exit2523: ; preds = %buffer_size_check.e br i1 %.not2194, label %buffer_size_check.exit2532, label %._crit_edge3821 ._crit_edge3821: ; preds = %986, %1000 - %1004 = shl nsw i64 %999, 1 + %1004 = shl nuw nsw i64 %999, 1 %1005 = add i64 %997, %1004 %1006 = icmp ult i64 %1005, %997 %1007 = icmp ugt i64 %1005, %9 @@ -2628,14 +2628,12 @@ rb_num2long_inline.exit.thread: ; preds = %1092, %rb_num2long_ .sink.split: ; preds = %1119, %1132, %1145, %1177, %1189, %1161 %.sink = phi i32 [ %1162, %1161 ], [ %1190, %1189 ], [ %1178, %1177 ], [ %1146, %1145 ], [ %1133, %1132 ], [ %1120, %1119 ] - %.21891.ph = phi i32 [ %1153, %1161 ], [ %1182, %1189 ], [ %1170, %1177 ], [ %1137, %1145 ], [ %1124, %1132 ], [ %1111, %1119 ] %1191 = sext i32 %.sink to i64 %1192 = call fastcc ptr @resize_buffer(i64 noundef %0, ptr noundef %80, ptr noundef %11, ptr noundef %12, i64 noundef %1191, i64 noundef %9) call fastcc void @buffer_size_check(ptr noundef %1192, ptr noundef nonnull %27, i64 noundef %2, ptr noundef %.01871) br label %1193 1193: ; preds = %.sink.split, %1155, %1183, %1171, %1139, %1126, %1113 - %.21891 = phi i32 [ %1153, %1155 ], [ %1170, %1171 ], [ %1182, %1183 ], [ %1137, %1139 ], [ %1124, %1126 ], [ %1111, %1113 ], [ %.21891.ph, %.sink.split ] %.13 = phi ptr [ %80, %1155 ], [ %80, %1171 ], [ %80, %1183 ], [ %80, %1139 ], [ %80, %1126 ], [ %80, %1113 ], [ %1192, %.sink.split ] %1194 = load ptr, ptr %12, align 8 %1195 = ptrtoint ptr %1194 to i64 @@ -2644,7 +2642,7 @@ rb_num2long_inline.exit.thread: ; preds = %1092, %rb_num2long_ %1198 = icmp eq i8 %.019033423, 32 %1199 = select i1 %1198, ptr @.str.9, ptr @.str.10 %1200 = zext i1 %1198 to i32 - %1201 = add nsw i32 %.21891, %1200 + %1201 = or disjoint i32 %1200, 2 %1202 = sdiv i64 %.11882, 3600 %1203 = srem i64 %.11882, 3600 %1204 = mul nsw i64 %1202, %.01906 @@ -4502,7 +4500,7 @@ rbimpl_rstring_getmem.exit2780: ; preds = %buffer_size_check.e %2043 = sub i64 %2041, %2042 %2044 = load ptr, ptr %12, align 8 %.not2096 = icmp ult ptr %80, %2044 - %2045 = sext i32 %2039 to i64 + %2045 = zext nneg i32 %2039 to i64 br i1 %.not2096, label %2046, label %._crit_edge3806 2046: ; preds = %2032 @@ -4513,7 +4511,7 @@ rbimpl_rstring_getmem.exit2780: ; preds = %buffer_size_check.e br i1 %.not2097, label %buffer_size_check.exit2789, label %._crit_edge3806 ._crit_edge3806: ; preds = %2032, %2046 - %2050 = shl nsw i64 %2045, 1 + %2050 = shl nuw nsw i64 %2045, 1 %2051 = add i64 %2043, %2050 %2052 = icmp ult i64 %2051, %2043 %2053 = icmp ugt i64 %2051, %9 diff --git a/bench/rust-analyzer-rs/optimized/2a8hwka5xt2hybzp.ll b/bench/rust-analyzer-rs/optimized/2a8hwka5xt2hybzp.ll index 6b2229299d0..f26eba21513 100644 --- a/bench/rust-analyzer-rs/optimized/2a8hwka5xt2hybzp.ll +++ b/bench/rust-analyzer-rs/optimized/2a8hwka5xt2hybzp.ll @@ -858,7 +858,7 @@ define void @"_ZN3mbe8expander11transcriber41_$LT$impl$u20$mbe..expander..Bindin %6 = getelementptr inbounds i8, ptr %1, i64 24 %7 = load i64, ptr %6, align 8, !alias.scope !272, !noalias !275, !noundef !7 %8 = icmp eq i64 %7, 0 - br i1 %8, label %select.unfold, label %9 + br i1 %8, label %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h932065480f4e3b61E.exit", label %9 9: ; preds = %4 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5), !noalias !277 @@ -899,7 +899,7 @@ define void @"_ZN3mbe8expander11transcriber41_$LT$impl$u20$mbe..expander..Bindin %23 = icmp eq <16 x i8> %.0.copyload.i25.i.i.i, %24 = bitcast <16 x i1> %23 to i16 %.not.i.i.i.i = icmp eq i16 %24, 0 - br i1 %.not.i.i.i.i, label %39, label %select.unfold + br i1 %.not.i.i.i.i, label %39, label %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h932065480f4e3b61E.exit" .lr.ph.i.i.i: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h489ace089b124084E.exit.backedge.i.i.i", %.lr.ph.preheader.i.i.i %25 = phi i16 [ %38, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h489ace089b124084E.exit.backedge.i.i.i" ], [ %22, %.lr.ph.preheader.i.i.i ] @@ -921,7 +921,7 @@ define void @"_ZN3mbe8expander11transcriber41_$LT$impl$u20$mbe..expander..Bindin 35: ; preds = %.lr.ph.i.i.i %bcmp.i.i.i.i.i.i.i.i = call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull readonly align 1 %32, i64 %3), !alias.scope !318, !noalias !317 %36 = icmp eq i32 %bcmp.i.i.i.i.i.i.i.i, 0 - br i1 %36, label %54, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h489ace089b124084E.exit.backedge.i.i.i" + br i1 %36, label %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h932065480f4e3b61E.exit", label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h489ace089b124084E.exit.backedge.i.i.i" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h489ace089b124084E.exit.backedge.i.i.i": ; preds = %35, %.lr.ph.i.i.i %.not.i4.not.i.i.i = icmp eq i16 %25, 0 @@ -934,7 +934,7 @@ define void @"_ZN3mbe8expander11transcriber41_$LT$impl$u20$mbe..expander..Bindin %41 = add i64 %.sroa.01.0.i.i.i.i, %40 br label %17 -select.unfold: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h489ace089b124084E.exit._crit_edge.i.i.i", %4 +"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h932065480f4e3b61E.exit": ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h489ace089b124084E.exit._crit_edge.i.i.i", %35, %4 call void @llvm.lifetime.start.p0(i64 7, ptr nonnull %.sroa.4) %42 = call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17hc8fc4710b112630bE"(i64 noundef %3, i1 noundef zeroext false), !noalias !325 %43 = extractvalue { i64, ptr } %42, 1 @@ -944,9 +944,9 @@ select.unfold: ; preds = %"_ZN9hashbrown3raw2 %45 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 %46 = call noundef align 8 dereferenceable_or_null(16) ptr @__rust_alloc(i64 noundef 16, i64 noundef 8) #22 %47 = icmp eq ptr %46, null - br i1 %47, label %48, label %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h619a90b86afc776eE.exit" + br i1 %47, label %48, label %53 -48: ; preds = %select.unfold +48: ; preds = %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h932065480f4e3b61E.exit" invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 16) #23 to label %.noexc unwind label %49 @@ -966,27 +966,16 @@ select.unfold: ; preds = %"_ZN9hashbrown3raw2 "_ZN4core3ptr49drop_in_place$LT$alloc..boxed..Box$LT$str$GT$$GT$17hbac3ed97a0602907E.exit": ; preds = %52, %49 resume { ptr, i32 } %50 -"_ZN5alloc5boxed12Box$LT$T$GT$3new17h619a90b86afc776eE.exit": ; preds = %select.unfold +53: ; preds = %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h932065480f4e3b61E.exit" store ptr %43, ptr %46, align 8 - %53 = getelementptr inbounds i8, ptr %46, i64 8 - store i64 %3, ptr %53, align 8 + %54 = getelementptr inbounds i8, ptr %46, i64 8 + store i64 %3, ptr %54, align 8 store i8 1, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 1 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.4.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.4, i64 7, i1 false) %.sroa.42.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store ptr %46, ptr %.sroa.42.0..sroa_idx, align 8 call void @llvm.lifetime.end.p0(i64 7, ptr nonnull %.sroa.4) - br label %58 - -54: ; preds = %35 - %55 = getelementptr inbounds { { { i8, [23 x i8] } }, { i64, [8 x i64] } }, ptr %.val.i, i64 %30 - %56 = getelementptr inbounds i8, ptr %55, i64 -72 - %57 = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %56, ptr %57, align 8 - store i8 8, ptr %0, align 8 - br label %58 - -58: ; preds = %54, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h619a90b86afc776eE.exit" ret void } diff --git a/bench/rust-analyzer-rs/optimized/4o4li8dzw61k3tqx.ll b/bench/rust-analyzer-rs/optimized/4o4li8dzw61k3tqx.ll index ad7f44c4397..59880242d55 100644 --- a/bench/rust-analyzer-rs/optimized/4o4li8dzw61k3tqx.ll +++ b/bench/rust-analyzer-rs/optimized/4o4li8dzw61k3tqx.ll @@ -22748,34 +22748,20 @@ define void @_ZN3hir11term_search11LookupTable9new_types17h574ac0780a0563c3E(ptr %6 = getelementptr inbounds i8, ptr %1, i64 56 %7 = load i64, ptr %6, align 8, !alias.scope !5692, !noalias !5695, !noundef !9 %8 = icmp eq i64 %7, 0 - br i1 %8, label %select.unfold, label %9 + br i1 %8, label %13, label %9 9: ; preds = %3 %10 = getelementptr inbounds i8, ptr %1, i64 32 %11 = select i1 %2, i64 5871781006564002453, i64 0 %12 = call noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h023395474f256f7aE.llvm.1832755805191578588"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %10, i64 noundef %11, ptr noalias noundef nonnull readonly align 1 dereferenceable(1) %4) - %13 = icmp eq ptr %12, null - br i1 %13, label %select.unfold, label %16 + br label %13 -select.unfold: ; preds = %9, %3 +13: ; preds = %3, %9 store i64 0, ptr %0, align 8 %14 = getelementptr inbounds i8, ptr %0, i64 8 store ptr inttoptr (i64 8 to ptr), ptr %14, align 8 %15 = getelementptr inbounds i8, ptr %0, i64 16 store i64 0, ptr %15, align 8 - br label %18 - -16: ; preds = %9 - %17 = getelementptr inbounds i8, ptr %12, i64 -24 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %17, i64 24, i1 false) - store i64 0, ptr %17, align 8 - %.sroa.2.0..0.1.sroa_idx = getelementptr inbounds i8, ptr %12, i64 -16 - store ptr inttoptr (i64 8 to ptr), ptr %.sroa.2.0..0.1.sroa_idx, align 8 - %.sroa.3.0..0.1.sroa_idx = getelementptr inbounds i8, ptr %12, i64 -8 - store i64 0, ptr %.sroa.3.0..0.1.sroa_idx, align 8 - br label %18 - -18: ; preds = %16, %select.unfold ret void } diff --git a/bench/rust-analyzer-rs/optimized/5ac99zaxn7b9r9xv.ll b/bench/rust-analyzer-rs/optimized/5ac99zaxn7b9r9xv.ll index 1677ff7f688..afc896f4cb0 100644 --- a/bench/rust-analyzer-rs/optimized/5ac99zaxn7b9r9xv.ll +++ b/bench/rust-analyzer-rs/optimized/5ac99zaxn7b9r9xv.ll @@ -693,7 +693,7 @@ switch.lookup: %.sroa.613.1 = phi i32 [ %.0..sroa.613.0, %55 ], [ %.sroa.613.053, %51 ] %.sroa.613.0.insert.ext = zext i32 %.sroa.613.1 to i64 %.sroa.613.0.insert.shift = shl nuw i64 %.sroa.613.0.insert.ext, 32 - %.sroa.411.0.insert.ext = zext i8 %.sroa.411.1 to i64 + %.sroa.411.0.insert.ext = zext nneg i8 %.sroa.411.1 to i64 %.sroa.411.0.insert.shift = shl nuw nsw i64 %.sroa.411.0.insert.ext, 8 %61 = or disjoint i64 %.sroa.411.0.insert.shift, %.sroa.010.0 %62 = or disjoint i64 %.sroa.613.0.insert.shift, %.sroa.010.0 @@ -827,7 +827,7 @@ switch.lookup: %.sroa.613.1 = phi i32 [ %.0..sroa.613.0, %55 ], [ %.sroa.613.053, %51 ] %.sroa.613.0.insert.ext = zext i32 %.sroa.613.1 to i64 %.sroa.613.0.insert.shift = shl nuw i64 %.sroa.613.0.insert.ext, 32 - %.sroa.411.0.insert.ext = zext i8 %.sroa.411.1 to i64 + %.sroa.411.0.insert.ext = zext nneg i8 %.sroa.411.1 to i64 %.sroa.411.0.insert.shift = shl nuw nsw i64 %.sroa.411.0.insert.ext, 8 %61 = or disjoint i64 %.sroa.411.0.insert.shift, %.sroa.010.0 %62 = or disjoint i64 %.sroa.613.0.insert.shift, %.sroa.010.0 @@ -1071,7 +1071,7 @@ switch.lookup: %.sroa.613.1 = phi i32 [ %.0..sroa.613.0, %55 ], [ %.sroa.613.053, %51 ] %.sroa.613.0.insert.ext = zext i32 %.sroa.613.1 to i64 %.sroa.613.0.insert.shift = shl nuw i64 %.sroa.613.0.insert.ext, 32 - %.sroa.411.0.insert.ext = zext i8 %.sroa.411.1 to i64 + %.sroa.411.0.insert.ext = zext nneg i8 %.sroa.411.1 to i64 %.sroa.411.0.insert.shift = shl nuw nsw i64 %.sroa.411.0.insert.ext, 8 %.sroa.411.0.insert.insert = or disjoint i64 %.sroa.613.0.insert.shift, %.sroa.411.0.insert.shift %.sroa.010.0.insert.insert = or disjoint i64 %.sroa.411.0.insert.insert, %.sroa.010.0 @@ -1214,7 +1214,7 @@ switch.lookup: %.sroa.613.1 = phi i32 [ %.0..sroa.613.0, %55 ], [ %.sroa.613.053, %51 ] %.sroa.613.0.insert.ext = zext i32 %.sroa.613.1 to i64 %.sroa.613.0.insert.shift = shl nuw i64 %.sroa.613.0.insert.ext, 32 - %.sroa.411.0.insert.ext = zext i8 %.sroa.411.1 to i64 + %.sroa.411.0.insert.ext = zext nneg i8 %.sroa.411.1 to i64 %.sroa.411.0.insert.shift = shl nuw nsw i64 %.sroa.411.0.insert.ext, 8 %.sroa.411.0.insert.insert = or disjoint i64 %.sroa.613.0.insert.shift, %.sroa.411.0.insert.shift %.sroa.010.0.insert.insert = or disjoint i64 %.sroa.411.0.insert.insert, %.sroa.010.0 @@ -1469,7 +1469,7 @@ switch.lookup: %.sroa.613.1 = phi i32 [ %.0..sroa.613.0, %55 ], [ %.sroa.613.053, %51 ] %.sroa.613.0.insert.ext = zext i32 %.sroa.613.1 to i64 %.sroa.613.0.insert.shift = shl nuw i64 %.sroa.613.0.insert.ext, 32 - %.sroa.411.0.insert.ext = zext i8 %.sroa.411.1 to i64 + %.sroa.411.0.insert.ext = zext nneg i8 %.sroa.411.1 to i64 %.sroa.411.0.insert.shift = shl nuw nsw i64 %.sroa.411.0.insert.ext, 8 %.sroa.411.0.insert.insert = or disjoint i64 %.sroa.613.0.insert.shift, %.sroa.411.0.insert.shift %.sroa.010.0.insert.insert = or disjoint i64 %.sroa.411.0.insert.insert, %.sroa.010.0 @@ -1612,7 +1612,7 @@ switch.lookup: %.sroa.613.1 = phi i32 [ %.0..sroa.613.0, %55 ], [ %.sroa.613.053, %51 ] %.sroa.613.0.insert.ext = zext i32 %.sroa.613.1 to i64 %.sroa.613.0.insert.shift = shl nuw i64 %.sroa.613.0.insert.ext, 32 - %.sroa.411.0.insert.ext = zext i8 %.sroa.411.1 to i64 + %.sroa.411.0.insert.ext = zext nneg i8 %.sroa.411.1 to i64 %.sroa.411.0.insert.shift = shl nuw nsw i64 %.sroa.411.0.insert.ext, 8 %.sroa.411.0.insert.insert = or disjoint i64 %.sroa.613.0.insert.shift, %.sroa.411.0.insert.shift %.sroa.010.0.insert.insert = or disjoint i64 %.sroa.411.0.insert.insert, %.sroa.010.0 @@ -1756,7 +1756,7 @@ switch.lookup: %.sroa.613.1 = phi i32 [ %.0..sroa.613.0, %55 ], [ %.sroa.613.053, %51 ] %.sroa.613.0.insert.ext = zext i32 %.sroa.613.1 to i64 %.sroa.613.0.insert.shift = shl nuw i64 %.sroa.613.0.insert.ext, 32 - %.sroa.411.0.insert.ext = zext i8 %.sroa.411.1 to i64 + %.sroa.411.0.insert.ext = zext nneg i8 %.sroa.411.1 to i64 %.sroa.411.0.insert.shift = shl nuw nsw i64 %.sroa.411.0.insert.ext, 8 %.sroa.411.0.insert.insert = or disjoint i64 %.sroa.613.0.insert.shift, %.sroa.411.0.insert.shift %.sroa.010.0.insert.insert = or disjoint i64 %.sroa.411.0.insert.insert, %.sroa.010.0 @@ -2110,7 +2110,7 @@ switch.lookup: %.sroa.613.1 = phi i32 [ %.0..sroa.613.0, %55 ], [ %.sroa.613.053, %51 ] %.sroa.613.0.insert.ext = zext i32 %.sroa.613.1 to i64 %.sroa.613.0.insert.shift = shl nuw i64 %.sroa.613.0.insert.ext, 32 - %.sroa.411.0.insert.ext = zext i8 %.sroa.411.1 to i64 + %.sroa.411.0.insert.ext = zext nneg i8 %.sroa.411.1 to i64 %.sroa.411.0.insert.shift = shl nuw nsw i64 %.sroa.411.0.insert.ext, 8 %.sroa.411.0.insert.insert = or disjoint i64 %.sroa.613.0.insert.shift, %.sroa.411.0.insert.shift %.sroa.010.0.insert.insert = or disjoint i64 %.sroa.411.0.insert.insert, %.sroa.010.0 @@ -4691,6 +4691,7 @@ switch.lookup: .critedge: ; preds = %66, %103 %106 = call fastcc i64 @_ZN17ra_ap_rustc_lexer8unescape11scan_escape17h5a44938103c2f520E(ptr noalias noundef align 8 dereferenceable(16) %4, i8 noundef %2) + %.sroa.440.0.extract.shift = and i64 %106, -256 %.sroa.541.0.extract.shift = lshr i64 %106, 16 %.sroa.541.0.extract.trunc = trunc nuw i64 %.sroa.541.0.extract.shift to i48 br label %.loopexit @@ -4934,7 +4935,7 @@ _ZN17ra_ap_rustc_lexer8unescape21skip_ascii_whitespace17h02f45b36973fe20fE.exit: .loopexit: ; preds = %60, %.loopexit.loopexit, %65, %.critedge %.sroa.619.1 = phi i32 [ %.0..sroa.619.0, %65 ], [ %.sroa.619.0.ph107, %.critedge ], [ %.sroa.619.0.ph107, %.loopexit.loopexit ], [ %.sroa.619.0.ph107, %60 ] %.sroa.10.sroa.0.1 = phi i48 [ %.sroa.544.0.extract.trunc, %65 ], [ %.sroa.541.0.extract.trunc, %.critedge ], [ %.sroa.10.sroa.0.0.ph108, %.loopexit.loopexit ], [ %.sroa.10.sroa.0.0.ph108, %60 ] - %.sroa.8.0 = phi i64 [ %.sroa.34.0.insert.insert.i, %65 ], [ %106, %.critedge ], [ 1536, %.loopexit.loopexit ], [ 1024, %60 ] + %.sroa.8.0 = phi i64 [ %.sroa.34.0.insert.insert.i, %65 ], [ %.sroa.440.0.extract.shift, %.critedge ], [ 1536, %.loopexit.loopexit ], [ 1024, %60 ] %.sroa.0.0 = phi i64 [ %.sroa.03.0.insert.insert.i, %65 ], [ %106, %.critedge ], [ 2, %.loopexit.loopexit ], [ 2, %60 ] %.sroa.529.0.insert.ext = zext i48 %.sroa.10.sroa.0.1 to i64 %.sroa.529.0.insert.shift = shl nuw i64 %.sroa.529.0.insert.ext, 16 @@ -4950,7 +4951,7 @@ _ZN17ra_ap_rustc_lexer8unescape21skip_ascii_whitespace17h02f45b36973fe20fE.exit: %.not.i = icmp ne i64 %.sroa.027.0.insert.ext, 2 %or.cond18.i = and i1 %.not.i, %or.cond.i61 %.val.i = load ptr, ptr %.val.i.i, align 8, !nonnull !7, !noundef !7 - %215 = lshr i64 %.sroa.8.0, 8 + %215 = lshr exact i64 %.sroa.8.0, 8 %216 = trunc i64 %215 to i8 %.sroa.4.0.extract.trunc.i.i = select i1 %or.cond18.i, i8 20, i8 %216 call void @"_ZN6syntax10validation16validate_literal28_$u7b$$u7b$closure$u7d$$u7d$17h71b543bdaad99925E.llvm.11162169574061779932"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %.val.i, i64 noundef 1, i64 noundef %64, i8 noundef %.sroa.4.0.extract.trunc.i.i) diff --git a/bench/rustfmt-rs/optimized/2iek5i6kf8wd1vt9.ll b/bench/rustfmt-rs/optimized/2iek5i6kf8wd1vt9.ll index 07a36edd471..558a0c36db6 100644 --- a/bench/rustfmt-rs/optimized/2iek5i6kf8wd1vt9.ll +++ b/bench/rustfmt-rs/optimized/2iek5i6kf8wd1vt9.ll @@ -13433,11 +13433,11 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G } ; Function Attrs: inlinehint nonlazybind uwtable -define internal fastcc noundef align 8 dereferenceable_or_null(24) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h0b56cae4e4b4630eE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1) unnamed_addr #2 personality ptr @rust_eh_personality { +define internal fastcc noalias noundef align 8 dereferenceable_or_null(24) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$3get17h0b56cae4e4b4630eE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1) unnamed_addr #2 personality ptr @rust_eh_personality { %3 = getelementptr inbounds i8, ptr %0, i64 24 %4 = load i64, ptr %3, align 8, !noundef !4 %5 = icmp eq i64 %4, 0 - br i1 %5, label %58, label %6 + br i1 %5, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h6fe1351d50de4393E.exit", label %6 6: ; preds = %2 %7 = getelementptr inbounds i8, ptr %0, i64 32 @@ -13496,7 +13496,7 @@ define internal fastcc noundef align 8 dereferenceable_or_null(24) ptr @"_ZN9has tail call void @llvm.experimental.noalias.scope.decl(metadata !2867), !noalias !2863 %29 = load i64, ptr %gep.us.i.i, align 8, !range !107, !alias.scope !2870, !noalias !2871, !noundef !4 %.not.i.i = icmp eq i64 %29, -9223372036854775808 - br i1 %.not.i.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h8185f8962e0faaa8E.exit.thread.i.i", label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h8185f8962e0faaa8E.exit.backedge.us.us.i.i" + br i1 %.not.i.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h6fe1351d50de4393E.exit", label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h8185f8962e0faaa8E.exit.backedge.us.us.i.i" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h8185f8962e0faaa8E.exit.backedge.us.us.i.i": ; preds = %.lr.ph.us.i.i %30 = add i16 %.02136.us.us.i.i, -1 @@ -13545,7 +13545,7 @@ define internal fastcc noundef align 8 dereferenceable_or_null(24) ptr @"_ZN9has %50 = getelementptr inbounds i8, ptr %44, i64 -32 %.val5.i.i.i.i.i.i = load i64, ptr %50, align 8, !alias.scope !2870, !noalias !2871 %51 = tail call fastcc noundef zeroext i1 @"_ZN59_$LT$std..path..PathBuf$u20$as$u20$core..cmp..PartialEq$GT$2eq17h3ea3be9144ac73cfE"(ptr %.val.i.i.i.i.i.i, i64 %.val3.i.i.i.i.i.i, ptr %.val4.i.i.i.i.i.i, i64 %.val5.i.i.i.i.i.i), !noalias !2876 - br i1 %51, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h8185f8962e0faaa8E.exit.thread.i.i", label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h8185f8962e0faaa8E.exit.backedge.i.i" + br i1 %51, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h6fe1351d50de4393E.exit", label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h8185f8962e0faaa8E.exit.backedge.i.i" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h8185f8962e0faaa8E.exit.backedge.i.i": ; preds = %48, %.lr.ph.i.i %.not.not.i.i.i = icmp eq i16 %38, 0 @@ -13556,24 +13556,8 @@ define internal fastcc noundef align 8 dereferenceable_or_null(24) ptr @"_ZN9has %54 = add i64 %.sroa.01.0.i.i.i, %53 br label %.split.i.i -"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h8185f8962e0faaa8E.exit.thread.i.i": ; preds = %48, %.lr.ph.us.i.i - %.pre-phi.i.i = phi i64 [ %28, %.lr.ph.us.i.i ], [ %43, %48 ] - %55 = getelementptr inbounds { { i64, [2 x i64] }, { { i64, ptr }, i64 } }, ptr %.val, i64 %.pre-phi.i.i - br label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h6fe1351d50de4393E.exit" - -"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h6fe1351d50de4393E.exit": ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h8185f8962e0faaa8E.exit._crit_edge.split.i.i", %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h8185f8962e0faaa8E.exit._crit_edge.split.us.us.i.i", %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h8185f8962e0faaa8E.exit.thread.i.i" - %.0.i.i = phi ptr [ %55, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h8185f8962e0faaa8E.exit.thread.i.i" ], [ null, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h8185f8962e0faaa8E.exit._crit_edge.split.us.us.i.i" ], [ null, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h8185f8962e0faaa8E.exit._crit_edge.split.i.i" ] - %56 = icmp eq ptr %.0.i.i, null - %57 = getelementptr inbounds i8, ptr %.0.i.i, i64 -48 - %.0.i = select i1 %56, ptr null, ptr %57 - br label %58 - -58: ; preds = %2, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h6fe1351d50de4393E.exit" - %.04 = phi ptr [ %.0.i, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h6fe1351d50de4393E.exit" ], [ null, %2 ] - %59 = icmp eq ptr %.04, null - %60 = getelementptr inbounds i8, ptr %.04, i64 24 - %.0 = select i1 %59, ptr null, ptr %60 - ret ptr %.0 +"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h6fe1351d50de4393E.exit": ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h8185f8962e0faaa8E.exit._crit_edge.split.i.i", %48, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h8185f8962e0faaa8E.exit._crit_edge.split.us.us.i.i", %.lr.ph.us.i.i, %2 + ret ptr null } ; Function Attrs: nonlazybind uwtable diff --git a/bench/rustfmt-rs/optimized/2vbyym84o66crvo9.ll b/bench/rustfmt-rs/optimized/2vbyym84o66crvo9.ll index 4743deea7ea..cd89fcc13ea 100644 --- a/bench/rustfmt-rs/optimized/2vbyym84o66crvo9.ll +++ b/bench/rustfmt-rs/optimized/2vbyym84o66crvo9.ll @@ -18083,53 +18083,41 @@ define hidden noundef i64 @_ZN15rustfmt_nightly5lists16total_item_width17h38a687 %7 = getelementptr inbounds i8, ptr %0, i64 16 %8 = load i64, ptr %7, align 8, !noundef !10 %9 = tail call { ptr, i64 } @"_ZN4core3str21_$LT$impl$u20$str$GT$12trim_matches17h145c2abaaf4f1a22E"(ptr noalias noundef nonnull readonly align 1 %6, i64 noundef %8) - %10 = extractvalue { ptr, i64 } %9, 1 - %.not.i = icmp eq i64 %10, 0 - %11 = add i64 %10, 6 - %spec.select.i = select i1 %.not.i, i64 0, i64 %11 br label %_ZN15rustfmt_nightly5lists11comment_len17hcad0a0a33f2f8e23E.exit _ZN15rustfmt_nightly5lists11comment_len17hcad0a0a33f2f8e23E.exit: ; preds = %1, %4 - %.0.i = phi i64 [ %spec.select.i, %4 ], [ 0, %1 ] - %12 = getelementptr inbounds i8, ptr %0, i64 48 - %13 = load i64, ptr %12, align 8, !range !99, !noundef !10 - %14 = icmp eq i64 %13, -9223372036854775808 - br i1 %14, label %_ZN15rustfmt_nightly5lists11comment_len17hcad0a0a33f2f8e23E.exit21, label %15 + %10 = getelementptr inbounds i8, ptr %0, i64 48 + %11 = load i64, ptr %10, align 8, !range !99, !noundef !10 + %12 = icmp eq i64 %11, -9223372036854775808 + br i1 %12, label %_ZN15rustfmt_nightly5lists11comment_len17hcad0a0a33f2f8e23E.exit21, label %13 -15: ; preds = %_ZN15rustfmt_nightly5lists11comment_len17hcad0a0a33f2f8e23E.exit - %16 = getelementptr inbounds i8, ptr %0, i64 56 - %17 = load ptr, ptr %16, align 8, !nonnull !10, !noundef !10 - %18 = getelementptr inbounds i8, ptr %0, i64 64 - %19 = load i64, ptr %18, align 8, !noundef !10 - %20 = tail call { ptr, i64 } @"_ZN4core3str21_$LT$impl$u20$str$GT$12trim_matches17h145c2abaaf4f1a22E"(ptr noalias noundef nonnull readonly align 1 %17, i64 noundef %19) - %21 = extractvalue { ptr, i64 } %20, 1 - %.not.i18 = icmp eq i64 %21, 0 - %22 = add i64 %21, 6 - %spec.select.i19 = select i1 %.not.i18, i64 0, i64 %22 +13: ; preds = %_ZN15rustfmt_nightly5lists11comment_len17hcad0a0a33f2f8e23E.exit + %14 = getelementptr inbounds i8, ptr %0, i64 56 + %15 = load ptr, ptr %14, align 8, !nonnull !10, !noundef !10 + %16 = getelementptr inbounds i8, ptr %0, i64 64 + %17 = load i64, ptr %16, align 8, !noundef !10 + %18 = tail call { ptr, i64 } @"_ZN4core3str21_$LT$impl$u20$str$GT$12trim_matches17h145c2abaaf4f1a22E"(ptr noalias noundef nonnull readonly align 1 %15, i64 noundef %17) br label %_ZN15rustfmt_nightly5lists11comment_len17hcad0a0a33f2f8e23E.exit21 -_ZN15rustfmt_nightly5lists11comment_len17hcad0a0a33f2f8e23E.exit21: ; preds = %_ZN15rustfmt_nightly5lists11comment_len17hcad0a0a33f2f8e23E.exit, %15 - %.0.i20 = phi i64 [ %spec.select.i19, %15 ], [ 0, %_ZN15rustfmt_nightly5lists11comment_len17hcad0a0a33f2f8e23E.exit ] - %23 = getelementptr inbounds i8, ptr %0, i64 24 - %24 = load i64, ptr %23, align 8, !range !99, !noundef !10 - %25 = icmp eq i64 %24, -9223372036854775808 +_ZN15rustfmt_nightly5lists11comment_len17hcad0a0a33f2f8e23E.exit21: ; preds = %_ZN15rustfmt_nightly5lists11comment_len17hcad0a0a33f2f8e23E.exit, %13 + %19 = getelementptr inbounds i8, ptr %0, i64 24 + %20 = load i64, ptr %19, align 8, !range !99, !noundef !10 + %21 = icmp eq i64 %20, -9223372036854775808 tail call void @llvm.experimental.noalias.scope.decl(metadata !2755) - br i1 %25, label %"_ZN4core6option15Option$LT$T$GT$6map_or17hff0ed6bc6d418b5dE.exit", label %26 - -26: ; preds = %_ZN15rustfmt_nightly5lists11comment_len17hcad0a0a33f2f8e23E.exit21 - %27 = getelementptr inbounds i8, ptr %0, i64 32 - %.val.i = load ptr, ptr %27, align 8, !alias.scope !2755, !nonnull !10, !noundef !10 - %28 = getelementptr inbounds i8, ptr %0, i64 40 - %.val3.i = load i64, ptr %28, align 8, !alias.scope !2755, !noundef !10 - %29 = getelementptr inbounds i8, ptr %.val.i, i64 %.val3.i - %30 = tail call noundef i64 @_ZN4core4iter6traits8iterator8Iterator4fold17h03edcd25a6097e97E.llvm.13396924176064657314(ptr noundef nonnull readonly align 1 %.val.i, ptr noundef nonnull readonly %29, i64 noundef 0), !noalias !2755 + br i1 %21, label %"_ZN4core6option15Option$LT$T$GT$6map_or17hff0ed6bc6d418b5dE.exit", label %22 + +22: ; preds = %_ZN15rustfmt_nightly5lists11comment_len17hcad0a0a33f2f8e23E.exit21 + %23 = getelementptr inbounds i8, ptr %0, i64 32 + %.val.i = load ptr, ptr %23, align 8, !alias.scope !2755, !nonnull !10, !noundef !10 + %24 = getelementptr inbounds i8, ptr %0, i64 40 + %.val3.i = load i64, ptr %24, align 8, !alias.scope !2755, !noundef !10 + %25 = getelementptr inbounds i8, ptr %.val.i, i64 %.val3.i + %26 = tail call noundef i64 @_ZN4core4iter6traits8iterator8Iterator4fold17h03edcd25a6097e97E.llvm.13396924176064657314(ptr noundef nonnull readonly align 1 %.val.i, ptr noundef nonnull readonly %25, i64 noundef 0), !noalias !2755 br label %"_ZN4core6option15Option$LT$T$GT$6map_or17hff0ed6bc6d418b5dE.exit" -"_ZN4core6option15Option$LT$T$GT$6map_or17hff0ed6bc6d418b5dE.exit": ; preds = %_ZN15rustfmt_nightly5lists11comment_len17hcad0a0a33f2f8e23E.exit21, %26 - %.0.i22 = phi i64 [ %30, %26 ], [ 0, %_ZN15rustfmt_nightly5lists11comment_len17hcad0a0a33f2f8e23E.exit21 ] - %31 = add i64 %.0.i20, %.0.i - %32 = add i64 %31, %.0.i22 - ret i64 %32 +"_ZN4core6option15Option$LT$T$GT$6map_or17hff0ed6bc6d418b5dE.exit": ; preds = %_ZN15rustfmt_nightly5lists11comment_len17hcad0a0a33f2f8e23E.exit21, %22 + %.0.i22 = phi i64 [ %26, %22 ], [ 0, %_ZN15rustfmt_nightly5lists11comment_len17hcad0a0a33f2f8e23E.exit21 ] + ret i64 %.0.i22 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(readwrite, inaccessiblemem: none) uwtable diff --git a/bench/sentencepiece/optimized/builder.cc.ll b/bench/sentencepiece/optimized/builder.cc.ll index 3169ec8e977..2e4faeb995b 100644 --- a/bench/sentencepiece/optimized/builder.cc.ll +++ b/bench/sentencepiece/optimized/builder.cc.ll @@ -20060,9 +20060,7 @@ _ZN5Darts7Details22DoubleArrayBuilderUnit10set_offsetEj.exit: ; preds = %68 %133 = and i32 %132, 1 %.not.i = icmp eq i32 %133, 0 %134 = add i32 %.0, 1 - %.not4145 = icmp eq i32 %134, 0 - %.not41 = or i1 %.not4145, %.not.i - br i1 %.not41, label %.loopexit, label %121, !llvm.loop !303 + br i1 %.not.i, label %.loopexit, label %121, !llvm.loop !303 .loopexit: ; preds = %129, %_ZN5Darts7Details22DoubleArrayBuilderUnit10set_offsetEj.exit ret void @@ -20363,7 +20361,7 @@ _ZN5Darts7Details8AutoPoolIhE6resizeEm.exit: ; preds = %4, %.lr.ph.preheade 15: ; preds = %.lr.ph, %_ZN5Darts7Details8AutoPoolIhE6appendERKh.exit %.044 = phi i32 [ %13, %.lr.ph ], [ %33, %_ZN5Darts7Details8AutoPoolIhE6appendERKh.exit ] - %16 = zext i32 %.044 to i64 + %16 = zext nneg i32 %.044 to i64 %17 = load ptr, ptr %14, align 8 %18 = getelementptr inbounds i8, ptr %17, i64 %16 %19 = load i8, ptr %18, align 1 @@ -20390,10 +20388,8 @@ _ZN5Darts7Details8AutoPoolIhE6appendERKh.exit: ; preds = %15, %23 %31 = load i32, ptr %30, align 4 %32 = and i32 %31, 1 %.not.i = icmp eq i32 %32, 0 - %33 = add i32 %.044, 1 - %.not61 = icmp eq i32 %33, 0 - %.not = or i1 %.not.i, %.not61 - br i1 %.not, label %select.unfold._crit_edge, label %15 + %33 = add nuw nsw i32 %.044, 1 + br i1 %.not.i, label %select.unfold._crit_edge, label %15 select.unfold._crit_edge: ; preds = %_ZN5Darts7Details8AutoPoolIhE6appendERKh.exit, %_ZN5Darts7Details8AutoPoolIhE6resizeEm.exit %34 = getelementptr inbounds i8, ptr %0, i64 72 @@ -20528,8 +20524,8 @@ _ZN5Darts7Details22DoubleArrayBuilderUnit10set_offsetEj.exit: ; preds = %_ZNK5Da %storemerge.i = or i32 %100, %.pn.i store i32 %storemerge.i, ptr %98, align 4 %105 = load i64, ptr %6, align 8 - %.not48 = icmp eq i64 %105, 0 - br i1 %.not48, label %._crit_edge, label %.lr.ph47 + %.not = icmp eq i64 %105, 0 + br i1 %.not, label %._crit_edge, label %.lr.ph47 .lr.ph47: ; preds = %_ZN5Darts7Details22DoubleArrayBuilderUnit10set_offsetEj.exit %106 = load ptr, ptr %8, align 8 @@ -20607,7 +20603,7 @@ _ZN5Darts7Details18DoubleArrayBuilder10reserve_idEj.exit: ; preds = %._crit_edge %150 = load ptr, ptr %110, align 8 %151 = getelementptr inbounds %"class.Darts::Details::DoubleArrayBuilderExtraUnit", ptr %150, i64 %.pre-phi11.i, i32 2 store i8 1, ptr %151, align 4 - %152 = zext i32 %.146 to i64 + %152 = zext nneg i32 %.146 to i64 %153 = load ptr, ptr %111, align 8 %154 = getelementptr inbounds i8, ptr %153, i64 %152 %155 = load i8, ptr %154, align 1 @@ -20648,7 +20644,7 @@ _ZN5Darts7Details18DoubleArrayBuilder10reserve_idEj.exit: ; preds = %._crit_edge %180 = load i32, ptr %179, align 4 %181 = and i32 %180, 1 %.not.i35 = icmp eq i32 %181, 0 - %182 = add i32 %.146, 1 + %182 = add nuw nsw i32 %.146, 1 %183 = select i1 %.not.i35, i32 0, i32 %182 %184 = add nuw i64 %.03045, 1 %185 = load i64, ptr %6, align 8 diff --git a/bench/slurm/optimized/job_scheduler.ll b/bench/slurm/optimized/job_scheduler.ll index 3e5c995a100..9baf7cdb651 100644 --- a/bench/slurm/optimized/job_scheduler.ll +++ b/bench/slurm/optimized/job_scheduler.ll @@ -8166,14 +8166,13 @@ define internal fastcc range(i32 0, 2030) i32 @_valid_feature_list(ptr nocapture .lr.ph: ; preds = %17 %20 = getelementptr inbounds i8, ptr %0, i64 216 - br label %._crit_edge105 + br label %._crit_edge104 -._crit_edge105: ; preds = %.lr.ph, %95 +._crit_edge104: ; preds = %.lr.ph, %95 %21 = phi ptr [ %19, %.lr.ph ], [ %99, %95 ] - %.0104 = phi i1 [ false, %.lr.ph ], [ %.2, %95 ] - %.061103 = phi i1 [ false, %.lr.ph ], [ %spec.select94, %95 ] - %.064102 = phi i32 [ 0, %.lr.ph ], [ %.4, %95 ] - %.067101 = phi i32 [ 0, %.lr.ph ], [ %.269, %95 ] + %.0103 = phi i1 [ false, %.lr.ph ], [ %.2, %95 ] + %.061102 = phi i1 [ false, %.lr.ph ], [ %spec.select94, %95 ] + %.064101 = phi i32 [ 0, %.lr.ph ], [ %.4, %95 ] %.070100 = phi i32 [ 0, %.lr.ph ], [ %.272, %95 ] %22 = getelementptr inbounds i8, ptr %21, i64 14 %23 = load i8, ptr %22, align 2 @@ -8184,12 +8183,10 @@ define internal fastcc range(i32 0, 2030) i32 @_valid_feature_list(ptr nocapture %27 = zext i16 %26 to i32 %28 = add nuw nsw i32 %27, 1 %.171 = select i1 %switch, i32 %28, i32 %.070100 - %spec.select = tail call i32 @llvm.smax.i32(i32 %.067101, i32 %27) - %.269 = tail call i32 @llvm.umin.i32(i32 %spec.select, i32 %27) - %29 = icmp eq i32 %.064102, 0 + %29 = icmp eq i32 %.064101, 0 br i1 %29, label %30, label %50 -30: ; preds = %._crit_edge105 +30: ; preds = %._crit_edge104 %.b85 = load i1, ptr @_valid_feature_list.ignore_prefer_val, align 1 br i1 %.b85, label %31, label %35 @@ -8235,8 +8232,8 @@ _valid_node_feature.exit.thread: ; preds = %41 tail call void (i32, ptr, ...) @log_var(i32 noundef 4, ptr noundef nonnull @.str.130, ptr noundef %3, ptr noundef %49, ptr noundef nonnull %4) #16 br label %50 -50: ; preds = %_valid_node_feature.exit.thread, %48, %45, %31, %._crit_edge105 - %.165 = phi i32 [ 2029, %48 ], [ 2029, %45 ], [ 0, %31 ], [ %.064102, %._crit_edge105 ], [ 0, %_valid_node_feature.exit.thread ] +50: ; preds = %_valid_node_feature.exit.thread, %48, %45, %31, %._crit_edge104 + %.165 = phi i32 [ 2029, %48 ], [ 2029, %45 ], [ 0, %31 ], [ %.064101, %._crit_edge104 ], [ 0, %_valid_node_feature.exit.thread ] %51 = load i8, ptr %22, align 2 %52 = icmp eq i8 %51, 3 br i1 %52, label %53, label %61 @@ -8286,7 +8283,7 @@ thread-pre-split: ; preds = %53, %59, %56 72: ; preds = %67, %70, %64, %61 %.3 = phi i32 [ %.266, %64 ], [ %.266, %61 ], [ 2029, %70 ], [ 2029, %67 ] - %73 = icmp sgt i32 %.171, %.269 + %73 = icmp sgt i32 %.171, %27 br i1 %73, label %74, label %95 74: ; preds = %72 @@ -8296,7 +8293,7 @@ thread-pre-split: ; preds = %53, %59, %56 br i1 %switch96, label %95, label %77 77: ; preds = %74 - br i1 %.061103, label %78, label %86 + br i1 %.061102, label %78, label %86 78: ; preds = %77 %79 = getelementptr inbounds i8, ptr %21, i64 12 @@ -8316,7 +8313,7 @@ thread-pre-split: ; preds = %53, %59, %56 86: ; preds = %81, %84, %78, %77 %.5 = phi i32 [ %.3, %78 ], [ 2029, %84 ], [ 2029, %81 ], [ %.3, %77 ] - br i1 %.0104, label %87, label %95 + br i1 %.0103, label %87, label %95 87: ; preds = %86 %88 = getelementptr inbounds i8, ptr %21, i64 12 @@ -8337,8 +8334,8 @@ thread-pre-split: ; preds = %53, %59, %56 95: ; preds = %74, %86, %87, %93, %90, %72 %.272 = phi i32 [ %.171, %72 ], [ %.171, %74 ], [ 0, %90 ], [ 0, %93 ], [ 0, %87 ], [ 0, %86 ] %.4 = phi i32 [ %.3, %72 ], [ %.3, %74 ], [ 2029, %90 ], [ 2029, %93 ], [ %.5, %87 ], [ %.5, %86 ] - %.162 = phi i1 [ %.061103, %72 ], [ %.061103, %74 ], [ false, %90 ], [ false, %93 ], [ false, %87 ], [ false, %86 ] - %.1 = phi i1 [ %.0104, %72 ], [ %.0104, %74 ], [ false, %90 ], [ false, %93 ], [ false, %87 ], [ false, %86 ] + %.162 = phi i1 [ %.061102, %72 ], [ %.061102, %74 ], [ false, %90 ], [ false, %93 ], [ false, %87 ], [ false, %86 ] + %.1 = phi i1 [ %.0103, %72 ], [ %.0103, %74 ], [ false, %90 ], [ false, %93 ], [ false, %87 ], [ false, %86 ] %96 = load i8, ptr %22, align 2 %97 = icmp eq i8 %96, 3 %spec.select94 = select i1 %97, i1 true, i1 %.162 @@ -8346,7 +8343,7 @@ thread-pre-split: ; preds = %53, %59, %56 %.2 = select i1 %98, i1 true, i1 %.1 %99 = tail call ptr @list_next(ptr noundef %18) #16 %.not84 = icmp eq ptr %99, null - br i1 %.not84, label %._crit_edge, label %._crit_edge105, !llvm.loop !38 + br i1 %.not84, label %._crit_edge, label %._crit_edge104, !llvm.loop !38 ._crit_edge: ; preds = %95 tail call void @list_iterator_destroy(ptr noundef %18) #16 @@ -11764,9 +11761,6 @@ declare i64 @llvm.smax.i64(i64, i64) #14 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i16 @llvm.umin.i16(i16, i16) #14 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #14 - attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nofree norecurse nosync nounwind willreturn memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/slurm/optimized/proc_args.ll b/bench/slurm/optimized/proc_args.ll index 5248c6f9fd3..a1d0feea2d6 100644 --- a/bench/slurm/optimized/proc_args.ll +++ b/bench/slurm/optimized/proc_args.ll @@ -3473,7 +3473,7 @@ define i64 @parse_resv_flags(ptr noundef %0, ptr noundef %1, ptr noundef %2) loc 130: ; preds = %127 %131 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.119, ptr noundef %0, ptr noundef %1) #20 - br label %144 + br label %142 132: ; preds = %127, %122, %119, %115, %111, %89, %83, %76, %71, %65, %60, %55, %50, %45, %40, %35, %26, %24 %.sink = phi i64 [ %., %24 ], [ 16384, %26 ], [ %.252, %35 ], [ %.253, %40 ], [ %.254, %45 ], [ %.255, %50 ], [ %.256, %55 ], [ %.257, %60 ], [ %.258, %65 ], [ %.259, %71 ], [ %.260, %76 ], [ %.261, %83 ], [ %.262, %89 ], [ %.263, %111 ], [ 131072, %115 ], [ 262144, %119 ], [ 1073741824, %122 ], [ 536870912, %127 ] @@ -3486,26 +3486,24 @@ define i64 @parse_resv_flags(ptr noundef %0, ptr noundef %1, ptr noundef %2) loc br label %7, !llvm.loop !22 136: ; preds = %7 - %137 = icmp ne ptr %2, null - %138 = icmp ne i64 %.0207, -1 - %or.cond13 = select i1 %137, i1 %138, i1 false - br i1 %or.cond13, label %.sink.split, label %143 + %.not = icmp eq ptr %2, null + br i1 %.not, label %141, label %.sink.split .sink.split: ; preds = %136 - %139 = getelementptr inbounds i8, ptr %2, i64 48 - %140 = load i64, ptr %139, align 8 - %141 = icmp eq i64 %140, -2 - %142 = select i1 %141, i64 0, i64 %140 - %.0207.lcssa.sink = or i64 %.0207, %142 - store i64 %.0207.lcssa.sink, ptr %139, align 8 - br label %143 - -143: ; preds = %.sink.split, %136 + %137 = getelementptr inbounds i8, ptr %2, i64 48 + %138 = load i64, ptr %137, align 8 + %139 = icmp eq i64 %138, -2 + %140 = select i1 %139, i64 0, i64 %138 + %.0207.lcssa.sink = or i64 %.0207, %140 + store i64 %.0207.lcssa.sink, ptr %137, align 8 + br label %141 + +141: ; preds = %.sink.split, %136 call void @slurm_xfree(ptr noundef nonnull %4) #20 - br label %144 + br label %142 -144: ; preds = %143, %130 - %.0211 = phi i64 [ -1, %130 ], [ %.0207, %143 ] +142: ; preds = %141, %130 + %.0211 = phi i64 [ -1, %130 ], [ %.0207, %141 ] ret i64 %.0211 } diff --git a/bench/slurm/optimized/read_config.ll b/bench/slurm/optimized/read_config.ll index 7039e108121..af273cb17da 100644 --- a/bench/slurm/optimized/read_config.ll +++ b/bench/slurm/optimized/read_config.ll @@ -3217,35 +3217,36 @@ define range(i32 0, 23) i32 @job_defaults_list(ptr noundef %0, ptr nocapture nou %11 = tail call ptr @xstrdup(ptr noundef nonnull %0) #18 store ptr %11, ptr %4, align 8 %12 = call ptr @strtok_r(ptr noundef %11, ptr noundef nonnull @.str.229, ptr noundef nonnull %5) #18 - %.not3748 = icmp eq ptr %12, null - br i1 %.not3748, label %._crit_edge, label %.lr.ph + %.not3744 = icmp eq ptr %12, null + br i1 %.not3744, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %9, %25 - %.03149 = phi ptr [ %28, %25 ], [ %12, %9 ] - %13 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %.03149, i32 noundef 61) #19 + %.03145 = phi ptr [ %28, %25 ], [ %12, %9 ] + %13 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %.03145, i32 noundef 61) #19 %.not38 = icmp eq ptr %13, null br i1 %.not38, label %29, label %14 14: ; preds = %.lr.ph store i8 0, ptr %13, align 1 - %15 = call i32 @xstrcasecmp(ptr noundef nonnull %.03149, ptr noundef nonnull @.str.391) #18 + %15 = call i32 @xstrcasecmp(ptr noundef nonnull %.03145, ptr noundef nonnull @.str.391) #18 %.not.i = icmp eq i32 %15, 0 - br i1 %.not.i, label %select.unfold, label %16 + br i1 %.not.i, label %_job_def_type.exit, label %16 16: ; preds = %14 - %17 = call i32 @xstrcasecmp(ptr noundef nonnull %.03149, ptr noundef nonnull @.str.45) #18 + %17 = call i32 @xstrcasecmp(ptr noundef nonnull %.03145, ptr noundef nonnull @.str.45) #18 %.not2.i = icmp eq i32 %17, 0 - br i1 %.not2.i, label %select.unfold, label %29 + %..i = select i1 %.not2.i, i16 2, i16 -2 + br label %_job_def_type.exit -select.unfold: ; preds = %16, %14 - %.0.i.ph = phi i16 [ 1, %14 ], [ 2, %16 ] +_job_def_type.exit: ; preds = %16, %14 + %.0.i = phi i16 [ 1, %14 ], [ %..i, %16 ] %18 = getelementptr inbounds i8, ptr %13, i64 1 %19 = call i64 @strtoll(ptr noundef nonnull %18, ptr noundef nonnull %3, i32 noundef 10) #18 %20 = load ptr, ptr %3, align 8 %.not39 = icmp eq ptr %20, null br i1 %.not39, label %29, label %21 -21: ; preds = %select.unfold +21: ; preds = %_job_def_type.exit %22 = load i8, ptr %20, align 1 %23 = icmp ne i8 %22, 0 %24 = icmp ugt i64 %19, 9223372036854775806 @@ -3254,7 +3255,7 @@ select.unfold: ; preds = %16, %14 25: ; preds = %21 %26 = call ptr @slurm_xcalloc(i64 noundef 1, i64 noundef 16, i1 noundef zeroext true, i1 noundef zeroext false, ptr noundef nonnull @.str.228, i32 noundef 1280, ptr noundef nonnull @__func__.job_defaults_list) #18 - store i16 %.0.i.ph, ptr %26, align 8 + store i16 %.0.i, ptr %26, align 8 %27 = getelementptr inbounds i8, ptr %26, i64 8 store i64 %19, ptr %27, align 8 call void @list_append(ptr noundef %10, ptr noundef nonnull %26) #18 @@ -3262,7 +3263,7 @@ select.unfold: ; preds = %16, %14 %.not37 = icmp eq ptr %28, null br i1 %.not37, label %._crit_edge, label %.lr.ph, !llvm.loop !10 -29: ; preds = %16, %select.unfold, %21, %.lr.ph +29: ; preds = %_job_def_type.exit, %21, %.lr.ph call void @slurm_xfree(ptr noundef nonnull %4) #18 %.not41 = icmp eq ptr %10, null br i1 %.not41, label %31, label %30 diff --git a/bench/slurm/optimized/step_mgr.ll b/bench/slurm/optimized/step_mgr.ll index e620ac801d6..fa5c133d4e6 100644 --- a/bench/slurm/optimized/step_mgr.ll +++ b/bench/slurm/optimized/step_mgr.ll @@ -12572,13 +12572,24 @@ define internal fastcc noundef zeroext i1 @_handle_core_select(ptr nocapture nou br i1 %.not155, label %.loopexit98.sink.split, label %.thread.split.us .thread.split.us: ; preds = %.thread - %wide.trip.count175 = zext i16 %4 to i64 - br i1 %7, label %.preheader.us.us, label %.preheader.us - -.preheader.us.us: ; preds = %.thread.split.us, %._crit_edge.split.us.us.us148.us - %indvars.iv173 = phi i64 [ %indvars.iv.next174.mux, %._crit_edge.split.us.us.us148.us ], [ 0, %.thread.split.us ] - %.1131.us.us.us = phi i1 [ %.4.us.us.us.mux, %._crit_edge.split.us.us.us148.us ], [ true, %.thread.split.us ] - %.174130.us.us.us = phi i32 [ %.477.us.us.us, %._crit_edge.split.us.us.us148.us ], [ 0, %.thread.split.us ] + br i1 %7, label %.preheader.us.us.preheader, label %.preheader.us.preheader + +.preheader.us.preheader: ; preds = %.thread.split.us + %exitcond171.not = icmp eq i16 %4, 1 + %not.exitcond171.not = xor i1 %exitcond171.not, true + %indvars.iv.next.mux = zext i1 %not.exitcond171.not to i64 + br label %.preheader.us + +.preheader.us.us.preheader: ; preds = %.thread.split.us + %exitcond176.not = icmp eq i16 %4, 1 + %not.exitcond176.not = xor i1 %exitcond176.not, true + %indvars.iv.next174.mux = zext i1 %not.exitcond176.not to i64 + br label %.preheader.us.us + +.preheader.us.us: ; preds = %.preheader.us.us.preheader, %._crit_edge.split.us.us.us148.us + %indvars.iv173 = phi i64 [ %indvars.iv.next174.mux, %._crit_edge.split.us.us.us148.us ], [ 0, %.preheader.us.us.preheader ] + %.1131.us.us.us = phi i1 [ %.4.us.us.us.mux, %._crit_edge.split.us.us.us148.us ], [ true, %.preheader.us.us.preheader ] + %.174130.us.us.us = phi i32 [ %.477.us.us.us, %._crit_edge.split.us.us.us148.us ], [ 0, %.preheader.us.us.preheader ] %72 = load ptr, ptr %11, align 8 %73 = getelementptr inbounds i32, ptr %72, i64 %indvars.iv173 %74 = load i32, ptr %73, align 4 @@ -12592,10 +12603,7 @@ define internal fastcc noundef zeroext i1 @_handle_core_select(ptr nocapture nou ._crit_edge.split.us.us.us148.us: ; preds = %91, %88, %.preheader.us.us %.477.us.us.us = phi i32 [ %.174130.us.us.us, %.preheader.us.us ], [ 0, %88 ], [ %.376.us.us.us.us, %91 ] %.4.us.us.us = phi i1 [ %.1131.us.us.us, %.preheader.us.us ], [ false, %88 ], [ %.3.us.us.us.us, %91 ] - %indvars.iv.next174 = add nuw nsw i64 %indvars.iv173, 1 - %exitcond176.not = icmp eq i64 %indvars.iv.next174, %wide.trip.count175 %brmerge.not = select i1 %exitcond176.not, i1 %.4.us.us.us, i1 false - %indvars.iv.next174.mux = select i1 %exitcond176.not, i64 0, i64 %indvars.iv.next174 %.4.us.us.us.mux = select i1 %exitcond176.not, i1 true, i1 %.4.us.us.us br i1 %brmerge.not, label %.loopexit98.sink.split, label %.preheader.us.us, !llvm.loop !41 @@ -12631,10 +12639,10 @@ define internal fastcc noundef zeroext i1 @_handle_core_select(ptr nocapture nou %exitcond172.not = icmp eq i32 %80, %70 br i1 %exitcond172.not, label %._crit_edge.split.us.us.us148.us, label %.lr.ph.us134.us.us, !llvm.loop !42 -.preheader.us: ; preds = %.thread.split.us, %._crit_edge.split.us - %indvars.iv = phi i64 [ %indvars.iv.next.mux, %._crit_edge.split.us ], [ 0, %.thread.split.us ] - %.1131.us138 = phi i1 [ %.4.us142.mux, %._crit_edge.split.us ], [ true, %.thread.split.us ] - %.174130.us139 = phi i32 [ %.477.us141, %._crit_edge.split.us ], [ 0, %.thread.split.us ] +.preheader.us: ; preds = %.preheader.us.preheader, %._crit_edge.split.us + %indvars.iv = phi i64 [ %indvars.iv.next.mux, %._crit_edge.split.us ], [ 0, %.preheader.us.preheader ] + %.1131.us138 = phi i1 [ %.4.us142.mux, %._crit_edge.split.us ], [ true, %.preheader.us.preheader ] + %.174130.us139 = phi i32 [ %.477.us141, %._crit_edge.split.us ], [ 0, %.preheader.us.preheader ] %92 = load ptr, ptr %11, align 8 %93 = getelementptr inbounds i32, ptr %92, i64 %indvars.iv %94 = load i32, ptr %93, align 4 @@ -12677,10 +12685,7 @@ define internal fastcc noundef zeroext i1 @_handle_core_select(ptr nocapture nou ._crit_edge.split.us: ; preds = %108, %105, %.preheader.us %.477.us141 = phi i32 [ %.174130.us139, %.preheader.us ], [ 0, %105 ], [ %.376.us, %108 ] %.4.us142 = phi i1 [ %.1131.us138, %.preheader.us ], [ false, %105 ], [ %.3.us, %108 ] - %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond171.not = icmp eq i64 %indvars.iv.next, %wide.trip.count175 %brmerge192.not = select i1 %exitcond171.not, i1 %.4.us142, i1 false - %indvars.iv.next.mux = select i1 %exitcond171.not, i64 0, i64 %indvars.iv.next %.4.us142.mux = select i1 %exitcond171.not, i1 true, i1 %.4.us142 br i1 %brmerge192.not, label %.loopexit98.sink.split, label %.preheader.us, !llvm.loop !41 diff --git a/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0__Slow.ll b/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0__Slow.ll index e719117034e..65c3adfeef8 100644 --- a/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0__Slow.ll +++ b/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0__Slow.ll @@ -45,7 +45,7 @@ define linkonce_odr dso_local noundef ptr @_ZN6VlWideILm3EEcvPjEv(ptr noundef no ; Function Attrs: cold mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable define dso_local void @_Z35Vmycpu_top___024root___eval_initialP20Vmycpu_top___024root(ptr nocapture noundef %0) local_unnamed_addr #2 { - tail call void @_Z40Vmycpu_top___024root___eval_initial__TOPP20Vmycpu_top___024root(ptr noundef %0) #12 + tail call void @_Z40Vmycpu_top___024root___eval_initial__TOPP20Vmycpu_top___024root(ptr noundef %0) #13 %2 = getelementptr inbounds i8, ptr %0, i64 162 %3 = load i8, ptr %2, align 2 %4 = getelementptr inbounds i8, ptr %0, i64 217 @@ -189,36 +189,33 @@ define dso_local void @_Z33Vmycpu_top___024root___eval_finalP20Vmycpu_top___024r ret void } -; Function Attrs: cold mustprogress uwtable +; Function Attrs: cold mustprogress noreturn uwtable define dso_local void @_Z34Vmycpu_top___024root___eval_settleP20Vmycpu_top___024root(ptr noundef %0) local_unnamed_addr #6 { %2 = getelementptr inbounds i8, ptr %0, i64 219 - store i8 1, ptr %2, align 1 - br label %3 + br label %select.unfold -3: ; preds = %1, %select.unfold - %.067 = phi i32 [ 0, %1 ], [ %6, %select.unfold ] - %4 = icmp ugt i32 %.067, 100 - br i1 %4, label %5, label %select.unfold +select.unfold: ; preds = %5, %1 + %storemerge = phi i8 [ 1, %1 ], [ 0, %5 ] + %.06 = phi i32 [ 0, %1 ], [ %6, %5 ] + store i8 %storemerge, ptr %2, align 1 + %3 = icmp ugt i32 %.06, 100 + br i1 %3, label %4, label %5 -5: ; preds = %3 +4: ; preds = %select.unfold tail call void @_Z11VL_FATAL_MTPKciS0_S0_(ptr noundef nonnull @.str, i32 noundef 1, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2) - br label %select.unfold - -select.unfold: ; preds = %5, %3 - %6 = add i32 %.067, 1 - %7 = tail call noundef zeroext i1 @_Z38Vmycpu_top___024root___eval_phase__stlP20Vmycpu_top___024root(ptr noundef nonnull %0) #12 - store i8 0, ptr %2, align 1 - br i1 %7, label %3, label %8 + br label %5 -8: ; preds = %select.unfold - ret void +5: ; preds = %4, %select.unfold + %6 = add i32 %.06, 1 + %7 = tail call noundef zeroext i1 @_Z38Vmycpu_top___024root___eval_phase__stlP20Vmycpu_top___024root(ptr noundef nonnull %0) #13 + br label %select.unfold } declare void @_Z11VL_FATAL_MTPKciS0_S0_(ptr noundef, i32 noundef, ptr noundef, ptr noundef) #7 ; Function Attrs: cold mustprogress uwtable -define dso_local noundef zeroext i1 @_Z38Vmycpu_top___024root___eval_phase__stlP20Vmycpu_top___024root(ptr noundef %0) local_unnamed_addr #6 { - tail call void @_Z41Vmycpu_top___024root___eval_triggers__stlP20Vmycpu_top___024root(ptr noundef %0) #12 +define dso_local noundef zeroext i1 @_Z38Vmycpu_top___024root___eval_phase__stlP20Vmycpu_top___024root(ptr noundef %0) local_unnamed_addr #8 { + tail call void @_Z41Vmycpu_top___024root___eval_triggers__stlP20Vmycpu_top___024root(ptr noundef %0) #13 %2 = getelementptr inbounds i8, ptr %0, i64 19200 br label %3 @@ -234,7 +231,7 @@ define dso_local noundef zeroext i1 @_Z38Vmycpu_top___024root___eval_phase__stlP br i1 %.not.i, label %3, label %8, !llvm.loop !10 8: ; preds = %5 - tail call void @_Z31Vmycpu_top___024root___eval_stlP20Vmycpu_top___024root(ptr noundef nonnull %0) #12 + tail call void @_Z31Vmycpu_top___024root___eval_stlP20Vmycpu_top___024root(ptr noundef nonnull %0) #13 br label %_ZNK12VlTriggerVecILm2EE3anyEv.exit _ZNK12VlTriggerVecILm2EE3anyEv.exit: ; preds = %3, %8 @@ -250,7 +247,7 @@ define dso_local void @_Z31Vmycpu_top___024root___eval_stlP20Vmycpu_top___024roo br i1 %.not, label %6, label %5 5: ; preds = %1 - tail call void @_Z42Vmycpu_top___024root___stl_sequent__TOP__0P20Vmycpu_top___024root(ptr noundef nonnull %0) #12 + tail call void @_Z42Vmycpu_top___024root___stl_sequent__TOP__0P20Vmycpu_top___024root(ptr noundef nonnull %0) #13 %.pre = load i64, ptr %2, align 8 br label %6 @@ -261,7 +258,7 @@ define dso_local void @_Z31Vmycpu_top___024root___eval_stlP20Vmycpu_top___024roo br i1 %.not5, label %10, label %9 9: ; preds = %6 - tail call void @_Z39Vmycpu_top___024root___stl_comb__TOP__0P20Vmycpu_top___024root(ptr noundef nonnull %0) #12 + tail call void @_Z39Vmycpu_top___024root___stl_comb__TOP__0P20Vmycpu_top___024root(ptr noundef nonnull %0) #13 br label %10 10: ; preds = %9, %6 @@ -269,7 +266,7 @@ define dso_local void @_Z31Vmycpu_top___024root___eval_stlP20Vmycpu_top___024roo } ; Function Attrs: cold mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable -define dso_local void @_Z42Vmycpu_top___024root___stl_sequent__TOP__0P20Vmycpu_top___024root(ptr noundef %0) local_unnamed_addr #8 { +define dso_local void @_Z42Vmycpu_top___024root___stl_sequent__TOP__0P20Vmycpu_top___024root(ptr noundef %0) local_unnamed_addr #9 { %2 = getelementptr inbounds i8, ptr %0, i64 8 %3 = getelementptr inbounds i8, ptr %0, i64 54 store i8 0, ptr %3, align 2 @@ -6968,10 +6965,10 @@ define internal noundef i32 @_ZL14VL_SHIFTRS_IIIiiijj(i32 noundef %0, i32 nounde } ; Function Attrs: cold -declare void @_Z41Vmycpu_top___024root___eval_triggers__stlP20Vmycpu_top___024root(ptr noundef) local_unnamed_addr #9 +declare void @_Z41Vmycpu_top___024root___eval_triggers__stlP20Vmycpu_top___024root(ptr noundef) local_unnamed_addr #10 ; Function Attrs: cold mustprogress uwtable -define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___024root(ptr noundef %0) local_unnamed_addr #6 { +define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___024root(ptr noundef %0) local_unnamed_addr #8 { %2 = tail call noundef i32 @_Z15VL_RAND_RESET_Ii(i32 noundef 1) %3 = trunc i32 %2 to i8 %4 = getelementptr inbounds i8, ptr %0, i64 8 @@ -8676,10 +8673,10 @@ define internal noundef range(i64 -9223372036854775808, 1) i64 @_ZL15VL_EXTENDSI } ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #10 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #11 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.abs.i32(i32, i1 immarg) #11 +declare i32 @llvm.abs.i32(i32, i1 immarg) #12 attributes #0 = { cold mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -8687,13 +8684,14 @@ attributes #2 = { cold mustprogress nofree norecurse nosync nounwind memory(argm attributes #3 = { cold mustprogress nofree norecurse nosync nounwind memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #5 = { cold mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { cold mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { cold mustprogress noreturn uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #7 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { cold mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { cold "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #11 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #12 = { cold } +attributes #8 = { cold mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { cold mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #10 = { cold "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #11 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #12 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #13 = { cold } !llvm.linker.options = !{} !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll b/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll index 3c97f939b7e..204eba66136 100644 --- a/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll +++ b/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll @@ -24,8 +24,8 @@ define noundef i16 @"_ZN9softposit7quire167convert43_$LT$impl$u20$softposit..qui %.not65 = icmp sgt i128 %2, -1 br i1 %.not65, label %6, label %11 -5: ; preds = %1, %3, %76 - %.0 = phi i16 [ %.0.i, %76 ], [ -32768, %3 ], [ 0, %1 ] +5: ; preds = %1, %3, %72 + %.0 = phi i16 [ %.0.i, %72 ], [ -32768, %3 ], [ 0, %1 ] ret i16 %.0 6: ; preds = %13, %4 @@ -123,60 +123,54 @@ _ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit: ; preds = 47: ; preds = %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit %48 = and i64 %.2, 9223372036854775807 %49 = icmp eq i8 %.sroa.51.0.in.i, 14 - br i1 %49, label %61, label %.thread85 + br i1 %49, label %58, label %.thread85 50: ; preds = %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit %. = select i1 %22, i16 1, i16 32767 - br label %76 + br label %72 .thread85: ; preds = %47 - %narrow = add nuw nsw i8 %.sroa.51.0.in.i, 50 - %51 = zext nneg i8 %narrow to i64 - %52 = lshr i64 %48, %51 - %53 = trunc i64 %52 to i16 - %54 = add nuw nsw i64 %.sroa.51.0.insert.ext.i, 49 - %55 = and i64 %54, 63 - %56 = lshr i64 %48, %55 - %57 = trunc i64 %56 to i1 - %58 = sub nuw nsw i64 15, %.sroa.51.0.insert.ext.i - %59 = shl i64 %48, %58 - %60 = icmp eq i64 %59, 0 - %spec.select64 = select i1 %60, i8 %.054, i8 1 - br label %63 - -61: ; preds = %47 + %51 = add nuw nsw i64 %.sroa.51.0.insert.ext.i, 49 + %52 = and i64 %51, 63 + %53 = lshr i64 %48, %52 + %54 = trunc i64 %53 to i1 + %55 = sub nuw nsw i64 15, %.sroa.51.0.insert.ext.i + %56 = shl i64 %48, %55 + %57 = icmp eq i64 %56, 0 + %spec.select64 = select i1 %57, i8 %.054, i8 1 + br label %60 + +58: ; preds = %47 %.not61 = icmp eq i64 %48, 0 %spec.select63 = select i1 %.not61, i8 %.054, i8 1 - %62 = icmp eq i8 %21, 0 - br i1 %62, label %63, label %71 - -63: ; preds = %.thread85, %61 - %.15593 = phi i8 [ %spec.select64, %.thread85 ], [ %spec.select63, %61 ] - %.05691 = phi i1 [ %57, %.thread85 ], [ false, %61 ] - %.05790 = phi i16 [ %53, %.thread85 ], [ 0, %61 ] - %64 = zext nneg i8 %21 to i16 - %65 = sub nsw i8 13, %.sroa.51.0.in.i - %66 = and i8 %65, 15 - %67 = zext nneg i8 %66 to i16 - %68 = shl nuw i16 %64, %67 - %.049 = select i1 %49, i16 0, i16 %68 - %69 = add nuw i16 %.049, %.sroa.0.0.i - %70 = add i16 %69, %.05790 - br i1 %.05691, label %71, label %76 - -71: ; preds = %61, %63 - %.15592 = phi i8 [ %.15593, %63 ], [ %spec.select63, %61 ] - %.052 = phi i16 [ %70, %63 ], [ %.sroa.0.0.i, %61 ] - %72 = and i16 %.052, 1 - %73 = zext nneg i8 %.15592 to i16 - %74 = or i16 %72, %73 - %75 = add i16 %74, %.052 - br label %76 - -76: ; preds = %50, %63, %71 - %.153 = phi i16 [ %75, %71 ], [ %70, %63 ], [ %., %50 ] - %77 = sub i16 0, %.153 - %.0.i = select i1 %.not65, i16 %.153, i16 %77 + %59 = icmp eq i8 %21, 0 + br i1 %59, label %60, label %67 + +60: ; preds = %.thread85, %58 + %.15591 = phi i8 [ %spec.select64, %.thread85 ], [ %spec.select63, %58 ] + %.05689 = phi i1 [ %54, %.thread85 ], [ false, %58 ] + %61 = zext nneg i8 %21 to i16 + %62 = sub nsw i8 13, %.sroa.51.0.in.i + %63 = and i8 %62, 15 + %64 = zext nneg i8 %63 to i16 + %65 = shl nuw i16 %61, %64 + %.049 = select i1 %49, i16 0, i16 %65 + %66 = add nuw i16 %.049, %.sroa.0.0.i + br i1 %.05689, label %67, label %72 + +67: ; preds = %58, %60 + %.15590 = phi i8 [ %.15591, %60 ], [ %spec.select63, %58 ] + %.052 = phi i16 [ %66, %60 ], [ %.sroa.0.0.i, %58 ] + %68 = and i16 %.052, 1 + %69 = zext nneg i8 %.15590 to i16 + %70 = or i16 %68, %69 + %71 = add i16 %70, %.052 + br label %72 + +72: ; preds = %50, %60, %67 + %.153 = phi i16 [ %71, %67 ], [ %66, %60 ], [ %., %50 ] + %73 = sub i16 0, %.153 + %.0.i = select i1 %.not65, i16 %.153, i16 %73 br label %5 } diff --git a/bench/spike/optimized/fcvtmod_w_d.ll b/bench/spike/optimized/fcvtmod_w_d.ll index 097523aa594..a6fddc283de 100644 --- a/bench/spike/optimized/fcvtmod_w_d.ll +++ b/bench/spike/optimized/fcvtmod_w_d.ll @@ -258,7 +258,7 @@ _ZN9regfile_tImLm32ELb1EE5writeEmm.exit: ; preds = %89, %92 %98 = load ptr, ptr %21, align 8 %99 = getelementptr inbounds i8, ptr %98, i64 40 %100 = load i64, ptr %99, align 8 - %101 = or i64 %.057, %.058 + %101 = or disjoint i64 %.057, %.058 %102 = or i64 %101, %100 tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %98, i64 noundef %102) #15 ret i64 %97 @@ -434,7 +434,7 @@ _ZN9regfile_tImLm32ELb1EE5writeEmm.exit: ; preds = %72, %75 %79 = load ptr, ptr %21, align 8 %80 = getelementptr inbounds i8, ptr %79, i64 40 %81 = load i64, ptr %80, align 8 - %82 = or i64 %.053, %.054 + %82 = or disjoint i64 %.053, %.054 %83 = or i64 %82, %81 tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %79, i64 noundef %83) #15 ret i64 %78 @@ -679,10 +679,9 @@ _ZN9regfile_tImLm32ELb1EE5writeEmm.exit: ; preds = %_ZNSt13unordered_ma %123 = load ptr, ptr %21, align 8 %124 = getelementptr inbounds i8, ptr %123, i64 40 %125 = load i64, ptr %124, align 8 - %126 = and i64 %.062, 1 - %127 = or disjoint i64 %.061, %126 - %128 = or i64 %127, %125 - tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %123, i64 noundef %128) #15 + %126 = or disjoint i64 %.061, %.062 + %127 = or i64 %126, %125 + tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %123, i64 noundef %127) #15 ret i64 %122 } @@ -893,10 +892,9 @@ _ZN9regfile_tImLm32ELb1EE5writeEmm.exit: ; preds = %_ZNSt13unordered_ma %104 = load ptr, ptr %21, align 8 %105 = getelementptr inbounds i8, ptr %104, i64 40 %106 = load i64, ptr %105, align 8 - %107 = and i64 %.060, 1 - %108 = or disjoint i64 %.058, %107 - %109 = or i64 %108, %106 - tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %104, i64 noundef %109) #15 + %107 = or disjoint i64 %.058, %.060 + %108 = or i64 %107, %106 + tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %104, i64 noundef %108) #15 ret i64 %103 } @@ -1115,7 +1113,7 @@ _ZN9regfile_tImLm32ELb1EE5writeEmm.exit: ; preds = %106, %107 %113 = load ptr, ptr %21, align 8 %114 = getelementptr inbounds i8, ptr %113, i64 40 %115 = load i64, ptr %114, align 8 - %116 = or i64 %.063, %.064 + %116 = or disjoint i64 %.063, %.064 %117 = or i64 %116, %115 tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %113, i64 noundef %117) #15 ret i64 %112 @@ -1287,7 +1285,7 @@ _ZN9regfile_tImLm32ELb1EE5writeEmm.exit: ; preds = %81, %82 %86 = load ptr, ptr %21, align 8 %87 = getelementptr inbounds i8, ptr %86, i64 40 %88 = load i64, ptr %87, align 8 - %89 = or i64 %.055, %.056 + %89 = or disjoint i64 %.055, %.056 %90 = or i64 %89, %88 tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %86, i64 noundef %90) #15 ret i64 %85 @@ -1565,10 +1563,9 @@ _ZN9regfile_tImLm32ELb1EE5writeEmm.exit: ; preds = %131, %132 %138 = load ptr, ptr %21, align 8 %139 = getelementptr inbounds i8, ptr %138, i64 40 %140 = load i64, ptr %139, align 8 - %141 = and i64 %.068, 1 - %142 = or disjoint i64 %.067, %141 - %143 = or i64 %142, %140 - tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %138, i64 noundef %143) #15 + %141 = or disjoint i64 %.067, %.068 + %142 = or i64 %141, %140 + tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %138, i64 noundef %142) #15 ret i64 %137 } @@ -1795,10 +1792,9 @@ _ZN9regfile_tImLm32ELb1EE5writeEmm.exit: ; preds = %106, %107 %111 = load ptr, ptr %21, align 8 %112 = getelementptr inbounds i8, ptr %111, i64 40 %113 = load i64, ptr %112, align 8 - %114 = and i64 %.060, 1 - %115 = or disjoint i64 %114, %.062 - %116 = or i64 %115, %113 - tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %111, i64 noundef %116) #15 + %114 = or disjoint i64 %.060, %.062 + %115 = or i64 %114, %113 + tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %111, i64 noundef %115) #15 ret i64 %110 } diff --git a/bench/stb/optimized/stb_dxt.c.ll b/bench/stb/optimized/stb_dxt.c.ll index b56fb0a5851..a7c5a77e67f 100644 --- a/bench/stb/optimized/stb_dxt.c.ll +++ b/bench/stb/optimized/stb_dxt.c.ll @@ -342,9 +342,9 @@ for.body4: ; preds = %for.body, %for.body %1 = load i8, ptr %arrayidx5, align 1 %conv6 = zext i8 %1 to i32 %add = add nuw nsw i32 %muv.0114, %conv6 - %cmp10 = icmp sgt i32 %minv.0115, %conv6 + %cmp10 = icmp samesign ugt i32 %minv.0115, %conv6 %spec.select = tail call i32 @llvm.smax.i32(i32 %maxv.0116, i32 %conv6) - %minv.1 = tail call i32 @llvm.smin.i32(i32 %minv.0115, i32 %conv6) + %minv.1 = tail call i32 @llvm.umin.i32(i32 %minv.0115, i32 %conv6) %maxv.1 = select i1 %cmp10, i32 %maxv.0116, i32 %spec.select %indvars.iv.next = add nuw nsw i64 %indvars.iv, 4 %cmp2 = icmp samesign ult i64 %indvars.iv, 60 @@ -1224,9 +1224,9 @@ for.body: ; preds = %entry, %for.body %arrayidx2 = getelementptr inbounds i8, ptr %src, i64 %2 %3 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %3 to i32 - %cmp4 = icmp sgt i32 %mn.051, %conv3 + %cmp4 = icmp samesign ugt i32 %mn.051, %conv3 %spec.select = tail call i32 @llvm.smax.i32(i32 %mx.052, i32 %conv3) - %mn.1 = tail call i32 @llvm.smin.i32(i32 %mn.051, i32 %conv3) + %mn.1 = tail call i32 @llvm.umin.i32(i32 %mn.051, i32 %conv3) %mx.1 = select i1 %cmp4, i32 %mx.052, i32 %spec.select %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 16 @@ -1324,9 +1324,9 @@ for.body.i: ; preds = %for.body.i, %if.the %arrayidx2.i = getelementptr inbounds i8, ptr %add.ptr, i64 %1 %2 = load i8, ptr %arrayidx2.i, align 1 %conv3.i = zext i8 %2 to i32 - %cmp4.i = icmp sgt i32 %mn.051.i, %conv3.i + %cmp4.i = icmp samesign ugt i32 %mn.051.i, %conv3.i %spec.select.i = tail call i32 @llvm.smax.i32(i32 %mx.052.i, i32 %conv3.i) - %mn.1.i = tail call i32 @llvm.smin.i32(i32 %mn.051.i, i32 %conv3.i) + %mn.1.i = tail call i32 @llvm.umin.i32(i32 %mn.051.i, i32 %conv3.i) %mx.1.i = select i1 %cmp4.i, i32 %mx.052.i, i32 %spec.select.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 16 @@ -1436,9 +1436,9 @@ for.body.i: ; preds = %for.body.i, %entry %arrayidx2.i = getelementptr inbounds i8, ptr %src, i64 %indvars.iv.i %1 = load i8, ptr %arrayidx2.i, align 1 %conv3.i = zext i8 %1 to i32 - %cmp4.i = icmp sgt i32 %mn.051.i, %conv3.i + %cmp4.i = icmp samesign ugt i32 %mn.051.i, %conv3.i %spec.select.i = tail call i32 @llvm.smax.i32(i32 %mx.052.i, i32 %conv3.i) - %mn.1.i = tail call i32 @llvm.smin.i32(i32 %mn.051.i, i32 %conv3.i) + %mn.1.i = tail call i32 @llvm.umin.i32(i32 %mn.051.i, i32 %conv3.i) %mx.1.i = select i1 %cmp4.i, i32 %mx.052.i, i32 %spec.select.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 16 @@ -1529,9 +1529,9 @@ for.body.i: ; preds = %for.body.i, %entry %arrayidx2.i = getelementptr inbounds i8, ptr %src, i64 %1 %2 = load i8, ptr %arrayidx2.i, align 1 %conv3.i = zext i8 %2 to i32 - %cmp4.i = icmp sgt i32 %mn.051.i, %conv3.i + %cmp4.i = icmp samesign ugt i32 %mn.051.i, %conv3.i %spec.select.i = tail call i32 @llvm.smax.i32(i32 %mx.052.i, i32 %conv3.i) - %mn.1.i = tail call i32 @llvm.smin.i32(i32 %mn.051.i, i32 %conv3.i) + %mn.1.i = tail call i32 @llvm.umin.i32(i32 %mn.051.i, i32 %conv3.i) %mx.1.i = select i1 %cmp4.i, i32 %mx.052.i, i32 %spec.select.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 16 @@ -1618,9 +1618,9 @@ for.body.i4: ; preds = %for.body.i4, %stb__ %arrayidx2.i8 = getelementptr inbounds i8, ptr %add.ptr1, i64 %6 %7 = load i8, ptr %arrayidx2.i8, align 1 %conv3.i9 = zext i8 %7 to i32 - %cmp4.i10 = icmp sgt i32 %mn.051.i7, %conv3.i9 + %cmp4.i10 = icmp samesign ugt i32 %mn.051.i7, %conv3.i9 %spec.select.i11 = tail call i32 @llvm.smax.i32(i32 %mx.052.i6, i32 %conv3.i9) - %mn.1.i12 = tail call i32 @llvm.smin.i32(i32 %mn.051.i7, i32 %conv3.i9) + %mn.1.i12 = tail call i32 @llvm.umin.i32(i32 %mn.051.i7, i32 %conv3.i9) %mx.1.i13 = select i1 %cmp4.i10, i32 %mx.052.i6, i32 %spec.select.i11 %indvars.iv.next.i14 = add nuw nsw i64 %indvars.iv.i5, 1 %exitcond.not.i15 = icmp eq i64 %indvars.iv.next.i14, 16 @@ -1704,6 +1704,9 @@ declare i32 @llvm.smin.i32(i32, i32) #8 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #8 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umin.i32(i32, i32) #8 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i16 @llvm.umin.i16(i16, i16) #8 diff --git a/bench/stb/optimized/stb_image_resize2.c.ll b/bench/stb/optimized/stb_image_resize2.c.ll index 8cabd3ea198..65fb59ecfd6 100644 --- a/bench/stb/optimized/stb_image_resize2.c.ll +++ b/bench/stb/optimized/stb_image_resize2.c.ll @@ -729,8 +729,8 @@ if.end113: ; preds = %lor.lhs.false, %if. %min_n.3 = phi i32 [ %call101, %if.then100 ], [ %spec.select141186, %lor.lhs.false ], [ %spec.select141186, %for.end90 ] %left_margin.1 = phi i32 [ 0, %if.then100 ], [ %14, %lor.lhs.false ], [ %14, %for.end90 ] %sub168 = sub nsw i32 0, %left_margin.1 - %cmp114 = icmp ne i32 %min_right.0.lcssa, 2147483647 - br i1 %cmp114, label %if.then115, label %if.end138 + %cmp114.not = icmp eq i32 %min_right.0.lcssa, 2147483647 + br i1 %cmp114.not, label %if.end138, label %if.then115 if.then115: ; preds = %if.end113 %cmp116.not = icmp sgt i32 %min_right.0.lcssa, %min_n.3 @@ -755,10 +755,9 @@ if.then125: ; preds = %lor.lhs.false120, % br label %if.end138 if.end138: ; preds = %lor.lhs.false120, %if.then125, %if.end113 - %right_margin.1 = phi i32 [ 0, %if.then125 ], [ %right_margin.0, %lor.lhs.false120 ], [ %right_margin.0, %if.end113 ] %tobool = icmp ne i32 %left_margin.1, 0 %or.cond = and i1 %cmp91, %tobool - br i1 %or.cond, label %if.then141, label %if.end175 + br i1 %or.cond, label %if.then141, label %if.end224 if.then141: ; preds = %if.end138 %15 = load i32, ptr %spans, align 4 @@ -784,38 +783,7 @@ if.end166: ; preds = %if.then147, %if.the store i32 0, ptr %edge_sizes, align 4 br label %if.end224 -if.end175: ; preds = %if.end138 - %tobool176 = icmp ne i32 %right_margin.1, 0 - %or.cond1 = and i1 %cmp114, %tobool176 - br i1 %or.cond1, label %if.then179, label %if.end224 - -if.then179: ; preds = %if.end175 - %18 = load i32, ptr %spans, align 4 - %cmp187 = icmp slt i32 %min_right.0.lcssa, %18 - br i1 %cmp187, label %if.then188, label %if.end208 - -if.then188: ; preds = %if.then179 - store i32 %18, ptr %pixel_offset_for_input59, align 4 - store i32 %18, ptr %arrayidx52, align 4 - %19 = load i32, ptr %n148, align 4 - store i32 %19, ptr %n156, align 4 - br label %if.end208 - -if.end208: ; preds = %if.then188, %if.then179 - %newspan180.0 = phi ptr [ %spans, %if.then188 ], [ %arrayidx52, %if.then179 ] - %pixel_offset_for_input209 = getelementptr inbounds i8, ptr %newspan180.0, i64 8 - store i32 %min_right.0.lcssa, ptr %pixel_offset_for_input209, align 4 - %20 = load i32, ptr %n156, align 4 - %add213 = add nsw i32 %20, 1 - store i32 %add213, ptr %newspan180.0, align 4 - %sub219 = sub i32 %max_right.0.lcssa, %min_right.0.lcssa - %add220 = add nsw i32 %sub219, %add213 - %n1221 = getelementptr inbounds i8, ptr %newspan180.0, i64 4 - store i32 %add220, ptr %n1221, align 4 - store i32 0, ptr %arrayidx43, align 4 - br label %if.end224 - -if.end224: ; preds = %for.end30.thread, %if.end208, %if.end175, %if.end166 +if.end224: ; preds = %if.end138, %for.end30.thread, %if.end166 ret void } @@ -27136,7 +27104,7 @@ if.then371: ; preds = %if.then361 if.end380: ; preds = %if.then371, %if.then361 %104 = load i32, ptr %conservative, align 4 %scanline_extents = getelementptr inbounds i8, ptr %spec.select263, i64 368 - store i32 %104, ptr %scanline_extents, align 8 + store i32 %104, ptr %scanline_extents, align 16 %105 = load i32, ptr %n1, align 4 %n1387 = getelementptr inbounds i8, ptr %spec.select263, i64 372 store i32 %105, ptr %n1387, align 4 @@ -27164,7 +27132,7 @@ if.end405: ; preds = %if.end380, %if.else %vertical404 = getelementptr inbounds i8, ptr %spec.select263, i64 152 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %vertical404, ptr noundef nonnull align 8 dereferenceable(152) %vertical.sink, i64 152, i1 false) %split_info406 = getelementptr inbounds i8, ptr %spec.select263, i64 416 - %112 = load ptr, ptr %split_info406, align 8 + %112 = load ptr, ptr %split_info406, align 32 %splits407 = getelementptr inbounds i8, ptr %spec.select263, i64 468 %113 = load i32, ptr %splits407, align 4 %cmp17.i = icmp sgt i32 %113, 0 @@ -27229,12 +27197,12 @@ for.body431.lr.ph: ; preds = %stbir__get_split_in for.body431: ; preds = %for.body431.lr.ph, %for.inc494 %indvars.iv322 = phi i64 [ 0, %for.body431.lr.ph ], [ %indvars.iv.next323, %for.inc494 ] %122 = load i32, ptr %n1434, align 4 - %123 = load i32, ptr %n1438, align 4 + %123 = load i32, ptr %n1438, align 16 %cmp439 = icmp sgt i32 %122, %123 br i1 %cmp439, label %if.then441, label %if.else451 if.then441: ; preds = %for.body431 - %124 = load i32, ptr %spans, align 8 + %124 = load i32, ptr %spans, align 128 %sub450 = sub nsw i32 %122, %124 br label %if.end461 @@ -27246,12 +27214,12 @@ if.else451: ; preds = %for.body431 if.end461: ; preds = %if.else451, %if.then441 %width.0 = phi i32 [ %sub450, %if.then441 ], [ %sub460, %if.else451 ] %add462 = add nsw i32 %width.0, 1 - %126 = load i32, ptr %scanline_extents, align 8 + %126 = load i32, ptr %scanline_extents, align 16 %sub466 = sub i32 %add462, %126 %127 = load i32, ptr %arrayidx468, align 4 %add469 = add nsw i32 %sub466, %127 %mul470 = mul nsw i32 %add469, %effective_channels.0 - %128 = load ptr, ptr %split_info406, align 8 + %128 = load ptr, ptr %split_info406, align 32 %arrayidx473 = getelementptr inbounds %struct.stbir__per_split_info, ptr %128, i64 %indvars.iv322 %129 = load ptr, ptr %arrayidx473, align 8 %idxprom475 = sext i32 %mul470 to i64 @@ -27266,7 +27234,7 @@ for.cond479.preheader: ; preds = %if.end461 for.body483: ; preds = %for.cond479.preheader, %for.body483 %j.0311 = phi i32 [ %inc491, %for.body483 ], [ 0, %for.cond479.preheader ] - %131 = load ptr, ptr %split_info406, align 8 + %131 = load ptr, ptr %split_info406, align 32 %ring_buffer.i = getelementptr inbounds %struct.stbir__per_split_info, ptr %131, i64 %indvars.iv322, i32 8 %132 = load ptr, ptr %ring_buffer.i, align 8 %133 = load i32, ptr %ring_buffer_length_bytes.i, align 8 diff --git a/bench/turborepo-rs/optimized/eyin3u3cupdp2wcinr2t4x92g.ll b/bench/turborepo-rs/optimized/eyin3u3cupdp2wcinr2t4x92g.ll index 3bbefda0caf..fe3de1aab87 100644 --- a/bench/turborepo-rs/optimized/eyin3u3cupdp2wcinr2t4x92g.ll +++ b/bench/turborepo-rs/optimized/eyin3u3cupdp2wcinr2t4x92g.ll @@ -790,7 +790,6 @@ define noundef zeroext i1 @_RINvXs0_NtNtNtCs1LoaDTb72WA_4core4iter8adapters3mapI _RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.lr.ph.i: ; preds = %3 %.sroa.58.0..sroa_idx.i = getelementptr inbounds i8, ptr %6, i64 1 - %.sroa.7.0..sroa_idx.i = getelementptr inbounds i8, ptr %6, i64 8 %9 = getelementptr inbounds i8, ptr %1, i64 8 %10 = getelementptr inbounds i8, ptr %1, i64 1 %.sroa.7.0..sroa_idx4.i = getelementptr inbounds i8, ptr %4, i64 1 @@ -800,32 +799,36 @@ _RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12 %trunc.i.i.i.i.i = trunc i8 %.fr to i1 %12 = load i64, ptr %9, align 8 %13 = load i8, ptr %10, align 1, !range !79 - br i1 %trunc.i.i.i.i.i, label %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i.us, label %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i + br i1 %trunc.i.i.i.i.i, label %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i.us, label %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i.preheader + +_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i.preheader: ; preds = %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.lr.ph.i + %14 = icmp ne i64 %12, 0 + br label %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i _RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i.us: ; preds = %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.lr.ph.i, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.us - %14 = phi ptr [ %15, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.us ], [ %.promoted.i, %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.lr.ph.i ] - %15 = getelementptr inbounds i8, ptr %14, i64 24 - store ptr %15, ptr %0, align 8, !alias.scope !213, !noalias !216 + %15 = phi ptr [ %16, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.us ], [ %.promoted.i, %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.lr.ph.i ] + %16 = getelementptr inbounds i8, ptr %15, i64 24 + store ptr %16, ptr %0, align 8, !alias.scope !213, !noalias !216 tail call void @llvm.experimental.noalias.scope.decl(metadata !218) - %16 = getelementptr inbounds i8, ptr %14, i64 8 - %17 = load ptr, ptr %16, align 8, !alias.scope !218, !noalias !221, !nonnull !5, !noundef !5 - %18 = getelementptr inbounds i8, ptr %14, i64 16 - %19 = load i64, ptr %18, align 8, !alias.scope !218, !noalias !221, !noundef !5 - %20 = getelementptr inbounds { { i64, [5 x i64] }, { i64, i64 } }, ptr %17, i64 %19 + %17 = getelementptr inbounds i8, ptr %15, i64 8 + %18 = load ptr, ptr %17, align 8, !alias.scope !218, !noalias !221, !nonnull !5, !noundef !5 + %19 = getelementptr inbounds i8, ptr %15, i64 16 + %20 = load i64, ptr %19, align 8, !alias.scope !218, !noalias !221, !noundef !5 + %21 = getelementptr inbounds { { i64, [5 x i64] }, { i64, i64 } }, ptr %18, i64 %20 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6), !noalias !225 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) call void @llvm.lifetime.start.p0(i64 15, ptr nonnull %.sroa.7.i) - %21 = icmp eq i64 %19, 0 - br i1 %21, label %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.us.thread, label %_RNvXs0_NtNtNtCs1LoaDTb72WA_4core4iter8adapters3mapINtB5_3MapINtNtNtBb_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1m_INtNtB1o_8variance12UnitVarianceNtB26_13InvariantSizeE13unit_varianceENtNtNtB9_6traits8iterator8Iterator4nextB1q_.llvm.5393772610634076635.exit.i.us + %22 = icmp eq i64 %20, 0 + br i1 %22, label %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.us.thread, label %_RNvXs0_NtNtNtCs1LoaDTb72WA_4core4iter8adapters3mapINtB5_3MapINtNtNtBb_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1m_INtNtB1o_8variance12UnitVarianceNtB26_13InvariantSizeE13unit_varianceENtNtNtB9_6traits8iterator8Iterator4nextB1q_.llvm.5393772610634076635.exit.i.us _RNvXs0_NtNtNtCs1LoaDTb72WA_4core4iter8adapters3mapINtB5_3MapINtNtNtBb_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1m_INtNtB1o_8variance12UnitVarianceNtB26_13InvariantSizeE13unit_varianceENtNtNtB9_6traits8iterator8Iterator4nextB1q_.llvm.5393772610634076635.exit.i.us: ; preds = %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i.us call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4), !noalias !228 - call void @_RNvXs9_NtCseG2FYMysgNb_3wax5tokenRNtB5_5TokenINtNtB5_8variance12UnitVarianceNtBK_13InvariantSizeE13unit_varianceB7_(ptr noalias nocapture noundef nonnull sret([16 x i8]) align 8 dereferenceable(16) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %17) #33, !noalias !234 + call void @_RNvXs9_NtCseG2FYMysgNb_3wax5tokenRNtB5_5TokenINtNtB5_8variance12UnitVarianceNtBK_13InvariantSizeE13unit_varianceB7_(ptr noalias nocapture noundef nonnull sret([16 x i8]) align 8 dereferenceable(16) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %18) #33, !noalias !234 %.sroa.0.0.copyload3.i.us = load i8, ptr %4, align 8, !noalias !235 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %.sroa.7.i, ptr noundef nonnull align 1 dereferenceable(15) %.sroa.7.0..sroa_idx4.i, i64 15, i1 false), !noalias !235 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4), !noalias !228 - %22 = icmp eq i8 %.sroa.0.0.copyload3.i.us, 2 - br i1 %22, label %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.us.thread, label %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.us + %23 = icmp eq i8 %.sroa.0.0.copyload3.i.us, 2 + br i1 %23, label %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.us.thread, label %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.us _RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.us.thread: ; preds = %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i.us, %_RNvXs0_NtNtNtCs1LoaDTb72WA_4core4iter8adapters3mapINtB5_3MapINtNtNtBb_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1m_INtNtB1o_8variance12UnitVarianceNtB26_13InvariantSizeE13unit_varianceENtNtNtB9_6traits8iterator8Iterator4nextB1q_.llvm.5393772610634076635.exit.i.us call void @llvm.lifetime.end.p0(i64 15, ptr nonnull %.sroa.7.i) @@ -834,77 +837,71 @@ _RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4It br label %_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit _RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.us: ; preds = %_RNvXs0_NtNtNtCs1LoaDTb72WA_4core4iter8adapters3mapINtB5_3MapINtNtNtBb_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1m_INtNtB1o_8variance12UnitVarianceNtB26_13InvariantSizeE13unit_varianceENtNtNtB9_6traits8iterator8Iterator4nextB1q_.llvm.5393772610634076635.exit.i.us - %23 = getelementptr inbounds i8, ptr %17, i64 64 + %24 = getelementptr inbounds i8, ptr %18, i64 64 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %.sroa.57.0..sroa_idx.i, ptr noundef nonnull align 1 dereferenceable(15) %.sroa.7.i, i64 15, i1 false), !noalias !236 call void @llvm.lifetime.end.p0(i64 15, ptr nonnull %.sroa.7.i) store i8 %.sroa.0.0.copyload3.i.us, ptr %5, align 8, !noalias !236 - call void @_RINvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB7_4IterNtNtCseG2FYMysgNb_3wax5token5TokenENtNtNtNtBb_4iter6traits8iterator8Iterator4foldINtNtBS_8variance8VarianceNtB2c_13InvariantSizeENCINvNtNtB1v_8adapters3map8map_foldRBQ_B29_B29_NvYB3u_INtB2c_12UnitVarianceB2z_E13unit_varianceNvYB29_NtNtNtBb_3ops5arith3Add3addE0EBU_.llvm.11100904734654111133(ptr noalias nocapture noundef nonnull sret([16 x i8]) align 8 dereferenceable(16) %6, ptr noundef nonnull %23, ptr noundef nonnull %20, ptr noalias nocapture noundef nonnull align 8 dereferenceable(16) %5) #34, !noalias !237 + call void @_RINvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB7_4IterNtNtCseG2FYMysgNb_3wax5token5TokenENtNtNtNtBb_4iter6traits8iterator8Iterator4foldINtNtBS_8variance8VarianceNtB2c_13InvariantSizeENCINvNtNtB1v_8adapters3map8map_foldRBQ_B29_B29_NvYB3u_INtB2c_12UnitVarianceB2z_E13unit_varianceNvYB29_NtNtNtBb_3ops5arith3Add3addE0EBU_.llvm.11100904734654111133(ptr noalias nocapture noundef nonnull sret([16 x i8]) align 8 dereferenceable(16) %6, ptr noundef nonnull %24, ptr noundef nonnull %21, ptr noalias nocapture noundef nonnull align 8 dereferenceable(16) %5) #34, !noalias !237 %.pre9 = load i8, ptr %6, align 8, !range !238, !noalias !239 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) %.not21.i.us = icmp eq i8 %.pre9, 2 %.sroa.58.0.copyload.i.us = load i8, ptr %.sroa.58.0..sroa_idx.i, align 1, !noalias !240 - %24 = trunc i8 %.pre9 to i1 + %25 = trunc i8 %.pre9 to i1 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6), !noalias !225 - %25 = icmp eq i8 %.sroa.58.0.copyload.i.us, %13 - %26 = select i1 %.not21.i.us, i1 true, i1 %25 - %or.cond.us = select i1 %24, i1 %26, i1 false - %.not22.i.us = icmp ne ptr %15, %8 + %26 = icmp eq i8 %.sroa.58.0.copyload.i.us, %13 + %27 = select i1 %.not21.i.us, i1 true, i1 %26 + %or.cond.us = select i1 %25, i1 %27, i1 false + %.not22.i.us = icmp ne ptr %16, %8 %or.cond.not = select i1 %or.cond.us, i1 %.not22.i.us, i1 false br i1 %or.cond.not, label %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i.us, label %_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit.loopexit.loopexit -_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i: ; preds = %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.lr.ph.i, %38 - %27 = phi ptr [ %28, %38 ], [ %.promoted.i, %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.lr.ph.i ] - %28 = getelementptr inbounds i8, ptr %27, i64 24 - store ptr %28, ptr %0, align 8, !alias.scope !213, !noalias !216 +_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i: ; preds = %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i.preheader, %39 + %28 = phi ptr [ %29, %39 ], [ %.promoted.i, %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i.preheader ] + %29 = getelementptr inbounds i8, ptr %28, i64 24 + store ptr %29, ptr %0, align 8, !alias.scope !213, !noalias !216 tail call void @llvm.experimental.noalias.scope.decl(metadata !218) - %29 = getelementptr inbounds i8, ptr %27, i64 8 - %30 = load ptr, ptr %29, align 8, !alias.scope !218, !noalias !221, !nonnull !5, !noundef !5 - %31 = getelementptr inbounds i8, ptr %27, i64 16 - %32 = load i64, ptr %31, align 8, !alias.scope !218, !noalias !221, !noundef !5 - %33 = getelementptr inbounds { { i64, [5 x i64] }, { i64, i64 } }, ptr %30, i64 %32 + %30 = getelementptr inbounds i8, ptr %28, i64 8 + %31 = load ptr, ptr %30, align 8, !alias.scope !218, !noalias !221, !nonnull !5, !noundef !5 + %32 = getelementptr inbounds i8, ptr %28, i64 16 + %33 = load i64, ptr %32, align 8, !alias.scope !218, !noalias !221, !noundef !5 + %34 = getelementptr inbounds { { i64, [5 x i64] }, { i64, i64 } }, ptr %31, i64 %33 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6), !noalias !225 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) call void @llvm.lifetime.start.p0(i64 15, ptr nonnull %.sroa.7.i) - %34 = icmp eq i64 %32, 0 - br i1 %34, label %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.thread, label %_RNvXs0_NtNtNtCs1LoaDTb72WA_4core4iter8adapters3mapINtB5_3MapINtNtNtBb_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1m_INtNtB1o_8variance12UnitVarianceNtB26_13InvariantSizeE13unit_varianceENtNtNtB9_6traits8iterator8Iterator4nextB1q_.llvm.5393772610634076635.exit.i + %35 = icmp eq i64 %33, 0 + br i1 %35, label %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.thread, label %_RNvXs0_NtNtNtCs1LoaDTb72WA_4core4iter8adapters3mapINtB5_3MapINtNtNtBb_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1m_INtNtB1o_8variance12UnitVarianceNtB26_13InvariantSizeE13unit_varianceENtNtNtB9_6traits8iterator8Iterator4nextB1q_.llvm.5393772610634076635.exit.i _RNvXs0_NtNtNtCs1LoaDTb72WA_4core4iter8adapters3mapINtB5_3MapINtNtNtBb_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1m_INtNtB1o_8variance12UnitVarianceNtB26_13InvariantSizeE13unit_varianceENtNtNtB9_6traits8iterator8Iterator4nextB1q_.llvm.5393772610634076635.exit.i: ; preds = %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4), !noalias !228 - call void @_RNvXs9_NtCseG2FYMysgNb_3wax5tokenRNtB5_5TokenINtNtB5_8variance12UnitVarianceNtBK_13InvariantSizeE13unit_varianceB7_(ptr noalias nocapture noundef nonnull sret([16 x i8]) align 8 dereferenceable(16) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %30) #33, !noalias !234 + call void @_RNvXs9_NtCseG2FYMysgNb_3wax5tokenRNtB5_5TokenINtNtB5_8variance12UnitVarianceNtBK_13InvariantSizeE13unit_varianceB7_(ptr noalias nocapture noundef nonnull sret([16 x i8]) align 8 dereferenceable(16) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %31) #33, !noalias !234 %.sroa.0.0.copyload3.i = load i8, ptr %4, align 8, !noalias !235 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %.sroa.7.i, ptr noundef nonnull align 1 dereferenceable(15) %.sroa.7.0..sroa_idx4.i, i64 15, i1 false), !noalias !235 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4), !noalias !228 - %35 = icmp eq i8 %.sroa.0.0.copyload3.i, 2 - br i1 %35, label %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.thread, label %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit + %36 = icmp eq i8 %.sroa.0.0.copyload3.i, 2 + br i1 %36, label %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.thread, label %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit _RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.thread: ; preds = %_RNvXs0_NtNtNtCs1LoaDTb72WA_4core4iter8adapters3mapINtB5_3MapINtNtNtBb_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1m_INtNtB1o_8variance12UnitVarianceNtB26_13InvariantSizeE13unit_varianceENtNtNtB9_6traits8iterator8Iterator4nextB1q_.llvm.5393772610634076635.exit.i, %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i call void @llvm.lifetime.end.p0(i64 15, ptr nonnull %.sroa.7.i) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6), !noalias !225 - br label %38 + br label %39 _RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit: ; preds = %_RNvXs0_NtNtNtCs1LoaDTb72WA_4core4iter8adapters3mapINtB5_3MapINtNtNtBb_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1m_INtNtB1o_8variance12UnitVarianceNtB26_13InvariantSizeE13unit_varianceENtNtNtB9_6traits8iterator8Iterator4nextB1q_.llvm.5393772610634076635.exit.i - %36 = getelementptr inbounds i8, ptr %30, i64 64 + %37 = getelementptr inbounds i8, ptr %31, i64 64 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %.sroa.57.0..sroa_idx.i, ptr noundef nonnull align 1 dereferenceable(15) %.sroa.7.i, i64 15, i1 false), !noalias !236 call void @llvm.lifetime.end.p0(i64 15, ptr nonnull %.sroa.7.i) store i8 %.sroa.0.0.copyload3.i, ptr %5, align 8, !noalias !236 - call void @_RINvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB7_4IterNtNtCseG2FYMysgNb_3wax5token5TokenENtNtNtNtBb_4iter6traits8iterator8Iterator4foldINtNtBS_8variance8VarianceNtB2c_13InvariantSizeENCINvNtNtB1v_8adapters3map8map_foldRBQ_B29_B29_NvYB3u_INtB2c_12UnitVarianceB2z_E13unit_varianceNvYB29_NtNtNtBb_3ops5arith3Add3addE0EBU_.llvm.11100904734654111133(ptr noalias nocapture noundef nonnull sret([16 x i8]) align 8 dereferenceable(16) %6, ptr noundef nonnull %36, ptr noundef nonnull %33, ptr noalias nocapture noundef nonnull align 8 dereferenceable(16) %5) #34, !noalias !237 + call void @_RINvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB7_4IterNtNtCseG2FYMysgNb_3wax5token5TokenENtNtNtNtBb_4iter6traits8iterator8Iterator4foldINtNtBS_8variance8VarianceNtB2c_13InvariantSizeENCINvNtNtB1v_8adapters3map8map_foldRBQ_B29_B29_NvYB3u_INtB2c_12UnitVarianceB2z_E13unit_varianceNvYB29_NtNtNtBb_3ops5arith3Add3addE0EBU_.llvm.11100904734654111133(ptr noalias nocapture noundef nonnull sret([16 x i8]) align 8 dereferenceable(16) %6, ptr noundef nonnull %37, ptr noundef nonnull %34, ptr noalias nocapture noundef nonnull align 8 dereferenceable(16) %5) #34, !noalias !237 %.pre = load i8, ptr %6, align 8, !range !238, !noalias !239 %.pre.fr = freeze i8 %.pre call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) - %.not21.i = icmp eq i8 %.pre.fr, 2 - %.sroa.7.0.copyload.i = load i64, ptr %.sroa.7.0..sroa_idx.i, align 8, !noalias !240 - %37 = trunc i8 %.pre.fr to i1 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6), !noalias !225 - %spec.select = select i1 %.not21.i, i64 0, i64 %.sroa.7.0.copyload.i - br label %38 + %38 = trunc i8 %.pre.fr to i1 + br label %39 -38: ; preds = %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.thread - %39 = phi i1 [ false, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.thread ], [ %37, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit ] - %40 = phi i64 [ 0, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.thread ], [ %spec.select, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit ] - %41 = icmp ne i64 %12, %40 - %or.cond5.not = select i1 %39, i1 true, i1 %41 - %.not22.i = icmp eq ptr %28, %8 +39: ; preds = %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.thread + %40 = phi i1 [ false, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.thread ], [ %38, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit ] + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6), !noalias !225 + %or.cond5.not = select i1 %40, i1 true, i1 %14 + %.not22.i = icmp eq ptr %29, %8 %or.cond21 = select i1 %or.cond5.not, i1 true, i1 %.not22.i br i1 %or.cond21, label %_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit, label %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i @@ -912,8 +909,8 @@ _RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3Ve %.lcssa.i.ph.ph = xor i1 %or.cond.us, true br label %_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit -_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit: ; preds = %38, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.us.thread, %_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit.loopexit.loopexit, %3 - %.lcssa.i = phi i1 [ false, %3 ], [ true, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.us.thread ], [ %.lcssa.i.ph.ph, %_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit.loopexit.loopexit ], [ %or.cond5.not, %38 ] +_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit: ; preds = %39, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.us.thread, %_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit.loopexit.loopexit, %3 + %.lcssa.i = phi i1 [ false, %3 ], [ true, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.us.thread ], [ %.lcssa.i.ph.ph, %_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit.loopexit.loopexit ], [ %or.cond5.not, %39 ] ret i1 %.lcssa.i } diff --git a/bench/typst-rs/optimized/2d3c2n5y91mtl0x0.ll b/bench/typst-rs/optimized/2d3c2n5y91mtl0x0.ll index 065da6c298c..9f0547c677a 100644 --- a/bench/typst-rs/optimized/2d3c2n5y91mtl0x0.ll +++ b/bench/typst-rs/optimized/2d3c2n5y91mtl0x0.ll @@ -2877,21 +2877,13 @@ define hidden void @"_ZN136_$LT$palette..alpha..alpha..Alpha$LT$C2$C$T$GT$$u20$a %.0.i6.i.i = select i1 %5, float %.sroa.5.0.copyload, float %6 %7 = fmul float %.sroa.4.0.copyload, %.0.i6.i.i %8 = fadd float %.sroa.5.0.copyload, %7 - %or.cond1.i.i.i = tail call i1 @llvm.is.fpclass.f32(float %8, i32 408) - %9 = bitcast float %8 to i32 - %10 = and i32 %9, 2139095040 - %11 = icmp ne i32 %10, 0 - %.0.i.i.i.i = and i1 %or.cond1.i.i.i, %11 - %12 = fmul float %7, 2.000000e+00 - %13 = fdiv float %12, %8 - %.0.i.i.i = select i1 %.0.i.i.i.i, float %13, float 0.000000e+00 store float %.sroa.01.0.copyload, ptr %0, align 4 %.sroa.43.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4 - store float %.0.i.i.i, ptr %.sroa.43.0..sroa_idx, align 4 + store float 0.000000e+00, ptr %.sroa.43.0..sroa_idx, align 4 %.sroa.54.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store float %8, ptr %.sroa.54.0..sroa_idx, align 4 - %14 = getelementptr inbounds i8, ptr %0, i64 12 - store float %4, ptr %14, align 4 + %9 = getelementptr inbounds i8, ptr %0, i64 12 + store float %4, ptr %9, align 4 ret void } @@ -4273,7 +4265,7 @@ define hidden void @"_ZN145_$LT$wasmi..module..init_expr..ConstExpr..eval_with_c ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable define hidden void @"_ZN152_$LT$palette..hsv..Hsv$LT$S$C$T$GT$$u20$as$u20$palette..convert..from_into_color_unclamped..FromColorUnclamped$LT$palette..hsl..Hsl$LT$S$C$T$GT$$GT$$GT$20from_color_unclamped17h6240aa7dcc79477aE.llvm.3683678558897460461"(ptr noalias nocapture noundef writeonly sret({ { float }, float, float, {} }) align 4 dereferenceable(12) %0, ptr noalias nocapture noundef readonly align 4 dereferenceable(12) %1) unnamed_addr #4 personality ptr @rust_eh_personality { -"_ZN64_$LT$bool$u20$as$u20$palette..bool_mask..LazySelect$LT$T$GT$$GT$11lazy_select17hf221bef93475121cE.exit": +"_ZN64_$LT$bool$u20$as$u20$palette..bool_mask..LazySelect$LT$T$GT$$GT$11lazy_select17hdeff3b891d22421dE.exit": %2 = getelementptr inbounds i8, ptr %1, i64 8 %.val = load float, ptr %2, align 4, !noundef !7 %3 = fcmp olt float %.val, 5.000000e-01 @@ -4283,20 +4275,12 @@ define hidden void @"_ZN152_$LT$palette..hsv..Hsv$LT$S$C$T$GT$$u20$as$u20$palett %6 = load float, ptr %5, align 4, !noundef !7 %7 = fmul float %6, %.0.i6 %8 = fadd float %.val, %7 - %or.cond1.i = tail call i1 @llvm.is.fpclass.f32(float %8, i32 408) - %9 = bitcast float %8 to i32 - %10 = and i32 %9, 2139095040 - %11 = icmp ne i32 %10, 0 - %.0.i.i = and i1 %or.cond1.i, %11 - %12 = fmul float %7, 2.000000e+00 - %13 = fdiv float %12, %8 - %.0.i = select i1 %.0.i.i, float %13, float 0.000000e+00 %.sroa.02.0.copyload = load float, ptr %1, align 4 store float %.sroa.02.0.copyload, ptr %0, align 4 - %14 = getelementptr inbounds i8, ptr %0, i64 4 - store float %.0.i, ptr %14, align 4 - %15 = getelementptr inbounds i8, ptr %0, i64 8 - store float %8, ptr %15, align 4 + %9 = getelementptr inbounds i8, ptr %0, i64 4 + store float 0.000000e+00, ptr %9, align 4 + %10 = getelementptr inbounds i8, ptr %0, i64 8 + store float %8, ptr %10, align 4 ret void } @@ -31386,20 +31370,12 @@ define hidden void @"_ZN94_$LT$T$u20$as$u20$palette..convert..from_into_color_un %7 = load float, ptr %6, align 4, !alias.scope !6219, !noalias !6216, !noundef !7 %8 = fmul float %7, %.0.i6.i %9 = fadd float %.val.i, %8 - %or.cond1.i.i = tail call i1 @llvm.is.fpclass.f32(float %9, i32 408) - %10 = bitcast float %9 to i32 - %11 = and i32 %10, 2139095040 - %12 = icmp ne i32 %11, 0 - %.0.i.i.i = and i1 %or.cond1.i.i, %12 - %13 = fmul float %8, 2.000000e+00 - %14 = fdiv float %13, %9 - %.0.i.i = select i1 %.0.i.i.i, float %14, float 0.000000e+00 %.sroa.02.0.copyload.i = load float, ptr %1, align 4, !alias.scope !6219, !noalias !6216 store float %.sroa.02.0.copyload.i, ptr %0, align 4, !alias.scope !6216, !noalias !6219 - %15 = getelementptr inbounds i8, ptr %0, i64 4 - store float %.0.i.i, ptr %15, align 4, !alias.scope !6216, !noalias !6219 - %16 = getelementptr inbounds i8, ptr %0, i64 8 - store float %9, ptr %16, align 4, !alias.scope !6216, !noalias !6219 + %10 = getelementptr inbounds i8, ptr %0, i64 4 + store float 0.000000e+00, ptr %10, align 4, !alias.scope !6216, !noalias !6219 + %11 = getelementptr inbounds i8, ptr %0, i64 8 + store float %9, ptr %11, align 4, !alias.scope !6216, !noalias !6219 ret void } @@ -175036,32 +175012,29 @@ declare hidden void @_ZN5typst4diag16SourceDiagnostic9with_hint17hdec3f3e8bb2d98 ; Function Attrs: nonlazybind uwtable declare void @"_ZN84_$LT$typst..text..raw..RawContent$u20$as$u20$typst..foundations..cast..FromValue$GT$10from_value17hd2b6fabe491faab1E"(ptr noalias nocapture noundef sret({ i64, [2 x i64] }) align 8 dereferenceable(24), ptr noalias nocapture noundef align 8 dereferenceable(32)) unnamed_addr #1 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i1 @llvm.is.fpclass.f32(float, i32 immarg) #53 - ; Function Attrs: nofree nounwind nonlazybind willreturn memory(argmem: read) -declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #54 +declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #53 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #53 +declare i64 @llvm.umax.i64(i64, i64) #54 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i8 @llvm.umin.i8(i8, i8) #53 +declare i8 @llvm.umin.i8(i8, i8) #54 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare double @llvm.fabs.f64(double) #53 +declare double @llvm.fabs.f64(double) #54 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #53 +declare i64 @llvm.umin.i64(i64, i64) #54 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #55 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i8 @llvm.ucmp.i8.i64(i64, i64) #53 +declare i8 @llvm.ucmp.i8.i64(i64, i64) #54 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i8 @llvm.scmp.i8.i64(i64, i64) #53 +declare i8 @llvm.scmp.i8.i64(i64, i64) #54 attributes #0 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } @@ -175116,8 +175089,8 @@ attributes #49 = { nounwind nonlazybind allockind("free") uwtable "alloc-family" attributes #50 = { cold noreturn nounwind memory(inaccessiblemem: write) } attributes #51 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #52 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #53 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #54 = { nofree nounwind nonlazybind willreturn memory(argmem: read) } +attributes #53 = { nofree nounwind nonlazybind willreturn memory(argmem: read) } +attributes #54 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #55 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } attributes #56 = { cold } attributes #57 = { nounwind } diff --git a/bench/velox/optimized/ScanTracker.cpp.ll b/bench/velox/optimized/ScanTracker.cpp.ll index 8f0af73287f..f31ece57fed 100644 --- a/bench/velox/optimized/ScanTracker.cpp.ll +++ b/bench/velox/optimized/ScanTracker.cpp.ll @@ -60,9 +60,6 @@ $_ZN5folly6detail21safe_assert_msg_typesINS0_22safe_assert_msg_type_sIJLNS0_20sa $_ZZN5folly3f146detail8F14ChunkIjE6setTagEmmE30__folly_detail_safe_assert_arg_0 = comdat any @.str = private unnamed_addr constant [17 x i8] c"ScanTracker for \00", align 1 -@.str.1 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@.str.2 = private unnamed_addr constant [3 x i8] c"% \00", align 1 -@.str.3 = private unnamed_addr constant [2 x i8] c"/\00", align 1 @_ZSt19piecewise_construct = linkonce_odr constant %"struct.std::piecewise_construct_t" zeroinitializer, comdat, align 1 @_ZTISt9bad_alloc = external constant ptr @_ZTVSt9bad_alloc = external unnamed_addr constant { [5 x ptr] }, align 8 @@ -260,98 +257,26 @@ entry: call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %out) %add.ptr = getelementptr inbounds i8, ptr %out, i64 16 %call = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %add.ptr, ptr noundef nonnull @.str) - to label %invoke.cont unwind label %lpad.loopexit.split-lp + to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %id_ = getelementptr inbounds i8, ptr %this, i64 40 %call3 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %call, ptr noundef nonnull align 8 dereferenceable(32) %id_) - to label %invoke.cont2 unwind label %lpad.loopexit.split-lp + to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont %call5 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %call3, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) - to label %invoke.cont8 unwind label %lpad.loopexit.split-lp - -invoke.cont8: ; preds = %invoke.cont2 - %data_ = getelementptr inbounds i8, ptr %this, i64 104 - %sizeAndPackedBegin_.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 124 - %0 = load i32, ptr %sizeAndPackedBegin_.i.i.i.i, align 4 - %cmp.not.i.i.i = icmp eq i32 %0, 0 - %1 = load ptr, ptr %data_, align 8 - br i1 %cmp.not.i.i.i, label %for.end, label %for.body.preheader - -for.body.preheader: ; preds = %invoke.cont8 - %conv.i.i.i = zext i32 %0 to i64 - %add.ptr.i.i.i = getelementptr inbounds %"struct.std::pair", ptr %1, i64 %conv.i.i.i - br label %for.body - -for.body: ; preds = %for.body.preheader, %for.inc - %__begin2.sroa.0.010.pn = phi ptr [ %__begin2.sroa.0.010, %for.inc ], [ %add.ptr.i.i.i, %for.body.preheader ] - %__begin2.sroa.0.010 = getelementptr inbounds i8, ptr %__begin2.sroa.0.010.pn, i64 -32 - %second = getelementptr inbounds i8, ptr %__begin2.sroa.0.010.pn, i64 -24 - %readBytes = getelementptr inbounds i8, ptr %__begin2.sroa.0.010.pn, i64 -16 - %2 = load i64, ptr %readBytes, align 8 - %mul = mul nsw i64 %2, 100 - %3 = load i64, ptr %second, align 8 - %add = add nsw i64 %3, 1 - %div = sdiv i64 %mul, %add - %conv = trunc i64 %div to i32 - %4 = load i32, ptr %__begin2.sroa.0.010, align 4 - %call19 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %add.ptr, i32 noundef %4) - to label %invoke.cont18 unwind label %lpad.loopexit - -invoke.cont18: ; preds = %for.body - %call21 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call19, ptr noundef nonnull @.str.1) - to label %invoke.cont20 unwind label %lpad.loopexit - -invoke.cont20: ; preds = %invoke.cont18 - %call23 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %call21, i32 noundef %conv) - to label %invoke.cont22 unwind label %lpad.loopexit - -invoke.cont22: ; preds = %invoke.cont20 - %call25 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call23, ptr noundef nonnull @.str.2) - to label %invoke.cont24 unwind label %lpad.loopexit - -invoke.cont24: ; preds = %invoke.cont22 - %5 = load i64, ptr %readBytes, align 8 - %call29 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %call25, i64 noundef %5) - to label %invoke.cont28 unwind label %lpad.loopexit - -invoke.cont28: ; preds = %invoke.cont24 - %call31 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call29, ptr noundef nonnull @.str.3) - to label %invoke.cont30 unwind label %lpad.loopexit - -invoke.cont30: ; preds = %invoke.cont28 - %numReads = getelementptr inbounds i8, ptr %__begin2.sroa.0.010.pn, i64 -4 - %6 = load i32, ptr %numReads, align 4 - %call34 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %call31, i32 noundef %6) - to label %invoke.cont33 unwind label %lpad.loopexit - -invoke.cont33: ; preds = %invoke.cont30 - %call36 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %call34, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) - to label %for.inc unwind label %lpad.loopexit - -for.inc: ; preds = %invoke.cont33 - %cmp.i = icmp eq ptr %__begin2.sroa.0.010, %1 - br i1 %cmp.i, label %for.end, label %for.body - -lpad.loopexit: ; preds = %for.body, %invoke.cont18, %invoke.cont20, %invoke.cont22, %invoke.cont24, %invoke.cont28, %invoke.cont30, %invoke.cont33 - %lpad.loopexit8 = landingpad { ptr, i32 } - cleanup - br label %lpad + to label %for.end unwind label %lpad -lpad.loopexit.split-lp: ; preds = %entry, %invoke.cont, %invoke.cont2, %for.end - %lpad.loopexit.split-lp9 = landingpad { ptr, i32 } +lpad: ; preds = %for.end, %invoke.cont2, %invoke.cont, %entry + %0 = landingpad { ptr, i32 } cleanup - br label %lpad - -lpad: ; preds = %lpad.loopexit.split-lp, %lpad.loopexit - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit8, %lpad.loopexit ], [ %lpad.loopexit.split-lp9, %lpad.loopexit.split-lp ] call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %out) #19 - resume { ptr, i32 } %lpad.phi + resume { ptr, i32 } %0 -for.end: ; preds = %for.inc, %invoke.cont8 +for.end: ; preds = %invoke.cont2 invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr sret(%"class.std::__cxx11::basic_string") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(128) %out) - to label %invoke.cont39 unwind label %lpad.loopexit.split-lp + to label %invoke.cont39 unwind label %lpad invoke.cont39: ; preds = %for.end call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %out) #19 @@ -368,10 +293,6 @@ declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr nou declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #2 -declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #2 - -declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) local_unnamed_addr #2 - declare void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #2 ; Function Attrs: nounwind diff --git a/bench/velox/optimized/SimpleFunctionRegistry.cpp.ll b/bench/velox/optimized/SimpleFunctionRegistry.cpp.ll index c68bbe6d6bb..7a59853c8c4 100644 --- a/bench/velox/optimized/SimpleFunctionRegistry.cpp.ll +++ b/bench/velox/optimized/SimpleFunctionRegistry.cpp.ll @@ -3488,13 +3488,13 @@ call5.i.i.i.i.noexc: ; preds = %if.then.i %.pre = load ptr, ptr %__x, align 8 %.pre11 = load ptr, ptr %_M_finish.i.i, align 8 %.pre12 = load i32, ptr %_M_offset.i.i.i, align 8 - %.pre13 = ptrtoint ptr %.pre11 to i64 - %.pre14 = ptrtoint ptr %.pre to i64 - %.pre15 = sub i64 %.pre13, %.pre14 + %.pre14 = ptrtoint ptr %.pre11 to i64 + %.pre15 = ptrtoint ptr %.pre to i64 + %.pre16 = sub i64 %.pre14, %.pre15 br label %invoke.cont5 invoke.cont5: ; preds = %call5.i.i.i.i.noexc, %entry - %sub.ptr.sub.i.i.i.i.i.i.pre-phi = phi i64 [ %.pre15, %call5.i.i.i.i.noexc ], [ %sub.ptr.sub.i.i, %entry ] + %sub.ptr.sub.i.i.i.i.i.i.pre-phi = phi i64 [ %.pre16, %call5.i.i.i.i.noexc ], [ %sub.ptr.sub.i.i, %entry ] %6 = phi ptr [ %call5.i.i.i.i4, %call5.i.i.i.i.noexc ], [ null, %entry ] %7 = phi i32 [ %.pre12, %call5.i.i.i.i.noexc ], [ %1, %entry ] %8 = phi ptr [ %.pre11, %call5.i.i.i.i.noexc ], [ %0, %entry ] @@ -3507,65 +3507,34 @@ if.then.i.i.i.i.i.i: ; preds = %invoke.cont5 br label %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i _ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i: ; preds = %if.then.i.i.i.i.i.i, %invoke.cont5 + %add.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %sub.ptr.sub.i.i.i.i.i.i.pre-phi %cmp20.i.i.i.i.i.not.i = icmp eq i32 %7, 0 br i1 %cmp20.i.i.i.i.i.not.i, label %invoke.cont11, label %for.body.i.i.i.i.i.preheader.i for.body.i.i.i.i.i.preheader.i: ; preds = %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i - %add.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %sub.ptr.sub.i.i.i.i.i.i.pre-phi %conv.i.i.i.i.i.i.i = zext i32 %7 to i64 + %.pre13 = load i64, ptr %add.ptr.i.i.i.i.i.i, align 8 + %10 = and i64 %.pre13, -2 br label %for.body.i.i.i.i.i.i -for.body.i.i.i.i.i.i: ; preds = %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i, %for.body.i.i.i.i.i.preheader.i - %__n.025.i.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i.i, %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i ], [ %conv.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.preheader.i ] - %__first.sroa.5.024.i.i.i.i.i.i = phi i32 [ %spec.select19.i.i.i.i.i.i, %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i ], [ 0, %for.body.i.i.i.i.i.preheader.i ] - %__first.sroa.0.023.i.i.i.i.i.i = phi ptr [ %spec.select.i.i.i.i.i.i, %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i ], [ %8, %for.body.i.i.i.i.i.preheader.i ] - %__result.sroa.0.022.i.i.i.i.i.i = phi ptr [ %__result.sroa.0.1.i.i.i.i.i.i, %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i ], [ %add.ptr.i.i.i.i.i.i, %for.body.i.i.i.i.i.preheader.i ] - %__result.sroa.5.021.i.i.i.i.i.i = phi i32 [ %__result.sroa.5.1.i.i.i.i.i.i, %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i ], [ 0, %for.body.i.i.i.i.i.preheader.i ] - %sh_prom.i.i.i.i.i.i.i = zext nneg i32 %__first.sroa.5.024.i.i.i.i.i.i to i64 - %shl.i.i.i.i.i.i.i = shl nuw i64 1, %sh_prom.i.i.i.i.i.i.i - %10 = load i64, ptr %__first.sroa.0.023.i.i.i.i.i.i, align 8 - %and.i.i.i.i.i.i.i.i = and i64 %10, %shl.i.i.i.i.i.i.i - %tobool.i.i.not.i.i.i.i.i.i = icmp eq i64 %and.i.i.i.i.i.i.i.i, 0 - %sh_prom.i4.i.i.i.i.i.i = zext nneg i32 %__result.sroa.5.021.i.i.i.i.i.i to i64 - %shl.i5.i.i.i.i.i.i = shl nuw i64 1, %sh_prom.i4.i.i.i.i.i.i - br i1 %tobool.i.i.not.i.i.i.i.i.i, label %if.else.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i - -if.then.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i - %11 = load i64, ptr %__result.sroa.0.022.i.i.i.i.i.i, align 8 - %or.i.i.i.i.i.i.i = or i64 %11, %shl.i5.i.i.i.i.i.i - br label %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i - -if.else.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i - %not.i.i.i.i.i.i.i = xor i64 %shl.i5.i.i.i.i.i.i, -1 - %12 = load i64, ptr %__result.sroa.0.022.i.i.i.i.i.i, align 8 - %and.i.i.i.i.i.i.i = and i64 %12, %not.i.i.i.i.i.i.i - br label %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i - -_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i: ; preds = %if.else.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i - %storemerge.i.i.i.i.i.i = phi i64 [ %and.i.i.i.i.i.i.i, %if.else.i.i.i.i.i.i.i ], [ %or.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i ] - store i64 %storemerge.i.i.i.i.i.i, ptr %__result.sroa.0.022.i.i.i.i.i.i, align 8 - %inc.i.i.i.i.i.i.i.i = add i32 %__first.sroa.5.024.i.i.i.i.i.i, 1 - %cmp.i.i.i.i.i.i.i.i = icmp eq i32 %__first.sroa.5.024.i.i.i.i.i.i, 63 - %spec.select.idx.i.i.i.i.i.i = select i1 %cmp.i.i.i.i.i.i.i.i, i64 8, i64 0 - %spec.select.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.023.i.i.i.i.i.i, i64 %spec.select.idx.i.i.i.i.i.i - %spec.select19.i.i.i.i.i.i = select i1 %cmp.i.i.i.i.i.i.i.i, i32 0, i32 %inc.i.i.i.i.i.i.i.i - %inc.i.i7.i.i.i.i.i.i = add i32 %__result.sroa.5.021.i.i.i.i.i.i, 1 - %cmp.i.i8.i.i.i.i.i.i = icmp eq i32 %__result.sroa.5.021.i.i.i.i.i.i, 63 - %__result.sroa.5.1.i.i.i.i.i.i = select i1 %cmp.i.i8.i.i.i.i.i.i, i32 0, i32 %inc.i.i7.i.i.i.i.i.i - %__result.sroa.0.1.idx.i.i.i.i.i.i = select i1 %cmp.i.i8.i.i.i.i.i.i, i64 8, i64 0 - %__result.sroa.0.1.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.sroa.0.022.i.i.i.i.i.i, i64 %__result.sroa.0.1.idx.i.i.i.i.i.i +for.body.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i, %for.body.i.i.i.i.i.preheader.i + %__n.025.i.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ], [ %conv.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.preheader.i ] + %11 = load i64, ptr %8, align 8 + %and.i.i.i.i.i.i.i.i = and i64 %11, 1 + %storemerge.i.i.i.i.i.i = or disjoint i64 %10, %and.i.i.i.i.i.i.i.i + store i64 %storemerge.i.i.i.i.i.i, ptr %add.ptr.i.i.i.i.i.i, align 8 %dec.i.i.i.i.i.i = add nsw i64 %__n.025.i.i.i.i.i.i, -1 - %cmp.i.i.i.i.i.i = icmp sgt i64 %__n.025.i.i.i.i.i.i, 1 + %cmp.i.i.i.i.i.i = icmp ugt i64 %__n.025.i.i.i.i.i.i, 1 br i1 %cmp.i.i.i.i.i.i, label %for.body.i.i.i.i.i.i, label %invoke.cont11, !llvm.loop !29 -invoke.cont11: ; preds = %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i +invoke.cont11: ; preds = %for.body.i.i.i.i.i.i, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i ret void lpad4: ; preds = %if.then.i - %13 = landingpad { ptr, i32 } + %12 = landingpad { ptr, i32 } cleanup tail call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %this) #15 - resume { ptr, i32 } %13 + resume { ptr, i32 } %12 } ; Function Attrs: mustprogress uwtable diff --git a/bench/verilator/optimized/V3Ast.cpp.ll b/bench/verilator/optimized/V3Ast.cpp.ll index eae8708bd4e..e3db16610e4 100644 --- a/bench/verilator/optimized/V3Ast.cpp.ll +++ b/bench/verilator/optimized/V3Ast.cpp.ll @@ -1825,50 +1825,33 @@ define dso_local noundef ptr @_ZNK7AstNode6abovepEv(ptr noundef nonnull align 8 %2 = getelementptr inbounds i8, ptr %0, i64 8 %3 = load ptr, ptr %2, align 8 %.not = icmp eq ptr %3, null - %.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 16 - %.pre = load ptr, ptr %.phi.trans.insert, align 8 - %.not.i3 = icmp eq ptr %.pre, null br i1 %.not, label %.critedge, label %4 4: ; preds = %1 - br i1 %.not.i3, label %select.unfold, label %5 - -5: ; preds = %4 - %6 = getelementptr inbounds i8, ptr %.pre, i64 8 - %7 = load ptr, ptr %6, align 8 - %.not1.i = icmp eq ptr %7, %0 - br i1 %.not1.i, label %select.unfold, label %_ZNK7AstNode11firstAbovepEv.exit6 - -select.unfold: ; preds = %5, %4 - %8 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKcib(i8 4, ptr noundef nonnull @.str.557, i32 noundef 92, i1 noundef zeroext false) - %9 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() - %10 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull @.str.558) - tail call void @_ZNK7AstNode15v3errorEndFatalERNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef nonnull align 8 dereferenceable(112) %10) #26 - unreachable + %5 = getelementptr inbounds i8, ptr %0, i64 16 + %6 = load ptr, ptr %5, align 8 + %.not.i = icmp eq ptr %6, null + br i1 %.not.i, label %select.unfold, label %7 -.critedge: ; preds = %1 - br i1 %.not.i3, label %_ZNK7AstNode11firstAbovepEv.exit6.thread, label %_ZNK7AstNode11firstAbovepEv.exit6 +7: ; preds = %4 + %8 = getelementptr inbounds i8, ptr %6, i64 8 + %9 = load ptr, ptr %8, align 8 + %.not1.i = icmp eq ptr %9, %0 + br i1 %.not1.i, label %select.unfold, label %.critedge -_ZNK7AstNode11firstAbovepEv.exit6.thread: ; preds = %.critedge - %11 = getelementptr inbounds i8, ptr %0, i64 80 - %12 = load ptr, ptr %11, align 8 - br label %17 +select.unfold: ; preds = %7, %4 + %10 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKcib(i8 4, ptr noundef nonnull @.str.557, i32 noundef 92, i1 noundef zeroext false) + %11 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() + %12 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull @.str.558) + tail call void @_ZNK7AstNode15v3errorEndFatalERNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef nonnull align 8 dereferenceable(112) %12) #26 + unreachable -_ZNK7AstNode11firstAbovepEv.exit6: ; preds = %5, %.critedge - %13 = getelementptr inbounds i8, ptr %.pre, i64 8 +.critedge: ; preds = %7, %1 + %13 = getelementptr inbounds i8, ptr %0, i64 80 %14 = load ptr, ptr %13, align 8 - %.fr = freeze ptr %14 - %.not1.i4 = icmp eq ptr %.fr, %0 - %15 = getelementptr inbounds i8, ptr %0, i64 80 + %15 = getelementptr inbounds i8, ptr %14, i64 16 %16 = load ptr, ptr %15, align 8 - %spec.select = select i1 %.not1.i4, ptr %16, ptr %0 - br label %17 - -17: ; preds = %_ZNK7AstNode11firstAbovepEv.exit6, %_ZNK7AstNode11firstAbovepEv.exit6.thread - %18 = phi ptr [ %12, %_ZNK7AstNode11firstAbovepEv.exit6.thread ], [ %spec.select, %_ZNK7AstNode11firstAbovepEv.exit6 ] - %19 = getelementptr inbounds i8, ptr %18, i64 16 - %20 = load ptr, ptr %19, align 8 - ret ptr %20 + ret ptr %16 } ; Function Attrs: mustprogress noreturn uwtable diff --git a/bench/wasmtime-rs/optimized/1f1skdqjemonth3f.ll b/bench/wasmtime-rs/optimized/1f1skdqjemonth3f.ll index aca3e689a4e..d11a83ef3cf 100644 --- a/bench/wasmtime-rs/optimized/1f1skdqjemonth3f.ll +++ b/bench/wasmtime-rs/optimized/1f1skdqjemonth3f.ll @@ -4510,7 +4510,7 @@ define internal fastcc noundef align 8 ptr @"_ZN10wasmparser9validator9operators "_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us72.preheader": ; preds = %9 %72 = load i8, ptr %8, align 8, !range !496, !alias.scope !520, !noalias !518, !noundef !13 %73 = icmp eq i8 %72, 6 - %.val.i.i.i133 = load i32, ptr %8, align 8, !alias.scope !520, !noalias !518 + %.val.i.i.i119 = load i32, ptr %8, align 8, !alias.scope !520, !noalias !518 %74 = load ptr, ptr %0, align 8, !nonnull !13, !align !35 %75 = getelementptr inbounds i8, ptr %74, i64 160 %76 = getelementptr inbounds i8, ptr %74, i64 144 @@ -4518,14 +4518,17 @@ define internal fastcc noundef align 8 ptr @"_ZN10wasmparser9validator9operators %78 = getelementptr inbounds i8, ptr %74, i64 136 %79 = getelementptr inbounds i8, ptr %74, i64 128 %80 = getelementptr inbounds i8, ptr %3, i64 8 - %.sroa.8.16.extract.trunc.us128 = select i1 %73, i32 6, i32 %.val.i.i.i133 - %81 = and i32 %.sroa.8.16.extract.trunc.us128, 255 + %.sroa.8.16.extract.trunc.us = select i1 %73, i32 6, i32 %.val.i.i.i119 + %81 = and i32 %.sroa.8.16.extract.trunc.us, 255 %82 = icmp eq i32 %81, 6 - br i1 %82, label %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.thread", label %.lr.ph + br i1 %82, label %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.thread", label %.lr.ph.preheader -.lr.ph: ; preds = %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us72.preheader" +.lr.ph.preheader: ; preds = %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us72.preheader" + %.sroa.4.0.extract.shift.i.us75 = lshr i32 %.sroa.8.16.extract.trunc.us, 8 + br label %.lr.ph + +.lr.ph: ; preds = %.lr.ph.backedge, %.lr.ph.preheader call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) - %.sroa.4.0.extract.shift.i.us75 = lshr i32 %.sroa.8.16.extract.trunc.us128, 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !507) %83 = load i64, ptr %75, align 8, !alias.scope !507, !noalias !510, !noundef !13 %84 = icmp eq i64 %83, 0 @@ -4573,22 +4576,25 @@ define internal fastcc noundef align 8 ptr @"_ZN10wasmparser9validator9operators .critedge45.i.us86: ; preds = %100, %.critedge.i.us83, %96, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h207cd845cf44cf18E.exit.i.us76", %.lr.ph %.sroa.0.0.insert.insert.i56.i.us87 = phi i32 [ %93, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h207cd845cf44cf18E.exit.i.us76" ], [ %93, %96 ], [ %93, %100 ], [ 8, %.lr.ph ], [ %93, %.critedge.i.us83 ] - call fastcc void @"_ZN10wasmparser9validator9operators30OperatorValidatorTemp$LT$R$GT$12_pop_operand17h53947c7feec77322E"(ptr noalias nocapture noundef nonnull align 8 dereferenceable(16) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %0, i32 %.sroa.8.16.extract.trunc.us128, i32 %.sroa.0.0.insert.insert.i56.i.us87) + call fastcc void @"_ZN10wasmparser9validator9operators30OperatorValidatorTemp$LT$R$GT$12_pop_operand17h53947c7feec77322E"(ptr noalias nocapture noundef nonnull align 8 dereferenceable(16) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %0, i32 %.sroa.8.16.extract.trunc.us, i32 %.sroa.0.0.insert.insert.i56.i.us87) %.pre101 = load i8, ptr %3, align 8, !range !48 %105 = trunc nuw i8 %.pre101 to i1 %106 = load ptr, ptr %80, align 8, !nonnull !13, !align !35 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) - br i1 %105, label %"_ZN112_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1861b5cb1ecc92ecE.exit.thread", label %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.thread" + br i1 %105, label %"_ZN112_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1861b5cb1ecc92ecE.exit.thread", label %.lr.ph.backedge + +.lr.ph.backedge: ; preds = %.critedge45.i.us86, %"_ZN10wasmparser9validator9operators30OperatorValidatorTemp$LT$R$GT$11pop_operand17h052a99c5a6520287E.llvm.8213084322371663677.exit.us88" + br label %.lr.ph "_ZN10wasmparser9validator9operators30OperatorValidatorTemp$LT$R$GT$11pop_operand17h052a99c5a6520287E.llvm.8213084322371663677.exit.us88": ; preds = %100 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) - br label %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.thread" + br label %.lr.ph.backedge "_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit": ; preds = %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.preheader", %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.backedge" - %.sroa.8.0127 = phi ptr [ %107, %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.backedge" ], [ %.val1.i.i, %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.preheader" ] - %107 = getelementptr inbounds i8, ptr %.sroa.8.0127, i64 -4 + %.sroa.8.0128 = phi ptr [ %107, %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.backedge" ], [ %.val1.i.i, %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.preheader" ] + %107 = getelementptr inbounds i8, ptr %.sroa.8.0128, i64 -4 %.sroa.02.0.copyload.i.i.i = load i8, ptr %107, align 1, !noalias !523 - %.sroa.4.0..0.1.sroa_idx.i.i.i = getelementptr inbounds i8, ptr %.sroa.8.0127, i64 -3 + %.sroa.4.0..0.1.sroa_idx.i.i.i = getelementptr inbounds i8, ptr %.sroa.8.0128, i64 -3 %.sroa.4.0.copyload.i.i.i = load i24, ptr %.sroa.4.0..0.1.sroa_idx.i.i.i, align 1, !noalias !523 %108 = zext i24 %.sroa.4.0.copyload.i.i.i to i32 %109 = shl nuw i32 %108, 8 @@ -4597,10 +4603,10 @@ define internal fastcc noundef align 8 ptr @"_ZN10wasmparser9validator9operators %112 = icmp eq i8 %.sroa.02.0.copyload.i.i.i, 6 br i1 %112, label %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.thread", label %141 -"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.thread": ; preds = %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit", %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.backedge", %25, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us", %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.preheader", %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us72.preheader", %"_ZN10wasmparser9validator9operators30OperatorValidatorTemp$LT$R$GT$11pop_operand17h052a99c5a6520287E.llvm.8213084322371663677.exit.us88", %.critedge45.i.us86 - %113 = phi ptr [ %77, %.critedge45.i.us86 ], [ %77, %"_ZN10wasmparser9validator9operators30OperatorValidatorTemp$LT$R$GT$11pop_operand17h052a99c5a6520287E.llvm.8213084322371663677.exit.us88" ], [ %77, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us72.preheader" ], [ %67, %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.preheader" ], [ %21, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us" ], [ %21, %25 ], [ %67, %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.backedge" ], [ %67, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit" ] - %114 = phi ptr [ %76, %.critedge45.i.us86 ], [ %76, %"_ZN10wasmparser9validator9operators30OperatorValidatorTemp$LT$R$GT$11pop_operand17h052a99c5a6520287E.llvm.8213084322371663677.exit.us88" ], [ %76, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us72.preheader" ], [ %66, %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.preheader" ], [ %20, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us" ], [ %20, %25 ], [ %66, %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.backedge" ], [ %66, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit" ] - %115 = phi ptr [ %75, %.critedge45.i.us86 ], [ %75, %"_ZN10wasmparser9validator9operators30OperatorValidatorTemp$LT$R$GT$11pop_operand17h052a99c5a6520287E.llvm.8213084322371663677.exit.us88" ], [ %75, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us72.preheader" ], [ %65, %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.preheader" ], [ %19, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us" ], [ %19, %25 ], [ %65, %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.backedge" ], [ %65, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit" ] +"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.thread": ; preds = %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit", %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.backedge", %25, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us", %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.preheader", %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us72.preheader" + %113 = phi ptr [ %77, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us72.preheader" ], [ %67, %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.preheader" ], [ %21, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us" ], [ %21, %25 ], [ %67, %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.backedge" ], [ %67, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit" ] + %114 = phi ptr [ %76, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us72.preheader" ], [ %66, %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.preheader" ], [ %20, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us" ], [ %20, %25 ], [ %66, %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.backedge" ], [ %66, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit" ] + %115 = phi ptr [ %75, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us72.preheader" ], [ %65, %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.preheader" ], [ %19, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.us" ], [ %19, %25 ], [ %65, %"_ZN92_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h68b6857d9c1c62b2E.exit.split.split.backedge" ], [ %65, %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit" ] %.sroa.3.0.copyload = load ptr, ptr %8, align 8 br i1 %trunc.i, label %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.thread.split92.us", label %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.thread.split92" @@ -4788,8 +4794,8 @@ define internal fastcc noundef align 8 ptr @"_ZN10wasmparser9validator9operators store i64 %191, ptr %115, align 8, !alias.scope !535, !noalias !538 br label %"_ZN127_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h2dbbd35987098d39E.exit.thread.split92" -"_ZN112_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1861b5cb1ecc92ecE.exit.thread": ; preds = %.critedge45.i, %.critedge45.i.us, %"_ZN112_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1861b5cb1ecc92ecE.exit", %168, %"_ZN112_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1861b5cb1ecc92ecE.exit.us", %117, %.critedge45.i.us86 - %.0 = phi ptr [ %106, %.critedge45.i.us86 ], [ null, %117 ], [ null, %"_ZN112_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1861b5cb1ecc92ecE.exit.us" ], [ null, %168 ], [ null, %"_ZN112_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1861b5cb1ecc92ecE.exit" ], [ %63, %.critedge45.i.us ], [ %156, %.critedge45.i ] +"_ZN112_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1861b5cb1ecc92ecE.exit.thread": ; preds = %.critedge45.i, %.critedge45.i.us86, %.critedge45.i.us, %"_ZN112_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1861b5cb1ecc92ecE.exit", %168, %"_ZN112_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1861b5cb1ecc92ecE.exit.us", %117 + %.0 = phi ptr [ null, %117 ], [ null, %"_ZN112_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1861b5cb1ecc92ecE.exit.us" ], [ null, %168 ], [ null, %"_ZN112_$LT$wasmparser..validator..operators..Either$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1861b5cb1ecc92ecE.exit" ], [ %63, %.critedge45.i.us ], [ %106, %.critedge45.i.us86 ], [ %156, %.critedge45.i ] ret ptr %.0 } diff --git a/bench/wasmtime-rs/optimized/377rrvl9zeztt32x.ll b/bench/wasmtime-rs/optimized/377rrvl9zeztt32x.ll index 412df8842d9..433039a575a 100644 --- a/bench/wasmtime-rs/optimized/377rrvl9zeztt32x.ll +++ b/bench/wasmtime-rs/optimized/377rrvl9zeztt32x.ll @@ -9956,27 +9956,20 @@ define hidden { i32, i32 } @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6ins } ; Function Attrs: nonlazybind uwtable -define hidden noundef align 8 dereferenceable_or_null(24) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$7get_mut17h22f01b0361e0a17dE"(ptr noalias noundef align 8 dereferenceable(48) %0, ptr noalias noundef readonly align 4 dereferenceable(12) %1) unnamed_addr #1 { +define hidden noalias noundef align 8 dereferenceable_or_null(24) ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$7get_mut17h22f01b0361e0a17dE"(ptr noalias noundef align 8 dereferenceable(48) %0, ptr noalias noundef readonly align 4 dereferenceable(12) %1) unnamed_addr #1 { %3 = getelementptr inbounds i8, ptr %0, i64 24 %4 = load i64, ptr %3, align 8, !noundef !10 %5 = icmp eq i64 %4, 0 - br i1 %5, label %12, label %6 + br i1 %5, label %10, label %6 6: ; preds = %2 %7 = getelementptr inbounds i8, ptr %0, i64 32 %8 = tail call noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h04918cf6e56903c9E(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %7, ptr noalias noundef nonnull readonly align 4 dereferenceable(12) %1) %9 = tail call noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h6a1dabb3086b518fE.llvm.10165051650595261532"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %0, i64 noundef %8, ptr noalias noundef nonnull readonly align 4 dereferenceable(12) %1) - %10 = icmp eq ptr %9, null - %11 = getelementptr inbounds i8, ptr %9, i64 -40 - %.0.i = select i1 %10, ptr null, ptr %11 - br label %12 + br label %10 -12: ; preds = %2, %6 - %.04 = phi ptr [ %.0.i, %6 ], [ null, %2 ] - %13 = icmp eq ptr %.04, null - %14 = getelementptr inbounds i8, ptr %.04, i64 16 - %.0 = select i1 %13, ptr null, ptr %14 - ret ptr %.0 +10: ; preds = %2, %6 + ret ptr null } ; Function Attrs: alwaysinline nonlazybind uwtable diff --git a/bench/wasmtime-rs/optimized/3vdx8w41hjyzioqv.ll b/bench/wasmtime-rs/optimized/3vdx8w41hjyzioqv.ll index adcd320b57f..20016805828 100644 --- a/bench/wasmtime-rs/optimized/3vdx8w41hjyzioqv.ll +++ b/bench/wasmtime-rs/optimized/3vdx8w41hjyzioqv.ll @@ -309,7 +309,6 @@ target triple = "x86_64-unknown-linux-gnu" @anon.6c5507757c8b1c864a673afc90c467c5.345.llvm.3458943816331328394 = hidden unnamed_addr constant <{ ptr, [16 x i8], ptr }> <{ ptr @"_ZN4core3ptr59drop_in_place$LT$wasmtime..runtime..module..ModuleInner$GT$17hf6774ce0183f5c88E", [16 x i8] c"H\01\00\00\00\00\00\00\08\00\00\00\00\00\00\00", ptr @"_ZN91_$LT$wasmtime..runtime..module..ModuleInner$u20$as$u20$wasmtime_runtime..gc..ModuleInfo$GT$16lookup_stack_map17hce7609d97e190074E" }>, align 8 @anon.6c5507757c8b1c864a673afc90c467c5.346 = private unnamed_addr constant <{ [36 x i8] }> <{ [36 x i8] c"bad module-level interned type index" }>, align 1 @anon.6c5507757c8b1c864a673afc90c467c5.347 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.6c5507757c8b1c864a673afc90c467c5.341, [16 x i8] c"%\00\00\00\00\00\00\000\04\00\00\0E\00\00\00" }>, align 8 -@anon.6c5507757c8b1c864a673afc90c467c5.350 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.6c5507757c8b1c864a673afc90c467c5.341, [16 x i8] c"%\00\00\00\00\00\00\00Z\04\00\00 \00\00\00" }>, align 8 @anon.6c5507757c8b1c864a673afc90c467c5.352.llvm.3458943816331328394 = hidden unnamed_addr constant <{ ptr, [16 x i8], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }> <{ ptr @"_ZN4core3ptr62drop_in_place$LT$wasmtime..runtime..module..BareModuleInfo$GT$17h09a1e65489e728b8E", [16 x i8] c"\88\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00", ptr @"_ZN97_$LT$wasmtime..runtime..module..BareModuleInfo$u20$as$u20$wasmtime_runtime..ModuleRuntimeInfo$GT$6module17h477815d3aff20eeeE", ptr @"_ZN97_$LT$wasmtime..runtime..module..BareModuleInfo$u20$as$u20$wasmtime_runtime..ModuleRuntimeInfo$GT$17engine_type_index17hfbcb3986e1991ffeE", ptr @"_ZN97_$LT$wasmtime..runtime..module..BareModuleInfo$u20$as$u20$wasmtime_runtime..ModuleRuntimeInfo$GT$8function17h324c08453cdeaf1cE", ptr @"_ZN97_$LT$wasmtime..runtime..module..BareModuleInfo$u20$as$u20$wasmtime_runtime..ModuleRuntimeInfo$GT$25native_to_wasm_trampoline17h057d2afcaf175114E", ptr @"_ZN97_$LT$wasmtime..runtime..module..BareModuleInfo$u20$as$u20$wasmtime_runtime..ModuleRuntimeInfo$GT$24array_to_wasm_trampoline17h661cac042ca2508eE", ptr @"_ZN97_$LT$wasmtime..runtime..module..BareModuleInfo$u20$as$u20$wasmtime_runtime..ModuleRuntimeInfo$GT$25wasm_to_native_trampoline17hb38a2acda19b1722E", ptr @"_ZN97_$LT$wasmtime..runtime..module..BareModuleInfo$u20$as$u20$wasmtime_runtime..ModuleRuntimeInfo$GT$12memory_image17ha30435449a66f45bE", ptr @"_ZN97_$LT$wasmtime..runtime..module..BareModuleInfo$u20$as$u20$wasmtime_runtime..ModuleRuntimeInfo$GT$9unique_id17h7b2b27494e2b31b9E", ptr @"_ZN97_$LT$wasmtime..runtime..module..BareModuleInfo$u20$as$u20$wasmtime_runtime..ModuleRuntimeInfo$GT$9wasm_data17hf6a69909cc7aca41E", ptr @"_ZN97_$LT$wasmtime..runtime..module..BareModuleInfo$u20$as$u20$wasmtime_runtime..ModuleRuntimeInfo$GT$8type_ids17h52d0e06e1059c360E", ptr @"_ZN97_$LT$wasmtime..runtime..module..BareModuleInfo$u20$as$u20$wasmtime_runtime..ModuleRuntimeInfo$GT$7offsets17h432f3c2a82fc32b4E" }>, align 8 @anon.6c5507757c8b1c864a673afc90c467c5.353 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.6c5507757c8b1c864a673afc90c467c5.341, [16 x i8] c"%\00\00\00\00\00\00\00\B5\04\00\00\09\00\00\00" }>, align 8 @anon.6c5507757c8b1c864a673afc90c467c5.354 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.6c5507757c8b1c864a673afc90c467c5.341, [16 x i8] c"%\00\00\00\00\00\00\00\B9\04\00\00\09\00\00\00" }>, align 8 @@ -25895,7 +25894,7 @@ define noundef ptr @"_ZN94_$LT$wasmtime..runtime..module..ModuleInner$u20$as$u20 } ; Function Attrs: nonlazybind uwtable -define noundef ptr @"_ZN94_$LT$wasmtime..runtime..module..ModuleInner$u20$as$u20$wasmtime_runtime..ModuleRuntimeInfo$GT$25wasm_to_native_trampoline17h6a80f846423e1ff0E"(ptr noundef nonnull align 8 %0, i32 noundef %1) unnamed_addr #2 personality ptr @rust_eh_personality { +define noalias noundef ptr @"_ZN94_$LT$wasmtime..runtime..module..ModuleInner$u20$as$u20$wasmtime_runtime..ModuleRuntimeInfo$GT$25wasm_to_native_trampoline17h6a80f846423e1ff0E"(ptr nocapture noundef nonnull readonly align 8 %0, i32 noundef %1) unnamed_addr #2 personality ptr @rust_eh_personality { %3 = alloca [4 x i8], align 4 %4 = alloca { { { { i64, i64, i64, i64 }, i64, i64, i64, i64, i64, {} } } }, align 8 %5 = alloca i32, align 4 @@ -25908,7 +25907,7 @@ define noundef ptr @"_ZN94_$LT$wasmtime..runtime..module..ModuleInner$u20$as$u20 %8 = getelementptr inbounds i8, ptr %7, i64 96 %9 = load i64, ptr %8, align 8, !alias.scope !5894, !noalias !5895, !noundef !4 %10 = icmp eq i64 %9, 0 - br i1 %10, label %_ZN8wasmtime7runtime13type_registry14TypeCollection17module_local_type17h262dc4daca03e943E.exit.thread, label %11 + br i1 %10, label %16, label %11 11: ; preds = %2 %12 = getelementptr inbounds i8, ptr %7, i64 72 @@ -25922,29 +25921,11 @@ define noundef ptr @"_ZN94_$LT$wasmtime..runtime..module..ModuleInner$u20$as$u20 %14 = call noundef i64 @"_ZN71_$LT$core..hash..sip..Hasher$LT$S$GT$$u20$as$u20$core..hash..Hasher$GT$6finish17h74f5d911aae8c457E.llvm.15361297093319246575"(ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %4), !noalias !5901 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %4), !noalias !5897 %15 = call noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h6cf7d1d1207b2f89E.llvm.15361297093319246575"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %12, i64 noundef %14, ptr noalias noundef nonnull readonly align 4 dereferenceable(4) %5) - %16 = icmp eq ptr %15, null - br i1 %16, label %_ZN8wasmtime7runtime13type_registry14TypeCollection17module_local_type17h262dc4daca03e943E.exit.thread, label %17 - -_ZN8wasmtime7runtime13type_registry14TypeCollection17module_local_type17h262dc4daca03e943E.exit.thread: ; preds = %2, %11 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) - br label %24 + br label %16 -17: ; preds = %11 - %18 = getelementptr inbounds i8, ptr %15, i64 -4 - %19 = load i32, ptr %18, align 4, !noundef !4 +16: ; preds = %11, %2 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) - %20 = call { ptr, i64 } @_ZN8wasmtime7runtime11instantiate14CompiledModule25wasm_to_native_trampoline17h6cd2a866553dc9f1E(ptr noalias noundef nonnull readonly align 8 dereferenceable(160) %0, i32 noundef %19) - %21 = extractvalue { ptr, i64 } %20, 0 - %22 = icmp eq ptr %21, null - br i1 %22, label %23, label %24 - -23: ; preds = %17 - call void @_ZN4core6option13unwrap_failed17hcb3a256a9f1ca882E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6c5507757c8b1c864a673afc90c467c5.350) #51 - unreachable - -24: ; preds = %_ZN8wasmtime7runtime13type_registry14TypeCollection17module_local_type17h262dc4daca03e943E.exit.thread, %17 - %.0 = phi ptr [ %21, %17 ], [ null, %_ZN8wasmtime7runtime13type_registry14TypeCollection17module_local_type17h262dc4daca03e943E.exit.thread ] - ret ptr %.0 + ret ptr null } ; Function Attrs: nonlazybind uwtable @@ -37431,9 +37412,6 @@ declare hidden { i64, ptr } @"_ZN9once_cell4sync17OnceCell$LT$T$GT$15get_or_try_ ; Function Attrs: nonlazybind uwtable declare { ptr, i64 } @_ZN8wasmtime7runtime11instantiate14CompiledModule24array_to_wasm_trampoline17h2bb8792f4f1d33d9E(ptr noalias noundef readonly align 8 dereferenceable(160), i32 noundef) unnamed_addr #2 -; Function Attrs: nonlazybind uwtable -declare { ptr, i64 } @_ZN8wasmtime7runtime11instantiate14CompiledModule25wasm_to_native_trampoline17h6cd2a866553dc9f1E(ptr noalias noundef readonly align 8 dereferenceable(160), i32 noundef) unnamed_addr #2 - ; Function Attrs: nonlazybind uwtable declare noundef align 8 dereferenceable_or_null(8) ptr @_ZN16wasmtime_runtime3cow18ModuleMemoryImages16get_memory_image17hb9a926d5ddcccfa5E(ptr noalias noundef readonly align 8 dereferenceable(24), i32 noundef) unnamed_addr #2 diff --git a/bench/wireshark/optimized/sharkd_session.c.ll b/bench/wireshark/optimized/sharkd_session.c.ll index 6f01ef0cd0b..fbcc6f4361f 100644 --- a/bench/wireshark/optimized/sharkd_session.c.ll +++ b/bench/wireshark/optimized/sharkd_session.c.ll @@ -4785,22 +4785,21 @@ json_find_attr.exit60: ; preds = %53, %3, %46 %101 = load i32, ptr %100, align 4 %102 = sext i32 %101 to i64 %103 = getelementptr i8, ptr %0, i64 %102 - %104 = icmp ne ptr %103, null - %105 = zext i1 %104 to i32 - br label %json_find_attr.exit76 + %104 = icmp eq ptr %103, null + %105 = select i1 %104, i32 %.0.i67, i32 1 + br label %.lr.ph.preheader.i78 106: ; preds = %.lr.ph.i71 %indvars.iv.next.i74 = add nuw nsw i64 %indvars.iv.i72, 2 %107 = icmp samesign ult i64 %indvars.iv.next.i74, %75 - br i1 %107, label %.lr.ph.i71, label %json_find_attr.exit76, !llvm.loop !8 + br i1 %107, label %.lr.ph.i71, label %.lr.ph.preheader.i78, !llvm.loop !8 -json_find_attr.exit76: ; preds = %106, %97 - %.0.i75 = phi i32 [ %105, %97 ], [ 0, %106 ] - %.1 = or disjoint i32 %.0.i75, %.0.i67 +.lr.ph.preheader.i78: ; preds = %106, %97 + %.0.i75 = phi i32 [ %105, %97 ], [ %.0.i67, %106 ] br label %.lr.ph.i79 -.lr.ph.i79: ; preds = %113, %json_find_attr.exit76 - %indvars.iv.i80 = phi i64 [ 0, %json_find_attr.exit76 ], [ %indvars.iv.next.i82, %113 ] +.lr.ph.i79: ; preds = %113, %.lr.ph.preheader.i78 + %indvars.iv.i80 = phi i64 [ 0, %.lr.ph.preheader.i78 ], [ %indvars.iv.next.i82, %113 ] %108 = getelementptr %struct.jsmntok_t, ptr %1, i64 %indvars.iv.i80, i32 1 %109 = load i32, ptr %108, align 4 %110 = sext i32 %109 to i64 @@ -4826,11 +4825,11 @@ json_find_attr.exit84: ; preds = %.lr.ph.i79 br i1 %121, label %.thread, label %122 122: ; preds = %json_find_attr.exit84 - %123 = or disjoint i32 %.1, 2 + %123 = or i32 %.0.i75, 2 br label %.thread .thread: ; preds = %113, %122, %json_find_attr.exit84 - %124 = phi i32 [ %.1, %json_find_attr.exit84 ], [ %123, %122 ], [ %.1, %113 ] + %124 = phi i32 [ %.0.i75, %json_find_attr.exit84 ], [ %123, %122 ], [ %.0.i75, %113 ] %125 = phi ptr [ null, %json_find_attr.exit84 ], [ getelementptr inbounds (i8, ptr @cfile, i64 304), %122 ], [ null, %113 ] br label %.lr.ph.i87 @@ -4858,7 +4857,7 @@ json_find_attr.exit92: ; preds = %.lr.ph.i87 %137 = sext i32 %.fr170 to i64 %138 = getelementptr i8, ptr %0, i64 %137 %139 = icmp eq ptr %138, null - %140 = or disjoint i32 %124, 8 + %140 = or i32 %124, 8 br i1 %139, label %json_find_attr.exit92.thread, label %141 json_find_attr.exit92.thread: ; preds = %131, %json_find_attr.exit92 diff --git a/bench/wolfssl/optimized/api.c.ll b/bench/wolfssl/optimized/api.c.ll index 2035287a470..3d7f9e4bdc5 100644 --- a/bench/wolfssl/optimized/api.c.ll +++ b/bench/wolfssl/optimized/api.c.ll @@ -33837,9 +33837,7 @@ for.body: ; preds = %entry, %for.body for.end: ; preds = %for.body tail call void @wolfSSL_free(ptr noundef %call2) #25 tail call void @wolfSSL_CTX_free(ptr noundef %call1) #25 - %cmp5 = icmp eq i32 %spec.select, 1 - %cond = zext i1 %cmp5 to i32 - ret i32 %cond + ret i32 %spec.select } ; Function Attrs: nounwind uwtable @@ -33862,9 +33860,7 @@ for.body: ; preds = %entry, %for.body for.end: ; preds = %for.body tail call void @wolfSSL_CTX_free(ptr noundef %call1) #25 - %cmp4 = icmp eq i32 %spec.select, 1 - %cond = zext i1 %cmp4 to i32 - ret i32 %cond + ret i32 %spec.select } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable diff --git a/bench/wolfssl/optimized/dh.c.ll b/bench/wolfssl/optimized/dh.c.ll index 141a4fd82f0..beaa03d6839 100644 --- a/bench/wolfssl/optimized/dh.c.ll +++ b/bench/wolfssl/optimized/dh.c.ll @@ -987,25 +987,20 @@ land.lhs.true71: ; preds = %if.end68 if.end89: ; preds = %land.lhs.true71 %call82 = call i32 @sp_read_unsigned_bin(ptr noundef nonnull %g72, ptr noundef %g.addr.065, i32 noundef %gSz.addr.067) #13 %cmp83.not = icmp eq i32 %call82, 0 - %.55 = select i1 %cmp83.not, i32 0, i32 -158 %cmp93 = icmp ne ptr %q.addr.069, null %or.cond6 = select i1 %cmp83.not, i1 %cmp93, i1 false - br i1 %or.cond6, label %if.then95, label %if.end102 + br i1 %or.cond6, label %if.end102.thread, label %if.end102 -if.then95: ; preds = %if.end89 +if.end102.thread: ; preds = %if.end89 %q96 = getelementptr inbounds i8, ptr %key, i64 2080 %call97 = call i32 @sp_init(ptr noundef nonnull %q96) #13 - %cmp98.not = icmp eq i32 %call97, 0 - %spec.select56 = select i1 %cmp98.not, i32 0, i32 -110 - br label %if.end102 + br label %if.then108 -if.end102: ; preds = %if.then95, %if.end89 - %ret.7 = phi i32 [ %.55, %if.end89 ], [ %spec.select56, %if.then95 ] - %cmp103 = icmp eq i32 %ret.7, 0 - %or.cond7 = select i1 %cmp103, i1 %cmp93, i1 false - br i1 %or.cond7, label %if.then108, label %if.end116 +if.end102: ; preds = %if.end89 + %.55 = select i1 %cmp83.not, i32 0, i32 -158 + br i1 %cmp93, label %if.then108, label %if.end116 -if.then108: ; preds = %if.end102 +if.then108: ; preds = %if.end102.thread, %if.end102 %q109 = getelementptr inbounds i8, ptr %key, i64 2080 %call110 = call i32 @sp_read_unsigned_bin(ptr noundef nonnull %q109, ptr noundef nonnull %q.addr.069, i32 noundef %qSz.addr.071) #13 %cmp111.not = icmp eq i32 %call110, 0 @@ -1017,7 +1012,7 @@ if.end116.thread: ; preds = %if.then108 br label %do.end131 if.end116: ; preds = %if.then108, %if.end102 - %ret.8 = phi i32 [ %ret.7, %if.end102 ], [ -110, %if.then108 ] + %ret.8 = phi i32 [ %.55, %if.end102 ], [ -110, %if.then108 ] %cmp117 = icmp ne i32 %ret.8, 0 %or.cond8 = and i1 %cmp, %cmp117 br i1 %or.cond8, label %if.then122, label %do.end131 diff --git a/bench/yaml-cpp/optimized/emitterutils.cpp.ll b/bench/yaml-cpp/optimized/emitterutils.cpp.ll index 8441b9efd02..a67f0fa4313 100644 --- a/bench/yaml-cpp/optimized/emitterutils.cpp.ll +++ b/bench/yaml-cpp/optimized/emitterutils.cpp.ll @@ -1238,23 +1238,22 @@ if.end48: ; preds = %if.then5, %if.else2 define noundef zeroext i1 @_ZN4YAML5Utils23WriteDoubleQuotedStringERNS_15ostream_wrapperERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_14StringEscaping5valueE(ptr noundef nonnull align 8 dereferenceable(57) %out, ptr noundef nonnull align 8 dereferenceable(32) %str, i32 noundef %stringEscaping) local_unnamed_addr #3 { entry: %ch.addr.i.i24 = alloca i8, align 1 - %ch.addr.i.i = alloca i8, align 1 tail call void @_ZN4YAML15ostream_wrapper5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(57) %out, ptr noundef nonnull @.str.2, i64 noundef 1) %call1 = tail call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %str) #14 - %call270 = tail call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %str) #14 - %cmp.i.i.not71 = icmp eq ptr %call1, %call270 - br i1 %cmp.i.i.not71, label %for.end, label %if.end.i.lr.ph + %call269 = tail call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %str) #14 + %cmp.i.i.not70 = icmp eq ptr %call1, %call269 + br i1 %cmp.i.i.not70, label %for.end, label %if.end.i.lr.ph if.end.i.lr.ph: ; preds = %entry %cmp24 = icmp eq i32 %stringEscaping, 1 br label %if.end.i if.end.i: ; preds = %if.end.i.lr.ph, %sw.epilog - %call273 = phi ptr [ %call270, %if.end.i.lr.ph ], [ %call2, %sw.epilog ] - %i.sroa.0.072 = phi ptr [ %call1, %if.end.i.lr.ph ], [ %i.sroa.0.34450, %sw.epilog ] - %call27377 = ptrtoint ptr %call273 to i64 - %i.sroa.0.07278 = ptrtoint ptr %i.sroa.0.072 to i64 - %0 = load i8, ptr %i.sroa.0.072, align 1 + %call272 = phi ptr [ %call269, %if.end.i.lr.ph ], [ %call2, %sw.epilog ] + %i.sroa.0.071 = phi ptr [ %call1, %if.end.i.lr.ph ], [ %i.sroa.0.34450, %sw.epilog ] + %call27275 = ptrtoint ptr %call272 to i64 + %i.sroa.0.07176 = ptrtoint ptr %i.sroa.0.071 to i64 + %0 = load i8, ptr %i.sroa.0.071, align 1 %1 = lshr i8 %0, 4 switch i8 %1, label %if.else.thread [ i8 0, label %if.then7.i @@ -1278,7 +1277,7 @@ sw.bb3.i.i: ; preds = %if.end.i br label %if.end11.i if.then7.i: ; preds = %if.end.i, %if.end.i, %if.end.i, %if.end.i, %if.end.i, %if.end.i, %if.end.i, %if.end.i - %incdec.ptr.i32.i = getelementptr inbounds i8, ptr %i.sroa.0.072, i64 1 + %incdec.ptr.i32.i = getelementptr inbounds i8, ptr %i.sroa.0.071, i64 1 %conv.i = sext i8 %0 to i32 br label %for.body @@ -1289,27 +1288,27 @@ if.end11.i: ; preds = %sw.bb3.i.i, %sw.bb2 %shl.i = shl nuw nsw i32 255, %sub.i %not.i = xor i32 %shl.i, -1 %and.i = and i32 %not.i, %conv13.i - %2 = sub i64 %call27377, %i.sroa.0.07278 - %scevgep = getelementptr i8, ptr %i.sroa.0.072, i64 %2 - %scevgep79 = getelementptr i8, ptr %i.sroa.0.072, i64 2 + %2 = sub i64 %call27275, %i.sroa.0.07176 + %scevgep = getelementptr i8, ptr %i.sroa.0.071, i64 %2 + %scevgep77 = getelementptr i8, ptr %i.sroa.0.071, i64 2 %3 = zext nneg i32 %retval.0.i.ph.ph.i to i64 - %4 = getelementptr i8, ptr %scevgep79, i64 %3 - %scevgep80 = getelementptr i8, ptr %4, i64 -2 + %4 = getelementptr i8, ptr %scevgep77, i64 %3 + %scevgep78 = getelementptr i8, ptr %4, i64 -2 br label %for.body.i for.body.i: ; preds = %if.end20.i, %if.end11.i %codePoint.1 = phi i32 [ %and.i, %if.end11.i ], [ %or.i, %if.end20.i ] - %i.sroa.0.072.pn = phi ptr [ %i.sroa.0.072, %if.end11.i ], [ %i.sroa.0.1, %if.end20.i ] + %i.sroa.0.071.pn = phi ptr [ %i.sroa.0.071, %if.end11.i ], [ %i.sroa.0.1, %if.end20.i ] %nBytes.058.in.i = phi i32 [ %retval.0.i.ph.ph.i, %if.end11.i ], [ %nBytes.058.i, %if.end20.i ] - %i.sroa.0.1 = getelementptr inbounds i8, ptr %i.sroa.0.072.pn, i64 1 + %i.sroa.0.1 = getelementptr inbounds i8, ptr %i.sroa.0.071.pn, i64 1 %nBytes.058.i = add nsw i32 %nBytes.058.in.i, -1 - %cmp.i34.i = icmp eq ptr %i.sroa.0.1, %call273 - br i1 %cmp.i34.i, label %if.else23, label %lor.lhs.false.i + %cmp.i34.i = icmp eq ptr %i.sroa.0.1, %call272 + br i1 %cmp.i34.i, label %sw.default, label %lor.lhs.false.i lor.lhs.false.i: ; preds = %for.body.i %5 = load i8, ptr %i.sroa.0.1, align 1 %cmp.i35.i = icmp slt i8 %5, -64 - br i1 %cmp.i35.i, label %if.end20.i, label %if.else23 + br i1 %cmp.i35.i, label %if.end20.i, label %sw.default if.end20.i: ; preds = %lor.lhs.false.i %shl21.i = shl i32 %codePoint.1, 6 @@ -1330,10 +1329,10 @@ for.end.i: ; preds = %if.end20.i %8 = add i32 %or.i, -64976 %or.cond31.i = icmp ult i32 %8, 32 %or.cond61.i = or i1 %or.cond31.i, %or.cond60.i - br i1 %or.cond61.i, label %if.else23, label %for.body + br i1 %or.cond61.i, label %sw.default, label %for.body for.body: ; preds = %for.end.i, %if.then7.i - %i.sroa.0.344 = phi ptr [ %incdec.ptr.i32.i, %if.then7.i ], [ %scevgep80, %for.end.i ] + %i.sroa.0.344 = phi ptr [ %incdec.ptr.i32.i, %if.then7.i ], [ %scevgep78, %for.end.i ] %codePoint.243 = phi i32 [ %conv.i, %if.then7.i ], [ %or.i, %for.end.i ] switch i32 %codePoint.243, label %sw.default [ i32 34, label %sw.bb @@ -1373,50 +1372,26 @@ sw.bb17: ; preds = %for.body call void @_ZN4YAML15ostream_wrapper5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(57) %out, ptr noundef nonnull @.str.9, i64 noundef 2) br label %sw.epilog -sw.default: ; preds = %for.body - %cmp = icmp slt i32 %codePoint.243, 32 - %9 = add nsw i32 %codePoint.243, -128 +sw.default: ; preds = %lor.lhs.false.i, %for.body.i, %for.end.i, %for.body + %codePoint.24382 = phi i32 [ %codePoint.243, %for.body ], [ 65533, %for.end.i ], [ 65533, %for.body.i ], [ 65533, %lor.lhs.false.i ] + %i.sroa.0.34481 = phi ptr [ %i.sroa.0.344, %for.body ], [ %scevgep78, %for.end.i ], [ %i.sroa.0.1, %lor.lhs.false.i ], [ %scevgep, %for.body.i ] + %cmp = icmp slt i32 %codePoint.24382, 32 + %9 = add nsw i32 %codePoint.24382, -128 %or.cond = icmp ult i32 %9, 33 %or.cond18 = select i1 %cmp, i1 true, i1 %or.cond - br i1 %or.cond18, label %if.then, label %if.else + br i1 %or.cond18, label %if.then, label %if.else23 if.else.thread: ; preds = %if.end.i - %incdec.ptr.i.i = getelementptr inbounds i8, ptr %i.sroa.0.072, i64 1 + %incdec.ptr.i.i = getelementptr inbounds i8, ptr %i.sroa.0.071, i64 1 br label %if.else23 if.then: ; preds = %sw.default - call fastcc void @_ZN4YAML5Utils12_GLOBAL__N_130WriteDoubleQuoteEscapeSequenceERNS_15ostream_wrapperEiNS_14StringEscaping5valueE(ptr noundef nonnull align 8 dereferenceable(57) %out, i32 noundef %codePoint.243, i32 noundef %stringEscaping) + call fastcc void @_ZN4YAML5Utils12_GLOBAL__N_130WriteDoubleQuoteEscapeSequenceERNS_15ostream_wrapperEiNS_14StringEscaping5valueE(ptr noundef nonnull align 8 dereferenceable(57) %out, i32 noundef %codePoint.24382, i32 noundef %stringEscaping) br label %sw.epilog -if.else: ; preds = %sw.default - %cmp21 = icmp eq i32 %codePoint.243, 65279 - br i1 %cmp21, label %if.then22, label %if.else23 - -if.then22: ; preds = %if.else - call void @_ZN4YAML15ostream_wrapper5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(57) %out, ptr noundef nonnull @.str.34, i64 noundef 1) - call void @_ZN4YAML15ostream_wrapper5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(57) %out, ptr noundef nonnull @.str.36, i64 noundef 1) - br label %for.body.i19 - -for.body.i19: ; preds = %for.body.i19, %if.then22 - %digits.128.i = phi i32 [ 4, %if.then22 ], [ %dec.i, %for.body.i19 ] - %sub.i20 = shl i32 %digits.128.i, 2 - %mul.i = add nsw i32 %sub.i20, -4 - %shr.i = lshr i32 65279, %mul.i - %and.i21 = and i32 %shr.i, 15 - %idxprom.i = zext nneg i32 %and.i21 to i64 - %arrayidx.i = getelementptr inbounds [17 x i8], ptr @_ZZN4YAML5Utils12_GLOBAL__N_130WriteDoubleQuoteEscapeSequenceERNS_15ostream_wrapperEiNS_14StringEscaping5valueEE9hexDigits, i64 0, i64 %idxprom.i - %10 = load i8, ptr %arrayidx.i, align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ch.addr.i.i) - store i8 %10, ptr %ch.addr.i.i, align 1 - call void @_ZN4YAML15ostream_wrapper5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(57) %out, ptr noundef nonnull %ch.addr.i.i, i64 noundef 1) - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ch.addr.i.i) - %dec.i = add nsw i32 %digits.128.i, -1 - %cmp15.i22 = icmp ugt i32 %digits.128.i, 1 - br i1 %cmp15.i22, label %for.body.i19, label %sw.epilog, !llvm.loop !11 - -if.else23: ; preds = %lor.lhs.false.i, %for.body.i, %for.end.i, %if.else.thread, %if.else - %codePoint.243525866 = phi i32 [ 65533, %if.else.thread ], [ %codePoint.243, %if.else ], [ 65533, %for.end.i ], [ 65533, %for.body.i ], [ 65533, %lor.lhs.false.i ] - %i.sroa.0.344516065 = phi ptr [ %incdec.ptr.i.i, %if.else.thread ], [ %i.sroa.0.344, %if.else ], [ %scevgep80, %for.end.i ], [ %i.sroa.0.1, %lor.lhs.false.i ], [ %scevgep, %for.body.i ] +if.else23: ; preds = %sw.default, %if.else.thread + %codePoint.243525866 = phi i32 [ 65533, %if.else.thread ], [ %codePoint.24382, %sw.default ] + %i.sroa.0.344516065 = phi ptr [ %incdec.ptr.i.i, %if.else.thread ], [ %i.sroa.0.34481, %sw.default ] %cmp26 = icmp ugt i32 %codePoint.243525866, 126 %or.cond1 = and i1 %cmp24, %cmp26 br i1 %or.cond1, label %if.then27, label %if.else28 @@ -1440,9 +1415,9 @@ for.body.i25: ; preds = %for.body.i25, %if.t %and.i30 = and i32 %shr.i29, 15 %idxprom.i31 = zext nneg i32 %and.i30 to i64 %arrayidx.i32 = getelementptr inbounds [17 x i8], ptr @_ZZN4YAML5Utils12_GLOBAL__N_130WriteDoubleQuoteEscapeSequenceERNS_15ostream_wrapperEiNS_14StringEscaping5valueEE9hexDigits, i64 0, i64 %idxprom.i31 - %11 = load i8, ptr %arrayidx.i32, align 1 + %10 = load i8, ptr %arrayidx.i32, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ch.addr.i.i24) - store i8 %11, ptr %ch.addr.i.i24, align 1 + store i8 %10, ptr %ch.addr.i.i24, align 1 call void @_ZN4YAML15ostream_wrapper5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(57) %out, ptr noundef nonnull %ch.addr.i.i24, i64 noundef 1) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ch.addr.i.i24) %dec.i33 = add nsw i32 %digits.128.i26, -1 @@ -1453,8 +1428,8 @@ if.else28: ; preds = %if.else23 call fastcc void @_ZN4YAML5Utils12_GLOBAL__N_114WriteCodePointERNS_15ostream_wrapperEi(ptr noundef nonnull align 8 dereferenceable(57) %out, i32 noundef %codePoint.243525866) br label %sw.epilog -sw.epilog: ; preds = %for.body.i19, %for.body.i25, %if.then, %if.else28, %sw.bb17, %sw.bb15, %sw.bb13, %sw.bb11, %sw.bb9, %sw.bb7, %sw.bb - %i.sroa.0.34450 = phi ptr [ %i.sroa.0.344, %if.then ], [ %i.sroa.0.344516065, %if.else28 ], [ %i.sroa.0.344, %sw.bb17 ], [ %i.sroa.0.344, %sw.bb15 ], [ %i.sroa.0.344, %sw.bb13 ], [ %i.sroa.0.344, %sw.bb11 ], [ %i.sroa.0.344, %sw.bb9 ], [ %i.sroa.0.344, %sw.bb7 ], [ %i.sroa.0.344, %sw.bb ], [ %i.sroa.0.344516065, %for.body.i25 ], [ %i.sroa.0.344, %for.body.i19 ] +sw.epilog: ; preds = %for.body.i25, %if.then, %if.else28, %sw.bb17, %sw.bb15, %sw.bb13, %sw.bb11, %sw.bb9, %sw.bb7, %sw.bb + %i.sroa.0.34450 = phi ptr [ %i.sroa.0.34481, %if.then ], [ %i.sroa.0.344516065, %if.else28 ], [ %i.sroa.0.344, %sw.bb17 ], [ %i.sroa.0.344, %sw.bb15 ], [ %i.sroa.0.344, %sw.bb13 ], [ %i.sroa.0.344, %sw.bb11 ], [ %i.sroa.0.344, %sw.bb9 ], [ %i.sroa.0.344, %sw.bb7 ], [ %i.sroa.0.344, %sw.bb ], [ %i.sroa.0.344516065, %for.body.i25 ] %call2 = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %str) #14 %cmp.i.i.not = icmp eq ptr %i.sroa.0.34450, %call2 br i1 %cmp.i.i.not, label %for.end, label %if.end.i, !llvm.loop !12 diff --git a/bench/z3/optimized/pb_solver.cpp.ll b/bench/z3/optimized/pb_solver.cpp.ll index dca44c7519e..4e7e41f89d1 100644 --- a/bench/z3/optimized/pb_solver.cpp.ll +++ b/bench/z3/optimized/pb_solver.cpp.ll @@ -16568,14 +16568,11 @@ if.then.i: ; preds = %entry store ptr null, ptr %m_hint.i.i.i, align 8, !alias.scope !118 %call8.i = call noundef ptr @_ZN3sat6solver9mk_clauseEjPNS_7literalENS_6statusE(ptr noundef nonnull align 8 dereferenceable(4408) %5, i32 noundef 1, ptr noundef nonnull %m_true.i, ptr noundef nonnull %agg.tmp.i) %.pre.i = load i32, ptr %m_true.i, align 8 - %.pre3.i.b = load i1, ptr @_ZN3satL12null_literalE.0, align 4 - %.pre3.i = select i1 %.pre3.i.b, i32 -2, i32 0 br label %if.end.i if.end.i: ; preds = %if.then.i, %entry - %6 = phi i32 [ %.pre3.i, %if.then.i ], [ %1, %entry ] - %7 = phi i32 [ %.pre.i, %if.then.i ], [ %0, %entry ] - %cmp.i2.not.i = icmp eq i32 %7, %6 + %6 = phi i32 [ %.pre.i, %if.then.i ], [ %0, %entry ] + %cmp.i2.not.i = icmp eq i32 %6, -2 br i1 %cmp.i2.not.i, label %if.then11.i, label %_ZN2pb6solver7ba_sort7mk_trueEv.exit if.then11.i: ; preds = %if.end.i @@ -16585,7 +16582,7 @@ if.then11.i: ; preds = %if.end.i _ZN2pb6solver7ba_sort7mk_trueEv.exit: ; preds = %if.end.i call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %agg.tmp.i) - %xor.i = xor i32 %7, 1 + %xor.i = xor i32 %6, 1 ret i32 %xor.i } @@ -16617,14 +16614,11 @@ if.then: ; preds = %entry store ptr null, ptr %m_hint.i.i, align 8, !alias.scope !121 %call8 = call noundef ptr @_ZN3sat6solver9mk_clauseEjPNS_7literalENS_6statusE(ptr noundef nonnull align 8 dereferenceable(4408) %5, i32 noundef 1, ptr noundef nonnull %m_true, ptr noundef nonnull %agg.tmp) %.pre = load i32, ptr %m_true, align 8 - %.pre3.b = load i1, ptr @_ZN3satL12null_literalE.0, align 4 - %.pre3 = select i1 %.pre3.b, i32 -2, i32 0 br label %if.end if.end: ; preds = %if.then, %entry - %6 = phi i32 [ %.pre3, %if.then ], [ %1, %entry ] - %7 = phi i32 [ %.pre, %if.then ], [ %0, %entry ] - %cmp.i2.not = icmp eq i32 %7, %6 + %6 = phi i32 [ %.pre, %if.then ], [ %0, %entry ] + %cmp.i2.not = icmp eq i32 %6, -2 br i1 %cmp.i2.not, label %if.then11, label %if.end12 if.then11: ; preds = %if.end @@ -16633,7 +16627,7 @@ if.then11: ; preds = %if.end unreachable if.end12: ; preds = %if.end - ret i32 %7 + ret i32 %6 } declare noundef i32 @_ZN3sat6solver6mk_varEbb(ptr noundef nonnull align 8 dereferenceable(4408), i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #0 diff --git a/bench/z3/optimized/sat_drat.cpp.ll b/bench/z3/optimized/sat_drat.cpp.ll index 42bdbbfaad9..c01a6d36af7 100644 --- a/bench/z3/optimized/sat_drat.cpp.ll +++ b/bench/z3/optimized/sat_drat.cpp.ll @@ -5007,16 +5007,12 @@ if.end: ; preds = %if.then, %_ZNK3sat4 if.then4: ; preds = %if.end call void @llvm.lifetime.start.p0(i64 10000, ptr nonnull %buffer.i) - %cond = icmp eq i32 %.sink.i, 2 - br i1 %cond, label %if.end5.i, label %_ZN3sat4drat5bdumpEjPKNS_7literalENS_6statusE.exit - -if.end5.i: ; preds = %if.then4 store i8 97, ptr %buffer.i, align 16 br label %do.body.i -do.body.i: ; preds = %do.cond.i, %if.end5.i - %len.1.i = phi i32 [ 1, %if.end5.i ], [ %len.2.i, %do.cond.i ] - %v.0.i = phi i32 [ %l.coerce, %if.end5.i ], [ %shr.i, %do.cond.i ] +do.body.i: ; preds = %do.cond.i, %if.then4 + %len.1.i = phi i32 [ 1, %if.then4 ], [ %len.2.i, %do.cond.i ] + %v.0.i = phi i32 [ %l.coerce, %if.then4 ], [ %shr.i, %do.cond.i ] %conv.i = trunc i32 %v.0.i to i8 %shr.i = lshr i32 %v.0.i, 7 %tobool.not.i = icmp ult i32 %v.0.i, 128 @@ -5046,13 +5042,10 @@ for.inc.i: ; preds = %do.cond.i %6 = load ptr, ptr %m_bout, align 8 %conv30.i = sext i32 %inc25.i to i64 %call31.i = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo5writeEPKcl(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull %buffer.i, i64 noundef %conv30.i) - br label %_ZN3sat4drat5bdumpEjPKNS_7literalENS_6statusE.exit - -_ZN3sat4drat5bdumpEjPKNS_7literalENS_6statusE.exit: ; preds = %if.then4, %for.inc.i call void @llvm.lifetime.end.p0(i64 10000, ptr nonnull %buffer.i) br label %if.end6 -if.end6: ; preds = %_ZN3sat4drat5bdumpEjPKNS_7literalENS_6statusE.exit, %if.end +if.end6: ; preds = %for.inc.i, %if.end %m_check = getelementptr inbounds i8, ptr %this, i64 643 %7 = load i8, ptr %m_check, align 1 %tobool7 = trunc i8 %7 to i1 diff --git a/bench/z3/optimized/seq_decl_plugin.cpp.ll b/bench/z3/optimized/seq_decl_plugin.cpp.ll index 94b2649f00d..7c55785937b 100644 --- a/bench/z3/optimized/seq_decl_plugin.cpp.ll +++ b/bench/z3/optimized/seq_decl_plugin.cpp.ll @@ -16318,8 +16318,7 @@ _ZNK8seq_util3rex4info6concatERKS1_b.exit: ; preds = %sw.bb18, %if.then.i %retval.sroa.0.sroa.4.0.i = phi i64 [ %frombool.i.i89, %if.then3.i ], [ %frombool.i73, %if.then.i ], [ %14, %sw.bb18 ] %retval.sroa.0.sroa.0.0.i = phi i64 [ 1, %if.then3.i ], [ %17, %if.then.i ], [ %13, %sw.bb18 ] %retval.sroa.5.0.i = phi i64 [ %retval.sroa.5.12.insert.insert.i, %if.then3.i ], [ %18, %if.then.i ], [ %15, %sw.bb18 ] - %retval.sroa.0.sroa.0.0.insert.insert.i = or i64 %retval.sroa.0.sroa.0.0.i, %retval.sroa.0.sroa.4.0.i - %retval.sroa.0.sroa.18.0.extract.shift707 = lshr i64 %retval.sroa.0.sroa.4.0.i, 32 + %retval.sroa.0.sroa.18.0.extract.shift707 = lshr exact i64 %retval.sroa.0.sroa.4.0.i, 32 br label %return sw.bb31: ; preds = %_ZNK4decl13get_decl_kindEv.exit @@ -16370,10 +16369,9 @@ if.else.i111: ; preds = %sw.bb31 _ZNK8seq_util3rex4info4disjERKS1_.exit: ; preds = %if.then.i118, %if.else.i111 %retval.sroa.0.sroa.3.0.i = phi i64 [ %frombool.i.i128, %if.then.i118 ], [ %retval.sroa.0.sroa.3.0.extract.trunc.i, %if.else.i111 ] - %retval.sroa.0.sroa.0.0.i114 = phi i64 [ 1, %if.then.i118 ], [ %28, %if.else.i111 ] + %retval.sroa.0.sroa.0.0.i114 = phi i64 [ 1, %if.then.i118 ], [ %25, %if.else.i111 ] %retval.sroa.4.0.i = phi i64 [ %retval.sroa.4.12.insert.insert.i, %if.then.i118 ], [ %26, %if.else.i111 ] - %retval.sroa.0.sroa.0.0.insert.insert.i115 = or disjoint i64 %retval.sroa.0.sroa.0.0.i114, %retval.sroa.0.sroa.3.0.i - %retval.sroa.0.sroa.18.0.extract.shift709 = lshr i64 %retval.sroa.0.sroa.3.0.i, 32 + %retval.sroa.0.sroa.18.0.extract.shift709 = lshr exact i64 %retval.sroa.0.sroa.3.0.i, 32 br label %return sw.bb41: ; preds = %_ZNK4decl13get_decl_kindEv.exit @@ -16425,8 +16423,7 @@ _ZNK8seq_util3rex4info4conjERKS1_.exit: ; preds = %sw.bb41, %if.then.i %retval.sroa.0.sroa.4.0.i152 = phi i64 [ %frombool.i.i181, %if.then3.i170 ], [ %frombool.i144, %if.then.i162 ], [ %36, %sw.bb41 ] %retval.sroa.0.sroa.0.0.i153 = phi i64 [ 1, %if.then3.i170 ], [ %39, %if.then.i162 ], [ %35, %sw.bb41 ] %retval.sroa.5.0.i154 = phi i64 [ %retval.sroa.5.12.insert.insert.i184, %if.then3.i170 ], [ %40, %if.then.i162 ], [ %37, %sw.bb41 ] - %retval.sroa.0.sroa.0.0.insert.insert.i159 = or i64 %retval.sroa.0.sroa.0.0.i153, %retval.sroa.0.sroa.4.0.i152 - %retval.sroa.0.sroa.18.0.extract.shift711 = lshr i64 %retval.sroa.0.sroa.4.0.i152, 32 + %retval.sroa.0.sroa.18.0.extract.shift711 = lshr exact i64 %retval.sroa.0.sroa.4.0.i152, 32 br label %return sw.bb51: ; preds = %_ZNK4decl13get_decl_kindEv.exit @@ -16711,7 +16708,7 @@ if.end119: ; preds = %_ZNK3app13get_famil return: ; preds = %_ZNK4decl13get_decl_kindEv.exit, %if.end119, %_ZNK8seq_util3rex4info6orelseERKS1_.exit, %sw.epilog, %_ZNK8seq_util3rex4info4diffERKS1_.exit, %_ZNK8seq_util3rex4info4loopEjj.exit, %sw.bb70, %sw.bb64, %sw.bb61, %sw.bb51, %_ZNK8seq_util3rex4info4conjERKS1_.exit, %_ZNK8seq_util3rex4info4disjERKS1_.exit, %_ZNK8seq_util3rex4info6concatERKS1_b.exit, %sw.bb17, %sw.bb11, %sw.bb6, %sw.bb5 %retval.sroa.22.0 = phi i64 [ %retval.sroa.22.0.copyload, %sw.epilog ], [ %retval.sroa.5.0.i345, %_ZNK8seq_util3rex4info4diffERKS1_.exit ], [ %retval.sroa.4.0.i304, %_ZNK8seq_util3rex4info4loopEjj.exit ], [ %retval.sroa.4.0.i244, %sw.bb70 ], [ %54, %sw.bb64 ], [ %51, %sw.bb61 ], [ %retval.sroa.22.12.insert.insert692, %sw.bb51 ], [ %retval.sroa.5.0.i154, %_ZNK8seq_util3rex4info4conjERKS1_.exit ], [ %retval.sroa.4.0.i, %_ZNK8seq_util3rex4info4disjERKS1_.exit ], [ %retval.sroa.5.0.i, %_ZNK8seq_util3rex4info6concatERKS1_b.exit ], [ 8589934591, %sw.bb17 ], [ 1, %sw.bb11 ], [ 1, %sw.bb6 ], [ 1, %sw.bb5 ], [ %retval.sroa.5.0.i400, %_ZNK8seq_util3rex4info6orelseERKS1_.exit ], [ %retval.sroa.22.0.copyload674, %if.end119 ], [ -1, %_ZNK4decl13get_decl_kindEv.exit ] - %retval.sroa.0.sroa.0.0 = phi i64 [ %retval.sroa.0.0.copyload, %sw.epilog ], [ %retval.sroa.0.sroa.0.0.i344, %_ZNK8seq_util3rex4info4diffERKS1_.exit ], [ %retval.sroa.0.sroa.0.0.i303, %_ZNK8seq_util3rex4info4loopEjj.exit ], [ %retval.sroa.0.sroa.0.0.i243, %sw.bb70 ], [ %spec.select, %sw.bb64 ], [ %50, %sw.bb61 ], [ 1, %sw.bb51 ], [ %retval.sroa.0.sroa.0.0.insert.insert.i159, %_ZNK8seq_util3rex4info4conjERKS1_.exit ], [ %retval.sroa.0.sroa.0.0.insert.insert.i115, %_ZNK8seq_util3rex4info4disjERKS1_.exit ], [ %retval.sroa.0.sroa.0.0.insert.insert.i, %_ZNK8seq_util3rex4info6concatERKS1_b.exit ], [ 1, %sw.bb17 ], [ 1, %sw.bb11 ], [ 1, %sw.bb6 ], [ 1, %sw.bb5 ], [ %retval.sroa.0.sroa.0.0.i399, %_ZNK8seq_util3rex4info6orelseERKS1_.exit ], [ %retval.sroa.0.0.copyload673, %if.end119 ], [ 1, %_ZNK4decl13get_decl_kindEv.exit ] + %retval.sroa.0.sroa.0.0 = phi i64 [ %retval.sroa.0.0.copyload, %sw.epilog ], [ %retval.sroa.0.sroa.0.0.i344, %_ZNK8seq_util3rex4info4diffERKS1_.exit ], [ %retval.sroa.0.sroa.0.0.i303, %_ZNK8seq_util3rex4info4loopEjj.exit ], [ %retval.sroa.0.sroa.0.0.i243, %sw.bb70 ], [ %spec.select, %sw.bb64 ], [ %50, %sw.bb61 ], [ 1, %sw.bb51 ], [ %retval.sroa.0.sroa.0.0.i153, %_ZNK8seq_util3rex4info4conjERKS1_.exit ], [ %retval.sroa.0.sroa.0.0.i114, %_ZNK8seq_util3rex4info4disjERKS1_.exit ], [ %retval.sroa.0.sroa.0.0.i, %_ZNK8seq_util3rex4info6concatERKS1_b.exit ], [ 1, %sw.bb17 ], [ 1, %sw.bb11 ], [ 1, %sw.bb6 ], [ 1, %sw.bb5 ], [ %retval.sroa.0.sroa.0.0.i399, %_ZNK8seq_util3rex4info6orelseERKS1_.exit ], [ %retval.sroa.0.0.copyload673, %if.end119 ], [ 1, %_ZNK4decl13get_decl_kindEv.exit ] %retval.sroa.0.sroa.18.0 = phi i64 [ %retval.sroa.0.sroa.18.0.extract.shift725, %sw.epilog ], [ %retval.sroa.0.sroa.18.0.extract.trunc722, %_ZNK8seq_util3rex4info4diffERKS1_.exit ], [ %retval.sroa.0.sroa.18.0.extract.trunc720, %_ZNK8seq_util3rex4info4loopEjj.exit ], [ %retval.sroa.0.sroa.18.0.extract.trunc718, %sw.bb70 ], [ %retval.sroa.0.sroa.18.0.extract.trunc716, %sw.bb64 ], [ %retval.sroa.0.sroa.18.0.extract.shift713, %sw.bb61 ], [ %frombool.i189, %sw.bb51 ], [ %retval.sroa.0.sroa.18.0.extract.shift711, %_ZNK8seq_util3rex4info4conjERKS1_.exit ], [ %retval.sroa.0.sroa.18.0.extract.shift709, %_ZNK8seq_util3rex4info4disjERKS1_.exit ], [ %retval.sroa.0.sroa.18.0.extract.shift707, %_ZNK8seq_util3rex4info6concatERKS1_b.exit ], [ 1, %sw.bb17 ], [ %frombool.i45, %sw.bb11 ], [ %frombool.i, %sw.bb6 ], [ 1, %sw.bb5 ], [ %retval.sroa.0.sroa.18.0.extract.shift723, %_ZNK8seq_util3rex4info6orelseERKS1_.exit ], [ %retval.sroa.0.sroa.18.0.extract.shift727, %if.end119 ], [ 1, %_ZNK4decl13get_decl_kindEv.exit ] %retval.sroa.0.sroa.22.sroa.0.0 = phi i64 [ %retval.sroa.0.sroa.22.0.extract.shift749, %sw.epilog ], [ 0, %_ZNK8seq_util3rex4info4diffERKS1_.exit ], [ 0, %_ZNK8seq_util3rex4info4loopEjj.exit ], [ 0, %sw.bb70 ], [ 0, %sw.bb64 ], [ %retval.sroa.0.sroa.22.0.extract.shift737, %sw.bb61 ], [ 0, %sw.bb51 ], [ 0, %_ZNK8seq_util3rex4info4conjERKS1_.exit ], [ 0, %_ZNK8seq_util3rex4info4disjERKS1_.exit ], [ 0, %_ZNK8seq_util3rex4info6concatERKS1_b.exit ], [ 0, %sw.bb17 ], [ 0, %sw.bb11 ], [ 0, %sw.bb6 ], [ 0, %sw.bb5 ], [ 0, %_ZNK8seq_util3rex4info6orelseERKS1_.exit ], [ %retval.sroa.0.sroa.22.0.extract.shift751, %if.end119 ], [ 0, %_ZNK4decl13get_decl_kindEv.exit ] %retval.sroa.0.sroa.18.0.insert.ext = shl nuw i64 %retval.sroa.0.sroa.18.0, 32 diff --git a/bench/zlib/optimized/inftrees.c.ll b/bench/zlib/optimized/inftrees.c.ll index 31cc5f13845..313b8f6ac23 100644 --- a/bench/zlib/optimized/inftrees.c.ll +++ b/bench/zlib/optimized/inftrees.c.ll @@ -207,7 +207,6 @@ for.cond127.outer: ; preds = %if.end250, %for.con %curr.0.ph = phi i32 [ %curr.2.lcssa, %if.end250 ], [ %spec.select145, %for.cond127.preheader ] %drop.0.ph = phi i32 [ %spec.select146, %if.end250 ], [ 0, %for.cond127.preheader ] %used.0.ph = phi i32 [ %add237, %if.end250 ], [ %shl112161235, %for.cond127.preheader ] - %huff.0.ph = phi i32 [ %huff.1, %if.end250 ], [ 0, %for.cond127.preheader ] %low.0.ph = phi i32 [ %and209, %if.end250 ], [ -1, %for.cond127.preheader ] %next.0.ph = phi ptr [ %add.ptr, %if.end250 ], [ %13, %for.cond127.preheader ] %shl170 = shl nuw i32 1, %curr.0.ph @@ -216,7 +215,6 @@ for.cond127.outer: ; preds = %if.end250, %for.con for.cond127: ; preds = %for.cond127.backedge, %for.cond127.outer %len.3 = phi i32 [ %len.3.ph, %for.cond127.outer ], [ %len.4, %for.cond127.backedge ] %sym.2 = phi i32 [ %sym.2.ph, %for.cond127.outer ], [ %inc188, %for.cond127.backedge ] - %huff.0 = phi i32 [ %huff.0.ph, %for.cond127.outer ], [ %huff.1, %for.cond127.backedge ] %sub128 = sub i32 %len.3, %drop.0.ph %conv129 = trunc i32 %sub128 to i8 %idxprom131 = zext i32 %sym.2 to i64 @@ -245,14 +243,12 @@ if.end167: ; preds = %if.else, %for.cond1 %here.sroa.12.0 = phi i16 [ %16, %if.then147 ], [ %14, %for.cond127 ], [ 0, %if.else ] %here.sroa.0.0 = phi i8 [ %conv154, %if.then147 ], [ 0, %for.cond127 ], [ 96, %if.else ] %shl169.neg = shl nsw i32 -1, %sub128 - %shr = lshr i32 %huff.0, %drop.0.ph br label %do.body do.body: ; preds = %do.body, %if.end167 %fill.0 = phi i32 [ %shl170, %if.end167 ], [ %sub171, %do.body ] %sub171 = add i32 %fill.0, %shl169.neg - %add172 = add i32 %sub171, %shr - %idxprom173 = zext i32 %add172 to i64 + %idxprom173 = zext i32 %sub171 to i64 %arrayidx174 = getelementptr inbounds %struct.code, ptr %next.0.ph, i64 %idxprom173 store i8 %here.sroa.0.0, ptr %arrayidx174, align 2 %here.sroa.9.0.arrayidx174.sroa_idx = getelementptr inbounds i8, ptr %arrayidx174, i64 1 @@ -265,21 +261,6 @@ do.body: ; preds = %do.body, %if.end167 do.end: ; preds = %do.body %sub177 = add i32 %len.3, -1 %shl178 = shl nuw i32 1, %sub177 - br label %while.cond - -while.cond: ; preds = %while.cond, %do.end - %incr.0 = phi i32 [ %shl178, %do.end ], [ %shr179, %while.cond ] - %and = and i32 %incr.0, %huff.0 - %tobool.not = icmp eq i32 %and, 0 - %shr179 = lshr i32 %incr.0, 1 - br i1 %tobool.not, label %while.end, label %while.cond, !llvm.loop !12 - -while.end: ; preds = %while.cond - %cmp180.not = icmp eq i32 %incr.0, 0 - %sub183 = add i32 %incr.0, -1 - %and184 = and i32 %sub183, %huff.0 - %add185 = add i32 %and184, %incr.0 - %huff.1 = select i1 %cmp180.not, i32 0, i32 %add185 %inc188 = add i32 %sym.2, 1 %idxprom189 = zext i32 %len.3 to i64 %arrayidx190 = getelementptr inbounds [16 x i16], ptr %count, i64 0, i64 %idxprom189 @@ -289,9 +270,9 @@ while.end: ; preds = %while.cond %cmp193 = icmp eq i16 %dec191, 0 br i1 %cmp193, label %if.then195, label %if.end205 -if.then195: ; preds = %while.end +if.then195: ; preds = %do.end %cmp196 = icmp eq i32 %len.3, %max.0175 - br i1 %cmp196, label %for.end265, label %if.end199 + br i1 %cmp196, label %if.then268, label %if.end199 if.end199: ; preds = %if.then195 %idxprom200 = zext i32 %inc188 to i64 @@ -303,13 +284,13 @@ if.end199: ; preds = %if.then195 %conv204 = zext i16 %19 to i32 br label %if.end205 -if.end205: ; preds = %if.end199, %while.end - %len.4 = phi i32 [ %conv204, %if.end199 ], [ %len.3, %while.end ] +if.end205: ; preds = %if.end199, %do.end + %len.4 = phi i32 [ %conv204, %if.end199 ], [ %len.3, %do.end ] %cmp206 = icmp ugt i32 %len.4, %spec.select145 br i1 %cmp206, label %land.lhs.true208, label %for.cond127.backedge land.lhs.true208: ; preds = %if.end205 - %and209 = and i32 %huff.1, %sub113162236 + %and209 = and i32 %shl178, %sub113162236 %cmp210.not = icmp eq i32 %and209, %low.0.ph br i1 %cmp210.not, label %for.cond127.backedge, label %if.then212 @@ -348,7 +329,7 @@ if.end232: ; preds = %while.body223 %shl234 = shl nuw i32 %sub228, 1 %add220.reass = add i32 %curr.2185, %invariant.op %cmp221 = icmp ult i32 %add220.reass, %max.0175 - br i1 %cmp221, label %while.body223, label %while.end235.loopexit, !llvm.loop !13 + br i1 %cmp221, label %while.body223, label %while.end235.loopexit, !llvm.loop !12 while.end235.loopexit: ; preds = %while.body223, %if.end232 %curr.2.lcssa.ph = phi i32 [ %20, %if.end232 ], [ %curr.2185, %while.body223 ] @@ -385,29 +366,22 @@ if.end250: ; preds = %while.end235 store i16 %conv260, ptr %val263, align 2 br label %for.cond127.outer -for.end265: ; preds = %if.then195 - %cmp266.not = icmp eq i32 %huff.1, 0 - br i1 %cmp266.not, label %if.end276, label %if.then268 - -if.then268: ; preds = %for.end265 - %idxprom274 = zext i32 %huff.1 to i64 +if.then268: ; preds = %if.then195 + %idxprom274 = zext i32 %shl178 to i64 %arrayidx275 = getelementptr inbounds %struct.code, ptr %next.0.ph, i64 %idxprom274 store i8 64, ptr %arrayidx275, align 2 %here.sroa.9.0.arrayidx275.sroa_idx = getelementptr inbounds i8, ptr %arrayidx275, i64 1 store i8 %conv129, ptr %here.sroa.9.0.arrayidx275.sroa_idx, align 1 %here.sroa.12.0.arrayidx275.sroa_idx = getelementptr inbounds i8, ptr %arrayidx275, i64 2 store i16 0, ptr %here.sroa.12.0.arrayidx275.sroa_idx, align 2 - br label %if.end276 - -if.end276: ; preds = %if.then268, %for.end265 %25 = load ptr, ptr %table, align 8 %idx.ext277 = zext i32 %used.0.ph to i64 %add.ptr278 = getelementptr inbounds %struct.code, ptr %25, i64 %idx.ext277 store ptr %add.ptr278, ptr %table, align 8 br label %return.sink.split -return.sink.split: ; preds = %if.then27, %if.end276 - %spec.select145.sink = phi i32 [ %spec.select145, %if.end276 ], [ 1, %if.then27 ] +return.sink.split: ; preds = %if.then27, %if.then268 + %spec.select145.sink = phi i32 [ %spec.select145, %if.then268 ], [ 1, %if.then27 ] store i32 %spec.select145.sink, ptr %bits, align 4 br label %return @@ -444,4 +418,3 @@ attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } !10 = distinct !{!10, !5} !11 = distinct !{!11, !5} !12 = distinct !{!12, !5} -!13 = distinct !{!13, !5} diff --git a/bench/zxing/optimized/ODCode93Reader.cpp.ll b/bench/zxing/optimized/ODCode93Reader.cpp.ll index 3ae0cdb0723..ccc5d927b1b 100644 --- a/bench/zxing/optimized/ODCode93Reader.cpp.ll +++ b/bench/zxing/optimized/ODCode93Reader.cpp.ll @@ -1035,7 +1035,7 @@ define internal fastcc noundef zeroext i1 @_ZN5ZXing4OneDL14CheckChecksumsERKNSt .lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i %indvars.iv.i = phi i64 [ %6, %.lr.ph.preheader.i ], [ %indvars.iv.next.i, %.lr.ph.i ] %.01114.i = phi i32 [ 0, %.lr.ph.preheader.i ], [ %15, %.lr.ph.i ] - %.01213.i = phi i32 [ 1, %.lr.ph.preheader.i ], [ %spec.store.select.i, %.lr.ph.i ] + %.01213.i = phi i32 [ 1, %.lr.ph.preheader.i ], [ %16, %.lr.ph.i ] %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 %7 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %indvars.iv.next.i) #15 %8 = load i8, ptr %7, align 1 @@ -1046,78 +1046,74 @@ define internal fastcc noundef zeroext i1 @_ZN5ZXing4OneDL14CheckChecksumsERKNSt %11 = trunc i64 %10 to i32 %12 = sub i32 %11, ptrtoint (ptr @_ZN5ZXing4OneDL8ALPHABETE to i32) %13 = select i1 %.not.i.i, i32 -1, i32 %12 - %14 = mul nsw i32 %13, %.01213.i + %14 = mul nuw nsw i32 %13, %.01213.i %15 = add nsw i32 %14, %.01114.i - %16 = add nsw i32 %.01213.i, 1 - %.not.i = icmp slt i32 %.01213.i, 20 - %spec.store.select.i = select i1 %.not.i, i32 %16, i32 1 - %17 = icmp ugt i64 %indvars.iv.i, 1 - br i1 %17, label %.lr.ph.i, label %._crit_edge.loopexit.i, !llvm.loop !24 + %16 = add nuw nsw i32 %.01213.i, 1 + %exitcond.not.i = icmp eq i32 %.01213.i, %4 + br i1 %exitcond.not.i, label %._crit_edge.loopexit.i, label %.lr.ph.i, !llvm.loop !24 ._crit_edge.loopexit.i: ; preds = %.lr.ph.i - %18 = srem i32 %15, 47 - %19 = sext i32 %18 to i64 + %17 = srem i32 %15, 47 + %18 = sext i32 %17 to i64 br label %_ZN5ZXing4OneDL16CheckOneChecksumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii.exit _ZN5ZXing4OneDL16CheckOneChecksumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii.exit: ; preds = %1, %._crit_edge.loopexit.i - %.011.lcssa.i = phi i64 [ 0, %1 ], [ %19, %._crit_edge.loopexit.i ] - %20 = sext i32 %4 to i64 - %21 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %20) #15 - %22 = load i8, ptr %21, align 1 - %23 = getelementptr inbounds [49 x i8], ptr @_ZN5ZXing4OneDL8ALPHABETE, i64 0, i64 %.011.lcssa.i - %24 = load i8, ptr %23, align 1 - %25 = icmp eq i8 %22, %24 - br i1 %25, label %26, label %49 - -26: ; preds = %_ZN5ZXing4OneDL16CheckOneChecksumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii.exit - %27 = add nsw i32 %3, -1 - %28 = icmp sgt i32 %3, 1 - br i1 %28, label %.lr.ph.preheader.i5, label %_ZN5ZXing4OneDL16CheckOneChecksumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii.exit16 - -.lr.ph.preheader.i5: ; preds = %26 - %29 = zext nneg i32 %27 to i64 + %.011.lcssa.i = phi i64 [ 0, %1 ], [ %18, %._crit_edge.loopexit.i ] + %19 = sext i32 %4 to i64 + %20 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %19) #15 + %21 = load i8, ptr %20, align 1 + %22 = getelementptr inbounds [49 x i8], ptr @_ZN5ZXing4OneDL8ALPHABETE, i64 0, i64 %.011.lcssa.i + %23 = load i8, ptr %22, align 1 + %24 = icmp eq i8 %21, %23 + br i1 %24, label %25, label %47 + +25: ; preds = %_ZN5ZXing4OneDL16CheckOneChecksumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii.exit + %26 = add nsw i32 %3, -1 + %27 = icmp sgt i32 %3, 1 + br i1 %27, label %.lr.ph.preheader.i5, label %_ZN5ZXing4OneDL16CheckOneChecksumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii.exit15 + +.lr.ph.preheader.i5: ; preds = %25 + %28 = zext nneg i32 %26 to i64 br label %.lr.ph.i6 .lr.ph.i6: ; preds = %.lr.ph.i6, %.lr.ph.preheader.i5 - %indvars.iv.i7 = phi i64 [ %29, %.lr.ph.preheader.i5 ], [ %indvars.iv.next.i10, %.lr.ph.i6 ] - %.01114.i8 = phi i32 [ 0, %.lr.ph.preheader.i5 ], [ %38, %.lr.ph.i6 ] - %.01213.i9 = phi i32 [ 1, %.lr.ph.preheader.i5 ], [ %spec.store.select.i14, %.lr.ph.i6 ] + %indvars.iv.i7 = phi i64 [ %28, %.lr.ph.preheader.i5 ], [ %indvars.iv.next.i10, %.lr.ph.i6 ] + %.01114.i8 = phi i32 [ 0, %.lr.ph.preheader.i5 ], [ %37, %.lr.ph.i6 ] + %.01213.i9 = phi i32 [ 1, %.lr.ph.preheader.i5 ], [ %38, %.lr.ph.i6 ] %indvars.iv.next.i10 = add nsw i64 %indvars.iv.i7, -1 - %30 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %indvars.iv.next.i10) #15 - %31 = load i8, ptr %30, align 1 - %32 = sext i8 %31 to i32 - %memchr.i11 = tail call ptr @memchr(ptr noundef nonnull dereferenceable(1) @_ZN5ZXing4OneDL8ALPHABETE, i32 %32, i64 49) + %29 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %indvars.iv.next.i10) #15 + %30 = load i8, ptr %29, align 1 + %31 = sext i8 %30 to i32 + %memchr.i11 = tail call ptr @memchr(ptr noundef nonnull dereferenceable(1) @_ZN5ZXing4OneDL8ALPHABETE, i32 %31, i64 49) %.not.i.i12 = icmp eq ptr %memchr.i11, null - %33 = ptrtoint ptr %memchr.i11 to i64 - %34 = trunc i64 %33 to i32 - %35 = sub i32 %34, ptrtoint (ptr @_ZN5ZXing4OneDL8ALPHABETE to i32) - %36 = select i1 %.not.i.i12, i32 -1, i32 %35 - %37 = mul nsw i32 %36, %.01213.i9 - %38 = add nsw i32 %37, %.01114.i8 - %39 = add nsw i32 %.01213.i9, 1 - %.not.i13 = icmp slt i32 %.01213.i9, 15 - %spec.store.select.i14 = select i1 %.not.i13, i32 %39, i32 1 - %40 = icmp ugt i64 %indvars.iv.i7, 1 - br i1 %40, label %.lr.ph.i6, label %._crit_edge.loopexit.i15, !llvm.loop !24 - -._crit_edge.loopexit.i15: ; preds = %.lr.ph.i6 - %41 = srem i32 %38, 47 - %42 = sext i32 %41 to i64 - br label %_ZN5ZXing4OneDL16CheckOneChecksumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii.exit16 - -_ZN5ZXing4OneDL16CheckOneChecksumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii.exit16: ; preds = %26, %._crit_edge.loopexit.i15 - %.011.lcssa.i4 = phi i64 [ 0, %26 ], [ %42, %._crit_edge.loopexit.i15 ] - %43 = sext i32 %27 to i64 - %44 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %43) #15 + %32 = ptrtoint ptr %memchr.i11 to i64 + %33 = trunc i64 %32 to i32 + %34 = sub i32 %33, ptrtoint (ptr @_ZN5ZXing4OneDL8ALPHABETE to i32) + %35 = select i1 %.not.i.i12, i32 -1, i32 %34 + %36 = mul nuw nsw i32 %35, %.01213.i9 + %37 = add nsw i32 %36, %.01114.i8 + %38 = add nuw nsw i32 %.01213.i9, 1 + %exitcond.not.i13 = icmp eq i32 %.01213.i9, %26 + br i1 %exitcond.not.i13, label %._crit_edge.loopexit.i14, label %.lr.ph.i6, !llvm.loop !24 + +._crit_edge.loopexit.i14: ; preds = %.lr.ph.i6 + %39 = srem i32 %37, 47 + %40 = sext i32 %39 to i64 + br label %_ZN5ZXing4OneDL16CheckOneChecksumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii.exit15 + +_ZN5ZXing4OneDL16CheckOneChecksumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii.exit15: ; preds = %25, %._crit_edge.loopexit.i14 + %.011.lcssa.i4 = phi i64 [ 0, %25 ], [ %40, %._crit_edge.loopexit.i14 ] + %41 = sext i32 %26 to i64 + %42 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %41) #15 + %43 = load i8, ptr %42, align 1 + %44 = getelementptr inbounds [49 x i8], ptr @_ZN5ZXing4OneDL8ALPHABETE, i64 0, i64 %.011.lcssa.i4 %45 = load i8, ptr %44, align 1 - %46 = getelementptr inbounds [49 x i8], ptr @_ZN5ZXing4OneDL8ALPHABETE, i64 0, i64 %.011.lcssa.i4 - %47 = load i8, ptr %46, align 1 - %48 = icmp eq i8 %45, %47 - br label %49 - -49: ; preds = %_ZN5ZXing4OneDL16CheckOneChecksumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii.exit16, %_ZN5ZXing4OneDL16CheckOneChecksumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii.exit - %50 = phi i1 [ false, %_ZN5ZXing4OneDL16CheckOneChecksumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii.exit ], [ %48, %_ZN5ZXing4OneDL16CheckOneChecksumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii.exit16 ] - ret i1 %50 + %46 = icmp eq i8 %43, %45 + br label %47 + +47: ; preds = %_ZN5ZXing4OneDL16CheckOneChecksumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii.exit15, %_ZN5ZXing4OneDL16CheckOneChecksumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii.exit + %48 = phi i1 [ false, %_ZN5ZXing4OneDL16CheckOneChecksumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii.exit ], [ %46, %_ZN5ZXing4OneDL16CheckOneChecksumERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii.exit15 ] + ret i1 %48 } ; Function Attrs: nounwind diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index 820278fb20a..5a7e3c5cfba 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/113707 # Please rebase manually # git fetch origin